@react-native/codegen 0.84.0-nightly-20251203-a5e6addc6 → 0.84.0-nightly-20251205-95cc1e767
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 +4 -13
- package/lib/CodegenSchema.js.flow +5 -13
- package/lib/cli/combine/combine-js-to-schema.js +6 -8
- package/lib/cli/combine/combine-js-to-schema.js.flow +6 -8
- package/lib/generators/Utils.js +49 -0
- package/lib/generators/Utils.js.flow +58 -0
- package/lib/generators/components/CppHelpers.js +35 -2
- package/lib/generators/components/CppHelpers.js.flow +35 -2
- package/lib/generators/components/GenerateEventEmitterCpp.js +11 -2
- package/lib/generators/components/GenerateEventEmitterCpp.js.flow +11 -2
- package/lib/generators/components/GenerateEventEmitterH.js +24 -9
- package/lib/generators/components/GenerateEventEmitterH.js.flow +24 -10
- package/lib/generators/modules/GenerateModuleH.js +24 -17
- package/lib/generators/modules/GenerateModuleH.js.flow +24 -17
- package/lib/generators/modules/GenerateModuleJavaSpec.js +48 -34
- package/lib/generators/modules/GenerateModuleJavaSpec.js.flow +48 -34
- package/lib/generators/modules/GenerateModuleJniCpp.js +29 -28
- package/lib/generators/modules/GenerateModuleJniCpp.js.flow +29 -28
- package/lib/generators/modules/GenerateModuleObjCpp/StructCollector.js +36 -22
- package/lib/generators/modules/GenerateModuleObjCpp/StructCollector.js.flow +39 -24
- package/lib/generators/modules/GenerateModuleObjCpp/header/serializeConstantsStruct.js +4 -3
- package/lib/generators/modules/GenerateModuleObjCpp/header/serializeConstantsStruct.js.flow +4 -3
- package/lib/generators/modules/GenerateModuleObjCpp/header/serializeRegularStruct.js +7 -4
- package/lib/generators/modules/GenerateModuleObjCpp/header/serializeRegularStruct.js.flow +7 -4
- package/lib/generators/modules/GenerateModuleObjCpp/serializeEventEmitter.js +19 -6
- package/lib/generators/modules/GenerateModuleObjCpp/serializeEventEmitter.js.flow +19 -6
- package/lib/generators/modules/GenerateModuleObjCpp/serializeMethod.js +22 -23
- package/lib/generators/modules/GenerateModuleObjCpp/serializeMethod.js.flow +22 -23
- package/lib/parsers/error-utils.js +1 -1
- package/lib/parsers/error-utils.js.flow +1 -1
- package/lib/parsers/errors.js +0 -15
- package/lib/parsers/errors.js.flow +0 -22
- package/lib/parsers/flow/components/events.js +1 -1
- package/lib/parsers/flow/components/events.js.flow +1 -1
- package/lib/parsers/flow/modules/index.js +12 -1
- package/lib/parsers/flow/modules/index.js.flow +12 -1
- package/lib/parsers/flow/parser.js +0 -3
- package/lib/parsers/flow/parser.js.flow +2 -8
- package/lib/parsers/parser.js.flow +2 -10
- package/lib/parsers/parserMock.js +0 -3
- package/lib/parsers/parserMock.js.flow +2 -8
- package/lib/parsers/parsers-primitives.js +41 -47
- package/lib/parsers/parsers-primitives.js.flow +45 -56
- package/lib/parsers/typescript/components/events.js +1 -1
- package/lib/parsers/typescript/components/events.js.flow +1 -1
- package/lib/parsers/typescript/modules/index.js +12 -1
- package/lib/parsers/typescript/modules/index.js.flow +12 -1
- package/lib/parsers/typescript/parser.js +0 -3
- package/lib/parsers/typescript/parser.js.flow +2 -8
- package/package.json +2 -2
|
@@ -12,7 +12,12 @@
|
|
|
12
12
|
|
|
13
13
|
const {unwrapNullable} = require('../../parsers/parsers-commons');
|
|
14
14
|
const {wrapOptional} = require('../TypeUtils/Cxx');
|
|
15
|
-
const {
|
|
15
|
+
const {
|
|
16
|
+
getEnumName,
|
|
17
|
+
parseValidUnionType,
|
|
18
|
+
toPascalCase,
|
|
19
|
+
toSafeCppString,
|
|
20
|
+
} = require('../Utils');
|
|
16
21
|
const {
|
|
17
22
|
createAliasResolver,
|
|
18
23
|
getModules,
|
|
@@ -60,8 +65,6 @@ function serializeArg(moduleName, arg, index, resolveAlias, enumMap) {
|
|
|
60
65
|
return wrap(val => `${val}.asString(rt)`);
|
|
61
66
|
case 'StringLiteralTypeAnnotation':
|
|
62
67
|
return wrap(val => `${val}.asString(rt)`);
|
|
63
|
-
case 'StringLiteralUnionTypeAnnotation':
|
|
64
|
-
return wrap(val => `${val}.asString(rt)`);
|
|
65
68
|
case 'BooleanTypeAnnotation':
|
|
66
69
|
return wrap(val => `${val}.asBool()`);
|
|
67
70
|
case 'BooleanLiteralTypeAnnotation':
|
|
@@ -94,17 +97,19 @@ function serializeArg(moduleName, arg, index, resolveAlias, enumMap) {
|
|
|
94
97
|
case 'GenericObjectTypeAnnotation':
|
|
95
98
|
return wrap(val => `${val}.asObject(rt)`);
|
|
96
99
|
case 'UnionTypeAnnotation':
|
|
97
|
-
|
|
98
|
-
|
|
100
|
+
const validUnionType = parseValidUnionType(realTypeAnnotation);
|
|
101
|
+
switch (validUnionType) {
|
|
102
|
+
case 'boolean':
|
|
103
|
+
return wrap(val => `${val}.asBool()`);
|
|
104
|
+
case 'number':
|
|
99
105
|
return wrap(val => `${val}.asNumber()`);
|
|
100
|
-
case '
|
|
106
|
+
case 'object':
|
|
101
107
|
return wrap(val => `${val}.asObject(rt)`);
|
|
102
|
-
case '
|
|
108
|
+
case 'string':
|
|
103
109
|
return wrap(val => `${val}.asString(rt)`);
|
|
104
110
|
default:
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
);
|
|
111
|
+
validUnionType;
|
|
112
|
+
throw new Error(`Unsupported union member type`);
|
|
108
113
|
}
|
|
109
114
|
case 'ObjectTypeAnnotation':
|
|
110
115
|
return wrap(val => `${val}.asObject(rt)`);
|
|
@@ -203,8 +208,6 @@ function translatePrimitiveJSTypeToCpp(
|
|
|
203
208
|
return wrapOptional('jsi::String', isRequired);
|
|
204
209
|
case 'StringLiteralTypeAnnotation':
|
|
205
210
|
return wrapOptional('jsi::String', isRequired);
|
|
206
|
-
case 'StringLiteralUnionTypeAnnotation':
|
|
207
|
-
return wrapOptional('jsi::String', isRequired);
|
|
208
211
|
case 'NumberTypeAnnotation':
|
|
209
212
|
return wrapOptional('double', isRequired);
|
|
210
213
|
case 'NumberLiteralTypeAnnotation':
|
|
@@ -231,15 +234,19 @@ function translatePrimitiveJSTypeToCpp(
|
|
|
231
234
|
case 'GenericObjectTypeAnnotation':
|
|
232
235
|
return wrapOptional('jsi::Object', isRequired);
|
|
233
236
|
case 'UnionTypeAnnotation':
|
|
234
|
-
|
|
235
|
-
|
|
237
|
+
const validUnionType = parseValidUnionType(realTypeAnnotation);
|
|
238
|
+
switch (validUnionType) {
|
|
239
|
+
case 'boolean':
|
|
240
|
+
return wrapOptional('bool', isRequired);
|
|
241
|
+
case 'number':
|
|
236
242
|
return wrapOptional('double', isRequired);
|
|
237
|
-
case '
|
|
243
|
+
case 'object':
|
|
238
244
|
return wrapOptional('jsi::Object', isRequired);
|
|
239
|
-
case '
|
|
245
|
+
case 'string':
|
|
240
246
|
return wrapOptional('jsi::String', isRequired);
|
|
241
247
|
default:
|
|
242
|
-
|
|
248
|
+
validUnionType;
|
|
249
|
+
throw new Error(`Unsupported union member type`);
|
|
243
250
|
}
|
|
244
251
|
case 'ObjectTypeAnnotation':
|
|
245
252
|
return wrapOptional('jsi::Object', isRequired);
|
|
@@ -29,7 +29,12 @@ import type {AliasResolver} from './Utils';
|
|
|
29
29
|
|
|
30
30
|
const {unwrapNullable} = require('../../parsers/parsers-commons');
|
|
31
31
|
const {wrapOptional} = require('../TypeUtils/Cxx');
|
|
32
|
-
const {
|
|
32
|
+
const {
|
|
33
|
+
getEnumName,
|
|
34
|
+
parseValidUnionType,
|
|
35
|
+
toPascalCase,
|
|
36
|
+
toSafeCppString,
|
|
37
|
+
} = require('../Utils');
|
|
33
38
|
const {
|
|
34
39
|
createAliasResolver,
|
|
35
40
|
getModules,
|
|
@@ -92,8 +97,6 @@ function serializeArg(
|
|
|
92
97
|
return wrap(val => `${val}.asString(rt)`);
|
|
93
98
|
case 'StringLiteralTypeAnnotation':
|
|
94
99
|
return wrap(val => `${val}.asString(rt)`);
|
|
95
|
-
case 'StringLiteralUnionTypeAnnotation':
|
|
96
|
-
return wrap(val => `${val}.asString(rt)`);
|
|
97
100
|
case 'BooleanTypeAnnotation':
|
|
98
101
|
return wrap(val => `${val}.asBool()`);
|
|
99
102
|
case 'BooleanLiteralTypeAnnotation':
|
|
@@ -126,17 +129,19 @@ function serializeArg(
|
|
|
126
129
|
case 'GenericObjectTypeAnnotation':
|
|
127
130
|
return wrap(val => `${val}.asObject(rt)`);
|
|
128
131
|
case 'UnionTypeAnnotation':
|
|
129
|
-
|
|
130
|
-
|
|
132
|
+
const validUnionType = parseValidUnionType(realTypeAnnotation);
|
|
133
|
+
switch (validUnionType) {
|
|
134
|
+
case 'boolean':
|
|
135
|
+
return wrap(val => `${val}.asBool()`);
|
|
136
|
+
case 'number':
|
|
131
137
|
return wrap(val => `${val}.asNumber()`);
|
|
132
|
-
case '
|
|
138
|
+
case 'object':
|
|
133
139
|
return wrap(val => `${val}.asObject(rt)`);
|
|
134
|
-
case '
|
|
140
|
+
case 'string':
|
|
135
141
|
return wrap(val => `${val}.asString(rt)`);
|
|
136
142
|
default:
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
);
|
|
143
|
+
(validUnionType: empty);
|
|
144
|
+
throw new Error(`Unsupported union member type`);
|
|
140
145
|
}
|
|
141
146
|
case 'ObjectTypeAnnotation':
|
|
142
147
|
return wrap(val => `${val}.asObject(rt)`);
|
|
@@ -253,8 +258,6 @@ function translatePrimitiveJSTypeToCpp(
|
|
|
253
258
|
return wrapOptional('jsi::String', isRequired);
|
|
254
259
|
case 'StringLiteralTypeAnnotation':
|
|
255
260
|
return wrapOptional('jsi::String', isRequired);
|
|
256
|
-
case 'StringLiteralUnionTypeAnnotation':
|
|
257
|
-
return wrapOptional('jsi::String', isRequired);
|
|
258
261
|
case 'NumberTypeAnnotation':
|
|
259
262
|
return wrapOptional('double', isRequired);
|
|
260
263
|
case 'NumberLiteralTypeAnnotation':
|
|
@@ -281,15 +284,19 @@ function translatePrimitiveJSTypeToCpp(
|
|
|
281
284
|
case 'GenericObjectTypeAnnotation':
|
|
282
285
|
return wrapOptional('jsi::Object', isRequired);
|
|
283
286
|
case 'UnionTypeAnnotation':
|
|
284
|
-
|
|
285
|
-
|
|
287
|
+
const validUnionType = parseValidUnionType(realTypeAnnotation);
|
|
288
|
+
switch (validUnionType) {
|
|
289
|
+
case 'boolean':
|
|
290
|
+
return wrapOptional('bool', isRequired);
|
|
291
|
+
case 'number':
|
|
286
292
|
return wrapOptional('double', isRequired);
|
|
287
|
-
case '
|
|
293
|
+
case 'object':
|
|
288
294
|
return wrapOptional('jsi::Object', isRequired);
|
|
289
|
-
case '
|
|
295
|
+
case 'string':
|
|
290
296
|
return wrapOptional('jsi::String', isRequired);
|
|
291
297
|
default:
|
|
292
|
-
|
|
298
|
+
(validUnionType: empty);
|
|
299
|
+
throw new Error(`Unsupported union member type`);
|
|
293
300
|
}
|
|
294
301
|
case 'ObjectTypeAnnotation':
|
|
295
302
|
return wrapOptional('jsi::Object', isRequired);
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
const {unwrapNullable} = require('../../parsers/parsers-commons');
|
|
14
14
|
const {wrapOptional} = require('../TypeUtils/Java');
|
|
15
|
-
const {toPascalCase} = require('../Utils');
|
|
15
|
+
const {parseValidUnionType, toPascalCase} = require('../Utils');
|
|
16
16
|
const {createAliasResolver, getModules} = require('./Utils');
|
|
17
17
|
function FileTemplate(config) {
|
|
18
18
|
const {packageName, className, jsName, eventEmitters, methods, imports} =
|
|
@@ -73,14 +73,28 @@ function MethodTemplate(config) {
|
|
|
73
73
|
public ${methodQualifier}${translatedReturnType} ${methodName}(${traversedArgs.join(', ')})${methodClosing}`;
|
|
74
74
|
}
|
|
75
75
|
function translateEventEmitterTypeToJavaType(eventEmitter, imports) {
|
|
76
|
-
const
|
|
77
|
-
switch (type) {
|
|
76
|
+
const typeAnnotation = eventEmitter.typeAnnotation.typeAnnotation;
|
|
77
|
+
switch (typeAnnotation.type) {
|
|
78
78
|
case 'StringTypeAnnotation':
|
|
79
79
|
return 'String';
|
|
80
80
|
case 'StringLiteralTypeAnnotation':
|
|
81
81
|
return 'String';
|
|
82
|
-
case '
|
|
83
|
-
|
|
82
|
+
case 'UnionTypeAnnotation':
|
|
83
|
+
const validUnionType = parseValidUnionType(typeAnnotation);
|
|
84
|
+
switch (validUnionType) {
|
|
85
|
+
case 'boolean':
|
|
86
|
+
return 'boolean';
|
|
87
|
+
case 'number':
|
|
88
|
+
return 'double';
|
|
89
|
+
case 'object':
|
|
90
|
+
imports.add('com.facebook.react.bridge.ReadableMap');
|
|
91
|
+
return 'ReadableMap';
|
|
92
|
+
case 'string':
|
|
93
|
+
return 'String';
|
|
94
|
+
default:
|
|
95
|
+
validUnionType;
|
|
96
|
+
throw new Error(`Unsupported union member type`);
|
|
97
|
+
}
|
|
84
98
|
case 'NumberTypeAnnotation':
|
|
85
99
|
case 'NumberLiteralTypeAnnotation':
|
|
86
100
|
case 'FloatTypeAnnotation':
|
|
@@ -107,7 +121,7 @@ function translateEventEmitterTypeToJavaType(eventEmitter, imports) {
|
|
|
107
121
|
`Unsupported eventType for ${eventEmitter.name}. Found: ${eventEmitter.typeAnnotation.typeAnnotation.type}`,
|
|
108
122
|
);
|
|
109
123
|
default:
|
|
110
|
-
type;
|
|
124
|
+
typeAnnotation.type;
|
|
111
125
|
throw new Error(
|
|
112
126
|
`Unsupported eventType for ${eventEmitter.name}. Found: ${eventEmitter.typeAnnotation.typeAnnotation.type}`,
|
|
113
127
|
);
|
|
@@ -144,8 +158,6 @@ function translateFunctionParamToJavaType(
|
|
|
144
158
|
return wrapOptional('String', isRequired);
|
|
145
159
|
case 'StringLiteralTypeAnnotation':
|
|
146
160
|
return wrapOptional('String', isRequired);
|
|
147
|
-
case 'StringLiteralUnionTypeAnnotation':
|
|
148
|
-
return wrapOptional('String', isRequired);
|
|
149
161
|
case 'NumberTypeAnnotation':
|
|
150
162
|
return wrapOptional('double', isRequired);
|
|
151
163
|
case 'NumberLiteralTypeAnnotation':
|
|
@@ -170,18 +182,20 @@ function translateFunctionParamToJavaType(
|
|
|
170
182
|
throw new Error(createErrorMessage(realTypeAnnotation.type));
|
|
171
183
|
}
|
|
172
184
|
case 'UnionTypeAnnotation':
|
|
173
|
-
|
|
174
|
-
|
|
185
|
+
const validUnionType = parseValidUnionType(realTypeAnnotation);
|
|
186
|
+
switch (validUnionType) {
|
|
187
|
+
case 'boolean':
|
|
188
|
+
return wrapOptional('boolean', isRequired);
|
|
189
|
+
case 'number':
|
|
175
190
|
return wrapOptional('double', isRequired);
|
|
176
|
-
case '
|
|
191
|
+
case 'object':
|
|
177
192
|
imports.add('com.facebook.react.bridge.ReadableMap');
|
|
178
193
|
return wrapOptional('ReadableMap', isRequired);
|
|
179
|
-
case '
|
|
194
|
+
case 'string':
|
|
180
195
|
return wrapOptional('String', isRequired);
|
|
181
196
|
default:
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
);
|
|
197
|
+
validUnionType;
|
|
198
|
+
throw new Error(`Unsupported union member type`);
|
|
185
199
|
}
|
|
186
200
|
case 'ObjectTypeAnnotation':
|
|
187
201
|
imports.add('com.facebook.react.bridge.ReadableMap');
|
|
@@ -237,8 +251,6 @@ function translateFunctionReturnTypeToJavaType(
|
|
|
237
251
|
return wrapOptional('String', isRequired);
|
|
238
252
|
case 'StringLiteralTypeAnnotation':
|
|
239
253
|
return wrapOptional('String', isRequired);
|
|
240
|
-
case 'StringLiteralUnionTypeAnnotation':
|
|
241
|
-
return wrapOptional('String', isRequired);
|
|
242
254
|
case 'NumberTypeAnnotation':
|
|
243
255
|
return wrapOptional('double', isRequired);
|
|
244
256
|
case 'NumberLiteralTypeAnnotation':
|
|
@@ -263,18 +275,20 @@ function translateFunctionReturnTypeToJavaType(
|
|
|
263
275
|
throw new Error(createErrorMessage(realTypeAnnotation.type));
|
|
264
276
|
}
|
|
265
277
|
case 'UnionTypeAnnotation':
|
|
266
|
-
|
|
267
|
-
|
|
278
|
+
const validUnionType = parseValidUnionType(realTypeAnnotation);
|
|
279
|
+
switch (validUnionType) {
|
|
280
|
+
case 'boolean':
|
|
281
|
+
return wrapOptional('boolean', isRequired);
|
|
282
|
+
case 'number':
|
|
268
283
|
return wrapOptional('double', isRequired);
|
|
269
|
-
case '
|
|
284
|
+
case 'object':
|
|
270
285
|
imports.add('com.facebook.react.bridge.WritableMap');
|
|
271
|
-
return wrapOptional('
|
|
272
|
-
case '
|
|
286
|
+
return wrapOptional('ReadableMap', isRequired);
|
|
287
|
+
case 'string':
|
|
273
288
|
return wrapOptional('String', isRequired);
|
|
274
289
|
default:
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
);
|
|
290
|
+
validUnionType;
|
|
291
|
+
throw new Error(`Unsupported union member type`);
|
|
278
292
|
}
|
|
279
293
|
case 'ObjectTypeAnnotation':
|
|
280
294
|
imports.add('com.facebook.react.bridge.WritableMap');
|
|
@@ -339,24 +353,24 @@ function getFalsyReturnStatementFromReturnType(
|
|
|
339
353
|
throw new Error(createErrorMessage(realTypeAnnotation.type));
|
|
340
354
|
}
|
|
341
355
|
case 'UnionTypeAnnotation':
|
|
342
|
-
|
|
343
|
-
|
|
356
|
+
const validUnionType = parseValidUnionType(realTypeAnnotation);
|
|
357
|
+
switch (validUnionType) {
|
|
358
|
+
case 'boolean':
|
|
359
|
+
return nullable ? 'return null;' : 'return false;';
|
|
360
|
+
case 'number':
|
|
344
361
|
return nullable ? 'return null;' : 'return 0;';
|
|
345
|
-
case '
|
|
362
|
+
case 'object':
|
|
346
363
|
return 'return null;';
|
|
347
|
-
case '
|
|
364
|
+
case 'string':
|
|
348
365
|
return nullable ? 'return null;' : 'return "";';
|
|
349
366
|
default:
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
);
|
|
367
|
+
validUnionType;
|
|
368
|
+
throw new Error(`Unsupported union member type`);
|
|
353
369
|
}
|
|
354
370
|
case 'StringTypeAnnotation':
|
|
355
371
|
return nullable ? 'return null;' : 'return "";';
|
|
356
372
|
case 'StringLiteralTypeAnnotation':
|
|
357
373
|
return nullable ? 'return null;' : 'return "";';
|
|
358
|
-
case 'StringLiteralUnionTypeAnnotation':
|
|
359
|
-
return nullable ? 'return null;' : 'return "";';
|
|
360
374
|
case 'ObjectTypeAnnotation':
|
|
361
375
|
return 'return null;';
|
|
362
376
|
case 'GenericObjectTypeAnnotation':
|
|
@@ -24,7 +24,7 @@ import type {AliasResolver} from './Utils';
|
|
|
24
24
|
|
|
25
25
|
const {unwrapNullable} = require('../../parsers/parsers-commons');
|
|
26
26
|
const {wrapOptional} = require('../TypeUtils/Java');
|
|
27
|
-
const {toPascalCase} = require('../Utils');
|
|
27
|
+
const {parseValidUnionType, toPascalCase} = require('../Utils');
|
|
28
28
|
const {createAliasResolver, getModules} = require('./Utils');
|
|
29
29
|
|
|
30
30
|
type FilesOutput = Map<string, string>;
|
|
@@ -127,14 +127,28 @@ function translateEventEmitterTypeToJavaType(
|
|
|
127
127
|
eventEmitter: NativeModuleEventEmitterShape,
|
|
128
128
|
imports: Set<string>,
|
|
129
129
|
): string {
|
|
130
|
-
const
|
|
131
|
-
switch (type) {
|
|
130
|
+
const typeAnnotation = eventEmitter.typeAnnotation.typeAnnotation;
|
|
131
|
+
switch (typeAnnotation.type) {
|
|
132
132
|
case 'StringTypeAnnotation':
|
|
133
133
|
return 'String';
|
|
134
134
|
case 'StringLiteralTypeAnnotation':
|
|
135
135
|
return 'String';
|
|
136
|
-
case '
|
|
137
|
-
|
|
136
|
+
case 'UnionTypeAnnotation':
|
|
137
|
+
const validUnionType = parseValidUnionType(typeAnnotation);
|
|
138
|
+
switch (validUnionType) {
|
|
139
|
+
case 'boolean':
|
|
140
|
+
return 'boolean';
|
|
141
|
+
case 'number':
|
|
142
|
+
return 'double';
|
|
143
|
+
case 'object':
|
|
144
|
+
imports.add('com.facebook.react.bridge.ReadableMap');
|
|
145
|
+
return 'ReadableMap';
|
|
146
|
+
case 'string':
|
|
147
|
+
return 'String';
|
|
148
|
+
default:
|
|
149
|
+
(validUnionType: empty);
|
|
150
|
+
throw new Error(`Unsupported union member type`);
|
|
151
|
+
}
|
|
138
152
|
case 'NumberTypeAnnotation':
|
|
139
153
|
case 'NumberLiteralTypeAnnotation':
|
|
140
154
|
case 'FloatTypeAnnotation':
|
|
@@ -161,7 +175,7 @@ function translateEventEmitterTypeToJavaType(
|
|
|
161
175
|
`Unsupported eventType for ${eventEmitter.name}. Found: ${eventEmitter.typeAnnotation.typeAnnotation.type}`,
|
|
162
176
|
);
|
|
163
177
|
default:
|
|
164
|
-
(type: empty);
|
|
178
|
+
(typeAnnotation.type: empty);
|
|
165
179
|
throw new Error(
|
|
166
180
|
`Unsupported eventType for ${eventEmitter.name}. Found: ${eventEmitter.typeAnnotation.typeAnnotation.type}`,
|
|
167
181
|
);
|
|
@@ -201,8 +215,6 @@ function translateFunctionParamToJavaType(
|
|
|
201
215
|
return wrapOptional('String', isRequired);
|
|
202
216
|
case 'StringLiteralTypeAnnotation':
|
|
203
217
|
return wrapOptional('String', isRequired);
|
|
204
|
-
case 'StringLiteralUnionTypeAnnotation':
|
|
205
|
-
return wrapOptional('String', isRequired);
|
|
206
218
|
case 'NumberTypeAnnotation':
|
|
207
219
|
return wrapOptional('double', isRequired);
|
|
208
220
|
case 'NumberLiteralTypeAnnotation':
|
|
@@ -227,18 +239,20 @@ function translateFunctionParamToJavaType(
|
|
|
227
239
|
throw new Error(createErrorMessage(realTypeAnnotation.type));
|
|
228
240
|
}
|
|
229
241
|
case 'UnionTypeAnnotation':
|
|
230
|
-
|
|
231
|
-
|
|
242
|
+
const validUnionType = parseValidUnionType(realTypeAnnotation);
|
|
243
|
+
switch (validUnionType) {
|
|
244
|
+
case 'boolean':
|
|
245
|
+
return wrapOptional('boolean', isRequired);
|
|
246
|
+
case 'number':
|
|
232
247
|
return wrapOptional('double', isRequired);
|
|
233
|
-
case '
|
|
248
|
+
case 'object':
|
|
234
249
|
imports.add('com.facebook.react.bridge.ReadableMap');
|
|
235
250
|
return wrapOptional('ReadableMap', isRequired);
|
|
236
|
-
case '
|
|
251
|
+
case 'string':
|
|
237
252
|
return wrapOptional('String', isRequired);
|
|
238
253
|
default:
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
);
|
|
254
|
+
(validUnionType: empty);
|
|
255
|
+
throw new Error(`Unsupported union member type`);
|
|
242
256
|
}
|
|
243
257
|
case 'ObjectTypeAnnotation':
|
|
244
258
|
imports.add('com.facebook.react.bridge.ReadableMap');
|
|
@@ -299,8 +313,6 @@ function translateFunctionReturnTypeToJavaType(
|
|
|
299
313
|
return wrapOptional('String', isRequired);
|
|
300
314
|
case 'StringLiteralTypeAnnotation':
|
|
301
315
|
return wrapOptional('String', isRequired);
|
|
302
|
-
case 'StringLiteralUnionTypeAnnotation':
|
|
303
|
-
return wrapOptional('String', isRequired);
|
|
304
316
|
case 'NumberTypeAnnotation':
|
|
305
317
|
return wrapOptional('double', isRequired);
|
|
306
318
|
case 'NumberLiteralTypeAnnotation':
|
|
@@ -325,18 +337,20 @@ function translateFunctionReturnTypeToJavaType(
|
|
|
325
337
|
throw new Error(createErrorMessage(realTypeAnnotation.type));
|
|
326
338
|
}
|
|
327
339
|
case 'UnionTypeAnnotation':
|
|
328
|
-
|
|
329
|
-
|
|
340
|
+
const validUnionType = parseValidUnionType(realTypeAnnotation);
|
|
341
|
+
switch (validUnionType) {
|
|
342
|
+
case 'boolean':
|
|
343
|
+
return wrapOptional('boolean', isRequired);
|
|
344
|
+
case 'number':
|
|
330
345
|
return wrapOptional('double', isRequired);
|
|
331
|
-
case '
|
|
346
|
+
case 'object':
|
|
332
347
|
imports.add('com.facebook.react.bridge.WritableMap');
|
|
333
|
-
return wrapOptional('
|
|
334
|
-
case '
|
|
348
|
+
return wrapOptional('ReadableMap', isRequired);
|
|
349
|
+
case 'string':
|
|
335
350
|
return wrapOptional('String', isRequired);
|
|
336
351
|
default:
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
);
|
|
352
|
+
(validUnionType: empty);
|
|
353
|
+
throw new Error(`Unsupported union member type`);
|
|
340
354
|
}
|
|
341
355
|
case 'ObjectTypeAnnotation':
|
|
342
356
|
imports.add('com.facebook.react.bridge.WritableMap');
|
|
@@ -405,24 +419,24 @@ function getFalsyReturnStatementFromReturnType(
|
|
|
405
419
|
throw new Error(createErrorMessage(realTypeAnnotation.type));
|
|
406
420
|
}
|
|
407
421
|
case 'UnionTypeAnnotation':
|
|
408
|
-
|
|
409
|
-
|
|
422
|
+
const validUnionType = parseValidUnionType(realTypeAnnotation);
|
|
423
|
+
switch (validUnionType) {
|
|
424
|
+
case 'boolean':
|
|
425
|
+
return nullable ? 'return null;' : 'return false;';
|
|
426
|
+
case 'number':
|
|
410
427
|
return nullable ? 'return null;' : 'return 0;';
|
|
411
|
-
case '
|
|
428
|
+
case 'object':
|
|
412
429
|
return 'return null;';
|
|
413
|
-
case '
|
|
430
|
+
case 'string':
|
|
414
431
|
return nullable ? 'return null;' : 'return "";';
|
|
415
432
|
default:
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
);
|
|
433
|
+
(validUnionType: empty);
|
|
434
|
+
throw new Error(`Unsupported union member type`);
|
|
419
435
|
}
|
|
420
436
|
case 'StringTypeAnnotation':
|
|
421
437
|
return nullable ? 'return null;' : 'return "";';
|
|
422
438
|
case 'StringLiteralTypeAnnotation':
|
|
423
439
|
return nullable ? 'return null;' : 'return "";';
|
|
424
|
-
case 'StringLiteralUnionTypeAnnotation':
|
|
425
|
-
return nullable ? 'return null;' : 'return "";';
|
|
426
440
|
case 'ObjectTypeAnnotation':
|
|
427
441
|
return 'return null;';
|
|
428
442
|
case 'GenericObjectTypeAnnotation':
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
13
|
const {unwrapNullable} = require('../../parsers/parsers-commons');
|
|
14
|
+
const {parseValidUnionType} = require('../Utils');
|
|
14
15
|
const {createAliasResolver, getModules} = require('./Utils');
|
|
15
16
|
const HostFunctionTemplate = ({
|
|
16
17
|
hasteModuleName,
|
|
@@ -105,8 +106,6 @@ function translateReturnTypeToKind(nullableTypeAnnotation, resolveAlias) {
|
|
|
105
106
|
return 'StringKind';
|
|
106
107
|
case 'StringLiteralTypeAnnotation':
|
|
107
108
|
return 'StringKind';
|
|
108
|
-
case 'StringLiteralUnionTypeAnnotation':
|
|
109
|
-
return 'StringKind';
|
|
110
109
|
case 'BooleanTypeAnnotation':
|
|
111
110
|
return 'BooleanKind';
|
|
112
111
|
case 'BooleanLiteralTypeAnnotation':
|
|
@@ -123,17 +122,19 @@ function translateReturnTypeToKind(nullableTypeAnnotation, resolveAlias) {
|
|
|
123
122
|
);
|
|
124
123
|
}
|
|
125
124
|
case 'UnionTypeAnnotation':
|
|
126
|
-
|
|
127
|
-
|
|
125
|
+
const validUnionType = parseValidUnionType(realTypeAnnotation);
|
|
126
|
+
switch (validUnionType) {
|
|
127
|
+
case 'boolean':
|
|
128
|
+
return 'BooleanKind';
|
|
129
|
+
case 'number':
|
|
128
130
|
return 'NumberKind';
|
|
129
|
-
case '
|
|
131
|
+
case 'object':
|
|
130
132
|
return 'ObjectKind';
|
|
131
|
-
case '
|
|
133
|
+
case 'string':
|
|
132
134
|
return 'StringKind';
|
|
133
135
|
default:
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
);
|
|
136
|
+
validUnionType;
|
|
137
|
+
throw new Error(`Unsupported union member type`);
|
|
137
138
|
}
|
|
138
139
|
case 'NumberTypeAnnotation':
|
|
139
140
|
return 'NumberKind';
|
|
@@ -183,8 +184,6 @@ function translateParamTypeToJniType(param, resolveAlias) {
|
|
|
183
184
|
return 'Ljava/lang/String;';
|
|
184
185
|
case 'StringLiteralTypeAnnotation':
|
|
185
186
|
return 'Ljava/lang/String;';
|
|
186
|
-
case 'StringLiteralUnionTypeAnnotation':
|
|
187
|
-
return 'Ljava/lang/String;';
|
|
188
187
|
case 'BooleanTypeAnnotation':
|
|
189
188
|
return !isRequired ? 'Ljava/lang/Boolean;' : 'Z';
|
|
190
189
|
case 'BooleanLiteralTypeAnnotation':
|
|
@@ -201,17 +200,19 @@ function translateParamTypeToJniType(param, resolveAlias) {
|
|
|
201
200
|
);
|
|
202
201
|
}
|
|
203
202
|
case 'UnionTypeAnnotation':
|
|
204
|
-
|
|
205
|
-
|
|
203
|
+
const validUnionType = parseValidUnionType(realTypeAnnotation);
|
|
204
|
+
switch (validUnionType) {
|
|
205
|
+
case 'boolean':
|
|
206
|
+
return !isRequired ? 'Ljava/lang/Boolean;' : 'Z';
|
|
207
|
+
case 'number':
|
|
206
208
|
return !isRequired ? 'Ljava/lang/Double;' : 'D';
|
|
207
|
-
case '
|
|
209
|
+
case 'object':
|
|
208
210
|
return 'Lcom/facebook/react/bridge/ReadableMap;';
|
|
209
|
-
case '
|
|
211
|
+
case 'string':
|
|
210
212
|
return 'Ljava/lang/String;';
|
|
211
213
|
default:
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
);
|
|
214
|
+
validUnionType;
|
|
215
|
+
throw new Error(`Unsupported union member type`);
|
|
215
216
|
}
|
|
216
217
|
case 'NumberTypeAnnotation':
|
|
217
218
|
return !isRequired ? 'Ljava/lang/Double;' : 'D';
|
|
@@ -261,8 +262,6 @@ function translateReturnTypeToJniType(nullableTypeAnnotation, resolveAlias) {
|
|
|
261
262
|
return 'Ljava/lang/String;';
|
|
262
263
|
case 'StringLiteralTypeAnnotation':
|
|
263
264
|
return 'Ljava/lang/String;';
|
|
264
|
-
case 'StringLiteralUnionTypeAnnotation':
|
|
265
|
-
return 'Ljava/lang/String;';
|
|
266
265
|
case 'BooleanTypeAnnotation':
|
|
267
266
|
return nullable ? 'Ljava/lang/Boolean;' : 'Z';
|
|
268
267
|
case 'BooleanLiteralTypeAnnotation':
|
|
@@ -279,17 +278,19 @@ function translateReturnTypeToJniType(nullableTypeAnnotation, resolveAlias) {
|
|
|
279
278
|
);
|
|
280
279
|
}
|
|
281
280
|
case 'UnionTypeAnnotation':
|
|
282
|
-
|
|
283
|
-
|
|
281
|
+
const validUnionType = parseValidUnionType(realTypeAnnotation);
|
|
282
|
+
switch (validUnionType) {
|
|
283
|
+
case 'boolean':
|
|
284
|
+
return nullable ? 'Ljava/lang/Boolean;' : 'Z';
|
|
285
|
+
case 'number':
|
|
284
286
|
return nullable ? 'Ljava/lang/Double;' : 'D';
|
|
285
|
-
case '
|
|
286
|
-
return 'Lcom/facebook/react/bridge/
|
|
287
|
-
case '
|
|
287
|
+
case 'object':
|
|
288
|
+
return 'Lcom/facebook/react/bridge/ReadableMap;';
|
|
289
|
+
case 'string':
|
|
288
290
|
return 'Ljava/lang/String;';
|
|
289
291
|
default:
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
);
|
|
292
|
+
validUnionType;
|
|
293
|
+
throw new Error(`Unsupported union member type`);
|
|
293
294
|
}
|
|
294
295
|
case 'NumberTypeAnnotation':
|
|
295
296
|
return nullable ? 'Ljava/lang/Double;' : 'D';
|