Na aula 5, atividade 5, copiei exatamente como estava no video, mas quando fui rodar o arquivo cli.js aparece essa mensagem dizendo "arrayURLs.map is not a function"
o index.js esta assim:
import chalk from 'chalk';
import * as fs from "fs";
function extraiLinks(texto) {
const regex = /\[([^\]]*)\]\((https?:\/\/[^$#\s].[^\s]*)\)/gm;
const arrayResultados = [];
let temp;
while ((temp = regex.exec(texto)) !== null) {
arrayResultados.push({ [temp[1]]: temp[2] })
}
return arrayResultados.length === 0 ? 'Nao ha links' : arrayResultados;
}
function trataErro(erro) {
throw new Error(chalk.red(erro.code, 'nao ha arquivo no caminho'));
}
//async await
async function pegaArquivo(caminhoDoArquivo) {
const encoding = 'utf-8';
try {
const texto = await fs.promises.readFile(caminhoDoArquivo, encoding)
return extraiLinks(texto);
} catch (erro) {
trataErro(erro);
}
}
export default pegaArquivo;
o cli.js esta assim:
import chalk from "chalk";
import pegaArquivo from "./index.js";
import validaURLs from "./http-validacao.js";
const caminho = process.argv;
async function processaTexto(caminhoDeArquivo) {
const resultado = await pegaArquivo(caminhoDeArquivo[2]);
if (caminho[3] === 'validar') {
console.log(chalk.yellow('links validados'), await validaURLs(resultado));
}else {
console.log(chalk.yellow('lista de links'), resultado);
}
}
processaTexto(caminho);
e por fim o http-validacao.js esta assim:
import fetch from "node-fetch";
async function checaStatus(arrayURLs) {
const arrayStatus = await Promise.all(arrayURLs.map(async url => {
const res = await fetch(url)
return res.status;
}))
return arrayStatus;
}
function geraArrayDeURLs(arrayLinks) {
return arrayLinks.map(objetoLink => Object.values(objetoLink)).join();
}
async function validaURLs(arrayLinks) {
const links = geraArrayDeURLs(arrayLinks);
const statusLinks = await checaStatus(links);
return statusLinks;
}
export default validaURLs;