@@ -185,13 +185,6 @@ export class GoogleAuth<T extends AuthClient = JSONClient> {
185185 private scopes ?: string | string [ ] ;
186186 private clientOptions : AuthClientOptions = { } ;
187187
188- /**
189- * The cached universe domain.
190- *
191- * @see {@link GoogleAuth.getUniverseDomain }
192- */
193- #universeDomain?: string = undefined ;
194-
195188 /**
196189 * Export DefaultTransporter as a static property of the class.
197190 */
@@ -220,7 +213,6 @@ export class GoogleAuth<T extends AuthClient = JSONClient> {
220213
221214 if ( opts . universeDomain ) {
222215 this . clientOptions . universeDomain = opts . universeDomain ;
223- this . #universeDomain = opts . universeDomain ;
224216 }
225217 }
226218
@@ -315,9 +307,13 @@ export class GoogleAuth<T extends AuthClient = JSONClient> {
315307 return this . _findProjectIdPromise ;
316308 }
317309
318- async #getUniverseFromMetadataServer( ) {
319- if ( ! ( await this . _checkIsGCE ( ) ) ) return ;
320-
310+ /**
311+ * Retrieves a universe domain from the metadata server via
312+ * {@link gcpMetadata.universe}.
313+ *
314+ * @returns a universe domain
315+ */
316+ async getUniverseDomainFromMetadataServer ( ) : Promise < string > {
321317 let universeDomain : string ;
322318
323319 try {
@@ -338,17 +334,18 @@ export class GoogleAuth<T extends AuthClient = JSONClient> {
338334 * Retrieves, caches, and returns the universe domain in the following order
339335 * of precedence:
340336 * - The universe domain in {@link GoogleAuth.clientOptions}
341- * - {@link gcpMetadata.universe}
337+ * - An existing or ADC {@link AuthClient}'s universe domain
338+ * - {@link gcpMetadata.universe}, if {@link Compute} client
342339 *
343340 * @returns The universe domain
344341 */
345342 async getUniverseDomain ( ) : Promise < string > {
346- this . # universeDomain ?? = originalOrCamelOptions ( this . clientOptions ) . get (
343+ let universeDomain = originalOrCamelOptions ( this . clientOptions ) . get (
347344 'universe_domain'
348345 ) ;
349- this . # universeDomain ??= await this . #getUniverseFromMetadataServer ( ) ;
346+ universeDomain ??= ( await this . getClient ( ) ) . universeDomain ;
350347
351- return this . # universeDomain || DEFAULT_UNIVERSE ;
348+ return universeDomain ;
352349 }
353350
354351 /**
@@ -438,7 +435,8 @@ export class GoogleAuth<T extends AuthClient = JSONClient> {
438435 if ( await this . _checkIsGCE ( ) ) {
439436 // set universe domain for Compute client
440437 if ( ! originalOrCamelOptions ( options ) . get ( 'universe_domain' ) ) {
441- options . universeDomain = await this . getUniverseDomain ( ) ;
438+ options . universeDomain =
439+ await this . getUniverseDomainFromMetadataServer ( ) ;
442440 }
443441
444442 ( options as ComputeOptions ) . scopes = this . getAnyScopes ( ) ;
@@ -622,11 +620,8 @@ export class GoogleAuth<T extends AuthClient = JSONClient> {
622620 }
623621
624622 // Create source client for impersonation
625- const sourceClient = new UserRefreshClient (
626- json . source_credentials . client_id ,
627- json . source_credentials . client_secret ,
628- json . source_credentials . refresh_token
629- ) ;
623+ const sourceClient = new UserRefreshClient ( ) ;
624+ sourceClient . fromJSON ( json . source_credentials ) ;
630625
631626 if ( json . service_account_impersonation_url ?. length > 256 ) {
632627 /**
@@ -652,6 +647,7 @@ export class GoogleAuth<T extends AuthClient = JSONClient> {
652647 const targetScopes = this . getAnyScopes ( ) ?? [ ] ;
653648
654649 const client = new Impersonated ( {
650+ ...json ,
655651 delegates : json . delegates ?? [ ] ,
656652 sourceClient : sourceClient ,
657653 targetPrincipal : targetPrincipal ,
@@ -672,6 +668,10 @@ export class GoogleAuth<T extends AuthClient = JSONClient> {
672668 ) : JSONClient {
673669 let client : JSONClient ;
674670
671+ // user's preferred universe domain
672+ const preferredUniverseDomain =
673+ originalOrCamelOptions ( options ) . get ( 'universe_domain' ) ;
674+
675675 if ( json . type === USER_REFRESH_ACCOUNT_TYPE ) {
676676 client = new UserRefreshClient ( options ) ;
677677 client . fromJSON ( json ) ;
@@ -694,6 +694,11 @@ export class GoogleAuth<T extends AuthClient = JSONClient> {
694694 this . setGapicJWTValues ( client ) ;
695695 client . fromJSON ( json ) ;
696696 }
697+
698+ if ( preferredUniverseDomain ) {
699+ client . universeDomain = preferredUniverseDomain ;
700+ }
701+
697702 return client ;
698703 }
699704
0 commit comments