UNPKG

claude-monitor

Version:

Real-time terminal monitoring tool for Claude AI token usage

63 lines 2.28 kB
import { format, formatDistanceToNow, parseISO } from 'date-fns'; import { toZonedTime } from 'date-fns-tz'; export function formatDate(date, formatStr, timezone) { const dateObj = typeof date === 'string' ? parseISO(date) : date; if (timezone && timezone !== 'local') { const zonedDate = toZonedTime(dateObj, timezone); return format(zonedDate, formatStr); } return format(dateObj, formatStr); } export function formatTime(date, timeFormat, timezone) { const formatStr = timeFormat === '12' ? 'h:mm:ss a' : 'HH:mm:ss'; return formatDate(date, formatStr, timezone); } export function formatDuration(seconds) { const hours = Math.floor(seconds / 3600); const minutes = Math.floor((seconds % 3600) / 60); const secs = Math.floor(seconds % 60); if (hours > 0) { return `${hours}h ${minutes}m ${secs}s`; } else if (minutes > 0) { return `${minutes}m ${secs}s`; } else { return `${secs}s`; } } export function formatRelativeTime(date) { const dateObj = typeof date === 'string' ? parseISO(date) : date; return formatDistanceToNow(dateObj, { addSuffix: true }); } export function getCurrentTime(timezone) { if (!timezone || timezone === 'local') { return new Date(); } const now = new Date(); return toZonedTime(now, timezone); } export function isWithinHours(date, hours) { const dateObj = typeof date === 'string' ? parseISO(date) : date; const hoursAgo = new Date(); hoursAgo.setHours(hoursAgo.getHours() - hours); return dateObj >= hoursAgo; } export function getSessionWindowStart(now = new Date()) { const windowStart = new Date(now); windowStart.setHours(windowStart.getHours() - 5); return windowStart; } export function inSameSessionWindow(date1, date2) { const diff = Math.abs(date1.getTime() - date2.getTime()); const fiveHoursMs = 5 * 60 * 60 * 1000; return diff <= fiveHoursMs; } export function getSessionTimeRemaining(sessionStart) { const now = new Date(); const sessionEnd = new Date(sessionStart); sessionEnd.setHours(sessionEnd.getHours() + 5); const remaining = sessionEnd.getTime() - now.getTime(); return Math.max(0, remaining / 1000); } //# sourceMappingURL=time.js.map