Socket
Socket
Sign inDemoInstall

cli-color

Package Overview
Dependencies
Maintainers
1
Versions
26
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cli-color - npm Package Compare versions

Comparing version 0.1.7 to 0.2.0

lib/_xterm-match.js

181

lib/index.js
'use strict';
var defineProperties = Object.defineProperties
, map = require('es5-ext/lib/Object/map')
var d = require('es5-ext/lib/Object/descriptor')
, extend = require('es5-ext/lib/Object/extend')
, map = require('es5-ext/lib/Object/map')
, reduce = require('es5-ext/lib/Object/reduce')
, repeat = require('es5-ext/lib/String/prototype/repeat')
, memoize = require('memoizee')
, toString, codes, properties, init;
, join = Array.prototype.join, defineProperty = Object.defineProperty
, defineProperties = Object.defineProperties, abs = Math.abs
, floor = Math.floor, max = Math.max, min = Math.min
toString = function (code, str) {
return '\x1b[' + code[0] + 'm' + (str || "") + '\x1b[' + code[1] + 'm';
};
, mods, proto, getFn, getMove, xtermMatch
, up, down, right, left, getHeight, memoized;
codes = {
// styles
bold: [1, 22],
italic: [3, 23],
underline: [4, 24],
inverse: [7, 27],
strike: [9, 29]
};
mods = extend({
// Style
bold: { _bold: [1, 22] },
italic: { _italic: [3, 23] },
underline: { _underline: [4, 24] },
inverse: { _inverse: [7, 27] },
strike: { _strike: [9, 29] }
},
['black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white'].forEach(
function (color, index) {
// Color
['black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white']
.reduce(function (obj, color, index) {
// foreground
codes[color] = [30 + index, 39];
obj[color] = { _fg: [30 + index, 39] };
obj[color + 'Bright'] = { _fg: [90 + index, 39] };
// background
codes['bg' + color[0].toUpperCase() + color.slice(1)] = [40 + index, 49];
}
);
codes.gray = [90, 39];
obj['bg' + color[0].toUpperCase() + color.slice(1)] =
{ _bg: [40 + index, 49] };
obj['bg' + color[0].toUpperCase() + color.slice(1) + 'Bright'] =
{ _bg: [100 + index, 49] };
properties = map(codes, function (code) {
return {
get: function () {
this.style.push(code);
return this;
},
enumerable: true
return obj;
}, {}));
// Some use cli-color as: console.log(clc.red('Error!'));
// Which is inefficient as on each call it configures new clc object
// with memoization we reuse once created object
memoized = memoize(function (scope, mod) {
return defineProperty(getFn(), '_cliColorData',
d(extend({}, scope._cliColorData, mod)));
});
proto = Object.create(Function.prototype, extend(map(mods, function (mod) {
return d.gs(function () { return memoized(this, mod); });
}), {
// xterm (255) color
xterm: d(memoize(function (code) {
code = isNaN(code) ? 255 : min(max(code, 0), 255);
return defineProperty(getFn(), '_cliColorData',
d(extend({}, this._cliColorData, {
_fg: [xtermMatch ? xtermMatch[code] : ('38;5;' + code), 39]
})));
}, { method: 'xterm' })),
bgXterm: d(memoize(function (code) {
code = isNaN(code) ? 255 : min(max(code, 0), 255);
return defineProperty(getFn(), '_cliColorData',
d(extend({}, this._cliColorData, {
_bg: [xtermMatch ? (xtermMatch[code] + 10) : ('48;5;' + code), 49]
})));
}, { method: 'bgXterm' }))
}));
if (process.platform === 'win32') {
xtermMatch = require('./_xterm-match');
}
getFn = function () {
var fn = function (/*…msg*/) {
var data = fn._cliColorData, close = '';
return reduce(data, function (str, mod) {
close = '\x1b[' + mod[1] + 'm' + close;
return str + '\x1b[' + mod[0] + 'm';
}, '', true) + join.call(arguments, ' ') + close;
};
});
properties.bright = {
get: function () {
this._bright = true;
return this;
},
enumerable: true
fn.__proto__ = proto;
return fn;
};
properties.bgBright = {
get: function () {
this._bgBright = true;
return this;
},
enumerable: true
};
init = function () {
var o = defineProperties(function self(msg) {
return self.style.reduce(function (msg, code) {
if ((self._bright && (code[0] >= 30) && (code[0] < 38)) ||
(self._bgBright && (code[0] >= 40) && (code[0] < 48))) {
code = [code[0] + 60, code[1]];
}
return toString(code, msg);
}, msg);
}, properties);
o.style = [];
return o[this];
getMove = function (control) {
return function (num) {
num = isNaN(num) ? 0 : max(floor(num), 0);
return num ? ('\x1b[' + num + control) : '';
};
};
module.exports = defineProperties(function (msg) {
return msg;
}, map(properties, function (code, name) {
return {
get: init.bind(name),
enumerable: true
};
}));
module.exports = defineProperties(getFn(), {
width: d.gs(process.stdout.getWindowSize ? function () {
return process.stdout.getWindowSize()[0];
} : function () {
return require('tty').getWindowSize()[1];
}),
height: d.gs(getHeight = process.stdout.getWindowSize ? function () {
return process.stdout.getWindowSize()[1];
} : function () {
return require('tty').getWindowSize()[0];
}),
reset: d.gs(function () {
return repeat.call('\n', getHeight() - 1) + '\x1bc';
}),
up: d(up = getMove('A')),
down: d(down = getMove('B')),
right: d(right = getMove('C')),
left: d(left = getMove('D')),
move: d(function (x, y) {
x = isNaN(x) ? 0 : floor(x);
y = isNaN(y) ? 0 : floor(y);
return ((x > 0) ? right(x) : left(-x)) + ((y > 0) ? down(y) : up(-y));
}),
moveTo: d(function (x, y) {
x = isNaN(x) ? 1 : (max(floor(x), 0) + 1);
y = isNaN(y) ? 1 : (max(floor(y), 0) + 1);
return '\x1b[' + y + ';' + x + 'H';
}),
bol: d(function (n/*, erase*/) {
var dir;
n = isNaN(n) ? 0 : Number(n);
dir = (n >= 0) ? 'E' : 'F';
n = floor(abs(n));
return arguments[1] ?
(((!n || (dir === 'F')) ? '\x1b[0E\x1bK' : '') +
repeat.call('\x1b[1' + dir + '\x1b[K', n)) : '\x1b[' + n + dir;
}),
beep: d('\x07'),
xtermSupported: d(Boolean(!xtermMatch)),
_cliColorData: d({})
});
'use strict';
var write = process.stdout.write.bind(process.stdout)
, chain = require('es5-ext/lib/Function/prototype/chain')
var chain = require('es5-ext/lib/Function/prototype/chain')
, write = process.stdout.write.bind(process.stdout)

@@ -6,0 +6,0 @@ , chars = '-\\|/'

{
"name": "cli-color",
"version": "0.1.7",
"version": "0.2.0",
"description": "Colors, formatting and other tools for the console",

@@ -30,3 +30,4 @@ "keywords": [

"dependencies": {
"es5-ext": "0.8.x"
"es5-ext": "~0.9.1",
"memoizee": "0.1.x"
},

@@ -33,0 +34,0 @@ "devDependencies": {

@@ -13,27 +13,36 @@ # cli-color - Yet another colors and formatting for the console solution

var clc = require('cli-color');
```javascript
var clc = require('cli-color');
```
Output colored text:
console.log(clc.red('Text in red'));
```javascript
console.log(clc.red('Text in red'));
```
Styles can be mixed:
console.log(clc.red.bgWhite.underline('Underlined red text on white background.'));
```javascript
console.log(clc.red.bgWhite.underline('Underlined red text on white background.'));
```
Styled text can be mixed with unstyled:
console.log(clc.red('red') + ' plain ' + clc.blue('blue'));
```javascript
console.log(clc.red('red') + ' plain ' + clc.blue('blue'));
```
__Best way is to predefine needed stylings and then use it__:
var error = clc.red.bold;
var warn = clc.yellow;
var notice = clc.blue;
```javascript
var error = clc.red.bold;
var warn = clc.yellow;
var notice = clc.blue;
console.log(error('Error!'));
console.log(warn('Warning'));
console.log(notice('Notice'));
console.log(error('Error!'));
console.log(warn('Warning'));
console.log(notice('Notice'));
```
Supported are all ANSI colors and styles:

@@ -51,34 +60,459 @@

#### Foreground colors
#### Colors
* black
* red
* green
* yellow
* blue
* magenta
* cyan
* white
* gray (technically bright.black)
<table>
<thead><th>Foreground</th><th>Background</th><th width="30"></th></thead>
<tbody>
<tr><td>black</td><td>bgBlack</td><td bgcolor="black"></td></tr>
<tr><td>red</td><td>bgRed</td><td bgcolor=#800000"></td></tr>
<tr><td>green</td><td>bgGreen</td><td bgcolor="#008000"></td></tr>
<tr><td>yellow</td><td>bgYellow</td><td bgcolor="#808000"></td></tr>
<tr><td>blue</td><td>bgBlue</td><td bgcolor="#000080"></td></tr>
<tr><td>magenta</td><td>bgMagenta</td><td bgcolor="#800080"></td></tr>
<tr><td>cyan</td><td>bgCyan</td><td bgcolor="#008080"></td></tr>
<tr><td>white</td><td>bgWhite</td><td bgcolor="#c0c0c0"></td></tr>
</tbody>
</table>
#### Background colors
##### Bright variants
* bgBlack
* bgRed
* bgGreen
* bgYellow
* bgBlue
* bgMagenta
* bgCyan
* bgWhite
<table>
<thead><th>Foreground</th><th>Background</th><th width="30"></th></thead>
<tbody>
<tr><td>blackBright</td><td>bgBlackBright</td><td bgcolor="#808080"></td></tr>
<tr><td>redBright</td><td>bgRedBright</td><td bgcolor="#f00"></td></tr>
<tr><td>greenBright</td><td>bgGreenBright</td><td bgcolor="#0f0"></td></tr>
<tr><td>yellowBright</td><td>bgYellowBright</td><td bgcolor="#ff0"></td></tr>
<tr><td>blueBright</td><td>bgBlueBright</td><td bgcolor="#00f"></td></tr>
<tr><td>magentaBright</td><td>bgMagentaBright</td><td bgcolor="#f0f"></td></tr>
<tr><td>cyanBright</td><td>bgCyanBright</td><td bgcolor="#0ff"></td></tr>
<tr><td>whiteBright</td><td>bgWhiteBright</td><td bgcolor="white"></td></tr>
</tbody>
</table>
#### Colors intensity
##### xTerm colors (256 colors table)
For _bright_ color variants:
__Not supported on Windows and some terminals__. However if used in not supported environment, the closest color from basic (16 colors) palette is chosen.
* bright (foreground)
* bgBright (background)
Usage:
### Additional functions:
```javascript
var msg = clc.xterm(202).bgXterm(236);
console.log(msg('Orange text on dark gray background'));
```
Color table:
<table>
<tr>
<td>0</td><td bgcolor="black" width="10"></td>
<td>1</td><td bgcolor="#800000" width="10"></td>
<td>2</td><td bgcolor="#008000" width="10"></td>
<td>3</td><td bgcolor="#808000" width="10"></td>
<td>4</td><td bgcolor="#000080" width="10"></td>
<td>5</td><td bgcolor="#800080" width="10"></td>
<td>6</td><td bgcolor="#008080" width="10"></td>
<td>7</td><td bgcolor="#c0c0c0" width="10"></td>
</tr>
<tr>
<td>8</td><td bgcolor="#808080" width="10"></td>
<td>9</td><td bgcolor="#f00" width="10"></td>
<td>10</td><td bgcolor="#0f0" width="10"></td>
<td>11</td><td bgcolor="#ff0" width="10"></td>
<td>12</td><td bgcolor="#00f" width="10"></td>
<td>13</td><td bgcolor="#f0f" width="10"></td>
<td>14</td><td bgcolor="#0ff" width="10"></td>
<td>15</td><td bgcolor="white" width="10"></td>
</tr>
<tr>
<td>16</td><td bgcolor="black" width="10"></td>
<td>17</td><td bgcolor="#00005f" width="10"></td>
<td>18</td><td bgcolor="#000087" width="10"></td>
<td>19</td><td bgcolor="#0000af" width="10"></td>
<td>20</td><td bgcolor="#0000df" width="10"></td>
<td>21</td><td bgcolor="#00f" width="10"></td>
</tr>
<tr>
<td>22</td><td bgcolor="#005f00" width="10"></td>
<td>23</td><td bgcolor="#005f5f" width="10"></td>
<td>24</td><td bgcolor="#005f87" width="10"></td>
<td>25</td><td bgcolor="#005faf" width="10"></td>
<td>26</td><td bgcolor="#005fdf" width="10"></td>
<td>27</td><td bgcolor="#005fff" width="10"></td>
</tr>
<tr>
<td>28</td><td bgcolor="#008700" width="10"></td>
<td>29</td><td bgcolor="#00875f" width="10"></td>
<td>30</td><td bgcolor="#008787" width="10"></td>
<td>31</td><td bgcolor="#0087af" width="10"></td>
<td>32</td><td bgcolor="#0087df" width="10"></td>
<td>33</td><td bgcolor="#0087ff" width="10"></td>
</tr>
<tr>
<td>34</td><td bgcolor="#00af00" width="10"></td>
<td>35</td><td bgcolor="#00af5f" width="10"></td>
<td>36</td><td bgcolor="#00af87" width="10"></td>
<td>37</td><td bgcolor="#00afaf" width="10"></td>
<td>38</td><td bgcolor="#00afdf" width="10"></td>
<td>39</td><td bgcolor="#00afff" width="10"></td>
</tr>
<tr>
<td>40</td><td bgcolor="#00df00" width="10"></td>
<td>41</td><td bgcolor="#00df5f" width="10"></td>
<td>42</td><td bgcolor="#00df87" width="10"></td>
<td>43</td><td bgcolor="#00dfaf" width="10"></td>
<td>44</td><td bgcolor="#00dfdf" width="10"></td>
<td>45</td><td bgcolor="#00dfff" width="10"></td>
</tr>
<tr>
<td>46</td><td bgcolor="#00ff00" width="10"></td>
<td>47</td><td bgcolor="#00ff5f" width="10"></td>
<td>48</td><td bgcolor="#00ff87" width="10"></td>
<td>49</td><td bgcolor="#00ffaf" width="10"></td>
<td>50</td><td bgcolor="#00ffdf" width="10"></td>
<td>51</td><td bgcolor="#00ffff" width="10"></td>
</tr>
<tr>
<td>52</td><td bgcolor="#5f0000" width="10"></td>
<td>53</td><td bgcolor="#5f005f" width="10"></td>
<td>54</td><td bgcolor="#5f0087" width="10"></td>
<td>55</td><td bgcolor="#5f00af" width="10"></td>
<td>56</td><td bgcolor="#5f00df" width="10"></td>
<td>57</td><td bgcolor="#5f00ff" width="10"></td>
</tr>
<tr>
<td>58</td><td bgcolor="#5f5f00" width="10"></td>
<td>59</td><td bgcolor="#5f5f5f" width="10"></td>
<td>60</td><td bgcolor="#5f5f87" width="10"></td>
<td>61</td><td bgcolor="#5f5faf" width="10"></td>
<td>62</td><td bgcolor="#5f5fdf" width="10"></td>
<td>63</td><td bgcolor="#5f5fff" width="10"></td>
</tr>
<tr>
<td>64</td><td bgcolor="#5f8700" width="10"></td>
<td>65</td><td bgcolor="#5f875f" width="10"></td>
<td>66</td><td bgcolor="#5f8787" width="10"></td>
<td>67</td><td bgcolor="#5f87af" width="10"></td>
<td>68</td><td bgcolor="#5f87df" width="10"></td>
<td>69</td><td bgcolor="#5f87ff" width="10"></td>
</tr>
<tr>
<td>70</td><td bgcolor="#5faf00" width="10"></td>
<td>71</td><td bgcolor="#5faf5f" width="10"></td>
<td>72</td><td bgcolor="#5faf87" width="10"></td>
<td>73</td><td bgcolor="#5fafaf" width="10"></td>
<td>74</td><td bgcolor="#5fafdf" width="10"></td>
<td>75</td><td bgcolor="#5fafff" width="10"></td>
</tr>
<tr>
<td>76</td><td bgcolor="#5fdf00" width="10"></td>
<td>77</td><td bgcolor="#5fdf5f" width="10"></td>
<td>78</td><td bgcolor="#5fdf87" width="10"></td>
<td>79</td><td bgcolor="#5fdfaf" width="10"></td>
<td>80</td><td bgcolor="#5fdfdf" width="10"></td>
<td>81</td><td bgcolor="#5fdfff" width="10"></td>
</tr>
<tr>
<td>82</td><td bgcolor="#5fff00" width="10"></td>
<td>83</td><td bgcolor="#5fff5f" width="10"></td>
<td>84</td><td bgcolor="#5fff87" width="10"></td>
<td>85</td><td bgcolor="#5fffaf" width="10"></td>
<td>86</td><td bgcolor="#5fffdf" width="10"></td>
<td>87</td><td bgcolor="#5fffff" width="10"></td>
</tr>
<tr>
<td>88</td><td bgcolor="#870000" width="10"></td>
<td>89</td><td bgcolor="#87005f" width="10"></td>
<td>90</td><td bgcolor="#870087" width="10"></td>
<td>91</td><td bgcolor="#8700af" width="10"></td>
<td>92</td><td bgcolor="#8700df" width="10"></td>
<td>93</td><td bgcolor="#8700ff" width="10"></td>
</tr>
<tr>
<td>94</td><td bgcolor="#875f00" width="10"></td>
<td>95</td><td bgcolor="#875f5f" width="10"></td>
<td>96</td><td bgcolor="#875f87" width="10"></td>
<td>97</td><td bgcolor="#875faf" width="10"></td>
<td>98</td><td bgcolor="#875fdf" width="10"></td>
<td>99</td><td bgcolor="#875fff" width="10"></td>
</tr>
<tr>
<td>100</td><td bgcolor="#878700" width="10"></td>
<td>101</td><td bgcolor="#87875f" width="10"></td>
<td>102</td><td bgcolor="#878787" width="10"></td>
<td>103</td><td bgcolor="#8787af" width="10"></td>
<td>104</td><td bgcolor="#8787df" width="10"></td>
<td>105</td><td bgcolor="#8787ff" width="10"></td>
</tr>
<tr>
<td>106</td><td bgcolor="#87af00" width="10"></td>
<td>107</td><td bgcolor="#87af5f" width="10"></td>
<td>108</td><td bgcolor="#87af87" width="10"></td>
<td>109</td><td bgcolor="#87afaf" width="10"></td>
<td>110</td><td bgcolor="#87afdf" width="10"></td>
<td>111</td><td bgcolor="#87afff" width="10"></td>
</tr>
<tr>
<td>112</td><td bgcolor="#87df00" width="10"></td>
<td>113</td><td bgcolor="#87df5f" width="10"></td>
<td>114</td><td bgcolor="#87df87" width="10"></td>
<td>115</td><td bgcolor="#87dfaf" width="10"></td>
<td>116</td><td bgcolor="#87dfdf" width="10"></td>
<td>117</td><td bgcolor="#87dfff" width="10"></td>
</tr>
<tr>
<td>118</td><td bgcolor="#87ff00" width="10"></td>
<td>119</td><td bgcolor="#87ff5f" width="10"></td>
<td>120</td><td bgcolor="#87ff87" width="10"></td>
<td>121</td><td bgcolor="#87ffaf" width="10"></td>
<td>122</td><td bgcolor="#87ffdf" width="10"></td>
<td>123</td><td bgcolor="#87ffff" width="10"></td>
</tr>
<tr>
<td>124</td><td bgcolor="#af0000" width="10"></td>
<td>125</td><td bgcolor="#af005f" width="10"></td>
<td>126</td><td bgcolor="#af0087" width="10"></td>
<td>127</td><td bgcolor="#af00af" width="10"></td>
<td>128</td><td bgcolor="#af00df" width="10"></td>
<td>129</td><td bgcolor="#af00ff" width="10"></td>
</tr>
<tr>
<td>130</td><td bgcolor="#af5f00" width="10"></td>
<td>131</td><td bgcolor="#af5f5f" width="10"></td>
<td>132</td><td bgcolor="#af5f87" width="10"></td>
<td>133</td><td bgcolor="#af5faf" width="10"></td>
<td>134</td><td bgcolor="#af5fdf" width="10"></td>
<td>135</td><td bgcolor="#af5fff" width="10"></td>
</tr>
<tr>
<td>136</td><td bgcolor="#af8700" width="10"></td>
<td>137</td><td bgcolor="#af875f" width="10"></td>
<td>138</td><td bgcolor="#af8787" width="10"></td>
<td>139</td><td bgcolor="#af87af" width="10"></td>
<td>140</td><td bgcolor="#af87df" width="10"></td>
<td>141</td><td bgcolor="#af87ff" width="10"></td>
</tr>
<tr>
<td>142</td><td bgcolor="#afaf00" width="10"></td>
<td>143</td><td bgcolor="#afaf5f" width="10"></td>
<td>144</td><td bgcolor="#afaf87" width="10"></td>
<td>145</td><td bgcolor="#afafaf" width="10"></td>
<td>146</td><td bgcolor="#afafdf" width="10"></td>
<td>147</td><td bgcolor="#afafff" width="10"></td>
</tr>
<tr>
<td>148</td><td bgcolor="#afdf00" width="10"></td>
<td>149</td><td bgcolor="#afdf5f" width="10"></td>
<td>150</td><td bgcolor="#afdf87" width="10"></td>
<td>151</td><td bgcolor="#afdfaf" width="10"></td>
<td>152</td><td bgcolor="#afdfdf" width="10"></td>
<td>153</td><td bgcolor="#afdfff" width="10"></td>
</tr>
<tr>
<td>154</td><td bgcolor="#afff00" width="10"></td>
<td>155</td><td bgcolor="#afff5f" width="10"></td>
<td>156</td><td bgcolor="#afff87" width="10"></td>
<td>157</td><td bgcolor="#afffaf" width="10"></td>
<td>158</td><td bgcolor="#afffdf" width="10"></td>
<td>159</td><td bgcolor="#afffff" width="10"></td>
</tr>
<tr>
<td>160</td><td bgcolor="#d70000" width="10"></td>
<td>161</td><td bgcolor="#d7005f" width="10"></td>
<td>162</td><td bgcolor="#d70087" width="10"></td>
<td>163</td><td bgcolor="#d700af" width="10"></td>
<td>164</td><td bgcolor="#d700df" width="10"></td>
<td>165</td><td bgcolor="#d700ff" width="10"></td>
</tr>
<tr>
<td>166</td><td bgcolor="#d75f00" width="10"></td>
<td>167</td><td bgcolor="#d75f5f" width="10"></td>
<td>168</td><td bgcolor="#d75f87" width="10"></td>
<td>169</td><td bgcolor="#d75faf" width="10"></td>
<td>170</td><td bgcolor="#d75fdf" width="10"></td>
<td>171</td><td bgcolor="#d75fff" width="10"></td>
</tr>
<tr>
<td>172</td><td bgcolor="#d78700" width="10"></td>
<td>173</td><td bgcolor="#d7875f" width="10"></td>
<td>174</td><td bgcolor="#d78787" width="10"></td>
<td>175</td><td bgcolor="#d787af" width="10"></td>
<td>176</td><td bgcolor="#d787df" width="10"></td>
<td>177</td><td bgcolor="#d787ff" width="10"></td>
</tr>
<tr>
<td>178</td><td bgcolor="#d7af00" width="10"></td>
<td>179</td><td bgcolor="#d7af5f" width="10"></td>
<td>180</td><td bgcolor="#d7af87" width="10"></td>
<td>181</td><td bgcolor="#d7afaf" width="10"></td>
<td>182</td><td bgcolor="#d7afdf" width="10"></td>
<td>183</td><td bgcolor="#d7afff" width="10"></td>
</tr>
<tr>
<td>184</td><td bgcolor="#d7df00" width="10"></td>
<td>185</td><td bgcolor="#d7df5f" width="10"></td>
<td>186</td><td bgcolor="#d7df87" width="10"></td>
<td>187</td><td bgcolor="#d7dfaf" width="10"></td>
<td>188</td><td bgcolor="#d7dfdf" width="10"></td>
<td>189</td><td bgcolor="#d7dfff" width="10"></td>
</tr>
<tr>
<td>190</td><td bgcolor="#d7ff00" width="10"></td>
<td>191</td><td bgcolor="#d7ff5f" width="10"></td>
<td>192</td><td bgcolor="#d7ff87" width="10"></td>
<td>193</td><td bgcolor="#d7ffaf" width="10"></td>
<td>194</td><td bgcolor="#d7ffdf" width="10"></td>
<td>195</td><td bgcolor="#d7ffff" width="10"></td>
</tr>
<tr>
<td>196</td><td bgcolor="#ff0000" width="10"></td>
<td>197</td><td bgcolor="#ff005f" width="10"></td>
<td>198</td><td bgcolor="#ff0087" width="10"></td>
<td>199</td><td bgcolor="#ff00af" width="10"></td>
<td>200</td><td bgcolor="#ff00df" width="10"></td>
<td>201</td><td bgcolor="#ff00ff" width="10"></td>
</tr>
<tr>
<td>202</td><td bgcolor="#ff5f00" width="10"></td>
<td>203</td><td bgcolor="#ff5f5f" width="10"></td>
<td>204</td><td bgcolor="#ff5f87" width="10"></td>
<td>205</td><td bgcolor="#ff5faf" width="10"></td>
<td>206</td><td bgcolor="#ff5fdf" width="10"></td>
<td>207</td><td bgcolor="#ff5fff" width="10"></td>
</tr>
<tr>
<td>208</td><td bgcolor="#ff8700" width="10"></td>
<td>209</td><td bgcolor="#ff875f" width="10"></td>
<td>210</td><td bgcolor="#ff8787" width="10"></td>
<td>211</td><td bgcolor="#ff87af" width="10"></td>
<td>212</td><td bgcolor="#ff87df" width="10"></td>
<td>213</td><td bgcolor="#ff87ff" width="10"></td>
</tr>
<tr>
<td>214</td><td bgcolor="#ffaf00" width="10"></td>
<td>215</td><td bgcolor="#ffaf5f" width="10"></td>
<td>216</td><td bgcolor="#ffaf87" width="10"></td>
<td>217</td><td bgcolor="#ffafaf" width="10"></td>
<td>218</td><td bgcolor="#ffafdf" width="10"></td>
<td>219</td><td bgcolor="#ffafff" width="10"></td>
</tr>
<tr>
<td>220</td><td bgcolor="#ffdf00" width="10"></td>
<td>221</td><td bgcolor="#ffdf5f" width="10"></td>
<td>222</td><td bgcolor="#ffdf87" width="10"></td>
<td>223</td><td bgcolor="#ffdfaf" width="10"></td>
<td>224</td><td bgcolor="#ffdfdf" width="10"></td>
<td>225</td><td bgcolor="#ffdfff" width="10"></td>
</tr>
<tr>
<td>226</td><td bgcolor="#ffff00" width="10"></td>
<td>227</td><td bgcolor="#ffff5f" width="10"></td>
<td>228</td><td bgcolor="#ffff87" width="10"></td>
<td>229</td><td bgcolor="#ffffaf" width="10"></td>
<td>230</td><td bgcolor="#ffffdf" width="10"></td>
<td>231</td><td bgcolor="#ffffff" width="10"></td>
</tr>
<tr>
<td>232</td><td bgcolor="#080808" width="10"></td>
<td>233</td><td bgcolor="#121212" width="10"></td>
<td>234</td><td bgcolor="#1c1c1c" width="10"></td>
<td>235</td><td bgcolor="#262626" width="10"></td>
<td>236</td><td bgcolor="#303030" width="10"></td>
<td>237</td><td bgcolor="#3a3a3a" width="10"></td>
</tr>
<tr>
<td>238</td><td bgcolor="#444444" width="10"></td>
<td>239</td><td bgcolor="#4e4e4e" width="10"></td>
<td>240</td><td bgcolor="#585858" width="10"></td>
<td>241</td><td bgcolor="#626262" width="10"></td>
<td>242</td><td bgcolor="#6c6c6c" width="10"></td>
<td>243</td><td bgcolor="#767676" width="10"></td>
</tr>
<tr>
<td>244</td><td bgcolor="#808080" width="10"></td>
<td>245</td><td bgcolor="#8a8a8a" width="10"></td>
<td>246</td><td bgcolor="#949494" width="10"></td>
<td>247</td><td bgcolor="#9e9e9e" width="10"></td>
<td>248</td><td bgcolor="#a8a8a8" width="10"></td>
<td>249</td><td bgcolor="#b2b2b2" width="10"></td>
</tr>
<tr>
<td>250</td><td bgcolor="#bcbcbc" width="10"></td>
<td>251</td><td bgcolor="#c6c6c6" width="10"></td>
<td>252</td><td bgcolor="#d0d0d0" width="10"></td>
<td>253</td><td bgcolor="#dadada" width="10"></td>
<td>254</td><td bgcolor="#e4e4e4" width="10"></td>
<td>255</td><td bgcolor="#eeeeee" width="10"></td>
</tr>
</table>
#### Terminal reset
Terminal can be cleared with `clc.reset`
```javascript
console.log(clc.reset);
```
#### Move around functions
##### clc.move(x, y)
Move cursor _x_ columns and _y_ rows away. Values can be positive or negative, e.g.:
```javascript
process.stdout.write(clc.move(-2, -2)); // Move cursors two columns and rows back
```
##### clc.moveTo(x, y)
Absolute move. Sets cursor position at _x_ column and _y_ row
```javascript
process.stdout.write(clc.moveTo(0, 0)); // Move cursor to first row and column in terminal window
```
##### clc.bol([n[, erase]])
Move cursor to the begining of the line, with _n_ we may specify how many lines away we want to move, value can be positive or negative. Additionally we may decide to clear lines content with _erase_
```javascript
process.stdout.write(clc.bol(-2)); // Move cursor two lines back and place it at begin of the line
```
##### clc.up(n)
Move cursor up _n_ rows
##### clc.down(n)
Move cursor down _n_ rows
##### clc.right(n)
Move cursor right _n_ columns
##### clc.left(n)
Move cursor left _n_ columns
#### Terminal characteristics
##### clc.width
Returns terminal width
##### clc.height
Returns terminal height
### Additional functionalities (provided as separate modules)
#### trim(formatedText)

@@ -88,5 +522,7 @@

var ansiTrim = require('cli-color/lib/trim');
```javascript
var ansiTrim = require('cli-color/lib/trim');
var plain = ansiTrim(formatted);
var plain = ansiTrim(formatted);
```

@@ -99,13 +535,15 @@ #### throbber(interval[, format])

var interval = require('clock/lib/interval')
, ansiThrobber = require('cli-color/lib/throbber');
```javascript
var interval = require('clock/lib/interval')
, ansiThrobber = require('cli-color/lib/throbber');
var i = interval(200, true);
var i = interval(200, true);
// Display throbber while interval is ticking
ansiThrobber(i);
// Display throbber while interval is ticking
ansiThrobber(i);
// at any time you can stop/start interval
// When interval is stopped throbber doesn't show
i.stop();
// at any time you can stop/start interval
// When interval is stopped throbber doesn't show
i.stop();
```

@@ -112,0 +550,0 @@ ## Tests [![Build Status](https://secure.travis-ci.org/medikoo/cli-color.png?branch=master)](https://secure.travis-ci.org/medikoo/cli-color)

'use strict';
var msg = 'test test';
module.exports = function (t, a) {
var x, y;
module.exports = function (t, a) {
a(t("test"), "test", "Plain");
a(t.red(msg), '\x1b[31m' + msg + '\x1b[39m', "Foreground");
a(t.bgRed(msg), '\x1b[41m' + msg + '\x1b[49m', "Background");
a(t.bold(msg), '\x1b[1m' + msg + '\x1b[22m', "Format");
a(t.bold.blue(msg), '\x1b[34m\x1b[1m' + msg + '\x1b[22m\x1b[39m',
a(t('test'), 'test', "Plain");
a(t('test', 'foo', 3, { toString: function () { return 'bar'; } }),
'test foo 3 bar', "Plain: Many args");
a(t.red('foo'), '\x1b[31mfoo\x1b[39m', "Foreground");
a(t.red('foo', 'bar', 3), '\x1b[31mfoo bar 3\x1b[39m',
"Foreground: Many args");
a(t.red.yellow('foo', 'bar', 3), '\x1b[33mfoo bar 3\x1b[39m',
"Foreground: Overriden");
a(t.bgRed('foo', 'bar'), '\x1b[41mfoo bar\x1b[49m', "Background");
a(t.bgRed.bgYellow('foo', 'bar', 3), '\x1b[43mfoo bar 3\x1b[49m',
"Background: Overriden");
a(t.blue.bgYellow('foo', 'bar'), '\x1b[43m\x1b[34mfoo bar\x1b[39m\x1b[49m',
"Foreground & Background");
a(t.blue.bgYellow.red.bgMagenta('foo', 'bar'),
'\x1b[45m\x1b[31mfoo bar\x1b[39m\x1b[49m',
"Foreground & Background: Overriden");
a(t.bold('foo', 'bar'), '\x1b[1mfoo bar\x1b[22m', "Format");
a(t.bold.blue('foo', 'bar', 3), '\x1b[1m\x1b[34mfoo bar 3\x1b[39m\x1b[22m',
"Foreground & Format");
a(t.redBright('foo', 'bar'), '\x1b[91mfoo bar\x1b[39m', "Bright");
a(t.bgRedBright('foo', 3), '\x1b[101mfoo 3\x1b[49m', "Bright background");
a(t.blueBright.bgYellowBright.red.bgMagenta('foo', 'bar'),
'\x1b[45m\x1b[31mfoo bar\x1b[39m\x1b[49m',
"Foreground & Background: Bright: Overriden");
x = t.red;
y = x.bold;
a(x('foo', 'red') + ' ' + y('foo', 'boldred'),
'\x1b[31mfoo red\x1b[39m \x1b[1m\x1b[31mfoo boldred\x1b[39m\x1b[22m',
"Detached extension");
if (t.xtermSupported) {
a(t.xterm(12).bgXterm(67)('foo', 'xterm'),
'\x1b[48;5;67m\x1b[38;5;12mfoo xterm\x1b[39m\x1b[49m', "Xterm");
a(t.redBright.bgBlueBright.xterm(12).bgXterm(67)('foo', 'xterm'),
'\x1b[48;5;67m\x1b[38;5;12mfoo xterm\x1b[39m\x1b[49m',
"Xterm: Override & Bright");
a(t.xterm(12).bgXterm(67).redBright.bgMagentaBright('foo', 'xterm'),
'\x1b[105m\x1b[91mfoo xterm\x1b[39m\x1b[49m',
"Xterm: Override & Bright #2");
} else {
a(t.xterm(12).bgXterm(67)('foo', 'xterm'),
'\x1b[100m\x1b[94mfoo xterm\x1b[39m\x1b[49m', "Xterm");
}
a(typeof t.width, 'number', "Width");
a(typeof t.height, 'number', "Height");
a(/\n*\x1bc/.test(t.reset), true, "Reset");
a(t.up(), '', "Up: No argument");
a(t.up({}), '', "Up: Not a number");
a(t.up(-34), '', "Up: Negative");
a(t.up(34), '\x1b[34A', "Up: Positive");
a(t.down(), '', "Down: No argument");
a(t.down({}), '', "Down: Not a number");
a(t.down(-34), '', "Down: Negative");
a(t.down(34), '\x1b[34B', "Down: Positive");
a(t.right(), '', "Right: No argument");
a(t.right({}), '', "Right: Not a number");
a(t.right(-34), '', "Right: Negative");
a(t.right(34), '\x1b[34C', "Right: Positive");
a(t.left(), '', "Left: No argument");
a(t.left({}), '', "Left: Not a number");
a(t.left(-34), '', "Left: Negative");
a(t.left(34), '\x1b[34D', "Left: Positive");
a(t.move(), '', "Move: No arguments");
a(t.move({}, {}), '', "Move: Bad arguments");
a(t.move({}, 12), '\x1b[12B', "Move: One direction");
a(t.move(0, -12), '\x1b[12A', "Move: One negative direction");
a(t.move(-42, -2), '\x1b[42D\x1b[2A', "Move: two negatives");
a(t.move(2, 35), '\x1b[2C\x1b[35B', "Move: two positives");
a(t.moveTo(), '\x1b[1;1H', "MoveTo: No arguments");
a(t.moveTo({}, {}), '\x1b[1;1H', "MoveTo: Bad arguments");
a(t.moveTo({}, 12), '\x1b[13;1H', "MoveTo: One direction");
a(t.moveTo(2, -12), '\x1b[1;3H', "MoveTo: One negative direction");
a(t.moveTo(-42, -2), '\x1b[1;1H', "MoveTo: two negatives");
a(t.moveTo(2, 35), '\x1b[36;3H', "MoveTo: two positives");
a(t.bol(), '\x1b[0E', "Bol: No argument");
a(t.bol({}), '\x1b[0E', "Bol: Not a number");
a(t.bol(-34), '\x1b[34F', "Bol: Negative");
a(t.bol(34), '\x1b[34E', "Bol: Positive");
a(t.bol({}, true), '\x1b[0E\x1bK', "Bol: Erase: Not a number");
a(t.bol(-2, true), '\x1b[0E\x1bK\x1b[1F\x1b[K\x1b[1F\x1b[K',
"Bol: Erase: Negative");
a(t.bol(2, true), '\x1b[1E\x1b[K\x1b[1E\x1b[K',
"Bol: Erase: Positive");
a(t.beep, '\x07', "Beep");
};

@@ -9,3 +9,3 @@ 'use strict';

var t = spawn(pg + '/throbber.js')
, out = [], err = '', time = Date.now();
, out = [], err = '';

@@ -27,3 +27,3 @@ t.stdout.on('data', function (data) {

var t = spawn(pg + '/throbber.formatted.js')
, out = [], err = '', time = Date.now();
, out = [], err = '';

@@ -30,0 +30,0 @@ t.stdout.on('data', function (data) {

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc