UNPKG

@condor-labs/axios

Version:

This module provide and useful helper to use the official Axios library.

73 lines (61 loc) 1.99 kB
const axios = require("axios"); const http = require("http"); const https = require("https"); const { request: requestStacktrace, response: responseStacktrace, } = require("./plugins/stacktrace"); const DEFAULT_SOCKETS_TIMEOUT = 4*1000; // 4 secs const { AXIOS_KEEP_ALIVE_DISABLED, AXIOS_KEEP_ALIVE_MSECS, AXIOS_MAX_SOCKETS, AXIOS_MAX_TOTAL_SOCKETS, AXIOS_MAX_FREE_SOCKETS, AXIOS_SOCKETS_SCHEDULING, AXIOS_SOCKETS_TIMEOUT } = process.env; let httpAgent = undefined, httpsAgent = undefined, httpAgentDef = undefined, httpsAgentDef = undefined; if(AXIOS_KEEP_ALIVE_DISABLED != "true"){ let agentSettings = { keepAlive: true, keepAliveMsecs: AXIOS_KEEP_ALIVE_MSECS ? +AXIOS_KEEP_ALIVE_MSECS : undefined, maxSockets: AXIOS_MAX_SOCKETS ? +AXIOS_MAX_SOCKETS : undefined, maxTotalSockets: AXIOS_MAX_TOTAL_SOCKETS ? +AXIOS_MAX_TOTAL_SOCKETS : undefined, maxFreeSockets: AXIOS_MAX_FREE_SOCKETS ? +AXIOS_MAX_FREE_SOCKETS : undefined, scheduling: AXIOS_SOCKETS_SCHEDULING, timeout: AXIOS_SOCKETS_TIMEOUT ? +AXIOS_SOCKETS_TIMEOUT : DEFAULT_SOCKETS_TIMEOUT }; httpAgent = new http.Agent(agentSettings); httpsAgent = new https.Agent(agentSettings); httpAgentDef = new http.Agent(agentSettings); httpsAgentDef = new https.Agent(agentSettings); } const instance = axios.create({ httpAgent, httpsAgent, }); const instanceDefault = axios.create({ httpAgentDef, httpsAgentDef, }); // add interceptor to the request instance.interceptors.request.use(requestStacktrace, undefined, { synchronous: true, }); instanceDefault.interceptors.request.use(requestStacktrace, undefined, { synchronous: true, }); // add interceptor to the response instance.interceptors.response.use(undefined, responseStacktrace, { synchronous: true, }); instanceDefault.interceptors.response.use(undefined, responseStacktrace, { synchronous: true, }); // setup default instance. instance.default = instanceDefault; module.exports = instance;