UNPKG

contentful-sdk-core

Version:
1 lines 4.88 kB
{"version":3,"file":"get-user-agent.js","sources":["../../src/get-user-agent.ts"],"sourcesContent":["import process from 'process'\n\nimport { isNode, getNodeVersion, isReactNative, getWindow } from './utils.js'\n\nfunction getBrowserOS(): string | null {\n const win = getWindow()\n if (!win) {\n return null\n }\n const userAgent = win.navigator.userAgent\n // TODO: platform is deprecated.\n const platform = win.navigator.platform\n const macosPlatforms = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K']\n const windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE']\n const iosPlatforms = ['iPhone', 'iPad', 'iPod']\n\n if (macosPlatforms.indexOf(platform) !== -1) {\n return 'macOS'\n } else if (iosPlatforms.indexOf(platform) !== -1) {\n return 'iOS'\n } else if (windowsPlatforms.indexOf(platform) !== -1) {\n return 'Windows'\n } else if (/Android/.test(userAgent)) {\n return 'Android'\n } else if (/Linux/.test(platform)) {\n return 'Linux'\n }\n\n return null\n}\n\ntype PlatformMap = Record<string, 'Android' | 'Linux' | 'Windows' | 'macOS'>\n\nfunction getNodeOS(): string | null {\n const platform = process.platform || 'linux'\n const version = process.version || '0.0.0'\n const platformMap: PlatformMap = {\n android: 'Android',\n aix: 'Linux',\n darwin: 'macOS',\n freebsd: 'Linux',\n linux: 'Linux',\n openbsd: 'Linux',\n sunos: 'Linux',\n win32: 'Windows',\n }\n if (platform in platformMap) {\n return `${platformMap[platform] || 'Linux'}/${version}`\n }\n return null\n}\n\nexport default function getUserAgentHeader(\n sdk: string,\n application?: string,\n integration?: string,\n feature?: string,\n): string {\n const headerParts = []\n\n if (application) {\n headerParts.push(`app ${application}`)\n }\n\n if (integration) {\n headerParts.push(`integration ${integration}`)\n }\n\n if (feature) {\n headerParts.push('feature ' + feature)\n }\n\n headerParts.push(`sdk ${sdk}`)\n\n let platform = null\n try {\n if (isReactNative()) {\n platform = getBrowserOS()\n headerParts.push('platform ReactNative')\n } else if (isNode()) {\n platform = getNodeOS()\n headerParts.push(`platform node.js/${getNodeVersion()}`)\n } else {\n platform = getBrowserOS()\n headerParts.push('platform browser')\n }\n } catch (e) {\n platform = null\n }\n\n if (platform) {\n headerParts.push(`os ${platform}`)\n }\n\n return `${headerParts.filter((item) => item !== '').join('; ')};`\n}\n"],"names":[],"mappings":"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"}