{"ast":null,"code":"import _regeneratorRuntime from \"@babel/runtime/regenerator\";\nimport { canUseDOM } from 'fbjs/lib/ExecutionEnvironment';\nimport { v4 as uuidv4 } from 'uuid';\nimport { ExecutionEnvironment } from \"./Constants.types\";\nvar ID_KEY = 'EXPO_CONSTANTS_INSTALLATION_ID';\n\nvar _sessionId = uuidv4();\n\nfunction getBrowserName() {\n  if (canUseDOM) {\n    var agent = navigator.userAgent.toLowerCase();\n\n    if (agent.includes('edge')) {\n      return 'Edge';\n    } else if (agent.includes('edg')) {\n      return 'Chromium Edge';\n    } else if (agent.includes('opr') && !!window['opr']) {\n      return 'Opera';\n    } else if (agent.includes('chrome') && !!window['chrome']) {\n      return 'Chrome';\n    } else if (agent.includes('trident')) {\n      return 'IE';\n    } else if (agent.includes('firefox')) {\n      return 'Firefox';\n    } else if (agent.includes('safari')) {\n      return 'Safari';\n    }\n  }\n\n  return undefined;\n}\n\nexport default {\n  get name() {\n    return 'ExponentConstants';\n  },\n\n  get appOwnership() {\n    return null;\n  },\n\n  get executionEnvironment() {\n    return ExecutionEnvironment.Bare;\n  },\n\n  get installationId() {\n    var installationId;\n\n    try {\n      installationId = localStorage.getItem(ID_KEY);\n\n      if (installationId == null || typeof installationId !== 'string') {\n        installationId = uuidv4();\n        localStorage.setItem(ID_KEY, installationId);\n      }\n    } catch (error) {\n      installationId = _sessionId;\n    } finally {\n      return installationId;\n    }\n  },\n\n  get sessionId() {\n    return _sessionId;\n  },\n\n  get platform() {\n    return {\n      web: canUseDOM ? {\n        ua: navigator.userAgent\n      } : undefined\n    };\n  },\n\n  get isHeadless() {\n    if (!canUseDOM) return true;\n    return /\\bHeadlessChrome\\//.test(navigator.userAgent);\n  },\n\n  get isDevice() {\n    return true;\n  },\n\n  get expoVersion() {\n    return this.manifest.sdkVersion || null;\n  },\n\n  get linkingUri() {\n    if (canUseDOM) {\n      return location.origin;\n    } else {\n      return '';\n    }\n  },\n\n  get expoRuntimeVersion() {\n    return this.expoVersion;\n  },\n\n  get deviceName() {\n    return getBrowserName();\n  },\n\n  get nativeAppVersion() {\n    return null;\n  },\n\n  get nativeBuildVersion() {\n    return null;\n  },\n\n  get systemFonts() {\n    return [];\n  },\n\n  get statusBarHeight() {\n    return 0;\n  },\n\n  get deviceYearClass() {\n    return null;\n  },\n\n  get manifest() {\n    return process.env.APP_MANIFEST || {};\n  },\n\n  get experienceUrl() {\n    if (canUseDOM) {\n      return location.origin;\n    } else {\n      return '';\n    }\n  },\n\n  get debugMode() {\n    return __DEV__;\n  },\n\n  getWebViewUserAgentAsync: function getWebViewUserAgentAsync() {\n    return _regeneratorRuntime.async(function getWebViewUserAgentAsync$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            if (!canUseDOM) {\n              _context.next = 4;\n              break;\n            }\n\n            return _context.abrupt(\"return\", navigator.userAgent);\n\n          case 4:\n            return _context.abrupt(\"return\", null);\n\n          case 5:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, null, null, null, Promise);\n  }\n};","map":{"version":3,"sources":["../src/ExponentConstants.web.ts"],"names":[],"mappings":"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","sourcesContent":["import { canUseDOM } from 'fbjs/lib/ExecutionEnvironment';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport {\n  ExecutionEnvironment,\n  NativeConstants,\n  PlatformManifest,\n  WebManifest,\n} from './Constants.types';\n\nconst ID_KEY = 'EXPO_CONSTANTS_INSTALLATION_ID';\n\ndeclare var __DEV__: boolean;\ndeclare var process: { env: any };\ndeclare var navigator: Navigator;\ndeclare var location: Location;\ndeclare var localStorage: Storage;\n\nconst _sessionId = uuidv4();\n\nfunction getBrowserName(): string | undefined {\n  if (canUseDOM) {\n    const agent = navigator.userAgent.toLowerCase();\n    if (agent.includes('edge')) {\n      return 'Edge';\n    } else if (agent.includes('edg')) {\n      return 'Chromium Edge';\n    } else if (agent.includes('opr') && !!window['opr']) {\n      return 'Opera';\n    } else if (agent.includes('chrome') && !!window['chrome']) {\n      return 'Chrome';\n    } else if (agent.includes('trident')) {\n      return 'IE';\n    } else if (agent.includes('firefox')) {\n      return 'Firefox';\n    } else if (agent.includes('safari')) {\n      return 'Safari';\n    }\n  }\n\n  return undefined;\n}\n\nexport default {\n  get name(): string {\n    return 'ExponentConstants';\n  },\n  get appOwnership() {\n    return null;\n  },\n  get executionEnvironment() {\n    return ExecutionEnvironment.Bare;\n  },\n  get installationId(): string {\n    let installationId;\n    try {\n      installationId = localStorage.getItem(ID_KEY);\n      if (installationId == null || typeof installationId !== 'string') {\n        installationId = uuidv4();\n        localStorage.setItem(ID_KEY, installationId as string);\n      }\n    } catch (error) {\n      installationId = _sessionId;\n    } finally {\n      return installationId;\n    }\n  },\n  get sessionId(): string {\n    return _sessionId;\n  },\n  get platform(): PlatformManifest {\n    return { web: canUseDOM ? { ua: navigator.userAgent } : undefined };\n  },\n  get isHeadless(): boolean {\n    if (!canUseDOM) return true;\n\n    return /\\bHeadlessChrome\\//.test(navigator.userAgent);\n  },\n  get isDevice(): true {\n    // TODO: Bacon: Possibly want to add information regarding simulators\n    return true;\n  },\n  get expoVersion(): string | null {\n    return this.manifest.sdkVersion || null;\n  },\n  get linkingUri(): string {\n    if (canUseDOM) {\n      // On native this is `exp://`\n      // On web we should use the protocol and hostname (location.origin)\n      return location.origin;\n    } else {\n      return '';\n    }\n  },\n  get expoRuntimeVersion(): string | null {\n    return this.expoVersion;\n  },\n  get deviceName(): string | undefined {\n    return getBrowserName();\n  },\n  get nativeAppVersion(): null {\n    return null;\n  },\n  get nativeBuildVersion(): null {\n    return null;\n  },\n  get systemFonts(): string[] {\n    // TODO: Bacon: Maybe possible.\n    return [];\n  },\n  get statusBarHeight(): number {\n    return 0;\n  },\n  get deviceYearClass(): number | null {\n    // TODO: Bacon: The android version isn't very accurate either, maybe we could try and guess this value.\n    return null;\n  },\n  get manifest(): WebManifest {\n    // This is defined by @expo/webpack-config.\n    // If your site is bundled with a different config then you may not have access to the app.json automatically.\n    return process.env.APP_MANIFEST || {};\n  },\n  get experienceUrl(): string {\n    if (canUseDOM) {\n      return location.origin;\n    } else {\n      return '';\n    }\n  },\n  get debugMode(): boolean {\n    return __DEV__;\n  },\n  async getWebViewUserAgentAsync(): Promise<string | null> {\n    if (canUseDOM) {\n      return navigator.userAgent;\n    } else {\n      return null;\n    }\n  },\n} as NativeConstants;\n"],"sourceRoot":""},"metadata":{},"sourceType":"module"}