@react-native/codegen 0.74.0 → 0.75.0-nightly-20240221-a1171f79f
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 -1
- package/lib/CodegenSchema.js.flow +2 -1
- package/lib/SchemaValidator.js.flow +2 -2
- package/lib/cli/combine/combine-js-to-schema-cli.js +59 -40
- package/lib/cli/combine/combine-js-to-schema-cli.js.flow +23 -39
- package/lib/cli/combine/combine-js-to-schema.js +49 -1
- package/lib/cli/combine/combine-js-to-schema.js.flow +59 -1
- package/lib/cli/combine/combine-schemas-cli.js +77 -0
- package/lib/cli/combine/combine-schemas-cli.js.flow +87 -0
- package/lib/cli/combine/combine-utils.js +3 -65
- package/lib/cli/combine/combine-utils.js.flow +7 -28
- package/lib/cli/parser/parser.js +1 -1
- package/lib/cli/parser/parser.js.flow +1 -1
- package/lib/generators/RNCodegen.d.ts +1 -0
- package/lib/generators/RNCodegen.js +58 -31
- package/lib/generators/RNCodegen.js.flow +52 -32
- package/lib/generators/TypeUtils/Cxx/index.js +17 -0
- package/lib/generators/TypeUtils/Cxx/index.js.flow +18 -0
- package/lib/generators/TypeUtils/Java/index.js +31 -0
- package/lib/generators/TypeUtils/Java/index.js.flow +27 -0
- package/lib/generators/TypeUtils/Objective-C/index.js +17 -0
- package/lib/generators/TypeUtils/Objective-C/index.js.flow +18 -0
- package/lib/generators/components/ComponentsGeneratorUtils.js +7 -7
- package/lib/generators/components/ComponentsGeneratorUtils.js.flow +8 -10
- package/lib/generators/components/ComponentsProviderUtils.js +55 -0
- package/lib/generators/components/ComponentsProviderUtils.js.flow +60 -0
- package/lib/generators/components/CppHelpers.js +7 -0
- package/lib/generators/components/CppHelpers.js.flow +14 -0
- package/lib/generators/components/GenerateComponentDescriptorCpp.js +89 -0
- package/lib/generators/components/GenerateComponentDescriptorCpp.js.flow +101 -0
- package/lib/generators/components/GenerateComponentDescriptorH.js +28 -12
- package/lib/generators/components/GenerateComponentDescriptorH.js.flow +20 -12
- package/lib/generators/components/GenerateComponentHObjCpp.js +15 -1
- package/lib/generators/components/GenerateComponentHObjCpp.js.flow +11 -2
- package/lib/generators/components/GenerateEventEmitterCpp.js +28 -15
- package/lib/generators/components/GenerateEventEmitterCpp.js.flow +16 -17
- package/lib/generators/components/GenerateEventEmitterH.js +20 -13
- package/lib/generators/components/GenerateEventEmitterH.js.flow +13 -15
- package/lib/generators/components/GeneratePropsCpp.js +17 -8
- package/lib/generators/components/GeneratePropsCpp.js.flow +13 -9
- package/lib/generators/components/GeneratePropsH.js +23 -16
- package/lib/generators/components/GeneratePropsH.js.flow +12 -16
- package/lib/generators/components/GeneratePropsJavaDelegate.js +11 -3
- package/lib/generators/components/GeneratePropsJavaDelegate.js.flow +7 -4
- package/lib/generators/components/GeneratePropsJavaInterface.js +11 -3
- package/lib/generators/components/GeneratePropsJavaInterface.js.flow +6 -3
- package/lib/generators/components/GeneratePropsJavaPojo/PojoCollector.js.flow +6 -6
- package/lib/generators/components/GeneratePropsJavaPojo/index.js +1 -1
- package/lib/generators/components/GeneratePropsJavaPojo/index.js.flow +1 -1
- package/lib/generators/components/GeneratePropsJavaPojo/serializePojo.js.flow +1 -0
- package/lib/generators/components/GenerateShadowNodeCpp.js +19 -8
- package/lib/generators/components/GenerateShadowNodeCpp.js.flow +9 -8
- package/lib/generators/components/GenerateShadowNodeH.js +27 -11
- package/lib/generators/components/GenerateShadowNodeH.js.flow +11 -14
- package/lib/generators/components/GenerateStateCpp.js +19 -8
- package/lib/generators/components/GenerateStateCpp.js.flow +9 -8
- package/lib/generators/components/GenerateStateH.js +9 -5
- package/lib/generators/components/GenerateStateH.js.flow +3 -4
- package/lib/generators/components/GenerateTests.js +11 -5
- package/lib/generators/components/GenerateTests.js.flow +2 -2
- package/lib/generators/components/GenerateThirdPartyFabricComponentsProviderH.js +16 -3
- package/lib/generators/components/GenerateThirdPartyFabricComponentsProviderH.js.flow +18 -3
- package/lib/generators/components/GenerateThirdPartyFabricComponentsProviderObjCpp.js +18 -3
- package/lib/generators/components/GenerateThirdPartyFabricComponentsProviderObjCpp.js.flow +21 -3
- package/lib/generators/components/GenerateViewConfigJs.js +2 -2
- package/lib/generators/components/GenerateViewConfigJs.js.flow +2 -2
- package/lib/generators/components/JavaHelpers.js +8 -0
- package/lib/generators/components/JavaHelpers.js.flow +9 -0
- package/lib/generators/components/__test_fixtures__/fixtures.js +22 -0
- package/lib/generators/components/__test_fixtures__/fixtures.js.flow +22 -0
- package/lib/generators/modules/GenerateModuleCpp.js +14 -10
- package/lib/generators/modules/GenerateModuleCpp.js.flow +9 -10
- package/lib/generators/modules/GenerateModuleH.js +198 -72
- package/lib/generators/modules/GenerateModuleH.js.flow +186 -71
- package/lib/generators/modules/GenerateModuleJavaSpec.js +50 -57
- package/lib/generators/modules/GenerateModuleJavaSpec.js.flow +45 -50
- package/lib/generators/modules/GenerateModuleJniCpp.js +16 -12
- package/lib/generators/modules/GenerateModuleJniCpp.js.flow +11 -12
- package/lib/generators/modules/GenerateModuleJniH.js +12 -5
- package/lib/generators/modules/GenerateModuleJniH.js.flow +8 -6
- package/lib/generators/modules/GenerateModuleObjCpp/StructCollector.js +5 -5
- package/lib/generators/modules/GenerateModuleObjCpp/StructCollector.js.flow +11 -12
- package/lib/generators/modules/GenerateModuleObjCpp/header/serializeConstantsStruct.js +23 -21
- package/lib/generators/modules/GenerateModuleObjCpp/header/serializeConstantsStruct.js.flow +19 -18
- package/lib/generators/modules/GenerateModuleObjCpp/header/serializeRegularStruct.js +23 -21
- package/lib/generators/modules/GenerateModuleObjCpp/header/serializeRegularStruct.js.flow +19 -18
- package/lib/generators/modules/GenerateModuleObjCpp/index.js +18 -20
- package/lib/generators/modules/GenerateModuleObjCpp/index.js.flow +11 -14
- package/lib/generators/modules/GenerateModuleObjCpp/serializeMethod.js +40 -42
- package/lib/generators/modules/GenerateModuleObjCpp/serializeMethod.js.flow +38 -44
- package/lib/generators/modules/GenerateModuleObjCpp/source/serializeModule.js +25 -27
- package/lib/generators/modules/GenerateModuleObjCpp/source/serializeModule.js.flow +26 -28
- package/lib/generators/modules/Utils.js +98 -0
- package/lib/generators/modules/Utils.js.flow +34 -2
- package/lib/generators/modules/__test_fixtures__/fixtures.js +685 -64
- package/lib/generators/modules/__test_fixtures__/fixtures.js.flow +686 -64
- package/lib/parsers/error-utils.js +17 -17
- package/lib/parsers/error-utils.js.flow +10 -10
- package/lib/parsers/errors.js +10 -0
- package/lib/parsers/errors.js.flow +15 -1
- package/lib/parsers/flow/components/__test_fixtures__/fixtures.js +7 -1
- package/lib/parsers/flow/components/__test_fixtures__/fixtures.js.flow +7 -1
- package/lib/parsers/flow/components/commands.js +24 -0
- package/lib/parsers/flow/components/commands.js.flow +45 -3
- package/lib/parsers/flow/components/componentsUtils.js +5 -4
- package/lib/parsers/flow/components/componentsUtils.js.flow +4 -3
- package/lib/parsers/flow/components/events.js +7 -7
- package/lib/parsers/flow/components/events.js.flow +7 -7
- package/lib/parsers/flow/components/index.js +8 -8
- package/lib/parsers/flow/components/index.js.flow +3 -3
- package/lib/parsers/flow/modules/__test_fixtures__/fixtures.js +13 -0
- package/lib/parsers/flow/modules/__test_fixtures__/fixtures.js.flow +13 -0
- package/lib/parsers/flow/modules/index.js +20 -19
- package/lib/parsers/flow/modules/index.js.flow +10 -11
- package/lib/parsers/flow/parseFlowAndThrowErrors.js +105 -0
- package/lib/parsers/flow/parseFlowAndThrowErrors.js.flow +41 -0
- package/lib/parsers/flow/parser.js +24 -25
- package/lib/parsers/flow/parser.js.flow +27 -36
- package/lib/parsers/flow/utils.js.flow +1 -1
- package/lib/parsers/parser.js.flow +12 -10
- package/lib/parsers/parserMock.js +11 -12
- package/lib/parsers/parserMock.js.flow +25 -28
- package/lib/parsers/parsers-commons.js +85 -36
- package/lib/parsers/parsers-commons.js.flow +71 -37
- package/lib/parsers/parsers-primitives.js +17 -17
- package/lib/parsers/parsers-primitives.js.flow +14 -16
- package/lib/parsers/schema.js.flow +3 -3
- package/lib/parsers/typescript/components/__test_fixtures__/fixtures.js +8 -1
- package/lib/parsers/typescript/components/__test_fixtures__/fixtures.js.flow +8 -1
- package/lib/parsers/typescript/components/commands.js +23 -15
- package/lib/parsers/typescript/components/commands.js.flow +24 -16
- package/lib/parsers/typescript/components/componentsUtils.js +34 -20
- package/lib/parsers/typescript/components/componentsUtils.js.flow +36 -19
- package/lib/parsers/typescript/components/events.js +22 -22
- package/lib/parsers/typescript/components/events.js.flow +11 -10
- package/lib/parsers/typescript/components/extends.js.flow +1 -0
- package/lib/parsers/typescript/components/index.js +10 -10
- package/lib/parsers/typescript/components/index.js.flow +4 -4
- package/lib/parsers/typescript/modules/__test_fixtures__/fixtures.js +13 -0
- package/lib/parsers/typescript/modules/__test_fixtures__/fixtures.js.flow +13 -0
- package/lib/parsers/typescript/modules/index.js +25 -20
- package/lib/parsers/typescript/modules/index.js.flow +16 -14
- package/lib/parsers/typescript/parser.js +25 -26
- package/lib/parsers/typescript/parser.js.flow +23 -27
- package/lib/parsers/utils.js +5 -0
- package/lib/parsers/utils.js.flow +6 -1
- package/package.json +8 -6
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
*
|
|
8
|
+
* @format
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
'use strict';
|
|
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
|
+
const hermesParser = require('hermes-parser');
|
|
76
|
+
function parseFlowAndThrowErrors(code, options = {}) {
|
|
77
|
+
let ast;
|
|
78
|
+
try {
|
|
79
|
+
ast = hermesParser.parse(
|
|
80
|
+
code,
|
|
81
|
+
_objectSpread(
|
|
82
|
+
{
|
|
83
|
+
// Produce an ESTree-compliant AST
|
|
84
|
+
babel: false,
|
|
85
|
+
// Parse Flow without a pragma
|
|
86
|
+
flow: 'all',
|
|
87
|
+
},
|
|
88
|
+
options.filename != null
|
|
89
|
+
? {
|
|
90
|
+
sourceFilename: options.filename,
|
|
91
|
+
}
|
|
92
|
+
: {},
|
|
93
|
+
),
|
|
94
|
+
);
|
|
95
|
+
} catch (e) {
|
|
96
|
+
if (options.filename != null) {
|
|
97
|
+
e.message = `Syntax error in ${options.filename}: ${e.message}`;
|
|
98
|
+
}
|
|
99
|
+
throw e;
|
|
100
|
+
}
|
|
101
|
+
return ast;
|
|
102
|
+
}
|
|
103
|
+
module.exports = {
|
|
104
|
+
parseFlowAndThrowErrors,
|
|
105
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
* @flow strict
|
|
8
|
+
* @format
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
'use strict';
|
|
12
|
+
|
|
13
|
+
import type {Program as ESTreeProgram} from 'hermes-estree';
|
|
14
|
+
|
|
15
|
+
const hermesParser = require('hermes-parser');
|
|
16
|
+
|
|
17
|
+
function parseFlowAndThrowErrors(
|
|
18
|
+
code: string,
|
|
19
|
+
options: $ReadOnly<{filename?: ?string}> = {},
|
|
20
|
+
): ESTreeProgram {
|
|
21
|
+
let ast;
|
|
22
|
+
try {
|
|
23
|
+
ast = hermesParser.parse(code, {
|
|
24
|
+
// Produce an ESTree-compliant AST
|
|
25
|
+
babel: false,
|
|
26
|
+
// Parse Flow without a pragma
|
|
27
|
+
flow: 'all',
|
|
28
|
+
...(options.filename != null ? {sourceFilename: options.filename} : {}),
|
|
29
|
+
});
|
|
30
|
+
} catch (e) {
|
|
31
|
+
if (options.filename != null) {
|
|
32
|
+
e.message = `Syntax error in ${options.filename}: ${e.message}`;
|
|
33
|
+
}
|
|
34
|
+
throw e;
|
|
35
|
+
}
|
|
36
|
+
return ast;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
module.exports = {
|
|
40
|
+
parseFlowAndThrowErrors,
|
|
41
|
+
};
|
|
@@ -38,31 +38,30 @@ function _toPrimitive(input, hint) {
|
|
|
38
38
|
}
|
|
39
39
|
return (hint === 'string' ? String : Number)(input);
|
|
40
40
|
}
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
buildPropSchema = _require3.buildPropSchema,
|
|
54
|
-
buildModuleSchema = _require3.buildModuleSchema,
|
|
55
|
-
handleGenericTypeAnnotation = _require3.handleGenericTypeAnnotation;
|
|
56
|
-
const _require4 = require('../parsers-primitives'),
|
|
57
|
-
Visitor = _require4.Visitor;
|
|
41
|
+
const _require = require('../errors'),
|
|
42
|
+
UnsupportedObjectPropertyTypeAnnotationParserError =
|
|
43
|
+
_require.UnsupportedObjectPropertyTypeAnnotationParserError;
|
|
44
|
+
const _require2 = require('../parsers-commons'),
|
|
45
|
+
buildModuleSchema = _require2.buildModuleSchema,
|
|
46
|
+
buildPropSchema = _require2.buildPropSchema,
|
|
47
|
+
buildSchema = _require2.buildSchema,
|
|
48
|
+
handleGenericTypeAnnotation = _require2.handleGenericTypeAnnotation;
|
|
49
|
+
const _require3 = require('../parsers-primitives'),
|
|
50
|
+
Visitor = _require3.Visitor;
|
|
51
|
+
const _require4 = require('../schema.js'),
|
|
52
|
+
wrapComponentSchema = _require4.wrapComponentSchema;
|
|
58
53
|
const _require5 = require('./components'),
|
|
59
54
|
buildComponentSchema = _require5.buildComponentSchema;
|
|
60
|
-
const _require6 = require('
|
|
61
|
-
|
|
55
|
+
const _require6 = require('./components/componentsUtils'),
|
|
56
|
+
flattenProperties = _require6.flattenProperties,
|
|
57
|
+
getSchemaInfo = _require6.getSchemaInfo,
|
|
58
|
+
getTypeAnnotation = _require6.getTypeAnnotation;
|
|
59
|
+
const _require7 = require('./modules'),
|
|
60
|
+
flowTranslateTypeAnnotation = _require7.flowTranslateTypeAnnotation;
|
|
61
|
+
const _require8 = require('./parseFlowAndThrowErrors'),
|
|
62
|
+
parseFlowAndThrowErrors = _require8.parseFlowAndThrowErrors;
|
|
62
63
|
const fs = require('fs');
|
|
63
|
-
const
|
|
64
|
-
UnsupportedObjectPropertyTypeAnnotationParserError =
|
|
65
|
-
_require7.UnsupportedObjectPropertyTypeAnnotationParserError;
|
|
64
|
+
const invariant = require('invariant');
|
|
66
65
|
class FlowParser {
|
|
67
66
|
constructor() {
|
|
68
67
|
_defineProperty(
|
|
@@ -146,9 +145,9 @@ class FlowParser {
|
|
|
146
145
|
const contents = fs.readFileSync(filename, 'utf8');
|
|
147
146
|
return this.parseString(contents, 'path/NativeSampleTurboModule.js');
|
|
148
147
|
}
|
|
149
|
-
getAst(contents) {
|
|
150
|
-
return
|
|
151
|
-
|
|
148
|
+
getAst(contents, filename) {
|
|
149
|
+
return parseFlowAndThrowErrors(contents, {
|
|
150
|
+
filename,
|
|
152
151
|
});
|
|
153
152
|
}
|
|
154
153
|
getFunctionTypeAnnotationParameters(functionTypeAnnotation) {
|
|
@@ -11,17 +11,17 @@
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
13
|
import type {
|
|
14
|
-
|
|
15
|
-
SchemaType,
|
|
14
|
+
ExtendsPropsShape,
|
|
16
15
|
NamedShape,
|
|
17
|
-
Nullable,
|
|
18
|
-
NativeModuleParamTypeAnnotation,
|
|
19
|
-
NativeModuleEnumMemberType,
|
|
20
|
-
NativeModuleEnumMembers,
|
|
21
16
|
NativeModuleAliasMap,
|
|
22
17
|
NativeModuleEnumMap,
|
|
18
|
+
NativeModuleEnumMembers,
|
|
19
|
+
NativeModuleEnumMemberType,
|
|
20
|
+
NativeModuleParamTypeAnnotation,
|
|
21
|
+
Nullable,
|
|
23
22
|
PropTypeAnnotation,
|
|
24
|
-
|
|
23
|
+
SchemaType,
|
|
24
|
+
UnionTypeAnnotationMemberType,
|
|
25
25
|
} from '../../CodegenSchema';
|
|
26
26
|
import type {ParserType} from '../errors';
|
|
27
27
|
import type {
|
|
@@ -32,44 +32,37 @@ import type {
|
|
|
32
32
|
} from '../parser';
|
|
33
33
|
import type {
|
|
34
34
|
ParserErrorCapturer,
|
|
35
|
-
TypeDeclarationMap,
|
|
36
35
|
PropAST,
|
|
36
|
+
TypeDeclarationMap,
|
|
37
37
|
TypeResolutionStatus,
|
|
38
38
|
} from '../utils';
|
|
39
39
|
|
|
40
|
-
type ExtendsForProp = null | {
|
|
41
|
-
type: 'ReactNativeBuiltInType',
|
|
42
|
-
knownTypeName: 'ReactNativeCoreViewProps',
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
const invariant = require('invariant');
|
|
46
|
-
|
|
47
40
|
const {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
flattenProperties,
|
|
51
|
-
} = require('./components/componentsUtils');
|
|
52
|
-
|
|
53
|
-
const {flowTranslateTypeAnnotation} = require('./modules');
|
|
54
|
-
|
|
55
|
-
// $FlowFixMe[untyped-import] there's no flowtype flow-parser
|
|
56
|
-
const flowParser = require('flow-parser');
|
|
57
|
-
|
|
41
|
+
UnsupportedObjectPropertyTypeAnnotationParserError,
|
|
42
|
+
} = require('../errors');
|
|
58
43
|
const {
|
|
59
|
-
buildSchema,
|
|
60
|
-
buildPropSchema,
|
|
61
44
|
buildModuleSchema,
|
|
45
|
+
buildPropSchema,
|
|
46
|
+
buildSchema,
|
|
62
47
|
handleGenericTypeAnnotation,
|
|
63
48
|
} = require('../parsers-commons');
|
|
64
49
|
const {Visitor} = require('../parsers-primitives');
|
|
65
|
-
const {buildComponentSchema} = require('./components');
|
|
66
50
|
const {wrapComponentSchema} = require('../schema.js');
|
|
67
|
-
|
|
51
|
+
const {buildComponentSchema} = require('./components');
|
|
52
|
+
const {
|
|
53
|
+
flattenProperties,
|
|
54
|
+
getSchemaInfo,
|
|
55
|
+
getTypeAnnotation,
|
|
56
|
+
} = require('./components/componentsUtils');
|
|
57
|
+
const {flowTranslateTypeAnnotation} = require('./modules');
|
|
58
|
+
const {parseFlowAndThrowErrors} = require('./parseFlowAndThrowErrors');
|
|
68
59
|
const fs = require('fs');
|
|
60
|
+
const invariant = require('invariant');
|
|
69
61
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
62
|
+
type ExtendsForProp = null | {
|
|
63
|
+
type: 'ReactNativeBuiltInType',
|
|
64
|
+
knownTypeName: 'ReactNativeCoreViewProps',
|
|
65
|
+
};
|
|
73
66
|
|
|
74
67
|
class FlowParser implements Parser {
|
|
75
68
|
typeParameterInstantiation: string = 'TypeParameterInstantiation';
|
|
@@ -149,10 +142,8 @@ class FlowParser implements Parser {
|
|
|
149
142
|
return this.parseString(contents, 'path/NativeSampleTurboModule.js');
|
|
150
143
|
}
|
|
151
144
|
|
|
152
|
-
getAst(contents: string): $FlowFixMe {
|
|
153
|
-
return
|
|
154
|
-
enums: true,
|
|
155
|
-
});
|
|
145
|
+
getAst(contents: string, filename?: ?string): $FlowFixMe {
|
|
146
|
+
return parseFlowAndThrowErrors(contents, {filename});
|
|
156
147
|
}
|
|
157
148
|
|
|
158
149
|
getFunctionTypeAnnotationParameters(
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
-
import type {
|
|
13
|
+
import type {ASTNode, TypeDeclarationMap} from '../utils';
|
|
14
14
|
|
|
15
15
|
function getValueFromTypes(value: ASTNode, types: TypeDeclarationMap): ASTNode {
|
|
16
16
|
if (value.type === 'GenericTypeAnnotation' && types[value.id.name]) {
|
|
@@ -11,24 +11,24 @@
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
13
|
import type {
|
|
14
|
-
|
|
15
|
-
SchemaType,
|
|
14
|
+
ExtendsPropsShape,
|
|
16
15
|
NamedShape,
|
|
17
|
-
Nullable,
|
|
18
|
-
NativeModuleParamTypeAnnotation,
|
|
19
|
-
NativeModuleEnumMemberType,
|
|
20
|
-
NativeModuleEnumMembers,
|
|
21
16
|
NativeModuleAliasMap,
|
|
22
17
|
NativeModuleEnumMap,
|
|
18
|
+
NativeModuleEnumMembers,
|
|
19
|
+
NativeModuleEnumMemberType,
|
|
20
|
+
NativeModuleParamTypeAnnotation,
|
|
21
|
+
Nullable,
|
|
23
22
|
PropTypeAnnotation,
|
|
24
|
-
|
|
23
|
+
SchemaType,
|
|
24
|
+
UnionTypeAnnotationMemberType,
|
|
25
25
|
} from '../CodegenSchema';
|
|
26
26
|
import type {ParserType} from './errors';
|
|
27
27
|
import type {
|
|
28
|
+
ASTNode,
|
|
28
29
|
ParserErrorCapturer,
|
|
29
|
-
TypeDeclarationMap,
|
|
30
30
|
PropAST,
|
|
31
|
-
|
|
31
|
+
TypeDeclarationMap,
|
|
32
32
|
TypeResolutionStatus,
|
|
33
33
|
} from './utils';
|
|
34
34
|
|
|
@@ -169,9 +169,11 @@ export interface Parser {
|
|
|
169
169
|
/**
|
|
170
170
|
* Given the content of a file, it returns an AST.
|
|
171
171
|
* @parameter contents: the content of the file.
|
|
172
|
+
* @parameter filename: the name of the file, if available.
|
|
173
|
+
* @throws if there is a syntax error.
|
|
172
174
|
* @returns: the AST of the file.
|
|
173
175
|
*/
|
|
174
|
-
getAst(contents: string): $FlowFixMe;
|
|
176
|
+
getAst(contents: string, filename?: ?string): $FlowFixMe;
|
|
175
177
|
|
|
176
178
|
/**
|
|
177
179
|
* Given a FunctionTypeAnnotation, it returns an array of its parameters.
|
|
@@ -39,16 +39,15 @@ function _toPrimitive(input, hint) {
|
|
|
39
39
|
return (hint === 'string' ? String : Number)(input);
|
|
40
40
|
}
|
|
41
41
|
import invariant from 'invariant';
|
|
42
|
-
const _require = require('./
|
|
43
|
-
flattenProperties = _require.flattenProperties;
|
|
44
|
-
const _require2 = require('./parsers-commons'),
|
|
45
|
-
buildPropSchema = _require2.buildPropSchema;
|
|
46
|
-
|
|
47
|
-
// $FlowFixMe[untyped-import] there's no flowtype flow-parser
|
|
48
|
-
const flowParser = require('flow-parser');
|
|
49
|
-
const _require3 = require('./errors'),
|
|
42
|
+
const _require = require('./errors'),
|
|
50
43
|
UnsupportedObjectPropertyTypeAnnotationParserError =
|
|
51
|
-
|
|
44
|
+
_require.UnsupportedObjectPropertyTypeAnnotationParserError;
|
|
45
|
+
const _require2 = require('./flow/parseFlowAndThrowErrors'),
|
|
46
|
+
parseFlowAndThrowErrors = _require2.parseFlowAndThrowErrors;
|
|
47
|
+
const _require3 = require('./parsers-commons'),
|
|
48
|
+
buildPropSchema = _require3.buildPropSchema;
|
|
49
|
+
const _require4 = require('./typescript/components/componentsUtils'),
|
|
50
|
+
flattenProperties = _require4.flattenProperties;
|
|
52
51
|
const schemaMock = {
|
|
53
52
|
modules: {
|
|
54
53
|
StringPropNativeComponentView: {
|
|
@@ -126,9 +125,9 @@ export class MockedParser {
|
|
|
126
125
|
parseModuleFixture(filename) {
|
|
127
126
|
return schemaMock;
|
|
128
127
|
}
|
|
129
|
-
getAst(contents) {
|
|
130
|
-
return
|
|
131
|
-
|
|
128
|
+
getAst(contents, filename) {
|
|
129
|
+
return parseFlowAndThrowErrors(contents, {
|
|
130
|
+
filename,
|
|
132
131
|
});
|
|
133
132
|
}
|
|
134
133
|
getFunctionTypeAnnotationParameters(functionTypeAnnotation) {
|
|
@@ -11,46 +11,45 @@
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
13
|
import type {
|
|
14
|
-
|
|
15
|
-
GetTypeAnnotationFN,
|
|
16
|
-
Parser,
|
|
17
|
-
ResolveTypeAnnotationFN,
|
|
18
|
-
} from './parser';
|
|
19
|
-
import type {ParserType} from './errors';
|
|
20
|
-
type ExtendsForProp = null | {
|
|
21
|
-
type: 'ReactNativeBuiltInType',
|
|
22
|
-
knownTypeName: 'ReactNativeCoreViewProps',
|
|
23
|
-
};
|
|
24
|
-
import type {
|
|
25
|
-
UnionTypeAnnotationMemberType,
|
|
26
|
-
SchemaType,
|
|
14
|
+
ExtendsPropsShape,
|
|
27
15
|
NamedShape,
|
|
28
|
-
Nullable,
|
|
29
|
-
NativeModuleParamTypeAnnotation,
|
|
30
|
-
NativeModuleEnumMemberType,
|
|
31
|
-
NativeModuleEnumMembers,
|
|
32
16
|
NativeModuleAliasMap,
|
|
33
17
|
NativeModuleEnumMap,
|
|
18
|
+
NativeModuleEnumMembers,
|
|
19
|
+
NativeModuleEnumMemberType,
|
|
20
|
+
NativeModuleParamTypeAnnotation,
|
|
21
|
+
Nullable,
|
|
34
22
|
PropTypeAnnotation,
|
|
35
|
-
|
|
23
|
+
SchemaType,
|
|
24
|
+
UnionTypeAnnotationMemberType,
|
|
36
25
|
} from '../CodegenSchema';
|
|
26
|
+
import type {ParserType} from './errors';
|
|
27
|
+
import type {
|
|
28
|
+
GetSchemaInfoFN,
|
|
29
|
+
GetTypeAnnotationFN,
|
|
30
|
+
Parser,
|
|
31
|
+
ResolveTypeAnnotationFN,
|
|
32
|
+
} from './parser';
|
|
37
33
|
import type {
|
|
38
34
|
ParserErrorCapturer,
|
|
39
35
|
PropAST,
|
|
40
36
|
TypeDeclarationMap,
|
|
41
37
|
TypeResolutionStatus,
|
|
42
38
|
} from './utils';
|
|
43
|
-
import invariant from 'invariant';
|
|
44
39
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
const {buildPropSchema} = require('./parsers-commons');
|
|
40
|
+
import invariant from 'invariant';
|
|
48
41
|
|
|
49
|
-
// $FlowFixMe[untyped-import] there's no flowtype flow-parser
|
|
50
|
-
const flowParser = require('flow-parser');
|
|
51
42
|
const {
|
|
52
43
|
UnsupportedObjectPropertyTypeAnnotationParserError,
|
|
53
44
|
} = require('./errors');
|
|
45
|
+
const {parseFlowAndThrowErrors} = require('./flow/parseFlowAndThrowErrors');
|
|
46
|
+
const {buildPropSchema} = require('./parsers-commons');
|
|
47
|
+
const {flattenProperties} = require('./typescript/components/componentsUtils');
|
|
48
|
+
|
|
49
|
+
type ExtendsForProp = null | {
|
|
50
|
+
type: 'ReactNativeBuiltInType',
|
|
51
|
+
knownTypeName: 'ReactNativeCoreViewProps',
|
|
52
|
+
};
|
|
54
53
|
|
|
55
54
|
const schemaMock = {
|
|
56
55
|
modules: {
|
|
@@ -122,10 +121,8 @@ export class MockedParser implements Parser {
|
|
|
122
121
|
return schemaMock;
|
|
123
122
|
}
|
|
124
123
|
|
|
125
|
-
getAst(contents: string): $FlowFixMe {
|
|
126
|
-
return
|
|
127
|
-
enums: true,
|
|
128
|
-
});
|
|
124
|
+
getAst(contents: string, filename?: ?string): $FlowFixMe {
|
|
125
|
+
return parseFlowAndThrowErrors(contents, {filename});
|
|
129
126
|
}
|
|
130
127
|
|
|
131
128
|
getFunctionTypeAnnotationParameters(
|
|
@@ -140,47 +140,49 @@ function _iterableToArrayLimit(arr, i) {
|
|
|
140
140
|
function _arrayWithHoles(arr) {
|
|
141
141
|
if (Array.isArray(arr)) return arr;
|
|
142
142
|
}
|
|
143
|
-
const _require = require('./utils'),
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
143
|
+
const _require = require('./error-utils'),
|
|
144
|
+
throwIfConfigNotfound = _require.throwIfConfigNotfound,
|
|
145
|
+
throwIfIncorrectModuleRegistryCallArgument =
|
|
146
|
+
_require.throwIfIncorrectModuleRegistryCallArgument,
|
|
147
|
+
throwIfIncorrectModuleRegistryCallTypeParameterParserError =
|
|
148
|
+
_require.throwIfIncorrectModuleRegistryCallTypeParameterParserError,
|
|
149
|
+
throwIfModuleInterfaceIsMisnamed = _require.throwIfModuleInterfaceIsMisnamed,
|
|
150
|
+
throwIfModuleInterfaceNotFound = _require.throwIfModuleInterfaceNotFound,
|
|
151
|
+
throwIfModuleTypeIsUnsupported = _require.throwIfModuleTypeIsUnsupported,
|
|
152
|
+
throwIfMoreThanOneCodegenNativecommands =
|
|
153
|
+
_require.throwIfMoreThanOneCodegenNativecommands,
|
|
154
|
+
throwIfMoreThanOneConfig = _require.throwIfMoreThanOneConfig,
|
|
155
|
+
throwIfMoreThanOneModuleInterfaceParserError =
|
|
156
|
+
_require.throwIfMoreThanOneModuleInterfaceParserError,
|
|
157
|
+
throwIfMoreThanOneModuleRegistryCalls =
|
|
158
|
+
_require.throwIfMoreThanOneModuleRegistryCalls,
|
|
151
159
|
throwIfPropertyValueTypeIsUnsupported =
|
|
152
|
-
|
|
160
|
+
_require.throwIfPropertyValueTypeIsUnsupported,
|
|
161
|
+
throwIfTypeAliasIsNotInterface = _require.throwIfTypeAliasIsNotInterface,
|
|
153
162
|
throwIfUnsupportedFunctionParamTypeAnnotationParserError =
|
|
154
|
-
|
|
163
|
+
_require.throwIfUnsupportedFunctionParamTypeAnnotationParserError,
|
|
155
164
|
throwIfUnsupportedFunctionReturnTypeAnnotationParserError =
|
|
156
|
-
|
|
157
|
-
|
|
165
|
+
_require.throwIfUnsupportedFunctionReturnTypeAnnotationParserError,
|
|
166
|
+
throwIfUntypedModule = _require.throwIfUntypedModule,
|
|
158
167
|
throwIfUnusedModuleInterfaceParserError =
|
|
159
|
-
|
|
160
|
-
throwIfMoreThanOneModuleRegistryCalls =
|
|
161
|
-
_require2.throwIfMoreThanOneModuleRegistryCalls,
|
|
168
|
+
_require.throwIfUnusedModuleInterfaceParserError,
|
|
162
169
|
throwIfWrongNumberOfCallExpressionArgs =
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
throwIfIncorrectModuleRegistryCallTypeParameterParserError =
|
|
166
|
-
_require2.throwIfIncorrectModuleRegistryCallTypeParameterParserError,
|
|
167
|
-
throwIfIncorrectModuleRegistryCallArgument =
|
|
168
|
-
_require2.throwIfIncorrectModuleRegistryCallArgument,
|
|
169
|
-
throwIfModuleInterfaceNotFound = _require2.throwIfModuleInterfaceNotFound,
|
|
170
|
-
throwIfMoreThanOneModuleInterfaceParserError =
|
|
171
|
-
_require2.throwIfMoreThanOneModuleInterfaceParserError,
|
|
172
|
-
throwIfModuleInterfaceIsMisnamed = _require2.throwIfModuleInterfaceIsMisnamed,
|
|
173
|
-
throwIfMoreThanOneCodegenNativecommands =
|
|
174
|
-
_require2.throwIfMoreThanOneCodegenNativecommands,
|
|
175
|
-
throwIfConfigNotfound = _require2.throwIfConfigNotfound,
|
|
176
|
-
throwIfMoreThanOneConfig = _require2.throwIfMoreThanOneConfig,
|
|
177
|
-
throwIfTypeAliasIsNotInterface = _require2.throwIfTypeAliasIsNotInterface;
|
|
178
|
-
const _require3 = require('./errors'),
|
|
170
|
+
_require.throwIfWrongNumberOfCallExpressionArgs;
|
|
171
|
+
const _require2 = require('./errors'),
|
|
179
172
|
MissingTypeParameterGenericParserError =
|
|
180
|
-
|
|
173
|
+
_require2.MissingTypeParameterGenericParserError,
|
|
181
174
|
MoreThanOneTypeParameterGenericParserError =
|
|
182
|
-
|
|
183
|
-
UnnamedFunctionParamParserError =
|
|
175
|
+
_require2.MoreThanOneTypeParameterGenericParserError,
|
|
176
|
+
UnnamedFunctionParamParserError = _require2.UnnamedFunctionParamParserError,
|
|
177
|
+
UnsupportedObjectDirectRecursivePropertyParserError =
|
|
178
|
+
_require2.UnsupportedObjectDirectRecursivePropertyParserError;
|
|
179
|
+
const _require3 = require('./utils'),
|
|
180
|
+
createParserErrorCapturer = _require3.createParserErrorCapturer,
|
|
181
|
+
extractNativeModuleName = _require3.extractNativeModuleName,
|
|
182
|
+
getConfigType = _require3.getConfigType,
|
|
183
|
+
isModuleRegistryCall = _require3.isModuleRegistryCall,
|
|
184
|
+
verifyPlatforms = _require3.verifyPlatforms,
|
|
185
|
+
visit = _require3.visit;
|
|
184
186
|
const invariant = require('invariant');
|
|
185
187
|
function wrapModuleSchema(nativeModuleSchema, hasteModuleName) {
|
|
186
188
|
return {
|
|
@@ -247,6 +249,7 @@ function isObjectProperty(property, language) {
|
|
|
247
249
|
}
|
|
248
250
|
}
|
|
249
251
|
function parseObjectProperty(
|
|
252
|
+
parentObject,
|
|
250
253
|
property,
|
|
251
254
|
hasteModuleName,
|
|
252
255
|
types,
|
|
@@ -266,6 +269,51 @@ function parseObjectProperty(
|
|
|
266
269
|
language === 'TypeScript'
|
|
267
270
|
? property.typeAnnotation.typeAnnotation
|
|
268
271
|
: property.value;
|
|
272
|
+
|
|
273
|
+
// Handle recursive types
|
|
274
|
+
if (parentObject) {
|
|
275
|
+
var _languageTypeAnnotati, _languageTypeAnnotati2;
|
|
276
|
+
const propertyType = parser.getResolveTypeAnnotationFN()(
|
|
277
|
+
languageTypeAnnotation,
|
|
278
|
+
types,
|
|
279
|
+
parser,
|
|
280
|
+
);
|
|
281
|
+
if (
|
|
282
|
+
propertyType.typeResolutionStatus.successful === true &&
|
|
283
|
+
propertyType.typeResolutionStatus.type === 'alias' &&
|
|
284
|
+
(language === 'TypeScript'
|
|
285
|
+
? parentObject.typeName &&
|
|
286
|
+
parentObject.typeName.name ===
|
|
287
|
+
((_languageTypeAnnotati = languageTypeAnnotation.typeName) ===
|
|
288
|
+
null || _languageTypeAnnotati === void 0
|
|
289
|
+
? void 0
|
|
290
|
+
: _languageTypeAnnotati.name)
|
|
291
|
+
: parentObject.id &&
|
|
292
|
+
parentObject.id.name ===
|
|
293
|
+
((_languageTypeAnnotati2 = languageTypeAnnotation.id) === null ||
|
|
294
|
+
_languageTypeAnnotati2 === void 0
|
|
295
|
+
? void 0
|
|
296
|
+
: _languageTypeAnnotati2.name))
|
|
297
|
+
) {
|
|
298
|
+
if (!optional) {
|
|
299
|
+
throw new UnsupportedObjectDirectRecursivePropertyParserError(
|
|
300
|
+
name,
|
|
301
|
+
languageTypeAnnotation,
|
|
302
|
+
hasteModuleName,
|
|
303
|
+
);
|
|
304
|
+
}
|
|
305
|
+
return {
|
|
306
|
+
name,
|
|
307
|
+
optional,
|
|
308
|
+
typeAnnotation: {
|
|
309
|
+
type: 'TypeAliasTypeAnnotation',
|
|
310
|
+
name: propertyType.typeResolutionStatus.name,
|
|
311
|
+
},
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
// Handle non-recursive types
|
|
269
317
|
const _unwrapNullable = unwrapNullable(
|
|
270
318
|
translateTypeAnnotation(
|
|
271
319
|
hasteModuleName,
|
|
@@ -282,7 +330,7 @@ function parseObjectProperty(
|
|
|
282
330
|
propertyTypeAnnotation = _unwrapNullable2[0],
|
|
283
331
|
isPropertyNullable = _unwrapNullable2[1];
|
|
284
332
|
if (
|
|
285
|
-
propertyTypeAnnotation.type === 'FunctionTypeAnnotation' ||
|
|
333
|
+
(propertyTypeAnnotation.type === 'FunctionTypeAnnotation' && !cxxOnly) ||
|
|
286
334
|
propertyTypeAnnotation.type === 'PromiseTypeAnnotation' ||
|
|
287
335
|
propertyTypeAnnotation.type === 'VoidTypeAnnotation'
|
|
288
336
|
) {
|
|
@@ -521,7 +569,7 @@ function buildSchema(
|
|
|
521
569
|
modules: {},
|
|
522
570
|
};
|
|
523
571
|
}
|
|
524
|
-
const ast = parser.getAst(contents);
|
|
572
|
+
const ast = parser.getAst(contents, filename);
|
|
525
573
|
const configType = getConfigType(ast, Visitor);
|
|
526
574
|
return buildSchemaFromConfigType(
|
|
527
575
|
configType,
|
|
@@ -714,6 +762,7 @@ function findNativeComponentType(statement, foundConfigs, parser) {
|
|
|
714
762
|
// expression so we need to go one level deeper
|
|
715
763
|
if (
|
|
716
764
|
declaration.type === 'TSAsExpression' ||
|
|
765
|
+
declaration.type === 'AsExpression' ||
|
|
717
766
|
declaration.type === 'TypeCastExpression'
|
|
718
767
|
) {
|
|
719
768
|
declaration = declaration.expression;
|