@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,14 +10,17 @@
|
|
|
10
10
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
-
const {getSafePropertyName, getNamespacedStructName} = require('../Utils');
|
|
14
|
-
const {capitalize} = require('../../../Utils');
|
|
15
|
-
|
|
16
13
|
import type {Nullable} from '../../../../CodegenSchema';
|
|
17
|
-
import type {
|
|
14
|
+
import type {ConstantsStruct, StructTypeAnnotation} from '../StructCollector';
|
|
18
15
|
import type {StructSerilizationOutput} from './serializeStruct';
|
|
19
16
|
|
|
20
17
|
const {unwrapNullable} = require('../../../../parsers/parsers-commons');
|
|
18
|
+
const {wrapOptional: wrapCxxOptional} = require('../../../TypeUtils/Cxx');
|
|
19
|
+
const {
|
|
20
|
+
wrapOptional: wrapObjCOptional,
|
|
21
|
+
} = require('../../../TypeUtils/Objective-C');
|
|
22
|
+
const {capitalize} = require('../../../Utils');
|
|
23
|
+
const {getNamespacedStructName, getSafePropertyName} = require('../Utils');
|
|
21
24
|
|
|
22
25
|
const StructTemplate = ({
|
|
23
26
|
hasteModuleName,
|
|
@@ -79,15 +82,12 @@ function toObjCType(
|
|
|
79
82
|
): string {
|
|
80
83
|
const [typeAnnotation, nullable] = unwrapNullable(nullableTypeAnnotation);
|
|
81
84
|
const isRequired = !nullable && !isOptional;
|
|
82
|
-
const wrapOptional = (type: string) => {
|
|
83
|
-
return isRequired ? type : `std::optional<${type}>`;
|
|
84
|
-
};
|
|
85
85
|
|
|
86
86
|
switch (typeAnnotation.type) {
|
|
87
87
|
case 'ReservedTypeAnnotation':
|
|
88
88
|
switch (typeAnnotation.name) {
|
|
89
89
|
case 'RootTag':
|
|
90
|
-
return
|
|
90
|
+
return wrapCxxOptional('double', isRequired);
|
|
91
91
|
default:
|
|
92
92
|
(typeAnnotation.name: empty);
|
|
93
93
|
throw new Error(`Unknown prop type, found: ${typeAnnotation.name}"`);
|
|
@@ -95,19 +95,19 @@ function toObjCType(
|
|
|
95
95
|
case 'StringTypeAnnotation':
|
|
96
96
|
return 'NSString *';
|
|
97
97
|
case 'NumberTypeAnnotation':
|
|
98
|
-
return
|
|
98
|
+
return wrapCxxOptional('double', isRequired);
|
|
99
99
|
case 'FloatTypeAnnotation':
|
|
100
|
-
return
|
|
100
|
+
return wrapCxxOptional('double', isRequired);
|
|
101
101
|
case 'Int32TypeAnnotation':
|
|
102
|
-
return
|
|
102
|
+
return wrapCxxOptional('double', isRequired);
|
|
103
103
|
case 'DoubleTypeAnnotation':
|
|
104
|
-
return
|
|
104
|
+
return wrapCxxOptional('double', isRequired);
|
|
105
105
|
case 'BooleanTypeAnnotation':
|
|
106
|
-
return
|
|
106
|
+
return wrapCxxOptional('bool', isRequired);
|
|
107
107
|
case 'EnumDeclaration':
|
|
108
108
|
switch (typeAnnotation.memberType) {
|
|
109
109
|
case 'NumberTypeAnnotation':
|
|
110
|
-
return
|
|
110
|
+
return wrapCxxOptional('double', isRequired);
|
|
111
111
|
case 'StringTypeAnnotation':
|
|
112
112
|
return 'NSString *';
|
|
113
113
|
default:
|
|
@@ -116,17 +116,18 @@ function toObjCType(
|
|
|
116
116
|
);
|
|
117
117
|
}
|
|
118
118
|
case 'GenericObjectTypeAnnotation':
|
|
119
|
-
return
|
|
119
|
+
return wrapObjCOptional('id<NSObject>', isRequired);
|
|
120
120
|
case 'ArrayTypeAnnotation':
|
|
121
121
|
if (typeAnnotation.elementType == null) {
|
|
122
|
-
return
|
|
122
|
+
return wrapObjCOptional('id<NSObject>', isRequired);
|
|
123
123
|
}
|
|
124
124
|
|
|
125
|
-
return
|
|
125
|
+
return wrapCxxOptional(
|
|
126
126
|
`std::vector<${toObjCType(
|
|
127
127
|
hasteModuleName,
|
|
128
128
|
typeAnnotation.elementType,
|
|
129
129
|
)}>`,
|
|
130
|
+
isRequired,
|
|
130
131
|
);
|
|
131
132
|
case 'TypeAliasTypeAnnotation':
|
|
132
133
|
const structName = capitalize(typeAnnotation.name);
|
|
@@ -134,7 +135,7 @@ function toObjCType(
|
|
|
134
135
|
hasteModuleName,
|
|
135
136
|
structName,
|
|
136
137
|
);
|
|
137
|
-
return
|
|
138
|
+
return wrapCxxOptional(`${namespacedStructName}::Builder`, isRequired);
|
|
138
139
|
default:
|
|
139
140
|
(typeAnnotation.type: empty);
|
|
140
141
|
throw new Error(
|
|
@@ -78,13 +78,17 @@ function _iterableToArrayLimit(arr, i) {
|
|
|
78
78
|
function _arrayWithHoles(arr) {
|
|
79
79
|
if (Array.isArray(arr)) return arr;
|
|
80
80
|
}
|
|
81
|
-
const _require = require('
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
81
|
+
const _require = require('../../../../parsers/parsers-commons'),
|
|
82
|
+
unwrapNullable = _require.unwrapNullable;
|
|
83
|
+
const _require2 = require('../../../TypeUtils/Cxx'),
|
|
84
|
+
wrapCxxOptional = _require2.wrapOptional;
|
|
85
|
+
const _require3 = require('../../../TypeUtils/Objective-C'),
|
|
86
|
+
wrapObjCOptional = _require3.wrapOptional;
|
|
87
|
+
const _require4 = require('../../../Utils'),
|
|
88
|
+
capitalize = _require4.capitalize;
|
|
89
|
+
const _require5 = require('../Utils'),
|
|
90
|
+
getNamespacedStructName = _require5.getNamespacedStructName,
|
|
91
|
+
getSafePropertyName = _require5.getSafePropertyName;
|
|
88
92
|
const StructTemplate = ({
|
|
89
93
|
hasteModuleName,
|
|
90
94
|
structName,
|
|
@@ -126,14 +130,11 @@ function toObjCType(
|
|
|
126
130
|
typeAnnotation = _unwrapNullable2[0],
|
|
127
131
|
nullable = _unwrapNullable2[1];
|
|
128
132
|
const isRequired = !nullable && !isOptional;
|
|
129
|
-
const wrapOptional = type => {
|
|
130
|
-
return isRequired ? type : `std::optional<${type}>`;
|
|
131
|
-
};
|
|
132
133
|
switch (typeAnnotation.type) {
|
|
133
134
|
case 'ReservedTypeAnnotation':
|
|
134
135
|
switch (typeAnnotation.name) {
|
|
135
136
|
case 'RootTag':
|
|
136
|
-
return
|
|
137
|
+
return wrapCxxOptional('double', isRequired);
|
|
137
138
|
default:
|
|
138
139
|
typeAnnotation.name;
|
|
139
140
|
throw new Error(`Unknown prop type, found: ${typeAnnotation.name}"`);
|
|
@@ -141,19 +142,19 @@ function toObjCType(
|
|
|
141
142
|
case 'StringTypeAnnotation':
|
|
142
143
|
return 'NSString *';
|
|
143
144
|
case 'NumberTypeAnnotation':
|
|
144
|
-
return
|
|
145
|
+
return wrapCxxOptional('double', isRequired);
|
|
145
146
|
case 'FloatTypeAnnotation':
|
|
146
|
-
return
|
|
147
|
+
return wrapCxxOptional('double', isRequired);
|
|
147
148
|
case 'Int32TypeAnnotation':
|
|
148
|
-
return
|
|
149
|
+
return wrapCxxOptional('double', isRequired);
|
|
149
150
|
case 'DoubleTypeAnnotation':
|
|
150
|
-
return
|
|
151
|
+
return wrapCxxOptional('double', isRequired);
|
|
151
152
|
case 'BooleanTypeAnnotation':
|
|
152
|
-
return
|
|
153
|
+
return wrapCxxOptional('bool', isRequired);
|
|
153
154
|
case 'EnumDeclaration':
|
|
154
155
|
switch (typeAnnotation.memberType) {
|
|
155
156
|
case 'NumberTypeAnnotation':
|
|
156
|
-
return
|
|
157
|
+
return wrapCxxOptional('double', isRequired);
|
|
157
158
|
case 'StringTypeAnnotation':
|
|
158
159
|
return 'NSString *';
|
|
159
160
|
default:
|
|
@@ -162,16 +163,17 @@ function toObjCType(
|
|
|
162
163
|
);
|
|
163
164
|
}
|
|
164
165
|
case 'GenericObjectTypeAnnotation':
|
|
165
|
-
return
|
|
166
|
+
return wrapObjCOptional('id<NSObject>', isRequired);
|
|
166
167
|
case 'ArrayTypeAnnotation':
|
|
167
168
|
if (typeAnnotation.elementType == null) {
|
|
168
|
-
return
|
|
169
|
+
return wrapObjCOptional('id<NSObject>', isRequired);
|
|
169
170
|
}
|
|
170
|
-
return
|
|
171
|
+
return wrapCxxOptional(
|
|
171
172
|
`facebook::react::LazyVector<${toObjCType(
|
|
172
173
|
hasteModuleName,
|
|
173
174
|
typeAnnotation.elementType,
|
|
174
175
|
)}>`,
|
|
176
|
+
isRequired,
|
|
175
177
|
);
|
|
176
178
|
case 'TypeAliasTypeAnnotation':
|
|
177
179
|
const structName = capitalize(typeAnnotation.name);
|
|
@@ -179,7 +181,7 @@ function toObjCType(
|
|
|
179
181
|
hasteModuleName,
|
|
180
182
|
structName,
|
|
181
183
|
);
|
|
182
|
-
return
|
|
184
|
+
return wrapCxxOptional(namespacedStructName, isRequired);
|
|
183
185
|
default:
|
|
184
186
|
typeAnnotation.type;
|
|
185
187
|
throw new Error(
|
|
@@ -10,14 +10,17 @@
|
|
|
10
10
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
-
const {getSafePropertyName, getNamespacedStructName} = require('../Utils');
|
|
14
|
-
const {capitalize} = require('../../../Utils');
|
|
15
|
-
|
|
16
13
|
import type {Nullable} from '../../../../CodegenSchema';
|
|
17
|
-
import type {
|
|
14
|
+
import type {RegularStruct, StructTypeAnnotation} from '../StructCollector';
|
|
18
15
|
import type {StructSerilizationOutput} from './serializeStruct';
|
|
19
16
|
|
|
20
17
|
const {unwrapNullable} = require('../../../../parsers/parsers-commons');
|
|
18
|
+
const {wrapOptional: wrapCxxOptional} = require('../../../TypeUtils/Cxx');
|
|
19
|
+
const {
|
|
20
|
+
wrapOptional: wrapObjCOptional,
|
|
21
|
+
} = require('../../../TypeUtils/Objective-C');
|
|
22
|
+
const {capitalize} = require('../../../Utils');
|
|
23
|
+
const {getNamespacedStructName, getSafePropertyName} = require('../Utils');
|
|
21
24
|
|
|
22
25
|
const StructTemplate = ({
|
|
23
26
|
hasteModuleName,
|
|
@@ -70,15 +73,12 @@ function toObjCType(
|
|
|
70
73
|
): string {
|
|
71
74
|
const [typeAnnotation, nullable] = unwrapNullable(nullableTypeAnnotation);
|
|
72
75
|
const isRequired = !nullable && !isOptional;
|
|
73
|
-
const wrapOptional = (type: string) => {
|
|
74
|
-
return isRequired ? type : `std::optional<${type}>`;
|
|
75
|
-
};
|
|
76
76
|
|
|
77
77
|
switch (typeAnnotation.type) {
|
|
78
78
|
case 'ReservedTypeAnnotation':
|
|
79
79
|
switch (typeAnnotation.name) {
|
|
80
80
|
case 'RootTag':
|
|
81
|
-
return
|
|
81
|
+
return wrapCxxOptional('double', isRequired);
|
|
82
82
|
default:
|
|
83
83
|
(typeAnnotation.name: empty);
|
|
84
84
|
throw new Error(`Unknown prop type, found: ${typeAnnotation.name}"`);
|
|
@@ -86,19 +86,19 @@ function toObjCType(
|
|
|
86
86
|
case 'StringTypeAnnotation':
|
|
87
87
|
return 'NSString *';
|
|
88
88
|
case 'NumberTypeAnnotation':
|
|
89
|
-
return
|
|
89
|
+
return wrapCxxOptional('double', isRequired);
|
|
90
90
|
case 'FloatTypeAnnotation':
|
|
91
|
-
return
|
|
91
|
+
return wrapCxxOptional('double', isRequired);
|
|
92
92
|
case 'Int32TypeAnnotation':
|
|
93
|
-
return
|
|
93
|
+
return wrapCxxOptional('double', isRequired);
|
|
94
94
|
case 'DoubleTypeAnnotation':
|
|
95
|
-
return
|
|
95
|
+
return wrapCxxOptional('double', isRequired);
|
|
96
96
|
case 'BooleanTypeAnnotation':
|
|
97
|
-
return
|
|
97
|
+
return wrapCxxOptional('bool', isRequired);
|
|
98
98
|
case 'EnumDeclaration':
|
|
99
99
|
switch (typeAnnotation.memberType) {
|
|
100
100
|
case 'NumberTypeAnnotation':
|
|
101
|
-
return
|
|
101
|
+
return wrapCxxOptional('double', isRequired);
|
|
102
102
|
case 'StringTypeAnnotation':
|
|
103
103
|
return 'NSString *';
|
|
104
104
|
default:
|
|
@@ -107,16 +107,17 @@ function toObjCType(
|
|
|
107
107
|
);
|
|
108
108
|
}
|
|
109
109
|
case 'GenericObjectTypeAnnotation':
|
|
110
|
-
return
|
|
110
|
+
return wrapObjCOptional('id<NSObject>', isRequired);
|
|
111
111
|
case 'ArrayTypeAnnotation':
|
|
112
112
|
if (typeAnnotation.elementType == null) {
|
|
113
|
-
return
|
|
113
|
+
return wrapObjCOptional('id<NSObject>', isRequired);
|
|
114
114
|
}
|
|
115
|
-
return
|
|
115
|
+
return wrapCxxOptional(
|
|
116
116
|
`facebook::react::LazyVector<${toObjCType(
|
|
117
117
|
hasteModuleName,
|
|
118
118
|
typeAnnotation.elementType,
|
|
119
119
|
)}>`,
|
|
120
|
+
isRequired,
|
|
120
121
|
);
|
|
121
122
|
case 'TypeAliasTypeAnnotation':
|
|
122
123
|
const structName = capitalize(typeAnnotation.name);
|
|
@@ -124,7 +125,7 @@ function toObjCType(
|
|
|
124
125
|
hasteModuleName,
|
|
125
126
|
structName,
|
|
126
127
|
);
|
|
127
|
-
return
|
|
128
|
+
return wrapCxxOptional(namespacedStructName, isRequired);
|
|
128
129
|
default:
|
|
129
130
|
(typeAnnotation.type: empty);
|
|
130
131
|
throw new Error(
|
|
@@ -13,14 +13,14 @@
|
|
|
13
13
|
const _require = require('../Utils'),
|
|
14
14
|
createAliasResolver = _require.createAliasResolver,
|
|
15
15
|
getModules = _require.getModules;
|
|
16
|
-
const _require2 = require('./
|
|
17
|
-
|
|
18
|
-
const _require3 = require('./
|
|
19
|
-
|
|
20
|
-
const _require4 = require('./
|
|
21
|
-
|
|
22
|
-
const _require5 = require('./
|
|
23
|
-
|
|
16
|
+
const _require2 = require('./header/serializeStruct'),
|
|
17
|
+
serializeStruct = _require2.serializeStruct;
|
|
18
|
+
const _require3 = require('./serializeMethod'),
|
|
19
|
+
serializeMethod = _require3.serializeMethod;
|
|
20
|
+
const _require4 = require('./source/serializeModule'),
|
|
21
|
+
serializeModuleSource = _require4.serializeModuleSource;
|
|
22
|
+
const _require5 = require('./StructCollector'),
|
|
23
|
+
StructCollector = _require5.StructCollector;
|
|
24
24
|
const ModuleDeclarationTemplate = ({
|
|
25
25
|
hasteModuleName,
|
|
26
26
|
structDeclarations,
|
|
@@ -31,17 +31,15 @@ const ModuleDeclarationTemplate = ({
|
|
|
31
31
|
${protocolMethods}
|
|
32
32
|
|
|
33
33
|
@end
|
|
34
|
-
namespace facebook {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
} // namespace react
|
|
44
|
-
} // namespace facebook`;
|
|
34
|
+
namespace facebook::react {
|
|
35
|
+
/**
|
|
36
|
+
* ObjC++ class for module '${hasteModuleName}'
|
|
37
|
+
*/
|
|
38
|
+
class JSI_EXPORT ${hasteModuleName}SpecJSI : public ObjCTurboModule {
|
|
39
|
+
public:
|
|
40
|
+
${hasteModuleName}SpecJSI(const ObjCTurboModule::InitParams ¶ms);
|
|
41
|
+
};
|
|
42
|
+
} // namespace facebook::react`;
|
|
45
43
|
const HeaderFileTemplate = ({
|
|
46
44
|
moduleDeclarations,
|
|
47
45
|
structInlineMethods,
|
|
@@ -98,7 +96,7 @@ const SourceFileTemplate = ({headerFileName, moduleImplementations}) => `/**
|
|
|
98
96
|
${moduleImplementations}
|
|
99
97
|
`;
|
|
100
98
|
module.exports = {
|
|
101
|
-
generate(libraryName, schema, packageName, assumeNonnull) {
|
|
99
|
+
generate(libraryName, schema, packageName, assumeNonnull, headerPrefix) {
|
|
102
100
|
const nativeModules = getModules(schema);
|
|
103
101
|
const moduleDeclarations = [];
|
|
104
102
|
const structInlineMethods = [];
|
|
@@ -10,16 +10,14 @@
|
|
|
10
10
|
|
|
11
11
|
'use strict';
|
|
12
12
|
import type {NativeModulePropertyShape} from '../../../CodegenSchema';
|
|
13
|
-
|
|
14
13
|
import type {SchemaType} from '../../../CodegenSchema';
|
|
15
14
|
import type {MethodSerializationOutput} from './serializeMethod';
|
|
16
15
|
|
|
17
16
|
const {createAliasResolver, getModules} = require('../Utils');
|
|
18
|
-
|
|
19
|
-
const {StructCollector} = require('./StructCollector');
|
|
20
17
|
const {serializeStruct} = require('./header/serializeStruct');
|
|
21
18
|
const {serializeMethod} = require('./serializeMethod');
|
|
22
19
|
const {serializeModuleSource} = require('./source/serializeModule');
|
|
20
|
+
const {StructCollector} = require('./StructCollector');
|
|
23
21
|
|
|
24
22
|
type FilesOutput = Map<string, string>;
|
|
25
23
|
|
|
@@ -37,17 +35,15 @@ const ModuleDeclarationTemplate = ({
|
|
|
37
35
|
${protocolMethods}
|
|
38
36
|
|
|
39
37
|
@end
|
|
40
|
-
namespace facebook {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
} // namespace react
|
|
50
|
-
} // namespace facebook`;
|
|
38
|
+
namespace facebook::react {
|
|
39
|
+
/**
|
|
40
|
+
* ObjC++ class for module '${hasteModuleName}'
|
|
41
|
+
*/
|
|
42
|
+
class JSI_EXPORT ${hasteModuleName}SpecJSI : public ObjCTurboModule {
|
|
43
|
+
public:
|
|
44
|
+
${hasteModuleName}SpecJSI(const ObjCTurboModule::InitParams ¶ms);
|
|
45
|
+
};
|
|
46
|
+
} // namespace facebook::react`;
|
|
51
47
|
|
|
52
48
|
const HeaderFileTemplate = ({
|
|
53
49
|
moduleDeclarations,
|
|
@@ -122,6 +118,7 @@ module.exports = {
|
|
|
122
118
|
schema: SchemaType,
|
|
123
119
|
packageName?: string,
|
|
124
120
|
assumeNonnull: boolean,
|
|
121
|
+
headerPrefix?: string,
|
|
125
122
|
): FilesOutput {
|
|
126
123
|
const nativeModules = getModules(schema);
|
|
127
124
|
|
|
@@ -78,14 +78,16 @@ function _iterableToArrayLimit(arr, i) {
|
|
|
78
78
|
function _arrayWithHoles(arr) {
|
|
79
79
|
if (Array.isArray(arr)) return arr;
|
|
80
80
|
}
|
|
81
|
+
const _require = require('../../../parsers/parsers-commons'),
|
|
82
|
+
unwrapNullable = _require.unwrapNullable,
|
|
83
|
+
wrapNullable = _require.wrapNullable;
|
|
84
|
+
const _require2 = require('../../TypeUtils/Objective-C'),
|
|
85
|
+
wrapOptional = _require2.wrapOptional;
|
|
86
|
+
const _require3 = require('../../Utils'),
|
|
87
|
+
capitalize = _require3.capitalize;
|
|
88
|
+
const _require4 = require('./Utils'),
|
|
89
|
+
getNamespacedStructName = _require4.getNamespacedStructName;
|
|
81
90
|
const invariant = require('invariant');
|
|
82
|
-
const _require = require('./Utils'),
|
|
83
|
-
getNamespacedStructName = _require.getNamespacedStructName;
|
|
84
|
-
const _require2 = require('../../Utils'),
|
|
85
|
-
capitalize = _require2.capitalize;
|
|
86
|
-
const _require3 = require('../../../parsers/parsers-commons'),
|
|
87
|
-
wrapNullable = _require3.wrapNullable,
|
|
88
|
-
unwrapNullable = _require3.unwrapNullable;
|
|
89
91
|
const ProtocolMethodTemplate = ({returnObjCType, methodName, params}) =>
|
|
90
92
|
`- (${returnObjCType})${methodName}${params};`;
|
|
91
93
|
function serializeMethod(
|
|
@@ -226,10 +228,7 @@ function getParamObjCType(
|
|
|
226
228
|
_unwrapNullable8 = _slicedToArray(_unwrapNullable7, 2),
|
|
227
229
|
typeAnnotation = _unwrapNullable8[0],
|
|
228
230
|
nullable = _unwrapNullable8[1];
|
|
229
|
-
const
|
|
230
|
-
function wrapIntoNullableIfNeeded(generatedType) {
|
|
231
|
-
return nullable ? `${generatedType} _Nullable` : generatedType;
|
|
232
|
-
}
|
|
231
|
+
const isRequired = !param.optional && !nullable;
|
|
233
232
|
const isStruct = objCType => ({
|
|
234
233
|
isStruct: true,
|
|
235
234
|
objCType,
|
|
@@ -255,7 +254,7 @@ function getParamObjCType(
|
|
|
255
254
|
* type Animal = {};
|
|
256
255
|
* Array<Animal> => NSArray<JS::NativeSampleTurboModule::Animal *>, etc.
|
|
257
256
|
*/
|
|
258
|
-
return notStruct(
|
|
257
|
+
return notStruct(wrapOptional('NSArray *', !nullable));
|
|
259
258
|
}
|
|
260
259
|
}
|
|
261
260
|
const _unwrapNullable9 = unwrapNullable(
|
|
@@ -285,7 +284,7 @@ function getParamObjCType(
|
|
|
285
284
|
case 'ReservedTypeAnnotation':
|
|
286
285
|
switch (structTypeAnnotation.name) {
|
|
287
286
|
case 'RootTag':
|
|
288
|
-
return notStruct(
|
|
287
|
+
return notStruct(isRequired ? 'double' : 'NSNumber *');
|
|
289
288
|
default:
|
|
290
289
|
structTypeAnnotation.name;
|
|
291
290
|
throw new Error(
|
|
@@ -293,30 +292,30 @@ function getParamObjCType(
|
|
|
293
292
|
);
|
|
294
293
|
}
|
|
295
294
|
case 'StringTypeAnnotation':
|
|
296
|
-
return notStruct(
|
|
295
|
+
return notStruct(wrapOptional('NSString *', !nullable));
|
|
297
296
|
case 'NumberTypeAnnotation':
|
|
298
|
-
return notStruct(
|
|
297
|
+
return notStruct(isRequired ? 'double' : 'NSNumber *');
|
|
299
298
|
case 'FloatTypeAnnotation':
|
|
300
|
-
return notStruct(
|
|
299
|
+
return notStruct(isRequired ? 'float' : 'NSNumber *');
|
|
301
300
|
case 'DoubleTypeAnnotation':
|
|
302
|
-
return notStruct(
|
|
301
|
+
return notStruct(isRequired ? 'double' : 'NSNumber *');
|
|
303
302
|
case 'Int32TypeAnnotation':
|
|
304
|
-
return notStruct(
|
|
303
|
+
return notStruct(isRequired ? 'NSInteger' : 'NSNumber *');
|
|
305
304
|
case 'BooleanTypeAnnotation':
|
|
306
|
-
return notStruct(
|
|
305
|
+
return notStruct(isRequired ? 'BOOL' : 'NSNumber *');
|
|
307
306
|
case 'EnumDeclaration':
|
|
308
307
|
switch (typeAnnotation.memberType) {
|
|
309
308
|
case 'NumberTypeAnnotation':
|
|
310
|
-
return notStruct(
|
|
309
|
+
return notStruct(isRequired ? 'double' : 'NSNumber *');
|
|
311
310
|
case 'StringTypeAnnotation':
|
|
312
|
-
return notStruct(
|
|
311
|
+
return notStruct(wrapOptional('NSString *', !nullable));
|
|
313
312
|
default:
|
|
314
313
|
throw new Error(
|
|
315
314
|
`Unsupported enum type for param "${paramName}" in ${methodName}. Found: ${typeAnnotation.type}`,
|
|
316
315
|
);
|
|
317
316
|
}
|
|
318
317
|
case 'GenericObjectTypeAnnotation':
|
|
319
|
-
return notStruct(
|
|
318
|
+
return notStruct(wrapOptional('NSDictionary *', !nullable));
|
|
320
319
|
default:
|
|
321
320
|
structTypeAnnotation.type;
|
|
322
321
|
throw new Error(
|
|
@@ -329,32 +328,31 @@ function getReturnObjCType(methodName, nullableTypeAnnotation) {
|
|
|
329
328
|
_unwrapNullable12 = _slicedToArray(_unwrapNullable11, 2),
|
|
330
329
|
typeAnnotation = _unwrapNullable12[0],
|
|
331
330
|
nullable = _unwrapNullable12[1];
|
|
332
|
-
|
|
333
|
-
return nullable ? `${generatedType} _Nullable` : generatedType;
|
|
334
|
-
}
|
|
331
|
+
const isRequired = !nullable;
|
|
335
332
|
switch (typeAnnotation.type) {
|
|
336
333
|
case 'VoidTypeAnnotation':
|
|
337
334
|
return 'void';
|
|
338
335
|
case 'PromiseTypeAnnotation':
|
|
339
336
|
return 'void';
|
|
340
337
|
case 'ObjectTypeAnnotation':
|
|
341
|
-
return
|
|
338
|
+
return wrapOptional('NSDictionary *', isRequired);
|
|
342
339
|
case 'TypeAliasTypeAnnotation':
|
|
343
|
-
return
|
|
340
|
+
return wrapOptional('NSDictionary *', isRequired);
|
|
344
341
|
case 'ArrayTypeAnnotation':
|
|
345
342
|
if (typeAnnotation.elementType == null) {
|
|
346
|
-
return
|
|
343
|
+
return wrapOptional('NSArray<id<NSObject>> *', isRequired);
|
|
347
344
|
}
|
|
348
|
-
return
|
|
345
|
+
return wrapOptional(
|
|
349
346
|
`NSArray<${getReturnObjCType(
|
|
350
347
|
methodName,
|
|
351
348
|
typeAnnotation.elementType,
|
|
352
349
|
)}> *`,
|
|
350
|
+
isRequired,
|
|
353
351
|
);
|
|
354
352
|
case 'ReservedTypeAnnotation':
|
|
355
353
|
switch (typeAnnotation.name) {
|
|
356
354
|
case 'RootTag':
|
|
357
|
-
return
|
|
355
|
+
return wrapOptional('NSNumber *', isRequired);
|
|
358
356
|
default:
|
|
359
357
|
typeAnnotation.name;
|
|
360
358
|
throw new Error(
|
|
@@ -364,23 +362,23 @@ function getReturnObjCType(methodName, nullableTypeAnnotation) {
|
|
|
364
362
|
case 'StringTypeAnnotation':
|
|
365
363
|
// TODO: Can NSString * returns not be _Nullable?
|
|
366
364
|
// In the legacy codegen, we don't surround NSSTring * with _Nullable
|
|
367
|
-
return
|
|
365
|
+
return wrapOptional('NSString *', isRequired);
|
|
368
366
|
case 'NumberTypeAnnotation':
|
|
369
|
-
return
|
|
367
|
+
return wrapOptional('NSNumber *', isRequired);
|
|
370
368
|
case 'FloatTypeAnnotation':
|
|
371
|
-
return
|
|
369
|
+
return wrapOptional('NSNumber *', isRequired);
|
|
372
370
|
case 'DoubleTypeAnnotation':
|
|
373
|
-
return
|
|
371
|
+
return wrapOptional('NSNumber *', isRequired);
|
|
374
372
|
case 'Int32TypeAnnotation':
|
|
375
|
-
return
|
|
373
|
+
return wrapOptional('NSNumber *', isRequired);
|
|
376
374
|
case 'BooleanTypeAnnotation':
|
|
377
|
-
return
|
|
375
|
+
return wrapOptional('NSNumber *', isRequired);
|
|
378
376
|
case 'EnumDeclaration':
|
|
379
377
|
switch (typeAnnotation.memberType) {
|
|
380
378
|
case 'NumberTypeAnnotation':
|
|
381
|
-
return
|
|
379
|
+
return wrapOptional('NSNumber *', isRequired);
|
|
382
380
|
case 'StringTypeAnnotation':
|
|
383
|
-
return
|
|
381
|
+
return wrapOptional('NSString *', isRequired);
|
|
384
382
|
default:
|
|
385
383
|
throw new Error(
|
|
386
384
|
`Unsupported enum return type for ${methodName}. Found: ${typeAnnotation.type}`,
|
|
@@ -389,20 +387,20 @@ function getReturnObjCType(methodName, nullableTypeAnnotation) {
|
|
|
389
387
|
case 'UnionTypeAnnotation':
|
|
390
388
|
switch (typeAnnotation.memberType) {
|
|
391
389
|
case 'NumberTypeAnnotation':
|
|
392
|
-
return
|
|
390
|
+
return wrapOptional('NSNumber *', isRequired);
|
|
393
391
|
case 'ObjectTypeAnnotation':
|
|
394
|
-
return
|
|
392
|
+
return wrapOptional('NSDictionary *', isRequired);
|
|
395
393
|
case 'StringTypeAnnotation':
|
|
396
394
|
// TODO: Can NSString * returns not be _Nullable?
|
|
397
395
|
// In the legacy codegen, we don't surround NSSTring * with _Nullable
|
|
398
|
-
return
|
|
396
|
+
return wrapOptional('NSString *', isRequired);
|
|
399
397
|
default:
|
|
400
398
|
throw new Error(
|
|
401
399
|
`Unsupported union return type for ${methodName}, found: ${typeAnnotation.memberType}"`,
|
|
402
400
|
);
|
|
403
401
|
}
|
|
404
402
|
case 'GenericObjectTypeAnnotation':
|
|
405
|
-
return
|
|
403
|
+
return wrapOptional('NSDictionary *', isRequired);
|
|
406
404
|
default:
|
|
407
405
|
typeAnnotation.type;
|
|
408
406
|
throw new Error(
|