Axios wrapper for advanced response time logging, retries, and token refresh.
npm install axios-masterA 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
---
``bash`
npm install axios-master
---
- 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
---
`ts
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},Bearer ${config.token}
headers: {
Accept: "application/json",
"Content-Type": "application/json",
Authorization: ,
},
},
{
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);
}
}
`
---
`ts
import axiosMaster from "axios-master";
const getNewToken = async (): Promise
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 "";
}
};
`
---
`ts`
axiosMasterMain(
default_config: AxiosRequestConfig,
masterConfig: MasterConfig
): Promise
---
| 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 | Token refresh function to call before retrying |
---
`ts``
{
log_levels: "INFO" | "DEBUG" | "WARN" | "ERROR" | "CRITICAL" | "TRACE",
message: string,
json: {
time: number, // in seconds
request: AxiosRequestConfig,
response: any,
responseBody: any,
statusCode: number
}
}
---
- Automatically retries failed requests if status code matches
- Supports retry only once (for safety)
- Useful for microservices, SDKs, or secure API clients
---
MIT License ยฉ Buyantogtokh