pax_global_header00006660000000000000000000000064131351036700014511gustar00rootroot0000000000000052 comment=3340c4d536078a51fd7b5049e939c43c5ab05db3 ansi-styles-3.2.0/000077500000000000000000000000001313510367000137665ustar00rootroot00000000000000ansi-styles-3.2.0/.editorconfig000066400000000000000000000002571313510367000164470ustar00rootroot00000000000000root = true [*] indent_style = tab end_of_line = lf charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true [*.yml] indent_style = space indent_size = 2 ansi-styles-3.2.0/.gitattributes000066400000000000000000000000351313510367000166570ustar00rootroot00000000000000* text=auto *.js text eol=lf ansi-styles-3.2.0/.gitignore000066400000000000000000000000151313510367000157520ustar00rootroot00000000000000node_modules ansi-styles-3.2.0/.npmrc000066400000000000000000000000231313510367000151010ustar00rootroot00000000000000package-lock=false ansi-styles-3.2.0/.travis.yml000066400000000000000000000000631313510367000160760ustar00rootroot00000000000000language: node_js node_js: - '8' - '6' - '4' ansi-styles-3.2.0/index.js000066400000000000000000000064271313510367000154440ustar00rootroot00000000000000'use strict'; const colorConvert = require('color-convert'); const wrapAnsi16 = (fn, offset) => function () { const code = fn.apply(colorConvert, arguments); return `\u001B[${code + offset}m`; }; const wrapAnsi256 = (fn, offset) => function () { const code = fn.apply(colorConvert, arguments); return `\u001B[${38 + offset};5;${code}m`; }; const wrapAnsi16m = (fn, offset) => function () { const rgb = fn.apply(colorConvert, arguments); return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`; }; function assembleStyles() { const codes = new Map(); const styles = { modifier: { reset: [0, 0], // 21 isn't widely supported and 22 does the same thing bold: [1, 22], dim: [2, 22], italic: [3, 23], underline: [4, 24], inverse: [7, 27], hidden: [8, 28], strikethrough: [9, 29] }, color: { black: [30, 39], red: [31, 39], green: [32, 39], yellow: [33, 39], blue: [34, 39], magenta: [35, 39], cyan: [36, 39], white: [37, 39], gray: [90, 39], // Bright color redBright: [91, 39], greenBright: [92, 39], yellowBright: [93, 39], blueBright: [94, 39], magentaBright: [95, 39], cyanBright: [96, 39], whiteBright: [97, 39] }, bgColor: { bgBlack: [40, 49], bgRed: [41, 49], bgGreen: [42, 49], bgYellow: [43, 49], bgBlue: [44, 49], bgMagenta: [45, 49], bgCyan: [46, 49], bgWhite: [47, 49], // Bright color bgBlackBright: [100, 49], bgRedBright: [101, 49], bgGreenBright: [102, 49], bgYellowBright: [103, 49], bgBlueBright: [104, 49], bgMagentaBright: [105, 49], bgCyanBright: [106, 49], bgWhiteBright: [107, 49] } }; // Fix humans styles.color.grey = styles.color.gray; for (const groupName of Object.keys(styles)) { const group = styles[groupName]; for (const styleName of Object.keys(group)) { const style = group[styleName]; styles[styleName] = { open: `\u001B[${style[0]}m`, close: `\u001B[${style[1]}m` }; group[styleName] = styles[styleName]; codes.set(style[0], style[1]); } Object.defineProperty(styles, groupName, { value: group, enumerable: false }); Object.defineProperty(styles, 'codes', { value: codes, enumerable: false }); } const rgb2rgb = (r, g, b) => [r, g, b]; styles.color.close = '\u001B[39m'; styles.bgColor.close = '\u001B[49m'; styles.color.ansi = {}; styles.color.ansi256 = {}; styles.color.ansi16m = { rgb: wrapAnsi16m(rgb2rgb, 0) }; styles.bgColor.ansi = {}; styles.bgColor.ansi256 = {}; styles.bgColor.ansi16m = { rgb: wrapAnsi16m(rgb2rgb, 10) }; for (const key of Object.keys(colorConvert)) { if (typeof colorConvert[key] !== 'object') { continue; } const suite = colorConvert[key]; if ('ansi16' in suite) { styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0); styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10); } if ('ansi256' in suite) { styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0); styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10); } if ('rgb' in suite) { styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0); styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10); } } return styles; } // Make the export immutable Object.defineProperty(module, 'exports', { enumerable: true, get: assembleStyles }); ansi-styles-3.2.0/license000066400000000000000000000021251313510367000153330ustar00rootroot00000000000000MIT License Copyright (c) Sindre Sorhus (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. ansi-styles-3.2.0/package.json000066400000000000000000000014601313510367000162550ustar00rootroot00000000000000{ "name": "ansi-styles", "version": "3.2.0", "description": "ANSI escape codes for styling strings in the terminal", "license": "MIT", "repository": "chalk/ansi-styles", "author": { "name": "Sindre Sorhus", "email": "sindresorhus@gmail.com", "url": "sindresorhus.com" }, "engines": { "node": ">=4" }, "scripts": { "test": "xo && ava" }, "files": [ "index.js" ], "keywords": [ "ansi", "styles", "color", "colour", "colors", "terminal", "console", "cli", "string", "tty", "escape", "formatting", "rgb", "256", "shell", "xterm", "log", "logging", "command-line", "text" ], "dependencies": { "color-convert": "^1.9.0" }, "devDependencies": { "ava": "*", "babel-polyfill": "^6.23.0", "xo": "*" }, "ava": { "require": "babel-polyfill" } } ansi-styles-3.2.0/readme.md000066400000000000000000000070321313510367000155470ustar00rootroot00000000000000# ansi-styles [![Build Status](https://travis-ci.org/chalk/ansi-styles.svg?branch=master)](https://travis-ci.org/chalk/ansi-styles) > [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal You probably want the higher-level [chalk](https://github.com/chalk/chalk) module for styling your strings. ![](screenshot.png) ## Install ``` $ npm install ansi-styles ``` ## Usage ```js const style = require('ansi-styles'); console.log(`${style.green.open}Hello world!${style.green.close}`); // Color conversion between 16/256/truecolor // NOTE: If conversion goes to 16 colors or 256 colors, the original color // may be degraded to fit that color palette. This means terminals // that do not support 16 million colors will best-match the // original color. console.log(style.bgColor.ansi.hsl(120, 80, 72) + 'Hello world!' + style.bgColor.close); console.log(style.color.ansi256.rgb(199, 20, 250) + 'Hello world!' + style.color.close); console.log(style.color.ansi16m.hex('#ABCDEF') + 'Hello world!' + style.color.close); ``` ## API Each style has an `open` and `close` property. ## Styles ### Modifiers - `reset` - `bold` - `dim` - `italic` *(Not widely supported)* - `underline` - `inverse` - `hidden` - `strikethrough` *(Not widely supported)* ### Colors - `black` - `red` - `green` - `yellow` - `blue` - `magenta` - `cyan` - `white` - `gray` ("bright black") - `redBright` - `greenBright` - `yellowBright` - `blueBright` - `magentaBright` - `cyanBright` - `whiteBright` ### Background colors - `bgBlack` - `bgRed` - `bgGreen` - `bgYellow` - `bgBlue` - `bgMagenta` - `bgCyan` - `bgWhite` - `bgBlackBright` - `bgRedBright` - `bgGreenBright` - `bgYellowBright` - `bgBlueBright` - `bgMagentaBright` - `bgCyanBright` - `bgWhiteBright` ## Advanced usage By default, you get a map of styles, but the styles are also available as groups. They are non-enumerable so they don't show up unless you access them explicitly. This makes it easier to expose only a subset in a higher-level module. - `style.modifier` - `style.color` - `style.bgColor` ###### Example ```js console.log(style.color.green.open); ``` Raw escape codes (i.e. without the CSI escape prefix `\u001B[` and render mode postfix `m`) are available under `style.codes`, which returns a `Map` with the open codes as keys and close codes as values. ###### Example ```js console.log(style.codes.get(36)); //=> 39 ``` ## [256 / 16 million (TrueColor) support](https://gist.github.com/XVilka/8346728) `ansi-styles` uses the [`color-convert`](https://github.com/Qix-/color-convert) package to allow for converting between various colors and ANSI escapes, with support for 256 and 16 million colors. To use these, call the associated conversion function with the intended output, for example: ```js style.color.ansi.rgb(100, 200, 15); // RGB to 16 color ansi foreground code style.bgColor.ansi.rgb(100, 200, 15); // RGB to 16 color ansi background code style.color.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code style.bgColor.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code style.color.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color foreground code style.bgColor.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color background code ``` ## Related - [ansi-escapes](https://github.com/sindresorhus/ansi-escapes) - ANSI escape codes for manipulating the terminal ## Maintainers - [Sindre Sorhus](https://github.com/sindresorhus) - [Josh Junon](https://github.com/qix-) ## License MIT ansi-styles-3.2.0/screenshot.png000066400000000000000000001452221313510367000166570ustar00rootroot00000000000000PNG  IHDRYzpYIDATx콉W|Ni>Mp!vVU XF E6 F EqRM<9}o'<=`{g#h:iq&iiJ9 wM=YN6*wW?]3; ΅-@@@v~ ]L,׮U;'/o_JXux^~9h/|ήCsnl6s'X]]k"`(" jt gwHp.tpx08GEKj`hyx,! `$1㄄N; !?`(ש-dC:gt\ک?k]KK.ɻf< =,`hC@ C_0`(hЛxŋ : Jٔ`,{֥ťEk2X;?<<  I0CBa Z`90`(Mo;>0`(4anC{~}c0D}0'i}z'7)$O!wZsMi?M#`0`( >u! |#CB mMԹ U'"دo;D&O6 x =dJI6b]td0R{׺PC>!C0`.C )vLھ5C &GO``( .!|#C 0`Ю~4> =C!C 0`h}Y-rPdGC 3J0$0`Pq|edy%Ҽ}˸ >qz*s{DUހ^v\ZXQycھNV3]״G 1Eد*/>xYu`_;G5PT\4#YD֛ZF1jڨAIr Q퉊ϸ(^|u&׵|jZLXo>Volۨ#jLڭ~MԚ6Y*>L_I+z<`s75R`Rh.VE=yldC.zDcI)p-7zGA?o1;\jZ՗xM;\m5MlK_(cJqF# -YYzfX#}- ZjZ틢֍z#׫їPQuVwoz32?DKhRV6QH=,w`(vu~ɿI5Gtp?JI=]Ci& (G%[+Q[gx2죖)9 mw>}2ԩSgŞ0;;[my": >7cNz>Q7Uq~`:t`C?Tvl rOM}|&XyTHk2,;ƌ CNr)=4!C{]z5koV=Iԓ$ *eF; ?K&lT1ULʉ(odX *pEi-utR'v/>~)55+ !d6Qc(潝VyRG+#8_0dyBEw@б8VP)Ofw~[ I?Ž2/DPV_b"ȣL^6*t%D\]^ݓ|$K8N'.ƋhKq 1 {W0ĤBb/0$=]/Nl|CK2%S^!/r2Rv_X>/^s^zK0vZ Q0"\;~S6NJWZK-B'dIv|C!}7ȓ,`Hbk0D0XAPI=fdnߨZGK`zI-&In!:Mbg9,S? zѯcG{O`If~Z#uÛu^yOKBy?/m']v6%JBHL9 Ps|CoN?wF$s:2 `RAd+$#r>;bc[u8y trkbsEW0T4N}ՠC>()q( ('RC{~*KVs1r`^> dz ׃:XvAKV{wIH7]VC]uƖ.*,-%r!ۓ}{-C,jޕ%62[+TmCvnܣ-fjFfcVx[5Ƿ݃߮Oerͻ~ڙȰ='г. =1/b1zR`\'X҆q 4W)s@aaql`yL P_oƠs a#sA$6~b O|0em39ǵM/ l,xm읣BCFf'$o`eS2w[Q GǞl#Yjc @KK ]b#$VۂxZdDoK?yy]9 1;gb.g2D73j{lMc 6bwT)BvhtҬϤ7YhbYPu(L˾c{V$35‹^:|3e.ThQ`_#Z'ɴ0 L{zUGL`]6e(C9 ]~o7"NÎ@=;'=Vb>fwXgމ8&:~;<qS!& bRS q<~ n֕q'V[ b]^%Cyܳ[L.fPFDS--NuN@&D}CVEU&q,Y,>BT"- ?`5mG.GRZ<52tѻnJv} lv2͑uG0_*GF9(WÎ>dq8XL.;GA_q#Kk!z[f]kJ˽G(]t{>6 i'Z')Z'ɳK?$:3|P.(c7Grܼ惓王C-IV73C-.LJx6zc GT(?\8p c#4Rgo0رR2%-^a 9^ P`(,s:;$ 8JB=N@>d HGL CK#q 9uOb-ӄ OFŢC]!iv\/#C I0Qސ!mwO;drkؑjw'm57Ja!qUb Iwr-5Jd X?Cz2 ?:Y .x m$C&ߤ#5) 7!ҐPD,r!n˦h.rTC ^DLcI gbk2l`( ^yO&B?a)9C9~dLWB6;aoPC7;3+38{l@` lډ9Ccgy ,?9beC\\kcf7q ljO%Ba4́0PTߢO'cM!).}!<& !&#ZXew `o= q(R܃ٔ! HV0t6R) sJЛŐ]h%ibRF Opϯ%zjF劷d> r0tC8!&EP0%^C2|wّ`O%4Tub_\B?QhD)~X%mَCR̻sr`Y.bmL?-Y9H DH:^ Ch0ᨒoq}}g8Ԩ dZ?CA\]z/k `Hu^yǼ>x>x09pC"HF70αsDz=$S``wX)ة`H(u|7"O F0 Ф{0:t=!@' z!QA֥T*]FNCڮ5—CfuF;`vbg,ubFO+Wwfv; I1rQ!0nfZ- 8IcbKWWY$#47 ךۦ"{Kw?^{K֮:elxR$߉i㏵Nz0$:/ü@q{F[,q!kpCѠ0 Ʌ<m_Hy$u?XCDgyƓgL8p`ёIo aqSNC"AzsuA3?\+F$!fCW')B' I1rQ!a/*b0Gpc'NΖC-G JF$b2WYHwQ-Ӝ|͜# 맔`ѥl}j1IXewDq ' os7`xh|s$+@WNx7/&zEDƞc2ׅ?){/ {cOH:0$S6`?7Z$a͌H4%CV >e@ $tG] e[Ubд/; A`JN,@W`He6-zB į!Ckv$=~6n_d%=(`G"=F_YA-I%Jmώ$ugdlYOkC!_##Q^'S:֌+X-KATHF0DzC1Co)`-y+h0?) ΕWv0(E' 1C]n -0$ż:G!Weݞ1'ma^ LFᦾi*M⡥>/`h(E:Тdp$#N&0Eޜ6:1Q.wY kEu@HV0$>Q>7}x!q]. I%Ŭ.8B1h(6rߛqA% ἱ5^0ĖK3F3CD}p!t`(#Kqg!,rE- 9DFT͊MTpF@P9`hm X o{AkEvM.wXRhן>3GfJҾnkd!ʻ %~Zk#-)b!$/g8ר  X!W~CoaOKx7âCc·7:Ge.^6\H,eH=vP0wZp {W)D0`HF'ִ\(7:? ~0DS2 ,tG7dq#Kb| `3*Z6o@p` 0*'] ^o &-.,tl1jDaw!X#ZkZG5sh㢢b)Q. ⣅|d;!"`p_EQi[\C҃!8<`( -x ;;ΒG./0nӵ C)9ZC|B \vb~J0$dn7 z5nLjT Io Q Hjh²ĺIvb?a9C 1|y.-a߃`(\Ƹ> 0ث26'~J;M7! .7"]6``bE52Bxc#I0H7c#:/0; yl_9-Ѻ1&x'"$C{n1bv &8f 0`(0`( ! Wvb|$hJ (uk 7G:oimŁ,[&C a\sW hiϰ>sjQ;uRQh!GGlEY`(>lῌ@#=ym17E^'C{E>j%0CԇCT23+HavӞ F-'3sS||i EIh1&sM s%[qf}3ey8EkK N'Cឦf4ɲ)add'2èrQ}KG%; Eo 9}H(g>OYv, -yHԧXPˎ{}r=sSbkuuei<T(xNg70D e2OvF… /&$gfk9~ߞcSRg.QƱܶ<}^Fϵ䠾;b}hiC=<,w20Uڃ[: u ,#}mԝ64i'~isX<$n-['H0 _Ξ:sgV;< "؇1'Nƞ:sx3gNƞ68uǎ!Ӥ_M;"a 320DiIc]G\cg/Y;p"N\#ChxEG` jE |8Ϙ~nDr~VYBI')k `(A=|練41`+ӧТ,7vLvOugx p}>/5ѳcj~zQub%z>/yVD( ]0D3!g_09#Nyy1zs'45A,ћ1gy;>%=o#S y >~B<'ٙӑ1#HV+2C XP1Yz']ZQ˼.vC&=kV(Al]Ge.;?sehrjPCmĨXË[F6vkvsA6 !A$~, NV(e}cX谽BU7 w}qHиewIHr0da/]!)oLX& Ӓ8&>ZLp)IL=P^'†+u%]~.ndK#mjgx7Q,FPbY:Hu^yG_m^p<6VԾKR @ >hA C C (5$6ҶM# +`@A  BN&%lcPum}z@ |Ђ@@p@PTTe1p9f'GFӓ֡%+!@  0B 黼[1Ga@@  @8"Zm3)a@@  @Xe]д}mZt'GM(@ 00vSZ0 C @ xI$C @ 0@ @ !!C @ 0@ @ !!C @ 0@ @ !!C @ 0@ @ !!C @ 0@ @ !!C @ 0@ @ !!C @ @ @ ``@ @ !ݧ~7^R|*K  31`rݩܖYMTʪ4-]oT2^3Km9! /Җ[u;pT1`hX@{bq z5kw(t) Nޭ: cm>&Ϳ_xW~ uJ}4<_t5 0 ~jK/z#틽kWvLֶ>0iXՔE :bII&:ZM0~:3!`sw4Xh.LB0C @ PHt½j^LjS5./ :p N5 bi5W ZJ򃡉 ; v"u?}i/$8r `HZ0O}u` yJ'00t&`(hzpV3V: !C Ю[G>Xz=G:#Gա}87|e h(ɟg7e90 Cރ!-/?^i Cp9c1QTJS v"QG0I uVP2CcSQ0ͽܾXCGW_7| `H.0ޫv*r v"9 `(P!ޒ/`O@|50-h _sW C+v۶<>C\p[j}!C@ C @~00|:R8 i4Z& 0``!h y C BggP㡕VC @ C vNN6Q #0x0 CRxmdvO֟8?}:AS9*}YW+OˊGթ{N\/|Z}SOõWkkեgthaZBV. :0tD4 6\ӻfk6YF$*]F|raoZo>\a[ؔ}!!BTSJMsLޥ3 Z呃w:ߍ9 /sgZ+7}q}R?RkjͿp]O99}GĠS6N̹H4"񊘞ɜ/mڗs>qJi|C 8/>71}F_iվ9;?ُ ~cxgzgJ*0V;?)OteqU3Yz-7"&9/3 优Oԑ$_OS,Q.}TUEa{M>KČ 8h,:j:k? 7FnةʝOJ;_i&#VSss̯錡θsʎLO?}X̶`甍&~$ptG:SyT۞zZG5j^|+fGfӧqԳ׫UI^yΟt$MV@L!Ge8G| ںiU-cӶ9ح[-5i[N9l?->^~qΦ6Olt|~霷MIBENh K˩xMŔ ڜsё,~0_>te=U9#x}\jps.ǟ;$F^wADl3B_ʸS3336S KA60:5hvK"ѨU)|CL0+j;F[cIu:i)V ;0:1{fnrN i=3=G0t:j״xu3ॽ*rcNurWE괨b+ _UQs`F{Ufkn:fc5 UEI&6 Ӫɛ#bԙ5sw2φ݄f.̔Fq[??G||J-?>/ϝzf0}O;n;H+6Uo2˹JLɹ`Aw=;˕ُ0I>_Zyrʣ[k sk%cfjx$nG$Ɏ{xF'Ńαo~dbPbs{j\˦{gS t|z?tfwFl/Ϗ9O块T@?Hi1zҫF!υ KeWt v7s=(Ds.oE2 141ϖHlg9H-!`(ƃsJWt;Q:$&XLaM˭UVE޼17__ݪ EUXtrqu}H_a[>K yIoKW[U]=ͽ w2B=Ծs #d.0D}k*mNWhJ 2,D'CO!w)5fj;g+mH6nhC4 yҦ~ǃ6J0'-]'Xkmljl y ͻ/ m.0TfC Øs~&wѫozq3{o}WS1NRWmI~/OZEK?pRDzϫ2%aa~EUH6LX!@Bea~d/bs2])mT6;oe\ 15tđ79"enp8!$-Opr[@15/^yiA0t ml 8.0D//TVWωZ"/V9 4PDj1v00lp ]y`v!@dVH&0l_SB+bR!hÎr%CKO^МHB:{f;(d~ FXxƾ3ݱoư5S ^t/wDq|{I뤃/FȫovC=K Gq".ϟ&rE'ʱ ~>zb| S$鹆ɻ' Ԡ?4`HDyoI =2㧧xQy,J9R7=mqa.cXL̷4_pٛ3?#%Cßȫ(G9K_.ߗ͚YucIHdƫŁ!GD`Zy_o7oA~0a~dTMo[{X(>Ő6q;t r֞C Wao$!OW.sz.plN].M$ʩFF(UNzDhA<`3aqP' >!ׅ-< # 񣩵|Bl^!&Cl~y1j̴Vwm[k=uv\j<}"骴UK4U _ja]iº4co^udhΞ<."`諡.I&8;V hmOzxD z05e'iGU5/1unZK3?f6aZ]o:GR(ϦL5.^)J'8vti&jE|1T, fS}o~fdt$ߺ3ml}qSmâh,Pݤ+J=a}1k`iS>N':c|<㟐C,`C9ɉ۩S%q z815OJ}bΦ w۾/oČ8kz3ƞ=az7F\l͸W alL3OZi gH.e_fB_!oN:2Ƨ󞮖mmj:Q=BX^L /7LS(?*z: *d.].O31`vg!|syGͩSN%Q%Q9>K'h۰G1c7z17^({biQck9s,f(lw`i}%jXA?8Č1\wcF ZL:g͆1׬+Ś0=Sq(ETP!T0kLw´((-p$&rz}v%":g"V3Ý2fKy0X33FZ"ݎ3*NQ(|>kԬ+fVrئ,KF~~,n:0\Ai V}/6D`،#5@|`ZC)/#ĥ B0yhb#5hk:́C}D7Ftiգ[ә.Z':Sr{Gq[\@(5$8GWb1,t& Τ8rM2ͱ'f4~+4Y$#ĆH4HB4Z}N4oq*'#|;BSaR-D t 32*Lۓ kuLV+n4e$& V^jct鉊Tըa{ Ͼ4Lxz=3jб_Za[gu OhThӸ3W%^oFPqc1;:{*!u=W:4V#h'zT#zq/PH<{ZK>VY eDN&_=CT FꔈQ󼇿z}aE/*]"u^T~ Cs7z 0ޑ:s̘6_ގ1~.tܼ&+'Cjc d^?(3-[;mXבAwQlVNۛ8߯SDxDB_*jUFM)c6>{[Po? 旤s$>2c^T+w}oof3F^cc+|lj{}#1#yHwFyRl6' m|!`ߓ*4U!&L@pxda((A@Oa^ >6w`Ʊ=h N}sPۢdjQ4V!CVnb@v pġ֠\yh$ #5k+^ԄM>I`M32 rC[3D\fh 0`-!PeU-Hjc`h(Oxb#;89N ѐ5"&q24F|l_ 0u I:G(zh kEY)[ =nי[;20Sۀg3TU[/]ΐiܧrĥ]%  z-> qE^(4j ԩBu }=zqon>s_8s/ 4!>/;qrķtdu VŀKۦ<`A H0וa>_?4 ؘ{O(ֺbqb_# b(BUAN = lP__!ܾ^^`O"QNJ BLQśB x ti̮lG'>sߟpni*m(Er<R~@H:d!z!W  #[׉% ";8=EE)쀸<؋A!k(Hb?׉ Α,(b5˛ɋGN$u'd,,n[>N# |&SErmCh?/{a̙w`Q00Ě խB1d(1(HzaӣF{L^ЕxSw SM'21J AG 4' .0dgoEfXH4DgÛn5#)Z &2!U(م0 ,iThr;  2¡"nb&ƠEPQ(}նC iDR"\3I! Q+i(kUszPwWj7'G\J ߠˆJQ`w(sIoh-.zCObkؑ!Q05 -(˂;,4.IrC#DX!!?YF氶N_ٞ/-[=Sqs7v Gj:B agKUi{Ze7wiO[Bd !ۓ='3uT+kk-d!ng&/z[n.-7"U?NtC®a' 8G T6%Y\87!*}b#!'%_*,o ?z;P/' Y9nuQ ,&c%#df>a~)!wʾ"s pE0AVAi!_0 0ț."՟=XnՎW "t MaXQPp!*ohh310ț`H=HGD7RId0 z/~]B# Q]|)Ae14:1tc"i tH.{Ofh::AX o P!Hn0+}~ˆ`SNB$b(br.mbNV3弜k0 FZ2S4T q! byr)!"t75mP_ 4FІ KXvEc@ME Q(koȈaҪ#Rz6ȨH`'F/sL9Fk Z7* U!FvK>Iy0&20( ,%b$8]iN CTXj'FU)_jB4Ɛ$`KiU)-rEzwY]zSa?908\`=x޿1$CG{XvyO[3r3rSk{ExSlvCSNvC̑z+ R`Dza!XYBޛiD!(HC{OoBm>ҽ+E IݭCc!#Y=hTB䓑єօ +4'R}5 HX3,5?C`Ȫ!*sZ+ jrba(z.h?`He\*ׅ*OzC׋#}j1DXX0D}y^mMk1R",XjQgh!,nV`\QF2y!:!J#$CJZb85G?Mf`~Y10_ l "le%ڷ'$BSe#'yܻq#>l$oCϑd{`hO"V069_Zy~; 0t$tρX襳$[M{l+wp2TX-f-%,z<\K|T:y/NeF0 K5 A 0r9gF; :1_2`HQ%{Kx!UŰ`5ڠcM*SCĊZ f;^gs궀W]tJҚqs'O&[Rq+:I:{34Оw;M g(zsJCxJ4t*0D8hynVCAogr-4g4g9[9?.`2yt X6% t-ŧD0$E)ō+O8|*9c ꥘CΑ(/NK (3§_~Ew1Da῕W2zWiӶ:E#z1vl)0Q?%c7z?U?>J7IB0 \ߠ/OSF\tE)CkB~CN$_-b{0ai4ZJ:JK׶-޹bHՀraNj-DdTOPf3JP&,0|T]Ae ;!X :C zR:Ewuݔ u&"eQ 쿴8aqqw0)o07$$?8W-Ⳛ޻ed9~k?SCu=ͼʜ; \>l[^fV0ʮw :=EQ1;4&"qF*-=ٷhGܩV2v uMS:Iy<`lɻX&fj$'_JLg~Cy3wDo'$)3Ԣm=Id3Df4N&/%`3$mzgW_99Rcn}?0ԑ`iK>: ܣ&0O=d:uP_djfϯ8G/E=V>?1O7[ 9Gy"{^In4֟@Hcn'=a<#en˙lu~ۓ?C1# o:B4 b0߶)$Mxe)-P?/~0v.]ǟTΗ>@`hm^gҊFбU[& P7O$#[Z a~v`{!c/h )<Ts\G3зW4G9;z^s9X (Ew5=(AR#MIt2¹_ΐCH6 ^m۳>YE3л5D8l` MLprz& (\GAz 9<:~~i,O0jڹI 4J$bٷ?iH-q#k|b7<9VT'hх:6R0iuGb^9cR'z9)=Fs[?v|FBԕpN]^] Ci,9[dIʺ+bt9}b =#xkǤ9$QHB)E6M]j #Z.>]NɮVodN ZsNra+f^gt`*NFj$L鸯a'NWaheV+/T;_vJ3C34?43L?}q˓q쪊N,l bvCǓ{Pƽ;XW͇mi㎛ۚF*\$GQ6j9=7Xkgz;.tWaL7GӚ*xDBC_udꋧ=:T;OckΞ'24X*?:h÷U'XhrbO}R=C{NΠ#]947TuU<:[!RQ}KyOɸL#t t02nbDydpR3s"mհBŠ9ftl1)]/&KcXKGՅ-/jl|)W*ʋ {Tx9҅DU֧ca -aW8ow 0ΆTx <ꌫZý :rRuj* &Jՙ-SfFDaF<¬&ŨZGW؂q F0OP9 X9rC95W; O zٯf2# 2CJۻo睫Qc9حu Qhut[Z`Zpq6S4Ik,SM_pRlX *Ej *_zjի@7,McCyXߑG`v!i i0e(nR}o9 '>?"BhOunNϟl ['<ѿ_TZG X_ZKAP|<'[A]bi#q͵+ĕTW=&u[]62О%_ϛn|On861o~VY*΀!}$j78*sQzsNΌĀ0k(* = ߍXv!L9(lBE\KP43$k]AܰԜz.d I+rLM8Q(W]4qN+$C.eؤ,ZVs#q aKϚ r<%ChxCD+(ԋBՔ9<0bR,(kOy,3iou4Br{"}SC[=E'H:ic8q@R^8V DMd70D wuifC?&Z`}p W:(?Ct%6W `'ntͯj'챞fo\^,(z?=N5~a 3G2+Ur0TiSrj'DVVO0X"Dv f`_/ɫ @/R #{dj5AJ5dN~_;]I~? :)]0נ 1XlNE'rVFip8NBolY0#U! o &sJcq=Ig<~^T;}jsm4)j㨺=Jz?3qC_ ]Po*懭Կ\3M 34Џ7Hku@G~{aq3D&g;㘧81>H&k+MܳWb7y2\8rU>\5?t'u\fr)M8{$ǟ\mu_ꚺ?>?b1Me욚K|S#f_,nF썉'ךf,؎ש?ߘj*zԿP^T_1<~=!yjoy(ɟfoOqbz5я('.aYe2BH3PRi/;h~9uG~J= eXCtۢcHޱB3bnC^TYH':}9ߒӑzVEe-Mzť5 ~Tc4c^{:L-XWћWhωt%zہX$(Vy&QGgV8F͂Q  o*ǔu&kkb *E׊6P!i#F0tQs',F kڊ^댓ienh5h`hTTpno0q?Ss=E,-I"%"5 U[z6u[Ce89'O#&;y1+j"OigUg^P+?}`f䙈z; =햋^*lѡ>)jOљ#|\K7Tf^D{j'j>$IoBdzw3|ۻCzK5e=e7ol-n4f=YjVm3H-ѷ\o▚'tfVzFgckK':]Tg,Y<:+񠷿D`([E?ޙްO,'.X6Sji"Tcx9plZ^aUMcˆJi1/E#t pi_\SS=JN?}22L:x!}HPAEܚTHZ [: bۂ |F׀B땐Bc47P!:7b5HUk=q6噩 N_/ 6qn4E:RK72kH1\0$ :;LCaNFF<# J挄!8J:x*. դFa\JXH'x dBcA"C EAsм1$qʝ!,ﯮ-T}'N*T|  y|mTG2N*Ge9P!Hގ8w 9.ćxzȰ 914 ]$GB+  !C;Da>1 Z\wƙ0ɑχn4k3OƀPq,#\@htc liΎ^}e0V \ r4*Cg~ҾS5K+U_(kEzI}!ZI~?hd6mr.8f&F;-: 0snį"}Fةz+Uލ< N:|ჇnDAD=H:lۯ.Owe %kN0P0j(A^Qz]PHR?CE{>]X丗P"s}憲 ,k2$ A0(0 !(@ 0(0 !(@ 0(0!(@ 0(0!(@ 0(!(@ 0(!(@ 0(!(@ 0(!(@ (!(@(!C@(C@(C@(C@CC@CC@; юi3V` x"'g}rUCͷJnPX J0Wc͗&oP%c/gR3Rƚ3_8tPCu1{zy>V5B 6!"0di-mk7Q CPeK[zUZs F{[[>0MD11^ZNLMML؜Cm%ƿojķ:u)ہt@ "0TЅܟʿ֑2Wm/C Mi[|!=74!06&,A`H4zCjr 9k{IQV忾Lh#]k0$ /C1us:; E/JVYb`ȐEj/*(#ԨDM,ZP)6273Ǥ/kvt i0t ?l7>fYYe鋷s0t7tݹ uN04Jm N1L& gDI04}i3(? o34 #Ԏػ )5}ȵPCOe(kLD*uI-H1դwk RC8'd,X^2: ZiE6A7tҫ㉔h^^`hGY$@k .r(d;EC_zzw~i&/]NIԤ$HqPЂ!A\Ew8Qq{m `h7!Ԭi]qSz5\?p!fɺә"jJѦ g-ڥ`9JQ&lj h * ?ʬI`hFQB=  `,ӊr,E'pYA90d`hfqGą Cό5̺ T0da:VOq1_ Pl*FИ x?@/V*K. VZju+NSkC^JѨ4C=R039/E0$7%NETݿPG0I u y0;.g0P#*,~A>0\c(bݭ;,W%FC|/k} O6F+nC8,ACDPeUqZ!3ZZ*]UFy$P(tB Q.Y3^ U0]r-e GYȺF5[6 ﻽&0P|eEJP`'AIHߜ2еl=I߾ `HKBs˲gf4dx't/M^ԦnPURQ2:3۳slzËҗhKe/`ե )&Ҧh._ۭ.R**Uy~b4LkGSڳ2PF]U^)7ϔwjiZBwSۍ˦ܬUgX}VFi~d\af[2-Qmuu:;ݮ*S#ivUAarZ]\+W + dF!-O7zqegW^w@|;Y'ZrQs486 Zxl7PZ3U+MO-cU=,|!ḩꬮ-i=3B07L\kK02>Pf)1S5wZkeh}I~;gYh7\i5Hcѐm樷UԵm|mje[J[;:u{ЪBo>f뵧 erˠT&dJƼN͒j2&)&Ԧ֌Yٜ%VBd)ueԟsBiKOgt)դR7󚲣ld#bׯ851Qf3eږVUH֓`C[&9N@gkH\kzS[\a4<N,l +/d=תa` C[}_Y[:-;omvȻrxasv['2͊uvac[O 7lth4U߼'|֜ UթmH}F&QSDs%4}Qҏ`ƻn*.aaH m7I+( !0v[LxOywr6;gg (Fl7*93Xks-3b VFj[MLڙu99WKNvV5>羳-_A/ۯڦTtswt,MZ ]YI0GCwȹߟᜧ$E# +rEK 5cxUsnF1{㣻אU4~Us,=Uu* Oflw=(*wn,䚞@!U0rKZeFiЊ_ܣVAiiY#50ZTKUEAFZ-FV֑̀E][99n}6tj>KUD6#+*O#W2")V%\[Rۨ4`(xILzk과w%ڱddۥ긻RTRMGǵL&Ed;)tuA[VD X`(7m)>tH\zuSe1̅%kK[d*%uٮI`;4I)Kŏ4&Ͼ[VЊ2M0|͖$Cr%kuQ5l|lkCS'I;Fb?:ZdnpvSqG/ޒ~0d&rWIw,#Iћ Տ\;UTsbUjr[շ$.yy/%2J1eTH|@hWv [1&96H \ɪ-~ IJs"?ûa BWjBPlFkJ%xuqr3 R_%8-- ӴguP:SUDH8/؋fPNҨ5BgQWBϐsQGz6f6q8#>}pDP$>zwa&~R)W'9db&VfmV(+!8+Y|C.I"-o ![LtB%hQ-Cl}Ut#u;UۄeZ*At*4kHT-$`H$0>fA0ĝcN9e. 0u ˽$T Bq,~Mjc4?"~6C1 ɛyO:JOQ ZBLX:Ѩ( -Zk 3i\)ԍee ) JkMSahn4ޮakWZvJSy3-DэIs>yܸ^GTb0v2T9ME8,eO*HDYWܰg5N5Vk^SƼ7O_3ճbZCniOh3Yόt-D3~=g^ѐ),t+T@P1q/h Sx`wYޟUI*O>ww%3s 3Q!ÒohyL FR@ʲ{lz2#bq.[K:Kw?3ݠ~? u042GT৆F{ie0`H6VOPahMwe+u`_76-D~,&?rt>uNtVlohΆퟲkO = /:.a|,Φʰ)9?\jf~PaVkEIƼZ:FscNnjGQ=0B;9}\9 J(0)=tԷ;SE^~MmE}I=(\f䠕6@pHX 51w\?2%=AkPAU-Lw6:nESeS]32METO용N#0mgRE15` *crq(_.\ 474 *,}X;%pG.fhfjjmT(CTaFG{Ӱ9~ϸiѲ;LjSցZ: "0xP w-r.8D9Ѩ/m^䡷2'#_c1SтpΕerVak~Xs~c (J*tR[]͙ if67v57#t`> uA['늮!Nk7),c 7NV0TP4Z``(an>/l_nsr(5!-S/_E.u[|םM$K9W}N6l>SP7RyD 7E*^ 7,BGy$ fLsA2Hj4[9ݺCWfaqC`H_.* !W])#b`SM(P(V+zoJc m$]e屋Tq{.7xHTF웮e u~XBm1M WH,k ZBI9;R(>f ßۜPאz[YRw0'(0fkU~Ϯ22Jrs3&˥tĀKm"`H:5 xVYv\',GXa-A˔0R,,AS* z 6+γcGH0]ȉ{i9pU/BSf&r0cq-&esev@i+$RʙJCw8qOUtYP63𳁄4aId e5{͞n!`]R;C 5WZ&L5IO.G4.WAخWg0tt#hKC QiFkѣu+=U iB3fh1\4ױ2|6NL00vrƺ$*=u'0$MUvkL:X 0#V " uOea^<鑟 #pD"/(0G@ 2Ac%uŸ|پ-W8A\Gbn`HQU}yZuS)U]lv؂jQ' e\s׉x+R i2 q_M;OcW],ca~G5 /s [C >6w.'1e4ZWߜYbGH+Qg0˘>'4DC|_C ב8"OYHPprq_m RZA鰨`G@F`j5VҚw@jq(h4gqV{^q?nSUl_ 0%Sk7} 4\," 34-}udDBqeg=!sz~j.CZP%6s)@`Hc3qM" -4htH]w6M.ACM!:G֕C ZԤkx400Tg#sgCA) 1AmvP|!#cdf6y3WV|  ԙz!S"0e-AnC+U͚w-a!Mr[LJIb+gD$BaDJ UՁB6&%G*L5ubl%KCњQY_[!r܃!.=3AҴ;XxPCunJ'OX>͹/a恎LNl[* 'cQ @F7Jl H FE#COŅ職 :-/|D<0["0ԍQlp 4!p9k'^ t9^GD2l-!#Y~q `ټH{YZ*&KwyOCLâ:0d4Q/4a@Rrح£mc2f;6h 5 bXUJȂ!W/(HRGEVB("R/ }S|R_xMx^L 0 XQxx)|C d`H)WfiuCZ4)`Չ} "+P}6OF07CLXIjGJ7Q< 0ۨ)dS"? -Tem0pLb&ܚ,3-: t?bMs: y0MlfE5<`H5):~cp'}Cx04vk MKE7ihx*-r^- wOgI&]lHk B`S!rCsG0DelD~2 ]8hTi!8~]/ )=M׸#BH+P7pj_3 ʒhg"gXo"ĩ |!uL Q RfȠnNF4H"0Ԣ-QWNtU)YM6agCJAk2JC-h2A`H -mD>3w*T3)G"a$ 0$h5C}t; f@bk4ro'nu;fЪܛj6֏Ȉ}gPxCo~2Ugt{Dd0 ZAY˴)EM3Ӿ:2EYNJv;9Ofl^9s6P-akEϞY!Mua;{)S?%Ш{e7 _,QDVi@!gkkaǠH0??QiLk*y C͑?%A04DAaIKě: (xJF$Chae qig4L-&;z!(`<]Kělq=kҪrQ6eҾcE8pwr ΫԯŁ!ꔿ T<FPusu+P=|Qj!+`HSX]n&S7;4sbYXSw[6^,dMW`HǝM85g=rb1`H/y@#?3LfTN`i.8}g!R?6Yn~&-`̋q{ڸ`E Ct7%zBܟ֞Qwqŏp0DFF^r 0=ol+?Q<2eXPG;&'$`*^  cHQ 92M3mlZZu_o20`u%:*2V?"C+{Hwxe^#cHyMp#`D2/Oߥ0npk_kZ? \eOWA`h}g{e>2Lr& a!ZߴP!{ +q_$RZzu7`CzA%USN- EU"0;c_tqyg UW;dD3,130C C͑]ɌCK$|w̢Iz*!cK#,hl\mɸ=57KUf""0 0D.`m[^뒮ˬLYg">CQ \zΆ!nCŐ80cS CF1+' Ԑ1O1"<Ɛ901B2o*zY䷠:L[Fk`Cf!u*c??EgYx C^3 uҒy' |W7S;1Cz4u~5 Cr[$C8z iq1s`1l#X64mm=~7 aE{NȈD}b [Zd 0$s!89{H~CU9g-F\a.Xtm\T(ksirCc S L/Ѻ:""Xr}mv{ƌq6/ڵ` ʍ1I(0pV,-eC2S_H ¬oeVFL`n<* gb!!\>W~?` kQg!%/?>kRZ xd[!wCxҘT5}_r& {Z߮r[k_ S29w-Ѥ Ab\$YVeX NBښ⤩( (0P1+`ݑv'#ֻ$#?!Wڹb0߃C4,@Κ6tDSLY!_ ~6`DY*<{GpB g Q g+Rh*,6'{@kGg5|״B!b> aY64U\2^櫈ro!eUY_L0 P|=Ip3mE9)AKAk7S7rQB"Whpt;oE K3 + \Sg1!PD!΃/!w`B${0Rt)`qeFpPoFh9pls0ń43G:C if-xw}4&wo0y+NyS_ ۨL>m Z5媭aOy8:C+B!4֩;0Ԇ2tc1YՍgC >V_T+o隆骑bp!xxɂ,|k%컧 ?n`H9'J*PЁ3sV?^;MF^4ʹOLBDD3j0w0RՎt5;}~/;@OdZ88T:~zpΣ|-4{2uts[la* $GU\}rx}&{C-\~"0@0ed5r[rglet/<~ۙ!,N>C9 Q0D: U඲Y 6T`O}hh!άy#',[ܮ3<7qˡ;~SH(/~yC y RxmfΜhvӯph2f0D4 T2XC e|1L= m9OK~Y'0J`M+\WǾkB_U5\>MX7EU %.KG t̎oXKY67;VgȂ4 lf#(mH T-a5A<Ծr4C,g\ n*#f9%Ctu)i#g0mYsoU 8 <[v_ %/-q<;$b.NS)*327׵1ʵn"hwxn˧3/ҍќ zx_r01{no\՜v=y +^Y ŒLv]|#a8 3/!.P`ఴ6>pTlHFVcHUТ ׀9Y801sapFe1/rZbwFki@(^jJ9 9%@:EW>mii- ZgCy0>b*nI('+YxyiʆZihsI E-JhOLԝocUU2ٴY)-aaPxg0Ά:w_RVtڤ7BWm|SE~uCi`h3 ަ5B0lfuš8H0-m&ǝLԿ~ot͠T >mP`UӷӾ̑:ƬckxՉEuu*(L&:3c" ޲_tw6eO+9gw Y-G9 F_b >T3b灡u6Xjk2/m|<Œ#sCku! [|5կ`ȅ2ib3D\Ra_kep2ʵM 74< 6K+3s&*OjNâ9 E))mT0D7a{\ Vr~'OT+2--/ _E,m;G{++?K]LRX0y6M7+24,,w ]Yvp$f(T\B6~C삅~=\+*T2ɟM:C m.Loʘyj*pJs']2y'`SC3ҜPTAW%悔*|ŝŝAÛc)V_(W#+[:\Ja[ }ٯth>cv]ti9c~S 4wZ7L & 6a}o}Ƥ!{EndF![$N=w}=fw;y&/z.1fs̹{cj皦5b{xym6?³M %O[TE#7\~* CX;`Ư}IsIphm{Q;I8?֖6z0SѠ.(0UXpKtZ-%TV8 $#ҚZU#d$T؇y$_r%pב$h4 6K-4qImjt{P$ 6dCER˶&s6tV;F9zL_皿>alom44Rh40W8hXmm;@4jsV::KKuI qh N[ FfucG͝j#ፕ/2^2 ~ ÙcN괢Un'o~,Ҧi21`(JImTweY rsYv?!y+`H:C W)IOFR*Rg!O%7RE -diK:7QMî1%&WMg}yCyBԲJO\NR0Dyqyr4gĕ<~w>?C^k \` [îi]L?hS*0꺋rEnH۟u^k!uqpoQ MnhJc_UU)r-zVմUһԿR^ZTKsۿ@ D)pw̹|]迡^NU;4~lOub~Ӛ :X d Cᢦ.|VkX$+ي~{qҸXPz@amyϟ? q/]`{m{ h4Dl!Ŧqlgi6ZqHFmǼN++kFl}+|R&h)-NhH8'gOE5U570%K[9 Q9_.z.$`wᚊe>Ty9z}^IR:益kZ U]r%u]U֛JU gQS6`(nٶN}}=][H8|`htiYE6Ti1"Pڒ-cl;`ER):TvFa4$磻&{^ { t.is(style.green.open, '\u001B[32m'); t.is(style.bgGreen.open, '\u001B[42m'); t.is(style.green.close, '\u001B[39m'); t.is(style.gray.open, style.grey.open); }); test('group related codes into categories', t => { t.is(style.color.magenta, style.magenta); t.is(style.bgColor.bgYellow, style.bgYellow); t.is(style.modifier.bold, style.bold); }); test('groups should not be enumerable', t => { t.true(Object.getOwnPropertyDescriptor(style, 'modifier') !== undefined); t.true(Object.keys(style).indexOf('modifier') === -1); }); test('don\'t pollute other objects', t => { const obj1 = require('.'); const obj2 = require('.'); obj1.foo = true; t.not(obj1.foo, obj2.foo); }); test('support conversion to ansi (16 colors)', t => { t.is(style.color.ansi.rgb(255, 255, 255), '\u001B[97m'); t.is(style.color.ansi.hsl(140, 100, 50), '\u001B[92m'); t.is(style.color.ansi.hex('#990099'), '\u001B[35m'); t.is(style.color.ansi.hex('#FF00FF'), '\u001B[95m'); t.is(style.bgColor.ansi.rgb(255, 255, 255), '\u001B[107m'); t.is(style.bgColor.ansi.hsl(140, 100, 50), '\u001B[102m'); t.is(style.bgColor.ansi.hex('#990099'), '\u001B[45m'); t.is(style.bgColor.ansi.hex('#FF00FF'), '\u001B[105m'); }); test('support conversion to ansi (256 colors)', t => { t.is(style.color.ansi256.rgb(255, 255, 255), '\u001B[38;5;231m'); t.is(style.color.ansi256.hsl(140, 100, 50), '\u001B[38;5;48m'); t.is(style.color.ansi256.hex('#990099'), '\u001B[38;5;127m'); t.is(style.color.ansi256.hex('#FF00FF'), '\u001B[38;5;201m'); t.is(style.bgColor.ansi256.rgb(255, 255, 255), '\u001B[48;5;231m'); t.is(style.bgColor.ansi256.hsl(140, 100, 50), '\u001B[48;5;48m'); t.is(style.bgColor.ansi256.hex('#990099'), '\u001B[48;5;127m'); t.is(style.bgColor.ansi256.hex('#FF00FF'), '\u001B[48;5;201m'); }); test('support conversion to ansi (16 million colors)', t => { t.is(style.color.ansi16m.rgb(255, 255, 255), '\u001B[38;2;255;255;255m'); t.is(style.color.ansi16m.hsl(140, 100, 50), '\u001B[38;2;0;255;85m'); t.is(style.color.ansi16m.hex('#990099'), '\u001B[38;2;153;0;153m'); t.is(style.color.ansi16m.hex('#FF00FF'), '\u001B[38;2;255;0;255m'); t.is(style.bgColor.ansi16m.rgb(255, 255, 255), '\u001B[48;2;255;255;255m'); t.is(style.bgColor.ansi16m.hsl(140, 100, 50), '\u001B[48;2;0;255;85m'); t.is(style.bgColor.ansi16m.hex('#990099'), '\u001B[48;2;153;0;153m'); t.is(style.bgColor.ansi16m.hex('#FF00FF'), '\u001B[48;2;255;0;255m'); }); test('16/256/16m color close escapes', t => { t.is(style.color.close, '\u001B[39m'); t.is(style.bgColor.close, '\u001B[49m'); }); test('export raw ANSI escape codes', t => { t.is(style.codes.get(0), 0); t.is(style.codes.get(1), 22); t.is(style.codes.get(91), 39); t.is(style.codes.get(40), 49); t.is(style.codes.get(100), 49); });