browserslist 4.23.3 → 4.24.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/browser.js CHANGED
@@ -44,6 +44,8 @@ module.exports = {
44
44
 
45
45
  findConfig: noop,
46
46
 
47
+ findConfigFile: noop,
48
+
47
49
  clearCaches: noop,
48
50
 
49
51
  oldDataWarning: noop,
package/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- var updateDb = require('update-browserslist-db')
4
3
  var fs = require('fs')
4
+ var updateDb = require('update-browserslist-db')
5
5
 
6
6
  var browserslist = require('./')
7
7
  var pkg = require('./package.json')
package/index.d.ts CHANGED
@@ -174,6 +174,8 @@ declare namespace browserslist {
174
174
 
175
175
  function findConfig(...pathSegments: string[]): Config | undefined
176
176
 
177
+ function findConfigFile(...pathSegments: string[]): string | undefined
178
+
177
179
  interface LoadConfigOptions {
178
180
  config?: string
179
181
  path?: string
package/index.js CHANGED
@@ -1,12 +1,12 @@
1
1
  var jsReleases = require('node-releases/data/processed/envs.json')
2
2
  var agents = require('caniuse-lite/dist/unpacker/agents').agents
3
+ var e2c = require('electron-to-chromium/versions')
3
4
  var jsEOL = require('node-releases/data/release-schedule/release-schedule.json')
4
5
  var path = require('path')
5
- var e2c = require('electron-to-chromium/versions')
6
6
 
7
7
  var BrowserslistError = require('./error')
8
- var parse = require('./parse')
9
- var env = require('./node') // Will load browser.js in webpack
8
+ var env = require('./node')
9
+ var parse = require('./parse') // 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'
@@ -491,6 +491,7 @@ browserslist.versionAliases = {}
491
491
  browserslist.clearCaches = env.clearCaches
492
492
  browserslist.parseConfig = env.parseConfig
493
493
  browserslist.readConfig = env.readConfig
494
+ browserslist.findConfigFile = env.findConfigFile
494
495
  browserslist.findConfig = env.findConfig
495
496
  browserslist.loadConfig = env.loadConfig
496
497
 
package/node.js CHANGED
@@ -1,7 +1,7 @@
1
1
  var feature = require('caniuse-lite/dist/unpacker/feature').default
2
2
  var region = require('caniuse-lite/dist/unpacker/region').default
3
- var path = require('path')
4
3
  var fs = require('fs')
4
+ var path = require('path')
5
5
 
6
6
  var BrowserslistError = require('./error')
7
7
 
@@ -126,6 +126,14 @@ function parsePackage(file) {
126
126
  return list
127
127
  }
128
128
 
129
+ function parsePackageOrReadConfig(file) {
130
+ if (path.basename(file) === 'package.json') {
131
+ return parsePackage(file)
132
+ } else {
133
+ return module.exports.readConfig(file)
134
+ }
135
+ }
136
+
129
137
  function latestReleaseTime(agents) {
130
138
  var latest = 0
131
139
  for (var name in agents) {
@@ -237,11 +245,7 @@ module.exports = {
237
245
  return process.env.BROWSERSLIST
238
246
  } else if (opts.config || process.env.BROWSERSLIST_CONFIG) {
239
247
  var file = opts.config || process.env.BROWSERSLIST_CONFIG
240
- if (path.basename(file) === 'package.json') {
241
- return pickEnv(parsePackage(file), opts)
242
- } else {
243
- return pickEnv(module.exports.readConfig(file), opts)
244
- }
248
+ return pickEnv(parsePackageOrReadConfig(file), opts)
245
249
  } else if (opts.path) {
246
250
  return pickEnv(module.exports.findConfig(opts.path), opts)
247
251
  } else {
@@ -330,17 +334,8 @@ module.exports = {
330
334
  return module.exports.parseConfig(fs.readFileSync(file))
331
335
  },
332
336
 
333
- findConfig: function findConfig(from) {
334
- from = path.resolve(from)
335
-
336
- var passed = []
337
+ findConfigFile: function findConfigFile(from) {
337
338
  var resolved = eachParent(from, function (dir) {
338
- if (dir in configCache) {
339
- return configCache[dir]
340
- }
341
-
342
- passed.push(dir)
343
-
344
339
  var config = path.join(dir, 'browserslist')
345
340
  var pkg = path.join(dir, 'package.json')
346
341
  var rc = path.join(dir, '.browserslistrc')
@@ -370,16 +365,38 @@ module.exports = {
370
365
  dir + ' contains both .browserslistrc and browserslist'
371
366
  )
372
367
  } else if (isFile(config)) {
373
- return module.exports.readConfig(config)
368
+ return config
374
369
  } else if (isFile(rc)) {
375
- return module.exports.readConfig(rc)
376
- } else {
377
- return pkgBrowserslist
370
+ return rc
371
+ } else if (pkgBrowserslist) {
372
+ return pkg
378
373
  }
379
374
  })
375
+
376
+ return resolved
377
+ },
378
+
379
+ findConfig: function findConfig(from) {
380
+ from = path.resolve(from)
381
+
382
+ var fromDir = isFile(from) ? path.dirname(from) : from
383
+ if (fromDir in configCache) {
384
+ return configCache[fromDir]
385
+ }
386
+
387
+ var resolved
388
+ var configFile = this.findConfigFile(from)
389
+ if (configFile) {
390
+ resolved = parsePackageOrReadConfig(configFile)
391
+ }
392
+
380
393
  if (!process.env.BROWSERSLIST_DISABLE_CACHE) {
381
- passed.forEach(function (dir) {
394
+ var configDir = configFile && path.dirname(configFile)
395
+ eachParent(from, function (dir) {
382
396
  configCache[dir] = resolved
397
+ if (dir === configDir) {
398
+ return null
399
+ }
383
400
  })
384
401
  }
385
402
  return resolved
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "browserslist",
3
- "version": "4.23.3",
3
+ "version": "4.24.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,8 +25,8 @@
25
25
  "license": "MIT",
26
26
  "repository": "browserslist/browserslist",
27
27
  "dependencies": {
28
- "caniuse-lite": "^1.0.30001646",
29
- "electron-to-chromium": "^1.5.4",
28
+ "caniuse-lite": "^1.0.30001663",
29
+ "electron-to-chromium": "^1.5.28",
30
30
  "node-releases": "^2.0.18",
31
31
  "update-browserslist-db": "^1.1.0"
32
32
  },
package/parse.js CHANGED
@@ -9,7 +9,7 @@ function flatten(array) {
9
9
  }
10
10
 
11
11
  function find(string, predicate) {
12
- for (var n = 1, max = string.length; n <= max; n++) {
12
+ for (var max = string.length, n = 1; n <= max; n++) {
13
13
  var parsed = string.substr(-n, n)
14
14
  if (predicate(parsed, n, max)) {
15
15
  return string.slice(0, -n)