| 'use strict'; |
| var hasFlag = require('has-flag'); |
| |
| var support = function (level) { |
| if (level === 0) { |
| return false; |
| } |
| |
| return { |
| level: level, |
| hasBasic: true, |
| has256: level >= 2, |
| has16m: level >= 3 |
| }; |
| }; |
| |
| var supportLevel = (function () { |
| if (hasFlag('no-color') || |
| hasFlag('no-colors') || |
| hasFlag('color=false')) { |
| return 0; |
| } |
| |
| if (hasFlag('color=16m') || |
| hasFlag('color=full') || |
| hasFlag('color=truecolor')) { |
| return 3; |
| } |
| |
| if (hasFlag('color=256')) { |
| return 2; |
| } |
| |
| if (hasFlag('color') || |
| hasFlag('colors') || |
| hasFlag('color=true') || |
| hasFlag('color=always')) { |
| return 1; |
| } |
| |
| if (process.stdout && !process.stdout.isTTY) { |
| return 0; |
| } |
| |
| if (process.platform === 'win32') { |
| return 1; |
| } |
| |
| if ('CI' in process.env) { |
| if ('TRAVIS' in process.env || process.env.CI === 'Travis') { |
| return 1; |
| } |
| |
| return 0; |
| } |
| |
| if ('TEAMCITY_VERSION' in process.env) { |
| return process.env.TEAMCITY_VERSION.match(/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/) === null ? 0 : 1; |
| } |
| |
| if (/^(screen|xterm)-256(?:color)?/.test(process.env.TERM)) { |
| return 2; |
| } |
| |
| if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(process.env.TERM)) { |
| return 1; |
| } |
| |
| if ('COLORTERM' in process.env) { |
| return 1; |
| } |
| |
| if (process.env.TERM === 'dumb') { |
| return 0; |
| } |
| |
| return 0; |
| })(); |
| |
| if (supportLevel === 0 && 'FORCE_COLOR' in process.env) { |
| supportLevel = 1; |
| } |
| |
| module.exports = process && support(supportLevel); |