browserslist 4.17.5 → 4.19.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/browser.js +15 -11
- package/cli.js +26 -19
- package/error.d.ts +4 -4
- package/error.js +1 -1
- package/index.d.ts +7 -7
- package/index.js +103 -88
- package/node.js +65 -60
- package/package.json +4 -3
- package/update-db.js +88 -69
package/index.js
CHANGED
|
@@ -13,45 +13,42 @@ var ANDROID_EVERGREEN_FIRST = 37
|
|
|
13
13
|
var QUERY_OR = 1
|
|
14
14
|
var QUERY_AND = 2
|
|
15
15
|
|
|
16
|
-
function isVersionsMatch
|
|
16
|
+
function isVersionsMatch(versionA, versionB) {
|
|
17
17
|
return (versionA + '.').indexOf(versionB + '.') === 0
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
function isEolReleased
|
|
20
|
+
function isEolReleased(name) {
|
|
21
21
|
var version = name.slice(1)
|
|
22
22
|
return jsReleases.some(function (i) {
|
|
23
23
|
return isVersionsMatch(i.version, version)
|
|
24
24
|
})
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
function normalize
|
|
27
|
+
function normalize(versions) {
|
|
28
28
|
return versions.filter(function (version) {
|
|
29
29
|
return typeof version === 'string'
|
|
30
30
|
})
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
function normalizeElectron
|
|
33
|
+
function normalizeElectron(version) {
|
|
34
34
|
var versionToUse = version
|
|
35
35
|
if (version.split('.').length === 3) {
|
|
36
|
-
versionToUse = version
|
|
37
|
-
.split('.')
|
|
38
|
-
.slice(0, -1)
|
|
39
|
-
.join('.')
|
|
36
|
+
versionToUse = version.split('.').slice(0, -1).join('.')
|
|
40
37
|
}
|
|
41
38
|
return versionToUse
|
|
42
39
|
}
|
|
43
40
|
|
|
44
|
-
function nameMapper
|
|
45
|
-
return function mapName
|
|
41
|
+
function nameMapper(name) {
|
|
42
|
+
return function mapName(version) {
|
|
46
43
|
return name + ' ' + version
|
|
47
44
|
}
|
|
48
45
|
}
|
|
49
46
|
|
|
50
|
-
function getMajor
|
|
47
|
+
function getMajor(version) {
|
|
51
48
|
return parseInt(version.split('.')[0])
|
|
52
49
|
}
|
|
53
50
|
|
|
54
|
-
function getMajorVersions
|
|
51
|
+
function getMajorVersions(released, number) {
|
|
55
52
|
if (released.length === 0) return []
|
|
56
53
|
var majorVersions = uniq(released.map(getMajor))
|
|
57
54
|
var minimum = majorVersions[majorVersions.length - number]
|
|
@@ -66,7 +63,7 @@ function getMajorVersions (released, number) {
|
|
|
66
63
|
return selected
|
|
67
64
|
}
|
|
68
65
|
|
|
69
|
-
function uniq
|
|
66
|
+
function uniq(array) {
|
|
70
67
|
var filtered = []
|
|
71
68
|
for (var i = 0; i < array.length; i++) {
|
|
72
69
|
if (filtered.indexOf(array[i]) === -1) filtered.push(array[i])
|
|
@@ -76,13 +73,13 @@ function uniq (array) {
|
|
|
76
73
|
|
|
77
74
|
// Helpers
|
|
78
75
|
|
|
79
|
-
function fillUsage
|
|
76
|
+
function fillUsage(result, name, data) {
|
|
80
77
|
for (var i in data) {
|
|
81
78
|
result[name + ' ' + i] = data[i]
|
|
82
79
|
}
|
|
83
80
|
}
|
|
84
81
|
|
|
85
|
-
function generateFilter
|
|
82
|
+
function generateFilter(sign, version) {
|
|
86
83
|
version = parseFloat(version)
|
|
87
84
|
if (sign === '>') {
|
|
88
85
|
return function (v) {
|
|
@@ -103,7 +100,7 @@ function generateFilter (sign, version) {
|
|
|
103
100
|
}
|
|
104
101
|
}
|
|
105
102
|
|
|
106
|
-
function generateSemverFilter
|
|
103
|
+
function generateSemverFilter(sign, version) {
|
|
107
104
|
version = version.split('.').map(parseSimpleInt)
|
|
108
105
|
version[1] = version[1] || 0
|
|
109
106
|
version[2] = version[2] || 0
|
|
@@ -130,17 +127,17 @@ function generateSemverFilter (sign, version) {
|
|
|
130
127
|
}
|
|
131
128
|
}
|
|
132
129
|
|
|
133
|
-
function parseSimpleInt
|
|
130
|
+
function parseSimpleInt(x) {
|
|
134
131
|
return parseInt(x)
|
|
135
132
|
}
|
|
136
133
|
|
|
137
|
-
function compare
|
|
134
|
+
function compare(a, b) {
|
|
138
135
|
if (a < b) return -1
|
|
139
136
|
if (a > b) return +1
|
|
140
137
|
return 0
|
|
141
138
|
}
|
|
142
139
|
|
|
143
|
-
function compareSemver
|
|
140
|
+
function compareSemver(a, b) {
|
|
144
141
|
return (
|
|
145
142
|
compare(parseInt(a[0]), parseInt(b[0])) ||
|
|
146
143
|
compare(parseInt(a[1] || '0'), parseInt(b[1] || '0')) ||
|
|
@@ -149,7 +146,7 @@ function compareSemver (a, b) {
|
|
|
149
146
|
}
|
|
150
147
|
|
|
151
148
|
// this follows the npm-like semver behavior
|
|
152
|
-
function semverFilterLoose
|
|
149
|
+
function semverFilterLoose(operator, range) {
|
|
153
150
|
range = range.split('.').map(parseSimpleInt)
|
|
154
151
|
if (typeof range[1] === 'undefined') {
|
|
155
152
|
range[1] = 'x'
|
|
@@ -162,8 +159,8 @@ function semverFilterLoose (operator, range) {
|
|
|
162
159
|
version = version.split('.').map(parseSimpleInt)
|
|
163
160
|
return compareSemverLoose(version, range) <= 0
|
|
164
161
|
}
|
|
165
|
-
default:
|
|
166
162
|
case '>=':
|
|
163
|
+
default:
|
|
167
164
|
return function (version) {
|
|
168
165
|
version = version.split('.').map(parseSimpleInt)
|
|
169
166
|
return compareSemverLoose(version, range) >= 0
|
|
@@ -172,7 +169,7 @@ function semverFilterLoose (operator, range) {
|
|
|
172
169
|
}
|
|
173
170
|
|
|
174
171
|
// this follows the npm-like semver behavior
|
|
175
|
-
function compareSemverLoose
|
|
172
|
+
function compareSemverLoose(version, range) {
|
|
176
173
|
if (version[0] !== range[0]) {
|
|
177
174
|
return version[0] < range[0] ? -1 : +1
|
|
178
175
|
}
|
|
@@ -185,7 +182,7 @@ function compareSemverLoose (version, range) {
|
|
|
185
182
|
return 0
|
|
186
183
|
}
|
|
187
184
|
|
|
188
|
-
function resolveVersion
|
|
185
|
+
function resolveVersion(data, version) {
|
|
189
186
|
if (data.versions.indexOf(version) !== -1) {
|
|
190
187
|
return version
|
|
191
188
|
} else if (browserslist.versionAliases[data.name][version]) {
|
|
@@ -195,7 +192,7 @@ function resolveVersion (data, version) {
|
|
|
195
192
|
}
|
|
196
193
|
}
|
|
197
194
|
|
|
198
|
-
function normalizeVersion
|
|
195
|
+
function normalizeVersion(data, version) {
|
|
199
196
|
var resolved = resolveVersion(data, version)
|
|
200
197
|
if (resolved) {
|
|
201
198
|
return resolved
|
|
@@ -206,19 +203,20 @@ function normalizeVersion (data, version) {
|
|
|
206
203
|
}
|
|
207
204
|
}
|
|
208
205
|
|
|
209
|
-
function filterByYear
|
|
206
|
+
function filterByYear(since, context) {
|
|
210
207
|
since = since / 1000
|
|
211
208
|
return Object.keys(agents).reduce(function (selected, name) {
|
|
212
209
|
var data = byName(name, context)
|
|
213
210
|
if (!data) return selected
|
|
214
211
|
var versions = Object.keys(data.releaseDate).filter(function (v) {
|
|
215
|
-
|
|
212
|
+
var date = data.releaseDate[v]
|
|
213
|
+
return date !== null && date >= since
|
|
216
214
|
})
|
|
217
215
|
return selected.concat(versions.map(nameMapper(data.name)))
|
|
218
216
|
}, [])
|
|
219
217
|
}
|
|
220
218
|
|
|
221
|
-
function cloneData
|
|
219
|
+
function cloneData(data) {
|
|
222
220
|
return {
|
|
223
221
|
name: data.name,
|
|
224
222
|
versions: data.versions,
|
|
@@ -227,14 +225,14 @@ function cloneData (data) {
|
|
|
227
225
|
}
|
|
228
226
|
}
|
|
229
227
|
|
|
230
|
-
function mapVersions
|
|
228
|
+
function mapVersions(data, map) {
|
|
231
229
|
data.versions = data.versions.map(function (i) {
|
|
232
230
|
return map[i] || i
|
|
233
231
|
})
|
|
234
232
|
data.released = data.versions.map(function (i) {
|
|
235
233
|
return map[i] || i
|
|
236
234
|
})
|
|
237
|
-
var fixedDate = {
|
|
235
|
+
var fixedDate = {}
|
|
238
236
|
for (var i in data.releaseDate) {
|
|
239
237
|
fixedDate[map[i] || i] = data.releaseDate[i]
|
|
240
238
|
}
|
|
@@ -242,7 +240,7 @@ function mapVersions (data, map) {
|
|
|
242
240
|
return data
|
|
243
241
|
}
|
|
244
242
|
|
|
245
|
-
function byName
|
|
243
|
+
function byName(name, context) {
|
|
246
244
|
name = name.toLowerCase()
|
|
247
245
|
name = browserslist.aliases[name] || name
|
|
248
246
|
if (context.mobileToDesktop && browserslist.desktopNames[name]) {
|
|
@@ -261,34 +259,38 @@ function byName (name, context) {
|
|
|
261
259
|
return browserslist.data[name]
|
|
262
260
|
}
|
|
263
261
|
|
|
264
|
-
function normalizeAndroidVersions
|
|
262
|
+
function normalizeAndroidVersions(androidVersions, chromeVersions) {
|
|
265
263
|
var firstEvergreen = ANDROID_EVERGREEN_FIRST
|
|
266
264
|
var last = chromeVersions[chromeVersions.length - 1]
|
|
267
265
|
return androidVersions
|
|
268
|
-
.filter(function (version) {
|
|
266
|
+
.filter(function (version) {
|
|
267
|
+
return /^(?:[2-4]\.|[34]$)/.test(version)
|
|
268
|
+
})
|
|
269
269
|
.concat(chromeVersions.slice(firstEvergreen - last - 1))
|
|
270
270
|
}
|
|
271
271
|
|
|
272
|
-
function normalizeAndroidData
|
|
272
|
+
function normalizeAndroidData(android, chrome) {
|
|
273
273
|
android.released = normalizeAndroidVersions(android.released, chrome.released)
|
|
274
274
|
android.versions = normalizeAndroidVersions(android.versions, chrome.versions)
|
|
275
275
|
return android
|
|
276
276
|
}
|
|
277
277
|
|
|
278
|
-
function checkName
|
|
278
|
+
function checkName(name, context) {
|
|
279
279
|
var data = byName(name, context)
|
|
280
280
|
if (!data) throw new BrowserslistError('Unknown browser ' + name)
|
|
281
281
|
return data
|
|
282
282
|
}
|
|
283
283
|
|
|
284
|
-
function unknownQuery
|
|
284
|
+
function unknownQuery(query) {
|
|
285
285
|
return new BrowserslistError(
|
|
286
|
-
'Unknown browser query `' +
|
|
287
|
-
|
|
286
|
+
'Unknown browser query `' +
|
|
287
|
+
query +
|
|
288
|
+
'`. ' +
|
|
289
|
+
'Maybe you are using old Browserslist or made typo in query.'
|
|
288
290
|
)
|
|
289
291
|
}
|
|
290
292
|
|
|
291
|
-
function filterAndroid
|
|
293
|
+
function filterAndroid(list, versions, context) {
|
|
292
294
|
if (context.mobileToDesktop) return list
|
|
293
295
|
var released = browserslist.data.android.released
|
|
294
296
|
var last = released[released.length - 1]
|
|
@@ -308,7 +310,7 @@ function filterAndroid (list, versions, context) {
|
|
|
308
310
|
* the select function in `queries`.
|
|
309
311
|
* @returns {string[]} A list of browsers
|
|
310
312
|
*/
|
|
311
|
-
function resolve
|
|
313
|
+
function resolve(queries, context) {
|
|
312
314
|
if (Array.isArray(queries)) {
|
|
313
315
|
queries = flatten(queries.map(parse))
|
|
314
316
|
} else {
|
|
@@ -323,7 +325,10 @@ function resolve (queries, context) {
|
|
|
323
325
|
if (index === 0) {
|
|
324
326
|
throw new BrowserslistError(
|
|
325
327
|
'Write any browsers query (for instance, `defaults`) ' +
|
|
326
|
-
|
|
328
|
+
'before `' +
|
|
329
|
+
selection +
|
|
330
|
+
'`'
|
|
331
|
+
)
|
|
327
332
|
}
|
|
328
333
|
selection = selection.slice(4)
|
|
329
334
|
}
|
|
@@ -356,7 +361,7 @@ function resolve (queries, context) {
|
|
|
356
361
|
case QUERY_OR:
|
|
357
362
|
default:
|
|
358
363
|
if (isExclude) {
|
|
359
|
-
var filter = {
|
|
364
|
+
var filter = {}
|
|
360
365
|
array.forEach(function (j) {
|
|
361
366
|
filter[j] = true
|
|
362
367
|
})
|
|
@@ -373,7 +378,7 @@ function resolve (queries, context) {
|
|
|
373
378
|
}, [])
|
|
374
379
|
}
|
|
375
380
|
|
|
376
|
-
var cache = {
|
|
381
|
+
var cache = {}
|
|
377
382
|
|
|
378
383
|
/**
|
|
379
384
|
* Return array of browsers by selection queries.
|
|
@@ -392,6 +397,7 @@ var cache = { }
|
|
|
392
397
|
* version in direct query.
|
|
393
398
|
* @param {boolean} [opts.dangerousExtend] Disable security checks
|
|
394
399
|
* for extend query.
|
|
400
|
+
* @param {boolean} [opts.throwOnMissing] Throw error on missing env.
|
|
395
401
|
* @param {boolean} [opts.mobileToDesktop] Alias mobile browsers to the desktop
|
|
396
402
|
* version when Can I Use doesn't have
|
|
397
403
|
* data about the specified version.
|
|
@@ -400,8 +406,8 @@ var cache = { }
|
|
|
400
406
|
* @example
|
|
401
407
|
* browserslist('IE >= 10, IE 8') //=> ['ie 11', 'ie 10', 'ie 8']
|
|
402
408
|
*/
|
|
403
|
-
function browserslist
|
|
404
|
-
if (typeof opts === 'undefined') opts = {
|
|
409
|
+
function browserslist(queries, opts) {
|
|
410
|
+
if (typeof opts === 'undefined') opts = {}
|
|
405
411
|
|
|
406
412
|
if (typeof opts.path === 'undefined') {
|
|
407
413
|
opts.path = path.resolve ? path.resolve('.') : '.'
|
|
@@ -418,7 +424,8 @@ function browserslist (queries, opts) {
|
|
|
418
424
|
|
|
419
425
|
if (!(typeof queries === 'string' || Array.isArray(queries))) {
|
|
420
426
|
throw new BrowserslistError(
|
|
421
|
-
'Browser queries must be an array or string. Got ' + typeof queries + '.'
|
|
427
|
+
'Browser queries must be an array or string. Got ' + typeof queries + '.'
|
|
428
|
+
)
|
|
422
429
|
}
|
|
423
430
|
|
|
424
431
|
var context = {
|
|
@@ -432,7 +439,7 @@ function browserslist (queries, opts) {
|
|
|
432
439
|
env.oldDataWarning(browserslist.data)
|
|
433
440
|
var stats = env.getStat(opts, browserslist.data)
|
|
434
441
|
if (stats) {
|
|
435
|
-
context.customUsage = {
|
|
442
|
+
context.customUsage = {}
|
|
436
443
|
for (var browser in stats) {
|
|
437
444
|
fillUsage(context.customUsage, browser, stats[browser])
|
|
438
445
|
}
|
|
@@ -461,7 +468,7 @@ function browserslist (queries, opts) {
|
|
|
461
468
|
return result
|
|
462
469
|
}
|
|
463
470
|
|
|
464
|
-
function parse
|
|
471
|
+
function parse(queries) {
|
|
465
472
|
var qs = []
|
|
466
473
|
do {
|
|
467
474
|
queries = doMatch(queries, qs)
|
|
@@ -469,7 +476,7 @@ function parse (queries) {
|
|
|
469
476
|
return qs
|
|
470
477
|
}
|
|
471
478
|
|
|
472
|
-
function doMatch
|
|
479
|
+
function doMatch(string, qs) {
|
|
473
480
|
var or = /^(?:,\s*|\s+or\s+)(.*)/i
|
|
474
481
|
var and = /^\s+and\s+(.*)/i
|
|
475
482
|
|
|
@@ -488,7 +495,7 @@ function doMatch (string, qs) {
|
|
|
488
495
|
})
|
|
489
496
|
}
|
|
490
497
|
|
|
491
|
-
function find
|
|
498
|
+
function find(string, predicate) {
|
|
492
499
|
for (var n = 1, max = string.length; n <= max; n++) {
|
|
493
500
|
var parsed = string.substr(-n, n)
|
|
494
501
|
if (predicate(parsed, n, max)) {
|
|
@@ -498,7 +505,7 @@ function find (string, predicate) {
|
|
|
498
505
|
return ''
|
|
499
506
|
}
|
|
500
507
|
|
|
501
|
-
function flatten
|
|
508
|
+
function flatten(array) {
|
|
502
509
|
if (!Array.isArray(array)) return [array]
|
|
503
510
|
return array.reduce(function (a, b) {
|
|
504
511
|
return a.concat(flatten(b))
|
|
@@ -506,20 +513,15 @@ function flatten (array) {
|
|
|
506
513
|
}
|
|
507
514
|
|
|
508
515
|
// Will be filled by Can I Use data below
|
|
509
|
-
browserslist.cache = {
|
|
510
|
-
browserslist.data = {
|
|
516
|
+
browserslist.cache = {}
|
|
517
|
+
browserslist.data = {}
|
|
511
518
|
browserslist.usage = {
|
|
512
|
-
global: {
|
|
519
|
+
global: {},
|
|
513
520
|
custom: null
|
|
514
521
|
}
|
|
515
522
|
|
|
516
523
|
// Default browsers query
|
|
517
|
-
browserslist.defaults = [
|
|
518
|
-
'> 0.5%',
|
|
519
|
-
'last 2 versions',
|
|
520
|
-
'Firefox ESR',
|
|
521
|
-
'not dead'
|
|
522
|
-
]
|
|
524
|
+
browserslist.defaults = ['> 0.5%', 'last 2 versions', 'Firefox ESR', 'not dead']
|
|
523
525
|
|
|
524
526
|
// Browser names aliases
|
|
525
527
|
browserslist.aliases = {
|
|
@@ -548,7 +550,7 @@ browserslist.desktopNames = {
|
|
|
548
550
|
}
|
|
549
551
|
|
|
550
552
|
// Aliases to work with joined versions like `ios_saf 7.0-7.1`
|
|
551
|
-
browserslist.versionAliases = {
|
|
553
|
+
browserslist.versionAliases = {}
|
|
552
554
|
|
|
553
555
|
browserslist.clearCaches = env.clearCaches
|
|
554
556
|
browserslist.parseConfig = env.parseConfig
|
|
@@ -597,7 +599,7 @@ browserslist.coverage = function (browsers, stats) {
|
|
|
597
599
|
if ('dataByBrowser' in stats) {
|
|
598
600
|
stats = stats.dataByBrowser
|
|
599
601
|
}
|
|
600
|
-
data = {
|
|
602
|
+
data = {}
|
|
601
603
|
for (var name in stats) {
|
|
602
604
|
for (var version in stats[name]) {
|
|
603
605
|
data[name + ' ' + version] = stats[name][version]
|
|
@@ -614,7 +616,7 @@ browserslist.coverage = function (browsers, stats) {
|
|
|
614
616
|
}, 0)
|
|
615
617
|
}
|
|
616
618
|
|
|
617
|
-
function nodeQuery
|
|
619
|
+
function nodeQuery(context, version) {
|
|
618
620
|
var nodeReleases = jsReleases.filter(function (i) {
|
|
619
621
|
return i.name === 'nodejs'
|
|
620
622
|
})
|
|
@@ -631,22 +633,20 @@ function nodeQuery (context, version) {
|
|
|
631
633
|
return ['node ' + matched[matched.length - 1].version]
|
|
632
634
|
}
|
|
633
635
|
|
|
634
|
-
function sinceQuery
|
|
636
|
+
function sinceQuery(context, year, month, date) {
|
|
635
637
|
year = parseInt(year)
|
|
636
638
|
month = parseInt(month || '01') - 1
|
|
637
639
|
date = parseInt(date || '01')
|
|
638
640
|
return filterByYear(Date.UTC(year, month, date, 0, 0, 0), context)
|
|
639
641
|
}
|
|
640
642
|
|
|
641
|
-
function coverQuery
|
|
643
|
+
function coverQuery(context, coverage, statMode) {
|
|
642
644
|
coverage = parseFloat(coverage)
|
|
643
645
|
var usage = browserslist.usage.global
|
|
644
646
|
if (statMode) {
|
|
645
|
-
if (statMode.match(/^my\s+stats$/)) {
|
|
647
|
+
if (statMode.match(/^my\s+stats$/i)) {
|
|
646
648
|
if (!context.customUsage) {
|
|
647
|
-
throw new BrowserslistError(
|
|
648
|
-
'Custom usage statistics was not provided'
|
|
649
|
-
)
|
|
649
|
+
throw new BrowserslistError('Custom usage statistics was not provided')
|
|
650
650
|
}
|
|
651
651
|
usage = context.customUsage
|
|
652
652
|
} else {
|
|
@@ -666,7 +666,7 @@ function coverQuery (context, coverage, statMode) {
|
|
|
666
666
|
var coveraged = 0
|
|
667
667
|
var result = []
|
|
668
668
|
var version
|
|
669
|
-
for (var i = 0; i
|
|
669
|
+
for (var i = 0; i < versions.length; i++) {
|
|
670
670
|
version = versions[i]
|
|
671
671
|
if (usage[version] === 0) break
|
|
672
672
|
coveraged += usage[version]
|
|
@@ -832,19 +832,24 @@ var QUERIES = [
|
|
|
832
832
|
}
|
|
833
833
|
var usage = context.customUsage
|
|
834
834
|
return Object.keys(usage).reduce(function (result, version) {
|
|
835
|
+
var percentage = usage[version]
|
|
836
|
+
if (percentage == null) {
|
|
837
|
+
return result
|
|
838
|
+
}
|
|
839
|
+
|
|
835
840
|
if (sign === '>') {
|
|
836
|
-
if (
|
|
841
|
+
if (percentage > popularity) {
|
|
837
842
|
result.push(version)
|
|
838
843
|
}
|
|
839
844
|
} else if (sign === '<') {
|
|
840
|
-
if (
|
|
845
|
+
if (percentage < popularity) {
|
|
841
846
|
result.push(version)
|
|
842
847
|
}
|
|
843
848
|
} else if (sign === '<=') {
|
|
844
|
-
if (
|
|
849
|
+
if (percentage <= popularity) {
|
|
845
850
|
result.push(version)
|
|
846
851
|
}
|
|
847
|
-
} else if (
|
|
852
|
+
} else if (percentage >= popularity) {
|
|
848
853
|
result.push(version)
|
|
849
854
|
}
|
|
850
855
|
return result
|
|
@@ -867,19 +872,24 @@ var QUERIES = [
|
|
|
867
872
|
}
|
|
868
873
|
var usage = context.customUsage
|
|
869
874
|
return Object.keys(usage).reduce(function (result, version) {
|
|
875
|
+
var percentage = usage[version]
|
|
876
|
+
if (percentage == null) {
|
|
877
|
+
return result
|
|
878
|
+
}
|
|
879
|
+
|
|
870
880
|
if (sign === '>') {
|
|
871
|
-
if (
|
|
881
|
+
if (percentage > popularity) {
|
|
872
882
|
result.push(version)
|
|
873
883
|
}
|
|
874
884
|
} else if (sign === '<') {
|
|
875
|
-
if (
|
|
885
|
+
if (percentage < popularity) {
|
|
876
886
|
result.push(version)
|
|
877
887
|
}
|
|
878
888
|
} else if (sign === '<=') {
|
|
879
|
-
if (
|
|
889
|
+
if (percentage <= popularity) {
|
|
880
890
|
result.push(version)
|
|
881
891
|
}
|
|
882
|
-
} else if (
|
|
892
|
+
} else if (percentage >= popularity) {
|
|
883
893
|
result.push(version)
|
|
884
894
|
}
|
|
885
895
|
return result
|
|
@@ -898,19 +908,24 @@ var QUERIES = [
|
|
|
898
908
|
env.loadCountry(browserslist.usage, place, browserslist.data)
|
|
899
909
|
var usage = browserslist.usage[place]
|
|
900
910
|
return Object.keys(usage).reduce(function (result, version) {
|
|
911
|
+
var percentage = usage[version]
|
|
912
|
+
if (percentage == null) {
|
|
913
|
+
return result
|
|
914
|
+
}
|
|
915
|
+
|
|
901
916
|
if (sign === '>') {
|
|
902
|
-
if (
|
|
917
|
+
if (percentage > popularity) {
|
|
903
918
|
result.push(version)
|
|
904
919
|
}
|
|
905
920
|
} else if (sign === '<') {
|
|
906
|
-
if (
|
|
921
|
+
if (percentage < popularity) {
|
|
907
922
|
result.push(version)
|
|
908
923
|
}
|
|
909
924
|
} else if (sign === '<=') {
|
|
910
|
-
if (
|
|
925
|
+
if (percentage <= popularity) {
|
|
911
926
|
result.push(version)
|
|
912
927
|
}
|
|
913
|
-
} else if (
|
|
928
|
+
} else if (percentage >= popularity) {
|
|
914
929
|
result.push(version)
|
|
915
930
|
}
|
|
916
931
|
return result
|
|
@@ -918,11 +933,11 @@ var QUERIES = [
|
|
|
918
933
|
}
|
|
919
934
|
},
|
|
920
935
|
{
|
|
921
|
-
regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)
|
|
936
|
+
regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)%$/i,
|
|
922
937
|
select: coverQuery
|
|
923
938
|
},
|
|
924
939
|
{
|
|
925
|
-
regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)%\s+in\s+(my\s+stats|(alt-)?\w\w)
|
|
940
|
+
regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)%\s+in\s+(my\s+stats|(alt-)?\w\w)$/i,
|
|
926
941
|
select: coverQuery
|
|
927
942
|
},
|
|
928
943
|
{
|
|
@@ -986,7 +1001,7 @@ var QUERIES = [
|
|
|
986
1001
|
var data = checkName(name, context)
|
|
987
1002
|
from = parseFloat(normalizeVersion(data, from) || from)
|
|
988
1003
|
to = parseFloat(normalizeVersion(data, to) || to)
|
|
989
|
-
function filter
|
|
1004
|
+
function filter(v) {
|
|
990
1005
|
var parsed = parseFloat(v)
|
|
991
1006
|
return parsed >= from && parsed <= to
|
|
992
1007
|
}
|
|
@@ -1180,11 +1195,11 @@ var QUERIES = [
|
|
|
1180
1195
|
}
|
|
1181
1196
|
}
|
|
1182
1197
|
}
|
|
1183
|
-
]
|
|
1198
|
+
]
|
|
1184
1199
|
|
|
1185
1200
|
// Get and convert Can I Use data
|
|
1186
1201
|
|
|
1187
|
-
(function () {
|
|
1202
|
+
;(function () {
|
|
1188
1203
|
for (var name in agents) {
|
|
1189
1204
|
var browser = agents[name]
|
|
1190
1205
|
browserslist.data[name] = {
|
|
@@ -1195,7 +1210,7 @@ var QUERIES = [
|
|
|
1195
1210
|
}
|
|
1196
1211
|
fillUsage(browserslist.usage.global, name, browser.usage_global)
|
|
1197
1212
|
|
|
1198
|
-
browserslist.versionAliases[name] = {
|
|
1213
|
+
browserslist.versionAliases[name] = {}
|
|
1199
1214
|
for (var i = 0; i < browser.versions.length; i++) {
|
|
1200
1215
|
var full = browser.versions[i]
|
|
1201
1216
|
if (!full) continue
|
|
@@ -1210,6 +1225,6 @@ var QUERIES = [
|
|
|
1210
1225
|
}
|
|
1211
1226
|
|
|
1212
1227
|
browserslist.versionAliases.op_mob['59'] = '58'
|
|
1213
|
-
}()
|
|
1228
|
+
})()
|
|
1214
1229
|
|
|
1215
1230
|
module.exports = browserslist
|