UNPKG

7.87 kBJavaScriptView Raw
1"use strict";
2var __importDefault = (this && this.__importDefault) || function (mod) {
3 return (mod && mod.__esModule) ? mod : { "default": mod };
4};
5Object.defineProperty(exports, "__esModule", { value: true });
6const bowser_1 = __importDefault(require("bowser"));
7const DEFAULT_NAME = 'Other';
8const DEFAULT_VERSION = '0.0';
9const DEFAULT_PLATFORM_TYPE = DEFAULT_NAME.toLowerCase();
10const EMPTY_PARSED_USER_AGENT = bowser_1.default.parse(' ');
11function calculateBrowser(browserDetails) {
12 return {
13 name: browserDetails.name || DEFAULT_NAME,
14 version: browserDetails.version || DEFAULT_VERSION
15 };
16}
17function calculateOs(parsedOsDetails) {
18 const name = parsedOsDetails.name || DEFAULT_NAME;
19 let version = DEFAULT_VERSION;
20 // NOTE: a 'versionName' property value is more readable in the case of Windows (GH-481):
21 // Windows 8.1: os.version: "NT 6.3", os.versionName: "8.1".
22 if (name.toLowerCase() === 'windows') {
23 if (parsedOsDetails.versionName)
24 version = parsedOsDetails.versionName;
25 }
26 else if (parsedOsDetails.version)
27 version = parsedOsDetails.version;
28 return { name, version };
29}
30function calculateEngine(engineDetails) {
31 return {
32 name: engineDetails.name || DEFAULT_NAME,
33 version: engineDetails.version || DEFAULT_VERSION
34 };
35}
36function calculatePrettyUserAgent(browser, os) {
37 return `${browser.name} ${browser.version} / ${os.name} ${os.version}`;
38}
39function parseUserAgent(userAgent = '') {
40 const parsedUserAgent = userAgent ? bowser_1.default.parse(userAgent) : EMPTY_PARSED_USER_AGENT;
41 const browser = calculateBrowser(parsedUserAgent.browser);
42 const os = calculateOs(parsedUserAgent.os);
43 const engine = calculateEngine(parsedUserAgent.engine);
44 const prettyUserAgent = calculatePrettyUserAgent(browser, os);
45 return {
46 name: browser.name,
47 version: browser.version,
48 platform: parsedUserAgent.platform.type || DEFAULT_PLATFORM_TYPE,
49 os,
50 engine,
51 prettyUserAgent: prettyUserAgent,
52 userAgent
53 };
54}
55exports.default = parseUserAgent;
56module.exports = exports.default;
57//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UtdXNlci1hZ2VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9wYXJzZS11c2VyLWFnZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBRTVCLE1BQU0sWUFBWSxHQUFjLE9BQU8sQ0FBQztBQUN4QyxNQUFNLGVBQWUsR0FBVyxLQUFLLENBQUM7QUFDdEMsTUFBTSxxQkFBcUIsR0FBSyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDM0QsTUFBTSx1QkFBdUIsR0FBRyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQWlCbEQsU0FBUyxnQkFBZ0IsQ0FBRSxjQUE0QztJQUNuRSxPQUFPO1FBQ0gsSUFBSSxFQUFLLGNBQWMsQ0FBQyxJQUFJLElBQUksWUFBWTtRQUM1QyxPQUFPLEVBQUUsY0FBYyxDQUFDLE9BQU8sSUFBSSxlQUFlO0tBQ3JELENBQUM7QUFDTixDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUUsZUFBd0M7SUFDMUQsTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLElBQUksSUFBSSxZQUFZLENBQUM7SUFFbEQsSUFBSSxPQUFPLEdBQUcsZUFBZSxDQUFDO0lBRTlCLHlGQUF5RjtJQUN6Riw0REFBNEQ7SUFDNUQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssU0FBUyxFQUFFO1FBQ2xDLElBQUksZUFBZSxDQUFDLFdBQVc7WUFDM0IsT0FBTyxHQUFHLGVBQWUsQ0FBQyxXQUFXLENBQUM7S0FDN0M7U0FDSSxJQUFJLGVBQWUsQ0FBQyxPQUFPO1FBQzVCLE9BQU8sR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDO0lBRXRDLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDN0IsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFFLGFBQTBDO0lBQ2hFLE9BQU87UUFDSCxJQUFJLEVBQUssYUFBYSxDQUFDLElBQUksSUFBSSxZQUFZO1FBQzNDLE9BQU8sRUFBRSxhQUFhLENBQUMsT0FBTyxJQUFJLGVBQWU7S0FDcEQsQ0FBQztBQUNOLENBQUM7QUFFRCxTQUFTLHdCQUF3QixDQUFFLE9BQXdCLEVBQUUsRUFBbUI7SUFDNUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLE9BQU8sTUFBTSxFQUFFLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUMzRSxDQUFDO0FBRUQsU0FBd0IsY0FBYyxDQUFFLFlBQW9CLEVBQUU7SUFDMUQsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUM7SUFDdEYsTUFBTSxPQUFPLEdBQVcsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xFLE1BQU0sRUFBRSxHQUFnQixXQUFXLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELE1BQU0sTUFBTSxHQUFZLGVBQWUsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEUsTUFBTSxlQUFlLEdBQUcsd0JBQXdCLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRTlELE9BQU87UUFDSCxJQUFJLEVBQWEsT0FBTyxDQUFDLElBQUk7UUFDN0IsT0FBTyxFQUFVLE9BQU8sQ0FBQyxPQUFPO1FBQ2hDLFFBQVEsRUFBUyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxxQkFBcUI7UUFDdkUsRUFBRTtRQUNGLE1BQU07UUFDTixlQUFlLEVBQUUsZUFBZTtRQUNoQyxTQUFTO0tBQ1osQ0FBQztBQUNOLENBQUM7QUFoQkQsaUNBZ0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJvd3NlciBmcm9tICdib3dzZXInO1xuXG5jb25zdCBERUZBVUxUX05BTUUgICAgICAgICAgICA9ICdPdGhlcic7XG5jb25zdCBERUZBVUxUX1ZFUlNJT04gICAgICAgICA9ICcwLjAnO1xuY29uc3QgREVGQVVMVF9QTEFURk9STV9UWVBFICAgPSBERUZBVUxUX05BTUUudG9Mb3dlckNhc2UoKTtcbmNvbnN0IEVNUFRZX1BBUlNFRF9VU0VSX0FHRU5UID0gQm93c2VyLnBhcnNlKCcgJyk7XG5cbmludGVyZmFjZSBQYXJzZWRDb21wb25lbnQge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBQYXJzZWRVc2VyQWdlbnQge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB2ZXJzaW9uOiBzdHJpbmc7XG4gICAgcGxhdGZvcm06IHN0cmluZztcbiAgICBvczogUGFyc2VkQ29tcG9uZW50O1xuICAgIGVuZ2luZTogUGFyc2VkQ29tcG9uZW50O1xuICAgIHByZXR0eVVzZXJBZ2VudDogc3RyaW5nO1xuICAgIHVzZXJBZ2VudDogc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVCcm93c2VyIChicm93c2VyRGV0YWlsczogQm93c2VyLlBhcnNlci5Ccm93c2VyRGV0YWlscyk6IFBhcnNlZENvbXBvbmVudCB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogICAgYnJvd3NlckRldGFpbHMubmFtZSB8fCBERUZBVUxUX05BTUUsXG4gICAgICAgIHZlcnNpb246IGJyb3dzZXJEZXRhaWxzLnZlcnNpb24gfHwgREVGQVVMVF9WRVJTSU9OXG4gICAgfTtcbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlT3MgKHBhcnNlZE9zRGV0YWlsczogQm93c2VyLlBhcnNlci5PU0RldGFpbHMpOiBQYXJzZWRDb21wb25lbnQge1xuICAgIGNvbnN0IG5hbWUgPSBwYXJzZWRPc0RldGFpbHMubmFtZSB8fCBERUZBVUxUX05BTUU7XG5cbiAgICBsZXQgdmVyc2lvbiA9IERFRkFVTFRfVkVSU0lPTjtcblxuICAgIC8vIE5PVEU6IGEgJ3ZlcnNpb25OYW1lJyBwcm9wZXJ0eSB2YWx1ZSBpcyBtb3JlIHJlYWRhYmxlIGluIHRoZSBjYXNlIG9mIFdpbmRvd3MgKEdILTQ4MSk6XG4gICAgLy8gV2luZG93cyA4LjE6IG9zLnZlcnNpb246IFwiTlQgNi4zXCIsIG9zLnZlcnNpb25OYW1lOiBcIjguMVwiLlxuICAgIGlmIChuYW1lLnRvTG93ZXJDYXNlKCkgPT09ICd3aW5kb3dzJykge1xuICAgICAgICBpZiAocGFyc2VkT3NEZXRhaWxzLnZlcnNpb25OYW1lKVxuICAgICAgICAgICAgdmVyc2lvbiA9IHBhcnNlZE9zRGV0YWlscy52ZXJzaW9uTmFtZTtcbiAgICB9XG4gICAgZWxzZSBpZiAocGFyc2VkT3NEZXRhaWxzLnZlcnNpb24pXG4gICAgICAgIHZlcnNpb24gPSBwYXJzZWRPc0RldGFpbHMudmVyc2lvbjtcblxuICAgIHJldHVybiB7IG5hbWUsIHZlcnNpb24gfTtcbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlRW5naW5lIChlbmdpbmVEZXRhaWxzOiBCb3dzZXIuUGFyc2VyLkVuZ2luZURldGFpbHMpOiBQYXJzZWRDb21wb25lbnQge1xuICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6ICAgIGVuZ2luZURldGFpbHMubmFtZSB8fCBERUZBVUxUX05BTUUsXG4gICAgICAgIHZlcnNpb246IGVuZ2luZURldGFpbHMudmVyc2lvbiB8fCBERUZBVUxUX1ZFUlNJT05cbiAgICB9O1xufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVQcmV0dHlVc2VyQWdlbnQgKGJyb3dzZXI6IFBhcnNlZENvbXBvbmVudCwgb3M6IFBhcnNlZENvbXBvbmVudCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke2Jyb3dzZXIubmFtZX0gJHticm93c2VyLnZlcnNpb259IC8gJHtvcy5uYW1lfSAke29zLnZlcnNpb259YDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcGFyc2VVc2VyQWdlbnQgKHVzZXJBZ2VudDogc3RyaW5nID0gJycpOiBQYXJzZWRVc2VyQWdlbnQge1xuICAgIGNvbnN0IHBhcnNlZFVzZXJBZ2VudCA9IHVzZXJBZ2VudCA/IEJvd3Nlci5wYXJzZSh1c2VyQWdlbnQpIDogRU1QVFlfUEFSU0VEX1VTRVJfQUdFTlQ7XG4gICAgY29uc3QgYnJvd3NlciAgICAgICAgID0gY2FsY3VsYXRlQnJvd3NlcihwYXJzZWRVc2VyQWdlbnQuYnJvd3Nlcik7XG4gICAgY29uc3Qgb3MgICAgICAgICAgICAgID0gY2FsY3VsYXRlT3MocGFyc2VkVXNlckFnZW50Lm9zKTtcbiAgICBjb25zdCBlbmdpbmUgICAgICAgICAgPSBjYWxjdWxhdGVFbmdpbmUocGFyc2VkVXNlckFnZW50LmVuZ2luZSk7XG4gICAgY29uc3QgcHJldHR5VXNlckFnZW50ID0gY2FsY3VsYXRlUHJldHR5VXNlckFnZW50KGJyb3dzZXIsIG9zKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6ICAgICAgICAgICAgYnJvd3Nlci5uYW1lLFxuICAgICAgICB2ZXJzaW9uOiAgICAgICAgIGJyb3dzZXIudmVyc2lvbixcbiAgICAgICAgcGxhdGZvcm06ICAgICAgICBwYXJzZWRVc2VyQWdlbnQucGxhdGZvcm0udHlwZSB8fCBERUZBVUxUX1BMQVRGT1JNX1RZUEUsXG4gICAgICAgIG9zLFxuICAgICAgICBlbmdpbmUsXG4gICAgICAgIHByZXR0eVVzZXJBZ2VudDogcHJldHR5VXNlckFnZW50LFxuICAgICAgICB1c2VyQWdlbnRcbiAgICB9O1xufVxuIl19
\No newline at end of file