TypeScript: parse a duration
/** Parses "1h30m", "45s", or "2h" into milliseconds. Throws on anything else. */
export function parseDuration(input: string): number {
const trimmed = input.trim();
const match = /^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$/.exec(trimmed);
if (trimmed === "" || match === null) {
throw new RangeError(`Invalid duration: ${JSON.stringify(input)}`);
}
const [, hours = "0", minutes = "0", seconds = "0"] = match;
return ((Number(hours) * 60 + Number(minutes)) * 60 + Number(seconds)) * 1000;
}


