// Copyright 2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only

export function parseIntOrThrow(value: unknown, message: string): number {
  let result: number;

  switch (typeof value) {
    case 'number':
      result = value;
      break;
    case 'string':
      result = parseInt(value, 10);
      break;
    default:
      result = NaN;
      break;
  }

  if (!Number.isInteger(result)) {
    throw new Error(message);
  }

  return result;
}