browserslist 4.14.6 → 4.16.1
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/CHANGELOG.md +16 -1
- package/README.md +13 -7
- package/error.d.ts +7 -0
- package/index.d.ts +172 -0
- package/index.js +7 -0
- package/node.js +1 -1
- package/package.json +8 -6
- package/update-db.js +104 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,8 +1,23 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
|
3
3
|
|
|
4
|
+
## 4.16.1
|
|
5
|
+
* Fixed Chrome 4 with `mobileToDesktop` (by Aron Woost).
|
|
6
|
+
|
|
7
|
+
## 4.16
|
|
8
|
+
* Add `browserslist config` query.
|
|
9
|
+
|
|
10
|
+
## 4.15
|
|
11
|
+
* Add TypeScript types (by Dmitry Semigradsky).
|
|
12
|
+
|
|
13
|
+
## 4.14.7
|
|
14
|
+
* Fixed Yarn Workspaces support to `--update-db` (by Fausto Núñez Alberro).
|
|
15
|
+
* Added browser changes to `--update-db` (by @AleksandrSl).
|
|
16
|
+
* Added color output to `--update-db`.
|
|
17
|
+
* Updated `package.funding` to have link to our Open Collective.
|
|
18
|
+
|
|
4
19
|
## 4.14.6
|
|
5
|
-
* Fixed Yarn support
|
|
20
|
+
* Fixed Yarn support in `--update-db` (by Ivan Storck).
|
|
6
21
|
* Fixed npm 7 support in `--update-db`.
|
|
7
22
|
|
|
8
23
|
## 4.14.5
|
package/README.md
CHANGED
|
@@ -21,7 +21,6 @@ when you add the following to `package.json`:
|
|
|
21
21
|
"browserslist": [
|
|
22
22
|
"defaults",
|
|
23
23
|
"not IE 11",
|
|
24
|
-
"not IE_Mob 11",
|
|
25
24
|
"maintained node versions"
|
|
26
25
|
]
|
|
27
26
|
```
|
|
@@ -33,7 +32,6 @@ Or in `.browserslistrc` config:
|
|
|
33
32
|
|
|
34
33
|
defaults
|
|
35
34
|
not IE 11
|
|
36
|
-
not IE_Mob 11
|
|
37
35
|
maintained node versions
|
|
38
36
|
```
|
|
39
37
|
|
|
@@ -45,8 +43,6 @@ Browserslist will take queries from tool option,
|
|
|
45
43
|
`browserslist` config, `.browserslistrc` config,
|
|
46
44
|
`browserslist` section in `package.json` or environment variables.
|
|
47
45
|
|
|
48
|
-
[Browserslist Example] shows how every tool uses Browserslist.
|
|
49
|
-
|
|
50
46
|
[cult-img]: https://cultofmartians.com/assets/badges/badge.svg
|
|
51
47
|
[cult]: https://cultofmartians.com/done.html
|
|
52
48
|
|
|
@@ -69,6 +65,7 @@ Browserslist will take queries from tool option,
|
|
|
69
65
|
## Table of Contents
|
|
70
66
|
|
|
71
67
|
* [Tools](#tools)
|
|
68
|
+
* [Text Editors](#text-editors)
|
|
72
69
|
* [Best Practices](#best-practices)
|
|
73
70
|
* [Browsers Data Updating](#browsers-data-updating)
|
|
74
71
|
* [Queries](#queries)
|
|
@@ -116,6 +113,13 @@ Browserslist will take queries from tool option,
|
|
|
116
113
|
[`caniuse-api`]: https://github.com/Nyalab/caniuse-api
|
|
117
114
|
|
|
118
115
|
|
|
116
|
+
### Text Editors
|
|
117
|
+
|
|
118
|
+
These extensions will add syntax highlighting for `.browserslistrc` files.
|
|
119
|
+
|
|
120
|
+
* [VS Code](https://marketplace.visualstudio.com/items?itemName=webben.browserslist)
|
|
121
|
+
* [Vim](https://github.com/browserslist/vim-browserslist)
|
|
122
|
+
|
|
119
123
|
## Best Practices
|
|
120
124
|
|
|
121
125
|
* There is a `defaults` query, which gives a reasonable configuration
|
|
@@ -155,7 +159,7 @@ You need to do it regularly for two reasons:
|
|
|
155
159
|
`last 2 versions` or `>1%`. For example, if you created your project
|
|
156
160
|
2 years ago and did not update your dependencies, `last 1 version`
|
|
157
161
|
will return 2 year old browsers.
|
|
158
|
-
2. `
|
|
162
|
+
2. `caniuse-lite` deduplication: to synchronize version in different tools.
|
|
159
163
|
|
|
160
164
|
> What is deduplication?
|
|
161
165
|
|
|
@@ -268,6 +272,9 @@ You can specify the browser and Node.js versions by queries (case insensitive):
|
|
|
268
272
|
`es6-module` here is the `feat` parameter at the URL of the [Can I Use]
|
|
269
273
|
page. A list of all available features can be found at
|
|
270
274
|
[`caniuse-lite/data/features`].
|
|
275
|
+
* `browserslist config`: the browsers defined in Browserslist config. Useful
|
|
276
|
+
in Differential Serving to modify user’s config like
|
|
277
|
+
`browserslist config and supports es6-module`.
|
|
271
278
|
* `since 2015` or `last 2 years`: all versions released since year 2015
|
|
272
279
|
(also `since 2015-03` and `since 2015-03-10`).
|
|
273
280
|
* `unreleased versions` or `unreleased Chrome versions`:
|
|
@@ -395,8 +402,7 @@ naming or prefixing the module with `@scope/browserslist-config`, such as
|
|
|
395
402
|
`@scope/browserslist-config` or `@scope/browserslist-config-mycompany`.
|
|
396
403
|
|
|
397
404
|
If you don’t accept Browserslist queries from users, you can disable the
|
|
398
|
-
validation by using the or `BROWSERSLIST_DANGEROUS_EXTEND` environment variable
|
|
399
|
-
or `dangerousExtend` option.
|
|
405
|
+
validation by using the or `BROWSERSLIST_DANGEROUS_EXTEND` environment variable.
|
|
400
406
|
|
|
401
407
|
```sh
|
|
402
408
|
BROWSERSLIST_DANGEROUS_EXTEND=1 npx webpack
|
package/error.d.ts
ADDED
package/index.d.ts
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Return array of browsers by selection queries.
|
|
3
|
+
*
|
|
4
|
+
* ```js
|
|
5
|
+
* browserslist('IE >= 10, IE 8') //=> ['ie 11', 'ie 10', 'ie 8']
|
|
6
|
+
* ```
|
|
7
|
+
*
|
|
8
|
+
* @param queries Browser queries.
|
|
9
|
+
* @returns Array with browser names in Can I Use.
|
|
10
|
+
*/
|
|
11
|
+
declare function browserslist (
|
|
12
|
+
queries?: string | readonly string[] | null,
|
|
13
|
+
opts?: browserslist.Options
|
|
14
|
+
): string[]
|
|
15
|
+
|
|
16
|
+
declare namespace browserslist {
|
|
17
|
+
interface Options {
|
|
18
|
+
/**
|
|
19
|
+
* Path to processed file. It will be used to find config files.
|
|
20
|
+
*/
|
|
21
|
+
path?: string | false
|
|
22
|
+
/**
|
|
23
|
+
* Processing environment. It will be used to take right queries
|
|
24
|
+
* from config file.
|
|
25
|
+
*/
|
|
26
|
+
env?: string
|
|
27
|
+
/**
|
|
28
|
+
* Custom browser usage statistics for "> 1% in my stats" query.
|
|
29
|
+
*/
|
|
30
|
+
stats?: Stats | string
|
|
31
|
+
/**
|
|
32
|
+
* Path to config file with queries.
|
|
33
|
+
*/
|
|
34
|
+
config?: string
|
|
35
|
+
/**
|
|
36
|
+
* Do not throw on unknown version in direct query.
|
|
37
|
+
*/
|
|
38
|
+
ignoreUnknownVersions?: boolean
|
|
39
|
+
/**
|
|
40
|
+
* Disable security checks for extend query.
|
|
41
|
+
*/
|
|
42
|
+
dangerousExtend?: boolean
|
|
43
|
+
/**
|
|
44
|
+
* Alias mobile browsers to the desktop version when Can I Use
|
|
45
|
+
* doesn’t have data about the specified version.
|
|
46
|
+
*/
|
|
47
|
+
mobileToDesktop?: boolean
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
type Config = {
|
|
51
|
+
defaults: string[]
|
|
52
|
+
[section: string]: string[] | undefined
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
interface Stats {
|
|
56
|
+
[browser: string]: {
|
|
57
|
+
[version: string]: number
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Browser names aliases.
|
|
63
|
+
*/
|
|
64
|
+
let aliases: {
|
|
65
|
+
[alias: string]: string | undefined
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Aliases to work with joined versions like `ios_saf 7.0-7.1`.
|
|
70
|
+
*/
|
|
71
|
+
let versionAliases: {
|
|
72
|
+
[browser: string]:
|
|
73
|
+
| {
|
|
74
|
+
[version: string]: string | undefined
|
|
75
|
+
}
|
|
76
|
+
| undefined
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Can I Use only provides a few versions for some browsers (e.g. `and_chr`).
|
|
81
|
+
*
|
|
82
|
+
* Fallback to a similar browser for unknown versions.
|
|
83
|
+
*/
|
|
84
|
+
let desktopNames: {
|
|
85
|
+
[browser: string]: string | undefined
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
let data: {
|
|
89
|
+
[browser: string]:
|
|
90
|
+
| {
|
|
91
|
+
name: string
|
|
92
|
+
versions: string[]
|
|
93
|
+
released: string[]
|
|
94
|
+
releaseDate: {
|
|
95
|
+
[version: string]: number | undefined | null
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
| undefined
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
interface Usage {
|
|
102
|
+
[version: string]: number
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
let usage: {
|
|
106
|
+
global?: Usage
|
|
107
|
+
custom?: Usage | null
|
|
108
|
+
[country: string]: Usage | undefined | null
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
let cache: {
|
|
112
|
+
[feature: string]: {
|
|
113
|
+
[name: string]: 'y' | 'n'
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Default browsers query
|
|
119
|
+
*/
|
|
120
|
+
let defaults: readonly string[]
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Which statistics should be used. Country code or custom statistics.
|
|
124
|
+
* Pass `"my stats"` to load statistics from `Browserslist` files.
|
|
125
|
+
*/
|
|
126
|
+
type StatsOptions = string | 'my stats' | Stats | { dataByBrowser: Stats }
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Return browsers market coverage.
|
|
130
|
+
*
|
|
131
|
+
* ```js
|
|
132
|
+
* browserslist.coverage(browserslist('> 1% in US'), 'US') //=> 83.1
|
|
133
|
+
* ```
|
|
134
|
+
*
|
|
135
|
+
* @param browsers Browsers names in Can I Use.
|
|
136
|
+
* @param stats Which statistics should be used.
|
|
137
|
+
* @returns Total market coverage for all selected browsers.
|
|
138
|
+
*/
|
|
139
|
+
function coverage (browsers: readonly string[], stats?: StatsOptions): number
|
|
140
|
+
|
|
141
|
+
function clearCaches (): void
|
|
142
|
+
|
|
143
|
+
function parseConfig (string: string): Config
|
|
144
|
+
|
|
145
|
+
function readConfig (file: string): Config
|
|
146
|
+
|
|
147
|
+
function findConfig (...pathSegments: string[]): Config | undefined
|
|
148
|
+
|
|
149
|
+
interface LoadConfigOptions {
|
|
150
|
+
config?: string
|
|
151
|
+
path?: string
|
|
152
|
+
env?: string
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
function loadConfig (options: LoadConfigOptions): string[] | undefined
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
declare global {
|
|
159
|
+
namespace NodeJS {
|
|
160
|
+
interface ProcessEnv {
|
|
161
|
+
BROWSERSLIST?: string
|
|
162
|
+
BROWSERSLIST_CONFIG?: string
|
|
163
|
+
BROWSERSLIST_DANGEROUS_EXTEND?: string
|
|
164
|
+
BROWSERSLIST_DISABLE_CACHE?: string
|
|
165
|
+
BROWSERSLIST_ENV?: string
|
|
166
|
+
BROWSERSLIST_IGNORE_OLD_DATA?: string
|
|
167
|
+
BROWSERSLIST_STATS?: string
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
export = browserslist
|
package/index.js
CHANGED
|
@@ -425,6 +425,7 @@ function browserslist (queries, opts) {
|
|
|
425
425
|
ignoreUnknownVersions: opts.ignoreUnknownVersions,
|
|
426
426
|
dangerousExtend: opts.dangerousExtend,
|
|
427
427
|
mobileToDesktop: opts.mobileToDesktop,
|
|
428
|
+
path: opts.path,
|
|
428
429
|
env: opts.env
|
|
429
430
|
}
|
|
430
431
|
|
|
@@ -1105,6 +1106,12 @@ var QUERIES = [
|
|
|
1105
1106
|
return [data.name + ' ' + version]
|
|
1106
1107
|
}
|
|
1107
1108
|
},
|
|
1109
|
+
{
|
|
1110
|
+
regexp: /^browserslist config$/i,
|
|
1111
|
+
select: function (context) {
|
|
1112
|
+
return browserslist(undefined, context)
|
|
1113
|
+
}
|
|
1114
|
+
},
|
|
1108
1115
|
{
|
|
1109
1116
|
regexp: /^extends (.+)$/i,
|
|
1110
1117
|
select: function (context, name) {
|
package/node.js
CHANGED
|
@@ -127,7 +127,7 @@ function normalizeStats (data, stats) {
|
|
|
127
127
|
data[i] &&
|
|
128
128
|
data[i].versions.length === 1
|
|
129
129
|
) {
|
|
130
|
-
var normal =
|
|
130
|
+
var normal = data[i].versions[0]
|
|
131
131
|
normalized[i] = { }
|
|
132
132
|
normalized[i][normal] = stats[i][versions[0]]
|
|
133
133
|
} else {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "browserslist",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.16.1",
|
|
4
4
|
"description": "Share target browsers between different front-end tools, like Autoprefixer, Stylelint and babel-env-preset",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"caniuse",
|
|
@@ -8,17 +8,18 @@
|
|
|
8
8
|
"target"
|
|
9
9
|
],
|
|
10
10
|
"funding": {
|
|
11
|
-
"type": "
|
|
12
|
-
"url": "https://
|
|
11
|
+
"type": "opencollective",
|
|
12
|
+
"url": "https://opencollective.com/browserslist"
|
|
13
13
|
},
|
|
14
14
|
"author": "Andrey Sitnik <andrey@sitnik.ru>",
|
|
15
15
|
"license": "MIT",
|
|
16
16
|
"repository": "browserslist/browserslist",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"caniuse-lite": "^1.0.
|
|
19
|
-
"
|
|
18
|
+
"caniuse-lite": "^1.0.30001173",
|
|
19
|
+
"colorette": "^1.2.1",
|
|
20
|
+
"electron-to-chromium": "^1.3.634",
|
|
20
21
|
"escalade": "^3.1.1",
|
|
21
|
-
"node-releases": "^1.1.
|
|
22
|
+
"node-releases": "^1.1.69"
|
|
22
23
|
},
|
|
23
24
|
"engines": {
|
|
24
25
|
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
|
|
@@ -26,6 +27,7 @@
|
|
|
26
27
|
"bin": {
|
|
27
28
|
"browserslist": "cli.js"
|
|
28
29
|
},
|
|
30
|
+
"types": "./index.d.ts",
|
|
29
31
|
"browser": {
|
|
30
32
|
"./node.js": "./browser.js",
|
|
31
33
|
"path": false
|
package/update-db.js
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
var childProcess = require('child_process')
|
|
2
|
+
var colorette = require('colorette')
|
|
2
3
|
var escalade = require('escalade/sync')
|
|
3
4
|
var path = require('path')
|
|
4
5
|
var fs = require('fs')
|
|
5
6
|
|
|
6
7
|
var BrowserslistError = require('./error')
|
|
7
8
|
|
|
9
|
+
var red = colorette.red
|
|
10
|
+
var bold = colorette.bold
|
|
11
|
+
var green = colorette.green
|
|
12
|
+
var yellow = colorette.yellow
|
|
13
|
+
|
|
8
14
|
function detectLockfile () {
|
|
9
15
|
var packageDir = escalade('.', function (dir, names) {
|
|
10
16
|
return names.indexOf('package.json') !== -1 ? dir : ''
|
|
@@ -65,6 +71,52 @@ function getLatestInfo (lock) {
|
|
|
65
71
|
}
|
|
66
72
|
}
|
|
67
73
|
|
|
74
|
+
function getBrowsersList () {
|
|
75
|
+
return childProcess.execSync('npx browserslist').toString()
|
|
76
|
+
.trim()
|
|
77
|
+
.split('\n')
|
|
78
|
+
.map(function (line) {
|
|
79
|
+
return line.trim().split(' ')
|
|
80
|
+
})
|
|
81
|
+
.reduce(function (result, entry) {
|
|
82
|
+
if (!result[entry[0]]) {
|
|
83
|
+
result[entry[0]] = []
|
|
84
|
+
}
|
|
85
|
+
result[entry[0]].push(entry[1])
|
|
86
|
+
return result
|
|
87
|
+
}, {})
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function diffBrowsersLists (old, current) {
|
|
91
|
+
var browsers = Object.keys(old).concat(
|
|
92
|
+
Object.keys(current).filter(function (browser) {
|
|
93
|
+
return old[browser] === undefined
|
|
94
|
+
})
|
|
95
|
+
)
|
|
96
|
+
return browsers.map(function (browser) {
|
|
97
|
+
var oldVersions = old[browser] || []
|
|
98
|
+
var currentVersions = current[browser] || []
|
|
99
|
+
var intersection = oldVersions.filter(function (version) {
|
|
100
|
+
return currentVersions.indexOf(version) !== -1
|
|
101
|
+
})
|
|
102
|
+
var addedVersions = currentVersions.filter(function (version) {
|
|
103
|
+
return intersection.indexOf(version) === -1
|
|
104
|
+
})
|
|
105
|
+
var removedVersions = oldVersions.filter(function (version) {
|
|
106
|
+
return intersection.indexOf(version) === -1
|
|
107
|
+
})
|
|
108
|
+
return removedVersions.map(function (version) {
|
|
109
|
+
return red('- ' + browser + ' ' + version)
|
|
110
|
+
}).concat(addedVersions.map(function (version) {
|
|
111
|
+
return green('+ ' + browser + ' ' + version)
|
|
112
|
+
}))
|
|
113
|
+
})
|
|
114
|
+
.reduce(function (result, array) {
|
|
115
|
+
return result.concat(array)
|
|
116
|
+
}, [])
|
|
117
|
+
.join('\n')
|
|
118
|
+
}
|
|
119
|
+
|
|
68
120
|
function updateLockfile (lock, latest) {
|
|
69
121
|
if (lock.mode === 'npm') {
|
|
70
122
|
var fixed = deletePackage(JSON.parse(lock.content))
|
|
@@ -126,36 +178,80 @@ module.exports = function updateDB (print) {
|
|
|
126
178
|
|
|
127
179
|
var current = getCurrentVersion(lock)
|
|
128
180
|
var latest = getLatestInfo(lock)
|
|
181
|
+
var browsersListRetrievalError
|
|
182
|
+
var oldBrowsersList
|
|
183
|
+
try {
|
|
184
|
+
oldBrowsersList = getBrowsersList()
|
|
185
|
+
} catch (e) {
|
|
186
|
+
browsersListRetrievalError = e
|
|
187
|
+
}
|
|
129
188
|
|
|
130
189
|
if (typeof current === 'string') {
|
|
131
|
-
print('Current version: ' + current + '\n')
|
|
190
|
+
print('Current version: ' + bold(red(current)) + '\n')
|
|
132
191
|
}
|
|
133
192
|
print(
|
|
134
|
-
'New version:
|
|
193
|
+
'New version: ' + bold(green(latest.version)) + '\n' +
|
|
135
194
|
'Removing old caniuse-lite from lock file\n'
|
|
136
195
|
)
|
|
137
196
|
|
|
138
197
|
fs.writeFileSync(lock.file, updateLockfile(lock, latest))
|
|
139
198
|
|
|
140
|
-
var install = lock.mode === 'yarn' ? 'yarn add' : lock.mode + ' install'
|
|
199
|
+
var install = lock.mode === 'yarn' ? 'yarn add -W' : lock.mode + ' install'
|
|
141
200
|
print(
|
|
142
201
|
'Installing new caniuse-lite version\n' +
|
|
143
|
-
'$ ' + install + ' caniuse-lite\n'
|
|
202
|
+
yellow('$ ' + install + ' caniuse-lite') + '\n'
|
|
144
203
|
)
|
|
145
204
|
try {
|
|
146
205
|
childProcess.execSync(install + ' caniuse-lite')
|
|
147
206
|
} catch (e) /* istanbul ignore next */ {
|
|
148
|
-
print(
|
|
149
|
-
|
|
207
|
+
print(
|
|
208
|
+
red(
|
|
209
|
+
'\n' +
|
|
210
|
+
e.stack + '\n\n' +
|
|
211
|
+
'Problem with `' + install + ' caniuse-lite` call. ' +
|
|
212
|
+
'Run it manually.\n'
|
|
213
|
+
)
|
|
214
|
+
)
|
|
150
215
|
process.exit(1)
|
|
151
216
|
}
|
|
152
217
|
|
|
153
|
-
var del = lock.mode === 'yarn' ? 'yarn remove' : lock.mode + ' uninstall'
|
|
218
|
+
var del = lock.mode === 'yarn' ? 'yarn remove -W' : lock.mode + ' uninstall'
|
|
154
219
|
print(
|
|
155
220
|
'Cleaning package.json dependencies from caniuse-lite\n' +
|
|
156
|
-
'$ ' + del + ' caniuse-lite\n'
|
|
221
|
+
yellow('$ ' + del + ' caniuse-lite') + '\n'
|
|
157
222
|
)
|
|
158
223
|
childProcess.execSync(del + ' caniuse-lite')
|
|
159
224
|
|
|
160
225
|
print('caniuse-lite has been successfully updated\n')
|
|
226
|
+
|
|
227
|
+
var currentBrowsersList
|
|
228
|
+
if (!browsersListRetrievalError) {
|
|
229
|
+
try {
|
|
230
|
+
currentBrowsersList = getBrowsersList()
|
|
231
|
+
} catch (e) /* istanbul ignore next */ {
|
|
232
|
+
browsersListRetrievalError = e
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
if (browsersListRetrievalError) {
|
|
237
|
+
print(
|
|
238
|
+
red(
|
|
239
|
+
'\n' +
|
|
240
|
+
browsersListRetrievalError.stack + '\n\n' +
|
|
241
|
+
'Problem with browsers list retrieval.\n' +
|
|
242
|
+
'Target browser changes won’t be shown.\n'
|
|
243
|
+
)
|
|
244
|
+
)
|
|
245
|
+
} else {
|
|
246
|
+
var targetBrowserChanges = diffBrowsersLists(
|
|
247
|
+
oldBrowsersList,
|
|
248
|
+
currentBrowsersList
|
|
249
|
+
)
|
|
250
|
+
if (targetBrowserChanges) {
|
|
251
|
+
print('\nTarget browser changes:\n')
|
|
252
|
+
print(targetBrowserChanges + '\n')
|
|
253
|
+
} else {
|
|
254
|
+
print('\n' + green('No target browser changes') + '\n')
|
|
255
|
+
}
|
|
256
|
+
}
|
|
161
257
|
}
|