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
						
					
					
				| 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
 | |
| }
 |