mirror of
				https://github.com/flynx/colors.js.git
				synced 2025-10-31 20:10:09 +00:00 
			
		
		
		
	Update supports-colors.js
This commit is contained in:
		
							parent
							
								
									2c38a68a7c
								
							
						
					
					
						commit
						007f4d1cd5
					
				| @ -24,27 +24,9 @@ THE SOFTWARE. | |||||||
| */ | */ | ||||||
| 
 | 
 | ||||||
| 'use strict'; | 'use strict'; | ||||||
| var os = require('os'); |  | ||||||
| var hasFlag = require('./has-flag.js'); | var hasFlag = require('./has-flag.js'); | ||||||
| 
 | 
 | ||||||
| var env = process.env; | var support = function (level) { | ||||||
| 
 |  | ||||||
| var forceColor; |  | ||||||
| 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) { | 	if (level === 0) { | ||||||
| 		return false; | 		return false; | ||||||
| 	} | 	} | ||||||
| @ -55,10 +37,12 @@ function translateLevel(level) { | |||||||
| 		has256: level >= 2, | 		has256: level >= 2, | ||||||
| 		has16m: level >= 3 | 		has16m: level >= 3 | ||||||
| 	}; | 	}; | ||||||
| } | }; | ||||||
| 
 | 
 | ||||||
| function supportsColor(stream) { | var supportLevel = (function () { | ||||||
| 	if (forceColor === false) { | 	if (hasFlag('no-color') || | ||||||
|  | 		hasFlag('no-colors') || | ||||||
|  | 		hasFlag('color=false')) { | ||||||
| 		return 0; | 		return 0; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| @ -72,83 +56,42 @@ function supportsColor(stream) { | |||||||
| 		return 2; | 		return 2; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if (stream && !stream.isTTY && forceColor !== true) { | 	if (hasFlag('color') || | ||||||
|  | 		hasFlag('colors') || | ||||||
|  | 		hasFlag('color=true') || | ||||||
|  | 		hasFlag('color=always')) { | ||||||
|  | 		return 1; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	if (process.stdout && !process.stdout.isTTY) { | ||||||
| 		return 0; | 		return 0; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	var min = forceColor ? 1 : 0; |  | ||||||
| 
 |  | ||||||
| 	if (process.platform === 'win32') { | 	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; | 		return 1; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if ('CI' in env) { | 	if ('COLORTERM' in process.env) { | ||||||
| 		if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') { |  | ||||||
| 		return 1; | 		return 1; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 		return min; | 	if (process.env.TERM === 'dumb') { | ||||||
|  | 		return 0; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if ('TEAMCITY_VERSION' in env) { | 	if (/^xterm-256(?:color)?/.test(process.env.TERM)) { | ||||||
| 		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; | 		return 2; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if (/^screen|^xterm|^vt100|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { | 	if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(process.env.TERM)) { | ||||||
| 		return 1; | 		return 1; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if ('COLORTERM' in env) { | 	return 0; | ||||||
| 		return 1; | })(); | ||||||
|  | 
 | ||||||
|  | if (supportLevel === 0 && 'FORCE_COLOR' in process.env) { | ||||||
|  | 	supportLevel = 1; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 	if (env.TERM === 'dumb') { | module.exports = process && support(supportLevel); | ||||||
| 		return min; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	return min; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 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