@@ -19,45 +19,47 @@ const COMMON_FILES = path.resolve(__dirname, '../templates/common');
19
19
const JS_FILES = path . resolve ( __dirname , '../templates/js-library' ) ;
20
20
const EXPO_FILES = path . resolve ( __dirname , '../templates/expo-library' ) ;
21
21
const CPP_FILES = path . resolve ( __dirname , '../templates/cpp-library' ) ;
22
- const EXAMPLE_FILES = path . resolve ( __dirname , '../templates/example' ) ;
23
- const EXAMPLE_TURBO_FILES = path . resolve (
24
- __dirname ,
25
- '../templates/example-turbo'
26
- ) ;
22
+ const EXAMPLE_FILES = path . resolve ( __dirname , '../templates/example-legacy' ) ;
27
23
const NATIVE_COMMON_FILES = path . resolve (
28
24
__dirname ,
29
25
'../templates/native-common'
30
26
) ;
31
27
32
28
const NATIVE_FILES = {
33
29
module_legacy : path . resolve ( __dirname , '../templates/native-library-legacy' ) ,
34
- module_turbo : path . resolve ( __dirname , '../templates/native-library-turbo ' ) ,
30
+ module_new : path . resolve ( __dirname , '../templates/native-library-new ' ) ,
35
31
module_mixed : path . resolve ( __dirname , '../templates/native-library-mixed' ) ,
36
- view : path . resolve ( __dirname , '../templates/native-view-library' ) ,
32
+ view_legacy : path . resolve ( __dirname , '../templates/native-view-legacy' ) ,
33
+ view_mixed : path . resolve ( __dirname , '../templates/native-view-mixed' ) ,
34
+ view_new : path . resolve ( __dirname , '../templates/native-view-new' ) ,
37
35
} ;
38
36
39
37
const JAVA_FILES = {
40
38
module_legacy : path . resolve ( __dirname , '../templates/java-library-legacy' ) ,
41
- module_turbo : path . resolve ( __dirname , '../templates/java-library-turbo ' ) ,
39
+ module_new : path . resolve ( __dirname , '../templates/java-library-new ' ) ,
42
40
module_mixed : path . resolve ( __dirname , '../templates/java-library-mixed' ) ,
43
- view : path . resolve ( __dirname , '../templates/java-view-library' ) ,
41
+ view_legacy : path . resolve ( __dirname , '../templates/java-view-legacy' ) ,
42
+ view_mixed : path . resolve ( __dirname , '../templates/java-view-mixed' ) ,
43
+ view_new : path . resolve ( __dirname , '../templates/java-view-new' ) ,
44
44
} ;
45
45
46
46
const OBJC_FILES = {
47
47
module : path . resolve ( __dirname , '../templates/objc-library' ) ,
48
- view : path . resolve ( __dirname , '../templates/objc-view-library' ) ,
48
+ view_legacy : path . resolve ( __dirname , '../templates/objc-view-legacy' ) ,
49
+ view_mixed : path . resolve ( __dirname , '../templates/objc-view-mixed' ) ,
50
+ view_new : path . resolve ( __dirname , '../templates/objc-view-new' ) ,
49
51
} ;
50
52
51
53
const KOTLIN_FILES = {
52
54
module_legacy : path . resolve ( __dirname , '../templates/kotlin-library-legacy' ) ,
53
- module_turbo : path . resolve ( __dirname , '../templates/kotlin-library-turbo ' ) ,
55
+ module_new : path . resolve ( __dirname , '../templates/kotlin-library-new ' ) ,
54
56
module_mixed : path . resolve ( __dirname , '../templates/kotlin-library-mixed' ) ,
55
- view : path . resolve ( __dirname , '../templates/kotlin-view-library ' ) ,
57
+ view_legacy : path . resolve ( __dirname , '../templates/kotlin-view-legacy ' ) ,
56
58
} ;
57
59
58
60
const SWIFT_FILES = {
59
- module : path . resolve ( __dirname , '../templates/swift-library' ) ,
60
- view : path . resolve ( __dirname , '../templates/swift-view-library ' ) ,
61
+ module : path . resolve ( __dirname , '../templates/swift-library-legacy ' ) ,
62
+ view : path . resolve ( __dirname , '../templates/swift-view-legacy ' ) ,
61
63
} ;
62
64
63
65
type ArgName =
@@ -84,7 +86,14 @@ type Answers = {
84
86
| 'kotlin-objc'
85
87
| 'kotlin-swift'
86
88
| 'cpp' ;
87
- type ?: 'module-legacy' | 'module-turbo' | 'module-mixed' | 'view' | 'library' ;
89
+ type ?:
90
+ | 'module-legacy'
91
+ | 'module-new'
92
+ | 'module-mixed'
93
+ | 'view'
94
+ | 'view-mixed'
95
+ | 'view-new'
96
+ | 'library' ;
88
97
example ?: 'expo' | 'native' ;
89
98
} ;
90
99
@@ -131,6 +140,8 @@ const args: Record<ArgName, yargs.Options> = {
131
140
'module-turbo' ,
132
141
'module-mixed' ,
133
142
'view' ,
143
+ 'view-mixed' ,
144
+ 'view-new' ,
134
145
'library' ,
135
146
] ,
136
147
} ,
@@ -278,18 +289,31 @@ async function create(argv: yargs.Arguments<any>) {
278
289
} ,
279
290
{
280
291
title : 'Turbo module (experimental)' ,
281
- value : 'module-turbo ' ,
292
+ value : 'module-new ' ,
282
293
} ,
283
294
{
284
295
title : 'Native module' ,
285
296
value : 'module-legacy' ,
286
297
} ,
287
298
{ title : 'Native view' , value : 'view' } ,
299
+ {
300
+ title : 'Native fabric view with backward compat (experimental)' ,
301
+ value : 'view-mixed' ,
302
+ } ,
303
+ {
304
+ title : 'Native fabric view (experimental)' ,
305
+ value : 'view-new' ,
306
+ } ,
288
307
{ title : 'JavaScript library' , value : 'library' } ,
289
308
] ,
290
309
} ,
291
310
'languages' : {
292
- type : ( _ , values ) => ( values . type !== 'library' ? 'select' : null ) ,
311
+ type : ( _ , values ) =>
312
+ values . type === 'library' ||
313
+ values . type === 'view-new' ||
314
+ values . type === 'view-mixed'
315
+ ? null
316
+ : 'select' ,
293
317
name : 'languages' ,
294
318
message : 'Which languages do you want to use?' ,
295
319
choices : ( _ , values ) => {
@@ -298,7 +322,7 @@ async function create(argv: yargs.Arguments<any>) {
298
322
{ title : 'Kotlin & Objective-C' , value : 'kotlin-objc' } ,
299
323
] ;
300
324
301
- if ( values . type !== 'module-turbo ' && values . type !== 'module-mixed' ) {
325
+ if ( values . type !== 'module-new ' && values . type !== 'module-mixed' ) {
302
326
languages . push (
303
327
{ title : 'Java & Swift' , value : 'java-swift' } ,
304
328
{ title : 'Kotlin & Swift' , value : 'kotlin-swift' }
@@ -376,17 +400,14 @@ async function create(argv: yargs.Arguments<any>) {
376
400
version = FALLBACK_BOB_VERSION ;
377
401
}
378
402
379
- const moduleType = type === 'view' ? 'view' : 'module' ;
380
-
403
+ const moduleType = type . startsWith ( 'view' ) ? 'view' : 'module' ;
381
404
const architecture =
382
- type === 'module-turbo '
383
- ? 'turbo '
384
- : type === 'module-mixed'
405
+ type === 'module-new' || type === 'view-new '
406
+ ? 'new '
407
+ : type === 'module-mixed' || type === 'view-mixed'
385
408
? 'mixed'
386
409
: 'legacy' ;
387
410
388
- const turbomodule = architecture === 'turbo' || architecture === 'mixed' ;
389
-
390
411
const project = slug . replace ( / ^ ( r e a c t - n a t i v e - | @ [ ^ / ] + \/ ) / , '' ) ;
391
412
392
413
let namespace : string | undefined ;
@@ -424,11 +445,11 @@ async function create(argv: yargs.Arguments<any>) {
424
445
identifier : slug . replace ( / [ ^ a - z 0 - 9 ] + / g, '-' ) . replace ( / ^ - / , '' ) ,
425
446
native : languages !== 'js' ,
426
447
architecture,
427
- turbomodule,
428
448
cpp : languages === 'cpp' ,
429
449
kotlin : languages === 'kotlin-objc' || languages === 'kotlin-swift' ,
430
450
swift : languages === 'java-swift' || languages === 'kotlin-swift' ,
431
- view : type === 'view' ,
451
+ view : moduleType === 'view' ,
452
+ module : moduleType === 'module' ,
432
453
} ,
433
454
author : {
434
455
name : authorName ,
@@ -500,33 +521,45 @@ async function create(argv: yargs.Arguments<any>) {
500
521
path . join ( folder , 'example' )
501
522
) ;
502
523
503
- if ( turbomodule ) {
504
- await copyDir (
505
- path . join ( EXAMPLE_TURBO_FILES , 'example' ) ,
506
- path . join ( folder , 'example' )
507
- ) ;
508
- }
509
-
510
524
await copyDir ( NATIVE_COMMON_FILES , folder ) ;
511
525
512
526
if ( moduleType === 'module' ) {
513
527
await copyDir ( NATIVE_FILES [ `${ moduleType } _${ architecture } ` ] , folder ) ;
514
528
} else {
515
- await copyDir ( NATIVE_FILES [ moduleType ] , folder ) ;
529
+ await copyDir ( NATIVE_FILES [ ` ${ moduleType } _ ${ architecture } ` ] , folder ) ;
516
530
}
517
531
518
532
if ( options . project . swift ) {
519
533
await copyDir ( SWIFT_FILES [ moduleType ] , folder ) ;
520
534
} else {
521
- await copyDir ( OBJC_FILES [ moduleType ] , folder ) ;
535
+ if ( moduleType === 'module' ) {
536
+ await copyDir ( OBJC_FILES [ moduleType ] , folder ) ;
537
+ } else {
538
+ await copyDir ( OBJC_FILES [ `view_${ architecture } ` ] , folder ) ;
539
+ }
522
540
}
523
541
524
- const android_files = options . project . kotlin ? KOTLIN_FILES : JAVA_FILES ;
525
-
526
- if ( moduleType === 'module' ) {
527
- await copyDir ( android_files [ `${ moduleType } _${ architecture } ` ] , folder ) ;
542
+ if ( options . project . kotlin ) {
543
+ switch ( `${ moduleType } _${ architecture } ` ) {
544
+ case 'module_legacy' :
545
+ await copyDir ( KOTLIN_FILES [ 'module_legacy' ] , folder ) ;
546
+ break ;
547
+ case 'module_mixed' :
548
+ await copyDir ( KOTLIN_FILES [ 'module_mixed' ] , folder ) ;
549
+ break ;
550
+ case 'module_new' :
551
+ await copyDir ( KOTLIN_FILES [ 'module_new' ] , folder ) ;
552
+ break ;
553
+ case 'view_legacy' :
554
+ await copyDir ( KOTLIN_FILES [ 'view_legacy' ] , folder ) ;
555
+ break ;
556
+ default :
557
+ console . log (
558
+ `Kotlin template for ${ moduleType } _${ architecture } has not been implemented`
559
+ ) ;
560
+ }
528
561
} else {
529
- await copyDir ( android_files [ moduleType ] , folder ) ;
562
+ await copyDir ( JAVA_FILES [ ` ${ moduleType } _ ${ architecture } ` ] , folder ) ;
530
563
}
531
564
532
565
if ( options . project . cpp ) {
0 commit comments