supports-color
Advanced tools
Comparing version 7.2.0 to 8.0.0
@@ -0,5 +1,24 @@ | ||
/* eslint-env browser */ | ||
'use strict'; | ||
function getChromeVersion() { | ||
const matches = /(Chrome|Chromium)\/(?<chromeVersion>\d+)\./.exec(navigator.userAgent); | ||
if (!matches) { | ||
return; | ||
} | ||
return Number.parseInt(matches.groups.chromeVersion, 10); | ||
} | ||
const colorSupport = getChromeVersion() >= 69 ? { | ||
level: 1, | ||
hasBasic: true, | ||
has256: false, | ||
has16m: false | ||
} : false; | ||
module.exports = { | ||
stdout: false, | ||
stderr: false | ||
stdout: colorSupport, | ||
stderr: colorSupport | ||
}; |
49
index.js
@@ -8,3 +8,3 @@ 'use strict'; | ||
let forceColor; | ||
let flagForceColor; | ||
if (hasFlag('no-color') || | ||
@@ -14,3 +14,3 @@ hasFlag('no-colors') || | ||
hasFlag('color=never')) { | ||
forceColor = 0; | ||
flagForceColor = 0; | ||
} else if (hasFlag('color') || | ||
@@ -20,13 +20,16 @@ hasFlag('colors') || | ||
hasFlag('color=always')) { | ||
forceColor = 1; | ||
flagForceColor = 1; | ||
} | ||
let noFlagForceColor; | ||
if ('FORCE_COLOR' in env) { | ||
if (env.FORCE_COLOR === 'true') { | ||
forceColor = 1; | ||
noFlagForceColor = 1; | ||
} else if (env.FORCE_COLOR === 'false') { | ||
forceColor = 0; | ||
noFlagForceColor = 0; | ||
} else { | ||
forceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3); | ||
noFlagForceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3); | ||
} | ||
flagForceColor = noFlagForceColor; | ||
} | ||
@@ -47,3 +50,5 @@ | ||
function supportsColor(haveStream, streamIsTTY) { | ||
function supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) { | ||
const forceColor = sniffFlags ? flagForceColor : noFlagForceColor; | ||
if (forceColor === 0) { | ||
@@ -53,10 +58,12 @@ return 0; | ||
if (hasFlag('color=16m') || | ||
hasFlag('color=full') || | ||
hasFlag('color=truecolor')) { | ||
return 3; | ||
} | ||
if (sniffFlags) { | ||
if (hasFlag('color=16m') || | ||
hasFlag('color=full') || | ||
hasFlag('color=truecolor')) { | ||
return 3; | ||
} | ||
if (hasFlag('color=256')) { | ||
return 2; | ||
if (hasFlag('color=256')) { | ||
return 2; | ||
} | ||
} | ||
@@ -105,3 +112,3 @@ | ||
if ('TERM_PROGRAM' in env) { | ||
const version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10); | ||
const version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10); | ||
@@ -132,4 +139,8 @@ switch (env.TERM_PROGRAM) { | ||
function getSupportLevel(stream) { | ||
const level = supportsColor(stream, stream && stream.isTTY); | ||
function getSupportLevel(stream, options = {}) { | ||
const level = supportsColor(stream, { | ||
streamIsTTY: stream && stream.isTTY, | ||
...options | ||
}); | ||
return translateLevel(level); | ||
@@ -140,4 +151,4 @@ } | ||
supportsColor: getSupportLevel, | ||
stdout: translateLevel(supportsColor(true, tty.isatty(1))), | ||
stderr: translateLevel(supportsColor(true, tty.isatty(2))) | ||
stdout: getSupportLevel({isTTY: tty.isatty(1)}), | ||
stderr: getSupportLevel({isTTY: tty.isatty(2)}) | ||
}; |
{ | ||
"name": "supports-color", | ||
"version": "7.2.0", | ||
"version": "8.0.0", | ||
"description": "Detect whether a terminal supports color", | ||
"license": "MIT", | ||
"repository": "chalk/supports-color", | ||
"funding": "https://github.com/chalk/supports-color?sponsor=1", | ||
"author": { | ||
"name": "Sindre Sorhus", | ||
"email": "sindresorhus@gmail.com", | ||
"url": "sindresorhus.com" | ||
"url": "https://sindresorhus.com" | ||
}, | ||
"engines": { | ||
"node": ">=8" | ||
"node": ">=10" | ||
}, | ||
@@ -22,2 +23,6 @@ "scripts": { | ||
], | ||
"exports": { | ||
"node": "./index.js", | ||
"default": "./browser.js" | ||
}, | ||
"keywords": [ | ||
@@ -49,7 +54,7 @@ "color", | ||
"devDependencies": { | ||
"ava": "^1.4.1", | ||
"import-fresh": "^3.0.0", | ||
"xo": "^0.24.0" | ||
"ava": "^2.4.0", | ||
"import-fresh": "^3.2.2", | ||
"xo": "^0.35.0" | ||
}, | ||
"browser": "browser.js" | ||
} |
@@ -1,6 +0,5 @@ | ||
# supports-color [![Build Status](https://travis-ci.org/chalk/supports-color.svg?branch=master)](https://travis-ci.org/chalk/supports-color) | ||
# supports-color | ||
> Detect whether a terminal supports color | ||
## Install | ||
@@ -12,3 +11,2 @@ | ||
## Usage | ||
@@ -32,3 +30,2 @@ | ||
## API | ||
@@ -44,3 +41,10 @@ | ||
### `require('supports-color').supportsColor(stream, options?)` | ||
Additionally, `supports-color` exposes the `.supportsColor()` function that takes an arbitrary write stream (e.g. `process.stdout`) and an optional options object to (re-)evaluate color support for an arbitrary stream. | ||
For example, `require('supports-color').stdout` is the equivalent of `require('supports-color').supportsColor(process.stdout)`. | ||
The options object supports a single boolean property `sniffFlags`. By default it is `true`, which instructs `supportsColor()` to sniff `process.argv` for the multitude of `--color` flags (see _Info_ below). If `false`, then `process.argv` is not considered when determining color support. | ||
## Info | ||
@@ -54,3 +58,2 @@ | ||
## Related | ||
@@ -61,3 +64,2 @@ | ||
## Maintainers | ||
@@ -68,3 +70,2 @@ | ||
--- | ||
@@ -71,0 +72,0 @@ |
Sorry, the diff of this file is not supported yet
8390
137
78