feat(boulder-state): add formatDurationHuman utility
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
import { describe, expect, it } from "bun:test"
|
||||
import { formatDurationHuman } from "./format-duration"
|
||||
|
||||
describe("formatDurationHuman", () => {
|
||||
it("returns 0s for 0ms", () => {
|
||||
expect(formatDurationHuman(0)).toBe("0s")
|
||||
})
|
||||
|
||||
it("returns 0s for 999ms", () => {
|
||||
expect(formatDurationHuman(999)).toBe("0s")
|
||||
})
|
||||
|
||||
it("returns 1s for 1000ms", () => {
|
||||
expect(formatDurationHuman(1000)).toBe("1s")
|
||||
})
|
||||
|
||||
it("returns 1m 0s for 60_000ms", () => {
|
||||
expect(formatDurationHuman(60_000)).toBe("1m 0s")
|
||||
})
|
||||
|
||||
it("returns 1h 0m 0s for 3_600_000ms", () => {
|
||||
expect(formatDurationHuman(3_600_000)).toBe("1h 0m 0s")
|
||||
})
|
||||
|
||||
it("returns 1h 2m 3s for 3_723_456ms", () => {
|
||||
expect(formatDurationHuman(3_723_456)).toBe("1h 2m 3s")
|
||||
})
|
||||
|
||||
it("returns 24h 0m 0s for 86_400_000ms", () => {
|
||||
expect(formatDurationHuman(86_400_000)).toBe("24h 0m 0s")
|
||||
})
|
||||
})
|
||||
@@ -0,0 +1,16 @@
|
||||
export function formatDurationHuman(milliseconds: number): string {
|
||||
const totalSeconds = Math.max(0, Math.floor(milliseconds / 1000))
|
||||
const hours = Math.floor(totalSeconds / 3600)
|
||||
const minutes = Math.floor((totalSeconds % 3600) / 60)
|
||||
const seconds = totalSeconds % 60
|
||||
|
||||
if (hours > 0) {
|
||||
return `${hours}h ${minutes}m ${seconds}s`
|
||||
}
|
||||
|
||||
if (minutes > 0) {
|
||||
return `${minutes}m ${seconds}s`
|
||||
}
|
||||
|
||||
return `${seconds}s`
|
||||
}
|
||||
@@ -2,3 +2,4 @@ export * from "./types"
|
||||
export * from "./constants"
|
||||
export * from "./storage"
|
||||
export * from "./top-level-task"
|
||||
export * from "./format-duration"
|
||||
|
||||
Reference in New Issue
Block a user