type Unit = "ms" | "s" | "m" | "h" | "d"; export type Duration = `${number} ${Unit}` | `${number}${Unit}`; /** * Convert a human readable duration to milliseconds */ export function ms(d: Duration): number { const match = d.match(/^(\d+)\s?(ms|s|m|h|d)$/); if (!match) { throw new Error(`Unable to parse window size: ${d}`); } const time = parseInt(match[1]); const unit = match[2] as Unit; switch (unit) { case "ms": return time; case "s": return time * 1000; case "m": return time * 1000 * 60; case "h": return time * 1000 * 60 * 60; case "d": return time * 1000 * 60 * 60 * 24; default: throw new Error(`Unable to parse window size: ${d}`); } }