Something went wrong. Try again.
source dump of claude code forked from oppi.li/claude-code
Something went wrong. Try again.
1.7 kB · 63 lines
TypeScript
at main
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364import axios from 'axios'import { getOauthConfig } from '../../constants/oauth.js'import { getClaudeAIOAuthTokens, hasProfileScope, isClaudeAISubscriber,} from '../../utils/auth.js'import { getAuthHeaders } from '../../utils/http.js'import { getClaudeCodeUserAgent } from '../../utils/userAgent.js'import { isOAuthTokenExpired } from '../oauth/client.js'
export type RateLimit = { utilization: number | null // a percentage from 0 to 100 resets_at: string | null // ISO 8601 timestamp}
export type ExtraUsage = { is_enabled: boolean monthly_limit: number | null used_credits: number | null utilization: number | null}
export type Utilization = { five_hour?: RateLimit | null seven_day?: RateLimit | null seven_day_oauth_apps?: RateLimit | null seven_day_opus?: RateLimit | null seven_day_sonnet?: RateLimit | null extra_usage?: ExtraUsage | null}
export async function fetchUtilization(): Promise<Utilization | null> { if (!isClaudeAISubscriber() || !hasProfileScope()) { return {} }
// Skip API call if OAuth token is expired to avoid 401 errors const tokens = getClaudeAIOAuthTokens() if (tokens && isOAuthTokenExpired(tokens.expiresAt)) { return null }
const authResult = getAuthHeaders() if (authResult.error) { throw new Error(`Auth error: ${authResult.error}`) }
const headers = { 'Content-Type': 'application/json', 'User-Agent': getClaudeCodeUserAgent(), ...authResult.headers, }
const url = `${getOauthConfig().BASE_API_URL}/api/oauth/usage`
const response = await axios.get<Utilization>(url, { headers, timeout: 5000, // 5 second timeout })
return response.data}