@react-native/codegen 0.74.0 → 0.75.0-nightly-20240221-a1171f79f
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/CodegenSchema.d.ts +10 -1
- package/lib/CodegenSchema.js.flow +2 -1
- package/lib/SchemaValidator.js.flow +2 -2
- package/lib/cli/combine/combine-js-to-schema-cli.js +59 -40
- package/lib/cli/combine/combine-js-to-schema-cli.js.flow +23 -39
- package/lib/cli/combine/combine-js-to-schema.js +49 -1
- package/lib/cli/combine/combine-js-to-schema.js.flow +59 -1
- package/lib/cli/combine/combine-schemas-cli.js +77 -0
- package/lib/cli/combine/combine-schemas-cli.js.flow +87 -0
- package/lib/cli/combine/combine-utils.js +3 -65
- package/lib/cli/combine/combine-utils.js.flow +7 -28
- package/lib/cli/parser/parser.js +1 -1
- package/lib/cli/parser/parser.js.flow +1 -1
- package/lib/generators/RNCodegen.d.ts +1 -0
- package/lib/generators/RNCodegen.js +58 -31
- package/lib/generators/RNCodegen.js.flow +52 -32
- package/lib/generators/TypeUtils/Cxx/index.js +17 -0
- package/lib/generators/TypeUtils/Cxx/index.js.flow +18 -0
- package/lib/generators/TypeUtils/Java/index.js +31 -0
- package/lib/generators/TypeUtils/Java/index.js.flow +27 -0
- package/lib/generators/TypeUtils/Objective-C/index.js +17 -0
- package/lib/generators/TypeUtils/Objective-C/index.js.flow +18 -0
- package/lib/generators/components/ComponentsGeneratorUtils.js +7 -7
- package/lib/generators/components/ComponentsGeneratorUtils.js.flow +8 -10
- package/lib/generators/components/ComponentsProviderUtils.js +55 -0
- package/lib/generators/components/ComponentsProviderUtils.js.flow +60 -0
- package/lib/generators/components/CppHelpers.js +7 -0
- package/lib/generators/components/CppHelpers.js.flow +14 -0
- package/lib/generators/components/GenerateComponentDescriptorCpp.js +89 -0
- package/lib/generators/components/GenerateComponentDescriptorCpp.js.flow +101 -0
- package/lib/generators/components/GenerateComponentDescriptorH.js +28 -12
- package/lib/generators/components/GenerateComponentDescriptorH.js.flow +20 -12
- package/lib/generators/components/GenerateComponentHObjCpp.js +15 -1
- package/lib/generators/components/GenerateComponentHObjCpp.js.flow +11 -2
- package/lib/generators/components/GenerateEventEmitterCpp.js +28 -15
- package/lib/generators/components/GenerateEventEmitterCpp.js.flow +16 -17
- package/lib/generators/components/GenerateEventEmitterH.js +20 -13
- package/lib/generators/components/GenerateEventEmitterH.js.flow +13 -15
- package/lib/generators/components/GeneratePropsCpp.js +17 -8
- package/lib/generators/components/GeneratePropsCpp.js.flow +13 -9
- package/lib/generators/components/GeneratePropsH.js +23 -16
- package/lib/generators/components/GeneratePropsH.js.flow +12 -16
- package/lib/generators/components/GeneratePropsJavaDelegate.js +11 -3
- package/lib/generators/components/GeneratePropsJavaDelegate.js.flow +7 -4
- package/lib/generators/components/GeneratePropsJavaInterface.js +11 -3
- package/lib/generators/components/GeneratePropsJavaInterface.js.flow +6 -3
- package/lib/generators/components/GeneratePropsJavaPojo/PojoCollector.js.flow +6 -6
- package/lib/generators/components/GeneratePropsJavaPojo/index.js +1 -1
- package/lib/generators/components/GeneratePropsJavaPojo/index.js.flow +1 -1
- package/lib/generators/components/GeneratePropsJavaPojo/serializePojo.js.flow +1 -0
- package/lib/generators/components/GenerateShadowNodeCpp.js +19 -8
- package/lib/generators/components/GenerateShadowNodeCpp.js.flow +9 -8
- package/lib/generators/components/GenerateShadowNodeH.js +27 -11
- package/lib/generators/components/GenerateShadowNodeH.js.flow +11 -14
- package/lib/generators/components/GenerateStateCpp.js +19 -8
- package/lib/generators/components/GenerateStateCpp.js.flow +9 -8
- package/lib/generators/components/GenerateStateH.js +9 -5
- package/lib/generators/components/GenerateStateH.js.flow +3 -4
- package/lib/generators/components/GenerateTests.js +11 -5
- package/lib/generators/components/GenerateTests.js.flow +2 -2
- package/lib/generators/components/GenerateThirdPartyFabricComponentsProviderH.js +16 -3
- package/lib/generators/components/GenerateThirdPartyFabricComponentsProviderH.js.flow +18 -3
- package/lib/generators/components/GenerateThirdPartyFabricComponentsProviderObjCpp.js +18 -3
- package/lib/generators/components/GenerateThirdPartyFabricComponentsProviderObjCpp.js.flow +21 -3
- package/lib/generators/components/GenerateViewConfigJs.js +2 -2
- package/lib/generators/components/GenerateViewConfigJs.js.flow +2 -2
- package/lib/generators/components/JavaHelpers.js +8 -0
- package/lib/generators/components/JavaHelpers.js.flow +9 -0
- package/lib/generators/components/__test_fixtures__/fixtures.js +22 -0
- package/lib/generators/components/__test_fixtures__/fixtures.js.flow +22 -0
- package/lib/generators/modules/GenerateModuleCpp.js +14 -10
- package/lib/generators/modules/GenerateModuleCpp.js.flow +9 -10
- package/lib/generators/modules/GenerateModuleH.js +198 -72
- package/lib/generators/modules/GenerateModuleH.js.flow +186 -71
- package/lib/generators/modules/GenerateModuleJavaSpec.js +50 -57
- package/lib/generators/modules/GenerateModuleJavaSpec.js.flow +45 -50
- package/lib/generators/modules/GenerateModuleJniCpp.js +16 -12
- package/lib/generators/modules/GenerateModuleJniCpp.js.flow +11 -12
- package/lib/generators/modules/GenerateModuleJniH.js +12 -5
- package/lib/generators/modules/GenerateModuleJniH.js.flow +8 -6
- package/lib/generators/modules/GenerateModuleObjCpp/StructCollector.js +5 -5
- package/lib/generators/modules/GenerateModuleObjCpp/StructCollector.js.flow +11 -12
- package/lib/generators/modules/GenerateModuleObjCpp/header/serializeConstantsStruct.js +23 -21
- package/lib/generators/modules/GenerateModuleObjCpp/header/serializeConstantsStruct.js.flow +19 -18
- package/lib/generators/modules/GenerateModuleObjCpp/header/serializeRegularStruct.js +23 -21
- package/lib/generators/modules/GenerateModuleObjCpp/header/serializeRegularStruct.js.flow +19 -18
- package/lib/generators/modules/GenerateModuleObjCpp/index.js +18 -20
- package/lib/generators/modules/GenerateModuleObjCpp/index.js.flow +11 -14
- package/lib/generators/modules/GenerateModuleObjCpp/serializeMethod.js +40 -42
- package/lib/generators/modules/GenerateModuleObjCpp/serializeMethod.js.flow +38 -44
- package/lib/generators/modules/GenerateModuleObjCpp/source/serializeModule.js +25 -27
- package/lib/generators/modules/GenerateModuleObjCpp/source/serializeModule.js.flow +26 -28
- package/lib/generators/modules/Utils.js +98 -0
- package/lib/generators/modules/Utils.js.flow +34 -2
- package/lib/generators/modules/__test_fixtures__/fixtures.js +685 -64
- package/lib/generators/modules/__test_fixtures__/fixtures.js.flow +686 -64
- package/lib/parsers/error-utils.js +17 -17
- package/lib/parsers/error-utils.js.flow +10 -10
- package/lib/parsers/errors.js +10 -0
- package/lib/parsers/errors.js.flow +15 -1
- package/lib/parsers/flow/components/__test_fixtures__/fixtures.js +7 -1
- package/lib/parsers/flow/components/__test_fixtures__/fixtures.js.flow +7 -1
- package/lib/parsers/flow/components/commands.js +24 -0
- package/lib/parsers/flow/components/commands.js.flow +45 -3
- package/lib/parsers/flow/components/componentsUtils.js +5 -4
- package/lib/parsers/flow/components/componentsUtils.js.flow +4 -3
- package/lib/parsers/flow/components/events.js +7 -7
- package/lib/parsers/flow/components/events.js.flow +7 -7
- package/lib/parsers/flow/components/index.js +8 -8
- package/lib/parsers/flow/components/index.js.flow +3 -3
- package/lib/parsers/flow/modules/__test_fixtures__/fixtures.js +13 -0
- package/lib/parsers/flow/modules/__test_fixtures__/fixtures.js.flow +13 -0
- package/lib/parsers/flow/modules/index.js +20 -19
- package/lib/parsers/flow/modules/index.js.flow +10 -11
- package/lib/parsers/flow/parseFlowAndThrowErrors.js +105 -0
- package/lib/parsers/flow/parseFlowAndThrowErrors.js.flow +41 -0
- package/lib/parsers/flow/parser.js +24 -25
- package/lib/parsers/flow/parser.js.flow +27 -36
- package/lib/parsers/flow/utils.js.flow +1 -1
- package/lib/parsers/parser.js.flow +12 -10
- package/lib/parsers/parserMock.js +11 -12
- package/lib/parsers/parserMock.js.flow +25 -28
- package/lib/parsers/parsers-commons.js +85 -36
- package/lib/parsers/parsers-commons.js.flow +71 -37
- package/lib/parsers/parsers-primitives.js +17 -17
- package/lib/parsers/parsers-primitives.js.flow +14 -16
- package/lib/parsers/schema.js.flow +3 -3
- package/lib/parsers/typescript/components/__test_fixtures__/fixtures.js +8 -1
- package/lib/parsers/typescript/components/__test_fixtures__/fixtures.js.flow +8 -1
- package/lib/parsers/typescript/components/commands.js +23 -15
- package/lib/parsers/typescript/components/commands.js.flow +24 -16
- package/lib/parsers/typescript/components/componentsUtils.js +34 -20
- package/lib/parsers/typescript/components/componentsUtils.js.flow +36 -19
- package/lib/parsers/typescript/components/events.js +22 -22
- package/lib/parsers/typescript/components/events.js.flow +11 -10
- package/lib/parsers/typescript/components/extends.js.flow +1 -0
- package/lib/parsers/typescript/components/index.js +10 -10
- package/lib/parsers/typescript/components/index.js.flow +4 -4
- package/lib/parsers/typescript/modules/__test_fixtures__/fixtures.js +13 -0
- package/lib/parsers/typescript/modules/__test_fixtures__/fixtures.js.flow +13 -0
- package/lib/parsers/typescript/modules/index.js +25 -20
- package/lib/parsers/typescript/modules/index.js.flow +16 -14
- package/lib/parsers/typescript/parser.js +25 -26
- package/lib/parsers/typescript/parser.js.flow +23 -27
- package/lib/parsers/utils.js +5 -0
- package/lib/parsers/utils.js.flow +6 -1
- package/package.json +8 -6
|
@@ -11,18 +11,19 @@
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
13
|
import type {
|
|
14
|
-
Nullable,
|
|
15
14
|
NamedShape,
|
|
16
|
-
SchemaType,
|
|
17
|
-
NativeModulePropertyShape,
|
|
18
|
-
NativeModuleReturnTypeAnnotation,
|
|
19
15
|
NativeModuleFunctionTypeAnnotation,
|
|
20
16
|
NativeModuleParamTypeAnnotation,
|
|
17
|
+
NativeModulePropertyShape,
|
|
18
|
+
NativeModuleReturnTypeAnnotation,
|
|
19
|
+
Nullable,
|
|
20
|
+
SchemaType,
|
|
21
21
|
} from '../../CodegenSchema';
|
|
22
|
-
|
|
23
22
|
import type {AliasResolver} from './Utils';
|
|
24
|
-
|
|
23
|
+
|
|
25
24
|
const {unwrapNullable} = require('../../parsers/parsers-commons');
|
|
25
|
+
const {wrapOptional} = require('../TypeUtils/Java');
|
|
26
|
+
const {createAliasResolver, getModules} = require('./Utils');
|
|
26
27
|
|
|
27
28
|
type FilesOutput = Map<string, string>;
|
|
28
29
|
|
|
@@ -111,13 +112,8 @@ function translateFunctionParamToJavaType(
|
|
|
111
112
|
const [typeAnnotation, nullable] =
|
|
112
113
|
unwrapNullable<NativeModuleParamTypeAnnotation>(nullableTypeAnnotation);
|
|
113
114
|
const isRequired = !optional && !nullable;
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
if (!isRequired) {
|
|
117
|
-
imports.add('javax.annotation.Nullable');
|
|
118
|
-
return `@Nullable ${nullableType ?? javaType}`;
|
|
119
|
-
}
|
|
120
|
-
return javaType;
|
|
115
|
+
if (!isRequired) {
|
|
116
|
+
imports.add('javax.annotation.Nullable');
|
|
121
117
|
}
|
|
122
118
|
|
|
123
119
|
// FIXME: support class alias for args
|
|
@@ -130,41 +126,41 @@ function translateFunctionParamToJavaType(
|
|
|
130
126
|
case 'ReservedTypeAnnotation':
|
|
131
127
|
switch (realTypeAnnotation.name) {
|
|
132
128
|
case 'RootTag':
|
|
133
|
-
return
|
|
129
|
+
return wrapOptional('double', isRequired);
|
|
134
130
|
default:
|
|
135
131
|
(realTypeAnnotation.name: empty);
|
|
136
132
|
throw new Error(createErrorMessage(realTypeAnnotation.name));
|
|
137
133
|
}
|
|
138
134
|
case 'StringTypeAnnotation':
|
|
139
|
-
return
|
|
135
|
+
return wrapOptional('String', isRequired);
|
|
140
136
|
case 'NumberTypeAnnotation':
|
|
141
|
-
return
|
|
137
|
+
return wrapOptional('double', isRequired);
|
|
142
138
|
case 'FloatTypeAnnotation':
|
|
143
|
-
return
|
|
139
|
+
return wrapOptional('float', isRequired);
|
|
144
140
|
case 'DoubleTypeAnnotation':
|
|
145
|
-
return
|
|
141
|
+
return wrapOptional('double', isRequired);
|
|
146
142
|
case 'Int32TypeAnnotation':
|
|
147
|
-
return
|
|
143
|
+
return wrapOptional('int', isRequired);
|
|
148
144
|
case 'BooleanTypeAnnotation':
|
|
149
|
-
return
|
|
145
|
+
return wrapOptional('boolean', isRequired);
|
|
150
146
|
case 'EnumDeclaration':
|
|
151
147
|
switch (realTypeAnnotation.memberType) {
|
|
152
148
|
case 'NumberTypeAnnotation':
|
|
153
|
-
return
|
|
149
|
+
return wrapOptional('double', isRequired);
|
|
154
150
|
case 'StringTypeAnnotation':
|
|
155
|
-
return
|
|
151
|
+
return wrapOptional('String', isRequired);
|
|
156
152
|
default:
|
|
157
153
|
throw new Error(createErrorMessage(realTypeAnnotation.type));
|
|
158
154
|
}
|
|
159
155
|
case 'UnionTypeAnnotation':
|
|
160
156
|
switch (typeAnnotation.memberType) {
|
|
161
157
|
case 'NumberTypeAnnotation':
|
|
162
|
-
return
|
|
158
|
+
return wrapOptional('double', isRequired);
|
|
163
159
|
case 'ObjectTypeAnnotation':
|
|
164
160
|
imports.add('com.facebook.react.bridge.ReadableMap');
|
|
165
|
-
return
|
|
161
|
+
return wrapOptional('ReadableMap', isRequired);
|
|
166
162
|
case 'StringTypeAnnotation':
|
|
167
|
-
return
|
|
163
|
+
return wrapOptional('String', isRequired);
|
|
168
164
|
default:
|
|
169
165
|
throw new Error(
|
|
170
166
|
`Unsupported union member returning value, found: ${realTypeAnnotation.memberType}"`,
|
|
@@ -172,17 +168,17 @@ function translateFunctionParamToJavaType(
|
|
|
172
168
|
}
|
|
173
169
|
case 'ObjectTypeAnnotation':
|
|
174
170
|
imports.add('com.facebook.react.bridge.ReadableMap');
|
|
175
|
-
return
|
|
171
|
+
return wrapOptional('ReadableMap', isRequired);
|
|
176
172
|
case 'GenericObjectTypeAnnotation':
|
|
177
173
|
// Treat this the same as ObjectTypeAnnotation for now.
|
|
178
174
|
imports.add('com.facebook.react.bridge.ReadableMap');
|
|
179
|
-
return
|
|
175
|
+
return wrapOptional('ReadableMap', isRequired);
|
|
180
176
|
case 'ArrayTypeAnnotation':
|
|
181
177
|
imports.add('com.facebook.react.bridge.ReadableArray');
|
|
182
|
-
return
|
|
178
|
+
return wrapOptional('ReadableArray', isRequired);
|
|
183
179
|
case 'FunctionTypeAnnotation':
|
|
184
180
|
imports.add('com.facebook.react.bridge.Callback');
|
|
185
|
-
return
|
|
181
|
+
return wrapOptional('Callback', isRequired);
|
|
186
182
|
default:
|
|
187
183
|
(realTypeAnnotation.type: 'MixedTypeAnnotation');
|
|
188
184
|
throw new Error(createErrorMessage(realTypeAnnotation.type));
|
|
@@ -200,14 +196,12 @@ function translateFunctionReturnTypeToJavaType(
|
|
|
200
196
|
nullableReturnTypeAnnotation,
|
|
201
197
|
);
|
|
202
198
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
imports.add('javax.annotation.Nullable');
|
|
206
|
-
return `@Nullable ${nullableType ?? javaType}`;
|
|
207
|
-
}
|
|
208
|
-
return javaType;
|
|
199
|
+
if (nullable) {
|
|
200
|
+
imports.add('javax.annotation.Nullable');
|
|
209
201
|
}
|
|
210
202
|
|
|
203
|
+
const isRequired = !nullable;
|
|
204
|
+
|
|
211
205
|
// FIXME: support class alias for args
|
|
212
206
|
let realTypeAnnotation = returnTypeAnnotation;
|
|
213
207
|
if (realTypeAnnotation.type === 'TypeAliasTypeAnnotation') {
|
|
@@ -218,7 +212,7 @@ function translateFunctionReturnTypeToJavaType(
|
|
|
218
212
|
case 'ReservedTypeAnnotation':
|
|
219
213
|
switch (realTypeAnnotation.name) {
|
|
220
214
|
case 'RootTag':
|
|
221
|
-
return
|
|
215
|
+
return wrapOptional('double', isRequired);
|
|
222
216
|
default:
|
|
223
217
|
(realTypeAnnotation.name: empty);
|
|
224
218
|
throw new Error(createErrorMessage(realTypeAnnotation.name));
|
|
@@ -228,35 +222,35 @@ function translateFunctionReturnTypeToJavaType(
|
|
|
228
222
|
case 'PromiseTypeAnnotation':
|
|
229
223
|
return 'void';
|
|
230
224
|
case 'StringTypeAnnotation':
|
|
231
|
-
return
|
|
225
|
+
return wrapOptional('String', isRequired);
|
|
232
226
|
case 'NumberTypeAnnotation':
|
|
233
|
-
return
|
|
227
|
+
return wrapOptional('double', isRequired);
|
|
234
228
|
case 'FloatTypeAnnotation':
|
|
235
|
-
return
|
|
229
|
+
return wrapOptional('double', isRequired);
|
|
236
230
|
case 'DoubleTypeAnnotation':
|
|
237
|
-
return
|
|
231
|
+
return wrapOptional('double', isRequired);
|
|
238
232
|
case 'Int32TypeAnnotation':
|
|
239
|
-
return
|
|
233
|
+
return wrapOptional('double', isRequired);
|
|
240
234
|
case 'BooleanTypeAnnotation':
|
|
241
|
-
return
|
|
235
|
+
return wrapOptional('boolean', isRequired);
|
|
242
236
|
case 'EnumDeclaration':
|
|
243
237
|
switch (realTypeAnnotation.memberType) {
|
|
244
238
|
case 'NumberTypeAnnotation':
|
|
245
|
-
return
|
|
239
|
+
return wrapOptional('double', isRequired);
|
|
246
240
|
case 'StringTypeAnnotation':
|
|
247
|
-
return
|
|
241
|
+
return wrapOptional('String', isRequired);
|
|
248
242
|
default:
|
|
249
243
|
throw new Error(createErrorMessage(realTypeAnnotation.type));
|
|
250
244
|
}
|
|
251
245
|
case 'UnionTypeAnnotation':
|
|
252
246
|
switch (realTypeAnnotation.memberType) {
|
|
253
247
|
case 'NumberTypeAnnotation':
|
|
254
|
-
return
|
|
248
|
+
return wrapOptional('double', isRequired);
|
|
255
249
|
case 'ObjectTypeAnnotation':
|
|
256
250
|
imports.add('com.facebook.react.bridge.WritableMap');
|
|
257
|
-
return
|
|
251
|
+
return wrapOptional('WritableMap', isRequired);
|
|
258
252
|
case 'StringTypeAnnotation':
|
|
259
|
-
return
|
|
253
|
+
return wrapOptional('String', isRequired);
|
|
260
254
|
default:
|
|
261
255
|
throw new Error(
|
|
262
256
|
`Unsupported union member returning value, found: ${realTypeAnnotation.memberType}"`,
|
|
@@ -264,13 +258,13 @@ function translateFunctionReturnTypeToJavaType(
|
|
|
264
258
|
}
|
|
265
259
|
case 'ObjectTypeAnnotation':
|
|
266
260
|
imports.add('com.facebook.react.bridge.WritableMap');
|
|
267
|
-
return
|
|
261
|
+
return wrapOptional('WritableMap', isRequired);
|
|
268
262
|
case 'GenericObjectTypeAnnotation':
|
|
269
263
|
imports.add('com.facebook.react.bridge.WritableMap');
|
|
270
|
-
return
|
|
264
|
+
return wrapOptional('WritableMap', isRequired);
|
|
271
265
|
case 'ArrayTypeAnnotation':
|
|
272
266
|
imports.add('com.facebook.react.bridge.WritableArray');
|
|
273
|
-
return
|
|
267
|
+
return wrapOptional('WritableArray', isRequired);
|
|
274
268
|
default:
|
|
275
269
|
(realTypeAnnotation.type: 'MixedTypeAnnotation');
|
|
276
270
|
throw new Error(createErrorMessage(realTypeAnnotation.type));
|
|
@@ -441,6 +435,7 @@ module.exports = {
|
|
|
441
435
|
schema: SchemaType,
|
|
442
436
|
packageName?: string,
|
|
443
437
|
assumeNonnull: boolean = false,
|
|
438
|
+
headerPrefix?: string,
|
|
444
439
|
): FilesOutput {
|
|
445
440
|
const files = new Map<string, string>();
|
|
446
441
|
const nativeModules = getModules(schema);
|
|
@@ -78,11 +78,11 @@ 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
|
-
|
|
81
|
+
const _require = require('../../parsers/parsers-commons'),
|
|
82
|
+
unwrapNullable = _require.unwrapNullable;
|
|
83
|
+
const _require2 = require('./Utils'),
|
|
84
|
+
createAliasResolver = _require2.createAliasResolver,
|
|
85
|
+
getModules = _require2.getModules;
|
|
86
86
|
const HostFunctionTemplate = ({
|
|
87
87
|
hasteModuleName,
|
|
88
88
|
propertyName,
|
|
@@ -123,8 +123,7 @@ const FileTemplate = ({libraryName, include, modules, moduleLookups}) => {
|
|
|
123
123
|
|
|
124
124
|
#include ${include}
|
|
125
125
|
|
|
126
|
-
namespace facebook {
|
|
127
|
-
namespace react {
|
|
126
|
+
namespace facebook::react {
|
|
128
127
|
|
|
129
128
|
${modules}
|
|
130
129
|
|
|
@@ -133,8 +132,7 @@ ${moduleLookups.map(ModuleLookupTemplate).join('\n')}
|
|
|
133
132
|
return nullptr;
|
|
134
133
|
}
|
|
135
134
|
|
|
136
|
-
} // namespace react
|
|
137
|
-
} // namespace facebook
|
|
135
|
+
} // namespace facebook::react
|
|
138
136
|
`;
|
|
139
137
|
};
|
|
140
138
|
function translateReturnTypeToKind(nullableTypeAnnotation, resolveAlias) {
|
|
@@ -338,9 +336,9 @@ function translateReturnTypeToJniType(nullableTypeAnnotation, resolveAlias) {
|
|
|
338
336
|
case 'DoubleTypeAnnotation':
|
|
339
337
|
return nullable ? 'Ljava/lang/Double;' : 'D';
|
|
340
338
|
case 'FloatTypeAnnotation':
|
|
341
|
-
return nullable ? 'Ljava/lang/
|
|
339
|
+
return nullable ? 'Ljava/lang/Float;' : 'F';
|
|
342
340
|
case 'Int32TypeAnnotation':
|
|
343
|
-
return nullable ? 'Ljava/lang/
|
|
341
|
+
return nullable ? 'Ljava/lang/Integer;' : 'I';
|
|
344
342
|
case 'PromiseTypeAnnotation':
|
|
345
343
|
return 'Lcom/facebook/react/bridge/Promise;';
|
|
346
344
|
case 'GenericObjectTypeAnnotation':
|
|
@@ -415,7 +413,13 @@ function translateMethodForImplementation(
|
|
|
415
413
|
});
|
|
416
414
|
}
|
|
417
415
|
module.exports = {
|
|
418
|
-
generate(
|
|
416
|
+
generate(
|
|
417
|
+
libraryName,
|
|
418
|
+
schema,
|
|
419
|
+
packageName,
|
|
420
|
+
assumeNonnull = false,
|
|
421
|
+
headerPrefix,
|
|
422
|
+
) {
|
|
419
423
|
const nativeModules = getModules(schema);
|
|
420
424
|
const modules = Object.keys(nativeModules)
|
|
421
425
|
.filter(hasteModuleName => {
|
|
@@ -11,18 +11,18 @@
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
13
|
import type {
|
|
14
|
-
Nullable,
|
|
15
14
|
NamedShape,
|
|
16
|
-
|
|
15
|
+
NativeModuleFunctionTypeAnnotation,
|
|
16
|
+
NativeModuleParamTypeAnnotation,
|
|
17
17
|
NativeModulePropertyShape,
|
|
18
18
|
NativeModuleReturnTypeAnnotation,
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
Nullable,
|
|
20
|
+
SchemaType,
|
|
21
21
|
} from '../../CodegenSchema';
|
|
22
|
-
|
|
23
22
|
import type {AliasResolver} from './Utils';
|
|
24
|
-
|
|
23
|
+
|
|
25
24
|
const {unwrapNullable} = require('../../parsers/parsers-commons');
|
|
25
|
+
const {createAliasResolver, getModules} = require('./Utils');
|
|
26
26
|
|
|
27
27
|
type FilesOutput = Map<string, string>;
|
|
28
28
|
|
|
@@ -108,8 +108,7 @@ const FileTemplate = ({
|
|
|
108
108
|
|
|
109
109
|
#include ${include}
|
|
110
110
|
|
|
111
|
-
namespace facebook {
|
|
112
|
-
namespace react {
|
|
111
|
+
namespace facebook::react {
|
|
113
112
|
|
|
114
113
|
${modules}
|
|
115
114
|
|
|
@@ -118,8 +117,7 @@ ${moduleLookups.map(ModuleLookupTemplate).join('\n')}
|
|
|
118
117
|
return nullptr;
|
|
119
118
|
}
|
|
120
119
|
|
|
121
|
-
} // namespace react
|
|
122
|
-
} // namespace facebook
|
|
120
|
+
} // namespace facebook::react
|
|
123
121
|
`;
|
|
124
122
|
};
|
|
125
123
|
|
|
@@ -336,9 +334,9 @@ function translateReturnTypeToJniType(
|
|
|
336
334
|
case 'DoubleTypeAnnotation':
|
|
337
335
|
return nullable ? 'Ljava/lang/Double;' : 'D';
|
|
338
336
|
case 'FloatTypeAnnotation':
|
|
339
|
-
return nullable ? 'Ljava/lang/
|
|
337
|
+
return nullable ? 'Ljava/lang/Float;' : 'F';
|
|
340
338
|
case 'Int32TypeAnnotation':
|
|
341
|
-
return nullable ? 'Ljava/lang/
|
|
339
|
+
return nullable ? 'Ljava/lang/Integer;' : 'I';
|
|
342
340
|
case 'PromiseTypeAnnotation':
|
|
343
341
|
return 'Lcom/facebook/react/bridge/Promise;';
|
|
344
342
|
case 'GenericObjectTypeAnnotation':
|
|
@@ -424,6 +422,7 @@ module.exports = {
|
|
|
424
422
|
schema: SchemaType,
|
|
425
423
|
packageName?: string,
|
|
426
424
|
assumeNonnull: boolean = false,
|
|
425
|
+
headerPrefix?: string,
|
|
427
426
|
): FilesOutput {
|
|
428
427
|
const nativeModules = getModules(schema);
|
|
429
428
|
|
|
@@ -39,16 +39,14 @@ const HeaderFileTemplate = ({modules, libraryName}) => {
|
|
|
39
39
|
#include <ReactCommon/TurboModule.h>
|
|
40
40
|
#include <jsi/jsi.h>
|
|
41
41
|
|
|
42
|
-
namespace facebook {
|
|
43
|
-
namespace react {
|
|
42
|
+
namespace facebook::react {
|
|
44
43
|
|
|
45
44
|
${modules}
|
|
46
45
|
|
|
47
46
|
JSI_EXPORT
|
|
48
47
|
std::shared_ptr<TurboModule> ${libraryName}_ModuleProvider(const std::string &moduleName, const JavaTurboModule::InitParams ¶ms);
|
|
49
48
|
|
|
50
|
-
} // namespace react
|
|
51
|
-
} // namespace facebook
|
|
49
|
+
} // namespace facebook::react
|
|
52
50
|
`;
|
|
53
51
|
};
|
|
54
52
|
|
|
@@ -81,10 +79,13 @@ target_link_libraries(
|
|
|
81
79
|
${libraryName !== 'rncore' ? 'react_codegen_rncore' : ''}
|
|
82
80
|
react_debug
|
|
83
81
|
react_nativemodule_core
|
|
82
|
+
react_render_componentregistry
|
|
84
83
|
react_render_core
|
|
85
84
|
react_render_debug
|
|
86
85
|
react_render_graphics
|
|
87
86
|
react_render_imagemanager
|
|
87
|
+
react_render_mapbuffer
|
|
88
|
+
react_utils
|
|
88
89
|
rrc_image
|
|
89
90
|
rrc_view
|
|
90
91
|
turbomodulejsijni
|
|
@@ -103,7 +104,13 @@ target_compile_options(
|
|
|
103
104
|
`;
|
|
104
105
|
};
|
|
105
106
|
module.exports = {
|
|
106
|
-
generate(
|
|
107
|
+
generate(
|
|
108
|
+
libraryName,
|
|
109
|
+
schema,
|
|
110
|
+
packageName,
|
|
111
|
+
assumeNonnull = false,
|
|
112
|
+
headerPrefix,
|
|
113
|
+
) {
|
|
107
114
|
const nativeModules = getModules(schema);
|
|
108
115
|
const modules = Object.keys(nativeModules)
|
|
109
116
|
.filter(hasteModuleName => {
|
|
@@ -12,10 +12,10 @@
|
|
|
12
12
|
|
|
13
13
|
import type {SchemaType} from '../../CodegenSchema';
|
|
14
14
|
|
|
15
|
-
type FilesOutput = Map<string, string>;
|
|
16
|
-
|
|
17
15
|
const {getModules} = require('./Utils');
|
|
18
16
|
|
|
17
|
+
type FilesOutput = Map<string, string>;
|
|
18
|
+
|
|
19
19
|
const ModuleClassDeclarationTemplate = ({
|
|
20
20
|
hasteModuleName,
|
|
21
21
|
}: $ReadOnly<{hasteModuleName: string}>) => {
|
|
@@ -49,16 +49,14 @@ const HeaderFileTemplate = ({
|
|
|
49
49
|
#include <ReactCommon/TurboModule.h>
|
|
50
50
|
#include <jsi/jsi.h>
|
|
51
51
|
|
|
52
|
-
namespace facebook {
|
|
53
|
-
namespace react {
|
|
52
|
+
namespace facebook::react {
|
|
54
53
|
|
|
55
54
|
${modules}
|
|
56
55
|
|
|
57
56
|
JSI_EXPORT
|
|
58
57
|
std::shared_ptr<TurboModule> ${libraryName}_ModuleProvider(const std::string &moduleName, const JavaTurboModule::InitParams ¶ms);
|
|
59
58
|
|
|
60
|
-
} // namespace react
|
|
61
|
-
} // namespace facebook
|
|
59
|
+
} // namespace facebook::react
|
|
62
60
|
`;
|
|
63
61
|
};
|
|
64
62
|
|
|
@@ -93,10 +91,13 @@ target_link_libraries(
|
|
|
93
91
|
${libraryName !== 'rncore' ? 'react_codegen_rncore' : ''}
|
|
94
92
|
react_debug
|
|
95
93
|
react_nativemodule_core
|
|
94
|
+
react_render_componentregistry
|
|
96
95
|
react_render_core
|
|
97
96
|
react_render_debug
|
|
98
97
|
react_render_graphics
|
|
99
98
|
react_render_imagemanager
|
|
99
|
+
react_render_mapbuffer
|
|
100
|
+
react_utils
|
|
100
101
|
rrc_image
|
|
101
102
|
rrc_view
|
|
102
103
|
turbomodulejsijni
|
|
@@ -121,6 +122,7 @@ module.exports = {
|
|
|
121
122
|
schema: SchemaType,
|
|
122
123
|
packageName?: string,
|
|
123
124
|
assumeNonnull: boolean = false,
|
|
125
|
+
headerPrefix?: string,
|
|
124
126
|
): FilesOutput {
|
|
125
127
|
const nativeModules = getModules(schema);
|
|
126
128
|
const modules = Object.keys(nativeModules)
|
|
@@ -140,11 +140,11 @@ function _toPrimitive(input, hint) {
|
|
|
140
140
|
}
|
|
141
141
|
return (hint === 'string' ? String : Number)(input);
|
|
142
142
|
}
|
|
143
|
-
const _require = require('
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
143
|
+
const _require = require('../../../parsers/parsers-commons'),
|
|
144
|
+
unwrapNullable = _require.unwrapNullable,
|
|
145
|
+
wrapNullable = _require.wrapNullable;
|
|
146
|
+
const _require2 = require('../../Utils'),
|
|
147
|
+
capitalize = _require2.capitalize;
|
|
148
148
|
class StructCollector {
|
|
149
149
|
constructor() {
|
|
150
150
|
_defineProperty(this, '_structs', new Map());
|
|
@@ -11,29 +11,28 @@
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
13
|
import type {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
NativeModuleStringTypeAnnotation,
|
|
17
|
-
NativeModuleNumberTypeAnnotation,
|
|
18
|
-
NativeModuleInt32TypeAnnotation,
|
|
19
|
-
NativeModuleDoubleTypeAnnotation,
|
|
20
|
-
NativeModuleFloatTypeAnnotation,
|
|
14
|
+
NativeModuleArrayTypeAnnotation,
|
|
15
|
+
NativeModuleBaseTypeAnnotation,
|
|
21
16
|
NativeModuleBooleanTypeAnnotation,
|
|
17
|
+
NativeModuleDoubleTypeAnnotation,
|
|
22
18
|
NativeModuleEnumDeclaration,
|
|
19
|
+
NativeModuleFloatTypeAnnotation,
|
|
23
20
|
NativeModuleGenericObjectTypeAnnotation,
|
|
24
|
-
|
|
21
|
+
NativeModuleInt32TypeAnnotation,
|
|
22
|
+
NativeModuleNumberTypeAnnotation,
|
|
23
|
+
NativeModuleObjectTypeAnnotation,
|
|
24
|
+
NativeModuleStringTypeAnnotation,
|
|
25
25
|
NativeModuleTypeAliasTypeAnnotation,
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
Nullable,
|
|
27
|
+
ReservedTypeAnnotation,
|
|
28
28
|
} from '../../../CodegenSchema';
|
|
29
|
-
|
|
30
29
|
import type {AliasResolver} from '../Utils';
|
|
31
30
|
|
|
32
|
-
const {capitalize} = require('../../Utils');
|
|
33
31
|
const {
|
|
34
32
|
unwrapNullable,
|
|
35
33
|
wrapNullable,
|
|
36
34
|
} = require('../../../parsers/parsers-commons');
|
|
35
|
+
const {capitalize} = require('../../Utils');
|
|
37
36
|
|
|
38
37
|
type StructContext = 'CONSTANTS' | 'REGULAR';
|
|
39
38
|
|
|
@@ -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,
|
|
@@ -138,14 +142,11 @@ function toObjCType(
|
|
|
138
142
|
typeAnnotation = _unwrapNullable2[0],
|
|
139
143
|
nullable = _unwrapNullable2[1];
|
|
140
144
|
const isRequired = !nullable && !isOptional;
|
|
141
|
-
const wrapOptional = type => {
|
|
142
|
-
return isRequired ? type : `std::optional<${type}>`;
|
|
143
|
-
};
|
|
144
145
|
switch (typeAnnotation.type) {
|
|
145
146
|
case 'ReservedTypeAnnotation':
|
|
146
147
|
switch (typeAnnotation.name) {
|
|
147
148
|
case 'RootTag':
|
|
148
|
-
return
|
|
149
|
+
return wrapCxxOptional('double', isRequired);
|
|
149
150
|
default:
|
|
150
151
|
typeAnnotation.name;
|
|
151
152
|
throw new Error(`Unknown prop type, found: ${typeAnnotation.name}"`);
|
|
@@ -153,19 +154,19 @@ function toObjCType(
|
|
|
153
154
|
case 'StringTypeAnnotation':
|
|
154
155
|
return 'NSString *';
|
|
155
156
|
case 'NumberTypeAnnotation':
|
|
156
|
-
return
|
|
157
|
+
return wrapCxxOptional('double', isRequired);
|
|
157
158
|
case 'FloatTypeAnnotation':
|
|
158
|
-
return
|
|
159
|
+
return wrapCxxOptional('double', isRequired);
|
|
159
160
|
case 'Int32TypeAnnotation':
|
|
160
|
-
return
|
|
161
|
+
return wrapCxxOptional('double', isRequired);
|
|
161
162
|
case 'DoubleTypeAnnotation':
|
|
162
|
-
return
|
|
163
|
+
return wrapCxxOptional('double', isRequired);
|
|
163
164
|
case 'BooleanTypeAnnotation':
|
|
164
|
-
return
|
|
165
|
+
return wrapCxxOptional('bool', isRequired);
|
|
165
166
|
case 'EnumDeclaration':
|
|
166
167
|
switch (typeAnnotation.memberType) {
|
|
167
168
|
case 'NumberTypeAnnotation':
|
|
168
|
-
return
|
|
169
|
+
return wrapCxxOptional('double', isRequired);
|
|
169
170
|
case 'StringTypeAnnotation':
|
|
170
171
|
return 'NSString *';
|
|
171
172
|
default:
|
|
@@ -174,16 +175,17 @@ function toObjCType(
|
|
|
174
175
|
);
|
|
175
176
|
}
|
|
176
177
|
case 'GenericObjectTypeAnnotation':
|
|
177
|
-
return
|
|
178
|
+
return wrapObjCOptional('id<NSObject>', isRequired);
|
|
178
179
|
case 'ArrayTypeAnnotation':
|
|
179
180
|
if (typeAnnotation.elementType == null) {
|
|
180
|
-
return
|
|
181
|
+
return wrapObjCOptional('id<NSObject>', isRequired);
|
|
181
182
|
}
|
|
182
|
-
return
|
|
183
|
+
return wrapCxxOptional(
|
|
183
184
|
`std::vector<${toObjCType(
|
|
184
185
|
hasteModuleName,
|
|
185
186
|
typeAnnotation.elementType,
|
|
186
187
|
)}>`,
|
|
188
|
+
isRequired,
|
|
187
189
|
);
|
|
188
190
|
case 'TypeAliasTypeAnnotation':
|
|
189
191
|
const structName = capitalize(typeAnnotation.name);
|
|
@@ -191,7 +193,7 @@ function toObjCType(
|
|
|
191
193
|
hasteModuleName,
|
|
192
194
|
structName,
|
|
193
195
|
);
|
|
194
|
-
return
|
|
196
|
+
return wrapCxxOptional(`${namespacedStructName}::Builder`, isRequired);
|
|
195
197
|
default:
|
|
196
198
|
typeAnnotation.type;
|
|
197
199
|
throw new Error(
|