const COMPLEMENTS = {
  G: "C",
  C: "G",
  T: "A",
  A: "U",
} as const;

type NUCLEOTIDE = keyof typeof COMPLEMENTS;

const nucleotides = Object.keys(COMPLEMENTS);

const isNucleotide = (nucleotide: string): nucleotide is NUCLEOTIDE =>
  nucleotides.includes(nucleotide);

export const toRna = (dnaStrand: string): string =>
  dnaStrand
    .split("")
    .map((nucleotide) => {
      if (!isNucleotide(nucleotide)) {
        throw new Error("Invalid input DNA.");
      }
      return COMPLEMENTS[nucleotide];
    })
    .join("");
