@react-native/codegen 0.72.3 → 0.73.0
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 +10 -10
- package/lib/CodegenSchema.js.flow +6 -1
- package/lib/SchemaValidator.d.ts +1 -1
- package/lib/generators/RNCodegen.d.ts +98 -0
- package/lib/generators/RNCodegen.js +33 -4
- package/lib/generators/RNCodegen.js.flow +35 -4
- package/lib/generators/components/ComponentsGeneratorUtils.js +2 -0
- package/lib/generators/components/ComponentsGeneratorUtils.js.flow +2 -0
- package/lib/generators/components/CppHelpers.js +2 -0
- package/lib/generators/components/CppHelpers.js.flow +2 -0
- package/lib/generators/components/GenerateEventEmitterCpp.js +33 -44
- package/lib/generators/components/GenerateEventEmitterCpp.js.flow +35 -44
- package/lib/generators/components/GenerateEventEmitterH.js +0 -2
- package/lib/generators/components/GenerateEventEmitterH.js.flow +0 -2
- package/lib/generators/components/GeneratePropsH.js +2 -0
- package/lib/generators/components/GeneratePropsH.js.flow +2 -0
- package/lib/generators/components/GeneratePropsJavaDelegate.js +2 -0
- package/lib/generators/components/GeneratePropsJavaDelegate.js.flow +2 -0
- package/lib/generators/components/GeneratePropsJavaInterface.js +2 -0
- package/lib/generators/components/GeneratePropsJavaInterface.js.flow +2 -0
- package/lib/generators/components/GeneratePropsJavaPojo/PojoCollector.js.flow +3 -1
- package/lib/generators/components/GeneratePropsJavaPojo/serializePojo.js +5 -0
- package/lib/generators/components/GeneratePropsJavaPojo/serializePojo.js.flow +6 -0
- package/lib/generators/components/GenerateViewConfigJs.js +1 -0
- package/lib/generators/components/GenerateViewConfigJs.js.flow +1 -0
- package/lib/generators/components/JavaHelpers.js +7 -0
- package/lib/generators/components/JavaHelpers.js.flow +8 -0
- package/lib/generators/components/__test_fixtures__/fixtures.js +29 -0
- package/lib/generators/components/__test_fixtures__/fixtures.js.flow +30 -0
- package/lib/generators/modules/GenerateModuleCpp.js +3 -3
- package/lib/generators/modules/GenerateModuleCpp.js.flow +3 -3
- package/lib/generators/modules/GenerateModuleJavaSpec.js +1 -2
- package/lib/generators/modules/GenerateModuleJavaSpec.js.flow +1 -2
- package/lib/parsers/error-utils.js +9 -15
- package/lib/parsers/error-utils.js.flow +12 -15
- package/lib/parsers/flow/components/__test_fixtures__/fixtures.js +5 -1
- package/lib/parsers/flow/components/__test_fixtures__/fixtures.js.flow +5 -1
- package/lib/parsers/flow/components/componentsUtils.js +4 -0
- package/lib/parsers/flow/components/componentsUtils.js.flow +4 -0
- package/lib/parsers/flow/components/index.js +35 -168
- package/lib/parsers/flow/components/index.js.flow +33 -107
- package/lib/parsers/flow/modules/__test_fixtures__/fixtures.js +4 -4
- package/lib/parsers/flow/modules/__test_fixtures__/fixtures.js.flow +4 -4
- package/lib/parsers/flow/modules/index.js +51 -327
- package/lib/parsers/flow/modules/index.js.flow +34 -258
- package/lib/parsers/flow/parser.js +84 -13
- package/lib/parsers/flow/parser.js.flow +80 -4
- package/lib/parsers/parser.d.ts +2 -2
- package/lib/parsers/parser.js.flow +84 -3
- package/lib/parsers/parserMock.js +53 -0
- package/lib/parsers/parserMock.js.flow +64 -1
- package/lib/parsers/parsers-commons.js +397 -4
- package/lib/parsers/parsers-commons.js.flow +391 -4
- package/lib/parsers/parsers-primitives.js +121 -3
- package/lib/parsers/parsers-primitives.js.flow +134 -3
- package/lib/parsers/schema/index.d.ts +1 -1
- package/lib/parsers/typescript/components/__test_fixtures__/fixtures.js +5 -1
- package/lib/parsers/typescript/components/__test_fixtures__/fixtures.js.flow +5 -1
- package/lib/parsers/typescript/components/componentsUtils.js +8 -0
- package/lib/parsers/typescript/components/componentsUtils.js.flow +8 -0
- package/lib/parsers/typescript/components/index.js +37 -170
- package/lib/parsers/typescript/components/index.js.flow +33 -109
- package/lib/parsers/typescript/modules/index.js +113 -441
- package/lib/parsers/typescript/modules/index.js.flow +100 -309
- package/lib/parsers/typescript/parser.js +97 -13
- package/lib/parsers/typescript/parser.js.flow +94 -4
- package/lib/parsers/utils.js +4 -0
- package/lib/parsers/utils.js.flow +3 -0
- package/package.json +1 -1
- package/lib/parsers/flow/Visitor.js +0 -37
- package/lib/parsers/flow/Visitor.js.flow +0 -41
- package/lib/parsers/flow/components/options.js +0 -72
- package/lib/parsers/flow/components/options.js.flow +0 -87
- package/lib/parsers/typescript/Visitor.js +0 -42
- package/lib/parsers/typescript/Visitor.js.flow +0 -47
- package/lib/parsers/typescript/components/options.js +0 -72
- package/lib/parsers/typescript/components/options.js.flow +0 -87
|
@@ -10,194 +10,29 @@
|
|
|
10
10
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
-
function ownKeys(object, enumerableOnly) {
|
|
14
|
-
var keys = Object.keys(object);
|
|
15
|
-
if (Object.getOwnPropertySymbols) {
|
|
16
|
-
var symbols = Object.getOwnPropertySymbols(object);
|
|
17
|
-
enumerableOnly &&
|
|
18
|
-
(symbols = symbols.filter(function (sym) {
|
|
19
|
-
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
20
|
-
})),
|
|
21
|
-
keys.push.apply(keys, symbols);
|
|
22
|
-
}
|
|
23
|
-
return keys;
|
|
24
|
-
}
|
|
25
|
-
function _objectSpread(target) {
|
|
26
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
27
|
-
var source = null != arguments[i] ? arguments[i] : {};
|
|
28
|
-
i % 2
|
|
29
|
-
? ownKeys(Object(source), !0).forEach(function (key) {
|
|
30
|
-
_defineProperty(target, key, source[key]);
|
|
31
|
-
})
|
|
32
|
-
: Object.getOwnPropertyDescriptors
|
|
33
|
-
? Object.defineProperties(
|
|
34
|
-
target,
|
|
35
|
-
Object.getOwnPropertyDescriptors(source),
|
|
36
|
-
)
|
|
37
|
-
: ownKeys(Object(source)).forEach(function (key) {
|
|
38
|
-
Object.defineProperty(
|
|
39
|
-
target,
|
|
40
|
-
key,
|
|
41
|
-
Object.getOwnPropertyDescriptor(source, key),
|
|
42
|
-
);
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
return target;
|
|
46
|
-
}
|
|
47
|
-
function _defineProperty(obj, key, value) {
|
|
48
|
-
key = _toPropertyKey(key);
|
|
49
|
-
if (key in obj) {
|
|
50
|
-
Object.defineProperty(obj, key, {
|
|
51
|
-
value: value,
|
|
52
|
-
enumerable: true,
|
|
53
|
-
configurable: true,
|
|
54
|
-
writable: true,
|
|
55
|
-
});
|
|
56
|
-
} else {
|
|
57
|
-
obj[key] = value;
|
|
58
|
-
}
|
|
59
|
-
return obj;
|
|
60
|
-
}
|
|
61
|
-
function _toPropertyKey(arg) {
|
|
62
|
-
var key = _toPrimitive(arg, 'string');
|
|
63
|
-
return typeof key === 'symbol' ? key : String(key);
|
|
64
|
-
}
|
|
65
|
-
function _toPrimitive(input, hint) {
|
|
66
|
-
if (typeof input !== 'object' || input === null) return input;
|
|
67
|
-
var prim = input[Symbol.toPrimitive];
|
|
68
|
-
if (prim !== undefined) {
|
|
69
|
-
var res = prim.call(input, hint || 'default');
|
|
70
|
-
if (typeof res !== 'object') return res;
|
|
71
|
-
throw new TypeError('@@toPrimitive must return a primitive value.');
|
|
72
|
-
}
|
|
73
|
-
return (hint === 'string' ? String : Number)(input);
|
|
74
|
-
}
|
|
75
|
-
function _slicedToArray(arr, i) {
|
|
76
|
-
return (
|
|
77
|
-
_arrayWithHoles(arr) ||
|
|
78
|
-
_iterableToArrayLimit(arr, i) ||
|
|
79
|
-
_unsupportedIterableToArray(arr, i) ||
|
|
80
|
-
_nonIterableRest()
|
|
81
|
-
);
|
|
82
|
-
}
|
|
83
|
-
function _nonIterableRest() {
|
|
84
|
-
throw new TypeError(
|
|
85
|
-
'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
|
|
86
|
-
);
|
|
87
|
-
}
|
|
88
|
-
function _unsupportedIterableToArray(o, minLen) {
|
|
89
|
-
if (!o) return;
|
|
90
|
-
if (typeof o === 'string') return _arrayLikeToArray(o, minLen);
|
|
91
|
-
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
92
|
-
if (n === 'Object' && o.constructor) n = o.constructor.name;
|
|
93
|
-
if (n === 'Map' || n === 'Set') return Array.from(o);
|
|
94
|
-
if (n === 'Arguments' || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
|
|
95
|
-
return _arrayLikeToArray(o, minLen);
|
|
96
|
-
}
|
|
97
|
-
function _arrayLikeToArray(arr, len) {
|
|
98
|
-
if (len == null || len > arr.length) len = arr.length;
|
|
99
|
-
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
100
|
-
return arr2;
|
|
101
|
-
}
|
|
102
|
-
function _iterableToArrayLimit(arr, i) {
|
|
103
|
-
var _i =
|
|
104
|
-
null == arr
|
|
105
|
-
? null
|
|
106
|
-
: ('undefined' != typeof Symbol && arr[Symbol.iterator]) ||
|
|
107
|
-
arr['@@iterator'];
|
|
108
|
-
if (null != _i) {
|
|
109
|
-
var _s,
|
|
110
|
-
_e,
|
|
111
|
-
_x,
|
|
112
|
-
_r,
|
|
113
|
-
_arr = [],
|
|
114
|
-
_n = !0,
|
|
115
|
-
_d = !1;
|
|
116
|
-
try {
|
|
117
|
-
if (((_x = (_i = _i.call(arr)).next), 0 === i)) {
|
|
118
|
-
if (Object(_i) !== _i) return;
|
|
119
|
-
_n = !1;
|
|
120
|
-
} else
|
|
121
|
-
for (
|
|
122
|
-
;
|
|
123
|
-
!(_n = (_s = _x.call(_i)).done) &&
|
|
124
|
-
(_arr.push(_s.value), _arr.length !== i);
|
|
125
|
-
_n = !0
|
|
126
|
-
);
|
|
127
|
-
} catch (err) {
|
|
128
|
-
(_d = !0), (_e = err);
|
|
129
|
-
} finally {
|
|
130
|
-
try {
|
|
131
|
-
if (!_n && null != _i.return && ((_r = _i.return()), Object(_r) !== _r))
|
|
132
|
-
return;
|
|
133
|
-
} finally {
|
|
134
|
-
if (_d) throw _e;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
return _arr;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
function _arrayWithHoles(arr) {
|
|
141
|
-
if (Array.isArray(arr)) return arr;
|
|
142
|
-
}
|
|
143
13
|
const _require = require('../parseTopLevelType'),
|
|
144
14
|
flattenIntersectionType = _require.flattenIntersectionType;
|
|
145
15
|
const _require2 = require('../components/componentsUtils'),
|
|
146
16
|
flattenProperties = _require2.flattenProperties;
|
|
147
|
-
const _require3 = require('
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
const
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
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,
|
|
17
|
+
const _require3 = require('../utils'),
|
|
18
|
+
resolveTypeAnnotation = _require3.resolveTypeAnnotation;
|
|
19
|
+
const _require4 = require('../../parsers-commons'),
|
|
20
|
+
parseObjectProperty = _require4.parseObjectProperty;
|
|
21
|
+
const _require5 = require('../../parsers-primitives'),
|
|
22
|
+
emitArrayType = _require5.emitArrayType,
|
|
23
|
+
emitFunction = _require5.emitFunction,
|
|
24
|
+
emitGenericObject = _require5.emitGenericObject,
|
|
25
|
+
emitPromise = _require5.emitPromise,
|
|
26
|
+
emitRootTag = _require5.emitRootTag,
|
|
27
|
+
emitUnion = _require5.emitUnion,
|
|
28
|
+
emitCommonTypes = _require5.emitCommonTypes,
|
|
29
|
+
typeAliasResolution = _require5.typeAliasResolution,
|
|
30
|
+
typeEnumResolution = _require5.typeEnumResolution,
|
|
31
|
+
translateArrayTypeAnnotation = _require5.translateArrayTypeAnnotation;
|
|
32
|
+
const _require6 = require('../../errors'),
|
|
33
|
+
UnsupportedGenericParserError = _require6.UnsupportedGenericParserError,
|
|
179
34
|
UnsupportedTypeAnnotationParserError =
|
|
180
|
-
|
|
181
|
-
const _require9 = require('../../error-utils'),
|
|
182
|
-
throwIfUntypedModule = _require9.throwIfUntypedModule,
|
|
183
|
-
throwIfUnusedModuleInterfaceParserError =
|
|
184
|
-
_require9.throwIfUnusedModuleInterfaceParserError,
|
|
185
|
-
throwIfModuleInterfaceNotFound = _require9.throwIfModuleInterfaceNotFound,
|
|
186
|
-
throwIfModuleInterfaceIsMisnamed = _require9.throwIfModuleInterfaceIsMisnamed,
|
|
187
|
-
throwIfWrongNumberOfCallExpressionArgs =
|
|
188
|
-
_require9.throwIfWrongNumberOfCallExpressionArgs,
|
|
189
|
-
throwIfMoreThanOneModuleRegistryCalls =
|
|
190
|
-
_require9.throwIfMoreThanOneModuleRegistryCalls,
|
|
191
|
-
throwIfMoreThanOneModuleInterfaceParserError =
|
|
192
|
-
_require9.throwIfMoreThanOneModuleInterfaceParserError,
|
|
193
|
-
throwIfIncorrectModuleRegistryCallTypeParameterParserError =
|
|
194
|
-
_require9.throwIfIncorrectModuleRegistryCallTypeParameterParserError,
|
|
195
|
-
throwIfIncorrectModuleRegistryCallArgument =
|
|
196
|
-
_require9.throwIfIncorrectModuleRegistryCallArgument,
|
|
197
|
-
throwIfPartialNotAnnotatingTypeParameter =
|
|
198
|
-
_require9.throwIfPartialNotAnnotatingTypeParameter,
|
|
199
|
-
throwIfPartialWithMoreParameter = _require9.throwIfPartialWithMoreParameter;
|
|
200
|
-
const language = 'TypeScript';
|
|
35
|
+
_require6.UnsupportedTypeAnnotationParserError;
|
|
201
36
|
function translateObjectTypeAnnotation(
|
|
202
37
|
hasteModuleName,
|
|
203
38
|
/**
|
|
@@ -253,6 +88,73 @@ function translateObjectTypeAnnotation(
|
|
|
253
88
|
nullable,
|
|
254
89
|
);
|
|
255
90
|
}
|
|
91
|
+
function translateTypeReferenceAnnotation(
|
|
92
|
+
typeName,
|
|
93
|
+
nullable,
|
|
94
|
+
typeAnnotation,
|
|
95
|
+
hasteModuleName,
|
|
96
|
+
types,
|
|
97
|
+
aliasMap,
|
|
98
|
+
enumMap,
|
|
99
|
+
tryParse,
|
|
100
|
+
cxxOnly,
|
|
101
|
+
parser,
|
|
102
|
+
) {
|
|
103
|
+
switch (typeName) {
|
|
104
|
+
case 'RootTag': {
|
|
105
|
+
return emitRootTag(nullable);
|
|
106
|
+
}
|
|
107
|
+
case 'Promise': {
|
|
108
|
+
return emitPromise(
|
|
109
|
+
hasteModuleName,
|
|
110
|
+
typeAnnotation,
|
|
111
|
+
parser,
|
|
112
|
+
nullable,
|
|
113
|
+
types,
|
|
114
|
+
aliasMap,
|
|
115
|
+
enumMap,
|
|
116
|
+
tryParse,
|
|
117
|
+
cxxOnly,
|
|
118
|
+
translateTypeAnnotation,
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
case 'Array':
|
|
122
|
+
case 'ReadonlyArray': {
|
|
123
|
+
return emitArrayType(
|
|
124
|
+
hasteModuleName,
|
|
125
|
+
typeAnnotation,
|
|
126
|
+
parser,
|
|
127
|
+
types,
|
|
128
|
+
aliasMap,
|
|
129
|
+
enumMap,
|
|
130
|
+
cxxOnly,
|
|
131
|
+
nullable,
|
|
132
|
+
translateTypeAnnotation,
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
default: {
|
|
136
|
+
const commonType = emitCommonTypes(
|
|
137
|
+
hasteModuleName,
|
|
138
|
+
types,
|
|
139
|
+
typeAnnotation,
|
|
140
|
+
aliasMap,
|
|
141
|
+
enumMap,
|
|
142
|
+
tryParse,
|
|
143
|
+
cxxOnly,
|
|
144
|
+
nullable,
|
|
145
|
+
parser,
|
|
146
|
+
);
|
|
147
|
+
if (!commonType) {
|
|
148
|
+
throw new UnsupportedGenericParserError(
|
|
149
|
+
hasteModuleName,
|
|
150
|
+
typeAnnotation,
|
|
151
|
+
parser,
|
|
152
|
+
);
|
|
153
|
+
}
|
|
154
|
+
return commonType;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
256
158
|
function translateTypeAnnotation(
|
|
257
159
|
hasteModuleName,
|
|
258
160
|
/**
|
|
@@ -314,93 +216,18 @@ function translateTypeAnnotation(
|
|
|
314
216
|
}
|
|
315
217
|
}
|
|
316
218
|
case 'TSTypeReference': {
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
enumMap,
|
|
330
|
-
tryParse,
|
|
331
|
-
cxxOnly,
|
|
332
|
-
translateTypeAnnotation,
|
|
333
|
-
);
|
|
334
|
-
}
|
|
335
|
-
case 'Array':
|
|
336
|
-
case 'ReadonlyArray': {
|
|
337
|
-
return emitArrayType(
|
|
338
|
-
hasteModuleName,
|
|
339
|
-
typeAnnotation,
|
|
340
|
-
parser,
|
|
341
|
-
types,
|
|
342
|
-
aliasMap,
|
|
343
|
-
enumMap,
|
|
344
|
-
cxxOnly,
|
|
345
|
-
nullable,
|
|
346
|
-
translateTypeAnnotation,
|
|
347
|
-
);
|
|
348
|
-
}
|
|
349
|
-
case 'Stringish': {
|
|
350
|
-
return emitStringish(nullable);
|
|
351
|
-
}
|
|
352
|
-
case 'Int32': {
|
|
353
|
-
return emitInt32(nullable);
|
|
354
|
-
}
|
|
355
|
-
case 'Double': {
|
|
356
|
-
return emitDouble(nullable);
|
|
357
|
-
}
|
|
358
|
-
case 'Float': {
|
|
359
|
-
return emitFloat(nullable);
|
|
360
|
-
}
|
|
361
|
-
case 'UnsafeObject':
|
|
362
|
-
case 'Object': {
|
|
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);
|
|
395
|
-
}
|
|
396
|
-
default: {
|
|
397
|
-
throw new UnsupportedGenericParserError(
|
|
398
|
-
hasteModuleName,
|
|
399
|
-
typeAnnotation,
|
|
400
|
-
parser,
|
|
401
|
-
);
|
|
402
|
-
}
|
|
403
|
-
}
|
|
219
|
+
return translateTypeReferenceAnnotation(
|
|
220
|
+
typeAnnotation.typeName.name,
|
|
221
|
+
nullable,
|
|
222
|
+
typeAnnotation,
|
|
223
|
+
hasteModuleName,
|
|
224
|
+
types,
|
|
225
|
+
aliasMap,
|
|
226
|
+
enumMap,
|
|
227
|
+
tryParse,
|
|
228
|
+
cxxOnly,
|
|
229
|
+
parser,
|
|
230
|
+
);
|
|
404
231
|
}
|
|
405
232
|
case 'TSInterfaceDeclaration': {
|
|
406
233
|
var _typeAnnotation$exten;
|
|
@@ -505,23 +332,10 @@ function translateTypeAnnotation(
|
|
|
505
332
|
typeResolutionStatus,
|
|
506
333
|
nullable,
|
|
507
334
|
hasteModuleName,
|
|
508
|
-
language,
|
|
509
335
|
enumMap,
|
|
510
336
|
parser,
|
|
511
337
|
);
|
|
512
338
|
}
|
|
513
|
-
case 'TSBooleanKeyword': {
|
|
514
|
-
return emitBoolean(nullable);
|
|
515
|
-
}
|
|
516
|
-
case 'TSNumberKeyword': {
|
|
517
|
-
return emitNumber(nullable);
|
|
518
|
-
}
|
|
519
|
-
case 'TSVoidKeyword': {
|
|
520
|
-
return emitVoid(nullable);
|
|
521
|
-
}
|
|
522
|
-
case 'TSStringKeyword': {
|
|
523
|
-
return emitString(nullable);
|
|
524
|
-
}
|
|
525
339
|
case 'TSFunctionType': {
|
|
526
340
|
return emitFunction(
|
|
527
341
|
nullable,
|
|
@@ -539,171 +353,29 @@ function translateTypeAnnotation(
|
|
|
539
353
|
case 'TSUnionType': {
|
|
540
354
|
return emitUnion(nullable, hasteModuleName, typeAnnotation, parser);
|
|
541
355
|
}
|
|
542
|
-
case 'TSUnknownKeyword': {
|
|
543
|
-
if (cxxOnly) {
|
|
544
|
-
return emitMixed(nullable);
|
|
545
|
-
}
|
|
546
|
-
// Fallthrough
|
|
547
|
-
}
|
|
548
|
-
|
|
549
356
|
default: {
|
|
550
|
-
|
|
357
|
+
const commonType = emitCommonTypes(
|
|
551
358
|
hasteModuleName,
|
|
359
|
+
types,
|
|
552
360
|
typeAnnotation,
|
|
553
|
-
|
|
361
|
+
aliasMap,
|
|
362
|
+
enumMap,
|
|
363
|
+
tryParse,
|
|
364
|
+
cxxOnly,
|
|
365
|
+
nullable,
|
|
366
|
+
parser,
|
|
554
367
|
);
|
|
368
|
+
if (!commonType) {
|
|
369
|
+
throw new UnsupportedTypeAnnotationParserError(
|
|
370
|
+
hasteModuleName,
|
|
371
|
+
typeAnnotation,
|
|
372
|
+
parser.language(),
|
|
373
|
+
);
|
|
374
|
+
}
|
|
375
|
+
return commonType;
|
|
555
376
|
}
|
|
556
377
|
}
|
|
557
378
|
}
|
|
558
|
-
function buildModuleSchema(
|
|
559
|
-
hasteModuleName,
|
|
560
|
-
/**
|
|
561
|
-
* TODO(T108222691): Use flow-types for @babel/parser
|
|
562
|
-
*/
|
|
563
|
-
ast,
|
|
564
|
-
tryParse,
|
|
565
|
-
parser,
|
|
566
|
-
) {
|
|
567
|
-
const types = parser.getTypes(ast);
|
|
568
|
-
const moduleSpecs = Object.values(types).filter(t =>
|
|
569
|
-
parser.isModuleInterface(t),
|
|
570
|
-
);
|
|
571
|
-
throwIfModuleInterfaceNotFound(
|
|
572
|
-
moduleSpecs.length,
|
|
573
|
-
hasteModuleName,
|
|
574
|
-
ast,
|
|
575
|
-
language,
|
|
576
|
-
);
|
|
577
|
-
throwIfMoreThanOneModuleInterfaceParserError(
|
|
578
|
-
hasteModuleName,
|
|
579
|
-
moduleSpecs,
|
|
580
|
-
language,
|
|
581
|
-
);
|
|
582
|
-
const _moduleSpecs = _slicedToArray(moduleSpecs, 1),
|
|
583
|
-
moduleSpec = _moduleSpecs[0];
|
|
584
|
-
throwIfModuleInterfaceIsMisnamed(hasteModuleName, moduleSpec.id, language);
|
|
585
|
-
|
|
586
|
-
// Parse Module Name
|
|
587
|
-
const moduleName = (() => {
|
|
588
|
-
const callExpressions = [];
|
|
589
|
-
visit(ast, {
|
|
590
|
-
CallExpression(node) {
|
|
591
|
-
if (isModuleRegistryCall(node)) {
|
|
592
|
-
callExpressions.push(node);
|
|
593
|
-
}
|
|
594
|
-
},
|
|
595
|
-
});
|
|
596
|
-
throwIfUnusedModuleInterfaceParserError(
|
|
597
|
-
hasteModuleName,
|
|
598
|
-
moduleSpec,
|
|
599
|
-
callExpressions,
|
|
600
|
-
);
|
|
601
|
-
throwIfMoreThanOneModuleRegistryCalls(
|
|
602
|
-
hasteModuleName,
|
|
603
|
-
callExpressions,
|
|
604
|
-
callExpressions.length,
|
|
605
|
-
);
|
|
606
|
-
const callExpression = callExpressions[0];
|
|
607
|
-
const typeParameters = callExpression.typeParameters;
|
|
608
|
-
const methodName = callExpression.callee.property.name;
|
|
609
|
-
throwIfWrongNumberOfCallExpressionArgs(
|
|
610
|
-
hasteModuleName,
|
|
611
|
-
callExpression,
|
|
612
|
-
methodName,
|
|
613
|
-
callExpression.arguments.length,
|
|
614
|
-
);
|
|
615
|
-
throwIfIncorrectModuleRegistryCallArgument(
|
|
616
|
-
hasteModuleName,
|
|
617
|
-
callExpression.arguments[0],
|
|
618
|
-
methodName,
|
|
619
|
-
);
|
|
620
|
-
const $moduleName = callExpression.arguments[0].value;
|
|
621
|
-
throwIfUntypedModule(
|
|
622
|
-
typeParameters,
|
|
623
|
-
hasteModuleName,
|
|
624
|
-
callExpression,
|
|
625
|
-
methodName,
|
|
626
|
-
$moduleName,
|
|
627
|
-
);
|
|
628
|
-
throwIfIncorrectModuleRegistryCallTypeParameterParserError(
|
|
629
|
-
hasteModuleName,
|
|
630
|
-
typeParameters,
|
|
631
|
-
methodName,
|
|
632
|
-
$moduleName,
|
|
633
|
-
parser,
|
|
634
|
-
);
|
|
635
|
-
return $moduleName;
|
|
636
|
-
})();
|
|
637
|
-
|
|
638
|
-
// Some module names use platform suffix to indicate platform-exclusive modules.
|
|
639
|
-
// Eventually this should be made explicit in the Flow type itself.
|
|
640
|
-
// Also check the hasteModuleName for platform suffix.
|
|
641
|
-
// Note: this shape is consistent with ComponentSchema.
|
|
642
|
-
const _verifyPlatforms = verifyPlatforms(hasteModuleName, moduleName),
|
|
643
|
-
cxxOnly = _verifyPlatforms.cxxOnly,
|
|
644
|
-
excludedPlatforms = _verifyPlatforms.excludedPlatforms;
|
|
645
|
-
|
|
646
|
-
// $FlowFixMe[missing-type-arg]
|
|
647
|
-
return moduleSpec.body.body
|
|
648
|
-
.filter(
|
|
649
|
-
property =>
|
|
650
|
-
property.type === 'TSMethodSignature' ||
|
|
651
|
-
property.type === 'TSPropertySignature',
|
|
652
|
-
)
|
|
653
|
-
.map(property => {
|
|
654
|
-
const aliasMap = {};
|
|
655
|
-
const enumMap = {};
|
|
656
|
-
return tryParse(() => ({
|
|
657
|
-
aliasMap: aliasMap,
|
|
658
|
-
enumMap: enumMap,
|
|
659
|
-
propertyShape: buildPropertySchema(
|
|
660
|
-
hasteModuleName,
|
|
661
|
-
property,
|
|
662
|
-
types,
|
|
663
|
-
aliasMap,
|
|
664
|
-
enumMap,
|
|
665
|
-
tryParse,
|
|
666
|
-
cxxOnly,
|
|
667
|
-
resolveTypeAnnotation,
|
|
668
|
-
translateTypeAnnotation,
|
|
669
|
-
parser,
|
|
670
|
-
),
|
|
671
|
-
}));
|
|
672
|
-
})
|
|
673
|
-
.filter(Boolean)
|
|
674
|
-
.reduce(
|
|
675
|
-
(moduleSchema, {aliasMap, enumMap, propertyShape}) => {
|
|
676
|
-
return {
|
|
677
|
-
type: 'NativeModule',
|
|
678
|
-
aliasMap: _objectSpread(
|
|
679
|
-
_objectSpread({}, moduleSchema.aliasMap),
|
|
680
|
-
aliasMap,
|
|
681
|
-
),
|
|
682
|
-
enumMap: _objectSpread(
|
|
683
|
-
_objectSpread({}, moduleSchema.enumMap),
|
|
684
|
-
enumMap,
|
|
685
|
-
),
|
|
686
|
-
spec: {
|
|
687
|
-
properties: [...moduleSchema.spec.properties, propertyShape],
|
|
688
|
-
},
|
|
689
|
-
moduleName: moduleSchema.moduleName,
|
|
690
|
-
excludedPlatforms: moduleSchema.excludedPlatforms,
|
|
691
|
-
};
|
|
692
|
-
},
|
|
693
|
-
{
|
|
694
|
-
type: 'NativeModule',
|
|
695
|
-
aliasMap: {},
|
|
696
|
-
enumMap: {},
|
|
697
|
-
spec: {
|
|
698
|
-
properties: [],
|
|
699
|
-
},
|
|
700
|
-
moduleName: moduleName,
|
|
701
|
-
excludedPlatforms:
|
|
702
|
-
excludedPlatforms.length !== 0 ? [...excludedPlatforms] : undefined,
|
|
703
|
-
},
|
|
704
|
-
);
|
|
705
|
-
}
|
|
706
379
|
module.exports = {
|
|
707
|
-
buildModuleSchema,
|
|
708
380
|
typeScriptTranslateTypeAnnotation: translateTypeAnnotation,
|
|
709
381
|
};
|