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