fecchi
v0.0.1
Published
A lightweight wrapper around fetch with enhanced features for easier HTTP requests.
Maintainers
Readme
Fecchi
“Fetch smarter. Control your timing.”
Fecchi is a TypeScript-friendly fetch wrapper for Node.js and Next.js that provides timeout, optional delay, type-safe headers, and Next.js-specific cache/revalidate options. Perfect for paginated requests, throttled APIs, or reliable data fetching in production environments.
Features
- ⏱ Timeout: Automatically abort slow requests
- 💤 Delay: Pause between requests to avoid overwhelming servers
- 🔒 Type-safe headers with autocomplete support
- ⚡ Next.js integration with
revalidate,tags, andcacheoptions - 💡 Minimal and flexible wrapper around native
fetch
Installation
npm install fecchi
# or
yarn add fecchi
# or
pnpm add fecchiBasic Usage
import { fecchi } from 'fecchi';
// Simple GET request with 5s timeout
const res = await fecchi('https://api.example.com/data', {
timeout: 5000,
headers: { 'Accept-Language': 'en' },
});
const data = await res.json();
// GET request with 200ms delay (useful for multiple sequential requests)
const page1 = await fecchi('https://api.example.com/data', {
delay: 200,
headers: { 'X-Page': '1' },
});Advanced Usage
Pagination Loop with Timeout and Delay
const allQuotes: Quote[] = [];
let page = 1;
while (true) {
const res = await fecchi('https://quotely.api/quotes', {
headers: { 'X-Page': String(page) },
timeout: 5000,
delay: 200,
next: { revalidate: 60 },
});
if (!res.ok) break;
const { quotes } = await res.json();
if (!quotes.length) break;
allQuotes.push(...quotes);
page++;
}Next.js Integration
const res = await fecchi('/api/data', {
next: { revalidate: 60, cache: 'force-cache', tags: ['quotes'] },
});Custom Headers
const res = await fecchi('https://api.example.com/data', {
headers: {
'X-Page': '1',
'Accept-Language': 'en',
Authorization: 'Bearer token',
},
});API Reference
fecchi(input, init?)
| Option | Type | Description | | |
| --------------------------- | ------------------ | -------------------------------------------------------------- | -------------------------------- | ------------------------------- |
| timeout | number | Max time in ms to wait for request; aborts if exceeded | | |
| delay | number | Time in ms to pause before starting the request | | |
| method | `'GET' | 'POST' | ...` | HTTP method; default is 'GET' |
| headers | `HeadersInit | KnownHeaders` | Request headers with type safety | |
| next | NextFetchOptions | Next.js-specific fetch options (revalidate, tags, cache) | | |
| other RequestInit options | any | Standard fetch options like body, mode, etc. | | |
KnownHeaders
Type-safe headers for autocomplete and correct casing:
Accept,Authorization,Content-Type,X-Page,Accept-Language, etc.
NextFetchOptions
revalidate: seconds to revalidate cachetags: array of cache tagscache:'force-cache' | 'no-store' | 'default'
License
MIT License – see LICENSE for details.
Author: Estarlin R (estarlincito.com)
