browserslist 4.17.5 → 4.19.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/node.js CHANGED
@@ -9,29 +9,33 @@ var IS_SECTION = /^\s*\[(.+)]\s*$/
9
9
  var CONFIG_PATTERN = /^browserslist-config-/
10
10
  var SCOPED_CONFIG__PATTERN = /@[^/]+\/browserslist-config(-|$|\/)/
11
11
  var TIME_TO_UPDATE_CANIUSE = 6 * 30 * 24 * 60 * 60 * 1000
12
- var FORMAT = 'Browserslist config should be a string or an array ' +
13
- 'of strings with browser queries'
12
+ var FORMAT =
13
+ 'Browserslist config should be a string or an array ' +
14
+ 'of strings with browser queries'
14
15
 
15
16
  var dataTimeChecked = false
16
- var filenessCache = { }
17
- var configCache = { }
18
- function checkExtend (name) {
17
+ var filenessCache = {}
18
+ var configCache = {}
19
+ function checkExtend(name) {
19
20
  var use = ' Use `dangerousExtend` option to disable.'
20
21
  if (!CONFIG_PATTERN.test(name) && !SCOPED_CONFIG__PATTERN.test(name)) {
21
22
  throw new BrowserslistError(
22
- 'Browserslist config needs `browserslist-config-` prefix. ' + use)
23
+ 'Browserslist config needs `browserslist-config-` prefix. ' + use
24
+ )
23
25
  }
24
26
  if (name.replace(/^@[^/]+\//, '').indexOf('.') !== -1) {
25
27
  throw new BrowserslistError(
26
- '`.` not allowed in Browserslist config name. ' + use)
28
+ '`.` not allowed in Browserslist config name. ' + use
29
+ )
27
30
  }
28
31
  if (name.indexOf('node_modules') !== -1) {
29
32
  throw new BrowserslistError(
30
- '`node_modules` not allowed in Browserslist config.' + use)
33
+ '`node_modules` not allowed in Browserslist config.' + use
34
+ )
31
35
  }
32
36
  }
33
37
 
34
- function isFile (file) {
38
+ function isFile(file) {
35
39
  if (file in filenessCache) {
36
40
  return filenessCache[file]
37
41
  }
@@ -42,7 +46,7 @@ function isFile (file) {
42
46
  return result
43
47
  }
44
48
 
45
- function eachParent (file, callback) {
49
+ function eachParent(file, callback) {
46
50
  var dir = isFile(file) ? path.dirname(file) : file
47
51
  var loc = path.resolve(dir)
48
52
  do {
@@ -52,7 +56,7 @@ function eachParent (file, callback) {
52
56
  return undefined
53
57
  }
54
58
 
55
- function check (section) {
59
+ function check(section) {
56
60
  if (Array.isArray(section)) {
57
61
  for (var i = 0; i < section.length; i++) {
58
62
  if (typeof section[i] !== 'string') {
@@ -64,7 +68,7 @@ function check (section) {
64
68
  }
65
69
  }
66
70
 
67
- function pickEnv (config, opts) {
71
+ function pickEnv(config, opts) {
68
72
  if (typeof config !== 'object') return config
69
73
 
70
74
  var name
@@ -78,10 +82,18 @@ function pickEnv (config, opts) {
78
82
  name = 'production'
79
83
  }
80
84
 
85
+ if (opts.throwOnMissing) {
86
+ if (name && name !== 'defaults' && !config[name]) {
87
+ throw new BrowserslistError(
88
+ 'Missing config for Browserslist environment `' + name + '`'
89
+ )
90
+ }
91
+ }
92
+
81
93
  return config[name] || config.defaults
82
94
  }
83
95
 
84
- function parsePackage (file) {
96
+ function parsePackage(file) {
85
97
  var config = JSON.parse(fs.readFileSync(file))
86
98
  if (config.browserlist && !config.browserslist) {
87
99
  throw new BrowserslistError(
@@ -99,10 +111,10 @@ function parsePackage (file) {
99
111
  return list
100
112
  }
101
113
 
102
- function latestReleaseTime (agents) {
114
+ function latestReleaseTime(agents) {
103
115
  var latest = 0
104
116
  for (var name in agents) {
105
- var dates = agents[name].releaseDate || { }
117
+ var dates = agents[name].releaseDate || {}
106
118
  for (var key in dates) {
107
119
  if (latest < dates[key]) {
108
120
  latest = dates[key]
@@ -112,7 +124,7 @@ function latestReleaseTime (agents) {
112
124
  return latest * 1000
113
125
  }
114
126
 
115
- function normalizeStats (data, stats) {
127
+ function normalizeStats(data, stats) {
116
128
  if (!data) {
117
129
  data = {}
118
130
  }
@@ -122,16 +134,12 @@ function normalizeStats (data, stats) {
122
134
 
123
135
  if (typeof stats !== 'object') return undefined
124
136
 
125
- var normalized = { }
137
+ var normalized = {}
126
138
  for (var i in stats) {
127
139
  var versions = Object.keys(stats[i])
128
- if (
129
- versions.length === 1 &&
130
- data[i] &&
131
- data[i].versions.length === 1
132
- ) {
140
+ if (versions.length === 1 && data[i] && data[i].versions.length === 1) {
133
141
  var normal = data[i].versions[0]
134
- normalized[i] = { }
142
+ normalized[i] = {}
135
143
  normalized[i][normal] = stats[i][versions[0]]
136
144
  } else {
137
145
  normalized[i] = stats[i]
@@ -141,7 +149,7 @@ function normalizeStats (data, stats) {
141
149
  return normalized
142
150
  }
143
151
 
144
- function normalizeUsageData (usageData, data) {
152
+ function normalizeUsageData(usageData, data) {
145
153
  for (var browser in usageData) {
146
154
  var browserUsage = usageData[browser]
147
155
  // eslint-disable-next-line max-len
@@ -156,12 +164,11 @@ function normalizeUsageData (usageData, data) {
156
164
  }
157
165
 
158
166
  module.exports = {
159
- loadQueries: function loadQueries (ctx, name) {
167
+ loadQueries: function loadQueries(ctx, name) {
160
168
  if (!ctx.dangerousExtend && !process.env.BROWSERSLIST_DANGEROUS_EXTEND) {
161
169
  checkExtend(name)
162
170
  }
163
- // eslint-disable-next-line security/detect-non-literal-require
164
- var queries = require(require.resolve(name, { paths: ['.'] }))
171
+ var queries = require(require.resolve(name, { paths: ['.', ctx.path] }))
165
172
  if (queries) {
166
173
  if (Array.isArray(queries)) {
167
174
  return queries
@@ -171,26 +178,25 @@ module.exports = {
171
178
  }
172
179
  }
173
180
  throw new BrowserslistError(
174
- '`' + name + '` config exports not an array of queries' +
175
- ' or an object of envs'
181
+ '`' +
182
+ name +
183
+ '` config exports not an array of queries' +
184
+ ' or an object of envs'
176
185
  )
177
186
  },
178
187
 
179
- loadStat: function loadStat (ctx, name, data) {
188
+ loadStat: function loadStat(ctx, name, data) {
180
189
  if (!ctx.dangerousExtend && !process.env.BROWSERSLIST_DANGEROUS_EXTEND) {
181
190
  checkExtend(name)
182
191
  }
183
- // eslint-disable-next-line security/detect-non-literal-require
184
- var stats = require(
185
- require.resolve(
186
- path.join(name, 'browserslist-stats.json'),
187
- { paths: ['.'] }
188
- )
189
- )
192
+ var stats = require(require.resolve(
193
+ path.join(name, 'browserslist-stats.json'),
194
+ { paths: ['.'] }
195
+ ))
190
196
  return normalizeStats(data, stats)
191
197
  },
192
198
 
193
- getStat: function getStat (opts, data) {
199
+ getStat: function getStat(opts, data) {
194
200
  var stats
195
201
  if (opts.stats) {
196
202
  stats = opts.stats
@@ -206,13 +212,13 @@ module.exports = {
206
212
  try {
207
213
  stats = JSON.parse(fs.readFileSync(stats))
208
214
  } catch (e) {
209
- throw new BrowserslistError('Can\'t read ' + stats)
215
+ throw new BrowserslistError("Can't read " + stats)
210
216
  }
211
217
  }
212
218
  return normalizeStats(data, stats)
213
219
  },
214
220
 
215
- loadConfig: function loadConfig (opts) {
221
+ loadConfig: function loadConfig(opts) {
216
222
  if (process.env.BROWSERSLIST) {
217
223
  return process.env.BROWSERSLIST
218
224
  } else if (opts.config || process.env.BROWSERSLIST_CONFIG) {
@@ -229,14 +235,13 @@ module.exports = {
229
235
  }
230
236
  },
231
237
 
232
- loadCountry: function loadCountry (usage, country, data) {
238
+ loadCountry: function loadCountry(usage, country, data) {
233
239
  var code = country.replace(/[^\w-]/g, '')
234
240
  if (!usage[code]) {
235
- // eslint-disable-next-line security/detect-non-literal-require
236
241
  var compressed = require('caniuse-lite/data/regions/' + code + '.js')
237
242
  var usageData = region(compressed)
238
243
  normalizeUsageData(usageData, data)
239
- usage[country] = { }
244
+ usage[country] = {}
240
245
  for (var i in usageData) {
241
246
  for (var j in usageData[i]) {
242
247
  usage[country][i + ' ' + j] = usageData[i][j]
@@ -245,14 +250,13 @@ module.exports = {
245
250
  }
246
251
  },
247
252
 
248
- loadFeature: function loadFeature (features, name) {
253
+ loadFeature: function loadFeature(features, name) {
249
254
  name = name.replace(/[^\w-]/g, '')
250
255
  if (features[name]) return
251
256
 
252
- // eslint-disable-next-line security/detect-non-literal-require
253
257
  var compressed = require('caniuse-lite/data/features/' + name + '.js')
254
258
  var stats = feature(compressed).stats
255
- features[name] = { }
259
+ features[name] = {}
256
260
  for (var i in stats) {
257
261
  for (var j in stats[i]) {
258
262
  features[name][i + ' ' + j] = stats[i][j]
@@ -260,11 +264,12 @@ module.exports = {
260
264
  }
261
265
  },
262
266
 
263
- parseConfig: function parseConfig (string) {
267
+ parseConfig: function parseConfig(string) {
264
268
  var result = { defaults: [] }
265
269
  var sections = ['defaults']
266
270
 
267
- string.toString()
271
+ string
272
+ .toString()
268
273
  .replace(/#[^\n]*/g, '')
269
274
  .split(/\n|,/)
270
275
  .map(function (line) {
@@ -294,14 +299,14 @@ module.exports = {
294
299
  return result
295
300
  },
296
301
 
297
- readConfig: function readConfig (file) {
302
+ readConfig: function readConfig(file) {
298
303
  if (!isFile(file)) {
299
- throw new BrowserslistError('Can\'t read ' + file + ' config')
304
+ throw new BrowserslistError("Can't read " + file + ' config')
300
305
  }
301
306
  return module.exports.parseConfig(fs.readFileSync(file))
302
307
  },
303
308
 
304
- findConfig: function findConfig (from) {
309
+ findConfig: function findConfig(from) {
305
310
  from = path.resolve(from)
306
311
 
307
312
  var passed = []
@@ -356,15 +361,15 @@ module.exports = {
356
361
  return resolved
357
362
  },
358
363
 
359
- clearCaches: function clearCaches () {
364
+ clearCaches: function clearCaches() {
360
365
  dataTimeChecked = false
361
- filenessCache = { }
362
- configCache = { }
366
+ filenessCache = {}
367
+ configCache = {}
363
368
 
364
- this.cache = { }
369
+ this.cache = {}
365
370
  },
366
371
 
367
- oldDataWarning: function oldDataWarning (agentsObj) {
372
+ oldDataWarning: function oldDataWarning(agentsObj) {
368
373
  if (dataTimeChecked) return
369
374
  dataTimeChecked = true
370
375
  if (process.env.BROWSERSLIST_IGNORE_OLD_DATA) return
@@ -375,14 +380,14 @@ module.exports = {
375
380
  if (latest !== 0 && latest < halfYearAgo) {
376
381
  console.warn(
377
382
  'Browserslist: caniuse-lite is outdated. Please run:\n' +
378
- ' npx browserslist@latest --update-db\n' +
379
- ' Why you should do it regularly: ' +
380
- 'https://github.com/browserslist/browserslist#browsers-data-updating'
383
+ ' npx browserslist@latest --update-db\n' +
384
+ ' Why you should do it regularly: ' +
385
+ 'https://github.com/browserslist/browserslist#browsers-data-updating'
381
386
  )
382
387
  }
383
388
  },
384
389
 
385
- currentNode: function currentNode () {
390
+ currentNode: function currentNode() {
386
391
  return 'node ' + process.versions.node
387
392
  }
388
393
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "browserslist",
3
- "version": "4.17.5",
3
+ "version": "4.19.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,8 +15,8 @@
15
15
  "license": "MIT",
16
16
  "repository": "browserslist/browserslist",
17
17
  "dependencies": {
18
- "caniuse-lite": "^1.0.30001271",
19
- "electron-to-chromium": "^1.3.878",
18
+ "caniuse-lite": "^1.0.30001286",
19
+ "electron-to-chromium": "^1.4.17",
20
20
  "escalade": "^3.1.1",
21
21
  "node-releases": "^2.0.1",
22
22
  "picocolors": "^1.0.0"
@@ -24,6 +24,7 @@
24
24
  "engines": {
25
25
  "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
26
26
  },
27
+ "packageManager": "pnpm@6.23.6",
27
28
  "bin": {
28
29
  "browserslist": "cli.js"
29
30
  },
package/update-db.js CHANGED
@@ -6,7 +6,7 @@ var fs = require('fs')
6
6
 
7
7
  var BrowserslistError = require('./error')
8
8
 
9
- function detectLockfile () {
9
+ function detectLockfile() {
10
10
  var packageDir = escalade('.', function (dir, names) {
11
11
  return names.indexOf('package.json') !== -1 ? dir : ''
12
12
  })
@@ -14,7 +14,7 @@ function detectLockfile () {
14
14
  if (!packageDir) {
15
15
  throw new BrowserslistError(
16
16
  'Cannot find package.json. ' +
17
- 'Is this the right directory to run `npx browserslist --update-db` in?'
17
+ 'Is this the right directory to run `npx browserslist --update-db` in?'
18
18
  )
19
19
  }
20
20
 
@@ -40,7 +40,7 @@ function detectLockfile () {
40
40
  )
41
41
  }
42
42
 
43
- function getLatestInfo (lock) {
43
+ function getLatestInfo(lock) {
44
44
  if (lock.mode === 'yarn') {
45
45
  if (lock.version === 1) {
46
46
  return JSON.parse(
@@ -57,8 +57,10 @@ function getLatestInfo (lock) {
57
57
  )
58
58
  }
59
59
 
60
- function getBrowsersList () {
61
- return childProcess.execSync('npx browserslist').toString()
60
+ function getBrowsersList() {
61
+ return childProcess
62
+ .execSync('npx browserslist')
63
+ .toString()
62
64
  .trim()
63
65
  .split('\n')
64
66
  .map(function (line) {
@@ -73,44 +75,49 @@ function getBrowsersList () {
73
75
  }, {})
74
76
  }
75
77
 
76
- function diffBrowsersLists (old, current) {
78
+ function diffBrowsersLists(old, current) {
77
79
  var browsers = Object.keys(old).concat(
78
80
  Object.keys(current).filter(function (browser) {
79
81
  return old[browser] === undefined
80
82
  })
81
83
  )
82
- return browsers.map(function (browser) {
83
- var oldVersions = old[browser] || []
84
- var currentVersions = current[browser] || []
85
- var intersection = oldVersions.filter(function (version) {
86
- return currentVersions.indexOf(version) !== -1
87
- })
88
- var addedVersions = currentVersions.filter(function (version) {
89
- return intersection.indexOf(version) === -1
90
- })
91
- var removedVersions = oldVersions.filter(function (version) {
92
- return intersection.indexOf(version) === -1
84
+ return browsers
85
+ .map(function (browser) {
86
+ var oldVersions = old[browser] || []
87
+ var currentVersions = current[browser] || []
88
+ var intersection = oldVersions.filter(function (version) {
89
+ return currentVersions.indexOf(version) !== -1
90
+ })
91
+ var addedVersions = currentVersions.filter(function (version) {
92
+ return intersection.indexOf(version) === -1
93
+ })
94
+ var removedVersions = oldVersions.filter(function (version) {
95
+ return intersection.indexOf(version) === -1
96
+ })
97
+ return removedVersions
98
+ .map(function (version) {
99
+ return pico.red('- ' + browser + ' ' + version)
100
+ })
101
+ .concat(
102
+ addedVersions.map(function (version) {
103
+ return pico.green('+ ' + browser + ' ' + version)
104
+ })
105
+ )
93
106
  })
94
- return removedVersions.map(function (version) {
95
- return pico.red('- ' + browser + ' ' + version)
96
- }).concat(addedVersions.map(function (version) {
97
- return pico.green('+ ' + browser + ' ' + version)
98
- }))
99
- })
100
107
  .reduce(function (result, array) {
101
108
  return result.concat(array)
102
109
  }, [])
103
110
  .join('\n')
104
111
  }
105
112
 
106
- function updateNpmLockfile (lock, latest) {
113
+ function updateNpmLockfile(lock, latest) {
107
114
  var metadata = { latest: latest, versions: [] }
108
115
  var content = deletePackage(JSON.parse(lock.content), metadata)
109
116
  metadata.content = JSON.stringify(content, null, ' ')
110
117
  return metadata
111
118
  }
112
119
 
113
- function deletePackage (node, metadata) {
120
+ function deletePackage(node, metadata) {
114
121
  if (node.dependencies) {
115
122
  if (node.dependencies['caniuse-lite']) {
116
123
  var version = node.dependencies['caniuse-lite'].version
@@ -124,9 +131,9 @@ function deletePackage (node, metadata) {
124
131
  return node
125
132
  }
126
133
 
127
- var yarnVersionRe = new RegExp('version "(.*?)"')
134
+ var yarnVersionRe = /version "(.*?)"/
128
135
 
129
- function updateYarnLockfile (lock, latest) {
136
+ function updateYarnLockfile(lock, latest) {
130
137
  var blocks = lock.content.split(/(\n{2,})/).map(function (block) {
131
138
  return block.split('\n')
132
139
  })
@@ -137,24 +144,33 @@ function updateYarnLockfile (lock, latest) {
137
144
  versions[match[1]] = true
138
145
  if (match[1] !== latest.version) {
139
146
  lines[1] = lines[1].replace(
140
- /version "[^"]+"/, 'version "' + latest.version + '"'
147
+ /version "[^"]+"/,
148
+ 'version "' + latest.version + '"'
141
149
  )
142
150
  lines[2] = lines[2].replace(
143
- /resolved "[^"]+"/, 'resolved "' + latest.dist.tarball + '"'
151
+ /resolved "[^"]+"/,
152
+ 'resolved "' + latest.dist.tarball + '"'
144
153
  )
145
- lines[3] = latest.dist.integrity ? lines[3].replace(
146
- /integrity .+/, 'integrity ' + latest.dist.integrity
147
- ) : ''
154
+ if (lines.length === 4) {
155
+ lines[3] = latest.dist.integrity
156
+ ? lines[3].replace(
157
+ /integrity .+/,
158
+ 'integrity ' + latest.dist.integrity
159
+ )
160
+ : ''
161
+ }
148
162
  }
149
163
  }
150
164
  })
151
- var content = blocks.map(function (lines) {
152
- return lines.join('\n')
153
- }).join('')
165
+ var content = blocks
166
+ .map(function (lines) {
167
+ return lines.join('\n')
168
+ })
169
+ .join('')
154
170
  return { content: content, versions: versions }
155
171
  }
156
172
 
157
- function updatePnpmLockfile (lock, latest) {
173
+ function updatePnpmLockfile(lock, latest) {
158
174
  var versions = {}
159
175
  var lines = lock.content.split('\n')
160
176
  var i
@@ -165,6 +181,7 @@ function updatePnpmLockfile (lock, latest) {
165
181
  if (lines[i].indexOf('caniuse-lite:') >= 0) {
166
182
  lineParts = lines[i].split(/:\s?/, 2)
167
183
  if (lineParts[1].indexOf('/') >= 0) {
184
+ /* c8 ignore start */
168
185
  var sublineParts = lineParts[1].split(/([/:])/)
169
186
  for (j = 0; j < sublineParts.length; j++) {
170
187
  if (sublineParts[j].indexOf('caniuse-lite') >= 0) {
@@ -174,6 +191,7 @@ function updatePnpmLockfile (lock, latest) {
174
191
  }
175
192
  }
176
193
  lineParts[1] = sublineParts.join('')
194
+ /* c8 ignore stop */
177
195
  } else {
178
196
  versions[lineParts[1]] = true
179
197
  }
@@ -203,18 +221,19 @@ function updatePnpmLockfile (lock, latest) {
203
221
  return { content: lines.join('\n'), versions: versions }
204
222
  }
205
223
 
206
- function updateLockfile (lock, latest) {
224
+ function updateLockfile(lock, latest) {
207
225
  if (!lock.content) lock.content = fs.readFileSync(lock.file).toString()
208
226
 
209
- if (lock.mode === 'npm') {
210
- return updateNpmLockfile(lock, latest)
211
- } else if (lock.mode === 'yarn') {
227
+ if (lock.mode === 'yarn') {
212
228
  return updateYarnLockfile(lock, latest)
229
+ } else if (lock.mode === 'pnpm') {
230
+ return updatePnpmLockfile(lock, latest)
231
+ } else {
232
+ return updateNpmLockfile(lock, latest)
213
233
  }
214
- return updatePnpmLockfile(lock, latest)
215
234
  }
216
235
 
217
- function updatePackageManually (print, lock, latest) {
236
+ function updatePackageManually(print, lock, latest) {
218
237
  var lockfileData = updateLockfile(lock, latest)
219
238
  var caniuseVersions = Object.keys(lockfileData.versions).sort()
220
239
  if (caniuseVersions.length === 1 && caniuseVersions[0] === latest.version) {
@@ -248,7 +267,7 @@ function updatePackageManually (print, lock, latest) {
248
267
  )
249
268
  try {
250
269
  childProcess.execSync(install + ' caniuse-lite')
251
- } catch (e) /* istanbul ignore next */ {
270
+ } catch (e) /* c8 ignore start */ {
252
271
  print(
253
272
  pico.red(
254
273
  '\n' +
@@ -261,7 +280,7 @@ function updatePackageManually (print, lock, latest) {
261
280
  )
262
281
  )
263
282
  process.exit(1)
264
- }
283
+ } /* c8 ignore end */
265
284
 
266
285
  var del = lock.mode === 'yarn' ? 'yarn remove -W' : lock.mode + ' uninstall'
267
286
  print(
@@ -272,7 +291,28 @@ function updatePackageManually (print, lock, latest) {
272
291
  childProcess.execSync(del + ' caniuse-lite')
273
292
  }
274
293
 
275
- module.exports = function updateDB (print) {
294
+ function updateWith(print, cmd) {
295
+ print('Updating caniuse-lite version\n' + pico.yellow('$ ' + cmd) + '\n')
296
+ try {
297
+ childProcess.execSync(cmd)
298
+ } catch (e) /* c8 ignore start */ {
299
+ print(pico.red(e.stdout.toString()))
300
+ print(
301
+ pico.red(
302
+ '\n' +
303
+ e.stack +
304
+ '\n\n' +
305
+ 'Problem with `' +
306
+ cmd +
307
+ '` call. ' +
308
+ 'Run it manually.\n'
309
+ )
310
+ )
311
+ process.exit(1)
312
+ } /* c8 ignore end */
313
+ }
314
+
315
+ module.exports = function updateDB(print) {
276
316
  var lock = detectLockfile()
277
317
  var latest = getLatestInfo(lock)
278
318
 
@@ -287,28 +327,7 @@ module.exports = function updateDB (print) {
287
327
  print('Latest version: ' + pico.bold(pico.green(latest.version)) + '\n')
288
328
 
289
329
  if (lock.mode === 'yarn' && lock.version !== 1) {
290
- var update = 'yarn up -R'
291
- print(
292
- 'Updating caniuse-lite version\n' +
293
- pico.yellow('$ ' + update + ' caniuse-lite') +
294
- '\n'
295
- )
296
- try {
297
- childProcess.execSync(update + ' caniuse-lite')
298
- } catch (e) /* istanbul ignore next */ {
299
- print(
300
- pico.red(
301
- '\n' +
302
- e.stack +
303
- '\n\n' +
304
- 'Problem with `' +
305
- update +
306
- ' caniuse-lite` call. ' +
307
- 'Run it manually.\n'
308
- )
309
- )
310
- process.exit(1)
311
- }
330
+ updateWith(print, 'yarn up -R caniuse-lite')
312
331
  } else {
313
332
  updatePackageManually(print, lock, latest)
314
333
  }
@@ -319,9 +338,9 @@ module.exports = function updateDB (print) {
319
338
  if (!browsersListRetrievalError) {
320
339
  try {
321
340
  currentBrowsersList = getBrowsersList()
322
- } catch (e) /* istanbul ignore next */ {
341
+ } catch (e) /* c8 ignore start */ {
323
342
  browsersListRetrievalError = e
324
- }
343
+ } /* c8 ignore end */
325
344
  }
326
345
 
327
346
  if (browsersListRetrievalError) {