@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
|
@@ -11,69 +11,66 @@
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
13
|
import type {
|
|
14
|
-
|
|
14
|
+
EventTypeAnnotation,
|
|
15
|
+
EventTypeShape,
|
|
15
16
|
NamedShape,
|
|
16
17
|
NativeModuleAliasMap,
|
|
17
18
|
NativeModuleBaseTypeAnnotation,
|
|
18
|
-
|
|
19
|
-
NativeModuleTypeAnnotation,
|
|
19
|
+
NativeModuleEnumMap,
|
|
20
20
|
NativeModuleFunctionTypeAnnotation,
|
|
21
21
|
NativeModuleParamTypeAnnotation,
|
|
22
22
|
NativeModulePropertyShape,
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
NativeModuleSchema,
|
|
24
|
+
NativeModuleTypeAnnotation,
|
|
25
|
+
Nullable,
|
|
26
|
+
ObjectTypeAnnotation,
|
|
25
27
|
OptionsShape,
|
|
26
28
|
PropTypeAnnotation,
|
|
27
|
-
|
|
28
|
-
ObjectTypeAnnotation,
|
|
29
|
-
EventTypeShape,
|
|
29
|
+
SchemaType,
|
|
30
30
|
} from '../CodegenSchema.js';
|
|
31
|
-
|
|
32
|
-
import type {Parser} from './parser';
|
|
33
31
|
import type {ParserType} from './errors';
|
|
32
|
+
import type {Parser} from './parser';
|
|
33
|
+
import type {ComponentSchemaBuilderConfig} from './schema.js';
|
|
34
34
|
import type {
|
|
35
35
|
ParserErrorCapturer,
|
|
36
|
-
TypeDeclarationMap,
|
|
37
36
|
PropAST,
|
|
37
|
+
TypeDeclarationMap,
|
|
38
38
|
TypeResolutionStatus,
|
|
39
39
|
} from './utils';
|
|
40
|
-
import type {ComponentSchemaBuilderConfig} from './schema.js';
|
|
41
|
-
|
|
42
|
-
const {
|
|
43
|
-
getConfigType,
|
|
44
|
-
extractNativeModuleName,
|
|
45
|
-
createParserErrorCapturer,
|
|
46
|
-
visit,
|
|
47
|
-
isModuleRegistryCall,
|
|
48
|
-
verifyPlatforms,
|
|
49
|
-
} = require('./utils');
|
|
50
40
|
|
|
51
41
|
const {
|
|
52
|
-
|
|
53
|
-
throwIfUnsupportedFunctionParamTypeAnnotationParserError,
|
|
54
|
-
throwIfUnsupportedFunctionReturnTypeAnnotationParserError,
|
|
55
|
-
throwIfModuleTypeIsUnsupported,
|
|
56
|
-
throwIfUnusedModuleInterfaceParserError,
|
|
57
|
-
throwIfMoreThanOneModuleRegistryCalls,
|
|
58
|
-
throwIfWrongNumberOfCallExpressionArgs,
|
|
59
|
-
throwIfUntypedModule,
|
|
60
|
-
throwIfIncorrectModuleRegistryCallTypeParameterParserError,
|
|
42
|
+
throwIfConfigNotfound,
|
|
61
43
|
throwIfIncorrectModuleRegistryCallArgument,
|
|
62
|
-
|
|
63
|
-
throwIfMoreThanOneModuleInterfaceParserError,
|
|
44
|
+
throwIfIncorrectModuleRegistryCallTypeParameterParserError,
|
|
64
45
|
throwIfModuleInterfaceIsMisnamed,
|
|
46
|
+
throwIfModuleInterfaceNotFound,
|
|
47
|
+
throwIfModuleTypeIsUnsupported,
|
|
65
48
|
throwIfMoreThanOneCodegenNativecommands,
|
|
66
|
-
throwIfConfigNotfound,
|
|
67
49
|
throwIfMoreThanOneConfig,
|
|
50
|
+
throwIfMoreThanOneModuleInterfaceParserError,
|
|
51
|
+
throwIfMoreThanOneModuleRegistryCalls,
|
|
52
|
+
throwIfPropertyValueTypeIsUnsupported,
|
|
68
53
|
throwIfTypeAliasIsNotInterface,
|
|
54
|
+
throwIfUnsupportedFunctionParamTypeAnnotationParserError,
|
|
55
|
+
throwIfUnsupportedFunctionReturnTypeAnnotationParserError,
|
|
56
|
+
throwIfUntypedModule,
|
|
57
|
+
throwIfUnusedModuleInterfaceParserError,
|
|
58
|
+
throwIfWrongNumberOfCallExpressionArgs,
|
|
69
59
|
} = require('./error-utils');
|
|
70
|
-
|
|
71
60
|
const {
|
|
72
61
|
MissingTypeParameterGenericParserError,
|
|
73
62
|
MoreThanOneTypeParameterGenericParserError,
|
|
74
63
|
UnnamedFunctionParamParserError,
|
|
64
|
+
UnsupportedObjectDirectRecursivePropertyParserError,
|
|
75
65
|
} = require('./errors');
|
|
76
|
-
|
|
66
|
+
const {
|
|
67
|
+
createParserErrorCapturer,
|
|
68
|
+
extractNativeModuleName,
|
|
69
|
+
getConfigType,
|
|
70
|
+
isModuleRegistryCall,
|
|
71
|
+
verifyPlatforms,
|
|
72
|
+
visit,
|
|
73
|
+
} = require('./utils');
|
|
77
74
|
const invariant = require('invariant');
|
|
78
75
|
|
|
79
76
|
export type CommandOptions = $ReadOnly<{
|
|
@@ -175,6 +172,7 @@ function isObjectProperty(property: $FlowFixMe, language: ParserType): boolean {
|
|
|
175
172
|
}
|
|
176
173
|
|
|
177
174
|
function parseObjectProperty(
|
|
175
|
+
parentObject?: $FlowFixMe,
|
|
178
176
|
property: $FlowFixMe,
|
|
179
177
|
hasteModuleName: string,
|
|
180
178
|
types: TypeDeclarationMap,
|
|
@@ -195,6 +193,41 @@ function parseObjectProperty(
|
|
|
195
193
|
? property.typeAnnotation.typeAnnotation
|
|
196
194
|
: property.value;
|
|
197
195
|
|
|
196
|
+
// Handle recursive types
|
|
197
|
+
if (parentObject) {
|
|
198
|
+
const propertyType = parser.getResolveTypeAnnotationFN()(
|
|
199
|
+
languageTypeAnnotation,
|
|
200
|
+
types,
|
|
201
|
+
parser,
|
|
202
|
+
);
|
|
203
|
+
if (
|
|
204
|
+
propertyType.typeResolutionStatus.successful === true &&
|
|
205
|
+
propertyType.typeResolutionStatus.type === 'alias' &&
|
|
206
|
+
(language === 'TypeScript'
|
|
207
|
+
? parentObject.typeName &&
|
|
208
|
+
parentObject.typeName.name === languageTypeAnnotation.typeName?.name
|
|
209
|
+
: parentObject.id &&
|
|
210
|
+
parentObject.id.name === languageTypeAnnotation.id?.name)
|
|
211
|
+
) {
|
|
212
|
+
if (!optional) {
|
|
213
|
+
throw new UnsupportedObjectDirectRecursivePropertyParserError(
|
|
214
|
+
name,
|
|
215
|
+
languageTypeAnnotation,
|
|
216
|
+
hasteModuleName,
|
|
217
|
+
);
|
|
218
|
+
}
|
|
219
|
+
return {
|
|
220
|
+
name,
|
|
221
|
+
optional,
|
|
222
|
+
typeAnnotation: {
|
|
223
|
+
type: 'TypeAliasTypeAnnotation',
|
|
224
|
+
name: propertyType.typeResolutionStatus.name,
|
|
225
|
+
},
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// Handle non-recursive types
|
|
198
231
|
const [propertyTypeAnnotation, isPropertyNullable] =
|
|
199
232
|
unwrapNullable<$FlowFixMe>(
|
|
200
233
|
translateTypeAnnotation(
|
|
@@ -210,7 +243,7 @@ function parseObjectProperty(
|
|
|
210
243
|
);
|
|
211
244
|
|
|
212
245
|
if (
|
|
213
|
-
propertyTypeAnnotation.type === 'FunctionTypeAnnotation' ||
|
|
246
|
+
(propertyTypeAnnotation.type === 'FunctionTypeAnnotation' && !cxxOnly) ||
|
|
214
247
|
propertyTypeAnnotation.type === 'PromiseTypeAnnotation' ||
|
|
215
248
|
propertyTypeAnnotation.type === 'VoidTypeAnnotation'
|
|
216
249
|
) {
|
|
@@ -484,7 +517,7 @@ function buildSchema(
|
|
|
484
517
|
return {modules: {}};
|
|
485
518
|
}
|
|
486
519
|
|
|
487
|
-
const ast = parser.getAst(contents);
|
|
520
|
+
const ast = parser.getAst(contents, filename);
|
|
488
521
|
const configType = getConfigType(ast, Visitor);
|
|
489
522
|
|
|
490
523
|
return buildSchemaFromConfigType(
|
|
@@ -707,6 +740,7 @@ function findNativeComponentType(
|
|
|
707
740
|
// expression so we need to go one level deeper
|
|
708
741
|
if (
|
|
709
742
|
declaration.type === 'TSAsExpression' ||
|
|
743
|
+
declaration.type === 'AsExpression' ||
|
|
710
744
|
declaration.type === 'TypeCastExpression'
|
|
711
745
|
) {
|
|
712
746
|
declaration = declaration.expression;
|
|
@@ -78,26 +78,26 @@ function _iterableToArrayLimit(arr, i) {
|
|
|
78
78
|
function _arrayWithHoles(arr) {
|
|
79
79
|
if (Array.isArray(arr)) return arr;
|
|
80
80
|
}
|
|
81
|
-
const _require = require('./
|
|
82
|
-
UnsupportedUnionTypeAnnotationParserError =
|
|
83
|
-
_require.UnsupportedUnionTypeAnnotationParserError,
|
|
84
|
-
UnsupportedTypeAnnotationParserError =
|
|
85
|
-
_require.UnsupportedTypeAnnotationParserError,
|
|
86
|
-
ParserError = _require.ParserError;
|
|
87
|
-
const _require2 = require('./error-utils'),
|
|
81
|
+
const _require = require('./error-utils'),
|
|
88
82
|
throwIfArrayElementTypeAnnotationIsUnsupported =
|
|
89
|
-
|
|
83
|
+
_require.throwIfArrayElementTypeAnnotationIsUnsupported,
|
|
90
84
|
throwIfPartialNotAnnotatingTypeParameter =
|
|
91
|
-
|
|
92
|
-
throwIfPartialWithMoreParameter =
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
85
|
+
_require.throwIfPartialNotAnnotatingTypeParameter,
|
|
86
|
+
throwIfPartialWithMoreParameter = _require.throwIfPartialWithMoreParameter;
|
|
87
|
+
const _require2 = require('./errors'),
|
|
88
|
+
ParserError = _require2.ParserError,
|
|
89
|
+
UnsupportedTypeAnnotationParserError =
|
|
90
|
+
_require2.UnsupportedTypeAnnotationParserError,
|
|
91
|
+
UnsupportedUnionTypeAnnotationParserError =
|
|
92
|
+
_require2.UnsupportedUnionTypeAnnotationParserError;
|
|
93
|
+
const _require3 = require('./parsers-commons'),
|
|
96
94
|
assertGenericTypeAnnotationHasExactlyOneTypeParameter =
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
unwrapNullable =
|
|
100
|
-
|
|
95
|
+
_require3.assertGenericTypeAnnotationHasExactlyOneTypeParameter,
|
|
96
|
+
translateFunctionTypeAnnotation = _require3.translateFunctionTypeAnnotation,
|
|
97
|
+
unwrapNullable = _require3.unwrapNullable,
|
|
98
|
+
wrapNullable = _require3.wrapNullable;
|
|
99
|
+
const _require4 = require('./parsers-utils'),
|
|
100
|
+
nullGuard = _require4.nullGuard;
|
|
101
101
|
const _require5 = require('./utils'),
|
|
102
102
|
isModuleRegistryCall = _require5.isModuleRegistryCall;
|
|
103
103
|
function emitBoolean(nullable) {
|
|
@@ -11,57 +11,55 @@
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
13
|
import type {
|
|
14
|
-
Nullable,
|
|
15
14
|
BooleanTypeAnnotation,
|
|
16
15
|
DoubleTypeAnnotation,
|
|
17
16
|
EventTypeAnnotation,
|
|
18
17
|
Int32TypeAnnotation,
|
|
19
18
|
NamedShape,
|
|
20
19
|
NativeModuleAliasMap,
|
|
21
|
-
NativeModuleEnumMap,
|
|
22
20
|
NativeModuleBaseTypeAnnotation,
|
|
23
|
-
|
|
21
|
+
NativeModuleEnumDeclaration,
|
|
22
|
+
NativeModuleEnumMap,
|
|
24
23
|
NativeModuleFloatTypeAnnotation,
|
|
25
24
|
NativeModuleFunctionTypeAnnotation,
|
|
26
25
|
NativeModuleGenericObjectTypeAnnotation,
|
|
27
26
|
NativeModuleMixedTypeAnnotation,
|
|
28
27
|
NativeModuleNumberTypeAnnotation,
|
|
28
|
+
NativeModuleObjectTypeAnnotation,
|
|
29
29
|
NativeModulePromiseTypeAnnotation,
|
|
30
30
|
NativeModuleTypeAliasTypeAnnotation,
|
|
31
|
+
NativeModuleTypeAnnotation,
|
|
31
32
|
NativeModuleUnionTypeAnnotation,
|
|
33
|
+
Nullable,
|
|
32
34
|
ObjectTypeAnnotation,
|
|
33
35
|
ReservedTypeAnnotation,
|
|
34
36
|
StringTypeAnnotation,
|
|
35
37
|
VoidTypeAnnotation,
|
|
36
|
-
NativeModuleObjectTypeAnnotation,
|
|
37
|
-
NativeModuleEnumDeclaration,
|
|
38
38
|
} from '../CodegenSchema';
|
|
39
39
|
import type {Parser} from './parser';
|
|
40
40
|
import type {
|
|
41
41
|
ParserErrorCapturer,
|
|
42
|
-
TypeResolutionStatus,
|
|
43
42
|
TypeDeclarationMap,
|
|
43
|
+
TypeResolutionStatus,
|
|
44
44
|
} from './utils';
|
|
45
45
|
|
|
46
|
-
const {
|
|
47
|
-
UnsupportedUnionTypeAnnotationParserError,
|
|
48
|
-
UnsupportedTypeAnnotationParserError,
|
|
49
|
-
ParserError,
|
|
50
|
-
} = require('./errors');
|
|
51
|
-
|
|
52
46
|
const {
|
|
53
47
|
throwIfArrayElementTypeAnnotationIsUnsupported,
|
|
54
48
|
throwIfPartialNotAnnotatingTypeParameter,
|
|
55
49
|
throwIfPartialWithMoreParameter,
|
|
56
50
|
} = require('./error-utils');
|
|
57
|
-
const {
|
|
51
|
+
const {
|
|
52
|
+
ParserError,
|
|
53
|
+
UnsupportedTypeAnnotationParserError,
|
|
54
|
+
UnsupportedUnionTypeAnnotationParserError,
|
|
55
|
+
} = require('./errors');
|
|
58
56
|
const {
|
|
59
57
|
assertGenericTypeAnnotationHasExactlyOneTypeParameter,
|
|
60
|
-
wrapNullable,
|
|
61
|
-
unwrapNullable,
|
|
62
58
|
translateFunctionTypeAnnotation,
|
|
59
|
+
unwrapNullable,
|
|
60
|
+
wrapNullable,
|
|
63
61
|
} = require('./parsers-commons');
|
|
64
|
-
|
|
62
|
+
const {nullGuard} = require('./parsers-utils');
|
|
65
63
|
const {isModuleRegistryCall} = require('./utils');
|
|
66
64
|
|
|
67
65
|
function emitBoolean(nullable: boolean): Nullable<BooleanTypeAnnotation> {
|
|
@@ -11,13 +11,13 @@
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
13
|
import type {
|
|
14
|
+
CommandTypeAnnotation,
|
|
14
15
|
EventTypeShape,
|
|
16
|
+
ExtendsPropsShape,
|
|
15
17
|
NamedShape,
|
|
16
|
-
|
|
18
|
+
OptionsShape,
|
|
17
19
|
PropTypeAnnotation,
|
|
18
|
-
ExtendsPropsShape,
|
|
19
20
|
SchemaType,
|
|
20
|
-
OptionsShape,
|
|
21
21
|
} from '../CodegenSchema.js';
|
|
22
22
|
|
|
23
23
|
export type ComponentSchemaBuilderConfig = $ReadOnly<{
|
|
@@ -1094,13 +1094,20 @@ export type ScrollTo = (
|
|
|
1094
1094
|
y: Int,
|
|
1095
1095
|
animated: Boolean,
|
|
1096
1096
|
) => Void;
|
|
1097
|
+
export type AddOverlays = (
|
|
1098
|
+
viewRef: React.ElementRef<NativeType>,
|
|
1099
|
+
overlayColorsReadOnly: ReadOnlyArray<string>,
|
|
1100
|
+
overlayColorsArray: Array<string>,
|
|
1101
|
+
overlayColorsArrayAnnotation: string[],
|
|
1102
|
+
) => Void;
|
|
1097
1103
|
|
|
1098
1104
|
interface NativeCommands {
|
|
1099
1105
|
readonly scrollTo: ScrollTo;
|
|
1106
|
+
readonly addOverlays: AddOverlays;
|
|
1100
1107
|
}
|
|
1101
1108
|
|
|
1102
1109
|
export const Commands = codegenNativeCommands<NativeCommands>({
|
|
1103
|
-
supportedCommands: ['scrollTo'],
|
|
1110
|
+
supportedCommands: ['scrollTo', 'addOverlays'],
|
|
1104
1111
|
});
|
|
1105
1112
|
|
|
1106
1113
|
export default codegenNativeComponent<ModuleProps>('Module') as NativeType;
|
|
@@ -1108,13 +1108,20 @@ export type ScrollTo = (
|
|
|
1108
1108
|
y: Int,
|
|
1109
1109
|
animated: Boolean,
|
|
1110
1110
|
) => Void;
|
|
1111
|
+
export type AddOverlays = (
|
|
1112
|
+
viewRef: React.ElementRef<NativeType>,
|
|
1113
|
+
overlayColorsReadOnly: ReadOnlyArray<string>,
|
|
1114
|
+
overlayColorsArray: Array<string>,
|
|
1115
|
+
overlayColorsArrayAnnotation: string[],
|
|
1116
|
+
) => Void;
|
|
1111
1117
|
|
|
1112
1118
|
interface NativeCommands {
|
|
1113
1119
|
readonly scrollTo: ScrollTo;
|
|
1120
|
+
readonly addOverlays: AddOverlays;
|
|
1114
1121
|
}
|
|
1115
1122
|
|
|
1116
1123
|
export const Commands = codegenNativeCommands<NativeCommands>({
|
|
1117
|
-
supportedCommands: ['scrollTo'],
|
|
1124
|
+
supportedCommands: ['scrollTo', 'addOverlays'],
|
|
1118
1125
|
});
|
|
1119
1126
|
|
|
1120
1127
|
export default codegenNativeComponent<ModuleProps>('Module') as NativeType;
|
|
@@ -12,6 +12,8 @@
|
|
|
12
12
|
|
|
13
13
|
const _require = require('../parseTopLevelType'),
|
|
14
14
|
parseTopLevelType = _require.parseTopLevelType;
|
|
15
|
+
const _require2 = require('./componentsUtils'),
|
|
16
|
+
getPrimitiveTypeAnnotation = _require2.getPrimitiveTypeAnnotation;
|
|
15
17
|
|
|
16
18
|
// $FlowFixMe[unclear-type] there's no flowtype for ASTs
|
|
17
19
|
|
|
@@ -55,28 +57,34 @@ function buildCommandSchemaInternal(name, optional, parameters, types) {
|
|
|
55
57
|
};
|
|
56
58
|
break;
|
|
57
59
|
case 'TSBooleanKeyword':
|
|
58
|
-
returnType = {
|
|
59
|
-
type: 'BooleanTypeAnnotation',
|
|
60
|
-
};
|
|
61
|
-
break;
|
|
62
60
|
case 'Int32':
|
|
63
|
-
returnType = {
|
|
64
|
-
type: 'Int32TypeAnnotation',
|
|
65
|
-
};
|
|
66
|
-
break;
|
|
67
61
|
case 'Double':
|
|
68
|
-
returnType = {
|
|
69
|
-
type: 'DoubleTypeAnnotation',
|
|
70
|
-
};
|
|
71
|
-
break;
|
|
72
62
|
case 'Float':
|
|
63
|
+
case 'TSStringKeyword':
|
|
64
|
+
returnType = getPrimitiveTypeAnnotation(type);
|
|
65
|
+
break;
|
|
66
|
+
case 'Array':
|
|
67
|
+
case 'ReadOnlyArray':
|
|
68
|
+
if (!paramValue.type === 'TSTypeReference') {
|
|
69
|
+
throw new Error(
|
|
70
|
+
'Array and ReadOnlyArray are TSTypeReference for array',
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
73
|
returnType = {
|
|
74
|
-
type: '
|
|
74
|
+
type: 'ArrayTypeAnnotation',
|
|
75
|
+
elementType: getPrimitiveTypeAnnotation(
|
|
76
|
+
// TODO: T172453752 support complex type annotation for array element
|
|
77
|
+
paramValue.typeParameters.params[0].type,
|
|
78
|
+
),
|
|
75
79
|
};
|
|
76
80
|
break;
|
|
77
|
-
case '
|
|
81
|
+
case 'TSArrayType':
|
|
78
82
|
returnType = {
|
|
79
|
-
type: '
|
|
83
|
+
type: 'ArrayTypeAnnotation',
|
|
84
|
+
elementType: {
|
|
85
|
+
// TODO: T172453752 support complex type annotation for array element
|
|
86
|
+
type: getPrimitiveTypeAnnotation(paramValue.elementType.type).type,
|
|
87
|
+
},
|
|
80
88
|
};
|
|
81
89
|
break;
|
|
82
90
|
default:
|
|
@@ -11,11 +11,13 @@
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
13
|
import type {
|
|
14
|
-
NamedShape,
|
|
15
14
|
CommandTypeAnnotation,
|
|
15
|
+
NamedShape,
|
|
16
16
|
} from '../../../CodegenSchema.js';
|
|
17
17
|
import type {TypeDeclarationMap} from '../../utils';
|
|
18
|
+
|
|
18
19
|
const {parseTopLevelType} = require('../parseTopLevelType');
|
|
20
|
+
const {getPrimitiveTypeAnnotation} = require('./componentsUtils');
|
|
19
21
|
|
|
20
22
|
// $FlowFixMe[unclear-type] there's no flowtype for ASTs
|
|
21
23
|
type EventTypeAST = Object;
|
|
@@ -61,28 +63,34 @@ function buildCommandSchemaInternal(
|
|
|
61
63
|
};
|
|
62
64
|
break;
|
|
63
65
|
case 'TSBooleanKeyword':
|
|
64
|
-
returnType = {
|
|
65
|
-
type: 'BooleanTypeAnnotation',
|
|
66
|
-
};
|
|
67
|
-
break;
|
|
68
66
|
case 'Int32':
|
|
69
|
-
returnType = {
|
|
70
|
-
type: 'Int32TypeAnnotation',
|
|
71
|
-
};
|
|
72
|
-
break;
|
|
73
67
|
case 'Double':
|
|
74
|
-
returnType = {
|
|
75
|
-
type: 'DoubleTypeAnnotation',
|
|
76
|
-
};
|
|
77
|
-
break;
|
|
78
68
|
case 'Float':
|
|
69
|
+
case 'TSStringKeyword':
|
|
70
|
+
returnType = getPrimitiveTypeAnnotation(type);
|
|
71
|
+
break;
|
|
72
|
+
case 'Array':
|
|
73
|
+
case 'ReadOnlyArray':
|
|
74
|
+
if (!paramValue.type === 'TSTypeReference') {
|
|
75
|
+
throw new Error(
|
|
76
|
+
'Array and ReadOnlyArray are TSTypeReference for array',
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
79
|
returnType = {
|
|
80
|
-
type: '
|
|
80
|
+
type: 'ArrayTypeAnnotation',
|
|
81
|
+
elementType: getPrimitiveTypeAnnotation(
|
|
82
|
+
// TODO: T172453752 support complex type annotation for array element
|
|
83
|
+
paramValue.typeParameters.params[0].type,
|
|
84
|
+
),
|
|
81
85
|
};
|
|
82
86
|
break;
|
|
83
|
-
case '
|
|
87
|
+
case 'TSArrayType':
|
|
84
88
|
returnType = {
|
|
85
|
-
type: '
|
|
89
|
+
type: 'ArrayTypeAnnotation',
|
|
90
|
+
elementType: {
|
|
91
|
+
// TODO: T172453752 support complex type annotation for array element
|
|
92
|
+
type: getPrimitiveTypeAnnotation(paramValue.elementType.type).type,
|
|
93
|
+
},
|
|
86
94
|
};
|
|
87
95
|
break;
|
|
88
96
|
default:
|
|
@@ -10,11 +10,11 @@
|
|
|
10
10
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
-
const _require = require('
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
const _require = require('../../parsers-commons'),
|
|
14
|
+
verifyPropNotAlreadyDefined = _require.verifyPropNotAlreadyDefined;
|
|
15
|
+
const _require2 = require('../parseTopLevelType'),
|
|
16
|
+
flattenIntersectionType = _require2.flattenIntersectionType,
|
|
17
|
+
parseTopLevelType = _require2.parseTopLevelType;
|
|
18
18
|
function getUnionOfLiterals(name, forArray, elementTypes, defaultValue, types) {
|
|
19
19
|
var _elementTypes$0$liter, _elementTypes$0$liter2;
|
|
20
20
|
elementTypes.reduce((lastType, currType) => {
|
|
@@ -147,6 +147,33 @@ function buildObjectType(rawProperties, types, parser, buildSchema) {
|
|
|
147
147
|
properties,
|
|
148
148
|
};
|
|
149
149
|
}
|
|
150
|
+
function getPrimitiveTypeAnnotation(type) {
|
|
151
|
+
switch (type) {
|
|
152
|
+
case 'Int32':
|
|
153
|
+
return {
|
|
154
|
+
type: 'Int32TypeAnnotation',
|
|
155
|
+
};
|
|
156
|
+
case 'Double':
|
|
157
|
+
return {
|
|
158
|
+
type: 'DoubleTypeAnnotation',
|
|
159
|
+
};
|
|
160
|
+
case 'Float':
|
|
161
|
+
return {
|
|
162
|
+
type: 'FloatTypeAnnotation',
|
|
163
|
+
};
|
|
164
|
+
case 'TSBooleanKeyword':
|
|
165
|
+
return {
|
|
166
|
+
type: 'BooleanTypeAnnotation',
|
|
167
|
+
};
|
|
168
|
+
case 'Stringish':
|
|
169
|
+
case 'TSStringKeyword':
|
|
170
|
+
return {
|
|
171
|
+
type: 'StringTypeAnnotation',
|
|
172
|
+
};
|
|
173
|
+
default:
|
|
174
|
+
throw new Error(`Unknown primitive type "${type}"`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
150
177
|
function getCommonTypeAnnotation(
|
|
151
178
|
name,
|
|
152
179
|
forArray,
|
|
@@ -214,26 +241,12 @@ function getCommonTypeAnnotation(
|
|
|
214
241
|
types,
|
|
215
242
|
);
|
|
216
243
|
case 'Int32':
|
|
217
|
-
return {
|
|
218
|
-
type: 'Int32TypeAnnotation',
|
|
219
|
-
};
|
|
220
244
|
case 'Double':
|
|
221
|
-
return {
|
|
222
|
-
type: 'DoubleTypeAnnotation',
|
|
223
|
-
};
|
|
224
245
|
case 'Float':
|
|
225
|
-
return {
|
|
226
|
-
type: 'FloatTypeAnnotation',
|
|
227
|
-
};
|
|
228
246
|
case 'TSBooleanKeyword':
|
|
229
|
-
return {
|
|
230
|
-
type: 'BooleanTypeAnnotation',
|
|
231
|
-
};
|
|
232
247
|
case 'Stringish':
|
|
233
248
|
case 'TSStringKeyword':
|
|
234
|
-
return
|
|
235
|
-
type: 'StringTypeAnnotation',
|
|
236
|
-
};
|
|
249
|
+
return getPrimitiveTypeAnnotation(type);
|
|
237
250
|
case 'UnsafeMixed':
|
|
238
251
|
return {
|
|
239
252
|
type: 'MixedTypeAnnotation',
|
|
@@ -472,5 +485,6 @@ function flattenProperties(typeDefinition, types, parser) {
|
|
|
472
485
|
module.exports = {
|
|
473
486
|
getSchemaInfo,
|
|
474
487
|
getTypeAnnotation,
|
|
488
|
+
getPrimitiveTypeAnnotation,
|
|
475
489
|
flattenProperties,
|
|
476
490
|
};
|
|
@@ -9,13 +9,15 @@
|
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
'use strict';
|
|
12
|
+
|
|
13
|
+
import type {BuildSchemaFN, Parser} from '../../parser';
|
|
14
|
+
import type {ASTNode, PropAST, TypeDeclarationMap} from '../../utils';
|
|
15
|
+
|
|
16
|
+
const {verifyPropNotAlreadyDefined} = require('../../parsers-commons');
|
|
12
17
|
const {
|
|
13
|
-
parseTopLevelType,
|
|
14
18
|
flattenIntersectionType,
|
|
19
|
+
parseTopLevelType,
|
|
15
20
|
} = require('../parseTopLevelType');
|
|
16
|
-
const {verifyPropNotAlreadyDefined} = require('../../parsers-commons');
|
|
17
|
-
import type {TypeDeclarationMap, PropAST, ASTNode} from '../../utils';
|
|
18
|
-
import type {BuildSchemaFN, Parser} from '../../parser';
|
|
19
21
|
|
|
20
22
|
function getUnionOfLiterals(
|
|
21
23
|
name: string,
|
|
@@ -157,6 +159,34 @@ function buildObjectType<T>(
|
|
|
157
159
|
};
|
|
158
160
|
}
|
|
159
161
|
|
|
162
|
+
function getPrimitiveTypeAnnotation(type: string): $FlowFixMe {
|
|
163
|
+
switch (type) {
|
|
164
|
+
case 'Int32':
|
|
165
|
+
return {
|
|
166
|
+
type: 'Int32TypeAnnotation',
|
|
167
|
+
};
|
|
168
|
+
case 'Double':
|
|
169
|
+
return {
|
|
170
|
+
type: 'DoubleTypeAnnotation',
|
|
171
|
+
};
|
|
172
|
+
case 'Float':
|
|
173
|
+
return {
|
|
174
|
+
type: 'FloatTypeAnnotation',
|
|
175
|
+
};
|
|
176
|
+
case 'TSBooleanKeyword':
|
|
177
|
+
return {
|
|
178
|
+
type: 'BooleanTypeAnnotation',
|
|
179
|
+
};
|
|
180
|
+
case 'Stringish':
|
|
181
|
+
case 'TSStringKeyword':
|
|
182
|
+
return {
|
|
183
|
+
type: 'StringTypeAnnotation',
|
|
184
|
+
};
|
|
185
|
+
default:
|
|
186
|
+
throw new Error(`Unknown primitive type "${type}"`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
160
190
|
function getCommonTypeAnnotation<T>(
|
|
161
191
|
name: string,
|
|
162
192
|
forArray: boolean,
|
|
@@ -224,26 +254,12 @@ function getCommonTypeAnnotation<T>(
|
|
|
224
254
|
types,
|
|
225
255
|
);
|
|
226
256
|
case 'Int32':
|
|
227
|
-
return {
|
|
228
|
-
type: 'Int32TypeAnnotation',
|
|
229
|
-
};
|
|
230
257
|
case 'Double':
|
|
231
|
-
return {
|
|
232
|
-
type: 'DoubleTypeAnnotation',
|
|
233
|
-
};
|
|
234
258
|
case 'Float':
|
|
235
|
-
return {
|
|
236
|
-
type: 'FloatTypeAnnotation',
|
|
237
|
-
};
|
|
238
259
|
case 'TSBooleanKeyword':
|
|
239
|
-
return {
|
|
240
|
-
type: 'BooleanTypeAnnotation',
|
|
241
|
-
};
|
|
242
260
|
case 'Stringish':
|
|
243
261
|
case 'TSStringKeyword':
|
|
244
|
-
return
|
|
245
|
-
type: 'StringTypeAnnotation',
|
|
246
|
-
};
|
|
262
|
+
return getPrimitiveTypeAnnotation(type);
|
|
247
263
|
case 'UnsafeMixed':
|
|
248
264
|
return {
|
|
249
265
|
type: 'MixedTypeAnnotation',
|
|
@@ -512,5 +528,6 @@ function flattenProperties(
|
|
|
512
528
|
module.exports = {
|
|
513
529
|
getSchemaInfo,
|
|
514
530
|
getTypeAnnotation,
|
|
531
|
+
getPrimitiveTypeAnnotation,
|
|
515
532
|
flattenProperties,
|
|
516
533
|
};
|