UNPKG

tina-weapp

Version:
61 lines (54 loc) 1.42 kB
const _toString = Object.prototype.toString const typeClass = { date: '[object Date]', object: '[object Object]' } export function isDate(val) { return _toString.call(val) === typeClass['date'] } export function isObject(val) { return val !== null && typeof val === 'object' } export function isPlainObject(val) { return _toString.call(val) === typeClass['object'] } export function extend(_to, _from) { const requestAPI = ['request', 'get', 'delete', 'head', 'options', 'post', 'put', 'patch', '_requestMethodWithData', '_requestMethodWithoutData'] for (const key in _from) { _to[key] = _from[key] } requestAPI.forEach(key => { _to[key] = _from[key] }) return _to } export function deepMerge(...obj) { const result = {} obj.forEach(item => { if (!item) return Object.keys(item).forEach(key => { const val = item[key] if (isPlainObject(val)) { if (isPlainObject(result[key])) { result[key] = deepMerge(result[key], val) } else { result[key] = deepMerge(val) } } else { result[key] = val } }) }) return result } export function flattenHeaders(headers, method) { if (!headers) { return headers } headers = deepMerge(headers.common || {}, headers[method] || {}, headers) const methodsToDelete = ['delete', 'get', 'head', 'options', 'post', 'put', 'patch', 'common'] methodsToDelete.forEach(method => { delete headers[method] }) return headers }