UNPKG

@amaui/utils

Version:
103 lines (102 loc) 3.58 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getUserOSandBrowser = exports.getUserIPandLocation = void 0; const isBrowser_1 = __importDefault(require("./isBrowser")); const isOS_1 = __importDefault(require("./isOS")); const getCountry_1 = __importDefault(require("./getCountry")); const getUserIPandLocation = async () => { let ip_address; let country_code; // cloudflare try { let data = await fetch(`https://www.cloudflare.com/cdn-cgi/trace`); data = await data.text(); const items = data.split('\n'); ip_address = items.find((item) => item.indexOf('ip') === 0).slice(3); country_code = items.find((item) => item.indexOf('loc') === 0).slice(4); } catch (error) { console.log(error); } // aws if (!ip_address) { try { const dataAWS = await fetch('https://checkip.amazonaws.com'); ip_address = (await dataAWS.text()).split('\n')[0]; } catch (error) { console.log(error); } } return { ip_address, country_code, }; }; exports.getUserIPandLocation = getUserIPandLocation; const getUserOSandBrowser = () => { var _a; const result = {}; const meta = { os: ['mac', 'ios', 'windows', 'linux'], browser: ['chrome', 'opera', 'safari', 'firefox', 'edge-chromium', 'edge', 'ie'], }; meta.os.forEach(item => { if ((0, isOS_1.default)(item)) result['os'] = item; }); meta.browser.forEach(item => { if ((0, isBrowser_1.default)(item)) result['browser'] = item; }); switch (result.browser) { case 'chrome': result['version'] = navigator.userAgent.split('Chrome/')[1].split(' ')[0]; break; case 'firefox': result['version'] = navigator.userAgent.split('Firefox/')[1]; break; case 'opera': result['version'] = navigator.userAgent.split('OPR/')[1]; break; case 'safari': result['version'] = navigator.userAgent.split('Safari/')[1]; break; case 'edge-chromium': result['version'] = navigator.userAgent.split('Edg/')[1]; break; case 'edge': result['version'] = navigator.userAgent.split('Edg/')[1]; break; case 'ie': result['version'] = ((navigator.userAgent.indexOf('MSIE 10') > -1 && '10') || (navigator.userAgent.indexOf('rv:11') > -1 && '11') || '1'); break; default: break; } return { browser: { name: result.browser, version: result.version, major_version: (_a = result.version) === null || _a === void 0 ? void 0 : _a.split('.')[0], agent: navigator.userAgent, language: navigator.language }, os: { platform: result.os } }; }; exports.getUserOSandBrowser = getUserOSandBrowser; const getUserLocalInfo = async () => { const IPandLocation = await (0, exports.getUserIPandLocation)(); const country = (0, getCountry_1.default)(IPandLocation.country_code); const osAndBrowser = (0, exports.getUserOSandBrowser)(); return Object.assign({ ip_address: IPandLocation.ip_address, country }, osAndBrowser); }; exports.default = getUserLocalInfo;