browser-debugger-cli
Version:
DevTools telemetry in your terminal. For humans and agents. Direct WebSocket to Chrome's debugging port.
51 lines • 1.83 kB
JavaScript
/**
* Business logic for building session status data.
*
* Extracts status calculation logic from formatters to maintain separation of concerns.
* Formatters should only handle presentation, not business logic.
*/
/**
* Calculate session duration from start time
*
* @param startTime - Session start timestamp in milliseconds
* @param now - Current timestamp (defaults to Date.now())
* @returns Duration breakdown with formatted string
*
* @example
* ```typescript
* const duration = calculateDuration(Date.now() - 323000);
* // { durationMs: 323000, durationSec: 323, minutes: 5, seconds: 23, formatted: "5m 23s" }
* ```
*/
export function calculateDuration(startTime, now = Date.now()) {
const durationMs = now - startTime;
const durationSec = Math.floor(durationMs / 1000);
const minutes = Math.floor(durationSec / 60);
const seconds = durationSec % 60;
const formatted = minutes > 0 ? `${minutes}m ${seconds}s` : `${seconds}s`;
return { durationMs, durationSec, minutes, seconds, formatted };
}
/**
* Format "time ago" string from timestamp
*
* @param timestamp - Timestamp in milliseconds
* @param now - Current timestamp (defaults to Date.now())
* @returns Human-readable time ago string (e.g., "5m ago", "2h ago")
*
* @example
* ```typescript
* formatTimeAgo(Date.now() - 75000); // "1m ago"
* formatTimeAgo(Date.now() - 7200000); // "2h ago"
* ```
*/
export function formatTimeAgo(timestamp, now = Date.now()) {
const secondsAgo = Math.floor((now - timestamp) / 1000);
if (secondsAgo < 60)
return `${secondsAgo}s ago`;
const minutesAgo = Math.floor(secondsAgo / 60);
if (minutesAgo < 60)
return `${minutesAgo}m ago`;
const hoursAgo = Math.floor(minutesAgo / 60);
return `${hoursAgo}h ago`;
}
//# sourceMappingURL=statusData.js.map