feat: add models auth commands

This commit is contained in:
Peter Steinberger
2026-01-09 07:51:37 +01:00
parent af1f6fab29
commit eced473e05
5 changed files with 295 additions and 4 deletions

View File

@@ -1,5 +1,5 @@
export type DurationMsParseOptions = {
defaultUnit?: "ms" | "s" | "m" | "h";
defaultUnit?: "ms" | "s" | "m" | "h" | "d";
};
export function parseDurationMs(
@@ -11,7 +11,7 @@ export function parseDurationMs(
.toLowerCase();
if (!trimmed) throw new Error("invalid duration (empty)");
const m = /^(\d+(?:\.\d+)?)(ms|s|m|h)?$/.exec(trimmed);
const m = /^(\d+(?:\.\d+)?)(ms|s|m|h|d)?$/.exec(trimmed);
if (!m) throw new Error(`invalid duration: ${raw}`);
const value = Number(m[1]);
@@ -19,9 +19,22 @@ export function parseDurationMs(
throw new Error(`invalid duration: ${raw}`);
}
const unit = (m[2] ?? opts?.defaultUnit ?? "ms") as "ms" | "s" | "m" | "h";
const unit = (m[2] ?? opts?.defaultUnit ?? "ms") as
| "ms"
| "s"
| "m"
| "h"
| "d";
const multiplier =
unit === "ms" ? 1 : unit === "s" ? 1000 : unit === "m" ? 60_000 : 3_600_000;
unit === "ms"
? 1
: unit === "s"
? 1000
: unit === "m"
? 60_000
: unit === "h"
? 3_600_000
: 86_400_000;
const ms = Math.round(value * multiplier);
if (!Number.isFinite(ms)) throw new Error(`invalid duration: ${raw}`);
return ms;