Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
MR414N-ID
GitHub Repository: MR414N-ID/botku2
Path: blob/master/node_modules/axios/lib/core/mergeConfig.js
1126 views
1
'use strict';
2
3
var utils = require('../utils');
4
5
/**
6
* Config-specific merge-function which creates a new config-object
7
* by merging two configuration objects together.
8
*
9
* @param {Object} config1
10
* @param {Object} config2
11
* @returns {Object} New object resulting from merging config2 to config1
12
*/
13
module.exports = function mergeConfig(config1, config2) {
14
// eslint-disable-next-line no-param-reassign
15
config2 = config2 || {};
16
var config = {};
17
18
function getMergedValue(target, source) {
19
if (utils.isPlainObject(target) && utils.isPlainObject(source)) {
20
return utils.merge(target, source);
21
} else if (utils.isPlainObject(source)) {
22
return utils.merge({}, source);
23
} else if (utils.isArray(source)) {
24
return source.slice();
25
}
26
return source;
27
}
28
29
// eslint-disable-next-line consistent-return
30
function mergeDeepProperties(prop) {
31
if (!utils.isUndefined(config2[prop])) {
32
return getMergedValue(config1[prop], config2[prop]);
33
} else if (!utils.isUndefined(config1[prop])) {
34
return getMergedValue(undefined, config1[prop]);
35
}
36
}
37
38
// eslint-disable-next-line consistent-return
39
function valueFromConfig2(prop) {
40
if (!utils.isUndefined(config2[prop])) {
41
return getMergedValue(undefined, config2[prop]);
42
}
43
}
44
45
// eslint-disable-next-line consistent-return
46
function defaultToConfig2(prop) {
47
if (!utils.isUndefined(config2[prop])) {
48
return getMergedValue(undefined, config2[prop]);
49
} else if (!utils.isUndefined(config1[prop])) {
50
return getMergedValue(undefined, config1[prop]);
51
}
52
}
53
54
// eslint-disable-next-line consistent-return
55
function mergeDirectKeys(prop) {
56
if (prop in config2) {
57
return getMergedValue(config1[prop], config2[prop]);
58
} else if (prop in config1) {
59
return getMergedValue(undefined, config1[prop]);
60
}
61
}
62
63
var mergeMap = {
64
'url': valueFromConfig2,
65
'method': valueFromConfig2,
66
'data': valueFromConfig2,
67
'baseURL': defaultToConfig2,
68
'transformRequest': defaultToConfig2,
69
'transformResponse': defaultToConfig2,
70
'paramsSerializer': defaultToConfig2,
71
'timeout': defaultToConfig2,
72
'timeoutMessage': defaultToConfig2,
73
'withCredentials': defaultToConfig2,
74
'adapter': defaultToConfig2,
75
'responseType': defaultToConfig2,
76
'xsrfCookieName': defaultToConfig2,
77
'xsrfHeaderName': defaultToConfig2,
78
'onUploadProgress': defaultToConfig2,
79
'onDownloadProgress': defaultToConfig2,
80
'decompress': defaultToConfig2,
81
'maxContentLength': defaultToConfig2,
82
'maxBodyLength': defaultToConfig2,
83
'transport': defaultToConfig2,
84
'httpAgent': defaultToConfig2,
85
'httpsAgent': defaultToConfig2,
86
'cancelToken': defaultToConfig2,
87
'socketPath': defaultToConfig2,
88
'responseEncoding': defaultToConfig2,
89
'validateStatus': mergeDirectKeys
90
};
91
92
utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {
93
var merge = mergeMap[prop] || mergeDeepProperties;
94
var configValue = merge(prop);
95
(utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);
96
});
97
98
return config;
99
};
100
101