@tinkoff/user-agent 0.7.27 → 0.7.47
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 +10 -18
- package/lib/client-hints.js +10 -18
- package/lib/satisfies.es.js +2 -3
- package/lib/satisfies.js +2 -3
- package/package.json +3 -3
package/lib/client-hints.es.js
CHANGED
|
@@ -16,19 +16,17 @@ const BACKWARD_COMPATIBILITY_OS_NAME = {
|
|
|
16
16
|
macOS: 'Mac OS',
|
|
17
17
|
};
|
|
18
18
|
const parseQuotedString = (str) => {
|
|
19
|
-
var _a;
|
|
20
19
|
if (!str) {
|
|
21
20
|
return str;
|
|
22
21
|
}
|
|
23
22
|
try {
|
|
24
|
-
return
|
|
23
|
+
return JSON.parse(str)?.trim();
|
|
25
24
|
}
|
|
26
25
|
catch (err) {
|
|
27
26
|
return str;
|
|
28
27
|
}
|
|
29
28
|
};
|
|
30
29
|
const parseBrowserFromString = (brandsList) => {
|
|
31
|
-
var _a, _b;
|
|
32
30
|
const browser = {
|
|
33
31
|
name: undefined,
|
|
34
32
|
version: undefined,
|
|
@@ -40,15 +38,14 @@ const parseBrowserFromString = (brandsList) => {
|
|
|
40
38
|
version: undefined,
|
|
41
39
|
};
|
|
42
40
|
brandsList.split(',').forEach((entry) => {
|
|
43
|
-
var _a, _b;
|
|
44
41
|
const [name, version] = entry.split(/;\s*v=/).map(parseQuotedString);
|
|
45
42
|
if (name && KNOWN_VENDORS.has(name)) {
|
|
46
|
-
browser.name =
|
|
43
|
+
browser.name = BACKWARD_COMPATIBILITY_BROWSER_NAME[name] ?? name.toLowerCase();
|
|
47
44
|
browser.version = version;
|
|
48
45
|
browser.major = version;
|
|
49
46
|
}
|
|
50
47
|
if (name && KNOWN_ENGINES.has(name)) {
|
|
51
|
-
engine.name =
|
|
48
|
+
engine.name = BACKWARD_COMPATIBILITY_ENGINE_NAME[name] ?? name.toLowerCase();
|
|
52
49
|
engine.version = version;
|
|
53
50
|
}
|
|
54
51
|
});
|
|
@@ -56,11 +53,10 @@ const parseBrowserFromString = (brandsList) => {
|
|
|
56
53
|
browser.name = engine.name;
|
|
57
54
|
browser.version = engine.version;
|
|
58
55
|
}
|
|
59
|
-
browser.browserEngine = getBrowserEngine(
|
|
56
|
+
browser.browserEngine = getBrowserEngine(browser.name?.toLowerCase(), engine.name?.toLowerCase());
|
|
60
57
|
return { browser, engine };
|
|
61
58
|
};
|
|
62
59
|
const parseBrowserFromUserAgentData = (brands) => {
|
|
63
|
-
var _a, _b;
|
|
64
60
|
const browser = {
|
|
65
61
|
name: undefined,
|
|
66
62
|
version: undefined,
|
|
@@ -72,14 +68,13 @@ const parseBrowserFromUserAgentData = (brands) => {
|
|
|
72
68
|
version: undefined,
|
|
73
69
|
};
|
|
74
70
|
brands.forEach(({ brand, version }) => {
|
|
75
|
-
var _a, _b;
|
|
76
71
|
if (KNOWN_VENDORS.has(brand)) {
|
|
77
|
-
browser.name =
|
|
72
|
+
browser.name = BACKWARD_COMPATIBILITY_BROWSER_NAME[brand] ?? brand.toLowerCase();
|
|
78
73
|
browser.version = version;
|
|
79
74
|
[browser.major] = version.split('.');
|
|
80
75
|
}
|
|
81
76
|
if (KNOWN_ENGINES.has(brand)) {
|
|
82
|
-
engine.name =
|
|
77
|
+
engine.name = BACKWARD_COMPATIBILITY_ENGINE_NAME[brand] ?? brand.toLowerCase();
|
|
83
78
|
engine.version = version;
|
|
84
79
|
}
|
|
85
80
|
});
|
|
@@ -87,15 +82,14 @@ const parseBrowserFromUserAgentData = (brands) => {
|
|
|
87
82
|
browser.name = engine.name;
|
|
88
83
|
browser.version = engine.version;
|
|
89
84
|
}
|
|
90
|
-
browser.browserEngine = getBrowserEngine(
|
|
85
|
+
browser.browserEngine = getBrowserEngine(browser.name?.toLowerCase(), engine.name?.toLowerCase());
|
|
91
86
|
return { browser, engine };
|
|
92
87
|
};
|
|
93
88
|
const getBackwardCompatibleOsName = (payload) => {
|
|
94
|
-
var _a;
|
|
95
89
|
if (payload === undefined) {
|
|
96
90
|
return undefined;
|
|
97
91
|
}
|
|
98
|
-
return
|
|
92
|
+
return BACKWARD_COMPATIBILITY_OS_NAME[payload] ?? payload;
|
|
99
93
|
};
|
|
100
94
|
/**
|
|
101
95
|
*
|
|
@@ -113,7 +107,6 @@ const getBackwardCompatibleOsName = (payload) => {
|
|
|
113
107
|
* @returns
|
|
114
108
|
*/
|
|
115
109
|
const parseClientHintsHeaders = (headers) => {
|
|
116
|
-
var _a;
|
|
117
110
|
const { browser, engine } = parseBrowserFromString(headers['sec-ch-ua-full-version-list'] || headers['sec-ch-ua']);
|
|
118
111
|
const osName = parseQuotedString(headers['sec-ch-ua-platform']);
|
|
119
112
|
const mobileOS = getMobileOs(osName);
|
|
@@ -127,7 +120,7 @@ const parseClientHintsHeaders = (headers) => {
|
|
|
127
120
|
},
|
|
128
121
|
cpu: {
|
|
129
122
|
architecture: architecture
|
|
130
|
-
?
|
|
123
|
+
? BACKWARD_COMPATIBILITY_ARCH[architecture] ?? architecture
|
|
131
124
|
: architecture,
|
|
132
125
|
},
|
|
133
126
|
mobileOS,
|
|
@@ -156,7 +149,6 @@ const parseClientHintsHeaders = (headers) => {
|
|
|
156
149
|
* const clientHints = parseClientHintsUserAgentData(window.navigator.userAgentData)
|
|
157
150
|
*/
|
|
158
151
|
const parseClientHintsUserAgentData = (payload) => {
|
|
159
|
-
var _a;
|
|
160
152
|
const { browser, engine } = parseBrowserFromUserAgentData(payload.fullVersionList || payload.brands || []);
|
|
161
153
|
return {
|
|
162
154
|
browser,
|
|
@@ -167,7 +159,7 @@ const parseClientHintsUserAgentData = (payload) => {
|
|
|
167
159
|
},
|
|
168
160
|
cpu: {
|
|
169
161
|
architecture: payload.architecture
|
|
170
|
-
?
|
|
162
|
+
? BACKWARD_COMPATIBILITY_ARCH[payload.architecture] ?? payload.architecture
|
|
171
163
|
: payload.architecture,
|
|
172
164
|
},
|
|
173
165
|
mobileOS: getMobileOs(payload.platform),
|
package/lib/client-hints.js
CHANGED
|
@@ -20,19 +20,17 @@ const BACKWARD_COMPATIBILITY_OS_NAME = {
|
|
|
20
20
|
macOS: 'Mac OS',
|
|
21
21
|
};
|
|
22
22
|
const parseQuotedString = (str) => {
|
|
23
|
-
var _a;
|
|
24
23
|
if (!str) {
|
|
25
24
|
return str;
|
|
26
25
|
}
|
|
27
26
|
try {
|
|
28
|
-
return
|
|
27
|
+
return JSON.parse(str)?.trim();
|
|
29
28
|
}
|
|
30
29
|
catch (err) {
|
|
31
30
|
return str;
|
|
32
31
|
}
|
|
33
32
|
};
|
|
34
33
|
const parseBrowserFromString = (brandsList) => {
|
|
35
|
-
var _a, _b;
|
|
36
34
|
const browser = {
|
|
37
35
|
name: undefined,
|
|
38
36
|
version: undefined,
|
|
@@ -44,15 +42,14 @@ const parseBrowserFromString = (brandsList) => {
|
|
|
44
42
|
version: undefined,
|
|
45
43
|
};
|
|
46
44
|
brandsList.split(',').forEach((entry) => {
|
|
47
|
-
var _a, _b;
|
|
48
45
|
const [name, version] = entry.split(/;\s*v=/).map(parseQuotedString);
|
|
49
46
|
if (name && KNOWN_VENDORS.has(name)) {
|
|
50
|
-
browser.name =
|
|
47
|
+
browser.name = BACKWARD_COMPATIBILITY_BROWSER_NAME[name] ?? name.toLowerCase();
|
|
51
48
|
browser.version = version;
|
|
52
49
|
browser.major = version;
|
|
53
50
|
}
|
|
54
51
|
if (name && KNOWN_ENGINES.has(name)) {
|
|
55
|
-
engine.name =
|
|
52
|
+
engine.name = BACKWARD_COMPATIBILITY_ENGINE_NAME[name] ?? name.toLowerCase();
|
|
56
53
|
engine.version = version;
|
|
57
54
|
}
|
|
58
55
|
});
|
|
@@ -60,11 +57,10 @@ const parseBrowserFromString = (brandsList) => {
|
|
|
60
57
|
browser.name = engine.name;
|
|
61
58
|
browser.version = engine.version;
|
|
62
59
|
}
|
|
63
|
-
browser.browserEngine = utils.getBrowserEngine(
|
|
60
|
+
browser.browserEngine = utils.getBrowserEngine(browser.name?.toLowerCase(), engine.name?.toLowerCase());
|
|
64
61
|
return { browser, engine };
|
|
65
62
|
};
|
|
66
63
|
const parseBrowserFromUserAgentData = (brands) => {
|
|
67
|
-
var _a, _b;
|
|
68
64
|
const browser = {
|
|
69
65
|
name: undefined,
|
|
70
66
|
version: undefined,
|
|
@@ -76,14 +72,13 @@ const parseBrowserFromUserAgentData = (brands) => {
|
|
|
76
72
|
version: undefined,
|
|
77
73
|
};
|
|
78
74
|
brands.forEach(({ brand, version }) => {
|
|
79
|
-
var _a, _b;
|
|
80
75
|
if (KNOWN_VENDORS.has(brand)) {
|
|
81
|
-
browser.name =
|
|
76
|
+
browser.name = BACKWARD_COMPATIBILITY_BROWSER_NAME[brand] ?? brand.toLowerCase();
|
|
82
77
|
browser.version = version;
|
|
83
78
|
[browser.major] = version.split('.');
|
|
84
79
|
}
|
|
85
80
|
if (KNOWN_ENGINES.has(brand)) {
|
|
86
|
-
engine.name =
|
|
81
|
+
engine.name = BACKWARD_COMPATIBILITY_ENGINE_NAME[brand] ?? brand.toLowerCase();
|
|
87
82
|
engine.version = version;
|
|
88
83
|
}
|
|
89
84
|
});
|
|
@@ -91,15 +86,14 @@ const parseBrowserFromUserAgentData = (brands) => {
|
|
|
91
86
|
browser.name = engine.name;
|
|
92
87
|
browser.version = engine.version;
|
|
93
88
|
}
|
|
94
|
-
browser.browserEngine = utils.getBrowserEngine(
|
|
89
|
+
browser.browserEngine = utils.getBrowserEngine(browser.name?.toLowerCase(), engine.name?.toLowerCase());
|
|
95
90
|
return { browser, engine };
|
|
96
91
|
};
|
|
97
92
|
const getBackwardCompatibleOsName = (payload) => {
|
|
98
|
-
var _a;
|
|
99
93
|
if (payload === undefined) {
|
|
100
94
|
return undefined;
|
|
101
95
|
}
|
|
102
|
-
return
|
|
96
|
+
return BACKWARD_COMPATIBILITY_OS_NAME[payload] ?? payload;
|
|
103
97
|
};
|
|
104
98
|
/**
|
|
105
99
|
*
|
|
@@ -117,7 +111,6 @@ const getBackwardCompatibleOsName = (payload) => {
|
|
|
117
111
|
* @returns
|
|
118
112
|
*/
|
|
119
113
|
const parseClientHintsHeaders = (headers) => {
|
|
120
|
-
var _a;
|
|
121
114
|
const { browser, engine } = parseBrowserFromString(headers['sec-ch-ua-full-version-list'] || headers['sec-ch-ua']);
|
|
122
115
|
const osName = parseQuotedString(headers['sec-ch-ua-platform']);
|
|
123
116
|
const mobileOS = utils.getMobileOs(osName);
|
|
@@ -131,7 +124,7 @@ const parseClientHintsHeaders = (headers) => {
|
|
|
131
124
|
},
|
|
132
125
|
cpu: {
|
|
133
126
|
architecture: architecture
|
|
134
|
-
?
|
|
127
|
+
? BACKWARD_COMPATIBILITY_ARCH[architecture] ?? architecture
|
|
135
128
|
: architecture,
|
|
136
129
|
},
|
|
137
130
|
mobileOS,
|
|
@@ -160,7 +153,6 @@ const parseClientHintsHeaders = (headers) => {
|
|
|
160
153
|
* const clientHints = parseClientHintsUserAgentData(window.navigator.userAgentData)
|
|
161
154
|
*/
|
|
162
155
|
const parseClientHintsUserAgentData = (payload) => {
|
|
163
|
-
var _a;
|
|
164
156
|
const { browser, engine } = parseBrowserFromUserAgentData(payload.fullVersionList || payload.brands || []);
|
|
165
157
|
return {
|
|
166
158
|
browser,
|
|
@@ -171,7 +163,7 @@ const parseClientHintsUserAgentData = (payload) => {
|
|
|
171
163
|
},
|
|
172
164
|
cpu: {
|
|
173
165
|
architecture: payload.architecture
|
|
174
|
-
?
|
|
166
|
+
? BACKWARD_COMPATIBILITY_ARCH[payload.architecture] ?? payload.architecture
|
|
175
167
|
: payload.architecture,
|
|
176
168
|
},
|
|
177
169
|
mobileOS: utils.getMobileOs(payload.platform),
|
package/lib/satisfies.es.js
CHANGED
|
@@ -50,7 +50,6 @@ const normalizedBrowserslist = (query) => {
|
|
|
50
50
|
return result;
|
|
51
51
|
};
|
|
52
52
|
const satisfies = (userAgent, browserslistConfig, { env = 'defaults', forceMinimumUnknownVersions = false } = {}) => {
|
|
53
|
-
var _a, _b;
|
|
54
53
|
const ua = isString(userAgent) ? parseUserAgentHeader(userAgent) : userAgent;
|
|
55
54
|
const { engine: { name: engineName = '', version: engineVersion }, device: { type = '' } = {}, } = ua;
|
|
56
55
|
let { browser: { name: browserName = '', version: browserVersion = '' } = {} } = ua;
|
|
@@ -69,7 +68,7 @@ const satisfies = (userAgent, browserslistConfig, { env = 'defaults', forceMinim
|
|
|
69
68
|
if (!browserName) {
|
|
70
69
|
return null;
|
|
71
70
|
}
|
|
72
|
-
const targets =
|
|
71
|
+
const targets = browserslistConfig ?? browserslistFileConfig[env] ?? browserslistTinkoffConfig[env];
|
|
73
72
|
const browsers = normalizedBrowserslist(targets);
|
|
74
73
|
// Browsers from query may not be present in https://caniuse.com/usage-table, and browserslist will return higher versions than requested.
|
|
75
74
|
// Example of this problem - https://github.com/babel/babel/issues/8545
|
|
@@ -95,7 +94,7 @@ const satisfies = (userAgent, browserslistConfig, { env = 'defaults', forceMinim
|
|
|
95
94
|
let hasEntry = false;
|
|
96
95
|
if (browserName in browsers) {
|
|
97
96
|
const browserInfo = browsers[browserName];
|
|
98
|
-
const browserInfoVersion =
|
|
97
|
+
const browserInfoVersion = browserInfo.any ?? browserInfo[deviceType];
|
|
99
98
|
hasEntry = !!browserInfoVersion;
|
|
100
99
|
if (checkVersion >= browserInfoVersion) {
|
|
101
100
|
return true;
|
package/lib/satisfies.js
CHANGED
|
@@ -61,7 +61,6 @@ const normalizedBrowserslist = (query) => {
|
|
|
61
61
|
return result;
|
|
62
62
|
};
|
|
63
63
|
const satisfies = (userAgent$1, browserslistConfig, { env = 'defaults', forceMinimumUnknownVersions = false } = {}) => {
|
|
64
|
-
var _a, _b;
|
|
65
64
|
const ua = isString__default["default"](userAgent$1) ? userAgent.parseUserAgentHeader(userAgent$1) : userAgent$1;
|
|
66
65
|
const { engine: { name: engineName = '', version: engineVersion }, device: { type = '' } = {}, } = ua;
|
|
67
66
|
let { browser: { name: browserName = '', version: browserVersion = '' } = {} } = ua;
|
|
@@ -80,7 +79,7 @@ const satisfies = (userAgent$1, browserslistConfig, { env = 'defaults', forceMin
|
|
|
80
79
|
if (!browserName) {
|
|
81
80
|
return null;
|
|
82
81
|
}
|
|
83
|
-
const targets =
|
|
82
|
+
const targets = browserslistConfig ?? browserslistFileConfig__default["default"][env] ?? browserslistTinkoffConfig__default["default"][env];
|
|
84
83
|
const browsers = normalizedBrowserslist(targets);
|
|
85
84
|
// Browsers from query may not be present in https://caniuse.com/usage-table, and browserslist will return higher versions than requested.
|
|
86
85
|
// Example of this problem - https://github.com/babel/babel/issues/8545
|
|
@@ -106,7 +105,7 @@ const satisfies = (userAgent$1, browserslistConfig, { env = 'defaults', forceMin
|
|
|
106
105
|
let hasEntry = false;
|
|
107
106
|
if (browserName in browsers) {
|
|
108
107
|
const browserInfo = browsers[browserName];
|
|
109
|
-
const browserInfoVersion =
|
|
108
|
+
const browserInfoVersion = browserInfo.any ?? browserInfo[deviceType];
|
|
110
109
|
hasEntry = !!browserInfoVersion;
|
|
111
110
|
if (checkVersion >= browserInfoVersion) {
|
|
112
111
|
return true;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tinkoff/user-agent",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.47",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "lib/index.es.js",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"watch": "tsc -w"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@tinkoff/browserslist-config": "0.5.
|
|
21
|
+
"@tinkoff/browserslist-config": "0.5.3",
|
|
22
22
|
"@tinkoff/utils": "^2.1.2",
|
|
23
23
|
"browserslist": "^4.16.7",
|
|
24
24
|
"tslib": "^2.4.0",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"user-agent-data-types": "^0.3.1"
|
|
30
30
|
},
|
|
31
31
|
"peerDependencies": {
|
|
32
|
-
"@tramvai/cli": "5.10
|
|
32
|
+
"@tramvai/cli": "5.14.10",
|
|
33
33
|
"@types/ua-parser-js": "^0.7.33"
|
|
34
34
|
},
|
|
35
35
|
"license": "Apache-2.0"
|