Skip to content

Instantly share code, notes, and snippets.

@wess
Created May 14, 2020 18:11
Show Gist options
  • Save wess/dfdde2e86d5cb0051894afb774f605ad to your computer and use it in GitHub Desktop.
Save wess/dfdde2e86d5cb0051894afb774f605ad to your computer and use it in GitHub Desktop.
;(function(exports) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _defaults = _interopRequireDefault(require("axios/lib/defaults"));
var _dispatchRequest = _interopRequireDefault(require("axios/lib/core/dispatchRequest"));
var _isAbsoluteURL = _interopRequireDefault(require("axios/lib/helpers/isAbsoluteURL"));
var _combineURLs = _interopRequireDefault(require("axios/lib/helpers/combineURLs"));
var _request = _interopRequireDefault(require("./interceptors/request"));
var _response = _interopRequireDefault(require("./interceptors/response"));
var _symbol = require("./symbol");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const mergeConfig = (() => {
try {
// For v0.19.x
return require('axios/lib/core/mergeConfig');
} catch (_err) {
return require('axios/lib/utils').merge;
}
})(); // For v0.16.x
/** @param {import('axios').AxiosRequestConfig} config */
const wrappedDispatchRequest = config => {
if (config.baseURL && !(0, _isAbsoluteURL.default)(config.url)) {
config.url = (0, _combineURLs.default)(config.baseURL, config.url);
}
return (0, _dispatchRequest.default)(config);
};
/** @param {import('axios').AxiosInstance} instance */
function overwriteRequestFunction(instance) {
instance.request = function request(...args) {
const config = {};
if (typeof args[0] === 'string') {
Object.assign(config, args[1], {
url: args[0]
});
} else {
Object.assign(config, args[0]);
}
const mergedConfig = mergeConfig(_defaults.default, mergeConfig(this.defaults, config));
mergedConfig.jar = config.jar != null ? config.jar : this.defaults.jar;
mergedConfig.method = (mergedConfig.method || 'get').toLowerCase();
mergedConfig[_symbol.COOKIEJAR_SUPPORT_LOCAL] = config[_symbol.COOKIEJAR_SUPPORT_LOCAL];
const chain = [[wrappedDispatchRequest, undefined]];
this.interceptors.request.forEach(interceptor => {
chain.unshift([interceptor.fulfilled, interceptor.rejected]);
});
this.interceptors.response.forEach(interceptor => {
chain.push([interceptor.fulfilled, interceptor.rejected]);
});
return chain.reduce((promise, [fullfilled, rejected]) => promise.then(fullfilled, rejected), Promise.resolve(mergedConfig));
};
['delete', 'get', 'head', 'options'].forEach(method => {
instance[method] = function (url, config = {}) {
return this.request(Object.assign(config, {
method,
url
}));
};
});
['post', 'put', 'patch'].forEach(method => {
instance[method] = function (url, data, config = {}) {
return this.request(Object.assign(config, {
method,
url,
data
}));
};
});
}
function axiosCookieJarSupport(instance) {
// Wrap instance when creating new instance.
if (instance.create) {
const createInstance = instance.create.bind(instance);
instance.create = function create(defaultConfig = {}) {
const newInstance = createInstance(defaultConfig);
Object.defineProperty(newInstance.defaults, 'jar', {
configurable: false,
enumerable: false,
writable: true,
value: defaultConfig.jar != null ? defaultConfig.jar : instance.defaults.jar
});
return axiosCookieJarSupport(newInstance);
};
} // Skip if already wrapped
if (instance[_symbol.COOKIEJAR_SUPPORTED]) {
return instance;
}
Object.defineProperty(instance, _symbol.COOKIEJAR_SUPPORTED, {
configurable: false,
enumerable: false,
writable: false,
value: true
}); // Prevent utils.merge for defaults.jar
Object.defineProperty(instance.defaults, 'jar', {
configurable: false,
enumerable: false,
writable: true,
value: instance.defaults.jar
}); // Overwirte request function
overwriteRequestFunction(instance); // Add interceptors
instance.interceptors.request.use(res => (0, _request.default)(res, instance));
instance.interceptors.response.use(res => (0, _response.default)(res, instance));
return instance;
}
var _default = axiosCookieJarSupport;
exports.default = _default;
})(window);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment