@react-native/codegen 0.74.0 → 0.75.0-nightly-20240221-a1171f79f
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 +10 -1
- package/lib/CodegenSchema.js.flow +2 -1
- package/lib/SchemaValidator.js.flow +2 -2
- package/lib/cli/combine/combine-js-to-schema-cli.js +59 -40
- package/lib/cli/combine/combine-js-to-schema-cli.js.flow +23 -39
- package/lib/cli/combine/combine-js-to-schema.js +49 -1
- package/lib/cli/combine/combine-js-to-schema.js.flow +59 -1
- package/lib/cli/combine/combine-schemas-cli.js +77 -0
- package/lib/cli/combine/combine-schemas-cli.js.flow +87 -0
- package/lib/cli/combine/combine-utils.js +3 -65
- package/lib/cli/combine/combine-utils.js.flow +7 -28
- package/lib/cli/parser/parser.js +1 -1
- package/lib/cli/parser/parser.js.flow +1 -1
- package/lib/generators/RNCodegen.d.ts +1 -0
- package/lib/generators/RNCodegen.js +58 -31
- package/lib/generators/RNCodegen.js.flow +52 -32
- package/lib/generators/TypeUtils/Cxx/index.js +17 -0
- package/lib/generators/TypeUtils/Cxx/index.js.flow +18 -0
- package/lib/generators/TypeUtils/Java/index.js +31 -0
- package/lib/generators/TypeUtils/Java/index.js.flow +27 -0
- package/lib/generators/TypeUtils/Objective-C/index.js +17 -0
- package/lib/generators/TypeUtils/Objective-C/index.js.flow +18 -0
- package/lib/generators/components/ComponentsGeneratorUtils.js +7 -7
- package/lib/generators/components/ComponentsGeneratorUtils.js.flow +8 -10
- package/lib/generators/components/ComponentsProviderUtils.js +55 -0
- package/lib/generators/components/ComponentsProviderUtils.js.flow +60 -0
- package/lib/generators/components/CppHelpers.js +7 -0
- package/lib/generators/components/CppHelpers.js.flow +14 -0
- package/lib/generators/components/GenerateComponentDescriptorCpp.js +89 -0
- package/lib/generators/components/GenerateComponentDescriptorCpp.js.flow +101 -0
- package/lib/generators/components/GenerateComponentDescriptorH.js +28 -12
- package/lib/generators/components/GenerateComponentDescriptorH.js.flow +20 -12
- package/lib/generators/components/GenerateComponentHObjCpp.js +15 -1
- package/lib/generators/components/GenerateComponentHObjCpp.js.flow +11 -2
- package/lib/generators/components/GenerateEventEmitterCpp.js +28 -15
- package/lib/generators/components/GenerateEventEmitterCpp.js.flow +16 -17
- package/lib/generators/components/GenerateEventEmitterH.js +20 -13
- package/lib/generators/components/GenerateEventEmitterH.js.flow +13 -15
- package/lib/generators/components/GeneratePropsCpp.js +17 -8
- package/lib/generators/components/GeneratePropsCpp.js.flow +13 -9
- package/lib/generators/components/GeneratePropsH.js +23 -16
- package/lib/generators/components/GeneratePropsH.js.flow +12 -16
- package/lib/generators/components/GeneratePropsJavaDelegate.js +11 -3
- package/lib/generators/components/GeneratePropsJavaDelegate.js.flow +7 -4
- package/lib/generators/components/GeneratePropsJavaInterface.js +11 -3
- package/lib/generators/components/GeneratePropsJavaInterface.js.flow +6 -3
- package/lib/generators/components/GeneratePropsJavaPojo/PojoCollector.js.flow +6 -6
- package/lib/generators/components/GeneratePropsJavaPojo/index.js +1 -1
- package/lib/generators/components/GeneratePropsJavaPojo/index.js.flow +1 -1
- package/lib/generators/components/GeneratePropsJavaPojo/serializePojo.js.flow +1 -0
- package/lib/generators/components/GenerateShadowNodeCpp.js +19 -8
- package/lib/generators/components/GenerateShadowNodeCpp.js.flow +9 -8
- package/lib/generators/components/GenerateShadowNodeH.js +27 -11
- package/lib/generators/components/GenerateShadowNodeH.js.flow +11 -14
- package/lib/generators/components/GenerateStateCpp.js +19 -8
- package/lib/generators/components/GenerateStateCpp.js.flow +9 -8
- package/lib/generators/components/GenerateStateH.js +9 -5
- package/lib/generators/components/GenerateStateH.js.flow +3 -4
- package/lib/generators/components/GenerateTests.js +11 -5
- package/lib/generators/components/GenerateTests.js.flow +2 -2
- package/lib/generators/components/GenerateThirdPartyFabricComponentsProviderH.js +16 -3
- package/lib/generators/components/GenerateThirdPartyFabricComponentsProviderH.js.flow +18 -3
- package/lib/generators/components/GenerateThirdPartyFabricComponentsProviderObjCpp.js +18 -3
- package/lib/generators/components/GenerateThirdPartyFabricComponentsProviderObjCpp.js.flow +21 -3
- package/lib/generators/components/GenerateViewConfigJs.js +2 -2
- package/lib/generators/components/GenerateViewConfigJs.js.flow +2 -2
- package/lib/generators/components/JavaHelpers.js +8 -0
- package/lib/generators/components/JavaHelpers.js.flow +9 -0
- package/lib/generators/components/__test_fixtures__/fixtures.js +22 -0
- package/lib/generators/components/__test_fixtures__/fixtures.js.flow +22 -0
- package/lib/generators/modules/GenerateModuleCpp.js +14 -10
- package/lib/generators/modules/GenerateModuleCpp.js.flow +9 -10
- package/lib/generators/modules/GenerateModuleH.js +198 -72
- package/lib/generators/modules/GenerateModuleH.js.flow +186 -71
- package/lib/generators/modules/GenerateModuleJavaSpec.js +50 -57
- package/lib/generators/modules/GenerateModuleJavaSpec.js.flow +45 -50
- package/lib/generators/modules/GenerateModuleJniCpp.js +16 -12
- package/lib/generators/modules/GenerateModuleJniCpp.js.flow +11 -12
- package/lib/generators/modules/GenerateModuleJniH.js +12 -5
- package/lib/generators/modules/GenerateModuleJniH.js.flow +8 -6
- package/lib/generators/modules/GenerateModuleObjCpp/StructCollector.js +5 -5
- package/lib/generators/modules/GenerateModuleObjCpp/StructCollector.js.flow +11 -12
- package/lib/generators/modules/GenerateModuleObjCpp/header/serializeConstantsStruct.js +23 -21
- package/lib/generators/modules/GenerateModuleObjCpp/header/serializeConstantsStruct.js.flow +19 -18
- package/lib/generators/modules/GenerateModuleObjCpp/header/serializeRegularStruct.js +23 -21
- package/lib/generators/modules/GenerateModuleObjCpp/header/serializeRegularStruct.js.flow +19 -18
- package/lib/generators/modules/GenerateModuleObjCpp/index.js +18 -20
- package/lib/generators/modules/GenerateModuleObjCpp/index.js.flow +11 -14
- package/lib/generators/modules/GenerateModuleObjCpp/serializeMethod.js +40 -42
- package/lib/generators/modules/GenerateModuleObjCpp/serializeMethod.js.flow +38 -44
- package/lib/generators/modules/GenerateModuleObjCpp/source/serializeModule.js +25 -27
- package/lib/generators/modules/GenerateModuleObjCpp/source/serializeModule.js.flow +26 -28
- package/lib/generators/modules/Utils.js +98 -0
- package/lib/generators/modules/Utils.js.flow +34 -2
- package/lib/generators/modules/__test_fixtures__/fixtures.js +685 -64
- package/lib/generators/modules/__test_fixtures__/fixtures.js.flow +686 -64
- package/lib/parsers/error-utils.js +17 -17
- package/lib/parsers/error-utils.js.flow +10 -10
- package/lib/parsers/errors.js +10 -0
- package/lib/parsers/errors.js.flow +15 -1
- package/lib/parsers/flow/components/__test_fixtures__/fixtures.js +7 -1
- package/lib/parsers/flow/components/__test_fixtures__/fixtures.js.flow +7 -1
- package/lib/parsers/flow/components/commands.js +24 -0
- package/lib/parsers/flow/components/commands.js.flow +45 -3
- package/lib/parsers/flow/components/componentsUtils.js +5 -4
- package/lib/parsers/flow/components/componentsUtils.js.flow +4 -3
- package/lib/parsers/flow/components/events.js +7 -7
- package/lib/parsers/flow/components/events.js.flow +7 -7
- package/lib/parsers/flow/components/index.js +8 -8
- package/lib/parsers/flow/components/index.js.flow +3 -3
- package/lib/parsers/flow/modules/__test_fixtures__/fixtures.js +13 -0
- package/lib/parsers/flow/modules/__test_fixtures__/fixtures.js.flow +13 -0
- package/lib/parsers/flow/modules/index.js +20 -19
- package/lib/parsers/flow/modules/index.js.flow +10 -11
- package/lib/parsers/flow/parseFlowAndThrowErrors.js +105 -0
- package/lib/parsers/flow/parseFlowAndThrowErrors.js.flow +41 -0
- package/lib/parsers/flow/parser.js +24 -25
- package/lib/parsers/flow/parser.js.flow +27 -36
- package/lib/parsers/flow/utils.js.flow +1 -1
- package/lib/parsers/parser.js.flow +12 -10
- package/lib/parsers/parserMock.js +11 -12
- package/lib/parsers/parserMock.js.flow +25 -28
- package/lib/parsers/parsers-commons.js +85 -36
- package/lib/parsers/parsers-commons.js.flow +71 -37
- package/lib/parsers/parsers-primitives.js +17 -17
- package/lib/parsers/parsers-primitives.js.flow +14 -16
- package/lib/parsers/schema.js.flow +3 -3
- package/lib/parsers/typescript/components/__test_fixtures__/fixtures.js +8 -1
- package/lib/parsers/typescript/components/__test_fixtures__/fixtures.js.flow +8 -1
- package/lib/parsers/typescript/components/commands.js +23 -15
- package/lib/parsers/typescript/components/commands.js.flow +24 -16
- package/lib/parsers/typescript/components/componentsUtils.js +34 -20
- package/lib/parsers/typescript/components/componentsUtils.js.flow +36 -19
- package/lib/parsers/typescript/components/events.js +22 -22
- package/lib/parsers/typescript/components/events.js.flow +11 -10
- package/lib/parsers/typescript/components/extends.js.flow +1 -0
- package/lib/parsers/typescript/components/index.js +10 -10
- package/lib/parsers/typescript/components/index.js.flow +4 -4
- package/lib/parsers/typescript/modules/__test_fixtures__/fixtures.js +13 -0
- package/lib/parsers/typescript/modules/__test_fixtures__/fixtures.js.flow +13 -0
- package/lib/parsers/typescript/modules/index.js +25 -20
- package/lib/parsers/typescript/modules/index.js.flow +16 -14
- package/lib/parsers/typescript/parser.js +25 -26
- package/lib/parsers/typescript/parser.js.flow +23 -27
- package/lib/parsers/utils.js +5 -0
- package/lib/parsers/utils.js.flow +6 -1
- package/package.json +8 -6
|
@@ -11,23 +11,23 @@
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
13
|
import type {
|
|
14
|
-
Nullable,
|
|
15
14
|
NamedShape,
|
|
16
15
|
NativeModuleParamTypeAnnotation,
|
|
17
|
-
NativeModuleReturnTypeAnnotation,
|
|
18
16
|
NativeModulePropertyShape,
|
|
17
|
+
NativeModuleReturnTypeAnnotation,
|
|
18
|
+
Nullable,
|
|
19
19
|
} from '../../../CodegenSchema';
|
|
20
|
-
|
|
21
20
|
import type {AliasResolver} from '../Utils';
|
|
22
21
|
import type {StructCollector} from './StructCollector';
|
|
23
22
|
|
|
24
|
-
const invariant = require('invariant');
|
|
25
|
-
const {getNamespacedStructName} = require('./Utils');
|
|
26
|
-
const {capitalize} = require('../../Utils');
|
|
27
23
|
const {
|
|
28
|
-
wrapNullable,
|
|
29
24
|
unwrapNullable,
|
|
25
|
+
wrapNullable,
|
|
30
26
|
} = require('../../../parsers/parsers-commons');
|
|
27
|
+
const {wrapOptional} = require('../../TypeUtils/Objective-C');
|
|
28
|
+
const {capitalize} = require('../../Utils');
|
|
29
|
+
const {getNamespacedStructName} = require('./Utils');
|
|
30
|
+
const invariant = require('invariant');
|
|
31
31
|
|
|
32
32
|
const ProtocolMethodTemplate = ({
|
|
33
33
|
returnObjCType,
|
|
@@ -189,11 +189,7 @@ function getParamObjCType(
|
|
|
189
189
|
): $ReadOnly<{objCType: string, isStruct: boolean}> {
|
|
190
190
|
const {name: paramName, typeAnnotation: nullableTypeAnnotation} = param;
|
|
191
191
|
const [typeAnnotation, nullable] = unwrapNullable(nullableTypeAnnotation);
|
|
192
|
-
const
|
|
193
|
-
|
|
194
|
-
function wrapIntoNullableIfNeeded(generatedType: string) {
|
|
195
|
-
return nullable ? `${generatedType} _Nullable` : generatedType;
|
|
196
|
-
}
|
|
192
|
+
const isRequired = !param.optional && !nullable;
|
|
197
193
|
|
|
198
194
|
const isStruct = (objCType: string) => ({
|
|
199
195
|
isStruct: true,
|
|
@@ -221,7 +217,7 @@ function getParamObjCType(
|
|
|
221
217
|
* type Animal = {};
|
|
222
218
|
* Array<Animal> => NSArray<JS::NativeSampleTurboModule::Animal *>, etc.
|
|
223
219
|
*/
|
|
224
|
-
return notStruct(
|
|
220
|
+
return notStruct(wrapOptional('NSArray *', !nullable));
|
|
225
221
|
}
|
|
226
222
|
}
|
|
227
223
|
|
|
@@ -252,7 +248,7 @@ function getParamObjCType(
|
|
|
252
248
|
case 'ReservedTypeAnnotation':
|
|
253
249
|
switch (structTypeAnnotation.name) {
|
|
254
250
|
case 'RootTag':
|
|
255
|
-
return notStruct(
|
|
251
|
+
return notStruct(isRequired ? 'double' : 'NSNumber *');
|
|
256
252
|
default:
|
|
257
253
|
(structTypeAnnotation.name: empty);
|
|
258
254
|
throw new Error(
|
|
@@ -260,30 +256,30 @@ function getParamObjCType(
|
|
|
260
256
|
);
|
|
261
257
|
}
|
|
262
258
|
case 'StringTypeAnnotation':
|
|
263
|
-
return notStruct(
|
|
259
|
+
return notStruct(wrapOptional('NSString *', !nullable));
|
|
264
260
|
case 'NumberTypeAnnotation':
|
|
265
|
-
return notStruct(
|
|
261
|
+
return notStruct(isRequired ? 'double' : 'NSNumber *');
|
|
266
262
|
case 'FloatTypeAnnotation':
|
|
267
|
-
return notStruct(
|
|
263
|
+
return notStruct(isRequired ? 'float' : 'NSNumber *');
|
|
268
264
|
case 'DoubleTypeAnnotation':
|
|
269
|
-
return notStruct(
|
|
265
|
+
return notStruct(isRequired ? 'double' : 'NSNumber *');
|
|
270
266
|
case 'Int32TypeAnnotation':
|
|
271
|
-
return notStruct(
|
|
267
|
+
return notStruct(isRequired ? 'NSInteger' : 'NSNumber *');
|
|
272
268
|
case 'BooleanTypeAnnotation':
|
|
273
|
-
return notStruct(
|
|
269
|
+
return notStruct(isRequired ? 'BOOL' : 'NSNumber *');
|
|
274
270
|
case 'EnumDeclaration':
|
|
275
271
|
switch (typeAnnotation.memberType) {
|
|
276
272
|
case 'NumberTypeAnnotation':
|
|
277
|
-
return notStruct(
|
|
273
|
+
return notStruct(isRequired ? 'double' : 'NSNumber *');
|
|
278
274
|
case 'StringTypeAnnotation':
|
|
279
|
-
return notStruct(
|
|
275
|
+
return notStruct(wrapOptional('NSString *', !nullable));
|
|
280
276
|
default:
|
|
281
277
|
throw new Error(
|
|
282
278
|
`Unsupported enum type for param "${paramName}" in ${methodName}. Found: ${typeAnnotation.type}`,
|
|
283
279
|
);
|
|
284
280
|
}
|
|
285
281
|
case 'GenericObjectTypeAnnotation':
|
|
286
|
-
return notStruct(
|
|
282
|
+
return notStruct(wrapOptional('NSDictionary *', !nullable));
|
|
287
283
|
default:
|
|
288
284
|
(structTypeAnnotation.type: empty);
|
|
289
285
|
throw new Error(
|
|
@@ -297,10 +293,7 @@ function getReturnObjCType(
|
|
|
297
293
|
nullableTypeAnnotation: Nullable<NativeModuleReturnTypeAnnotation>,
|
|
298
294
|
): string {
|
|
299
295
|
const [typeAnnotation, nullable] = unwrapNullable(nullableTypeAnnotation);
|
|
300
|
-
|
|
301
|
-
function wrapIntoNullableIfNeeded(generatedType: string) {
|
|
302
|
-
return nullable ? `${generatedType} _Nullable` : generatedType;
|
|
303
|
-
}
|
|
296
|
+
const isRequired = !nullable;
|
|
304
297
|
|
|
305
298
|
switch (typeAnnotation.type) {
|
|
306
299
|
case 'VoidTypeAnnotation':
|
|
@@ -308,24 +301,25 @@ function getReturnObjCType(
|
|
|
308
301
|
case 'PromiseTypeAnnotation':
|
|
309
302
|
return 'void';
|
|
310
303
|
case 'ObjectTypeAnnotation':
|
|
311
|
-
return
|
|
304
|
+
return wrapOptional('NSDictionary *', isRequired);
|
|
312
305
|
case 'TypeAliasTypeAnnotation':
|
|
313
|
-
return
|
|
306
|
+
return wrapOptional('NSDictionary *', isRequired);
|
|
314
307
|
case 'ArrayTypeAnnotation':
|
|
315
308
|
if (typeAnnotation.elementType == null) {
|
|
316
|
-
return
|
|
309
|
+
return wrapOptional('NSArray<id<NSObject>> *', isRequired);
|
|
317
310
|
}
|
|
318
311
|
|
|
319
|
-
return
|
|
312
|
+
return wrapOptional(
|
|
320
313
|
`NSArray<${getReturnObjCType(
|
|
321
314
|
methodName,
|
|
322
315
|
typeAnnotation.elementType,
|
|
323
316
|
)}> *`,
|
|
317
|
+
isRequired,
|
|
324
318
|
);
|
|
325
319
|
case 'ReservedTypeAnnotation':
|
|
326
320
|
switch (typeAnnotation.name) {
|
|
327
321
|
case 'RootTag':
|
|
328
|
-
return
|
|
322
|
+
return wrapOptional('NSNumber *', isRequired);
|
|
329
323
|
default:
|
|
330
324
|
(typeAnnotation.name: empty);
|
|
331
325
|
throw new Error(
|
|
@@ -335,23 +329,23 @@ function getReturnObjCType(
|
|
|
335
329
|
case 'StringTypeAnnotation':
|
|
336
330
|
// TODO: Can NSString * returns not be _Nullable?
|
|
337
331
|
// In the legacy codegen, we don't surround NSSTring * with _Nullable
|
|
338
|
-
return
|
|
332
|
+
return wrapOptional('NSString *', isRequired);
|
|
339
333
|
case 'NumberTypeAnnotation':
|
|
340
|
-
return
|
|
334
|
+
return wrapOptional('NSNumber *', isRequired);
|
|
341
335
|
case 'FloatTypeAnnotation':
|
|
342
|
-
return
|
|
336
|
+
return wrapOptional('NSNumber *', isRequired);
|
|
343
337
|
case 'DoubleTypeAnnotation':
|
|
344
|
-
return
|
|
338
|
+
return wrapOptional('NSNumber *', isRequired);
|
|
345
339
|
case 'Int32TypeAnnotation':
|
|
346
|
-
return
|
|
340
|
+
return wrapOptional('NSNumber *', isRequired);
|
|
347
341
|
case 'BooleanTypeAnnotation':
|
|
348
|
-
return
|
|
342
|
+
return wrapOptional('NSNumber *', isRequired);
|
|
349
343
|
case 'EnumDeclaration':
|
|
350
344
|
switch (typeAnnotation.memberType) {
|
|
351
345
|
case 'NumberTypeAnnotation':
|
|
352
|
-
return
|
|
346
|
+
return wrapOptional('NSNumber *', isRequired);
|
|
353
347
|
case 'StringTypeAnnotation':
|
|
354
|
-
return
|
|
348
|
+
return wrapOptional('NSString *', isRequired);
|
|
355
349
|
default:
|
|
356
350
|
throw new Error(
|
|
357
351
|
`Unsupported enum return type for ${methodName}. Found: ${typeAnnotation.type}`,
|
|
@@ -360,20 +354,20 @@ function getReturnObjCType(
|
|
|
360
354
|
case 'UnionTypeAnnotation':
|
|
361
355
|
switch (typeAnnotation.memberType) {
|
|
362
356
|
case 'NumberTypeAnnotation':
|
|
363
|
-
return
|
|
357
|
+
return wrapOptional('NSNumber *', isRequired);
|
|
364
358
|
case 'ObjectTypeAnnotation':
|
|
365
|
-
return
|
|
359
|
+
return wrapOptional('NSDictionary *', isRequired);
|
|
366
360
|
case 'StringTypeAnnotation':
|
|
367
361
|
// TODO: Can NSString * returns not be _Nullable?
|
|
368
362
|
// In the legacy codegen, we don't surround NSSTring * with _Nullable
|
|
369
|
-
return
|
|
363
|
+
return wrapOptional('NSString *', isRequired);
|
|
370
364
|
default:
|
|
371
365
|
throw new Error(
|
|
372
366
|
`Unsupported union return type for ${methodName}, found: ${typeAnnotation.memberType}"`,
|
|
373
367
|
);
|
|
374
368
|
}
|
|
375
369
|
case 'GenericObjectTypeAnnotation':
|
|
376
|
-
return
|
|
370
|
+
return wrapOptional('NSDictionary *', isRequired);
|
|
377
371
|
default:
|
|
378
372
|
(typeAnnotation.type: 'MixedTypeAnnotation');
|
|
379
373
|
throw new Error(
|
|
@@ -22,34 +22,32 @@ const ModuleTemplate = ({
|
|
|
22
22
|
}),
|
|
23
23
|
)
|
|
24
24
|
.join('\n')}
|
|
25
|
-
namespace facebook {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
.join('\n')}
|
|
25
|
+
namespace facebook::react {
|
|
26
|
+
${methodSerializationOutputs
|
|
27
|
+
.map(serializedMethodParts =>
|
|
28
|
+
InlineHostFunctionTemplate({
|
|
29
|
+
hasteModuleName,
|
|
30
|
+
methodName: serializedMethodParts.methodName,
|
|
31
|
+
returnJSType: serializedMethodParts.returnJSType,
|
|
32
|
+
selector: serializedMethodParts.selector,
|
|
33
|
+
}),
|
|
34
|
+
)
|
|
35
|
+
.join('\n')}
|
|
37
36
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
} // namespace facebook`;
|
|
37
|
+
${hasteModuleName}SpecJSI::${hasteModuleName}SpecJSI(const ObjCTurboModule::InitParams ¶ms)
|
|
38
|
+
: ObjCTurboModule(params) {
|
|
39
|
+
${methodSerializationOutputs
|
|
40
|
+
.map(({methodName, structParamRecords, argCount}) =>
|
|
41
|
+
MethodMapEntryTemplate({
|
|
42
|
+
hasteModuleName,
|
|
43
|
+
methodName,
|
|
44
|
+
structParamRecords,
|
|
45
|
+
argCount,
|
|
46
|
+
}),
|
|
47
|
+
)
|
|
48
|
+
.join('\n' + ' '.repeat(8))}
|
|
49
|
+
}
|
|
50
|
+
} // namespace facebook::react`;
|
|
53
51
|
const RCTCxxConvertCategoryTemplate = ({
|
|
54
52
|
hasteModuleName,
|
|
55
53
|
structName,
|
|
@@ -10,11 +10,11 @@
|
|
|
10
10
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
-
import type {Struct} from '../StructCollector';
|
|
14
13
|
import type {
|
|
15
14
|
MethodSerializationOutput,
|
|
16
15
|
StructParameterRecord,
|
|
17
16
|
} from '../serializeMethod';
|
|
17
|
+
import type {Struct} from '../StructCollector';
|
|
18
18
|
|
|
19
19
|
const ModuleTemplate = ({
|
|
20
20
|
hasteModuleName,
|
|
@@ -29,34 +29,32 @@ const ModuleTemplate = ({
|
|
|
29
29
|
RCTCxxConvertCategoryTemplate({hasteModuleName, structName: struct.name}),
|
|
30
30
|
)
|
|
31
31
|
.join('\n')}
|
|
32
|
-
namespace facebook {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
.join('\n')}
|
|
32
|
+
namespace facebook::react {
|
|
33
|
+
${methodSerializationOutputs
|
|
34
|
+
.map(serializedMethodParts =>
|
|
35
|
+
InlineHostFunctionTemplate({
|
|
36
|
+
hasteModuleName,
|
|
37
|
+
methodName: serializedMethodParts.methodName,
|
|
38
|
+
returnJSType: serializedMethodParts.returnJSType,
|
|
39
|
+
selector: serializedMethodParts.selector,
|
|
40
|
+
}),
|
|
41
|
+
)
|
|
42
|
+
.join('\n')}
|
|
44
43
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
} // namespace facebook`;
|
|
44
|
+
${hasteModuleName}SpecJSI::${hasteModuleName}SpecJSI(const ObjCTurboModule::InitParams ¶ms)
|
|
45
|
+
: ObjCTurboModule(params) {
|
|
46
|
+
${methodSerializationOutputs
|
|
47
|
+
.map(({methodName, structParamRecords, argCount}) =>
|
|
48
|
+
MethodMapEntryTemplate({
|
|
49
|
+
hasteModuleName,
|
|
50
|
+
methodName,
|
|
51
|
+
structParamRecords,
|
|
52
|
+
argCount,
|
|
53
|
+
}),
|
|
54
|
+
)
|
|
55
|
+
.join('\n' + ' '.repeat(8))}
|
|
56
|
+
}
|
|
57
|
+
} // namespace facebook::react`;
|
|
60
58
|
|
|
61
59
|
const RCTCxxConvertCategoryTemplate = ({
|
|
62
60
|
hasteModuleName,
|
|
@@ -10,6 +10,76 @@
|
|
|
10
10
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
+
function _slicedToArray(arr, i) {
|
|
14
|
+
return (
|
|
15
|
+
_arrayWithHoles(arr) ||
|
|
16
|
+
_iterableToArrayLimit(arr, i) ||
|
|
17
|
+
_unsupportedIterableToArray(arr, i) ||
|
|
18
|
+
_nonIterableRest()
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
function _nonIterableRest() {
|
|
22
|
+
throw new TypeError(
|
|
23
|
+
'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
function _unsupportedIterableToArray(o, minLen) {
|
|
27
|
+
if (!o) return;
|
|
28
|
+
if (typeof o === 'string') return _arrayLikeToArray(o, minLen);
|
|
29
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
30
|
+
if (n === 'Object' && o.constructor) n = o.constructor.name;
|
|
31
|
+
if (n === 'Map' || n === 'Set') return Array.from(o);
|
|
32
|
+
if (n === 'Arguments' || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
|
|
33
|
+
return _arrayLikeToArray(o, minLen);
|
|
34
|
+
}
|
|
35
|
+
function _arrayLikeToArray(arr, len) {
|
|
36
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
37
|
+
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
38
|
+
return arr2;
|
|
39
|
+
}
|
|
40
|
+
function _iterableToArrayLimit(arr, i) {
|
|
41
|
+
var _i =
|
|
42
|
+
null == arr
|
|
43
|
+
? null
|
|
44
|
+
: ('undefined' != typeof Symbol && arr[Symbol.iterator]) ||
|
|
45
|
+
arr['@@iterator'];
|
|
46
|
+
if (null != _i) {
|
|
47
|
+
var _s,
|
|
48
|
+
_e,
|
|
49
|
+
_x,
|
|
50
|
+
_r,
|
|
51
|
+
_arr = [],
|
|
52
|
+
_n = !0,
|
|
53
|
+
_d = !1;
|
|
54
|
+
try {
|
|
55
|
+
if (((_x = (_i = _i.call(arr)).next), 0 === i)) {
|
|
56
|
+
if (Object(_i) !== _i) return;
|
|
57
|
+
_n = !1;
|
|
58
|
+
} else
|
|
59
|
+
for (
|
|
60
|
+
;
|
|
61
|
+
!(_n = (_s = _x.call(_i)).done) &&
|
|
62
|
+
(_arr.push(_s.value), _arr.length !== i);
|
|
63
|
+
_n = !0
|
|
64
|
+
);
|
|
65
|
+
} catch (err) {
|
|
66
|
+
(_d = !0), (_e = err);
|
|
67
|
+
} finally {
|
|
68
|
+
try {
|
|
69
|
+
if (!_n && null != _i.return && ((_r = _i.return()), Object(_r) !== _r))
|
|
70
|
+
return;
|
|
71
|
+
} finally {
|
|
72
|
+
if (_d) throw _e;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return _arr;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
function _arrayWithHoles(arr) {
|
|
79
|
+
if (Array.isArray(arr)) return arr;
|
|
80
|
+
}
|
|
81
|
+
const _require = require('../../parsers/parsers-commons'),
|
|
82
|
+
unwrapNullable = _require.unwrapNullable;
|
|
13
83
|
const invariant = require('invariant');
|
|
14
84
|
function createAliasResolver(aliasMap) {
|
|
15
85
|
return aliasName => {
|
|
@@ -28,6 +98,32 @@ function getModules(schema) {
|
|
|
28
98
|
return modules;
|
|
29
99
|
}, {});
|
|
30
100
|
}
|
|
101
|
+
function isDirectRecursiveMember(
|
|
102
|
+
parentObjectAliasName,
|
|
103
|
+
nullableTypeAnnotation,
|
|
104
|
+
) {
|
|
105
|
+
const _unwrapNullable = unwrapNullable(nullableTypeAnnotation),
|
|
106
|
+
_unwrapNullable2 = _slicedToArray(_unwrapNullable, 1),
|
|
107
|
+
typeAnnotation = _unwrapNullable2[0];
|
|
108
|
+
return (
|
|
109
|
+
parentObjectAliasName !== undefined &&
|
|
110
|
+
typeAnnotation.name === parentObjectAliasName
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
function isArrayRecursiveMember(parentObjectAliasName, nullableTypeAnnotation) {
|
|
114
|
+
var _typeAnnotation$eleme;
|
|
115
|
+
const _unwrapNullable3 = unwrapNullable(nullableTypeAnnotation),
|
|
116
|
+
_unwrapNullable4 = _slicedToArray(_unwrapNullable3, 1),
|
|
117
|
+
typeAnnotation = _unwrapNullable4[0];
|
|
118
|
+
return (
|
|
119
|
+
parentObjectAliasName !== undefined &&
|
|
120
|
+
typeAnnotation.type === 'ArrayTypeAnnotation' &&
|
|
121
|
+
((_typeAnnotation$eleme = typeAnnotation.elementType) === null ||
|
|
122
|
+
_typeAnnotation$eleme === void 0
|
|
123
|
+
? void 0
|
|
124
|
+
: _typeAnnotation$eleme.name) === parentObjectAliasName
|
|
125
|
+
);
|
|
126
|
+
}
|
|
31
127
|
function getAreEnumMembersInteger(members) {
|
|
32
128
|
return !members.some(m => `${m.value}`.includes('.'));
|
|
33
129
|
}
|
|
@@ -35,4 +131,6 @@ module.exports = {
|
|
|
35
131
|
createAliasResolver,
|
|
36
132
|
getModules,
|
|
37
133
|
getAreEnumMembersInteger,
|
|
134
|
+
isDirectRecursiveMember,
|
|
135
|
+
isArrayRecursiveMember,
|
|
38
136
|
};
|
|
@@ -11,13 +11,16 @@
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
13
|
import type {
|
|
14
|
-
SchemaType,
|
|
15
14
|
NativeModuleAliasMap,
|
|
15
|
+
NativeModuleEnumMembers,
|
|
16
16
|
NativeModuleObjectTypeAnnotation,
|
|
17
17
|
NativeModuleSchema,
|
|
18
|
-
|
|
18
|
+
NativeModuleTypeAnnotation,
|
|
19
|
+
Nullable,
|
|
20
|
+
SchemaType,
|
|
19
21
|
} from '../../CodegenSchema';
|
|
20
22
|
|
|
23
|
+
const {unwrapNullable} = require('../../parsers/parsers-commons');
|
|
21
24
|
const invariant = require('invariant');
|
|
22
25
|
|
|
23
26
|
export type AliasResolver = (
|
|
@@ -48,6 +51,33 @@ function getModules(
|
|
|
48
51
|
);
|
|
49
52
|
}
|
|
50
53
|
|
|
54
|
+
function isDirectRecursiveMember(
|
|
55
|
+
parentObjectAliasName: ?string,
|
|
56
|
+
nullableTypeAnnotation: Nullable<NativeModuleTypeAnnotation>,
|
|
57
|
+
): boolean {
|
|
58
|
+
const [typeAnnotation] = unwrapNullable<NativeModuleTypeAnnotation>(
|
|
59
|
+
nullableTypeAnnotation,
|
|
60
|
+
);
|
|
61
|
+
return (
|
|
62
|
+
parentObjectAliasName !== undefined &&
|
|
63
|
+
typeAnnotation.name === parentObjectAliasName
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function isArrayRecursiveMember(
|
|
68
|
+
parentObjectAliasName: ?string,
|
|
69
|
+
nullableTypeAnnotation: Nullable<NativeModuleTypeAnnotation>,
|
|
70
|
+
): boolean {
|
|
71
|
+
const [typeAnnotation] = unwrapNullable<NativeModuleTypeAnnotation>(
|
|
72
|
+
nullableTypeAnnotation,
|
|
73
|
+
);
|
|
74
|
+
return (
|
|
75
|
+
parentObjectAliasName !== undefined &&
|
|
76
|
+
typeAnnotation.type === 'ArrayTypeAnnotation' &&
|
|
77
|
+
typeAnnotation.elementType?.name === parentObjectAliasName
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
|
|
51
81
|
function getAreEnumMembersInteger(members: NativeModuleEnumMembers): boolean {
|
|
52
82
|
return !members.some(m => `${m.value}`.includes('.'));
|
|
53
83
|
}
|
|
@@ -56,4 +86,6 @@ module.exports = {
|
|
|
56
86
|
createAliasResolver,
|
|
57
87
|
getModules,
|
|
58
88
|
getAreEnumMembersInteger,
|
|
89
|
+
isDirectRecursiveMember,
|
|
90
|
+
isArrayRecursiveMember,
|
|
59
91
|
};
|