browserslist 4.23.3 → 4.24.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/browser.js +2 -0
- package/cli.js +1 -1
- package/index.d.ts +25 -2
- package/index.js +4 -3
- package/node.js +56 -25
- package/package.json +4 -4
- package/parse.js +1 -1
package/browser.js
CHANGED
package/cli.js
CHANGED
package/index.d.ts
CHANGED
|
@@ -166,6 +166,17 @@ declare namespace browserslist {
|
|
|
166
166
|
opts?: browserslist.Options
|
|
167
167
|
): Query[]
|
|
168
168
|
|
|
169
|
+
/**
|
|
170
|
+
* Return queries for specific file inside the project.
|
|
171
|
+
*
|
|
172
|
+
* ```js
|
|
173
|
+
* browserslist.loadConfig({
|
|
174
|
+
* file: process.cwd()
|
|
175
|
+
* }) ?? browserslist.defaults
|
|
176
|
+
* ```
|
|
177
|
+
*/
|
|
178
|
+
function loadConfig(options: LoadConfigOptions): string[] | undefined
|
|
179
|
+
|
|
169
180
|
function clearCaches(): void
|
|
170
181
|
|
|
171
182
|
function parseConfig(string: string): Config
|
|
@@ -174,13 +185,25 @@ declare namespace browserslist {
|
|
|
174
185
|
|
|
175
186
|
function findConfig(...pathSegments: string[]): Config | undefined
|
|
176
187
|
|
|
188
|
+
function findConfigFile(...pathSegments: string[]): string | undefined
|
|
189
|
+
|
|
177
190
|
interface LoadConfigOptions {
|
|
191
|
+
/**
|
|
192
|
+
* Path to config file
|
|
193
|
+
* */
|
|
178
194
|
config?: string
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Path to file inside the project to find Browserslist config
|
|
198
|
+
* in closest folder
|
|
199
|
+
*/
|
|
179
200
|
path?: string
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Environment to choose part of config.
|
|
204
|
+
*/
|
|
180
205
|
env?: string
|
|
181
206
|
}
|
|
182
|
-
|
|
183
|
-
function loadConfig(options: LoadConfigOptions): string[] | undefined
|
|
184
207
|
}
|
|
185
208
|
|
|
186
209
|
declare global {
|
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
|
|
9
|
-
var
|
|
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,14 +1,14 @@
|
|
|
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
|
|
|
8
8
|
var IS_SECTION = /^\s*\[(.+)]\s*$/
|
|
9
9
|
var CONFIG_PATTERN = /^browserslist-config-/
|
|
10
10
|
var SCOPED_CONFIG__PATTERN = /@[^/]+(?:\/[^/]+)?\/browserslist-config(?:-|$|\/)/
|
|
11
|
-
var
|
|
11
|
+
var MONTHS_TO_UPDATE_CANIUSE = 6
|
|
12
12
|
var FORMAT =
|
|
13
13
|
'Browserslist config should be a string or an array ' +
|
|
14
14
|
'of strings with browser queries'
|
|
@@ -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) {
|
|
@@ -139,6 +147,16 @@ function latestReleaseTime(agents) {
|
|
|
139
147
|
return latest * 1000
|
|
140
148
|
}
|
|
141
149
|
|
|
150
|
+
function getMonthsPassed(date) {
|
|
151
|
+
var now = new Date();
|
|
152
|
+
var past = new Date(date);
|
|
153
|
+
|
|
154
|
+
var years = now.getFullYear() - past.getFullYear();
|
|
155
|
+
var months = now.getMonth() - past.getMonth();
|
|
156
|
+
|
|
157
|
+
return years * 12 + months;
|
|
158
|
+
}
|
|
159
|
+
|
|
142
160
|
function normalizeStats(data, stats) {
|
|
143
161
|
if (!data) {
|
|
144
162
|
data = {}
|
|
@@ -237,11 +255,7 @@ module.exports = {
|
|
|
237
255
|
return process.env.BROWSERSLIST
|
|
238
256
|
} else if (opts.config || process.env.BROWSERSLIST_CONFIG) {
|
|
239
257
|
var file = opts.config || process.env.BROWSERSLIST_CONFIG
|
|
240
|
-
|
|
241
|
-
return pickEnv(parsePackage(file), opts)
|
|
242
|
-
} else {
|
|
243
|
-
return pickEnv(module.exports.readConfig(file), opts)
|
|
244
|
-
}
|
|
258
|
+
return pickEnv(parsePackageOrReadConfig(file), opts)
|
|
245
259
|
} else if (opts.path) {
|
|
246
260
|
return pickEnv(module.exports.findConfig(opts.path), opts)
|
|
247
261
|
} else {
|
|
@@ -330,17 +344,8 @@ module.exports = {
|
|
|
330
344
|
return module.exports.parseConfig(fs.readFileSync(file))
|
|
331
345
|
},
|
|
332
346
|
|
|
333
|
-
|
|
334
|
-
from = path.resolve(from)
|
|
335
|
-
|
|
336
|
-
var passed = []
|
|
347
|
+
findConfigFile: function findConfigFile(from) {
|
|
337
348
|
var resolved = eachParent(from, function (dir) {
|
|
338
|
-
if (dir in configCache) {
|
|
339
|
-
return configCache[dir]
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
passed.push(dir)
|
|
343
|
-
|
|
344
349
|
var config = path.join(dir, 'browserslist')
|
|
345
350
|
var pkg = path.join(dir, 'package.json')
|
|
346
351
|
var rc = path.join(dir, '.browserslistrc')
|
|
@@ -370,16 +375,38 @@ module.exports = {
|
|
|
370
375
|
dir + ' contains both .browserslistrc and browserslist'
|
|
371
376
|
)
|
|
372
377
|
} else if (isFile(config)) {
|
|
373
|
-
return
|
|
378
|
+
return config
|
|
374
379
|
} else if (isFile(rc)) {
|
|
375
|
-
return
|
|
376
|
-
} else {
|
|
377
|
-
return
|
|
380
|
+
return rc
|
|
381
|
+
} else if (pkgBrowserslist) {
|
|
382
|
+
return pkg
|
|
378
383
|
}
|
|
379
384
|
})
|
|
385
|
+
|
|
386
|
+
return resolved
|
|
387
|
+
},
|
|
388
|
+
|
|
389
|
+
findConfig: function findConfig(from) {
|
|
390
|
+
from = path.resolve(from)
|
|
391
|
+
|
|
392
|
+
var fromDir = isFile(from) ? path.dirname(from) : from
|
|
393
|
+
if (fromDir in configCache) {
|
|
394
|
+
return configCache[fromDir]
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
var resolved
|
|
398
|
+
var configFile = this.findConfigFile(from)
|
|
399
|
+
if (configFile) {
|
|
400
|
+
resolved = parsePackageOrReadConfig(configFile)
|
|
401
|
+
}
|
|
402
|
+
|
|
380
403
|
if (!process.env.BROWSERSLIST_DISABLE_CACHE) {
|
|
381
|
-
|
|
404
|
+
var configDir = configFile && path.dirname(configFile)
|
|
405
|
+
eachParent(from, function (dir) {
|
|
382
406
|
configCache[dir] = resolved
|
|
407
|
+
if (dir === configDir) {
|
|
408
|
+
return null
|
|
409
|
+
}
|
|
383
410
|
})
|
|
384
411
|
}
|
|
385
412
|
return resolved
|
|
@@ -399,11 +426,15 @@ module.exports = {
|
|
|
399
426
|
if (process.env.BROWSERSLIST_IGNORE_OLD_DATA) return
|
|
400
427
|
|
|
401
428
|
var latest = latestReleaseTime(agentsObj)
|
|
402
|
-
var
|
|
429
|
+
var monthsPassed = getMonthsPassed(latest)
|
|
430
|
+
var halfYearAgo = monthsPassed >= MONTHS_TO_UPDATE_CANIUSE
|
|
431
|
+
|
|
432
|
+
if (latest !== 0 && halfYearAgo) {
|
|
433
|
+
var monthWord = monthsPassed > 1 ? 'months' : 'month'
|
|
434
|
+
var monthsOldText = monthsPassed + ' ' + monthWord + ' old.'
|
|
403
435
|
|
|
404
|
-
if (latest !== 0 && latest < halfYearAgo) {
|
|
405
436
|
console.warn(
|
|
406
|
-
'Browserslist: caniuse-lite is
|
|
437
|
+
'Browserslist: caniuse-lite is '+ monthsOldText +' . Please run:\n' +
|
|
407
438
|
' npx update-browserslist-db@latest\n' +
|
|
408
439
|
' Why you should do it regularly: ' +
|
|
409
440
|
'https://github.com/browserslist/update-db#readme'
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "browserslist",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.24.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.
|
|
29
|
-
"electron-to-chromium": "^1.5.
|
|
28
|
+
"caniuse-lite": "^1.0.30001669",
|
|
29
|
+
"electron-to-chromium": "^1.5.41",
|
|
30
30
|
"node-releases": "^2.0.18",
|
|
31
|
-
"update-browserslist-db": "^1.1.
|
|
31
|
+
"update-browserslist-db": "^1.1.1"
|
|
32
32
|
},
|
|
33
33
|
"engines": {
|
|
34
34
|
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
|
package/parse.js
CHANGED
|
@@ -9,7 +9,7 @@ function flatten(array) {
|
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
function find(string, predicate) {
|
|
12
|
-
for (var
|
|
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)
|