feat: update deno-commons-mod.ts

This commit is contained in:
2025-01-19 12:26:53 +08:00
parent 8f870c7797
commit f2a008c685

View File

@@ -1,7 +1,7 @@
// Reference:
// - https://docs.deno.com/runtime/fundamentals/testing/
import {assertEquals} from "jsr:@std/assert";
import { assertEquals } from "jsr:@std/assert";
export function compareVersion(ver1: string, ver2: string): 0 | 1 | -1 {
if (ver1 === ver2) return 0;
@@ -35,6 +35,33 @@ export function isEnvOn(envKey: string): boolean {
return isOn(Deno.env.get(envKey));
}
export function formatHumanTime(timeMillis: number): string {
const times = [];
if (timeMillis < 1000) {
return `${timeMillis}ms`;
}
const timeSecs = Math.floor(timeMillis / 1000);
const timeSecsLow = timeSecs % 60;
if (timeSecsLow > 0) {
times.push(`${timeSecsLow}s`);
}
const timeMinutes = Math.floor(timeSecs / 60);
const timeMinutesLow = timeMinutes % 60;
if (timeMinutesLow > 0) {
times.push(`${timeMinutesLow}m`);
}
const timeHours = Math.floor(timeMinutes / 60);
const timeHoursLow = timeHours % 24;
if (timeHoursLow > 0) {
times.push(`${timeHoursLow}h`);
}
const timeDays = Math.floor(timeHours / 24);
if (timeDays > 0) {
times.push(`${timeDays}d`);
}
return times.reverse().join(" ");
}
Deno.test("isOn", () => {
assertEquals(false, isOn(undefined));
assertEquals(false, isOn(""));
@@ -46,3 +73,15 @@ Deno.test("isOn", () => {
assertEquals(true, isOn("ON"));
assertEquals(true, isOn("1"));
});
Deno.test("formatHumanTime", () => {
assertEquals("0ms", formatHumanTime(0));
assertEquals("1ms", formatHumanTime(1));
assertEquals("1s", formatHumanTime(1000));
assertEquals("1s", formatHumanTime(1001));
assertEquals("1m", formatHumanTime(60001));
assertEquals("1m 1s", formatHumanTime(61001));
assertEquals("1h", formatHumanTime(3600000));
assertEquals("1h 1s", formatHumanTime(3601000));
assertEquals("1h 1m 1s", formatHumanTime(3661000));
});