update-browserslist-db 1.0.2 → 1.0.5

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.
@@ -0,0 +1,16 @@
1
+ let { execSync } = require('child_process')
2
+ let pico = require('picocolors')
3
+
4
+ try {
5
+ let version = parseInt(execSync('npm -v'))
6
+ if (version <= 6) {
7
+ process.stderr.write(
8
+ pico.red(
9
+ 'Update npm or call ' +
10
+ pico.yellow('npx browserslist@latest --update-db') +
11
+ '\n'
12
+ )
13
+ )
14
+ process.exit(1)
15
+ }
16
+ } catch (e) {}
package/cli.js CHANGED
@@ -3,6 +3,7 @@
3
3
  let { readFileSync } = require('fs')
4
4
  let { join } = require('path')
5
5
 
6
+ require('./check-npm-version')
6
7
  let updateDb = require('./')
7
8
 
8
9
  const ROOT = __dirname
package/index.js CHANGED
@@ -71,57 +71,33 @@ function getLatestInfo(lock) {
71
71
  )
72
72
  }
73
73
 
74
- function getBrowsersList() {
75
- let spawn = childProcess.spawnSync('npx', ['browserslist'])
76
- if (spawn.status !== 0) throw new Error(spawn.stderr.toString())
77
- return spawn.stdout
78
- .toString()
79
- .trim()
80
- .split('\n')
81
- .map(line => {
82
- return line.trim().split(' ')
83
- })
84
- .reduce((result, entry) => {
85
- if (!result[entry[0]]) {
86
- result[entry[0]] = []
87
- }
88
- result[entry[0]].push(entry[1])
89
- return result
90
- }, {})
74
+ function getBrowsers() {
75
+ let browserslist = require('browserslist')
76
+ return browserslist().reduce((result, entry) => {
77
+ if (!result[entry[0]]) {
78
+ result[entry[0]] = []
79
+ }
80
+ result[entry[0]].push(entry[1])
81
+ return result
82
+ }, {})
91
83
  }
92
84
 
93
- function diffBrowsersLists(old, current) {
85
+ function diffBrowsers(old, current) {
94
86
  let browsers = Object.keys(old).concat(
95
- Object.keys(current).filter(browser => {
96
- return old[browser] === undefined
97
- })
87
+ Object.keys(current).filter(browser => old[browser] === undefined)
98
88
  )
99
89
  return browsers
100
90
  .map(browser => {
101
91
  let oldVersions = old[browser] || []
102
92
  let currentVersions = current[browser] || []
103
- let intersection = oldVersions.filter(version => {
104
- return currentVersions.indexOf(version) !== -1
105
- })
106
- let addedVersions = currentVersions.filter(version => {
107
- return intersection.indexOf(version) === -1
108
- })
109
- let removedVersions = oldVersions.filter(version => {
110
- return intersection.indexOf(version) === -1
111
- })
112
- return removedVersions
113
- .map(version => {
114
- return pico.red('- ' + browser + ' ' + version)
115
- })
116
- .concat(
117
- addedVersions.map(version => {
118
- return pico.green('+ ' + browser + ' ' + version)
119
- })
120
- )
93
+ let common = oldVersions.filter(v => currentVersions.includes(v))
94
+ let added = currentVersions.filter(v => !common.includes(v))
95
+ let removed = oldVersions.filter(v => !common.includes(v))
96
+ return removed
97
+ .map(v => pico.red('- ' + browser + ' ' + v))
98
+ .concat(added.map(v => pico.green('+ ' + browser + ' ' + v)))
121
99
  })
122
- .reduce((result, array) => {
123
- return result.concat(array)
124
- }, [])
100
+ .reduce((result, array) => result.concat(array), [])
125
101
  .join('\n')
126
102
  }
127
103
 
@@ -177,11 +153,7 @@ function updateYarnLockfile(lock, latest) {
177
153
  }
178
154
  }
179
155
  })
180
- let content = blocks
181
- .map(lines => {
182
- return lines.join('\n')
183
- })
184
- .join('')
156
+ let content = blocks.map(lines => lines.join('\n')).join('')
185
157
  return { content, versions }
186
158
  }
187
159
 
@@ -278,12 +250,12 @@ module.exports = function updateDB(print = defaultPrint) {
278
250
  let lock = detectLockfile()
279
251
  let latest = getLatestInfo(lock)
280
252
 
281
- let browsersListRetrievalError
282
- let oldBrowsersList
253
+ let listError
254
+ let oldList
283
255
  try {
284
- oldBrowsersList = getBrowsersList()
256
+ oldList = getBrowsers()
285
257
  } catch (e) {
286
- browsersListRetrievalError = e
258
+ listError = e
287
259
  }
288
260
 
289
261
  print('Latest version: ' + pico.bold(pico.green(latest.version)) + '\n')
@@ -298,33 +270,30 @@ module.exports = function updateDB(print = defaultPrint) {
298
270
 
299
271
  print('caniuse-lite has been successfully updated\n')
300
272
 
301
- let currentBrowsersList
302
- if (!browsersListRetrievalError) {
273
+ let newList
274
+ if (!listError) {
303
275
  try {
304
- currentBrowsersList = getBrowsersList()
276
+ newList = getBrowsers()
305
277
  } catch (e) /* c8 ignore start */ {
306
- browsersListRetrievalError = e
278
+ listError = e
307
279
  } /* c8 ignore end */
308
280
  }
309
281
 
310
- if (browsersListRetrievalError) {
282
+ if (listError) {
311
283
  print(
312
284
  pico.red(
313
285
  '\n' +
314
- browsersListRetrievalError.message +
286
+ listError.stack +
315
287
  '\n\n' +
316
288
  'Problem with browser list retrieval.\n' +
317
289
  'Target browser changes won’t be shown.\n'
318
290
  )
319
291
  )
320
292
  } else {
321
- let targetBrowserChanges = diffBrowsersLists(
322
- oldBrowsersList,
323
- currentBrowsersList
324
- )
325
- if (targetBrowserChanges) {
293
+ let changes = diffBrowsers(oldList, newList)
294
+ if (changes) {
326
295
  print('\nTarget browser changes:\n')
327
- print(targetBrowserChanges + '\n')
296
+ print(changes + '\n')
328
297
  } else {
329
298
  print('\n' + pico.green('No target browser changes') + '\n')
330
299
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "update-browserslist-db",
3
- "version": "1.0.2",
3
+ "version": "1.0.5",
4
4
  "description": "CLI tool to update caniuse-lite to refresh target browsers from Browserslist config",
5
5
  "keywords": [
6
6
  "caniuse",
@@ -29,6 +29,9 @@
29
29
  "escalade": "^3.1.1",
30
30
  "picocolors": "^1.0.0"
31
31
  },
32
+ "peerDependencies": {
33
+ "browserslist": ">= 4.21.0"
34
+ },
32
35
  "bin": {
33
36
  "browserslist-lint": "cli.js"
34
37
  }