axios-master
TypeScript icon, indicating that this package has built-in type declarations

2.0.4 โ€ข Public โ€ข Published

Axios Master

A powerful and flexible Axios wrapper that adds advanced features like:

  • โœ… Retry on specific HTTP status codes
  • ๐Ÿ” Automatic token refresh using a custom function
  • ๐Ÿชต Rich logging with response metadata
  • โฑ Custom timeout
  • ๐ŸŒ HTTPS Agent support

๐Ÿ“ฆ Installation

npm install axios-master

โœจ Features

  • Easy-to-use Axios wrapper
  • Retry mechanism with token refresh
  • Customizable logger with timing, request, and response info
  • Optional verbose logging
  • Automatically handles 401 or any status you define

๐Ÿš€ Basic Example

import axiosMaster from "axios-master";

async function fetchStatus(body: any) {
  try {
    const result = await axiosMaster(
      {
        method: "GET",
        url: `${config.host}/payment/status?value=${body.value}`,
        headers: {
          Accept: "application/json",
          "Content-Type": "application/json",
          Authorization: `Bearer ${config.token}`,
        },
      },
      {
        name: "Payment Status",
        timeout: 20000,
        shouldRetry: true,
        shouldRetryStatus: [401],
        retryFunction: getNewToken,
        logger: (log) => {
          console.log("API LOG:", log);
        },
      },
    );

    console.log("Result:", result);
  } catch (error) {
    console.error("Request Failed:", error);
  }
}

๐Ÿ”„ Retry with Token Refresh (using axios-master itself)

import axiosMaster from "axios-master";

const getNewToken = async (): Promise<string> => {
  try {
    const tokenRes = await axiosMaster(
      {
        method: "POST",
        url: "https://api.example.com/auth/token",
        headers: {
          "Content-Type": "application/json",
        },
        data: {
          username: "your_username",
          password: "your_password",
        },
      },
      {
        name: "Get New Token",
        timeout: 10000,
        logger: (log) => {
          console.log("Token Fetch Log:", log);
        },
      },
    );

    config.token = tokenRes.accessToken;
    return config.token;
  } catch (error) {
    console.error("Token fetch failed:", error);
    return "";
  }
};

๐Ÿงช Function Signature

axiosMasterMain(
  default_config: AxiosRequestConfig,
  masterConfig: MasterConfig
): Promise<any>

โš™๏ธ MasterConfig Options

Option Type Description
name string Name to display in logs
log boolean If true, logs raw Axios request/response
timeout number Request timeout in milliseconds
logger (log: LogData) => void Custom logger callback
shouldRetry boolean Whether to retry the request on failure
shouldRetryStatus number[] HTTP status codes to retry (e.g. [401, 500])
retryFunction () => Promise<string> Token refresh function to call before retrying

๐Ÿ“Š Logger Payload Structure

{
  log_levels: "INFO" | "DEBUG" | "WARN" | "ERROR" | "CRITICAL" | "TRACE",
  message: string,
  json: {
    time: number, // in seconds
    request: AxiosRequestConfig,
    response: any,
    responseBody: any,
    statusCode: number
  }
}

๐ŸŒ Advanced Options

  • Automatically retries failed requests if status code matches
  • Supports retry only once (for safety)
  • Useful for microservices, SDKs, or secure API clients

๐Ÿ“ƒ License

MIT License ยฉ Buyantogtokh

Package Sidebar

Install

npm i axios-master

Weekly Downloads

258

Version

2.0.4

License

ISC

Unpacked Size

16.7 kB

Total Files

4

Last publish

Collaborators

  • togtokh.dev