browserslist 4.16.8 → 4.17.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.
Files changed (3) hide show
  1. package/README.md +3 -0
  2. package/package.json +3 -3
  3. package/update-db.js +55 -20
package/README.md CHANGED
@@ -98,6 +98,8 @@ Browserslist will take queries from tool option,
98
98
  * [`browserslist-browserstack`] runs BrowserStack tests for all browsers
99
99
  in Browserslist config.
100
100
  * [`browserslist-adobe-analytics`] use Adobe Analytics data to target browsers.
101
+ * [`browserslist-new-relic`] generate a custom usage data file for Browserslist
102
+ from your New Relic Browser data.
101
103
  * [`caniuse-api`] returns browsers which support some specific feature.
102
104
  * Run `npx browserslist` in your project directory to see project’s
103
105
  target browsers. This CLI tool is built-in and available in any project
@@ -110,6 +112,7 @@ Browserslist will take queries from tool option,
110
112
  [`browserslist-ga-export`]: https://github.com/browserslist/browserslist-ga-export
111
113
  [`browserslist-useragent`]: https://github.com/pastelsky/browserslist-useragent
112
114
  [`browserslist-ga`]: https://github.com/browserslist/browserslist-ga
115
+ [`browserslist-new-relic`]: https://github.com/syntactic-salt/browserslist-new-relic
113
116
  [`caniuse-api`]: https://github.com/Nyalab/caniuse-api
114
117
 
115
118
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "browserslist",
3
- "version": "4.16.8",
3
+ "version": "4.17.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",
@@ -15,9 +15,9 @@
15
15
  "license": "MIT",
16
16
  "repository": "browserslist/browserslist",
17
17
  "dependencies": {
18
- "caniuse-lite": "^1.0.30001251",
18
+ "caniuse-lite": "^1.0.30001254",
19
19
  "colorette": "^1.3.0",
20
- "electron-to-chromium": "^1.3.811",
20
+ "electron-to-chromium": "^1.3.830",
21
21
  "escalade": "^3.1.1",
22
22
  "node-releases": "^1.1.75"
23
23
  },
package/update-db.js CHANGED
@@ -33,7 +33,10 @@ function detectLockfile () {
33
33
  } else if (fs.existsSync(lockfileNpm)) {
34
34
  return { mode: 'npm', file: lockfileNpm }
35
35
  } else if (fs.existsSync(lockfileYarn)) {
36
- return { mode: 'yarn', file: lockfileYarn }
36
+ var lock = { mode: 'yarn', file: lockfileYarn }
37
+ lock.content = fs.readFileSync(lock.file).toString()
38
+ lock.version = /# yarn lockfile v1/.test(lock.content) ? 1 : 2
39
+ return lock
37
40
  } else if (fs.existsSync(lockfileShrinkwrap)) {
38
41
  return { mode: 'npm', file: lockfileShrinkwrap }
39
42
  }
@@ -44,9 +47,15 @@ function detectLockfile () {
44
47
 
45
48
  function getLatestInfo (lock) {
46
49
  if (lock.mode === 'yarn') {
47
- return JSON.parse(
48
- childProcess.execSync('yarn info caniuse-lite --json').toString()
49
- ).data
50
+ if (lock.version === 1) {
51
+ return JSON.parse(
52
+ childProcess.execSync('yarn info caniuse-lite --json').toString()
53
+ ).data
54
+ } else {
55
+ return JSON.parse(
56
+ childProcess.execSync('yarn npm info caniuse-lite --json').toString()
57
+ )
58
+ }
50
59
  }
51
60
  return JSON.parse(
52
61
  childProcess.execSync('npm show caniuse-lite --json').toString()
@@ -187,7 +196,7 @@ function updatePnpmLockfile (lock, latest) {
187
196
  }
188
197
 
189
198
  function updateLockfile (lock, latest) {
190
- lock.content = fs.readFileSync(lock.file).toString()
199
+ if (!lock.content) lock.content = fs.readFileSync(lock.file).toString()
191
200
 
192
201
  if (lock.mode === 'npm') {
193
202
  return updateNpmLockfile(lock, latest)
@@ -197,21 +206,7 @@ function updateLockfile (lock, latest) {
197
206
  return updatePnpmLockfile(lock, latest)
198
207
  }
199
208
 
200
- module.exports = function updateDB (print) {
201
- var lock = detectLockfile()
202
- var latest = getLatestInfo(lock)
203
- var browsersListRetrievalError
204
- var oldBrowsersList
205
- try {
206
- oldBrowsersList = getBrowsersList()
207
- } catch (e) {
208
- browsersListRetrievalError = e
209
- }
210
-
211
- print(
212
- 'Latest version: ' + bold(green(latest.version)) + '\n'
213
- )
214
-
209
+ function updatePackageManually (print, lock, latest) {
215
210
  var lockfileData = updateLockfile(lock, latest)
216
211
  var caniuseVersions = Object.keys(lockfileData.versions).sort()
217
212
  if (caniuseVersions.length === 1 &&
@@ -260,6 +255,46 @@ module.exports = function updateDB (print) {
260
255
  yellow('$ ' + del + ' caniuse-lite') + '\n'
261
256
  )
262
257
  childProcess.execSync(del + ' caniuse-lite')
258
+ }
259
+
260
+ module.exports = function updateDB (print) {
261
+ var lock = detectLockfile()
262
+ var latest = getLatestInfo(lock)
263
+
264
+ var browsersListRetrievalError
265
+ var oldBrowsersList
266
+ try {
267
+ oldBrowsersList = getBrowsersList()
268
+ } catch (e) {
269
+ browsersListRetrievalError = e
270
+ }
271
+
272
+ print(
273
+ 'Latest version: ' + bold(green(latest.version)) + '\n'
274
+ )
275
+
276
+ if (lock.mode === 'yarn' && lock.version !== 1) {
277
+ var update = 'yarn up -R'
278
+ print(
279
+ 'Updating caniuse-lite version\n' +
280
+ yellow('$ ' + update + ' caniuse-lite') + '\n'
281
+ )
282
+ try {
283
+ childProcess.execSync(update + ' caniuse-lite')
284
+ } catch (e) /* istanbul ignore next */ {
285
+ print(
286
+ red(
287
+ '\n' +
288
+ e.stack + '\n\n' +
289
+ 'Problem with `' + update + ' caniuse-lite` call. ' +
290
+ 'Run it manually.\n'
291
+ )
292
+ )
293
+ process.exit(1)
294
+ }
295
+ } else {
296
+ updatePackageManually(print, lock, latest)
297
+ }
263
298
 
264
299
  print('caniuse-lite has been successfully updated\n')
265
300