@react-native/codegen 0.72.1 → 0.72.2
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 +1 -19
- package/lib/parsers/error-utils.js.flow +1 -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.flow +1 -1
- 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 +99 -25
- package/lib/parsers/flow/modules/index.js.flow +106 -22
- package/lib/parsers/flow/parser.d.ts +10 -0
- package/lib/parsers/flow/parser.js +122 -32
- package/lib/parsers/flow/parser.js.flow +144 -24
- package/lib/parsers/flow/utils.js +33 -19
- package/lib/parsers/flow/utils.js.flow +37 -22
- package/lib/parsers/parser.d.ts +17 -0
- package/lib/parsers/parser.js.flow +102 -17
- package/lib/parsers/parserMock.js +87 -30
- package/lib/parsers/parserMock.js.flow +118 -24
- package/lib/parsers/parsers-commons.js +121 -119
- package/lib/parsers/parsers-commons.js.flow +130 -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/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.flow +1 -1
- 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 +266 -87
- package/lib/parsers/typescript/modules/index.js.flow +230 -48
- package/lib/parsers/typescript/parser.d.ts +10 -0
- package/lib/parsers/typescript/parser.js +131 -25
- package/lib/parsers/typescript/parser.js.flow +137 -26
- package/lib/parsers/typescript/utils.js +40 -20
- package/lib/parsers/typescript/utils.js.flow +44 -24
- package/lib/parsers/utils.js +0 -125
- package/lib/parsers/utils.js.flow +3 -70
- package/package.json +4 -1
- 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
|
@@ -140,59 +140,117 @@ 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
|
-
const
|
|
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
|
+
getTypes = _require4.getTypes;
|
|
154
|
+
const _require5 = require('../../parsers-commons'),
|
|
155
|
+
parseObjectProperty = _require5.parseObjectProperty,
|
|
156
|
+
buildPropertySchema = _require5.buildPropertySchema;
|
|
157
|
+
const _require6 = require('../../parsers-primitives'),
|
|
158
|
+
typeEnumResolution = _require6.typeEnumResolution;
|
|
159
|
+
const _require7 = require('../../parsers-primitives'),
|
|
160
|
+
emitArrayType = _require7.emitArrayType,
|
|
161
|
+
emitBoolean = _require7.emitBoolean,
|
|
162
|
+
emitDouble = _require7.emitDouble,
|
|
163
|
+
emitFloat = _require7.emitFloat,
|
|
164
|
+
emitFunction = _require7.emitFunction,
|
|
165
|
+
emitNumber = _require7.emitNumber,
|
|
166
|
+
emitInt32 = _require7.emitInt32,
|
|
167
|
+
emitGenericObject = _require7.emitGenericObject,
|
|
168
|
+
emitObject = _require7.emitObject,
|
|
169
|
+
emitPromise = _require7.emitPromise,
|
|
170
|
+
emitRootTag = _require7.emitRootTag,
|
|
171
|
+
emitVoid = _require7.emitVoid,
|
|
172
|
+
emitString = _require7.emitString,
|
|
173
|
+
emitStringish = _require7.emitStringish,
|
|
174
|
+
emitMixed = _require7.emitMixed,
|
|
175
|
+
emitUnion = _require7.emitUnion,
|
|
176
|
+
typeAliasResolution = _require7.typeAliasResolution,
|
|
177
|
+
translateArrayTypeAnnotation = _require7.translateArrayTypeAnnotation;
|
|
178
|
+
const _require8 = require('../../errors'),
|
|
179
|
+
UnsupportedGenericParserError = _require8.UnsupportedGenericParserError,
|
|
174
180
|
UnsupportedTypeAnnotationParserError =
|
|
175
|
-
|
|
181
|
+
_require8.UnsupportedTypeAnnotationParserError,
|
|
176
182
|
IncorrectModuleRegistryCallArgumentTypeParserError =
|
|
177
|
-
|
|
178
|
-
const
|
|
179
|
-
throwIfUntypedModule =
|
|
183
|
+
_require8.IncorrectModuleRegistryCallArgumentTypeParserError;
|
|
184
|
+
const _require9 = require('../../error-utils'),
|
|
185
|
+
throwIfUntypedModule = _require9.throwIfUntypedModule,
|
|
180
186
|
throwIfUnusedModuleInterfaceParserError =
|
|
181
|
-
|
|
182
|
-
throwIfModuleInterfaceNotFound =
|
|
183
|
-
throwIfModuleInterfaceIsMisnamed =
|
|
187
|
+
_require9.throwIfUnusedModuleInterfaceParserError,
|
|
188
|
+
throwIfModuleInterfaceNotFound = _require9.throwIfModuleInterfaceNotFound,
|
|
189
|
+
throwIfModuleInterfaceIsMisnamed = _require9.throwIfModuleInterfaceIsMisnamed,
|
|
184
190
|
throwIfWrongNumberOfCallExpressionArgs =
|
|
185
|
-
|
|
191
|
+
_require9.throwIfWrongNumberOfCallExpressionArgs,
|
|
186
192
|
throwIfMoreThanOneModuleRegistryCalls =
|
|
187
|
-
|
|
193
|
+
_require9.throwIfMoreThanOneModuleRegistryCalls,
|
|
188
194
|
throwIfMoreThanOneModuleInterfaceParserError =
|
|
189
|
-
|
|
195
|
+
_require9.throwIfMoreThanOneModuleInterfaceParserError,
|
|
190
196
|
throwIfIncorrectModuleRegistryCallTypeParameterParserError =
|
|
191
|
-
|
|
192
|
-
const _require7 = require('../parser'),
|
|
193
|
-
TypeScriptParser = _require7.TypeScriptParser;
|
|
197
|
+
_require9.throwIfIncorrectModuleRegistryCallTypeParameterParserError;
|
|
194
198
|
const language = 'TypeScript';
|
|
195
|
-
|
|
199
|
+
function translateObjectTypeAnnotation(
|
|
200
|
+
hasteModuleName,
|
|
201
|
+
/**
|
|
202
|
+
* TODO(T108222691): Use flow-types for @babel/parser
|
|
203
|
+
*/
|
|
204
|
+
nullable,
|
|
205
|
+
objectMembers,
|
|
206
|
+
typeResolutionStatus,
|
|
207
|
+
baseTypes,
|
|
208
|
+
types,
|
|
209
|
+
aliasMap,
|
|
210
|
+
enumMap,
|
|
211
|
+
tryParse,
|
|
212
|
+
cxxOnly,
|
|
213
|
+
parser,
|
|
214
|
+
) {
|
|
215
|
+
// $FlowFixMe[missing-type-arg]
|
|
216
|
+
const properties = objectMembers
|
|
217
|
+
.map(property => {
|
|
218
|
+
return tryParse(() => {
|
|
219
|
+
return parseObjectProperty(
|
|
220
|
+
property,
|
|
221
|
+
hasteModuleName,
|
|
222
|
+
types,
|
|
223
|
+
aliasMap,
|
|
224
|
+
enumMap,
|
|
225
|
+
tryParse,
|
|
226
|
+
cxxOnly,
|
|
227
|
+
nullable,
|
|
228
|
+
translateTypeAnnotation,
|
|
229
|
+
parser,
|
|
230
|
+
);
|
|
231
|
+
});
|
|
232
|
+
})
|
|
233
|
+
.filter(Boolean);
|
|
234
|
+
let objectTypeAnnotation;
|
|
235
|
+
if (baseTypes.length === 0) {
|
|
236
|
+
objectTypeAnnotation = {
|
|
237
|
+
type: 'ObjectTypeAnnotation',
|
|
238
|
+
properties,
|
|
239
|
+
};
|
|
240
|
+
} else {
|
|
241
|
+
objectTypeAnnotation = {
|
|
242
|
+
type: 'ObjectTypeAnnotation',
|
|
243
|
+
properties,
|
|
244
|
+
baseTypes,
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
return typeAliasResolution(
|
|
248
|
+
typeResolutionStatus,
|
|
249
|
+
objectTypeAnnotation,
|
|
250
|
+
aliasMap,
|
|
251
|
+
nullable,
|
|
252
|
+
);
|
|
253
|
+
}
|
|
196
254
|
function translateTypeAnnotation(
|
|
197
255
|
hasteModuleName,
|
|
198
256
|
/**
|
|
@@ -201,8 +259,10 @@ function translateTypeAnnotation(
|
|
|
201
259
|
typeScriptTypeAnnotation,
|
|
202
260
|
types,
|
|
203
261
|
aliasMap,
|
|
262
|
+
enumMap,
|
|
204
263
|
tryParse,
|
|
205
264
|
cxxOnly,
|
|
265
|
+
parser,
|
|
206
266
|
) {
|
|
207
267
|
const _resolveTypeAnnotatio = resolveTypeAnnotation(
|
|
208
268
|
typeScriptTypeAnnotation,
|
|
@@ -210,19 +270,20 @@ function translateTypeAnnotation(
|
|
|
210
270
|
),
|
|
211
271
|
nullable = _resolveTypeAnnotatio.nullable,
|
|
212
272
|
typeAnnotation = _resolveTypeAnnotatio.typeAnnotation,
|
|
213
|
-
|
|
273
|
+
typeResolutionStatus = _resolveTypeAnnotatio.typeResolutionStatus;
|
|
214
274
|
switch (typeAnnotation.type) {
|
|
215
275
|
case 'TSArrayType': {
|
|
216
276
|
return translateArrayTypeAnnotation(
|
|
217
277
|
hasteModuleName,
|
|
218
278
|
types,
|
|
219
279
|
aliasMap,
|
|
280
|
+
enumMap,
|
|
220
281
|
cxxOnly,
|
|
221
282
|
'Array',
|
|
222
283
|
typeAnnotation.elementType,
|
|
223
284
|
nullable,
|
|
224
|
-
language,
|
|
225
285
|
translateTypeAnnotation,
|
|
286
|
+
parser,
|
|
226
287
|
);
|
|
227
288
|
}
|
|
228
289
|
case 'TSTypeOperator': {
|
|
@@ -234,12 +295,13 @@ function translateTypeAnnotation(
|
|
|
234
295
|
hasteModuleName,
|
|
235
296
|
types,
|
|
236
297
|
aliasMap,
|
|
298
|
+
enumMap,
|
|
237
299
|
cxxOnly,
|
|
238
300
|
'ReadonlyArray',
|
|
239
301
|
typeAnnotation.typeAnnotation.elementType,
|
|
240
302
|
nullable,
|
|
241
|
-
language,
|
|
242
303
|
translateTypeAnnotation,
|
|
304
|
+
parser,
|
|
243
305
|
);
|
|
244
306
|
} else {
|
|
245
307
|
throw new UnsupportedGenericParserError(
|
|
@@ -262,6 +324,7 @@ function translateTypeAnnotation(
|
|
|
262
324
|
nullable,
|
|
263
325
|
types,
|
|
264
326
|
aliasMap,
|
|
327
|
+
enumMap,
|
|
265
328
|
tryParse,
|
|
266
329
|
cxxOnly,
|
|
267
330
|
translateTypeAnnotation,
|
|
@@ -275,6 +338,7 @@ function translateTypeAnnotation(
|
|
|
275
338
|
parser,
|
|
276
339
|
types,
|
|
277
340
|
aliasMap,
|
|
341
|
+
enumMap,
|
|
278
342
|
cxxOnly,
|
|
279
343
|
nullable,
|
|
280
344
|
translateTypeAnnotation,
|
|
@@ -294,46 +358,156 @@ function translateTypeAnnotation(
|
|
|
294
358
|
}
|
|
295
359
|
case 'UnsafeObject':
|
|
296
360
|
case 'Object': {
|
|
297
|
-
return
|
|
361
|
+
return emitGenericObject(nullable);
|
|
362
|
+
}
|
|
363
|
+
case 'Partial': {
|
|
364
|
+
if (typeAnnotation.typeParameters.params.length !== 1) {
|
|
365
|
+
throw new Error(
|
|
366
|
+
'Partials only support annotating exactly one parameter.',
|
|
367
|
+
);
|
|
368
|
+
}
|
|
369
|
+
const annotatedElement =
|
|
370
|
+
types[typeAnnotation.typeParameters.params[0].typeName.name];
|
|
371
|
+
if (!annotatedElement) {
|
|
372
|
+
throw new Error(
|
|
373
|
+
'Partials only support annotating a type parameter.',
|
|
374
|
+
);
|
|
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': {
|
|
@@ -398,6 +573,7 @@ function buildModuleSchema(
|
|
|
398
573
|
*/
|
|
399
574
|
ast,
|
|
400
575
|
tryParse,
|
|
576
|
+
parser,
|
|
401
577
|
) {
|
|
402
578
|
const types = getTypes(ast);
|
|
403
579
|
const moduleSpecs = Object.values(types).filter(isModuleInterface);
|
|
@@ -430,13 +606,11 @@ function buildModuleSchema(
|
|
|
430
606
|
hasteModuleName,
|
|
431
607
|
moduleSpec,
|
|
432
608
|
callExpressions,
|
|
433
|
-
language,
|
|
434
609
|
);
|
|
435
610
|
throwIfMoreThanOneModuleRegistryCalls(
|
|
436
611
|
hasteModuleName,
|
|
437
612
|
callExpressions,
|
|
438
613
|
callExpressions.length,
|
|
439
|
-
language,
|
|
440
614
|
);
|
|
441
615
|
const callExpression = callExpressions[0];
|
|
442
616
|
const typeParameters = callExpression.typeParameters;
|
|
@@ -446,7 +620,6 @@ function buildModuleSchema(
|
|
|
446
620
|
callExpression,
|
|
447
621
|
methodName,
|
|
448
622
|
callExpression.arguments.length,
|
|
449
|
-
language,
|
|
450
623
|
);
|
|
451
624
|
if (callExpression.arguments[0].type !== 'StringLiteral') {
|
|
452
625
|
const type = callExpression.arguments[0].type;
|
|
@@ -455,7 +628,6 @@ function buildModuleSchema(
|
|
|
455
628
|
callExpression.arguments[0],
|
|
456
629
|
methodName,
|
|
457
630
|
type,
|
|
458
|
-
language,
|
|
459
631
|
);
|
|
460
632
|
}
|
|
461
633
|
const $moduleName = callExpression.arguments[0].value;
|
|
@@ -465,7 +637,6 @@ function buildModuleSchema(
|
|
|
465
637
|
callExpression,
|
|
466
638
|
methodName,
|
|
467
639
|
$moduleName,
|
|
468
|
-
language,
|
|
469
640
|
);
|
|
470
641
|
throwIfIncorrectModuleRegistryCallTypeParameterParserError(
|
|
471
642
|
hasteModuleName,
|
|
@@ -494,30 +665,37 @@ function buildModuleSchema(
|
|
|
494
665
|
)
|
|
495
666
|
.map(property => {
|
|
496
667
|
const aliasMap = {};
|
|
668
|
+
const enumMap = {};
|
|
497
669
|
return tryParse(() => ({
|
|
498
670
|
aliasMap: aliasMap,
|
|
671
|
+
enumMap: enumMap,
|
|
499
672
|
propertyShape: buildPropertySchema(
|
|
500
673
|
hasteModuleName,
|
|
501
674
|
property,
|
|
502
675
|
types,
|
|
503
676
|
aliasMap,
|
|
677
|
+
enumMap,
|
|
504
678
|
tryParse,
|
|
505
679
|
cxxOnly,
|
|
506
|
-
language,
|
|
507
680
|
resolveTypeAnnotation,
|
|
508
681
|
translateTypeAnnotation,
|
|
682
|
+
parser,
|
|
509
683
|
),
|
|
510
684
|
}));
|
|
511
685
|
})
|
|
512
686
|
.filter(Boolean)
|
|
513
687
|
.reduce(
|
|
514
|
-
(moduleSchema, {aliasMap, propertyShape}) => {
|
|
688
|
+
(moduleSchema, {aliasMap, enumMap, propertyShape}) => {
|
|
515
689
|
return {
|
|
516
690
|
type: 'NativeModule',
|
|
517
|
-
|
|
518
|
-
_objectSpread({}, moduleSchema.
|
|
691
|
+
aliasMap: _objectSpread(
|
|
692
|
+
_objectSpread({}, moduleSchema.aliasMap),
|
|
519
693
|
aliasMap,
|
|
520
694
|
),
|
|
695
|
+
enumMap: _objectSpread(
|
|
696
|
+
_objectSpread({}, moduleSchema.enumMap),
|
|
697
|
+
enumMap,
|
|
698
|
+
),
|
|
521
699
|
spec: {
|
|
522
700
|
properties: [...moduleSchema.spec.properties, propertyShape],
|
|
523
701
|
},
|
|
@@ -527,7 +705,8 @@ function buildModuleSchema(
|
|
|
527
705
|
},
|
|
528
706
|
{
|
|
529
707
|
type: 'NativeModule',
|
|
530
|
-
|
|
708
|
+
aliasMap: {},
|
|
709
|
+
enumMap: {},
|
|
531
710
|
spec: {
|
|
532
711
|
properties: [],
|
|
533
712
|
},
|