Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 14 additions & 6 deletions lib/internal/tty.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,12 @@

'use strict';

const {
RegExpPrototypeTest,
StringPrototypeSplit,
StringPrototypeToLowerCase,
} = primordials;

const {
ERR_INVALID_ARG_TYPE,
ERR_OUT_OF_RANGE
Expand Down Expand Up @@ -134,7 +140,7 @@ function getColorDepth(env = process.env) {
// Lazy load for startup performance.
if (OSRelease === undefined) {
const { release } = require('os');
OSRelease = release().split('.');
OSRelease = StringPrototypeSplit(release(), '.');
}
// Windows 10 build 10586 is the first Windows release that supports 256
// colors. Windows 10 build 14931 is the first release that supports
Expand Down Expand Up @@ -163,14 +169,15 @@ function getColorDepth(env = process.env) {
}

if ('TEAMCITY_VERSION' in env) {
return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ?
return RegExpPrototypeTest(/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/, env.TEAMCITY_VERSION) ?
COLORS_16 : COLORS_2;
}

switch (env.TERM_PROGRAM) {
case 'iTerm.app':
if (!env.TERM_PROGRAM_VERSION ||
/^[0-2]\./.test(env.TERM_PROGRAM_VERSION)) {
RegExpPrototypeTest(/^[0-2]\./, env.TERM_PROGRAM_VERSION)
) {
return COLORS_256;
}
return COLORS_16m;
Expand All @@ -186,16 +193,17 @@ function getColorDepth(env = process.env) {
}

if (env.TERM) {
if (/^xterm-256/.test(env.TERM))
if (RegExpPrototypeTest(/^xterm-256/, env.TERM)) {
return COLORS_256;
}

const termEnv = env.TERM.toLowerCase();
const termEnv = StringPrototypeToLowerCase(env.TERM);

if (TERM_ENVS[termEnv]) {
return TERM_ENVS[termEnv];
}
for (const term of TERM_ENVS_REG_EXP) {
if (term.test(termEnv)) {
if (RegExpPrototypeTest(term, termEnv)) {
return COLORS_16;
}
}
Expand Down