UNPKG

@ace-fetch/uni-app

Version:

uni-app adapter for @ace-fetch/core.

89 lines (88 loc) 3.16 kB
"use strict"; 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;