@zayne-labs/callapi-plugins
v4.0.43
Published
A collection of plugins for callapi
Readme
CallApi Plugins
A collection of official plugins for CallApi that extend its functionality with common patterns and utilities.
Installation
# npm
npm install @zayne-labs/callapi-plugins
# pnpm
pnpm add @zayne-labs/callapi-pluginsNote: This package requires @zayne-labs/callapi as a peer dependency.
Available Plugins
Logger Plugin
Comprehensive HTTP request/response logging with beautiful console output, built on top of consola.
Features:
- Logs all HTTP requests and responses
- Tracks errors and retries
- Color-coded console output
- Customizable logging options
- Granular control over what gets logged
import { createFetchClient } from "@zayne-labs/callapi";
import { loggerPlugin } from "@zayne-labs/callapi-plugins";
const api = createFetchClient({
baseURL: "https://api.example.com",
plugins: [
loggerPlugin({
enabled: process.env.NODE_ENV === "development",
mode: "verbose", // or "basic"
}),
],
});Configuration Options:
enabled- Toggle logging on/off (boolean or granular object)mode- "basic" or "verbose" loggingconsoleObject- Custom console implementation
Granular Control:
loggerPlugin({
enabled: {
onRequest: true,
onSuccess: true,
onError: true, // Fallback for all error types
onValidationError: false, // Disable specific error types
},
});Usage
Import and use plugins with your CallApi instance:
import { createFetchClient } from "@zayne-labs/callapi";
import { loggerPlugin } from "@zayne-labs/callapi-plugins";
// Base configuration
const api = createFetchClient({
baseURL: "https://api.example.com",
plugins: [
loggerPlugin({
enabled: process.env.NODE_ENV === "development",
}),
],
});
// Per-request plugins
const { data } = await api("/users", {
plugins: [loggerPlugin({ mode: "verbose" })],
});Plugin Development
Want to create your own plugin? Check out the plugin development guide in the main CallApi documentation.
Basic plugin structure:
import { definePlugin } from "@zayne-labs/callapi";
const myPlugin = definePlugin({
id: "my-plugin",
name: "My Plugin",
version: "1.0.0",
setup: ({ request, options }) => {
// Modify request/options before sending
return { request, options };
},
hooks: {
onRequest: (ctx) => {
// Handle request lifecycle events
},
onSuccess: (ctx) => {
// Handle successful responses
},
},
});Documentation
For detailed documentation and examples, visit:
Contributing
Contributions are welcome! Please read our contributing guidelines and submit pull requests to the main repository.
License
MIT © Ryan Zayne
