import { isLimitReached } from '../../types.js'; import { red, yellow, dim, getContextColor, quotaBar, RESET } from '../colors.js'; export function renderUsageLine(ctx) { const display = ctx.config?.display; if (display?.showUsage === false) { return null; } if (!ctx.usageData?.planName) { return null; } if (ctx.usageData.apiUnavailable) { return yellow(`usage: ⚠`); } if (isLimitReached(ctx.usageData)) { const resetTime = ctx.usageData.fiveHour === 100 ? formatResetTime(ctx.usageData.fiveHourResetAt) : formatResetTime(ctx.usageData.sevenDayResetAt); return red(`⚠ Limit reached${resetTime ? ` (resets ${resetTime})` : ''}`); } const threshold = display?.usageThreshold ?? 0; const fiveHour = ctx.usageData.fiveHour; const sevenDay = ctx.usageData.sevenDay; const effectiveUsage = Math.max(fiveHour ?? 0, sevenDay ?? 0); if (effectiveUsage < threshold) { return null; } const fiveHourDisplay = formatUsagePercent(ctx.usageData.fiveHour); const fiveHourReset = formatResetTime(ctx.usageData.fiveHourResetAt); const usageBarEnabled = display?.usageBarEnabled ?? true; const fiveHourPart = usageBarEnabled ? (fiveHourReset ? `${quotaBar(fiveHour ?? 0)} ${fiveHourDisplay} (${fiveHourReset} / 5h)` : `${quotaBar(fiveHour ?? 0)} ${fiveHourDisplay}`) : (fiveHourReset ? `5h: ${fiveHourDisplay} (${fiveHourReset})` : `5h: ${fiveHourDisplay}`); if (sevenDay !== null && sevenDay >= 80) { const sevenDayDisplay = formatUsagePercent(sevenDay); const sevenDayReset = formatResetTime(ctx.usageData.sevenDayResetAt); const sevenDayPart = usageBarEnabled ? (sevenDayReset ? `${quotaBar(sevenDay)} ${sevenDayDisplay} (${sevenDayReset} / 7d)` : `${quotaBar(sevenDay)} ${sevenDayDisplay}`) : `7d: ${sevenDayDisplay}`; return `${fiveHourPart} | ${sevenDayPart}`; } return fiveHourPart; } function formatUsagePercent(percent) { if (percent === null) { return dim('--'); } const color = getContextColor(percent); return `${color}${percent}%${RESET}`; } function formatResetTime(resetAt) { if (!resetAt) return ''; const now = new Date(); const diffMs = resetAt.getTime() - now.getTime(); if (diffMs <= 0) return ''; const diffMins = Math.ceil(diffMs / 60000); if (diffMins < 60) return `${diffMins}m`; const hours = Math.floor(diffMins / 60); const mins = diffMins % 60; return mins > 0 ? `${hours}h ${mins}m` : `${hours}h`; } //# sourceMappingURL=usage.js.map