@grafana/faro-web-sdk
Version:
Faro instrumentations, metas, transports for web.
34 lines • 1.59 kB
JavaScript
import { unknownString } from '@grafana/faro-core';
import { getUAResult } from '../shared';
export const browserMeta = () => {
const { browser, os, ua: userAgent } = getUAResult();
const { name, version } = browser;
const { name: osName, version: osVersion } = os;
const language = navigator.language;
const mobile = userAgent.includes('Mobi');
const brands = getBrands();
return {
browser: {
name: name !== null && name !== void 0 ? name : unknownString,
version: version !== null && version !== void 0 ? version : unknownString,
os: `${osName !== null && osName !== void 0 ? osName : unknownString} ${osVersion !== null && osVersion !== void 0 ? osVersion : unknownString}`,
userAgent: userAgent !== null && userAgent !== void 0 ? userAgent : unknownString,
language: language !== null && language !== void 0 ? language : unknownString,
mobile,
brands: brands !== null && brands !== void 0 ? brands : unknownString,
viewportWidth: `${window.innerWidth}`,
viewportHeight: `${window.innerHeight}`,
},
};
function getBrands() {
if (!name || !version) {
return undefined;
}
if ('userAgentData' in navigator && navigator.userAgentData) {
// userAgentData in experimental (only Chrome supports it) thus TS does not ship the respective type declarations
return navigator.userAgentData.brands;
}
return undefined;
}
};
//# sourceMappingURL=meta.js.map