@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
|
@@ -140,59 +140,119 @@ function _iterableToArrayLimit(arr, i) {
|
|
|
140
140
|
function _arrayWithHoles(arr) {
|
|
141
141
|
if (Array.isArray(arr)) return arr;
|
|
142
142
|
}
|
|
143
|
-
const _require = require('
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
const
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
143
|
+
const _require = require('../parseTopLevelType'),
|
|
144
|
+
flattenIntersectionType = _require.flattenIntersectionType;
|
|
145
|
+
const _require2 = require('../components/componentsUtils'),
|
|
146
|
+
flattenProperties = _require2.flattenProperties;
|
|
147
|
+
const _require3 = require('../../utils'),
|
|
148
|
+
visit = _require3.visit,
|
|
149
|
+
isModuleRegistryCall = _require3.isModuleRegistryCall,
|
|
150
|
+
verifyPlatforms = _require3.verifyPlatforms;
|
|
151
|
+
const _require4 = require('../utils'),
|
|
152
|
+
resolveTypeAnnotation = _require4.resolveTypeAnnotation;
|
|
153
|
+
const _require5 = require('../../parsers-commons'),
|
|
154
|
+
parseObjectProperty = _require5.parseObjectProperty,
|
|
155
|
+
buildPropertySchema = _require5.buildPropertySchema;
|
|
156
|
+
const _require6 = require('../../parsers-primitives'),
|
|
157
|
+
typeEnumResolution = _require6.typeEnumResolution;
|
|
158
|
+
const _require7 = require('../../parsers-primitives'),
|
|
159
|
+
emitArrayType = _require7.emitArrayType,
|
|
160
|
+
emitBoolean = _require7.emitBoolean,
|
|
161
|
+
emitDouble = _require7.emitDouble,
|
|
162
|
+
emitFloat = _require7.emitFloat,
|
|
163
|
+
emitFunction = _require7.emitFunction,
|
|
164
|
+
emitNumber = _require7.emitNumber,
|
|
165
|
+
emitInt32 = _require7.emitInt32,
|
|
166
|
+
emitGenericObject = _require7.emitGenericObject,
|
|
167
|
+
emitObject = _require7.emitObject,
|
|
168
|
+
emitPromise = _require7.emitPromise,
|
|
169
|
+
emitRootTag = _require7.emitRootTag,
|
|
170
|
+
emitVoid = _require7.emitVoid,
|
|
171
|
+
emitString = _require7.emitString,
|
|
172
|
+
emitStringish = _require7.emitStringish,
|
|
173
|
+
emitMixed = _require7.emitMixed,
|
|
174
|
+
emitUnion = _require7.emitUnion,
|
|
175
|
+
typeAliasResolution = _require7.typeAliasResolution,
|
|
176
|
+
translateArrayTypeAnnotation = _require7.translateArrayTypeAnnotation;
|
|
177
|
+
const _require8 = require('../../errors'),
|
|
178
|
+
UnsupportedGenericParserError = _require8.UnsupportedGenericParserError,
|
|
174
179
|
UnsupportedTypeAnnotationParserError =
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
const _require6 = require('../../error-utils'),
|
|
179
|
-
throwIfUntypedModule = _require6.throwIfUntypedModule,
|
|
180
|
+
_require8.UnsupportedTypeAnnotationParserError;
|
|
181
|
+
const _require9 = require('../../error-utils'),
|
|
182
|
+
throwIfUntypedModule = _require9.throwIfUntypedModule,
|
|
180
183
|
throwIfUnusedModuleInterfaceParserError =
|
|
181
|
-
|
|
182
|
-
throwIfModuleInterfaceNotFound =
|
|
183
|
-
throwIfModuleInterfaceIsMisnamed =
|
|
184
|
+
_require9.throwIfUnusedModuleInterfaceParserError,
|
|
185
|
+
throwIfModuleInterfaceNotFound = _require9.throwIfModuleInterfaceNotFound,
|
|
186
|
+
throwIfModuleInterfaceIsMisnamed = _require9.throwIfModuleInterfaceIsMisnamed,
|
|
184
187
|
throwIfWrongNumberOfCallExpressionArgs =
|
|
185
|
-
|
|
188
|
+
_require9.throwIfWrongNumberOfCallExpressionArgs,
|
|
186
189
|
throwIfMoreThanOneModuleRegistryCalls =
|
|
187
|
-
|
|
190
|
+
_require9.throwIfMoreThanOneModuleRegistryCalls,
|
|
188
191
|
throwIfMoreThanOneModuleInterfaceParserError =
|
|
189
|
-
|
|
192
|
+
_require9.throwIfMoreThanOneModuleInterfaceParserError,
|
|
190
193
|
throwIfIncorrectModuleRegistryCallTypeParameterParserError =
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
+
_require9.throwIfIncorrectModuleRegistryCallTypeParameterParserError,
|
|
195
|
+
throwIfIncorrectModuleRegistryCallArgument =
|
|
196
|
+
_require9.throwIfIncorrectModuleRegistryCallArgument,
|
|
197
|
+
throwIfPartialNotAnnotatingTypeParameter =
|
|
198
|
+
_require9.throwIfPartialNotAnnotatingTypeParameter,
|
|
199
|
+
throwIfPartialWithMoreParameter = _require9.throwIfPartialWithMoreParameter;
|
|
194
200
|
const language = 'TypeScript';
|
|
195
|
-
|
|
201
|
+
function translateObjectTypeAnnotation(
|
|
202
|
+
hasteModuleName,
|
|
203
|
+
/**
|
|
204
|
+
* TODO(T108222691): Use flow-types for @babel/parser
|
|
205
|
+
*/
|
|
206
|
+
nullable,
|
|
207
|
+
objectMembers,
|
|
208
|
+
typeResolutionStatus,
|
|
209
|
+
baseTypes,
|
|
210
|
+
types,
|
|
211
|
+
aliasMap,
|
|
212
|
+
enumMap,
|
|
213
|
+
tryParse,
|
|
214
|
+
cxxOnly,
|
|
215
|
+
parser,
|
|
216
|
+
) {
|
|
217
|
+
// $FlowFixMe[missing-type-arg]
|
|
218
|
+
const properties = objectMembers
|
|
219
|
+
.map(property => {
|
|
220
|
+
return tryParse(() => {
|
|
221
|
+
return parseObjectProperty(
|
|
222
|
+
property,
|
|
223
|
+
hasteModuleName,
|
|
224
|
+
types,
|
|
225
|
+
aliasMap,
|
|
226
|
+
enumMap,
|
|
227
|
+
tryParse,
|
|
228
|
+
cxxOnly,
|
|
229
|
+
nullable,
|
|
230
|
+
translateTypeAnnotation,
|
|
231
|
+
parser,
|
|
232
|
+
);
|
|
233
|
+
});
|
|
234
|
+
})
|
|
235
|
+
.filter(Boolean);
|
|
236
|
+
let objectTypeAnnotation;
|
|
237
|
+
if (baseTypes.length === 0) {
|
|
238
|
+
objectTypeAnnotation = {
|
|
239
|
+
type: 'ObjectTypeAnnotation',
|
|
240
|
+
properties,
|
|
241
|
+
};
|
|
242
|
+
} else {
|
|
243
|
+
objectTypeAnnotation = {
|
|
244
|
+
type: 'ObjectTypeAnnotation',
|
|
245
|
+
properties,
|
|
246
|
+
baseTypes,
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
return typeAliasResolution(
|
|
250
|
+
typeResolutionStatus,
|
|
251
|
+
objectTypeAnnotation,
|
|
252
|
+
aliasMap,
|
|
253
|
+
nullable,
|
|
254
|
+
);
|
|
255
|
+
}
|
|
196
256
|
function translateTypeAnnotation(
|
|
197
257
|
hasteModuleName,
|
|
198
258
|
/**
|
|
@@ -201,8 +261,10 @@ function translateTypeAnnotation(
|
|
|
201
261
|
typeScriptTypeAnnotation,
|
|
202
262
|
types,
|
|
203
263
|
aliasMap,
|
|
264
|
+
enumMap,
|
|
204
265
|
tryParse,
|
|
205
266
|
cxxOnly,
|
|
267
|
+
parser,
|
|
206
268
|
) {
|
|
207
269
|
const _resolveTypeAnnotatio = resolveTypeAnnotation(
|
|
208
270
|
typeScriptTypeAnnotation,
|
|
@@ -210,19 +272,20 @@ function translateTypeAnnotation(
|
|
|
210
272
|
),
|
|
211
273
|
nullable = _resolveTypeAnnotatio.nullable,
|
|
212
274
|
typeAnnotation = _resolveTypeAnnotatio.typeAnnotation,
|
|
213
|
-
|
|
275
|
+
typeResolutionStatus = _resolveTypeAnnotatio.typeResolutionStatus;
|
|
214
276
|
switch (typeAnnotation.type) {
|
|
215
277
|
case 'TSArrayType': {
|
|
216
278
|
return translateArrayTypeAnnotation(
|
|
217
279
|
hasteModuleName,
|
|
218
280
|
types,
|
|
219
281
|
aliasMap,
|
|
282
|
+
enumMap,
|
|
220
283
|
cxxOnly,
|
|
221
284
|
'Array',
|
|
222
285
|
typeAnnotation.elementType,
|
|
223
286
|
nullable,
|
|
224
|
-
language,
|
|
225
287
|
translateTypeAnnotation,
|
|
288
|
+
parser,
|
|
226
289
|
);
|
|
227
290
|
}
|
|
228
291
|
case 'TSTypeOperator': {
|
|
@@ -234,12 +297,13 @@ function translateTypeAnnotation(
|
|
|
234
297
|
hasteModuleName,
|
|
235
298
|
types,
|
|
236
299
|
aliasMap,
|
|
300
|
+
enumMap,
|
|
237
301
|
cxxOnly,
|
|
238
302
|
'ReadonlyArray',
|
|
239
303
|
typeAnnotation.typeAnnotation.elementType,
|
|
240
304
|
nullable,
|
|
241
|
-
language,
|
|
242
305
|
translateTypeAnnotation,
|
|
306
|
+
parser,
|
|
243
307
|
);
|
|
244
308
|
} else {
|
|
245
309
|
throw new UnsupportedGenericParserError(
|
|
@@ -262,6 +326,7 @@ function translateTypeAnnotation(
|
|
|
262
326
|
nullable,
|
|
263
327
|
types,
|
|
264
328
|
aliasMap,
|
|
329
|
+
enumMap,
|
|
265
330
|
tryParse,
|
|
266
331
|
cxxOnly,
|
|
267
332
|
translateTypeAnnotation,
|
|
@@ -275,6 +340,7 @@ function translateTypeAnnotation(
|
|
|
275
340
|
parser,
|
|
276
341
|
types,
|
|
277
342
|
aliasMap,
|
|
343
|
+
enumMap,
|
|
278
344
|
cxxOnly,
|
|
279
345
|
nullable,
|
|
280
346
|
translateTypeAnnotation,
|
|
@@ -294,46 +360,154 @@ function translateTypeAnnotation(
|
|
|
294
360
|
}
|
|
295
361
|
case 'UnsafeObject':
|
|
296
362
|
case 'Object': {
|
|
297
|
-
return
|
|
363
|
+
return emitGenericObject(nullable);
|
|
364
|
+
}
|
|
365
|
+
case 'Partial': {
|
|
366
|
+
throwIfPartialWithMoreParameter(typeAnnotation);
|
|
367
|
+
const annotatedElement = parser.extractAnnotatedElement(
|
|
368
|
+
typeAnnotation,
|
|
369
|
+
types,
|
|
370
|
+
);
|
|
371
|
+
throwIfPartialNotAnnotatingTypeParameter(
|
|
372
|
+
typeAnnotation,
|
|
373
|
+
types,
|
|
374
|
+
parser,
|
|
375
|
+
);
|
|
376
|
+
const properties = annotatedElement.typeAnnotation.members.map(
|
|
377
|
+
member => {
|
|
378
|
+
return {
|
|
379
|
+
name: member.key.name,
|
|
380
|
+
optional: true,
|
|
381
|
+
typeAnnotation: translateTypeAnnotation(
|
|
382
|
+
hasteModuleName,
|
|
383
|
+
member.typeAnnotation.typeAnnotation,
|
|
384
|
+
types,
|
|
385
|
+
aliasMap,
|
|
386
|
+
enumMap,
|
|
387
|
+
tryParse,
|
|
388
|
+
cxxOnly,
|
|
389
|
+
parser,
|
|
390
|
+
),
|
|
391
|
+
};
|
|
392
|
+
},
|
|
393
|
+
);
|
|
394
|
+
return emitObject(nullable, properties);
|
|
298
395
|
}
|
|
299
396
|
default: {
|
|
300
|
-
|
|
397
|
+
throw new UnsupportedGenericParserError(
|
|
301
398
|
hasteModuleName,
|
|
302
399
|
typeAnnotation,
|
|
303
|
-
types,
|
|
304
|
-
nullable,
|
|
305
400
|
parser,
|
|
306
401
|
);
|
|
307
402
|
}
|
|
308
403
|
}
|
|
309
404
|
}
|
|
405
|
+
case 'TSInterfaceDeclaration': {
|
|
406
|
+
var _typeAnnotation$exten;
|
|
407
|
+
const baseTypes = (
|
|
408
|
+
(_typeAnnotation$exten = typeAnnotation.extends) !== null &&
|
|
409
|
+
_typeAnnotation$exten !== void 0
|
|
410
|
+
? _typeAnnotation$exten
|
|
411
|
+
: []
|
|
412
|
+
).map(extend => extend.expression.name);
|
|
413
|
+
for (const baseType of baseTypes) {
|
|
414
|
+
// ensure base types exist and appear in aliasMap
|
|
415
|
+
translateTypeAnnotation(
|
|
416
|
+
hasteModuleName,
|
|
417
|
+
{
|
|
418
|
+
type: 'TSTypeReference',
|
|
419
|
+
typeName: {
|
|
420
|
+
type: 'Identifier',
|
|
421
|
+
name: baseType,
|
|
422
|
+
},
|
|
423
|
+
},
|
|
424
|
+
types,
|
|
425
|
+
aliasMap,
|
|
426
|
+
enumMap,
|
|
427
|
+
tryParse,
|
|
428
|
+
cxxOnly,
|
|
429
|
+
parser,
|
|
430
|
+
);
|
|
431
|
+
}
|
|
432
|
+
return translateObjectTypeAnnotation(
|
|
433
|
+
hasteModuleName,
|
|
434
|
+
nullable,
|
|
435
|
+
flattenProperties([typeAnnotation], types),
|
|
436
|
+
typeResolutionStatus,
|
|
437
|
+
baseTypes,
|
|
438
|
+
types,
|
|
439
|
+
aliasMap,
|
|
440
|
+
enumMap,
|
|
441
|
+
tryParse,
|
|
442
|
+
cxxOnly,
|
|
443
|
+
parser,
|
|
444
|
+
);
|
|
445
|
+
}
|
|
446
|
+
case 'TSIntersectionType': {
|
|
447
|
+
return translateObjectTypeAnnotation(
|
|
448
|
+
hasteModuleName,
|
|
449
|
+
nullable,
|
|
450
|
+
flattenProperties(
|
|
451
|
+
flattenIntersectionType(typeAnnotation, types),
|
|
452
|
+
types,
|
|
453
|
+
),
|
|
454
|
+
typeResolutionStatus,
|
|
455
|
+
[],
|
|
456
|
+
types,
|
|
457
|
+
aliasMap,
|
|
458
|
+
enumMap,
|
|
459
|
+
tryParse,
|
|
460
|
+
cxxOnly,
|
|
461
|
+
parser,
|
|
462
|
+
);
|
|
463
|
+
}
|
|
310
464
|
case 'TSTypeLiteral': {
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
465
|
+
// if there is TSIndexSignature, then it is a dictionary
|
|
466
|
+
if (typeAnnotation.members) {
|
|
467
|
+
const indexSignatures = typeAnnotation.members.filter(
|
|
468
|
+
member => member.type === 'TSIndexSignature',
|
|
469
|
+
);
|
|
470
|
+
if (indexSignatures.length > 0) {
|
|
471
|
+
// check the property type to prevent developers from using unsupported types
|
|
472
|
+
// the return value from `translateTypeAnnotation` is unused
|
|
473
|
+
const propertyType = indexSignatures[0].typeAnnotation;
|
|
474
|
+
translateTypeAnnotation(
|
|
475
|
+
hasteModuleName,
|
|
476
|
+
propertyType,
|
|
477
|
+
types,
|
|
478
|
+
aliasMap,
|
|
479
|
+
enumMap,
|
|
480
|
+
tryParse,
|
|
481
|
+
cxxOnly,
|
|
482
|
+
parser,
|
|
483
|
+
);
|
|
484
|
+
// no need to do further checking
|
|
485
|
+
return emitGenericObject(nullable);
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
return translateObjectTypeAnnotation(
|
|
489
|
+
hasteModuleName,
|
|
490
|
+
nullable,
|
|
491
|
+
typeAnnotation.members,
|
|
492
|
+
typeResolutionStatus,
|
|
493
|
+
[],
|
|
494
|
+
types,
|
|
335
495
|
aliasMap,
|
|
496
|
+
enumMap,
|
|
497
|
+
tryParse,
|
|
498
|
+
cxxOnly,
|
|
499
|
+
parser,
|
|
500
|
+
);
|
|
501
|
+
}
|
|
502
|
+
case 'TSEnumDeclaration': {
|
|
503
|
+
return typeEnumResolution(
|
|
504
|
+
typeAnnotation,
|
|
505
|
+
typeResolutionStatus,
|
|
336
506
|
nullable,
|
|
507
|
+
hasteModuleName,
|
|
508
|
+
language,
|
|
509
|
+
enumMap,
|
|
510
|
+
parser,
|
|
337
511
|
);
|
|
338
512
|
}
|
|
339
513
|
case 'TSBooleanKeyword': {
|
|
@@ -355,10 +529,11 @@ function translateTypeAnnotation(
|
|
|
355
529
|
typeAnnotation,
|
|
356
530
|
types,
|
|
357
531
|
aliasMap,
|
|
532
|
+
enumMap,
|
|
358
533
|
tryParse,
|
|
359
534
|
cxxOnly,
|
|
360
535
|
translateTypeAnnotation,
|
|
361
|
-
|
|
536
|
+
parser,
|
|
362
537
|
);
|
|
363
538
|
}
|
|
364
539
|
case 'TSUnionType': {
|
|
@@ -380,17 +555,6 @@ function translateTypeAnnotation(
|
|
|
380
555
|
}
|
|
381
556
|
}
|
|
382
557
|
}
|
|
383
|
-
function isModuleInterface(node) {
|
|
384
|
-
var _node$extends;
|
|
385
|
-
return (
|
|
386
|
-
node.type === 'TSInterfaceDeclaration' &&
|
|
387
|
-
((_node$extends = node.extends) === null || _node$extends === void 0
|
|
388
|
-
? void 0
|
|
389
|
-
: _node$extends.length) === 1 &&
|
|
390
|
-
node.extends[0].type === 'TSExpressionWithTypeArguments' &&
|
|
391
|
-
node.extends[0].expression.name === 'TurboModule'
|
|
392
|
-
);
|
|
393
|
-
}
|
|
394
558
|
function buildModuleSchema(
|
|
395
559
|
hasteModuleName,
|
|
396
560
|
/**
|
|
@@ -398,9 +562,12 @@ function buildModuleSchema(
|
|
|
398
562
|
*/
|
|
399
563
|
ast,
|
|
400
564
|
tryParse,
|
|
565
|
+
parser,
|
|
401
566
|
) {
|
|
402
|
-
const types = getTypes(ast);
|
|
403
|
-
const moduleSpecs = Object.values(types).filter(
|
|
567
|
+
const types = parser.getTypes(ast);
|
|
568
|
+
const moduleSpecs = Object.values(types).filter(t =>
|
|
569
|
+
parser.isModuleInterface(t),
|
|
570
|
+
);
|
|
404
571
|
throwIfModuleInterfaceNotFound(
|
|
405
572
|
moduleSpecs.length,
|
|
406
573
|
hasteModuleName,
|
|
@@ -430,13 +597,11 @@ function buildModuleSchema(
|
|
|
430
597
|
hasteModuleName,
|
|
431
598
|
moduleSpec,
|
|
432
599
|
callExpressions,
|
|
433
|
-
language,
|
|
434
600
|
);
|
|
435
601
|
throwIfMoreThanOneModuleRegistryCalls(
|
|
436
602
|
hasteModuleName,
|
|
437
603
|
callExpressions,
|
|
438
604
|
callExpressions.length,
|
|
439
|
-
language,
|
|
440
605
|
);
|
|
441
606
|
const callExpression = callExpressions[0];
|
|
442
607
|
const typeParameters = callExpression.typeParameters;
|
|
@@ -446,18 +611,12 @@ function buildModuleSchema(
|
|
|
446
611
|
callExpression,
|
|
447
612
|
methodName,
|
|
448
613
|
callExpression.arguments.length,
|
|
449
|
-
language,
|
|
450
614
|
);
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
methodName,
|
|
457
|
-
type,
|
|
458
|
-
language,
|
|
459
|
-
);
|
|
460
|
-
}
|
|
615
|
+
throwIfIncorrectModuleRegistryCallArgument(
|
|
616
|
+
hasteModuleName,
|
|
617
|
+
callExpression.arguments[0],
|
|
618
|
+
methodName,
|
|
619
|
+
);
|
|
461
620
|
const $moduleName = callExpression.arguments[0].value;
|
|
462
621
|
throwIfUntypedModule(
|
|
463
622
|
typeParameters,
|
|
@@ -465,7 +624,6 @@ function buildModuleSchema(
|
|
|
465
624
|
callExpression,
|
|
466
625
|
methodName,
|
|
467
626
|
$moduleName,
|
|
468
|
-
language,
|
|
469
627
|
);
|
|
470
628
|
throwIfIncorrectModuleRegistryCallTypeParameterParserError(
|
|
471
629
|
hasteModuleName,
|
|
@@ -494,30 +652,37 @@ function buildModuleSchema(
|
|
|
494
652
|
)
|
|
495
653
|
.map(property => {
|
|
496
654
|
const aliasMap = {};
|
|
655
|
+
const enumMap = {};
|
|
497
656
|
return tryParse(() => ({
|
|
498
657
|
aliasMap: aliasMap,
|
|
658
|
+
enumMap: enumMap,
|
|
499
659
|
propertyShape: buildPropertySchema(
|
|
500
660
|
hasteModuleName,
|
|
501
661
|
property,
|
|
502
662
|
types,
|
|
503
663
|
aliasMap,
|
|
664
|
+
enumMap,
|
|
504
665
|
tryParse,
|
|
505
666
|
cxxOnly,
|
|
506
|
-
language,
|
|
507
667
|
resolveTypeAnnotation,
|
|
508
668
|
translateTypeAnnotation,
|
|
669
|
+
parser,
|
|
509
670
|
),
|
|
510
671
|
}));
|
|
511
672
|
})
|
|
512
673
|
.filter(Boolean)
|
|
513
674
|
.reduce(
|
|
514
|
-
(moduleSchema, {aliasMap, propertyShape}) => {
|
|
675
|
+
(moduleSchema, {aliasMap, enumMap, propertyShape}) => {
|
|
515
676
|
return {
|
|
516
677
|
type: 'NativeModule',
|
|
517
|
-
|
|
518
|
-
_objectSpread({}, moduleSchema.
|
|
678
|
+
aliasMap: _objectSpread(
|
|
679
|
+
_objectSpread({}, moduleSchema.aliasMap),
|
|
519
680
|
aliasMap,
|
|
520
681
|
),
|
|
682
|
+
enumMap: _objectSpread(
|
|
683
|
+
_objectSpread({}, moduleSchema.enumMap),
|
|
684
|
+
enumMap,
|
|
685
|
+
),
|
|
521
686
|
spec: {
|
|
522
687
|
properties: [...moduleSchema.spec.properties, propertyShape],
|
|
523
688
|
},
|
|
@@ -527,7 +692,8 @@ function buildModuleSchema(
|
|
|
527
692
|
},
|
|
528
693
|
{
|
|
529
694
|
type: 'NativeModule',
|
|
530
|
-
|
|
695
|
+
aliasMap: {},
|
|
696
|
+
enumMap: {},
|
|
531
697
|
spec: {
|
|
532
698
|
properties: [],
|
|
533
699
|
},
|