@neykoor/node-fetch
v1.0.0
Published
Fork minimalista de node-fetch en TypeScript, con solo la superficie usada por Eris-MD
Readme
@neykoor/node-fetch
Fork minimalista de node-fetch, reescrito en TypeScript usando solo módulos nativos de Node (http, https, zlib), sin dependencias externas.
Cubre exactamente lo que usa los bots dm:
fetch(url, init)conGETyPOSTbodycomostring,Buffer,URLSearchParams, stream (form-data)- Seguimiento de redirects (301/302/303/307/308)
- Descompresión automática
gzip/deflate/br response.ok,.status,.statusText,.headers,.urlresponse.text(),.json(),.arrayBuffer(),.buffer(),.blob()response.assertContentType(mime)— lanzaFetchErrorsi el content-type no coincide (útil para detectar cuando ezgif devuelve HTML de error en vez del archivo)response.headerscomo claseFetchHeaders(.get(),.has(),.forEach(), iterable)- Timeout por defecto de 30s (configurable con
timeout,0lo desactiva) - Límite de tamaño de respuesta (
maxContentLength, default 50MB) — corta la descarga si el headercontent-lengtho los bytes recibidos lo superan - Cancelación externa vía
AbortSignal(signal) - Reintentos con backoff exponencial (
retries,retryDelay) — solo ante errores de red/timeout, nunca ante 4xx/5xx
Build
npm install
npm run buildGenera dist/index.js y dist/index.d.ts.
Uso
import fetch from '@neykoor/node-fetch';
const res = await fetch('https://ejemplo.com');
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const buf = Buffer.from(await res.arrayBuffer());Instalación en el bot
En package.json del bot:
"@neykoor/node-fetch": "file:../neykoor-node-fetch"o publicando el paquete y referenciando la versión publicada. Luego reemplazar:
import fetch from 'node-fetch';por:
import fetch from '@neykoor/node-fetch';en sticker.js, socket-setbanner.js, utils-toimg.js, downloads-pinterest.js y downloads-ytsearch.js.
