@react-native/codegen 0.72.1 → 0.72.3

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 (125) hide show
  1. package/lib/CodegenSchema.d.ts +348 -0
  2. package/lib/CodegenSchema.js.flow +31 -3
  3. package/lib/SchemaValidator.d.ts +11 -0
  4. package/lib/cli/combine/combine-js-to-schema.js +8 -8
  5. package/lib/cli/combine/combine-js-to-schema.js.flow +8 -7
  6. package/lib/cli/parser/parser.js +8 -15
  7. package/lib/cli/parser/parser.js.flow +8 -14
  8. package/lib/generators/Utils.js +16 -0
  9. package/lib/generators/Utils.js.flow +20 -0
  10. package/lib/generators/__test_fixtures__/fixtures.js +2 -1
  11. package/lib/generators/__test_fixtures__/fixtures.js.flow +2 -1
  12. package/lib/generators/components/ComponentsGeneratorUtils.js +10 -1
  13. package/lib/generators/components/ComponentsGeneratorUtils.js.flow +12 -2
  14. package/lib/generators/components/CppHelpers.js +8 -15
  15. package/lib/generators/components/CppHelpers.js.flow +8 -19
  16. package/lib/generators/components/GenerateEventEmitterCpp.js +7 -3
  17. package/lib/generators/components/GenerateEventEmitterCpp.js.flow +7 -3
  18. package/lib/generators/components/GenerateEventEmitterH.js +2 -2
  19. package/lib/generators/components/GenerateEventEmitterH.js.flow +1 -2
  20. package/lib/generators/components/GeneratePropsH.js +3 -4
  21. package/lib/generators/components/GeneratePropsH.js.flow +2 -4
  22. package/lib/generators/components/GeneratePropsJavaDelegate.js +2 -0
  23. package/lib/generators/components/GeneratePropsJavaDelegate.js.flow +2 -0
  24. package/lib/generators/components/GeneratePropsJavaInterface.js +3 -0
  25. package/lib/generators/components/GeneratePropsJavaInterface.js.flow +3 -0
  26. package/lib/generators/components/GeneratePropsJavaPojo/serializePojo.js +8 -0
  27. package/lib/generators/components/GeneratePropsJavaPojo/serializePojo.js.flow +12 -0
  28. package/lib/generators/components/GenerateTests.js +3 -2
  29. package/lib/generators/components/GenerateTests.js.flow +3 -1
  30. package/lib/generators/components/GenerateViewConfigJs.js +5 -2
  31. package/lib/generators/components/GenerateViewConfigJs.js.flow +5 -2
  32. package/lib/generators/components/JavaHelpers.js +9 -0
  33. package/lib/generators/components/JavaHelpers.js.flow +12 -1
  34. package/lib/generators/components/__test_fixtures__/fixtures.js +41 -0
  35. package/lib/generators/components/__test_fixtures__/fixtures.js.flow +42 -0
  36. package/lib/generators/modules/GenerateModuleCpp.js +9 -4
  37. package/lib/generators/modules/GenerateModuleCpp.js.flow +11 -3
  38. package/lib/generators/modules/GenerateModuleH.js +185 -33
  39. package/lib/generators/modules/GenerateModuleH.js.flow +203 -25
  40. package/lib/generators/modules/GenerateModuleJavaSpec.js +2 -2
  41. package/lib/generators/modules/GenerateModuleJavaSpec.js.flow +5 -5
  42. package/lib/generators/modules/GenerateModuleJniCpp.js +2 -2
  43. package/lib/generators/modules/GenerateModuleJniCpp.js.flow +5 -5
  44. package/lib/generators/modules/GenerateModuleObjCpp/index.js +2 -2
  45. package/lib/generators/modules/GenerateModuleObjCpp/index.js.flow +2 -2
  46. package/lib/generators/modules/GenerateModuleObjCpp/serializeMethod.js.flow +2 -2
  47. package/lib/generators/modules/Utils.js +4 -0
  48. package/lib/generators/modules/Utils.js.flow +6 -0
  49. package/lib/generators/modules/__test_fixtures__/fixtures.js +152 -10
  50. package/lib/generators/modules/__test_fixtures__/fixtures.js.flow +152 -10
  51. package/lib/parsers/error-utils.js +42 -19
  52. package/lib/parsers/error-utils.js.flow +46 -19
  53. package/lib/parsers/errors.d.ts +10 -0
  54. package/lib/parsers/errors.js +9 -29
  55. package/lib/parsers/errors.js.flow +2 -20
  56. package/lib/parsers/flow/Visitor.js +37 -0
  57. package/lib/parsers/flow/Visitor.js.flow +41 -0
  58. package/lib/parsers/flow/components/__test_fixtures__/fixtures.js +20 -2
  59. package/lib/parsers/flow/components/__test_fixtures__/fixtures.js.flow +20 -2
  60. package/lib/parsers/flow/components/commands.js +3 -0
  61. package/lib/parsers/flow/components/commands.js.flow +2 -1
  62. package/lib/parsers/flow/components/componentsUtils.js +10 -0
  63. package/lib/parsers/flow/components/componentsUtils.js.flow +11 -1
  64. package/lib/parsers/flow/components/events.js.flow +1 -1
  65. package/lib/parsers/flow/components/extends.js.flow +1 -1
  66. package/lib/parsers/flow/components/index.js +16 -20
  67. package/lib/parsers/flow/components/index.js.flow +8 -7
  68. package/lib/parsers/flow/components/options.js.flow +1 -1
  69. package/lib/parsers/flow/components/props.js.flow +1 -1
  70. package/lib/parsers/flow/modules/__test_fixtures__/failures.js +54 -0
  71. package/lib/parsers/flow/modules/__test_fixtures__/failures.js.flow +56 -0
  72. package/lib/parsers/flow/modules/__test_fixtures__/fixtures.js +64 -1
  73. package/lib/parsers/flow/modules/__test_fixtures__/fixtures.js.flow +66 -1
  74. package/lib/parsers/flow/modules/index.js +112 -48
  75. package/lib/parsers/flow/modules/index.js.flow +115 -44
  76. package/lib/parsers/flow/parser.d.ts +10 -0
  77. package/lib/parsers/flow/parser.js +173 -32
  78. package/lib/parsers/flow/parser.js.flow +201 -24
  79. package/lib/parsers/flow/utils.js +33 -57
  80. package/lib/parsers/flow/utils.js.flow +37 -60
  81. package/lib/parsers/parser.d.ts +17 -0
  82. package/lib/parsers/parser.js.flow +124 -17
  83. package/lib/parsers/parserMock.js +101 -30
  84. package/lib/parsers/parserMock.js.flow +139 -24
  85. package/lib/parsers/parsers-commons.js +121 -119
  86. package/lib/parsers/parsers-commons.js.flow +136 -131
  87. package/lib/parsers/parsers-primitives.js +75 -12
  88. package/lib/parsers/parsers-primitives.js.flow +92 -13
  89. package/lib/parsers/schema/index.d.ts +10 -0
  90. package/lib/parsers/{typescript/components/schema.js.flow → schema.js.flow} +1 -1
  91. package/lib/parsers/typescript/Visitor.js +42 -0
  92. package/lib/parsers/typescript/Visitor.js.flow +47 -0
  93. package/lib/parsers/typescript/components/__test_fixtures__/fixtures.js +22 -0
  94. package/lib/parsers/typescript/components/__test_fixtures__/fixtures.js.flow +22 -0
  95. package/lib/parsers/typescript/components/commands.js +3 -0
  96. package/lib/parsers/typescript/components/commands.js.flow +2 -1
  97. package/lib/parsers/typescript/components/componentsUtils.js +5 -0
  98. package/lib/parsers/typescript/components/componentsUtils.js.flow +6 -1
  99. package/lib/parsers/typescript/components/events.js.flow +1 -1
  100. package/lib/parsers/typescript/components/extends.js.flow +1 -1
  101. package/lib/parsers/typescript/components/index.js +15 -19
  102. package/lib/parsers/typescript/components/index.js.flow +8 -7
  103. package/lib/parsers/typescript/components/options.js.flow +1 -1
  104. package/lib/parsers/typescript/components/props.js.flow +1 -1
  105. package/lib/parsers/typescript/modules/__test_fixtures__/failures.js +52 -0
  106. package/lib/parsers/typescript/modules/__test_fixtures__/failures.js.flow +54 -0
  107. package/lib/parsers/typescript/modules/__test_fixtures__/fixtures.js +142 -0
  108. package/lib/parsers/typescript/modules/__test_fixtures__/fixtures.js.flow +146 -0
  109. package/lib/parsers/typescript/modules/index.js +276 -110
  110. package/lib/parsers/typescript/modules/index.js.flow +237 -68
  111. package/lib/parsers/typescript/parser.d.ts +10 -0
  112. package/lib/parsers/typescript/parser.js +175 -25
  113. package/lib/parsers/typescript/parser.js.flow +184 -26
  114. package/lib/parsers/typescript/utils.js +40 -51
  115. package/lib/parsers/typescript/utils.js.flow +44 -55
  116. package/lib/parsers/utils.js +0 -125
  117. package/lib/parsers/utils.js.flow +3 -70
  118. package/package.json +4 -1
  119. package/lib/parsers/flow/components/schema.js +0 -106
  120. package/lib/parsers/flow/components/schema.js.flow +0 -62
  121. package/lib/parsers/flow/index.js +0 -80
  122. package/lib/parsers/flow/index.js.flow +0 -85
  123. package/lib/parsers/typescript/index.js +0 -85
  124. package/lib/parsers/typescript/index.js.flow +0 -94
  125. /package/lib/parsers/{typescript/components/schema.js → schema.js} +0 -0
@@ -148,7 +148,7 @@ ${modules}
148
148
  } // namespace facebook
149
149
  `;
150
150
  };
151
- function serializeArg(arg, index, resolveAlias) {
151
+ function serializeArg(moduleName, arg, index, resolveAlias, enumMap) {
152
152
  const nullableTypeAnnotation = arg.typeAnnotation,
153
153
  optional = arg.optional;
154
154
  const _unwrapNullable = unwrapNullable(nullableTypeAnnotation),
@@ -238,9 +238,11 @@ function serializeArg(arg, index, resolveAlias) {
238
238
  }
239
239
  }
240
240
  function serializePropertyIntoHostFunction(
241
+ moduleName,
241
242
  hasteModuleName,
242
243
  property,
243
244
  resolveAlias,
245
+ enumMap,
244
246
  ) {
245
247
  const _unwrapNullable3 = unwrapNullable(property.typeAnnotation),
246
248
  _unwrapNullable4 = _slicedToArray(_unwrapNullable3, 1),
@@ -250,7 +252,7 @@ function serializePropertyIntoHostFunction(
250
252
  methodName: property.name,
251
253
  returnTypeAnnotation: propertyTypeAnnotation.returnTypeAnnotation,
252
254
  args: propertyTypeAnnotation.params.map((p, i) =>
253
- serializeArg(p, i, resolveAlias),
255
+ serializeArg(moduleName, p, i, resolveAlias, enumMap),
254
256
  ),
255
257
  });
256
258
  }
@@ -260,15 +262,18 @@ module.exports = {
260
262
  const modules = Object.keys(nativeModules)
261
263
  .map(hasteModuleName => {
262
264
  const nativeModule = nativeModules[hasteModuleName];
263
- const aliases = nativeModule.aliases,
265
+ const aliasMap = nativeModule.aliasMap,
266
+ enumMap = nativeModule.enumMap,
264
267
  properties = nativeModule.spec.properties,
265
268
  moduleName = nativeModule.moduleName;
266
- const resolveAlias = createAliasResolver(aliases);
269
+ const resolveAlias = createAliasResolver(aliasMap);
267
270
  const hostFunctions = properties.map(property =>
268
271
  serializePropertyIntoHostFunction(
272
+ moduleName,
269
273
  hasteModuleName,
270
274
  property,
271
275
  resolveAlias,
276
+ enumMap,
272
277
  ),
273
278
  );
274
279
  return ModuleTemplate({
@@ -18,6 +18,7 @@ import type {
18
18
  NativeModuleFunctionTypeAnnotation,
19
19
  NativeModuleParamTypeAnnotation,
20
20
  NativeModuleTypeAnnotation,
21
+ NativeModuleEnumMap,
21
22
  } from '../../CodegenSchema';
22
23
 
23
24
  import type {AliasResolver} from './Utils';
@@ -114,9 +115,11 @@ ${modules}
114
115
  type Param = NamedShape<Nullable<NativeModuleParamTypeAnnotation>>;
115
116
 
116
117
  function serializeArg(
118
+ moduleName: string,
117
119
  arg: Param,
118
120
  index: number,
119
121
  resolveAlias: AliasResolver,
122
+ enumMap: NativeModuleEnumMap,
120
123
  ): string {
121
124
  const {typeAnnotation: nullableTypeAnnotation, optional} = arg;
122
125
  const [typeAnnotation, nullable] =
@@ -208,9 +211,11 @@ function serializeArg(
208
211
  }
209
212
 
210
213
  function serializePropertyIntoHostFunction(
214
+ moduleName: string,
211
215
  hasteModuleName: string,
212
216
  property: NativeModulePropertyShape,
213
217
  resolveAlias: AliasResolver,
218
+ enumMap: NativeModuleEnumMap,
214
219
  ): string {
215
220
  const [propertyTypeAnnotation] =
216
221
  unwrapNullable<NativeModuleFunctionTypeAnnotation>(property.typeAnnotation);
@@ -220,7 +225,7 @@ function serializePropertyIntoHostFunction(
220
225
  methodName: property.name,
221
226
  returnTypeAnnotation: propertyTypeAnnotation.returnTypeAnnotation,
222
227
  args: propertyTypeAnnotation.params.map((p, i) =>
223
- serializeArg(p, i, resolveAlias),
228
+ serializeArg(moduleName, p, i, resolveAlias, enumMap),
224
229
  ),
225
230
  });
226
231
  }
@@ -238,16 +243,19 @@ module.exports = {
238
243
  .map((hasteModuleName: string) => {
239
244
  const nativeModule = nativeModules[hasteModuleName];
240
245
  const {
241
- aliases,
246
+ aliasMap,
247
+ enumMap,
242
248
  spec: {properties},
243
249
  moduleName,
244
250
  } = nativeModule;
245
- const resolveAlias = createAliasResolver(aliases);
251
+ const resolveAlias = createAliasResolver(aliasMap);
246
252
  const hostFunctions = properties.map(property =>
247
253
  serializePropertyIntoHostFunction(
254
+ moduleName,
248
255
  hasteModuleName,
249
256
  property,
250
257
  resolveAlias,
258
+ enumMap,
251
259
  ),
252
260
  );
253
261
 
@@ -78,19 +78,25 @@ function _iterableToArrayLimit(arr, i) {
78
78
  function _arrayWithHoles(arr) {
79
79
  if (Array.isArray(arr)) return arr;
80
80
  }
81
- const _require = require('./Utils'),
82
- createAliasResolver = _require.createAliasResolver,
83
- getModules = _require.getModules;
84
- const _require2 = require('../Utils'),
85
- indent = _require2.indent;
86
- const _require3 = require('../../parsers/parsers-commons'),
87
- unwrapNullable = _require3.unwrapNullable;
81
+ const _require = require('../Utils'),
82
+ getEnumName = _require.getEnumName,
83
+ toSafeCppString = _require.toSafeCppString;
84
+ const _require2 = require('./Utils'),
85
+ createAliasResolver = _require2.createAliasResolver,
86
+ getModules = _require2.getModules,
87
+ getAreEnumMembersInteger = _require2.getAreEnumMembersInteger;
88
+ const _require3 = require('../Utils'),
89
+ indent = _require3.indent;
90
+ const _require4 = require('../../parsers/parsers-commons'),
91
+ unwrapNullable = _require4.unwrapNullable;
88
92
  const ModuleClassDeclarationTemplate = ({
89
93
  hasteModuleName,
90
94
  moduleProperties,
91
95
  structs,
96
+ enums,
92
97
  }) => {
93
- return `${structs}class JSI_EXPORT ${hasteModuleName}CxxSpecJSI : public TurboModule {
98
+ return `${enums}
99
+ ${structs}class JSI_EXPORT ${hasteModuleName}CxxSpecJSI : public TurboModule {
94
100
  protected:
95
101
  ${hasteModuleName}CxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker);
96
102
 
@@ -156,10 +162,12 @@ ${modules.join('\n\n')}
156
162
  `;
157
163
  };
158
164
  function translatePrimitiveJSTypeToCpp(
165
+ moduleName,
159
166
  nullableTypeAnnotation,
160
167
  optional,
161
168
  createErrorMessage,
162
169
  resolveAlias,
170
+ enumMap,
163
171
  ) {
164
172
  const _unwrapNullable = unwrapNullable(nullableTypeAnnotation),
165
173
  _unwrapNullable2 = _slicedToArray(_unwrapNullable, 2),
@@ -199,7 +207,11 @@ function translatePrimitiveJSTypeToCpp(
199
207
  case 'EnumDeclaration':
200
208
  switch (realTypeAnnotation.memberType) {
201
209
  case 'NumberTypeAnnotation':
202
- return wrap('double');
210
+ return getAreEnumMembersInteger(
211
+ enumMap[realTypeAnnotation.name].members,
212
+ )
213
+ ? wrap('int')
214
+ : wrap('double');
203
215
  case 'StringTypeAnnotation':
204
216
  return wrap('jsi::String');
205
217
  default:
@@ -233,7 +245,7 @@ function translatePrimitiveJSTypeToCpp(
233
245
  throw new Error(createErrorMessage(realTypeAnnotation.type));
234
246
  }
235
247
  }
236
- function createStructs(moduleName, aliasMap, resolveAlias) {
248
+ function createStructsString(moduleName, aliasMap, resolveAlias, enumMap) {
237
249
  return Object.keys(aliasMap)
238
250
  .map(alias => {
239
251
  const value = aliasMap[alias];
@@ -247,6 +259,22 @@ function createStructs(moduleName, aliasMap, resolveAlias) {
247
259
  const templateParameter = value.properties
248
260
  .map((v, i) => 'P' + i)
249
261
  .join(', ');
262
+ const paramemterConversion = value.properties
263
+ .map((v, i) => {
264
+ const translatedParam = translatePrimitiveJSTypeToCpp(
265
+ moduleName,
266
+ v.typeAnnotation,
267
+ false,
268
+ typeName =>
269
+ `Unsupported type for param "${v.name}". Found: ${typeName}`,
270
+ resolveAlias,
271
+ enumMap,
272
+ );
273
+ return ` static ${translatedParam} ${v.name}ToJs(jsi::Runtime &rt, P${i} value) {
274
+ return bridging::toJs(rt, value);
275
+ }`;
276
+ })
277
+ .join('\n');
250
278
  return `#pragma mark - ${structName}
251
279
 
252
280
  template <${templateParameterWithTypename}>
@@ -275,30 +303,136 @@ ${value.properties
275
303
  return result;
276
304
  }
277
305
 
306
+ #ifdef DEBUG
307
+ ${paramemterConversion}
308
+ #endif
309
+
278
310
  static jsi::Object toJs(
279
- jsi::Runtime &rt,
280
- const ${structName}<${templateParameter}> &value) {
281
- auto result = facebook::jsi::Object(rt);
282
- ${value.properties
283
- .map((v, i) => {
284
- if (v.optional) {
285
- return ` if (value.${v.name}) {
286
- result.setProperty(rt, "${v.name}", bridging::toJs(rt, value.${v.name}.value()));
287
- }`;
288
- } else {
289
- return ` result.setProperty(rt, "${v.name}", bridging::toJs(rt, value.${v.name}));`;
290
- }
291
- })
292
- .join('\n')}
293
- return result;
294
- }
295
- };
311
+ jsi::Runtime &rt,
312
+ const ${structName}<${templateParameter}> &value,
313
+ const std::shared_ptr<CallInvoker> &jsInvoker) {
314
+ auto result = facebook::jsi::Object(rt);
315
+ ${value.properties
316
+ .map((v, i) => {
317
+ if (v.optional) {
318
+ return ` if (value.${v.name}) {
319
+ result.setProperty(rt, "${v.name}", bridging::toJs(rt, value.${v.name}.value(), jsInvoker));
320
+ }`;
321
+ } else {
322
+ return ` result.setProperty(rt, "${v.name}", bridging::toJs(rt, value.${v.name}, jsInvoker));`;
323
+ }
324
+ })
325
+ .join('\n')}
326
+ return result;
327
+ }
328
+ };
296
329
 
297
330
  `;
298
331
  })
299
332
  .join('\n');
300
333
  }
301
- function translatePropertyToCpp(prop, resolveAlias, abstract = false) {
334
+ const EnumTemplate = ({
335
+ enumName,
336
+ values,
337
+ fromCases,
338
+ toCases,
339
+ nativeEnumMemberType,
340
+ }) => {
341
+ const _ref =
342
+ nativeEnumMemberType === 'std::string'
343
+ ? [
344
+ 'const jsi::String &rawValue',
345
+ 'std::string value = rawValue.utf8(rt);',
346
+ 'jsi::String',
347
+ ]
348
+ : [
349
+ 'const jsi::Value &rawValue',
350
+ 'double value = (double)rawValue.asNumber();',
351
+ 'jsi::Value',
352
+ ],
353
+ _ref2 = _slicedToArray(_ref, 3),
354
+ fromValue = _ref2[0],
355
+ fromValueConversion = _ref2[1],
356
+ toValue = _ref2[2];
357
+ return `
358
+ #pragma mark - ${enumName}
359
+
360
+ enum ${enumName} { ${values} };
361
+
362
+ template <>
363
+ struct Bridging<${enumName}> {
364
+ static ${enumName} fromJs(jsi::Runtime &rt, ${fromValue}, const std::shared_ptr<CallInvoker> &jsInvoker) {
365
+ ${fromValueConversion}
366
+ ${fromCases}
367
+ }
368
+
369
+ static ${toValue} toJs(jsi::Runtime &rt, ${enumName} value, const std::shared_ptr<CallInvoker> &jsInvoker) {
370
+ ${toCases}
371
+ }
372
+ };`;
373
+ };
374
+ function generateEnum(moduleName, origEnumName, members, memberType) {
375
+ const enumName = getEnumName(moduleName, origEnumName);
376
+ const nativeEnumMemberType =
377
+ memberType === 'StringTypeAnnotation'
378
+ ? 'std::string'
379
+ : getAreEnumMembersInteger(members)
380
+ ? 'int32_t'
381
+ : 'float';
382
+ const getMemberValueAppearance = value =>
383
+ memberType === 'StringTypeAnnotation'
384
+ ? `"${value}"`
385
+ : `${value}${nativeEnumMemberType === 'float' ? 'f' : ''}`;
386
+ const fromCases =
387
+ members
388
+ .map(
389
+ member => `if (value == ${getMemberValueAppearance(member.value)}) {
390
+ return ${enumName}::${toSafeCppString(member.name)};
391
+ }`,
392
+ )
393
+ .join(' else ') +
394
+ ` else {
395
+ throw jsi::JSError(rt, "No appropriate enum member found for value");
396
+ }`;
397
+ const toCases =
398
+ members
399
+ .map(
400
+ member => `if (value == ${enumName}::${toSafeCppString(member.name)}) {
401
+ return bridging::toJs(rt, ${getMemberValueAppearance(member.value)});
402
+ }`,
403
+ )
404
+ .join(' else ') +
405
+ ` else {
406
+ throw jsi::JSError(rt, "No appropriate enum member found for enum value");
407
+ }`;
408
+ return EnumTemplate({
409
+ enumName,
410
+ values: members.map(member => member.name).join(', '),
411
+ fromCases,
412
+ toCases,
413
+ nativeEnumMemberType,
414
+ });
415
+ }
416
+ function createEnums(moduleName, enumMap, resolveAlias) {
417
+ return Object.entries(enumMap)
418
+ .map(([enumName, enumNode]) => {
419
+ return generateEnum(
420
+ moduleName,
421
+ enumName,
422
+ enumNode.members,
423
+ enumNode.memberType,
424
+ );
425
+ })
426
+ .filter(Boolean)
427
+ .join('\n');
428
+ }
429
+ function translatePropertyToCpp(
430
+ moduleName,
431
+ prop,
432
+ resolveAlias,
433
+ enumMap,
434
+ abstract = false,
435
+ ) {
302
436
  const _unwrapNullable3 = unwrapNullable(prop.typeAnnotation),
303
437
  _unwrapNullable4 = _slicedToArray(_unwrapNullable3, 1),
304
438
  propTypeAnnotation = _unwrapNullable4[0];
@@ -307,19 +441,23 @@ function translatePropertyToCpp(prop, resolveAlias, abstract = false) {
307
441
  );
308
442
  const paramTypes = propTypeAnnotation.params.map(param => {
309
443
  const translatedParam = translatePrimitiveJSTypeToCpp(
444
+ moduleName,
310
445
  param.typeAnnotation,
311
446
  param.optional,
312
447
  typeName =>
313
448
  `Unsupported type for param "${param.name}" in ${prop.name}. Found: ${typeName}`,
314
449
  resolveAlias,
450
+ enumMap,
315
451
  );
316
452
  return `${translatedParam} ${param.name}`;
317
453
  });
318
454
  const returnType = translatePrimitiveJSTypeToCpp(
455
+ moduleName,
319
456
  propTypeAnnotation.returnTypeAnnotation,
320
457
  false,
321
458
  typeName => `Unsupported return type for ${prop.name}. Found: ${typeName}`,
322
459
  resolveAlias,
460
+ enumMap,
323
461
  );
324
462
 
325
463
  // The first param will always be the runtime reference.
@@ -342,24 +480,38 @@ module.exports = {
342
480
  const nativeModules = getModules(schema);
343
481
  const modules = Object.keys(nativeModules).flatMap(hasteModuleName => {
344
482
  const _nativeModules$hasteM = nativeModules[hasteModuleName],
345
- aliases = _nativeModules$hasteM.aliases,
483
+ aliasMap = _nativeModules$hasteM.aliasMap,
484
+ enumMap = _nativeModules$hasteM.enumMap,
346
485
  properties = _nativeModules$hasteM.spec.properties,
347
486
  moduleName = _nativeModules$hasteM.moduleName;
348
- const resolveAlias = createAliasResolver(aliases);
349
- const structs = createStructs(moduleName, aliases, resolveAlias);
487
+ const resolveAlias = createAliasResolver(aliasMap);
488
+ const structs = createStructsString(
489
+ moduleName,
490
+ aliasMap,
491
+ resolveAlias,
492
+ enumMap,
493
+ );
494
+ const enums = createEnums(moduleName, enumMap, resolveAlias);
350
495
  return [
351
496
  ModuleClassDeclarationTemplate({
352
497
  hasteModuleName,
353
498
  moduleProperties: properties.map(prop =>
354
- translatePropertyToCpp(prop, resolveAlias, true),
499
+ translatePropertyToCpp(
500
+ moduleName,
501
+ prop,
502
+ resolveAlias,
503
+ enumMap,
504
+ true,
505
+ ),
355
506
  ),
356
507
  structs,
508
+ enums,
357
509
  }),
358
510
  ModuleSpecClassDeclarationTemplate({
359
511
  hasteModuleName,
360
512
  moduleName,
361
513
  moduleProperties: properties.map(prop =>
362
- translatePropertyToCpp(prop, resolveAlias),
514
+ translatePropertyToCpp(moduleName, prop, resolveAlias, enumMap),
363
515
  ),
364
516
  }),
365
517
  ];