(creds: CredentialFile)
| 97 | * (and persisting) the stored token if it expires within 5 minutes. |
| 98 | */ |
| 99 | export async function ensureFreshToken(creds: CredentialFile): Promise<string> { |
| 100 | const expiresAt = new Date(creds.expires_at).getTime(); |
| 101 | if (Date.now() < expiresAt - REFRESH_BUFFER_MS) return creds.access_token; |
| 102 | |
| 103 | const fresh = await refreshAccessToken(creds.refresh_token, creds.region ?? 'global'); |
| 104 | const updated: CredentialFile = { |
| 105 | access_token: fresh.access_token, |
| 106 | refresh_token: fresh.refresh_token, |
| 107 | expires_at: fresh.expires_at, |
| 108 | region: creds.region, |
| 109 | resource_url: fresh.resource_url ?? creds.resource_url, |
| 110 | account: creds.account, |
| 111 | }; |
| 112 | await saveCredentials(updated); |
| 113 | return updated.access_token; |
| 114 | } |
no test coverage detected