@react-native/codegen 0.77.0-nightly-20241104-7211119d2 → 0.77.0-nightly-20241105-fe656be26

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 (34) hide show
  1. package/lib/CodegenSchema.d.ts +10 -3
  2. package/lib/CodegenSchema.js.flow +12 -7
  3. package/lib/generators/modules/GenerateModuleCpp.js +2 -0
  4. package/lib/generators/modules/GenerateModuleCpp.js.flow +2 -0
  5. package/lib/generators/modules/GenerateModuleH.js +2 -0
  6. package/lib/generators/modules/GenerateModuleH.js.flow +4 -2
  7. package/lib/generators/modules/GenerateModuleJavaSpec.js +7 -0
  8. package/lib/generators/modules/GenerateModuleJavaSpec.js.flow +7 -0
  9. package/lib/generators/modules/GenerateModuleJniCpp.js +6 -0
  10. package/lib/generators/modules/GenerateModuleJniCpp.js.flow +6 -0
  11. package/lib/generators/modules/GenerateModuleObjCpp/StructCollector.js.flow +2 -0
  12. package/lib/generators/modules/GenerateModuleObjCpp/header/serializeConstantsStruct.js +4 -0
  13. package/lib/generators/modules/GenerateModuleObjCpp/header/serializeConstantsStruct.js.flow +4 -0
  14. package/lib/generators/modules/GenerateModuleObjCpp/header/serializeRegularStruct.js +4 -0
  15. package/lib/generators/modules/GenerateModuleObjCpp/header/serializeRegularStruct.js.flow +4 -0
  16. package/lib/generators/modules/GenerateModuleObjCpp/serializeEventEmitter.js +1 -0
  17. package/lib/generators/modules/GenerateModuleObjCpp/serializeEventEmitter.js.flow +1 -0
  18. package/lib/generators/modules/GenerateModuleObjCpp/serializeMethod.js +6 -0
  19. package/lib/generators/modules/GenerateModuleObjCpp/serializeMethod.js.flow +6 -0
  20. package/lib/parsers/flow/modules/__test_fixtures__/fixtures.js +1 -0
  21. package/lib/parsers/flow/modules/__test_fixtures__/fixtures.js.flow +1 -0
  22. package/lib/parsers/flow/modules/index.js +4 -0
  23. package/lib/parsers/flow/modules/index.js.flow +4 -0
  24. package/lib/parsers/flow/parser.js.flow +4 -2
  25. package/lib/parsers/parser.js.flow +4 -2
  26. package/lib/parsers/parserMock.js.flow +4 -2
  27. package/lib/parsers/parsers-primitives.js +7 -0
  28. package/lib/parsers/parsers-primitives.js.flow +12 -0
  29. package/lib/parsers/typescript/modules/__test_fixtures__/fixtures.js +1 -0
  30. package/lib/parsers/typescript/modules/__test_fixtures__/fixtures.js.flow +1 -0
  31. package/lib/parsers/typescript/modules/index.js +4 -0
  32. package/lib/parsers/typescript/modules/index.js.flow +4 -0
  33. package/lib/parsers/typescript/parser.js.flow +4 -2
  34. package/package.json +1 -1
@@ -286,6 +286,11 @@ export interface UnsafeAnyTypeAnnotation {
286
286
  readonly type: 'AnyTypeAnnotation',
287
287
  }
288
288
 
289
+ export interface NativeModuleNumberLiteralTypeAnnotation {
290
+ readonly type: 'NumberLiteralTypeAnnotation';
291
+ readonly value: number;
292
+ }
293
+
289
294
  export interface NativeModuleStringTypeAnnotation {
290
295
  readonly type: 'StringTypeAnnotation';
291
296
  }
@@ -320,10 +325,10 @@ export interface NativeModuleBooleanTypeAnnotation {
320
325
  readonly type: 'BooleanTypeAnnotation';
321
326
  }
322
327
 
323
- export type NativeModuleEnumMembers = readonly {
328
+ export type NativeModuleEnumMember = {
324
329
  readonly name: string;
325
330
  readonly value: string | number;
326
- }[];
331
+ };
327
332
 
328
333
  export type NativeModuleEnumMemberType =
329
334
  | 'NumberTypeAnnotation'
@@ -339,7 +344,7 @@ export interface NativeModuleEnumDeclarationWithMembers {
339
344
  name: string;
340
345
  type: 'EnumDeclarationWithMembers';
341
346
  memberType: NativeModuleEnumMemberType;
342
- members: NativeModuleEnumMembers;
347
+ members: readonly NativeModuleEnumMember[];
343
348
  }
344
349
 
345
350
  export interface NativeModuleGenericObjectTypeAnnotation {
@@ -380,6 +385,7 @@ export type NativeModuleEventEmitterBaseTypeAnnotation =
380
385
  | NativeModuleFloatTypeAnnotation
381
386
  | NativeModuleInt32TypeAnnotation
382
387
  | NativeModuleNumberTypeAnnotation
388
+ | NativeModuleNumberLiteralTypeAnnotation
383
389
  | NativeModuleStringTypeAnnotation
384
390
  | NativeModuleStringLiteralTypeAnnotation
385
391
  | NativeModuleStringLiteralUnionTypeAnnotation
@@ -399,6 +405,7 @@ export type NativeModuleBaseTypeAnnotation =
399
405
  | NativeModuleStringLiteralTypeAnnotation
400
406
  | NativeModuleStringLiteralUnionTypeAnnotation
401
407
  | NativeModuleNumberTypeAnnotation
408
+ | NativeModuleNumberLiteralTypeAnnotation
402
409
  | NativeModuleInt32TypeAnnotation
403
410
  | NativeModuleDoubleTypeAnnotation
404
411
  | NativeModuleFloatTypeAnnotation
@@ -37,6 +37,11 @@ export type Int32TypeAnnotation = $ReadOnly<{
37
37
  type: 'Int32TypeAnnotation',
38
38
  }>;
39
39
 
40
+ export type NumberLiteralTypeAnnotation = $ReadOnly<{
41
+ type: 'NumberLiteralTypeAnnotation',
42
+ value: number,
43
+ }>;
44
+
40
45
  export type StringTypeAnnotation = $ReadOnly<{
41
46
  type: 'StringTypeAnnotation',
42
47
  }>;
@@ -304,12 +309,10 @@ export type NativeModuleNumberTypeAnnotation = $ReadOnly<{
304
309
  type: 'NumberTypeAnnotation',
305
310
  }>;
306
311
 
307
- export type NativeModuleEnumMembers = $ReadOnlyArray<
308
- $ReadOnly<{
309
- name: string,
310
- value: string | number,
311
- }>,
312
- >;
312
+ export type NativeModuleEnumMember = {
313
+ name: string,
314
+ value: string | number,
315
+ };
313
316
 
314
317
  export type NativeModuleEnumMemberType =
315
318
  | 'NumberTypeAnnotation'
@@ -325,7 +328,7 @@ export type NativeModuleEnumDeclarationWithMembers = {
325
328
  name: string,
326
329
  type: 'EnumDeclarationWithMembers',
327
330
  memberType: NativeModuleEnumMemberType,
328
- members: NativeModuleEnumMembers,
331
+ members: $ReadOnlyArray<NativeModuleEnumMember>,
329
332
  };
330
333
 
331
334
  export type NativeModuleGenericObjectTypeAnnotation = $ReadOnly<{
@@ -366,6 +369,7 @@ type NativeModuleEventEmitterBaseTypeAnnotation =
366
369
  | FloatTypeAnnotation
367
370
  | Int32TypeAnnotation
368
371
  | NativeModuleNumberTypeAnnotation
372
+ | NumberLiteralTypeAnnotation
369
373
  | StringTypeAnnotation
370
374
  | StringLiteralTypeAnnotation
371
375
  | StringLiteralUnionTypeAnnotation
@@ -385,6 +389,7 @@ export type NativeModuleBaseTypeAnnotation =
385
389
  | StringLiteralTypeAnnotation
386
390
  | StringLiteralUnionTypeAnnotation
387
391
  | NativeModuleNumberTypeAnnotation
392
+ | NumberLiteralTypeAnnotation
388
393
  | Int32TypeAnnotation
389
394
  | DoubleTypeAnnotation
390
395
  | FloatTypeAnnotation
@@ -218,6 +218,8 @@ function serializeArg(moduleName, arg, index, resolveAlias, enumMap) {
218
218
  return wrap(val => `${val}.asNumber()`);
219
219
  case 'Int32TypeAnnotation':
220
220
  return wrap(val => `${val}.asNumber()`);
221
+ case 'NumberLiteralTypeAnnotation':
222
+ return wrap(val => `${val}.asNumber()`);
221
223
  case 'ArrayTypeAnnotation':
222
224
  return wrap(val => `${val}.asObject(rt).asArray(rt)`);
223
225
  case 'FunctionTypeAnnotation':
@@ -186,6 +186,8 @@ function serializeArg(
186
186
  return wrap(val => `${val}.asNumber()`);
187
187
  case 'Int32TypeAnnotation':
188
188
  return wrap(val => `${val}.asNumber()`);
189
+ case 'NumberLiteralTypeAnnotation':
190
+ return wrap(val => `${val}.asNumber()`);
189
191
  case 'ArrayTypeAnnotation':
190
192
  return wrap(val => `${val}.asObject(rt).asArray(rt)`);
191
193
  case 'FunctionTypeAnnotation':
@@ -219,6 +219,8 @@ function translatePrimitiveJSTypeToCpp(
219
219
  return wrapOptional('jsi::String', isRequired);
220
220
  case 'NumberTypeAnnotation':
221
221
  return wrapOptional('double', isRequired);
222
+ case 'NumberLiteralTypeAnnotation':
223
+ return wrapOptional('double', isRequired);
222
224
  case 'DoubleTypeAnnotation':
223
225
  return wrapOptional('double', isRequired);
224
226
  case 'FloatTypeAnnotation':
@@ -16,7 +16,7 @@ import type {
16
16
  import type {
17
17
  NativeModuleAliasMap,
18
18
  NativeModuleEnumMap,
19
- NativeModuleEnumMembers,
19
+ NativeModuleEnumMember,
20
20
  NativeModuleEnumMemberType,
21
21
  NativeModuleEventEmitterShape,
22
22
  NativeModuleFunctionTypeAnnotation,
@@ -179,6 +179,8 @@ function translatePrimitiveJSTypeToCpp(
179
179
  return wrapOptional('jsi::String', isRequired);
180
180
  case 'NumberTypeAnnotation':
181
181
  return wrapOptional('double', isRequired);
182
+ case 'NumberLiteralTypeAnnotation':
183
+ return wrapOptional('double', isRequired);
182
184
  case 'DoubleTypeAnnotation':
183
185
  return wrapOptional('double', isRequired);
184
186
  case 'FloatTypeAnnotation':
@@ -407,7 +409,7 @@ struct Bridging<${enumName}> {
407
409
  function generateEnum(
408
410
  hasteModuleName: string,
409
411
  origEnumName: string,
410
- members: NativeModuleEnumMembers,
412
+ members: $ReadOnlyArray<NativeModuleEnumMember>,
411
413
  memberType: NativeModuleEnumMemberType,
412
414
  ): string {
413
415
  const enumName = getEnumName(hasteModuleName, origEnumName);
@@ -171,6 +171,7 @@ function translateEventEmitterTypeToJavaType(eventEmitter, imports) {
171
171
  case 'StringLiteralUnionTypeAnnotation':
172
172
  return 'String';
173
173
  case 'NumberTypeAnnotation':
174
+ case 'NumberLiteralTypeAnnotation':
174
175
  case 'FloatTypeAnnotation':
175
176
  case 'DoubleTypeAnnotation':
176
177
  case 'Int32TypeAnnotation':
@@ -239,6 +240,8 @@ function translateFunctionParamToJavaType(
239
240
  return wrapOptional('String', isRequired);
240
241
  case 'NumberTypeAnnotation':
241
242
  return wrapOptional('double', isRequired);
243
+ case 'NumberLiteralTypeAnnotation':
244
+ return wrapOptional('double', isRequired);
242
245
  case 'FloatTypeAnnotation':
243
246
  return wrapOptional('double', isRequired);
244
247
  case 'DoubleTypeAnnotation':
@@ -329,6 +332,8 @@ function translateFunctionReturnTypeToJavaType(
329
332
  return wrapOptional('String', isRequired);
330
333
  case 'NumberTypeAnnotation':
331
334
  return wrapOptional('double', isRequired);
335
+ case 'NumberLiteralTypeAnnotation':
336
+ return wrapOptional('double', isRequired);
332
337
  case 'FloatTypeAnnotation':
333
338
  return wrapOptional('double', isRequired);
334
339
  case 'DoubleTypeAnnotation':
@@ -402,6 +407,8 @@ function getFalsyReturnStatementFromReturnType(
402
407
  return '';
403
408
  case 'NumberTypeAnnotation':
404
409
  return nullable ? 'return null;' : 'return 0;';
410
+ case 'NumberLiteralTypeAnnotation':
411
+ return nullable ? 'return null;' : 'return 0;';
405
412
  case 'FloatTypeAnnotation':
406
413
  return nullable ? 'return null;' : 'return 0.0;';
407
414
  case 'DoubleTypeAnnotation':
@@ -136,6 +136,7 @@ function translateEventEmitterTypeToJavaType(
136
136
  case 'StringLiteralUnionTypeAnnotation':
137
137
  return 'String';
138
138
  case 'NumberTypeAnnotation':
139
+ case 'NumberLiteralTypeAnnotation':
139
140
  case 'FloatTypeAnnotation':
140
141
  case 'DoubleTypeAnnotation':
141
142
  case 'Int32TypeAnnotation':
@@ -203,6 +204,8 @@ function translateFunctionParamToJavaType(
203
204
  return wrapOptional('String', isRequired);
204
205
  case 'NumberTypeAnnotation':
205
206
  return wrapOptional('double', isRequired);
207
+ case 'NumberLiteralTypeAnnotation':
208
+ return wrapOptional('double', isRequired);
206
209
  case 'FloatTypeAnnotation':
207
210
  return wrapOptional('double', isRequired);
208
211
  case 'DoubleTypeAnnotation':
@@ -297,6 +300,8 @@ function translateFunctionReturnTypeToJavaType(
297
300
  return wrapOptional('String', isRequired);
298
301
  case 'NumberTypeAnnotation':
299
302
  return wrapOptional('double', isRequired);
303
+ case 'NumberLiteralTypeAnnotation':
304
+ return wrapOptional('double', isRequired);
300
305
  case 'FloatTypeAnnotation':
301
306
  return wrapOptional('double', isRequired);
302
307
  case 'DoubleTypeAnnotation':
@@ -373,6 +378,8 @@ function getFalsyReturnStatementFromReturnType(
373
378
  return '';
374
379
  case 'NumberTypeAnnotation':
375
380
  return nullable ? 'return null;' : 'return 0;';
381
+ case 'NumberLiteralTypeAnnotation':
382
+ return nullable ? 'return null;' : 'return 0;';
376
383
  case 'FloatTypeAnnotation':
377
384
  return nullable ? 'return null;' : 'return 0.0;';
378
385
  case 'DoubleTypeAnnotation':
@@ -212,6 +212,8 @@ function translateReturnTypeToKind(nullableTypeAnnotation, resolveAlias) {
212
212
  }
213
213
  case 'NumberTypeAnnotation':
214
214
  return 'NumberKind';
215
+ case 'NumberLiteralTypeAnnotation':
216
+ return 'NumberKind';
215
217
  case 'DoubleTypeAnnotation':
216
218
  return 'NumberKind';
217
219
  case 'FloatTypeAnnotation':
@@ -290,6 +292,8 @@ function translateParamTypeToJniType(param, resolveAlias) {
290
292
  }
291
293
  case 'NumberTypeAnnotation':
292
294
  return !isRequired ? 'Ljava/lang/Double;' : 'D';
295
+ case 'NumberLiteralTypeAnnotation':
296
+ return !isRequired ? 'Ljava/lang/Double;' : 'D';
293
297
  case 'DoubleTypeAnnotation':
294
298
  return !isRequired ? 'Ljava/lang/Double;' : 'D';
295
299
  case 'FloatTypeAnnotation':
@@ -367,6 +371,8 @@ function translateReturnTypeToJniType(nullableTypeAnnotation, resolveAlias) {
367
371
  }
368
372
  case 'NumberTypeAnnotation':
369
373
  return nullable ? 'Ljava/lang/Double;' : 'D';
374
+ case 'NumberLiteralTypeAnnotation':
375
+ return nullable ? 'Ljava/lang/Double;' : 'D';
370
376
  case 'DoubleTypeAnnotation':
371
377
  return nullable ? 'Ljava/lang/Double;' : 'D';
372
378
  case 'FloatTypeAnnotation':
@@ -197,6 +197,8 @@ function translateReturnTypeToKind(
197
197
  }
198
198
  case 'NumberTypeAnnotation':
199
199
  return 'NumberKind';
200
+ case 'NumberLiteralTypeAnnotation':
201
+ return 'NumberKind';
200
202
  case 'DoubleTypeAnnotation':
201
203
  return 'NumberKind';
202
204
  case 'FloatTypeAnnotation':
@@ -280,6 +282,8 @@ function translateParamTypeToJniType(
280
282
  }
281
283
  case 'NumberTypeAnnotation':
282
284
  return !isRequired ? 'Ljava/lang/Double;' : 'D';
285
+ case 'NumberLiteralTypeAnnotation':
286
+ return !isRequired ? 'Ljava/lang/Double;' : 'D';
283
287
  case 'DoubleTypeAnnotation':
284
288
  return !isRequired ? 'Ljava/lang/Double;' : 'D';
285
289
  case 'FloatTypeAnnotation':
@@ -360,6 +364,8 @@ function translateReturnTypeToJniType(
360
364
  }
361
365
  case 'NumberTypeAnnotation':
362
366
  return nullable ? 'Ljava/lang/Double;' : 'D';
367
+ case 'NumberLiteralTypeAnnotation':
368
+ return nullable ? 'Ljava/lang/Double;' : 'D';
363
369
  case 'DoubleTypeAnnotation':
364
370
  return nullable ? 'Ljava/lang/Double;' : 'D';
365
371
  case 'FloatTypeAnnotation':
@@ -23,6 +23,7 @@ import type {
23
23
  NativeModuleObjectTypeAnnotation,
24
24
  NativeModuleTypeAliasTypeAnnotation,
25
25
  Nullable,
26
+ NumberLiteralTypeAnnotation,
26
27
  ReservedTypeAnnotation,
27
28
  StringLiteralTypeAnnotation,
28
29
  StringLiteralUnionTypeAnnotation,
@@ -63,6 +64,7 @@ export type StructTypeAnnotation =
63
64
  | StringLiteralTypeAnnotation
64
65
  | StringLiteralUnionTypeAnnotation
65
66
  | NativeModuleNumberTypeAnnotation
67
+ | NumberLiteralTypeAnnotation
66
68
  | Int32TypeAnnotation
67
69
  | DoubleTypeAnnotation
68
70
  | FloatTypeAnnotation
@@ -163,6 +163,8 @@ function toObjCType(
163
163
  return 'NSString *';
164
164
  case 'NumberTypeAnnotation':
165
165
  return wrapCxxOptional('double', isRequired);
166
+ case 'NumberLiteralTypeAnnotation':
167
+ return wrapCxxOptional('double', isRequired);
166
168
  case 'FloatTypeAnnotation':
167
169
  return wrapCxxOptional('double', isRequired);
168
170
  case 'Int32TypeAnnotation':
@@ -245,6 +247,8 @@ function toObjCValue(
245
247
  return value;
246
248
  case 'NumberTypeAnnotation':
247
249
  return wrapPrimitive('double');
250
+ case 'NumberLiteralTypeAnnotation':
251
+ return wrapPrimitive('double');
248
252
  case 'FloatTypeAnnotation':
249
253
  return wrapPrimitive('double');
250
254
  case 'Int32TypeAnnotation':
@@ -100,6 +100,8 @@ function toObjCType(
100
100
  return 'NSString *';
101
101
  case 'NumberTypeAnnotation':
102
102
  return wrapCxxOptional('double', isRequired);
103
+ case 'NumberLiteralTypeAnnotation':
104
+ return wrapCxxOptional('double', isRequired);
103
105
  case 'FloatTypeAnnotation':
104
106
  return wrapCxxOptional('double', isRequired);
105
107
  case 'Int32TypeAnnotation':
@@ -183,6 +185,8 @@ function toObjCValue(
183
185
  return value;
184
186
  case 'NumberTypeAnnotation':
185
187
  return wrapPrimitive('double');
188
+ case 'NumberLiteralTypeAnnotation':
189
+ return wrapPrimitive('double');
186
190
  case 'FloatTypeAnnotation':
187
191
  return wrapPrimitive('double');
188
192
  case 'Int32TypeAnnotation':
@@ -151,6 +151,8 @@ function toObjCType(
151
151
  return 'NSString *';
152
152
  case 'NumberTypeAnnotation':
153
153
  return wrapCxxOptional('double', isRequired);
154
+ case 'NumberLiteralTypeAnnotation':
155
+ return wrapCxxOptional('double', isRequired);
154
156
  case 'FloatTypeAnnotation':
155
157
  return wrapCxxOptional('double', isRequired);
156
158
  case 'Int32TypeAnnotation':
@@ -234,6 +236,8 @@ function toObjCValue(
234
236
  return RCTBridgingTo('String');
235
237
  case 'NumberTypeAnnotation':
236
238
  return RCTBridgingTo('Double');
239
+ case 'NumberLiteralTypeAnnotation':
240
+ return RCTBridgingTo('Double');
237
241
  case 'FloatTypeAnnotation':
238
242
  return RCTBridgingTo('Double');
239
243
  case 'Int32TypeAnnotation':
@@ -91,6 +91,8 @@ function toObjCType(
91
91
  return 'NSString *';
92
92
  case 'NumberTypeAnnotation':
93
93
  return wrapCxxOptional('double', isRequired);
94
+ case 'NumberLiteralTypeAnnotation':
95
+ return wrapCxxOptional('double', isRequired);
94
96
  case 'FloatTypeAnnotation':
95
97
  return wrapCxxOptional('double', isRequired);
96
98
  case 'Int32TypeAnnotation':
@@ -173,6 +175,8 @@ function toObjCValue(
173
175
  return RCTBridgingTo('String');
174
176
  case 'NumberTypeAnnotation':
175
177
  return RCTBridgingTo('Double');
178
+ case 'NumberLiteralTypeAnnotation':
179
+ return RCTBridgingTo('Double');
176
180
  case 'FloatTypeAnnotation':
177
181
  return RCTBridgingTo('Double');
178
182
  case 'Int32TypeAnnotation':
@@ -20,6 +20,7 @@ function getEventEmitterTypeObjCType(eventEmitter) {
20
20
  case 'StringLiteralUnionTypeAnnotation':
21
21
  return 'NSString *_Nonnull';
22
22
  case 'NumberTypeAnnotation':
23
+ case 'NumberLiteralTypeAnnotation':
23
24
  return 'NSNumber *_Nonnull';
24
25
  case 'BooleanTypeAnnotation':
25
26
  return 'BOOL';
@@ -25,6 +25,7 @@ function getEventEmitterTypeObjCType(
25
25
  case 'StringLiteralUnionTypeAnnotation':
26
26
  return 'NSString *_Nonnull';
27
27
  case 'NumberTypeAnnotation':
28
+ case 'NumberLiteralTypeAnnotation':
28
29
  return 'NSNumber *_Nonnull';
29
30
  case 'BooleanTypeAnnotation':
30
31
  return 'BOOL';
@@ -303,6 +303,8 @@ function getParamObjCType(
303
303
  return notStruct(wrapOptional('NSString *', !nullable));
304
304
  case 'NumberTypeAnnotation':
305
305
  return notStruct(isRequired ? 'double' : 'NSNumber *');
306
+ case 'NumberLiteralTypeAnnotation':
307
+ return notStruct(isRequired ? 'double' : 'NSNumber *');
306
308
  case 'FloatTypeAnnotation':
307
309
  return notStruct(isRequired ? 'float' : 'NSNumber *');
308
310
  case 'DoubleTypeAnnotation':
@@ -381,6 +383,8 @@ function getReturnObjCType(methodName, nullableTypeAnnotation) {
381
383
  return wrapOptional('NSString *', isRequired);
382
384
  case 'NumberTypeAnnotation':
383
385
  return wrapOptional('NSNumber *', isRequired);
386
+ case 'NumberLiteralTypeAnnotation':
387
+ return wrapOptional('NSNumber *', isRequired);
384
388
  case 'FloatTypeAnnotation':
385
389
  return wrapOptional('NSNumber *', isRequired);
386
390
  case 'DoubleTypeAnnotation':
@@ -449,6 +453,8 @@ function getReturnJSType(methodName, nullableTypeAnnotation) {
449
453
  return 'StringKind';
450
454
  case 'NumberTypeAnnotation':
451
455
  return 'NumberKind';
456
+ case 'NumberLiteralTypeAnnotation':
457
+ return 'NumberKind';
452
458
  case 'FloatTypeAnnotation':
453
459
  return 'NumberKind';
454
460
  case 'DoubleTypeAnnotation':
@@ -263,6 +263,8 @@ function getParamObjCType(
263
263
  return notStruct(wrapOptional('NSString *', !nullable));
264
264
  case 'NumberTypeAnnotation':
265
265
  return notStruct(isRequired ? 'double' : 'NSNumber *');
266
+ case 'NumberLiteralTypeAnnotation':
267
+ return notStruct(isRequired ? 'double' : 'NSNumber *');
266
268
  case 'FloatTypeAnnotation':
267
269
  return notStruct(isRequired ? 'float' : 'NSNumber *');
268
270
  case 'DoubleTypeAnnotation':
@@ -344,6 +346,8 @@ function getReturnObjCType(
344
346
  return wrapOptional('NSString *', isRequired);
345
347
  case 'NumberTypeAnnotation':
346
348
  return wrapOptional('NSNumber *', isRequired);
349
+ case 'NumberLiteralTypeAnnotation':
350
+ return wrapOptional('NSNumber *', isRequired);
347
351
  case 'FloatTypeAnnotation':
348
352
  return wrapOptional('NSNumber *', isRequired);
349
353
  case 'DoubleTypeAnnotation':
@@ -414,6 +418,8 @@ function getReturnJSType(
414
418
  return 'StringKind';
415
419
  case 'NumberTypeAnnotation':
416
420
  return 'NumberKind';
421
+ case 'NumberLiteralTypeAnnotation':
422
+ return 'NumberKind';
417
423
  case 'FloatTypeAnnotation':
418
424
  return 'NumberKind';
419
425
  case 'DoubleTypeAnnotation':
@@ -123,6 +123,7 @@ import * as TurboModuleRegistry from '../TurboModuleRegistry';
123
123
  export interface Spec extends TurboModule {
124
124
  +passBool?: (arg: boolean) => void;
125
125
  +passNumber: (arg: number) => void;
126
+ +passNumberLiteral: (arg: 4) => void;
126
127
  +passString: (arg: string) => void;
127
128
  +passStringish: (arg: Stringish) => void;
128
129
  +passStringLiteral: (arg: 'A String Literal') => void;
@@ -126,6 +126,7 @@ import * as TurboModuleRegistry from '../TurboModuleRegistry';
126
126
  export interface Spec extends TurboModule {
127
127
  +passBool?: (arg: boolean) => void;
128
128
  +passNumber: (arg: number) => void;
129
+ +passNumberLiteral: (arg: 4) => void;
129
130
  +passString: (arg: string) => void;
130
131
  +passStringish: (arg: Stringish) => void;
131
132
  +passStringLiteral: (arg: 'A String Literal') => void;
@@ -101,6 +101,7 @@ const _require3 = require('../../parsers-primitives'),
101
101
  emitCommonTypes = _require3.emitCommonTypes,
102
102
  emitDictionary = _require3.emitDictionary,
103
103
  emitFunction = _require3.emitFunction,
104
+ emitNumberLiteral = _require3.emitNumberLiteral,
104
105
  emitPromise = _require3.emitPromise,
105
106
  emitRootTag = _require3.emitRootTag,
106
107
  emitUnion = _require3.emitUnion,
@@ -300,6 +301,9 @@ function translateTypeAnnotation(
300
301
  case 'UnionTypeAnnotation': {
301
302
  return emitUnion(nullable, hasteModuleName, typeAnnotation, parser);
302
303
  }
304
+ case 'NumberLiteralTypeAnnotation': {
305
+ return emitNumberLiteral(nullable, typeAnnotation.value);
306
+ }
303
307
  case 'StringLiteralTypeAnnotation': {
304
308
  return wrapNullable(nullable, {
305
309
  type: 'StringLiteralTypeAnnotation',
@@ -38,6 +38,7 @@ const {
38
38
  emitCommonTypes,
39
39
  emitDictionary,
40
40
  emitFunction,
41
+ emitNumberLiteral,
41
42
  emitPromise,
42
43
  emitRootTag,
43
44
  emitUnion,
@@ -243,6 +244,9 @@ function translateTypeAnnotation(
243
244
  case 'UnionTypeAnnotation': {
244
245
  return emitUnion(nullable, hasteModuleName, typeAnnotation, parser);
245
246
  }
247
+ case 'NumberLiteralTypeAnnotation': {
248
+ return emitNumberLiteral(nullable, typeAnnotation.value);
249
+ }
246
250
  case 'StringLiteralTypeAnnotation': {
247
251
  return wrapNullable(nullable, {
248
252
  type: 'StringLiteralTypeAnnotation',
@@ -15,7 +15,7 @@ import type {
15
15
  NamedShape,
16
16
  NativeModuleAliasMap,
17
17
  NativeModuleEnumMap,
18
- NativeModuleEnumMembers,
18
+ NativeModuleEnumMember,
19
19
  NativeModuleEnumMemberType,
20
20
  NativeModuleParamTypeAnnotation,
21
21
  Nullable,
@@ -227,7 +227,9 @@ class FlowParser implements Parser {
227
227
  });
228
228
  }
229
229
 
230
- parseEnumMembers(typeAnnotation: $FlowFixMe): NativeModuleEnumMembers {
230
+ parseEnumMembers(
231
+ typeAnnotation: $FlowFixMe,
232
+ ): $ReadOnlyArray<NativeModuleEnumMember> {
231
233
  return typeAnnotation.members.map(member => ({
232
234
  name: member.id.name,
233
235
  value: member.init?.value ?? member.id.name,
@@ -15,7 +15,7 @@ import type {
15
15
  NamedShape,
16
16
  NativeModuleAliasMap,
17
17
  NativeModuleEnumMap,
18
- NativeModuleEnumMembers,
18
+ NativeModuleEnumMember,
19
19
  NativeModuleEnumMemberType,
20
20
  NativeModuleParamTypeAnnotation,
21
21
  Nullable,
@@ -240,7 +240,9 @@ export interface Parser {
240
240
  /**
241
241
  * Calculates enum's members
242
242
  */
243
- parseEnumMembers(typeAnnotation: $FlowFixMe): NativeModuleEnumMembers;
243
+ parseEnumMembers(
244
+ typeAnnotation: $FlowFixMe,
245
+ ): $ReadOnlyArray<NativeModuleEnumMember>;
244
246
 
245
247
  /**
246
248
  * Given a node, it returns true if it is a module interface
@@ -15,7 +15,7 @@ import type {
15
15
  NamedShape,
16
16
  NativeModuleAliasMap,
17
17
  NativeModuleEnumMap,
18
- NativeModuleEnumMembers,
18
+ NativeModuleEnumMember,
19
19
  NativeModuleEnumMemberType,
20
20
  NativeModuleParamTypeAnnotation,
21
21
  Nullable,
@@ -168,7 +168,9 @@ export class MockedParser implements Parser {
168
168
  return;
169
169
  }
170
170
 
171
- parseEnumMembers(typeAnnotation: $FlowFixMe): NativeModuleEnumMembers {
171
+ parseEnumMembers(
172
+ typeAnnotation: $FlowFixMe,
173
+ ): $ReadOnlyArray<NativeModuleEnumMember> {
172
174
  return typeAnnotation.type === 'StringTypeAnnotation'
173
175
  ? [
174
176
  {
@@ -188,6 +188,12 @@ function emitMixed(nullable) {
188
188
  type: 'MixedTypeAnnotation',
189
189
  });
190
190
  }
191
+ function emitNumberLiteral(nullable, value) {
192
+ return wrapNullable(nullable, {
193
+ type: 'NumberLiteralTypeAnnotation',
194
+ value,
195
+ });
196
+ }
191
197
  function emitString(nullable) {
192
198
  return wrapNullable(nullable, {
193
199
  type: 'StringTypeAnnotation',
@@ -695,6 +701,7 @@ module.exports = {
695
701
  emitInt32Prop,
696
702
  emitMixedProp,
697
703
  emitNumber,
704
+ emitNumberLiteral,
698
705
  emitGenericObject,
699
706
  emitDictionary,
700
707
  emitObject,
@@ -31,6 +31,7 @@ import type {
31
31
  NativeModuleTypeAnnotation,
32
32
  NativeModuleUnionTypeAnnotation,
33
33
  Nullable,
34
+ NumberLiteralTypeAnnotation,
34
35
  ObjectTypeAnnotation,
35
36
  ReservedTypeAnnotation,
36
37
  StringLiteralTypeAnnotation,
@@ -170,6 +171,16 @@ function emitMixed(
170
171
  });
171
172
  }
172
173
 
174
+ function emitNumberLiteral(
175
+ nullable: boolean,
176
+ value: number,
177
+ ): Nullable<NumberLiteralTypeAnnotation> {
178
+ return wrapNullable(nullable, {
179
+ type: 'NumberLiteralTypeAnnotation',
180
+ value,
181
+ });
182
+ }
183
+
173
184
  function emitString(nullable: boolean): Nullable<StringTypeAnnotation> {
174
185
  return wrapNullable(nullable, {
175
186
  type: 'StringTypeAnnotation',
@@ -762,6 +773,7 @@ module.exports = {
762
773
  emitInt32Prop,
763
774
  emitMixedProp,
764
775
  emitNumber,
776
+ emitNumberLiteral,
765
777
  emitGenericObject,
766
778
  emitDictionary,
767
779
  emitObject,
@@ -110,6 +110,7 @@ import * as TurboModuleRegistry from '../TurboModuleRegistry';
110
110
  export interface Spec extends TurboModule {
111
111
  readonly passBool?: (arg: boolean) => void;
112
112
  readonly passNumber: (arg: number) => void;
113
+ readonly passNumberLiteral: (arg: 4) => void;
113
114
  readonly passString: (arg: string) => void;
114
115
  readonly passStringish: (arg: Stringish) => void;
115
116
  readonly passStringLiteral: (arg: 'A String Literal') => void;
@@ -113,6 +113,7 @@ import * as TurboModuleRegistry from '../TurboModuleRegistry';
113
113
  export interface Spec extends TurboModule {
114
114
  readonly passBool?: (arg: boolean) => void;
115
115
  readonly passNumber: (arg: number) => void;
116
+ readonly passNumberLiteral: (arg: 4) => void;
116
117
  readonly passString: (arg: string) => void;
117
118
  readonly passStringish: (arg: Stringish) => void;
118
119
  readonly passStringLiteral: (arg: 'A String Literal') => void;
@@ -25,6 +25,7 @@ const _require3 = require('../../parsers-primitives'),
25
25
  emitCommonTypes = _require3.emitCommonTypes,
26
26
  emitDictionary = _require3.emitDictionary,
27
27
  emitFunction = _require3.emitFunction,
28
+ emitNumberLiteral = _require3.emitNumberLiteral,
28
29
  emitPromise = _require3.emitPromise,
29
30
  emitRootTag = _require3.emitRootTag,
30
31
  emitStringLiteral = _require3.emitStringLiteral,
@@ -394,6 +395,9 @@ function translateTypeAnnotation(
394
395
  case 'StringLiteral': {
395
396
  return emitStringLiteral(nullable, literal.value);
396
397
  }
398
+ case 'NumericLiteral': {
399
+ return emitNumberLiteral(nullable, literal.value);
400
+ }
397
401
  default: {
398
402
  throw new UnsupportedTypeAnnotationParserError(
399
403
  hasteModuleName,
@@ -37,6 +37,7 @@ const {
37
37
  emitCommonTypes,
38
38
  emitDictionary,
39
39
  emitFunction,
40
+ emitNumberLiteral,
40
41
  emitPromise,
41
42
  emitRootTag,
42
43
  emitStringLiteral,
@@ -403,6 +404,9 @@ function translateTypeAnnotation(
403
404
  case 'StringLiteral': {
404
405
  return emitStringLiteral(nullable, literal.value);
405
406
  }
407
+ case 'NumericLiteral': {
408
+ return emitNumberLiteral(nullable, literal.value);
409
+ }
406
410
  default: {
407
411
  throw new UnsupportedTypeAnnotationParserError(
408
412
  hasteModuleName,
@@ -15,7 +15,7 @@ import type {
15
15
  NamedShape,
16
16
  NativeModuleAliasMap,
17
17
  NativeModuleEnumMap,
18
- NativeModuleEnumMembers,
18
+ NativeModuleEnumMember,
19
19
  NativeModuleEnumMemberType,
20
20
  NativeModuleParamTypeAnnotation,
21
21
  Nullable,
@@ -223,7 +223,9 @@ class TypeScriptParser implements Parser {
223
223
  });
224
224
  }
225
225
 
226
- parseEnumMembers(typeAnnotation: $FlowFixMe): NativeModuleEnumMembers {
226
+ parseEnumMembers(
227
+ typeAnnotation: $FlowFixMe,
228
+ ): $ReadOnlyArray<NativeModuleEnumMember> {
227
229
  return typeAnnotation.members.map(member => ({
228
230
  name: member.id.name,
229
231
  value: member.initializer?.value ?? member.id.name,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-native/codegen",
3
- "version": "0.77.0-nightly-20241104-7211119d2",
3
+ "version": "0.77.0-nightly-20241105-fe656be26",
4
4
  "description": "Code generation tools for React Native",
5
5
  "license": "MIT",
6
6
  "repository": {