@react-native/codegen 0.72.1

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 (186) hide show
  1. package/README.md +21 -0
  2. package/lib/CodegenSchema.js +11 -0
  3. package/lib/CodegenSchema.js.flow +351 -0
  4. package/lib/SchemaValidator.js +54 -0
  5. package/lib/SchemaValidator.js.flow +67 -0
  6. package/lib/cli/combine/combine-js-to-schema-cli.js +50 -0
  7. package/lib/cli/combine/combine-js-to-schema-cli.js.flow +49 -0
  8. package/lib/cli/combine/combine-js-to-schema.js +110 -0
  9. package/lib/cli/combine/combine-js-to-schema.js.flow +48 -0
  10. package/lib/cli/combine/combine-utils.js +118 -0
  11. package/lib/cli/combine/combine-utils.js.flow +85 -0
  12. package/lib/cli/generators/generate-all.js +65 -0
  13. package/lib/cli/generators/generate-all.js.flow +66 -0
  14. package/lib/cli/parser/parser-cli.js +55 -0
  15. package/lib/cli/parser/parser-cli.js.flow +18 -0
  16. package/lib/cli/parser/parser.js +35 -0
  17. package/lib/cli/parser/parser.js.flow +37 -0
  18. package/lib/cli/parser/parser.sh +15 -0
  19. package/lib/generators/RNCodegen.js +207 -0
  20. package/lib/generators/RNCodegen.js.flow +284 -0
  21. package/lib/generators/Utils.js +31 -0
  22. package/lib/generators/Utils.js.flow +33 -0
  23. package/lib/generators/__test_fixtures__/fixtures.js +79 -0
  24. package/lib/generators/__test_fixtures__/fixtures.js.flow +82 -0
  25. package/lib/generators/components/ComponentsGeneratorUtils.js +217 -0
  26. package/lib/generators/components/ComponentsGeneratorUtils.js.flow +304 -0
  27. package/lib/generators/components/CppHelpers.js +188 -0
  28. package/lib/generators/components/CppHelpers.js.flow +228 -0
  29. package/lib/generators/components/GenerateComponentDescriptorH.js +75 -0
  30. package/lib/generators/components/GenerateComponentDescriptorH.js.flow +95 -0
  31. package/lib/generators/components/GenerateComponentHObjCpp.js +327 -0
  32. package/lib/generators/components/GenerateComponentHObjCpp.js.flow +418 -0
  33. package/lib/generators/components/GenerateEventEmitterCpp.js +199 -0
  34. package/lib/generators/components/GenerateEventEmitterCpp.js.flow +273 -0
  35. package/lib/generators/components/GenerateEventEmitterH.js +224 -0
  36. package/lib/generators/components/GenerateEventEmitterH.js.flow +315 -0
  37. package/lib/generators/components/GeneratePropsCpp.js +126 -0
  38. package/lib/generators/components/GeneratePropsCpp.js.flow +161 -0
  39. package/lib/generators/components/GeneratePropsH.js +606 -0
  40. package/lib/generators/components/GeneratePropsH.js.flow +778 -0
  41. package/lib/generators/components/GeneratePropsJavaDelegate.js +287 -0
  42. package/lib/generators/components/GeneratePropsJavaDelegate.js.flow +348 -0
  43. package/lib/generators/components/GeneratePropsJavaInterface.js +237 -0
  44. package/lib/generators/components/GeneratePropsJavaInterface.js.flow +288 -0
  45. package/lib/generators/components/GeneratePropsJavaPojo/PojoCollector.js +157 -0
  46. package/lib/generators/components/GeneratePropsJavaPojo/PojoCollector.js.flow +187 -0
  47. package/lib/generators/components/GeneratePropsJavaPojo/index.js +66 -0
  48. package/lib/generators/components/GeneratePropsJavaPojo/index.js.flow +80 -0
  49. package/lib/generators/components/GeneratePropsJavaPojo/serializePojo.js +273 -0
  50. package/lib/generators/components/GeneratePropsJavaPojo/serializePojo.js.flow +296 -0
  51. package/lib/generators/components/GenerateShadowNodeCpp.js +73 -0
  52. package/lib/generators/components/GenerateShadowNodeCpp.js.flow +95 -0
  53. package/lib/generators/components/GenerateShadowNodeH.js +91 -0
  54. package/lib/generators/components/GenerateShadowNodeH.js.flow +124 -0
  55. package/lib/generators/components/GenerateStateCpp.js +70 -0
  56. package/lib/generators/components/GenerateStateCpp.js.flow +92 -0
  57. package/lib/generators/components/GenerateStateH.js +93 -0
  58. package/lib/generators/components/GenerateStateH.js.flow +111 -0
  59. package/lib/generators/components/GenerateTests.js +165 -0
  60. package/lib/generators/components/GenerateTests.js.flow +219 -0
  61. package/lib/generators/components/GenerateThirdPartyFabricComponentsProviderH.js +91 -0
  62. package/lib/generators/components/GenerateThirdPartyFabricComponentsProviderH.js.flow +107 -0
  63. package/lib/generators/components/GenerateThirdPartyFabricComponentsProviderObjCpp.js +89 -0
  64. package/lib/generators/components/GenerateThirdPartyFabricComponentsProviderObjCpp.js.flow +105 -0
  65. package/lib/generators/components/GenerateViewConfigJs.js +410 -0
  66. package/lib/generators/components/GenerateViewConfigJs.js.flow +484 -0
  67. package/lib/generators/components/JavaHelpers.js +87 -0
  68. package/lib/generators/components/JavaHelpers.js.flow +119 -0
  69. package/lib/generators/components/__test_fixtures__/fixtures.js +1641 -0
  70. package/lib/generators/components/__test_fixtures__/fixtures.js.flow +1672 -0
  71. package/lib/generators/modules/GenerateModuleCpp.js +299 -0
  72. package/lib/generators/modules/GenerateModuleCpp.js.flow +278 -0
  73. package/lib/generators/modules/GenerateModuleH.js +373 -0
  74. package/lib/generators/modules/GenerateModuleH.js.flow +355 -0
  75. package/lib/generators/modules/GenerateModuleJavaSpec.js +571 -0
  76. package/lib/generators/modules/GenerateModuleJavaSpec.js.flow +553 -0
  77. package/lib/generators/modules/GenerateModuleJniCpp.js +505 -0
  78. package/lib/generators/modules/GenerateModuleJniCpp.js.flow +523 -0
  79. package/lib/generators/modules/GenerateModuleJniH.js +138 -0
  80. package/lib/generators/modules/GenerateModuleJniH.js.flow +148 -0
  81. package/lib/generators/modules/GenerateModuleObjCpp/StructCollector.js +262 -0
  82. package/lib/generators/modules/GenerateModuleObjCpp/StructCollector.js.flow +208 -0
  83. package/lib/generators/modules/GenerateModuleObjCpp/Utils.js +25 -0
  84. package/lib/generators/modules/GenerateModuleObjCpp/Utils.js.flow +32 -0
  85. package/lib/generators/modules/GenerateModuleObjCpp/header/serializeConstantsStruct.js +337 -0
  86. package/lib/generators/modules/GenerateModuleObjCpp/header/serializeConstantsStruct.js.flow +288 -0
  87. package/lib/generators/modules/GenerateModuleObjCpp/header/serializeRegularStruct.js +330 -0
  88. package/lib/generators/modules/GenerateModuleObjCpp/header/serializeRegularStruct.js.flow +279 -0
  89. package/lib/generators/modules/GenerateModuleObjCpp/header/serializeStruct.js +25 -0
  90. package/lib/generators/modules/GenerateModuleObjCpp/header/serializeStruct.js.flow +35 -0
  91. package/lib/generators/modules/GenerateModuleObjCpp/index.js +185 -0
  92. package/lib/generators/modules/GenerateModuleObjCpp/index.js.flow +219 -0
  93. package/lib/generators/modules/GenerateModuleObjCpp/serializeMethod.js +529 -0
  94. package/lib/generators/modules/GenerateModuleObjCpp/serializeMethod.js.flow +510 -0
  95. package/lib/generators/modules/GenerateModuleObjCpp/source/serializeModule.js +96 -0
  96. package/lib/generators/modules/GenerateModuleObjCpp/source/serializeModule.js.flow +121 -0
  97. package/lib/generators/modules/Utils.js +34 -0
  98. package/lib/generators/modules/Utils.js.flow +53 -0
  99. package/lib/generators/modules/__test_fixtures__/fixtures.js +1658 -0
  100. package/lib/generators/modules/__test_fixtures__/fixtures.js.flow +1669 -0
  101. package/lib/parsers/consistency/compareSnaps.js +84 -0
  102. package/lib/parsers/error-utils.js +284 -0
  103. package/lib/parsers/error-utils.js.flow +295 -0
  104. package/lib/parsers/errors.js +350 -0
  105. package/lib/parsers/errors.js.flow +439 -0
  106. package/lib/parsers/flow/components/__test_fixtures__/failures.js +583 -0
  107. package/lib/parsers/flow/components/__test_fixtures__/failures.js.flow +600 -0
  108. package/lib/parsers/flow/components/__test_fixtures__/fixtures.js +1001 -0
  109. package/lib/parsers/flow/components/__test_fixtures__/fixtures.js.flow +1016 -0
  110. package/lib/parsers/flow/components/commands.js +104 -0
  111. package/lib/parsers/flow/components/commands.js.flow +123 -0
  112. package/lib/parsers/flow/components/componentsUtils.js +446 -0
  113. package/lib/parsers/flow/components/componentsUtils.js.flow +496 -0
  114. package/lib/parsers/flow/components/events.js +233 -0
  115. package/lib/parsers/flow/components/events.js.flow +262 -0
  116. package/lib/parsers/flow/components/extends.js +52 -0
  117. package/lib/parsers/flow/components/extends.js.flow +66 -0
  118. package/lib/parsers/flow/components/index.js +267 -0
  119. package/lib/parsers/flow/components/index.js.flow +226 -0
  120. package/lib/parsers/flow/components/options.js +72 -0
  121. package/lib/parsers/flow/components/options.js.flow +87 -0
  122. package/lib/parsers/flow/components/props.js +47 -0
  123. package/lib/parsers/flow/components/props.js.flow +60 -0
  124. package/lib/parsers/flow/components/schema.js +106 -0
  125. package/lib/parsers/flow/components/schema.js.flow +62 -0
  126. package/lib/parsers/flow/index.js +80 -0
  127. package/lib/parsers/flow/index.js.flow +85 -0
  128. package/lib/parsers/flow/modules/__test_fixtures__/failures.js +215 -0
  129. package/lib/parsers/flow/modules/__test_fixtures__/failures.js.flow +223 -0
  130. package/lib/parsers/flow/modules/__test_fixtures__/fixtures.js +724 -0
  131. package/lib/parsers/flow/modules/__test_fixtures__/fixtures.js.flow +747 -0
  132. package/lib/parsers/flow/modules/index.js +528 -0
  133. package/lib/parsers/flow/modules/index.js.flow +420 -0
  134. package/lib/parsers/flow/parser.js +109 -0
  135. package/lib/parsers/flow/parser.js.flow +83 -0
  136. package/lib/parsers/flow/utils.js +108 -0
  137. package/lib/parsers/flow/utils.js.flow +123 -0
  138. package/lib/parsers/parser.js +11 -0
  139. package/lib/parsers/parser.js.flow +70 -0
  140. package/lib/parsers/parserMock.js +96 -0
  141. package/lib/parsers/parserMock.js.flow +68 -0
  142. package/lib/parsers/parsers-commons.js +448 -0
  143. package/lib/parsers/parsers-commons.js.flow +447 -0
  144. package/lib/parsers/parsers-primitives.js +387 -0
  145. package/lib/parsers/parsers-primitives.js.flow +383 -0
  146. package/lib/parsers/parsers-utils.js +18 -0
  147. package/lib/parsers/parsers-utils.js.flow +19 -0
  148. package/lib/parsers/schema/index.js +23 -0
  149. package/lib/parsers/schema/index.js.flow +26 -0
  150. package/lib/parsers/typescript/components/__test_fixtures__/failures.js +489 -0
  151. package/lib/parsers/typescript/components/__test_fixtures__/failures.js.flow +505 -0
  152. package/lib/parsers/typescript/components/__test_fixtures__/fixtures.js +1151 -0
  153. package/lib/parsers/typescript/components/__test_fixtures__/fixtures.js.flow +1168 -0
  154. package/lib/parsers/typescript/components/commands.js +132 -0
  155. package/lib/parsers/typescript/components/commands.js.flow +151 -0
  156. package/lib/parsers/typescript/components/componentsUtils.js +471 -0
  157. package/lib/parsers/typescript/components/componentsUtils.js.flow +521 -0
  158. package/lib/parsers/typescript/components/events.js +240 -0
  159. package/lib/parsers/typescript/components/events.js.flow +262 -0
  160. package/lib/parsers/typescript/components/extends.js +88 -0
  161. package/lib/parsers/typescript/components/extends.js.flow +103 -0
  162. package/lib/parsers/typescript/components/index.js +277 -0
  163. package/lib/parsers/typescript/components/index.js.flow +239 -0
  164. package/lib/parsers/typescript/components/options.js +72 -0
  165. package/lib/parsers/typescript/components/options.js.flow +87 -0
  166. package/lib/parsers/typescript/components/props.js +39 -0
  167. package/lib/parsers/typescript/components/props.js.flow +48 -0
  168. package/lib/parsers/typescript/components/schema.js +106 -0
  169. package/lib/parsers/typescript/components/schema.js.flow +62 -0
  170. package/lib/parsers/typescript/index.js +85 -0
  171. package/lib/parsers/typescript/index.js.flow +94 -0
  172. package/lib/parsers/typescript/modules/__test_fixtures__/failures.js +160 -0
  173. package/lib/parsers/typescript/modules/__test_fixtures__/failures.js.flow +167 -0
  174. package/lib/parsers/typescript/modules/__test_fixtures__/fixtures.js +701 -0
  175. package/lib/parsers/typescript/modules/__test_fixtures__/fixtures.js.flow +727 -0
  176. package/lib/parsers/typescript/modules/index.js +543 -0
  177. package/lib/parsers/typescript/modules/index.js.flow +435 -0
  178. package/lib/parsers/typescript/parseTopLevelType.js +203 -0
  179. package/lib/parsers/typescript/parseTopLevelType.js.flow +243 -0
  180. package/lib/parsers/typescript/parser.js +105 -0
  181. package/lib/parsers/typescript/parser.js.flow +87 -0
  182. package/lib/parsers/typescript/utils.js +101 -0
  183. package/lib/parsers/typescript/utils.js.flow +115 -0
  184. package/lib/parsers/utils.js +273 -0
  185. package/lib/parsers/utils.js.flow +266 -0
  186. package/package.json +45 -0
@@ -0,0 +1,123 @@
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
+ * @flow strict
8
+ * @format
9
+ */
10
+
11
+ 'use strict';
12
+
13
+ import type {TypeAliasResolutionStatus, TypeDeclarationMap} from '../utils';
14
+
15
+ /**
16
+ * This FlowFixMe is supposed to refer to an InterfaceDeclaration or TypeAlias
17
+ * declaration type. Unfortunately, we don't have those types, because flow-parser
18
+ * generates them, and flow-parser is not type-safe. In the future, we should find
19
+ * a way to get these types from our flow parser library.
20
+ *
21
+ * TODO(T71778680): Flow type AST Nodes
22
+ */
23
+
24
+ function getTypes(ast: $FlowFixMe): TypeDeclarationMap {
25
+ return ast.body.reduce((types, node) => {
26
+ if (node.type === 'ExportNamedDeclaration' && node.exportKind === 'type') {
27
+ if (
28
+ node.declaration != null &&
29
+ (node.declaration.type === 'TypeAlias' ||
30
+ node.declaration.type === 'InterfaceDeclaration')
31
+ ) {
32
+ types[node.declaration.id.name] = node.declaration;
33
+ }
34
+ } else if (
35
+ node.type === 'ExportNamedDeclaration' &&
36
+ node.exportKind === 'value' &&
37
+ node.declaration &&
38
+ node.declaration.type === 'EnumDeclaration'
39
+ ) {
40
+ types[node.declaration.id.name] = node.declaration;
41
+ } else if (
42
+ node.type === 'TypeAlias' ||
43
+ node.type === 'InterfaceDeclaration' ||
44
+ node.type === 'EnumDeclaration'
45
+ ) {
46
+ types[node.id.name] = node;
47
+ }
48
+ return types;
49
+ }, {});
50
+ }
51
+
52
+ // $FlowFixMe[unclear-type] there's no flowtype for ASTs
53
+ export type ASTNode = Object;
54
+
55
+ const invariant = require('invariant');
56
+
57
+ function resolveTypeAnnotation(
58
+ // TODO(T71778680): This is an Flow TypeAnnotation. Flow-type this
59
+ typeAnnotation: $FlowFixMe,
60
+ types: TypeDeclarationMap,
61
+ ): {
62
+ nullable: boolean,
63
+ typeAnnotation: $FlowFixMe,
64
+ typeAliasResolutionStatus: TypeAliasResolutionStatus,
65
+ } {
66
+ invariant(
67
+ typeAnnotation != null,
68
+ 'resolveTypeAnnotation(): typeAnnotation cannot be null',
69
+ );
70
+
71
+ let node = typeAnnotation;
72
+ let nullable = false;
73
+ let typeAliasResolutionStatus: TypeAliasResolutionStatus = {
74
+ successful: false,
75
+ };
76
+
77
+ for (;;) {
78
+ if (node.type === 'NullableTypeAnnotation') {
79
+ nullable = true;
80
+ node = node.typeAnnotation;
81
+ } else if (node.type === 'GenericTypeAnnotation') {
82
+ typeAliasResolutionStatus = {
83
+ successful: true,
84
+ aliasName: node.id.name,
85
+ };
86
+ const resolvedTypeAnnotation = types[node.id.name];
87
+ if (
88
+ resolvedTypeAnnotation == null ||
89
+ resolvedTypeAnnotation.type === 'EnumDeclaration'
90
+ ) {
91
+ break;
92
+ }
93
+
94
+ invariant(
95
+ resolvedTypeAnnotation.type === 'TypeAlias',
96
+ `GenericTypeAnnotation '${node.id.name}' must resolve to a TypeAlias. Instead, it resolved to a '${resolvedTypeAnnotation.type}'`,
97
+ );
98
+
99
+ node = resolvedTypeAnnotation.right;
100
+ } else {
101
+ break;
102
+ }
103
+ }
104
+
105
+ return {
106
+ nullable: nullable,
107
+ typeAnnotation: node,
108
+ typeAliasResolutionStatus,
109
+ };
110
+ }
111
+
112
+ function getValueFromTypes(value: ASTNode, types: TypeDeclarationMap): ASTNode {
113
+ if (value.type === 'GenericTypeAnnotation' && types[value.id.name]) {
114
+ return getValueFromTypes(types[value.id.name].right, types);
115
+ }
116
+ return value;
117
+ }
118
+
119
+ module.exports = {
120
+ getValueFromTypes,
121
+ resolveTypeAnnotation,
122
+ getTypes,
123
+ };
@@ -0,0 +1,11 @@
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
+ * @format
9
+ */
10
+
11
+ 'use strict';
@@ -0,0 +1,70 @@
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
+ * @flow strict
8
+ * @format
9
+ */
10
+
11
+ 'use strict';
12
+
13
+ import type {UnionTypeAnnotationMemberType} from '../CodegenSchema.js';
14
+ import type {ParserType} from './errors';
15
+
16
+ /**
17
+ * This is the main interface for Parsers of various languages.
18
+ * It exposes all the methods that contain language-specific logic.
19
+ */
20
+ export interface Parser {
21
+ /**
22
+ * This is the TypeParameterInstantiation value
23
+ */
24
+ typeParameterInstantiation: string;
25
+
26
+ /**
27
+ * Given a property or an index declaration, it returns the key name.
28
+ * @parameter propertyOrIndex: an object containing a property or an index declaration.
29
+ * @parameter hasteModuleName: a string with the native module name.
30
+ * @returns: the key name.
31
+ * @throws if propertyOrIndex does not contain a property or an index declaration.
32
+ */
33
+ getKeyName(propertyOrIndex: $FlowFixMe, hasteModuleName: string): string;
34
+ /**
35
+ * Given a type declaration, it possibly returns the name of the Enum type.
36
+ * @parameter maybeEnumDeclaration: an object possibly containing an Enum declaration.
37
+ * @returns: the name of the Enum type.
38
+ */
39
+ getMaybeEnumMemberType(maybeEnumDeclaration: $FlowFixMe): string;
40
+ /**
41
+ * Given a type declaration, it returns a boolean specifying if is an Enum declaration.
42
+ * @parameter maybeEnumDeclaration: an object possibly containing an Enum declaration.
43
+ * @returns: a boolean specifying if is an Enum declaration.
44
+ */
45
+ isEnumDeclaration(maybeEnumDeclaration: $FlowFixMe): boolean;
46
+ /**
47
+ * @returns: the Parser language.
48
+ */
49
+ language(): ParserType;
50
+ /**
51
+ * Given a type annotation for a generic type, it returns the type name.
52
+ * @parameter typeAnnotation: the annotation for a type in the AST.
53
+ * @returns: the name of the type.
54
+ */
55
+ nameForGenericTypeAnnotation(typeAnnotation: $FlowFixMe): string;
56
+ /**
57
+ * Given a type arguments, it returns a boolean specifying if the Module is Invalid.
58
+ * @parameter typeArguments: the type arguments.
59
+ * @returns: a boolean specifying if the Module is Invalid.
60
+ */
61
+ checkIfInvalidModule(typeArguments: $FlowFixMe): boolean;
62
+ /**
63
+ * Given a union annotation members types, it returns an array of remaped members names without duplicates.
64
+ * @parameter membersTypes: union annotation members types
65
+ * @returns: an array of remaped members names without duplicates.
66
+ */
67
+ remapUnionTypeAnnotationMemberNames(
68
+ types: $FlowFixMe,
69
+ ): UnionTypeAnnotationMemberType[];
70
+ }
@@ -0,0 +1,96 @@
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
+ * @format
9
+ */
10
+
11
+ 'use strict';
12
+
13
+ function _defineProperty(obj, key, value) {
14
+ key = _toPropertyKey(key);
15
+ if (key in obj) {
16
+ Object.defineProperty(obj, key, {
17
+ value: value,
18
+ enumerable: true,
19
+ configurable: true,
20
+ writable: true,
21
+ });
22
+ } else {
23
+ obj[key] = value;
24
+ }
25
+ return obj;
26
+ }
27
+ function _toPropertyKey(arg) {
28
+ var key = _toPrimitive(arg, 'string');
29
+ return typeof key === 'symbol' ? key : String(key);
30
+ }
31
+ function _toPrimitive(input, hint) {
32
+ if (typeof input !== 'object' || input === null) return input;
33
+ var prim = input[Symbol.toPrimitive];
34
+ if (prim !== undefined) {
35
+ var res = prim.call(input, hint || 'default');
36
+ if (typeof res !== 'object') return res;
37
+ throw new TypeError('@@toPrimitive must return a primitive value.');
38
+ }
39
+ return (hint === 'string' ? String : Number)(input);
40
+ }
41
+ const _require = require('./errors'),
42
+ UnsupportedObjectPropertyTypeAnnotationParserError =
43
+ _require.UnsupportedObjectPropertyTypeAnnotationParserError;
44
+ export class MockedParser {
45
+ constructor() {
46
+ _defineProperty(
47
+ this,
48
+ 'typeParameterInstantiation',
49
+ 'TypeParameterInstantiation',
50
+ );
51
+ }
52
+ getKeyName(propertyOrIndex, hasteModuleName) {
53
+ var _propertyOrIndex$id$n, _propertyOrIndex$id;
54
+ switch (propertyOrIndex.type) {
55
+ case 'ObjectTypeProperty':
56
+ return propertyOrIndex.key.name;
57
+ case 'ObjectTypeIndexer':
58
+ // flow index name is optional
59
+ return (_propertyOrIndex$id$n =
60
+ (_propertyOrIndex$id = propertyOrIndex.id) === null ||
61
+ _propertyOrIndex$id === void 0
62
+ ? void 0
63
+ : _propertyOrIndex$id.name) !== null &&
64
+ _propertyOrIndex$id$n !== void 0
65
+ ? _propertyOrIndex$id$n
66
+ : 'key';
67
+ default:
68
+ throw new UnsupportedObjectPropertyTypeAnnotationParserError(
69
+ hasteModuleName,
70
+ propertyOrIndex,
71
+ propertyOrIndex.type,
72
+ this.language(),
73
+ );
74
+ }
75
+ }
76
+ getMaybeEnumMemberType(maybeEnumDeclaration) {
77
+ return maybeEnumDeclaration.body.type
78
+ .replace('EnumNumberBody', 'NumberTypeAnnotation')
79
+ .replace('EnumStringBody', 'StringTypeAnnotation');
80
+ }
81
+ isEnumDeclaration(maybeEnumDeclaration) {
82
+ return maybeEnumDeclaration.type === 'EnumDeclaration';
83
+ }
84
+ language() {
85
+ return 'Flow';
86
+ }
87
+ nameForGenericTypeAnnotation(typeAnnotation) {
88
+ return typeAnnotation.id.name;
89
+ }
90
+ checkIfInvalidModule(typeArguments) {
91
+ return false;
92
+ }
93
+ remapUnionTypeAnnotationMemberNames(membersTypes) {
94
+ return [];
95
+ }
96
+ }
@@ -0,0 +1,68 @@
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
+ * @flow strict
8
+ * @format
9
+ */
10
+
11
+ 'use strict';
12
+
13
+ import type {UnionTypeAnnotationMemberType} from '../CodegenSchema.js';
14
+ import type {Parser} from './parser';
15
+ import type {ParserType} from './errors';
16
+
17
+ const {
18
+ UnsupportedObjectPropertyTypeAnnotationParserError,
19
+ } = require('./errors');
20
+
21
+ export class MockedParser implements Parser {
22
+ typeParameterInstantiation: string = 'TypeParameterInstantiation';
23
+
24
+ getKeyName(propertyOrIndex: $FlowFixMe, hasteModuleName: string): string {
25
+ switch (propertyOrIndex.type) {
26
+ case 'ObjectTypeProperty':
27
+ return propertyOrIndex.key.name;
28
+ case 'ObjectTypeIndexer':
29
+ // flow index name is optional
30
+ return propertyOrIndex.id?.name ?? 'key';
31
+ default:
32
+ throw new UnsupportedObjectPropertyTypeAnnotationParserError(
33
+ hasteModuleName,
34
+ propertyOrIndex,
35
+ propertyOrIndex.type,
36
+ this.language(),
37
+ );
38
+ }
39
+ }
40
+
41
+ getMaybeEnumMemberType(maybeEnumDeclaration: $FlowFixMe): string {
42
+ return maybeEnumDeclaration.body.type
43
+ .replace('EnumNumberBody', 'NumberTypeAnnotation')
44
+ .replace('EnumStringBody', 'StringTypeAnnotation');
45
+ }
46
+
47
+ isEnumDeclaration(maybeEnumDeclaration: $FlowFixMe): boolean {
48
+ return maybeEnumDeclaration.type === 'EnumDeclaration';
49
+ }
50
+
51
+ language(): ParserType {
52
+ return 'Flow';
53
+ }
54
+
55
+ nameForGenericTypeAnnotation(typeAnnotation: $FlowFixMe): string {
56
+ return typeAnnotation.id.name;
57
+ }
58
+
59
+ checkIfInvalidModule(typeArguments: $FlowFixMe): boolean {
60
+ return false;
61
+ }
62
+
63
+ remapUnionTypeAnnotationMemberNames(
64
+ membersTypes: $FlowFixMe[],
65
+ ): UnionTypeAnnotationMemberType[] {
66
+ return [];
67
+ }
68
+ }