// Vendored from get-east-asian-width@1.3.0
import { getCategory, isAmbiguous, isFullWidth, isWide } from './lookup.js';

function validate(codePoint) {
  if (!Number.isSafeInteger(codePoint)) {
    throw new TypeError(`Expected a code point, got \`${typeof codePoint}\`.`);
  }
}

export function eastAsianWidthType(codePoint) {
  validate(codePoint);

  return getCategory(codePoint);
}

export function eastAsianWidth(codePoint, { ambiguousAsWide = false } = {}) {
  validate(codePoint);

  if (isFullWidth(codePoint) || isWide(codePoint) || (ambiguousAsWide && isAmbiguous(codePoint))) {
    return 2;
  }

  return 1;
}

// For Prettier. This doesn't count "ambiguous" characters or check for valid input.
// https://github.com/sindresorhus/get-east-asian-width/pull/6
export const _isNarrowWidth = (codePoint) => !(isFullWidth(codePoint) || isWide(codePoint));
