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

/**
 * Returns `true` if the input looks like a valid E164, and `false` otherwise. Note that
 * this may return false positives, as it is a fairly naïve check.
 *
 * See <https://www.twilio.com/docs/glossary/what-e164#regex-matching-for-e164> and
 * <https://stackoverflow.com/a/23299989>.
 */
export function isValidE164(
  value: unknown,
  mustStartWithPlus: boolean
): value is string {
  if (typeof value !== 'string') {
    return false;
  }

  const regex = mustStartWithPlus ? /^\+[1-9]\d{1,14}$/ : /^\+?[1-9]\d{1,14}$/;

  return regex.test(value);
}