update-browserslist-db 1.0.1 → 1.0.4

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 (2) hide show
  1. package/index.js +33 -63
  2. package/package.json +4 -1
package/index.js CHANGED
@@ -28,7 +28,7 @@ function detectLockfile() {
28
28
  if (!packageDir) {
29
29
  throw new BrowserslistUpdateError(
30
30
  'Cannot find package.json. ' +
31
- 'Is this the right directory to run `npx browserslist --update-db` in?'
31
+ 'Is this the right directory to run `npx update-browserslist-db` in?'
32
32
  )
33
33
  }
34
34
 
@@ -71,56 +71,33 @@ function getLatestInfo(lock) {
71
71
  )
72
72
  }
73
73
 
74
- function getBrowsersList() {
75
- return childProcess
76
- .execSync('npx browserslist')
77
- .toString()
78
- .trim()
79
- .split('\n')
80
- .map(line => {
81
- return line.trim().split(' ')
82
- })
83
- .reduce((result, entry) => {
84
- if (!result[entry[0]]) {
85
- result[entry[0]] = []
86
- }
87
- result[entry[0]].push(entry[1])
88
- return result
89
- }, {})
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
+ }, {})
90
83
  }
91
84
 
92
- function diffBrowsersLists(old, current) {
85
+ function diffBrowsers(old, current) {
93
86
  let browsers = Object.keys(old).concat(
94
- Object.keys(current).filter(browser => {
95
- return old[browser] === undefined
96
- })
87
+ Object.keys(current).filter(browser => old[browser] === undefined)
97
88
  )
98
89
  return browsers
99
90
  .map(browser => {
100
91
  let oldVersions = old[browser] || []
101
92
  let currentVersions = current[browser] || []
102
- let intersection = oldVersions.filter(version => {
103
- return currentVersions.indexOf(version) !== -1
104
- })
105
- let addedVersions = currentVersions.filter(version => {
106
- return intersection.indexOf(version) === -1
107
- })
108
- let removedVersions = oldVersions.filter(version => {
109
- return intersection.indexOf(version) === -1
110
- })
111
- return removedVersions
112
- .map(version => {
113
- return pico.red('- ' + browser + ' ' + version)
114
- })
115
- .concat(
116
- addedVersions.map(version => {
117
- return pico.green('+ ' + browser + ' ' + version)
118
- })
119
- )
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)))
120
99
  })
121
- .reduce((result, array) => {
122
- return result.concat(array)
123
- }, [])
100
+ .reduce((result, array) => result.concat(array), [])
124
101
  .join('\n')
125
102
  }
126
103
 
@@ -176,11 +153,7 @@ function updateYarnLockfile(lock, latest) {
176
153
  }
177
154
  }
178
155
  })
179
- let content = blocks
180
- .map(lines => {
181
- return lines.join('\n')
182
- })
183
- .join('')
156
+ let content = blocks.map(lines => lines.join('\n')).join('')
184
157
  return { content, versions }
185
158
  }
186
159
 
@@ -277,12 +250,12 @@ module.exports = function updateDB(print = defaultPrint) {
277
250
  let lock = detectLockfile()
278
251
  let latest = getLatestInfo(lock)
279
252
 
280
- let browsersListRetrievalError
281
- let oldBrowsersList
253
+ let listError
254
+ let oldList
282
255
  try {
283
- oldBrowsersList = getBrowsersList()
256
+ oldList = getBrowsers()
284
257
  } catch (e) {
285
- browsersListRetrievalError = e
258
+ listError = e
286
259
  }
287
260
 
288
261
  print('Latest version: ' + pico.bold(pico.green(latest.version)) + '\n')
@@ -297,33 +270,30 @@ module.exports = function updateDB(print = defaultPrint) {
297
270
 
298
271
  print('caniuse-lite has been successfully updated\n')
299
272
 
300
- let currentBrowsersList
301
- if (!browsersListRetrievalError) {
273
+ let newList
274
+ if (!listError) {
302
275
  try {
303
- currentBrowsersList = getBrowsersList()
276
+ newList = getBrowsers()
304
277
  } catch (e) /* c8 ignore start */ {
305
- browsersListRetrievalError = e
278
+ listError = e
306
279
  } /* c8 ignore end */
307
280
  }
308
281
 
309
- if (browsersListRetrievalError) {
282
+ if (listError) {
310
283
  print(
311
284
  pico.red(
312
285
  '\n' +
313
- browsersListRetrievalError.stack +
286
+ listError.stack +
314
287
  '\n\n' +
315
288
  'Problem with browser list retrieval.\n' +
316
289
  'Target browser changes won’t be shown.\n'
317
290
  )
318
291
  )
319
292
  } else {
320
- let targetBrowserChanges = diffBrowsersLists(
321
- oldBrowsersList,
322
- currentBrowsersList
323
- )
324
- if (targetBrowserChanges) {
293
+ let changes = diffBrowsers(oldList, newList)
294
+ if (changes) {
325
295
  print('\nTarget browser changes:\n')
326
- print(targetBrowserChanges + '\n')
296
+ print(changes + '\n')
327
297
  } else {
328
298
  print('\n' + pico.green('No target browser changes') + '\n')
329
299
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "update-browserslist-db",
3
- "version": "1.0.1",
3
+ "version": "1.0.4",
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
  }