You've already forked guangan-mp
42 lines
979 B
JavaScript
42 lines
979 B
JavaScript
import { assign, forEach } from '../utils'
|
|
|
|
/**
|
|
* 深度合并,且不合并 undefined 值
|
|
* @param {object} obj1 前对象
|
|
* @param {object} obj2 后对象
|
|
* @returns {object} 合并后的对象
|
|
*/
|
|
function merge(obj1 = {}, obj2 = {}) {
|
|
const obj = {}
|
|
|
|
const objKeys = Object.keys({ ...obj1, ...obj2 })
|
|
|
|
forEach(objKeys, prop => {
|
|
if (obj2[prop] !== undefined) {
|
|
obj[prop] = assign(obj1[prop], obj2[prop])
|
|
} else if (obj1[prop] !== undefined) {
|
|
obj[prop] = assign(undefined, obj1[prop])
|
|
}
|
|
})
|
|
|
|
return obj
|
|
}
|
|
|
|
/**
|
|
* 合并请求配置
|
|
* @param {...object|function} args 请求配置
|
|
* @returns {object} 合并后的请求配置
|
|
*/
|
|
export default async function mergeConfig(...args) {
|
|
let config = {}
|
|
|
|
for (let i = 0, l = args.length; i < l; i++) {
|
|
const current = typeof args[i] === 'function' ? await args[i]() : args[i]
|
|
config = merge(config, current)
|
|
}
|
|
|
|
config.method = config.method.toUpperCase()
|
|
|
|
return config
|
|
}
|