@@ -23,33 +23,39 @@ const colors: number[] =
2323
2424const inspectOpts : InspectOptions = Object . keys ( process . env )
2525 . filter ( ( key ) => / ^ d e b u g _ / i. test ( key ) )
26- . reduce (
27- ( obj , key ) => {
28- // Camel-case
29- const prop = key
30- . slice ( 6 )
31- . toLowerCase ( )
32- . replace ( / _ ( [ a - z ] ) / g, ( _ , k ) => k . toUpperCase ( ) )
33-
34- // Coerce string value into JS value
35- let value : any = process . env [ key ]
36- if ( value === 'null' ) {
37- value = null
38- // TODO perf: don't use regex
39- } else if ( / ^ y e s | o n | t r u e | e n a b l e d $ / i. test ( value ) ) {
40- value = true
41- // TODO perf: don't use regex
42- } else if ( / ^ n o | o f f | f a l s e | d i s a b l e d $ / i. test ( value ) ) {
43- value = false
44- } else {
45- value = Number ( value )
46- }
47-
48- obj [ prop ] = value
49- return obj
50- } ,
51- { } as Record < string , any > ,
52- )
26+ . reduce < Record < string , any > > ( ( obj , key ) => {
27+ // Camel-case
28+ const prop = key
29+ . slice ( 6 )
30+ . toLowerCase ( )
31+ . replace ( / _ ( [ a - z ] ) / g, ( _ , k ) => k . toUpperCase ( ) )
32+
33+ // Coerce string value into JS value
34+ let value : any = process . env [ key ]
35+ const lowerCase = typeof value === 'string' && value . toLowerCase ( )
36+ if ( value === 'null' ) {
37+ value = null
38+ } else if (
39+ lowerCase === 'yes' ||
40+ lowerCase === 'on' ||
41+ lowerCase === 'true' ||
42+ lowerCase === 'enabled'
43+ ) {
44+ value = true
45+ } else if (
46+ lowerCase === 'no' ||
47+ lowerCase === 'off' ||
48+ lowerCase === 'false' ||
49+ lowerCase === 'disabled'
50+ ) {
51+ value = false
52+ } else {
53+ value = Number ( value )
54+ }
55+
56+ obj [ prop ] = value
57+ return obj
58+ } , { } )
5359
5460/**
5561 * Is stdout a TTY? Colored output is enabled when `true`.
0 commit comments