@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.
- package/lib/CodegenSchema.d.ts +348 -0
- package/lib/CodegenSchema.js.flow +31 -3
- package/lib/SchemaValidator.d.ts +11 -0
- package/lib/cli/combine/combine-js-to-schema.js +8 -8
- package/lib/cli/combine/combine-js-to-schema.js.flow +8 -7
- package/lib/cli/parser/parser.js +8 -15
- package/lib/cli/parser/parser.js.flow +8 -14
- package/lib/generators/Utils.js +16 -0
- package/lib/generators/Utils.js.flow +20 -0
- package/lib/generators/__test_fixtures__/fixtures.js +2 -1
- package/lib/generators/__test_fixtures__/fixtures.js.flow +2 -1
- package/lib/generators/components/ComponentsGeneratorUtils.js +10 -1
- package/lib/generators/components/ComponentsGeneratorUtils.js.flow +12 -2
- package/lib/generators/components/CppHelpers.js +8 -15
- package/lib/generators/components/CppHelpers.js.flow +8 -19
- package/lib/generators/components/GenerateEventEmitterCpp.js +7 -3
- package/lib/generators/components/GenerateEventEmitterCpp.js.flow +7 -3
- package/lib/generators/components/GenerateEventEmitterH.js +2 -2
- package/lib/generators/components/GenerateEventEmitterH.js.flow +1 -2
- package/lib/generators/components/GeneratePropsH.js +3 -4
- package/lib/generators/components/GeneratePropsH.js.flow +2 -4
- package/lib/generators/components/GeneratePropsJavaDelegate.js +2 -0
- package/lib/generators/components/GeneratePropsJavaDelegate.js.flow +2 -0
- package/lib/generators/components/GeneratePropsJavaInterface.js +3 -0
- package/lib/generators/components/GeneratePropsJavaInterface.js.flow +3 -0
- package/lib/generators/components/GeneratePropsJavaPojo/serializePojo.js +8 -0
- package/lib/generators/components/GeneratePropsJavaPojo/serializePojo.js.flow +12 -0
- package/lib/generators/components/GenerateTests.js +3 -2
- package/lib/generators/components/GenerateTests.js.flow +3 -1
- package/lib/generators/components/GenerateViewConfigJs.js +5 -2
- package/lib/generators/components/GenerateViewConfigJs.js.flow +5 -2
- package/lib/generators/components/JavaHelpers.js +9 -0
- package/lib/generators/components/JavaHelpers.js.flow +12 -1
- package/lib/generators/components/__test_fixtures__/fixtures.js +41 -0
- package/lib/generators/components/__test_fixtures__/fixtures.js.flow +42 -0
- package/lib/generators/modules/GenerateModuleCpp.js +9 -4
- package/lib/generators/modules/GenerateModuleCpp.js.flow +11 -3
- package/lib/generators/modules/GenerateModuleH.js +185 -33
- package/lib/generators/modules/GenerateModuleH.js.flow +203 -25
- package/lib/generators/modules/GenerateModuleJavaSpec.js +2 -2
- package/lib/generators/modules/GenerateModuleJavaSpec.js.flow +5 -5
- package/lib/generators/modules/GenerateModuleJniCpp.js +2 -2
- package/lib/generators/modules/GenerateModuleJniCpp.js.flow +5 -5
- package/lib/generators/modules/GenerateModuleObjCpp/index.js +2 -2
- package/lib/generators/modules/GenerateModuleObjCpp/index.js.flow +2 -2
- package/lib/generators/modules/GenerateModuleObjCpp/serializeMethod.js.flow +2 -2
- package/lib/generators/modules/Utils.js +4 -0
- package/lib/generators/modules/Utils.js.flow +6 -0
- package/lib/generators/modules/__test_fixtures__/fixtures.js +152 -10
- package/lib/generators/modules/__test_fixtures__/fixtures.js.flow +152 -10
- package/lib/parsers/error-utils.js +42 -19
- package/lib/parsers/error-utils.js.flow +46 -19
- package/lib/parsers/errors.d.ts +10 -0
- package/lib/parsers/errors.js +9 -29
- package/lib/parsers/errors.js.flow +2 -20
- package/lib/parsers/flow/Visitor.js +37 -0
- package/lib/parsers/flow/Visitor.js.flow +41 -0
- package/lib/parsers/flow/components/__test_fixtures__/fixtures.js +20 -2
- package/lib/parsers/flow/components/__test_fixtures__/fixtures.js.flow +20 -2
- package/lib/parsers/flow/components/commands.js +3 -0
- package/lib/parsers/flow/components/commands.js.flow +2 -1
- package/lib/parsers/flow/components/componentsUtils.js +10 -0
- package/lib/parsers/flow/components/componentsUtils.js.flow +11 -1
- package/lib/parsers/flow/components/events.js.flow +1 -1
- package/lib/parsers/flow/components/extends.js.flow +1 -1
- package/lib/parsers/flow/components/index.js +16 -20
- package/lib/parsers/flow/components/index.js.flow +8 -7
- package/lib/parsers/flow/components/options.js.flow +1 -1
- package/lib/parsers/flow/components/props.js.flow +1 -1
- package/lib/parsers/flow/modules/__test_fixtures__/failures.js +54 -0
- package/lib/parsers/flow/modules/__test_fixtures__/failures.js.flow +56 -0
- package/lib/parsers/flow/modules/__test_fixtures__/fixtures.js +64 -1
- package/lib/parsers/flow/modules/__test_fixtures__/fixtures.js.flow +66 -1
- package/lib/parsers/flow/modules/index.js +112 -48
- package/lib/parsers/flow/modules/index.js.flow +115 -44
- package/lib/parsers/flow/parser.d.ts +10 -0
- package/lib/parsers/flow/parser.js +173 -32
- package/lib/parsers/flow/parser.js.flow +201 -24
- package/lib/parsers/flow/utils.js +33 -57
- package/lib/parsers/flow/utils.js.flow +37 -60
- package/lib/parsers/parser.d.ts +17 -0
- package/lib/parsers/parser.js.flow +124 -17
- package/lib/parsers/parserMock.js +101 -30
- package/lib/parsers/parserMock.js.flow +139 -24
- package/lib/parsers/parsers-commons.js +121 -119
- package/lib/parsers/parsers-commons.js.flow +136 -131
- package/lib/parsers/parsers-primitives.js +75 -12
- package/lib/parsers/parsers-primitives.js.flow +92 -13
- package/lib/parsers/schema/index.d.ts +10 -0
- package/lib/parsers/{typescript/components/schema.js.flow → schema.js.flow} +1 -1
- package/lib/parsers/typescript/Visitor.js +42 -0
- package/lib/parsers/typescript/Visitor.js.flow +47 -0
- package/lib/parsers/typescript/components/__test_fixtures__/fixtures.js +22 -0
- package/lib/parsers/typescript/components/__test_fixtures__/fixtures.js.flow +22 -0
- package/lib/parsers/typescript/components/commands.js +3 -0
- package/lib/parsers/typescript/components/commands.js.flow +2 -1
- package/lib/parsers/typescript/components/componentsUtils.js +5 -0
- package/lib/parsers/typescript/components/componentsUtils.js.flow +6 -1
- package/lib/parsers/typescript/components/events.js.flow +1 -1
- package/lib/parsers/typescript/components/extends.js.flow +1 -1
- package/lib/parsers/typescript/components/index.js +15 -19
- package/lib/parsers/typescript/components/index.js.flow +8 -7
- package/lib/parsers/typescript/components/options.js.flow +1 -1
- package/lib/parsers/typescript/components/props.js.flow +1 -1
- package/lib/parsers/typescript/modules/__test_fixtures__/failures.js +52 -0
- package/lib/parsers/typescript/modules/__test_fixtures__/failures.js.flow +54 -0
- package/lib/parsers/typescript/modules/__test_fixtures__/fixtures.js +142 -0
- package/lib/parsers/typescript/modules/__test_fixtures__/fixtures.js.flow +146 -0
- package/lib/parsers/typescript/modules/index.js +276 -110
- package/lib/parsers/typescript/modules/index.js.flow +237 -68
- package/lib/parsers/typescript/parser.d.ts +10 -0
- package/lib/parsers/typescript/parser.js +175 -25
- package/lib/parsers/typescript/parser.js.flow +184 -26
- package/lib/parsers/typescript/utils.js +40 -51
- package/lib/parsers/typescript/utils.js.flow +44 -55
- package/lib/parsers/utils.js +0 -125
- package/lib/parsers/utils.js.flow +3 -70
- package/package.json +4 -1
- package/lib/parsers/flow/components/schema.js +0 -106
- package/lib/parsers/flow/components/schema.js.flow +0 -62
- package/lib/parsers/flow/index.js +0 -80
- package/lib/parsers/flow/index.js.flow +0 -85
- package/lib/parsers/typescript/index.js +0 -85
- package/lib/parsers/typescript/index.js.flow +0 -94
- /package/lib/parsers/{typescript/components/schema.js → schema.js} +0 -0
|
@@ -17,10 +17,20 @@ import type {
|
|
|
17
17
|
NativeModuleFunctionTypeAnnotation,
|
|
18
18
|
NativeModulePropertyShape,
|
|
19
19
|
NativeModuleAliasMap,
|
|
20
|
+
NativeModuleEnumMap,
|
|
21
|
+
NativeModuleEnumMembers,
|
|
22
|
+
NativeModuleEnumMemberType,
|
|
20
23
|
} from '../../CodegenSchema';
|
|
21
24
|
|
|
22
25
|
import type {AliasResolver} from './Utils';
|
|
23
|
-
|
|
26
|
+
|
|
27
|
+
const {getEnumName, toSafeCppString} = require('../Utils');
|
|
28
|
+
|
|
29
|
+
const {
|
|
30
|
+
createAliasResolver,
|
|
31
|
+
getModules,
|
|
32
|
+
getAreEnumMembersInteger,
|
|
33
|
+
} = require('./Utils');
|
|
24
34
|
const {indent} = require('../Utils');
|
|
25
35
|
const {unwrapNullable} = require('../../parsers/parsers-commons');
|
|
26
36
|
|
|
@@ -30,12 +40,15 @@ const ModuleClassDeclarationTemplate = ({
|
|
|
30
40
|
hasteModuleName,
|
|
31
41
|
moduleProperties,
|
|
32
42
|
structs,
|
|
43
|
+
enums,
|
|
33
44
|
}: $ReadOnly<{
|
|
34
45
|
hasteModuleName: string,
|
|
35
46
|
moduleProperties: string[],
|
|
36
47
|
structs: string,
|
|
48
|
+
enums: string,
|
|
37
49
|
}>) => {
|
|
38
|
-
return `${
|
|
50
|
+
return `${enums}
|
|
51
|
+
${structs}class JSI_EXPORT ${hasteModuleName}CxxSpecJSI : public TurboModule {
|
|
39
52
|
protected:
|
|
40
53
|
${hasteModuleName}CxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker);
|
|
41
54
|
|
|
@@ -112,10 +125,12 @@ ${modules.join('\n\n')}
|
|
|
112
125
|
};
|
|
113
126
|
|
|
114
127
|
function translatePrimitiveJSTypeToCpp(
|
|
128
|
+
moduleName: string,
|
|
115
129
|
nullableTypeAnnotation: Nullable<NativeModuleTypeAnnotation>,
|
|
116
130
|
optional: boolean,
|
|
117
131
|
createErrorMessage: (typeName: string) => string,
|
|
118
132
|
resolveAlias: AliasResolver,
|
|
133
|
+
enumMap: NativeModuleEnumMap,
|
|
119
134
|
) {
|
|
120
135
|
const [typeAnnotation, nullable] = unwrapNullable<NativeModuleTypeAnnotation>(
|
|
121
136
|
nullableTypeAnnotation,
|
|
@@ -157,7 +172,11 @@ function translatePrimitiveJSTypeToCpp(
|
|
|
157
172
|
case 'EnumDeclaration':
|
|
158
173
|
switch (realTypeAnnotation.memberType) {
|
|
159
174
|
case 'NumberTypeAnnotation':
|
|
160
|
-
return
|
|
175
|
+
return getAreEnumMembersInteger(
|
|
176
|
+
enumMap[realTypeAnnotation.name].members,
|
|
177
|
+
)
|
|
178
|
+
? wrap('int')
|
|
179
|
+
: wrap('double');
|
|
161
180
|
case 'StringTypeAnnotation':
|
|
162
181
|
return wrap('jsi::String');
|
|
163
182
|
default:
|
|
@@ -192,10 +211,11 @@ function translatePrimitiveJSTypeToCpp(
|
|
|
192
211
|
}
|
|
193
212
|
}
|
|
194
213
|
|
|
195
|
-
function
|
|
214
|
+
function createStructsString(
|
|
196
215
|
moduleName: string,
|
|
197
216
|
aliasMap: NativeModuleAliasMap,
|
|
198
217
|
resolveAlias: AliasResolver,
|
|
218
|
+
enumMap: NativeModuleEnumMap,
|
|
199
219
|
): string {
|
|
200
220
|
return Object.keys(aliasMap)
|
|
201
221
|
.map(alias => {
|
|
@@ -210,6 +230,22 @@ function createStructs(
|
|
|
210
230
|
const templateParameter = value.properties
|
|
211
231
|
.map((v, i) => 'P' + i)
|
|
212
232
|
.join(', ');
|
|
233
|
+
const paramemterConversion = value.properties
|
|
234
|
+
.map((v, i) => {
|
|
235
|
+
const translatedParam = translatePrimitiveJSTypeToCpp(
|
|
236
|
+
moduleName,
|
|
237
|
+
v.typeAnnotation,
|
|
238
|
+
false,
|
|
239
|
+
typeName =>
|
|
240
|
+
`Unsupported type for param "${v.name}". Found: ${typeName}`,
|
|
241
|
+
resolveAlias,
|
|
242
|
+
enumMap,
|
|
243
|
+
);
|
|
244
|
+
return ` static ${translatedParam} ${v.name}ToJs(jsi::Runtime &rt, P${i} value) {
|
|
245
|
+
return bridging::toJs(rt, value);
|
|
246
|
+
}`;
|
|
247
|
+
})
|
|
248
|
+
.join('\n');
|
|
213
249
|
return `#pragma mark - ${structName}
|
|
214
250
|
|
|
215
251
|
template <${templateParameterWithTypename}>
|
|
@@ -238,33 +274,157 @@ ${value.properties
|
|
|
238
274
|
return result;
|
|
239
275
|
}
|
|
240
276
|
|
|
277
|
+
#ifdef DEBUG
|
|
278
|
+
${paramemterConversion}
|
|
279
|
+
#endif
|
|
280
|
+
|
|
241
281
|
static jsi::Object toJs(
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
282
|
+
jsi::Runtime &rt,
|
|
283
|
+
const ${structName}<${templateParameter}> &value,
|
|
284
|
+
const std::shared_ptr<CallInvoker> &jsInvoker) {
|
|
285
|
+
auto result = facebook::jsi::Object(rt);
|
|
286
|
+
${value.properties
|
|
287
|
+
.map((v, i) => {
|
|
288
|
+
if (v.optional) {
|
|
289
|
+
return ` if (value.${v.name}) {
|
|
290
|
+
result.setProperty(rt, "${v.name}", bridging::toJs(rt, value.${v.name}.value(), jsInvoker));
|
|
291
|
+
}`;
|
|
292
|
+
} else {
|
|
293
|
+
return ` result.setProperty(rt, "${v.name}", bridging::toJs(rt, value.${v.name}, jsInvoker));`;
|
|
294
|
+
}
|
|
295
|
+
})
|
|
296
|
+
.join('\n')}
|
|
297
|
+
return result;
|
|
298
|
+
}
|
|
299
|
+
};
|
|
300
|
+
|
|
301
|
+
`;
|
|
302
|
+
})
|
|
303
|
+
.join('\n');
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
type NativeEnumMemberValueType = 'std::string' | 'int32_t' | 'float';
|
|
307
|
+
|
|
308
|
+
const EnumTemplate = ({
|
|
309
|
+
enumName,
|
|
310
|
+
values,
|
|
311
|
+
fromCases,
|
|
312
|
+
toCases,
|
|
313
|
+
nativeEnumMemberType,
|
|
314
|
+
}: {
|
|
315
|
+
enumName: string,
|
|
316
|
+
values: string,
|
|
317
|
+
fromCases: string,
|
|
318
|
+
toCases: string,
|
|
319
|
+
nativeEnumMemberType: NativeEnumMemberValueType,
|
|
320
|
+
}) => {
|
|
321
|
+
const [fromValue, fromValueConversion, toValue] =
|
|
322
|
+
nativeEnumMemberType === 'std::string'
|
|
323
|
+
? [
|
|
324
|
+
'const jsi::String &rawValue',
|
|
325
|
+
'std::string value = rawValue.utf8(rt);',
|
|
326
|
+
'jsi::String',
|
|
327
|
+
]
|
|
328
|
+
: [
|
|
329
|
+
'const jsi::Value &rawValue',
|
|
330
|
+
'double value = (double)rawValue.asNumber();',
|
|
331
|
+
'jsi::Value',
|
|
332
|
+
];
|
|
333
|
+
|
|
334
|
+
return `
|
|
335
|
+
#pragma mark - ${enumName}
|
|
336
|
+
|
|
337
|
+
enum ${enumName} { ${values} };
|
|
338
|
+
|
|
339
|
+
template <>
|
|
340
|
+
struct Bridging<${enumName}> {
|
|
341
|
+
static ${enumName} fromJs(jsi::Runtime &rt, ${fromValue}, const std::shared_ptr<CallInvoker> &jsInvoker) {
|
|
342
|
+
${fromValueConversion}
|
|
343
|
+
${fromCases}
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
static ${toValue} toJs(jsi::Runtime &rt, ${enumName} value, const std::shared_ptr<CallInvoker> &jsInvoker) {
|
|
347
|
+
${toCases}
|
|
257
348
|
}
|
|
349
|
+
};`;
|
|
258
350
|
};
|
|
259
351
|
|
|
260
|
-
|
|
352
|
+
function generateEnum(
|
|
353
|
+
moduleName: string,
|
|
354
|
+
origEnumName: string,
|
|
355
|
+
members: NativeModuleEnumMembers,
|
|
356
|
+
memberType: NativeModuleEnumMemberType,
|
|
357
|
+
): string {
|
|
358
|
+
const enumName = getEnumName(moduleName, origEnumName);
|
|
359
|
+
|
|
360
|
+
const nativeEnumMemberType: NativeEnumMemberValueType =
|
|
361
|
+
memberType === 'StringTypeAnnotation'
|
|
362
|
+
? 'std::string'
|
|
363
|
+
: getAreEnumMembersInteger(members)
|
|
364
|
+
? 'int32_t'
|
|
365
|
+
: 'float';
|
|
366
|
+
|
|
367
|
+
const getMemberValueAppearance = (value: string) =>
|
|
368
|
+
memberType === 'StringTypeAnnotation'
|
|
369
|
+
? `"${value}"`
|
|
370
|
+
: `${value}${nativeEnumMemberType === 'float' ? 'f' : ''}`;
|
|
371
|
+
|
|
372
|
+
const fromCases =
|
|
373
|
+
members
|
|
374
|
+
.map(
|
|
375
|
+
member => `if (value == ${getMemberValueAppearance(member.value)}) {
|
|
376
|
+
return ${enumName}::${toSafeCppString(member.name)};
|
|
377
|
+
}`,
|
|
378
|
+
)
|
|
379
|
+
.join(' else ') +
|
|
380
|
+
` else {
|
|
381
|
+
throw jsi::JSError(rt, "No appropriate enum member found for value");
|
|
382
|
+
}`;
|
|
383
|
+
|
|
384
|
+
const toCases =
|
|
385
|
+
members
|
|
386
|
+
.map(
|
|
387
|
+
member => `if (value == ${enumName}::${toSafeCppString(member.name)}) {
|
|
388
|
+
return bridging::toJs(rt, ${getMemberValueAppearance(member.value)});
|
|
389
|
+
}`,
|
|
390
|
+
)
|
|
391
|
+
.join(' else ') +
|
|
392
|
+
` else {
|
|
393
|
+
throw jsi::JSError(rt, "No appropriate enum member found for enum value");
|
|
394
|
+
}`;
|
|
395
|
+
|
|
396
|
+
return EnumTemplate({
|
|
397
|
+
enumName,
|
|
398
|
+
values: members.map(member => member.name).join(', '),
|
|
399
|
+
fromCases,
|
|
400
|
+
toCases,
|
|
401
|
+
nativeEnumMemberType,
|
|
402
|
+
});
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
function createEnums(
|
|
406
|
+
moduleName: string,
|
|
407
|
+
enumMap: NativeModuleEnumMap,
|
|
408
|
+
resolveAlias: AliasResolver,
|
|
409
|
+
): string {
|
|
410
|
+
return Object.entries(enumMap)
|
|
411
|
+
.map(([enumName, enumNode]) => {
|
|
412
|
+
return generateEnum(
|
|
413
|
+
moduleName,
|
|
414
|
+
enumName,
|
|
415
|
+
enumNode.members,
|
|
416
|
+
enumNode.memberType,
|
|
417
|
+
);
|
|
261
418
|
})
|
|
419
|
+
.filter(Boolean)
|
|
262
420
|
.join('\n');
|
|
263
421
|
}
|
|
264
422
|
|
|
265
423
|
function translatePropertyToCpp(
|
|
424
|
+
moduleName: string,
|
|
266
425
|
prop: NativeModulePropertyShape,
|
|
267
426
|
resolveAlias: AliasResolver,
|
|
427
|
+
enumMap: NativeModuleEnumMap,
|
|
268
428
|
abstract: boolean = false,
|
|
269
429
|
) {
|
|
270
430
|
const [propTypeAnnotation] =
|
|
@@ -276,20 +436,24 @@ function translatePropertyToCpp(
|
|
|
276
436
|
|
|
277
437
|
const paramTypes = propTypeAnnotation.params.map(param => {
|
|
278
438
|
const translatedParam = translatePrimitiveJSTypeToCpp(
|
|
439
|
+
moduleName,
|
|
279
440
|
param.typeAnnotation,
|
|
280
441
|
param.optional,
|
|
281
442
|
typeName =>
|
|
282
443
|
`Unsupported type for param "${param.name}" in ${prop.name}. Found: ${typeName}`,
|
|
283
444
|
resolveAlias,
|
|
445
|
+
enumMap,
|
|
284
446
|
);
|
|
285
447
|
return `${translatedParam} ${param.name}`;
|
|
286
448
|
});
|
|
287
449
|
|
|
288
450
|
const returnType = translatePrimitiveJSTypeToCpp(
|
|
451
|
+
moduleName,
|
|
289
452
|
propTypeAnnotation.returnTypeAnnotation,
|
|
290
453
|
false,
|
|
291
454
|
typeName => `Unsupported return type for ${prop.name}. Found: ${typeName}`,
|
|
292
455
|
resolveAlias,
|
|
456
|
+
enumMap,
|
|
293
457
|
);
|
|
294
458
|
|
|
295
459
|
// The first param will always be the runtime reference.
|
|
@@ -322,26 +486,40 @@ module.exports = {
|
|
|
322
486
|
|
|
323
487
|
const modules = Object.keys(nativeModules).flatMap(hasteModuleName => {
|
|
324
488
|
const {
|
|
325
|
-
|
|
489
|
+
aliasMap,
|
|
490
|
+
enumMap,
|
|
326
491
|
spec: {properties},
|
|
327
492
|
moduleName,
|
|
328
493
|
} = nativeModules[hasteModuleName];
|
|
329
|
-
const resolveAlias = createAliasResolver(
|
|
330
|
-
const structs =
|
|
494
|
+
const resolveAlias = createAliasResolver(aliasMap);
|
|
495
|
+
const structs = createStructsString(
|
|
496
|
+
moduleName,
|
|
497
|
+
aliasMap,
|
|
498
|
+
resolveAlias,
|
|
499
|
+
enumMap,
|
|
500
|
+
);
|
|
501
|
+
const enums = createEnums(moduleName, enumMap, resolveAlias);
|
|
331
502
|
|
|
332
503
|
return [
|
|
333
504
|
ModuleClassDeclarationTemplate({
|
|
334
505
|
hasteModuleName,
|
|
335
506
|
moduleProperties: properties.map(prop =>
|
|
336
|
-
translatePropertyToCpp(
|
|
507
|
+
translatePropertyToCpp(
|
|
508
|
+
moduleName,
|
|
509
|
+
prop,
|
|
510
|
+
resolveAlias,
|
|
511
|
+
enumMap,
|
|
512
|
+
true,
|
|
513
|
+
),
|
|
337
514
|
),
|
|
338
515
|
structs,
|
|
516
|
+
enums,
|
|
339
517
|
}),
|
|
340
518
|
ModuleSpecClassDeclarationTemplate({
|
|
341
519
|
hasteModuleName,
|
|
342
520
|
moduleName,
|
|
343
521
|
moduleProperties: properties.map(prop =>
|
|
344
|
-
translatePropertyToCpp(prop, resolveAlias),
|
|
522
|
+
translatePropertyToCpp(moduleName, prop, resolveAlias, enumMap),
|
|
345
523
|
),
|
|
346
524
|
}),
|
|
347
525
|
];
|
|
@@ -474,14 +474,14 @@ module.exports = {
|
|
|
474
474
|
const outputDir = `java/${normalizedPackageName.replace(/\./g, '/')}`;
|
|
475
475
|
Object.keys(nativeModules).forEach(hasteModuleName => {
|
|
476
476
|
const _nativeModules$hasteM = nativeModules[hasteModuleName],
|
|
477
|
-
|
|
477
|
+
aliasMap = _nativeModules$hasteM.aliasMap,
|
|
478
478
|
excludedPlatforms = _nativeModules$hasteM.excludedPlatforms,
|
|
479
479
|
moduleName = _nativeModules$hasteM.moduleName,
|
|
480
480
|
properties = _nativeModules$hasteM.spec.properties;
|
|
481
481
|
if (excludedPlatforms != null && excludedPlatforms.includes('android')) {
|
|
482
482
|
return;
|
|
483
483
|
}
|
|
484
|
-
const resolveAlias = createAliasResolver(
|
|
484
|
+
const resolveAlias = createAliasResolver(aliasMap);
|
|
485
485
|
const className = `${hasteModuleName}Spec`;
|
|
486
486
|
const imports = new Set([
|
|
487
487
|
// Always required.
|
|
@@ -184,7 +184,7 @@ function translateFunctionParamToJavaType(
|
|
|
184
184
|
imports.add('com.facebook.react.bridge.Callback');
|
|
185
185
|
return wrapNullable('Callback');
|
|
186
186
|
default:
|
|
187
|
-
(realTypeAnnotation.type: '
|
|
187
|
+
(realTypeAnnotation.type: 'MixedTypeAnnotation');
|
|
188
188
|
throw new Error(createErrorMessage(realTypeAnnotation.type));
|
|
189
189
|
}
|
|
190
190
|
}
|
|
@@ -272,7 +272,7 @@ function translateFunctionReturnTypeToJavaType(
|
|
|
272
272
|
imports.add('com.facebook.react.bridge.WritableArray');
|
|
273
273
|
return wrapNullable('WritableArray');
|
|
274
274
|
default:
|
|
275
|
-
(realTypeAnnotation.type: '
|
|
275
|
+
(realTypeAnnotation.type: 'MixedTypeAnnotation');
|
|
276
276
|
throw new Error(createErrorMessage(realTypeAnnotation.type));
|
|
277
277
|
}
|
|
278
278
|
}
|
|
@@ -346,7 +346,7 @@ function getFalsyReturnStatementFromReturnType(
|
|
|
346
346
|
case 'ArrayTypeAnnotation':
|
|
347
347
|
return 'return null;';
|
|
348
348
|
default:
|
|
349
|
-
(realTypeAnnotation.type: '
|
|
349
|
+
(realTypeAnnotation.type: 'MixedTypeAnnotation');
|
|
350
350
|
throw new Error(createErrorMessage(realTypeAnnotation.type));
|
|
351
351
|
}
|
|
352
352
|
}
|
|
@@ -447,7 +447,7 @@ module.exports = {
|
|
|
447
447
|
|
|
448
448
|
Object.keys(nativeModules).forEach(hasteModuleName => {
|
|
449
449
|
const {
|
|
450
|
-
|
|
450
|
+
aliasMap,
|
|
451
451
|
excludedPlatforms,
|
|
452
452
|
moduleName,
|
|
453
453
|
spec: {properties},
|
|
@@ -455,7 +455,7 @@ module.exports = {
|
|
|
455
455
|
if (excludedPlatforms != null && excludedPlatforms.includes('android')) {
|
|
456
456
|
return;
|
|
457
457
|
}
|
|
458
|
-
const resolveAlias = createAliasResolver(
|
|
458
|
+
const resolveAlias = createAliasResolver(aliasMap);
|
|
459
459
|
const className = `${hasteModuleName}Spec`;
|
|
460
460
|
|
|
461
461
|
const imports: Set<string> = new Set([
|
|
@@ -428,9 +428,9 @@ module.exports = {
|
|
|
428
428
|
.sort()
|
|
429
429
|
.map(hasteModuleName => {
|
|
430
430
|
const _nativeModules$hasteM = nativeModules[hasteModuleName],
|
|
431
|
-
|
|
431
|
+
aliasMap = _nativeModules$hasteM.aliasMap,
|
|
432
432
|
properties = _nativeModules$hasteM.spec.properties;
|
|
433
|
-
const resolveAlias = createAliasResolver(
|
|
433
|
+
const resolveAlias = createAliasResolver(aliasMap);
|
|
434
434
|
const translatedMethods = properties
|
|
435
435
|
.map(property =>
|
|
436
436
|
translateMethodForImplementation(
|
|
@@ -193,7 +193,7 @@ function translateReturnTypeToKind(
|
|
|
193
193
|
case 'ArrayTypeAnnotation':
|
|
194
194
|
return 'ArrayKind';
|
|
195
195
|
default:
|
|
196
|
-
(realTypeAnnotation.type: '
|
|
196
|
+
(realTypeAnnotation.type: 'MixedTypeAnnotation');
|
|
197
197
|
throw new Error(
|
|
198
198
|
`Unknown prop type for returning value, found: ${realTypeAnnotation.type}"`,
|
|
199
199
|
);
|
|
@@ -272,7 +272,7 @@ function translateParamTypeToJniType(
|
|
|
272
272
|
case 'FunctionTypeAnnotation':
|
|
273
273
|
return 'Lcom/facebook/react/bridge/Callback;';
|
|
274
274
|
default:
|
|
275
|
-
(realTypeAnnotation.type: '
|
|
275
|
+
(realTypeAnnotation.type: 'MixedTypeAnnotation');
|
|
276
276
|
throw new Error(
|
|
277
277
|
`Unknown prop type for method arg, found: ${realTypeAnnotation.type}"`,
|
|
278
278
|
);
|
|
@@ -348,7 +348,7 @@ function translateReturnTypeToJniType(
|
|
|
348
348
|
case 'ArrayTypeAnnotation':
|
|
349
349
|
return 'Lcom/facebook/react/bridge/WritableArray;';
|
|
350
350
|
default:
|
|
351
|
-
(realTypeAnnotation.type: '
|
|
351
|
+
(realTypeAnnotation.type: 'MixedTypeAnnotation');
|
|
352
352
|
throw new Error(
|
|
353
353
|
`Unknown prop type for method return type, found: ${realTypeAnnotation.type}"`,
|
|
354
354
|
);
|
|
@@ -438,10 +438,10 @@ module.exports = {
|
|
|
438
438
|
.sort()
|
|
439
439
|
.map(hasteModuleName => {
|
|
440
440
|
const {
|
|
441
|
-
|
|
441
|
+
aliasMap,
|
|
442
442
|
spec: {properties},
|
|
443
443
|
} = nativeModules[hasteModuleName];
|
|
444
|
-
const resolveAlias = createAliasResolver(
|
|
444
|
+
const resolveAlias = createAliasResolver(aliasMap);
|
|
445
445
|
|
|
446
446
|
const translatedMethods = properties
|
|
447
447
|
.map(property =>
|
|
@@ -106,13 +106,13 @@ module.exports = {
|
|
|
106
106
|
const hasteModuleNames = Object.keys(nativeModules).sort();
|
|
107
107
|
for (const hasteModuleName of hasteModuleNames) {
|
|
108
108
|
const _nativeModules$hasteM = nativeModules[hasteModuleName],
|
|
109
|
-
|
|
109
|
+
aliasMap = _nativeModules$hasteM.aliasMap,
|
|
110
110
|
excludedPlatforms = _nativeModules$hasteM.excludedPlatforms,
|
|
111
111
|
properties = _nativeModules$hasteM.spec.properties;
|
|
112
112
|
if (excludedPlatforms != null && excludedPlatforms.includes('iOS')) {
|
|
113
113
|
continue;
|
|
114
114
|
}
|
|
115
|
-
const resolveAlias = createAliasResolver(
|
|
115
|
+
const resolveAlias = createAliasResolver(aliasMap);
|
|
116
116
|
const structCollector = new StructCollector();
|
|
117
117
|
const methodSerializations = [];
|
|
118
118
|
const serializeProperty = property => {
|
|
@@ -132,14 +132,14 @@ module.exports = {
|
|
|
132
132
|
const hasteModuleNames: Array<string> = Object.keys(nativeModules).sort();
|
|
133
133
|
for (const hasteModuleName of hasteModuleNames) {
|
|
134
134
|
const {
|
|
135
|
-
|
|
135
|
+
aliasMap,
|
|
136
136
|
excludedPlatforms,
|
|
137
137
|
spec: {properties},
|
|
138
138
|
} = nativeModules[hasteModuleName];
|
|
139
139
|
if (excludedPlatforms != null && excludedPlatforms.includes('iOS')) {
|
|
140
140
|
continue;
|
|
141
141
|
}
|
|
142
|
-
const resolveAlias = createAliasResolver(
|
|
142
|
+
const resolveAlias = createAliasResolver(aliasMap);
|
|
143
143
|
const structCollector = new StructCollector();
|
|
144
144
|
|
|
145
145
|
const methodSerializations: Array<MethodSerializationOutput> = [];
|
|
@@ -375,7 +375,7 @@ function getReturnObjCType(
|
|
|
375
375
|
case 'GenericObjectTypeAnnotation':
|
|
376
376
|
return wrapIntoNullableIfNeeded('NSDictionary *');
|
|
377
377
|
default:
|
|
378
|
-
(typeAnnotation.type: '
|
|
378
|
+
(typeAnnotation.type: 'MixedTypeAnnotation');
|
|
379
379
|
throw new Error(
|
|
380
380
|
`Unsupported return type for ${methodName}. Found: ${typeAnnotation.type}`,
|
|
381
381
|
);
|
|
@@ -439,7 +439,7 @@ function getReturnJSType(
|
|
|
439
439
|
);
|
|
440
440
|
}
|
|
441
441
|
default:
|
|
442
|
-
(typeAnnotation.type: '
|
|
442
|
+
(typeAnnotation.type: 'MixedTypeAnnotation');
|
|
443
443
|
throw new Error(
|
|
444
444
|
`Unsupported return type for ${methodName}. Found: ${typeAnnotation.type}`,
|
|
445
445
|
);
|
|
@@ -28,7 +28,11 @@ function getModules(schema) {
|
|
|
28
28
|
return modules;
|
|
29
29
|
}, {});
|
|
30
30
|
}
|
|
31
|
+
function getAreEnumMembersInteger(members) {
|
|
32
|
+
return !members.some(m => `${m.value}`.includes('.'));
|
|
33
|
+
}
|
|
31
34
|
module.exports = {
|
|
32
35
|
createAliasResolver,
|
|
33
36
|
getModules,
|
|
37
|
+
getAreEnumMembersInteger,
|
|
34
38
|
};
|
|
@@ -15,6 +15,7 @@ import type {
|
|
|
15
15
|
NativeModuleAliasMap,
|
|
16
16
|
NativeModuleObjectTypeAnnotation,
|
|
17
17
|
NativeModuleSchema,
|
|
18
|
+
NativeModuleEnumMembers,
|
|
18
19
|
} from '../../CodegenSchema';
|
|
19
20
|
|
|
20
21
|
const invariant = require('invariant');
|
|
@@ -47,7 +48,12 @@ function getModules(
|
|
|
47
48
|
);
|
|
48
49
|
}
|
|
49
50
|
|
|
51
|
+
function getAreEnumMembersInteger(members: NativeModuleEnumMembers): boolean {
|
|
52
|
+
return !members.some(m => `${m.value}`.includes('.'));
|
|
53
|
+
}
|
|
54
|
+
|
|
50
55
|
module.exports = {
|
|
51
56
|
createAliasResolver,
|
|
52
57
|
getModules,
|
|
58
|
+
getAreEnumMembersInteger,
|
|
53
59
|
};
|