@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
|
@@ -78,25 +78,24 @@ function _iterableToArrayLimit(arr, i) {
|
|
|
78
78
|
function _arrayWithHoles(arr) {
|
|
79
79
|
if (Array.isArray(arr)) return arr;
|
|
80
80
|
}
|
|
81
|
-
const _require = require('./
|
|
81
|
+
const _require = require('./utils'),
|
|
82
|
+
getConfigType = _require.getConfigType,
|
|
83
|
+
extractNativeModuleName = _require.extractNativeModuleName,
|
|
84
|
+
createParserErrorCapturer = _require.createParserErrorCapturer;
|
|
85
|
+
const _require2 = require('./error-utils'),
|
|
82
86
|
throwIfPropertyValueTypeIsUnsupported =
|
|
83
|
-
|
|
87
|
+
_require2.throwIfPropertyValueTypeIsUnsupported,
|
|
84
88
|
throwIfUnsupportedFunctionParamTypeAnnotationParserError =
|
|
85
|
-
|
|
89
|
+
_require2.throwIfUnsupportedFunctionParamTypeAnnotationParserError,
|
|
86
90
|
throwIfUnsupportedFunctionReturnTypeAnnotationParserError =
|
|
87
|
-
|
|
88
|
-
throwIfModuleTypeIsUnsupported =
|
|
89
|
-
const
|
|
91
|
+
_require2.throwIfUnsupportedFunctionReturnTypeAnnotationParserError,
|
|
92
|
+
throwIfModuleTypeIsUnsupported = _require2.throwIfModuleTypeIsUnsupported;
|
|
93
|
+
const _require3 = require('./errors'),
|
|
90
94
|
MissingTypeParameterGenericParserError =
|
|
91
|
-
|
|
95
|
+
_require3.MissingTypeParameterGenericParserError,
|
|
92
96
|
MoreThanOneTypeParameterGenericParserError =
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
_require2.UnsupportedEnumDeclarationParserError,
|
|
96
|
-
UnsupportedGenericParserError = _require2.UnsupportedGenericParserError,
|
|
97
|
-
UnsupportedObjectPropertyTypeAnnotationParserError =
|
|
98
|
-
_require2.UnsupportedObjectPropertyTypeAnnotationParserError,
|
|
99
|
-
UnnamedFunctionParamParserError = _require2.UnnamedFunctionParamParserError;
|
|
97
|
+
_require3.MoreThanOneTypeParameterGenericParserError,
|
|
98
|
+
UnnamedFunctionParamParserError = _require3.UnnamedFunctionParamParserError;
|
|
100
99
|
const invariant = require('invariant');
|
|
101
100
|
function wrapModuleSchema(nativeModuleSchema, hasteModuleName) {
|
|
102
101
|
return {
|
|
@@ -151,15 +150,9 @@ function assertGenericTypeAnnotationHasExactlyOneTypeParameter(
|
|
|
151
150
|
function isObjectProperty(property, language) {
|
|
152
151
|
switch (language) {
|
|
153
152
|
case 'Flow':
|
|
154
|
-
return
|
|
155
|
-
property.type === 'ObjectTypeProperty' ||
|
|
156
|
-
property.type === 'ObjectTypeIndexer'
|
|
157
|
-
);
|
|
153
|
+
return property.type === 'ObjectTypeProperty';
|
|
158
154
|
case 'TypeScript':
|
|
159
|
-
return
|
|
160
|
-
property.type === 'TSPropertySignature' ||
|
|
161
|
-
property.type === 'TSIndexSignature'
|
|
162
|
-
);
|
|
155
|
+
return property.type === 'TSPropertySignature';
|
|
163
156
|
default:
|
|
164
157
|
return false;
|
|
165
158
|
}
|
|
@@ -169,6 +162,7 @@ function parseObjectProperty(
|
|
|
169
162
|
hasteModuleName,
|
|
170
163
|
types,
|
|
171
164
|
aliasMap,
|
|
165
|
+
enumMap,
|
|
172
166
|
tryParse,
|
|
173
167
|
cxxOnly,
|
|
174
168
|
nullable,
|
|
@@ -176,42 +170,23 @@ function parseObjectProperty(
|
|
|
176
170
|
parser,
|
|
177
171
|
) {
|
|
178
172
|
const language = parser.language();
|
|
179
|
-
|
|
180
|
-
throw new UnsupportedObjectPropertyTypeAnnotationParserError(
|
|
181
|
-
hasteModuleName,
|
|
182
|
-
property,
|
|
183
|
-
property.type,
|
|
184
|
-
language,
|
|
185
|
-
);
|
|
186
|
-
}
|
|
173
|
+
const name = parser.getKeyName(property, hasteModuleName);
|
|
187
174
|
const _property$optional = property.optional,
|
|
188
175
|
optional = _property$optional === void 0 ? false : _property$optional;
|
|
189
|
-
const name = parser.getKeyName(property, hasteModuleName);
|
|
190
176
|
const languageTypeAnnotation =
|
|
191
177
|
language === 'TypeScript'
|
|
192
178
|
? property.typeAnnotation.typeAnnotation
|
|
193
179
|
: property.value;
|
|
194
|
-
if (
|
|
195
|
-
property.type === 'ObjectTypeIndexer' ||
|
|
196
|
-
property.type === 'TSIndexSignature'
|
|
197
|
-
) {
|
|
198
|
-
return {
|
|
199
|
-
name,
|
|
200
|
-
optional,
|
|
201
|
-
typeAnnotation: wrapNullable(nullable, {
|
|
202
|
-
type: 'GenericObjectTypeAnnotation',
|
|
203
|
-
}), //TODO: use `emitObject` for typeAnnotation
|
|
204
|
-
};
|
|
205
|
-
}
|
|
206
|
-
|
|
207
180
|
const _unwrapNullable = unwrapNullable(
|
|
208
181
|
translateTypeAnnotation(
|
|
209
182
|
hasteModuleName,
|
|
210
183
|
languageTypeAnnotation,
|
|
211
184
|
types,
|
|
212
185
|
aliasMap,
|
|
186
|
+
enumMap,
|
|
213
187
|
tryParse,
|
|
214
188
|
cxxOnly,
|
|
189
|
+
parser,
|
|
215
190
|
),
|
|
216
191
|
),
|
|
217
192
|
_unwrapNullable2 = _slicedToArray(_unwrapNullable, 2),
|
|
@@ -227,7 +202,6 @@ function parseObjectProperty(
|
|
|
227
202
|
languageTypeAnnotation,
|
|
228
203
|
property.key,
|
|
229
204
|
propertyTypeAnnotation.type,
|
|
230
|
-
language,
|
|
231
205
|
);
|
|
232
206
|
}
|
|
233
207
|
return {
|
|
@@ -236,92 +210,38 @@ function parseObjectProperty(
|
|
|
236
210
|
typeAnnotation: wrapNullable(isPropertyNullable, propertyTypeAnnotation),
|
|
237
211
|
};
|
|
238
212
|
}
|
|
239
|
-
function translateDefault(
|
|
240
|
-
hasteModuleName,
|
|
241
|
-
typeAnnotation,
|
|
242
|
-
types,
|
|
243
|
-
nullable,
|
|
244
|
-
parser,
|
|
245
|
-
) {
|
|
246
|
-
const maybeEnumDeclaration =
|
|
247
|
-
types[parser.nameForGenericTypeAnnotation(typeAnnotation)];
|
|
248
|
-
if (maybeEnumDeclaration && parser.isEnumDeclaration(maybeEnumDeclaration)) {
|
|
249
|
-
const memberType = parser.getMaybeEnumMemberType(maybeEnumDeclaration);
|
|
250
|
-
if (
|
|
251
|
-
memberType === 'NumberTypeAnnotation' ||
|
|
252
|
-
memberType === 'StringTypeAnnotation'
|
|
253
|
-
) {
|
|
254
|
-
return wrapNullable(nullable, {
|
|
255
|
-
type: 'EnumDeclaration',
|
|
256
|
-
memberType: memberType,
|
|
257
|
-
});
|
|
258
|
-
} else {
|
|
259
|
-
throw new UnsupportedEnumDeclarationParserError(
|
|
260
|
-
hasteModuleName,
|
|
261
|
-
typeAnnotation,
|
|
262
|
-
memberType,
|
|
263
|
-
parser.language(),
|
|
264
|
-
);
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
throw new UnsupportedGenericParserError(
|
|
268
|
-
hasteModuleName,
|
|
269
|
-
typeAnnotation,
|
|
270
|
-
parser,
|
|
271
|
-
);
|
|
272
|
-
}
|
|
273
|
-
function getTypeAnnotationParameters(typeAnnotation, language) {
|
|
274
|
-
return language === 'Flow'
|
|
275
|
-
? typeAnnotation.params
|
|
276
|
-
: typeAnnotation.parameters;
|
|
277
|
-
}
|
|
278
|
-
function getFunctionNameFromParameter(param, language) {
|
|
279
|
-
return language === 'Flow' ? param.name : param.typeAnnotation;
|
|
280
|
-
}
|
|
281
|
-
function getParameterName(param, language) {
|
|
282
|
-
return language === 'Flow' ? param.name.name : param.name;
|
|
283
|
-
}
|
|
284
|
-
function getParameterTypeAnnotation(param, language) {
|
|
285
|
-
return language === 'Flow'
|
|
286
|
-
? param.typeAnnotation
|
|
287
|
-
: param.typeAnnotation.typeAnnotation;
|
|
288
|
-
}
|
|
289
|
-
function getTypeAnnotationReturnType(typeAnnotation, language) {
|
|
290
|
-
return language === 'Flow'
|
|
291
|
-
? typeAnnotation.returnType
|
|
292
|
-
: typeAnnotation.typeAnnotation.typeAnnotation;
|
|
293
|
-
}
|
|
294
213
|
function translateFunctionTypeAnnotation(
|
|
295
214
|
hasteModuleName,
|
|
296
215
|
// TODO(T108222691): Use flow-types for @babel/parser
|
|
297
216
|
// TODO(T71778680): This is a FunctionTypeAnnotation. Type this.
|
|
298
|
-
|
|
217
|
+
functionTypeAnnotation,
|
|
299
218
|
types,
|
|
300
219
|
aliasMap,
|
|
220
|
+
enumMap,
|
|
301
221
|
tryParse,
|
|
302
222
|
cxxOnly,
|
|
303
223
|
translateTypeAnnotation,
|
|
304
|
-
|
|
224
|
+
parser,
|
|
305
225
|
) {
|
|
306
226
|
const params = [];
|
|
307
|
-
for (const param of
|
|
227
|
+
for (const param of parser.getFunctionTypeAnnotationParameters(
|
|
228
|
+
functionTypeAnnotation,
|
|
229
|
+
)) {
|
|
308
230
|
const parsedParam = tryParse(() => {
|
|
309
|
-
if (getFunctionNameFromParameter(param
|
|
310
|
-
throw new UnnamedFunctionParamParserError(
|
|
311
|
-
param,
|
|
312
|
-
hasteModuleName,
|
|
313
|
-
language,
|
|
314
|
-
);
|
|
231
|
+
if (parser.getFunctionNameFromParameter(param) == null) {
|
|
232
|
+
throw new UnnamedFunctionParamParserError(param, hasteModuleName);
|
|
315
233
|
}
|
|
316
|
-
const paramName = getParameterName(param
|
|
234
|
+
const paramName = parser.getParameterName(param);
|
|
317
235
|
const _unwrapNullable3 = unwrapNullable(
|
|
318
236
|
translateTypeAnnotation(
|
|
319
237
|
hasteModuleName,
|
|
320
|
-
getParameterTypeAnnotation(param
|
|
238
|
+
parser.getParameterTypeAnnotation(param),
|
|
321
239
|
types,
|
|
322
240
|
aliasMap,
|
|
241
|
+
enumMap,
|
|
323
242
|
tryParse,
|
|
324
243
|
cxxOnly,
|
|
244
|
+
parser,
|
|
325
245
|
),
|
|
326
246
|
),
|
|
327
247
|
_unwrapNullable4 = _slicedToArray(_unwrapNullable3, 2),
|
|
@@ -354,11 +274,13 @@ function translateFunctionTypeAnnotation(
|
|
|
354
274
|
const _unwrapNullable5 = unwrapNullable(
|
|
355
275
|
translateTypeAnnotation(
|
|
356
276
|
hasteModuleName,
|
|
357
|
-
|
|
277
|
+
parser.getFunctionTypeAnnotationReturnType(functionTypeAnnotation),
|
|
358
278
|
types,
|
|
359
279
|
aliasMap,
|
|
280
|
+
enumMap,
|
|
360
281
|
tryParse,
|
|
361
282
|
cxxOnly,
|
|
283
|
+
parser,
|
|
362
284
|
),
|
|
363
285
|
),
|
|
364
286
|
_unwrapNullable6 = _slicedToArray(_unwrapNullable5, 2),
|
|
@@ -366,9 +288,8 @@ function translateFunctionTypeAnnotation(
|
|
|
366
288
|
isReturnTypeAnnotationNullable = _unwrapNullable6[1];
|
|
367
289
|
throwIfUnsupportedFunctionReturnTypeAnnotationParserError(
|
|
368
290
|
hasteModuleName,
|
|
369
|
-
|
|
291
|
+
functionTypeAnnotation,
|
|
370
292
|
'FunctionTypeAnnotation',
|
|
371
|
-
language,
|
|
372
293
|
cxxOnly,
|
|
373
294
|
returnTypeAnnotation.type,
|
|
374
295
|
);
|
|
@@ -391,17 +312,18 @@ function buildPropertySchema(
|
|
|
391
312
|
property,
|
|
392
313
|
types,
|
|
393
314
|
aliasMap,
|
|
315
|
+
enumMap,
|
|
394
316
|
tryParse,
|
|
395
317
|
cxxOnly,
|
|
396
|
-
language,
|
|
397
318
|
resolveTypeAnnotation,
|
|
398
319
|
translateTypeAnnotation,
|
|
320
|
+
parser,
|
|
399
321
|
) {
|
|
400
322
|
let nullable = false;
|
|
401
323
|
let key = property.key,
|
|
402
324
|
value = property.value;
|
|
403
325
|
const methodName = key.name;
|
|
404
|
-
if (language === 'TypeScript') {
|
|
326
|
+
if (parser.language() === 'TypeScript') {
|
|
405
327
|
value =
|
|
406
328
|
property.type === 'TSMethodSignature'
|
|
407
329
|
? property
|
|
@@ -415,7 +337,7 @@ function buildPropertySchema(
|
|
|
415
337
|
property.value,
|
|
416
338
|
key.name,
|
|
417
339
|
value.type,
|
|
418
|
-
language,
|
|
340
|
+
parser.language(),
|
|
419
341
|
);
|
|
420
342
|
return {
|
|
421
343
|
name: methodName,
|
|
@@ -427,14 +349,93 @@ function buildPropertySchema(
|
|
|
427
349
|
value,
|
|
428
350
|
types,
|
|
429
351
|
aliasMap,
|
|
352
|
+
enumMap,
|
|
430
353
|
tryParse,
|
|
431
354
|
cxxOnly,
|
|
432
355
|
translateTypeAnnotation,
|
|
433
|
-
|
|
356
|
+
parser,
|
|
434
357
|
),
|
|
435
358
|
),
|
|
436
359
|
};
|
|
437
360
|
}
|
|
361
|
+
function buildSchemaFromConfigType(
|
|
362
|
+
configType,
|
|
363
|
+
filename,
|
|
364
|
+
ast,
|
|
365
|
+
wrapComponentSchema,
|
|
366
|
+
buildComponentSchema,
|
|
367
|
+
buildModuleSchema,
|
|
368
|
+
parser,
|
|
369
|
+
) {
|
|
370
|
+
switch (configType) {
|
|
371
|
+
case 'component': {
|
|
372
|
+
return wrapComponentSchema(buildComponentSchema(ast, parser));
|
|
373
|
+
}
|
|
374
|
+
case 'module': {
|
|
375
|
+
if (filename === undefined || filename === null) {
|
|
376
|
+
throw new Error('Filepath expected while parasing a module');
|
|
377
|
+
}
|
|
378
|
+
const nativeModuleName = extractNativeModuleName(filename);
|
|
379
|
+
const _createParserErrorCap = createParserErrorCapturer(),
|
|
380
|
+
_createParserErrorCap2 = _slicedToArray(_createParserErrorCap, 2),
|
|
381
|
+
parsingErrors = _createParserErrorCap2[0],
|
|
382
|
+
tryParse = _createParserErrorCap2[1];
|
|
383
|
+
const schema = tryParse(() =>
|
|
384
|
+
buildModuleSchema(nativeModuleName, ast, tryParse, parser),
|
|
385
|
+
);
|
|
386
|
+
if (parsingErrors.length > 0) {
|
|
387
|
+
/**
|
|
388
|
+
* TODO(T77968131): We have two options:
|
|
389
|
+
* - Throw the first error, but indicate there are more then one errors.
|
|
390
|
+
* - Display all errors, nicely formatted.
|
|
391
|
+
*
|
|
392
|
+
* For the time being, we're just throw the first error.
|
|
393
|
+
**/
|
|
394
|
+
|
|
395
|
+
throw parsingErrors[0];
|
|
396
|
+
}
|
|
397
|
+
invariant(
|
|
398
|
+
schema != null,
|
|
399
|
+
'When there are no parsing errors, the schema should not be null',
|
|
400
|
+
);
|
|
401
|
+
return wrapModuleSchema(schema, nativeModuleName);
|
|
402
|
+
}
|
|
403
|
+
default:
|
|
404
|
+
return {
|
|
405
|
+
modules: {},
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
function buildSchema(
|
|
410
|
+
contents,
|
|
411
|
+
filename,
|
|
412
|
+
wrapComponentSchema,
|
|
413
|
+
buildComponentSchema,
|
|
414
|
+
buildModuleSchema,
|
|
415
|
+
Visitor,
|
|
416
|
+
parser,
|
|
417
|
+
) {
|
|
418
|
+
// Early return for non-Spec JavaScript files
|
|
419
|
+
if (
|
|
420
|
+
!contents.includes('codegenNativeComponent') &&
|
|
421
|
+
!contents.includes('TurboModule')
|
|
422
|
+
) {
|
|
423
|
+
return {
|
|
424
|
+
modules: {},
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
const ast = parser.getAst(contents);
|
|
428
|
+
const configType = getConfigType(ast, Visitor);
|
|
429
|
+
return buildSchemaFromConfigType(
|
|
430
|
+
configType,
|
|
431
|
+
filename,
|
|
432
|
+
ast,
|
|
433
|
+
wrapComponentSchema,
|
|
434
|
+
buildComponentSchema,
|
|
435
|
+
buildModuleSchema,
|
|
436
|
+
parser,
|
|
437
|
+
);
|
|
438
|
+
}
|
|
438
439
|
module.exports = {
|
|
439
440
|
wrapModuleSchema,
|
|
440
441
|
unwrapNullable,
|
|
@@ -442,7 +443,8 @@ module.exports = {
|
|
|
442
443
|
assertGenericTypeAnnotationHasExactlyOneTypeParameter,
|
|
443
444
|
isObjectProperty,
|
|
444
445
|
parseObjectProperty,
|
|
445
|
-
translateDefault,
|
|
446
446
|
translateFunctionTypeAnnotation,
|
|
447
447
|
buildPropertySchema,
|
|
448
|
+
buildSchemaFromConfigType,
|
|
449
|
+
buildSchema,
|
|
448
450
|
};
|