pax_global_header00006660000000000000000000000064136267357120014526gustar00rootroot0000000000000052 comment=2e6a4359b10e4b0320e6dad9857ea04f0decbda4 ansi-escapes-4.3.1/000077500000000000000000000000001362673571200141065ustar00rootroot00000000000000ansi-escapes-4.3.1/.editorconfig000066400000000000000000000002571362673571200165670ustar00rootroot00000000000000root = 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-escapes-4.3.1/.gitattributes000066400000000000000000000000231362673571200167740ustar00rootroot00000000000000* text=auto eol=lf ansi-escapes-4.3.1/.github/000077500000000000000000000000001362673571200154465ustar00rootroot00000000000000ansi-escapes-4.3.1/.github/funding.yml000066400000000000000000000001661362673571200176260ustar00rootroot00000000000000github: sindresorhus open_collective: sindresorhus tidelift: npm/ansi-escapes custom: https://sindresorhus.com/donate ansi-escapes-4.3.1/.github/security.md000066400000000000000000000002631362673571200176400ustar00rootroot00000000000000# Security Policy To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure. ansi-escapes-4.3.1/.gitignore000066400000000000000000000000271362673571200160750ustar00rootroot00000000000000node_modules yarn.lock ansi-escapes-4.3.1/.npmrc000066400000000000000000000000231362673571200152210ustar00rootroot00000000000000package-lock=false ansi-escapes-4.3.1/.travis.yml000066400000000000000000000000651362673571200162200ustar00rootroot00000000000000language: node_js node_js: - '12' - '10' - '8' ansi-escapes-4.3.1/example.js000066400000000000000000000005641362673571200161040ustar00rootroot00000000000000'use strict'; const fs = require('fs'); const ansiEscapes = require('.'); console.log(ansiEscapes.image(fs.readFileSync('fixture.jpg'), {width: 15})); const text = 'this text will be annotated'; console.log(text); process.stdout.write(ansiEscapes.cursorPrevLine); console.log(ansiEscapes.iTerm.annotation('this is an annotation', {length: text.length})); console.log(); ansi-escapes-4.3.1/fixture.jpg000066400000000000000000001640231362673571200163040ustar00rootroot000000000000001ExifMM*`# (1 2!;%57ZiNIKON CORPORATIONNIKON D300 ' 'Adobe Photoshop CS6 (Macintosh)2014:01:19 01:55:14Sindre Sorhus Sindre Sorhus #>F"'d0221Nb v~   ,646464Ƞʤ4   <2010:12:31 02:06:262010:12:31 02:06:26Z!B@#ASCII "*(2HH Adobe_CMAdobed            j" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?m;et{S;o6̐:Gک60z7Em6}3ƈ ݋SFu.}47j&m=D-[<65ă9Ƚ 'Oʈ%qv`ੜqcl'N܇}9 hcrni֒kTD-0B 5GqcJfKqPA lIћc"-%RMUR#W`9MG3c]r3۱OB?x,dֿiJޡg:v>( [JԺ~ca q ?EtcSQ3?1C̽5oޟs/k+f1}Vo~'t,s٧!? o O=KW ٙ8`>heL>63+$:,[/qqOnwIm1i{ kFTrcm=U ;w͎ne;rHF6|n;E^3&=6 =[+V\ǧgNG6s-;.wX4udiWHhJmݻۻlN$hfS_ea\mC5k~jow~QZXYCskuuxUTe?V uAuz:9Χc?!cy ˴@l8\EmE6Z[üiUć `]hc0-ygҳcC tjANCrhkKAy"=YfnfETkcK~ƪ,!ִ ~kח>p`t8b8UH}5o}ڹ+s zxմD-1IU+*rn>Nos?NV^K>鲳ÏiVz 9۔dpӫ1U$zE *g% xCi*K, .[,cwUS/:?6}*v[jU_,s 45)D7:YAGbOW>=[]NF;ֆ9Z(g[Y9~7'*:oc[o;MĽ˽|Z\ۮ#xwзf17]uv077cZXѮseM#ǓN}*QKg]cY8[sCC;mgܷWg2&{Bn]i&GSq˛VXwc 78^*k+cvMyե4&Ɩk?L` l ~M{fDEėʢRWsXrhl~7^:0X:{M k絇-&5KVeUMٍ{[f+Yk,3=;ﬓTUSmƏe=ZҥB^;!?1W c _{kN좟K)a[mTǴuS[SaǰHZ?FYbNnGX nsT7M'dGJ@zssNyp9S*u{}/>Ln?w ^ NZvѣn'pl}-vuzNE/ hp>n/wU{c97a?'1g3[dv PfF\$ֵ.G3'n Uhh;Q {Sf ܃K '"Z'FaːY+,|5ww^߷kF[/SnY[lxٶKխOwⷕ綠%ο %ηhesz5Btgi䞮1݆\OF3gE'1u.zOs x:بtOٴۻa-wU<-ɢ's,}{\۪FQD$o$U]lG]j@qll5>mm[]ij:afGdvYWwROcI0#浞B݊PM_n>_Oͥ/s6X~?eiG}Պu*rj,2zg»3 c[[2v׸7oFNcjh[5޵U?OzC!e$}k)s5zBz-zUҶ7>55Ck6s]mEeۻmXҺk:uE;Gt~Q\A7&Uó11s.68oF ϶c}J\\ 72\UD~?ⷭ95.v\c!S?Mk>S-oSYh{lbb|vT\S[~5T7=G#EXvr3Zk{kQ?;Y9aZMm *n,tF1no Ltaɔ~ҫ:}[ԙ6M{깟K=T,;X>^oXhkuqn-O'(:.Y{^(LĊP#-Z=wuGAV۲*c,'.g?ZXv۲Ɗkc~}Ƭ4Ukkg{jp%@m{1CT͚[q F8}[ .QǠ_4koaڙHglGvg^규٬vRFmt~%յ/G\7nS =koV럱*4nvKhDnx9?mf} I5luLݿ'?H]n@~%~ХŎ`X?I߳3Z]C_̧9 k{6ߛm(zDVUz[Web,GOޑ&c(ї|:oN}fknF(.w蝳mkw+"ZX!sرpٽ/:ֳ̝?&͎lulٍ_~+QgG>8X9Y[y7~Hzm1|^*o]߭=u<މ}w=kl=BlR 72lk?\_lus- :G3gc9Vec>([ĽA!/ɣ)d]J}RMoEslIjKF^ڏյ9O86E5GkXmlީE5e=G\P:zjaەo[^.1upn/ ٸ:+ ]g8}7]iݎjvKk0ө 6:VS#<Ke/r_Ȁ]@bd' @AcgqoZ89c$Go\ ͇4n}fOd[B.M;H5;Z׏ Λ}&msoF9.o'ץ_\̂σWoPjMap_2Ȼ#-E\xUޟ:9`Zi>˘]f?@c4Txkm=?F..=P,{֗SєhU Q??&/5ObَAhցlv-uaSdXwoٺQѱGQ>ˊL[q\iiDz[y*({2uuݐQkySCѿ3=D{-Rmxn ]mdt4zRneOlcd<zQYSU:V7>ŝH$CZ۟N;k3Ӌ 3 m>f⵽3!Ϲ{p7:9%f~/kfvƺql']-&?;pW:U41_dCw.)u]3q`:H{[3g7'(i!3hc~vmelkK\.SX1eƹ?Ӳݻq?RKN&)m}6m!۷ BqbyNJv`E3 R1rG-h5@Iws6 ǟZ|j-"HuLԳ-7 X*7ޤ"4![~|$R%5 #ɲP68:= /o51>DK竤$j4VZKvAFѩK/ =pnw ֯I~vTl%Zu[{ORz3>I;P֠tԏPevFF'ճgsuU{]rV-c0n3$: &WZxnM@_d1ȓ`F ie>&8~IK$c; ;DO/ܓ[~K¿VX<~STُ;ݿz; P` !=zaTqf]mqo:5n`#󿪸znE.h<}&pNaC _~;NUDdzۡl*nK)h$@yX֖anE i{cjgmeV~"yUki^ׂKg܌eT (RKe5d웳Nn-l `^}eT:uD5Dd'rbÄGh]> -lVؖ$  7䶸Yz[6ƨ'BnM~NʳyMc=l1x‘ *4BѤx[My[XEr8rqoE~ o߾7} ,ztV݃k4~誝C3Iҫ]7_GEAu Z-_C[29!? .#O@wP6=Ϥ>ϕ ??C5zczWt۞É$6O ~oGwQvxzKJ Ums Wpx*O-|ѳVG $C +xe#Photoshop 3.08BIMZ%GZ%G(2HjWrKdeQf2NHfpXu1GtfwP Sindre Sorhus 720101231< 020626+0000>20101231t6Sindre Sorhus 8BIM%kOZ"8BIM: printOutputPstSboolInteenumInteClrmprintSixteenBitbool printerNameTEXTprintProofSetupObjc Proof Setup proofSetupBltnenum builtinProof proofCMYK8BIM;-printOutputOptionsCptnboolClbrboolRgsMboolCrnCboolCntCboolLblsboolNgtvboolEmlDboolIntrboolBckgObjcRGBCRd doub@oGrn doub@oBl doub@oBrdTUntF#RltBld UntF#RltRsltUntF#Pxl@R vectorDataboolPgPsenumPgPsPgPCLeftUntF#RltTop UntF#RltScl UntF#Prc@YcropWhenPrintingboolcropRectBottomlong cropRectLeftlong cropRectRightlong cropRectToplong8BIMHH8BIM&?8BIM 8BIM8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIMESSS_2900nullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM j Adobe_CMAdobed            j" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?m;et{S;o6̐:Gک60z7Em6}3ƈ ݋SFu.}47j&m=D-[<65ă9Ƚ 'Oʈ%qv`ੜqcl'N܇}9 hcrni֒kTD-0B 5GqcJfKqPA lIћc"-%RMUR#W`9MG3c]r3۱OB?x,dֿiJޡg:v>( [JԺ~ca q ?EtcSQ3?1C̽5oޟs/k+f1}Vo~'t,s٧!? o O=KW ٙ8`>heL>63+$:,[/qqOnwIm1i{ kFTrcm=U ;w͎ne;rHF6|n;E^3&=6 =[+V\ǧgNG6s-;.wX4udiWHhJmݻۻlN$hfS_ea\mC5k~jow~QZXYCskuuxUTe?V uAuz:9Χc?!cy ˴@l8\EmE6Z[üiUć `]hc0-ygҳcC tjANCrhkKAy"=YfnfETkcK~ƪ,!ִ ~kח>p`t8b8UH}5o}ڹ+s zxմD-1IU+*rn>Nos?NV^K>鲳ÏiVz 9۔dpӫ1U$zE *g% xCi*K, .[,cwUS/:?6}*v[jU_,s 45)D7:YAGbOW>=[]NF;ֆ9Z(g[Y9~7'*:oc[o;MĽ˽|Z\ۮ#xwзf17]uv077cZXѮseM#ǓN}*QKg]cY8[sCC;mgܷWg2&{Bn]i&GSq˛VXwc 78^*k+cvMyե4&Ɩk?L` l ~M{fDEėʢRWsXrhl~7^:0X:{M k絇-&5KVeUMٍ{[f+Yk,3=;ﬓTUSmƏe=ZҥB^;!?1W c _{kN좟K)a[mTǴuS[SaǰHZ?FYbNnGX nsT7M'dGJ@zssNyp9S*u{}/>Ln?w ^ NZvѣn'pl}-vuzNE/ hp>n/wU{c97a?'1g3[dv PfF\$ֵ.G3'n Uhh;Q {Sf ܃K '"Z'FaːY+,|5ww^߷kF[/SnY[lxٶKխOwⷕ綠%ο %ηhesz5Btgi䞮1݆\OF3gE'1u.zOs x:بtOٴۻa-wU<-ɢ's,}{\۪FQD$o$U]lG]j@qll5>mm[]ij:afGdvYWwROcI0#浞B݊PM_n>_Oͥ/s6X~?eiG}Պu*rj,2zg»3 c[[2v׸7oFNcjh[5޵U?OzC!e$}k)s5zBz-zUҶ7>55Ck6s]mEeۻmXҺk:uE;Gt~Q\A7&Uó11s.68oF ϶c}J\\ 72\UD~?ⷭ95.v\c!S?Mk>S-oSYh{lbb|vT\S[~5T7=G#EXvr3Zk{kQ?;Y9aZMm *n,tF1no Ltaɔ~ҫ:}[ԙ6M{깟K=T,;X>^oXhkuqn-O'(:.Y{^(LĊP#-Z=wuGAV۲*c,'.g?ZXv۲Ɗkc~}Ƭ4Ukkg{jp%@m{1CT͚[q F8}[ .QǠ_4koaڙHglGvg^규٬vRFmt~%յ/G\7nS =koV럱*4nvKhDnx9?mf} I5luLݿ'?H]n@~%~ХŎ`X?I߳3Z]C_̧9 k{6ߛm(zDVUz[Web,GOޑ&c(ї|:oN}fknF(.w蝳mkw+"ZX!sرpٽ/:ֳ̝?&͎lulٍ_~+QgG>8X9Y[y7~Hzm1|^*o]߭=u<މ}w=kl=BlR 72lk?\_lus- :G3gc9Vec>([ĽA!/ɣ)d]J}RMoEslIjKF^ڏյ9O86E5GkXmlީE5e=G\P:zjaەo[^.1upn/ ٸ:+ ]g8}7]iݎjvKk0ө 6:VS#<Ke/r_Ȁ]@bd' @AcgqoZ89c$Go\ ͇4n}fOd[B.M;H5;Z׏ Λ}&msoF9.o'ץ_\̂σWoPjMap_2Ȼ#-E\xUޟ:9`Zi>˘]f?@c4Txkm=?F..=P,{֗SєhU Q??&/5ObَAhցlv-uaSdXwoٺQѱGQ>ˊL[q\iiDz[y*({2uuݐQkySCѿ3=D{-Rmxn ]mdt4zRneOlcd<zQYSU:V7>ŝH$CZ۟N;k3Ӌ 3 m>f⵽3!Ϲ{p7:9%f~/kfvƺql']-&?;pW:U41_dCw.)u]3q`:H{[3g7'(i!3hc~vmelkK\.SX1eƹ?Ӳݻq?RKN&)m}6m!۷ BqbyNJv`E3 R1rG-h5@Iws6 ǟZ|j-"HuLԳ-7 X*7ޤ"4![~|$R%5 #ɲP68:= /o51>DK竤$j4VZKvAFѩK/ =pnw ֯I~vTl%Zu[{ORz3>I;P֠tԏPevFF'ճgsuU{]rV-c0n3$: &WZxnM@_d1ȓ`F ie>&8~IK$c; ;DO/ܓ[~K¿VX<~STُ;ݿz; P` !=zaTqf]mqo:5n`#󿪸znE.h<}&pNaC _~;NUDdzۡl*nK)h$@yX֖anE i{cjgmeV~"yUki^ׂKg܌eT (RKe5d웳Nn-l `^}eT:uD5Dd'rbÄGh]> -lVؖ$  7䶸Yz[6ƨ'BnM~NʳyMc=l1x‘ *4BѤx[My[XEr8rqoE~ o߾7} ,ztV݃k4~誝C3Iҫ]7_GEAu Z-_C[29!? .#O@wP6=Ϥ>ϕ ??C5zczWt۞É$6O ~oGwQvxzKJ Ums Wpx*O-|ѳVG $C +xe8BIM!UAdobe PhotoshopAdobe Photoshop CS68BIMChttp://ns.adobe.com/xap/1.0/ Sindre Sorhus Sindre Sorhus ICC_PROFILEappl mntrRGB XYZ   acspAPPLappl-appl descodscmxlcprt8wtptrXYZ0gXYZDbXYZXrTRClchad|,bTRClgTRCldescGeneric RGB ProfileGeneric RGB Profilemluc skSK(xhrHR(caES$ptBR&ukUA*frFU(Vaeobecn RGB profilGeneri ki RGB profilPerfil RGB genricPerfil RGB Genrico030;L=89 ?@>D09; RGBProfil gnrique RVBu( RGB r_icϏProfilo RGB genericoGenerisk RGB-profil| RGB \ |Obecn RGB profil RGB Allgemeines RGB-Profilltalnos RGB profilfn RGB cϏeNN, RGB 000000Profil RGB generic  RGBPerfil RGB genricoAlgemeen RGB-profielB#D%L RGB 1H'DGenel RGB ProfiliYleinen RGB-profiiliUniwersalny profil RGB1I89 ?@>D8;L RGBEDA *91JA RGB 'D9'EGeneric RGB ProfileGenerel RGB-beskrivelsetextCopyright 2007 Apple Inc., all rights reserved.XYZ RXYZ tM=XYZ Zus4XYZ (6curvsf32 B&lAdobed@     u!"1A2# QBa$3Rqb%C&4r 5'S6DTsEF7Gc(UVWdte)8fu*9:HIJXYZghijvwxyzm!1"AQ2aqB#Rb3 $Cr4%ScD&5T6Ed' sFtUeuV7)(GWf8vgwHXhx9IYiy*:JZjz ?ֻ|=~7.hdG IVB??_sQQFź%pj oB}UܻhP6(S9oAF`PF 5ӟd+q#bkkOB6k#k*,t> wdae+jw6ꫝ機-_!!`YCiqqn?[<8ہ@q?HJj_EY=PA!wX6ulEԟKݻ]mƆr<`̏N zgzuRM=..J}zQ%Yr(../pEQCmYe)_.{]i81 {tA}Wb+j,zdNO fH`q7HW-L 3l2 a%#\g!&JNȫ%(tT(c”̊Ct*lSԗJ7ZPI?.{|lÒAicwjThbFIoQ`Mc6$lh +z]Ӑ9 `($VFӲ~DQv lSSR׈BԱ\7_#JT}l~=k9oiEB5>gMjMN()dvLb'ެ$FEF!_ܟlb0a+.vqedy qEz@s|6r9d&G4fֿ /aF+ANͺ TF1TGzÂ]kXrIO<`ycoowd!hGp>_Զ}/YU9!|Vs NG_$ ood鶭(_Qc7#ߦZ@_# S7T0UUjKh@'ͽGːxa4w guv#m# @1=OЅnw489owo-)IXꩠbUiڤHr eI>8 VKe,3U<*|kS|V?>RD1T1GtemU--ØRh`@$CҤҳi+msZ'MJԊ't[n3;L^Uˬ^6Rix_?-~µSKk"rkFzYTn؜&*9>=Xt芞l|N;hIJ 6[FTՙ$7zuSř@N wn<l!؛5+LǷTج:=i:|L\+, yhGStc"r3&tǯШLWu/cBnO-C$rjՄH${1q iz^/C:l˺l0]dj>](zcsE0) dQSYZ%~%[CoVoyӣX{YRhɤ|"s?+~g[q_:[:yNf7A;)i<Εnӊ;{%5 v-AEok=!sЖF >yuZ͗p)*YfzhZ$H!_Ž(AOOVEIER}sbv6frVaܒ  HSMxJf>Vp@UH=Β&ԖZ ˧Mwon?+efy` F+мMXFB/|}+mxmۘu,_1O?}uyZ\73Oyԕ jM~~2=ŪVRk|FΖ\ъ>4_ c{cꫲR>?TzcX}UlI#fޣ)"Tj•_Bkİ9ߴtyꇒ^#ƗCQ6Q&okuU袲C5Ԁ(ωWD֖p!w"QBH yӉI=^Mh4;fiϒ'WMXC:+2Ik-s$iP~ϗǣ}KԓpkǴYIJd_-Exz9t{lc)zpdC&^*SMvE,R2OX[:7q{#h9ag4+$t:e]SǶG/1K.cԑj5RʰQdE>GtJmeT-&SrT稒H"dӭ)SFvs=%{6u62|Hb𚌪{5+FAsm2m"H.*)&9&F'.fvo*=OQ=񲪾\:zvع i+*)Q5X>\LnƌȺepJt>r˻s^/&p*1Q(BiPXQ8o&7V̏Mjh4ra QFi?6W>;um-ĐMOv'э/h[q-IdPԊ%1P ҽXg;QaJ?i(YƱos%Å*p|T4=$dRmY[if<;ShgzT+IM.RN%2:Z?vV7ZxF-PMb$bM*OxЧf]2\.@5BsV9l^E;r]b5S ꨱZHUxjcq4#ǰVK}M<+#]hUiyXSxn=]CEO;}& [YPd$1rZΤ>U=n z_GhS"HZظ{_5+\0M4qPu"udpl¯>;Oj}KON2O7pC<4R`TJ#B/)^5* #ȒNEz itU]H7/x6c$m<=&ctъzv'"*5= }Ue>4aV+_ą?:cKN,GʾY_';S [CҦ_oV`z' Z*)c} P}-[$˩ >mVʥLu<[ |t䥖{dUUm70g2t']fmI6/kkѤHNu/.=" vKHHMAP@$ `q^}yA:;G}%$2K,|i\~}|}~k W$tG/=^n*R$q9b1P*: >yz eHW-z OEO/Ո_ٮ6,&)WԟN߽]N=Q4Kڛ3e@ׇCeWܷ>MQvfNrUa0Wd&(%E =J_&cwIm,\x[ »cBH´$}ݷhۮ7KcOUWZPʊA {L]?f͞`67;GxōPf㢣JS+4~@lfWUI'#牫wܼ(n7ّcA&C}2k_,Ӣ+e{/fa{p`[goǓpҜhrxD&SQ+(bl,A&mb\Mefm!YkNlyuq[2Nss9dzP(rpjkZYnF'C-@44SsKx_qKNPJ- Dԍ 8"~co6D5@*+A{awn,Ucv* T®ffَ˹XUI 1L7K@'ݞ@ T|5$Rwku|fO >Ȏ_nZ +M5ǹzŨzHq*DU#8QFoidU퀑I1/r&"Z㲊N?Ԏ!b<)d&ګQ;FQp9{+zƴDsḅٞ׮bf<}j xI7FC!A$#ֳMk[zZTT@}2q!8BOi/e4{ݓ3s^6Gjn \̕;z%S5J0*50{mH1GըB㊏3 +q\D"ըj)@Wʕ5#튚YjejewfbܻOM%|Ըmb1}!ZMY25 }"M%4 Hbxk$ ,ƀ=h+N>V;6Ù ,uy|o(Id7/)^ҷYG ,qC0Em.|GI)"-(uO\Ӆ}?ҮݕRQ`%(-KI5%Y|C9V _֩3JB=~}_ky/Qʢ zV^\((8|1hv-$24~IK;|L{z-Ht>2~JW]uv}&c6[zmPOgDWCq9yQf8෻lH$o|WIg%B<W]{݇MVES HT 2-@ǻ١HE Xֿzyrh#A ξ],7ܽg^E\z:ܬqX$$Z4BEqB] pEp:e DcS}=qҟ>6yTHqI]X#gx|>_ZƷ`y޷Ic5R^AظR`6,ΙLhԵ5! YY*f XۀOJHd.E{q5i]X,Htюui?POFN O]umԩ%M3:>v$v;඿cdixҬ ?u`JlBs.ܩ:q &RQMӳqTnjm&Qj>(Pv Ra9bImRHV9L!Z4{Cn\8Xn&["Q\UE*/T.|S8Ty⌧IYcQeT sooo/dS$} _F j>ܹ϶N" _"P?2?+7gM&wkerpF:b :9I(}p|Nd@%2uTQJ qL~c5D Rr1ӟi&߭۵v ɔ;#nl] TJY{j2kk"0*J}1- 6nN6[gxR/tTl!!ԁrėnЪDcO%B#cTpc\V̵^ڝ3w޻ɶ6k/8В F:SQtN5 w++wXTp\~XnYZy|]xbM,)3xtllΦW}%%N/ RiFA(4!MTe~ ZL'Ayp-q'_1gM>; lh8ڊx1QfqjJLsjIH7PXZ*O?ʭf f'c2jhLtЭ)!ԭa1Im~g63*Ђ*sN4: ͶO0>:`N3ÏIxӺ+<WW>_q 0rF=L}mMU$ĺDKbm?w17Z83d|ɥ:)Z[jz" ۲<{PǟEGY@t 2L=zLJHϳ;>`RevMX4$'ΝGW\ g% bBƞߕ[1IKp8Jk2FjZ,(C/LɅFarU{8k_if$$[J4'={.4р8rEMZuٹ廢crtXXlo}-6jiRI"؁o[Mmrnn#dUW4:ᑛ V\rՋIG61Щ'&U\ca.l;svbͳ$iq4:|5n'*vn5 q6:s.բI923"S{|ҖܿGGYpmTUT, VXԗ^[+hYh_ve `v,oGFX5H5d豻3S\5>ySr{2n9ط-U,[ cH}`ٝ!&G(c8 UIt"yyQot1I fЬ%Z괺.n﯑;qǾSv^Z 0U޻ʴjZhfޘJEIm0W+rZ ܦT*(05h*IZ7{wo؉B+p?2h]]tGod+7&0G**:^2h.Nr%҈Ue,e'C-! 0)g]xnX3Ej#Zӡavgi24c,qҊz[+[’d %V)T2[I{mbŌG^#zʐh)S?B޻rI%?gwVSjp+<Ґn zD䘌8෌g3fh8WχFBDU(?/^$۠;Zvh*j-A,pͦrm3Pw lBaH~H=uԫ?]{O& 6}*hwך|]3SѬI_Rx[ }se2J ap@ xTVUã/otnshu+8өq:PM \[iv6?iO75>Z8m5kLGWEQ*BѕV}0C<*TOO\Agf=@ ּx~UͿ.N|e1ghvn*jZ5%LmuP8 OZťT#+ KY8QOAol=,tHI!5 ipy-%] O)?MkSJ>oz=aJcb<:P(*"jVXtȓ/cͿ6'مI?/1smP)CPkN5>fmLuF-zf|EB=KVXJS4Nt$hٿxnGlaCW̟CГg=;>1G QZIunN+O$h5]W"zB״J ܿq;=(70<ԆzJZ ]f&2T+(F3Con-m7njH: w hMiǏAWWoN妇5ȥ:r|sT f6Vy>ΗY&m~MՌu͑ XpۋGQUnߞ7i7J'#(ҥe{ݓrNO hMh4k^bKgU62NOQV5|@/A|X. ϱw d}1.lz/1S56e.XS]5ܘTUՐ8XϨ3SnioyF[X,X=m$W+ğ"om+Ja7kŎFw50HѪLu\gп}𽛿h759|%ln{uKv6b\=m2@10]|,&y;i`-Lp# >*āc'KwV?2H;"FBAanM?Vc= Me;k6pa]OY_5]72%"ɘGA9 J.< [ޞf{Y.xmn QV"cԁo=ͤxN\Y"F*X!ݵR+-J-ט[vl~868,]{K,']csx3n:̆h&YbdǷZ7^"}H]VcW1: sdVV\ˆ.TӨ|1 vU`B +=} 7KU{>juY79mNغ\LxwՍY(Kӭ0$TV;c?a({%G+N$k"sօY]@R 7Fpuj۳+yW'az_+{~bT1fqG5!TPIM !C76gSO7ΩuK3U$jEnl7qw=c%p "@2. aNSƁz,uwtLk1_쌂Ŷp ^ #Y< ?UL -Tӻig?Kv<>wH$QE q@m!".TW'}+Ob=}v7)&>vnP=$l8*4ǝ+Vlc+^瞗hj-ٗXiTˋn,i 먷}r c_) Rph<ٿ ORڷ=`4{*F .JC/gLbcllTFR*Ǻ 8&+pQ! yyPvk]uxT)zGHͿ[HŲxQؿ-Zz{/pr䤩߻yTvG[$a_ENCLt4I:tobmelH-NjxXRz;O-s,4|`(T׸Uc°Xgo$j,e-,JGc/m'#@Ԍ犨SHqZ>㕨L=(#oy˻T^\=zMAuVU'QJؤft2Hov6{ы 2~CMc6 ?k7 f9z&2![Pd(YsD_פ>頊CW4>ck[']9|Ћ}_ټk(7uVN{Tf) 1_dcH6ҿ՜ 9nA6[J4gHԊyn&SRդKWbϕ:L@|gL>ɏ+K ڛsKK41bw)#O%xTZ_A\ydH AQtQ89ӫ=/0Ϟ]bW=ëRdjne) +--Fᢏ-zA%TxYk+M)5x 㤕P({H<ѥ3JLk`}r8ӇGmnm7oWoz|=+/Qv\™Z|u+GI&K ]AOF>h!)sh=k ,MM ^[hc ,mi\Sq7+ن韓h Şj1>7?%)R,+F]* ʡI["l[~) y"fR|SUϨ|ՄRM HBP}̒?nOFab{ ?Y÷rU~pb%7WUEC75mmΙ# rNnoo>T5 ECqk;&j0MON=sk|l$*0M[jm]9ǃْPvno98m_|ciq$"D@/y4c>"#*<"@8i.Eդui].4J, hHφX %ӢaNvƞonoxKGer+ǵ([&q3UbSώzSI:nMI6l^a /u\xZ̜$Wlwda'ڵ!(DYIJjާK#Oݴ&/7xkcyߍ2#;gifؒoPg6H6qBJ)UҽڏhzGkM 3A1m:xh?WKSQkfRvik}M&PW= I *0d`ؓGNxq:'Yp#ދemMڽ}$K%GZbi-24y?0>s2RG"IbE>X:2w^_-/b5B0$- kJ289ʪͱ/XujnCS{&!N'mŃ*cTA;aQ[ p+GGċk,Z)f:a4j"Np½- hv^ iuoU5gXl}Qccj.ԢIP1*y&[oMVI^@$騍s^$cCDN!.Pqlj?g.nv=-oH]05F}`a; tMAC '#vL}}MZR2b"{|捾øujO+Ѝ&uPעt>hY#V/T$ Noxm: ,bmUD̜`ݡh]OS%e9DRdtgTVH{JI"$B;~gÍ(I!XqHFk^/{l]{/SÓnڽ [szSc>ruUyXL5TzI29Cwv[o֚ 7|H FP TMrܖ/ C$]"+_Thz&{V|-֛3Uvh׮(w-_Rd)]Ih橃vTҴbJO*ѸyrElw;U[{h@"DjIZ0*=lg[O2?9@YX \][˸ ="uC(xůѸec163H>i]sҏ) h\/S;xmn H77tnܻ,d}qi!k5F&6_$A/e曭`oV9Ooc,~9%yN#AG[4;>ymE'1ݱWXYxQD\o\Tg?x v6&3jz.OiϹ8F5q0WKR$kn7m}U,,Gm-^Bed:J%EOy'|L;~4_=&xAҀ;4ǂPvȬE66գSWW]-n7 Q ǟɴo{}BBkP¤+iΚ G:sa%0(Գ] |T)Cp&M_ Mї948i9-ùIemEW䫤tq=%UNu &"j9hO!ߖ7[ d#Im`Eo 4k3~(-?sRh~@UvLؕS;D8%J,QģX)EfG4 (?椵OWIK=f[X$?i]84'Q[aiNSA'X-+8oEj? A}QA ÛlgGW=҅9|ɯY-R)J^F*fUFڴ ޣڡ bON2Kqi.iaOTʽ!H(5H%/-KJNEO7ͭ/x4?;vnf1Xf,OSOXM+*ؓ*n4o>Q8t7 o1p7DlnTaTyȼ&QX?&8;ZJMH'=V5N쟏45U5F,;eTyjJS,5b&tP$I`Bf7]Oc@}jCik0*Si[ۚMj*Q-NQWrchW b顣hLnC#E5i-@i }si+x5du3wV"JAЎlF,PJY9]dXbJ?':XP-YjPkϿG͎b7<8jԮA_cJڜ&T$hjye-pY]uC(&.ƥu&>{MӞw{].VHsPkp+SO!_[M:zn ==]^G0٬-fXZF2TzI6y``D%~em"Sҵ'`蛝9f͏pu#=;KH(X2 l(ht>쿃 7%w[O[no3hGTK%BO>ԟV\۩xZ*sGSwDġ|x`gilH WRHǕuܣV "׸LTTYWbf'SEK__O)ݻAUP`q5BfT&+H.Cߺ[x.Zڬ\ke (V Q*ӏCC0nW{5&dHTi Ilj@Oͽql}-UqjPrTSC"K ! syhd>{5U-\o(ڛh.H4t)CcQǁ蟍=ǝg!qt>|^5W㔻G-uM->8mlMNgH))V?#F0Vb .UM$#Yi*JI Wv۶_ݬ2H0hfg Aݩph=ov;kS27ff1$le+FLc(\n,#!@HUV!{FL+Bi+c ȱbWsW!W@h߅]}Wtm#t`sSЮ^ʟmP)29hRz95TK{놸"\O1>>m4LwNN>S ^L[ΗvCI{]蠓g6*|GkT=;U"5+v}aܶgI7&#adb8.>!]/@{JՁ>>Żsw]lo} x|f@MT1f'VUMqлOw}ؽR-Vꒃ(l#>x #KTDBI'^ x, 4&:5}˙v;gy6XăC $VD/? /(2xl~h{4qeނ]G +,ۏ5\Th3#@h6}˒_)joR$+HTD:9.n}}j Ɏ@u]47r4>tv7ʰ>G51elݍAEQRftTTI"m~Q]KU,K;-kesJTsE:>ބA)X@C4PNukn;`sIQU ڟvcfCLc )U,#I ]>;'jʲ@ef%\kͮ$EXҴUf'{kt XpZ%,;P ;r~uǀ*3C'7卫&iJ(|,v-rˊvCAaid)aildw%瘂i槱SnղA 2ym^b_T%F7v#xXW#'q%J)"Gqhwzj:BAm=@K ?H ׈?|>変2m(G oϷB+JbU 燞:E J]d@-SU1ӷ6rM_*ZOY$G?)z S^/gФW Օw"h]nS)Q>?$oj[`dYv>Y%z4kj@Ƣ<:e3t|(Ze)@}'ˎhduٔZ{x㈨?t \@vbF8?goVvVeSl^n :*+hIj.6~E&z)3J t*E|Qu}L TX_":cYu Nס@\zvvɹhq[|v+AMfm,?gATM4 H:qye1AT/p,0n4Qzp0:/1[Sdfjدia{E݋ϊ2㦆Y*^2x!RZ\py~{ UT<Fq^'k[9ߢRc$3!t'&p:CjG UI]$/ PWPRUZxѣH3*]:nVgZqa#INͺ[,qe"3-  P,2;Aiռ|ܝ+hm _2In|AkғU|P%UeLɞ|;ѕڛTvdԷ;~ͶT.g* DmJj88=\'ΚxlmVWwo}Ӏ}nG/J|͵QH3GU xՕasMטy~!F4*Е*54)߳){YfmA@=C(Mrē^;>w2d6eNږl&uJ盪ybI"8RV[9sxAmwy6V]:|jqSƝ7ɻKmorwhtPB~!MkQ_1]~|6_x]6Ly6;san7]_RE vN 7@G{aqXڙYN*\[sCG$LȫO#f!t+j=`د}chgXT(HU$ k~/omm;wdޟ5*ecfrUT69/oF;Fsl睳.X\4BZ)Ln4s]{M2YTT"5T$Tb?8t~/SnX6dtY\zT'Ir:ŧFPBKhܻk{A23P,+\?D~qkk) ǩ@Е N0G3Ǫٳ(N* nzT,\3@2 TG rˤ #Ďd1n.",e< ֮3FSJ = CV)Y䩔EgHm#gumo3 'jT-Px'{oʀֺkA],0I5A閺#R;N4 5DFwXP/F{X@ Rtf(ԧAziE^X8LW,kVKpAfn\5b#Kc Ӧ:ܜt-MAH" kiRX(Uj" kѭ- |5\N~"Soo:jaP?oKW= t Hd8,kWcc>ۚ4}xt"C~m Ȁ q YnD+i⨀+IDF 9/o$~{3&zh0j@OICFRKB7ق R rtYInmohvWN"#Ckb4Q 3N<OLkUl6s+di5Hc1J7P|oda[~QKq_Ie.v50s=>G% <l<nbkz5ܹ: 5RDy)96kugIiQԕ5vhUDϡ=몝ӇdD+=+% Zqd8):!'is`[+j?g#UgL+P `ny>]Hfܭ_P2H;Lk M^ӛ!DۮKV`IFbQoޡeOsqWabuc^ݘ84ŅQeiJu'JH~&&ۻX.X/mGԆ22H$"udWs%L,!RYqR5JtV{ٳ;>!vnF9wVJ5ylIS,n~J X*#_iaS !n?0HdO@ۓ[+ƴBZtJ 5R*1ֺ̿g|dݙ |L *O]%|9tZzcU ?v4jioR{GVR=ح'70 (ͱJ 5sdE5L@sJU)Z`gנ\l=du"A(Jy0Mc( o=,0c?^ᵆ)O}~^OJqټee6v֛Z0e}=%%GRSd19:rĭF 1^U$_oV0X%rpzZe?ml!cͼMHY^jF^X uy8Z*t*$㩧1GQ WMԟak0HufC?} ^7Yw3EBN]|L6;¡4 G-,1s)S(MM( '@qg/5~ݧ{VGuiew670Vb Ū& Y[ݵn6r񲢯{4c%{ۅ*e~3V=MMե}f[᤭.6l8zƖ[lqh/$̳!,AgI%PqIo6t7p0 T*MIZpm=aI;sώMw 6|@1!TSWPRm}&mPʥ W2 sѲPiU@S;7pa2swtu;s`ۣm`t4KWX޴.#[YdUIR' 20dwW#\YXZ$q\k54Gr!Pz_?>$VaVSͧϏmQ*vF>s-fFB*W'MQNo2lݎey`\f񒆎RctrחDD @ 1e,Iנ 0݇1պ׳=4y: u*6چwx骩i: :a^V%}[̶R5yEpMx]&Mrnsf1b 0I99XoM_2; \nLAUecVW׈Ꮄ}%T6bH`( #?>^[ߟpn >1@Gp > ChoevGc.;G}߳{>ۛ6]&;+xIitO C{k7gwIOu)ϧQ{YloQGG>Tv>Ω$moOaF'T>g3UIQD}jJ˖EU t'G[xikRS^B|P6r)n]\rv>R#I F Wn{G;d55DY%U;TcieDט)b4I*MH7{g(A-@s@T5i@+MÓby~PUC[;n퍩OY kT8-$0scV|R \Fu#;{䲺ܷxbܧvwfr !T|!@HBnٯPy$*;%1=ƀ{wsRw4I;449*,'ݷ34ZIK ڥdf:Kk1>p3uE" J<4|۞ML\me:X-}C<{$cV:Ʈq^8gޜz9{.8#+?+NUce$3X~,-$FLg_\'gF*]rjOSF"8J"h"v }HN<+`is8S\@=hGJ0tlںrL~FIpnbT{V!KQ*9kKxI4#/oP袋xbL?DC%N#i_lX}o\&餬G﹮ ܏P'HiO#yDέ[=EVGMvXF =5t&=1 iqP)ttΛv\/$)N3U~}*6լgMlf⤠,χ[>ӯ-%ܖCkҕ8cynsi *Vz:߇˓}ocoyY6hGW3UNhF[=WiBH R=>2ɸej.T|| :ݿW}-Gi1qA_(q}Q*䞂4d jڍS6-k9=$Jd<{-Ɩ#Ò ! LP?3fn&p4hy%R8; lԟm[/ǻ oihMI4O|ςX=L՘&R$1I%$ AΉBG_l OC{Ϻm1*=A.~3ީ=AvXu(!h:\ GHH&Cu-Ԉ ey^GH8)U9$/ {I@F©"Z0aFS @˯}Ċ zevv4yX$X=cLKAEhx)'Is6(e_ԝNߞI?KSn23M%Qiv+O2zCX8)wGo*\rdੲ"A'RF?N|}YfVY-GLkы%(XC% iʴR3QJ%nvoF5.gpaN:(D8{jɦWS~C"t. QW2=@c yWN7Tj|vE"Ʒܲ|K/96w[{EF4.^RWZ V5oqkw T=ޞ}v^`DRO4??\cH= |X`ij]#p:FP9݇iX:)Mw,+GVn=.i`eQd!Si#&atכ εh?5=Hvy;V!EX8#sڙR2$ SJ=2~}[C~]OOip?:@dadcx[_l•k_^=9nxhTiSϠO[leaU0K%)e3奙* Vsqͫt{KU*r[ȃg,0eIP(ɀ'kxiSghCkU2D#\5b4Сb\>;X]M;R 8_^p9O|nƒtxTʱTU!QA ާ*:\}h@WğHm7P~ukEE:z~b764 1׫ޙ_#Т֢bU^>vݻk-f?Q>m؟7e5%D̂ZYcqF+RoGnggۘSorxT' SҞ]\W}}K~Xw38lZ&uY/}WkaG:JX5tKbk$&Zy|Hk6nb>TiNjWˎ7'^C{)+2Գ"5DZ&q 6MHHn _JvgyiIU A ֌8҂Yv;tːF&+Q y׿$F=mgYn<{~bs;{mr=A,uTH9-^?w`j#ⲘMMUGBJnR\jAF8pG"\{d>4IŌDH85UQ6h=.}Ԕ}q}w6[[؝19 (M~Opcqg%G)?yKk{u32D8>wOlg/lfTe+SN%\t9UM.e \yԢ/̪)Q-s:L{E1ZpSV}~5bSXS?ݥ(ûϨǘ1)RShS0@gDf1˨u#tgaO>kt&um8ʩ1jM :"0{+ݾp_EԤ~ϰVf/"$& r7nz f((l#OUSl'#yCԖ|G?>vˈJiȏUݸ{y*05+zY\#0G'n嬫5FT/p'dש[73rQKOGSi2##ҩO$=yNQkno3 >m]eMq !vRWid庼2ꍸopO;$U;GhK_2$)=֥SZ>ucc&rhZS<.ſ>}bv6=37یvQ#™Ru]ok"XRBK}=2v,M? +#-"1zr#yj y<9C/r:Bj3/?ak7q2?>gaa2`UzsOQwg_WiI388B»)MsnevYsŔ2P9"b]-h  G #Ђ^.ןyA_$;{kqqYڱLO- ǵV"Oq]|E~}*umwi<_F)vc_ "%+i 3E%I7fGPm{yu,H ChyrYcUs埳K<l2[#R I=x<FoӤqC4gՕ*S>vI ܪ>t :tؤ@ǬoM_QQO,lR<ۓ׷GBz"ZA݋ٗsait:XH;yD760a4@ԍ&*9ߟ2S%mϳ+=t`zҀ~6Ŀ74Y ԲU)m$եj6S֣37/F Ex>sO zIJjըk@_b[= J&_>kUc?oD,V5vM##XR$-IگQfSg6߭kcn=~ߟ#֡L<Dm0$uvr}顽#ԣs{tsN/jWS,Cv:ΠA!Ը8s5kTa=WE2Qݘbo6?m!$-+Nv!7`zӥ&w+,*̀&ZC\6c8X3 QQC``z2-WDGZ_xmHoHr׆t5QJtvkĕ">u:X\l}6 BӇKaO ?/!xh /ǝP&pYAԿ`A$R|^_#Jۭ2 FUS|:?Jz]񄂆l9UUK2̀!?㣛Qg](VGxip?6M͊l.R# OЯٌ{EYd/ Oe_ akS|t g~MյQj u ?PAoʃ@3yCjTG;oy1$5 d`S?>h 8ˣ-4Lǁo?pϡv7ݵጥie1$$Ah0\>0K=<=GѹlbdeOVPK farڭqv?A&mZ чIDFZhQURi}A)^4zٳM)d^8OIWyt/o XX0y%'mc¦ˣ=P-A=.6|xZI?ĪV"BJE՜p1u(X$ +!9gs18'zL"eH;4p*FbuxlO>M_TK\3`Ok ]b>p_43iQI]y`(E:D[m$: .5pCU7Pп@HVqZ t;" ":0P}&~}G3SCx%q/~}MvU Q+XkB_z#jOyS7v0GQ& *9GM6bhˢI剘㻍k-4d9@ƣ^} CZtYr|̵{~tƪ^ֱPloR霎P~ӇuORx@Mi^%GϹOEM>U}Dox|?nzck ;k76rhiS_JވB>!U\iL:5rc<;D_r g|R-_&iQ 㕾}-D_}PP<g0HHM(<,Ӈ.Qւ Tr)~}0~Y*pCn_k/΀F; >idX_ǰ^&xj(򯯟\Ĺ1Q#T CJԀZtwc^gEzg>|T}kImVI25tq?c]Yz8\0?uOiRE 1<-2[3qF~ue<,P9ϣ @1x2{OxWԕY@P?KS +j:~_i;ūO lʚM??5A*5]mQ_-YoΪyAte/Ɓ> Ϩ}u5-StEO\ƽygstJ[z<>oǶWƧwO\f-M?Г65c'|@:ansi-escapes-4.3.1/index.d.ts000066400000000000000000000127051362673571200160140ustar00rootroot00000000000000/// import {LiteralUnion} from 'type-fest'; declare namespace ansiEscapes { interface ImageOptions { /** The width is given as a number followed by a unit, or the word `'auto'`. - `N`: N character cells. - `Npx`: N pixels. - `N%`: N percent of the session's width or height. - `auto`: The image's inherent size will be used to determine an appropriate dimension. */ readonly width?: LiteralUnion<'auto', number | string>; /** The height is given as a number followed by a unit, or the word `'auto'`. - `N`: N character cells. - `Npx`: N pixels. - `N%`: N percent of the session's width or height. - `auto`: The image's inherent size will be used to determine an appropriate dimension. */ readonly height?: LiteralUnion<'auto', number | string>; readonly preserveAspectRatio?: boolean; } interface AnnotationOptions { /** Nonzero number of columns to annotate. Default: The remainder of the line. */ readonly length?: number; /** Starting X coordinate. Must be used with `y` and `length`. Default: The cursor position */ readonly x?: number; /** Starting Y coordinate. Must be used with `x` and `length`. Default: Cursor position. */ readonly y?: number; /** Create a "hidden" annotation. Annotations created this way can be shown using the "Show Annotations" iTerm command. */ readonly isHidden?: boolean; } } declare const ansiEscapes: { /** Set the absolute position of the cursor. `x0` `y0` is the top left of the screen. */ cursorTo(x: number, y?: number): string; /** Set the position of the cursor relative to its current position. */ cursorMove(x: number, y?: number): string; /** Move cursor up a specific amount of rows. @param count - Count of rows to move up. Default is `1`. */ cursorUp(count?: number): string; /** Move cursor down a specific amount of rows. @param count - Count of rows to move down. Default is `1`. */ cursorDown(count?: number): string; /** Move cursor forward a specific amount of rows. @param count - Count of rows to move forward. Default is `1`. */ cursorForward(count?: number): string; /** Move cursor backward a specific amount of rows. @param count - Count of rows to move backward. Default is `1`. */ cursorBackward(count?: number): string; /** Move cursor to the left side. */ cursorLeft: string; /** Save cursor position. */ cursorSavePosition: string; /** Restore saved cursor position. */ cursorRestorePosition: string; /** Get cursor position. */ cursorGetPosition: string; /** Move cursor to the next line. */ cursorNextLine: string; /** Move cursor to the previous line. */ cursorPrevLine: string; /** Hide cursor. */ cursorHide: string; /** Show cursor. */ cursorShow: string; /** Erase from the current cursor position up the specified amount of rows. @param count - Count of rows to erase. */ eraseLines(count: number): string; /** Erase from the current cursor position to the end of the current line. */ eraseEndLine: string; /** Erase from the current cursor position to the start of the current line. */ eraseStartLine: string; /** Erase the entire current line. */ eraseLine: string; /** Erase the screen from the current line down to the bottom of the screen. */ eraseDown: string; /** Erase the screen from the current line up to the top of the screen. */ eraseUp: string; /** Erase the screen and move the cursor the top left position. */ eraseScreen: string; /** Scroll display up one line. */ scrollUp: string; /** Scroll display down one line. */ scrollDown: string; /** Clear the terminal screen. (Viewport) */ clearScreen: string; /** Clear the whole terminal, including scrollback buffer. (Not just the visible part of it) */ clearTerminal: string; /** Output a beeping sound. */ beep: string; /** Create a clickable link. [Supported terminals.](https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda) Use [`supports-hyperlinks`](https://github.com/jamestalmage/supports-hyperlinks) to detect link support. */ link(text: string, url: string): string; /** Display an image. _Currently only supported on iTerm2 >=3_ See [term-img](https://github.com/sindresorhus/term-img) for a higher-level module. @param buffer - Buffer of an image. Usually read in with `fs.readFile()`. */ image(buffer: Buffer, options?: ansiEscapes.ImageOptions): string; iTerm: { /** [Inform iTerm2](https://www.iterm2.com/documentation-escape-codes.html) of the current directory to help semantic history and enable [Cmd-clicking relative paths](https://coderwall.com/p/b7e82q/quickly-open-files-in-iterm-with-cmd-click). @param cwd - Current directory. Default: `process.cwd()`. */ setCwd(cwd?: string): string; /** An annotation looks like this when shown: ![screenshot of iTerm annotation](https://user-images.githubusercontent.com/924465/64382136-b60ac700-cfe9-11e9-8a35-9682e8dc4b72.png) See the [iTerm Proprietary Escape Codes documentation](https://iterm2.com/documentation-escape-codes.html) for more information. @param message - The message to display within the annotation. The `|` character is disallowed and will be stripped. @returns An escape code which will create an annotation when printed in iTerm2. */ annotation(message: string, options?: ansiEscapes.AnnotationOptions): string; }; // TODO: remove this in the next major version default: typeof ansiEscapes; }; export = ansiEscapes; ansi-escapes-4.3.1/index.js000066400000000000000000000072461362673571200155640ustar00rootroot00000000000000'use strict'; const ansiEscapes = module.exports; // TODO: remove this in the next major version module.exports.default = ansiEscapes; const ESC = '\u001B['; const OSC = '\u001B]'; const BEL = '\u0007'; const SEP = ';'; const isTerminalApp = process.env.TERM_PROGRAM === 'Apple_Terminal'; ansiEscapes.cursorTo = (x, y) => { if (typeof x !== 'number') { throw new TypeError('The `x` argument is required'); } if (typeof y !== 'number') { return ESC + (x + 1) + 'G'; } return ESC + (y + 1) + ';' + (x + 1) + 'H'; }; ansiEscapes.cursorMove = (x, y) => { if (typeof x !== 'number') { throw new TypeError('The `x` argument is required'); } let ret = ''; if (x < 0) { ret += ESC + (-x) + 'D'; } else if (x > 0) { ret += ESC + x + 'C'; } if (y < 0) { ret += ESC + (-y) + 'A'; } else if (y > 0) { ret += ESC + y + 'B'; } return ret; }; ansiEscapes.cursorUp = (count = 1) => ESC + count + 'A'; ansiEscapes.cursorDown = (count = 1) => ESC + count + 'B'; ansiEscapes.cursorForward = (count = 1) => ESC + count + 'C'; ansiEscapes.cursorBackward = (count = 1) => ESC + count + 'D'; ansiEscapes.cursorLeft = ESC + 'G'; ansiEscapes.cursorSavePosition = isTerminalApp ? '\u001B7' : ESC + 's'; ansiEscapes.cursorRestorePosition = isTerminalApp ? '\u001B8' : ESC + 'u'; ansiEscapes.cursorGetPosition = ESC + '6n'; ansiEscapes.cursorNextLine = ESC + 'E'; ansiEscapes.cursorPrevLine = ESC + 'F'; ansiEscapes.cursorHide = ESC + '?25l'; ansiEscapes.cursorShow = ESC + '?25h'; ansiEscapes.eraseLines = count => { let clear = ''; for (let i = 0; i < count; i++) { clear += ansiEscapes.eraseLine + (i < count - 1 ? ansiEscapes.cursorUp() : ''); } if (count) { clear += ansiEscapes.cursorLeft; } return clear; }; ansiEscapes.eraseEndLine = ESC + 'K'; ansiEscapes.eraseStartLine = ESC + '1K'; ansiEscapes.eraseLine = ESC + '2K'; ansiEscapes.eraseDown = ESC + 'J'; ansiEscapes.eraseUp = ESC + '1J'; ansiEscapes.eraseScreen = ESC + '2J'; ansiEscapes.scrollUp = ESC + 'S'; ansiEscapes.scrollDown = ESC + 'T'; ansiEscapes.clearScreen = '\u001Bc'; ansiEscapes.clearTerminal = process.platform === 'win32' ? `${ansiEscapes.eraseScreen}${ESC}0f` : // 1. Erases the screen (Only done in case `2` is not supported) // 2. Erases the whole screen including scrollback buffer // 3. Moves cursor to the top-left position // More info: https://www.real-world-systems.com/docs/ANSIcode.html `${ansiEscapes.eraseScreen}${ESC}3J${ESC}H`; ansiEscapes.beep = BEL; ansiEscapes.link = (text, url) => { return [ OSC, '8', SEP, SEP, url, BEL, text, OSC, '8', SEP, SEP, BEL ].join(''); }; ansiEscapes.image = (buffer, options = {}) => { let ret = `${OSC}1337;File=inline=1`; if (options.width) { ret += `;width=${options.width}`; } if (options.height) { ret += `;height=${options.height}`; } if (options.preserveAspectRatio === false) { ret += ';preserveAspectRatio=0'; } return ret + ':' + buffer.toString('base64') + BEL; }; ansiEscapes.iTerm = { setCwd: (cwd = process.cwd()) => `${OSC}50;CurrentDir=${cwd}${BEL}`, annotation: (message, options = {}) => { let ret = `${OSC}1337;`; const hasX = typeof options.x !== 'undefined'; const hasY = typeof options.y !== 'undefined'; if ((hasX || hasY) && !(hasX && hasY && typeof options.length !== 'undefined')) { throw new Error('`x`, `y` and `length` must be defined when `x` or `y` is defined'); } message = message.replace(/\|/g, ''); ret += options.isHidden ? 'AddHiddenAnnotation=' : 'AddAnnotation='; if (options.length > 0) { ret += (hasX ? [message, options.length, options.x, options.y] : [options.length, message]).join('|'); } else { ret += message; } return ret + BEL; } }; ansi-escapes-4.3.1/index.test-d.ts000066400000000000000000000043701362673571200167700ustar00rootroot00000000000000import {expectType} from 'tsd'; import ansiEscapes = require('.'); expectType(ansiEscapes.cursorTo(0)); expectType(ansiEscapes.cursorTo(0, 1)); expectType(ansiEscapes.cursorMove(0)); expectType(ansiEscapes.cursorMove(0, 1)); expectType(ansiEscapes.cursorUp()); expectType(ansiEscapes.cursorUp(1)); expectType(ansiEscapes.cursorDown()); expectType(ansiEscapes.cursorDown(1)); expectType(ansiEscapes.cursorForward()); expectType(ansiEscapes.cursorForward(1)); expectType(ansiEscapes.cursorBackward()); expectType(ansiEscapes.cursorBackward(1)); expectType(ansiEscapes.cursorLeft); expectType(ansiEscapes.cursorSavePosition); expectType(ansiEscapes.cursorRestorePosition); expectType(ansiEscapes.cursorGetPosition); expectType(ansiEscapes.cursorNextLine); expectType(ansiEscapes.cursorPrevLine); expectType(ansiEscapes.cursorHide); expectType(ansiEscapes.cursorShow); expectType(ansiEscapes.eraseLines(2)); expectType(ansiEscapes.eraseEndLine); expectType(ansiEscapes.eraseStartLine); expectType(ansiEscapes.eraseLine); expectType(ansiEscapes.eraseDown); expectType(ansiEscapes.eraseUp); expectType(ansiEscapes.eraseScreen); expectType(ansiEscapes.scrollUp); expectType(ansiEscapes.scrollDown); expectType(ansiEscapes.clearScreen); expectType(ansiEscapes.clearTerminal); expectType(ansiEscapes.beep); expectType(ansiEscapes.link('foo', 'https://foo.bar')); expectType(ansiEscapes.image(new Buffer(1))); expectType(ansiEscapes.image(new Buffer(1), {width: 1})); expectType(ansiEscapes.image(new Buffer(1), {width: '1px'})); expectType(ansiEscapes.image(new Buffer(1), {width: 'auto'})); expectType(ansiEscapes.image(new Buffer(1), {height: 1})); expectType(ansiEscapes.image(new Buffer(1), {height: '1px'})); expectType(ansiEscapes.image(new Buffer(1), {height: 'auto'})); expectType( ansiEscapes.image(new Buffer(1), {preserveAspectRatio: false}) ); expectType(ansiEscapes.iTerm.setCwd('/foo/bar')); expectType(ansiEscapes.iTerm.annotation('foo bar')); ansi-escapes-4.3.1/license000066400000000000000000000021351362673571200154540ustar00rootroot00000000000000MIT License Copyright (c) Sindre Sorhus (https://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-escapes-4.3.1/package.json000066400000000000000000000016411362673571200163760ustar00rootroot00000000000000{ "name": "ansi-escapes", "version": "4.3.1", "description": "ANSI escape codes for manipulating the terminal", "license": "MIT", "repository": "sindresorhus/ansi-escapes", "funding": "https://github.com/sponsors/sindresorhus", "author": { "name": "Sindre Sorhus", "email": "sindresorhus@gmail.com", "url": "https://sindresorhus.com" }, "engines": { "node": ">=8" }, "scripts": { "test": "xo && ava && tsd" }, "files": [ "index.js", "index.d.ts" ], "keywords": [ "ansi", "terminal", "console", "cli", "string", "tty", "escape", "escapes", "formatting", "shell", "xterm", "log", "logging", "command-line", "text", "vt100", "sequence", "control", "code", "codes", "cursor", "iterm", "iterm2" ], "dependencies": { "type-fest": "^0.11.0" }, "devDependencies": { "@types/node": "^13.7.7", "ava": "^2.1.0", "tsd": "^0.11.0", "xo": "^0.25.3" } } ansi-escapes-4.3.1/readme.md000066400000000000000000000120311362673571200156620ustar00rootroot00000000000000# ansi-escapes [![Build Status](https://travis-ci.org/sindresorhus/ansi-escapes.svg?branch=master)](https://travis-ci.org/sindresorhus/ansi-escapes) > [ANSI escape codes](http://www.termsys.demon.co.uk/vtansi.htm) for manipulating the terminal ## Install ``` $ npm install ansi-escapes ``` ## Usage ```js const ansiEscapes = require('ansi-escapes'); // Moves the cursor two rows up and to the left process.stdout.write(ansiEscapes.cursorUp(2) + ansiEscapes.cursorLeft); //=> '\u001B[2A\u001B[1000D' ``` ## API ### cursorTo(x, y?) Set the absolute position of the cursor. `x0` `y0` is the top left of the screen. ### cursorMove(x, y?) Set the position of the cursor relative to its current position. ### cursorUp(count) Move cursor up a specific amount of rows. Default is `1`. ### cursorDown(count) Move cursor down a specific amount of rows. Default is `1`. ### cursorForward(count) Move cursor forward a specific amount of columns. Default is `1`. ### cursorBackward(count) Move cursor backward a specific amount of columns. Default is `1`. ### cursorLeft Move cursor to the left side. ### cursorSavePosition Save cursor position. ### cursorRestorePosition Restore saved cursor position. ### cursorGetPosition Get cursor position. ### cursorNextLine Move cursor to the next line. ### cursorPrevLine Move cursor to the previous line. ### cursorHide Hide cursor. ### cursorShow Show cursor. ### eraseLines(count) Erase from the current cursor position up the specified amount of rows. ### eraseEndLine Erase from the current cursor position to the end of the current line. ### eraseStartLine Erase from the current cursor position to the start of the current line. ### eraseLine Erase the entire current line. ### eraseDown Erase the screen from the current line down to the bottom of the screen. ### eraseUp Erase the screen from the current line up to the top of the screen. ### eraseScreen Erase the screen and move the cursor the top left position. ### scrollUp Scroll display up one line. ### scrollDown Scroll display down one line. ### clearScreen Clear the terminal screen. (Viewport) ### clearTerminal Clear the whole terminal, including scrollback buffer. (Not just the visible part of it) ### beep Output a beeping sound. ### link(text, url) Create a clickable link. [Supported terminals.](https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda) Use [`supports-hyperlinks`](https://github.com/jamestalmage/supports-hyperlinks) to detect link support. ### image(filePath, options?) Display an image. *Currently only supported on iTerm2 >=3* See [term-img](https://github.com/sindresorhus/term-img) for a higher-level module. #### input Type: `Buffer` Buffer of an image. Usually read in with `fs.readFile()`. #### options Type: `object` ##### width ##### height Type: `string | number` The width and height are given as a number followed by a unit, or the word "auto". - `N`: N character cells. - `Npx`: N pixels. - `N%`: N percent of the session's width or height. - `auto`: The image's inherent size will be used to determine an appropriate dimension. ##### preserveAspectRatio Type: `boolean`\ Default: `true` ### iTerm.setCwd(path?) Type: `string`\ Default: `process.cwd()` [Inform iTerm2](https://www.iterm2.com/documentation-escape-codes.html) of the current directory to help semantic history and enable [Cmd-clicking relative paths](https://coderwall.com/p/b7e82q/quickly-open-files-in-iterm-with-cmd-click). ### iTerm.annotation(message, options?) Creates an escape code to display an "annotation" in iTerm2. An annotation looks like this when shown: See the [iTerm Proprietary Escape Codes documentation](https://iterm2.com/documentation-escape-codes.html) for more information. #### message Type: `string` The message to display within the annotation. The `|` character is disallowed and will be stripped. #### options Type: `object` ##### length Type: `number`\ Default: The remainder of the line Nonzero number of columns to annotate. ##### x Type: `number`\ Default: Cursor position Starting X coordinate. Must be used with `y` and `length`. ##### y Type: `number`\ Default: Cursor position Starting Y coordinate. Must be used with `x` and `length`. ##### isHidden Type: `boolean`\ Default: `false` Create a "hidden" annotation. Annotations created this way can be shown using the "Show Annotations" iTerm command. ## Related - [ansi-styles](https://github.com/chalk/ansi-styles) - ANSI escape codes for styling strings in the terminal ---
Get professional support for this package with a Tidelift subscription
Tidelift helps make open source sustainable for maintainers while giving companies
assurances about security, maintenance, and licensing for their dependencies.
ansi-escapes-4.3.1/test.js000066400000000000000000000003361362673571200154250ustar00rootroot00000000000000import test from 'ava'; import ansiEscapes from '.'; test('main', t => { t.true(Object.keys(ansiEscapes).length > 0); t.is(typeof ansiEscapes.cursorTo, 'function'); t.is(ansiEscapes.cursorTo(2, 2), '\u001B[3;3H'); });