@@ -38,42 +38,70 @@ const NATIVE_COMMON_EXAMPLE_FILES = path.resolve(
3838) ;
3939
4040const 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+ ) ,
5660} as const ;
5761
5862const 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+ ) ,
6378} as const ;
6479
6580const 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+ ) ,
72100} as const ;
73101
74102const 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' ) ,
77105} as const ;
78106
79107type ArgName =
@@ -89,22 +117,17 @@ type ArgName =
89117 | 'example'
90118 | 'react-native-version' ;
91119
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' ;
99121
100122type ProjectType =
123+ | 'library'
101124 | 'module-legacy'
102- | 'module-new'
103125 | 'module-mixed'
104- | 'view-mixed'
105- | 'view-new'
126+ | 'module-new'
106127 | 'view-legacy'
107- | 'library' ;
128+ | 'view-module-legacy'
129+ | 'view-module-mixed'
130+ | 'view-module-new' ;
108131
109132type Answers = {
110133 slug : string ;
@@ -127,37 +150,13 @@ const LANGUAGE_CHOICES: {
127150 {
128151 title : 'Kotlin & Objective-C' ,
129152 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' ] ,
150154 } ,
151155 {
152156 title : 'Kotlin & Swift' ,
153157 value : 'kotlin-swift' ,
154158 types : [ 'module-legacy' , 'view-legacy' ] ,
155159 } ,
156- {
157- title : 'Java & Swift' ,
158- value : 'java-swift' ,
159- types : [ 'module-legacy' , 'view-legacy' ] ,
160- } ,
161160 {
162161 title : 'C++ for Android & iOS' ,
163162 value : 'cpp' ,
@@ -178,6 +177,21 @@ const TYPE_CHOICES: {
178177 value : ProjectType ;
179178 description : string ;
180179} [ ] = [
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+ } ,
181195 {
182196 title : 'JavaScript library' ,
183197 value : 'library' ,
@@ -203,16 +217,6 @@ const TYPE_CHOICES: {
203217 value : 'module-new' ,
204218 description : NEWARCH_DESCRIPTION ,
205219 } ,
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- } ,
216220] ;
217221
218222const args : Record < ArgName , yargs . Options > = {
@@ -501,8 +505,8 @@ async function create(argv: yargs.Arguments<any>) {
501505 authorEmail,
502506 authorUrl,
503507 repoUrl,
504- type = 'module-mixed' ,
505- languages = type === 'library' ? 'js' : 'java -objc' ,
508+ type = 'view- module-mixed' ,
509+ languages = type === 'library' ? 'js' : 'kotlin -objc' ,
506510 example : hasExample ,
507511 reactNativeVersion,
508512 } = {
@@ -561,13 +565,11 @@ async function create(argv: yargs.Arguments<any>) {
561565 version = FALLBACK_BOB_VERSION ;
562566 }
563567
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' ;
571573
572574 const example =
573575 hasExample && ! local ? ( type === 'library' ? 'expo' : 'native' ) : 'none' ;
@@ -610,10 +612,9 @@ async function create(argv: yargs.Arguments<any>) {
610612 native : languages !== 'js' ,
611613 arch,
612614 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' ) ,
617618 } ,
618619 author : {
619620 name : authorName ,
@@ -697,7 +698,7 @@ async function create(argv: yargs.Arguments<any>) {
697698 }
698699 }
699700
700- if ( languages === 'js ' ) {
701+ if ( type === 'library ' ) {
701702 await copyDir ( JS_FILES , folder ) ;
702703 await copyDir ( EXPO_FILES , folder ) ;
703704 } else {
@@ -714,29 +715,18 @@ async function create(argv: yargs.Arguments<any>) {
714715 await copyDir ( NATIVE_COMMON_EXAMPLE_FILES , folder ) ;
715716 }
716717
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 ) ;
722719
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 ) ;
725725 } 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 ) ;
731727 }
732728
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 ) ;
740730
741731 if ( options . project . cpp ) {
742732 await copyDir ( CPP_FILES , folder ) ;
0 commit comments