browserslist 4.21.6 → 4.21.8

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.d.ts CHANGED
@@ -124,7 +124,9 @@ declare namespace browserslist {
124
124
 
125
125
  let cache: {
126
126
  [feature: string]: {
127
- [name: string]: 'y' | 'n'
127
+ [name: string]: {
128
+ [version: string]: string
129
+ }
128
130
  }
129
131
  }
130
132
 
package/index.js CHANGED
@@ -9,7 +9,7 @@ var parse = require('./parse')
9
9
  var env = require('./node') // Will load browser.js in webpack
10
10
 
11
11
  var YEAR = 365.259641 * 24 * 60 * 60 * 1000
12
- var ANDROID_EVERGREEN_FIRST = 37
12
+ var ANDROID_EVERGREEN_FIRST = '37'
13
13
 
14
14
  // Helpers
15
15
 
@@ -258,13 +258,12 @@ function byName(name, context) {
258
258
  }
259
259
 
260
260
  function normalizeAndroidVersions(androidVersions, chromeVersions) {
261
- var firstEvergreen = ANDROID_EVERGREEN_FIRST
262
- var last = chromeVersions[chromeVersions.length - 1]
261
+ var iFirstEvergreen = chromeVersions.indexOf(ANDROID_EVERGREEN_FIRST)
263
262
  return androidVersions
264
263
  .filter(function (version) {
265
264
  return /^(?:[2-4]\.|[34]$)/.test(version)
266
265
  })
267
- .concat(chromeVersions.slice(firstEvergreen - last - 1))
266
+ .concat(chromeVersions.slice(iFirstEvergreen))
268
267
  }
269
268
 
270
269
  function normalizeAndroidData(android, chrome) {
@@ -295,14 +294,19 @@ function unknownQuery(query) {
295
294
 
296
295
  function filterAndroid(list, versions, context) {
297
296
  if (context.mobileToDesktop) return list
298
- var released = browserslist.data.android.released
299
- var last = released[released.length - 1]
300
- var diff = last - ANDROID_EVERGREEN_FIRST - versions
301
- if (diff > 0) {
297
+ var released = browserslist.data.chrome.released
298
+ var nEvergreen = released.length - released.indexOf(ANDROID_EVERGREEN_FIRST)
299
+ if (versions <= nEvergreen) {
302
300
  return list.slice(-1)
303
- } else {
304
- return list.slice(diff - 1)
305
301
  }
302
+ return list.slice(nEvergreen - 1 - versions)
303
+ }
304
+
305
+ function isSupported(flags) {
306
+ return (
307
+ typeof flags === 'string' &&
308
+ (flags.indexOf('y') >= 0 || flags.indexOf('a') >= 0)
309
+ )
306
310
  }
307
311
 
308
312
  function resolve(queries, context) {
@@ -896,13 +900,25 @@ var QUERIES = {
896
900
  select: function (context, node) {
897
901
  env.loadFeature(browserslist.cache, node.feature)
898
902
  var features = browserslist.cache[node.feature]
899
- return Object.keys(features).reduce(function (result, version) {
900
- var flags = features[version]
901
- if (flags.indexOf('y') >= 0 || flags.indexOf('a') >= 0) {
902
- result.push(version)
903
- }
904
- return result
905
- }, [])
903
+ var result = []
904
+ for (var name in features) {
905
+ var data = byName(name, context)
906
+ // Only check desktop when latest released mobile has support
907
+ var checkDesktop =
908
+ context.mobileToDesktop &&
909
+ name in browserslist.desktopNames &&
910
+ isSupported(features[name][data.released.slice(-1)[0]])
911
+ data.versions.forEach(function (version) {
912
+ var flags = features[name][version]
913
+ if (flags === undefined && checkDesktop) {
914
+ flags = features[browserslist.desktopNames[name]][version]
915
+ }
916
+ if (isSupported(flags)) {
917
+ result.push(name + ' ' + version)
918
+ }
919
+ })
920
+ }
921
+ return result
906
922
  }
907
923
  },
908
924
  electron_range: {
package/node.js CHANGED
@@ -272,8 +272,9 @@ module.exports = {
272
272
  var stats = feature(compressed).stats
273
273
  features[name] = {}
274
274
  for (var i in stats) {
275
+ features[name][i] = {}
275
276
  for (var j in stats[i]) {
276
- features[name][i + ' ' + j] = stats[i][j]
277
+ features[name][i][j] = stats[i][j]
277
278
  }
278
279
  }
279
280
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "browserslist",
3
- "version": "4.21.6",
3
+ "version": "4.21.8",
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,8 +25,8 @@
25
25
  "license": "MIT",
26
26
  "repository": "browserslist/browserslist",
27
27
  "dependencies": {
28
- "caniuse-lite": "^1.0.30001489",
29
- "electron-to-chromium": "^1.4.411",
28
+ "caniuse-lite": "^1.0.30001502",
29
+ "electron-to-chromium": "^1.4.428",
30
30
  "node-releases": "^2.0.12",
31
31
  "update-browserslist-db": "^1.0.11"
32
32
  },