import AGENT_LIST from "./navigatorAgentList.js" import { NumberUtils } from "../NumberUtils.js"; /** * `UserAgentUtils`: Utilitario para tratativas relacionadas ao navegador. */ export class UserAgentUtils { /** * Obtém se o navegador do usuário é o firefox. * @returns Verdadeiro se o navegador do usuário for o firefox. */ public static isFirefox() { const browser = this.getBrowserInfo(); return !!browser.firefox; } public static isElectron() { const browser = this.getBrowserInfo(); return !!browser.electron; } /** * Obtém nome e versão do navegador que está sendo utilizado. * @returns Objeto com o nome e versão do navegador. */ public static getBrowserInfo(): any { const userAgent = window.navigator.userAgent; let browser = { name: '', version: '' } as any; let result: RegExpExecArray | null; AGENT_LIST.every(({ name, type, regexp, simpleVersionRegExp }) => { let hasFound = false; regexp.every((reg) => { if (reg.test(userAgent)) { hasFound = true; result = reg.exec(userAgent); let simpleVersion = 0; try { if (simpleVersionRegExp && simpleVersionRegExp.test(userAgent)) { const simpleExec = simpleVersionRegExp.exec(userAgent); simpleVersion = NumberUtils.stringToNumber(simpleExec?.[1] || "0") } } catch (e) { //ignored console.warn(e); } browser = { ...browser, name, version: result?.[1] || "", simpleVersion, ...(Array.isArray(type) ? type.reduce((acc, val) => ({ ...acc, [val]: true}), {}) : { [type]: true }) } return !hasFound; } }) return !hasFound; }) return browser; } }