UNPKG

mux-fetch

Version:
44 lines (39 loc) 1.21 kB
import { FetchConfig, GlobalConfig } from "../@types/"; import { compose } from "./compose"; import globalConfig from "../globalConfig"; import { isArray } from "mux-lib"; import { DEFAULT_CONFIG } from "../constant"; export const configFactory = ( config: FetchConfig, base: FetchConfig = globalConfig.get("config") || DEFAULT_CONFIG ): GlobalConfig => { // 合并 prefix const prefix = config.prefix || base.prefix; // 合并 responseHandle const responseHandle = config.responseHandle || base.responseHandle; // 合并 fetchOption const fetchOption = Object.assign( {}, base.fetchOption || {}, config.fetchOption || {} ); // 合并 interceptor const interceptor = Object.keys(DEFAULT_CONFIG.interceptor).reduce( (p, key) => { const configInterceptor = (config.interceptor || {})[key] || []; const baseInterceptor = (base.interceptor || {})[key] || []; const baseKeyInterceptor = isArray(baseInterceptor) ? baseInterceptor : [baseInterceptor]; p[key] = compose(...baseKeyInterceptor, ...configInterceptor); return p; }, {} ); return { prefix, fetchOption, responseHandle, interceptor }; };