@@ -281,34 +281,34 @@ export function envVarDirective(
281281 name = resolved ;
282282 }
283283
284- const parseValue = ( value : string ) => {
284+ const parseValue = ( strValue : string ) => {
285285 if ( parseInt ) {
286- const parsed = Number . parseInt ( value , 10 ) ;
286+ const parsed = Number . parseInt ( strValue , 10 ) ;
287287
288288 if ( Number . isNaN ( parsed ) ) {
289- throw new AppConfigError ( `Failed to parseInt(${ value } )` ) ;
289+ throw new AppConfigError ( `Failed to parseInt(${ strValue } )` ) ;
290290 }
291291
292292 return parse ( parsed , { shouldFlatten : true } ) ;
293293 }
294294
295295 if ( parseFloat ) {
296- const parsed = Number . parseFloat ( value ) ;
296+ const parsed = Number . parseFloat ( strValue ) ;
297297
298298 if ( Number . isNaN ( parsed ) ) {
299- throw new AppConfigError ( `Failed to parseFloat(${ value } )` ) ;
299+ throw new AppConfigError ( `Failed to parseFloat(${ strValue } )` ) ;
300300 }
301301
302302 return parse ( parsed , { shouldFlatten : true } ) ;
303303 }
304304
305305 if ( parseBool ) {
306- const parsed = value . toLowerCase ( ) !== 'false' && value !== '0' ;
306+ const parsed = strValue . toLowerCase ( ) !== 'false' && strValue !== '0' ;
307307
308308 return parse ( parsed , { shouldFlatten : true } ) ;
309309 }
310310
311- return parse ( value , { shouldFlatten : true } ) ;
311+ return parse ( strValue , { shouldFlatten : true } ) ;
312312 } ;
313313
314314 let resolvedValue = process . env [ name ] ;
@@ -358,20 +358,14 @@ export function substituteDirective(
358358
359359 validateString ( name , [ ...ctx , key , [ InObject , 'name' ] ] ) ;
360360
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 ) => {
368362 const parseInt = ( await parse ( selectDefined ( value . parseInt , value . $parseInt ) ) ) . toJSON ( ) ;
369363
370364 if ( parseInt ) {
371- const parsed = Number . parseInt ( resolvedValue , 10 ) ;
365+ const parsed = Number . parseInt ( strValue , 10 ) ;
372366
373367 if ( Number . isNaN ( parsed ) ) {
374- throw new AppConfigError ( `Failed to parseInt(${ resolvedValue } )` ) ;
368+ throw new AppConfigError ( `Failed to parseInt(${ strValue } )` ) ;
375369 }
376370
377371 return parse ( parsed , { shouldFlatten : true } ) ;
@@ -380,10 +374,10 @@ export function substituteDirective(
380374 const parseFloat = ( await parse ( selectDefined ( value . parseFloat , value . $parseFloat ) ) ) . toJSON ( ) ;
381375
382376 if ( parseFloat ) {
383- const parsed = Number . parseFloat ( resolvedValue ) ;
377+ const parsed = Number . parseFloat ( strValue ) ;
384378
385379 if ( Number . isNaN ( parsed ) ) {
386- throw new AppConfigError ( `Failed to parseFloat(${ resolvedValue } )` ) ;
380+ throw new AppConfigError ( `Failed to parseFloat(${ strValue } )` ) ;
387381 }
388382
389383 return parse ( parsed , { shouldFlatten : true } ) ;
@@ -392,12 +386,22 @@ export function substituteDirective(
392386 const parseBool = ( await parse ( selectDefined ( value . parseBool , value . $parseBool ) ) ) . toJSON ( ) ;
393387
394388 if ( parseBool ) {
395- const parsed = resolvedValue . toLowerCase ( ) !== 'false' && resolvedValue !== '0' ;
389+ const parsed = strValue . toLowerCase ( ) !== 'false' && strValue !== '0' ;
396390
397391 return parse ( parsed , { shouldFlatten : true } ) ;
398392 }
399393
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 ) ;
401405 }
402406
403407 if ( value . fallback !== undefined || value . $fallback !== undefined ) {
@@ -410,7 +414,7 @@ export function substituteDirective(
410414 validateString ( fallback , [ ...ctx , key , [ InObject , 'fallback' ] ] ) ;
411415 }
412416
413- return parse ( fallback , { shouldFlatten : true } ) ;
417+ return parseValue ( fallback ) ;
414418 }
415419
416420 throw new AppConfigError ( `$substitute could not find ${ name } environment variable` ) ;
0 commit comments