browserslist 4.5.6 → 4.6.0
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/CHANGELOG.md +3 -0
- package/README.md +4 -0
- package/index.js +36 -6
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -499,6 +499,10 @@ Options:
|
|
|
499
499
|
Default is `false.`
|
|
500
500
|
* `dangerousExtend`: Disable security checks for `extend` query.
|
|
501
501
|
Default is `false.`
|
|
502
|
+
* `mobileToDesktop`: Use desktop browsers if Can I Use doesn’t have data
|
|
503
|
+
about this mobile version. For instance, Browserslist will return
|
|
504
|
+
`chrome 20` on `and_chr 20` query (Can I Use has only data only about
|
|
505
|
+
latest versions of mobile browsers). Default is `false`.
|
|
502
506
|
|
|
503
507
|
For non-JS environment and debug purpose you can use CLI tool:
|
|
504
508
|
|
package/index.js
CHANGED
|
@@ -136,11 +136,28 @@ function compareSemver (a, b) {
|
|
|
136
136
|
)
|
|
137
137
|
}
|
|
138
138
|
|
|
139
|
-
function
|
|
139
|
+
function resolveVersion (data, version) {
|
|
140
140
|
if (data.versions.indexOf(version) !== -1) {
|
|
141
141
|
return version
|
|
142
142
|
} else if (browserslist.versionAliases[data.name][version]) {
|
|
143
143
|
return browserslist.versionAliases[data.name][version]
|
|
144
|
+
} else {
|
|
145
|
+
return false
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
function normalizeVersion (data, version, context) {
|
|
150
|
+
var resolved = resolveVersion(data, version)
|
|
151
|
+
if (
|
|
152
|
+
!resolved &&
|
|
153
|
+
context.mobileToDesktop &&
|
|
154
|
+
browserslist.desktopNames[data.name]
|
|
155
|
+
) {
|
|
156
|
+
var alias = checkName(browserslist.desktopNames[data.name])
|
|
157
|
+
resolved = resolveVersion(alias, version)
|
|
158
|
+
}
|
|
159
|
+
if (resolved) {
|
|
160
|
+
return resolved
|
|
144
161
|
} else if (data.versions.length === 1) {
|
|
145
162
|
return data.versions[0]
|
|
146
163
|
} else {
|
|
@@ -274,6 +291,9 @@ function resolve (queries, context) {
|
|
|
274
291
|
* version in direct query.
|
|
275
292
|
* @param {boolean} [opts.dangerousExtend] Disable security checks
|
|
276
293
|
* for extend query.
|
|
294
|
+
* @param {boolean} [opts.mobileToDesktop] Alias mobile browsers to the desktop
|
|
295
|
+
* version when Can I Use doesn't have
|
|
296
|
+
* data about the specified version.
|
|
277
297
|
* @returns {string[]} Array with browser names in Can I Use.
|
|
278
298
|
*
|
|
279
299
|
* @example
|
|
@@ -302,7 +322,8 @@ function browserslist (queries, opts) {
|
|
|
302
322
|
|
|
303
323
|
var context = {
|
|
304
324
|
ignoreUnknownVersions: opts.ignoreUnknownVersions,
|
|
305
|
-
dangerousExtend: opts.dangerousExtend
|
|
325
|
+
dangerousExtend: opts.dangerousExtend,
|
|
326
|
+
mobileToDesktop: opts.mobileToDesktop
|
|
306
327
|
}
|
|
307
328
|
|
|
308
329
|
env.oldDataWarning(browserslist.data)
|
|
@@ -427,6 +448,15 @@ browserslist.aliases = {
|
|
|
427
448
|
qqandroid: 'and_qq'
|
|
428
449
|
}
|
|
429
450
|
|
|
451
|
+
// Can I Use only provides a few versions for some browsers (e.g. and_chr).
|
|
452
|
+
// Fallback to a similar browser for unknown versions
|
|
453
|
+
browserslist.desktopNames = {
|
|
454
|
+
and_chr: 'chrome',
|
|
455
|
+
and_ff: 'firefox',
|
|
456
|
+
ie_mob: 'ie',
|
|
457
|
+
op_mob: 'opera'
|
|
458
|
+
}
|
|
459
|
+
|
|
430
460
|
// Aliases to work with joined versions like `ios_saf 7.0-7.1`
|
|
431
461
|
browserslist.versionAliases = { }
|
|
432
462
|
|
|
@@ -760,8 +790,8 @@ var QUERIES = [
|
|
|
760
790
|
regexp: /^(\w+)\s+([\d.]+)\s*-\s*([\d.]+)$/i,
|
|
761
791
|
select: function (context, name, from, to) {
|
|
762
792
|
var data = checkName(name)
|
|
763
|
-
from = parseFloat(normalizeVersion(data, from) || from)
|
|
764
|
-
to = parseFloat(normalizeVersion(data, to) || to)
|
|
793
|
+
from = parseFloat(normalizeVersion(data, from, context) || from)
|
|
794
|
+
to = parseFloat(normalizeVersion(data, to, context) || to)
|
|
765
795
|
|
|
766
796
|
function filter (v) {
|
|
767
797
|
var parsed = parseFloat(v)
|
|
@@ -879,7 +909,7 @@ var QUERIES = [
|
|
|
879
909
|
select: function (context, name, version) {
|
|
880
910
|
if (/^tp$/i.test(version)) version = 'TP'
|
|
881
911
|
var data = checkName(name)
|
|
882
|
-
var alias = normalizeVersion(data, version)
|
|
912
|
+
var alias = normalizeVersion(data, version, context)
|
|
883
913
|
if (alias) {
|
|
884
914
|
version = alias
|
|
885
915
|
} else {
|
|
@@ -888,7 +918,7 @@ var QUERIES = [
|
|
|
888
918
|
} else {
|
|
889
919
|
alias = version.replace(/\.0$/, '')
|
|
890
920
|
}
|
|
891
|
-
alias = normalizeVersion(data, alias)
|
|
921
|
+
alias = normalizeVersion(data, alias, context)
|
|
892
922
|
if (alias) {
|
|
893
923
|
version = alias
|
|
894
924
|
} else if (context.ignoreUnknownVersions) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "browserslist",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.6.0",
|
|
4
4
|
"description": "Share target browsers between different front-end tools, like Autoprefixer, Stylelint and babel-env-preset",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"caniuse",
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
"license": "MIT",
|
|
12
12
|
"repository": "browserslist/browserslist",
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"caniuse-lite": "^1.0.
|
|
15
|
-
"electron-to-chromium": "^1.3.
|
|
16
|
-
"node-releases": "^1.1.
|
|
14
|
+
"caniuse-lite": "^1.0.30000967",
|
|
15
|
+
"electron-to-chromium": "^1.3.133",
|
|
16
|
+
"node-releases": "^1.1.19"
|
|
17
17
|
},
|
|
18
18
|
"bin": "./cli.js",
|
|
19
19
|
"browser": {
|