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