@bluelovers/axios-extend
Version:
extend axios with a set of plugins
66 lines • 2.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.wrapAdapter = exports.mixinCacheConfig = exports.mixinDefaultConfig = exports.setupCacheConfig = exports.extendAxios = void 0;
const tslib_1 = require("tslib");
const lodash_1 = require("lodash");
const bluebird_1 = (0, tslib_1.__importDefault)(require("bluebird"));
const retry_axios_1 = require("retry-axios");
const axios_cookiejar_support_1 = (0, tslib_1.__importDefault)(require("axios-cookiejar-support"));
const cache_1 = (0, tslib_1.__importStar)(require("./cache"));
exports.setupCacheConfig = cache_1.default;
Object.defineProperty(exports, "mixinCacheConfig", { enumerable: true, get: function () { return cache_1.mixinCacheConfig; } });
const config_1 = require("./config");
Object.defineProperty(exports, "mixinDefaultConfig", { enumerable: true, get: function () { return config_1.mixinDefaultConfig; } });
const axios_util_1 = require("@bluelovers/axios-util");
(0, tslib_1.__exportStar)(require("./types"), exports);
// @ts-ignore
const unset_value_1 = (0, tslib_1.__importDefault)(require("unset-value"));
function extendAxios(axios, defaultOptions) {
axios = (0, axios_cookiejar_support_1.default)(axios);
(0, retry_axios_1.attach)(axios);
if ((0, axios_util_1.isAxiosStatic)(axios)) {
let old = axios.create;
axios.create = function (config, ...argv) {
if (config == null) {
config = (0, lodash_1.cloneDeep)(this.defaults);
}
(0, unset_value_1.default)(config, 'raxConfig.currentRetryAttempt');
let o = old.call(this, config, ...argv);
(0, lodash_1.merge)(o.defaults, {
raxConfig: {
instance: o,
}
});
(0, retry_axios_1.attach)(o);
return o;
};
}
return {
axios,
/**
* only use this method once for each axios, if not will create new cache
*/
setupCacheConfig: cache_1.default,
mixinCacheConfig: cache_1.mixinCacheConfig,
mixinDefaultConfig(config, _axios = axios, ...opts) {
return (0, config_1.mixinDefaultConfig)(config, _axios, defaultOptions, ...opts);
},
};
}
exports.extendAxios = extendAxios;
function wrapAdapter(fn, config) {
const old = config.adapter;
if (old) {
return function (config) {
return bluebird_1.default.resolve(old.call(this, config))
.bind(this)
.then((returnValue) => {
return fn.call(this, config, returnValue);
});
};
}
return bluebird_1.default.method(fn);
}
exports.wrapAdapter = wrapAdapter;
exports.default = extendAxios;
//# sourceMappingURL=index.js.map