browserslist 4.22.3 → 4.23.1

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
@@ -193,6 +193,7 @@ declare global {
193
193
  BROWSERSLIST_ENV?: string
194
194
  BROWSERSLIST_IGNORE_OLD_DATA?: string
195
195
  BROWSERSLIST_STATS?: string
196
+ BROWSERSLIST_ROOT_PATH?: string
196
197
  }
197
198
  }
198
199
  }
package/index.js CHANGED
@@ -902,10 +902,15 @@ var QUERIES = {
902
902
  for (var name in features) {
903
903
  var data = byName(name, context)
904
904
  // Only check desktop when latest released mobile has support
905
+ var iMax = data.released.length - 1
906
+ while (iMax >= 0) {
907
+ if (data.released[iMax] in features[name]) break
908
+ iMax--
909
+ }
905
910
  var checkDesktop =
906
911
  context.mobileToDesktop &&
907
912
  name in browserslist.desktopNames &&
908
- isSupported(features[name][data.released.slice(-1)[0]], withPartial)
913
+ isSupported(features[name][data.released[iMax]], withPartial)
909
914
  data.versions.forEach(function (version) {
910
915
  var flags = features[name][version]
911
916
  if (flags === undefined && checkDesktop) {
package/node.js CHANGED
@@ -50,12 +50,22 @@ function eachParent(file, callback) {
50
50
  var dir = isFile(file) ? path.dirname(file) : file
51
51
  var loc = path.resolve(dir)
52
52
  do {
53
+ if (!pathInRoot(loc)) break
53
54
  var result = callback(loc)
54
55
  if (typeof result !== 'undefined') return result
55
56
  } while (loc !== (loc = path.dirname(loc)))
56
57
  return undefined
57
58
  }
58
59
 
60
+ function pathInRoot(p) {
61
+ if (!process.env.BROWSERSLIST_ROOT_PATH) return true
62
+ var rootPath = path.resolve(process.env.BROWSERSLIST_ROOT_PATH)
63
+ if (path.relative(rootPath, p).substring(0, 2) === '..') {
64
+ return false
65
+ }
66
+ return true
67
+ }
68
+
59
69
  function check(section) {
60
70
  if (Array.isArray(section)) {
61
71
  for (var i = 0; i < section.length; i++) {
@@ -157,7 +167,6 @@ function normalizeStats(data, stats) {
157
167
  function normalizeUsageData(usageData, data) {
158
168
  for (var browser in usageData) {
159
169
  var browserUsage = usageData[browser]
160
- // eslint-disable-next-line max-len
161
170
  // https://github.com/browserslist/browserslist/issues/431#issuecomment-565230615
162
171
  // caniuse-db returns { 0: "percentage" } for `and_*` regional stats
163
172
  if ('0' in browserUsage) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "browserslist",
3
- "version": "4.22.3",
3
+ "version": "4.23.1",
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.30001580",
29
- "electron-to-chromium": "^1.4.648",
28
+ "caniuse-lite": "^1.0.30001629",
29
+ "electron-to-chromium": "^1.4.796",
30
30
  "node-releases": "^2.0.14",
31
- "update-browserslist-db": "^1.0.13"
31
+ "update-browserslist-db": "^1.0.16"
32
32
  },
33
33
  "engines": {
34
34
  "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"