@react-native/codegen 0.84.0-nightly-20251204-5bb3a6d68 → 0.84.0-nightly-20251206-63b0aef13

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.
Files changed (48) hide show
  1. package/lib/CodegenSchema.d.ts +4 -13
  2. package/lib/CodegenSchema.js.flow +5 -13
  3. package/lib/generators/Utils.js +49 -0
  4. package/lib/generators/Utils.js.flow +58 -0
  5. package/lib/generators/components/CppHelpers.js +35 -2
  6. package/lib/generators/components/CppHelpers.js.flow +35 -2
  7. package/lib/generators/components/GenerateEventEmitterCpp.js +11 -2
  8. package/lib/generators/components/GenerateEventEmitterCpp.js.flow +11 -2
  9. package/lib/generators/components/GenerateEventEmitterH.js +24 -9
  10. package/lib/generators/components/GenerateEventEmitterH.js.flow +24 -10
  11. package/lib/generators/modules/GenerateModuleH.js +24 -17
  12. package/lib/generators/modules/GenerateModuleH.js.flow +24 -17
  13. package/lib/generators/modules/GenerateModuleJavaSpec.js +48 -34
  14. package/lib/generators/modules/GenerateModuleJavaSpec.js.flow +48 -34
  15. package/lib/generators/modules/GenerateModuleJniCpp.js +29 -28
  16. package/lib/generators/modules/GenerateModuleJniCpp.js.flow +29 -28
  17. package/lib/generators/modules/GenerateModuleObjCpp/StructCollector.js +36 -22
  18. package/lib/generators/modules/GenerateModuleObjCpp/StructCollector.js.flow +39 -24
  19. package/lib/generators/modules/GenerateModuleObjCpp/header/serializeConstantsStruct.js +4 -3
  20. package/lib/generators/modules/GenerateModuleObjCpp/header/serializeConstantsStruct.js.flow +4 -3
  21. package/lib/generators/modules/GenerateModuleObjCpp/header/serializeRegularStruct.js +7 -4
  22. package/lib/generators/modules/GenerateModuleObjCpp/header/serializeRegularStruct.js.flow +7 -4
  23. package/lib/generators/modules/GenerateModuleObjCpp/serializeEventEmitter.js +19 -6
  24. package/lib/generators/modules/GenerateModuleObjCpp/serializeEventEmitter.js.flow +19 -6
  25. package/lib/generators/modules/GenerateModuleObjCpp/serializeMethod.js +22 -23
  26. package/lib/generators/modules/GenerateModuleObjCpp/serializeMethod.js.flow +22 -23
  27. package/lib/parsers/error-utils.js +1 -1
  28. package/lib/parsers/error-utils.js.flow +1 -1
  29. package/lib/parsers/errors.js +0 -15
  30. package/lib/parsers/errors.js.flow +0 -22
  31. package/lib/parsers/flow/components/events.js +1 -1
  32. package/lib/parsers/flow/components/events.js.flow +1 -1
  33. package/lib/parsers/flow/modules/index.js +12 -1
  34. package/lib/parsers/flow/modules/index.js.flow +12 -1
  35. package/lib/parsers/flow/parser.js +0 -3
  36. package/lib/parsers/flow/parser.js.flow +2 -8
  37. package/lib/parsers/parser.js.flow +2 -10
  38. package/lib/parsers/parserMock.js +0 -3
  39. package/lib/parsers/parserMock.js.flow +2 -8
  40. package/lib/parsers/parsers-primitives.js +41 -47
  41. package/lib/parsers/parsers-primitives.js.flow +45 -56
  42. package/lib/parsers/typescript/components/events.js +1 -1
  43. package/lib/parsers/typescript/components/events.js.flow +1 -1
  44. package/lib/parsers/typescript/modules/index.js +12 -1
  45. package/lib/parsers/typescript/modules/index.js.flow +12 -1
  46. package/lib/parsers/typescript/parser.js +0 -3
  47. package/lib/parsers/typescript/parser.js.flow +2 -8
  48. package/package.json +1 -1
@@ -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 {getEnumName, toPascalCase, toSafeCppString} = require('../Utils');
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
- switch (typeAnnotation.memberType) {
130
- case 'NumberTypeAnnotation':
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 'ObjectTypeAnnotation':
138
+ case 'object':
133
139
  return wrap(val => `${val}.asObject(rt)`);
134
- case 'StringTypeAnnotation':
140
+ case 'string':
135
141
  return wrap(val => `${val}.asString(rt)`);
136
142
  default:
137
- throw new Error(
138
- `Unsupported union member type for param "${arg.name}, found: ${realTypeAnnotation.memberType}"`,
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
- switch (typeAnnotation.memberType) {
285
- case 'NumberTypeAnnotation':
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 'ObjectTypeAnnotation':
293
+ case 'object':
288
294
  return wrapOptional('jsi::Object', isRequired);
289
- case 'StringTypeAnnotation':
295
+ case 'string':
290
296
  return wrapOptional('jsi::String', isRequired);
291
297
  default:
292
- throw new Error(createErrorMessage(realTypeAnnotation.type));
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 type = eventEmitter.typeAnnotation.typeAnnotation.type;
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 'StringLiteralUnionTypeAnnotation':
83
- return 'String';
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
- switch (typeAnnotation.memberType) {
174
- case 'NumberTypeAnnotation':
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 'ObjectTypeAnnotation':
191
+ case 'object':
177
192
  imports.add('com.facebook.react.bridge.ReadableMap');
178
193
  return wrapOptional('ReadableMap', isRequired);
179
- case 'StringTypeAnnotation':
194
+ case 'string':
180
195
  return wrapOptional('String', isRequired);
181
196
  default:
182
- throw new Error(
183
- `Unsupported union member returning value, found: ${realTypeAnnotation.memberType}"`,
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
- switch (realTypeAnnotation.memberType) {
267
- case 'NumberTypeAnnotation':
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 'ObjectTypeAnnotation':
284
+ case 'object':
270
285
  imports.add('com.facebook.react.bridge.WritableMap');
271
- return wrapOptional('WritableMap', isRequired);
272
- case 'StringTypeAnnotation':
286
+ return wrapOptional('ReadableMap', isRequired);
287
+ case 'string':
273
288
  return wrapOptional('String', isRequired);
274
289
  default:
275
- throw new Error(
276
- `Unsupported union member returning value, found: ${realTypeAnnotation.memberType}"`,
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
- switch (realTypeAnnotation.memberType) {
343
- case 'NumberTypeAnnotation':
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 'ObjectTypeAnnotation':
362
+ case 'object':
346
363
  return 'return null;';
347
- case 'StringTypeAnnotation':
364
+ case 'string':
348
365
  return nullable ? 'return null;' : 'return "";';
349
366
  default:
350
- throw new Error(
351
- `Unsupported union member returning value, found: ${realTypeAnnotation.memberType}"`,
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 type = eventEmitter.typeAnnotation.typeAnnotation.type;
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 'StringLiteralUnionTypeAnnotation':
137
- return 'String';
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
- switch (typeAnnotation.memberType) {
231
- case 'NumberTypeAnnotation':
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 'ObjectTypeAnnotation':
248
+ case 'object':
234
249
  imports.add('com.facebook.react.bridge.ReadableMap');
235
250
  return wrapOptional('ReadableMap', isRequired);
236
- case 'StringTypeAnnotation':
251
+ case 'string':
237
252
  return wrapOptional('String', isRequired);
238
253
  default:
239
- throw new Error(
240
- `Unsupported union member returning value, found: ${realTypeAnnotation.memberType}"`,
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
- switch (realTypeAnnotation.memberType) {
329
- case 'NumberTypeAnnotation':
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 'ObjectTypeAnnotation':
346
+ case 'object':
332
347
  imports.add('com.facebook.react.bridge.WritableMap');
333
- return wrapOptional('WritableMap', isRequired);
334
- case 'StringTypeAnnotation':
348
+ return wrapOptional('ReadableMap', isRequired);
349
+ case 'string':
335
350
  return wrapOptional('String', isRequired);
336
351
  default:
337
- throw new Error(
338
- `Unsupported union member returning value, found: ${realTypeAnnotation.memberType}"`,
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
- switch (realTypeAnnotation.memberType) {
409
- case 'NumberTypeAnnotation':
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 'ObjectTypeAnnotation':
428
+ case 'object':
412
429
  return 'return null;';
413
- case 'StringTypeAnnotation':
430
+ case 'string':
414
431
  return nullable ? 'return null;' : 'return "";';
415
432
  default:
416
- throw new Error(
417
- `Unsupported union member returning value, found: ${realTypeAnnotation.memberType}"`,
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
- switch (typeAnnotation.memberType) {
127
- case 'NumberTypeAnnotation':
125
+ const validUnionType = parseValidUnionType(realTypeAnnotation);
126
+ switch (validUnionType) {
127
+ case 'boolean':
128
+ return 'BooleanKind';
129
+ case 'number':
128
130
  return 'NumberKind';
129
- case 'ObjectTypeAnnotation':
131
+ case 'object':
130
132
  return 'ObjectKind';
131
- case 'StringTypeAnnotation':
133
+ case 'string':
132
134
  return 'StringKind';
133
135
  default:
134
- throw new Error(
135
- `Unsupported union member returning value, found: ${realTypeAnnotation.memberType}"`,
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
- switch (typeAnnotation.memberType) {
205
- case 'NumberTypeAnnotation':
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 'ObjectTypeAnnotation':
209
+ case 'object':
208
210
  return 'Lcom/facebook/react/bridge/ReadableMap;';
209
- case 'StringTypeAnnotation':
211
+ case 'string':
210
212
  return 'Ljava/lang/String;';
211
213
  default:
212
- throw new Error(
213
- `Unsupported union prop value, found: ${realTypeAnnotation.memberType}"`,
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
- switch (typeAnnotation.memberType) {
283
- case 'NumberTypeAnnotation':
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 'ObjectTypeAnnotation':
286
- return 'Lcom/facebook/react/bridge/WritableMap;';
287
- case 'StringTypeAnnotation':
287
+ case 'object':
288
+ return 'Lcom/facebook/react/bridge/ReadableMap;';
289
+ case 'string':
288
290
  return 'Ljava/lang/String;';
289
291
  default:
290
- throw new Error(
291
- `Unsupported union member type, found: ${realTypeAnnotation.memberType}"`,
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';
@@ -23,6 +23,7 @@ import type {
23
23
  import type {AliasResolver} from './Utils';
24
24
 
25
25
  const {unwrapNullable} = require('../../parsers/parsers-commons');
26
+ const {parseValidUnionType} = require('../Utils');
26
27
  const {createAliasResolver, getModules} = require('./Utils');
27
28
 
28
29
  type FilesOutput = Map<string, string>;
@@ -167,8 +168,6 @@ function translateReturnTypeToKind(
167
168
  return 'StringKind';
168
169
  case 'StringLiteralTypeAnnotation':
169
170
  return 'StringKind';
170
- case 'StringLiteralUnionTypeAnnotation':
171
- return 'StringKind';
172
171
  case 'BooleanTypeAnnotation':
173
172
  return 'BooleanKind';
174
173
  case 'BooleanLiteralTypeAnnotation':
@@ -185,17 +184,19 @@ function translateReturnTypeToKind(
185
184
  );
186
185
  }
187
186
  case 'UnionTypeAnnotation':
188
- switch (typeAnnotation.memberType) {
189
- case 'NumberTypeAnnotation':
187
+ const validUnionType = parseValidUnionType(realTypeAnnotation);
188
+ switch (validUnionType) {
189
+ case 'boolean':
190
+ return 'BooleanKind';
191
+ case 'number':
190
192
  return 'NumberKind';
191
- case 'ObjectTypeAnnotation':
193
+ case 'object':
192
194
  return 'ObjectKind';
193
- case 'StringTypeAnnotation':
195
+ case 'string':
194
196
  return 'StringKind';
195
197
  default:
196
- throw new Error(
197
- `Unsupported union member returning value, found: ${realTypeAnnotation.memberType}"`,
198
- );
198
+ (validUnionType: empty);
199
+ throw new Error(`Unsupported union member type`);
199
200
  }
200
201
  case 'NumberTypeAnnotation':
201
202
  return 'NumberKind';
@@ -254,8 +255,6 @@ function translateParamTypeToJniType(
254
255
  return 'Ljava/lang/String;';
255
256
  case 'StringLiteralTypeAnnotation':
256
257
  return 'Ljava/lang/String;';
257
- case 'StringLiteralUnionTypeAnnotation':
258
- return 'Ljava/lang/String;';
259
258
  case 'BooleanTypeAnnotation':
260
259
  return !isRequired ? 'Ljava/lang/Boolean;' : 'Z';
261
260
  case 'BooleanLiteralTypeAnnotation':
@@ -272,17 +271,19 @@ function translateParamTypeToJniType(
272
271
  );
273
272
  }
274
273
  case 'UnionTypeAnnotation':
275
- switch (typeAnnotation.memberType) {
276
- case 'NumberTypeAnnotation':
274
+ const validUnionType = parseValidUnionType(realTypeAnnotation);
275
+ switch (validUnionType) {
276
+ case 'boolean':
277
+ return !isRequired ? 'Ljava/lang/Boolean;' : 'Z';
278
+ case 'number':
277
279
  return !isRequired ? 'Ljava/lang/Double;' : 'D';
278
- case 'ObjectTypeAnnotation':
280
+ case 'object':
279
281
  return 'Lcom/facebook/react/bridge/ReadableMap;';
280
- case 'StringTypeAnnotation':
282
+ case 'string':
281
283
  return 'Ljava/lang/String;';
282
284
  default:
283
- throw new Error(
284
- `Unsupported union prop value, found: ${realTypeAnnotation.memberType}"`,
285
- );
285
+ (validUnionType: empty);
286
+ throw new Error(`Unsupported union member type`);
286
287
  }
287
288
  case 'NumberTypeAnnotation':
288
289
  return !isRequired ? 'Ljava/lang/Double;' : 'D';
@@ -338,8 +339,6 @@ function translateReturnTypeToJniType(
338
339
  return 'Ljava/lang/String;';
339
340
  case 'StringLiteralTypeAnnotation':
340
341
  return 'Ljava/lang/String;';
341
- case 'StringLiteralUnionTypeAnnotation':
342
- return 'Ljava/lang/String;';
343
342
  case 'BooleanTypeAnnotation':
344
343
  return nullable ? 'Ljava/lang/Boolean;' : 'Z';
345
344
  case 'BooleanLiteralTypeAnnotation':
@@ -356,17 +355,19 @@ function translateReturnTypeToJniType(
356
355
  );
357
356
  }
358
357
  case 'UnionTypeAnnotation':
359
- switch (typeAnnotation.memberType) {
360
- case 'NumberTypeAnnotation':
358
+ const validUnionType = parseValidUnionType(realTypeAnnotation);
359
+ switch (validUnionType) {
360
+ case 'boolean':
361
+ return nullable ? 'Ljava/lang/Boolean;' : 'Z';
362
+ case 'number':
361
363
  return nullable ? 'Ljava/lang/Double;' : 'D';
362
- case 'ObjectTypeAnnotation':
363
- return 'Lcom/facebook/react/bridge/WritableMap;';
364
- case 'StringTypeAnnotation':
364
+ case 'object':
365
+ return 'Lcom/facebook/react/bridge/ReadableMap;';
366
+ case 'string':
365
367
  return 'Ljava/lang/String;';
366
368
  default:
367
- throw new Error(
368
- `Unsupported union member type, found: ${realTypeAnnotation.memberType}"`,
369
- );
369
+ (validUnionType: empty);
370
+ throw new Error(`Unsupported union member type`);
370
371
  }
371
372
  case 'NumberTypeAnnotation':
372
373
  return nullable ? 'Ljava/lang/Double;' : 'D';