( clientEnv: ClientEnv = env, )
| 247 | } |
| 248 | |
| 249 | export const getValidChatGptOAuthCredentials = async ( |
| 250 | clientEnv: ClientEnv = env, |
| 251 | ): Promise<ChatGptOAuthCredentials | null> => { |
| 252 | const credentials = getChatGptOAuthCredentials(clientEnv) |
| 253 | if (!credentials) { |
| 254 | return null |
| 255 | } |
| 256 | |
| 257 | const bufferMs = 5 * 60 * 1000 |
| 258 | |
| 259 | // No refresh token (e.g. env var override) — return only if still valid |
| 260 | if (!credentials.refreshToken) { |
| 261 | return credentials.expiresAt > Date.now() + bufferMs ? credentials : null |
| 262 | } |
| 263 | |
| 264 | if (credentials.expiresAt > Date.now() + bufferMs) { |
| 265 | return credentials |
| 266 | } |
| 267 | |
| 268 | return refreshChatGptOAuthToken(clientEnv) |
| 269 | } |
no test coverage detected