@tinkoff/user-agent 0.4.475 → 0.4.480
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.
package/lib/client-hints.es.js
CHANGED
|
@@ -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:
|
|
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:
|
|
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: {
|
package/lib/client-hints.js
CHANGED
|
@@ -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:
|
|
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:
|
|
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.4.
|
|
3
|
+
"version": "0.4.480",
|
|
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": "2.160.
|
|
32
|
+
"@tramvai/cli": "2.160.17",
|
|
33
33
|
"@types/ua-parser-js": "^0.7.33"
|
|
34
34
|
},
|
|
35
35
|
"license": "Apache-2.0"
|