@react-native/codegen 0.74.0 → 0.75.0-nightly-20240221-a1171f79f

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 (147) hide show
  1. package/lib/CodegenSchema.d.ts +10 -1
  2. package/lib/CodegenSchema.js.flow +2 -1
  3. package/lib/SchemaValidator.js.flow +2 -2
  4. package/lib/cli/combine/combine-js-to-schema-cli.js +59 -40
  5. package/lib/cli/combine/combine-js-to-schema-cli.js.flow +23 -39
  6. package/lib/cli/combine/combine-js-to-schema.js +49 -1
  7. package/lib/cli/combine/combine-js-to-schema.js.flow +59 -1
  8. package/lib/cli/combine/combine-schemas-cli.js +77 -0
  9. package/lib/cli/combine/combine-schemas-cli.js.flow +87 -0
  10. package/lib/cli/combine/combine-utils.js +3 -65
  11. package/lib/cli/combine/combine-utils.js.flow +7 -28
  12. package/lib/cli/parser/parser.js +1 -1
  13. package/lib/cli/parser/parser.js.flow +1 -1
  14. package/lib/generators/RNCodegen.d.ts +1 -0
  15. package/lib/generators/RNCodegen.js +58 -31
  16. package/lib/generators/RNCodegen.js.flow +52 -32
  17. package/lib/generators/TypeUtils/Cxx/index.js +17 -0
  18. package/lib/generators/TypeUtils/Cxx/index.js.flow +18 -0
  19. package/lib/generators/TypeUtils/Java/index.js +31 -0
  20. package/lib/generators/TypeUtils/Java/index.js.flow +27 -0
  21. package/lib/generators/TypeUtils/Objective-C/index.js +17 -0
  22. package/lib/generators/TypeUtils/Objective-C/index.js.flow +18 -0
  23. package/lib/generators/components/ComponentsGeneratorUtils.js +7 -7
  24. package/lib/generators/components/ComponentsGeneratorUtils.js.flow +8 -10
  25. package/lib/generators/components/ComponentsProviderUtils.js +55 -0
  26. package/lib/generators/components/ComponentsProviderUtils.js.flow +60 -0
  27. package/lib/generators/components/CppHelpers.js +7 -0
  28. package/lib/generators/components/CppHelpers.js.flow +14 -0
  29. package/lib/generators/components/GenerateComponentDescriptorCpp.js +89 -0
  30. package/lib/generators/components/GenerateComponentDescriptorCpp.js.flow +101 -0
  31. package/lib/generators/components/GenerateComponentDescriptorH.js +28 -12
  32. package/lib/generators/components/GenerateComponentDescriptorH.js.flow +20 -12
  33. package/lib/generators/components/GenerateComponentHObjCpp.js +15 -1
  34. package/lib/generators/components/GenerateComponentHObjCpp.js.flow +11 -2
  35. package/lib/generators/components/GenerateEventEmitterCpp.js +28 -15
  36. package/lib/generators/components/GenerateEventEmitterCpp.js.flow +16 -17
  37. package/lib/generators/components/GenerateEventEmitterH.js +20 -13
  38. package/lib/generators/components/GenerateEventEmitterH.js.flow +13 -15
  39. package/lib/generators/components/GeneratePropsCpp.js +17 -8
  40. package/lib/generators/components/GeneratePropsCpp.js.flow +13 -9
  41. package/lib/generators/components/GeneratePropsH.js +23 -16
  42. package/lib/generators/components/GeneratePropsH.js.flow +12 -16
  43. package/lib/generators/components/GeneratePropsJavaDelegate.js +11 -3
  44. package/lib/generators/components/GeneratePropsJavaDelegate.js.flow +7 -4
  45. package/lib/generators/components/GeneratePropsJavaInterface.js +11 -3
  46. package/lib/generators/components/GeneratePropsJavaInterface.js.flow +6 -3
  47. package/lib/generators/components/GeneratePropsJavaPojo/PojoCollector.js.flow +6 -6
  48. package/lib/generators/components/GeneratePropsJavaPojo/index.js +1 -1
  49. package/lib/generators/components/GeneratePropsJavaPojo/index.js.flow +1 -1
  50. package/lib/generators/components/GeneratePropsJavaPojo/serializePojo.js.flow +1 -0
  51. package/lib/generators/components/GenerateShadowNodeCpp.js +19 -8
  52. package/lib/generators/components/GenerateShadowNodeCpp.js.flow +9 -8
  53. package/lib/generators/components/GenerateShadowNodeH.js +27 -11
  54. package/lib/generators/components/GenerateShadowNodeH.js.flow +11 -14
  55. package/lib/generators/components/GenerateStateCpp.js +19 -8
  56. package/lib/generators/components/GenerateStateCpp.js.flow +9 -8
  57. package/lib/generators/components/GenerateStateH.js +9 -5
  58. package/lib/generators/components/GenerateStateH.js.flow +3 -4
  59. package/lib/generators/components/GenerateTests.js +11 -5
  60. package/lib/generators/components/GenerateTests.js.flow +2 -2
  61. package/lib/generators/components/GenerateThirdPartyFabricComponentsProviderH.js +16 -3
  62. package/lib/generators/components/GenerateThirdPartyFabricComponentsProviderH.js.flow +18 -3
  63. package/lib/generators/components/GenerateThirdPartyFabricComponentsProviderObjCpp.js +18 -3
  64. package/lib/generators/components/GenerateThirdPartyFabricComponentsProviderObjCpp.js.flow +21 -3
  65. package/lib/generators/components/GenerateViewConfigJs.js +2 -2
  66. package/lib/generators/components/GenerateViewConfigJs.js.flow +2 -2
  67. package/lib/generators/components/JavaHelpers.js +8 -0
  68. package/lib/generators/components/JavaHelpers.js.flow +9 -0
  69. package/lib/generators/components/__test_fixtures__/fixtures.js +22 -0
  70. package/lib/generators/components/__test_fixtures__/fixtures.js.flow +22 -0
  71. package/lib/generators/modules/GenerateModuleCpp.js +14 -10
  72. package/lib/generators/modules/GenerateModuleCpp.js.flow +9 -10
  73. package/lib/generators/modules/GenerateModuleH.js +198 -72
  74. package/lib/generators/modules/GenerateModuleH.js.flow +186 -71
  75. package/lib/generators/modules/GenerateModuleJavaSpec.js +50 -57
  76. package/lib/generators/modules/GenerateModuleJavaSpec.js.flow +45 -50
  77. package/lib/generators/modules/GenerateModuleJniCpp.js +16 -12
  78. package/lib/generators/modules/GenerateModuleJniCpp.js.flow +11 -12
  79. package/lib/generators/modules/GenerateModuleJniH.js +12 -5
  80. package/lib/generators/modules/GenerateModuleJniH.js.flow +8 -6
  81. package/lib/generators/modules/GenerateModuleObjCpp/StructCollector.js +5 -5
  82. package/lib/generators/modules/GenerateModuleObjCpp/StructCollector.js.flow +11 -12
  83. package/lib/generators/modules/GenerateModuleObjCpp/header/serializeConstantsStruct.js +23 -21
  84. package/lib/generators/modules/GenerateModuleObjCpp/header/serializeConstantsStruct.js.flow +19 -18
  85. package/lib/generators/modules/GenerateModuleObjCpp/header/serializeRegularStruct.js +23 -21
  86. package/lib/generators/modules/GenerateModuleObjCpp/header/serializeRegularStruct.js.flow +19 -18
  87. package/lib/generators/modules/GenerateModuleObjCpp/index.js +18 -20
  88. package/lib/generators/modules/GenerateModuleObjCpp/index.js.flow +11 -14
  89. package/lib/generators/modules/GenerateModuleObjCpp/serializeMethod.js +40 -42
  90. package/lib/generators/modules/GenerateModuleObjCpp/serializeMethod.js.flow +38 -44
  91. package/lib/generators/modules/GenerateModuleObjCpp/source/serializeModule.js +25 -27
  92. package/lib/generators/modules/GenerateModuleObjCpp/source/serializeModule.js.flow +26 -28
  93. package/lib/generators/modules/Utils.js +98 -0
  94. package/lib/generators/modules/Utils.js.flow +34 -2
  95. package/lib/generators/modules/__test_fixtures__/fixtures.js +685 -64
  96. package/lib/generators/modules/__test_fixtures__/fixtures.js.flow +686 -64
  97. package/lib/parsers/error-utils.js +17 -17
  98. package/lib/parsers/error-utils.js.flow +10 -10
  99. package/lib/parsers/errors.js +10 -0
  100. package/lib/parsers/errors.js.flow +15 -1
  101. package/lib/parsers/flow/components/__test_fixtures__/fixtures.js +7 -1
  102. package/lib/parsers/flow/components/__test_fixtures__/fixtures.js.flow +7 -1
  103. package/lib/parsers/flow/components/commands.js +24 -0
  104. package/lib/parsers/flow/components/commands.js.flow +45 -3
  105. package/lib/parsers/flow/components/componentsUtils.js +5 -4
  106. package/lib/parsers/flow/components/componentsUtils.js.flow +4 -3
  107. package/lib/parsers/flow/components/events.js +7 -7
  108. package/lib/parsers/flow/components/events.js.flow +7 -7
  109. package/lib/parsers/flow/components/index.js +8 -8
  110. package/lib/parsers/flow/components/index.js.flow +3 -3
  111. package/lib/parsers/flow/modules/__test_fixtures__/fixtures.js +13 -0
  112. package/lib/parsers/flow/modules/__test_fixtures__/fixtures.js.flow +13 -0
  113. package/lib/parsers/flow/modules/index.js +20 -19
  114. package/lib/parsers/flow/modules/index.js.flow +10 -11
  115. package/lib/parsers/flow/parseFlowAndThrowErrors.js +105 -0
  116. package/lib/parsers/flow/parseFlowAndThrowErrors.js.flow +41 -0
  117. package/lib/parsers/flow/parser.js +24 -25
  118. package/lib/parsers/flow/parser.js.flow +27 -36
  119. package/lib/parsers/flow/utils.js.flow +1 -1
  120. package/lib/parsers/parser.js.flow +12 -10
  121. package/lib/parsers/parserMock.js +11 -12
  122. package/lib/parsers/parserMock.js.flow +25 -28
  123. package/lib/parsers/parsers-commons.js +85 -36
  124. package/lib/parsers/parsers-commons.js.flow +71 -37
  125. package/lib/parsers/parsers-primitives.js +17 -17
  126. package/lib/parsers/parsers-primitives.js.flow +14 -16
  127. package/lib/parsers/schema.js.flow +3 -3
  128. package/lib/parsers/typescript/components/__test_fixtures__/fixtures.js +8 -1
  129. package/lib/parsers/typescript/components/__test_fixtures__/fixtures.js.flow +8 -1
  130. package/lib/parsers/typescript/components/commands.js +23 -15
  131. package/lib/parsers/typescript/components/commands.js.flow +24 -16
  132. package/lib/parsers/typescript/components/componentsUtils.js +34 -20
  133. package/lib/parsers/typescript/components/componentsUtils.js.flow +36 -19
  134. package/lib/parsers/typescript/components/events.js +22 -22
  135. package/lib/parsers/typescript/components/events.js.flow +11 -10
  136. package/lib/parsers/typescript/components/extends.js.flow +1 -0
  137. package/lib/parsers/typescript/components/index.js +10 -10
  138. package/lib/parsers/typescript/components/index.js.flow +4 -4
  139. package/lib/parsers/typescript/modules/__test_fixtures__/fixtures.js +13 -0
  140. package/lib/parsers/typescript/modules/__test_fixtures__/fixtures.js.flow +13 -0
  141. package/lib/parsers/typescript/modules/index.js +25 -20
  142. package/lib/parsers/typescript/modules/index.js.flow +16 -14
  143. package/lib/parsers/typescript/parser.js +25 -26
  144. package/lib/parsers/typescript/parser.js.flow +23 -27
  145. package/lib/parsers/utils.js +5 -0
  146. package/lib/parsers/utils.js.flow +6 -1
  147. package/package.json +8 -6
@@ -11,33 +11,33 @@
11
11
  'use strict';
12
12
 
13
13
  const _require = require('./errors'),
14
+ IncorrectModuleRegistryCallArgumentTypeParserError =
15
+ _require.IncorrectModuleRegistryCallArgumentTypeParserError,
16
+ IncorrectModuleRegistryCallArityParserError =
17
+ _require.IncorrectModuleRegistryCallArityParserError,
18
+ IncorrectModuleRegistryCallTypeParameterParserError =
19
+ _require.IncorrectModuleRegistryCallTypeParameterParserError,
14
20
  MisnamedModuleInterfaceParserError =
15
21
  _require.MisnamedModuleInterfaceParserError,
16
- UnsupportedFunctionReturnTypeAnnotationParserError =
17
- _require.UnsupportedFunctionReturnTypeAnnotationParserError,
18
22
  ModuleInterfaceNotFoundParserError =
19
23
  _require.ModuleInterfaceNotFoundParserError,
24
+ MoreThanOneModuleInterfaceParserError =
25
+ _require.MoreThanOneModuleInterfaceParserError,
20
26
  MoreThanOneModuleRegistryCallsParserError =
21
27
  _require.MoreThanOneModuleRegistryCallsParserError,
22
- UnusedModuleInterfaceParserError = _require.UnusedModuleInterfaceParserError,
23
- IncorrectModuleRegistryCallArityParserError =
24
- _require.IncorrectModuleRegistryCallArityParserError,
25
- IncorrectModuleRegistryCallTypeParameterParserError =
26
- _require.IncorrectModuleRegistryCallTypeParameterParserError,
27
- IncorrectModuleRegistryCallArgumentTypeParserError =
28
- _require.IncorrectModuleRegistryCallArgumentTypeParserError,
28
+ UnsupportedArrayElementTypeAnnotationParserError =
29
+ _require.UnsupportedArrayElementTypeAnnotationParserError,
30
+ UnsupportedFunctionParamTypeAnnotationParserError =
31
+ _require.UnsupportedFunctionParamTypeAnnotationParserError,
32
+ UnsupportedFunctionReturnTypeAnnotationParserError =
33
+ _require.UnsupportedFunctionReturnTypeAnnotationParserError,
34
+ UnsupportedModulePropertyParserError =
35
+ _require.UnsupportedModulePropertyParserError,
29
36
  UnsupportedObjectPropertyValueTypeAnnotationParserError =
30
37
  _require.UnsupportedObjectPropertyValueTypeAnnotationParserError,
31
38
  UntypedModuleRegistryCallParserError =
32
39
  _require.UntypedModuleRegistryCallParserError,
33
- UnsupportedModulePropertyParserError =
34
- _require.UnsupportedModulePropertyParserError,
35
- MoreThanOneModuleInterfaceParserError =
36
- _require.MoreThanOneModuleInterfaceParserError,
37
- UnsupportedFunctionParamTypeAnnotationParserError =
38
- _require.UnsupportedFunctionParamTypeAnnotationParserError,
39
- UnsupportedArrayElementTypeAnnotationParserError =
40
- _require.UnsupportedArrayElementTypeAnnotationParserError;
40
+ UnusedModuleInterfaceParserError = _require.UnusedModuleInterfaceParserError;
41
41
  function throwIfModuleInterfaceIsMisnamed(
42
42
  nativeModuleName,
43
43
  moduleSpecId,
@@ -11,25 +11,25 @@
11
11
  'use strict';
12
12
 
13
13
  import type {NativeModuleTypeAnnotation} from '../CodegenSchema';
14
+ import type {TypeDeclarationMap} from '../parsers/utils';
14
15
  import type {ParserType} from './errors';
15
16
  import type {Parser} from './parser';
16
- import type {TypeDeclarationMap} from '../parsers/utils';
17
17
 
18
18
  const {
19
+ IncorrectModuleRegistryCallArgumentTypeParserError,
20
+ IncorrectModuleRegistryCallArityParserError,
21
+ IncorrectModuleRegistryCallTypeParameterParserError,
19
22
  MisnamedModuleInterfaceParserError,
20
- UnsupportedFunctionReturnTypeAnnotationParserError,
21
23
  ModuleInterfaceNotFoundParserError,
24
+ MoreThanOneModuleInterfaceParserError,
22
25
  MoreThanOneModuleRegistryCallsParserError,
23
- UnusedModuleInterfaceParserError,
24
- IncorrectModuleRegistryCallArityParserError,
25
- IncorrectModuleRegistryCallTypeParameterParserError,
26
- IncorrectModuleRegistryCallArgumentTypeParserError,
26
+ UnsupportedArrayElementTypeAnnotationParserError,
27
+ UnsupportedFunctionParamTypeAnnotationParserError,
28
+ UnsupportedFunctionReturnTypeAnnotationParserError,
29
+ UnsupportedModulePropertyParserError,
27
30
  UnsupportedObjectPropertyValueTypeAnnotationParserError,
28
31
  UntypedModuleRegistryCallParserError,
29
- UnsupportedModulePropertyParserError,
30
- MoreThanOneModuleInterfaceParserError,
31
- UnsupportedFunctionParamTypeAnnotationParserError,
32
- UnsupportedArrayElementTypeAnnotationParserError,
32
+ UnusedModuleInterfaceParserError,
33
33
  } = require('./errors');
34
34
 
35
35
  function throwIfModuleInterfaceIsMisnamed(
@@ -165,6 +165,15 @@ class UnsupportedObjectPropertyValueTypeAnnotationParserError extends ParserErro
165
165
  );
166
166
  }
167
167
  }
168
+ class UnsupportedObjectDirectRecursivePropertyParserError extends ParserError {
169
+ constructor(propertyName, propertyValueAST, nativeModuleName) {
170
+ super(
171
+ nativeModuleName,
172
+ propertyValueAST,
173
+ `Object property '${propertyName}' is direct recursive and must be nullable.`,
174
+ );
175
+ }
176
+ }
168
177
 
169
178
  /**
170
179
  * Function parsing errors
@@ -315,6 +324,7 @@ module.exports = {
315
324
  UnsupportedModulePropertyParserError,
316
325
  UnsupportedObjectPropertyTypeAnnotationParserError,
317
326
  UnsupportedObjectPropertyValueTypeAnnotationParserError,
327
+ UnsupportedObjectDirectRecursivePropertyParserError,
318
328
  UnusedModuleInterfaceParserError,
319
329
  MoreThanOneModuleRegistryCallsParserError,
320
330
  UntypedModuleRegistryCallParserError,
@@ -11,7 +11,6 @@
11
11
  'use strict';
12
12
 
13
13
  import type {UnionTypeAnnotationMemberType} from '../CodegenSchema';
14
-
15
14
  import type {Parser} from './parser';
16
15
  export type ParserType = 'Flow' | 'TypeScript';
17
16
 
@@ -218,6 +217,20 @@ class UnsupportedObjectPropertyValueTypeAnnotationParserError extends ParserErro
218
217
  }
219
218
  }
220
219
 
220
+ class UnsupportedObjectDirectRecursivePropertyParserError extends ParserError {
221
+ constructor(
222
+ propertyName: string,
223
+ propertyValueAST: $FlowFixMe,
224
+ nativeModuleName: string,
225
+ ) {
226
+ super(
227
+ nativeModuleName,
228
+ propertyValueAST,
229
+ `Object property '${propertyName}' is direct recursive and must be nullable.`,
230
+ );
231
+ }
232
+ }
233
+
221
234
  /**
222
235
  * Function parsing errors
223
236
  */
@@ -406,6 +419,7 @@ module.exports = {
406
419
  UnsupportedModulePropertyParserError,
407
420
  UnsupportedObjectPropertyTypeAnnotationParserError,
408
421
  UnsupportedObjectPropertyValueTypeAnnotationParserError,
422
+ UnsupportedObjectDirectRecursivePropertyParserError,
409
423
  UnusedModuleInterfaceParserError,
410
424
  MoreThanOneModuleRegistryCallsParserError,
411
425
  UntypedModuleRegistryCallParserError,
@@ -988,10 +988,16 @@ export type ScrollTo = (
988
988
 
989
989
  interface NativeCommands {
990
990
  +scrollTo: ScrollTo;
991
+ +addOverlays: (
992
+ viewRef: React.ElementRef<NativeType>,
993
+ overlayColorsReadOnly: $ReadOnlyArray<string>,
994
+ overlayColorsArray: Array<string>,
995
+ overlayColorsArrayAnnotation: string[],
996
+ ) => void;
991
997
  }
992
998
 
993
999
  export const Commands = codegenNativeCommands<NativeCommands>({
994
- supportedCommands: ['scrollTo'],
1000
+ supportedCommands: ['scrollTo', 'addOverlays'],
995
1001
  });
996
1002
 
997
1003
  export default (codegenNativeComponent<ModuleProps>(
@@ -1001,10 +1001,16 @@ export type ScrollTo = (
1001
1001
 
1002
1002
  interface NativeCommands {
1003
1003
  +scrollTo: ScrollTo;
1004
+ +addOverlays: (
1005
+ viewRef: React.ElementRef<NativeType>,
1006
+ overlayColorsReadOnly: $ReadOnlyArray<string>,
1007
+ overlayColorsArray: Array<string>,
1008
+ overlayColorsArrayAnnotation: string[],
1009
+ ) => void;
1004
1010
  }
1005
1011
 
1006
1012
  export const Commands = codegenNativeCommands<NativeCommands>({
1007
- supportedCommands: ['scrollTo'],
1013
+ supportedCommands: ['scrollTo', 'addOverlays'],
1008
1014
  });
1009
1015
 
1010
1016
  export default (codegenNativeComponent<ModuleProps>(
@@ -72,6 +72,30 @@ function buildCommandSchema(property, types) {
72
72
  type: 'StringTypeAnnotation',
73
73
  };
74
74
  break;
75
+ case 'Array':
76
+ case '$ReadOnlyArray':
77
+ if (!paramValue.type === 'GenericTypeAnnotation') {
78
+ throw new Error(
79
+ 'Array and $ReadOnlyArray are GenericTypeAnnotation for array',
80
+ );
81
+ }
82
+ returnType = {
83
+ type: 'ArrayTypeAnnotation',
84
+ elementType: {
85
+ // TODO: T172453752 support complex type annotation for array element
86
+ type: paramValue.typeParameters.params[0].type,
87
+ },
88
+ };
89
+ break;
90
+ case 'ArrayTypeAnnotation':
91
+ returnType = {
92
+ type: 'ArrayTypeAnnotation',
93
+ elementType: {
94
+ // TODO: T172453752 support complex type annotation for array element
95
+ type: paramValue.elementType.type,
96
+ },
97
+ };
98
+ break;
75
99
  default:
76
100
  type;
77
101
  throw new Error(
@@ -11,8 +11,9 @@
11
11
  'use strict';
12
12
 
13
13
  import type {
14
- NamedShape,
14
+ CommandParamTypeAnnotation,
15
15
  CommandTypeAnnotation,
16
+ NamedShape,
16
17
  } from '../../../CodegenSchema.js';
17
18
  import type {TypeDeclarationMap} from '../../utils';
18
19
 
@@ -21,7 +22,24 @@ const {getValueFromTypes} = require('../utils.js');
21
22
  // $FlowFixMe[unclear-type] there's no flowtype for ASTs
22
23
  type EventTypeAST = Object;
23
24
 
24
- function buildCommandSchema(property: EventTypeAST, types: TypeDeclarationMap) {
25
+ function buildCommandSchema(
26
+ property: EventTypeAST,
27
+ types: TypeDeclarationMap,
28
+ ): $ReadOnly<{
29
+ name: string,
30
+ optional: boolean,
31
+ typeAnnotation: {
32
+ type: 'FunctionTypeAnnotation',
33
+ params: $ReadOnlyArray<{
34
+ name: string,
35
+ optional: boolean,
36
+ typeAnnotation: CommandParamTypeAnnotation,
37
+ }>,
38
+ returnTypeAnnotation: {
39
+ type: 'VoidTypeAnnotation',
40
+ },
41
+ },
42
+ }> {
25
43
  const name = property.key.name;
26
44
  const optional = property.optional;
27
45
  const value = getValueFromTypes(property.value, types);
@@ -48,7 +66,7 @@ function buildCommandSchema(property: EventTypeAST, types: TypeDeclarationMap) {
48
66
  paramValue.type === 'GenericTypeAnnotation'
49
67
  ? paramValue.id.name
50
68
  : paramValue.type;
51
- let returnType;
69
+ let returnType: CommandParamTypeAnnotation;
52
70
 
53
71
  switch (type) {
54
72
  case 'RootTag':
@@ -82,6 +100,30 @@ function buildCommandSchema(property: EventTypeAST, types: TypeDeclarationMap) {
82
100
  type: 'StringTypeAnnotation',
83
101
  };
84
102
  break;
103
+ case 'Array':
104
+ case '$ReadOnlyArray':
105
+ if (!paramValue.type === 'GenericTypeAnnotation') {
106
+ throw new Error(
107
+ 'Array and $ReadOnlyArray are GenericTypeAnnotation for array',
108
+ );
109
+ }
110
+ returnType = {
111
+ type: 'ArrayTypeAnnotation',
112
+ elementType: {
113
+ // TODO: T172453752 support complex type annotation for array element
114
+ type: paramValue.typeParameters.params[0].type,
115
+ },
116
+ };
117
+ break;
118
+ case 'ArrayTypeAnnotation':
119
+ returnType = {
120
+ type: 'ArrayTypeAnnotation',
121
+ elementType: {
122
+ // TODO: T172453752 support complex type annotation for array element
123
+ type: paramValue.elementType.type,
124
+ },
125
+ };
126
+ break;
85
127
  default:
86
128
  (type: empty);
87
129
  throw new Error(
@@ -10,10 +10,11 @@
10
10
 
11
11
  'use strict';
12
12
 
13
- const _require = require('../utils.js'),
14
- getValueFromTypes = _require.getValueFromTypes;
15
- const _require2 = require('../../parsers-commons'),
16
- verifyPropNotAlreadyDefined = _require2.verifyPropNotAlreadyDefined;
13
+ const _require = require('../../parsers-commons'),
14
+ verifyPropNotAlreadyDefined = _require.verifyPropNotAlreadyDefined;
15
+ const _require2 = require('../utils.js'),
16
+ getValueFromTypes = _require2.getValueFromTypes;
17
+
17
18
  // $FlowFixMe[unsupported-variance-annotation]
18
19
  function getTypeAnnotationForArray(
19
20
  name,
@@ -10,10 +10,11 @@
10
10
 
11
11
  'use strict';
12
12
 
13
- const {getValueFromTypes} = require('../utils.js');
14
- const {verifyPropNotAlreadyDefined} = require('../../parsers-commons');
15
- import type {TypeDeclarationMap, PropAST, ASTNode} from '../../utils';
16
13
  import type {BuildSchemaFN, Parser} from '../../parser';
14
+ import type {ASTNode, PropAST, TypeDeclarationMap} from '../../utils';
15
+
16
+ const {verifyPropNotAlreadyDefined} = require('../../parsers-commons');
17
+ const {getValueFromTypes} = require('../utils.js');
17
18
 
18
19
  // $FlowFixMe[unsupported-variance-annotation]
19
20
  function getTypeAnnotationForArray<+T>(
@@ -11,22 +11,22 @@
11
11
  'use strict';
12
12
 
13
13
  const _require = require('../../error-utils'),
14
- throwIfEventHasNoName = _require.throwIfEventHasNoName,
14
+ throwIfArgumentPropsAreNull = _require.throwIfArgumentPropsAreNull,
15
15
  throwIfBubblingTypeIsNull = _require.throwIfBubblingTypeIsNull,
16
- throwIfArgumentPropsAreNull = _require.throwIfArgumentPropsAreNull;
16
+ throwIfEventHasNoName = _require.throwIfEventHasNoName;
17
17
  const _require2 = require('../../parsers-commons'),
18
- getEventArgument = _require2.getEventArgument,
19
18
  buildPropertiesForEvent = _require2.buildPropertiesForEvent,
20
- handleEventHandler = _require2.handleEventHandler,
21
- emitBuildEventSchema = _require2.emitBuildEventSchema;
19
+ emitBuildEventSchema = _require2.emitBuildEventSchema,
20
+ getEventArgument = _require2.getEventArgument,
21
+ handleEventHandler = _require2.handleEventHandler;
22
22
  const _require3 = require('../../parsers-primitives'),
23
23
  emitBoolProp = _require3.emitBoolProp,
24
24
  emitDoubleProp = _require3.emitDoubleProp,
25
25
  emitFloatProp = _require3.emitFloatProp,
26
- emitMixedProp = _require3.emitMixedProp,
27
- emitStringProp = _require3.emitStringProp,
28
26
  emitInt32Prop = _require3.emitInt32Prop,
27
+ emitMixedProp = _require3.emitMixedProp,
29
28
  emitObjectProp = _require3.emitObjectProp,
29
+ emitStringProp = _require3.emitStringProp,
30
30
  emitUnionProp = _require3.emitUnionProp;
31
31
  function getPropertyType(
32
32
  /* $FlowFixMe[missing-local-annot] The type annotation(s) required by Flow's
@@ -11,32 +11,32 @@
11
11
  'use strict';
12
12
 
13
13
  import type {
14
+ EventTypeAnnotation,
14
15
  EventTypeShape,
15
16
  NamedShape,
16
- EventTypeAnnotation,
17
17
  } from '../../../CodegenSchema.js';
18
18
  import type {Parser} from '../../parser';
19
19
  import type {EventArgumentReturnType} from '../../parsers-commons';
20
20
 
21
21
  const {
22
- throwIfEventHasNoName,
23
- throwIfBubblingTypeIsNull,
24
22
  throwIfArgumentPropsAreNull,
23
+ throwIfBubblingTypeIsNull,
24
+ throwIfEventHasNoName,
25
25
  } = require('../../error-utils');
26
26
  const {
27
- getEventArgument,
28
27
  buildPropertiesForEvent,
29
- handleEventHandler,
30
28
  emitBuildEventSchema,
29
+ getEventArgument,
30
+ handleEventHandler,
31
31
  } = require('../../parsers-commons');
32
32
  const {
33
33
  emitBoolProp,
34
34
  emitDoubleProp,
35
35
  emitFloatProp,
36
- emitMixedProp,
37
- emitStringProp,
38
36
  emitInt32Prop,
37
+ emitMixedProp,
39
38
  emitObjectProp,
39
+ emitStringProp,
40
40
  emitUnionProp,
41
41
  } = require('../../parsers-primitives');
42
42
 
@@ -10,14 +10,14 @@
10
10
 
11
11
  'use strict';
12
12
 
13
- const _require = require('./commands'),
14
- getCommands = _require.getCommands;
15
- const _require2 = require('./events'),
16
- getEvents = _require2.getEvents;
17
- const _require3 = require('../../parsers-commons'),
18
- getOptions = _require3.getOptions,
19
- findComponentConfig = _require3.findComponentConfig,
20
- getCommandProperties = _require3.getCommandProperties;
13
+ const _require = require('../../parsers-commons'),
14
+ findComponentConfig = _require.findComponentConfig,
15
+ getCommandProperties = _require.getCommandProperties,
16
+ getOptions = _require.getOptions;
17
+ const _require2 = require('./commands'),
18
+ getCommands = _require2.getCommands;
19
+ const _require3 = require('./events'),
20
+ getEvents = _require3.getEvents;
21
21
 
22
22
  // $FlowFixMe[signature-verification-failure] there's no flowtype for AST
23
23
  function buildComponentSchema(ast, parser) {
@@ -12,13 +12,13 @@
12
12
  import type {Parser} from '../../parser';
13
13
  import type {ComponentSchemaBuilderConfig} from '../../schema.js';
14
14
 
15
- const {getCommands} = require('./commands');
16
- const {getEvents} = require('./events');
17
15
  const {
18
- getOptions,
19
16
  findComponentConfig,
20
17
  getCommandProperties,
18
+ getOptions,
21
19
  } = require('../../parsers-commons');
20
+ const {getCommands} = require('./commands');
21
+ const {getEvents} = require('./events');
22
22
 
23
23
  // $FlowFixMe[signature-verification-failure] there's no flowtype for AST
24
24
  function buildComponentSchema(
@@ -708,10 +708,23 @@ export enum StringOptions {
708
708
  Three = 'three',
709
709
  }
710
710
 
711
+ export type BinaryTreeNode = {
712
+ left?: BinaryTreeNode,
713
+ value: number,
714
+ right?: BinaryTreeNode,
715
+ };
716
+
717
+ export type GraphNode = {
718
+ label: string,
719
+ neighbors?: Array<GraphNode>,
720
+ };
721
+
711
722
  export interface Spec extends TurboModule {
712
723
  +getCallback: () => () => void;
713
724
  +getMixed: (arg: mixed) => mixed;
714
725
  +getEnums: (quality: Quality, resolution?: Resolution, floppy: Floppy, stringOptions: StringOptions) => string;
726
+ +getBinaryTreeNode: (arg: BinaryTreeNode) => BinaryTreeNode;
727
+ +getGraphNode: (arg: GraphNode) => GraphNode;
715
728
  +getMap: (arg: {[a: string]: ?number}) => {[b: string]: ?number};
716
729
  +getAnotherMap: (arg: {[string]: string}) => {[string]: string};
717
730
  +getUnion: (chooseInt: ChooseInt, chooseFloat: ChooseFloat, chooseObject: ChooseObject, chooseString: ChooseString) => ChooseObject;
@@ -731,10 +731,23 @@ export enum StringOptions {
731
731
  Three = 'three',
732
732
  }
733
733
 
734
+ export type BinaryTreeNode = {
735
+ left?: BinaryTreeNode,
736
+ value: number,
737
+ right?: BinaryTreeNode,
738
+ };
739
+
740
+ export type GraphNode = {
741
+ label: string,
742
+ neighbors?: Array<GraphNode>,
743
+ };
744
+
734
745
  export interface Spec extends TurboModule {
735
746
  +getCallback: () => () => void;
736
747
  +getMixed: (arg: mixed) => mixed;
737
748
  +getEnums: (quality: Quality, resolution?: Resolution, floppy: Floppy, stringOptions: StringOptions) => string;
749
+ +getBinaryTreeNode: (arg: BinaryTreeNode) => BinaryTreeNode;
750
+ +getGraphNode: (arg: GraphNode) => GraphNode;
738
751
  +getMap: (arg: {[a: string]: ?number}) => {[b: string]: ?number};
739
752
  +getAnotherMap: (arg: {[string]: string}) => {[string]: string};
740
753
  +getUnion: (chooseInt: ChooseInt, chooseFloat: ChooseFloat, chooseObject: ChooseObject, chooseString: ChooseString) => ChooseObject;
@@ -78,26 +78,26 @@ function _iterableToArrayLimit(arr, i) {
78
78
  function _arrayWithHoles(arr) {
79
79
  if (Array.isArray(arr)) return arr;
80
80
  }
81
- const _require = require('../../parsers-commons'),
82
- unwrapNullable = _require.unwrapNullable,
83
- wrapNullable = _require.wrapNullable,
84
- assertGenericTypeAnnotationHasExactlyOneTypeParameter =
85
- _require.assertGenericTypeAnnotationHasExactlyOneTypeParameter,
86
- parseObjectProperty = _require.parseObjectProperty;
87
- const _require2 = require('../../parsers-primitives'),
88
- emitArrayType = _require2.emitArrayType,
89
- emitFunction = _require2.emitFunction,
90
- emitDictionary = _require2.emitDictionary,
91
- emitPromise = _require2.emitPromise,
92
- emitRootTag = _require2.emitRootTag,
93
- emitUnion = _require2.emitUnion,
94
- emitCommonTypes = _require2.emitCommonTypes,
95
- typeAliasResolution = _require2.typeAliasResolution,
96
- typeEnumResolution = _require2.typeEnumResolution;
97
- const _require3 = require('../../errors'),
81
+ const _require = require('../../errors'),
82
+ UnsupportedGenericParserError = _require.UnsupportedGenericParserError,
98
83
  UnsupportedTypeAnnotationParserError =
99
- _require3.UnsupportedTypeAnnotationParserError,
100
- UnsupportedGenericParserError = _require3.UnsupportedGenericParserError;
84
+ _require.UnsupportedTypeAnnotationParserError;
85
+ const _require2 = require('../../parsers-commons'),
86
+ assertGenericTypeAnnotationHasExactlyOneTypeParameter =
87
+ _require2.assertGenericTypeAnnotationHasExactlyOneTypeParameter,
88
+ parseObjectProperty = _require2.parseObjectProperty,
89
+ unwrapNullable = _require2.unwrapNullable,
90
+ wrapNullable = _require2.wrapNullable;
91
+ const _require3 = require('../../parsers-primitives'),
92
+ emitArrayType = _require3.emitArrayType,
93
+ emitCommonTypes = _require3.emitCommonTypes,
94
+ emitDictionary = _require3.emitDictionary,
95
+ emitFunction = _require3.emitFunction,
96
+ emitPromise = _require3.emitPromise,
97
+ emitRootTag = _require3.emitRootTag,
98
+ emitUnion = _require3.emitUnion,
99
+ typeAliasResolution = _require3.typeAliasResolution,
100
+ typeEnumResolution = _require3.typeEnumResolution;
101
101
  function translateTypeAnnotation(
102
102
  hasteModuleName,
103
103
  /**
@@ -231,6 +231,7 @@ function translateTypeAnnotation(
231
231
  .map(property => {
232
232
  return tryParse(() => {
233
233
  return parseObjectProperty(
234
+ flowTypeAnnotation,
234
235
  property,
235
236
  hasteModuleName,
236
237
  types,
@@ -13,38 +13,36 @@
13
13
  import type {
14
14
  NamedShape,
15
15
  NativeModuleAliasMap,
16
- NativeModuleEnumMap,
17
16
  NativeModuleBaseTypeAnnotation,
17
+ NativeModuleEnumMap,
18
18
  NativeModuleTypeAnnotation,
19
19
  Nullable,
20
20
  } from '../../../CodegenSchema';
21
-
22
21
  import type {Parser} from '../../parser';
23
22
  import type {ParserErrorCapturer, TypeDeclarationMap} from '../../utils';
24
23
 
25
24
  const {
26
- unwrapNullable,
27
- wrapNullable,
25
+ UnsupportedGenericParserError,
26
+ UnsupportedTypeAnnotationParserError,
27
+ } = require('../../errors');
28
+ const {
28
29
  assertGenericTypeAnnotationHasExactlyOneTypeParameter,
29
30
  parseObjectProperty,
31
+ unwrapNullable,
32
+ wrapNullable,
30
33
  } = require('../../parsers-commons');
31
34
  const {
32
35
  emitArrayType,
33
- emitFunction,
36
+ emitCommonTypes,
34
37
  emitDictionary,
38
+ emitFunction,
35
39
  emitPromise,
36
40
  emitRootTag,
37
41
  emitUnion,
38
- emitCommonTypes,
39
42
  typeAliasResolution,
40
43
  typeEnumResolution,
41
44
  } = require('../../parsers-primitives');
42
45
 
43
- const {
44
- UnsupportedTypeAnnotationParserError,
45
- UnsupportedGenericParserError,
46
- } = require('../../errors');
47
-
48
46
  function translateTypeAnnotation(
49
47
  hasteModuleName: string,
50
48
  /**
@@ -178,6 +176,7 @@ function translateTypeAnnotation(
178
176
  property => {
179
177
  return tryParse(() => {
180
178
  return parseObjectProperty(
179
+ flowTypeAnnotation,
181
180
  property,
182
181
  hasteModuleName,
183
182
  types,