2
0
mirror of https://github.com/tenrok/axios.git synced 2026-06-05 16:42:32 +03:00

Fixing #385 - Keep defaults local to instance

This commit is contained in:
Martti Laine
2018-03-01 23:53:38 +02:00
parent 604e8dd860
commit 5bfd2ea9f6
5 changed files with 87 additions and 9 deletions
+47 -1
View File
@@ -279,6 +279,51 @@ function extend(a, b, thisArg) {
return a;
}
function mergeConfig(defaults, instanceConfig) {
var config = {};
forEach(['url', 'method', 'params', 'data'], function(prop) {
config[prop] = instanceConfig[prop];
});
forEach(['headers', 'auth', 'proxy'], function(prop) {
if (!isUndefined(instanceConfig[prop])) {
if (!isObject(instanceConfig[prop])) {
config[prop] = instanceConfig[prop];
} else {
config[prop] = merge(
defaults[prop],
instanceConfig[prop]
);
}
} else if (!isUndefined(defaults[prop])) {
config[prop] = JSON.parse(JSON.stringify(defaults[prop]));
}
});
var remainingProperties = [
'baseURL',
'transformRequest',
'transformResponse',
'paramsSerializer',
'timeout',
'withCredentials',
'adapter',
'responseType',
'xsrfCookieName',
'xsrfHeaderName',
'onUploadProgress',
'onDownloadProgress',
'maxContentLength',
'validateStatus',
'maxRedirects',
'httpAgent',
'httpsAgent',
'cancelToken'
];
forEach(remainingProperties, function(prop) {
config[prop] = !isUndefined(instanceConfig[prop]) ? instanceConfig[prop] : defaults[prop];
});
return config;
}
module.exports = {
isArray: isArray,
isArrayBuffer: isArrayBuffer,
@@ -299,5 +344,6 @@ module.exports = {
forEach: forEach,
merge: merge,
extend: extend,
trim: trim
trim: trim,
mergeConfig: mergeConfig
};