@@ -38,70 +38,42 @@ const NATIVE_COMMON_EXAMPLE_FILES = path.resolve(
3838) ;
3939
4040const 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' ) ,
6056} as const ;
6157
6258const 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' ) ,
7863} as const ;
7964
8065const 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' ) ,
10072} as const ;
10173
10274const 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' ) ,
10577} as const ;
10678
10779type ArgName =
@@ -117,17 +89,22 @@ type ArgName =
11789 | 'example'
11890 | 'react-native-version' ;
11991
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' ;
12199
122100type ProjectType =
123- | 'library'
124101 | 'module-legacy'
125- | 'module-mixed'
126102 | 'module-new'
103+ | 'module-mixed'
104+ | 'view-mixed'
105+ | 'view-new'
127106 | 'view-legacy'
128- | 'view-module-legacy'
129- | 'view-module-mixed'
130- | 'view-module-new' ;
107+ | 'library' ;
131108
132109type Answers = {
133110 slug : string ;
@@ -150,13 +127,37 @@ const LANGUAGE_CHOICES: {
150127 {
151128 title : 'Kotlin & Objective-C' ,
152129 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+ ] ,
154150 } ,
155151 {
156152 title : 'Kotlin & Swift' ,
157153 value : 'kotlin-swift' ,
158154 types : [ 'module-legacy' , 'view-legacy' ] ,
159155 } ,
156+ {
157+ title : 'Java & Swift' ,
158+ value : 'java-swift' ,
159+ types : [ 'module-legacy' , 'view-legacy' ] ,
160+ } ,
160161 {
161162 title : 'C++ for Android & iOS' ,
162163 value : 'cpp' ,
@@ -177,21 +178,6 @@ const TYPE_CHOICES: {
177178 value : ProjectType ;
178179 description : string ;
179180} [ ] = [
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- } ,
195181 {
196182 title : 'JavaScript library' ,
197183 value : 'library' ,
@@ -217,6 +203,16 @@ const TYPE_CHOICES: {
217203 value : 'module-new' ,
218204 description : NEWARCH_DESCRIPTION ,
219205 } ,
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+ } ,
220216] ;
221217
222218const args : Record < ArgName , yargs . Options > = {
@@ -505,8 +501,8 @@ async function create(argv: yargs.Arguments<any>) {
505501 authorEmail,
506502 authorUrl,
507503 repoUrl,
508- type = 'view- module-mixed' ,
509- languages = type === 'library' ? 'js' : 'kotlin -objc' ,
504+ type = 'module-mixed' ,
505+ languages = type === 'library' ? 'js' : 'java -objc' ,
510506 example : hasExample ,
511507 reactNativeVersion,
512508 } = {
@@ -573,11 +569,13 @@ async function create(argv: yargs.Arguments<any>) {
573569 version = FALLBACK_BOB_VERSION ;
574570 }
575571
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' ;
581579
582580 const example =
583581 hasExample && ! local ? ( type === 'library' ? 'expo' : 'native' ) : 'none' ;
@@ -620,9 +618,10 @@ async function create(argv: yargs.Arguments<any>) {
620618 native : languages !== 'js' ,
621619 arch,
622620 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' ,
626625 } ,
627626 author : {
628627 name : authorName ,
@@ -706,7 +705,7 @@ async function create(argv: yargs.Arguments<any>) {
706705 }
707706 }
708707
709- if ( type === 'library ' ) {
708+ if ( languages === 'js ' ) {
710709 await copyDir ( JS_FILES , folder ) ;
711710 await copyDir ( EXPO_FILES , folder ) ;
712711 } else {
@@ -723,18 +722,29 @@ async function create(argv: yargs.Arguments<any>) {
723722 await copyDir ( NATIVE_COMMON_EXAMPLE_FILES , folder ) ;
724723 }
725724
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+ }
727730
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 ) ;
733733 } 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+ }
735739 }
736740
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+ }
738748
739749 if ( options . project . cpp ) {
740750 await copyDir ( CPP_FILES , folder ) ;
0 commit comments