A dual-purpose TypeScript library for data fetching that works in both Node.js and browser environments.
- 🌍 Universal - works in Node.js and browsers
- 🔄 Promise-based API
- ⚡ Lightweight and tree-shakeable
- 🔒 TypeScript support out of the box
- ⏱️ Configurable timeouts
- 🚦 Automatic error handling
- 🔌 Customizable base URL and default options
npm install @tonk/integration-template
# or
yarn add @tonk/integration-template
# or
pnpm add @tonk/integration-template
import { FetchClient } from "@tonk/integration-template";
// Create a client instance
const client = new FetchClient({
baseUrl: "https://api.example.com",
timeout: 5000, // 5 seconds
});
// GET request
const { data, error } = await client.get<User>("/users/1");
if (error) {
console.error("Error fetching user:", error);
} else {
console.log("User data:", data);
}
// POST request
const response = await client.post<User>("/users", {
name: "John Doe",
email: "john@example.com",
});
// PUT request
await client.put<User>("/users/1", {
name: "Jane Doe",
});
// DELETE request
await client.delete("/users/1");
The main class for making HTTP requests.
new FetchClient(options?: FetchOptions)
-
baseUrl?: string
- Base URL for all requests -
timeout?: number
- Default timeout in milliseconds - ...all other fetch options
Make a GET request.
Make a POST request.
Make a PUT request.
Make a DELETE request.
Extends the standard RequestInit
interface with additional options:
interface FetchOptions extends RequestInit {
baseUrl?: string;
timeout?: number;
}
The response type for all requests:
interface FetchResponse<T> {
data: T | null;
error: Error | null;
status: number;
headers: Headers;
}
MIT