claude-monitor
Version:
Real-time terminal monitoring tool for Claude AI token usage
63 lines • 2.28 kB
JavaScript
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