🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Sign inDemoInstall
Socket

accio-js

Package Overview
Dependencies
Maintainers
0
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

accio-js

A modern, lightweight HTTP client for Node.js with built-in retry capabilities, timeout handling, and event monitoring.

1.0.1
latest
Source
npm
Version published
Weekly downloads
0
-100%
Maintainers
0
Weekly downloads
 
Created
Source

Accio-JS

A modern, lightweight HTTP client for Node.js with built-in retry capabilities, timeout handling, and event monitoring. Built on top of Node's native fetch (via undici).

Node.js Version TypeScript

Features

  • 🔄 Automatic retries with exponential backoff
  • ⏱️ Request timeout support
  • 🎯 Configurable retry conditions
  • 🎲 Jitter for distributed systems
  • 📊 Event-based monitoring
  • 💪 Full TypeScript support
  • 🪶 Lightweight with minimal dependencies

Quick Start

import { createHttpClient } from 'accio-js';

const client = createHttpClient();

try {
  const response = await client.get('https://api.example.com/data');
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error('Request failed:', error);
}

Configuration

const client = createHttpClient({
  // Default headers for all requests
  headers: {
    'Authorization': 'Bearer token',
  },
  
  // Request timeout in milliseconds
  timeout: 5000,
  
  // Retry configuration
  retry: {
    maxRetries: 3,
    initialDelay: 100,
    maxDelay: 1000,
    jitter: 0.1,
    retryableStatuses: [408, 429, 500, 502, 503, 504],
    shouldRetry: (error, attempt) => true,
  }
});

Configuration Options

OptionTypeDefaultDescription
headersRecord<string, string>{}Default headers for all requests
timeoutnumberundefinedRequest timeout in milliseconds
retry.maxRetriesnumber3Maximum number of retry attempts
retry.initialDelaynumber100Initial delay between retries (ms)
retry.maxDelaynumber1000Maximum delay between retries (ms)
retry.jitternumber0.1Random delay factor (0-1)
retry.retryableStatusesnumber[][408, 429, 500, 502, 503, 504]HTTP status codes that trigger retries

Event Monitoring

Monitor request lifecycle events:

client.on('request:start', (url, init) => {
  console.log(`Starting request to ${url}`);
});

client.on('request:end', (url, response, duration) => {
  console.log(`Request completed in ${duration}ms`);
});

client.on('request:error', (url, error, attempt) => {
  console.error(`Request failed (attempt ${attempt}):`, error);
});

client.on('request:retry', (url, error, attempt) => {
  console.log(`Retrying request (attempt ${attempt})`);
});

API Reference

HTTP Methods

  • client.get(url, init?)
  • client.post(url, init?)
  • client.put(url, init?)
  • client.delete(url, init?)
  • client.patch(url, init?)
  • client.fetch(url, init?) - Direct fetch with full request options

All methods return a Promise<Response> compatible with the Fetch API.

Events

  • request:start - Emitted when a request begins
  • request:end - Emitted when a request successfully completes
  • request:error - Emitted when a request fails
  • request:retry - Emitted before a retry attempt

Keywords

http

FAQs

Package last updated on 25 Feb 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts