@@ -38,70 +38,42 @@ const NATIVE_COMMON_EXAMPLE_FILES = path.resolve(
38
38
) ;
39
39
40
40
const NATIVE_FILES = {
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
- ) ,
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' ) ,
60
56
} as const ;
61
57
62
58
const OBJC_FILES = {
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
- ) ,
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' ) ,
78
63
} as const ;
79
64
80
65
const KOTLIN_FILES = {
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
- ) ,
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' ) ,
100
72
} as const ;
101
73
102
74
const SWIFT_FILES = {
103
- 'module-legacy' : path . resolve ( __dirname , '../templates/swift-library-legacy' ) ,
104
- 'view-legacy' : path . resolve ( __dirname , '../templates/swift-view-legacy' ) ,
75
+ module_legacy : path . resolve ( __dirname , '../templates/swift-library-legacy' ) ,
76
+ view_legacy : path . resolve ( __dirname , '../templates/swift-view-legacy' ) ,
105
77
} as const ;
106
78
107
79
type ArgName =
@@ -117,17 +89,22 @@ type ArgName =
117
89
| 'example'
118
90
| 'react-native-version' ;
119
91
120
- type ProjectLanguages = 'kotlin-objc' | 'kotlin-swift' | 'cpp' | 'js' ;
92
+ type ProjectLanguages =
93
+ | 'java-objc'
94
+ | 'java-swift'
95
+ | 'kotlin-objc'
96
+ | 'kotlin-swift'
97
+ | 'cpp'
98
+ | 'js' ;
121
99
122
100
type ProjectType =
123
- | 'library'
124
101
| 'module-legacy'
125
- | 'module-mixed'
126
102
| 'module-new'
103
+ | 'module-mixed'
104
+ | 'view-mixed'
105
+ | 'view-new'
127
106
| 'view-legacy'
128
- | 'view-module-legacy'
129
- | 'view-module-mixed'
130
- | 'view-module-new' ;
107
+ | 'library' ;
131
108
132
109
type Answers = {
133
110
slug : string ;
@@ -150,13 +127,37 @@ const LANGUAGE_CHOICES: {
150
127
{
151
128
title : 'Kotlin & Objective-C' ,
152
129
value : 'kotlin-objc' ,
153
- types : [ 'view-module-legacy' , 'view-module-mixed' , 'view-module-new' ] ,
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
+ ] ,
154
150
} ,
155
151
{
156
152
title : 'Kotlin & Swift' ,
157
153
value : 'kotlin-swift' ,
158
154
types : [ 'module-legacy' , 'view-legacy' ] ,
159
155
} ,
156
+ {
157
+ title : 'Java & Swift' ,
158
+ value : 'java-swift' ,
159
+ types : [ 'module-legacy' , 'view-legacy' ] ,
160
+ } ,
160
161
{
161
162
title : 'C++ for Android & iOS' ,
162
163
value : 'cpp' ,
@@ -177,21 +178,6 @@ const TYPE_CHOICES: {
177
178
value : ProjectType ;
178
179
description : string ;
179
180
} [ ] = [
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
- } ,
195
181
{
196
182
title : 'JavaScript library' ,
197
183
value : 'library' ,
@@ -217,6 +203,16 @@ const TYPE_CHOICES: {
217
203
value : 'module-new' ,
218
204
description : NEWARCH_DESCRIPTION ,
219
205
} ,
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
+ } ,
220
216
] ;
221
217
222
218
const args : Record < ArgName , yargs . Options > = {
@@ -505,8 +501,8 @@ async function create(argv: yargs.Arguments<any>) {
505
501
authorEmail,
506
502
authorUrl,
507
503
repoUrl,
508
- type = 'view- module-mixed' ,
509
- languages = type === 'library' ? 'js' : 'kotlin -objc' ,
504
+ type = 'module-mixed' ,
505
+ languages = type === 'library' ? 'js' : 'java -objc' ,
510
506
example : hasExample ,
511
507
reactNativeVersion,
512
508
} = {
@@ -573,11 +569,13 @@ async function create(argv: yargs.Arguments<any>) {
573
569
version = FALLBACK_BOB_VERSION ;
574
570
}
575
571
576
- const arch = type . endsWith ( 'new' )
577
- ? 'new'
578
- : type . endsWith ( 'mixed' )
579
- ? 'mixed'
580
- : 'legacy' ;
572
+ const moduleType = type . startsWith ( 'view-' ) ? 'view' : 'module' ;
573
+ const arch =
574
+ type === 'module-new' || type === 'view-new'
575
+ ? 'new'
576
+ : type === 'module-mixed' || type === 'view-mixed'
577
+ ? 'mixed'
578
+ : 'legacy' ;
581
579
582
580
const example =
583
581
hasExample && ! local ? ( type === 'library' ? 'expo' : 'native' ) : 'none' ;
@@ -620,9 +618,10 @@ async function create(argv: yargs.Arguments<any>) {
620
618
native : languages !== 'js' ,
621
619
arch,
622
620
cpp : languages === 'cpp' ,
623
- swift : languages === 'kotlin-swift' ,
624
- view : type . includes ( 'view' ) ,
625
- module : type . includes ( 'module' ) ,
621
+ kotlin : languages === 'kotlin-objc' || languages === 'kotlin-swift' ,
622
+ swift : languages === 'java-swift' || languages === 'kotlin-swift' ,
623
+ view : moduleType === 'view' ,
624
+ module : moduleType === 'module' ,
626
625
} ,
627
626
author : {
628
627
name : authorName ,
@@ -706,7 +705,7 @@ async function create(argv: yargs.Arguments<any>) {
706
705
}
707
706
}
708
707
709
- if ( type === 'library ' ) {
708
+ if ( languages === 'js ' ) {
710
709
await copyDir ( JS_FILES , folder ) ;
711
710
await copyDir ( EXPO_FILES , folder ) ;
712
711
} else {
@@ -723,18 +722,29 @@ async function create(argv: yargs.Arguments<any>) {
723
722
await copyDir ( NATIVE_COMMON_EXAMPLE_FILES , folder ) ;
724
723
}
725
724
726
- await copyDir ( NATIVE_FILES [ type ] , folder ) ;
725
+ if ( moduleType === 'module' ) {
726
+ await copyDir ( NATIVE_FILES [ `${ moduleType } _${ arch } ` ] , folder ) ;
727
+ } else {
728
+ await copyDir ( NATIVE_FILES [ `${ moduleType } _${ arch } ` ] , folder ) ;
729
+ }
727
730
728
- if (
729
- type === 'view-legacy' ||
730
- ( type === 'module-legacy' && options . project . swift )
731
- ) {
732
- await copyDir ( SWIFT_FILES [ type ] , folder ) ;
731
+ if ( options . project . swift ) {
732
+ await copyDir ( SWIFT_FILES [ `${ moduleType } _legacy` ] , folder ) ;
733
733
} else {
734
- await copyDir ( OBJC_FILES [ type ] , folder ) ;
734
+ if ( moduleType === 'module' ) {
735
+ await copyDir ( OBJC_FILES [ `${ moduleType } _common` ] , folder ) ;
736
+ } else {
737
+ await copyDir ( OBJC_FILES [ `view_${ arch } ` ] , folder ) ;
738
+ }
735
739
}
736
740
737
- await copyDir ( KOTLIN_FILES [ type ] , folder ) ;
741
+ const templateType = `${ moduleType } _${ arch } ` as const ;
742
+
743
+ if ( options . project . kotlin ) {
744
+ await copyDir ( KOTLIN_FILES [ templateType ] , folder ) ;
745
+ } else {
746
+ await copyDir ( JAVA_FILES [ templateType ] , folder ) ;
747
+ }
738
748
739
749
if ( options . project . cpp ) {
740
750
await copyDir ( CPP_FILES , folder ) ;
0 commit comments