66 lines
9.0 KiB
JavaScript
66 lines
9.0 KiB
JavaScript
|
"use strict";
|
||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||
|
};
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
exports.parseUserAgent = exports.extractMetaInfo = exports.calculatePrettyUserAgent = void 0;
|
||
|
const bowser_1 = __importDefault(require("bowser"));
|
||
|
const DEFAULT_NAME = 'Other';
|
||
|
const DEFAULT_VERSION = '0.0';
|
||
|
const DEFAULT_PLATFORM_TYPE = DEFAULT_NAME.toLowerCase();
|
||
|
const EMPTY_PARSED_USER_AGENT = bowser_1.default.parse(' ');
|
||
|
const META_INFO_REGEX = /\([^(|^)]*\)/;
|
||
|
function calculateBrowser(browserDetails) {
|
||
|
return {
|
||
|
name: browserDetails.name || DEFAULT_NAME,
|
||
|
version: browserDetails.version || DEFAULT_VERSION,
|
||
|
};
|
||
|
}
|
||
|
function calculateOs(parsedOsDetails) {
|
||
|
const name = parsedOsDetails.name || DEFAULT_NAME;
|
||
|
let version = DEFAULT_VERSION;
|
||
|
// NOTE: a 'versionName' property value is more readable in the case of Windows (GH-481):
|
||
|
// Windows 8.1: os.version: "NT 6.3", os.versionName: "8.1".
|
||
|
if (name.toLowerCase() === 'windows') {
|
||
|
if (parsedOsDetails.versionName)
|
||
|
version = parsedOsDetails.versionName;
|
||
|
}
|
||
|
else if (parsedOsDetails.version)
|
||
|
version = parsedOsDetails.version;
|
||
|
return { name, version };
|
||
|
}
|
||
|
function calculateEngine(engineDetails) {
|
||
|
return {
|
||
|
name: engineDetails.name || DEFAULT_NAME,
|
||
|
version: engineDetails.version || DEFAULT_VERSION,
|
||
|
};
|
||
|
}
|
||
|
function calculatePrettyUserAgent(browser, os) {
|
||
|
return `${browser.name} ${browser.version} / ${os.name} ${os.version}`;
|
||
|
}
|
||
|
exports.calculatePrettyUserAgent = calculatePrettyUserAgent;
|
||
|
function extractMetaInfo(prettyUserAgent) {
|
||
|
const parenthesisExpressions = prettyUserAgent.match(META_INFO_REGEX);
|
||
|
if (!parenthesisExpressions || !parenthesisExpressions.length)
|
||
|
return '';
|
||
|
return parenthesisExpressions[parenthesisExpressions.length - 1].replace(/[()]/g, '');
|
||
|
}
|
||
|
exports.extractMetaInfo = extractMetaInfo;
|
||
|
function parseUserAgent(userAgent = '') {
|
||
|
const parsedUserAgent = userAgent ? bowser_1.default.parse(userAgent) : EMPTY_PARSED_USER_AGENT;
|
||
|
const browser = calculateBrowser(parsedUserAgent.browser);
|
||
|
const os = calculateOs(parsedUserAgent.os);
|
||
|
const engine = calculateEngine(parsedUserAgent.engine);
|
||
|
const prettyUserAgent = calculatePrettyUserAgent(browser, os);
|
||
|
return {
|
||
|
name: browser.name,
|
||
|
version: browser.version,
|
||
|
platform: parsedUserAgent.platform.type || DEFAULT_PLATFORM_TYPE,
|
||
|
os,
|
||
|
engine,
|
||
|
prettyUserAgent: prettyUserAgent,
|
||
|
userAgent,
|
||
|
};
|
||
|
}
|
||
|
exports.parseUserAgent = parseUserAgent;
|
||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UtdXNlci1hZ2VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9wYXJzZS11c2VyLWFnZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUE0QjtBQUU1QixNQUFNLFlBQVksR0FBYyxPQUFPLENBQUM7QUFDeEMsTUFBTSxlQUFlLEdBQVcsS0FBSyxDQUFDO0FBQ3RDLE1BQU0scUJBQXFCLEdBQUssWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQzNELE1BQU0sdUJBQXVCLEdBQUcsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEQsTUFBTSxlQUFlLEdBQUcsY0FBYyxDQUFDO0FBaUJ2QyxTQUFTLGdCQUFnQixDQUFFLGNBQTRDO0lBQ25FLE9BQU87UUFDSCxJQUFJLEVBQUssY0FBYyxDQUFDLElBQUksSUFBSSxZQUFZO1FBQzVDLE9BQU8sRUFBRSxjQUFjLENBQUMsT0FBTyxJQUFJLGVBQWU7S0FDckQsQ0FBQztBQUNOLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBRSxlQUF3QztJQUMxRCxNQUFNLElBQUksR0FBRyxlQUFlLENBQUMsSUFBSSxJQUFJLFlBQVksQ0FBQztJQUVsRCxJQUFJLE9BQU8sR0FBRyxlQUFlLENBQUM7SUFFOUIseUZBQXlGO0lBQ3pGLDREQUE0RDtJQUM1RCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxTQUFTLEVBQUU7UUFDbEMsSUFBSSxlQUFlLENBQUMsV0FBVztZQUMzQixPQUFPLEdBQUcsZUFBZSxDQUFDLFdBQVcsQ0FBQztLQUM3QztTQUNJLElBQUksZUFBZSxDQUFDLE9BQU87UUFDNUIsT0FBTyxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUM7SUFFdEMsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUM3QixDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUUsYUFBMEM7SUFDaEUsT0FBTztRQUNILElBQUksRUFBSyxhQUFhLENBQUMsSUFBSSxJQUFJLFlBQVk7UUFDM0MsT0FBTyxFQUFFLGFBQWEsQ0FBQyxPQUFPLElBQUksZUFBZTtLQUNwRCxDQUFDO0FBQ04sQ0FBQztBQUVELFNBQWdCLHdCQUF3QixDQUFFLE9BQXdCLEVBQUUsRUFBbUI7SUFDbkYsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLE9BQU8sTUFBTSxFQUFFLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUMzRSxDQUFDO0FBRkQsNERBRUM7QUFFRCxTQUFnQixlQUFlLENBQUUsZUFBdUI7SUFDcEQsTUFBTSxzQkFBc0IsR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBRXRFLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU07UUFDekQsT0FBTyxFQUFFLENBQUM7SUFFZCxPQUFPLHNCQUFzQixDQUFDLHNCQUFzQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzFGLENBQUM7QUFQRCwwQ0FPQztBQUVELFNBQWdCLGNBQWMsQ0FBRSxTQUFTLEdBQUcsRUFBRTtJQUMxQyxNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLGdCQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQztJQUN0RixNQUFNLE9BQU8sR0FBVyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEUsTUFBTSxFQUFFLEdBQWdCLFdBQVcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEQsTUFBTSxNQUFNLEdBQVksZUFBZSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRSxNQUFNLGVBQWUsR0FBRyx3QkFBd0IsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFOUQsT0FBTztRQUNILElBQUksRUFBYSxPQUFPLENBQUMsSUFBSTtRQUM3QixPQUFPLEVBQVUsT0FBTyxDQUFDLE9BQU87UUFDaEMsUUFBUSxFQUFTLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLHFCQUFxQjtRQUN2RSxFQUFFO1FBQ0YsTUFBTTtRQUNOLGVBQWUsRUFBRSxlQUFlO1FBQ2hDLFNBQVM7S0FDWixDQUFDO0FBQ04sQ0FBQztBQWhCRCx3Q0FnQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQm93c2VyIGZyb20gJ2Jvd3Nlcic7XG5cbmNvbnN0IERFRkFVTFRfTkFNRSAgICAgICAgICAgID0gJ090aGVyJztcbmNvbnN0IERFRkFVTFRfVkVSU0lPTiAgICAgICAgID0gJzAuMCc7XG5jb25zdCBERUZBVUxUX1BMQVRGT1JNX1RZUEUgICA9IERFRkFVTFRfTkFNRS50b0xvd2VyQ2FzZSgpO1xuY29uc3QgRU1QVFlfUEFSU0VEX1VTRVJfQUdFTlQgPSBCb3dzZXIucGFyc2UoJyAnKTtcbmNvbnN0IE1FVEFfSU5GT19SRUdFWCA9IC9cXChbXih8XildKlxcKS87XG5cbmludGVyZmFjZSBQYXJzZWRDb21wb25lbnQge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkVXNlckFnZW50IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmVyc2lvbjogc3RyaW5nO1xuICAgIHBsYXRmb3JtOiBzdHJpbmc7XG4gICAgb3M6IFBhcnNlZENvbXBvbmVudDtcbiAgICBlbmdpbmU6IFBhcnNlZENvbXBvbmVudDtcbiAgICBwcmV0dHlVc2VyQWdlbnQ6IHN0cmluZztcbiAgICB1c2VyQWdlbnQ6IHN0cmluZztcbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlQnJvd3NlciAoYnJvd3NlckRldGFpbHM6IEJvd3Nlci5QYXJzZXIuQnJvd3NlckRldGFpbHMpOiBQYXJzZWRDb21wb25lbnQge1xuICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6ICAgIGJyb3dzZXJEZXRhaWxzLm5hbWUgfHwgREVGQVVMVF9OQU1FLFxuICAgICAgICB2ZXJzaW9uOiBicm93c2VyRGV0YWlscy52ZXJzaW9uIHx8IERFRkFVTFRfVkVSU0lPTixcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVPcyAocGFyc2VkT3NEZXRhaWxzOiBCb3dzZXIuUGFyc2VyLk9TRGV0YWlscyk6IFBhcnNlZENvbXBvbmVudCB7XG4gICAgY29uc3QgbmFtZSA9IHBhcnNlZE9zRGV0YWlscy5uYW1lIHx8IERFRkFVTFRfTkFNRTtcblxuICAgIGxldCB2ZXJzaW9uID0gREVGQVVMVF9WRVJTSU9OO1xuXG4gICAgLy8gTk9URTogYSAndmVyc2lvbk5hbWUnIHByb3Blc
|