@@ -38,42 +38,70 @@ const NATIVE_COMMON_EXAMPLE_FILES = path.resolve(
38
38
) ;
39
39
40
40
const NATIVE_FILES = {
41
- module_legacy : path . resolve ( __dirname , '../templates/native-library-legacy' ) ,
42
- module_new : path . resolve ( __dirname , '../templates/native-library-new' ) ,
43
- module_mixed : path . resolve ( __dirname , '../templates/native-library-mixed' ) ,
44
- view_legacy : path . resolve ( __dirname , '../templates/native-view-legacy' ) ,
45
- view_mixed : path . resolve ( __dirname , '../templates/native-view-mixed' ) ,
46
- view_new : path . resolve ( __dirname , '../templates/native-view-new' ) ,
47
- } as const ;
48
-
49
- const JAVA_FILES = {
50
- module_legacy : path . resolve ( __dirname , '../templates/java-library-legacy' ) ,
51
- module_new : path . resolve ( __dirname , '../templates/java-library-new' ) ,
52
- module_mixed : path . resolve ( __dirname , '../templates/java-library-mixed' ) ,
53
- view_legacy : path . resolve ( __dirname , '../templates/java-view-legacy' ) ,
54
- view_mixed : path . resolve ( __dirname , '../templates/java-view-mixed' ) ,
55
- view_new : path . resolve ( __dirname , '../templates/java-view-new' ) ,
41
+ 'module-legacy' : path . resolve (
42
+ __dirname ,
43
+ '../templates/native-library-legacy'
44
+ ) ,
45
+ 'module-new' : path . resolve ( __dirname , '../templates/native-library-new' ) ,
46
+ 'module-mixed' : path . resolve ( __dirname , '../templates/native-library-mixed' ) ,
47
+ 'view-legacy' : path . resolve ( __dirname , '../templates/native-view-legacy' ) ,
48
+ 'view-module-legacy' : path . resolve (
49
+ __dirname ,
50
+ '../templates/native-view-library-legacy'
51
+ ) ,
52
+ 'view-module-mixed' : path . resolve (
53
+ __dirname ,
54
+ '../templates/native-view-library-mixed'
55
+ ) ,
56
+ 'view-module-new' : path . resolve (
57
+ __dirname ,
58
+ '../templates/native-view-library-new'
59
+ ) ,
56
60
} as const ;
57
61
58
62
const OBJC_FILES = {
59
- module_common : path . resolve ( __dirname , '../templates/objc-library' ) ,
60
- view_legacy : path . resolve ( __dirname , '../templates/objc-view-legacy' ) ,
61
- view_mixed : path . resolve ( __dirname , '../templates/objc-view-mixed' ) ,
62
- view_new : path . resolve ( __dirname , '../templates/objc-view-new' ) ,
63
+ 'module-legacy' : path . resolve ( __dirname , '../templates/objc-library' ) ,
64
+ 'module-mixed' : path . resolve ( __dirname , '../templates/objc-library' ) ,
65
+ 'module-new' : path . resolve ( __dirname , '../templates/objc-library' ) ,
66
+ 'view-module-legacy' : path . resolve (
67
+ __dirname ,
68
+ '../templates/objc-view-library-legacy'
69
+ ) ,
70
+ 'view-module-mixed' : path . resolve (
71
+ __dirname ,
72
+ '../templates/objc-view-library-mixed'
73
+ ) ,
74
+ 'view-module-new' : path . resolve (
75
+ __dirname ,
76
+ '../templates/objc-view-library-new'
77
+ ) ,
63
78
} as const ;
64
79
65
80
const KOTLIN_FILES = {
66
- module_legacy : path . resolve ( __dirname , '../templates/kotlin-library-legacy' ) ,
67
- module_new : path . resolve ( __dirname , '../templates/kotlin-library-new' ) ,
68
- module_mixed : path . resolve ( __dirname , '../templates/kotlin-library-mixed' ) ,
69
- view_legacy : path . resolve ( __dirname , '../templates/kotlin-view-legacy' ) ,
70
- view_mixed : path . resolve ( __dirname , '../templates/kotlin-view-mixed' ) ,
71
- view_new : path . resolve ( __dirname , '../templates/kotlin-view-new' ) ,
81
+ 'module-legacy' : path . resolve (
82
+ __dirname ,
83
+ '../templates/kotlin-library-legacy'
84
+ ) ,
85
+ 'module-new' : path . resolve ( __dirname , '../templates/kotlin-library-new' ) ,
86
+ 'module-mixed' : path . resolve ( __dirname , '../templates/kotlin-library-mixed' ) ,
87
+ 'view-legacy' : path . resolve ( __dirname , '../templates/kotlin-view-legacy' ) ,
88
+ 'view-module-legacy' : path . resolve (
89
+ __dirname ,
90
+ '../templates/kotlin-view-library-legacy'
91
+ ) ,
92
+ 'view-module-mixed' : path . resolve (
93
+ __dirname ,
94
+ '../templates/kotlin-view-library-mixed'
95
+ ) ,
96
+ 'view-module-new' : path . resolve (
97
+ __dirname ,
98
+ '../templates/kotlin-view-library-new'
99
+ ) ,
72
100
} as const ;
73
101
74
102
const SWIFT_FILES = {
75
- module_legacy : path . resolve ( __dirname , '../templates/swift-library-legacy' ) ,
76
- view_legacy : path . resolve ( __dirname , '../templates/swift-view-legacy' ) ,
103
+ 'module-legacy' : path . resolve ( __dirname , '../templates/swift-library-legacy' ) ,
104
+ 'view-legacy' : path . resolve ( __dirname , '../templates/swift-view-legacy' ) ,
77
105
} as const ;
78
106
79
107
type ArgName =
@@ -89,22 +117,17 @@ type ArgName =
89
117
| 'example'
90
118
| 'react-native-version' ;
91
119
92
- type ProjectLanguages =
93
- | 'java-objc'
94
- | 'java-swift'
95
- | 'kotlin-objc'
96
- | 'kotlin-swift'
97
- | 'cpp'
98
- | 'js' ;
120
+ type ProjectLanguages = 'kotlin-objc' | 'kotlin-swift' | 'cpp' | 'js' ;
99
121
100
122
type ProjectType =
123
+ | 'library'
101
124
| 'module-legacy'
102
- | 'module-new'
103
125
| 'module-mixed'
104
- | 'view-mixed'
105
- | 'view-new'
126
+ | 'module-new'
106
127
| 'view-legacy'
107
- | 'library' ;
128
+ | 'view-module-legacy'
129
+ | 'view-module-mixed'
130
+ | 'view-module-new' ;
108
131
109
132
type Answers = {
110
133
slug : string ;
@@ -127,37 +150,13 @@ const LANGUAGE_CHOICES: {
127
150
{
128
151
title : 'Kotlin & Objective-C' ,
129
152
value : 'kotlin-objc' ,
130
- types : [
131
- 'module-legacy' ,
132
- 'module-new' ,
133
- 'module-mixed' ,
134
- 'view-mixed' ,
135
- 'view-new' ,
136
- 'view-legacy' ,
137
- ] ,
138
- } ,
139
- {
140
- title : 'Java & Objective-C' ,
141
- value : 'java-objc' ,
142
- types : [
143
- 'module-legacy' ,
144
- 'module-new' ,
145
- 'module-mixed' ,
146
- 'view-mixed' ,
147
- 'view-new' ,
148
- 'view-legacy' ,
149
- ] ,
153
+ types : [ 'view-module-legacy' , 'view-module-mixed' , 'view-module-new' ] ,
150
154
} ,
151
155
{
152
156
title : 'Kotlin & Swift' ,
153
157
value : 'kotlin-swift' ,
154
158
types : [ 'module-legacy' , 'view-legacy' ] ,
155
159
} ,
156
- {
157
- title : 'Java & Swift' ,
158
- value : 'java-swift' ,
159
- types : [ 'module-legacy' , 'view-legacy' ] ,
160
- } ,
161
160
{
162
161
title : 'C++ for Android & iOS' ,
163
162
value : 'cpp' ,
@@ -178,6 +177,21 @@ const TYPE_CHOICES: {
178
177
value : ProjectType ;
179
178
description : string ;
180
179
} [ ] = [
180
+ {
181
+ title : 'Fabric view and Turbo module with backward compat' ,
182
+ value : 'view-module-mixed' ,
183
+ description : BACKCOMPAT_DESCRIPTION ,
184
+ } ,
185
+ {
186
+ title : 'Fabric view and Turbo module' ,
187
+ value : 'view-module-new' ,
188
+ description : NEWARCH_DESCRIPTION ,
189
+ } ,
190
+ {
191
+ title : 'Native module and Native view' ,
192
+ value : 'view-module-legacy' ,
193
+ description : 'bridge for native APIs and views to JS' ,
194
+ } ,
181
195
{
182
196
title : 'JavaScript library' ,
183
197
value : 'library' ,
@@ -203,16 +217,6 @@ const TYPE_CHOICES: {
203
217
value : 'module-new' ,
204
218
description : NEWARCH_DESCRIPTION ,
205
219
} ,
206
- {
207
- title : 'Fabric view with backward compat' ,
208
- value : 'view-mixed' ,
209
- description : BACKCOMPAT_DESCRIPTION ,
210
- } ,
211
- {
212
- title : 'Fabric view' ,
213
- value : 'view-new' ,
214
- description : NEWARCH_DESCRIPTION ,
215
- } ,
216
220
] ;
217
221
218
222
const args : Record < ArgName , yargs . Options > = {
@@ -501,8 +505,8 @@ async function create(argv: yargs.Arguments<any>) {
501
505
authorEmail,
502
506
authorUrl,
503
507
repoUrl,
504
- type = 'module-mixed' ,
505
- languages = type === 'library' ? 'js' : 'java -objc' ,
508
+ type = 'view- module-mixed' ,
509
+ languages = type === 'library' ? 'js' : 'kotlin -objc' ,
506
510
example : hasExample ,
507
511
reactNativeVersion,
508
512
} = {
@@ -561,13 +565,11 @@ async function create(argv: yargs.Arguments<any>) {
561
565
version = FALLBACK_BOB_VERSION ;
562
566
}
563
567
564
- const moduleType = type . startsWith ( 'view-' ) ? 'view' : 'module' ;
565
- const arch =
566
- type === 'module-new' || type === 'view-new'
567
- ? 'new'
568
- : type === 'module-mixed' || type === 'view-mixed'
569
- ? 'mixed'
570
- : 'legacy' ;
568
+ const arch = type . endsWith ( 'new' )
569
+ ? 'new'
570
+ : type . endsWith ( 'mixed' )
571
+ ? 'mixed'
572
+ : 'legacy' ;
571
573
572
574
const example =
573
575
hasExample && ! local ? ( type === 'library' ? 'expo' : 'native' ) : 'none' ;
@@ -610,10 +612,9 @@ async function create(argv: yargs.Arguments<any>) {
610
612
native : languages !== 'js' ,
611
613
arch,
612
614
cpp : languages === 'cpp' ,
613
- kotlin : languages === 'kotlin-objc' || languages === 'kotlin-swift' ,
614
- swift : languages === 'java-swift' || languages === 'kotlin-swift' ,
615
- view : moduleType === 'view' ,
616
- module : moduleType === 'module' ,
615
+ swift : languages === 'kotlin-swift' ,
616
+ view : type . includes ( 'view' ) ,
617
+ module : type . includes ( 'module' ) ,
617
618
} ,
618
619
author : {
619
620
name : authorName ,
@@ -697,7 +698,7 @@ async function create(argv: yargs.Arguments<any>) {
697
698
}
698
699
}
699
700
700
- if ( languages === 'js ' ) {
701
+ if ( type === 'library ' ) {
701
702
await copyDir ( JS_FILES , folder ) ;
702
703
await copyDir ( EXPO_FILES , folder ) ;
703
704
} else {
@@ -714,29 +715,18 @@ async function create(argv: yargs.Arguments<any>) {
714
715
await copyDir ( NATIVE_COMMON_EXAMPLE_FILES , folder ) ;
715
716
}
716
717
717
- if ( moduleType === 'module' ) {
718
- await copyDir ( NATIVE_FILES [ `${ moduleType } _${ arch } ` ] , folder ) ;
719
- } else {
720
- await copyDir ( NATIVE_FILES [ `${ moduleType } _${ arch } ` ] , folder ) ;
721
- }
718
+ await copyDir ( NATIVE_FILES [ type ] , folder ) ;
722
719
723
- if ( options . project . swift ) {
724
- await copyDir ( SWIFT_FILES [ `${ moduleType } _legacy` ] , folder ) ;
720
+ if (
721
+ type === 'view-legacy' ||
722
+ ( type === 'module-legacy' && options . project . swift )
723
+ ) {
724
+ await copyDir ( SWIFT_FILES [ type ] , folder ) ;
725
725
} else {
726
- if ( moduleType === 'module' ) {
727
- await copyDir ( OBJC_FILES [ `${ moduleType } _common` ] , folder ) ;
728
- } else {
729
- await copyDir ( OBJC_FILES [ `view_${ arch } ` ] , folder ) ;
730
- }
726
+ await copyDir ( OBJC_FILES [ type ] , folder ) ;
731
727
}
732
728
733
- const templateType = `${ moduleType } _${ arch } ` as const ;
734
-
735
- if ( options . project . kotlin ) {
736
- await copyDir ( KOTLIN_FILES [ templateType ] , folder ) ;
737
- } else {
738
- await copyDir ( JAVA_FILES [ templateType ] , folder ) ;
739
- }
729
+ await copyDir ( KOTLIN_FILES [ type ] , folder ) ;
740
730
741
731
if ( options . project . cpp ) {
742
732
await copyDir ( CPP_FILES , folder ) ;
0 commit comments