12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- import URLSearchParams from './classes/URLSearchParams.js'
- import FormData from './classes/FormData.js'
- import Blob from './classes/Blob.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']
- };
|