@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
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
-
const path = require('path');
|
|
14
13
|
const {FlowParser} = require('../../parsers/flow/parser');
|
|
15
14
|
const {TypeScriptParser} = require('../../parsers/typescript/parser');
|
|
15
|
+
const path = require('path');
|
|
16
16
|
|
|
17
17
|
const flowParser = new FlowParser();
|
|
18
18
|
const typescriptParser = new TypeScriptParser();
|
|
@@ -14,6 +14,7 @@ export type ViewGeneratorFunction = (libraryName: string, schema: SchemaType) =>
|
|
|
14
14
|
|
|
15
15
|
type LibraryGeneratorNames =
|
|
16
16
|
| 'generateComponentDescriptorH'
|
|
17
|
+
| 'generateComponentDescriptorCpp'
|
|
17
18
|
| 'generateComponentHObjCpp'
|
|
18
19
|
| 'generateEventEmitterCpp'
|
|
19
20
|
| 'generateEventEmitterH'
|
|
@@ -15,33 +15,35 @@ TODO:
|
|
|
15
15
|
|
|
16
16
|
- ViewConfigs should spread in View's valid attributes
|
|
17
17
|
*/
|
|
18
|
-
const
|
|
18
|
+
const schemaValidator = require('../SchemaValidator.js');
|
|
19
|
+
const generateComponentDescriptorCpp = require('./components/GenerateComponentDescriptorCpp.js');
|
|
19
20
|
const generateComponentDescriptorH = require('./components/GenerateComponentDescriptorH.js');
|
|
20
21
|
const generateComponentHObjCpp = require('./components/GenerateComponentHObjCpp.js');
|
|
21
22
|
const generateEventEmitterCpp = require('./components/GenerateEventEmitterCpp.js');
|
|
22
23
|
const generateEventEmitterH = require('./components/GenerateEventEmitterH.js');
|
|
23
24
|
const generatePropsCpp = require('./components/GeneratePropsCpp.js');
|
|
24
25
|
const generatePropsH = require('./components/GeneratePropsH.js');
|
|
26
|
+
const generatePropsJavaDelegate = require('./components/GeneratePropsJavaDelegate.js');
|
|
27
|
+
const generatePropsJavaInterface = require('./components/GeneratePropsJavaInterface.js');
|
|
28
|
+
const generateShadowNodeCpp = require('./components/GenerateShadowNodeCpp.js');
|
|
29
|
+
const generateShadowNodeH = require('./components/GenerateShadowNodeH.js');
|
|
25
30
|
const generateStateCpp = require('./components/GenerateStateCpp.js');
|
|
26
31
|
const generateStateH = require('./components/GenerateStateH.js');
|
|
27
|
-
const
|
|
32
|
+
const generateTests = require('./components/GenerateTests.js');
|
|
33
|
+
const generateThirdPartyFabricComponentsProviderH = require('./components/GenerateThirdPartyFabricComponentsProviderH.js');
|
|
34
|
+
const generateThirdPartyFabricComponentsProviderObjCpp = require('./components/GenerateThirdPartyFabricComponentsProviderObjCpp.js');
|
|
35
|
+
const generateViewConfigJs = require('./components/GenerateViewConfigJs.js');
|
|
28
36
|
const generateModuleCpp = require('./modules/GenerateModuleCpp.js');
|
|
29
|
-
const
|
|
37
|
+
const generateModuleH = require('./modules/GenerateModuleH.js');
|
|
30
38
|
const generateModuleJavaSpec = require('./modules/GenerateModuleJavaSpec.js');
|
|
31
39
|
const generateModuleJniCpp = require('./modules/GenerateModuleJniCpp.js');
|
|
32
40
|
const generateModuleJniH = require('./modules/GenerateModuleJniH.js');
|
|
33
|
-
const
|
|
34
|
-
const
|
|
35
|
-
const generateTests = require('./components/GenerateTests.js');
|
|
36
|
-
const generateShadowNodeCpp = require('./components/GenerateShadowNodeCpp.js');
|
|
37
|
-
const generateShadowNodeH = require('./components/GenerateShadowNodeH.js');
|
|
38
|
-
const generateThirdPartyFabricComponentsProviderObjCpp = require('./components/GenerateThirdPartyFabricComponentsProviderObjCpp.js');
|
|
39
|
-
const generateThirdPartyFabricComponentsProviderH = require('./components/GenerateThirdPartyFabricComponentsProviderH.js');
|
|
40
|
-
const generateViewConfigJs = require('./components/GenerateViewConfigJs.js');
|
|
41
|
+
const generateModuleObjCpp = require('./modules/GenerateModuleObjCpp');
|
|
42
|
+
const fs = require('fs');
|
|
41
43
|
const path = require('path');
|
|
42
|
-
const schemaValidator = require('../SchemaValidator.js');
|
|
43
44
|
const ALL_GENERATORS = {
|
|
44
45
|
generateComponentDescriptorH: generateComponentDescriptorH.generate,
|
|
46
|
+
generateComponentDescriptorCpp: generateComponentDescriptorCpp.generate,
|
|
45
47
|
generateComponentHObjCpp: generateComponentHObjCpp.generate,
|
|
46
48
|
generateEventEmitterCpp: generateEventEmitterCpp.generate,
|
|
47
49
|
generateEventEmitterH: generateEventEmitterH.generate,
|
|
@@ -81,6 +83,7 @@ const LIBRARY_GENERATORS = {
|
|
|
81
83
|
componentsAndroid: [
|
|
82
84
|
// JNI/C++ files
|
|
83
85
|
generateComponentDescriptorH.generate,
|
|
86
|
+
generateComponentDescriptorCpp.generate,
|
|
84
87
|
generateEventEmitterCpp.generate,
|
|
85
88
|
generateEventEmitterH.generate,
|
|
86
89
|
generatePropsCpp.generate,
|
|
@@ -95,6 +98,7 @@ const LIBRARY_GENERATORS = {
|
|
|
95
98
|
],
|
|
96
99
|
componentsIOS: [
|
|
97
100
|
generateComponentDescriptorH.generate,
|
|
101
|
+
generateComponentDescriptorCpp.generate,
|
|
98
102
|
generateEventEmitterCpp.generate,
|
|
99
103
|
generateEventEmitterH.generate,
|
|
100
104
|
generateComponentHObjCpp.generate,
|
|
@@ -166,14 +170,28 @@ module.exports = {
|
|
|
166
170
|
libraryGenerators: LIBRARY_GENERATORS,
|
|
167
171
|
schemaGenerators: SCHEMAS_GENERATORS,
|
|
168
172
|
generate(
|
|
169
|
-
{
|
|
173
|
+
{
|
|
174
|
+
libraryName,
|
|
175
|
+
schema,
|
|
176
|
+
outputDirectory,
|
|
177
|
+
packageName,
|
|
178
|
+
assumeNonnull,
|
|
179
|
+
useLocalIncludePaths,
|
|
180
|
+
},
|
|
170
181
|
{generators, test},
|
|
171
182
|
) {
|
|
172
183
|
schemaValidator.validate(schema);
|
|
184
|
+
const defaultHeaderPrefix = 'react/renderer/components';
|
|
185
|
+
const headerPrefix =
|
|
186
|
+
useLocalIncludePaths === true
|
|
187
|
+
? ''
|
|
188
|
+
: `${defaultHeaderPrefix}/${libraryName}/`;
|
|
173
189
|
function composePath(intermediate) {
|
|
174
190
|
return path.join(outputDirectory, intermediate, libraryName);
|
|
175
191
|
}
|
|
176
|
-
const componentIOSOutput = composePath(
|
|
192
|
+
const componentIOSOutput = composePath(
|
|
193
|
+
useLocalIncludePaths === true ? '' : defaultHeaderPrefix,
|
|
194
|
+
);
|
|
177
195
|
const modulesIOSOutput = composePath('./');
|
|
178
196
|
const outputFoldersForGenerators = {
|
|
179
197
|
componentsIOS: componentIOSOutput,
|
|
@@ -191,33 +209,42 @@ module.exports = {
|
|
|
191
209
|
const generatedFiles = [];
|
|
192
210
|
for (const name of generators) {
|
|
193
211
|
for (const generator of LIBRARY_GENERATORS[name]) {
|
|
194
|
-
generator(
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
212
|
+
generator(
|
|
213
|
+
libraryName,
|
|
214
|
+
schema,
|
|
215
|
+
packageName,
|
|
216
|
+
assumeNonnull,
|
|
217
|
+
headerPrefix,
|
|
218
|
+
).forEach((contents, fileName) => {
|
|
219
|
+
generatedFiles.push({
|
|
220
|
+
name: fileName,
|
|
221
|
+
content: contents,
|
|
222
|
+
outputDir: outputFoldersForGenerators[name],
|
|
223
|
+
});
|
|
224
|
+
});
|
|
203
225
|
}
|
|
204
226
|
}
|
|
205
227
|
return checkOrWriteFiles(generatedFiles, test);
|
|
206
228
|
},
|
|
207
|
-
generateFromSchemas(
|
|
229
|
+
generateFromSchemas(
|
|
230
|
+
{schemas, outputDirectory, supportedApplePlatforms},
|
|
231
|
+
{generators, test},
|
|
232
|
+
) {
|
|
208
233
|
Object.keys(schemas).forEach(libraryName =>
|
|
209
234
|
schemaValidator.validate(schemas[libraryName]),
|
|
210
235
|
);
|
|
211
236
|
const generatedFiles = [];
|
|
212
237
|
for (const name of generators) {
|
|
213
238
|
for (const generator of SCHEMAS_GENERATORS[name]) {
|
|
214
|
-
generator(schemas).forEach(
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
239
|
+
generator(schemas, supportedApplePlatforms).forEach(
|
|
240
|
+
(contents, fileName) => {
|
|
241
|
+
generatedFiles.push({
|
|
242
|
+
name: fileName,
|
|
243
|
+
content: contents,
|
|
244
|
+
outputDir: outputDirectory,
|
|
245
|
+
});
|
|
246
|
+
},
|
|
247
|
+
);
|
|
221
248
|
}
|
|
222
249
|
}
|
|
223
250
|
return checkOrWriteFiles(generatedFiles, test);
|
|
@@ -16,34 +16,38 @@ TODO:
|
|
|
16
16
|
- ViewConfigs should spread in View's valid attributes
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
import type {SchemaType} from '../CodegenSchema';
|
|
20
|
+
|
|
21
|
+
const schemaValidator = require('../SchemaValidator.js');
|
|
22
|
+
const generateComponentDescriptorCpp = require('./components/GenerateComponentDescriptorCpp.js');
|
|
20
23
|
const generateComponentDescriptorH = require('./components/GenerateComponentDescriptorH.js');
|
|
21
24
|
const generateComponentHObjCpp = require('./components/GenerateComponentHObjCpp.js');
|
|
22
25
|
const generateEventEmitterCpp = require('./components/GenerateEventEmitterCpp.js');
|
|
23
26
|
const generateEventEmitterH = require('./components/GenerateEventEmitterH.js');
|
|
24
27
|
const generatePropsCpp = require('./components/GeneratePropsCpp.js');
|
|
25
28
|
const generatePropsH = require('./components/GeneratePropsH.js');
|
|
29
|
+
const generatePropsJavaDelegate = require('./components/GeneratePropsJavaDelegate.js');
|
|
30
|
+
const generatePropsJavaInterface = require('./components/GeneratePropsJavaInterface.js');
|
|
31
|
+
const generateShadowNodeCpp = require('./components/GenerateShadowNodeCpp.js');
|
|
32
|
+
const generateShadowNodeH = require('./components/GenerateShadowNodeH.js');
|
|
26
33
|
const generateStateCpp = require('./components/GenerateStateCpp.js');
|
|
27
34
|
const generateStateH = require('./components/GenerateStateH.js');
|
|
28
|
-
const
|
|
35
|
+
const generateTests = require('./components/GenerateTests.js');
|
|
36
|
+
const generateThirdPartyFabricComponentsProviderH = require('./components/GenerateThirdPartyFabricComponentsProviderH.js');
|
|
37
|
+
const generateThirdPartyFabricComponentsProviderObjCpp = require('./components/GenerateThirdPartyFabricComponentsProviderObjCpp.js');
|
|
38
|
+
const generateViewConfigJs = require('./components/GenerateViewConfigJs.js');
|
|
29
39
|
const generateModuleCpp = require('./modules/GenerateModuleCpp.js');
|
|
30
|
-
const
|
|
40
|
+
const generateModuleH = require('./modules/GenerateModuleH.js');
|
|
31
41
|
const generateModuleJavaSpec = require('./modules/GenerateModuleJavaSpec.js');
|
|
32
42
|
const generateModuleJniCpp = require('./modules/GenerateModuleJniCpp.js');
|
|
33
43
|
const generateModuleJniH = require('./modules/GenerateModuleJniH.js');
|
|
34
|
-
const
|
|
35
|
-
const
|
|
36
|
-
const generateTests = require('./components/GenerateTests.js');
|
|
37
|
-
const generateShadowNodeCpp = require('./components/GenerateShadowNodeCpp.js');
|
|
38
|
-
const generateShadowNodeH = require('./components/GenerateShadowNodeH.js');
|
|
39
|
-
const generateThirdPartyFabricComponentsProviderObjCpp = require('./components/GenerateThirdPartyFabricComponentsProviderObjCpp.js');
|
|
40
|
-
const generateThirdPartyFabricComponentsProviderH = require('./components/GenerateThirdPartyFabricComponentsProviderH.js');
|
|
41
|
-
const generateViewConfigJs = require('./components/GenerateViewConfigJs.js');
|
|
44
|
+
const generateModuleObjCpp = require('./modules/GenerateModuleObjCpp');
|
|
45
|
+
const fs = require('fs');
|
|
42
46
|
const path = require('path');
|
|
43
|
-
const schemaValidator = require('../SchemaValidator.js');
|
|
44
47
|
|
|
45
48
|
const ALL_GENERATORS = {
|
|
46
49
|
generateComponentDescriptorH: generateComponentDescriptorH.generate,
|
|
50
|
+
generateComponentDescriptorCpp: generateComponentDescriptorCpp.generate,
|
|
47
51
|
generateComponentHObjCpp: generateComponentHObjCpp.generate,
|
|
48
52
|
generateEventEmitterCpp: generateEventEmitterCpp.generate,
|
|
49
53
|
generateEventEmitterH: generateEventEmitterH.generate,
|
|
@@ -69,19 +73,19 @@ const ALL_GENERATORS = {
|
|
|
69
73
|
generateViewConfigJs: generateViewConfigJs.generate,
|
|
70
74
|
};
|
|
71
75
|
|
|
72
|
-
import type {SchemaType} from '../CodegenSchema';
|
|
73
|
-
|
|
74
76
|
type LibraryOptions = $ReadOnly<{
|
|
75
77
|
libraryName: string,
|
|
76
78
|
schema: SchemaType,
|
|
77
79
|
outputDirectory: string,
|
|
78
80
|
packageName?: string, // Some platforms have a notion of package, which should be configurable.
|
|
79
81
|
assumeNonnull: boolean,
|
|
82
|
+
useLocalIncludePaths?: boolean,
|
|
80
83
|
}>;
|
|
81
84
|
|
|
82
85
|
type SchemasOptions = $ReadOnly<{
|
|
83
86
|
schemas: {[string]: SchemaType},
|
|
84
87
|
outputDirectory: string,
|
|
88
|
+
supportedApplePlatforms?: {[string]: {[string]: boolean}},
|
|
85
89
|
}>;
|
|
86
90
|
|
|
87
91
|
type LibraryGenerators =
|
|
@@ -124,6 +128,7 @@ const LIBRARY_GENERATORS = {
|
|
|
124
128
|
componentsAndroid: [
|
|
125
129
|
// JNI/C++ files
|
|
126
130
|
generateComponentDescriptorH.generate,
|
|
131
|
+
generateComponentDescriptorCpp.generate,
|
|
127
132
|
generateEventEmitterCpp.generate,
|
|
128
133
|
generateEventEmitterH.generate,
|
|
129
134
|
generatePropsCpp.generate,
|
|
@@ -138,6 +143,7 @@ const LIBRARY_GENERATORS = {
|
|
|
138
143
|
],
|
|
139
144
|
componentsIOS: [
|
|
140
145
|
generateComponentDescriptorH.generate,
|
|
146
|
+
generateComponentDescriptorCpp.generate,
|
|
141
147
|
generateEventEmitterCpp.generate,
|
|
142
148
|
generateEventEmitterH.generate,
|
|
143
149
|
generateComponentHObjCpp.generate,
|
|
@@ -232,16 +238,24 @@ module.exports = {
|
|
|
232
238
|
outputDirectory,
|
|
233
239
|
packageName,
|
|
234
240
|
assumeNonnull,
|
|
241
|
+
useLocalIncludePaths,
|
|
235
242
|
}: LibraryOptions,
|
|
236
243
|
{generators, test}: LibraryConfig,
|
|
237
244
|
): boolean {
|
|
238
245
|
schemaValidator.validate(schema);
|
|
239
246
|
|
|
247
|
+
const defaultHeaderPrefix = 'react/renderer/components';
|
|
248
|
+
const headerPrefix =
|
|
249
|
+
useLocalIncludePaths === true
|
|
250
|
+
? ''
|
|
251
|
+
: `${defaultHeaderPrefix}/${libraryName}/`;
|
|
240
252
|
function composePath(intermediate: string) {
|
|
241
253
|
return path.join(outputDirectory, intermediate, libraryName);
|
|
242
254
|
}
|
|
243
255
|
|
|
244
|
-
const componentIOSOutput = composePath(
|
|
256
|
+
const componentIOSOutput = composePath(
|
|
257
|
+
useLocalIncludePaths === true ? '' : defaultHeaderPrefix,
|
|
258
|
+
);
|
|
245
259
|
const modulesIOSOutput = composePath('./');
|
|
246
260
|
|
|
247
261
|
const outputFoldersForGenerators = {
|
|
@@ -262,21 +276,25 @@ module.exports = {
|
|
|
262
276
|
|
|
263
277
|
for (const name of generators) {
|
|
264
278
|
for (const generator of LIBRARY_GENERATORS[name]) {
|
|
265
|
-
generator(
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
279
|
+
generator(
|
|
280
|
+
libraryName,
|
|
281
|
+
schema,
|
|
282
|
+
packageName,
|
|
283
|
+
assumeNonnull,
|
|
284
|
+
headerPrefix,
|
|
285
|
+
).forEach((contents: string, fileName: string) => {
|
|
286
|
+
generatedFiles.push({
|
|
287
|
+
name: fileName,
|
|
288
|
+
content: contents,
|
|
289
|
+
outputDir: outputFoldersForGenerators[name],
|
|
290
|
+
});
|
|
291
|
+
});
|
|
274
292
|
}
|
|
275
293
|
}
|
|
276
294
|
return checkOrWriteFiles(generatedFiles, test);
|
|
277
295
|
},
|
|
278
296
|
generateFromSchemas(
|
|
279
|
-
{schemas, outputDirectory}: SchemasOptions,
|
|
297
|
+
{schemas, outputDirectory, supportedApplePlatforms}: SchemasOptions,
|
|
280
298
|
{generators, test}: SchemasConfig,
|
|
281
299
|
): boolean {
|
|
282
300
|
Object.keys(schemas).forEach(libraryName =>
|
|
@@ -287,13 +305,15 @@ module.exports = {
|
|
|
287
305
|
|
|
288
306
|
for (const name of generators) {
|
|
289
307
|
for (const generator of SCHEMAS_GENERATORS[name]) {
|
|
290
|
-
generator(schemas).forEach(
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
308
|
+
generator(schemas, supportedApplePlatforms).forEach(
|
|
309
|
+
(contents: string, fileName: string) => {
|
|
310
|
+
generatedFiles.push({
|
|
311
|
+
name: fileName,
|
|
312
|
+
content: contents,
|
|
313
|
+
outputDir: outputDirectory,
|
|
314
|
+
});
|
|
315
|
+
},
|
|
316
|
+
);
|
|
297
317
|
}
|
|
298
318
|
}
|
|
299
319
|
return checkOrWriteFiles(generatedFiles, test);
|
|
@@ -0,0 +1,17 @@
|
|
|
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
|
+
* @oncall react_native
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
function wrapOptional(type, isRequired) {
|
|
13
|
+
return isRequired ? type : `std::optional<${type}>`;
|
|
14
|
+
}
|
|
15
|
+
module.exports = {
|
|
16
|
+
wrapOptional,
|
|
17
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
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
|
+
* @oncall react_native
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
function wrapOptional(type: string, isRequired: boolean): string {
|
|
13
|
+
return isRequired ? type : `std::optional<${type}>`;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
module.exports = {
|
|
17
|
+
wrapOptional,
|
|
18
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
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
|
+
* @oncall react_native
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
const objectTypeForPrimitiveType = {
|
|
13
|
+
boolean: 'Boolean',
|
|
14
|
+
double: 'Double',
|
|
15
|
+
float: 'Float',
|
|
16
|
+
int: 'Integer',
|
|
17
|
+
};
|
|
18
|
+
function wrapOptional(type, isRequired) {
|
|
19
|
+
var _objectTypeForPrimiti;
|
|
20
|
+
return isRequired
|
|
21
|
+
? type
|
|
22
|
+
: `@Nullable ${
|
|
23
|
+
(_objectTypeForPrimiti = objectTypeForPrimitiveType[type]) !== null &&
|
|
24
|
+
_objectTypeForPrimiti !== void 0
|
|
25
|
+
? _objectTypeForPrimiti
|
|
26
|
+
: type
|
|
27
|
+
}`;
|
|
28
|
+
}
|
|
29
|
+
module.exports = {
|
|
30
|
+
wrapOptional,
|
|
31
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
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
|
+
* @oncall react_native
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
const objectTypeForPrimitiveType = {
|
|
13
|
+
boolean: 'Boolean',
|
|
14
|
+
double: 'Double',
|
|
15
|
+
float: 'Float',
|
|
16
|
+
int: 'Integer',
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
function wrapOptional(type: string, isRequired: boolean): string {
|
|
20
|
+
return isRequired
|
|
21
|
+
? type
|
|
22
|
+
: `@Nullable ${objectTypeForPrimitiveType[type] ?? type}`;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
module.exports = {
|
|
26
|
+
wrapOptional,
|
|
27
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
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
|
+
* @oncall react_native
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
function wrapOptional(type, isRequired) {
|
|
13
|
+
return isRequired ? type : `${type} _Nullable`;
|
|
14
|
+
}
|
|
15
|
+
module.exports = {
|
|
16
|
+
wrapOptional,
|
|
17
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
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
|
+
* @oncall react_native
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
function wrapOptional(type: string, isRequired: boolean): string {
|
|
13
|
+
return isRequired ? type : `${type} _Nullable`;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
module.exports = {
|
|
17
|
+
wrapOptional,
|
|
18
|
+
};
|
|
@@ -10,13 +10,13 @@
|
|
|
10
10
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
-
const _require = require('
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
generateStructName =
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
const _require = require('../Utils'),
|
|
14
|
+
getEnumName = _require.getEnumName;
|
|
15
|
+
const _require2 = require('./CppHelpers.js'),
|
|
16
|
+
generateStructName = _require2.generateStructName,
|
|
17
|
+
getCppTypeForAnnotation = _require2.getCppTypeForAnnotation,
|
|
18
|
+
getEnumMaskName = _require2.getEnumMaskName,
|
|
19
|
+
getImports = _require2.getImports;
|
|
20
20
|
function getNativeTypeFromAnnotation(componentName, prop, nameParts) {
|
|
21
21
|
const typeAnnotation = prop.typeAnnotation;
|
|
22
22
|
switch (typeAnnotation.type) {
|
|
@@ -11,26 +11,24 @@
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
13
|
import type {NamedShape, PropTypeAnnotation} from '../../CodegenSchema';
|
|
14
|
-
|
|
15
14
|
import type {
|
|
16
|
-
StringTypeAnnotation,
|
|
17
|
-
ReservedPropTypeAnnotation,
|
|
18
|
-
ObjectTypeAnnotation,
|
|
19
|
-
Int32TypeAnnotation,
|
|
20
|
-
FloatTypeAnnotation,
|
|
21
|
-
DoubleTypeAnnotation,
|
|
22
15
|
BooleanTypeAnnotation,
|
|
16
|
+
DoubleTypeAnnotation,
|
|
17
|
+
FloatTypeAnnotation,
|
|
18
|
+
Int32TypeAnnotation,
|
|
19
|
+
ObjectTypeAnnotation,
|
|
20
|
+
ReservedPropTypeAnnotation,
|
|
21
|
+
StringTypeAnnotation,
|
|
23
22
|
} from '../../CodegenSchema';
|
|
24
23
|
|
|
24
|
+
const {getEnumName} = require('../Utils');
|
|
25
25
|
const {
|
|
26
|
+
generateStructName,
|
|
26
27
|
getCppTypeForAnnotation,
|
|
27
28
|
getEnumMaskName,
|
|
28
|
-
generateStructName,
|
|
29
29
|
getImports,
|
|
30
30
|
} = require('./CppHelpers.js');
|
|
31
31
|
|
|
32
|
-
const {getEnumName} = require('../Utils');
|
|
33
|
-
|
|
34
32
|
function getNativeTypeFromAnnotation(
|
|
35
33
|
componentName: string,
|
|
36
34
|
prop:
|
|
@@ -0,0 +1,55 @@
|
|
|
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
|
+
const APPLE_PLATFORMS_MACRO_MAP = {
|
|
12
|
+
ios: 'TARGET_OS_IOS',
|
|
13
|
+
macos: 'TARGET_OS_OSX',
|
|
14
|
+
tvos: 'TARGET_OS_TV',
|
|
15
|
+
visionos: 'TARGET_OS_VISION',
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Adds compiler macros to the file template to exclude unsupported platforms.
|
|
20
|
+
*/
|
|
21
|
+
function generateSupportedApplePlatformsMacro(
|
|
22
|
+
fileTemplate,
|
|
23
|
+
supportedPlatformsMap,
|
|
24
|
+
) {
|
|
25
|
+
if (!supportedPlatformsMap) {
|
|
26
|
+
return fileTemplate;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// According to Podspec Syntax Reference, when `platform` or `deployment_target` is not specified, it defaults to all platforms.
|
|
30
|
+
// https://guides.cocoapods.org/syntax/podspec.html#platform
|
|
31
|
+
const everyPlatformIsUnsupported = Object.keys(supportedPlatformsMap).every(
|
|
32
|
+
platform => supportedPlatformsMap[platform] === false,
|
|
33
|
+
);
|
|
34
|
+
if (everyPlatformIsUnsupported) {
|
|
35
|
+
return fileTemplate;
|
|
36
|
+
}
|
|
37
|
+
const compilerMacroString = Object.keys(supportedPlatformsMap)
|
|
38
|
+
.reduce((acc, platform) => {
|
|
39
|
+
if (!supportedPlatformsMap[platform]) {
|
|
40
|
+
return [...acc, `!${APPLE_PLATFORMS_MACRO_MAP[platform]}`];
|
|
41
|
+
}
|
|
42
|
+
return acc;
|
|
43
|
+
}, [])
|
|
44
|
+
.join(' && ');
|
|
45
|
+
if (!compilerMacroString) {
|
|
46
|
+
return fileTemplate;
|
|
47
|
+
}
|
|
48
|
+
return `#if ${compilerMacroString}
|
|
49
|
+
${fileTemplate}
|
|
50
|
+
#endif
|
|
51
|
+
`;
|
|
52
|
+
}
|
|
53
|
+
module.exports = {
|
|
54
|
+
generateSupportedApplePlatformsMacro,
|
|
55
|
+
};
|
|
@@ -0,0 +1,60 @@
|
|
|
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
|
+
const APPLE_PLATFORMS_MACRO_MAP = {
|
|
12
|
+
ios: 'TARGET_OS_IOS',
|
|
13
|
+
macos: 'TARGET_OS_OSX',
|
|
14
|
+
tvos: 'TARGET_OS_TV',
|
|
15
|
+
visionos: 'TARGET_OS_VISION',
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Adds compiler macros to the file template to exclude unsupported platforms.
|
|
20
|
+
*/
|
|
21
|
+
function generateSupportedApplePlatformsMacro(
|
|
22
|
+
fileTemplate: string,
|
|
23
|
+
supportedPlatformsMap: ?{[string]: boolean},
|
|
24
|
+
): string {
|
|
25
|
+
if (!supportedPlatformsMap) {
|
|
26
|
+
return fileTemplate;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// According to Podspec Syntax Reference, when `platform` or `deployment_target` is not specified, it defaults to all platforms.
|
|
30
|
+
// https://guides.cocoapods.org/syntax/podspec.html#platform
|
|
31
|
+
const everyPlatformIsUnsupported = Object.keys(supportedPlatformsMap).every(
|
|
32
|
+
platform => supportedPlatformsMap[platform] === false,
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
if (everyPlatformIsUnsupported) {
|
|
36
|
+
return fileTemplate;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const compilerMacroString = Object.keys(supportedPlatformsMap)
|
|
40
|
+
.reduce((acc: string[], platform) => {
|
|
41
|
+
if (!supportedPlatformsMap[platform]) {
|
|
42
|
+
return [...acc, `!${APPLE_PLATFORMS_MACRO_MAP[platform]}`];
|
|
43
|
+
}
|
|
44
|
+
return acc;
|
|
45
|
+
}, [])
|
|
46
|
+
.join(' && ');
|
|
47
|
+
|
|
48
|
+
if (!compilerMacroString) {
|
|
49
|
+
return fileTemplate;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return `#if ${compilerMacroString}
|
|
53
|
+
${fileTemplate}
|
|
54
|
+
#endif
|
|
55
|
+
`;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
module.exports = {
|
|
59
|
+
generateSupportedApplePlatformsMacro,
|
|
60
|
+
};
|
|
@@ -208,6 +208,12 @@ function convertDefaultTypeToString(componentName, prop) {
|
|
|
208
208
|
throw new Error(`Unsupported type annotation: ${typeAnnotation.type}`);
|
|
209
209
|
}
|
|
210
210
|
}
|
|
211
|
+
const IncludeTemplate = ({headerPrefix, file}) => {
|
|
212
|
+
if (headerPrefix === '') {
|
|
213
|
+
return `#include "${file}"`;
|
|
214
|
+
}
|
|
215
|
+
return `#include <${headerPrefix}${file}>`;
|
|
216
|
+
};
|
|
211
217
|
module.exports = {
|
|
212
218
|
convertDefaultTypeToString,
|
|
213
219
|
getCppArrayTypeForAnnotation,
|
|
@@ -217,4 +223,5 @@ module.exports = {
|
|
|
217
223
|
toIntEnumValueName,
|
|
218
224
|
generateStructName,
|
|
219
225
|
generateEventStructName,
|
|
226
|
+
IncludeTemplate,
|
|
220
227
|
};
|