123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';
- const _navigator = typeof navigator === 'object' && navigator || undefined;
- /**
- * 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 hasStandardBrowserEnv = hasBrowserEnv &&
- (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);
- /**
- * 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 hasStandardBrowserWebWorkerEnv = (() => {
- return (
- typeof WorkerGlobalScope !== 'undefined' &&
- // eslint-disable-next-line no-undef
- self instanceof WorkerGlobalScope &&
- typeof self.importScripts === 'function'
- );
- })();
- const origin = hasBrowserEnv && window.location.href || 'http://localhost';
- export {
- hasBrowserEnv,
- hasStandardBrowserWebWorkerEnv,
- hasStandardBrowserEnv,
- _navigator as navigator,
- origin
- }
|