@@ -281,34 +281,34 @@ export function envVarDirective(
281
281
name = resolved ;
282
282
}
283
283
284
- const parseValue = ( value : string ) => {
284
+ const parseValue = ( strValue : string ) => {
285
285
if ( parseInt ) {
286
- const parsed = Number . parseInt ( value , 10 ) ;
286
+ const parsed = Number . parseInt ( strValue , 10 ) ;
287
287
288
288
if ( Number . isNaN ( parsed ) ) {
289
- throw new AppConfigError ( `Failed to parseInt(${ value } )` ) ;
289
+ throw new AppConfigError ( `Failed to parseInt(${ strValue } )` ) ;
290
290
}
291
291
292
292
return parse ( parsed , { shouldFlatten : true } ) ;
293
293
}
294
294
295
295
if ( parseFloat ) {
296
- const parsed = Number . parseFloat ( value ) ;
296
+ const parsed = Number . parseFloat ( strValue ) ;
297
297
298
298
if ( Number . isNaN ( parsed ) ) {
299
- throw new AppConfigError ( `Failed to parseFloat(${ value } )` ) ;
299
+ throw new AppConfigError ( `Failed to parseFloat(${ strValue } )` ) ;
300
300
}
301
301
302
302
return parse ( parsed , { shouldFlatten : true } ) ;
303
303
}
304
304
305
305
if ( parseBool ) {
306
- const parsed = value . toLowerCase ( ) !== 'false' && value !== '0' ;
306
+ const parsed = strValue . toLowerCase ( ) !== 'false' && strValue !== '0' ;
307
307
308
308
return parse ( parsed , { shouldFlatten : true } ) ;
309
309
}
310
310
311
- return parse ( value , { shouldFlatten : true } ) ;
311
+ return parse ( strValue , { shouldFlatten : true } ) ;
312
312
} ;
313
313
314
314
let resolvedValue = process . env [ name ] ;
@@ -358,20 +358,14 @@ export function substituteDirective(
358
358
359
359
validateString ( name , [ ...ctx , key , [ InObject , 'name' ] ] ) ;
360
360
361
- let resolvedValue = process . env [ name ] ;
362
-
363
- if ( ! resolvedValue && name === 'APP_CONFIG_ENV' ) {
364
- resolvedValue = envType ;
365
- }
366
-
367
- if ( resolvedValue ) {
361
+ const parseValue = async ( strValue : string ) => {
368
362
const parseInt = ( await parse ( selectDefined ( value . parseInt , value . $parseInt ) ) ) . toJSON ( ) ;
369
363
370
364
if ( parseInt ) {
371
- const parsed = Number . parseInt ( resolvedValue , 10 ) ;
365
+ const parsed = Number . parseInt ( strValue , 10 ) ;
372
366
373
367
if ( Number . isNaN ( parsed ) ) {
374
- throw new AppConfigError ( `Failed to parseInt(${ resolvedValue } )` ) ;
368
+ throw new AppConfigError ( `Failed to parseInt(${ strValue } )` ) ;
375
369
}
376
370
377
371
return parse ( parsed , { shouldFlatten : true } ) ;
@@ -380,10 +374,10 @@ export function substituteDirective(
380
374
const parseFloat = ( await parse ( selectDefined ( value . parseFloat , value . $parseFloat ) ) ) . toJSON ( ) ;
381
375
382
376
if ( parseFloat ) {
383
- const parsed = Number . parseFloat ( resolvedValue ) ;
377
+ const parsed = Number . parseFloat ( strValue ) ;
384
378
385
379
if ( Number . isNaN ( parsed ) ) {
386
- throw new AppConfigError ( `Failed to parseFloat(${ resolvedValue } )` ) ;
380
+ throw new AppConfigError ( `Failed to parseFloat(${ strValue } )` ) ;
387
381
}
388
382
389
383
return parse ( parsed , { shouldFlatten : true } ) ;
@@ -392,12 +386,22 @@ export function substituteDirective(
392
386
const parseBool = ( await parse ( selectDefined ( value . parseBool , value . $parseBool ) ) ) . toJSON ( ) ;
393
387
394
388
if ( parseBool ) {
395
- const parsed = resolvedValue . toLowerCase ( ) !== 'false' && resolvedValue !== '0' ;
389
+ const parsed = strValue . toLowerCase ( ) !== 'false' && strValue !== '0' ;
396
390
397
391
return parse ( parsed , { shouldFlatten : true } ) ;
398
392
}
399
393
400
- return parse ( resolvedValue , { shouldFlatten : true } ) ;
394
+ return parse ( strValue , { shouldFlatten : true } ) ;
395
+ } ;
396
+
397
+ let resolvedValue = process . env [ name ] ;
398
+
399
+ if ( ! resolvedValue && name === 'APP_CONFIG_ENV' ) {
400
+ resolvedValue = envType ;
401
+ }
402
+
403
+ if ( resolvedValue ) {
404
+ return parseValue ( resolvedValue ) ;
401
405
}
402
406
403
407
if ( value . fallback !== undefined || value . $fallback !== undefined ) {
@@ -410,7 +414,7 @@ export function substituteDirective(
410
414
validateString ( fallback , [ ...ctx , key , [ InObject , 'fallback' ] ] ) ;
411
415
}
412
416
413
- return parse ( fallback , { shouldFlatten : true } ) ;
417
+ return parseValue ( fallback ) ;
414
418
}
415
419
416
420
throw new AppConfigError ( `$substitute could not find ${ name } environment variable` ) ;
0 commit comments