You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					60 lines
				
				1.4 KiB
			
		
		
			
		
	
	
					60 lines
				
				1.4 KiB
			| 
											3 years ago
										 | import utils from '../utils.js'; | ||
|  | import httpAdapter from './http.js'; | ||
|  | import xhrAdapter from './xhr.js'; | ||
|  | import AxiosError from "../core/AxiosError.js"; | ||
|  | 
 | ||
|  | const knownAdapters = { | ||
|  |   http: httpAdapter, | ||
|  |   xhr: xhrAdapter | ||
|  | } | ||
|  | 
 | ||
|  | utils.forEach(knownAdapters, (fn, value) => { | ||
|  |   if(fn) { | ||
|  |     try { | ||
|  |       Object.defineProperty(fn, 'name', {value}); | ||
|  |     } catch (e) { | ||
|  |       // eslint-disable-next-line no-empty
 | ||
|  |     } | ||
|  |     Object.defineProperty(fn, 'adapterName', {value}); | ||
|  |   } | ||
|  | }); | ||
|  | 
 | ||
|  | export default { | ||
|  |   getAdapter: (adapters) => { | ||
|  |     adapters = utils.isArray(adapters) ? adapters : [adapters]; | ||
|  | 
 | ||
|  |     const {length} = adapters; | ||
|  |     let nameOrAdapter; | ||
|  |     let adapter; | ||
|  | 
 | ||
|  |     for (let i = 0; i < length; i++) { | ||
|  |       nameOrAdapter = adapters[i]; | ||
|  |       if((adapter = utils.isString(nameOrAdapter) ? knownAdapters[nameOrAdapter.toLowerCase()] : nameOrAdapter)) { | ||
|  |         break; | ||
|  |       } | ||
|  |     } | ||
|  | 
 | ||
|  |     if (!adapter) { | ||
|  |       if (adapter === false) { | ||
|  |         throw new AxiosError( | ||
|  |           `Adapter ${nameOrAdapter} is not supported by the environment`, | ||
|  |           'ERR_NOT_SUPPORT' | ||
|  |         ); | ||
|  |       } | ||
|  | 
 | ||
|  |       throw new Error( | ||
|  |         utils.hasOwnProp(knownAdapters, nameOrAdapter) ? | ||
|  |           `Adapter '${nameOrAdapter}' is not available in the build` : | ||
|  |           `Unknown adapter '${nameOrAdapter}'` | ||
|  |       ); | ||
|  |     } | ||
|  | 
 | ||
|  |     if (!utils.isFunction(adapter)) { | ||
|  |       throw new TypeError('adapter is not a function'); | ||
|  |     } | ||
|  | 
 | ||
|  |     return adapter; | ||
|  |   }, | ||
|  |   adapters: knownAdapters | ||
|  | } |