mirror of
				https://github.com/flynx/colors.js.git
				synced 2025-10-31 03:50:11 +00:00 
			
		
		
		
	Update supports-colors.js
This commit is contained in:
		
							parent
							
								
									fdd9b55cd1
								
							
						
					
					
						commit
						e90c3c5088
					
				| @ -24,9 +24,23 @@ THE SOFTWARE. | ||||
| */ | ||||
| 
 | ||||
| 'use strict'; | ||||
| 
 | ||||
| var os = require('os'); | ||||
| var hasFlag = require('./has-flag.js'); | ||||
| 
 | ||||
| var support = function (level) { | ||||
| var env = process.env; | ||||
| 
 | ||||
| var forceColor = void 0; | ||||
| if (hasFlag('no-color') || hasFlag('no-colors') || hasFlag('color=false')) { | ||||
| 	forceColor = false; | ||||
| } else if (hasFlag('color') || hasFlag('colors') || hasFlag('color=true') || hasFlag('color=always')) { | ||||
| 	forceColor = true; | ||||
| } | ||||
| if ('FORCE_COLOR' in env) { | ||||
| 	forceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0; | ||||
| } | ||||
| 
 | ||||
| function translateLevel(level) { | ||||
| 	if (level === 0) { | ||||
| 		return false; | ||||
| 	} | ||||
| @ -37,18 +51,14 @@ var support = function (level) { | ||||
| 		has256: level >= 2, | ||||
| 		has16m: level >= 3 | ||||
| 	}; | ||||
| }; | ||||
| } | ||||
| 
 | ||||
| var supportLevel = (function () { | ||||
| 	if (hasFlag('no-color') || | ||||
| 		hasFlag('no-colors') || | ||||
| 		hasFlag('color=false')) { | ||||
| function supportsColor(stream) { | ||||
| 	if (forceColor === false) { | ||||
| 		return 0; | ||||
| 	} | ||||
| 
 | ||||
| 	if (hasFlag('color=16m') || | ||||
| 		hasFlag('color=full') || | ||||
| 		hasFlag('color=truecolor')) { | ||||
| 	if (hasFlag('color=16m') || hasFlag('color=full') || hasFlag('color=truecolor')) { | ||||
| 		return 3; | ||||
| 	} | ||||
| 
 | ||||
| @ -56,42 +66,82 @@ var supportLevel = (function () { | ||||
| 		return 2; | ||||
| 	} | ||||
| 
 | ||||
| 	if (hasFlag('color') || | ||||
| 		hasFlag('colors') || | ||||
| 		hasFlag('color=true') || | ||||
| 		hasFlag('color=always')) { | ||||
| 		return 1; | ||||
| 	} | ||||
| 
 | ||||
| 	if (process.stdout && !process.stdout.isTTY) { | ||||
| 	if (stream && !stream.isTTY && forceColor !== true) { | ||||
| 		return 0; | ||||
| 	} | ||||
| 
 | ||||
| 	var min = forceColor ? 1 : 0; | ||||
| 
 | ||||
| 	if (process.platform === 'win32') { | ||||
| 		// Node.js 7.5.0 is the first version of Node.js to include a patch to
 | ||||
| 		// libuv that enables 256 color output on Windows. Anything earlier and it
 | ||||
| 		// won't work. However, here we target Node.js 8 at minimum as it is an LTS
 | ||||
| 		// release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows
 | ||||
| 		// release that supports 256 colors. Windows 10 build 14931 is the first release
 | ||||
| 		// that supports 16m/TrueColor.
 | ||||
| 		var osRelease = os.release().split('.'); | ||||
| 		if (Number(process.versions.node.split('.')[0]) >= 8 && Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) { | ||||
| 			return Number(osRelease[2]) >= 14931 ? 3 : 2; | ||||
| 		} | ||||
| 
 | ||||
| 		return 1; | ||||
| 	} | ||||
| 
 | ||||
| 	if ('COLORTERM' in process.env) { | ||||
| 	if ('CI' in env) { | ||||
| 		if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(function (sign) { | ||||
| 			return sign in env; | ||||
| 		}) || env.CI_NAME === 'codeship') { | ||||
| 			return 1; | ||||
| 		} | ||||
| 
 | ||||
| 	if (process.env.TERM === 'dumb') { | ||||
| 		return 0; | ||||
| 		return min; | ||||
| 	} | ||||
| 
 | ||||
| 	if (/^xterm-256(?:color)?/.test(process.env.TERM)) { | ||||
| 	if ('TEAMCITY_VERSION' in env) { | ||||
| 		return (/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0 | ||||
| 		); | ||||
| 	} | ||||
| 
 | ||||
| 	if ('TERM_PROGRAM' in env) { | ||||
| 		var version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10); | ||||
| 
 | ||||
| 		switch (env.TERM_PROGRAM) { | ||||
| 			case 'iTerm.app': | ||||
| 				return version >= 3 ? 3 : 2; | ||||
| 			case 'Hyper': | ||||
| 				return 3; | ||||
| 			case 'Apple_Terminal': | ||||
| 				return 2; | ||||
| 			// No default
 | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	if (/-256(color)?$/i.test(env.TERM)) { | ||||
| 		return 2; | ||||
| 	} | ||||
| 
 | ||||
| 	if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(process.env.TERM)) { | ||||
| 	if (/^screen|^xterm|^vt100|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { | ||||
| 		return 1; | ||||
| 	} | ||||
| 
 | ||||
| 	return 0; | ||||
| })(); | ||||
| 	if ('COLORTERM' in env) { | ||||
| 		return 1; | ||||
| 	} | ||||
| 
 | ||||
| if (supportLevel === 0 && 'FORCE_COLOR' in process.env) { | ||||
| 	supportLevel = 1; | ||||
| 	if (env.TERM === 'dumb') { | ||||
| 		return min; | ||||
| 	} | ||||
| 
 | ||||
| 	return min; | ||||
| } | ||||
| 
 | ||||
| module.exports = process && support(supportLevel); | ||||
| function getSupportLevel(stream) { | ||||
| 	var level = supportsColor(stream); | ||||
| 	return translateLevel(level); | ||||
| } | ||||
| 
 | ||||
| module.exports = { | ||||
| 	supportsColor: getSupportLevel, | ||||
| 	stdout: getSupportLevel(process.stdout), | ||||
| 	stderr: getSupportLevel(process.stderr) | ||||
| }; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user