browserslist 4.21.7 → 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
@@ -302,6 +302,13 @@ function filterAndroid(list, versions, context) {
302
302
  return list.slice(nEvergreen - 1 - versions)
303
303
  }
304
304
 
305
+ function isSupported(flags) {
306
+ return (
307
+ typeof flags === 'string' &&
308
+ (flags.indexOf('y') >= 0 || flags.indexOf('a') >= 0)
309
+ )
310
+ }
311
+
305
312
  function resolve(queries, context) {
306
313
  return parse(QUERIES, queries).reduce(function (result, node, index) {
307
314
  if (node.not && index === 0) {
@@ -893,13 +900,25 @@ var QUERIES = {
893
900
  select: function (context, node) {
894
901
  env.loadFeature(browserslist.cache, node.feature)
895
902
  var features = browserslist.cache[node.feature]
896
- return Object.keys(features).reduce(function (result, version) {
897
- var flags = features[version]
898
- if (flags.indexOf('y') >= 0 || flags.indexOf('a') >= 0) {
899
- result.push(version)
900
- }
901
- return result
902
- }, [])
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
903
922
  }
904
923
  },
905
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.7",
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
  },