browserslist 4.21.8 → 4.21.10

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.
Files changed (2) hide show
  1. package/index.js +26 -40
  2. package/package.json +4 -4
package/index.js CHANGED
@@ -10,6 +10,7 @@ var env = require('./node') // Will load browser.js in webpack
10
10
 
11
11
  var YEAR = 365.259641 * 24 * 60 * 60 * 1000
12
12
  var ANDROID_EVERGREEN_FIRST = '37'
13
+ var OP_MOB_BLINK_FIRST = 14
13
14
 
14
15
  // Helpers
15
16
 
@@ -223,21 +224,6 @@ function cloneData(data) {
223
224
  }
224
225
  }
225
226
 
226
- function mapVersions(data, map) {
227
- data.versions = data.versions.map(function (i) {
228
- return map[i] || i
229
- })
230
- data.released = data.released.map(function (i) {
231
- return map[i] || i
232
- })
233
- var fixedDate = {}
234
- for (var i in data.releaseDate) {
235
- fixedDate[map[i] || i] = data.releaseDate[i]
236
- }
237
- data.releaseDate = fixedDate
238
- return data
239
- }
240
-
241
227
  function byName(name, context) {
242
228
  name = name.toLowerCase()
243
229
  name = browserslist.aliases[name] || name
@@ -248,9 +234,6 @@ function byName(name, context) {
248
234
  } else {
249
235
  var cloned = cloneData(desktop)
250
236
  cloned.name = name
251
- if (name === 'op_mob') {
252
- cloned = mapVersions(cloned, { '10.0-10.1': '10' })
253
- }
254
237
  return cloned
255
238
  }
256
239
  }
@@ -292,14 +275,27 @@ function unknownQuery(query) {
292
275
  )
293
276
  }
294
277
 
295
- function filterAndroid(list, versions, context) {
296
- if (context.mobileToDesktop) return list
297
- var released = browserslist.data.chrome.released
298
- var nEvergreen = released.length - released.indexOf(ANDROID_EVERGREEN_FIRST)
299
- if (versions <= nEvergreen) {
278
+ // Adjusts last X versions queries for some mobile browsers,
279
+ // where caniuse data jumps from a legacy version to the latest
280
+ function filterJumps(list, name, nVersions, context) {
281
+ var jump = 1
282
+ switch (name) {
283
+ case 'android':
284
+ if (context.mobileToDesktop) return list
285
+ var released = browserslist.data.chrome.released
286
+ jump = released.length - released.indexOf(ANDROID_EVERGREEN_FIRST)
287
+ break
288
+ case 'op_mob':
289
+ var latest = browserslist.data.op_mob.released.slice(-1)[0]
290
+ jump = getMajor(latest) - OP_MOB_BLINK_FIRST + 1
291
+ break
292
+ default:
293
+ return list
294
+ }
295
+ if (nVersions <= jump) {
300
296
  return list.slice(-1)
301
297
  }
302
- return list.slice(nEvergreen - 1 - versions)
298
+ return list.slice(jump - 1 - nVersions)
303
299
  }
304
300
 
305
301
  function isSupported(flags) {
@@ -468,11 +464,11 @@ browserslist.aliases = {
468
464
 
469
465
  // Can I Use only provides a few versions for some browsers (e.g. and_chr).
470
466
  // Fallback to a similar browser for unknown versions
467
+ // Note op_mob is not included as its chromium versions are not in sync with Opera desktop
471
468
  browserslist.desktopNames = {
472
469
  and_chr: 'chrome',
473
470
  and_ff: 'firefox',
474
471
  ie_mob: 'ie',
475
- op_mob: 'opera',
476
472
  android: 'chrome' // has extra processing logic
477
473
  }
478
474
 
@@ -598,9 +594,7 @@ var QUERIES = {
598
594
  if (!data) return selected
599
595
  var list = getMajorVersions(data.released, node.versions)
600
596
  list = list.map(nameMapper(data.name))
601
- if (data.name === 'android') {
602
- list = filterAndroid(list, node.versions, context)
603
- }
597
+ list = filterJumps(list, data.name, node.versions, context)
604
598
  return selected.concat(list)
605
599
  }, [])
606
600
  }
@@ -614,9 +608,7 @@ var QUERIES = {
614
608
  if (!data) return selected
615
609
  var list = data.released.slice(-node.versions)
616
610
  list = list.map(nameMapper(data.name))
617
- if (data.name === 'android') {
618
- list = filterAndroid(list, node.versions, context)
619
- }
611
+ list = filterJumps(list, data.name, node.versions, context)
620
612
  return selected.concat(list)
621
613
  }, [])
622
614
  }
@@ -649,9 +641,7 @@ var QUERIES = {
649
641
  var data = checkName(node.browser, context)
650
642
  var validVersions = getMajorVersions(data.released, node.versions)
651
643
  var list = validVersions.map(nameMapper(data.name))
652
- if (data.name === 'android') {
653
- list = filterAndroid(list, node.versions, context)
654
- }
644
+ list = filterJumps(list, data.name, node.versions, context)
655
645
  return list
656
646
  }
657
647
  },
@@ -683,9 +673,7 @@ var QUERIES = {
683
673
  select: function (context, node) {
684
674
  var data = checkName(node.browser, context)
685
675
  var list = data.released.slice(-node.versions).map(nameMapper(data.name))
686
- if (data.name === 'android') {
687
- list = filterAndroid(list, node.versions, context)
688
- }
676
+ list = filterJumps(list, data.name, node.versions, context)
689
677
  return list
690
678
  }
691
679
  },
@@ -1013,7 +1001,7 @@ var QUERIES = {
1013
1001
  matches: [],
1014
1002
  regexp: /^(firefox|ff|fx)\s+esr$/i,
1015
1003
  select: function () {
1016
- return ['firefox 102']
1004
+ return ['firefox 102', 'firefox 115']
1017
1005
  }
1018
1006
  },
1019
1007
  opera_mini_all: {
@@ -1200,8 +1188,6 @@ var QUERIES = {
1200
1188
  }
1201
1189
  }
1202
1190
 
1203
- browserslist.versionAliases.op_mob['59'] = '58'
1204
-
1205
1191
  browserslist.nodeVersions = jsReleases.map(function (release) {
1206
1192
  return release.version
1207
1193
  })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "browserslist",
3
- "version": "4.21.8",
3
+ "version": "4.21.10",
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,9 +25,9 @@
25
25
  "license": "MIT",
26
26
  "repository": "browserslist/browserslist",
27
27
  "dependencies": {
28
- "caniuse-lite": "^1.0.30001502",
29
- "electron-to-chromium": "^1.4.428",
30
- "node-releases": "^2.0.12",
28
+ "caniuse-lite": "^1.0.30001517",
29
+ "electron-to-chromium": "^1.4.477",
30
+ "node-releases": "^2.0.13",
31
31
  "update-browserslist-db": "^1.0.11"
32
32
  },
33
33
  "engines": {