// @ts-ignore
import translations from "./translations/index.mjs";

export function arrayDiff(
  a: string[],
  b: string[],
): { missing: string[]; extra: string[]; common: string[] } {
  return {
    common: a.filter((x) => b.includes(x)),
    missing: a.filter((x) => !b.includes(x)),
    extra: b.filter((x) => !a.includes(x)),
  };
}

export function getTranslationKeys(translation_id: string): string[] {
  return [
    ...new Map(Object.entries(translations[translation_id] as Record<string, unknown>)).keys(),
  ];
}

export function getTranslationCompletePercentage(translation_id: string): string {
  const en_keys = getTranslationKeys("en");
  const translation_keys = getTranslationKeys(translation_id);
  const diff_between = arrayDiff(en_keys, translation_keys);

  const percent_num = Math.round(
    ((en_keys.length - diff_between.missing.length) / en_keys.length) * 100,
  );

  return `${percent_num}%`;
}