@@ -104,21 +104,18 @@ function printDeprecationWarningIfNeeded(dependency) {
104
104
function extractLibrariesFromConfigurationArray (
105
105
configFile ,
106
106
codegenConfigKey ,
107
- libraries ,
108
107
dependencyPath ,
109
108
) {
110
- configFile [ codegenConfigKey ] . libraries . forEach ( config => {
111
- const libraryConfig = {
109
+ return configFile [ codegenConfigKey ] . libraries . map ( config => {
110
+ return {
112
111
config,
113
112
libraryPath : dependencyPath ,
114
113
} ;
115
- libraries . push ( libraryConfig ) ;
116
114
} ) ;
117
115
}
118
116
119
117
function extractLibrariesFromJSON (
120
118
configFile ,
121
- libraries ,
122
119
codegenConfigKey ,
123
120
dependency ,
124
121
dependencyPath ,
@@ -136,29 +133,29 @@ function extractLibrariesFromJSON(
136
133
if ( isBlocking ) {
137
134
throw `[Codegen] Error: Could not find codegen config for ${ dependency } .` ;
138
135
}
139
- return ;
136
+ return [ ] ;
140
137
}
141
138
142
139
console . log ( `[Codegen] Found ${ dependency } ` ) ;
143
140
if ( configFile [ codegenConfigKey ] . libraries == null ) {
144
141
var config = configFile [ codegenConfigKey ] ;
145
- libraries . push ( {
146
- config,
147
- libraryPath : dependencyPath ,
148
- } ) ;
142
+ return [
143
+ {
144
+ config,
145
+ libraryPath : dependencyPath ,
146
+ } ,
147
+ ] ;
149
148
} else {
150
149
printDeprecationWarningIfNeeded ( dependency ) ;
151
- extractLibrariesFromConfigurationArray (
150
+ return extractLibrariesFromConfigurationArray (
152
151
configFile ,
153
152
codegenConfigKey ,
154
- libraries ,
155
153
dependencyPath ,
156
154
) ;
157
155
}
158
156
}
159
157
160
158
function handleReactNativeCoreLibraries (
161
- libraries ,
162
159
codegenConfigFilename ,
163
160
codegenConfigKey ,
164
161
) {
@@ -173,11 +170,10 @@ function handleReactNativeCoreLibraries(
173
170
throw '[Codegen] Error: Could not find config file for react-native.' ;
174
171
}
175
172
const reactNativeConfigFile = JSON . parse ( fs . readFileSync ( reactNativePkgJson ) ) ;
176
- extractLibrariesFromJSON ( reactNativeConfigFile , libraries , codegenConfigKey ) ;
173
+ return extractLibrariesFromJSON ( reactNativeConfigFile , codegenConfigKey ) ;
177
174
}
178
175
179
176
function handleThirdPartyLibraries (
180
- libraries ,
181
177
baseCodegenConfigFileDir ,
182
178
dependencies ,
183
179
codegenConfigFilename ,
@@ -192,31 +188,30 @@ function handleThirdPartyLibraries(
192
188
) ;
193
189
194
190
// Handle third-party libraries
195
- Object . keys ( dependencies ) . forEach ( dependency => {
191
+ return Object . keys ( dependencies ) . flatMap ( dependency => {
196
192
if ( dependency === REACT_NATIVE_DEPENDENCY_NAME ) {
197
193
// react-native should already be added.
198
- return ;
194
+ return [ ] ;
199
195
}
200
196
const codegenConfigFileDir = path . join ( configDir , dependency ) ;
201
197
const configFilePath = path . join (
202
198
codegenConfigFileDir ,
203
199
codegenConfigFilename ,
204
200
) ;
205
- if ( fs . existsSync ( configFilePath ) ) {
206
- const configFile = JSON . parse ( fs . readFileSync ( configFilePath ) ) ;
207
- extractLibrariesFromJSON (
208
- configFile ,
209
- libraries ,
210
- codegenConfigKey ,
211
- dependency ,
212
- codegenConfigFileDir ,
213
- ) ;
201
+ if ( ! fs . existsSync ( configFilePath ) ) {
202
+ return [ ] ;
214
203
}
204
+ const configFile = JSON . parse ( fs . readFileSync ( configFilePath ) ) ;
205
+ return extractLibrariesFromJSON (
206
+ configFile ,
207
+ codegenConfigKey ,
208
+ dependency ,
209
+ codegenConfigFileDir ,
210
+ ) ;
215
211
} ) ;
216
212
}
217
213
218
214
function handleLibrariesFromReactNativeConfig (
219
- libraries ,
220
215
codegenConfigKey ,
221
216
codegenConfigFilename ,
222
217
appRootDir ,
@@ -229,54 +224,51 @@ function handleLibrariesFromReactNativeConfig(
229
224
230
225
const rnConfigFilePath = path . resolve ( appRootDir , rnConfigFileName ) ;
231
226
232
- if ( fs . existsSync ( rnConfigFilePath ) ) {
233
- const rnConfig = require ( rnConfigFilePath ) ;
234
-
235
- if ( rnConfig . dependencies != null ) {
236
- Object . keys ( rnConfig . dependencies ) . forEach ( name => {
237
- const dependencyConfig = rnConfig . dependencies [ name ] ;
238
-
239
- if ( dependencyConfig . root ) {
240
- const codegenConfigFileDir = path . resolve (
241
- appRootDir ,
242
- dependencyConfig . root ,
243
- ) ;
244
- const configFilePath = path . join (
245
- codegenConfigFileDir ,
246
- codegenConfigFilename ,
247
- ) ;
248
- const pkgJsonPath = path . join ( codegenConfigFileDir , 'package.json' ) ;
249
-
250
- if ( fs . existsSync ( configFilePath ) ) {
251
- const pkgJson = JSON . parse ( fs . readFileSync ( pkgJsonPath ) ) ;
252
- const configFile = JSON . parse ( fs . readFileSync ( configFilePath ) ) ;
253
- extractLibrariesFromJSON (
254
- configFile ,
255
- libraries ,
256
- codegenConfigKey ,
257
- pkgJson . name ,
258
- codegenConfigFileDir ,
259
- ) ;
260
- }
261
- }
262
- } ) ;
263
- }
227
+ if ( ! fs . existsSync ( rnConfigFilePath ) ) {
228
+ return [ ] ;
264
229
}
230
+ const rnConfig = require ( rnConfigFilePath ) ;
231
+
232
+ if ( rnConfig . dependencies == null ) {
233
+ return [ ] ;
234
+ }
235
+ return Object . keys ( rnConfig . dependencies ) . flatMap ( name => {
236
+ const dependencyConfig = rnConfig . dependencies [ name ] ;
237
+
238
+ if ( ! dependencyConfig . root ) {
239
+ return [ ] ;
240
+ }
241
+ const codegenConfigFileDir = path . resolve (
242
+ appRootDir ,
243
+ dependencyConfig . root ,
244
+ ) ;
245
+ const configFilePath = path . join (
246
+ codegenConfigFileDir ,
247
+ codegenConfigFilename ,
248
+ ) ;
249
+ if ( ! fs . existsSync ( configFilePath ) ) {
250
+ return [ ] ;
251
+ }
252
+ const pkgJsonPath = path . join ( codegenConfigFileDir , 'package.json' ) ;
253
+ const pkgJson = JSON . parse ( fs . readFileSync ( pkgJsonPath ) ) ;
254
+ const configFile = JSON . parse ( fs . readFileSync ( configFilePath ) ) ;
255
+
256
+ return extractLibrariesFromJSON (
257
+ configFile ,
258
+ codegenConfigKey ,
259
+ pkgJson . name ,
260
+ codegenConfigFileDir ,
261
+ ) ;
262
+ } ) ;
265
263
}
266
264
267
- function handleInAppLibraries (
268
- libraries ,
269
- pkgJson ,
270
- codegenConfigKey ,
271
- appRootDir ,
272
- ) {
265
+ function handleInAppLibraries ( pkgJson , codegenConfigKey , appRootDir ) {
273
266
console . log (
274
267
'\n\n[Codegen] >>>>> Searching for codegen-enabled libraries in the app' ,
275
268
) ;
276
269
277
- extractLibrariesFromJSON (
270
+ return extractLibrariesFromJSON (
278
271
pkgJson ,
279
- libraries ,
280
272
codegenConfigKey ,
281
273
pkgJson . name ,
282
274
appRootDir ,
@@ -433,29 +425,21 @@ function findCodegenEnabledLibraries(
433
425
) {
434
426
const pkgJson = readPackageJSON ( appRootDir ) ;
435
427
const dependencies = { ...pkgJson . dependencies , ...pkgJson . devDependencies } ;
436
- const libraries = [ ] ;
437
-
438
- handleReactNativeCoreLibraries (
439
- libraries ,
440
- codegenConfigFilename ,
441
- codegenConfigKey ,
442
- ) ;
443
- handleThirdPartyLibraries (
444
- libraries ,
445
- baseCodegenConfigFileDir ,
446
- dependencies ,
447
- codegenConfigFilename ,
448
- codegenConfigKey ,
449
- ) ;
450
- handleLibrariesFromReactNativeConfig (
451
- libraries ,
452
- codegenConfigKey ,
453
- codegenConfigFilename ,
454
- appRootDir ,
455
- ) ;
456
- handleInAppLibraries ( libraries , pkgJson , codegenConfigKey , appRootDir ) ;
457
-
458
- return libraries ;
428
+ return [
429
+ ...handleReactNativeCoreLibraries ( codegenConfigFilename , codegenConfigKey ) ,
430
+ ...handleThirdPartyLibraries (
431
+ baseCodegenConfigFileDir ,
432
+ dependencies ,
433
+ codegenConfigFilename ,
434
+ codegenConfigKey ,
435
+ ) ,
436
+ ...handleLibrariesFromReactNativeConfig (
437
+ codegenConfigKey ,
438
+ codegenConfigFilename ,
439
+ appRootDir ,
440
+ ) ,
441
+ ...handleInAppLibraries ( pkgJson , codegenConfigKey , appRootDir ) ,
442
+ ] ;
459
443
}
460
444
461
445
// It removes all the empty files and empty folders
0 commit comments