| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 | 'use strict';const supportsColor = require('supports-color');const hasFlag = require('has-flag');function parseVersion(versionString) {	if (/^\d{3,4}$/.test(versionString)) {		// Env var doesn't always use dots. example: 4601 => 46.1.0		const m = /(\d{1,2})(\d{2})/.exec(versionString);		return {			major: 0,			minor: parseInt(m[1], 10),			patch: parseInt(m[2], 10)		};	}	const versions = (versionString || '').split('.').map(n => parseInt(n, 10));	return {		major: versions[0],		minor: versions[1],		patch: versions[2]	};}function supportsHyperlink(stream) {	const {env} = process;	if ('FORCE_HYPERLINK' in env) {		return !(env.FORCE_HYPERLINK.length > 0 && parseInt(env.FORCE_HYPERLINK, 10) === 0);	}	if (hasFlag('no-hyperlink') || hasFlag('no-hyperlinks') || hasFlag('hyperlink=false') || hasFlag('hyperlink=never')) {		return false;	}	if (hasFlag('hyperlink=true') || hasFlag('hyperlink=always')) {		return true;	}	// Netlify does not run a TTY, it does not need `supportsColor` check	if ('NETLIFY' in env) {		return true;	}	// If they specify no colors, they probably don't want hyperlinks.	if (!supportsColor.supportsColor(stream)) {		return false;	}	if (stream && !stream.isTTY) {		return false;	}	if (process.platform === 'win32') {		return false;	}	if ('CI' in env) {		return false;	}	if ('TEAMCITY_VERSION' in env) {		return false;	}	if ('TERM_PROGRAM' in env) {		const version = parseVersion(env.TERM_PROGRAM_VERSION);		switch (env.TERM_PROGRAM) {			case 'iTerm.app':				if (version.major === 3) {					return version.minor >= 1;				}				return version.major > 3;			case 'WezTerm':				return version.major >= 20200620;			case 'vscode':				return version.major > 1 || version.major === 1 && version.minor >= 72;			// No default		}	}	if ('VTE_VERSION' in env) {		// 0.50.0 was supposed to support hyperlinks, but throws a segfault		if (env.VTE_VERSION === '0.50.0') {			return false;		}		const version = parseVersion(env.VTE_VERSION);		return version.major > 0 || version.minor >= 50;	}	return false;}module.exports = {	supportsHyperlink,	stdout: supportsHyperlink(process.stdout),	stderr: supportsHyperlink(process.stderr)};
 |