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/browser.js +15 -11
- package/cli.js +26 -19
- package/error.d.ts +4 -4
- package/error.js +1 -1
- package/index.d.ts +7 -7
- package/index.js +103 -88
- package/node.js +65 -60
- package/package.json +4 -3
- package/update-db.js +88 -69
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 =
|
|
13
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
167
|
+
loadQueries: function loadQueries(ctx, name) {
|
|
160
168
|
if (!ctx.dangerousExtend && !process.env.BROWSERSLIST_DANGEROUS_EXTEND) {
|
|
161
169
|
checkExtend(name)
|
|
162
170
|
}
|
|
163
|
-
|
|
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
|
-
'`' +
|
|
175
|
-
|
|
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
|
|
188
|
+
loadStat: function loadStat(ctx, name, data) {
|
|
180
189
|
if (!ctx.dangerousExtend && !process.env.BROWSERSLIST_DANGEROUS_EXTEND) {
|
|
181
190
|
checkExtend(name)
|
|
182
191
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
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
|
|
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(
|
|
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
|
|
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
|
|
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
|
|
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
|
|
267
|
+
parseConfig: function parseConfig(string) {
|
|
264
268
|
var result = { defaults: [] }
|
|
265
269
|
var sections = ['defaults']
|
|
266
270
|
|
|
267
|
-
string
|
|
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
|
|
302
|
+
readConfig: function readConfig(file) {
|
|
298
303
|
if (!isFile(file)) {
|
|
299
|
-
throw new BrowserslistError(
|
|
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
|
|
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
|
|
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
|
-
|
|
379
|
-
|
|
380
|
-
|
|
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.
|
|
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.
|
|
19
|
-
"electron-to-chromium": "^1.
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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
|
|
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
|
|
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 =
|
|
134
|
+
var yarnVersionRe = /version "(.*?)"/
|
|
128
135
|
|
|
129
|
-
function updateYarnLockfile
|
|
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 "[^"]+"/,
|
|
147
|
+
/version "[^"]+"/,
|
|
148
|
+
'version "' + latest.version + '"'
|
|
141
149
|
)
|
|
142
150
|
lines[2] = lines[2].replace(
|
|
143
|
-
/resolved "[^"]+"/,
|
|
151
|
+
/resolved "[^"]+"/,
|
|
152
|
+
'resolved "' + latest.dist.tarball + '"'
|
|
144
153
|
)
|
|
145
|
-
lines
|
|
146
|
-
|
|
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
|
|
152
|
-
|
|
153
|
-
|
|
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
|
|
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
|
|
224
|
+
function updateLockfile(lock, latest) {
|
|
207
225
|
if (!lock.content) lock.content = fs.readFileSync(lock.file).toString()
|
|
208
226
|
|
|
209
|
-
if (lock.mode === '
|
|
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
|
|
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) /*
|
|
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
|
-
|
|
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
|
-
|
|
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) /*
|
|
341
|
+
} catch (e) /* c8 ignore start */ {
|
|
323
342
|
browsersListRetrievalError = e
|
|
324
|
-
}
|
|
343
|
+
} /* c8 ignore end */
|
|
325
344
|
}
|
|
326
345
|
|
|
327
346
|
if (browsersListRetrievalError) {
|