@react-native/codegen 0.72.3 → 0.72.5
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/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/GenerateModuleH.js +1 -1
- package/lib/generators/modules/GenerateModuleH.js.flow +1 -1
- 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 +18 -113
- package/lib/parsers/flow/components/index.js.flow +15 -46
- 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 +41 -307
- package/lib/parsers/flow/modules/index.js.flow +18 -233
- package/lib/parsers/flow/parser.js +68 -12
- package/lib/parsers/flow/parser.js.flow +67 -3
- package/lib/parsers/parser.d.ts +2 -2
- package/lib/parsers/parser.js.flow +65 -3
- package/lib/parsers/parserMock.js +44 -0
- package/lib/parsers/parserMock.js.flow +52 -1
- package/lib/parsers/parsers-commons.js +361 -4
- package/lib/parsers/parsers-commons.js.flow +341 -4
- package/lib/parsers/parsers-primitives.js +119 -3
- package/lib/parsers/parsers-primitives.js.flow +128 -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 +20 -115
- package/lib/parsers/typescript/components/index.js.flow +17 -48
- package/lib/parsers/typescript/modules/index.js +103 -421
- package/lib/parsers/typescript/modules/index.js.flow +84 -285
- package/lib/parsers/typescript/parser.js +69 -12
- package/lib/parsers/typescript/parser.js.flow +68 -3
- package/lib/parsers/utils.js +4 -0
- package/lib/parsers/utils.js.flow +3 -0
- package/package.json +11 -11
- 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
package/lib/CodegenSchema.d.ts
CHANGED
|
@@ -47,7 +47,7 @@ export interface VoidTypeAnnotation {
|
|
|
47
47
|
export interface ObjectTypeAnnotation<T> {
|
|
48
48
|
readonly type: 'ObjectTypeAnnotation';
|
|
49
49
|
readonly properties: readonly NamedShape<T>[];
|
|
50
|
-
readonly baseTypes?: readonly string[];
|
|
50
|
+
readonly baseTypes?: readonly string[] | undefined;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
export interface FunctionTypeAnnotation<P, R> {
|
|
@@ -77,10 +77,10 @@ export interface ComponentShape extends OptionsShape {
|
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
export interface OptionsShape {
|
|
80
|
-
readonly interfaceOnly?: boolean;
|
|
81
|
-
readonly paperComponentName?: string;
|
|
82
|
-
readonly excludedPlatforms?: readonly PlatformType[];
|
|
83
|
-
readonly paperComponentNameDeprecated?: string;
|
|
80
|
+
readonly interfaceOnly?: boolean | undefined;
|
|
81
|
+
readonly paperComponentName?: string | undefined;
|
|
82
|
+
readonly excludedPlatforms?: readonly PlatformType[] | undefined;
|
|
83
|
+
readonly paperComponentNameDeprecated?: string | undefined;
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
export interface ExtendsPropsShape {
|
|
@@ -94,10 +94,10 @@ export interface EventTypeShape {
|
|
|
94
94
|
| 'direct'
|
|
95
95
|
| 'bubble';
|
|
96
96
|
readonly optional: boolean;
|
|
97
|
-
readonly paperTopLevelNameDeprecated?: string;
|
|
97
|
+
readonly paperTopLevelNameDeprecated?: string | undefined;
|
|
98
98
|
readonly typeAnnotation: {
|
|
99
99
|
readonly type: 'EventTypeAnnotation';
|
|
100
|
-
readonly argument?: ObjectTypeAnnotation<EventTypeAnnotation
|
|
100
|
+
readonly argument?: ObjectTypeAnnotation<EventTypeAnnotation> | undefined;
|
|
101
101
|
};
|
|
102
102
|
}
|
|
103
103
|
|
|
@@ -211,7 +211,7 @@ export interface NativeModuleSchema {
|
|
|
211
211
|
readonly enumMap: NativeModuleEnumMap;
|
|
212
212
|
readonly spec: NativeModuleSpec;
|
|
213
213
|
readonly moduleName: string;
|
|
214
|
-
readonly excludedPlatforms?: readonly PlatformType[];
|
|
214
|
+
readonly excludedPlatforms?: readonly PlatformType[] | undefined;
|
|
215
215
|
}
|
|
216
216
|
|
|
217
217
|
export interface NativeModuleSpec {
|
|
@@ -234,7 +234,7 @@ export type NativeModuleObjectTypeAnnotation = ObjectTypeAnnotation<Nullable<Nat
|
|
|
234
234
|
|
|
235
235
|
export interface NativeModuleArrayTypeAnnotation<T extends Nullable<NativeModuleBaseTypeAnnotation>> {
|
|
236
236
|
readonly type: 'ArrayTypeAnnotation';
|
|
237
|
-
readonly elementType?: T;
|
|
237
|
+
readonly elementType?: T | undefined;
|
|
238
238
|
}
|
|
239
239
|
|
|
240
240
|
export interface NativeModuleStringTypeAnnotation {
|
|
@@ -294,7 +294,7 @@ export interface NativeModuleTypeAliasTypeAnnotation {
|
|
|
294
294
|
|
|
295
295
|
export interface NativeModulePromiseTypeAnnotation {
|
|
296
296
|
readonly type: 'PromiseTypeAnnotation';
|
|
297
|
-
readonly elementType?: Nullable<NativeModuleBaseTypeAnnotation
|
|
297
|
+
readonly elementType?: Nullable<NativeModuleBaseTypeAnnotation> | undefined;
|
|
298
298
|
}
|
|
299
299
|
|
|
300
300
|
export type UnionTypeAnnotationMemberType =
|
|
@@ -58,6 +58,10 @@ export type ObjectTypeAnnotation<+T> = $ReadOnly<{
|
|
|
58
58
|
baseTypes?: $ReadOnlyArray<string>,
|
|
59
59
|
}>;
|
|
60
60
|
|
|
61
|
+
export type MixedTypeAnnotation = $ReadOnly<{
|
|
62
|
+
type: 'MixedTypeAnnotation',
|
|
63
|
+
}>;
|
|
64
|
+
|
|
61
65
|
type FunctionTypeAnnotation<+P, +R> = $ReadOnly<{
|
|
62
66
|
type: 'FunctionTypeAnnotation',
|
|
63
67
|
params: $ReadOnlyArray<NamedShape<P>>,
|
|
@@ -177,7 +181,8 @@ export type PropTypeAnnotation =
|
|
|
177
181
|
type: 'ArrayTypeAnnotation',
|
|
178
182
|
elementType: ObjectTypeAnnotation<PropTypeAnnotation>,
|
|
179
183
|
}>,
|
|
180
|
-
}
|
|
184
|
+
}>
|
|
185
|
+
| MixedTypeAnnotation;
|
|
181
186
|
|
|
182
187
|
export type ReservedPropTypeAnnotation = $ReadOnly<{
|
|
183
188
|
type: 'ReservedPropTypeAnnotation',
|
package/lib/SchemaValidator.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import type { SchemaType } from
|
|
8
|
+
import type { SchemaType } from './CodegenSchema';
|
|
9
9
|
|
|
10
10
|
export declare function getErrors(schema: SchemaType): readonly string[];
|
|
11
11
|
export declare function validate(schema: SchemaType): void;
|
|
@@ -0,0 +1,98 @@
|
|
|
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
|
+
import type { SchemaType } from '../CodegenSchema';
|
|
9
|
+
|
|
10
|
+
export type FilesOutput = Map<string, string>;
|
|
11
|
+
export type LibraryGeneratorFunction = (libraryName: string, schema: SchemaType, packageName: string | undefined, assumeNonnull: boolean) => FilesOutput;
|
|
12
|
+
export type SchemaGeneratorFunction = (schemas: { [key: string]: SchemaType }) => FilesOutput;
|
|
13
|
+
export type ViewGeneratorFunction = (libraryName: string, schema: SchemaType) => FilesOutput;
|
|
14
|
+
|
|
15
|
+
type LibraryGeneratorNames =
|
|
16
|
+
| 'generateComponentDescriptorH'
|
|
17
|
+
| 'generateComponentHObjCpp'
|
|
18
|
+
| 'generateEventEmitterCpp'
|
|
19
|
+
| 'generateEventEmitterH'
|
|
20
|
+
| 'generatePropsCpp'
|
|
21
|
+
| 'generatePropsH'
|
|
22
|
+
| 'generateStateCpp'
|
|
23
|
+
| 'generateStateH'
|
|
24
|
+
| 'generateModuleH'
|
|
25
|
+
| 'generateModuleCpp'
|
|
26
|
+
| 'generateModuleObjCpp'
|
|
27
|
+
| 'generateModuleJavaSpec'
|
|
28
|
+
| 'generateModuleJniCpp'
|
|
29
|
+
| 'generateModuleJniH'
|
|
30
|
+
| 'generatePropsJavaInterface'
|
|
31
|
+
| 'generatePropsJavaDelegate'
|
|
32
|
+
| 'generateTests'
|
|
33
|
+
| 'generateShadowNodeCpp'
|
|
34
|
+
| 'generateShadowNodeH'
|
|
35
|
+
;
|
|
36
|
+
|
|
37
|
+
type SchemaGeneratorNames =
|
|
38
|
+
| 'generateThirdPartyFabricComponentsProviderObjCpp'
|
|
39
|
+
| 'generateThirdPartyFabricComponentsProviderH'
|
|
40
|
+
;
|
|
41
|
+
|
|
42
|
+
type ViewGeneratorNames =
|
|
43
|
+
| 'generateViewConfigJs'
|
|
44
|
+
;
|
|
45
|
+
|
|
46
|
+
export type AllGenerators =
|
|
47
|
+
& { readonly [key in LibraryGeneratorNames]: LibraryGeneratorFunction; }
|
|
48
|
+
& { readonly [key in SchemaGeneratorNames]: SchemaGeneratorFunction; }
|
|
49
|
+
& { readonly [key in ViewGeneratorNames]: ViewGeneratorFunction; }
|
|
50
|
+
;
|
|
51
|
+
|
|
52
|
+
export type LibraryGenerators =
|
|
53
|
+
| 'componentsAndroid'
|
|
54
|
+
| 'componentsIOS'
|
|
55
|
+
| 'descriptors'
|
|
56
|
+
| 'events'
|
|
57
|
+
| 'props'
|
|
58
|
+
| 'states'
|
|
59
|
+
| 'tests'
|
|
60
|
+
| 'shadow-nodes'
|
|
61
|
+
| 'modulesAndroid'
|
|
62
|
+
| 'modulesCxx'
|
|
63
|
+
| 'modulesIOS'
|
|
64
|
+
;
|
|
65
|
+
|
|
66
|
+
export type SchemaGenerators =
|
|
67
|
+
| 'providerIOS'
|
|
68
|
+
;
|
|
69
|
+
|
|
70
|
+
export interface LibraryOptions {
|
|
71
|
+
libraryName: string;
|
|
72
|
+
schema: SchemaType;
|
|
73
|
+
outputDirectory: string;
|
|
74
|
+
packageName?: string | undefined;
|
|
75
|
+
assumeNonnull: boolean;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export interface LibraryConfig {
|
|
79
|
+
generators: LibraryGenerators[];
|
|
80
|
+
test?: boolean | undefined;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export interface SchemasOptions {
|
|
84
|
+
schemas: { [key: string]: SchemaType };
|
|
85
|
+
outputDirectory: string;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export interface SchemasConfig {
|
|
89
|
+
generators: SchemaGenerators[];
|
|
90
|
+
test?: boolean | undefined;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export declare const allGenerators: AllGenerators;
|
|
94
|
+
export declare const libraryGenerators: { readonly [key in LibraryGenerators]: LibraryGeneratorFunction };
|
|
95
|
+
export declare const schemaGenerators: { readonly [key in SchemaGenerators]: SchemaGeneratorFunction };
|
|
96
|
+
export declare function generate(options: LibraryOptions, config: LibraryConfig): boolean;
|
|
97
|
+
export declare function generateFromSchemas(options: SchemasOptions, config: SchemasConfig): boolean;
|
|
98
|
+
export declare function generateViewConfig(options: LibraryOptions): string;
|
|
@@ -28,8 +28,8 @@ const generateModuleH = require('./modules/GenerateModuleH.js');
|
|
|
28
28
|
const generateModuleCpp = require('./modules/GenerateModuleCpp.js');
|
|
29
29
|
const generateModuleObjCpp = require('./modules/GenerateModuleObjCpp');
|
|
30
30
|
const generateModuleJavaSpec = require('./modules/GenerateModuleJavaSpec.js');
|
|
31
|
-
const
|
|
32
|
-
const
|
|
31
|
+
const generateModuleJniCpp = require('./modules/GenerateModuleJniCpp.js');
|
|
32
|
+
const generateModuleJniH = require('./modules/GenerateModuleJniH.js');
|
|
33
33
|
const generatePropsJavaInterface = require('./components/GeneratePropsJavaInterface.js');
|
|
34
34
|
const generatePropsJavaDelegate = require('./components/GeneratePropsJavaDelegate.js');
|
|
35
35
|
const generateTests = require('./components/GenerateTests.js');
|
|
@@ -40,6 +40,32 @@ const generateThirdPartyFabricComponentsProviderH = require('./components/Genera
|
|
|
40
40
|
const generateViewConfigJs = require('./components/GenerateViewConfigJs.js');
|
|
41
41
|
const path = require('path');
|
|
42
42
|
const schemaValidator = require('../SchemaValidator.js');
|
|
43
|
+
const ALL_GENERATORS = {
|
|
44
|
+
generateComponentDescriptorH: generateComponentDescriptorH.generate,
|
|
45
|
+
generateComponentHObjCpp: generateComponentHObjCpp.generate,
|
|
46
|
+
generateEventEmitterCpp: generateEventEmitterCpp.generate,
|
|
47
|
+
generateEventEmitterH: generateEventEmitterH.generate,
|
|
48
|
+
generatePropsCpp: generatePropsCpp.generate,
|
|
49
|
+
generatePropsH: generatePropsH.generate,
|
|
50
|
+
generateStateCpp: generateStateCpp.generate,
|
|
51
|
+
generateStateH: generateStateH.generate,
|
|
52
|
+
generateModuleH: generateModuleH.generate,
|
|
53
|
+
generateModuleCpp: generateModuleCpp.generate,
|
|
54
|
+
generateModuleObjCpp: generateModuleObjCpp.generate,
|
|
55
|
+
generateModuleJavaSpec: generateModuleJavaSpec.generate,
|
|
56
|
+
generateModuleJniCpp: generateModuleJniCpp.generate,
|
|
57
|
+
generateModuleJniH: generateModuleJniH.generate,
|
|
58
|
+
generatePropsJavaInterface: generatePropsJavaInterface.generate,
|
|
59
|
+
generatePropsJavaDelegate: generatePropsJavaDelegate.generate,
|
|
60
|
+
generateTests: generateTests.generate,
|
|
61
|
+
generateShadowNodeCpp: generateShadowNodeCpp.generate,
|
|
62
|
+
generateShadowNodeH: generateShadowNodeH.generate,
|
|
63
|
+
generateThirdPartyFabricComponentsProviderObjCpp:
|
|
64
|
+
generateThirdPartyFabricComponentsProviderObjCpp.generate,
|
|
65
|
+
generateThirdPartyFabricComponentsProviderH:
|
|
66
|
+
generateThirdPartyFabricComponentsProviderH.generate,
|
|
67
|
+
generateViewConfigJs: generateViewConfigJs.generate,
|
|
68
|
+
};
|
|
43
69
|
const LIBRARY_GENERATORS = {
|
|
44
70
|
descriptors: [generateComponentDescriptorH.generate],
|
|
45
71
|
events: [generateEventEmitterCpp.generate, generateEventEmitterH.generate],
|
|
@@ -80,8 +106,8 @@ const LIBRARY_GENERATORS = {
|
|
|
80
106
|
generateShadowNodeH.generate,
|
|
81
107
|
],
|
|
82
108
|
modulesAndroid: [
|
|
83
|
-
|
|
84
|
-
|
|
109
|
+
generateModuleJniCpp.generate,
|
|
110
|
+
generateModuleJniH.generate,
|
|
85
111
|
generateModuleJavaSpec.generate,
|
|
86
112
|
],
|
|
87
113
|
modulesCxx: [generateModuleCpp.generate, generateModuleH.generate],
|
|
@@ -136,6 +162,9 @@ function checkOrWriteFiles(generatedFiles, test) {
|
|
|
136
162
|
return writeMapToFiles(generatedFiles);
|
|
137
163
|
}
|
|
138
164
|
module.exports = {
|
|
165
|
+
allGenerators: ALL_GENERATORS,
|
|
166
|
+
libraryGenerators: LIBRARY_GENERATORS,
|
|
167
|
+
schemaGenerators: SCHEMAS_GENERATORS,
|
|
139
168
|
generate(
|
|
140
169
|
{libraryName, schema, outputDirectory, packageName, assumeNonnull},
|
|
141
170
|
{generators, test},
|
|
@@ -29,8 +29,8 @@ const generateModuleH = require('./modules/GenerateModuleH.js');
|
|
|
29
29
|
const generateModuleCpp = require('./modules/GenerateModuleCpp.js');
|
|
30
30
|
const generateModuleObjCpp = require('./modules/GenerateModuleObjCpp');
|
|
31
31
|
const generateModuleJavaSpec = require('./modules/GenerateModuleJavaSpec.js');
|
|
32
|
-
const
|
|
33
|
-
const
|
|
32
|
+
const generateModuleJniCpp = require('./modules/GenerateModuleJniCpp.js');
|
|
33
|
+
const generateModuleJniH = require('./modules/GenerateModuleJniH.js');
|
|
34
34
|
const generatePropsJavaInterface = require('./components/GeneratePropsJavaInterface.js');
|
|
35
35
|
const generatePropsJavaDelegate = require('./components/GeneratePropsJavaDelegate.js');
|
|
36
36
|
const generateTests = require('./components/GenerateTests.js');
|
|
@@ -42,6 +42,33 @@ const generateViewConfigJs = require('./components/GenerateViewConfigJs.js');
|
|
|
42
42
|
const path = require('path');
|
|
43
43
|
const schemaValidator = require('../SchemaValidator.js');
|
|
44
44
|
|
|
45
|
+
const ALL_GENERATORS = {
|
|
46
|
+
generateComponentDescriptorH: generateComponentDescriptorH.generate,
|
|
47
|
+
generateComponentHObjCpp: generateComponentHObjCpp.generate,
|
|
48
|
+
generateEventEmitterCpp: generateEventEmitterCpp.generate,
|
|
49
|
+
generateEventEmitterH: generateEventEmitterH.generate,
|
|
50
|
+
generatePropsCpp: generatePropsCpp.generate,
|
|
51
|
+
generatePropsH: generatePropsH.generate,
|
|
52
|
+
generateStateCpp: generateStateCpp.generate,
|
|
53
|
+
generateStateH: generateStateH.generate,
|
|
54
|
+
generateModuleH: generateModuleH.generate,
|
|
55
|
+
generateModuleCpp: generateModuleCpp.generate,
|
|
56
|
+
generateModuleObjCpp: generateModuleObjCpp.generate,
|
|
57
|
+
generateModuleJavaSpec: generateModuleJavaSpec.generate,
|
|
58
|
+
generateModuleJniCpp: generateModuleJniCpp.generate,
|
|
59
|
+
generateModuleJniH: generateModuleJniH.generate,
|
|
60
|
+
generatePropsJavaInterface: generatePropsJavaInterface.generate,
|
|
61
|
+
generatePropsJavaDelegate: generatePropsJavaDelegate.generate,
|
|
62
|
+
generateTests: generateTests.generate,
|
|
63
|
+
generateShadowNodeCpp: generateShadowNodeCpp.generate,
|
|
64
|
+
generateShadowNodeH: generateShadowNodeH.generate,
|
|
65
|
+
generateThirdPartyFabricComponentsProviderObjCpp:
|
|
66
|
+
generateThirdPartyFabricComponentsProviderObjCpp.generate,
|
|
67
|
+
generateThirdPartyFabricComponentsProviderH:
|
|
68
|
+
generateThirdPartyFabricComponentsProviderH.generate,
|
|
69
|
+
generateViewConfigJs: generateViewConfigJs.generate,
|
|
70
|
+
};
|
|
71
|
+
|
|
45
72
|
import type {SchemaType} from '../CodegenSchema';
|
|
46
73
|
|
|
47
74
|
type LibraryOptions = $ReadOnly<{
|
|
@@ -122,8 +149,8 @@ const LIBRARY_GENERATORS = {
|
|
|
122
149
|
generateShadowNodeH.generate,
|
|
123
150
|
],
|
|
124
151
|
modulesAndroid: [
|
|
125
|
-
|
|
126
|
-
|
|
152
|
+
generateModuleJniCpp.generate,
|
|
153
|
+
generateModuleJniH.generate,
|
|
127
154
|
generateModuleJavaSpec.generate,
|
|
128
155
|
],
|
|
129
156
|
modulesCxx: [generateModuleCpp.generate, generateModuleH.generate],
|
|
@@ -194,6 +221,10 @@ function checkOrWriteFiles(
|
|
|
194
221
|
}
|
|
195
222
|
|
|
196
223
|
module.exports = {
|
|
224
|
+
allGenerators: ALL_GENERATORS,
|
|
225
|
+
libraryGenerators: LIBRARY_GENERATORS,
|
|
226
|
+
schemaGenerators: SCHEMAS_GENERATORS,
|
|
227
|
+
|
|
197
228
|
generate(
|
|
198
229
|
{
|
|
199
230
|
libraryName,
|
|
@@ -84,6 +84,8 @@ function getNativeTypeFromAnnotation(componentName, prop, nameParts) {
|
|
|
84
84
|
return getEnumName(componentName, prop.name);
|
|
85
85
|
case 'Int32EnumTypeAnnotation':
|
|
86
86
|
return getEnumName(componentName, prop.name);
|
|
87
|
+
case 'MixedTypeAnnotation':
|
|
88
|
+
return 'folly::dynamic';
|
|
87
89
|
default:
|
|
88
90
|
typeAnnotation;
|
|
89
91
|
throw new Error(
|
|
@@ -122,6 +122,8 @@ function getNativeTypeFromAnnotation(
|
|
|
122
122
|
return getEnumName(componentName, prop.name);
|
|
123
123
|
case 'Int32EnumTypeAnnotation':
|
|
124
124
|
return getEnumName(componentName, prop.name);
|
|
125
|
+
case 'MixedTypeAnnotation':
|
|
126
|
+
return 'folly::dynamic';
|
|
125
127
|
default:
|
|
126
128
|
(typeAnnotation: empty);
|
|
127
129
|
throw new Error(
|
|
@@ -165,6 +165,8 @@ function convertDefaultTypeToString(componentName, prop) {
|
|
|
165
165
|
prop.name,
|
|
166
166
|
typeAnnotation.default,
|
|
167
167
|
)}`;
|
|
168
|
+
case 'MixedTypeAnnotation':
|
|
169
|
+
return '';
|
|
168
170
|
default:
|
|
169
171
|
typeAnnotation;
|
|
170
172
|
throw new Error(`Unsupported type annotation: ${typeAnnotation.type}`);
|
|
@@ -200,6 +200,8 @@ function convertDefaultTypeToString(
|
|
|
200
200
|
prop.name,
|
|
201
201
|
typeAnnotation.default,
|
|
202
202
|
)}`;
|
|
203
|
+
case 'MixedTypeAnnotation':
|
|
204
|
+
return '';
|
|
203
205
|
default:
|
|
204
206
|
(typeAnnotation: empty);
|
|
205
207
|
throw new Error(`Unsupported type annotation: ${typeAnnotation.type}`);
|
|
@@ -522,6 +522,8 @@ function generateStruct(structs, componentName, nameParts, properties) {
|
|
|
522
522
|
}
|
|
523
523
|
generateStruct(structs, componentName, nameParts.concat([name]), props);
|
|
524
524
|
return;
|
|
525
|
+
case 'MixedTypeAnnotation':
|
|
526
|
+
return;
|
|
525
527
|
default:
|
|
526
528
|
property.typeAnnotation.type;
|
|
527
529
|
throw new Error(
|
|
@@ -120,6 +120,8 @@ function getJavaValueForProp(prop, componentName) {
|
|
|
120
120
|
return '(String) value';
|
|
121
121
|
case 'Int32EnumTypeAnnotation':
|
|
122
122
|
return `value == null ? ${typeAnnotation.default} : ((Double) value).intValue()`;
|
|
123
|
+
case 'MixedTypeAnnotation':
|
|
124
|
+
return 'new DynamicFromObject(value)';
|
|
123
125
|
default:
|
|
124
126
|
typeAnnotation;
|
|
125
127
|
throw new Error('Received invalid typeAnnotation');
|
|
@@ -144,6 +144,8 @@ function getJavaValueForProp(
|
|
|
144
144
|
return '(String) value';
|
|
145
145
|
case 'Int32EnumTypeAnnotation':
|
|
146
146
|
return `value == null ? ${typeAnnotation.default} : ((Double) value).intValue()`;
|
|
147
|
+
case 'MixedTypeAnnotation':
|
|
148
|
+
return 'new DynamicFromObject(value)';
|
|
147
149
|
default:
|
|
148
150
|
(typeAnnotation: empty);
|
|
149
151
|
throw new Error('Received invalid typeAnnotation');
|
|
@@ -105,6 +105,8 @@ function getJavaValueForProp(prop, imports) {
|
|
|
105
105
|
case 'Int32EnumTypeAnnotation':
|
|
106
106
|
addNullable(imports);
|
|
107
107
|
return '@Nullable Integer value';
|
|
108
|
+
case 'MixedTypeAnnotation':
|
|
109
|
+
return 'Dynamic value';
|
|
108
110
|
default:
|
|
109
111
|
typeAnnotation;
|
|
110
112
|
throw new Error('Received invalid typeAnnotation');
|
|
@@ -127,6 +127,8 @@ function getJavaValueForProp(
|
|
|
127
127
|
case 'Int32EnumTypeAnnotation':
|
|
128
128
|
addNullable(imports);
|
|
129
129
|
return '@Nullable Integer value';
|
|
130
|
+
case 'MixedTypeAnnotation':
|
|
131
|
+
return 'Dynamic value';
|
|
130
132
|
default:
|
|
131
133
|
(typeAnnotation: empty);
|
|
132
134
|
throw new Error('Received invalid typeAnnotation');
|
|
@@ -20,6 +20,7 @@ import type {
|
|
|
20
20
|
FloatTypeAnnotation,
|
|
21
21
|
Int32TypeAnnotation,
|
|
22
22
|
PropTypeAnnotation,
|
|
23
|
+
MixedTypeAnnotation,
|
|
23
24
|
} from '../../../CodegenSchema';
|
|
24
25
|
|
|
25
26
|
const {capitalize} = require('../../Utils');
|
|
@@ -89,7 +90,8 @@ export type PojoTypeAnnotation =
|
|
|
89
90
|
type: 'ArrayTypeAnnotation',
|
|
90
91
|
elementType: PojoTypeAliasAnnotation,
|
|
91
92
|
}>,
|
|
92
|
-
}
|
|
93
|
+
}>
|
|
94
|
+
| MixedTypeAnnotation;
|
|
93
95
|
|
|
94
96
|
class PojoCollector {
|
|
95
97
|
_pojos: Map<string, Pojo> = new Map();
|
|
@@ -18,6 +18,7 @@ function toJavaType(typeAnnotation, addImport) {
|
|
|
18
18
|
addImport('com.facebook.react.bridge.ReadableMap');
|
|
19
19
|
const importArrayList = () => addImport('java.util.ArrayList');
|
|
20
20
|
const importYogaValue = () => addImport('com.facebook.yoga.YogaValue');
|
|
21
|
+
const importDynamic = () => addImport('com.facebook.react.bridge.Dynamic');
|
|
21
22
|
switch (typeAnnotation.type) {
|
|
22
23
|
/**
|
|
23
24
|
* Primitives
|
|
@@ -208,6 +209,10 @@ function toJavaType(typeAnnotation, addImport) {
|
|
|
208
209
|
importArrayList();
|
|
209
210
|
return `ArrayList<${elementTypeString}>`;
|
|
210
211
|
}
|
|
212
|
+
case 'MixedTypeAnnotation': {
|
|
213
|
+
importDynamic();
|
|
214
|
+
return 'Dynamic';
|
|
215
|
+
}
|
|
211
216
|
default: {
|
|
212
217
|
typeAnnotation.type;
|
|
213
218
|
throw new Error(
|
|
@@ -24,6 +24,7 @@ function toJavaType(
|
|
|
24
24
|
addImport('com.facebook.react.bridge.ReadableMap');
|
|
25
25
|
const importArrayList = () => addImport('java.util.ArrayList');
|
|
26
26
|
const importYogaValue = () => addImport('com.facebook.yoga.YogaValue');
|
|
27
|
+
const importDynamic = () => addImport('com.facebook.react.bridge.Dynamic');
|
|
27
28
|
switch (typeAnnotation.type) {
|
|
28
29
|
/**
|
|
29
30
|
* Primitives
|
|
@@ -222,6 +223,11 @@ function toJavaType(
|
|
|
222
223
|
return `ArrayList<${elementTypeString}>`;
|
|
223
224
|
}
|
|
224
225
|
|
|
226
|
+
case 'MixedTypeAnnotation': {
|
|
227
|
+
importDynamic();
|
|
228
|
+
return 'Dynamic';
|
|
229
|
+
}
|
|
230
|
+
|
|
225
231
|
default: {
|
|
226
232
|
(typeAnnotation.type: empty);
|
|
227
233
|
throw new Error(
|
|
@@ -46,6 +46,7 @@ function getReactDiffProcessValue(typeAnnotation) {
|
|
|
46
46
|
case 'ObjectTypeAnnotation':
|
|
47
47
|
case 'StringEnumTypeAnnotation':
|
|
48
48
|
case 'Int32EnumTypeAnnotation':
|
|
49
|
+
case 'MixedTypeAnnotation':
|
|
49
50
|
return j.literal(true);
|
|
50
51
|
case 'ReservedPropTypeAnnotation':
|
|
51
52
|
switch (typeAnnotation.name) {
|
|
@@ -60,6 +60,7 @@ function getReactDiffProcessValue(typeAnnotation: PropTypeAnnotation) {
|
|
|
60
60
|
case 'ObjectTypeAnnotation':
|
|
61
61
|
case 'StringEnumTypeAnnotation':
|
|
62
62
|
case 'Int32EnumTypeAnnotation':
|
|
63
|
+
case 'MixedTypeAnnotation':
|
|
63
64
|
return j.literal(true);
|
|
64
65
|
case 'ReservedPropTypeAnnotation':
|
|
65
66
|
switch (typeAnnotation.name) {
|
|
@@ -85,6 +85,13 @@ function getImports(component, type) {
|
|
|
85
85
|
if (typeAnnotation.type === 'ObjectTypeAnnotation') {
|
|
86
86
|
imports.add('import com.facebook.react.bridge.ReadableMap;');
|
|
87
87
|
}
|
|
88
|
+
if (typeAnnotation.type === 'MixedTypeAnnotation') {
|
|
89
|
+
if (type === 'delegate') {
|
|
90
|
+
imports.add('import com.facebook.react.bridge.DynamicFromObject;');
|
|
91
|
+
} else {
|
|
92
|
+
imports.add('import com.facebook.react.bridge.Dynamic;');
|
|
93
|
+
}
|
|
94
|
+
}
|
|
88
95
|
});
|
|
89
96
|
return imports;
|
|
90
97
|
}
|
|
@@ -117,6 +117,14 @@ function getImports(
|
|
|
117
117
|
if (typeAnnotation.type === 'ObjectTypeAnnotation') {
|
|
118
118
|
imports.add('import com.facebook.react.bridge.ReadableMap;');
|
|
119
119
|
}
|
|
120
|
+
|
|
121
|
+
if (typeAnnotation.type === 'MixedTypeAnnotation') {
|
|
122
|
+
if (type === 'delegate') {
|
|
123
|
+
imports.add('import com.facebook.react.bridge.DynamicFromObject;');
|
|
124
|
+
} else {
|
|
125
|
+
imports.add('import com.facebook.react.bridge.Dynamic;');
|
|
126
|
+
}
|
|
127
|
+
}
|
|
120
128
|
});
|
|
121
129
|
|
|
122
130
|
return imports;
|
|
@@ -1102,6 +1102,34 @@ const INT32_ENUM_PROP = {
|
|
|
1102
1102
|
},
|
|
1103
1103
|
},
|
|
1104
1104
|
};
|
|
1105
|
+
const MIXED_PROP = {
|
|
1106
|
+
modules: {
|
|
1107
|
+
CustomView: {
|
|
1108
|
+
type: 'Component',
|
|
1109
|
+
components: {
|
|
1110
|
+
MixedPropNativeComponent: {
|
|
1111
|
+
extendsProps: [
|
|
1112
|
+
{
|
|
1113
|
+
type: 'ReactNativeBuiltInType',
|
|
1114
|
+
knownTypeName: 'ReactNativeCoreViewProps',
|
|
1115
|
+
},
|
|
1116
|
+
],
|
|
1117
|
+
events: [],
|
|
1118
|
+
props: [
|
|
1119
|
+
{
|
|
1120
|
+
name: 'mixedProp',
|
|
1121
|
+
optional: false,
|
|
1122
|
+
typeAnnotation: {
|
|
1123
|
+
type: 'MixedTypeAnnotation',
|
|
1124
|
+
},
|
|
1125
|
+
},
|
|
1126
|
+
],
|
|
1127
|
+
commands: [],
|
|
1128
|
+
},
|
|
1129
|
+
},
|
|
1130
|
+
},
|
|
1131
|
+
},
|
|
1132
|
+
};
|
|
1105
1133
|
const EVENT_PROPS = {
|
|
1106
1134
|
modules: {
|
|
1107
1135
|
Switch: {
|
|
@@ -1669,6 +1697,7 @@ module.exports = {
|
|
|
1669
1697
|
MULTI_NATIVE_PROP,
|
|
1670
1698
|
STRING_ENUM_PROP,
|
|
1671
1699
|
INT32_ENUM_PROP,
|
|
1700
|
+
MIXED_PROP,
|
|
1672
1701
|
EVENT_PROPS,
|
|
1673
1702
|
EVENTS_WITH_PAPER_NAME,
|
|
1674
1703
|
EVENT_NESTED_OBJECT_PROPS,
|
|
@@ -1123,6 +1123,35 @@ const INT32_ENUM_PROP: SchemaType = {
|
|
|
1123
1123
|
},
|
|
1124
1124
|
};
|
|
1125
1125
|
|
|
1126
|
+
const MIXED_PROP: SchemaType = {
|
|
1127
|
+
modules: {
|
|
1128
|
+
CustomView: {
|
|
1129
|
+
type: 'Component',
|
|
1130
|
+
components: {
|
|
1131
|
+
MixedPropNativeComponent: {
|
|
1132
|
+
extendsProps: [
|
|
1133
|
+
{
|
|
1134
|
+
type: 'ReactNativeBuiltInType',
|
|
1135
|
+
knownTypeName: 'ReactNativeCoreViewProps',
|
|
1136
|
+
},
|
|
1137
|
+
],
|
|
1138
|
+
events: [],
|
|
1139
|
+
props: [
|
|
1140
|
+
{
|
|
1141
|
+
name: 'mixedProp',
|
|
1142
|
+
optional: false,
|
|
1143
|
+
typeAnnotation: {
|
|
1144
|
+
type: 'MixedTypeAnnotation',
|
|
1145
|
+
},
|
|
1146
|
+
},
|
|
1147
|
+
],
|
|
1148
|
+
commands: [],
|
|
1149
|
+
},
|
|
1150
|
+
},
|
|
1151
|
+
},
|
|
1152
|
+
},
|
|
1153
|
+
};
|
|
1154
|
+
|
|
1126
1155
|
const EVENT_PROPS: SchemaType = {
|
|
1127
1156
|
modules: {
|
|
1128
1157
|
Switch: {
|
|
@@ -1701,6 +1730,7 @@ module.exports = {
|
|
|
1701
1730
|
MULTI_NATIVE_PROP,
|
|
1702
1731
|
STRING_ENUM_PROP,
|
|
1703
1732
|
INT32_ENUM_PROP,
|
|
1733
|
+
MIXED_PROP,
|
|
1704
1734
|
EVENT_PROPS,
|
|
1705
1735
|
EVENTS_WITH_PAPER_NAME,
|
|
1706
1736
|
EVENT_NESTED_OBJECT_PROPS,
|
|
@@ -361,7 +361,7 @@ enum ${enumName} { ${values} };
|
|
|
361
361
|
|
|
362
362
|
template <>
|
|
363
363
|
struct Bridging<${enumName}> {
|
|
364
|
-
static ${enumName} fromJs(jsi::Runtime &rt, ${fromValue}
|
|
364
|
+
static ${enumName} fromJs(jsi::Runtime &rt, ${fromValue}) {
|
|
365
365
|
${fromValueConversion}
|
|
366
366
|
${fromCases}
|
|
367
367
|
}
|
|
@@ -338,7 +338,7 @@ enum ${enumName} { ${values} };
|
|
|
338
338
|
|
|
339
339
|
template <>
|
|
340
340
|
struct Bridging<${enumName}> {
|
|
341
|
-
static ${enumName} fromJs(jsi::Runtime &rt, ${fromValue}
|
|
341
|
+
static ${enumName} fromJs(jsi::Runtime &rt, ${fromValue}) {
|
|
342
342
|
${fromValueConversion}
|
|
343
343
|
${fromCases}
|
|
344
344
|
}
|