browserslist 4.24.4 → 4.25.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/index.js +25 -14
- package/node.js +57 -45
- package/package.json +4 -4
package/index.js
CHANGED
|
@@ -458,6 +458,20 @@ function parseQueries(queries) {
|
|
|
458
458
|
return result
|
|
459
459
|
}
|
|
460
460
|
|
|
461
|
+
function loadCustomUsage(context, config) {
|
|
462
|
+
var stats = env.loadStat(context, config, browserslist.data)
|
|
463
|
+
if (stats) {
|
|
464
|
+
context.customUsage = {}
|
|
465
|
+
for (var browser in stats) {
|
|
466
|
+
fillUsage(context.customUsage, browser, stats[browser])
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
if (!context.customUsage) {
|
|
470
|
+
throw new BrowserslistError('Custom usage statistics was not provided')
|
|
471
|
+
}
|
|
472
|
+
return context.customUsage
|
|
473
|
+
}
|
|
474
|
+
|
|
461
475
|
browserslist.parse = function (queries, opts) {
|
|
462
476
|
opts = prepareOpts(opts)
|
|
463
477
|
queries = prepareQueries(queries, opts)
|
|
@@ -598,19 +612,21 @@ function coverQuery(context, node) {
|
|
|
598
612
|
env.loadCountry(browserslist.usage, place, browserslist.data)
|
|
599
613
|
usage = browserslist.usage[place]
|
|
600
614
|
}
|
|
615
|
+
} else if (node.config) {
|
|
616
|
+
usage = loadCustomUsage(context, node.config)
|
|
601
617
|
}
|
|
602
618
|
var versions = Object.keys(usage).sort(function (a, b) {
|
|
603
619
|
return usage[b] - usage[a]
|
|
604
620
|
})
|
|
605
|
-
var
|
|
621
|
+
var covered = 0
|
|
606
622
|
var result = []
|
|
607
623
|
var version
|
|
608
624
|
for (var i = 0; i < versions.length; i++) {
|
|
609
625
|
version = versions[i]
|
|
610
626
|
if (usage[version] === 0) break
|
|
611
|
-
|
|
627
|
+
covered += usage[version]
|
|
612
628
|
result.push(version)
|
|
613
|
-
if (
|
|
629
|
+
if (covered >= coverage) break
|
|
614
630
|
}
|
|
615
631
|
return result
|
|
616
632
|
}
|
|
@@ -829,17 +845,7 @@ var QUERIES = {
|
|
|
829
845
|
regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%\s+in\s+(\S+)\s+stats$/,
|
|
830
846
|
select: function (context, node) {
|
|
831
847
|
var popularity = parseFloat(node.popularity)
|
|
832
|
-
var
|
|
833
|
-
if (stats) {
|
|
834
|
-
context.customUsage = {}
|
|
835
|
-
for (var browser in stats) {
|
|
836
|
-
fillUsage(context.customUsage, browser, stats[browser])
|
|
837
|
-
}
|
|
838
|
-
}
|
|
839
|
-
if (!context.customUsage) {
|
|
840
|
-
throw new BrowserslistError('Custom usage statistics was not provided')
|
|
841
|
-
}
|
|
842
|
-
var usage = context.customUsage
|
|
848
|
+
var usage = loadCustomUsage(context, node.config)
|
|
843
849
|
return Object.keys(usage).reduce(function (result, version) {
|
|
844
850
|
var percentage = usage[version]
|
|
845
851
|
if (percentage == null) {
|
|
@@ -913,6 +919,11 @@ var QUERIES = {
|
|
|
913
919
|
regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)%\s+in\s+(my\s+stats|(alt-)?\w\w)$/i,
|
|
914
920
|
select: coverQuery
|
|
915
921
|
},
|
|
922
|
+
cover_config: {
|
|
923
|
+
matches: ['coverage', 'config'],
|
|
924
|
+
regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)%\s+in\s+(\S+)\s+stats$/i,
|
|
925
|
+
select: coverQuery
|
|
926
|
+
},
|
|
916
927
|
supports: {
|
|
917
928
|
matches: ['supportType', 'feature'],
|
|
918
929
|
regexp: /^(?:(fully|partially)\s+)?supports\s+([\w-]+)$/,
|
package/node.js
CHANGED
|
@@ -51,23 +51,23 @@ function eachParent(file, callback, cache) {
|
|
|
51
51
|
if (!pathInRoot(loc)) {
|
|
52
52
|
break
|
|
53
53
|
}
|
|
54
|
-
if (cache &&
|
|
54
|
+
if (cache && loc in cache) {
|
|
55
55
|
result = cache[loc]
|
|
56
56
|
break
|
|
57
57
|
}
|
|
58
58
|
pathsForCacheResult.push(loc)
|
|
59
|
-
|
|
59
|
+
|
|
60
60
|
if (!isDirectory(loc)) {
|
|
61
61
|
continue
|
|
62
62
|
}
|
|
63
|
-
|
|
63
|
+
|
|
64
64
|
var locResult = callback(loc)
|
|
65
65
|
if (typeof locResult !== 'undefined') {
|
|
66
66
|
result = locResult
|
|
67
67
|
break
|
|
68
68
|
}
|
|
69
69
|
} while (loc !== (loc = path.dirname(loc)))
|
|
70
|
-
|
|
70
|
+
|
|
71
71
|
if (cache && !process.env.BROWSERSLIST_DISABLE_CACHE) {
|
|
72
72
|
pathsForCacheResult.forEach(function (cachePath) {
|
|
73
73
|
cache[cachePath] = result
|
|
@@ -152,10 +152,10 @@ function parsePackageOrReadConfig(file) {
|
|
|
152
152
|
if (file in parseConfigCache) {
|
|
153
153
|
return parseConfigCache[file]
|
|
154
154
|
}
|
|
155
|
-
|
|
155
|
+
|
|
156
156
|
var isPackage = path.basename(file) === 'package.json'
|
|
157
157
|
var result = isPackage ? parsePackage(file) : module.exports.readConfig(file)
|
|
158
|
-
|
|
158
|
+
|
|
159
159
|
if (!process.env.BROWSERSLIST_DISABLE_CACHE) {
|
|
160
160
|
parseConfigCache[file] = result
|
|
161
161
|
}
|
|
@@ -229,6 +229,9 @@ module.exports = {
|
|
|
229
229
|
checkExtend(name)
|
|
230
230
|
}
|
|
231
231
|
var queries = require(require.resolve(name, { paths: ['.', ctx.path] }))
|
|
232
|
+
if (typeof queries === 'object' && queries !== null && queries.__esModule) {
|
|
233
|
+
queries = queries.default
|
|
234
|
+
}
|
|
232
235
|
if (queries) {
|
|
233
236
|
if (Array.isArray(queries)) {
|
|
234
237
|
return queries
|
|
@@ -263,10 +266,14 @@ module.exports = {
|
|
|
263
266
|
} else if (process.env.BROWSERSLIST_STATS) {
|
|
264
267
|
stats = process.env.BROWSERSLIST_STATS
|
|
265
268
|
} else if (opts.path && path.resolve && fs.existsSync) {
|
|
266
|
-
stats = eachParent(
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
269
|
+
stats = eachParent(
|
|
270
|
+
opts.path,
|
|
271
|
+
function (dir) {
|
|
272
|
+
var file = path.join(dir, 'browserslist-stats.json')
|
|
273
|
+
return isFile(file) ? file : undefined
|
|
274
|
+
},
|
|
275
|
+
statCache
|
|
276
|
+
)
|
|
270
277
|
}
|
|
271
278
|
if (typeof stats === 'string') {
|
|
272
279
|
try {
|
|
@@ -374,43 +381,48 @@ module.exports = {
|
|
|
374
381
|
},
|
|
375
382
|
|
|
376
383
|
findConfigFile: function findConfigFile(from) {
|
|
377
|
-
return eachParent(
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
384
|
+
return eachParent(
|
|
385
|
+
from,
|
|
386
|
+
function (dir) {
|
|
387
|
+
var config = path.join(dir, 'browserslist')
|
|
388
|
+
var pkg = path.join(dir, 'package.json')
|
|
389
|
+
var rc = path.join(dir, '.browserslistrc')
|
|
390
|
+
|
|
391
|
+
var pkgBrowserslist
|
|
392
|
+
if (isFile(pkg)) {
|
|
393
|
+
try {
|
|
394
|
+
pkgBrowserslist = parsePackage(pkg)
|
|
395
|
+
} catch (e) {
|
|
396
|
+
if (e.name === 'BrowserslistError') throw e
|
|
397
|
+
console.warn(
|
|
398
|
+
'[Browserslist] Could not parse ' + pkg + '. Ignoring it.'
|
|
399
|
+
)
|
|
400
|
+
}
|
|
391
401
|
}
|
|
392
|
-
}
|
|
393
402
|
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
403
|
+
if (isFile(config) && pkgBrowserslist) {
|
|
404
|
+
throw new BrowserslistError(
|
|
405
|
+
dir + ' contains both browserslist and package.json with browsers'
|
|
406
|
+
)
|
|
407
|
+
} else if (isFile(rc) && pkgBrowserslist) {
|
|
408
|
+
throw new BrowserslistError(
|
|
409
|
+
dir +
|
|
410
|
+
' contains both .browserslistrc and package.json with browsers'
|
|
411
|
+
)
|
|
412
|
+
} else if (isFile(config) && isFile(rc)) {
|
|
413
|
+
throw new BrowserslistError(
|
|
414
|
+
dir + ' contains both .browserslistrc and browserslist'
|
|
415
|
+
)
|
|
416
|
+
} else if (isFile(config)) {
|
|
417
|
+
return config
|
|
418
|
+
} else if (isFile(rc)) {
|
|
419
|
+
return rc
|
|
420
|
+
} else if (pkgBrowserslist) {
|
|
421
|
+
return pkg
|
|
422
|
+
}
|
|
423
|
+
},
|
|
424
|
+
configPathCache
|
|
425
|
+
)
|
|
414
426
|
},
|
|
415
427
|
|
|
416
428
|
findConfig: function findConfig(from) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "browserslist",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.25.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",
|
|
@@ -25,10 +25,10 @@
|
|
|
25
25
|
"license": "MIT",
|
|
26
26
|
"repository": "browserslist/browserslist",
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"caniuse-lite": "^1.0.
|
|
29
|
-
"electron-to-chromium": "^1.5.
|
|
28
|
+
"caniuse-lite": "^1.0.30001718",
|
|
29
|
+
"electron-to-chromium": "^1.5.160",
|
|
30
30
|
"node-releases": "^2.0.19",
|
|
31
|
-
"update-browserslist-db": "^1.1.
|
|
31
|
+
"update-browserslist-db": "^1.1.3"
|
|
32
32
|
},
|
|
33
33
|
"engines": {
|
|
34
34
|
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
|