Máscara para CNPJ

Boa tarde!

Estou desenvolvendo um chatbot, mas preciso que quando o usuário insira o CNPJ desformatado, ele seja enviado no formato padrão do cnpj.
O problema é que não faço ideia de como e onde inserir isso no código.
Se puderem me dar uma ajuda, ficarei muito grato.
Segue abaixo meu código na parte do CNPJ
Lembrando que: Esse código é uma API. A ideia é essa api, no momento de mandar o cnpj, ser ativada para mascarar o mesmo.

const validatecnpj = cnpj => {

console.log(“v1.0.0”)

cnpj = cnpj.replace(/[^\d]+/g, ‘’);

if (cnpj == ‘’) return false;

if (cnpj.length != 14)

  return false;

if (cnpj == “00000000000000” ||

  cnpj == "11111111111111" ||

  cnpj == "22222222222222" ||

  cnpj == "33333333333333" ||

  cnpj == "44444444444444" ||

  cnpj == "55555555555555" ||

  cnpj == "66666666666666" ||

  cnpj == "77777777777777" ||

  cnpj == "88888888888888" ||

  cnpj == "99999999999999")

  return false;

let tamanho = cnpj.length - 2

let numeros = cnpj.substring(0, tamanho);

let digitos = cnpj.substring(tamanho);

let soma = 0;

let pos = tamanho - 7;

for (let i = tamanho; i >= 1; i–) {

  soma += numeros.charAt(tamanho - i) * pos--;

  if (pos < 2)

      pos = 9;

}

let resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;

if (resultado != digitos.charAt(0)) return false;

tamanho = tamanho + 1;

numeros = cnpj.substring(0, tamanho);

soma = 0;

pos = tamanho - 7;

for (let i = tamanho; i >= 1; i–) {

  soma += numeros.charAt(tamanho - i) * pos--;

  if (pos < 2)

      pos = 9;

}

resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;

if (resultado != digitos.charAt(1))

  return false;

return true;

}

async function check_valid(params) {

return new Promise( async (resolve, reject) => {

try {

  let res = false

  switch (params.type) {

    case 'cnpj':

      res = validatecnpj(params.value)

    break;

  

    default:

      res = {

        status: 500,

        results: 'Api Error'

      }

    break;

  }

  console.log(res)

  resolve({status:200, result: res})

} catch (error) {

  console.log(error);

  let res = {

    status: 500,

    results: 'Api Error'

  }

  resolve(res)

}

})

};

exports.check_valid = check_valid;

/* Olá amigo, tive problemas para solucionar esse mesmo problema em meu projeto em java, para resolver esse problema da máscara do CNPJ eu criei o seguinte método:
*/
public class Cnpj {

private String Format(String Cnpj, boolean Mascara){
    if(Mascara){
        return(Cnpj.substring(0, 2) + "." + Cnpj.substring(2, 5) + "." +
        Cnpj.substring(5, 8) + "/" + Cnpj.substring(8, 12) + "-" +
        Cnpj.substring(12, 14));
    }else{
        Cnpj = Cnpj.replace(".","");
        Cnpj = Cnpj.replace("-","");
        Cnpj = Cnpj.replace("/","");
        return Cnpj;
    }
}

Em meu método main eu instanciei a class “Cnpj” e chamei meu método “Format(String Cnpj,boolean Mascara)” que passa como parâmetro o CNPJ e uma variável tipo boolean. Se você quiser o CNPJ formatado (00.000.000/0000-00) passe o valor true , se não (00000000000000) passe o valor false, com isso, ele adiciona ou tira os caracteres especiais da minha variavel “String Cnpj” e retorna o resultador;

espero que a lógica do projeto ajude.