(credential: ResolvedCredential)
| 40 | |
| 41 | // fallow-ignore-next-line complexity |
| 42 | async function refreshIfNeeded(credential: ResolvedCredential): Promise<ResolvedCredential> { |
| 43 | if (credential.type !== "oauth") return credential; |
| 44 | if (!credential.refreshable || !credential.refresh_token) return credential; |
| 45 | const fresh = await refreshTokens(credential.refresh_token); |
| 46 | return { |
| 47 | ...credential, |
| 48 | access_token: fresh.access_token, |
| 49 | expires_at: parseDateOrUndef(fresh.expires_at), |
| 50 | refreshable: false, |
| 51 | ...(fresh.refresh_token ? { refresh_token: fresh.refresh_token } : {}), |
| 52 | }; |
| 53 | } |
| 54 | |
| 55 | function parseDateOrUndef(value: string | undefined): Date | undefined { |
| 56 | if (!value) return undefined; |
no test coverage detected