summaryrefslogtreecommitdiff
path: root/packages/gateway/src/commands/parseCommandDuration.ts
blob: 946e3cb4191a6e1fe50cd5c46331e328699489ce (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
export const parseCommandDurationToMilliseconds = (
  duration: string,
): number | null => {
  const durationMatch = duration.match(/^(\d+)([smhd])$/);

  if (!durationMatch) return null;

  const durationValue = Number.parseInt(durationMatch[1], 10);
  const durationUnit = durationMatch[2];

  if (durationValue < 1) return null;

  switch (durationUnit) {
    case "s":
      return durationValue * 1000;
    case "m":
      return durationValue * 60 * 1000;
    case "h":
      return durationValue * 60 * 60 * 1000;
    case "d":
      return durationValue * 24 * 60 * 60 * 1000;
    default:
      return null;
  }
};