From bc60257e220a77c2d6e57ea4bfd1f0a483a1344c Mon Sep 17 00:00:00 2001 From: Marat Boshernitsan Date: Fri, 15 Aug 2025 22:05:59 -0700 Subject: feat(oauth): Make oauth client a singleton to survive cache failures (#6348) --- packages/core/src/code_assist/oauth2.ts | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'packages/core/src/code_assist/oauth2.ts') diff --git a/packages/core/src/code_assist/oauth2.ts b/packages/core/src/code_assist/oauth2.ts index dc1ec490..f9518cbe 100644 --- a/packages/core/src/code_assist/oauth2.ts +++ b/packages/core/src/code_assist/oauth2.ts @@ -66,7 +66,9 @@ export interface OauthWebLogin { loginCompletePromise: Promise; } -export async function getOauthClient( +const oauthClientPromises = new Map>(); + +async function initOauthClient( authType: AuthType, config: Config, ): Promise { @@ -187,6 +189,16 @@ export async function getOauthClient( return client; } +export async function getOauthClient( + authType: AuthType, + config: Config, +): Promise { + if (!oauthClientPromises.has(authType)) { + oauthClientPromises.set(authType, initOauthClient(authType, config)); + } + return oauthClientPromises.get(authType)!; +} + async function authWithUserCode(client: OAuth2Client): Promise { const redirectUri = 'https://codeassist.google.com/authcode'; const codeVerifier = await client.generateCodeVerifierAsync(); @@ -416,3 +428,8 @@ async function fetchAndCacheUserInfo(client: OAuth2Client): Promise { console.error('Error retrieving user info:', error); } } + +// Helper to ensure test isolation +export function resetOauthClientForTesting() { + oauthClientPromises.clear(); +} -- cgit v1.2.3