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.
		
		
		
		
		
			
		
			
				
					64 lines
				
				1.7 KiB
			
		
		
			
		
	
	
					64 lines
				
				1.7 KiB
			| 
											3 years ago
										 | import URLSearchParams from './classes/URLSearchParams.js' | ||
|  | import FormData from './classes/FormData.js' | ||
|  | 
 | ||
|  | /** | ||
|  |  * Determine if we're running in a standard browser environment | ||
|  |  * | ||
|  |  * This allows axios to run in a web worker, and react-native. | ||
|  |  * Both environments support XMLHttpRequest, but not fully standard globals. | ||
|  |  * | ||
|  |  * web workers: | ||
|  |  *  typeof window -> undefined | ||
|  |  *  typeof document -> undefined | ||
|  |  * | ||
|  |  * react-native: | ||
|  |  *  navigator.product -> 'ReactNative' | ||
|  |  * nativescript | ||
|  |  *  navigator.product -> 'NativeScript' or 'NS' | ||
|  |  * | ||
|  |  * @returns {boolean} | ||
|  |  */ | ||
|  | const isStandardBrowserEnv = (() => { | ||
|  |   let product; | ||
|  |   if (typeof navigator !== 'undefined' && ( | ||
|  |     (product = navigator.product) === 'ReactNative' || | ||
|  |     product === 'NativeScript' || | ||
|  |     product === 'NS') | ||
|  |   ) { | ||
|  |     return false; | ||
|  |   } | ||
|  | 
 | ||
|  |   return typeof window !== 'undefined' && typeof document !== 'undefined'; | ||
|  | })(); | ||
|  | 
 | ||
|  | /** | ||
|  |  * Determine if we're running in a standard browser webWorker environment | ||
|  |  * | ||
|  |  * Although the `isStandardBrowserEnv` method indicates that | ||
|  |  * `allows axios to run in a web worker`, the WebWorker will still be | ||
|  |  * filtered out due to its judgment standard | ||
|  |  * `typeof window !== 'undefined' && typeof document !== 'undefined'`. | ||
|  |  * This leads to a problem when axios post `FormData` in webWorker | ||
|  |  */ | ||
|  |  const isStandardBrowserWebWorkerEnv = (() => { | ||
|  |   return ( | ||
|  |     typeof WorkerGlobalScope !== 'undefined' && | ||
|  |     // eslint-disable-next-line no-undef
 | ||
|  |     self instanceof WorkerGlobalScope && | ||
|  |     typeof self.importScripts === 'function' | ||
|  |   ); | ||
|  | })(); | ||
|  | 
 | ||
|  | 
 | ||
|  | export default { | ||
|  |   isBrowser: true, | ||
|  |   classes: { | ||
|  |     URLSearchParams, | ||
|  |     FormData, | ||
|  |     Blob | ||
|  |   }, | ||
|  |   isStandardBrowserEnv, | ||
|  |   isStandardBrowserWebWorkerEnv, | ||
|  |   protocols: ['http', 'https', 'file', 'blob', 'url', 'data'] | ||
|  | }; |