summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRuben Bridgewater <ruben@bridgewater.de>2018-04-01 11:27:01 +0200
committerRuben Bridgewater <ruben@bridgewater.de>2018-04-04 15:14:04 +0200
commit1b715221b9b875fc24d6aae3480c4c55d7f3dd76 (patch)
tree27fa919b768860e575761b1ec5224214964311c9 /lib
parent3d61e14704bb82ffc1442e6f6c3756f4432b03b4 (diff)
downloadandroid-node-v8-1b715221b9b875fc24d6aae3480c4c55d7f3dd76.tar.gz
android-node-v8-1b715221b9b875fc24d6aae3480c4c55d7f3dd76.tar.bz2
android-node-v8-1b715221b9b875fc24d6aae3480c4c55d7f3dd76.zip
tty: add attribution for chalk
This adds attributions for the getColorDepth function as it got inspired by https://github.com/chalk/supports-color and more sources. PR-URL: https://github.com/nodejs/node/pull/19730 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/internal/tty.js104
-rw-r--r--lib/tty.js74
2 files changed, 106 insertions, 72 deletions
diff --git a/lib/internal/tty.js b/lib/internal/tty.js
new file mode 100644
index 0000000000..a581ac312f
--- /dev/null
+++ b/lib/internal/tty.js
@@ -0,0 +1,104 @@
+// MIT License
+
+// Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+// SOFTWARE.
+
+'use strict';
+
+const { release } = require('os');
+
+const OSRelease = release().split('.');
+
+const COLORS_2 = 1;
+const COLORS_16 = 4;
+const COLORS_256 = 8;
+const COLORS_16m = 24;
+
+// The `getColorDepth` API got inspired by multiple sources such as
+// https://github.com/chalk/supports-color,
+// https://github.com/isaacs/color-support.
+function getColorDepth(env = process.env) {
+ if (env.NODE_DISABLE_COLORS || env.TERM === 'dumb' && !env.COLORTERM) {
+ return COLORS_2;
+ }
+
+ if (process.platform === 'win32') {
+ // 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.
+ if (+OSRelease[0] >= 10) {
+ const build = +OSRelease[2];
+ if (build >= 14931)
+ return COLORS_16m;
+ if (build >= 10586)
+ return COLORS_256;
+ }
+
+ return COLORS_16;
+ }
+
+ if (env.TMUX) {
+ return COLORS_256;
+ }
+
+ if (env.CI) {
+ if ('TRAVIS' in env || 'CIRCLECI' in env || 'APPVEYOR' in env ||
+ 'GITLAB_CI' in env || env.CI_NAME === 'codeship') {
+ return COLORS_256;
+ }
+ return COLORS_2;
+ }
+
+ if ('TEAMCITY_VERSION' in env) {
+ return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(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)) {
+ return COLORS_256;
+ }
+ return COLORS_16m;
+ case 'HyperTerm':
+ case 'Hyper':
+ case 'MacTerm':
+ return COLORS_16m;
+ case 'Apple_Terminal':
+ return COLORS_256;
+ }
+
+ if (env.TERM) {
+ if (/^xterm-256/.test(env.TERM))
+ return COLORS_256;
+ if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(env.TERM))
+ return COLORS_16;
+ }
+
+ if (env.COLORTERM)
+ return COLORS_16;
+
+ return COLORS_2;
+}
+
+module.exports = {
+ getColorDepth
+};
diff --git a/lib/tty.js b/lib/tty.js
index 51ec1cf898..dfb76bbe53 100644
--- a/lib/tty.js
+++ b/lib/tty.js
@@ -27,14 +27,7 @@ const { TTY, isTTY } = process.binding('tty_wrap');
const errors = require('internal/errors');
const { ERR_INVALID_FD } = errors.codes;
const readline = require('readline');
-const { release } = require('os');
-
-const OSRelease = release().split('.');
-
-const COLORS_2 = 1;
-const COLORS_16 = 4;
-const COLORS_256 = 8;
-const COLORS_16m = 24;
+const { getColorDepth } = require('internal/tty');
function isatty(fd) {
return Number.isInteger(fd) && fd >= 0 && isTTY(fd);
@@ -108,70 +101,7 @@ inherits(WriteStream, net.Socket);
WriteStream.prototype.isTTY = true;
-WriteStream.prototype.getColorDepth = function(env = process.env) {
- if (env.NODE_DISABLE_COLORS || env.TERM === 'dumb' && !env.COLORTERM) {
- return COLORS_2;
- }
-
- if (process.platform === 'win32') {
- // 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.
- if (+OSRelease[0] >= 10) {
- const build = +OSRelease[2];
- if (build >= 14931)
- return COLORS_16m;
- if (build >= 10586)
- return COLORS_256;
- }
-
- return COLORS_16;
- }
-
- if (env.TMUX) {
- return COLORS_256;
- }
-
- if (env.CI) {
- if ('TRAVIS' in env || 'CIRCLECI' in env || 'APPVEYOR' in env ||
- 'GITLAB_CI' in env || env.CI_NAME === 'codeship') {
- return COLORS_256;
- }
- return COLORS_2;
- }
-
- if ('TEAMCITY_VERSION' in env) {
- return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(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)) {
- return COLORS_256;
- }
- return COLORS_16m;
- case 'HyperTerm':
- case 'Hyper':
- case 'MacTerm':
- return COLORS_16m;
- case 'Apple_Terminal':
- return COLORS_256;
- }
-
- if (env.TERM) {
- if (/^xterm-256/.test(env.TERM))
- return COLORS_256;
- if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(env.TERM))
- return COLORS_16;
- }
-
- if (env.COLORTERM)
- return COLORS_16;
-
- return COLORS_2;
-};
+WriteStream.prototype.getColorDepth = getColorDepth;
WriteStream.prototype._refreshSize = function() {
const oldCols = this.columns;