@@ -40,42 +40,70 @@ const NATIVE_COMMON_EXAMPLE_FILES = path.resolve(
40
40
) ;
41
41
42
42
const NATIVE_FILES = {
43
- module_legacy : path . resolve ( __dirname , '../templates/native-library-legacy' ) ,
44
- module_new : path . resolve ( __dirname , '../templates/native-library-new' ) ,
45
- module_mixed : path . resolve ( __dirname , '../templates/native-library-mixed' ) ,
46
- view_legacy : path . resolve ( __dirname , '../templates/native-view-legacy' ) ,
47
- view_mixed : path . resolve ( __dirname , '../templates/native-view-mixed' ) ,
48
- view_new : path . resolve ( __dirname , '../templates/native-view-new' ) ,
49
- } as const ;
50
-
51
- const JAVA_FILES = {
52
- module_legacy : path . resolve ( __dirname , '../templates/java-library-legacy' ) ,
53
- module_new : path . resolve ( __dirname , '../templates/java-library-new' ) ,
54
- module_mixed : path . resolve ( __dirname , '../templates/java-library-mixed' ) ,
55
- view_legacy : path . resolve ( __dirname , '../templates/java-view-legacy' ) ,
56
- view_mixed : path . resolve ( __dirname , '../templates/java-view-mixed' ) ,
57
- view_new : path . resolve ( __dirname , '../templates/java-view-new' ) ,
43
+ 'module-legacy' : path . resolve (
44
+ __dirname ,
45
+ '../templates/native-library-legacy'
46
+ ) ,
47
+ 'module-new' : path . resolve ( __dirname , '../templates/native-library-new' ) ,
48
+ 'module-mixed' : path . resolve ( __dirname , '../templates/native-library-mixed' ) ,
49
+ 'view-legacy' : path . resolve ( __dirname , '../templates/native-view-legacy' ) ,
50
+ 'view-module-legacy' : path . resolve (
51
+ __dirname ,
52
+ '../templates/native-view-library-legacy'
53
+ ) ,
54
+ 'view-module-mixed' : path . resolve (
55
+ __dirname ,
56
+ '../templates/native-view-library-mixed'
57
+ ) ,
58
+ 'view-module-new' : path . resolve (
59
+ __dirname ,
60
+ '../templates/native-view-library-new'
61
+ ) ,
58
62
} as const ;
59
63
60
64
const OBJC_FILES = {
61
- module_common : path . resolve ( __dirname , '../templates/objc-library' ) ,
62
- view_legacy : path . resolve ( __dirname , '../templates/objc-view-legacy' ) ,
63
- view_mixed : path . resolve ( __dirname , '../templates/objc-view-mixed' ) ,
64
- view_new : path . resolve ( __dirname , '../templates/objc-view-new' ) ,
65
+ 'module-legacy' : path . resolve ( __dirname , '../templates/objc-library' ) ,
66
+ 'module-mixed' : path . resolve ( __dirname , '../templates/objc-library' ) ,
67
+ 'module-new' : path . resolve ( __dirname , '../templates/objc-library' ) ,
68
+ 'view-module-legacy' : path . resolve (
69
+ __dirname ,
70
+ '../templates/objc-view-library-legacy'
71
+ ) ,
72
+ 'view-module-mixed' : path . resolve (
73
+ __dirname ,
74
+ '../templates/objc-view-library-mixed'
75
+ ) ,
76
+ 'view-module-new' : path . resolve (
77
+ __dirname ,
78
+ '../templates/objc-view-library-new'
79
+ ) ,
65
80
} as const ;
66
81
67
82
const KOTLIN_FILES = {
68
- module_legacy : path . resolve ( __dirname , '../templates/kotlin-library-legacy' ) ,
69
- module_new : path . resolve ( __dirname , '../templates/kotlin-library-new' ) ,
70
- module_mixed : path . resolve ( __dirname , '../templates/kotlin-library-mixed' ) ,
71
- view_legacy : path . resolve ( __dirname , '../templates/kotlin-view-legacy' ) ,
72
- view_mixed : path . resolve ( __dirname , '../templates/kotlin-view-mixed' ) ,
73
- view_new : path . resolve ( __dirname , '../templates/kotlin-view-new' ) ,
83
+ 'module-legacy' : path . resolve (
84
+ __dirname ,
85
+ '../templates/kotlin-library-legacy'
86
+ ) ,
87
+ 'module-new' : path . resolve ( __dirname , '../templates/kotlin-library-new' ) ,
88
+ 'module-mixed' : path . resolve ( __dirname , '../templates/kotlin-library-mixed' ) ,
89
+ 'view-legacy' : path . resolve ( __dirname , '../templates/kotlin-view-legacy' ) ,
90
+ 'view-module-legacy' : path . resolve (
91
+ __dirname ,
92
+ '../templates/kotlin-view-library-legacy'
93
+ ) ,
94
+ 'view-module-mixed' : path . resolve (
95
+ __dirname ,
96
+ '../templates/kotlin-view-library-mixed'
97
+ ) ,
98
+ 'view-module-new' : path . resolve (
99
+ __dirname ,
100
+ '../templates/kotlin-view-library-new'
101
+ ) ,
74
102
} as const ;
75
103
76
104
const SWIFT_FILES = {
77
- module_legacy : path . resolve ( __dirname , '../templates/swift-library-legacy' ) ,
78
- view_legacy : path . resolve ( __dirname , '../templates/swift-view-legacy' ) ,
105
+ 'module-legacy' : path . resolve ( __dirname , '../templates/swift-library-legacy' ) ,
106
+ 'view-legacy' : path . resolve ( __dirname , '../templates/swift-view-legacy' ) ,
79
107
} as const ;
80
108
81
109
type ArgName =
@@ -91,22 +119,17 @@ type ArgName =
91
119
| 'example'
92
120
| 'react-native-version' ;
93
121
94
- type ProjectLanguages =
95
- | 'java-objc'
96
- | 'java-swift'
97
- | 'kotlin-objc'
98
- | 'kotlin-swift'
99
- | 'cpp'
100
- | 'js' ;
122
+ type ProjectLanguages = 'kotlin-objc' | 'kotlin-swift' | 'cpp' | 'js' ;
101
123
102
124
type ProjectType =
125
+ | 'library'
103
126
| 'module-legacy'
104
- | 'module-new'
105
127
| 'module-mixed'
106
- | 'view-mixed'
107
- | 'view-new'
128
+ | 'module-new'
108
129
| 'view-legacy'
109
- | 'library' ;
130
+ | 'view-module-legacy'
131
+ | 'view-module-mixed'
132
+ | 'view-module-new' ;
110
133
111
134
type Answers = {
112
135
name : string ;
@@ -131,37 +154,13 @@ const LANGUAGE_CHOICES: {
131
154
{
132
155
title : 'Kotlin & Objective-C' ,
133
156
value : 'kotlin-objc' ,
134
- types : [
135
- 'module-legacy' ,
136
- 'module-new' ,
137
- 'module-mixed' ,
138
- 'view-mixed' ,
139
- 'view-new' ,
140
- 'view-legacy' ,
141
- ] ,
142
- } ,
143
- {
144
- title : 'Java & Objective-C' ,
145
- value : 'java-objc' ,
146
- types : [
147
- 'module-legacy' ,
148
- 'module-new' ,
149
- 'module-mixed' ,
150
- 'view-mixed' ,
151
- 'view-new' ,
152
- 'view-legacy' ,
153
- ] ,
157
+ types : [ 'view-module-legacy' , 'view-module-mixed' , 'view-module-new' ] ,
154
158
} ,
155
159
{
156
160
title : 'Kotlin & Swift' ,
157
161
value : 'kotlin-swift' ,
158
162
types : [ 'module-legacy' , 'view-legacy' ] ,
159
163
} ,
160
- {
161
- title : 'Java & Swift' ,
162
- value : 'java-swift' ,
163
- types : [ 'module-legacy' , 'view-legacy' ] ,
164
- } ,
165
164
{
166
165
title : 'C++ for Android & iOS' ,
167
166
value : 'cpp' ,
@@ -200,6 +199,21 @@ const TYPE_CHOICES: {
200
199
value : ProjectType ;
201
200
description : string ;
202
201
} [ ] = [
202
+ {
203
+ title : 'Fabric view and Turbo module with backward compat' ,
204
+ value : 'view-module-mixed' ,
205
+ description : BACKCOMPAT_DESCRIPTION ,
206
+ } ,
207
+ {
208
+ title : 'Fabric view and Turbo module' ,
209
+ value : 'view-module-new' ,
210
+ description : NEWARCH_DESCRIPTION ,
211
+ } ,
212
+ {
213
+ title : 'Native module and Native view' ,
214
+ value : 'view-module-legacy' ,
215
+ description : 'bridge for native APIs and views to JS' ,
216
+ } ,
203
217
{
204
218
title : 'JavaScript library' ,
205
219
value : 'library' ,
@@ -225,16 +239,6 @@ const TYPE_CHOICES: {
225
239
value : 'module-new' ,
226
240
description : NEWARCH_DESCRIPTION ,
227
241
} ,
228
- {
229
- title : 'Fabric view with backward compat' ,
230
- value : 'view-mixed' ,
231
- description : BACKCOMPAT_DESCRIPTION ,
232
- } ,
233
- {
234
- title : 'Fabric view' ,
235
- value : 'view-new' ,
236
- description : NEWARCH_DESCRIPTION ,
237
- } ,
238
242
] ;
239
243
240
244
const args : Record < ArgName , yargs . Options > = {
@@ -620,13 +624,11 @@ async function create(_argv: yargs.Arguments<any>) {
620
624
bobVersion = FALLBACK_BOB_VERSION ;
621
625
}
622
626
623
- const moduleType = type . startsWith ( 'view-' ) ? 'view' : 'module' ;
624
- const arch =
625
- type === 'module-new' || type === 'view-new'
626
- ? 'new'
627
- : type === 'module-mixed' || type === 'view-mixed'
628
- ? 'mixed'
629
- : 'legacy' ;
627
+ const arch = type . endsWith ( 'new' )
628
+ ? 'new'
629
+ : type . endsWith ( 'mixed' )
630
+ ? 'mixed'
631
+ : 'legacy' ;
630
632
631
633
const project = slug . replace ( / ^ ( r e a c t - n a t i v e - | @ [ ^ / ] + \/ ) / , '' ) ;
632
634
@@ -666,10 +668,9 @@ async function create(_argv: yargs.Arguments<any>) {
666
668
native : languages !== 'js' ,
667
669
arch,
668
670
cpp : languages === 'cpp' ,
669
- kotlin : languages === 'kotlin-objc' || languages === 'kotlin-swift' ,
670
- swift : languages === 'java-swift' || languages === 'kotlin-swift' ,
671
- view : moduleType === 'view' ,
672
- module : moduleType === 'module' ,
671
+ swift : languages === 'kotlin-swift' ,
672
+ view : type . includes ( 'view' ) ,
673
+ module : type . includes ( 'module' ) ,
673
674
} ,
674
675
author : {
675
676
name : authorName ,
@@ -756,7 +757,7 @@ async function create(_argv: yargs.Arguments<any>) {
756
757
}
757
758
}
758
759
759
- if ( languages === 'js ' ) {
760
+ if ( type === 'library ' ) {
760
761
await copyDir ( JS_FILES , folder ) ;
761
762
await copyDir ( EXPO_FILES , folder ) ;
762
763
} else {
@@ -766,29 +767,18 @@ async function create(_argv: yargs.Arguments<any>) {
766
767
await copyDir ( NATIVE_COMMON_EXAMPLE_FILES , folder ) ;
767
768
}
768
769
769
- if ( moduleType === 'module' ) {
770
- await copyDir ( NATIVE_FILES [ `${ moduleType } _${ arch } ` ] , folder ) ;
771
- } else {
772
- await copyDir ( NATIVE_FILES [ `${ moduleType } _${ arch } ` ] , folder ) ;
773
- }
770
+ await copyDir ( NATIVE_FILES [ type ] , folder ) ;
774
771
775
- if ( options . project . swift ) {
776
- await copyDir ( SWIFT_FILES [ `${ moduleType } _legacy` ] , folder ) ;
772
+ if (
773
+ type === 'view-legacy' ||
774
+ ( type === 'module-legacy' && options . project . swift )
775
+ ) {
776
+ await copyDir ( SWIFT_FILES [ type ] , folder ) ;
777
777
} else {
778
- if ( moduleType === 'module' ) {
779
- await copyDir ( OBJC_FILES [ `${ moduleType } _common` ] , folder ) ;
780
- } else {
781
- await copyDir ( OBJC_FILES [ `view_${ arch } ` ] , folder ) ;
782
- }
778
+ await copyDir ( OBJC_FILES [ type ] , folder ) ;
783
779
}
784
780
785
- const templateType = `${ moduleType } _${ arch } ` as const ;
786
-
787
- if ( options . project . kotlin ) {
788
- await copyDir ( KOTLIN_FILES [ templateType ] , folder ) ;
789
- } else {
790
- await copyDir ( JAVA_FILES [ templateType ] , folder ) ;
791
- }
781
+ await copyDir ( KOTLIN_FILES [ type ] , folder ) ;
792
782
793
783
if ( options . project . cpp ) {
794
784
await copyDir ( CPP_FILES , folder ) ;
0 commit comments