@tinkoff/user-agent 0.5.18 → 0.5.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,6 +4,13 @@ const KNOWN_VENDORS = new Set(['Opera', 'Google Chrome', 'Microsoft Edge', 'Fire
4
4
  const KNOWN_ENGINES = new Set(['Chromium']);
5
5
  const BACKWARD_COMPATIBILITY_BROWSER_NAME = {
6
6
  'Google Chrome': 'chrome',
7
+ 'Microsoft Edge': 'edge',
8
+ };
9
+ const BACKWARD_COMPATIBILITY_ENGINE_NAME = {
10
+ Chromium: 'Blink',
11
+ };
12
+ const BACKWARD_COMPATIBILITY_ARCH = {
13
+ x86: 'amd64',
7
14
  };
8
15
  const BACKWARD_COMPATIBILITY_OS_NAME = {
9
16
  macOS: 'Mac OS',
@@ -21,6 +28,7 @@ const parseQuotedString = (str) => {
21
28
  }
22
29
  };
23
30
  const parseBrowserFromString = (brandsList) => {
31
+ var _a, _b;
24
32
  const browser = {
25
33
  name: undefined,
26
34
  version: undefined,
@@ -32,7 +40,7 @@ const parseBrowserFromString = (brandsList) => {
32
40
  version: undefined,
33
41
  };
34
42
  brandsList.split(',').forEach((entry) => {
35
- var _a;
43
+ var _a, _b;
36
44
  const [name, version] = entry.split(/;\s*v=/).map(parseQuotedString);
37
45
  if (name && KNOWN_VENDORS.has(name)) {
38
46
  browser.name = (_a = BACKWARD_COMPATIBILITY_BROWSER_NAME[name]) !== null && _a !== void 0 ? _a : name.toLowerCase();
@@ -40,7 +48,7 @@ const parseBrowserFromString = (brandsList) => {
40
48
  browser.major = version;
41
49
  }
42
50
  if (name && KNOWN_ENGINES.has(name)) {
43
- engine.name = name.toLowerCase();
51
+ engine.name = (_b = BACKWARD_COMPATIBILITY_ENGINE_NAME[name]) !== null && _b !== void 0 ? _b : name.toLowerCase();
44
52
  engine.version = version;
45
53
  }
46
54
  });
@@ -48,10 +56,11 @@ const parseBrowserFromString = (brandsList) => {
48
56
  browser.name = engine.name;
49
57
  browser.version = engine.version;
50
58
  }
51
- browser.browserEngine = getBrowserEngine(browser.name, engine.name);
59
+ browser.browserEngine = getBrowserEngine((_a = browser.name) === null || _a === void 0 ? void 0 : _a.toLowerCase(), (_b = engine.name) === null || _b === void 0 ? void 0 : _b.toLowerCase());
52
60
  return { browser, engine };
53
61
  };
54
62
  const parseBrowserFromUserAgentData = (brands) => {
63
+ var _a, _b;
55
64
  const browser = {
56
65
  name: undefined,
57
66
  version: undefined,
@@ -63,14 +72,14 @@ const parseBrowserFromUserAgentData = (brands) => {
63
72
  version: undefined,
64
73
  };
65
74
  brands.forEach(({ brand, version }) => {
66
- var _a;
75
+ var _a, _b;
67
76
  if (KNOWN_VENDORS.has(brand)) {
68
77
  browser.name = (_a = BACKWARD_COMPATIBILITY_BROWSER_NAME[brand]) !== null && _a !== void 0 ? _a : brand.toLowerCase();
69
78
  browser.version = version;
70
79
  [browser.major] = version.split('.');
71
80
  }
72
81
  if (KNOWN_ENGINES.has(brand)) {
73
- engine.name = brand.toLowerCase();
82
+ engine.name = (_b = BACKWARD_COMPATIBILITY_ENGINE_NAME[brand]) !== null && _b !== void 0 ? _b : brand.toLowerCase();
74
83
  engine.version = version;
75
84
  }
76
85
  });
@@ -78,7 +87,7 @@ const parseBrowserFromUserAgentData = (brands) => {
78
87
  browser.name = engine.name;
79
88
  browser.version = engine.version;
80
89
  }
81
- browser.browserEngine = getBrowserEngine(browser.name, engine.name);
90
+ browser.browserEngine = getBrowserEngine((_a = browser.name) === null || _a === void 0 ? void 0 : _a.toLowerCase(), (_b = engine.name) === null || _b === void 0 ? void 0 : _b.toLowerCase());
82
91
  return { browser, engine };
83
92
  };
84
93
  const getBackwardCompatibleOsName = (payload) => {
@@ -88,17 +97,6 @@ const getBackwardCompatibleOsName = (payload) => {
88
97
  }
89
98
  return (_a = BACKWARD_COMPATIBILITY_OS_NAME[payload]) !== null && _a !== void 0 ? _a : payload;
90
99
  };
91
- /**
92
- * Method to convert arch + bitness to `ua-parser-js` compatible format.
93
- *
94
- * @see ICPU
95
- */
96
- const getArchitecture = (arch, bitness) => {
97
- if (arch === undefined) {
98
- return undefined;
99
- }
100
- return `${arch}${bitness !== null && bitness !== void 0 ? bitness : ''}`;
101
- };
102
100
  /**
103
101
  *
104
102
  * @description
@@ -115,9 +113,11 @@ const getArchitecture = (arch, bitness) => {
115
113
  * @returns
116
114
  */
117
115
  const parseClientHintsHeaders = (headers) => {
116
+ var _a;
118
117
  const { browser, engine } = parseBrowserFromString(headers['sec-ch-ua-full-version-list'] || headers['sec-ch-ua']);
119
118
  const osName = parseQuotedString(headers['sec-ch-ua-platform']);
120
119
  const mobileOS = getMobileOs(osName);
120
+ const architecture = parseQuotedString(headers['sec-ch-ua-arch']);
121
121
  return {
122
122
  browser,
123
123
  engine,
@@ -126,7 +126,9 @@ const parseClientHintsHeaders = (headers) => {
126
126
  version: parseQuotedString(headers['sec-ch-ua-platform-version']),
127
127
  },
128
128
  cpu: {
129
- architecture: getArchitecture(parseQuotedString(headers['sec-ch-ua-arch']), parseQuotedString(headers['sec-ch-ua-bitness'])),
129
+ architecture: architecture
130
+ ? (_a = BACKWARD_COMPATIBILITY_ARCH[architecture]) !== null && _a !== void 0 ? _a : architecture
131
+ : architecture,
130
132
  },
131
133
  mobileOS,
132
134
  device: {
@@ -154,6 +156,7 @@ const parseClientHintsHeaders = (headers) => {
154
156
  * const clientHints = parseClientHintsUserAgentData(window.navigator.userAgentData)
155
157
  */
156
158
  const parseClientHintsUserAgentData = (payload) => {
159
+ var _a;
157
160
  const { browser, engine } = parseBrowserFromUserAgentData(payload.fullVersionList || payload.brands || []);
158
161
  return {
159
162
  browser,
@@ -163,7 +166,9 @@ const parseClientHintsUserAgentData = (payload) => {
163
166
  version: payload.platformVersion,
164
167
  },
165
168
  cpu: {
166
- architecture: getArchitecture(payload.architecture, payload.bitness),
169
+ architecture: payload.architecture
170
+ ? (_a = BACKWARD_COMPATIBILITY_ARCH[payload.architecture]) !== null && _a !== void 0 ? _a : payload.architecture
171
+ : payload.architecture,
167
172
  },
168
173
  mobileOS: getMobileOs(payload.platform),
169
174
  device: {
@@ -8,6 +8,13 @@ const KNOWN_VENDORS = new Set(['Opera', 'Google Chrome', 'Microsoft Edge', 'Fire
8
8
  const KNOWN_ENGINES = new Set(['Chromium']);
9
9
  const BACKWARD_COMPATIBILITY_BROWSER_NAME = {
10
10
  'Google Chrome': 'chrome',
11
+ 'Microsoft Edge': 'edge',
12
+ };
13
+ const BACKWARD_COMPATIBILITY_ENGINE_NAME = {
14
+ Chromium: 'Blink',
15
+ };
16
+ const BACKWARD_COMPATIBILITY_ARCH = {
17
+ x86: 'amd64',
11
18
  };
12
19
  const BACKWARD_COMPATIBILITY_OS_NAME = {
13
20
  macOS: 'Mac OS',
@@ -25,6 +32,7 @@ const parseQuotedString = (str) => {
25
32
  }
26
33
  };
27
34
  const parseBrowserFromString = (brandsList) => {
35
+ var _a, _b;
28
36
  const browser = {
29
37
  name: undefined,
30
38
  version: undefined,
@@ -36,7 +44,7 @@ const parseBrowserFromString = (brandsList) => {
36
44
  version: undefined,
37
45
  };
38
46
  brandsList.split(',').forEach((entry) => {
39
- var _a;
47
+ var _a, _b;
40
48
  const [name, version] = entry.split(/;\s*v=/).map(parseQuotedString);
41
49
  if (name && KNOWN_VENDORS.has(name)) {
42
50
  browser.name = (_a = BACKWARD_COMPATIBILITY_BROWSER_NAME[name]) !== null && _a !== void 0 ? _a : name.toLowerCase();
@@ -44,7 +52,7 @@ const parseBrowserFromString = (brandsList) => {
44
52
  browser.major = version;
45
53
  }
46
54
  if (name && KNOWN_ENGINES.has(name)) {
47
- engine.name = name.toLowerCase();
55
+ engine.name = (_b = BACKWARD_COMPATIBILITY_ENGINE_NAME[name]) !== null && _b !== void 0 ? _b : name.toLowerCase();
48
56
  engine.version = version;
49
57
  }
50
58
  });
@@ -52,10 +60,11 @@ const parseBrowserFromString = (brandsList) => {
52
60
  browser.name = engine.name;
53
61
  browser.version = engine.version;
54
62
  }
55
- browser.browserEngine = utils.getBrowserEngine(browser.name, engine.name);
63
+ browser.browserEngine = utils.getBrowserEngine((_a = browser.name) === null || _a === void 0 ? void 0 : _a.toLowerCase(), (_b = engine.name) === null || _b === void 0 ? void 0 : _b.toLowerCase());
56
64
  return { browser, engine };
57
65
  };
58
66
  const parseBrowserFromUserAgentData = (brands) => {
67
+ var _a, _b;
59
68
  const browser = {
60
69
  name: undefined,
61
70
  version: undefined,
@@ -67,14 +76,14 @@ const parseBrowserFromUserAgentData = (brands) => {
67
76
  version: undefined,
68
77
  };
69
78
  brands.forEach(({ brand, version }) => {
70
- var _a;
79
+ var _a, _b;
71
80
  if (KNOWN_VENDORS.has(brand)) {
72
81
  browser.name = (_a = BACKWARD_COMPATIBILITY_BROWSER_NAME[brand]) !== null && _a !== void 0 ? _a : brand.toLowerCase();
73
82
  browser.version = version;
74
83
  [browser.major] = version.split('.');
75
84
  }
76
85
  if (KNOWN_ENGINES.has(brand)) {
77
- engine.name = brand.toLowerCase();
86
+ engine.name = (_b = BACKWARD_COMPATIBILITY_ENGINE_NAME[brand]) !== null && _b !== void 0 ? _b : brand.toLowerCase();
78
87
  engine.version = version;
79
88
  }
80
89
  });
@@ -82,7 +91,7 @@ const parseBrowserFromUserAgentData = (brands) => {
82
91
  browser.name = engine.name;
83
92
  browser.version = engine.version;
84
93
  }
85
- browser.browserEngine = utils.getBrowserEngine(browser.name, engine.name);
94
+ browser.browserEngine = utils.getBrowserEngine((_a = browser.name) === null || _a === void 0 ? void 0 : _a.toLowerCase(), (_b = engine.name) === null || _b === void 0 ? void 0 : _b.toLowerCase());
86
95
  return { browser, engine };
87
96
  };
88
97
  const getBackwardCompatibleOsName = (payload) => {
@@ -92,17 +101,6 @@ const getBackwardCompatibleOsName = (payload) => {
92
101
  }
93
102
  return (_a = BACKWARD_COMPATIBILITY_OS_NAME[payload]) !== null && _a !== void 0 ? _a : payload;
94
103
  };
95
- /**
96
- * Method to convert arch + bitness to `ua-parser-js` compatible format.
97
- *
98
- * @see ICPU
99
- */
100
- const getArchitecture = (arch, bitness) => {
101
- if (arch === undefined) {
102
- return undefined;
103
- }
104
- return `${arch}${bitness !== null && bitness !== void 0 ? bitness : ''}`;
105
- };
106
104
  /**
107
105
  *
108
106
  * @description
@@ -119,9 +117,11 @@ const getArchitecture = (arch, bitness) => {
119
117
  * @returns
120
118
  */
121
119
  const parseClientHintsHeaders = (headers) => {
120
+ var _a;
122
121
  const { browser, engine } = parseBrowserFromString(headers['sec-ch-ua-full-version-list'] || headers['sec-ch-ua']);
123
122
  const osName = parseQuotedString(headers['sec-ch-ua-platform']);
124
123
  const mobileOS = utils.getMobileOs(osName);
124
+ const architecture = parseQuotedString(headers['sec-ch-ua-arch']);
125
125
  return {
126
126
  browser,
127
127
  engine,
@@ -130,7 +130,9 @@ const parseClientHintsHeaders = (headers) => {
130
130
  version: parseQuotedString(headers['sec-ch-ua-platform-version']),
131
131
  },
132
132
  cpu: {
133
- architecture: getArchitecture(parseQuotedString(headers['sec-ch-ua-arch']), parseQuotedString(headers['sec-ch-ua-bitness'])),
133
+ architecture: architecture
134
+ ? (_a = BACKWARD_COMPATIBILITY_ARCH[architecture]) !== null && _a !== void 0 ? _a : architecture
135
+ : architecture,
134
136
  },
135
137
  mobileOS,
136
138
  device: {
@@ -158,6 +160,7 @@ const parseClientHintsHeaders = (headers) => {
158
160
  * const clientHints = parseClientHintsUserAgentData(window.navigator.userAgentData)
159
161
  */
160
162
  const parseClientHintsUserAgentData = (payload) => {
163
+ var _a;
161
164
  const { browser, engine } = parseBrowserFromUserAgentData(payload.fullVersionList || payload.brands || []);
162
165
  return {
163
166
  browser,
@@ -167,7 +170,9 @@ const parseClientHintsUserAgentData = (payload) => {
167
170
  version: payload.platformVersion,
168
171
  },
169
172
  cpu: {
170
- architecture: getArchitecture(payload.architecture, payload.bitness),
173
+ architecture: payload.architecture
174
+ ? (_a = BACKWARD_COMPATIBILITY_ARCH[payload.architecture]) !== null && _a !== void 0 ? _a : payload.architecture
175
+ : payload.architecture,
171
176
  },
172
177
  mobileOS: utils.getMobileOs(payload.platform),
173
178
  device: {
@@ -32,7 +32,7 @@ const isSameSiteNoneCompatible = (userAgent) => {
32
32
  if (browserName === 'chrome' || browserName === 'chromium') {
33
33
  return browserMajor < 51 || browserMajor > 66;
34
34
  }
35
- if (engineName === 'blink') {
35
+ if (engineName === 'blink' || engineName === 'chromium') {
36
36
  return engineMajor < 51 || engineMajor > 66;
37
37
  }
38
38
  return true;
@@ -36,7 +36,7 @@ const isSameSiteNoneCompatible = (userAgent) => {
36
36
  if (browserName === 'chrome' || browserName === 'chromium') {
37
37
  return browserMajor < 51 || browserMajor > 66;
38
38
  }
39
- if (engineName === 'blink') {
39
+ if (engineName === 'blink' || engineName === 'chromium') {
40
40
  return engineMajor < 51 || engineMajor > 66;
41
41
  }
42
42
  return true;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tinkoff/user-agent",
3
- "version": "0.5.18",
3
+ "version": "0.5.22",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/index.es.js",
@@ -29,7 +29,7 @@
29
29
  "user-agent-data-types": "^0.3.1"
30
30
  },
31
31
  "peerDependencies": {
32
- "@tramvai/cli": "3.5.0",
32
+ "@tramvai/cli": "3.7.0",
33
33
  "@types/ua-parser-js": "^0.7.33"
34
34
  },
35
35
  "license": "Apache-2.0"