@@ -4,6 +4,24 @@ import 'dotenv/config';
44
55import { args } from './args' ;
66
7+ // Normalizes authVersion to valid values (2, 3, or 4).
8+ // Returns undefined when no value is provided, so mergeConfigs can fall through to other sources.
9+ // Invalid values (e.g., 1, 5) are clamped to 2 for safety.
10+ // Note: Previously, invalid values were passed through and handled at runtime (treated as v2).
11+ // This change normalizes them at config parsing time, which is safer and more explicit.
12+ function parseAuthVersion ( val : number | undefined ) : 2 | 3 | 4 | undefined {
13+ if ( val === undefined || isNaN ( val ) ) {
14+ return undefined ;
15+ }
16+ if ( val === 2 || val === 3 || val === 4 ) {
17+ return val ;
18+ }
19+ console . warn (
20+ `warning: invalid authVersion '${ val } ' provided; defaulting to authVersion 2. ` + `Valid values are 2, 3, or 4.`
21+ ) ;
22+ return 2 ;
23+ }
24+
725function readEnvVar ( name , ...deprecatedAliases ) : string | undefined {
826 if ( process . env [ name ] !== undefined && process . env [ name ] !== '' ) {
927 return process . env [ name ] ;
@@ -36,7 +54,7 @@ export interface Config {
3654 timeout : number ;
3755 customRootUri ?: string ;
3856 customBitcoinNetwork ?: V1Network ;
39- authVersion : number ;
57+ authVersion : 2 | 3 | 4 ;
4058 externalSignerUrl ?: string ;
4159 signerMode ?: boolean ;
4260 signerFileSystemPath ?: string ;
@@ -62,7 +80,7 @@ export const ArgConfig = (args): Partial<Config> => ({
6280 timeout : args . timeout ,
6381 customRootUri : args . customrooturi ,
6482 customBitcoinNetwork : args . custombitcoinnetwork ,
65- authVersion : args . authVersion ,
83+ authVersion : parseAuthVersion ( args . authversion ) ,
6684 externalSignerUrl : args . externalSignerUrl ,
6785 signerMode : args . signerMode ,
6886 signerFileSystemPath : args . signerFileSystemPath ,
@@ -88,7 +106,7 @@ export const EnvConfig = (): Partial<Config> => ({
88106 timeout : Number ( readEnvVar ( 'BITGO_TIMEOUT' ) ) ,
89107 customRootUri : readEnvVar ( 'BITGO_CUSTOM_ROOT_URI' ) ,
90108 customBitcoinNetwork : readEnvVar ( 'BITGO_CUSTOM_BITCOIN_NETWORK' ) as V1Network ,
91- authVersion : Number ( readEnvVar ( 'BITGO_AUTH_VERSION' ) ) ,
109+ authVersion : parseAuthVersion ( Number ( readEnvVar ( 'BITGO_AUTH_VERSION' ) ) ) ,
92110 externalSignerUrl : readEnvVar ( 'BITGO_EXTERNAL_SIGNER_URL' ) ,
93111 signerMode : readEnvVar ( 'BITGO_SIGNER_MODE' ) ? true : undefined ,
94112 signerFileSystemPath : readEnvVar ( 'BITGO_SIGNER_FILE_SYSTEM_PATH' ) ,
0 commit comments