@ace-fetch/uni-app
Version:
uni-app adapter for @ace-fetch/core.
89 lines (88 loc) • 3.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.mergeConfig = void 0;
var core_1 = require("@ace-util/core");
var utils_1 = require("../utils");
/**
* Config-specific merge-function which creates a new config-object
* by merging two configuration objects together.
*
* @param {Object} config1
* @param {Object} config2
*
* @returns {Object} New object resulting from merging config2 to config1
*/
function mergeConfig(config1, config2) {
config2 = config2 || {};
var config = {};
function getMergedValue(target, source) {
if ((0, core_1.isPlainObject)(target) && (0, core_1.isPlainObject)(source)) {
return (0, utils_1.merge)(target, source);
}
else if ((0, core_1.isPlainObject)(source)) {
return (0, utils_1.merge)({}, source);
}
else if ((0, core_1.isArray)(source)) {
return source.slice();
}
return source;
}
function mergeDeepProperties(prop) {
if (!(0, core_1.isUndef)(config2[prop])) {
return getMergedValue(config1[prop], config2[prop]);
}
else if (!(0, core_1.isUndef)(config1[prop])) {
return getMergedValue(undefined, config1[prop]);
}
}
function valueFromConfig2(prop) {
if (!(0, core_1.isUndef)(config2[prop])) {
return getMergedValue(undefined, config2[prop]);
}
}
function defaultToConfig2(prop) {
if (!(0, core_1.isUndef)(config2[prop])) {
return getMergedValue(undefined, config2[prop]);
}
else if (!(0, core_1.isUndef)(config1[prop])) {
return getMergedValue(undefined, config1[prop]);
}
}
function mergeDirectKeys(prop) {
if (prop in config2) {
return getMergedValue(config1[prop], config2[prop]);
}
else if (prop in config1) {
return getMergedValue(undefined, config1[prop]);
}
}
var mergeMap = {
url: valueFromConfig2,
method: valueFromConfig2,
headers: mergeDeepProperties,
data: valueFromConfig2,
timeout: defaultToConfig2,
requestType: defaultToConfig2,
responseType: defaultToConfig2,
sslVerify: defaultToConfig2,
withCredentials: defaultToConfig2,
firstIpv4: defaultToConfig2,
enableHttp2: defaultToConfig2,
enableQuic: defaultToConfig2,
enableCache: defaultToConfig2,
enableHttpDNS: defaultToConfig2,
httpDNSServiceId: defaultToConfig2,
enableChunked: defaultToConfig2,
forceCellularNetwork: defaultToConfig2,
enableCookie: defaultToConfig2,
cloudCache: mergeDeepProperties,
defer: defaultToConfig2,
};
(0, utils_1.forEach)(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {
var merge = mergeMap[prop] || mergeDeepProperties;
var configValue = merge(prop);
((0, core_1.isUndef)(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);
});
return config;
}
exports.mergeConfig = mergeConfig;