Obtenção paralela de dados com tratamento de erros e timeouts

TypeScript Hard async

Tarefa «Obtenção paralela de dados com tratamento de erros e timeouts»

Implemente uma função assíncrona `fetchWithTimeout` que recebe um array de URLs (strings) e um timeout em milissegundos. A função deve enviar requisições HTTP paralelamente para todas as URLs, usando `fetch`. Se uma requisição demorar mais que o timeout especificado, ela deve ser cancelada (via `AbortController`). A função retorna um array de resultados na mesma ordem das URLs de entrada. Para cada URL, o resultado é uma string: a resposta bem-sucedida (texto da resposta) ou uma mensagem de erro no formato "Error: <tipo de erro>", onde <tipo de erro> é "Timeout" se o timeout expirou, ou "Network" se ocorreu um erro de rede. É garantido que as URLs são válidas, mas o servidor pode não responder ou responder lentamente. Use `Promise.allSettled` para processar todos os resultados.

Formato de Entrada

A primeira linha é o número N (quantidade de URLs). Em seguida, N linhas, cada uma contendo uma URL. A última linha é o número T (timeout em ms).

Formato de Saída

N linhas, cada uma contendo o resultado da requisição (texto da resposta ou mensagem de erro).

main.ts