From 12c35bd41ff40ff0c1d455c7b19982d1af37c25a Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Tue, 14 Nov 2017 22:24:26 -0500 Subject: [PATCH 01/35] refactoring to support both workspaces and single projects --- README.md | 18 +++ chest-temp.png | Bin 0 -> 62848 bytes src/Project.ts | 17 +++ src/RootProject.ts | 33 ++++ src/Workspace.ts | 13 ++ src/actions/index.ts | 2 - src/cli.ts | 6 +- src/core/Files.ts | 105 +++++++++++++ src/core/Logger.ts | 38 +++++ src/core/Registry.ts | 15 ++ src/{shell.ts => core/UpdateScript.ts} | 36 ++++- .../packages.ts => core/actions/Packages.ts} | 0 .../typings.ts => core/actions/Typings.ts} | 0 src/core/actions/index.ts | 2 + src/core/index.ts | 7 + src/core/interfaces/Dictionary.ts | 3 + src/core/interfaces/NPM.ts | 20 +++ src/core/interfaces/Updater.ts | 9 ++ src/core/interfaces/Workspace.ts | 9 ++ src/core/interfaces/index.ts | 4 + src/files.ts | 141 ------------------ src/registry.ts | 54 ------- src/script.ts | 35 ----- 23 files changed, 327 insertions(+), 240 deletions(-) create mode 100644 README.md create mode 100644 chest-temp.png create mode 100644 src/Project.ts create mode 100644 src/RootProject.ts create mode 100644 src/Workspace.ts delete mode 100644 src/actions/index.ts create mode 100644 src/core/Files.ts create mode 100644 src/core/Logger.ts create mode 100644 src/core/Registry.ts rename src/{shell.ts => core/UpdateScript.ts} (60%) rename src/{actions/packages.ts => core/actions/Packages.ts} (100%) rename src/{actions/typings.ts => core/actions/Typings.ts} (100%) create mode 100644 src/core/actions/index.ts create mode 100644 src/core/index.ts create mode 100644 src/core/interfaces/Dictionary.ts create mode 100644 src/core/interfaces/NPM.ts create mode 100644 src/core/interfaces/Updater.ts create mode 100644 src/core/interfaces/Workspace.ts create mode 100644 src/core/interfaces/index.ts delete mode 100644 src/files.ts delete mode 100644 src/registry.ts delete mode 100644 src/script.ts diff --git a/README.md b/README.md new file mode 100644 index 0000000..086ccdc --- /dev/null +++ b/README.md @@ -0,0 +1,18 @@ +# @beard/chest + +

+ +

+ +# WTF + +It's a chest. With TypeScript inside. + +# License +© 2017 NativeCode Development + +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. diff --git a/chest-temp.png b/chest-temp.png new file mode 100644 index 0000000000000000000000000000000000000000..0757f22af8223f0836732352d7fa8f156777ce79 GIT binary patch literal 62848 zcmV(@K-RyBP)4Tx07!|Imj_f+Nf*cGl~fX1AOccCZ=w|G(rctj6>NkgB%#C*2r71DQGvCf zqJkA!5wWcWki~|*EP}l+sHiCGV!?*WH%S0p_bca{bLP$O+_`h-f9K7c^9BI5XpTgZ ziK+vTCC-(`g!r>2CMB~-oj?Up03EmkeGWHA;ujqq4qzE-|6bnR0EoQ3YA28N&;I{f zG|WP34BB!=7!*_$im@F0JNJSr<|I%G8~$X2P} z#S#21X6kTE4o5J|%3KtM94N|>WO8QxpUd&TOID_AXbw|YX+mjej67%gx@AlclQRwS zIdN)a6l6`v*F-#pznq^4Wuftd{vWtG0dUO#69AOP;{=95)`x5&%ZT?IWN(gCF&6rx z$@#*#L}h$bES(-R7$40SXGVq(#wiu@*+X2#&k2eh@<|f~vmwKGh&GCH*>Qt0&*g~{ zA|b0nzL%2`8#XxhdA=|pa(FITj9fE(=NQP!8OjASOOpo2DE%=Pp@HM6D;X`_O{Jbjvv&Cl}U2_V+Q@JC7IEK{#Y|VGemATf!vyt z7dtezHy3U;WiB{K=Zue5&WmeFa--vv+He*K2LT`uuz(EKR4^T+15s;FLk}402?iV> z1p>eac7v9o5s8W(F?_~?eDEhEKFAp!=dbAHgFI;eGHg{o?LeBMH%~Dl13ZD8h3nzo zxF;SCpT4j<;%>P6&^VUb(5%EDVjwY;7)-RDCMuBr5SInGFoR53r63Hpe3+G7gLp{$ zw>X3+gm%J1!gWFi;WkJBkD;IF9~pj&CK|RyfDRZncrd%v@3X@#plWB_ANPX#p>~{! z>j67_EX>3Y_kp=NL+iIy`*+%9L#iqE6qGW8;!Cmm(NEPz)p>Y~Jh$(4Ds`m}XA&^n z^W$s*-{r=GZP<^V*b?jjb{0EA@((9qx@4AABoOAZ{NQQLXR*cH(W6+7_71K9$j^S| z(ej3=IMWg4g>Sa(;{do9L!;oEjRVi1!%qNUy!&P|eGNZ>6#yJ*W2EE zVQ3sW1r?y#Xg*qqE<@L$Rp>6X9zB6xM6aVA=nJ$D1DFcN#EdaJ%nb{`qOfEv4U=N? zuwtwntHSnRP4G=$#X7Ja>?2OZ88{2KgZniUkH@)qHa-t8#Vha~cs+g!zlwL_z4%uG zouE&!C3q0ngoy+JVFsayP)^uRI7B!Nzo{<5J0g+DBw7+(;kTMZOefAJmJ&A-_Y#j2 z+lh~eeIyb|mt;%wB1Mrnq+C)FX+3Ed=@{t>sf+Z1tU@*-JCcLR$z(CPfLu=ANj^%x zLVil_r>IlRDISz43Xd|2vYb*)X`)=FbW!@L8dOWF7d4KWPF+Y{N8Lj`O}$5bqoSf> zqT;SHK}DppKxLiEK9zGSohlz`nlu|)0Btf&Mq5U!p&h5)roExl=@xWfdNMtizKmW= zKS_T;|DeiH9j(e%<*CkBtyHa7y`uV3jiP3*=BGAQEnlr%?SR^4wH|efx`ldxI!Aq; zdZqed^_%K_8Vn5wjVO&QjZ%%B8s{~hX_7Q8G=nsGnuVI%G*4|Lv!Yx1 zSY=yPSzWUxTDw_iSZ}m$vq5c~ZG<+JHkWNtTNhiA?MB=7QG`+Mqr{`CM%}cd+4Q8%vXD7`%L?4`@0UB4&xmP9GV_+h#xi23#qNxK z7v~?hJnnA1RlF>|B|$A=azbsw`^3P+vc!&wVcri&YNtD!>OiE5j-k#hyDQMD~ zNnMkjCl^h=F~xGq%qi!m>P^j@dSsf~G|sdGDTI{7l$|M`IZ>P{PG2fJbwg?|H-NjA z`-11oTg~g{d-2QoPt&~8%F><*yacNR-9jH>xv)nRAgU0(N)Junoc=x|Dx)T2ATu#@ zZx%T#CF`(QQ=B0_HQjLf%<1hCTS<|mBikc;O?Iy|Ou9V>$(fSVn5zYUvMpWy$>b#cu zrt=HucP$86uwx;0VaCGW3+xNZ3f?YCT+~!(P`IG*(N7^i)fK50NsDeS_FTMq3BE+M zq;;v&()CNf7W0ZPl-QS)mwYbemR|VT;pcTf4=hVt*1Ftf`KA@b72*{)R{E^mQKnIr zU-oEK#H#w$tkuP<->#Xq=6w0s^37|hYh`OY)`hQYTyM61#rn?`!iwva{*`+-=xs8TU2AK1>hD}$ht|pJx_3?9)wVlucjF$rJzMuO_m=Df`(*o`|C;jajs0Q! zTMoD#*mKbQ;D$qtL&fz-{jB=l24O=-V^U-L;qixCnmn5h{Wkiynr7qX$|KrGmLH`a zEj&7KEdN;Famn$X6M_?uTBfz!Jvs5@wNn#LwVn<;eeO)~nUiPz&K^7Gb*}lm$N9q- z+%7a+bh%i6$@$Wu-<^Ly)aue&f7$hNW1D+hQ~S8~qgQ;coVXfz^~^Q)wTssyueaZb zzj5p4s|l*;t#qXc6@aEc=l7`r>FfhK9fGL`(pj2 z>1){6djnYm0}_suqxcoTU`5l?0C-&k06hu*JG22nous^*DGH*zPbvufCsy9y6vYLA z8eah77XT0r|4}x=07y*$e31?e z^luy(_)-nU-Ui@!w(?FWFY-I+mN9Z_>v{=(EdK%wXK?p-N&+?j06+jqL_t(|0qnhb zkX_e(-+Aux_TC%a*jEA|xJcY7F0w>w8%dUIxs*tmnMz_i<0a0d;y>(}nx)EARc2y4 zc4UvHGE+*qX2z1^vT4Vnc2SZ^iWGN(BuD@R0b*YoOYhxpyYJpRpYQL!*L>aRZh#UQ zORgN?_1(@n_nhDP?dNyS_1u3+f3F~L+ifnlVb=AJuGwC>_miIuKJuA=8jg&N__K3! zo>D%a_o}U0=(S?s^K#q>!eW^3_x!ZnXhp{c2RFS!w)F26P=1WggxzJ|c>XW@y~37a z@49tK@V0 z(X9P9xUi?;`kT(tO6NA;cvtw@fAv4Q>+ZhCcXj9L4Vqr0C(WkytLZhpUa~d|1+JZo ztMiS=zw)ooUHUg)Oe*W0y+ijWo7wpWU38_%Vdt&odb<65HgevY_Vd|RyZq3b1v;m5 z*&+fo2k~7uTGw+nkydm-OgftdiRUDA3idDjyhQ%kJF5iF3VOc`ot1mwffSOKXV>kDPNQ#wtG%^at19{$B4x z|II&lyKa9s!{hnIrsp*ZO|JmLHRmEf@*=;dr^iK+=M5Hf)5p)xT-?5WJEQvcCnJzF zb>5SY{^<>KP4~e{VP>>dt>hvvD3%LFp8I~@OLJb5=94rHUAg2lqWLh5b7|rQ`GOZj zE_Y(${LwFb@4vfkDjJ{k{Ji4xzD zX$b3bAT8G%EH$`a^qrpuWas=rJ#Ux0Hg>_Lh8s9pb9W?(Thkzut4$X6J@tcJq1+d4 zympVDuM}O}iVEVO^eZSPML){H2hu1{wZ2!#pS@=7jo+&8Uek=-CAG;1PX2I@a|r}E z-)?`xk=k7mM4e7t;Q7u2N%j_Jn@4`lJ-+x9G`jsmb! zUCOWLWV5^}eFP5TR+cI}>70XrZlK}{0|mEXvN3t*buRP`T z4flE@8@A??Qkc)ta@X=*p%CVB3D^a^i@5+sk{lQuEd6CVHuki)Zr!}S^lkiOfPdoQ zKi|+(PXAwq;=?{XC6_O{-hs8QuYaw}m3kPtHc(f3F+Hu%&OGtz|M@QtoO|lqVc^9% z1~vd#zCb46#h%M)SRjS~Ac29vSkJfyZ*m%Es!@J}HFQ2oE?xH{Fw%mH3`|v;dr*7vhceq@xV8}r^OVq>bv&s{Y zX6ooGjn}^PzoirVe&{7hL#A9i0vp`0JYPOJmPQa)hFD6KlxwX^wC!h^A`cOlX1z>I-K=-$&=+T zFU#7#aoK%}FS^IYN!a!)7d%(mw8Q1n;>}|`b!A0$Iho+o6UM;&l_uTJ3{V#sYZMvp)}h8=GFwHI7{dP3^N+y2v-F8a|N4ajo8r7ayq*Fm##C(cf}gD>xOYu0ae z8+Pobdm5U{lj$f?SY&Ug$ziZCVN;SHy?&V;<^q$1T(tFEYE1!PC zKn+J9V-+I3j-NQ~&YU^phDO)9H5)fW3~k+ze4PY?V+g%XLFjKn3BT~0zxmrI|KJb) z07dV|PrUP|4v+3r`N)fdSP>4t>o33%w zAWMDx{EEnOwaB10U+MQ&>gphum7(J9x^*u^H7sGHP1l?5 zC-j}L;4163K}4RLd}F_h8a3;8_q$d+rvV-2xQLl`-S0f_9J}*jV_7H4GB|<%iPPuY z)cAxO-LlOMt=nk0*xlOpxrk&Vj)t}Q&^!GrzxEra|M-vp814PXOTmBti=VwE$Opfk zK!oY|Sr;F9$z41&=5qagF4t40p|lntRjX4NwM|#547gxbB1v3%(;nA@B$+t;vTMMx z)JYpW+S=~>WyckPO_|l6S@YWUu9mO+nTVvo@5K2TcjEQe+}1tUn>3N#v23FK#o_g? z|C)EXnbSwz?AWQSO?0L+z$+a!*egAIEBCLqp5^lCo{YQ-2sc%&xuZuW{S94soJns>Y#!DvjamP=dapM;*xY5m9 zAd(GsZ|PX^PPtn*W7zI2h5n`A_?N$V{PUmx{EtN>!9V+F|KL4^F!)Rh5$p~=>1LjP z*1h_*y{<7n?Rqw^bNPW@BN7iHY1HQ-j?fh={Y%@n=vr2Jd2|b+I_EAOc;2;|jf@~x zL6&X~ay7tR$itgE$gjcc{&ntOb|jMkU+1N#&riB0+;PwC_qaUHiH;e#s6)D7vsX}={&lrGNH-1NjWw#Y6wvT5rg zM@5#S{g?Lo5Jzcv15TJpH-7A(OVAQJ_40TD-kp1Pyvlxd_h}{ANSVQZ<>Tf;8&^4Bv0qEdEX}8WiAd_W_|8wv(~a2e zy7^A*%gc>l<+TK3$d#EP>K}Gfr;oUqbEomsUf#b&@1o$MeqH5t2PU1m3>K6Pc%P)n z)Lg?&Oir5w*|2@*^3qR*=_XpvI@v3=>4`(X`)@zrH5;SHSD%7k{pC-8fZ5d#N0-i_ zn7`uA>>qcNW4L=Tx@V7{v6_Z%+JiL6Y>y;vxmGK3J-x$_>dN+r9I<|(>?&)wy7AXv zcC+WtWq|D(#07xxmd^P~fbBfDBY&<2k(TD^0A5E^J7~WA66a?dZf1Jiq)2c75D2eU zET247lgj93H-8C{|HeUU_i}CSZtrr>?H-xB+oUop=3VX?1=Pnyb+oUS_T8?j16;G; zWIb}z({pZg(>XgjC+994dJ&_2et|J8yoYSvZC78qf8EbkJf}dX zoyue7`J?^?5J<%F;sg!@NPFYXYhC~FTAnG_;$-(QnVB0{>*a#U-~J!|mxI6ed%yQ1 zO(X`t{)@lxsUVlTr*#nmIdjOJJ}~ZPE>#VPDKj{;C(pT_^`owT=N5n{2S4*&_{u|! zxY89=Ep@Tbx5kB~vOBx?2^UG#qN6JUh<>WOo!^T2$k55tIj)$O`j&gvfvddNGmXSu zx-{b|{k?AYt#@XXFNXQTmHHpz-6;-^y7T*=bMsRZS)XXg0k3nDR8*=lL7u>}o z`z^2P?e5!3{n!2Oe4X>l@>AbJTbGxM|D>b^21eDP4uihy2;I*Kj|(W2CyO!nt3(94j{XaR*n}g1*Cf3 z`7M36>~*^h0=()UuOTs~Cf#+|B7JK{ugp;ghH-j<+-d+E0n*g ze9OS2yU$d;02`g#1)^jI^>TK;;YM(uZn^e`)%#4b5RD)#Rowa4UW74>zsc;{ZSQWY z&aVWE?)+EEtLL&u&<@?i49)@&Y2&VI-SFBCoO5%z1cjh$4RL5xr`8_$-9PvvJVtLV z`8aMSEpEYHf{D81Wg?QP*N?js5B;qTYDPJpYu4u7?8KM>Y4ukoE|1N!^JD+Sl}0zB zw?lM{9w8?`(obbOzm@9fJntNr%?C^cY<0I^^CMyG&L2PSp8f7uZDiH&)lz^2-TE`1 zaBKG5>Kbrk`R}E+>8Eeq%rr=8u$<=Wi+T<6Q>xte=wBVjr=KQfEk`o%}T?WV^s z%DP>-%K%D~#X~!8a9i*F7_lX}?EUI1rIzb&2OizWi{^Xzw@}8IeY>= z6rF^md^1z$P`4y)mT#bCq*DaLx#3+mxoto5a~Aet01;5Sek%cP#rs`^(hc0@5TyJ0 zQpA#8E3_B}bWv1ud;j*^ZVXqhzs!V`^+$h1Rdl(sX1&|_q0i!3DPxzti6q_q()o&g zpsJOgb=PslJYBF@uK&y3(}-yT(QDP+vHh>Q*Y`fXx=m@_PF)f2(dIipi2HXZ@S^=4 zLS3z&UC&nR*AiHC=j(={CO&&;cNGbC@cAFQbH|UYO4twx_~&iUh4~Lpo-gd;HE${T zSgAGBR}^xGe>RZIU`Y}%s~0ES$*+AMtcF+W1{Bh4AVsFn+xe0ri!a4}K)9VB__Qmn z-Q=P!Wa$s1(Sbn6`-L}~`c`89pi-N&mvSGh$$+O(3YC7z^bLOo3&7LXz*UVGIY z+4rn#)@v(|7X^_d#0JK9`}y!*G^DpAMVMFdXNcuQ!Q`y~%qK!}xuk}jee8KR^Tw$+ zr3lTPnH;kTL_J?I(J?8$16!|k+wT5|8Hh_c`BKE`2J+Hpc1@kjAxQVVZe&>%vFN_^ zTOw*9`l@^Bk#D=HOXs=QVHWCub)u__*>!1P#O=KA=bV=>ID#WHsYtHw_IICmBSiQ8 zw{qTHhn>@ut*APF(g!@oAfGeyf9er);jgYTXWGEvmR)Y+jdz*^xC|)o z;0?hQsnWBE+Mbj)VW8`SOVZicD~E4z5Z6y z*;hlJ)th`W^K)+Rqu+83LMz@h06TB(bcmy<3M}gxS?{*r`Js%KKsqs+ zt4fyls&c+FnP|S|7kU}`261z*zX&%zBRliT_*3c|bQ^EJo8=G+Lw{$Qw_2@|B2u*` z&z*6HUw)Cu0B~{@CY?Y)5Xe>{e{a8V;r7m2w$)x?&-_*#OhbJ!vBX9o`O@kHGKb4| z?1#@Us97v7a`Q-#MpHAhw0hN);?e4H*Pv!;LCD`}TIThvP00+`wCUb>`DJ(d$ZN|+ zk1lO@!1|r7x4qXD`}%l9#o7O**)F>l2e(yG%e3XP%(`*4`IZzG{$BQL-w-KRpa&L5 zVep=ChhKVjbvs0L!59MYWn{hEDwJwPLn!wA(fb`d=XV^ zwPL*J%=eylTYmO_mh{1T&{N`wxsurlR~XT9J2hmrl(DX5yu32ATCK7l z?OCUTI(9dg>mu#RLn+f2FS&hBe&6l5@#fXvA;3fILtA&dH9PjW(=R{EB370Ppf_n^ zby59YHDyg8A09r}QvU9SbY;{jnJs@-XmOpLd&<^6?;Nv&**Y(sXWmNAXs8Jr=`9I<~Q-_bc$^D1j$er(o%3G#G&l7Vs zIJ{~3LY=$97b+Ma{A6_J4epI6A2Shek5|DDA=zq=JJs8f#xL9cuA9Ia0B5DFUj5PF z@?&kM>nnL~oRvn0UU<^Y&HR!p6ET1ngiM`QbXAsBgY+15TQOWGPoHG<8;g!uLMept z%sWVaA%(mks4s>{8h9Kc*`i5R(nbs+0AW3Bs9?I=-;^c&cS-A|M>q+S9NnmR(q>fxEi6a-8S-$lpf_wjr4TKPmc^rzh?4N8`$Qt%Qb2<<^fU=qnfy4q5~npaa%BK#||AL=#jzVDK)L)nHmX zc-912rs3+ngTrt~fU5oo7^`$kfpI&3=98{GG};b-P<<3qy?S4#4{EO`80%5?P7zVo z9~S8Ik~o@VlZLbSO@usvMehbt3@n^xNTVjn?W*3Ri|AF#qoYk*s?88aJw4+@_cE1489Pa(1b{XW7)M3cuHF4^w~n7R&KjZTs*`#W!43w> zCIy+Q&@QX-O6K_0T@s*{+D-$VXY{XyW)aW2B*awkdwHWQQnK+*KRUtO&A3Z)+ju_A zT|J|1to97*2b>q3cS-SD7w0x}Uv*~h3Tu0*cMN^<<}fbqzC8^J80+Z~#we?toXe$f z=gxoG+t^y17}F7|^y#Sx6=&y*(}+iPkyt)V4>U z-WV6&)D#S>#mx5*yMGM6&k$Y+=3>^e1`6vZg4d8sy`m-9U0!sKCibEBX={cK-tY`$ z4w`R(%p)M?#`ZJXOMPDJq6=%UxH#PCVi2>FR9{fv#~OFm7?t+8IKPuef-P?Y`NP_C z&TpP}t?~^nF5C#bv4Lrk-#YJt`6sO{aq&8y-v)sZC`sRa+7QnFkau2k33Gl?={>ZE z=<2lLa`l&a_AKWFQc{Pj@T{;Ckj%TV`ZVu*H3Rc3t8tUL?Oy4+_sq|i9_6J_&B`eR zS<>eo{qmS`Q}nn%1cDT~5`k1N5XSz}LAUWE@5PUfXagBUAlmG~IPpsFG%QPSi|%rR zn*o|3qEJOC`>R9ePIjw(f1yrYTSW_Z7N2B;{^mVhLogPl+mUY_1W+#OTT~qv{MR-l z?DfGph^aOyoB3oV%2{CtcYCv-9+I2ENj;<}h^BH<0fcN`G7XZQ0U37l9Q8@+fYrzT zJJo$uUIH0zbO|B!)r%lc@}jHwTkz71qhIGaAGG@4L|m%KfTNSeNw!am4L%~ESU>L4 zXomKbdH)fR?^&1RF|12>fv?)si9}z5+CGXRVYevomU zYgX>1{C1u(LD0J3a&wPR?@1)$FU*3m zUk>yB97v7B2c{5}ZlljLE>C?90!RaxXZ;XOXh2}M8~nn#$GC<86p1cxvZyb49GKk# z!A$YKXK4GdOYF%y3~5|{m3QwlA`LhXt9wgcGJj_+xRJ(Qfk4P0etFtP ztJH^j;A4kiptS=Q^?bRcNZ+x?UvL{gbPtb-aK*rHvDm-C?0TulVwMFCq|!nX2F-rD zCK=b|z9F1=w4Qg8IIFIK^rHLOb3;y#)sBmviPKF{f;am^Jd+-+^8C`sg>au3v78!G zh&aT>QM>@A4~LA3H?{L~pbjsYbm1Jx1gB~huHl~QBf%MSRS-Bj>!P0f5%Z(E$q$5S z9y5dyBDE^_(GG}&XBzn2?04acXH9*GdhgDN1QjG#dx0`fkhhnXwp^odoeRnvT{Iz2 zVa^S(U=8(`wnC^%g4e1^_DbsdDJL~Kh$m<(l7SS?5+MK)`$C+UKKHzz>IxvtOD;eE zIDHv{z{i|NzNm7)!72x$1#o8(Hk{YxXTR^FUYH_GAWyr!);aRtMZd;f4$d!xPEnfz z`V}K>Vz_wNILx!>ti0cXQ8ZpRVo3^nsQcAS(j@b=YZ}Bysz8J-h#*&c2_i!ZK~z2r z#*4>k^M@D@p80!?D8ed?CShqeZA%L6a*Rc8?kReViYbZ0m?cQKB)=J0AYB^A$zR=* z&*k1TK0f~R@bEBVb@^ma|FvKK^mVx~_tDlY+h2?wapNbZ-Sj0IwS1X{yAk4l{rz`g z_Ymb7N#w;~NM@>yo(KUzoOxn{7)TSLhJe|# z0M3)2e~dwZ2;njra*8!yf$)zl^)4pL2}nq|@)B5fX}YXy+|BOnWmuzrxf!Py13`6o3ku0@?aGLJ} zj4c52gES5sMNbfY`Ppw8NA+6h%RTo3q&$y6!nq%Uh|gqsxt17}ry{5y0ihqF^EeY` zzDAjk!D)5^L=c+m0Pd48h=u8gT(j?!An%Zg@ci6&kq|e76tD2^h<1E{GN>*y-=N;S zsSIKDhxU#*zs)$h-#lgc1kiBi2i7hhP8PsXTSW|CBu;+zVfywRkmNSr1NX%EZuWnI zK23o5k2uG3C#0&sL|q?7J-OW#W|@rTT{2!n2qFQoqRIz>6j9F*qmVT$Y;;w;V2TC^ zL3ES0!a516)soSN{b`qhK%|57e%TeR${j|~a#%?93*i1Tg4y2?m}28mVV=;6A zL-oeF9jJ9^B1kt6sT9^s?m-~0ql@WHg|Kit#`<1Njkb!Q-oKfQK+@Ph z(`vCAa+S%o>!3)blnS2zvQ-k`~zZHG&E&~ya|!avQ}io^h_aijD!fFYA^Yw zYxaJWnwcqj#vu($sE&`qXdZ^pg|P32ncd5?JW<uxf$z~QVYO+l@9g8ReugdfIEV$x%r3bNC_ak z%Kc9*P zFc)!T$d=|uc+bzcxWWXjyjQ?wf#AWVB)Ai)!C06rDcGo-e(XkCydIK3<$?&aNm{`T zW2mr`XZ!yv4V>HLI6L8^)vzn_8WQkEb%nm@ck_SUZvJ5-+Pd4NaqB9`p z>i`=&A*sS0ZUT9)f!kcq0An~)XNWD(0+AztCB%{uoS*ro4Qznxv5AzCZr=pCax;&( z{4{Na^R$ZZ0;%6m%i-j3^blnC^V&uR4%PEfBNDYmbrq(+4RXPKA%a$k0h1RDRWFC? zWJD`*t-9czQSo-_M5UCf1p-Clz~&N7Q3dbg9&-$MWm<5-R^?V@%@DQcXE7yV3Y2d3 ze#nT?3-KoAL1K_wT#!w~?Ke13vUv)!b|oqjr!sGwYSAxCDt~EmmK{LGh+F`UI29bs zM-Bnz0?0&OU@UbdMq;L@MmkTBY=&4oV;@S!3*rJsw#zU`Dm5!hFs0&FxV5(J#?`~- z-(a9U5|YNbt^BrFRZ_bZWudZK^Pi+hg``BMVJ6t323x#-(n{={IFmHK!0B1aao&zY z(XJ{&c*Uh8Of6)2ffM>@O4x~Qx}jJXJ=Z*p^i<1BIZbL?c^US29K-NpzGwJAG`Oys z_2=@xCPDt@Z;sYJ`GH-hnc3aJ!fXQ2LR`IgrPxIR@UNHzrqSE7rMPjE##jOb0HfL( zV5apGAm?}aeFH>i;s-I>z(~YRLr#oW^ld-62;!b-BlNp$APOL-kWdDhyeBPrTQD#i zaQY&KaDMjdCTg1?bc%PPg=+iVdvcKWa=u1Tr-` zmrF(<4?OTd@`?Mtbe!4b_jw`^=0Xa@epjzRAR$XI*S!~8;W9Ex*|N0Cp1wEJNVbic zdmKa?Fd|4z*Tk4Z*OV;~HV?sJKVqC6=z#b`s8NK(V-E=Fnh=ytBB}G}{EdN6Aw3ZH zaO{jj19+13(I$v1H==9@V{$+NUk-?j=*Md$#81t;#XykQ-x^N;0rS?RxwRY_Tyv*F zdf9&4h-*;hA6-zFRK~CJG z3BBt^-0-_FfE3QTC^3{#H47K-f&0qHLadu{WCIHf;IggW_oJROfm7JhF3n)mrxfI9 z_J6E>E_bZ}hy6hN(g1H5da}55*8MlTkd&?y*ad0w>qj;NIy>j%J2$|g;_0~!hUJ5c zv-^1(&5~OK%3}u723W5ZA}OB`8-laJhwHUKAX`6d$Uy%!=t2kx$;u=C6DClNJAyPB zvaqZ`FxLBpge+!{W9ALC%1gv4gi}5F8t}qflbd4uR@A__PAER>tE&*awORe54k3z` z2HQRA6Zhp^;C1^sM9O60%*B2;apnzIow>mK1vN789({MfxU#`ledTBH)4?t}H&tO9 z-pZ3fzWc9kExlIG?z{F}f7(?Wy>Llu3}*H{1ocZbag)VL9LUVkn!_Ip>QviRsC`r) zRF~E@<=GLi#G2gBatysrLYMHRIdb7va}QyWeB;E)+UuWra6ibfdRo9P>OY*w<|w0M zLLlVb*#rOu+K2Fw*`12#cG zy%xd=sdZ{c_CYcv)IE?u_oz$AAWkNrWa3xIErb*@W{75as7QKm0vFU4H>Ng-%Nd6R z`R$!Z2aSdXfIJEDSBa^Ns$cIFhekYG02S{;g^cSBt25)YAiny?NLT)2B7qv>Qfvm3rM|$NjTIZtC0sYh3gJ5>#g1Eu;}~D7@b; z)ILtLUz-aHN89(IMBXDfb5H*`7g)GM8~DowO|o{yf+0VJyNK?!ovYA_PZZej!nv(% z%($tnCNp(xQD>wVQf`3C*0Q~ioPmb?Hpb-D^L9OYM|Q0uQk{sM8!oxg9k}^>3Kq1f z54zA_9Omv6AKmya0{AP<#C!Ul&p$swbFV5b5D1^-I@a=|mS3!dNuCYg_zH^vxl&SO z=!W;+$>WuCRoQ3DKX=rsuzhcZXmlnM!$Q7{>)Aa9H$(6Yi8X+R%o-KtlO9W1<>?G% zisUkc7NNAuXLXQI+#CSOfX%ojMVrj1D)`Xq;u+74FyW3`YU*pn6m@CG!~~?X@~VR_ z3ax?ywg+mZ`VxcO8376edJ1t+J|uQagpv@@8C#&E6*o93<}8%tQyoU&a{JO&62pzb zTXXr*3$Ay4-3{XWDuN*?lIY@8>c0IPOP;Z1P217C6zGUeCS$nS1i`?@HGR%~7>#!w zRh}Npxzk7cSt-~@*bqn`AeDGe3uKGvTLfVmvC%&vr;yADuZ_S$Xyp~cw?qIG?jW^Y z^A0Q1KH5@et0yB4(gg?OH2FV;cWK7s^&o`JSrEvZKhtBef0;hRutG|)>EjTZ7&`Cdqs{k9BC zLD-IzFl43!nc9&dhan@tvOI>A89?k>ATem@54DL4f*?XY=5ue0!*5kO*p~UUkcFFavtGOYhcTt}k z;=T|=!mP^51<|jT;3&XTv+JQk%3+H!2rq;iL>m>7KMXN_{qe+|K25YNo*)avq=Q1} z25O(YTM-y-oE})~KE*SH-Q<6Euyb{NA+>?qfwAs)&H>}X z#lkrc%ha`je)4rNH%wdfOqkUvr(&JdxyPpKu79LLH1VJt-9Etd1a4(;gR<1*9Yyqh zi>e+Ec?M(}Y_WrTfencA3_`QUyOtzg>PBw6 zk$tW(d?ovrNy*fhYn?vik{YwH432e*Kb_7Q2z1R)bZGZQSk$F^c8BAesN5M4a##lH z1o=~3*(sA@8IlMQvq4=r%CHToMH}3K?2TrE@!MG7juE3QgphGALIV3hNG3by>!>s$ z0&!3w2vUaK1p_365V|^7bMttYTCzvl&jX(4ibWV+>So#3xJn%j)S?a|>O*3Ml2lhc zud|Ctop%9EVyE779sA_o*5czaMR#FRpMp#vpx9OGEZ)Kt97Q@LILMgJr5o%fg5#h` z-7~}@)%eI?1AG1`L-EM-d@$#fbNi106T&(~M0pTNAd}m^#dxVt8I0R-Ux0arm>LX? zi7^k2L7Nh+jP7@ahjacfRHF0l>&_#)rwb)67Ug3&`vJiY+P)p)=;d6`4G*lq<$uJC zG?~3-Yd^#>>;~5p=0YD$WwiMW?VBlOKp^-3(gXG99{tj> zpcvffRhYGAHNS|Y4uKdzx~f;??*_bALj2{DIB)Ct0U{U(Km*|W~=s7 zUg3{`R4Nx-PY<)XjL00j|IN;`qY{OoOVf!fe7&cq2MI?0IqIL6Sm1){>?42Whx07h zB9fYK@lEp;&>8ldp{e%8B~2q}gE|p%_Ejua0J0=u4g#syX(J6ZEweo!+MK3L#bR=j zqO!jtdG){|7CbHxNISb7G@9lu7QFan4h8CE9JA zptSe&tb6j)X2nqT#Ko=@Xe@mi_CdgGLZgy~ z07^i$zx8kTj&&9Pu}&8eNa%tCh7c9LBn5DL1~2zy2_4qlbUj~^Vn%j30-+}{#(6qR za2woClH;#l9&=9|oiZX|>{m?UTE6sj>G}|o>B0=E0ce?00(w42I0ow_av-kMBl!j? zN*Poll_8T2j%+2`TY$?KFyaCRz5xPCdRZb9vjm#SaAo?=%mX${4pk>}3u}OK)XkU0 zS+`EjY>yPf&BV4%l~g1CFPn5< zlD~f)w#Kd@H?j?>VWChm#GSUCd6gmf8eHP*m*UBTAOFG;YJK}s7ihsB*EkF;30mw4 z5#YtX+^*?hbIz2^~5{R&fUG7?Zs!V_t(!6$I-o1zf=^&!AC@rm5_cY5X zgcA2# z?rc@h1WfIb+EM`d^a=JH9W;A}cZgP$Bwfm=LKUe)Dkq|&U#i;hRqqDr%c#92`q-k4 zEWV*nk5r*SG7_Ez8$AY3EtE$8|4sx(Rz}BLu=6rX{^|Y0^EtPlosCc5IDZ!>CqB zcS#Lt%`QE|wBPp#CwXYzPk(s-AHIN(@9j^E2!s!_AIJGT&6X}hD0iq>_>&n>aT6u| zEwjXS*U5qb_F8UPZ9V26*i7gqy81NOV@erOANTb>BXE&Wl0_Pz(QK z{Qc6OHAjKq7r^tbxxzf`F}l72(7t=cp?Hd3r!1Z5dM& zG8h7h+w)?|pd^~Q6(d398jdjRRgcieN2c>Rb=$e53D<|_$W2)qlMx9gutXuhB#P)# z1X6^0iXgYXgWaSaNf32FNRR`|%cxF8IHk3PcEKL3PBmTY=SxV03O}FnQI&ZYBm(jw zBM|CP`!esAoGZ+EaHokXDVMq;1k}DxQeGvsO9Un2V>=w~pvuyJF($Q7&pUbFJh5h5 z`OY8pVIg1p=F)qT5`&=3CN%aDhD$0Ix0X%1FGA>F*JDy+jig4eYz+hL4Ak)=B=S|f zf#00#?>%z=1CK6)jLTO2mTxX1kp6Y0i}ms5DORuz#g!qvy&xON)YO;ZNkW9-ckSV; z?`sY4cC+(G5CKtJM_;yQ3Sc}v({N9rT8YbbI9(^ZhGQYMq1(Bq!ACoTgG%2AE!lS} z3UQg@fsxD6vUiP$2O(;{AdOK|kPdlv6w?<{8x7P12+I=rHT$e3tx}z&g22;hbBx^r z%C;qx2QrC!3&ATOT1@}d9!WqUH{^=bi6b2nLPvFx4M<3PrE!64hHP~pi$_*;3lj1s z#DS@1x~7B>(4+&`1=?KZU3u!%7D^I3B36M^sQ|KQO?m-}vrQy$RcrpFBY~7Hq^xYH zLMfXhYa(F;6Jt2MLrM9pO8!Wl6+z{wQyW&uMu{PgK>e4bw2W44;m=YA*InO2CQj^i zUFCBO!7$z0h{It3RKoOHmN-NhlD=ZhqY#Busy>J$FVQTG)N{wM?!N>4zA~NEpTGZ) zUYhED?>lk6h(K<*;WN$WfAHnk(M4~H*wQ5jqRC58hd|WnOuf1T!v{ff>@*?>X%|S7Cgit) z=rjVPO7(#rutvIkt|CN1#Q^!uu4>mW0#GoeYzz^9n&jO)b!t9B^@#vdsbZ{yklGVt z+^0wpbB&5H7%3rU2`MqG$)XL-IAEZ&(~F3Oa}iGw0o>lgKB>=< z`m699VQ)LXinNP$ZW%G!V*p{#^v85a%d$8hRh6OTwMdO&eg(Rw)P6&D(Y{vri(>yq zcF03D#HQF~>o3(e!NaBC zV%|?!4S3i<{lG95=LVUiiZsci=7}(sCr4C%fa=o%0YyYY2I~h1Drq5=M~JOicKIyw z+!Hg9J}<4H$+e`12%`wm%J~q(sXMlV;8LRQ3PdRNs-@XJ+Mz*FIjM0yEJQ1V{37sF z{gMPyBdK5Ijll5C$)zjLUrW>O>JKU=SuCFpnIyx2m*ha23Fa0rB{d8QszFhGG<{Lh zt2*N&4MIe#iZfc06F5tjud8G~3dZO>oAA*ksaV3FrAha+gU$dhTk}vc@h4ZVm=qOX z_vX|-?b^<@OY%FvfvX_k^WIF(#eo{+b2F~ z6K;w_TAV=IgHOA3j-4k!gn1C{Td$7UfQgGLWrHfiGZX99SBN9?P-U)M1R)X8lGchNlH6tkC41vTA zyh7B|*US6}BQnoVu4^AelbVGq&s?iX3nC(}Dx!QS^@w+vRHSSZNyP(0EZHD((`p_> z=i0(lyS$eGLPJazVx5|4!ZV{=4%=oJ|$tcM$p+SRf?2K5l(pHWSb-4i~##*cclN#hz_U@!>#ib3d>vfxMSYtEd zMHqp_P8AaTZV3?zl2+L5orm z0={xOd<$!U#YwvpfJAc+>_x!2Cmne>qDVE}LEx4~lYL@Yu8+nN$&ljlZy zaA#6Z*^QBr&jv|1G$0@%b~uOy;xf=Nb<_e}y3C+wE6vEK0TrV2<*ODPxGcl~3B{Fa z=)o;B$jPVowPdgtn0&+Q12RfVG({Zz6XGZmx4;^GkMNKd>WxVjJ(G$93zbAO&r?mU zg=pxnkWDIsB#eHd5J{RMKV4=T%1VXP+(@H}S_CIYf*S$IW)bno=@8K_MHd_K zsD6GTj$)Z_m`l3wuR+8^EZ1)vzBI^E01RYr zUM}0crmn6n002M$Nklnl8e-MJAW9I^Q_Ci0FA|Qv zcK49mcuWvi6?D`8z7HAncbhIFkj!}0$}b?i>VbI~AwfjGV%Cr{P4Y-p(;U!(@ZV@754I+l%xdj`Ol)<4L_kMBHw=am20J+{c%7 znULikeVB+7@4KMIpGCp^GiOd+JN}smA6%xE%c_0HZ*-yX!n@dECwv)>Yau5JzUy66 zaU1T%d&QvAi8m9Ym(=Gl&R;RF6}axsOxE0ib5kIN2B<4*`&0y?ByW)>?|@I{O@X^{ zMg7#NAVCl@ljUSyD8o5}lW47l9P8K@Qjuf_XfC0t2|^JGHK~Yn>lk%Qo~;6^NXYV7 z5lNlZj>;!hN_C~EQ27$7WLt_T#KYDSC=io8a>MrEW=&Y(*O`FShjt{%L_AFl5cqOt zgU}8kHClca^8|u*40I8u`Ykw#o0l=pCB5|Bd4517KOAlYJ{mnAU?K& z2u|}uB90=@HB+uWYpw?FU<69Hc?Ul{d72N&!$>5pHE-3B9Y$Vx@ofx=>WMNJVoS5QmI%0C8DTnIa+S>zV9Zzh@YHVjSoUs+$13 z4-kJDtMXew@Wj1;un!X3cUc{OS2va;5cKWVE3w3JnSFQB_eXEoFnbrnu&e>_&5=$gnv-Hjn`IU;e6qQ!2mLBMQ=cr+f+eyVrz*c3Im=^TFLd8 zrOwgByVNb7h|9^Xo2R`^2DSzgE5cYtttB{fOLG+rh&EvhAS#7t)QAGKy}&>`*;E0D z8iKIA)Q~kYq?3-$u)%>Pv6{G18>n3Y+*kA|qgw>hpv^Mx&CM$gz<)E^+Y+*b0WG9U z2)dL9EK{#owTaZSxewyUeBPrtF2$DhAnnS$kA{H!Sh+%eaMk8hXiEv3Nyc^))iQ2? zPqKli*C>N`=ZrYAz)OvhX47S_X^uszsE~STQizG*udixJs!K!&KJuDn0hvgRu5vo% zGl6bUDiyziH1DqGs$ZAdIDB|R54Ogr8{XWzAT@Y+9wzj)IEnwFITP-Ec=HQW4?M6O zd8wwqyRQxtkfCy4Knnzy(aHt%J@M-kmy~i&t zOqi)#3rOAWV;g_$Dtm_a1SHjD8~hQZBlwV@zEmsb;PRRr)O%&4D0S+S^hvQHB0{}G zcH$_2gjz|K2U#10kxS3E$v;L_9xD+^2_h+@mWX@G7EnlvBm|hodzxrih*ajffwSJtJ<9U?P-WlbNU^c)p}kipGU(@?u3COGqY*@CErbTX`hHeM!a0Ul?wY!(T^HNw>d4hWX!OZC!J*OcN#5;CgQL)FOnL-UW6s5g@p+%L4HNy$lmD3 z-jHFwG%0(D+3$7NVrw8ZG+m&6qmnayn?45~{3({z_r_am&VKw)z6Ah&GSjjI(#S<8 ziY%^wV);kwH2gXn+MKaauaOyfQE4SKy(T+k{u-P z9CbtX1(*!uLOp`m@%z{7(#1Nq>X+FUakoO4DBdJ(;tfaW^H$5tOJ2z`-?Z_~7JuYp-k?aq0q+S^9lU8)GDasXZWm z5#o?)WC%(h)OW!t$Gk;J&-iqN?6fAt(U7zh^8gzqT_k<9-b7IXk^oKmrl{o(5t#&N zBf7LFlNi9+CJjMeYdB+|$yguaDA87i*3@9B!o0%z>>;#rlc-h*x25)m*(PBBFf05v z-!S5aHuW*zq{s%FJ2}ND|1~qKe?=J5EARQjv$IsYg!E{}Pf*fuUY72?_m}7PKK^H~ zF{8e%wSKz`MmEFfG7i3w8KjHecqub3(I=W9?~BLS!Us-ihH5)whR|&ov=5RZOOqiy zQb8&WWMG7l6GxZ7l)-DUm4C}Py`)K-6IvlE)u2Kod5~V;9?@RGMc8|_3X(EmX`UAl zTF4zkNrhfEUY7fmH&t14p?amqw=nk0dMAXEMn#?>MYK#9B+cQd@Zk7ORIw(ADb>)z zK~x`9kuYr@f^~9R5B*O~~N$3wWZ||#PZ(KSD*vY0O+eQ5n z0qP^LqdSJ&_S@FF${-Vd60@EsZ`2d?{uWzRiu;Pe98DZCI%0S4S@)rJAQt~oxC(hhy{p2u#J#JgD1X`aW47K zfuLPv6$!4Lq`Y8kRtA+q`z0aVZ8qP0_;Ap~2nAOxE>9Wq@}^{odQp)gIGWU_BD?k# z#BD*&I==?o);wGwfK;s(9J%|PHfy>5mYCo>)j7y_ z*~i`UkHzl9tE@$VXcf_`4-`R#5FnC^P5ep_bnigL+{JO74d5bnEbjx6fu-g(ib#w? z8Dyj_^4{U}b%g;!e25Oz?j8|a6x7ZjMWGqx7r|-0j~26OUPDq?JJVPID&LBioRF8x zq(K|PHa?u|$Y*3+mDP>24eS<(P50zk>_?5-c;gy3dJVyasJnnczr!%ezhFea(%UE> zy5ZkH`k!?syxsgC`LHa3s5XqN7i1{2iGwhnJB)Zc3F)JwcpBJ2(X3Gb@zM!6BvM3@ zT0j?f)&!SvRFFr&()tcbBAXS?sHRh;0eRtq6Eoo9W-+VfQ1w7gEoTK8QpG?aO&CzA zP&RkcAv%zmfl!3H3(?ifa9!!WRR&QiiONW&YR=7LFTh1nM@qdtaA`bSNFW6*YME@v zWTfT|#I?0>s|i6!m(TU|pxYOTrbU9#zW@mUKD$&i_D#8RL6QPQ4N{i*GG>coUmvS4 z@!%9T54gU~$K2f?Pf(SHLD1buloM{<`Wd%vSLlvDAGoQ5*dYCw`#HAqr!B2{pg4;} z!v@k!xx#o_>_pj;0YEscV&c@!9K^1#6k7lzflq61X}G>ENB}0H#Dp62shc?LyK|4h z*r+d5qop%3UUGArDygxCqS<~HqGIkvOQpL8q%-<9$AisPSp$*GWH~~lh88kyx?b}d zNIITFdebZu_&&26Uuv~xpQ;V68Ncff-?^yUuBN`Nrz;XjtI^oc1`ai1pxDl@10LQD zvL$ou*L0G(52OTm<}S|E-O;gW!YPcA8k>=RFC$k(B7%~QB98`V#`$eAlxzx!#w3AW z0lY;>O4)&%3|!3m>_{A(ttvIRn)u7dAf*P90agr?baASKE2D1NHzC+|8C6R&?>+qx z3CP-%=SsE=h!$6wKts*wWxk;YiB}^YLLQ@{Uw3`PU{xT7xPUz)WQ0(A*=xAmhw=kw zY{-X=j^4v!>OwC)h08ZU(ozq*Niuh&kJnTsVTydmX~1`DLFUS?^=@R(^MttV1P<(g z&JN}&yGnwOs9dSreHU{S*U#`?5T6-0^*^SMjoHM_vH8OItEht~Yrq?iTUnEdNC502 zpHJRlnj64+uW@euJ#|-E$E6sR_!<@E`ti2$E3fg~x@AxKVR`0dK(7P1aXb!wj24=3VdH6~tt_u3g;yKq>kR||=OF(e03 z#C6a$xRy??yYLrqOlFO#D)N-T#ccwrBMsUW*}#xddrWB!JH8xKDMCB}0lx$!%2X0f z;%O!twFCEhAvf>J*h8fXYq0tDq8nyE+B&Ka>%^sNhhZHFgX?#oA3~EQPigoEuvGXrDPqAso~dV#1}*cbJ42Q_nE_J*}@1 z1J`gfs7Xa^A$Sh?guTE8y|Our+8CAHz-}fO*9qRhS@73*v>A`~fF8Xr<;z}?8{gJ) zC%;W-&1rNlV5AW-y9t8J@x@qMNQT2hs-xyZwEwalMIem1*j%MoVd+SczA}ECvPlhw zxyt*VWK92`xg>u0zWz^6c%Oejn&wY!T9H8RzyCAy`=0)r{d}DAO#)%$#C@Y<`+$Rt zR5l*~aSxulWTIS<7O<5x$TmovOIOBU!w=4fiX_8L^A<8-F%=m|5Dy~Iz{s0p>n+G@ z?$~xcnj`Q*{4j?*6lBfGXx01z++HE;DTtEodnG~nNRmE~otbac zDTS?seD5RAG83LcZ21*1H@(I4mhMg|vgRHW_0t1|u;i@wI$j4YBB6uf~ zZ!P1B)ZsC_%R8P1-hYf6t-q=cm*2Sm0ofWaWNr8<{<|W9&?k1($$gi@r#k(!Rf1;@ zW1x>Qz^G0Db$V*tv2UMagGD0<5rxz)9rZ&R8!||U*n%S=ITr!Qs0BM(HE02hrW3Tq z3Tl;RZB1ulFktJ3G$u_L9uMQyW7mWbAES>t5X!At#;69_<2paoE*YJw!_!Q(IzZt7 znDR7H zC@yy1V8YVhR&`r8^3B1q+uS^%K|Y@Z(D%m68@9UE_$k_j`^`D;uQ?g zs4%TJaBg7_XzoMdAj#ZCcLM_gpu}L>d?q^=Xt=fT)3qfA+m;z2EquPstvDh5WE_g< zQlyL!RZaqhV00!5bx%pIV|iW_85_tAiy^K3s(d)UzHH^1s06q;MF3U@M4&R-i!H=M zm4le19?Dpk)M@g;A9=h&5H}|xpb}$)hEQKrELpD=qu3g&VK0vIL-o znuh9wfD)r6rbwC|hy@W#h4OE86PNZfS$LklJcSe;gYdTUsgX_W8Fr5NsnfuM4K4VW zLCU(g>>oKkCTH;$o+HY-?^aix-HT(P4$Rl077j8mGSA9G-;Ir>ZhV~0=+;2MJ(;Ho z;mkf>tUQ{eWiXD->*tALKH`$?+~0glGQPihK37Z+^lrPZZ!VsD9jdJsM>h5Q#l9Sq zrLWDNIeI*qosJU1nkDOTcBMo-q)i40CU`80{R8*>@l(9v?^hE3u9#kX?V;XyE_ews zxSrzLw#=6T{w2oRGO74>2R-=p6kAB6iFmLzhDv}ivyC5En?8x z4MszRf?+J1#U}skDP<*AWL)CSAp#kr6(W($CvQt`TTP~+8VUabd8XL0MUukSyE9i1 zRap!M;;Ve2U)vpFU#KkM(>PwMN9*j@Ux!T-8w`JQMc=-4_RrLq7kFPVa1?kibuHOCTwgz-KYW(C!FN(Z?>hMrP}jZ#A!3gZp*%iSbdysdduQQ&!`>1A zWO<=MhhaSqy-R?9pHgHy}WQ^dx7wVIY6zW)y&eMdG=SOF~W`0Z5*1c-PCUiik} zFhl+G4LE20sfS#2h^_lTNWo?N>`^y&ksZUOOSLJ%IN{Y$MZ0U=SyiWgLf&kN90-Q1mXGnVsq|Ubx0O(uUMA^if+Pm7v@rUKX(SXz z(_lZ+lute6_}Y=<1DW;u5e#VR;PVWH(l!Y1uW1&Aus=?m(Pj*x+pr$ygG5{aVjDJ{ zg9b_O(@u(7(n~lo61yMUF=DcgfJxGtpoj5(g{LV#p&DI$=q6Oh} zMVm{?tWbUMI8%W=si~~9DOBFq>>K@`X5(~cP@DR4vo`)8^YdqBiqTlmsGce(&52Uz zC&)w}@lFva3f&m65l=&^Gx>N5clon;-X8QOH$QsUm;Vfx#{;}-Kfedv=RW7s-}xQ* zg605ziqh&T7B0I3&wc$l5ccO2rcPU@UIQzH#0(gsy*5R>0p}tLA+|1blsaSVNq|@a z4$B8;CMS7?{GB7`Agop-YUe_21TAiENRJ)hq4yiH=sl=*8G%r_&Pg`k0^!Q@BG<0Z zgr3Ulb8C`5rf$g-#<|%~sC2m!+Z^`hBX(}|f?_3&C(q9jMODj{%YHbTA1$suT?ooY zkv#NIlLUO0z$frXZ&aTZ7LJAoAz}CqVoQL00Urkn^u6x*D3XXzBSTn=pJj0tY z?g=yDyMqd;@iEL_J6w0`m|2&N(bgcXKiz-SMQu=>X9bdCvJ}M}=u1x+<~e)DUQ8e1gmZ=_e8fu z>DecL_{VqrhcA}g{@uHOqv`Iu=ziyS9$kV7-97xtJzteT)ND2ndyWwAv~~OyFGU?; zG=MZS)T|!VQQX?pBktRrhmQQTZ?04nBOofx z^2pUlU8$}qCuCCicnj{YNjy#RwXinB5dshW(^DdUEd4si$&-1M7O$yPwMihsefcsM<-=LB4}J z?&7Hl->u)kCmujJ1xP}}B=uBz#-Jd%{)H2|Bd;0=>rb=I5EFZH9sovmP;&bq$!GT_ z?#`QWA}|^v2Jx3pQfU-_p26jdxL|{I)U$?aB_VMr@X^yWkJ`!Xd5gIf-wa0xIUPKtyci8(~IF5cX`HgLr8rAp^M}tq`t%Jwvy-RU6;ackVxYd-|EbdFbB9 ze&LXN;89J?clE5(!=LQq6$zx68#&OJJu&4@9UL^y-iCKie?O72=<-5jaeNU2$ScIR z5#ea^)Z!IDS3a`~fC%=%`NOINR-y`G&VKAquy+k8jPOyvWie8n%EjzX{cXk zKVH=*Eb=5>AQ<}=2cs_=A|mP*gF9s>l4BoOJNV@|u7_SNEXQGO#4F_2FbmI)+?Api zhr>z1>xlCQ5-d@iSBP$(lR5w*N?ozNudp!+xOe5^)vU5srU~|iFqj^xMz`kgu00q@JZ(?yIJx9(dAME zRvbCd=SJAerf-nACu(4tWWmNZ!70RP)0PlZ$nBvPO--|NJd4aWu4CyG_a%`|g6}UM z!1Hv8iOsUdw+OKnD2o|n#{W8q=EL{V9Wfh{eISUw`h1Z$SGt#p`|m>w%;!i|;#1BI zxPHX0@O5HtE>h>#&2j`FiFj88x7TE&2!+hNALfGkRwU3d%<;7_RK1w;@>1gQ;D{>6 zdDLKzg|CK{aVi)oAk`XxcmgfEhY$S>X!rSU)E7v}S(_*}r=DMXq4vhm3ykJhYN7Y= zdw>6jXVs6NhIB;4mYM6p~1@ z0WIlW6KW=JGyKD}rbTZOS#Y?^ZBuZ{dK@O$~O#SkAUv&M~PBPKP>O$sU5_y?$ z%Ql*Qlplof;KUfcska?9;=d;J{Rc=bzOag#l(ghsn!*{(bXUhQ#;@vI#$Inr&N@ z4@Bd8BRJZuZi-PJNy^?`E}j6%CxH#zys-~vLS^1oHu643pFDT!9BNT5b+^46m_fwz z^K5!eeA@_NCz4Q2*1sC`@-WFv&=ua zf3HX&+vZ0;5GG^)oN%Zzj8gj<(?|3K-;;~ahsgkjFd!~VWD_zdn4WolxK{MZ7_4M~ zonvQl*7~#8$h<8?LxiB5kr)<#L~|EnSQ;bdG_ZQ@n821(O*Lx=a|~>;>4ea5TiK}T zDt0=tm@ZhCY!mIks6{{WXKGDJ!p;H34^6s(d)a=dm$)#57hYfE^g`ZThzgZLG<>f+ z=5u9o@iZoW0M#FN&G}d8qC7lW45o=cqGuWNnHjh}aZ%gh%CaL`aOyH#UsA6-sVh@_ z8ET*pl?g=WMZ7n`m`BG%$()6Fnb3FBc)yOGM2ehpZY#ua_iY~Y6VwYbPw}pGYXf)a zaO{qsNZpNlP;Y3rB@j@E94ll+RA`hqP3S(m(pUTWrbwS#JIuG-Y2))RLSz8<#%pOy z(Q`+RI(P28>K6QbcN!wnsBKu!+>ds}FtswPQ(K+ti(3~!WzE7T5Y%f&U~N!*0gvD$ z?Qb%%x@o=2b&_DC&wj(?LUz_HG3n^ni+nC_8+>dO>bs?wkDh$)x8L*NTvU4U{y%yY zGW*F)S0s>R&-)t5$rnBn%v=D3=Hd6eX3MsRvhRHenZ^C>$mn4|7?Oj)wttooUOTIi zhnNks7i^T<<>VZSrG5Z#>Nl>VbNi>GC#T&I4i}JWfwZ6So`yyVe-Ed;f$dB=i zHRB++RH4)7Quq2X>V#WvL?P7NLkWZvaTr(c8e^$fGxBKw;gLc0@&9M;O@r(@t~<~3 z_E)d=6+mI%L4qIw?z>1zvP4PL;#HPsLRQlud*+KHH16n$m@jH~bo5NbM0?y}w{5j$ zTed98S}akUDM}(KiYvec1c@CeR25KI3bn6qfAjmFd+)1PAVh$R+)kk0T{3UpyqV{m zJX@Y5lODwV%V!h}`7V2md)LR-rS#xg}Bf*}gxz z{hM6l%=Gni>|5P^8Ig*M<2$-B_H+b~+I zmk(eqN5Odg4znHGkY|t$gm44A>*&cE#zP1MUZt&Vg!XLevx^tcF_TT$&K)@%J2wK{ z%~qJ(3jx8C7`h@>QTrvTeduNUQ>UT#uO7sOemcQyw+dOO%f>FgX1DFB+Ln!4Hr#`n zz89A7IF6ZY^0OZT%KH_Aw!}X2h51gLM%y4xNmeYQQ?AxdGK!C9s_}15wr39D$HmwD z+elZOL5h1eUP#Q|elB_LPcG6XdlUhlLWmA_7n;voaF4FOg`23bIpgbKG`pjS&JAY7fAP zi<8{pbzSD$bqme2ork!uh00#8e>AhS;c2{%{M9S*j79ie^gwnc+q9u#t6^DMabldD zZMWBtE!y-%%|>t`85oN33@Z}*s^sHQ4R(lK(<~rI#WnqD+p|kD12ZFiqKQ}D`5V^< zLjUA+5_uto?WKfYSlKpjyph@Du&rG=XFY^Y&MBzmTg9TSs@7HujbPh_@v7AW>~VY`nX9w(#hS|KW~r+vKhzH-F&^py&VGBw}~P^umiT zeJ?$F_#=g%{JDA#DCY0Sr{DwVN=c``C<#&;p~J727Z!3PSM^)r#PQ`B4%EyPehg+A z>xON(nMfep&|0-3W6a|ZHritG37qauoI&ouVQ^>O(swUV4)^bkdl-zz8C7N=n#r0e zXNTn5sEJH1p8>cOSV1#Fjm1boA_w(p4B@m^g~uRCc9C&j$^m_nsH+g=QrSawilQGp zR%IrL*?aHRtQb7QuP1exG*lx{{8fEu=E7M>E+lN^%&dT*W*2xrV3WDaCdUTt{DqUS zY#t1?L@}#O!H>)xAS)fRqYy^pLr4>rVlgSv|9#A6cg1cW;ZwnX9I%1Q-4U)7DvMv zlc6$whfR&|NA8+oIl%kv{OLzv2XW-=1393l%Oc_QU%c34+5PYyt^2GA&)OKygSE_tkgtJ+0&W6Y zHS;ul_86_Ck??p)iqw#!5SRD2X0S&D7xCsX(6-)};wl(IZul5*#Ah zFR?O`FA}yJM@Bh8s(gRNF8b!lKif%{X9%Ke> zf`aD&{OkFEE>=dKVQ)ixx{$*ZqgX0tG_(YVU{Y0En1N+HO<=+A>&1!F$0k7Jo^G*A z2%Y$L0=u@qHY}p9HyjN6W!b&gB zS!ocVeq(nMMCoH6!cH`$+Y{B=d-qO1`rW;syY~mT{@15YtB?P+(^Vk|y#3)SJa26K zd#!fv2&8!0YCSoN-MGT+$zeVkDk2045yf#uKhdAQ3czq}i&U~K<4y0_2oM7q?W{yx zhtu6`zh!zhpuZnQ&S!zq#}n3aGXsDNhg9-XNn(Wd9cytNqB@WSkWK?&vF=lr*o=!w z+x-m2qYNI7hWJ8ND=(8NMB-rvMayiZ7JdPZd~bIJ0kek2hd|p$Dt711thwM_0$>3E zQW07)RI;!w#|Ff=gO1D|(lzj6fD5ESgF|5Dz+;ws;{A`q=bt*Av28o<)DP(vFA6J{ckwO#`bs&pqoU96YJUWR;te}gv2(6!;u-ujnbmn_mLb}^p9&ECO z(Zf*SX>{imYev|MK^Zk5^#pJ-ehj+e)&?|9(E?Lga^u;f_#(AKeSZfe`;j#RV6$WY z49>FdJO{gwLY2h8tXqTIM0^~L)Pk!whgqdJJQBwhJb^u;6aupZdYmyQAaLh>eU#mN zLonk+ZBe_V-W@@+H2?w)b3A*FHR>?@tJkcyoA>mvzJ1XyjNq06B1uLNJ0{_K%cdA= zQ6WVDz%KuPAG}g!MajFW^kN~M^(=&K4U-C}7Ne($_x5zt)3Lp@tzE9yzM@m{@xg=l=I z+9%ql=NI!?>?%C~ey_cJNY;HC0V~?xmbG2iGwTyLA`UVnYA*l}cvHi!Sqdr>b0-Qa z5rrX9sTOlLNp-yuK7#AE+X^=I$e7Lie8$Q{*rl#rl}YustW8vlJ+$C@>;Mn${Xg#d zR&%xbk)i0bXCXDi{Dza?$6=uwi^#u{I1izyIC{6-V)vCEZ%wAVm;?r z)rS2c!_1+PY5e0-a>OW(b3MJS00T1uYqX_vUchy|To{Aut+1A!-v_YznJsXKXu>VL z)`7}ah{4Lo1WRC1`wCD;u`(Y!8MkY;ciZk8Rxtyl?bMkRYRwcXQT)7^E>`pgE+GP* zHiTwTJ^_oaC8WzPFmSqTuOGroII|AmkK2tq7l|s*tY)WKlTk#VW?#n@F=T`oY)?Sx zn?WwsAzohcjNDG#$&(e9$;@`B@mAOyW@lKOa{f7oE0{87uz8dT03O6ga)r!9Vgbd* zNrg>RRfKMgm(;tqKR`+iu)47dA_?&&SHv)WBH9CU^a;B5c%loL<);*yvFZ6ucKGNl z<>ts!WJYGaSz~5|nHrVHGOS|?S)(w@yH49H`v=)-V%D~@HM6%BIH(q1gixIa7GN9k zh{n@Mq;VO+6OoaUOdbag_m%DVVf?ktzlbdf)S@Wp~3X7-BgOz zwm*DpfARNjU32lT_l|&lzr1u+Gsx7`)L3_S_Xujx&MF~*V%NUkYR~>1U&n{7VXnUp zq(Q4CfF{f>vqRiEKg0*4;)J;1{03m3j@iuP6>GV#X3f_j{G~Q9Xsqv^`8I5W9ORw= zDY^+dw-E|-8i3Gui*?f!&N)-P0CSf05XT1;H3ZoO09!y%&mai&^uVG4Sjp@bjA1(& zSR#_leH}i2Ka>p32>}@{TqprR6>J6Q_J^uA4npkS)edrWT07x9#p~w_S_TWml?Tz{ zprK(zW^pJyjLdN47;Czjh{X37APA!uDt7uj_7dA>4}9QWoCMEXTjr-wc32<;6B+5$ zXxx^ZT1Eo?EaB1)QrD(+d=UT7UcjK(A;dvYO~{Uh3rPMYrWaYYTk#k^YG+5r`Nke* z!<8Ur3N~m0B_c*jWGU54HS|#+lZX{OF=%!ec5fG|Ud;lMm!w9<Ky=IDnt_W0BCE1N-JSL`p=w6i{b^G4R@r%P@i+`JApi2xF{JX*E( zmDG0u74f66Z`U%un|a?Pvzatk0UN5UmB$2rt%JT%WgBJgzJz^TJLCNSkIW|m@Mzo8VP9??W3@8hK65s;aNzcAaqi*UPN&>H4TE4i8b4|)mE+AVjDJW zC+Z1{@T%W+_ALZg-cJGu1PGd3B}D5e4c2RiL399EE+4XL@7x}@JvR_I4&)2?bfyM? zw;I3IjvYVA+K%&f!%q4JVAitR0*k@q{_b*1@TTCG5!K8h%eUUq2{*M1Hiqt@&9s5x za>R(9K}JisdkTB5NI37z1M! zBWt$hCgdJ=6pOLqG~UTL?m`|K#8cojb|=|J^bBp|PuNWJoyFCxw_$DIJs@f-2gzE# z%?f80Z1&NF&3y~MxKY&Ez3oNfFOtjsK(|^ripgu_M#y)V0cNCc=;?CyC*tdR7 z3QKS&ygE*PK$(JP6OI_x;2abdtxRIxH9hjw^&r&%RyQ+Z9{|0&KVfS&+-BGBddSvo z*lHcku!g0tgId}f9*RznN~s`~=$(Y@HLzV`_Y`I4*gzS%2Un5# zvW-DRhnRJT&$faLleT$75h4KVf{?4lRbq?OrURHpEOcRb#S$~Y}HIABl3R;nK)+vQ=c*06S7b*qm=5amFZWOuWsb@y3j)lM{$ z_%hK!wFz8;1~H1B8HW&~^}=(r)`S$3POjwHotVaM%IDK7e)slO6JK0=*TjF6E5f^w zt{Oo;``ORZkod29M0E8q6gZ~9aTkx%6Cemwyyf1K^?yJ>8+Hb_HQkGXiro{o16)87nz7Tf~c+yAoAM& zd1u>1dPRkaTjzaAl+ij8UJ46BRQZ5mX2Mz?C^ysqQb4W0{vHrqcGf!dxRy^y4I2tk zJ9M;$R*#t;;v%+I-!hB*apF|f_Tfz+`KGU%IzhPeqj6R&cBB1c88fn70u!UcItdA; zWWJ}?X4JgQU7YEPKYo-?{0tBSWaOI#8v#KC8IowzQYde-H(9ECgT>bzv&5GD*ve2h zV_>YFVVoxzA3QnAW5{BFNiCPku{Nb2M7bU#!k#njvz@{_(d4-K$H6&nJ=VALz}S<-+AFl1dm z22PFA!7Tg6dMqGmvJI;VKEQxZjt85=wBcM>#u7YFq{9{h6m)d;SzB)2)~yAa%Fn`P zRA74~Y{QO)qb;>>qUlcFy0AeiT5Y8?$=hAW+*74RA4XrN9F$E~NEfYn&B zi^voir*vdrEGf!se##_zArzQlFPU}ZwWjY^+ayTm z@u=+pAnGYR6$^TLgxLaZ+D>L(tr^$sBjhNu(P(!!6kZWV#5eJb4w?<7vCHh(63hmI z<;J9;k+6Q@B5}1)ESxyS5v4!@V3$wTb=QE5h>q$5X{H!Vgz&NxFF8mG3B`)a%Qx6e z2TMP@LP_DUs)u-5i$dU7T(B=i{bzdKnvG2Ybgz#(Yw4$;;wq`WL&VvplPcvoU+0|)uz5d0KFgJEdg<@g6TEdRmNY< zkX_Pj%9G3{ifFTeGJ6??#3OXqqj&zvbM)}rOMvXvrMbDe;an~^$t=?22%?c{K|a{= z0Kx3P3cg@7n9AAY{uS17`v@HpbcO_Lk>5Os(1vDeWiM2X!P3kziGU^+N&;#ZMkP(d zBM7~5^zrGY4p^g3IQ!9wYE9vTY-aMVgbY}J6|pf zeXYjs!m~Ns01?`>J|Hgs2z5wc9%jfDz~Q=U=?&VgZ&K21E%o#OGc{p`nMF{F!2gTa z@1md2qY(Jnvo*AAnyvK&v58R)&o976aV?Ku)i2kSv9X}Oc4oWw4)%L&?d4l8GL|?d zu0c6M6qs}xcbvii4Te2Ne$qDzG!{W3vEwUxWz^Msq893$D?UcBpTJm{6DVQ2Ad-ES*u{b~`m2UN+5Dqu-lR;KgmIsP?PNwNu4Z-Qw(fMQzjZZ; zg5QPRfU@MleSdW4HxsGFpWgUiUJ>HFrF7K@(%RZO4%I#bkJ{tBy?-wa+;F4CM)sSX zI|P6vZSF*$&n6 z163?0kAnp|oIz+_kM?E@p0=l~nqwPkqKm}g_v6J=bf-F1-AuxQ$ii|s1MD&&rC16_ zRDiY0x(Ri>21)})Ko;kNcWf2l!!n@q74;6Ld#`QTk3M%1o_P!xj}wDQ+q`Lqt%5~L zrB|Y4*oj@B8I8^v5Ks~<9~%OMo)deg+w4Z*LWuF+>-tvCR_M)}Y45!tCNm$tgvSKWL9e>9dGeRjr@he2# zFJhQ2dTe5?ndf;}ZW%t$jp}=;8x=Q@!dNVQw1bcO#_uC5O4WtzB6Tn==N$|5*Nk06 z&{?qp*C7_pFvnY!rN1={x{WE0=RkadZ7EO|RnD?tY+aj`wsvPzt6J6(ZN3L}+6~oG z_Q8FhyZu|qYWAr;Z^6A@5OY=O3t#v`6*=Sqc>0|cK1LMW6X7ZeU(QIpP7lbl7Po>z z+M0=`p(q-n?Fvqypm7p*Wh2oHq+N?xMdB0=j-6-Gf8#!p#z!cD3?Pv{sb!ulIFai` zY4I6=d<<&!1Tz81r2?$3FT&jO+FBB6X z+PXRTjtk?kf9J7oW2Zm|L3=dNP<{STaA9%BiTTBvon)F{(K8Q)C6Z$I0|Z<9b-s;Q z#l@!pa28p?PBbRfF2Efa)XW(O`eI>}l&5!`M_oLZXXYiuP+M*kEnPQSq|E^SQSM2B z5JO;>)&~Tg3=EiCH$Wb*gJRRC$~%bcFmNhpXBL)GLb_P3z8*XTKztciMcp+!w1I3g zGRlfCB;ULdL75?xw}8G|No~{fLTyx zaRY+k#4U(^!sr@@8v%bn2w(~2huW&7B^L>1;W*m>Rwbj%BCE0^Q#_aI#Aj>^ue}9n zbKAqWug!n%gIh-b`;&vq2P>#%+3!^&h@N`*;fHsj$$F2Xq%Sp##$&0r1t|B}03FIq zFbm(TShoE$4!9{aF0vcsK>+P(QRL5ej=~BAs=%Y_kESyvXQaV`2NfSGXTex%CobqO zBb4uV6`;<`_-Va{eteM?N9QjxwFA(akz(-uC_sH+#lwpQQQRqCvnQWr z#v=drTbQi?7!6PplzZ?DIzxa=fTQoz;w16p#|LWoRzYzA&>h?G?A^|eTdmu9PO=6A z1xqK&DYdW$Qs5LN4W2l#*Nz10RspJjPQWLj`1mQQj#=T?Rkq3b8vqEjRk&-Ul9NcE zXT07SzC#PEuD>R3TQ{*rWVJMDL3}F(epm(dmo{uI+PN(oq@fGGOEQl%Z|VyN{;*MM zv;OpLn%NbF(Q!6Jj;QSpdE8SOV2>Rcw44CD2;QEV=J&Ic72E^7QYyO<1w)!!U}M4VgLq%nM?*zY4gTGa?RM9xqa4#0O?$PqVk81*DzGFjF(9F`W9z7 z!BQb*6YO5=Wn1#yHq8*V7ZAuucFS(u#8>rz#1yWcfaN<%yGj_xeokAvV7E5H zU16_r8%_X(vO>SY+KDrG?!L?<+f7>p3=*Ozr!{NR_6^*}CvC1cVhfc|5s9&CGh^T5 z#oKW|hjPQ;@7TVGz^g3@u*J6f&`Vf-OQe{tj@SBf z?ZEN%z~TB@Eq*72?Z+?v;oX0IQ|HrXVxJG_1h1fE|J@kpR36>L--_-q(+K_x9)fcte7V>PeSyA3z$Ckkf05cHn!<&USoLeYhK!pG zDe7e+*{7j^1kR49ccbQg!Hs{~2^Y5j1W*J8*gwr2FYH5Y3sT;EJ-k1ZZW8%GtY#}A zLRYTpfCa)&EZO76wL)PP0iiz*K&R~3!T--rpB_iWI|db=aU5DPT1(H z2`dZ|h6spHGEQK1K#4_3=x@omJ{=2ryjF1>_->**z?Q0Q6ZiT`fZv#;|`G|~y&I#!*t-1hUf2|vdu zer@zRE%4FfLK=OCfHX!p%~Fx*g#dL5Ae6;c9|Z1$EJ-_ZveQltT(l27!29R}eTi5W zQAy1hYu8}4&Ee)yLwK$}&tRfH#xXC|{Bb;Dzk-id)dkorR_Jkr;l3VRR)|C)CrGhd z&MHL>438Rg0i7r=UF{ZWtupNF(uSMsK=5OzaTOo|c0&We_*_5$J~hlUAmQyd1(ss5 zY?|>LK?o5l`AYG?AZ$L995~Wyt(~8wABdkd^AbY;ep`!`xyagkdEiR$)px$ecV2*H zxn+;mfP_?-wyOS7fL=>$#cpY)IyHp52{WTq$wygBt{G9b9rc^?HKR*T(2Oafp``#V ze5dRmQs;JcDDq<)GoHMj*@mH|!0JQxYm8mXceY|DejRP$ZV=-vNb)LUgcgy?CF?YR zhL5e(%_15dETU@1KGH@XRB`R86!BodU8RDcPqZe!orTbgsLR!n+$*!aT@44#8py#G zZjL-eN8kmV>qB(pyO!SP5EG7GbcpWhfu*Dor4Pz%4?YKHwjV{*KeWy+erM+w4^F65 z^wiQ5Z*s=$5yR!=8TQ+_qd537Fhid4^{;VA`^l*UPJ~@pnN3Cq6^0Ut zaU)#d_cA zF#5!40OTyn0KJcBgyE|IT>7e9-5Jaza|f`)-out~Pr|Y=dw{j-D<#P-Cr-hxFk@=r zm#D4!LH#F9nTW-fjmRZvjt+wmLdd&r4&)Hc2r3iNHjmHCy-{XvA&N9&S|200lmcb_ z>Ns^#G5__=10dUB7J}V#N3*T$zrmdmE2Wc^Co)WOgClk!e~K9tYX&o}VR>!r5hMX zIUCkW2brQlxaQA*zqqAvKbC&Lx>v5pI}`ypankxaPFrT%q63X)4(~6ury;3nn%U%3 zCx0TTTh(5z@gQcAeeW@p6ZH2TH?xcZpuBJ~_%_Knk~dUoRBuG#6ztl8p`N2>7>X3@ zF)I5}YopvKy<(>?Y=PRo?Da^#P||Fx5Ia)eYR$P=RH=MLq}Cz4i?2rv!%&KwJ({3d zfOGGDWUgIe>*y=K!IK)rcc@M4bPqX8f_@SCMtwMTku{CuSkl+9WgK=Z!LIsuW`;m_ zdt-J7uIYVUqX3ndJ+R)6Ap3RL!Tr5<9z)F9O>8T~j5kj^F5n#}}X@Vi5LNMynWE7n9>pTYaUQQpt34XDyX^PpvTb&BWpiJj+{82h}Co9@?J!M~khy zi9Pz@BWP^&jme$wvkGe8>bz_j*hWrv*bG$KG86Xv%lIs>XK=UB>EWO^HlbRfT%re| zYK6V`o{O#;EywOcOEt;rJwnI;$?DwoYoScA8=`{Zcj;%>lIVN}SC+XsnDf}6b)+V& zweSC8nm$D|yVKP1w7szR9Cfpe0sY6~Mn_aVuX-;{y6=Mh7;4pPsS?Cizq17iGl;er zFuU_sRVPNbxrYkOcwr5v2G%wlEF@&ZDGc{0P6v?>m@82>tSVN z0^whQ?EE49lBL;cWe+S5s$I>b0$f3``m@SzQ>`;>J_?AE1)C@QDzhg0 zmgGT%Jj$TlxmDJh@3K?JXPF#u8A5Z&mY&vuY?k(Euo2*CFwOF&sPpO+KAaysgAW$K zL*acZa_k}6;(`!sz!R|q*ikgb0=ziD9uu$w_z8Gd@uop{R#!XDvA++k6w-2w~m_dRC0 z_k0p^pjm{50A-1;emI=>T4C=$(HN*DJmlPgm8dlGEIdLc&BmnvsuSou3`Nz_ zDALnytY`in7W8|Wn7R?to@3f)gu;?CdMO|Q8sZ>I3Ds!7k}|?up}g8w^j~jXeH*C~ z!FKUk3Tiup6d`y9tep)u|K+im-FHu*Y4JMMq^K$WmH-jhBE)|7y!@l!)e(5Lgmnu2 zyJP?v4#n%YYeuAL8e;EzPU@c+)}?E9BCuBupvfU$s!Yi%TFQHI43#Y!xc(KVX#<1j z^}u$`kJ`v+#x|kel`SFi){xVofey)x3E23cMqYD z7IHRmI&Fij*SPjZg)4@*qJ)C@58vHVl^EfIdr5!!b>*i@am zLkG7wN)E}faezL?COt8LIZmwSc!rs@31AoCL)o=~kyCu-Lm*==EP@cs4w_QsiH)-i z`&OPL^b^aHlUrzgz_!L&OW#s_(lX@%h{Zj&fDK2{@TEv;F1}<<<=3pGyx%6%A7nQm zmP=4)xmq~{*Kjd*|NWRj-(rHzI!QSHLM+>oiMMvySF5C))h$O0EnCy1k zZDr(?iaRr6IK*{gRlFM+WCZ(#noq~YAm4GYozIiAAyG}?vGexq&tJ3k+kYSH@&p3l zEmpy0U8+VORep7*BnQB=sQxs4G$~eWx(B7}O5Tw}l{kn{{ye1sY8>DSGhfC_^lp~1 zew?s9-^VMs>h=(6vV?4_`vVrqi8oJ4b9H9K>>0E?Vg+x#5mo^$lzR~XSc0KzaLdpq zKlL0o3Ro(sS~d2XMHKO!$a?Ay2Sm+w`}U*0L`IR_;q^nj1n61I`8BXgeFQiNtjLTx z_0QwGH8l$IG0i;lH0@g_H-CK&DpQbkWRUgw*p|BSMVmW~^_{l1!BWbf4W$pW5|RFL zEG1+`Q1Iv~q0C)v>DW_KP4(uJ}ad*(Z4_si?W&v`>mJzj>N9gH4or`YdwC-+eU@ zYPFb3$kl}!dfN`IjD(`&oqPB-0BF3^Zdebiah|m>)H8r#v1j*!d-ZDXMZVI3^gMQu z*Y}%k=Go1g*@YK&;rJjfCr8Q%<#-x^G%K+O$TpLrQT^F4rX)<3 zD@w_(-<-79VWVFDHpbc%{!5U^G%Qtbwbj~Te{jtXM$czys5AzN0N9CvEWTYVivSyT znyn)IJUEJv7c#Wa1_+*F7w~TFz{^7*6CMw+GF2#hMaEiTCI}XQWoyp=oL2*9z+JjD!2R8}nAl}am1EXadX<0@Cqae@8V99<_6L z1I)viv>#%Pkp!!^jv%+)cH1nPtU&@suPwDAe6tGg_3!@F*1q&n>$~k1NGBbjkp_;_ z8+KcE^DS05_B5SE6mnE|lP|5b6~BT7oRwyWj`A@%qFR(Eu&$l}*wYx6+U%wqwxK?S zq+^v%rg!kS8A?qI+A@3%)T1hkH4vticUqeuIY7|>CkaxfMNQi_J6!NQ6b}c*3K7d; zZ0HDF4+<~Z$x|yaLTyI2IBA2!1$*Eg_A=*n@=?;C>>(Le>UFYyL z7^Mc|ws8dpL)ga2SJ+;9nwU|83EPEwvgM4{l&DkL{T1LGJf3HBH53Hob(fm03qUI# zLxoDqGElx=93S_7_kz9DH%ky~*?x$V%R34e+H6$?He=H$0{DWh?rtWUBkImFR32@E zW--YFNmv=pHk$R6MBUZz0hg~|F7yk9ZztOOp6gTA$6kq((<>knEzHjR;f|jR+^DYr7-Y?FZ?5_gtvhp(qw@kN9e43YN$#xELDx;Jb3(X z|JJ&1+zquAB`1luV9L$y`H&UQ971z3ix5jAMw)HzNRRbjdx2R*fK3}Ix@KkBZr#IX zFKv8W_QPz>^XDMdW+In=8=}KBA)5g>4ivzOan3Ap;uPB%qwd_iQS3|A)sy_skpoki-0rI{K5FaUC36)Md4qH?8o)z2jIm_@SX4DmkTXGjWirzDn4 zAf>`^{nlDsYjYs!!Vt3_^>o9-w?TQ+%nJEov-7n<5Sy|fNmc@mj9{8Ng$$x^jvcz@ z-0z3?^s%0&@IAW@C47Z`A~Jt^2iB`8Gs$)(!B5(`Ok7r=h6?Q z7`}&cjptfKuaMY^8sH*hbpZAXq=i*aS5Ct^-R?6_OW}FgtmiXGm-kRRnx11<=SDZB*#Ag`Oj-q-}(%qhY-{cY5KC(9t?1-r|4?3(S3XE z{1Z>u`VW67;89eNZ%VJ&XwADGu(=m-Q)iIm%sBNL>=auK_pQTix*ygHBv()XXSp)( zfq!Qm@;n`$x(^)NMzqAA06YLXRSKbiOWe7u_QX@@2>|BfhnRBVx39zTE{7K8>|oyd zH)<6dAj6JOwG#WdV`O^m^@_dn^A@|Vw%TT&U`7K0ZV-0jwlam5Dx$f1K~e}#T12hs zNtfckb-{V0f%Dw3h-c{BAEkddYGB3c1?wTa&s76eQ4nI1h4;@Qe2PMgCx>-~7O;h! zSQc2CM8~2{79O=$gkEh?pc(^2pd*A3N{%eLuRkSkY;el2_9>jEgF8B@AOD&}8+$Rb zyf!=YT`LnFsnGHuzzJ&vu*Zu7-2Vc7JBE$_1oA%mLcA3<(g58@1g1iLMty%YHyEhOXEGXF0CBs+aUxQa`j;NK`O5Vy!)6!w;!_Z4u)g)2&7t*&AvUCk{#^csn_%X9IuJ5pD`Q%On z?^|64X(>ESJ^%rs(7k*TuWtzIOd9sB+`?@0s?R(^jv8gOQS4lT{ZwL|eqKzh1vw!a z@$v!u4I$k@64`mn32QoH0^qy zl=gebu`l+Yk);aMxoVI^S43xgoR_grv|vz8-U`jRcS{RRj^$R%b1$qU8i`z<~9 z6U$EjlNGbOnF&z1q*mHO%SS1PQ|aQ9)-wHNXPM$!pw{{^fOsw6bDbsUe?*tTq0rV8 zvv)BCmB*noK``rl_BP(z#fL= zBj2^{pZVSTEFy(SqP5#vZ+^%o9{UT3ov0~5bg|vWe!d0@k3TOu_v~!5&7Rp#=$SKU zOxD7RfX%Q;@pVZ%etxG-v*sNCUMtU~t-a7{H>TRH6#$a+>@p8?5T&)&X0am~8$C=Q zGCn-Ub|veHj?w{7jp*rJcZNC`I|Dnv82!KsW0VLlAtOhX**>4UzhyZii3jpC{TW^ot`r)>tyE0o2S8D*#dj+XO^4# z8`?(Oq3#Q9zwI+Ztr=Ni_EAe0amsXn$6H!a7wPaM4x|G7B1(^@c~t%LUjqRia75B9 zGvD$NOEQDx*xaXW?kkSm5~%YjC^-CRg@q^0`6m#rUxl5z-4+3OtxB!%>|E1>mPG{% zwt)m#U}3#Pe^5(sjXJh+C$o+Au1AB05vhXESSrfLt_#kCrNfIaGV@QNrBhUu8C$*O zTHCbyR{9JhrEo)i>&H-r;-=K!IO3i~m3@+>9WH;UWHeGbzv{%|sdMx5^XC)k+{P;Q zkQNr!`!FM*pZJF_+u9F)(3<6A5wyagF1PI#DE#xbcyccQ0v2Phm_-)x7K^26W%14A z7;X?!KZ)Wq_LH$c$yF}(pb zbUSUJ&uK>`v5r~bqyBzruoNmX!Hfg(rAP4Cj@^zzg|oQl4NVejdD4pE zUulkLHQXx`idEa?l__7vk4F2)%%JT%Ho;2CWX>M=)MsqVp4)vssl!RV3k79j-9@4#_lKIY>H{eq zc-!qCv;4>rKqu?c67WhD(GRypsE!HQ1; z(L|ZW%E+<`>jE&xpyEkcQ~_>LcBkmDHVNtAc@x8N|GUK{(-KvT(xr9>u&p~6^SYt<9;GPU`>->vQh?iguT>btnn^%{wB`}8#vI8R)X~9Sm!My zd3%XgX10L{TU?&dtWk}3@Cvp(XaT4bvS|<&cJ>F>H1!n_VIwjK!YlWx#;#RupRmmQ z{{R zgcZ=2X4u-z0Ud4T%mlzM`BQ&04)m2p*1MPJf0VE6YUT*!+g+%B$-%TtM+bAi<`&%} zFK;a=$gJqGw(b?KvaZTP8aO#ooAgn)VT|2fp!;&a= zuKZ;Zumdp(si+&1Shkvl004Xvz?T6^N4L6)?NM3r`^*dq$ffEWhM)?5(o;i6-zCmaKWIfT?&+toyCB(@S+v*vMpt{Q(7||wE@uCi7y3pvC&Sk z{iFU;sU|ZMU!xyTOJm<@8v9ercRmbIu7W!M+)}gOwL<%^@y7^9+v92`8I`R!sg*?0@NI41PpPN4E3sW0bWnk zSHt)>apHA5^VC1v{Kzp>{jALZL9}IscEb|T3*fbnJwI~uZ~`d}l?avtz7t1po_b*^ z=~dBHc;el|IcxJgka!QiG3`Ao0yq;gh2_0V{hZd*uVprr#VPhsYjeTvA5pb$7eT17 zd^p1g88b+dRZdyrOKG8!8n}qh_0hlovfc5Y|2TRNM;Zce&~eL$DFc-S5faER(z$DP z5&tf#FF{q*9SndiVn#rS*M8obaU9y6r9thbH{qqrD5>VK1K@%P@?4Y4Jk$)=J1?d{ z4vFF^Ynu2Qfa5lR8BJT*L(;EjCccWsU{rUTrO7* zK+w!9b$dC3Z7KD;^dYy>D*$>uAYjG*O#f+(y~6C27f*)l4J;1SePVpv&Q7s-Ys(JX zb^HA&4}=V~FQPi(ivvMetsyMzg#jDe|1+B(J;NtQRGjxkZH!L6{lRU|Qc%x^BfeSfgg2;;MZ|y61<|jX~3!iw%R^NUnH)I-920E-xjC3D(*k=u4t^yoa zlL*xj)uEH5hD)MdNt6yjvF_u+pi_PD0j%uA-!mH&ZL#aq02GU;s2`MrHTW4?nD0?H zvrOxUm=W%vGT1U!`88eq3$_;B2K%y?de2+F>vv!g*dJr+n+THww%GX@fSK?;6MqGT z|8;;I6(d@lV%rBnihHn9LkM6mvKSrXg&}zJl~zz4P+qqF1qr^2S0f!-JdS{ik^!}6 zO}<9bY$11);oD=Gwbc0(fVq-(VRxB*0;KvN8lyY-j%JYYJM_o6%LFwP5QVN^6^{~p zzu3DsNl-x4xr{CB8qsImqFx8U@Hr6@rdqB5XuiEzOxyH{mu+t3yM$?l)tM#4C;WYB zj=c`W{y^<3#2zc-CsU>V3a%}Kcodv0w%PkW^(njIZk$rJV#|Rvgj5dHUT>+`nxbR` z#ZaSdN)dq8ONEHxdErkzPuF3p->aVl8OwTxy5#DkD3anRI(nJKi54R5pHlSh=tNa% z^H)0NaH+gp{!sb1jUYsPAIKMrbMYoz^+HXSDpb--^ThNy`Zr&)RX5%U|EJdkU*&8K z&P^~2P}?V6m00Nf6zt3O+=JqCKT%>c7bvtoDn_KkLdUQ36%4E+$3HL|5X(2S!J5zi zKepKY2b^yN@Sg`rzvAqRBATS9zXq@oCA^{)X5zHgbyFZ=9LYPs7At@ktgv0$p@ zz3}>Y)XqLaU99i!_+NcCL1|4p=)3yJ(nZS>>;WvwI7=1Bhys#EE7-x(*WMnG@C^yM z4}=u}ySN3?&7U8#*Vi=`(@eEx_ZJe99z%r|AQ)L`{p{qw?Xo zKf*JLHBiC%uBr%}T=tRVa*-xWwUS~C+Q@Uy+3BA= zZks;_OCw&>bNEFb5kO}qzX1h(k7X~yzO+4Lg|_!$$wXT+_Ll%lJ3{KmtZDpDVW(`OK`!WgJ1e=qde$8bTHN31Esn?fT?l%0`W47s`5BWX4P;x{Z zsw&_swf&0aVPRx|5_@F086*hIP=iIv_xwA67NcSJ?>Ul4XiWl)RrKVV4XOaB3_UV} zh}|hQ0qpZnVZmL^bvLZj_o)B9AkF){Y!+lR_r<~89!26p*QbCLRFAPwQx=Lp{ueY3 zKd8>%2B5d{0W8SsK#LUrv9oQ(<~u>)U*S7|BG{8s^KFhKiG`P(O{!_Ffj%1Kui}bP zfc=y8xRTz)Gb}|0P_&O?8EQI@ou@QEZ41Yqurn7XSdqA3*WG!a_4Ti#{95%=P*p@CC*~$^Qe!pNVT+C>xLa52M@SV zOfkJm&yyP8DltXWIe{B>1|KfZrJi~jPJ;9BS2Hk(Q3md6T4CB)XT7Yyrv4K=8D54L z(Y@%X-1<2u^>gkEfrK15Gh1J0ueGAVaz&87mlXX*&uA$#=V#;9${XYlm4Dkah#uD3 z5CoeK6x*c9O0jg6ol!Nng(-#*KRtTQ!AfnT%nN3#c{#~g3<5t71rJUVG>p^n&Q-R`l zeax!uw^C<6s#(;=0wSo9SZ}#$R8X60{e95$QMc3Sw7J5JQDqVN;1B=WCJsDam)n+b}JiMR&ZroK=ygu?d@zV6I-SejeOWp88NK+A^wI z*HVRr!$ZB|ORrUFbT2wag`;cLe`(S!-Dg=0hD3Qnv4WBC_S&CbDR^W#LQ8Q(_Th4@ zw9NkD5AgGj5QOIsxpt+w53f+7U4SHuAV__9Xla#gYj+>l7usT1ExK`F{O zSjsY6o|l1Yzb#Bn+Nldflke=ayFdC#DhRYp{#o@Q)m1opnoXdblSlX2#aEtzHG$2f zJ@O_{(i*cGR{qtScMx@@7akw1i=Ooo!4Eycb77qg_m@s-Hvl2cxsXGF{UBFl>lrcv zOwb2&M{SPUr|)G?Ll?s7Coi{DtIitVDkeoOOyO6bLJ{D78&%a%vazWZ>Mo-^aM4Dc z-jEvW_S@Wu?nOu4_w(>Z3U(6k5z}ghC1!y0MG+Lx`^UVM> zZV%oZ#KY!2wt&2lM&nax#gPu7H5d%29NMHp=l?>K%2BBI=D=ts7!bxW164YIh3|&H z4lUT)PrVA;QN+5Az8i0~yB~u6(mTVhk3M<%F&qwum|$jQMz1G1=3+tuxUuwW#v-i78`82{ z`cReN=CbJj^ zBVbp%#bQZNPqW}8gH>O|F(?~8!67_zgjQ24gjp)(ai1Z>n|?|C(F678)BsX+y>!xW zuQ6ZeVPUmV@`s!;GR>{53SWsY9(FH?Qq)qfFRGkQAZBrit~)d_@kaSW?RZBBg4g3I zsMTydOJvxlc6T{ZrH!dbFxfo2TefdlAM`MpP7!fYD8kcMupC#BA!K!?K=7z2Z)S@X zn>IocF&aXt>%GfKt&&E|#EwG@ZWW8H2BEwFBBGv@`+=)0XU46}pSvZ<9RZ$S*4v6^ z1tL|~0GJw-wuXAc{~&RJDv;juSx0SAPX@iIL69x0QesIai#|lruY?}K$Nb`7aY8*r zAej+`Vn;!@W~G<*ds;l1=!w33Wg{6>J{0N4V)dYsf!n^ z2MVvHy2}&S;k^QJXD^P;u$Lb~vJj*piEYyYDkn1fR_AHB$F05|Tu7?ehA_U$qaYX= z1a=6-?8ph59@r07)nDVaUfK$=@nWwkj7us@C{XibkQ5{KEAfUH&_XYJt&-gJQ4LVIZHL;P{Liw`thw5D3 z%l?+D|GEGE`}5B~|NKBQ+k8z0IYh?7OR1m+e9>d!0AXTcmnAh*5E*?zn8_`?h3&{c z{IQK6c!8Uu@&bB3PGnqDrUQTgK_4vl1nLN@YOGDSJk?LQ3eN@fZ#4-J6=Y3(t-$fE zq}yB?(DChbUNh?3&FO9sfdUvxgG%%fnql!& z#rw5_D~(*erRA%#)}exStrlapg{_qhr|j%%;M10ewLJgAW41WS{)8bUMD2>25aOo4 zN=SmkJP3ln8*V|4hv5T3JL^w5PAizS*elH-LKcM;Xso|}UO!pNZ@3jy%8kZ*m!7K^ z)IQB1n&sNM5zyNa(DecJ!rsc@QgFi`&kd#H%l)sSuh8)wAxK!!VH_1dTqF#T+)Xkt z*6xuTy@ggUj9#E2utw3nWyj0k)m94f>?|;Y$e-}iQV!ex6T*9Vt}l*Gm%Zj)xbS-U zkxcXELh~D6=74tTM^H>iwlX4+4nY*?Y~$4k!yN}s41SPEUNFyPyTXC2%shS2Mom3y-S0v?{55t zs2`+#V*5;s4ehrhkA1~%`i=jc$w9M7P$I_uC>_`Q2fT(ySujKlUqum-yv7PZQFBk4 zO?e4kYrG^t2!9_gE~>|C0x5K&_vtu&>UA6V-WQ16gzY4%#tVj328a5uvNX(kX9k5# z9IEALRevUYPk8OL8O4U26SZx1L$PIb>Y|=k&*5IZo`#!^WiRuPY%~(k)44WxP}EEp z2NPhrmcZMEFFL)t0eo_KvFq1GB*5MV3?I z`B`7Xp*O#2;%TPI43^M;Ye|Yy$sm$--b&JVHjZiISm}O>5Th4<_(eOnVUzXW`~j@H zC=&buOp{H_AcQj#0#p&S<7`0?&mU$X6Ylo7#mnJR20{toa$lDVO)0en@8ES%{G8|M z4VxW4WJkaLUu|*#dlX9tqPF^C$eW{_}?C>p5Xt>J3`TcmqUJM(mYjkd_CuOeQfaa6COeO|m_fTBmD0SiX1ViQBh?4SP2|7p8_;}7hvkN#HRfdI56 z@JP;1f5}pd2beL~MGHZ^*mMiC#CBhIA_P%<(3@RA4-i<7)|;gZ$zZa7SY@bKq+{PCy<_l$ z(wAt{aV=P4XA{gJ1RM|)MTwRbiKrn1oNKtE`&T%s`%`R5_6xiwuJH6PC)*K(&aJ{O z;$0OG?yG#21~M8gQ5TlM9Q61bA?!`k zJDx%O#kJaDe6l`K!Y3=o{^4>(V2i8zYt>1bMPiA~e96-NdV$NFsH0L%9f2pNrs$}H zFH`nk<5tkQK{Mo66fECVqoN_Yax0dV%IYNqoqQ6A$e z$g$Y^TgV}kmKpymTX^+V8-4<>0yJFRdwQ++#!f4BJz(<$X_GLYoBb+o`cuS~dV#ey zdtkRZEz`Bq8|&{3UmU$(8I1wEG(^kiQ9-Ft#p7#je@5Z-H9%3>W#@jIf*2v)NQi)b zNrjhO2JgG%W^@@HqnAb3(b4ZS43dvz1IglAA{X~m1~oJqtf*Z5j2m*y#LZ|Vo{tS- zs(4d?eAf`f0R~N0rX`D?PJkd0_$Y4yLEU|yH0xbWqF0l+3*b)A$~Ns+cr_2b`(>gI zR!{3(a;`etjgZj?Ug5QRPJjCGV?+5%ucc5*0E8}NW>_=7c$S&tdG5lpu>3Wjdw^4x z0#AO;7GHb8j{M0mv3apgZ0@$HS%73_&^CPF2ZZ2RMNFz2K&(YxGQBrSmm-etNByzv7+o~v z*Xsx$lI($V1fh*sgU$>RM-G#K9%NHNLmeVQiArp!mUwgdL(je|2qH}u?i-a@TW=zc z9={0(qq#}Bl?O>K35$e77mL-<&M@~E92gb((I|WlZo0pq&@boqvNm$jcpVrDC8RSV zSDRGFCG|Ac>F41MS-v|6LhWn`Z;r9sR9ss^(3@H#Q%w;MndP~u{Gd&qXI14X#Q;HD z!#2G$806-NbsM`MEt3|D5tPk6jlG?E0gNGD#EX-o{!IdWrSR4Di^l8dTwg1bLIUnU z`=bX2xFB~4&_g=SZPl%{=Q0%P*$5W&lBM#xT6%x*lhHH_4 zjukz+@3~PuyjU^{es!fX+N)x5_D$sv)zR2)uk`Kw5CZ5l6m>G*M1(vdifHlFvIH<|$gK6%8p?!3lItUJjpJn6w8atPdWZJ)Hcj!#>5XP<5UqnB;P%NOw0 zC2rQPwU)a6K4MYbi(o%x&4d6=)W!gaCM&ScCSO@)V@Dpb>0tuFMJx{uh}sYx)eb)o zZ-~7Wtcgx#uz#emqz5xdy<`B?x+Dn{6+K?-K*|d7qEP$m zvbq-HD$2g1+qCuc;nAVBDoeb4>_ZD3A5t@}v#?^c%L}n*Ri2{SlS|4-(CA$kGI1 zYsE0QKw#-bmJHa99|I`}u}Z_V^cU0unf4MT{b!UP=H0B($=poP=m%|Pa1eq1pK$8L za3=)eJ<)rk=KFQSO`Ymb;8sT6oJ1x}-VCJ zhBEa$okS_9HoB_UryITo1nkWa9!dgw63)YkaoG1N6TJr7hMlN3oJgdHbpJ}}T|toW zC5JpZIB~L?&}1dj3HaRri|fWhwoguIBlN3GZnb5)tOMv(KKEwDqK*m%@r@;;d_P7P z6w|5x^etksv~n-N77mw5L7RgLqV_jbSAQb9x2z0E!YX%Lcy{>sC^zQBwe*SST;&KYB(5g4%SD5~D;!6s;(9 z_m&{be;ePW8{uO?p8tkFOI6nIMrETqL{Ma((G1d#1zk&QrD>C|S(Kt@^c{pLDzUz2 zD4VUodtN!cYY2h>eyD;GD%Q3VO_l=5v7K*-AcFAxwAN|N!@tT{7&Z9{4dm-nkw4ZI zie4$Z{zgvf=ix(**M1(}XuQujc+!9fIDB3Y?_GKb22W2z)j8-axLPWyYo%zQ{oL%(B|WRNC=%5K#+YN8#h@#ie~Cay$-E!P-xF`d<`0`T~@%5 zSW0e0<~U(TzV+Yi+>4LXjwP+8w;^hX+7iAxIxe*&KoGgPq~*!0APC9~3toyGo~2+7 z9u+Z+X3|hzr%KU#qGND3$cXMmM=#%a5f)beNrNSFCE?sv<6)=Pi-#w{3ewmlEZ51i zXIU$873p0=kW#61ERL6AyuCM>l22B9md#}%ADqBgsO7gUE733rz^<6YD>5Lc?cQ#x zcMugc0;1|$mUqdGH{?a-$q=H5Iyy0kutv|5{JF*#1vlz>QN0bf>v?`suOqr*d$n^X z?Ug_OBPjo?w&}y4wM_S~TfX!l8$z9P2gVq(2J{oeU?_2GFSFuOakmuiv@kiw4D?Sn z@aUIpX5=LO8O-R7?~mG~H#VMo3%C*86B{F6uPg$(uVLpqJ+BcMqi=_b$WkvEq#n&A ztSG9l{=SAA4X5?@dOOs%#!Ov@8G8DM?ZZ)l&9z4n1T}N zwr(k5-coApoceiKL*uodH{57Ajrz4d63Ww`W)P`#w3M~+3xWY$szKLM3Hv|Jbsd!9 zu`n%_ev>@vP(ZgM-});XCGf-QyB@OM8}7B{-gQ=KWyvxBqIxUDpwg zfm}3RH=e5+zYcF+HZLr6xjeN+9j-O%QHln@AFDs4)~j&vz7T$vwQG6#uw7B59P3r- zoCuWThhMVsW3O4J{m(47YQ44eZSWa3K?K1vM!CglHk&z*;qby~)Vb^nh@4cPHNwiG zI-_I5>mqpfTaEc@yKEquL7LzWqyp0>I!epF-S6lo94Ow%C5(h_FABQB??**+jNTC) z>v?)tco7{N%X?OsA=`&+AlbGKmp>9($fXAR|KR8sKC4w&e;ylLTx3I%t4!}2g2-hU z1UU*O-x_OC#P{WzEOnGLSyu(^VdEtbC(um96}tZyXpQKCdWwKBy0I)zHyds=oHpJL zJ2t9e*&}{a2rp_Xr$41-08+11$ib)9uY-D`OFu>zszVipseT@w)UU~}DXwh|M8F8U zI5BSH2Vdd+GQO%+N+7LX8ipzLyId}-BPdw^y<(qHQf!P^EO|GkbA&#^mcR}JRJ>Gk zbf#OHITaPgmqF{AqEU*<>ALaUuN!VOocf~;uL`dHHxSU}iPX{29a_+F`PVK1;RC@) zFvEZ#bk#(qR2di=8oDa^L$7$(5JZ(pP?sBY3^#QTB*!K%iU^{l1}~gF=jXuk4tM~8m7+@tV3h*dIxe+Kj+EDb5-Qm4L2K3m&%4WFPj&(#`{|Z{Est1JVpQj zDD+80K~$;QAtub!ZGSkZAsie3K7B)du!8LRLyed9b582#Vaez^I{NKUo=~SO>lYOY z3r6LmWBtV{(r~lk)Qk9a!%dxvl~E9JMO5?`h85I{aS{Qeh@i**!WT=*K8Z(Bx#(DL zi$51!y&;d=Q9Ccqi>@VqxCI@*wdM}Vs}22Ke=BWp`6G53Kf0mc{LSAKdS6v~i`@O2 z*9jmTE)!8Lj?-e2?GUoL27@6zJa+*XhXw=Ao7WcPYB$yxTO8(sRhkfQ5L zzo#+J%R~jk2cye+Ic{9;9bs`5^Ovd2rR9Rmuq_Q0N6)If=1Y0eW9t-Yq)7#RJ?-}7w)XwPHD6f9aiN--QS&c{ zVGR%RM{Q{7?v>BpZ3H<{Dk;894~uGW6KT`B=rHlc+7_WAh4nI;7ZrHpQ6H(j{ZddZ zb(m6P$N9DH>4c-RDMCOu_J=3%~MN zL-qKb;CSh|-lGD)s4boymI>;;Og&K@K~?^~hDZGE(f8=SQe%E}9<`-0Kg!d0YQl6+ zUbd)c1V4YyYYZw5o}qs{Dm*d>9j1FxirS*Pue^E+%OjkZh*1BQ-!eU{T7twkBFFI+s7ggoYhWSyk#-qw9)ywI;;m`BJ z{CY-1epJ@WaiMzLQ4u#2u~@p+a{=q9i|{%+VX%rUaftk|g0ew9;iLXqFRn+uF0Zn& zIZ9jUyA ze7!a*TR#uW)US0Cre$SyK@wni_#r>{TmIvN6P3{&VKr~_gRZ%Z+M-LPphS3VylBX) zmy7Zn@)~Zbn5TNbaCK?EUpL&0P8*M^B&s7SA0bG(DRASc17i4KaLon(rLj~zED7pf zm+A}u{6=)G;=v=HALZ#7m5J97Bp?)tcr|UXr$VFMI6Thhg|GYvK3U7xER*}ZP zD8KQZ7p>Q|RKBsSDp~eS^d1!=Mc)&?wqDlrlpmJylj!=ABbW7h{5;GTkf~m|4|&MZ zfVuQagEr|meAbV|!_o`_f`|zSa=pk>{oD+m4eskVy7r^;brPnA)BnG{EBmc1IqT={ z-mjP5yQB1kS&|-+44FxkNb@iw2nvXZ2axi@0}>BRBqDeRAte3+Uh{$!7>I^E5+FiC zphzSn2oYtO%w)z(Z+5%ej`z0jV)Og`>ig={xnA1sw%t8LmwiuFeOuM3s_)cZB?vz{ zY+kVz8O9k{>Yyv4Km(?anDc@dec$VV%^2v=*0GLaF;r~!`7t|l*c*}!VqZv!8yukO ze8DcdC-*T~81(Xx0|}^Y8kj8f0>Ch6D9=rFn9XPeK`x^ z!jt-$X=XewZaW>(5th1BIVqeBW)6y{*i*saaj)AHlgf~v4;a$0u4iFnC%q5XXjd^{ zB6`4rjNk}v5CO{7&b*z9i&Ncr7&)C|T#ng21nza)Ux4y7kcf3xBiI9?GqBXmP>wj6 z;?Mp^d8aguJUjIKhsW;N6$In*Kf_5US*eL_j{~^7Z~&`GSHhALp0c<;hsi>WIvi@X z311Hi;_Ie%O9K`r9S5#u8shX##mVcv>MT!i9Fno0eUe=i(i331{SHSho6 z6k9(!=pz$Y;*M+m^0Uf79sa}oM~U+v+YjCUU_h~ppiqzDfdj2?BQkfZBWJS8(6H8I z#g{|1u|CV4g%R?A5RvF8S#>Nx;|3pb@qwRb90eFC$`Ve*yKyP~UUbG5Di)U0qOph5dtB3SQ@2<_thm@4kk@~rHGF|DrFCN3Fsau-@qMDdm(H0IIAziB zYmJhoEzn%nLSgpG!Hp1IE*)HDz==Yg9hQ99JP5sOWax=6;F4{4=TStG2NzbTgN_;W zVcf04o4*1J1q7M0QRcAv`bhl`26yZV^6IOvuA&y1sp4W!Uh_PVjAXGfyEc!zD0s<) zT8GIS@8e|pRtHB>lVGU;z8GnO?Q%0=2!u&-sbBDe==Q*ohsNs+b^y7W*E3QwNgzTi zJnj}aFF*xac%t9f#b&Z7|G@W2nBAG$5|hX9nZlQ6~ayL-1D- z{q_^i@VnB8$O8;z@`M$x4QpZqOJ`u&1fhb$gEl{^_+NyQ9I5}oD4d9bpfmoiR_)qI zmM(~7Xn2XuC0uH=zNyF)^gx3*t>WN@iYbWGrwPx*;4d`}+l$U=55z&3=SQsH_cvg37Ddc5GjL^&wiwJ86Ho^xt$V6SR#Wk(zqOY zRfFKcyB_TP)PR zj~%Q`tsrBnI4wm@te6OSf;)3amXN726M%F$>Et#U(N71A(~*~+kk~>+oP1oZszpF7 zDEMd*-@YU+xH?@dH*LRd%}4DYshSObj9lI@-zxCkHO!R0HQ1L?zLG`HBYU&LB1 z#3noyZ@};&!~XLJpMSMq@F$`mI1rd^zKu!~S0Z4jmm^sgZ5>0}!uH!kohb??E;lK2 z^aRUID1>rcmcNw4l)>&XI;TAl=Q2SoI`{X;fLDeq%F(n99t(h$vM4z6I6|O-A}q!w zNQiiPMT-Y%oWY%Li_K_6=X|iE@+8FW?6oOBjf>+YKas`e4A11{Zo;4-WOS-j2HzD5 zf`iI=SOaU=DBtLN!^ou^-o@4}JL!YiVmmZ`j*+wIXvSs8HV80mBNWb=9?@<=7(Y+LV-px9 z#WEx%sv=@(gR6tITBEcG1vzs6gV8+pc@PS1G#aaDt4>#kMz2-|o7$gFI87Jrq&0NZ z!v^{Qd(g9lj$vI15we2xUeKI3Bv0_kod6Q2vQktA+!IInBubFf1#c9p2Eq1LqC@=< zXr0`f9_Szj8ICY7ESU(7jy%W&6lfDb;@lO_6i3F?pQc#~k8}ypowWJxJPx&vftR?Q zm9j+?C|x#3le$n2p5RF1a^yLN2g70QQO0VGVPE2I!<(KLq+v}5CAopx<4E%#9@Ueo zLAI;q$~!zZR3llVJhdqpj*V~JxvdxQNIb~q*Pu2$5r!M_@}3#wV+Qa?L%47TDBy?} zQE=>uGn#{B=tbBE(P~~uF+q||{xov%bIzFsY|ro#pgY|Li zqwPj8L-gY5Xa9putO{51VhaO}%L{K6{6ZiwPS)wT9~`^kQ zL*ls9J@h{q+n%`W@cgTz_dh7_L~4*`vx(~$w%@H+8`wN`E*s*SEX=TJco6NR^*L^w z3NOS+9Bhy*;MIC8mNb}N&Q#PcTwoE?emKE59uVGn7p*cfYE`yQA zS39i3!g;)hJjLIlb7+eSq7FJ%csFrMeT7F5F)RdcQPIa2O)Ff>QJNkY7&z4VSNlca zL~4-v`FSSmyWEyq89k4YtU5-rOc#-mYqN7&%d}slcEhnA3kw$cMe;7b zTR5X3j3(lOH}D&B7tZLF_&^#NqJdh$7GO#y0`hoBEd3@w^15)7NiPdt0^aj|T#mns z{=r*Jx8&uy4WPZT8Vap98^~}>hP4?x z=>wP?9KTO^Ys{tj^ zOW>2Vac?o)Tc<|)gW^uEQr3sFvLo3>Nc7^aiF7#a_F`n;WY9aP;>zt z!cpR*aBCEcib2Ahfc^-9BZvvG;C5Kb1DG*64Y6|Lu`kYONJyH!=u$bNbGbyoC=9m~ z8IGfJY-2d8%Dd4y7scUJGSR@{?;k}} zz!#I=e|(APhJ%?$znh2yKscizzJPPT0r$j3CiFotQCPUAkcA})Im9EE!h)9jlDJSN z%w9MbSHKyqGx_^E4Q)4q8N%@e96X*T9v1OVD;p8#p=>;I6ej`(2Jz)@OS-_t4+pMz zTU(J_fsgUQa9DekG4C;g+M}V7%@8`ncV)G>JaYeoQ9ls{q2P^5WdnzrO;w=f>6$D} z7A~*gFf>dSYABA>2OIKKkr+J8ni)z%OFwgXK`G$qfr*8H?&K$&`H65Dq@i(IxeYIs z#seel!Uw{<2?swFq=P1wk&x`zOq@Z-K_0`HL9gka62uUJrQu<*EY@Fj zr~CW+AF2Prh@Y5(jEs!nuFD;q_>RdXj6e-Faa)olRcm!E+ge&Yw1O~08n|t$gf=j1 zRAmosbIT9ewB601gg3x0oZ-pfa>PTp{p2@1-EJ5kF5M?1-K3WxZNg2t5uV5)I6>_j zPp15uxK@uO~beM5D z^tyb0O=;M5;$|RbjvLXNgvcv&t}-r%JaQ+1#2LerY#@T{JRTlqubfmy#KBRFPcDb_ zG!Y-XyTivyUezE_lspWJ82Kdx4}8726}hv)3tLUtBU%(gS!`W1@2Mc_prez%S0HHK zQ$cPXNB@ISKQRS?_I6P-zm0=}yVcQixHF`otJxT62MV$_PX#$dDl#7!QB?6Y>@Q(v z($Mms{P66HGg>mJFt~po8NG5OKjC4MkH>ntf&_ZTCXa*1E9BnsrtHR(qEX+IbItr<~M+|t;+k+pFZA=ih)*tT5 zJSqT-g8x`5_+x8<%i1?EZN7xvyNj4w35UduLrHi}fdU5QE_0m|gu9?e0G!A?2;;%i z>u{;g|DHKJ@jv~Sp8d?=*kE=UHzK|B-5a=}6`^I^u*feNKz zTQIZWvjeVu9zgJtWY!j1(F2>b{G9jURF%=Q7j>I0x7hX?_CJs()0m5UZ!e{Cq{pIZP@}^~(mu%WbdwqmvSylS!Y*M@ z=9oXa%@O^;r*4v`;qStUfR7%7jAjjjni2ByKyv;bo&Ha+0u%!3#_hw$`N-Bq2YCWm(WUM9V@? zCD4f^a1&VZ9X=Bw|Y~`y5=_&egl47p`DVhS$J>IWg>i zplP*$N!-b6*RCD<{M|&vF6W6V$eZ8)e*3f4>bII#F8@*UvtJr*-F!Ry=&zj3e)OGN znoaj@tGi;A075>5&G&s!5YOn|OpbmyqTA%8e&_cf3b;Lhj(3|RY!YZSFNEdtQg;yK zwM)uda3`L`DQ5W%xF;?Ik%Vty8r-cse!J7fY4)=jE`MCf%j16d;);tsayRMN>_pRf z^?r8a7r0aul?atV3V?FV+ajPtXbE7_5ktleEMgtOiR?q8xb$Wmg&zkmu<(!I63%|~ zFZ!`bu7PG<4SV3(v_sD#?7v}TmF^0izG%GvQLR>|;Vx=VqnY7y*B=fPqnbmDjAvb{sdTqFdmXH@f?O()Eg#%%{g zKgd%z#T`^oMBBsQUbiWOLL~=Pm}b)1{*Wmu2MbGxfEB2~8bFRRSm4i}l4xShib(gT zG>&u}{pq{P??eaKOk$?9Y@_1`8s!@6u(%flhgLHX6Q0IF?+Z?jaIInl>+V_`gDTi= zO$E@kXy-62djTiXUVsvu!!q?VI7hdMwOvD4OVx)mzyX{PI9mt4AW}_O2B{yOa`17W zx!!8Et{+J85Xci%5XNJE9pu^q2a!CV!ZH^wVdvTkqkN#r2J>uZezz z-n`CdC)rsRyJX6KzjAW1ryDcoQrf z9<-eGtT01~IrD)^xc267OPhM!sLIr{?a2k6HyKYnZm-ABi` zAIpSzYZ!--$Ri_1PtKv2edXgXWncc&ze25mftjHZC`!Lh$K<)bs(R7pav5wQ@#+SB zMl6l=*(cnIJiJ5L$KC&6kSDGn?5y9t`?DWzZIr$}3Y-;uc(}L2`vGbKnIf=*%o>Bu zAg)-bH|kiuFr1BD8qF>~b1fUi*I&14#rQ^t1sV2WjGViO=F%mk3sMFVGb+RpF1-j~ zggXK;q|^Or8v45&#y*Mu2g5ya1z{jFGi#d{&W`>qlHv=)FaJh%|GodpE835gU_uHfgg4)#If@js*&SN`xsCS(_G51`YyEt1sJBgau1=0&5LandSfhUQ4} z$c+cv?1o}N$|Lv<0yc;yQUiSfUi)0a8Oi)8(8OYI5tQHDdSPlO zA{B~086tY82ZKKq1$pI_SK4>)PXB9rtNZTIg^xXd|C7H4 z<@jb+uj2AaPgo^J@Z>N{Sb~x0HQhE=u=5I)95h+`P)pR&eBv@5Zi-TkC?N;{RSFj>$|&+l zelSh}AxCf%2%5r+<~)(cIU|5P685N%W9@%1GN+;-3}|Voz1SSCy@mBWe>U>c7qa!A zeg_R)p3`d?Kq8osP$9MSw1mT9GT4_sgfCw|h7xyAM5XB)-O=HhncE?-qCX)IS(pIa zNtGD0IgH^@EWJRRpI`nam4FI>k)fgSah+MqQ$MP>8h|%Mm3X`(|5^SKc#Iw0 z-alX%FhN;@C#Q292^<$-^c$-HQBeTQ;l^WtNMj<7YMn&?gK;@E1$pz$H``zN${+kg zYir}HjfqRm=BK}iliqpCVy++|y)BXR6jfEtFEvL}s+cI+!b~j-Swf<8mA?n*UbjhT z`6?dyqswF_#ECP8$FSKRSAl|pc)X)5F&QT<6h_WSQwe-NfcvUj*8E`&z=<&_i3%=w zAh(9o)Y%LgLerA_uSd^cmJ)EHtcf{+A&v%NkVB(ET5XFPy_7IiVFX~ET}DBXM4t(Z zkYxlDP2vxPIo|w%7GOAnJ37oyT%sI_yO`F2&t(*GAs$D0Vptci&GUELQ^z&`;qf>% z1>unI8*jYv{!V%4UmEq=mq$MNTDJbq_s}j5CxFL9W6Xj_4o}1#bkr-@URlxcKTs@N zB$JT(J4N=0GmOik_n~l6a&Sf?B?2bhWSz4T^?!y#e@9- zOp5VVr2esHHjctRf+0}V0Ou~LQ#^F$42DTj3vf;V6Jr&0oXhNl`Nsj_b4Zj;Jw`w^ zf~uGhk;3~Xo)Fg<*(C01A>aL8CN+dbG>yU!&R%~WWN&;BP9A*1yxYmX1r0ml))AM@ zcV#WkngcYe@c%a^2!9H&rbh!r``VD>gbuu$hBA1miI-A zN;6A1WmS@hOi&)2T<1M>30wuE=iO6uFTQ{SUqKe-AU{Hum{4P24Zt=&uN>~65c2p` zuE%0&5eXiFG(6>jhOn7Z!(70b=U>bwE?&sSE?msU&R@ara$XAzk7zrqCdJT$4rN@K zj}Hh(%OHn9*jJ={&Vh#b5Jgu5XMucmrpoD zIZg2D*{cMu43vjjfl9E2-!Jgv`lOqHPl09<3NqE#*LQtwZS4-q*22p#zZ_1ANMt{% z^HdcC3DI3#eE)mciu;59TH|wVEL&zXzzqu~lUT`~r!`YvB%D;_#woEF-g#-Kpx%5) zaj62RMFJ#?I?EuNJL&+NGO+2Rz5o`?sdLQpW>D~(INqP5Sl&*LMI{M{U-t$&%D?^9 zKgSJ6yjuhP09^f`H^ggW$E9i_*$jINgBJc4@JCUQ6W!$QdAZ;X6nZ*w!WXfI3v^Cs zVL8s^7qIZ;enlepr{NTd#N?o`c)NzRd8UB>a3^^q~P z=RM+{_)(4le4()8DaQK&J_57}7!`oWSn}6Gbl558`XMR{PL@HT4#S}%=eY;rY&ME< z{_zVR$u2+p@vO!TT=u8%EihRz-sn5wP7P{xx4o6WGKgZamzxrD0YOH988pzlM*%Xu zay|=EnElc*QhWR&AUIq`9t>RJUve2>jsvLR*IBqw04_Pl@(|R9R01Awfgj5L_8PvC z_qyHAE#&_+ev?!L#B~PvTlISVE^Y@{fBp5>t)~=%e4I}&XQvj27him_y|{S$Tbo;( zw`$eexk*x9&fZK!Vskc~-(Y_EX;kYl1My>_=0up+0GlZ2Eby!WHW7>~fR6?t z4>7ufegK9!2PZfm00lUI2?}sYO`!1$YzAFGXLuqTz^rf$eV{51FF@{VaSis*+UiU_RWD})f`2x`P0Z|6+| zi7?7R!dJK`5Pv*#xukv2=mp`c(rU4e-CpfH@mC)oL9vpmtK?KgsmQfwEMnV;U_g4ZeLLcsyx+NTp(4N8u z*J)H6lNe2!L4ROwczAf>Q=j_OdI;o${d^n>f)u;jYIpDa{npmzAEFBGW8z0+?g)XO zZq^k1dac$*vmfB5IkdI}56z$|7QYQ=qgb}m#M0<-bcDyz5uUhsC2OKdG>Re7L5v1* z$h3xYet9Y%CGzXf_J8aM!{0(bz)grsh>4ySsaSlY9~^~v1Cin=P@o(bTs?kyqx2xc ze`QPX|E_ zu!Bx;Q|;JXDz@&i|gQ^ z1eo>4CyzA&M$nMw?EB4C!z&g9tx^N6K1psC{mC7{x0!XsSQg>&%THU!> zs}0`88OtlD-6>}DpCqFX^W%sRYK`jJ@}1wo5vAW~aep@=!J$la<%)&H3W65{e*1WM zKo}Z!1;DBwC;$&F_zkHbQof>FXvq}Zydjue zj=4Zrpt86{Y{4&Rj)DT9Kfq40H-!)gKMJjO8{0E>czVJ-NN%wsjE?jBXbw$bxO@g@ z2HZwd=mPhfaT}*+;rXY;Q>gvzW?sSL#qgt+hLP|mf!H7r9e{;m*1AhPo zhoQq8rG+e|12$I%<4zdU=3SsO8cH>~H2erQp^-Y$k^%<)lrPdnT%bv)LU4IxNr}$^ zvIv!-6ad4cR0uVNFw%gUppAy&5-!-hQ!ee?fPiU~bo2$vlbf5J8yF>;J$v@-B09z! z687}*&?)d(nphsoxw&lR(z(jt;aJPRY_k?YS+H_u1&ov`X=2%3;2a&fj6C<}8RxKfbqXl-1$L&|=ooX7YAB~g%R5hcyQh!iNP)*%gW&63YOOB3 zu({p(F2+hmaoQIO1%{(kmaNEya)o#8^%Im7#NgeV4!o`lAfPW7XJQ>7uh51lSVB-l zQHCG_26!M4lwm26*#v@vyYtYb(JEjx2-PV@t$80wv4FyV8%ybDFp4mR)xwjwFq56* zTb)k%&eQ&YC-UjqkF^FtL4l6knAu#a{bQrA@q6tJzqTtcl~D!qvKb0qvBc*E6WAP8 zR17j6tx1&!9%9z(r(_g*)c|3F49yz?!_ep!_vvk~pcc5>ZExQyb+>15DduFEO3+uI zURiC;UcGvCetdi!_o{FO*HiPPq`+gXL6`_Au$AS-*z~j;uWW6#)L9n}#a<>a zkNkA+p$vJM+D|#sS|i8^A;f1YHy0PeazDQOoD*O_Kr_Xx5Z(M*3%UF3O8!Cfw^a%d1eWI(cP!2#)34}fXHV^S64KAFcB#sQVwmKLo?rwCm&OMy| zc)Q%)nZZQ*G-%$#)z&lpmGaGQqci{Bd-E$#(t4qoNKYNdo&rxq4T85SZEP%D>1?+C z6U(`;Y;Got7^Nt=G8{%Z)Cor6=VCc3K;9qdWSeNh!M}uKdlo=)E352GqWSZFrQ4a> zuCgiAxP{T9g=e3A_Gy3M*o)f-Pv8?#gCN;<`ukUKoD$Y&l^cH&736>>6(aqX;002ovPDHLk FV1iR3H&Orq literal 0 HcmV?d00001 diff --git a/src/Project.ts b/src/Project.ts new file mode 100644 index 0000000..c39eaee --- /dev/null +++ b/src/Project.ts @@ -0,0 +1,17 @@ +export class Project { + private readonly _name: string + private readonly _path: string + + constructor(name: string, path: string) { + this._name = name + this._path = path + } + + public get name(): string { + return this._name + } + + public get path(): string { + return this._path + } +} diff --git a/src/RootProject.ts b/src/RootProject.ts new file mode 100644 index 0000000..e36ade1 --- /dev/null +++ b/src/RootProject.ts @@ -0,0 +1,33 @@ +import * as core from './core' +import * as path from 'path' + +export class RootProject { + private readonly _root: string + private readonly files: core.Files + private readonly init: Promise + + constructor(root: string) { + this._root = root + this.files = new core.Files() + this.init = this.initialize() + } + + public get root(): string { + return this._root + } + + private async initialize(): Promise { + const npmfile = path.join(this.root, 'package.json') + + if (await this.files.exists(npmfile) === false) { + throw new Error(`failed to find ${npmfile} in ${this.root}`) + } + + const npm = await this.files.json(npmfile) + if (npm.workspace) { + + } else { + core. + } + } +} diff --git a/src/Workspace.ts b/src/Workspace.ts new file mode 100644 index 0000000..15eabba --- /dev/null +++ b/src/Workspace.ts @@ -0,0 +1,13 @@ +import { Project } from './Project' + +export class Workspace { + private readonly _project: Project + + constructor(project: Project) { + this._project = project + } + + public get project(): Project { + return this._project + } +} diff --git a/src/actions/index.ts b/src/actions/index.ts deleted file mode 100644 index 7d3d515..0000000 --- a/src/actions/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import './packages' -import './typings' diff --git a/src/cli.ts b/src/cli.ts index e7fab7c..f019faa 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -2,10 +2,10 @@ import './actions' import * as path from 'path' -import * as files from './files' -import { Dictionary, GetRegistered, Registered, Updater, Workspace } from './registry' +import { Dictionary, Files, GetRegistered, Logger, Registered, Updater, Workspace } from './core' -const log = files.Logger('scripts') +const files = new Files() +const log = Logger('scripts') const scripts = (command: string, ...args: string[]): Updater[] => { switch (command.toLowerCase()) { diff --git a/src/core/Files.ts b/src/core/Files.ts new file mode 100644 index 0000000..24f71de --- /dev/null +++ b/src/core/Files.ts @@ -0,0 +1,105 @@ +import * as fs from 'fs' +import * as path from 'path' + +export interface Stat { + dir: boolean + file: boolean + filename: string +} + +export class Files { + public exists(filepath: string): Promise { + return new Promise((resolve, reject) => { + fs.exists(filepath, (exists: boolean) => resolve(exists)) + }) + } + + public extensionless(filename: string): string { + const basename = path.basename(filename) + const extname = path.extname(basename) + return basename.replace(extname, '') + } + + public readfile(filepath: string): Promise { + return new Promise((resolve, reject) => { + fs.readFile(filepath, (error: NodeJS.ErrnoException, data: Buffer) => { + if (error) { + reject(error) + } else { + resolve(data) + } + }) + }) + } + + public async listdirs(filepath: string): Promise { + const stats = await this.statfiles(filepath) + return stats.filter(stat => stat.dir).map(stat => stat.filename) + } + + public async listfiles(filepath: string): Promise { + const stats = await this.statfiles(filepath) + return stats.filter(stat => stat.file).map(stat => stat.filename) + } + + public async statfile(filepath: string): Promise { + return new Promise((resolve, reject) => { + fs.stat(filepath, (error: NodeJS.ErrnoException, stats: fs.Stats) => { + if (error) { + reject(error) + } else { + resolve(stats) + } + }) + }) + } + + public statfiles(filepath: string): Promise { + return new Promise((resolve, reject) => { + fs.readdir(filepath, async (error: NodeJS.ErrnoException, files: string[]) => { + if (error) { + reject(error) + } else { + const promises = files.map(async (filename): Promise => { + const fullpath = path.join(filepath, filename) + const stat = await this.statfile(fullpath) + return { + dir: stat.isDirectory(), + file: stat.isFile(), + filename: fullpath, + } + }) + + const stats = await Promise.all(promises) + + resolve(stats) + } + }) + }) + } + + public writefile(filepath: string, data: any): Promise { + return new Promise((resolve, reject) => { + fs.writeFile(filepath, data, (error: NodeJS.ErrnoException) => { + if (error) { + reject(error) + } else { + resolve() + } + }) + }) + } + + public async json(filepath: string): Promise { + if (await this.exists(filepath)) { + const buffer = await this.readfile(filepath) + return JSON.parse(buffer.toString()) + } + + throw new Error(`requested file ${filepath} does not exist`) + } + + public async save(filepath: string, data: T): Promise { + await this.writefile(filepath, JSON.stringify(data, null, 2)) + } +} diff --git a/src/core/Logger.ts b/src/core/Logger.ts new file mode 100644 index 0000000..50d9f0f --- /dev/null +++ b/src/core/Logger.ts @@ -0,0 +1,38 @@ +import * as chalk from 'chalk' + +export interface Log { + debug(...args: any[]): void + error(...args: any[]): void + info(...args: any[]): void + start(...args: any[]): void + done(...args: any[]): void + task(...args: any[]): void +} + +export function Logger(name: string, category?: string): Log { + const cat = category ? `:${category}` : '' + const bold = (name: string) => chalk.default.bold(`[${name}${cat}]`) + + return { + debug: (...args: any[]): void => { + if (process.env.NODE_ENV !== 'production') { + console.log(chalk.default.yellow.inverse(bold(name), ...args)) + } + }, + error: (...args: any[]): void => { + console.log(chalk.default.red.inverse(bold(name), ...args)) + }, + info: (...args: any[]): void => { + console.log(chalk.default.grey.italic(bold(name), ...args)) + }, + start: (...args: any[]): void => { + console.log(chalk.default.grey.dim(bold(name), ...args)) + }, + done: (...args: any[]): void => { + console.log(chalk.default.grey.dim(bold(name), ...args)) + }, + task: (...args: any[]): void => { + console.log(chalk.default.blue(bold(name), ...args)) + } + } +} diff --git a/src/core/Registry.ts b/src/core/Registry.ts new file mode 100644 index 0000000..3e7d8f7 --- /dev/null +++ b/src/core/Registry.ts @@ -0,0 +1,15 @@ +import { Updater, Updaters } from './interfaces' + +const Registry: Updaters = {} + +export function GetRegistered(name: string): Updater { + return Registry[name] +} + +export function Register(name: string, updater: Updater): void { + Registry[name] = updater +} + +export function Registered(): string[] { + return Object.keys(Registry) +} diff --git a/src/shell.ts b/src/core/UpdateScript.ts similarity index 60% rename from src/shell.ts rename to src/core/UpdateScript.ts index 4312e3d..161fa5d 100644 --- a/src/shell.ts +++ b/src/core/UpdateScript.ts @@ -1,11 +1,36 @@ -import * as cp from 'child_process' +import * as files from './files' +import * as path from 'path' +import { NPM, Updater, Workspace } from './interfaces' -import { Workspace } from './registry' -import { UpdateScript } from './script' +export abstract class UpdateScript implements Updater { + protected readonly log: files.Log + private readonly _name: string -export abstract class UpdateShell extends UpdateScript { constructor(name: string) { - super(name) + this._name = name + this.log = files.Logger(name) + } + + public get name(): string { + return this._name + } + + public exec(rootpath: string): Promise { + return Promise.resolve() + } + + public workspace(workspace: Workspace): Promise { + return Promise.resolve() + } + + protected async npm(basepath: string): Promise { + const filename = path.join(basepath, 'package.json') + + if (await files.exists(filename)) { + return await files.json(filename) + } + + throw Error(`could not find 'package.json' in ${basepath}`) } protected run(workspace: Workspace, command: string, ...args: string[]): Promise { @@ -36,4 +61,5 @@ export abstract class UpdateShell extends UpdateScript { } return format(data.replace('\r', '').split('\n')) } + } diff --git a/src/actions/packages.ts b/src/core/actions/Packages.ts similarity index 100% rename from src/actions/packages.ts rename to src/core/actions/Packages.ts diff --git a/src/actions/typings.ts b/src/core/actions/Typings.ts similarity index 100% rename from src/actions/typings.ts rename to src/core/actions/Typings.ts diff --git a/src/core/actions/index.ts b/src/core/actions/index.ts new file mode 100644 index 0000000..194367d --- /dev/null +++ b/src/core/actions/index.ts @@ -0,0 +1,2 @@ +import './Packages' +import './Typings' diff --git a/src/core/index.ts b/src/core/index.ts new file mode 100644 index 0000000..2f68a25 --- /dev/null +++ b/src/core/index.ts @@ -0,0 +1,7 @@ +export * from './actions' +export * from './interfaces' + +export * from './Files' +export * from './Logger' +export * from './Registry' +export * from './UpdateScript' diff --git a/src/core/interfaces/Dictionary.ts b/src/core/interfaces/Dictionary.ts new file mode 100644 index 0000000..d5a5705 --- /dev/null +++ b/src/core/interfaces/Dictionary.ts @@ -0,0 +1,3 @@ +export interface Dictionary { + [key: string]: string +} diff --git a/src/core/interfaces/NPM.ts b/src/core/interfaces/NPM.ts new file mode 100644 index 0000000..0dbc31e --- /dev/null +++ b/src/core/interfaces/NPM.ts @@ -0,0 +1,20 @@ +import { Dictionary } from './Dictionary' + +export interface NPM { + author?: string | string[] | Dictionary + bugs?: string | { type: string, url: string } + dependencies?: Dictionary + description?: string + devDependencies?: Dictionary + homepage?: string + license?: string + name: string + private?: boolean + repository?: string | { type: string, url: string } + scripts?: Dictionary + types?: string, + typeScriptVersion: string, + typings?: string + version: string + workspace?: string[] +} diff --git a/src/core/interfaces/Updater.ts b/src/core/interfaces/Updater.ts new file mode 100644 index 0000000..4bd1bd7 --- /dev/null +++ b/src/core/interfaces/Updater.ts @@ -0,0 +1,9 @@ +export interface Updater { + name: string + exec(rootpath: string): Promise + workspace(workspace: Workspace): Promise +} + +export type Updaters = { + [key: string]: Updater +} diff --git a/src/core/interfaces/Workspace.ts b/src/core/interfaces/Workspace.ts new file mode 100644 index 0000000..68d62c6 --- /dev/null +++ b/src/core/interfaces/Workspace.ts @@ -0,0 +1,9 @@ +import { Dictionary } from './Dictionary' + +export interface Workspace { + basepath: string + configs: Dictionary + name: string + npm: string + root: string +} diff --git a/src/core/interfaces/index.ts b/src/core/interfaces/index.ts new file mode 100644 index 0000000..28e6e17 --- /dev/null +++ b/src/core/interfaces/index.ts @@ -0,0 +1,4 @@ +export * from './Dictionary' +export * from './NPM' +export * from './Updater' +export * from './Workspace' diff --git a/src/files.ts b/src/files.ts deleted file mode 100644 index d655d46..0000000 --- a/src/files.ts +++ /dev/null @@ -1,141 +0,0 @@ -import * as chalk from 'chalk' -import * as fs from 'fs' -import * as path from 'path' - -export interface Stat { - dir: boolean - file: boolean - filename: string -} - -export interface Log { - debug(...args: any[]): void - error(...args: any[]): void - info(...args: any[]): void - start(...args: any[]): void - done(...args: any[]): void - task(...args: any[]): void -} - -export function Logger(name: string, category?: string): Log { - const cat = category ? `:${category}` : '' - const bold = (name: string) => chalk.default.bold(`[${name}${cat}]`) - - return { - debug: (...args: any[]): void => { - if (process.env.NODE_ENV !== 'production') { - console.log(chalk.default.yellow.inverse(bold(name), ...args)) - } - }, - error: (...args: any[]): void => { - console.log(chalk.default.red.inverse(bold(name), ...args)) - }, - info: (...args: any[]): void => { - console.log(chalk.default.grey.italic(bold(name), ...args)) - }, - start: (...args: any[]): void => { - console.log(chalk.default.grey.dim(bold(name), ...args)) - }, - done: (...args: any[]): void => { - console.log(chalk.default.grey.dim(bold(name), ...args)) - }, - task: (...args: any[]): void => { - console.log(chalk.default.blue(bold(name), ...args)) - } - } -} - -export const exists = (filepath: string): Promise => { - return new Promise((resolve, reject) => { - fs.exists(filepath, (exists: boolean) => resolve(exists)) - }) -} - -export const noext = (filename: string): string => { - const basename = path.basename(filename) - const extname = path.extname(basename) - return basename.replace(extname, '') -} - -export const readfile = (filepath: string): Promise => { - return new Promise((resolve, reject) => { - fs.readFile(filepath, (error: NodeJS.ErrnoException, data: Buffer) => { - if (error) { - reject(error) - } else { - resolve(data) - } - }) - }) -} - -export const listdirs = async (filepath: string): Promise => { - const stats = await statfiles(filepath) - return stats.filter(stat => stat.dir).map(stat => stat.filename) -} - -export const listfiles = async (filepath: string): Promise => { - const stats = await statfiles(filepath) - return stats.filter(stat => stat.file).map(stat => stat.filename) -} - -export const statfile = (filepath: string): Promise => { - return new Promise((resolve, reject) => { - fs.stat(filepath, (error: NodeJS.ErrnoException, stats: fs.Stats) => { - if (error) { - reject(error) - } else { - resolve(stats) - } - }) - }) -} - -export const statfiles = (filepath: string): Promise => { - return new Promise((resolve, reject) => { - fs.readdir(filepath, async (error: NodeJS.ErrnoException, files: string[]) => { - if (error) { - reject(error) - } else { - const promises = files.map(async (filename): Promise => { - const fullpath = path.join(filepath, filename) - const stat = await statfile(fullpath) - return { - dir: stat.isDirectory(), - file: stat.isFile(), - filename: fullpath, - } - }) - - const stats = await Promise.all(promises) - - resolve(stats) - } - }) - }) -} - -export const writefile = (filepath: string, data: any): Promise => { - return new Promise((resolve, reject) => { - fs.writeFile(filepath, data, (error: NodeJS.ErrnoException) => { - if (error) { - reject(error) - } else { - resolve() - } - }) - }) -} - -export async function json(filepath: string): Promise { - if (await exists(filepath)) { - const buffer = await readfile(filepath) - return JSON.parse(buffer.toString()) - } - - throw new Error(`requested file ${filepath} does not exist`) -} - -export async function save(filepath: string, data: T): Promise { - await writefile(filepath, JSON.stringify(data, null, 2)) -} diff --git a/src/registry.ts b/src/registry.ts deleted file mode 100644 index da6f608..0000000 --- a/src/registry.ts +++ /dev/null @@ -1,54 +0,0 @@ -export interface Dictionary { - [key: string]: string -} - -export interface NPM { - author?: string | string[] | Dictionary - bugs?: string | { type: string, url: string } - dependencies?: Dictionary - description?: string - devDependencies?: Dictionary - homepage?: string - license?: string - name: string - private?: boolean - repository?: string | { type: string, url: string } - scripts?: Dictionary - types?: string, - typeScriptVersion: string, - typings?: string - version: string - workspace?: string[] -} - -export interface Updater { - name: string - exec(rootpath: string): Promise - workspace(workspace: Workspace): Promise -} - -export type Updaters = { - [key: string]: Updater -} - -export interface Workspace { - basepath: string - configs: Dictionary - name: string - npm: string - root: string -} - -const registrations: Updaters = {} - -export function GetRegistered(name: string): Updater { - return registrations[name] -} - -export function Register(name: string, updater: Updater): void { - registrations[name] = updater -} - -export function Registered(): string[] { - return Object.keys(registrations) -} diff --git a/src/script.ts b/src/script.ts deleted file mode 100644 index 65a844e..0000000 --- a/src/script.ts +++ /dev/null @@ -1,35 +0,0 @@ -import * as files from './files' -import * as path from 'path' -import { NPM, Updater, Workspace } from './registry' - -export abstract class UpdateScript implements Updater { - protected readonly log: files.Log - private readonly _name: string - - constructor(name: string) { - this._name = name - this.log = files.Logger(name) - } - - public get name(): string { - return this._name - } - - public exec(rootpath: string): Promise { - return Promise.resolve() - } - - public workspace(workspace: Workspace): Promise { - return Promise.resolve() - } - - protected async npm(basepath: string): Promise { - const filename = path.join(basepath, 'package.json') - - if (await files.exists(filename)) { - return await files.json(filename) - } - - throw Error(`could not find 'package.json' in ${basepath}`) - } -} From a80fafcc8613aa0d7be62902ce9d426bf6b55b43 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Tue, 14 Nov 2017 22:31:40 -0500 Subject: [PATCH 02/35] renaming --- src/{core => }/Files.ts | 0 src/{core => }/UpdateScript.ts | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename src/{core => }/Files.ts (100%) rename src/{core => }/UpdateScript.ts (100%) diff --git a/src/core/Files.ts b/src/Files.ts similarity index 100% rename from src/core/Files.ts rename to src/Files.ts diff --git a/src/core/UpdateScript.ts b/src/UpdateScript.ts similarity index 100% rename from src/core/UpdateScript.ts rename to src/UpdateScript.ts From 961fe2f78f6174bb69f4df0396d0087f75eee7d1 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Tue, 14 Nov 2017 22:31:56 -0500 Subject: [PATCH 03/35] rename --- src/{core => }/Registry.ts | 0 src/{ => core}/Files.ts | 0 src/{ => core}/UpdateScript.ts | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename src/{core => }/Registry.ts (100%) rename src/{ => core}/Files.ts (100%) rename src/{ => core}/UpdateScript.ts (100%) diff --git a/src/core/Registry.ts b/src/Registry.ts similarity index 100% rename from src/core/Registry.ts rename to src/Registry.ts diff --git a/src/Files.ts b/src/core/Files.ts similarity index 100% rename from src/Files.ts rename to src/core/Files.ts diff --git a/src/UpdateScript.ts b/src/core/UpdateScript.ts similarity index 100% rename from src/UpdateScript.ts rename to src/core/UpdateScript.ts From 6b1c8f099465c93d0a2841b0b62a1ba20a87e88c Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Tue, 14 Nov 2017 22:32:39 -0500 Subject: [PATCH 04/35] fixing filenames --- src/{ => Core}/Registry.ts | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/{ => Core}/Registry.ts (100%) diff --git a/src/Registry.ts b/src/Core/Registry.ts similarity index 100% rename from src/Registry.ts rename to src/Core/Registry.ts From f26351a5b63271428354a23889b866ad889ed977 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Tue, 14 Nov 2017 22:33:32 -0500 Subject: [PATCH 05/35] moving --- {src/core/actions => Core/Actions}/Packages.ts | 0 {src/core/actions => Core/Actions}/Typings.ts | 0 {src/core/actions => Core/Actions}/index.ts | 0 {src/core => Core}/Files.ts | 0 {src/core/interfaces => Core/Interfaces}/Dictionary.ts | 0 {src/core/interfaces => Core/Interfaces}/NPM.ts | 0 {src/core/interfaces => Core/Interfaces}/Updater.ts | 0 {src/core/interfaces => Core/Interfaces}/Workspace.ts | 0 {src/core/interfaces => Core/Interfaces}/index.ts | 0 {src/core => Core}/Logger.ts | 0 {src/Core => Core}/Registry.ts | 0 {src/core => Core}/UpdateScript.ts | 0 {src/core => Core}/index.ts | 0 13 files changed, 0 insertions(+), 0 deletions(-) rename {src/core/actions => Core/Actions}/Packages.ts (100%) rename {src/core/actions => Core/Actions}/Typings.ts (100%) rename {src/core/actions => Core/Actions}/index.ts (100%) rename {src/core => Core}/Files.ts (100%) rename {src/core/interfaces => Core/Interfaces}/Dictionary.ts (100%) rename {src/core/interfaces => Core/Interfaces}/NPM.ts (100%) rename {src/core/interfaces => Core/Interfaces}/Updater.ts (100%) rename {src/core/interfaces => Core/Interfaces}/Workspace.ts (100%) rename {src/core/interfaces => Core/Interfaces}/index.ts (100%) rename {src/core => Core}/Logger.ts (100%) rename {src/Core => Core}/Registry.ts (100%) rename {src/core => Core}/UpdateScript.ts (100%) rename {src/core => Core}/index.ts (100%) diff --git a/src/core/actions/Packages.ts b/Core/Actions/Packages.ts similarity index 100% rename from src/core/actions/Packages.ts rename to Core/Actions/Packages.ts diff --git a/src/core/actions/Typings.ts b/Core/Actions/Typings.ts similarity index 100% rename from src/core/actions/Typings.ts rename to Core/Actions/Typings.ts diff --git a/src/core/actions/index.ts b/Core/Actions/index.ts similarity index 100% rename from src/core/actions/index.ts rename to Core/Actions/index.ts diff --git a/src/core/Files.ts b/Core/Files.ts similarity index 100% rename from src/core/Files.ts rename to Core/Files.ts diff --git a/src/core/interfaces/Dictionary.ts b/Core/Interfaces/Dictionary.ts similarity index 100% rename from src/core/interfaces/Dictionary.ts rename to Core/Interfaces/Dictionary.ts diff --git a/src/core/interfaces/NPM.ts b/Core/Interfaces/NPM.ts similarity index 100% rename from src/core/interfaces/NPM.ts rename to Core/Interfaces/NPM.ts diff --git a/src/core/interfaces/Updater.ts b/Core/Interfaces/Updater.ts similarity index 100% rename from src/core/interfaces/Updater.ts rename to Core/Interfaces/Updater.ts diff --git a/src/core/interfaces/Workspace.ts b/Core/Interfaces/Workspace.ts similarity index 100% rename from src/core/interfaces/Workspace.ts rename to Core/Interfaces/Workspace.ts diff --git a/src/core/interfaces/index.ts b/Core/Interfaces/index.ts similarity index 100% rename from src/core/interfaces/index.ts rename to Core/Interfaces/index.ts diff --git a/src/core/Logger.ts b/Core/Logger.ts similarity index 100% rename from src/core/Logger.ts rename to Core/Logger.ts diff --git a/src/Core/Registry.ts b/Core/Registry.ts similarity index 100% rename from src/Core/Registry.ts rename to Core/Registry.ts diff --git a/src/core/UpdateScript.ts b/Core/UpdateScript.ts similarity index 100% rename from src/core/UpdateScript.ts rename to Core/UpdateScript.ts diff --git a/src/core/index.ts b/Core/index.ts similarity index 100% rename from src/core/index.ts rename to Core/index.ts From bcf8708001f28249fd3a989bb5a516bdb8515cf1 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Tue, 14 Nov 2017 22:33:42 -0500 Subject: [PATCH 06/35] moving back --- {Core => src/Core}/Actions/Packages.ts | 0 {Core => src/Core}/Actions/Typings.ts | 0 {Core => src/Core}/Actions/index.ts | 0 {Core => src/Core}/Files.ts | 0 {Core => src/Core}/Interfaces/Dictionary.ts | 0 {Core => src/Core}/Interfaces/NPM.ts | 0 {Core => src/Core}/Interfaces/Updater.ts | 0 {Core => src/Core}/Interfaces/Workspace.ts | 0 {Core => src/Core}/Interfaces/index.ts | 0 {Core => src/Core}/Logger.ts | 0 {Core => src/Core}/Registry.ts | 0 {Core => src/Core}/UpdateScript.ts | 0 {Core => src/Core}/index.ts | 0 13 files changed, 0 insertions(+), 0 deletions(-) rename {Core => src/Core}/Actions/Packages.ts (100%) rename {Core => src/Core}/Actions/Typings.ts (100%) rename {Core => src/Core}/Actions/index.ts (100%) rename {Core => src/Core}/Files.ts (100%) rename {Core => src/Core}/Interfaces/Dictionary.ts (100%) rename {Core => src/Core}/Interfaces/NPM.ts (100%) rename {Core => src/Core}/Interfaces/Updater.ts (100%) rename {Core => src/Core}/Interfaces/Workspace.ts (100%) rename {Core => src/Core}/Interfaces/index.ts (100%) rename {Core => src/Core}/Logger.ts (100%) rename {Core => src/Core}/Registry.ts (100%) rename {Core => src/Core}/UpdateScript.ts (100%) rename {Core => src/Core}/index.ts (100%) diff --git a/Core/Actions/Packages.ts b/src/Core/Actions/Packages.ts similarity index 100% rename from Core/Actions/Packages.ts rename to src/Core/Actions/Packages.ts diff --git a/Core/Actions/Typings.ts b/src/Core/Actions/Typings.ts similarity index 100% rename from Core/Actions/Typings.ts rename to src/Core/Actions/Typings.ts diff --git a/Core/Actions/index.ts b/src/Core/Actions/index.ts similarity index 100% rename from Core/Actions/index.ts rename to src/Core/Actions/index.ts diff --git a/Core/Files.ts b/src/Core/Files.ts similarity index 100% rename from Core/Files.ts rename to src/Core/Files.ts diff --git a/Core/Interfaces/Dictionary.ts b/src/Core/Interfaces/Dictionary.ts similarity index 100% rename from Core/Interfaces/Dictionary.ts rename to src/Core/Interfaces/Dictionary.ts diff --git a/Core/Interfaces/NPM.ts b/src/Core/Interfaces/NPM.ts similarity index 100% rename from Core/Interfaces/NPM.ts rename to src/Core/Interfaces/NPM.ts diff --git a/Core/Interfaces/Updater.ts b/src/Core/Interfaces/Updater.ts similarity index 100% rename from Core/Interfaces/Updater.ts rename to src/Core/Interfaces/Updater.ts diff --git a/Core/Interfaces/Workspace.ts b/src/Core/Interfaces/Workspace.ts similarity index 100% rename from Core/Interfaces/Workspace.ts rename to src/Core/Interfaces/Workspace.ts diff --git a/Core/Interfaces/index.ts b/src/Core/Interfaces/index.ts similarity index 100% rename from Core/Interfaces/index.ts rename to src/Core/Interfaces/index.ts diff --git a/Core/Logger.ts b/src/Core/Logger.ts similarity index 100% rename from Core/Logger.ts rename to src/Core/Logger.ts diff --git a/Core/Registry.ts b/src/Core/Registry.ts similarity index 100% rename from Core/Registry.ts rename to src/Core/Registry.ts diff --git a/Core/UpdateScript.ts b/src/Core/UpdateScript.ts similarity index 100% rename from Core/UpdateScript.ts rename to src/Core/UpdateScript.ts diff --git a/Core/index.ts b/src/Core/index.ts similarity index 100% rename from Core/index.ts rename to src/Core/index.ts From 7e1f5b02f3c11683e47e4e81b803c8b7f5f22277 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Tue, 14 Nov 2017 22:35:19 -0500 Subject: [PATCH 07/35] moving --- src/{Core => }/Actions/Packages.ts | 0 src/{Core => }/Actions/Typings.ts | 0 src/{Core => }/Actions/index.ts | 0 src/{Core => }/Interfaces/Dictionary.ts | 0 src/{Core => }/Interfaces/NPM.ts | 0 src/{Core => }/Interfaces/Updater.ts | 0 src/{Core => }/Interfaces/Workspace.ts | 0 src/{Core => }/Interfaces/index.ts | 0 src/RootProject.ts | 2 -- 9 files changed, 2 deletions(-) rename src/{Core => }/Actions/Packages.ts (100%) rename src/{Core => }/Actions/Typings.ts (100%) rename src/{Core => }/Actions/index.ts (100%) rename src/{Core => }/Interfaces/Dictionary.ts (100%) rename src/{Core => }/Interfaces/NPM.ts (100%) rename src/{Core => }/Interfaces/Updater.ts (100%) rename src/{Core => }/Interfaces/Workspace.ts (100%) rename src/{Core => }/Interfaces/index.ts (100%) diff --git a/src/Core/Actions/Packages.ts b/src/Actions/Packages.ts similarity index 100% rename from src/Core/Actions/Packages.ts rename to src/Actions/Packages.ts diff --git a/src/Core/Actions/Typings.ts b/src/Actions/Typings.ts similarity index 100% rename from src/Core/Actions/Typings.ts rename to src/Actions/Typings.ts diff --git a/src/Core/Actions/index.ts b/src/Actions/index.ts similarity index 100% rename from src/Core/Actions/index.ts rename to src/Actions/index.ts diff --git a/src/Core/Interfaces/Dictionary.ts b/src/Interfaces/Dictionary.ts similarity index 100% rename from src/Core/Interfaces/Dictionary.ts rename to src/Interfaces/Dictionary.ts diff --git a/src/Core/Interfaces/NPM.ts b/src/Interfaces/NPM.ts similarity index 100% rename from src/Core/Interfaces/NPM.ts rename to src/Interfaces/NPM.ts diff --git a/src/Core/Interfaces/Updater.ts b/src/Interfaces/Updater.ts similarity index 100% rename from src/Core/Interfaces/Updater.ts rename to src/Interfaces/Updater.ts diff --git a/src/Core/Interfaces/Workspace.ts b/src/Interfaces/Workspace.ts similarity index 100% rename from src/Core/Interfaces/Workspace.ts rename to src/Interfaces/Workspace.ts diff --git a/src/Core/Interfaces/index.ts b/src/Interfaces/index.ts similarity index 100% rename from src/Core/Interfaces/index.ts rename to src/Interfaces/index.ts diff --git a/src/RootProject.ts b/src/RootProject.ts index e36ade1..fc3cdc0 100644 --- a/src/RootProject.ts +++ b/src/RootProject.ts @@ -25,9 +25,7 @@ export class RootProject { const npm = await this.files.json(npmfile) if (npm.workspace) { - } else { - core. } } } From 17cc89cfd349b53c7c3174ee97884181d25f163b Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Tue, 14 Nov 2017 22:35:32 -0500 Subject: [PATCH 08/35] moving back --- src/{ => Core}/Actions/Packages.ts | 0 src/{ => Core}/Actions/Typings.ts | 0 src/{ => Core}/Actions/index.ts | 0 src/{ => Core}/Interfaces/Dictionary.ts | 0 src/{ => Core}/Interfaces/NPM.ts | 0 src/{ => Core}/Interfaces/Updater.ts | 0 src/{ => Core}/Interfaces/Workspace.ts | 0 src/{ => Core}/Interfaces/index.ts | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename src/{ => Core}/Actions/Packages.ts (100%) rename src/{ => Core}/Actions/Typings.ts (100%) rename src/{ => Core}/Actions/index.ts (100%) rename src/{ => Core}/Interfaces/Dictionary.ts (100%) rename src/{ => Core}/Interfaces/NPM.ts (100%) rename src/{ => Core}/Interfaces/Updater.ts (100%) rename src/{ => Core}/Interfaces/Workspace.ts (100%) rename src/{ => Core}/Interfaces/index.ts (100%) diff --git a/src/Actions/Packages.ts b/src/Core/Actions/Packages.ts similarity index 100% rename from src/Actions/Packages.ts rename to src/Core/Actions/Packages.ts diff --git a/src/Actions/Typings.ts b/src/Core/Actions/Typings.ts similarity index 100% rename from src/Actions/Typings.ts rename to src/Core/Actions/Typings.ts diff --git a/src/Actions/index.ts b/src/Core/Actions/index.ts similarity index 100% rename from src/Actions/index.ts rename to src/Core/Actions/index.ts diff --git a/src/Interfaces/Dictionary.ts b/src/Core/Interfaces/Dictionary.ts similarity index 100% rename from src/Interfaces/Dictionary.ts rename to src/Core/Interfaces/Dictionary.ts diff --git a/src/Interfaces/NPM.ts b/src/Core/Interfaces/NPM.ts similarity index 100% rename from src/Interfaces/NPM.ts rename to src/Core/Interfaces/NPM.ts diff --git a/src/Interfaces/Updater.ts b/src/Core/Interfaces/Updater.ts similarity index 100% rename from src/Interfaces/Updater.ts rename to src/Core/Interfaces/Updater.ts diff --git a/src/Interfaces/Workspace.ts b/src/Core/Interfaces/Workspace.ts similarity index 100% rename from src/Interfaces/Workspace.ts rename to src/Core/Interfaces/Workspace.ts diff --git a/src/Interfaces/index.ts b/src/Core/Interfaces/index.ts similarity index 100% rename from src/Interfaces/index.ts rename to src/Core/Interfaces/index.ts From 9d27b596dc1c7b238d23aca25b59d048cb7a2a84 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Tue, 14 Nov 2017 22:36:10 -0500 Subject: [PATCH 09/35] fixing casing --- src/Core/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Core/index.ts b/src/Core/index.ts index 2f68a25..61a48be 100644 --- a/src/Core/index.ts +++ b/src/Core/index.ts @@ -1,5 +1,5 @@ -export * from './actions' -export * from './interfaces' +export * from './Actions' +export * from './Interfaces' export * from './Files' export * from './Logger' From 0a8765e9c629af5d1bbbc86ba0b29c7da57c5fd0 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Tue, 14 Nov 2017 22:51:30 -0500 Subject: [PATCH 10/35] fixing references --- src/Core/Actions/Packages.ts | 11 +++++---- src/Core/Actions/Typings.ts | 24 +++++++++----------- src/Core/Files.ts | 41 +++++++++++++++++++++++----------- src/Core/Interfaces/Updater.ts | 2 ++ src/Core/Registry.ts | 2 +- src/Core/UpdateScript.ts | 15 ++++++------- src/RootProject.ts | 2 +- tsconfig.json | 4 +--- 8 files changed, 56 insertions(+), 45 deletions(-) diff --git a/src/Core/Actions/Packages.ts b/src/Core/Actions/Packages.ts index ded00ae..85609c8 100644 --- a/src/Core/Actions/Packages.ts +++ b/src/Core/Actions/Packages.ts @@ -1,10 +1,9 @@ -import * as files from '../files' import * as path from 'path' -import { NPM, Register, Updater, Workspace } from '../registry' -import { UpdateScript } from '../script' -const ScriptName = files.noext(__filename) -const log = files.Logger(ScriptName) +import { Files, Logger, NPM, Register, Updater, UpdateScript, Workspace } from '../index' + +const ScriptName = Files.extensionless(__filename) +const log = Logger(ScriptName) const prefix = '@types' interface Dependency { @@ -35,7 +34,7 @@ class Script extends UpdateScript { target.repository = source.repository const filename = path.join(workspace.basepath, 'package.json') - await files.save(filename, target) + await Files.save(filename, target) this.log.task('updated package info', filename) } } diff --git a/src/Core/Actions/Typings.ts b/src/Core/Actions/Typings.ts index 2a104fe..c1ee5df 100644 --- a/src/Core/Actions/Typings.ts +++ b/src/Core/Actions/Typings.ts @@ -1,10 +1,8 @@ -import * as files from '../files' import * as path from 'path' -import { NPM, Register, Updater, Workspace } from '../registry' -import { UpdateScript } from '../script' +import { Files, Logger, NPM, Register, Updater, UpdateScript, Workspace } from '../index' -const ScriptName = files.noext(__filename) -const log = files.Logger(ScriptName) +const ScriptName = Files.extensionless(__filename) +const log = Logger(ScriptName) const prefix = '@types' interface Dependency { @@ -28,15 +26,15 @@ class Script extends UpdateScript { const tsconfigfile = path.join(rootpath, 'tsconfig.json') const packagedir = path.join(rootpath, 'node_modules') - if (await files.exists(tsconfigfile) && await files.exists(packagedir)) { - const packagedirs = await files.listdirs(packagedir) - const tsconfig = await files.json(tsconfigfile) + if (await Files.exists(tsconfigfile) && await Files.exists(packagedir)) { + const packagedirs = await Files.listdirs(packagedir) + const tsconfig = await Files.json(tsconfigfile) const dependencies = await Promise.all(packagedirs.map(async packagedir => await this.map(packagedir))) const typings = dependencies.reduce((previous, current) => previous.concat(current.filter(c => !!c.typings)), []) tsconfig.compilerOptions.types = typings.map(typing => typing.npmname).sort() - await files.save(tsconfigfile, tsconfig) + await Files.save(tsconfigfile, tsconfig) this.log.task('updated types', tsconfigfile) } @@ -46,12 +44,12 @@ class Script extends UpdateScript { const dirname = path.basename(packagedir) if (dirname[0] === '@') { - const scopedirs = await files.listdirs(packagedir) + const scopedirs = await Files.listdirs(packagedir) return await Promise.all(scopedirs .map(scope => [scope, path.join(scope, 'package.json')]) .map(async ([scope, scopepath]): Promise => { - const npm = await files.json(path.join(scope, 'package.json')) + const npm = await Files.json(path.join(scope, 'package.json')) return { filename: 'package.json', @@ -65,8 +63,8 @@ class Script extends UpdateScript { const packagefile = path.join(packagedir, 'package.json') - if (await files.exists(packagefile)) { - const npm = await files.json(packagefile) + if (await Files.exists(packagefile)) { + const npm = await Files.json(packagefile) return [{ filename: 'package.json', diff --git a/src/Core/Files.ts b/src/Core/Files.ts index 24f71de..c01bed0 100644 --- a/src/Core/Files.ts +++ b/src/Core/Files.ts @@ -7,7 +7,7 @@ export interface Stat { filename: string } -export class Files { +class InternalFiles { public exists(filepath: string): Promise { return new Promise((resolve, reject) => { fs.exists(filepath, (exists: boolean) => resolve(exists)) @@ -20,6 +20,15 @@ export class Files { return basename.replace(extname, '') } + public async json(filepath: string): Promise { + if (await this.exists(filepath)) { + const buffer = await this.readfile(filepath) + return JSON.parse(buffer.toString()) + } + + throw new Error(`requested file ${filepath} does not exist`) + } + public readfile(filepath: string): Promise { return new Promise((resolve, reject) => { fs.readFile(filepath, (error: NodeJS.ErrnoException, data: Buffer) => { @@ -42,6 +51,10 @@ export class Files { return stats.filter(stat => stat.file).map(stat => stat.filename) } + public async save(filepath: string, data: T): Promise { + await this.writefile(filepath, JSON.stringify(data, null, 2)) + } + public async statfile(filepath: string): Promise { return new Promise((resolve, reject) => { fs.stat(filepath, (error: NodeJS.ErrnoException, stats: fs.Stats) => { @@ -89,17 +102,19 @@ export class Files { }) }) } +} - public async json(filepath: string): Promise { - if (await this.exists(filepath)) { - const buffer = await this.readfile(filepath) - return JSON.parse(buffer.toString()) - } - - throw new Error(`requested file ${filepath} does not exist`) - } - - public async save(filepath: string, data: T): Promise { - await this.writefile(filepath, JSON.stringify(data, null, 2)) - } +export interface Files { + exists(filepath: string): Promise + extensionless(filename: string): string + json(filepath: string): Promise + readfile(filepath: string): Promise + listdirs(filepath: string): Promise + listfiles(filepath: string): Promise + save(filepath: string, data: T): Promise + statfile(filepath: string): Promise + statfiles(filepath: string): Promise + writefile(filepath: string, data: any): Promise } + +export const Files: Files = new InternalFiles() diff --git a/src/Core/Interfaces/Updater.ts b/src/Core/Interfaces/Updater.ts index 4bd1bd7..e4d0151 100644 --- a/src/Core/Interfaces/Updater.ts +++ b/src/Core/Interfaces/Updater.ts @@ -1,3 +1,5 @@ +import { Workspace } from './Workspace' + export interface Updater { name: string exec(rootpath: string): Promise diff --git a/src/Core/Registry.ts b/src/Core/Registry.ts index 3e7d8f7..0e8867a 100644 --- a/src/Core/Registry.ts +++ b/src/Core/Registry.ts @@ -1,4 +1,4 @@ -import { Updater, Updaters } from './interfaces' +import { Updater, Updaters } from './Interfaces' const Registry: Updaters = {} diff --git a/src/Core/UpdateScript.ts b/src/Core/UpdateScript.ts index 161fa5d..957ee16 100644 --- a/src/Core/UpdateScript.ts +++ b/src/Core/UpdateScript.ts @@ -1,14 +1,14 @@ -import * as files from './files' import * as path from 'path' -import { NPM, Updater, Workspace } from './interfaces' + +import { Files, Log, Logger, NPM, Updater, Workspace } from './index' export abstract class UpdateScript implements Updater { - protected readonly log: files.Log + protected readonly log: Log private readonly _name: string constructor(name: string) { this._name = name - this.log = files.Logger(name) + this.log = Logger(name) } public get name(): string { @@ -26,8 +26,8 @@ export abstract class UpdateScript implements Updater { protected async npm(basepath: string): Promise { const filename = path.join(basepath, 'package.json') - if (await files.exists(filename)) { - return await files.json(filename) + if (await Files.exists(filename)) { + return await Files.json(filename) } throw Error(`could not find 'package.json' in ${basepath}`) @@ -41,7 +41,7 @@ export abstract class UpdateScript implements Updater { }) child.stderr.on('data', data => this.args(workspace, process.stderr, data).map(lines => lines).forEach(args => this.log.error(...args))) child.stdout.on('data', data => this.args(workspace, process.stdout, data).map(lines => lines).forEach(args => this.log.task(...args))) - child.addListener('exit', (code, signal) => { + child.addListener('exit', (code: number, signal: string) => { if (code === 0) { resolve() } else { @@ -61,5 +61,4 @@ export abstract class UpdateScript implements Updater { } return format(data.replace('\r', '').split('\n')) } - } diff --git a/src/RootProject.ts b/src/RootProject.ts index fc3cdc0..87d0f6f 100644 --- a/src/RootProject.ts +++ b/src/RootProject.ts @@ -8,7 +8,7 @@ export class RootProject { constructor(root: string) { this._root = root - this.files = new core.Files() + this.files = core.Files this.init = this.initialize() } diff --git a/tsconfig.json b/tsconfig.json index dedb6c2..d71c5ac 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,6 @@ { "compilerOptions": { "allowSyntheticDefaultImports": true, - "baseUrl": "./src", "declaration": true, "diagnostics": true, "emitDecoratorMetadata": true, @@ -19,7 +18,6 @@ "outDir": "lib", "pretty": true, "removeComments": true, - "rootDir": "./src", "sourceMap": true, "strict": true, "strictNullChecks": true, @@ -35,4 +33,4 @@ "include": [ "src/**/*.ts" ] -} \ No newline at end of file +} From aa30577e746da8e3f1a5abac5d25201eafed412e Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Tue, 14 Nov 2017 22:56:54 -0500 Subject: [PATCH 11/35] fixing build --- src/Core/UpdateScript.ts | 1 + src/RootProject.ts | 2 +- src/cli.ts | 9 ++++----- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Core/UpdateScript.ts b/src/Core/UpdateScript.ts index 957ee16..e444346 100644 --- a/src/Core/UpdateScript.ts +++ b/src/Core/UpdateScript.ts @@ -1,3 +1,4 @@ +import * as cp from 'child_process' import * as path from 'path' import { Files, Log, Logger, NPM, Updater, Workspace } from './index' diff --git a/src/RootProject.ts b/src/RootProject.ts index 87d0f6f..95ed156 100644 --- a/src/RootProject.ts +++ b/src/RootProject.ts @@ -1,5 +1,5 @@ -import * as core from './core' import * as path from 'path' +import * as core from './Core' export class RootProject { private readonly _root: string diff --git a/src/cli.ts b/src/cli.ts index f019faa..eb19198 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -1,10 +1,9 @@ -import './actions' +import './Actions' import * as path from 'path' -import { Dictionary, Files, GetRegistered, Logger, Registered, Updater, Workspace } from './core' +import { Dictionary, Files, GetRegistered, Logger, Registered, Updater, Workspace } from './Core' -const files = new Files() const log = Logger('scripts') const scripts = (command: string, ...args: string[]): Updater[] => { @@ -31,7 +30,7 @@ const workspaces = async (): Promise => { filepath: string } - const packages = await files.listdirs(path.join(process.cwd(), 'packages')) + const packages = await Files.listdirs(path.join(process.cwd(), 'packages')) const promises = packages.map(async (dir: string): Promise => { const available: Config[] = [] @@ -39,7 +38,7 @@ const workspaces = async (): Promise => { await Promise.all(CONFIGFILES.map(config => path.join(dir, config)) .map(async configfile => { - if (await files.exists(configfile)) { + if (await Files.exists(configfile)) { available.push({ filename: path.basename(configfile), filepath: path.dirname(configfile), From 4317ff782233dfc7893e04171258caa999c72f4c Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Tue, 14 Nov 2017 22:59:09 -0500 Subject: [PATCH 12/35] adding travis file --- .travis.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..740a47e --- /dev/null +++ b/.travis.yml @@ -0,0 +1,8 @@ +cache: yarn +language: node_js +node_js: + - node + - '8' + - '6' +os: + - linux From 0a3c00973ea155585dd5566eb09a310c269edbdd Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Tue, 14 Nov 2017 23:08:33 -0500 Subject: [PATCH 13/35] badges --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 086ccdc..583ae09 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,10 @@ # @beard/chest +[![npm (scoped)](https://img.shields.io/npm/v/@beard/chest.svg?style=flat-square)](https://www.npmjs.com/package/@beard/chest) + +[![Travis](https://img.shields.io/travis/nativecode-dev/chest.svg?style=flat-square&label=master)](https://travis-ci.org/nativecode-dev/chest#master) +[![Travis](https://img.shields.io/travis/nativecode-dev/chest.svg?style=flat-square&label=develop)](https://travis-ci.org/nativecode-dev/chest#develop) +

From 5f918262b15174b3695237fb044fff601727ec0e Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Wed, 15 Nov 2017 13:33:52 -0500 Subject: [PATCH 14/35] refactoring workspaces --- mocha.opts | 7 + package.json | 13 +- src/Chest.spec.ts | 27 ++++ src/Chest.ts | 42 +++++ src/Core/Actions/Packages.ts | 14 +- src/Core/Actions/Typings.ts | 6 +- src/Core/Files.ts | 5 + src/Core/Interfaces/Dictionary.ts | 4 +- src/Core/Interfaces/NPM.ts | 8 +- src/Core/Interfaces/Updater.ts | 10 +- src/Core/Interfaces/Workspace.ts | 9 -- src/Core/Interfaces/index.ts | 1 - src/{ => Core}/Project.ts | 8 +- src/Core/Registry.ts | 34 ++-- src/Core/UpdateScript.ts | 26 ++-- src/Core/index.ts | 1 + src/RootProject.ts | 31 ---- src/Workspace.ts | 13 -- src/cli.ts | 90 ++--------- testables/single/package.json | 11 ++ testables/workspaces/package.json | 10 ++ .../packages/simple-package/package.json | 11 ++ .../projects/simple-project/package.json | 11 ++ tsconfig.json | 1 + yarn.lock | 145 +++++++++++++++++- 25 files changed, 360 insertions(+), 178 deletions(-) create mode 100644 mocha.opts create mode 100644 src/Chest.spec.ts create mode 100644 src/Chest.ts delete mode 100644 src/Core/Interfaces/Workspace.ts rename src/{ => Core}/Project.ts (57%) delete mode 100644 src/RootProject.ts delete mode 100644 src/Workspace.ts create mode 100644 testables/single/package.json create mode 100644 testables/workspaces/package.json create mode 100644 testables/workspaces/packages/simple-package/package.json create mode 100644 testables/workspaces/projects/simple-project/package.json diff --git a/mocha.opts b/mocha.opts new file mode 100644 index 0000000..72a1a21 --- /dev/null +++ b/mocha.opts @@ -0,0 +1,7 @@ +--require ts-node/register +--require tsconfig-paths/register +--require source-map-support/register +--full-trace +--recursive +--bail +src/**/*.spec.ts diff --git a/package.json b/package.json index 5dcabbe..40ff662 100644 --- a/package.json +++ b/package.json @@ -1,20 +1,25 @@ { - "bin": "./lib/cli.js", + "bin": "./lib/CLI.js", "description": "CHEST of me best tools, matey!", "dependencies": { "chalk": "^2.3.0" }, "devDependencies": { + "@types/chai": "^4.0.4", "@types/chalk": "^2.2.0", + "@types/mocha": "^2.2.44", "@types/node": "^8.0.52", "bin-shebang": "^1.0.11", + "chai": "^4.1.2", + "mocha": "^4.0.1", "rimraf": "^2.6.2", "ts-node": "^3.3.0", + "tsconfig-paths": "^2.3.0", "tslint": "^5.8.0", "typescript": "^2.6.1" }, "license": "MIT", - "main": "./lib/cli.js", + "main": "./lib/CLI.js", "name": "@beard/chest", "publishConfig": { "access": "public" @@ -22,7 +27,9 @@ "scripts": { "build": "tsc --project tsconfig.json", "prebuild": "rimraf lib", - "postbuild": "bin-shebang" + "postbuild": "bin-shebang", + "test": "mocha --opts mocha.opts", + "pretest": "yarn run build" }, "typings": "lib/index.d.ts", "version": "1.1.2" diff --git a/src/Chest.spec.ts b/src/Chest.spec.ts new file mode 100644 index 0000000..94c1be0 --- /dev/null +++ b/src/Chest.spec.ts @@ -0,0 +1,27 @@ +import 'mocha' + +import { expect } from 'chai' +import { Chest } from './Chest' +import { Files } from './Core' + +describe('when using RootProject to load a project', () => { + + it('should load single npm project', async () => { + const directory = Files.join(process.cwd(), 'testables', 'single') + const projects = await Chest.projects(directory) + expect(projects.length).to.equal(1) + expect(projects[0].name).to.equal('project-single') + expect(projects[0].path).to.equal(directory) + }) + + it('should load yarn workspace project', async () => { + const directory = Files.join(process.cwd(), 'testables', 'workspaces') + const projects = await Chest.projects(directory) + expect(projects.length).to.equal(2) + expect(projects[0].name).to.equal('simple-package') + expect(projects[1].name).to.equal('simple-project') + expect(projects[0].owner).to.not.equal(undefined) + expect((projects[0].owner || { name: 'invalid' }).name).to.equal('project-workspaces') + }) + +}) diff --git a/src/Chest.ts b/src/Chest.ts new file mode 100644 index 0000000..84ab770 --- /dev/null +++ b/src/Chest.ts @@ -0,0 +1,42 @@ +import * as path from 'path' + +import { Files, NPM, Project } from './Core' + +export class Chest { + public static async projects(root: string): Promise { + const npmfile = path.join(root, 'package.json') + + if (await Files.exists(npmfile) === false) { + throw new Error(`failed to find ${npmfile} in ${root}`) + } + + const npm = await Files.json(npmfile) + const project = new Project(npm.name, root) + + if (npm.private && npm.workspace) { + return npm.workspace + .map(async workspaceRoot => await Chest.workspaces(project, workspaceRoot)) + .reduce(async (previous: Promise, current: Promise): Promise => { + return (await previous).concat(await current) + }, Promise.resolve([])) + } + + return [project] + } + + private static async workspaces(owner: Project, workspaceRoot: string): Promise { + workspaceRoot = Files.join(owner.path, workspaceRoot.substring(0, workspaceRoot.indexOf('*'))) + + if (await Files.exists(workspaceRoot) === false) { + throw new Error(`failed to find workspace ${workspaceRoot} in ${owner.name}`) + } + + const projects = await Files.listdirs(workspaceRoot) + + return Promise.all(projects.map(async project => { + const npmfile = path.join(project, 'package.json') + const npm = await Files.json(npmfile) + return new Project(npm.name, project, owner) + })) + } +} diff --git a/src/Core/Actions/Packages.ts b/src/Core/Actions/Packages.ts index 85609c8..9dfb821 100644 --- a/src/Core/Actions/Packages.ts +++ b/src/Core/Actions/Packages.ts @@ -1,6 +1,6 @@ import * as path from 'path' -import { Files, Logger, NPM, Register, Updater, UpdateScript, Workspace } from '../index' +import { Files, Logger, NPM, Project, Registry, Updater, UpdateScript, UpdaterType } from '../index' const ScriptName = Files.extensionless(__filename) const log = Logger(ScriptName) @@ -20,12 +20,12 @@ interface Dependency { **/ class Script extends UpdateScript { constructor() { - super(ScriptName) + super(ScriptName, UpdaterType.Projects) } - public async workspace(workspace: Workspace): Promise { - const source = await this.npm(workspace.root) - const target = await this.npm(workspace.basepath) + public async workspace(project: Project): Promise { + const source = await this.npm(project.path) + const target = await this.npm(project.owner.path) target.author = source.author target.bugs = source.bugs target.description = source.description @@ -33,10 +33,10 @@ class Script extends UpdateScript { target.license = source.license target.repository = source.repository - const filename = path.join(workspace.basepath, 'package.json') + const filename = path.join(project.path, 'package.json') await Files.save(filename, target) this.log.task('updated package info', filename) } } -Register(ScriptName, new Script()) +Registry.add(ScriptName, new Script()) diff --git a/src/Core/Actions/Typings.ts b/src/Core/Actions/Typings.ts index c1ee5df..4c77a1c 100644 --- a/src/Core/Actions/Typings.ts +++ b/src/Core/Actions/Typings.ts @@ -1,5 +1,5 @@ import * as path from 'path' -import { Files, Logger, NPM, Register, Updater, UpdateScript, Workspace } from '../index' +import { Files, Logger, NPM, Project, Registry, Updater, UpdateScript, UpdaterType } from '../index' const ScriptName = Files.extensionless(__filename) const log = Logger(ScriptName) @@ -19,7 +19,7 @@ interface Dependency { **/ class Script extends UpdateScript { constructor() { - super(ScriptName) + super(ScriptName, UpdaterType.Projects) } public async exec(rootpath: string): Promise { @@ -78,4 +78,4 @@ class Script extends UpdateScript { } } -Register(ScriptName, new Script()) +Registry.add(ScriptName, new Script()) diff --git a/src/Core/Files.ts b/src/Core/Files.ts index c01bed0..cce268c 100644 --- a/src/Core/Files.ts +++ b/src/Core/Files.ts @@ -20,6 +20,10 @@ class InternalFiles { return basename.replace(extname, '') } + public join(...args: string[]): string { + return path.join(...args) + } + public async json(filepath: string): Promise { if (await this.exists(filepath)) { const buffer = await this.readfile(filepath) @@ -107,6 +111,7 @@ class InternalFiles { export interface Files { exists(filepath: string): Promise extensionless(filename: string): string + join(...args: string[]): string json(filepath: string): Promise readfile(filepath: string): Promise listdirs(filepath: string): Promise diff --git a/src/Core/Interfaces/Dictionary.ts b/src/Core/Interfaces/Dictionary.ts index d5a5705..a6a4e04 100644 --- a/src/Core/Interfaces/Dictionary.ts +++ b/src/Core/Interfaces/Dictionary.ts @@ -1,3 +1,3 @@ -export interface Dictionary { - [key: string]: string +export interface Dictionary { + [key: string]: T } diff --git a/src/Core/Interfaces/NPM.ts b/src/Core/Interfaces/NPM.ts index 0dbc31e..c4db253 100644 --- a/src/Core/Interfaces/NPM.ts +++ b/src/Core/Interfaces/NPM.ts @@ -1,17 +1,17 @@ import { Dictionary } from './Dictionary' export interface NPM { - author?: string | string[] | Dictionary + author?: string | string[] | Dictionary bugs?: string | { type: string, url: string } - dependencies?: Dictionary + dependencies?: Dictionary description?: string - devDependencies?: Dictionary + devDependencies?: Dictionary homepage?: string license?: string name: string private?: boolean repository?: string | { type: string, url: string } - scripts?: Dictionary + scripts?: Dictionary types?: string, typeScriptVersion: string, typings?: string diff --git a/src/Core/Interfaces/Updater.ts b/src/Core/Interfaces/Updater.ts index e4d0151..771c48b 100644 --- a/src/Core/Interfaces/Updater.ts +++ b/src/Core/Interfaces/Updater.ts @@ -1,9 +1,15 @@ -import { Workspace } from './Workspace' +import { Project } from '../Project' + +export enum UpdaterType { + Root = 'root', + Projects = 'projects', +} export interface Updater { name: string + type: UpdaterType exec(rootpath: string): Promise - workspace(workspace: Workspace): Promise + workspace(project: Project): Promise } export type Updaters = { diff --git a/src/Core/Interfaces/Workspace.ts b/src/Core/Interfaces/Workspace.ts deleted file mode 100644 index 68d62c6..0000000 --- a/src/Core/Interfaces/Workspace.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Dictionary } from './Dictionary' - -export interface Workspace { - basepath: string - configs: Dictionary - name: string - npm: string - root: string -} diff --git a/src/Core/Interfaces/index.ts b/src/Core/Interfaces/index.ts index 28e6e17..a2063c5 100644 --- a/src/Core/Interfaces/index.ts +++ b/src/Core/Interfaces/index.ts @@ -1,4 +1,3 @@ export * from './Dictionary' export * from './NPM' export * from './Updater' -export * from './Workspace' diff --git a/src/Project.ts b/src/Core/Project.ts similarity index 57% rename from src/Project.ts rename to src/Core/Project.ts index c39eaee..c94250a 100644 --- a/src/Project.ts +++ b/src/Core/Project.ts @@ -1,9 +1,11 @@ export class Project { private readonly _name: string + private readonly _owner: Project private readonly _path: string - constructor(name: string, path: string) { + constructor(name: string, path: string, owner?: Project) { this._name = name + this._owner = owner || this this._path = path } @@ -11,6 +13,10 @@ export class Project { return this._name } + public get owner(): Project { + return this._owner + } + public get path(): string { return this._path } diff --git a/src/Core/Registry.ts b/src/Core/Registry.ts index 0e8867a..a4606c6 100644 --- a/src/Core/Registry.ts +++ b/src/Core/Registry.ts @@ -1,15 +1,29 @@ -import { Updater, Updaters } from './Interfaces' +import { Dictionary, Updater, Updaters } from './Interfaces' -const Registry: Updaters = {} +export class Registry { + private static readonly registrations: Updaters = {} -export function GetRegistered(name: string): Updater { - return Registry[name] -} + public static add(name: string, updater: Updater): void { + this.registrations[name.toLowerCase()] = updater + } -export function Register(name: string, updater: Updater): void { - Registry[name] = updater -} + public static all(): Dictionary { + return Object.assign({}, this.registrations) + } + + public static execute(root: string, ...args: string[]): Promise { + return Promise.all( + args.map(arg => arg.toLowerCase()) + .map(name => this.registrations[name].exec(root)) + ) + } + + public static get(name: string): Updater { + const key = name.toLowerCase() + if (this.registrations[key]) { + return this.registrations[key] + } -export function Registered(): string[] { - return Object.keys(Registry) + throw new Error(`no registered updaters named ${name}`) + } } diff --git a/src/Core/UpdateScript.ts b/src/Core/UpdateScript.ts index e444346..be6c073 100644 --- a/src/Core/UpdateScript.ts +++ b/src/Core/UpdateScript.ts @@ -1,14 +1,16 @@ import * as cp from 'child_process' import * as path from 'path' -import { Files, Log, Logger, NPM, Updater, Workspace } from './index' +import { Files, Log, Logger, NPM, Project, Updater, UpdaterType } from './index' export abstract class UpdateScript implements Updater { protected readonly log: Log private readonly _name: string + private readonly _type: UpdaterType - constructor(name: string) { + constructor(name: string, type: UpdaterType) { this._name = name + this._type = type this.log = Logger(name) } @@ -16,11 +18,15 @@ export abstract class UpdateScript implements Updater { return this._name } + public get type(): UpdaterType { + return this._type + } + public exec(rootpath: string): Promise { return Promise.resolve() } - public workspace(workspace: Workspace): Promise { + public workspace(project: Project): Promise { return Promise.resolve() } @@ -34,14 +40,14 @@ export abstract class UpdateScript implements Updater { throw Error(`could not find 'package.json' in ${basepath}`) } - protected run(workspace: Workspace, command: string, ...args: string[]): Promise { + protected run(project: Project, command: string, ...args: string[]): Promise { return new Promise((resolve, reject) => { - this.log.debug('run', workspace.name, command, ...args) - const child = cp.exec(`${command} ${args.join(' ')}`, { cwd: workspace.basepath }, error => { + this.log.debug('run', project.name, command, ...args) + const child = cp.exec(`${command} ${args.join(' ')}`, { cwd: project.path }, error => { if (error) this.log.error(error) }) - child.stderr.on('data', data => this.args(workspace, process.stderr, data).map(lines => lines).forEach(args => this.log.error(...args))) - child.stdout.on('data', data => this.args(workspace, process.stdout, data).map(lines => lines).forEach(args => this.log.task(...args))) + child.stderr.on('data', data => this.args(project, process.stderr, data).map(lines => lines).forEach(args => this.log.error(...args))) + child.stdout.on('data', data => this.args(project, process.stdout, data).map(lines => lines).forEach(args => this.log.task(...args))) child.addListener('exit', (code: number, signal: string) => { if (code === 0) { resolve() @@ -52,9 +58,9 @@ export abstract class UpdateScript implements Updater { }) } - private args(workspace: Workspace, stream: NodeJS.WriteStream, data: string | Buffer): string[][] { + private args(project: Project, stream: NodeJS.WriteStream, data: string | Buffer): string[][] { const format = (lines: string[]): string[][] => { - return lines.filter(line => line.trim()).map(line => [workspace.name, '>', line]) + return lines.filter(line => line.trim()).map(line => [project.name, '>', line]) } if (data instanceof Buffer) { diff --git a/src/Core/index.ts b/src/Core/index.ts index 61a48be..4c990f2 100644 --- a/src/Core/index.ts +++ b/src/Core/index.ts @@ -3,5 +3,6 @@ export * from './Interfaces' export * from './Files' export * from './Logger' +export * from './Project' export * from './Registry' export * from './UpdateScript' diff --git a/src/RootProject.ts b/src/RootProject.ts deleted file mode 100644 index 95ed156..0000000 --- a/src/RootProject.ts +++ /dev/null @@ -1,31 +0,0 @@ -import * as path from 'path' -import * as core from './Core' - -export class RootProject { - private readonly _root: string - private readonly files: core.Files - private readonly init: Promise - - constructor(root: string) { - this._root = root - this.files = core.Files - this.init = this.initialize() - } - - public get root(): string { - return this._root - } - - private async initialize(): Promise { - const npmfile = path.join(this.root, 'package.json') - - if (await this.files.exists(npmfile) === false) { - throw new Error(`failed to find ${npmfile} in ${this.root}`) - } - - const npm = await this.files.json(npmfile) - if (npm.workspace) { - } else { - } - } -} diff --git a/src/Workspace.ts b/src/Workspace.ts deleted file mode 100644 index 15eabba..0000000 --- a/src/Workspace.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Project } from './Project' - -export class Workspace { - private readonly _project: Project - - constructor(project: Project) { - this._project = project - } - - public get project(): Project { - return this._project - } -} diff --git a/src/cli.ts b/src/cli.ts index eb19198..bc69842 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -1,86 +1,20 @@ -import './Actions' +import { Chest } from './Chest' +import { Registry } from './Core' -import * as path from 'path' +class CLI { + private readonly args: string[] -import { Dictionary, Files, GetRegistered, Logger, Registered, Updater, Workspace } from './Core' - -const log = Logger('scripts') - -const scripts = (command: string, ...args: string[]): Updater[] => { - switch (command.toLowerCase()) { - case 'all': - return Registered().map(name => GetRegistered(name)) - - default: - return Registered() - .filter(name => args.find(value => value === name)) - .map(name => GetRegistered(name)) + private constructor(...args: string[]) { + this.args = args } -} -const workspaces = async (): Promise => { - const CONFIGFILES = [ - '.babelrc', - 'tsconfig.json', - 'tslint.json', - ] - - interface Config extends Dictionary { - filename: string - filepath: string + public static parse(...args: string[]): CLI { + return new CLI(...args) } - const packages = await Files.listdirs(path.join(process.cwd(), 'packages')) - - const promises = packages.map(async (dir: string): Promise => { - const available: Config[] = [] - const dirname = path.basename(dir) - - await Promise.all(CONFIGFILES.map(config => path.join(dir, config)) - .map(async configfile => { - if (await Files.exists(configfile)) { - available.push({ - filename: path.basename(configfile), - filepath: path.dirname(configfile), - }) - } - })) - - const config: any = {} - available.forEach(c => config[c.filename] = path.join(c.filepath, c.filename)) - - return { - basepath: dir, - configs: config, - name: dirname, - npm: path.join(dir, 'package.json'), - root: process.cwd(), - } - }) - - return Promise.all(promises) -} - -const main = async (...args: string[]): Promise => { - const command = args.length ? args[0] : 'all' - log.debug('args', args.length, ...args) - - const promises = scripts(command, ...args) - .map(async script => { - await script.exec(process.cwd()) - const ws = await workspaces() - return ws.map(async workspace => { - try { - log.start('script.start', workspace.name, script.name) - await script.workspace(workspace) - log.done('script.done', workspace.name, script.name) - } catch (error) { - log.error('error', workspace.name, script.name, error) - } - }) - }) - - await Promise.all(promises) + public async execute(): Promise { + Registry.execute(process.cwd(), ...this.args) + } } -main(...process.argv.slice(2)) +CLI.parse(...process.argv.slice(2)).execute() diff --git a/testables/single/package.json b/testables/single/package.json new file mode 100644 index 0000000..a6cd6e0 --- /dev/null +++ b/testables/single/package.json @@ -0,0 +1,11 @@ +{ + "dependencies": { + "chalk": "*" + }, + "description": "single project", + "devDependencies": { + "@types/chalk": "*" + }, + "name": "project-single", + "version": "1.0.0" +} diff --git a/testables/workspaces/package.json b/testables/workspaces/package.json new file mode 100644 index 0000000..fc4e478 --- /dev/null +++ b/testables/workspaces/package.json @@ -0,0 +1,10 @@ +{ + "description": "project with workspaces", + "name": "project-workspaces", + "private": true, + "workspace": [ + "packages/*", + "projects/*" + ], + "version": "1.0.0" +} diff --git a/testables/workspaces/packages/simple-package/package.json b/testables/workspaces/packages/simple-package/package.json new file mode 100644 index 0000000..133973c --- /dev/null +++ b/testables/workspaces/packages/simple-package/package.json @@ -0,0 +1,11 @@ +{ + "dependencies": { + "chalk": "*" + }, + "description": "simple package", + "devDependencies": { + "@types/chalk": "*" + }, + "name": "simple-package", + "version": "1.0.0" +} diff --git a/testables/workspaces/projects/simple-project/package.json b/testables/workspaces/projects/simple-project/package.json new file mode 100644 index 0000000..15fd88e --- /dev/null +++ b/testables/workspaces/projects/simple-project/package.json @@ -0,0 +1,11 @@ +{ + "dependencies": { + "chalk": "*" + }, + "description": "simple project", + "devDependencies": { + "@types/chalk": "*" + }, + "name": "simple-project", + "version": "1.0.0" +} diff --git a/tsconfig.json b/tsconfig.json index d71c5ac..d634d0c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,7 @@ { "compilerOptions": { "allowSyntheticDefaultImports": true, + "baseUrl": ".", "declaration": true, "diagnostics": true, "emitDecoratorMetadata": true, diff --git a/yarn.lock b/yarn.lock index 1acb282..ca1644c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,12 +2,20 @@ # yarn lockfile v1 +"@types/chai@^4.0.4": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.0.4.tgz#fe86315d9a66827feeb16f73bc954688ec950e18" + "@types/chalk@^2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@types/chalk/-/chalk-2.2.0.tgz#b7f6e446f4511029ee8e3f43075fb5b73fbaa0ba" dependencies: chalk "*" +"@types/mocha@^2.2.44": + version "2.2.44" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-2.2.44.tgz#1d4a798e53f35212fd5ad4d04050620171cd5b5e" + "@types/node@^8.0.52": version "8.0.52" resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.52.tgz#8e7f47747868e7687f2cd4922966e2d6af78d22d" @@ -26,10 +34,18 @@ ansi-styles@^3.1.0: dependencies: color-convert "^1.9.0" +any-promise@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + arrify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" +assertion-error@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c" + babel-code-frame@^6.22.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" @@ -53,10 +69,25 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +browser-stdout@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" + builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" +chai@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.1.2.tgz#0f64584ba642f0f2ace2806279f4f06ca23ad73c" + dependencies: + assertion-error "^1.0.1" + check-error "^1.0.1" + deep-eql "^3.0.0" + get-func-name "^2.0.0" + pathval "^1.0.0" + type-detect "^4.0.0" + chalk@*, chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" @@ -75,6 +106,10 @@ chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" +check-error@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + color-convert@^1.9.0: version "1.9.1" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" @@ -85,7 +120,7 @@ color-name@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" -commander@^2.9.0: +commander@2.11.0, commander@^2.9.0: version "2.11.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" @@ -93,11 +128,33 @@ concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" +debug@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + dependencies: + ms "2.0.0" + +deep-eql@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" + dependencies: + type-detect "^4.0.0" + +diff@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" + diff@^3.1.0, diff@^3.2.0: version "3.4.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c" -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +error-ex@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" + dependencies: + is-arrayish "^0.2.1" + +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -109,7 +166,11 @@ fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" -glob@^7.0.5, glob@^7.1.1: +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + +glob@7.1.2, glob@^7.0.5, glob@^7.1.1: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -120,6 +181,10 @@ glob@^7.0.5, glob@^7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" +growl@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f" + has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -130,6 +195,10 @@ has-flag@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" +he@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + homedir-polyfill@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" @@ -147,6 +216,14 @@ inherits@2: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" @@ -169,18 +246,43 @@ minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" -mkdirp@^0.5.1: +mkdirp@0.5.1, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: minimist "0.0.8" +mocha@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-4.0.1.tgz#0aee5a95cf69a4618820f5e51fa31717117daf1b" + dependencies: + browser-stdout "1.3.0" + commander "2.11.0" + debug "3.1.0" + diff "3.3.1" + escape-string-regexp "1.0.5" + glob "7.1.2" + growl "1.10.3" + he "1.1.1" + mkdirp "0.5.1" + supports-color "4.4.0" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: wrappy "1" +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" @@ -193,6 +295,10 @@ path-parse@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" +pathval@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" + resolve@^1.3.2: version "1.5.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" @@ -225,6 +331,12 @@ strip-ansi@^3.0.0: dependencies: ansi-regex "^2.0.0" +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + dependencies: + is-utf8 "^0.2.0" + strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -233,6 +345,12 @@ strip-json-comments@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" +supports-color@4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" + dependencies: + has-flag "^2.0.0" + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -258,6 +376,21 @@ ts-node@^3.3.0: v8flags "^3.0.0" yn "^2.0.0" +tsconfig-paths@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-2.3.0.tgz#98eb4df8c793a3c1eb25d1bdfa8dff273be1063c" + dependencies: + tsconfig "^5.0.3" + +tsconfig@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-5.0.3.tgz#5f4278e701800967a8fc383fd19648878f2a6e3a" + dependencies: + any-promise "^1.3.0" + parse-json "^2.2.0" + strip-bom "^2.0.0" + strip-json-comments "^2.0.0" + tsconfig@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-6.0.0.tgz#6b0e8376003d7af1864f8df8f89dd0059ffcd032" @@ -291,6 +424,10 @@ tsutils@^2.12.1: dependencies: tslib "^1.7.1" +type-detect@^4.0.0: + version "4.0.5" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.5.tgz#d70e5bc81db6de2a381bcaca0c6e0cbdc7635de2" + typescript@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.1.tgz#ef39cdea27abac0b500242d6726ab90e0c846631" From fa400d4a42588896581ad047776b502dd36467a3 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Wed, 15 Nov 2017 13:39:19 -0500 Subject: [PATCH 15/35] updating travis --- .travis.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.travis.yml b/.travis.yml index 740a47e..47dfb81 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,3 +6,13 @@ node_js: - '6' os: - linux +deploy: + provider: npm + email: support@nativecode.com + api_key: + secure: >- + EoY8os0mZH2U1SqZFDh5p5CoImh15kK1Ckap9/6WuNXHO+ZduuqRCkgI3/Q/xMlj9b+tmGDfrZ/dTxvXn+aIW+brGvqMETKHsWSdTRnfHCFV1qUpSb+I9h/oMqbljaapbqIIZRQWwbf0rMAUwdsD9F8Un/cTAjW3BrnL7UES2f62+3IAZWUbWkyfM973cuT88Vt6JqrAsHYbVKahacChrohT3pJarsGrMZ3713TQ1X1P2pgbheQYM+82puXNT3jTjp48rg6zBslSjR0ze1un3sUpTmmt8F/B4U9Gma20X9qDvOqPR3ej6Z5wvj/iI/07rDIJISFldJK2+RE8qSdILjEPvrF9OtmpLjpzaokj2JEhwX3hEYHXSu9Uhv7TqxmJYTrlLKTTJgzLu8PI5WgvU5WtfXjrSRLhz71taWVkijeCNUZYjvVSCOucDyi8w55B+zFwZfIgb6Uv8O3b5Rn+GGMlinWLreCgAQn2LqOswjXgk6LYG9Sk3DMGaILAmdxzVZ5yGM8tgg3nk4igQs8SpSRibpAaEeLi2HJfI4prGzvbKXZh+snPp7iPkDjTvHmKjH6fSfVZPwOGk+N5SRWj/v21LONxYGYejJIF/RgD35ILu/qMzz8Z8kT+Od2RJjwxatq1I2RcxLE4DCNCgkcv6MwQrL3z+hjPM2KlDFrBj/c= + on: + branche: master + tag: next + repo: nativecode-dev/chest From 21b32670ab921bfeeab09a6b3a0054f0f8ce623c Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Wed, 15 Nov 2017 13:46:37 -0500 Subject: [PATCH 16/35] fixing travis badges --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 583ae09..873fd7b 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ [![npm (scoped)](https://img.shields.io/npm/v/@beard/chest.svg?style=flat-square)](https://www.npmjs.com/package/@beard/chest) -[![Travis](https://img.shields.io/travis/nativecode-dev/chest.svg?style=flat-square&label=master)](https://travis-ci.org/nativecode-dev/chest#master) -[![Travis](https://img.shields.io/travis/nativecode-dev/chest.svg?style=flat-square&label=develop)](https://travis-ci.org/nativecode-dev/chest#develop) +[![Travis](https://img.shields.io/travis/nativecode-dev/chest/master.svg?style=flat-square&label=master)](https://travis-ci.org/nativecode-dev/chest) +[![Travis](https://img.shields.io/travis/nativecode-dev/chest/develop.svg?style=flat-square&label=develop)](https://travis-ci.org/nativecode-dev/chest)

From f21435565314ebc7841e799ed39f9968ac0673a0 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Wed, 15 Nov 2017 14:23:26 -0500 Subject: [PATCH 17/35] updating badges --- README.md | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 873fd7b..2cd31c5 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,13 @@ -# @beard/chest - -[![npm (scoped)](https://img.shields.io/npm/v/@beard/chest.svg?style=flat-square)](https://www.npmjs.com/package/@beard/chest) +[![npm](https://img.shields.io/npm/v/@beard/chest.svg?style=flat-square&label=@beard/chest)](https://www.npmjs.com/package/@beard/chest) +[![npm](https://img.shields.io/npm/l/express.svg?style=flat-square)]() +[![David](https://img.shields.io/david/nativecode-dev/chest.svg?style=flat-square&label=deps)](https://www.npmjs.com/package/@beard/chest) +[![David](https://img.shields.io/david/dev/nativecode-dev/chest.svg?style=flat-square&label=devdeps)](https://www.npmjs.com/package/@beard/chest) [![Travis](https://img.shields.io/travis/nativecode-dev/chest/master.svg?style=flat-square&label=master)](https://travis-ci.org/nativecode-dev/chest) [![Travis](https://img.shields.io/travis/nativecode-dev/chest/develop.svg?style=flat-square&label=develop)](https://travis-ci.org/nativecode-dev/chest) +# @beard/chest +

@@ -13,6 +16,20 @@ It's a chest. With TypeScript inside. +Actually, it's a set of tools to manage TypeScript projects, whether they are stand-alone or workspace-based (either [Yarn](https://yarnpkg.com) or [Lerna](https://lernajs.io). + +# What Problems Does Get Solved + +CHEST will... + +- Link `@types` dependencies as a `types` array in your `tsconfig.json`, explicitly listing your declaration dependencies. +- Propogate desriptive `package.json` properties down to child projects if using [Yarn](https://yarnpkg.com) workspaces. + +# Supported Project Management Tools + +- [Yarn](https://yarnpkg.com) 1.3.2+ +- [Lerna](https://lernajs.io) 2.0+ + # License © 2017 NativeCode Development From f6a3cca5ad75ed7255595563345e5326cf7a473f Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Wed, 15 Nov 2017 14:24:57 -0500 Subject: [PATCH 18/35] typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2cd31c5..a1cf8b1 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ It's a chest. With TypeScript inside. Actually, it's a set of tools to manage TypeScript projects, whether they are stand-alone or workspace-based (either [Yarn](https://yarnpkg.com) or [Lerna](https://lernajs.io). -# What Problems Does Get Solved +# What Problems Get Solved CHEST will... From 6e3c210e69fc3901c551d28e98d03e543c2615e9 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Wed, 15 Nov 2017 14:33:13 -0500 Subject: [PATCH 19/35] fixing exported typings --- package.json | 15 ++++++++------- src/index.ts | 3 +++ 2 files changed, 11 insertions(+), 7 deletions(-) create mode 100644 src/index.ts diff --git a/package.json b/package.json index 40ff662..3036e09 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,12 @@ { - "bin": "./lib/CLI.js", + "name": "@beard/chest", "description": "CHEST of me best tools, matey!", + "bin": "./lib/CLI.js", + "license": "MIT", + "main": "./lib/CLI.js", + "repository": "https://github.com/nativecode-dev/chest", + "typings": "./lib/index.d.ts", + "version": "1.1.2", "dependencies": { "chalk": "^2.3.0" }, @@ -18,9 +24,6 @@ "tslint": "^5.8.0", "typescript": "^2.6.1" }, - "license": "MIT", - "main": "./lib/CLI.js", - "name": "@beard/chest", "publishConfig": { "access": "public" }, @@ -30,7 +33,5 @@ "postbuild": "bin-shebang", "test": "mocha --opts mocha.opts", "pretest": "yarn run build" - }, - "typings": "lib/index.d.ts", - "version": "1.1.2" + } } diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..cb5a92b --- /dev/null +++ b/src/index.ts @@ -0,0 +1,3 @@ +export * from './Core' +export * from './Chest' +export * from './CLI' From d10e7f5bf0679546442e8f93246891b189aad73e Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Wed, 15 Nov 2017 14:38:27 -0500 Subject: [PATCH 20/35] moving --- src/cli.ts => CLI.ts | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/cli.ts => CLI.ts (100%) diff --git a/src/cli.ts b/CLI.ts similarity index 100% rename from src/cli.ts rename to CLI.ts From bb0289fd5a3939fd9a87fb5bf3af1c4859b9c019 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Wed, 15 Nov 2017 14:38:35 -0500 Subject: [PATCH 21/35] moving back --- CLI.ts => src/CLI.ts | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename CLI.ts => src/CLI.ts (100%) diff --git a/CLI.ts b/src/CLI.ts similarity index 100% rename from CLI.ts rename to src/CLI.ts From 43134088ff69c4080a14673c16aa83cb0527021e Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Wed, 15 Nov 2017 14:39:33 -0500 Subject: [PATCH 22/35] bumping version in develop --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3036e09..bf84ab0 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "main": "./lib/CLI.js", "repository": "https://github.com/nativecode-dev/chest", "typings": "./lib/index.d.ts", - "version": "1.1.2", + "version": "2.0.0", "dependencies": { "chalk": "^2.3.0" }, From 2d22e1bfe22794d6dcc636f6f2c22464c5292310 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Wed, 15 Nov 2017 14:50:48 -0500 Subject: [PATCH 23/35] adding coveralls support --- .../5ebd2eba06afac487abc38b709beefec.json | 1 + .../927864e4cc9866423eb4dd942ca8f842.json | 1 + .../edf0364c870f24ce7554a501d2c46052.json | 1 + .travis.yml | 5 +- package.json | 31 +- src/Core/UpdateScript.ts | 2 +- yarn.lock | 1100 ++++++++++++++++- 7 files changed, 1123 insertions(+), 18 deletions(-) create mode 100644 .nyc_output/5ebd2eba06afac487abc38b709beefec.json create mode 100644 .nyc_output/927864e4cc9866423eb4dd942ca8f842.json create mode 100644 .nyc_output/edf0364c870f24ce7554a501d2c46052.json diff --git a/.nyc_output/5ebd2eba06afac487abc38b709beefec.json b/.nyc_output/5ebd2eba06afac487abc38b709beefec.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/.nyc_output/5ebd2eba06afac487abc38b709beefec.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/.nyc_output/927864e4cc9866423eb4dd942ca8f842.json b/.nyc_output/927864e4cc9866423eb4dd942ca8f842.json new file mode 100644 index 0000000..098e55e --- /dev/null +++ b/.nyc_output/927864e4cc9866423eb4dd942ca8f842.json @@ -0,0 +1 @@ +{"/Users/mpham/Code/nativecode/chest/src/Chest.ts":{"path":"/Users/mpham/Code/nativecode/chest/src/Chest.ts","statementMap":{"0":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":8,"column":7}},"2":{"start":{"line":4,"column":36},"end":{"line":4,"column":97}},"3":{"start":{"line":4,"column":42},"end":{"line":4,"column":70}},"4":{"start":{"line":4,"column":85},"end":{"line":4,"column":95}},"5":{"start":{"line":5,"column":35},"end":{"line":5,"column":100}},"6":{"start":{"line":5,"column":41},"end":{"line":5,"column":73}},"7":{"start":{"line":5,"column":88},"end":{"line":5,"column":98}},"8":{"start":{"line":6,"column":32},"end":{"line":6,"column":149}},"9":{"start":{"line":6,"column":97},"end":{"line":6,"column":119}},"10":{"start":{"line":7,"column":8},"end":{"line":7,"column":78}},"11":{"start":{"line":10,"column":0},"end":{"line":10,"column":62}},"12":{"start":{"line":11,"column":13},"end":{"line":11,"column":28}},"13":{"start":{"line":12,"column":15},"end":{"line":12,"column":32}},"14":{"start":{"line":15,"column":8},"end":{"line":30,"column":11}},"15":{"start":{"line":16,"column":28},"end":{"line":16,"column":59}},"16":{"start":{"line":17,"column":12},"end":{"line":19,"column":13}},"17":{"start":{"line":18,"column":16},"end":{"line":18,"column":72}},"18":{"start":{"line":20,"column":24},"end":{"line":20,"column":56}},"19":{"start":{"line":21,"column":28},"end":{"line":21,"column":62}},"20":{"start":{"line":22,"column":12},"end":{"line":28,"column":13}},"21":{"start":{"line":23,"column":16},"end":{"line":27,"column":41}},"22":{"start":{"line":24,"column":44},"end":{"line":24,"column":148}},"23":{"start":{"line":24,"column":91},"end":{"line":24,"column":145}},"24":{"start":{"line":25,"column":51},"end":{"line":27,"column":18}},"25":{"start":{"line":26,"column":20},"end":{"line":26,"column":66}},"26":{"start":{"line":29,"column":12},"end":{"line":29,"column":29}},"27":{"start":{"line":33,"column":8},"end":{"line":44,"column":11}},"28":{"start":{"line":34,"column":12},"end":{"line":34,"column":114}},"29":{"start":{"line":35,"column":12},"end":{"line":37,"column":13}},"30":{"start":{"line":36,"column":16},"end":{"line":36,"column":94}},"31":{"start":{"line":38,"column":29},"end":{"line":38,"column":71}},"32":{"start":{"line":39,"column":12},"end":{"line":43,"column":17}},"33":{"start":{"line":39,"column":57},"end":{"line":43,"column":14}},"34":{"start":{"line":40,"column":32},"end":{"line":40,"column":66}},"35":{"start":{"line":41,"column":28},"end":{"line":41,"column":60}},"36":{"start":{"line":42,"column":16},"end":{"line":42,"column":68}},"37":{"start":{"line":47,"column":0},"end":{"line":47,"column":22}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":44},"end":{"line":2,"column":45}},"loc":{"start":{"line":2,"column":89},"end":{"line":9,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":36},"end":{"line":3,"column":37}},"loc":{"start":{"line":3,"column":63},"end":{"line":8,"column":5}},"line":3},"2":{"name":"fulfilled","decl":{"start":{"line":4,"column":17},"end":{"line":4,"column":26}},"loc":{"start":{"line":4,"column":34},"end":{"line":4,"column":99}},"line":4},"3":{"name":"rejected","decl":{"start":{"line":5,"column":17},"end":{"line":5,"column":25}},"loc":{"start":{"line":5,"column":33},"end":{"line":5,"column":102}},"line":5},"4":{"name":"step","decl":{"start":{"line":6,"column":17},"end":{"line":6,"column":21}},"loc":{"start":{"line":6,"column":30},"end":{"line":6,"column":151}},"line":6},"5":{"name":"(anonymous_5)","decl":{"start":{"line":6,"column":76},"end":{"line":6,"column":77}},"loc":{"start":{"line":6,"column":95},"end":{"line":6,"column":121}},"line":6},"6":{"name":"(anonymous_6)","decl":{"start":{"line":14,"column":4},"end":{"line":14,"column":5}},"loc":{"start":{"line":14,"column":26},"end":{"line":31,"column":5}},"line":14},"7":{"name":"(anonymous_7)","decl":{"start":{"line":15,"column":47},"end":{"line":15,"column":48}},"loc":{"start":{"line":15,"column":60},"end":{"line":30,"column":9}},"line":15},"8":{"name":"(anonymous_8)","decl":{"start":{"line":24,"column":25},"end":{"line":24,"column":26}},"loc":{"start":{"line":24,"column":44},"end":{"line":24,"column":148}},"line":24},"9":{"name":"(anonymous_9)","decl":{"start":{"line":24,"column":76},"end":{"line":24,"column":77}},"loc":{"start":{"line":24,"column":89},"end":{"line":24,"column":147}},"line":24},"10":{"name":"(anonymous_10)","decl":{"start":{"line":25,"column":28},"end":{"line":25,"column":29}},"loc":{"start":{"line":25,"column":51},"end":{"line":27,"column":18}},"line":25},"11":{"name":"(anonymous_11)","decl":{"start":{"line":25,"column":83},"end":{"line":25,"column":84}},"loc":{"start":{"line":25,"column":96},"end":{"line":27,"column":17}},"line":25},"12":{"name":"(anonymous_12)","decl":{"start":{"line":32,"column":4},"end":{"line":32,"column":5}},"loc":{"start":{"line":32,"column":44},"end":{"line":45,"column":5}},"line":32},"13":{"name":"(anonymous_13)","decl":{"start":{"line":33,"column":47},"end":{"line":33,"column":48}},"loc":{"start":{"line":33,"column":60},"end":{"line":44,"column":9}},"line":33},"14":{"name":"(anonymous_14)","decl":{"start":{"line":39,"column":44},"end":{"line":39,"column":45}},"loc":{"start":{"line":39,"column":57},"end":{"line":43,"column":14}},"line":39},"15":{"name":"(anonymous_15)","decl":{"start":{"line":39,"column":89},"end":{"line":39,"column":90}},"loc":{"start":{"line":39,"column":102},"end":{"line":43,"column":13}},"line":39}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":17},"end":{"line":2,"column":21}},{"start":{"line":2,"column":25},"end":{"line":2,"column":39}},{"start":{"line":2,"column":44},"end":{"line":9,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":16},"end":{"line":3,"column":34}},"type":"binary-expr","locations":[{"start":{"line":3,"column":16},"end":{"line":3,"column":17}},{"start":{"line":3,"column":22},"end":{"line":3,"column":33}}],"line":3},"2":{"loc":{"start":{"line":6,"column":32},"end":{"line":6,"column":148}},"type":"cond-expr","locations":[{"start":{"line":6,"column":46},"end":{"line":6,"column":67}},{"start":{"line":6,"column":70},"end":{"line":6,"column":148}}],"line":6},"3":{"loc":{"start":{"line":7,"column":51},"end":{"line":7,"column":67}},"type":"binary-expr","locations":[{"start":{"line":7,"column":51},"end":{"line":7,"column":61}},{"start":{"line":7,"column":65},"end":{"line":7,"column":67}}],"line":7},"4":{"loc":{"start":{"line":17,"column":12},"end":{"line":19,"column":13}},"type":"if","locations":[{"start":{"line":17,"column":12},"end":{"line":19,"column":13}},{"start":{"line":17,"column":12},"end":{"line":19,"column":13}}],"line":17},"5":{"loc":{"start":{"line":22,"column":12},"end":{"line":28,"column":13}},"type":"if","locations":[{"start":{"line":22,"column":12},"end":{"line":28,"column":13}},{"start":{"line":22,"column":12},"end":{"line":28,"column":13}}],"line":22},"6":{"loc":{"start":{"line":22,"column":16},"end":{"line":22,"column":44}},"type":"binary-expr","locations":[{"start":{"line":22,"column":16},"end":{"line":22,"column":27}},{"start":{"line":22,"column":31},"end":{"line":22,"column":44}}],"line":22},"7":{"loc":{"start":{"line":35,"column":12},"end":{"line":37,"column":13}},"type":"if","locations":[{"start":{"line":35,"column":12},"end":{"line":37,"column":13}},{"start":{"line":35,"column":12},"end":{"line":37,"column":13}}],"line":35}},"s":{"0":1,"1":10,"2":16,"3":16,"4":0,"5":0,"6":0,"7":0,"8":26,"9":16,"10":10,"11":1,"12":1,"13":1,"14":2,"15":2,"16":2,"17":0,"18":2,"19":2,"20":2,"21":1,"22":2,"23":2,"24":2,"25":2,"26":1,"27":2,"28":2,"29":2,"30":0,"31":2,"32":2,"33":2,"34":2,"35":2,"36":2,"37":1},"f":{"0":10,"1":10,"2":16,"3":0,"4":26,"5":16,"6":2,"7":2,"8":2,"9":2,"10":2,"11":2,"12":2,"13":2,"14":2,"15":2},"b":{"0":[1,1,1],"1":[10,10],"2":[10,16],"3":[10,10],"4":[0,2],"5":[1,1],"6":[2,1],"7":[0,2]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"e5dc3ddac5cf4247486df34d73e876dc75a9f834","contentHash":"ff661ba3761bab947b7f7230fc3e87f4_11.3.0"},"/Users/mpham/Code/nativecode/chest/src/Core/index.ts":{"path":"/Users/mpham/Code/nativecode/chest/src/Core/index.ts","statementMap":{"0":{"start":{"line":3,"column":4},"end":{"line":3,"column":71}},"1":{"start":{"line":3,"column":21},"end":{"line":3,"column":71}},"2":{"start":{"line":3,"column":53},"end":{"line":3,"column":71}},"3":{"start":{"line":5,"column":0},"end":{"line":5,"column":62}},"4":{"start":{"line":6,"column":0},"end":{"line":6,"column":34}},"5":{"start":{"line":7,"column":0},"end":{"line":7,"column":29}},"6":{"start":{"line":8,"column":0},"end":{"line":8,"column":30}},"7":{"start":{"line":9,"column":0},"end":{"line":9,"column":31}},"8":{"start":{"line":10,"column":0},"end":{"line":10,"column":32}},"9":{"start":{"line":11,"column":0},"end":{"line":11,"column":36}}},"fnMap":{"0":{"name":"__export","decl":{"start":{"line":2,"column":9},"end":{"line":2,"column":17}},"loc":{"start":{"line":2,"column":21},"end":{"line":4,"column":1}},"line":2}},"branchMap":{"0":{"loc":{"start":{"line":3,"column":21},"end":{"line":3,"column":71}},"type":"if","locations":[{"start":{"line":3,"column":21},"end":{"line":3,"column":71}},{"start":{"line":3,"column":21},"end":{"line":3,"column":71}}],"line":3}},"s":{"0":6,"1":6,"2":6,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1},"f":{"0":6},"b":{"0":[6,0]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"f68b1d3ae54f171fe92fc2e31ab7e7a676304dfc","contentHash":"cfda12a40cb74f4d0a286c041f659373_11.3.0"},"/Users/mpham/Code/nativecode/chest/src/Core/Interfaces/index.ts":{"path":"/Users/mpham/Code/nativecode/chest/src/Core/Interfaces/index.ts","statementMap":{"0":{"start":{"line":3,"column":4},"end":{"line":3,"column":71}},"1":{"start":{"line":3,"column":21},"end":{"line":3,"column":71}},"2":{"start":{"line":3,"column":53},"end":{"line":3,"column":71}},"3":{"start":{"line":5,"column":0},"end":{"line":5,"column":62}},"4":{"start":{"line":6,"column":0},"end":{"line":6,"column":31}}},"fnMap":{"0":{"name":"__export","decl":{"start":{"line":2,"column":9},"end":{"line":2,"column":17}},"loc":{"start":{"line":2,"column":21},"end":{"line":4,"column":1}},"line":2}},"branchMap":{"0":{"loc":{"start":{"line":3,"column":21},"end":{"line":3,"column":71}},"type":"if","locations":[{"start":{"line":3,"column":21},"end":{"line":3,"column":71}},{"start":{"line":3,"column":21},"end":{"line":3,"column":71}}],"line":3}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"f":{"0":1},"b":{"0":[1,0]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"4619863f9162a36374fa4a981137a63bafa6e146","contentHash":"983b344bdfc181a1c9bad371bbe0d3db_11.3.0"},"/Users/mpham/Code/nativecode/chest/src/Core/Interfaces/Updater.ts":{"path":"/Users/mpham/Code/nativecode/chest/src/Core/Interfaces/Updater.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":4,"column":0},"end":{"line":7,"column":68}},"2":{"start":{"line":5,"column":4},"end":{"line":5,"column":33}},"3":{"start":{"line":6,"column":4},"end":{"line":6,"column":41}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":1},"end":{"line":4,"column":2}},"loc":{"start":{"line":4,"column":24},"end":{"line":7,"column":1}},"line":4}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":17},"end":{"line":7,"column":66}},"type":"binary-expr","locations":[{"start":{"line":7,"column":17},"end":{"line":7,"column":36}},{"start":{"line":7,"column":41},"end":{"line":7,"column":65}}],"line":7}},"s":{"0":1,"1":1,"2":1,"3":1},"f":{"0":1},"b":{"0":[1,1]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"b8d116e169ab652a19c9c477b2d97774634a652a","contentHash":"9c212a740ee773f4503bc6f241194b16_11.3.0"},"/Users/mpham/Code/nativecode/chest/src/Core/Files.ts":{"path":"/Users/mpham/Code/nativecode/chest/src/Core/Files.ts","statementMap":{"0":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":8,"column":7}},"2":{"start":{"line":4,"column":36},"end":{"line":4,"column":97}},"3":{"start":{"line":4,"column":42},"end":{"line":4,"column":70}},"4":{"start":{"line":4,"column":85},"end":{"line":4,"column":95}},"5":{"start":{"line":5,"column":35},"end":{"line":5,"column":100}},"6":{"start":{"line":5,"column":41},"end":{"line":5,"column":73}},"7":{"start":{"line":5,"column":88},"end":{"line":5,"column":98}},"8":{"start":{"line":6,"column":32},"end":{"line":6,"column":149}},"9":{"start":{"line":6,"column":97},"end":{"line":6,"column":119}},"10":{"start":{"line":7,"column":8},"end":{"line":7,"column":78}},"11":{"start":{"line":10,"column":0},"end":{"line":10,"column":62}},"12":{"start":{"line":11,"column":11},"end":{"line":11,"column":24}},"13":{"start":{"line":12,"column":13},"end":{"line":12,"column":28}},"14":{"start":{"line":15,"column":8},"end":{"line":17,"column":11}},"15":{"start":{"line":16,"column":12},"end":{"line":16,"column":61}},"16":{"start":{"line":16,"column":44},"end":{"line":16,"column":59}},"17":{"start":{"line":20,"column":25},"end":{"line":20,"column":48}},"18":{"start":{"line":21,"column":24},"end":{"line":21,"column":46}},"19":{"start":{"line":22,"column":8},"end":{"line":22,"column":45}},"20":{"start":{"line":25,"column":8},"end":{"line":25,"column":34}},"21":{"start":{"line":28,"column":8},"end":{"line":34,"column":11}},"22":{"start":{"line":29,"column":12},"end":{"line":32,"column":13}},"23":{"start":{"line":30,"column":31},"end":{"line":30,"column":60}},"24":{"start":{"line":31,"column":16},"end":{"line":31,"column":53}},"25":{"start":{"line":33,"column":12},"end":{"line":33,"column":73}},"26":{"start":{"line":37,"column":8},"end":{"line":46,"column":11}},"27":{"start":{"line":38,"column":12},"end":{"line":45,"column":15}},"28":{"start":{"line":39,"column":16},"end":{"line":44,"column":17}},"29":{"start":{"line":40,"column":20},"end":{"line":40,"column":34}},"30":{"start":{"line":43,"column":20},"end":{"line":43,"column":34}},"31":{"start":{"line":49,"column":8},"end":{"line":52,"column":11}},"32":{"start":{"line":50,"column":26},"end":{"line":50,"column":56}},"33":{"start":{"line":51,"column":12},"end":{"line":51,"column":77}},"34":{"start":{"line":51,"column":40},"end":{"line":51,"column":48}},"35":{"start":{"line":51,"column":62},"end":{"line":51,"column":75}},"36":{"start":{"line":55,"column":8},"end":{"line":58,"column":11}},"37":{"start":{"line":56,"column":26},"end":{"line":56,"column":56}},"38":{"start":{"line":57,"column":12},"end":{"line":57,"column":78}},"39":{"start":{"line":57,"column":40},"end":{"line":57,"column":49}},"40":{"start":{"line":57,"column":63},"end":{"line":57,"column":76}},"41":{"start":{"line":61,"column":8},"end":{"line":63,"column":11}},"42":{"start":{"line":62,"column":12},"end":{"line":62,"column":74}},"43":{"start":{"line":66,"column":8},"end":{"line":77,"column":11}},"44":{"start":{"line":67,"column":12},"end":{"line":76,"column":15}},"45":{"start":{"line":68,"column":16},"end":{"line":75,"column":19}},"46":{"start":{"line":69,"column":20},"end":{"line":74,"column":21}},"47":{"start":{"line":70,"column":24},"end":{"line":70,"column":38}},"48":{"start":{"line":73,"column":24},"end":{"line":73,"column":39}},"49":{"start":{"line":80,"column":8},"end":{"line":99,"column":11}},"50":{"start":{"line":81,"column":12},"end":{"line":98,"column":16}},"51":{"start":{"line":81,"column":51},"end":{"line":98,"column":14}},"52":{"start":{"line":82,"column":16},"end":{"line":97,"column":17}},"53":{"start":{"line":83,"column":20},"end":{"line":83,"column":34}},"54":{"start":{"line":86,"column":37},"end":{"line":94,"column":23}},"55":{"start":{"line":86,"column":61},"end":{"line":94,"column":22}},"56":{"start":{"line":87,"column":41},"end":{"line":87,"column":70}},"57":{"start":{"line":88,"column":37},"end":{"line":88,"column":66}},"58":{"start":{"line":89,"column":24},"end":{"line":93,"column":26}},"59":{"start":{"line":95,"column":34},"end":{"line":95,"column":61}},"60":{"start":{"line":96,"column":20},"end":{"line":96,"column":35}},"61":{"start":{"line":102,"column":8},"end":{"line":111,"column":11}},"62":{"start":{"line":103,"column":12},"end":{"line":110,"column":15}},"63":{"start":{"line":104,"column":16},"end":{"line":109,"column":17}},"64":{"start":{"line":105,"column":20},"end":{"line":105,"column":34}},"65":{"start":{"line":108,"column":20},"end":{"line":108,"column":30}},"66":{"start":{"line":114,"column":0},"end":{"line":114,"column":36}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":44},"end":{"line":2,"column":45}},"loc":{"start":{"line":2,"column":89},"end":{"line":9,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":36},"end":{"line":3,"column":37}},"loc":{"start":{"line":3,"column":63},"end":{"line":8,"column":5}},"line":3},"2":{"name":"fulfilled","decl":{"start":{"line":4,"column":17},"end":{"line":4,"column":26}},"loc":{"start":{"line":4,"column":34},"end":{"line":4,"column":99}},"line":4},"3":{"name":"rejected","decl":{"start":{"line":5,"column":17},"end":{"line":5,"column":25}},"loc":{"start":{"line":5,"column":33},"end":{"line":5,"column":102}},"line":5},"4":{"name":"step","decl":{"start":{"line":6,"column":17},"end":{"line":6,"column":21}},"loc":{"start":{"line":6,"column":30},"end":{"line":6,"column":151}},"line":6},"5":{"name":"(anonymous_5)","decl":{"start":{"line":6,"column":76},"end":{"line":6,"column":77}},"loc":{"start":{"line":6,"column":95},"end":{"line":6,"column":121}},"line":6},"6":{"name":"(anonymous_6)","decl":{"start":{"line":14,"column":4},"end":{"line":14,"column":5}},"loc":{"start":{"line":14,"column":21},"end":{"line":18,"column":5}},"line":14},"7":{"name":"(anonymous_7)","decl":{"start":{"line":15,"column":27},"end":{"line":15,"column":28}},"loc":{"start":{"line":15,"column":48},"end":{"line":17,"column":9}},"line":15},"8":{"name":"(anonymous_8)","decl":{"start":{"line":16,"column":32},"end":{"line":16,"column":33}},"loc":{"start":{"line":16,"column":44},"end":{"line":16,"column":59}},"line":16},"9":{"name":"(anonymous_9)","decl":{"start":{"line":19,"column":4},"end":{"line":19,"column":5}},"loc":{"start":{"line":19,"column":28},"end":{"line":23,"column":5}},"line":19},"10":{"name":"(anonymous_10)","decl":{"start":{"line":24,"column":4},"end":{"line":24,"column":5}},"loc":{"start":{"line":24,"column":18},"end":{"line":26,"column":5}},"line":24},"11":{"name":"(anonymous_11)","decl":{"start":{"line":27,"column":4},"end":{"line":27,"column":5}},"loc":{"start":{"line":27,"column":19},"end":{"line":35,"column":5}},"line":27},"12":{"name":"(anonymous_12)","decl":{"start":{"line":28,"column":47},"end":{"line":28,"column":48}},"loc":{"start":{"line":28,"column":60},"end":{"line":34,"column":9}},"line":28},"13":{"name":"(anonymous_13)","decl":{"start":{"line":36,"column":4},"end":{"line":36,"column":5}},"loc":{"start":{"line":36,"column":23},"end":{"line":47,"column":5}},"line":36},"14":{"name":"(anonymous_14)","decl":{"start":{"line":37,"column":27},"end":{"line":37,"column":28}},"loc":{"start":{"line":37,"column":48},"end":{"line":46,"column":9}},"line":37},"15":{"name":"(anonymous_15)","decl":{"start":{"line":38,"column":34},"end":{"line":38,"column":35}},"loc":{"start":{"line":38,"column":51},"end":{"line":45,"column":13}},"line":38},"16":{"name":"(anonymous_16)","decl":{"start":{"line":48,"column":4},"end":{"line":48,"column":5}},"loc":{"start":{"line":48,"column":23},"end":{"line":53,"column":5}},"line":48},"17":{"name":"(anonymous_17)","decl":{"start":{"line":49,"column":47},"end":{"line":49,"column":48}},"loc":{"start":{"line":49,"column":60},"end":{"line":52,"column":9}},"line":49},"18":{"name":"(anonymous_18)","decl":{"start":{"line":51,"column":32},"end":{"line":51,"column":33}},"loc":{"start":{"line":51,"column":40},"end":{"line":51,"column":48}},"line":51},"19":{"name":"(anonymous_19)","decl":{"start":{"line":51,"column":54},"end":{"line":51,"column":55}},"loc":{"start":{"line":51,"column":62},"end":{"line":51,"column":75}},"line":51},"20":{"name":"(anonymous_20)","decl":{"start":{"line":54,"column":4},"end":{"line":54,"column":5}},"loc":{"start":{"line":54,"column":24},"end":{"line":59,"column":5}},"line":54},"21":{"name":"(anonymous_21)","decl":{"start":{"line":55,"column":47},"end":{"line":55,"column":48}},"loc":{"start":{"line":55,"column":60},"end":{"line":58,"column":9}},"line":55},"22":{"name":"(anonymous_22)","decl":{"start":{"line":57,"column":32},"end":{"line":57,"column":33}},"loc":{"start":{"line":57,"column":40},"end":{"line":57,"column":49}},"line":57},"23":{"name":"(anonymous_23)","decl":{"start":{"line":57,"column":55},"end":{"line":57,"column":56}},"loc":{"start":{"line":57,"column":63},"end":{"line":57,"column":76}},"line":57},"24":{"name":"(anonymous_24)","decl":{"start":{"line":60,"column":4},"end":{"line":60,"column":5}},"loc":{"start":{"line":60,"column":25},"end":{"line":64,"column":5}},"line":60},"25":{"name":"(anonymous_25)","decl":{"start":{"line":61,"column":47},"end":{"line":61,"column":48}},"loc":{"start":{"line":61,"column":60},"end":{"line":63,"column":9}},"line":61},"26":{"name":"(anonymous_26)","decl":{"start":{"line":65,"column":4},"end":{"line":65,"column":5}},"loc":{"start":{"line":65,"column":23},"end":{"line":78,"column":5}},"line":65},"27":{"name":"(anonymous_27)","decl":{"start":{"line":66,"column":47},"end":{"line":66,"column":48}},"loc":{"start":{"line":66,"column":60},"end":{"line":77,"column":9}},"line":66},"28":{"name":"(anonymous_28)","decl":{"start":{"line":67,"column":31},"end":{"line":67,"column":32}},"loc":{"start":{"line":67,"column":52},"end":{"line":76,"column":13}},"line":67},"29":{"name":"(anonymous_29)","decl":{"start":{"line":68,"column":34},"end":{"line":68,"column":35}},"loc":{"start":{"line":68,"column":52},"end":{"line":75,"column":17}},"line":68},"30":{"name":"(anonymous_30)","decl":{"start":{"line":79,"column":4},"end":{"line":79,"column":5}},"loc":{"start":{"line":79,"column":24},"end":{"line":100,"column":5}},"line":79},"31":{"name":"(anonymous_31)","decl":{"start":{"line":80,"column":27},"end":{"line":80,"column":28}},"loc":{"start":{"line":80,"column":48},"end":{"line":99,"column":9}},"line":80},"32":{"name":"(anonymous_32)","decl":{"start":{"line":81,"column":33},"end":{"line":81,"column":34}},"loc":{"start":{"line":81,"column":51},"end":{"line":98,"column":14}},"line":81},"33":{"name":"(anonymous_33)","decl":{"start":{"line":81,"column":83},"end":{"line":81,"column":84}},"loc":{"start":{"line":81,"column":96},"end":{"line":98,"column":13}},"line":81},"34":{"name":"(anonymous_34)","decl":{"start":{"line":86,"column":47},"end":{"line":86,"column":48}},"loc":{"start":{"line":86,"column":61},"end":{"line":94,"column":22}},"line":86},"35":{"name":"(anonymous_35)","decl":{"start":{"line":86,"column":93},"end":{"line":86,"column":94}},"loc":{"start":{"line":86,"column":106},"end":{"line":94,"column":21}},"line":86},"36":{"name":"(anonymous_36)","decl":{"start":{"line":101,"column":4},"end":{"line":101,"column":5}},"loc":{"start":{"line":101,"column":30},"end":{"line":112,"column":5}},"line":101},"37":{"name":"(anonymous_37)","decl":{"start":{"line":102,"column":27},"end":{"line":102,"column":28}},"loc":{"start":{"line":102,"column":48},"end":{"line":111,"column":9}},"line":102},"38":{"name":"(anonymous_38)","decl":{"start":{"line":103,"column":41},"end":{"line":103,"column":42}},"loc":{"start":{"line":103,"column":52},"end":{"line":110,"column":13}},"line":103}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":17},"end":{"line":2,"column":21}},{"start":{"line":2,"column":25},"end":{"line":2,"column":39}},{"start":{"line":2,"column":44},"end":{"line":9,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":16},"end":{"line":3,"column":34}},"type":"binary-expr","locations":[{"start":{"line":3,"column":16},"end":{"line":3,"column":17}},{"start":{"line":3,"column":22},"end":{"line":3,"column":33}}],"line":3},"2":{"loc":{"start":{"line":6,"column":32},"end":{"line":6,"column":148}},"type":"cond-expr","locations":[{"start":{"line":6,"column":46},"end":{"line":6,"column":67}},{"start":{"line":6,"column":70},"end":{"line":6,"column":148}}],"line":6},"3":{"loc":{"start":{"line":7,"column":51},"end":{"line":7,"column":67}},"type":"binary-expr","locations":[{"start":{"line":7,"column":51},"end":{"line":7,"column":61}},{"start":{"line":7,"column":65},"end":{"line":7,"column":67}}],"line":7},"4":{"loc":{"start":{"line":29,"column":12},"end":{"line":32,"column":13}},"type":"if","locations":[{"start":{"line":29,"column":12},"end":{"line":32,"column":13}},{"start":{"line":29,"column":12},"end":{"line":32,"column":13}}],"line":29},"5":{"loc":{"start":{"line":39,"column":16},"end":{"line":44,"column":17}},"type":"if","locations":[{"start":{"line":39,"column":16},"end":{"line":44,"column":17}},{"start":{"line":39,"column":16},"end":{"line":44,"column":17}}],"line":39},"6":{"loc":{"start":{"line":69,"column":20},"end":{"line":74,"column":21}},"type":"if","locations":[{"start":{"line":69,"column":20},"end":{"line":74,"column":21}},{"start":{"line":69,"column":20},"end":{"line":74,"column":21}}],"line":69},"7":{"loc":{"start":{"line":82,"column":16},"end":{"line":97,"column":17}},"type":"if","locations":[{"start":{"line":82,"column":16},"end":{"line":97,"column":17}},{"start":{"line":82,"column":16},"end":{"line":97,"column":17}}],"line":82},"8":{"loc":{"start":{"line":104,"column":16},"end":{"line":109,"column":17}},"type":"if","locations":[{"start":{"line":104,"column":16},"end":{"line":109,"column":17}},{"start":{"line":104,"column":16},"end":{"line":109,"column":17}}],"line":104}},"s":{"0":1,"1":12,"2":14,"3":14,"4":0,"5":0,"6":0,"7":0,"8":26,"9":14,"10":12,"11":1,"12":1,"13":1,"14":8,"15":8,"16":8,"17":0,"18":0,"19":0,"20":4,"21":4,"22":4,"23":4,"24":4,"25":0,"26":4,"27":4,"28":4,"29":0,"30":4,"31":2,"32":2,"33":2,"34":2,"35":2,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":2,"44":2,"45":2,"46":2,"47":0,"48":2,"49":2,"50":2,"51":2,"52":2,"53":0,"54":2,"55":2,"56":2,"57":2,"58":2,"59":2,"60":2,"61":0,"62":0,"63":0,"64":0,"65":0,"66":1},"f":{"0":12,"1":12,"2":14,"3":0,"4":26,"5":14,"6":8,"7":8,"8":8,"9":0,"10":4,"11":4,"12":4,"13":4,"14":4,"15":4,"16":2,"17":2,"18":2,"19":2,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":2,"27":2,"28":2,"29":2,"30":2,"31":2,"32":2,"33":2,"34":2,"35":2,"36":0,"37":0,"38":0},"b":{"0":[1,1,1],"1":[12,12],"2":[12,14],"3":[12,12],"4":[4,0],"5":[0,4],"6":[0,2],"7":[0,2],"8":[0,0]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"c0a76f42a231dbbdf0bae7132c6827bf64c59bee","contentHash":"c6b9aff4112421317b57651446a4c601_11.3.0"},"/Users/mpham/Code/nativecode/chest/src/Core/Logger.ts":{"path":"/Users/mpham/Code/nativecode/chest/src/Core/Logger.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":14},"end":{"line":3,"column":30}},"2":{"start":{"line":5,"column":16},"end":{"line":5,"column":46}},"3":{"start":{"line":6,"column":17},"end":{"line":6,"column":64}},"4":{"start":{"line":6,"column":27},"end":{"line":6,"column":64}},"5":{"start":{"line":7,"column":4},"end":{"line":28,"column":6}},"6":{"start":{"line":9,"column":12},"end":{"line":11,"column":13}},"7":{"start":{"line":10,"column":16},"end":{"line":10,"column":79}},"8":{"start":{"line":14,"column":12},"end":{"line":14,"column":72}},"9":{"start":{"line":17,"column":12},"end":{"line":17,"column":72}},"10":{"start":{"line":20,"column":12},"end":{"line":20,"column":69}},"11":{"start":{"line":23,"column":12},"end":{"line":23,"column":69}},"12":{"start":{"line":26,"column":12},"end":{"line":26,"column":65}},"13":{"start":{"line":30,"column":0},"end":{"line":30,"column":24}}},"fnMap":{"0":{"name":"Logger","decl":{"start":{"line":4,"column":9},"end":{"line":4,"column":15}},"loc":{"start":{"line":4,"column":32},"end":{"line":29,"column":1}},"line":4},"1":{"name":"(anonymous_1)","decl":{"start":{"line":6,"column":17},"end":{"line":6,"column":18}},"loc":{"start":{"line":6,"column":27},"end":{"line":6,"column":64}},"line":6},"2":{"name":"(anonymous_2)","decl":{"start":{"line":8,"column":15},"end":{"line":8,"column":16}},"loc":{"start":{"line":8,"column":28},"end":{"line":12,"column":9}},"line":8},"3":{"name":"(anonymous_3)","decl":{"start":{"line":13,"column":15},"end":{"line":13,"column":16}},"loc":{"start":{"line":13,"column":28},"end":{"line":15,"column":9}},"line":13},"4":{"name":"(anonymous_4)","decl":{"start":{"line":16,"column":14},"end":{"line":16,"column":15}},"loc":{"start":{"line":16,"column":27},"end":{"line":18,"column":9}},"line":16},"5":{"name":"(anonymous_5)","decl":{"start":{"line":19,"column":15},"end":{"line":19,"column":16}},"loc":{"start":{"line":19,"column":28},"end":{"line":21,"column":9}},"line":19},"6":{"name":"(anonymous_6)","decl":{"start":{"line":22,"column":14},"end":{"line":22,"column":15}},"loc":{"start":{"line":22,"column":27},"end":{"line":24,"column":9}},"line":22},"7":{"name":"(anonymous_7)","decl":{"start":{"line":25,"column":14},"end":{"line":25,"column":15}},"loc":{"start":{"line":25,"column":27},"end":{"line":27,"column":9}},"line":25}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":16},"end":{"line":5,"column":46}},"type":"cond-expr","locations":[{"start":{"line":5,"column":27},"end":{"line":5,"column":41}},{"start":{"line":5,"column":44},"end":{"line":5,"column":46}}],"line":5},"1":{"loc":{"start":{"line":9,"column":12},"end":{"line":11,"column":13}},"type":"if","locations":[{"start":{"line":9,"column":12},"end":{"line":11,"column":13}},{"start":{"line":9,"column":12},"end":{"line":11,"column":13}}],"line":9}},"s":{"0":1,"1":1,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":1},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0},"b":{"0":[0,0],"1":[0,0]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"2f0ba63f63fa57c6098e084f0c3ec0768109c80c","contentHash":"5bfbbebbd09530e907c8a440f0be3343_11.3.0"},"/Users/mpham/Code/nativecode/chest/src/Core/Project.ts":{"path":"/Users/mpham/Code/nativecode/chest/src/Core/Project.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":5,"column":8},"end":{"line":5,"column":26}},"2":{"start":{"line":6,"column":8},"end":{"line":6,"column":36}},"3":{"start":{"line":7,"column":8},"end":{"line":7,"column":26}},"4":{"start":{"line":10,"column":8},"end":{"line":10,"column":26}},"5":{"start":{"line":13,"column":8},"end":{"line":13,"column":27}},"6":{"start":{"line":16,"column":8},"end":{"line":16,"column":26}},"7":{"start":{"line":19,"column":0},"end":{"line":19,"column":26}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":4},"end":{"line":4,"column":5}},"loc":{"start":{"line":4,"column":35},"end":{"line":8,"column":5}},"line":4},"1":{"name":"(anonymous_1)","decl":{"start":{"line":9,"column":4},"end":{"line":9,"column":5}},"loc":{"start":{"line":9,"column":15},"end":{"line":11,"column":5}},"line":9},"2":{"name":"(anonymous_2)","decl":{"start":{"line":12,"column":4},"end":{"line":12,"column":5}},"loc":{"start":{"line":12,"column":16},"end":{"line":14,"column":5}},"line":12},"3":{"name":"(anonymous_3)","decl":{"start":{"line":15,"column":4},"end":{"line":15,"column":5}},"loc":{"start":{"line":15,"column":15},"end":{"line":17,"column":5}},"line":15}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":22},"end":{"line":6,"column":35}},"type":"binary-expr","locations":[{"start":{"line":6,"column":22},"end":{"line":6,"column":27}},{"start":{"line":6,"column":31},"end":{"line":6,"column":35}}],"line":6}},"s":{"0":1,"1":4,"2":4,"3":4,"4":4,"5":2,"6":3,"7":1},"f":{"0":4,"1":4,"2":2,"3":3},"b":{"0":[4,2]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"7ed056c5773a2de7630b33bdc7d2627bb46e9eaa","contentHash":"0301e29dc48d0833450febf639483781_11.3.0"},"/Users/mpham/Code/nativecode/chest/src/Core/Registry.ts":{"path":"/Users/mpham/Code/nativecode/chest/src/Core/Registry.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":5,"column":8},"end":{"line":5,"column":57}},"2":{"start":{"line":8,"column":8},"end":{"line":8,"column":53}},"3":{"start":{"line":11,"column":8},"end":{"line":12,"column":63}},"4":{"start":{"line":11,"column":43},"end":{"line":11,"column":60}},"5":{"start":{"line":12,"column":25},"end":{"line":12,"column":60}},"6":{"start":{"line":15,"column":20},"end":{"line":15,"column":38}},"7":{"start":{"line":16,"column":8},"end":{"line":18,"column":9}},"8":{"start":{"line":17,"column":12},"end":{"line":17,"column":43}},"9":{"start":{"line":19,"column":8},"end":{"line":19,"column":64}},"10":{"start":{"line":22,"column":0},"end":{"line":22,"column":28}},"11":{"start":{"line":23,"column":0},"end":{"line":23,"column":28}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":4},"end":{"line":4,"column":5}},"loc":{"start":{"line":4,"column":30},"end":{"line":6,"column":5}},"line":4},"1":{"name":"(anonymous_1)","decl":{"start":{"line":7,"column":4},"end":{"line":7,"column":5}},"loc":{"start":{"line":7,"column":17},"end":{"line":9,"column":5}},"line":7},"2":{"name":"(anonymous_2)","decl":{"start":{"line":10,"column":4},"end":{"line":10,"column":5}},"loc":{"start":{"line":10,"column":34},"end":{"line":13,"column":5}},"line":10},"3":{"name":"(anonymous_3)","decl":{"start":{"line":11,"column":36},"end":{"line":11,"column":37}},"loc":{"start":{"line":11,"column":43},"end":{"line":11,"column":60}},"line":11},"4":{"name":"(anonymous_4)","decl":{"start":{"line":12,"column":17},"end":{"line":12,"column":18}},"loc":{"start":{"line":12,"column":25},"end":{"line":12,"column":60}},"line":12},"5":{"name":"(anonymous_5)","decl":{"start":{"line":14,"column":4},"end":{"line":14,"column":5}},"loc":{"start":{"line":14,"column":21},"end":{"line":20,"column":5}},"line":14}},"branchMap":{"0":{"loc":{"start":{"line":16,"column":8},"end":{"line":18,"column":9}},"type":"if","locations":[{"start":{"line":16,"column":8},"end":{"line":18,"column":9}},{"start":{"line":16,"column":8},"end":{"line":18,"column":9}}],"line":16}},"s":{"0":1,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":1,"11":1},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"b":{"0":[0,0]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"fb7041a0d864e18fd9b661fce84183f600a2cded","contentHash":"a7c3a928a98bcf45b37ebc026cbb2b29_11.3.0"},"/Users/mpham/Code/nativecode/chest/src/Core/UpdateScript.ts":{"path":"/Users/mpham/Code/nativecode/chest/src/Core/UpdateScript.ts","statementMap":{"0":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":8,"column":7}},"2":{"start":{"line":4,"column":36},"end":{"line":4,"column":97}},"3":{"start":{"line":4,"column":42},"end":{"line":4,"column":70}},"4":{"start":{"line":4,"column":85},"end":{"line":4,"column":95}},"5":{"start":{"line":5,"column":35},"end":{"line":5,"column":100}},"6":{"start":{"line":5,"column":41},"end":{"line":5,"column":73}},"7":{"start":{"line":5,"column":88},"end":{"line":5,"column":98}},"8":{"start":{"line":6,"column":32},"end":{"line":6,"column":149}},"9":{"start":{"line":6,"column":97},"end":{"line":6,"column":119}},"10":{"start":{"line":7,"column":8},"end":{"line":7,"column":78}},"11":{"start":{"line":10,"column":0},"end":{"line":10,"column":62}},"12":{"start":{"line":11,"column":11},"end":{"line":11,"column":35}},"13":{"start":{"line":12,"column":13},"end":{"line":12,"column":28}},"14":{"start":{"line":13,"column":16},"end":{"line":13,"column":34}},"15":{"start":{"line":16,"column":8},"end":{"line":16,"column":26}},"16":{"start":{"line":17,"column":8},"end":{"line":17,"column":26}},"17":{"start":{"line":18,"column":8},"end":{"line":18,"column":40}},"18":{"start":{"line":21,"column":8},"end":{"line":21,"column":26}},"19":{"start":{"line":24,"column":8},"end":{"line":24,"column":26}},"20":{"start":{"line":27,"column":8},"end":{"line":27,"column":33}},"21":{"start":{"line":30,"column":8},"end":{"line":30,"column":33}},"22":{"start":{"line":33,"column":8},"end":{"line":39,"column":11}},"23":{"start":{"line":34,"column":29},"end":{"line":34,"column":64}},"24":{"start":{"line":35,"column":12},"end":{"line":37,"column":13}},"25":{"start":{"line":36,"column":16},"end":{"line":36,"column":52}},"26":{"start":{"line":38,"column":12},"end":{"line":38,"column":72}},"27":{"start":{"line":42,"column":8},"end":{"line":58,"column":11}},"28":{"start":{"line":43,"column":12},"end":{"line":43,"column":66}},"29":{"start":{"line":44,"column":26},"end":{"line":47,"column":14}},"30":{"start":{"line":45,"column":16},"end":{"line":46,"column":42}},"31":{"start":{"line":46,"column":20},"end":{"line":46,"column":42}},"32":{"start":{"line":48,"column":12},"end":{"line":48,"column":147}},"33":{"start":{"line":48,"column":44},"end":{"line":48,"column":145}},"34":{"start":{"line":48,"column":98},"end":{"line":48,"column":103}},"35":{"start":{"line":48,"column":121},"end":{"line":48,"column":144}},"36":{"start":{"line":49,"column":12},"end":{"line":49,"column":146}},"37":{"start":{"line":49,"column":44},"end":{"line":49,"column":144}},"38":{"start":{"line":49,"column":98},"end":{"line":49,"column":103}},"39":{"start":{"line":49,"column":121},"end":{"line":49,"column":143}},"40":{"start":{"line":50,"column":12},"end":{"line":57,"column":15}},"41":{"start":{"line":51,"column":16},"end":{"line":56,"column":17}},"42":{"start":{"line":52,"column":20},"end":{"line":52,"column":30}},"43":{"start":{"line":55,"column":20},"end":{"line":55,"column":35}},"44":{"start":{"line":61,"column":23},"end":{"line":63,"column":9}},"45":{"start":{"line":62,"column":12},"end":{"line":62,"column":92}},"46":{"start":{"line":62,"column":40},"end":{"line":62,"column":51}},"47":{"start":{"line":62,"column":65},"end":{"line":62,"column":90}},"48":{"start":{"line":64,"column":8},"end":{"line":66,"column":9}},"49":{"start":{"line":65,"column":12},"end":{"line":65,"column":73}},"50":{"start":{"line":67,"column":8},"end":{"line":67,"column":58}},"51":{"start":{"line":70,"column":0},"end":{"line":70,"column":36}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":44},"end":{"line":2,"column":45}},"loc":{"start":{"line":2,"column":89},"end":{"line":9,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":36},"end":{"line":3,"column":37}},"loc":{"start":{"line":3,"column":63},"end":{"line":8,"column":5}},"line":3},"2":{"name":"fulfilled","decl":{"start":{"line":4,"column":17},"end":{"line":4,"column":26}},"loc":{"start":{"line":4,"column":34},"end":{"line":4,"column":99}},"line":4},"3":{"name":"rejected","decl":{"start":{"line":5,"column":17},"end":{"line":5,"column":25}},"loc":{"start":{"line":5,"column":33},"end":{"line":5,"column":102}},"line":5},"4":{"name":"step","decl":{"start":{"line":6,"column":17},"end":{"line":6,"column":21}},"loc":{"start":{"line":6,"column":30},"end":{"line":6,"column":151}},"line":6},"5":{"name":"(anonymous_5)","decl":{"start":{"line":6,"column":76},"end":{"line":6,"column":77}},"loc":{"start":{"line":6,"column":95},"end":{"line":6,"column":121}},"line":6},"6":{"name":"(anonymous_6)","decl":{"start":{"line":15,"column":4},"end":{"line":15,"column":5}},"loc":{"start":{"line":15,"column":28},"end":{"line":19,"column":5}},"line":15},"7":{"name":"(anonymous_7)","decl":{"start":{"line":20,"column":4},"end":{"line":20,"column":5}},"loc":{"start":{"line":20,"column":15},"end":{"line":22,"column":5}},"line":20},"8":{"name":"(anonymous_8)","decl":{"start":{"line":23,"column":4},"end":{"line":23,"column":5}},"loc":{"start":{"line":23,"column":15},"end":{"line":25,"column":5}},"line":23},"9":{"name":"(anonymous_9)","decl":{"start":{"line":26,"column":4},"end":{"line":26,"column":5}},"loc":{"start":{"line":26,"column":19},"end":{"line":28,"column":5}},"line":26},"10":{"name":"(anonymous_10)","decl":{"start":{"line":29,"column":4},"end":{"line":29,"column":5}},"loc":{"start":{"line":29,"column":23},"end":{"line":31,"column":5}},"line":29},"11":{"name":"(anonymous_11)","decl":{"start":{"line":32,"column":4},"end":{"line":32,"column":5}},"loc":{"start":{"line":32,"column":18},"end":{"line":40,"column":5}},"line":32},"12":{"name":"(anonymous_12)","decl":{"start":{"line":33,"column":47},"end":{"line":33,"column":48}},"loc":{"start":{"line":33,"column":60},"end":{"line":39,"column":9}},"line":33},"13":{"name":"(anonymous_13)","decl":{"start":{"line":41,"column":4},"end":{"line":41,"column":5}},"loc":{"start":{"line":41,"column":35},"end":{"line":59,"column":5}},"line":41},"14":{"name":"(anonymous_14)","decl":{"start":{"line":42,"column":27},"end":{"line":42,"column":28}},"loc":{"start":{"line":42,"column":48},"end":{"line":58,"column":9}},"line":42},"15":{"name":"(anonymous_15)","decl":{"start":{"line":44,"column":89},"end":{"line":44,"column":90}},"loc":{"start":{"line":44,"column":98},"end":{"line":47,"column":13}},"line":44},"16":{"name":"(anonymous_16)","decl":{"start":{"line":48,"column":36},"end":{"line":48,"column":37}},"loc":{"start":{"line":48,"column":44},"end":{"line":48,"column":145}},"line":48},"17":{"name":"(anonymous_17)","decl":{"start":{"line":48,"column":89},"end":{"line":48,"column":90}},"loc":{"start":{"line":48,"column":98},"end":{"line":48,"column":103}},"line":48},"18":{"name":"(anonymous_18)","decl":{"start":{"line":48,"column":113},"end":{"line":48,"column":114}},"loc":{"start":{"line":48,"column":121},"end":{"line":48,"column":144}},"line":48},"19":{"name":"(anonymous_19)","decl":{"start":{"line":49,"column":36},"end":{"line":49,"column":37}},"loc":{"start":{"line":49,"column":44},"end":{"line":49,"column":144}},"line":49},"20":{"name":"(anonymous_20)","decl":{"start":{"line":49,"column":89},"end":{"line":49,"column":90}},"loc":{"start":{"line":49,"column":98},"end":{"line":49,"column":103}},"line":49},"21":{"name":"(anonymous_21)","decl":{"start":{"line":49,"column":113},"end":{"line":49,"column":114}},"loc":{"start":{"line":49,"column":121},"end":{"line":49,"column":143}},"line":49},"22":{"name":"(anonymous_22)","decl":{"start":{"line":50,"column":38},"end":{"line":50,"column":39}},"loc":{"start":{"line":50,"column":56},"end":{"line":57,"column":13}},"line":50},"23":{"name":"(anonymous_23)","decl":{"start":{"line":60,"column":4},"end":{"line":60,"column":5}},"loc":{"start":{"line":60,"column":32},"end":{"line":68,"column":5}},"line":60},"24":{"name":"(anonymous_24)","decl":{"start":{"line":61,"column":23},"end":{"line":61,"column":24}},"loc":{"start":{"line":61,"column":34},"end":{"line":63,"column":9}},"line":61},"25":{"name":"(anonymous_25)","decl":{"start":{"line":62,"column":32},"end":{"line":62,"column":33}},"loc":{"start":{"line":62,"column":40},"end":{"line":62,"column":51}},"line":62},"26":{"name":"(anonymous_26)","decl":{"start":{"line":62,"column":57},"end":{"line":62,"column":58}},"loc":{"start":{"line":62,"column":65},"end":{"line":62,"column":90}},"line":62}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":17},"end":{"line":2,"column":21}},{"start":{"line":2,"column":25},"end":{"line":2,"column":39}},{"start":{"line":2,"column":44},"end":{"line":9,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":16},"end":{"line":3,"column":34}},"type":"binary-expr","locations":[{"start":{"line":3,"column":16},"end":{"line":3,"column":17}},{"start":{"line":3,"column":22},"end":{"line":3,"column":33}}],"line":3},"2":{"loc":{"start":{"line":6,"column":32},"end":{"line":6,"column":148}},"type":"cond-expr","locations":[{"start":{"line":6,"column":46},"end":{"line":6,"column":67}},{"start":{"line":6,"column":70},"end":{"line":6,"column":148}}],"line":6},"3":{"loc":{"start":{"line":7,"column":51},"end":{"line":7,"column":67}},"type":"binary-expr","locations":[{"start":{"line":7,"column":51},"end":{"line":7,"column":61}},{"start":{"line":7,"column":65},"end":{"line":7,"column":67}}],"line":7},"4":{"loc":{"start":{"line":35,"column":12},"end":{"line":37,"column":13}},"type":"if","locations":[{"start":{"line":35,"column":12},"end":{"line":37,"column":13}},{"start":{"line":35,"column":12},"end":{"line":37,"column":13}}],"line":35},"5":{"loc":{"start":{"line":45,"column":16},"end":{"line":46,"column":42}},"type":"if","locations":[{"start":{"line":45,"column":16},"end":{"line":46,"column":42}},{"start":{"line":45,"column":16},"end":{"line":46,"column":42}}],"line":45},"6":{"loc":{"start":{"line":51,"column":16},"end":{"line":56,"column":17}},"type":"if","locations":[{"start":{"line":51,"column":16},"end":{"line":56,"column":17}},{"start":{"line":51,"column":16},"end":{"line":56,"column":17}}],"line":51},"7":{"loc":{"start":{"line":64,"column":8},"end":{"line":66,"column":9}},"type":"if","locations":[{"start":{"line":64,"column":8},"end":{"line":66,"column":9}},{"start":{"line":64,"column":8},"end":{"line":66,"column":9}}],"line":64}},"s":{"0":1,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":1,"12":1,"13":1,"14":1,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":1},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0},"b":{"0":[1,1,1],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"1c4d6a3ec30c8c4f2a377d517cc67046d6b25927","contentHash":"40e3e25f853950e8a418599b438b2f9e_11.3.0"}} \ No newline at end of file diff --git a/.nyc_output/edf0364c870f24ce7554a501d2c46052.json b/.nyc_output/edf0364c870f24ce7554a501d2c46052.json new file mode 100644 index 0000000..bc58f44 --- /dev/null +++ b/.nyc_output/edf0364c870f24ce7554a501d2c46052.json @@ -0,0 +1 @@ +{"/Users/mpham/Code/nativecode/chest/src/Core/Actions/index.ts":{"path":"/Users/mpham/Code/nativecode/chest/src/Core/Actions/index.ts","statementMap":{},"fnMap":{},"branchMap":{},"s":{},"f":{},"b":{}},"/Users/mpham/Code/nativecode/chest/src/Core/index.ts":{"path":"/Users/mpham/Code/nativecode/chest/src/Core/index.ts","statementMap":{},"fnMap":{},"branchMap":{},"s":{},"f":{},"b":{}},"/Users/mpham/Code/nativecode/chest/src/Core/Interfaces/Dictionary.ts":{"path":"/Users/mpham/Code/nativecode/chest/src/Core/Interfaces/Dictionary.ts","statementMap":{},"fnMap":{},"branchMap":{},"s":{},"f":{},"b":{}},"/Users/mpham/Code/nativecode/chest/src/Core/Interfaces/index.ts":{"path":"/Users/mpham/Code/nativecode/chest/src/Core/Interfaces/index.ts","statementMap":{},"fnMap":{},"branchMap":{},"s":{},"f":{},"b":{}},"/Users/mpham/Code/nativecode/chest/src/index.ts":{"path":"/Users/mpham/Code/nativecode/chest/src/index.ts","statementMap":{},"fnMap":{},"branchMap":{},"s":{},"f":{},"b":{}}} \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 47dfb81..c35632a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,6 +13,9 @@ deploy: secure: >- EoY8os0mZH2U1SqZFDh5p5CoImh15kK1Ckap9/6WuNXHO+ZduuqRCkgI3/Q/xMlj9b+tmGDfrZ/dTxvXn+aIW+brGvqMETKHsWSdTRnfHCFV1qUpSb+I9h/oMqbljaapbqIIZRQWwbf0rMAUwdsD9F8Un/cTAjW3BrnL7UES2f62+3IAZWUbWkyfM973cuT88Vt6JqrAsHYbVKahacChrohT3pJarsGrMZ3713TQ1X1P2pgbheQYM+82puXNT3jTjp48rg6zBslSjR0ze1un3sUpTmmt8F/B4U9Gma20X9qDvOqPR3ej6Z5wvj/iI/07rDIJISFldJK2+RE8qSdILjEPvrF9OtmpLjpzaokj2JEhwX3hEYHXSu9Uhv7TqxmJYTrlLKTTJgzLu8PI5WgvU5WtfXjrSRLhz71taWVkijeCNUZYjvVSCOucDyi8w55B+zFwZfIgb6Uv8O3b5Rn+GGMlinWLreCgAQn2LqOswjXgk6LYG9Sk3DMGaILAmdxzVZ5yGM8tgg3nk4igQs8SpSRibpAaEeLi2HJfI4prGzvbKXZh+snPp7iPkDjTvHmKjH6fSfVZPwOGk+N5SRWj/v21LONxYGYejJIF/RgD35ILu/qMzz8Z8kT+Od2RJjwxatq1I2RcxLE4DCNCgkcv6MwQrL3z+hjPM2KlDFrBj/c= on: - branche: master + branch: master tag: next repo: nativecode-dev/chest + skip_cleanup: true +after_success: + - npm run coveralls diff --git a/package.json b/package.json index bf84ab0..4b188a7 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,6 @@ "bin": "./lib/CLI.js", "license": "MIT", "main": "./lib/CLI.js", - "repository": "https://github.com/nativecode-dev/chest", "typings": "./lib/index.d.ts", "version": "2.0.0", "dependencies": { @@ -17,21 +16,45 @@ "@types/node": "^8.0.52", "bin-shebang": "^1.0.11", "chai": "^4.1.2", + "coverage": "^0.0.0", + "cross-env": "^5.1.1", "mocha": "^4.0.1", + "nyc": "^11.3.0", "rimraf": "^2.6.2", "ts-node": "^3.3.0", "tsconfig-paths": "^2.3.0", "tslint": "^5.8.0", + "tslint-config-standard": "^7.0.0", "typescript": "^2.6.1" }, + "nyc": { + "all": true, + "exclude": [ + "src/**/*.spec.ts" + ], + "extension": [ + ".ts" + ], + "include": [ + "src/**/*.ts" + ], + "instrument": true, + "sourceMap": true + }, "publishConfig": { "access": "public" }, + "repository": { + "type": "git", + "url": "https://github.com/nativecode-dev/chest" + }, "scripts": { "build": "tsc --project tsconfig.json", + "lint": "tslint src/**/*.ts", "prebuild": "rimraf lib", - "postbuild": "bin-shebang", - "test": "mocha --opts mocha.opts", - "pretest": "yarn run build" + "postbuild": "bin-shebang && yarn run lint", + "test": "cross-env NODE_ENV=test nyc mocha --opts mocha.opts", + "pretest": "yarn run build", + "coveralls": "nyc report --reporter=text-lcov | coveralls" } } diff --git a/src/Core/UpdateScript.ts b/src/Core/UpdateScript.ts index be6c073..18cfbde 100644 --- a/src/Core/UpdateScript.ts +++ b/src/Core/UpdateScript.ts @@ -34,7 +34,7 @@ export abstract class UpdateScript implements Updater { const filename = path.join(basepath, 'package.json') if (await Files.exists(filename)) { - return await Files.json(filename) + return Files.json(filename) } throw Error(`could not find 'package.json' in ${basepath}`) diff --git a/yarn.lock b/yarn.lock index ca1644c..2a81399 100644 --- a/yarn.lock +++ b/yarn.lock @@ -20,10 +20,26 @@ version "8.0.52" resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.52.tgz#8e7f47747868e7687f2cd4922966e2d6af78d22d" +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -38,7 +54,31 @@ any-promise@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" -arrify@^1.0.0: +append-transform@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" + dependencies: + default-require-extensions "^1.0.0" + +archy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + +arr-flatten@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + +arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -46,7 +86,11 @@ assertion-error@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c" -babel-code-frame@^6.22.0: +async@^1.4.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + +babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" dependencies: @@ -54,6 +98,69 @@ babel-code-frame@^6.22.0: esutils "^2.0.2" js-tokens "^3.0.2" +babel-generator@^6.18.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5" + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.6" + trim-right "^1.0.1" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + dependencies: + babel-runtime "^6.22.0" + +babel-runtime@^6.22.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-template@^6.16.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + +babel-traverse@^6.18.0, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + +babel-types@^6.18.0, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -69,14 +176,45 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + browser-stdout@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" -builtin-modules@^1.1.1: +builtin-modules@^1.0.0, builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" +caching-transform@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-1.0.1.tgz#6dbdb2f20f8d8fbce79f3e94e9d1742dcdf5c0a1" + dependencies: + md5-hex "^1.2.0" + mkdirp "^0.5.1" + write-file-atomic "^1.1.4" + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + chai@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chai/-/chai-4.1.2.tgz#0f64584ba642f0f2ace2806279f4f06ca23ad73c" @@ -110,6 +248,26 @@ check-error@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + color-convert@^1.9.0: version "1.9.1" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" @@ -124,22 +282,86 @@ commander@2.11.0, commander@^2.9.0: version "2.11.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -debug@3.1.0: +convert-source-map@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" + +core-js@^2.4.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b" + +coverage@^0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/coverage/-/coverage-0.0.0.tgz#fe35dfd6258e2cce0295e37145e689ae7f156620" + +cross-env@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.1.1.tgz#b6d8ab97f304c0f71dae7277b75fe424c08dfa74" + dependencies: + cross-spawn "^5.1.0" + is-windows "^1.0.0" + +cross-spawn@^4: + version "4.0.2" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cross-spawn@^5.0.1, cross-spawn@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +debug-log@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" + +debug@3.1.0, debug@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" dependencies: ms "2.0.0" +debug@^2.6.8: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + +decamelize@^1.0.0, decamelize@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + deep-eql@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" dependencies: type-detect "^4.0.0" +default-require-extensions@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" + dependencies: + strip-bom "^2.0.0" + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + dependencies: + repeating "^2.0.0" + diff@3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" @@ -148,6 +370,13 @@ diff@^3.1.0, diff@^3.2.0: version "3.4.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c" +doctrine@^0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-0.7.2.tgz#7cb860359ba3be90e040b26b729ce4bfa654c523" + dependencies: + esutils "^1.1.6" + isarray "0.0.1" + error-ex@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" @@ -158,19 +387,126 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1 version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" +esutils@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.1.6.tgz#c01ccaa9ae4b897c6d0c3e210ae52f3c7a844375" + esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + +fill-range@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^1.1.3" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +find-cache-dir@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" + dependencies: + commondir "^1.0.1" + mkdirp "^0.5.1" + pkg-dir "^1.0.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + +for-in@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + dependencies: + for-in "^1.0.1" + +foreground-child@^1.5.3, foreground-child@^1.5.6: + version "1.5.6" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9" + dependencies: + cross-spawn "^4" + signal-exit "^3.0.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" +get-caller-file@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" + get-func-name@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" -glob@7.1.2, glob@^7.0.5, glob@^7.1.1: +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + +glob@7.1.2, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -181,16 +517,38 @@ glob@7.1.2, glob@^7.0.5, glob@^7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" +globals@^9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + growl@1.10.3: version "1.10.3" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f" +handlebars@^4.0.3: + version "4.0.11" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" + dependencies: + async "^1.4.0" + optimist "^0.6.1" + source-map "^0.4.4" + optionalDependencies: + uglify-js "^2.6" + has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" dependencies: ansi-regex "^2.0.0" +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + has-flag@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" @@ -205,6 +563,14 @@ homedir-polyfill@^1.0.1: dependencies: parse-passwd "^1.0.0" +hosted-git-info@^2.1.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -216,22 +582,283 @@ inherits@2: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" +invariant@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" + +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" -js-tokens@^3.0.2: +is-windows@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.1.tgz#310db70f742d259a16a369202b51af84233310d9" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + +isarray@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +istanbul-lib-coverage@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da" + +istanbul-lib-hook@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz#8538d970372cb3716d53e55523dd54b557a8d89b" + dependencies: + append-transform "^0.4.0" + +istanbul-lib-instrument@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz#250b30b3531e5d3251299fdd64b0b2c9db6b558e" + dependencies: + babel-generator "^6.18.0" + babel-template "^6.16.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + babylon "^6.18.0" + istanbul-lib-coverage "^1.1.1" + semver "^5.3.0" + +istanbul-lib-report@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz#922be27c13b9511b979bd1587359f69798c1d425" + dependencies: + istanbul-lib-coverage "^1.1.1" + mkdirp "^0.5.1" + path-parse "^1.0.5" + supports-color "^3.1.2" + +istanbul-lib-source-maps@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz#750578602435f28a0c04ee6d7d9e0f2960e62c1c" + dependencies: + debug "^3.1.0" + istanbul-lib-coverage "^1.1.1" + mkdirp "^0.5.1" + rimraf "^2.6.1" + source-map "^0.5.3" + +istanbul-reports@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.3.tgz#3b9e1e8defb6d18b1d425da8e8b32c5a163f2d10" + dependencies: + handlebars "^4.0.3" + +js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + +kind-of@^3.0.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + dependencies: + is-buffer "^1.1.5" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +lodash@^4.17.4: + version "4.17.4" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + +loose-envify@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" + dependencies: + js-tokens "^3.0.0" + +lru-cache@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + make-error@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.0.tgz#52ad3a339ccf10ce62b4040b708fe707244b8b96" +md5-hex@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-1.3.0.tgz#d2c4afe983c4370662179b8cad145219135046c4" + dependencies: + md5-o-matic "^0.1.1" + +md5-o-matic@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3" + +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + dependencies: + mimic-fn "^1.0.0" + +merge-source-map@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.0.4.tgz#a5de46538dae84d4114cc5ea02b4772a6346701f" + dependencies: + source-map "^0.5.6" + +micromatch@^2.3.11: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +mimic-fn@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" + minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -246,7 +873,11 @@ minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" -mkdirp@0.5.1, mkdirp@^0.5.1: +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + +mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: @@ -271,12 +902,122 @@ ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" +normalize-package-data@^2.3.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + dependencies: + remove-trailing-separator "^1.0.1" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + dependencies: + path-key "^2.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +nyc@^11.3.0: + version "11.3.0" + resolved "https://registry.yarnpkg.com/nyc/-/nyc-11.3.0.tgz#a42bc17b3cfa41f7b15eb602bc98b2633ddd76f0" + dependencies: + archy "^1.0.0" + arrify "^1.0.1" + caching-transform "^1.0.0" + convert-source-map "^1.3.0" + debug-log "^1.0.1" + default-require-extensions "^1.0.0" + find-cache-dir "^0.1.1" + find-up "^2.1.0" + foreground-child "^1.5.3" + glob "^7.0.6" + istanbul-lib-coverage "^1.1.1" + istanbul-lib-hook "^1.1.0" + istanbul-lib-instrument "^1.9.1" + istanbul-lib-report "^1.1.2" + istanbul-lib-source-maps "^1.2.2" + istanbul-reports "^1.1.3" + md5-hex "^1.2.0" + merge-source-map "^1.0.2" + micromatch "^2.3.11" + mkdirp "^0.5.0" + resolve-from "^2.0.0" + rimraf "^2.5.4" + signal-exit "^3.0.1" + spawn-wrap "=1.3.8" + test-exclude "^4.1.1" + yargs "^10.0.3" + yargs-parser "^8.0.0" + +object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: wrappy "1" +optimist@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +os-homedir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + +p-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + dependencies: + p-limit "^1.1.0" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" @@ -287,50 +1028,242 @@ parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" +path-key@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + path-parse@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + pathval@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + dependencies: + find-up "^1.0.0" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +randomatic@^1.1.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +regenerator-runtime@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" + +regex-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + dependencies: + is-equal-shallow "^0.1.3" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + +repeat-string@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + +resolve-from@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" + resolve@^1.3.2: version "1.5.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" dependencies: path-parse "^1.0.5" -rimraf@^2.6.2: +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + dependencies: + align-text "^0.1.1" + +rimraf@^2.3.3, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: glob "^7.0.5" -semver@^5.3.0: +"semver@2 || 3 || 4 || 5", semver@^5.3.0: version "5.4.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + +signal-exit@^3.0.0, signal-exit@^3.0.1, signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +slide@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + source-map-support@^0.4.0: version "0.4.18" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" dependencies: source-map "^0.5.6" -source-map@^0.5.6: +source-map@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + dependencies: + amdefine ">=0.0.4" + +source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" -strip-ansi@^3.0.0: +spawn-wrap@=1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.3.8.tgz#fa2a79b990cbb0bb0018dca6748d88367b19ec31" + dependencies: + foreground-child "^1.5.6" + mkdirp "^0.5.0" + os-homedir "^1.0.1" + rimraf "^2.3.3" + signal-exit "^3.0.2" + which "^1.2.4" + +spdx-correct@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" + dependencies: + spdx-license-ids "^1.0.2" + +spdx-expression-parse@~1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" + +spdx-license-ids@^1.0.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" dependencies: ansi-regex "^2.0.0" +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + dependencies: + ansi-regex "^3.0.0" + strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" @@ -341,6 +1274,10 @@ strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + strip-json-comments@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -355,12 +1292,36 @@ supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" +supports-color@^3.1.2: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + dependencies: + has-flag "^1.0.0" + supports-color@^4.0.0: version "4.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" dependencies: has-flag "^2.0.0" +test-exclude@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.1.1.tgz#4d84964b0966b0087ecc334a2ce002d3d9341e26" + dependencies: + arrify "^1.0.1" + micromatch "^2.3.11" + object-assign "^4.1.0" + read-pkg-up "^1.0.1" + require-main-filename "^1.0.1" + +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + ts-node@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-3.3.0.tgz#c13c6a3024e30be1180dd53038fc209289d4bf69" @@ -398,10 +1359,24 @@ tsconfig@^6.0.0: strip-bom "^3.0.0" strip-json-comments "^2.0.0" -tslib@^1.7.1: +tslib@^1.0.0, tslib@^1.7.1: version "1.8.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.8.0.tgz#dc604ebad64bcbf696d613da6c954aa0e7ea1eb6" +tslint-config-standard@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/tslint-config-standard/-/tslint-config-standard-7.0.0.tgz#47bbf25578ed2212456f892d51e1abe884a29f15" + dependencies: + tslint-eslint-rules "^4.1.1" + +tslint-eslint-rules@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/tslint-eslint-rules/-/tslint-eslint-rules-4.1.1.tgz#7c30e7882f26bc276bff91d2384975c69daf88ba" + dependencies: + doctrine "^0.7.2" + tslib "^1.0.0" + tsutils "^1.4.0" + tslint@^5.8.0: version "5.8.0" resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.8.0.tgz#1f49ad5b2e77c76c3af4ddcae552ae4e3612eb13" @@ -418,6 +1393,10 @@ tslint@^5.8.0: tslib "^1.7.1" tsutils "^2.12.1" +tsutils@^1.4.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-1.9.1.tgz#b9f9ab44e55af9681831d5f28d0aeeaf5c750cb0" + tsutils@^2.12.1: version "2.12.2" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.12.2.tgz#ad58a4865d17ec3ddb6631b6ca53be14a5656ff3" @@ -432,16 +1411,113 @@ typescript@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.1.tgz#ef39cdea27abac0b500242d6726ab90e0c846631" +uglify-js@^2.6: + version "2.8.29" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + v8flags@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.0.1.tgz#dce8fc379c17d9f2c9e9ed78d89ce00052b1b76b" dependencies: homedir-polyfill "^1.0.1" +validate-npm-package-license@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" + dependencies: + spdx-correct "~1.0.0" + spdx-expression-parse "~1.0.0" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + +which@^1.2.4, which@^1.2.9: + version "1.3.0" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + dependencies: + isexe "^2.0.0" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" +write-file-atomic@^1.1.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + slide "^1.1.5" + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + +yargs-parser@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.0.0.tgz#21d476330e5a82279a4b881345bf066102e219c6" + dependencies: + camelcase "^4.1.0" + +yargs@^10.0.3: + version "10.0.3" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.0.3.tgz#6542debd9080ad517ec5048fb454efe9e4d4aaae" + dependencies: + cliui "^3.2.0" + decamelize "^1.1.1" + find-up "^2.1.0" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^8.0.0" + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0" + yn@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a" From b25563245ead3fe7a0906c30290417640efa0d13 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Wed, 15 Nov 2017 14:55:00 -0500 Subject: [PATCH 24/35] fixing coverage --- ... => 0ea5c78196f139d9bdd50c3b8785f3a3.json} | 0 ... => 186721d2195fccb6c194175f017cb64f.json} | 0 ... => 28b7b15abc870041ad8407ae2fe12a52.json} | 0 README.md | 3 + package.json | 2 +- yarn.lock | 334 ++++++++++++++++++ 6 files changed, 338 insertions(+), 1 deletion(-) rename .nyc_output/{5ebd2eba06afac487abc38b709beefec.json => 0ea5c78196f139d9bdd50c3b8785f3a3.json} (100%) rename .nyc_output/{927864e4cc9866423eb4dd942ca8f842.json => 186721d2195fccb6c194175f017cb64f.json} (100%) rename .nyc_output/{edf0364c870f24ce7554a501d2c46052.json => 28b7b15abc870041ad8407ae2fe12a52.json} (100%) diff --git a/.nyc_output/5ebd2eba06afac487abc38b709beefec.json b/.nyc_output/0ea5c78196f139d9bdd50c3b8785f3a3.json similarity index 100% rename from .nyc_output/5ebd2eba06afac487abc38b709beefec.json rename to .nyc_output/0ea5c78196f139d9bdd50c3b8785f3a3.json diff --git a/.nyc_output/927864e4cc9866423eb4dd942ca8f842.json b/.nyc_output/186721d2195fccb6c194175f017cb64f.json similarity index 100% rename from .nyc_output/927864e4cc9866423eb4dd942ca8f842.json rename to .nyc_output/186721d2195fccb6c194175f017cb64f.json diff --git a/.nyc_output/edf0364c870f24ce7554a501d2c46052.json b/.nyc_output/28b7b15abc870041ad8407ae2fe12a52.json similarity index 100% rename from .nyc_output/edf0364c870f24ce7554a501d2c46052.json rename to .nyc_output/28b7b15abc870041ad8407ae2fe12a52.json diff --git a/README.md b/README.md index a1cf8b1..25cbbb1 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,10 @@ [![David](https://img.shields.io/david/dev/nativecode-dev/chest.svg?style=flat-square&label=devdeps)](https://www.npmjs.com/package/@beard/chest) [![Travis](https://img.shields.io/travis/nativecode-dev/chest/master.svg?style=flat-square&label=master)](https://travis-ci.org/nativecode-dev/chest) +[![Coveralls github branch](https://img.shields.io/coveralls/github/nativecode-dev/chest/master.svg?style=flat-square&label=coverage)]() + [![Travis](https://img.shields.io/travis/nativecode-dev/chest/develop.svg?style=flat-square&label=develop)](https://travis-ci.org/nativecode-dev/chest) +[![Coveralls github branch](https://img.shields.io/coveralls/github/nativecode-dev/chest/develop.svg?style=flat-square&label=coverage)]() # @beard/chest diff --git a/package.json b/package.json index 4b188a7..6f53212 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "@types/node": "^8.0.52", "bin-shebang": "^1.0.11", "chai": "^4.1.2", - "coverage": "^0.0.0", + "coveralls": "^3.0.0", "cross-env": "^5.1.1", "mocha": "^4.0.1", "nyc": "^11.3.0", diff --git a/yarn.lock b/yarn.lock index 2a81399..a59d306 100644 --- a/yarn.lock +++ b/yarn.lock @@ -20,6 +20,15 @@ version "8.0.52" resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.52.tgz#8e7f47747868e7687f2cd4922966e2d6af78d22d" +ajv@^5.1.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.3.0.tgz#4414ff74a50879c208ee5fdc826e32c303549eda" + dependencies: + co "^4.6.0" + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + align-text@^0.1.1, align-text@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" @@ -64,6 +73,12 @@ archy@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" +argparse@^1.0.7: + version "1.0.9" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" + dependencies: + sprintf-js "~1.0.2" + arr-diff@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" @@ -82,6 +97,14 @@ arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" +asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + assertion-error@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c" @@ -90,6 +113,18 @@ async@^1.4.0: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + +aws4@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" + babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" @@ -165,10 +200,28 @@ balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" +bcrypt-pbkdf@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" + dependencies: + tweetnacl "^0.14.3" + bin-shebang@^1.0.11: version "1.0.11" resolved "https://registry.yarnpkg.com/bin-shebang/-/bin-shebang-1.0.11.tgz#296dd2b8229518f35db1a0aeaf663b0454b350c6" +boom@4.x.x: + version "4.3.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" + dependencies: + hoek "4.x.x" + +boom@5.x.x: + version "5.2.0" + resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" + dependencies: + hoek "4.x.x" + brace-expansion@^1.1.7: version "1.1.8" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" @@ -208,6 +261,10 @@ camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + center-align@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" @@ -264,6 +321,10 @@ cliui@^3.2.0: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" @@ -278,6 +339,12 @@ color-name@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" +combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" + dependencies: + delayed-stream "~1.0.0" + commander@2.11.0, commander@^2.9.0: version "2.11.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" @@ -298,10 +365,24 @@ core-js@^2.4.0: version "2.5.1" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b" +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + coverage@^0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/coverage/-/coverage-0.0.0.tgz#fe35dfd6258e2cce0295e37145e689ae7f156620" +coveralls@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-3.0.0.tgz#22ef730330538080d29b8c151dc9146afde88a99" + dependencies: + js-yaml "^3.6.1" + lcov-parse "^0.0.10" + log-driver "^1.2.5" + minimist "^1.2.0" + request "^2.79.0" + cross-env@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.1.1.tgz#b6d8ab97f304c0f71dae7277b75fe424c08dfa74" @@ -324,6 +405,18 @@ cross-spawn@^5.0.1, cross-spawn@^5.1.0: shebang-command "^1.2.0" which "^1.2.9" +cryptiles@3.x.x: + version "3.1.2" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" + dependencies: + boom "5.x.x" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" + debug-log@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" @@ -356,6 +449,10 @@ default-require-extensions@^1.0.0: dependencies: strip-bom "^2.0.0" +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + detect-indent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" @@ -377,6 +474,12 @@ doctrine@^0.7.2: esutils "^1.1.6" isarray "0.0.1" +ecc-jsbn@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + dependencies: + jsbn "~0.1.0" + error-ex@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" @@ -387,6 +490,10 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1 version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" +esprima@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" + esutils@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.1.6.tgz#c01ccaa9ae4b897c6d0c3e210ae52f3c7a844375" @@ -419,12 +526,28 @@ expand-range@^1.8.1: dependencies: fill-range "^2.1.0" +extend@~3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" + extglob@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" dependencies: is-extglob "^1.0.0" +extsprintf@1.3.0, extsprintf@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + +fast-deep-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + filename-regex@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" @@ -477,6 +600,18 @@ foreground-child@^1.5.3, foreground-child@^1.5.6: cross-spawn "^4" signal-exit "^3.0.0" +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +form-data@~2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -493,6 +628,12 @@ get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + dependencies: + assert-plus "^1.0.0" + glob-base@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" @@ -539,6 +680,17 @@ handlebars@^4.0.3: optionalDependencies: uglify-js "^2.6" +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + +har-validator@~5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" + dependencies: + ajv "^5.1.0" + har-schema "^2.0.0" + has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -553,10 +705,23 @@ has-flag@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" +hawk@~6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" + dependencies: + boom "4.x.x" + cryptiles "3.x.x" + hoek "4.x.x" + sntp "2.x.x" + he@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" +hoek@4.x.x: + version "4.2.0" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d" + homedir-polyfill@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" @@ -567,6 +732,14 @@ hosted-git-info@^2.1.4: version "2.5.0" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -670,6 +843,10 @@ is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" @@ -696,6 +873,10 @@ isobject@^2.0.0: dependencies: isarray "1.0.0" +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + istanbul-lib-coverage@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da" @@ -747,10 +928,42 @@ js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" +js-yaml@^3.6.1: + version "3.10.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" +json-schema-traverse@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + kind-of@^3.0.2: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -773,6 +986,10 @@ lcid@^1.0.0: dependencies: invert-kv "^1.0.0" +lcov-parse@^0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-0.0.10.tgz#1b0b8ff9ac9c7889250582b70b71315d9da6d9a3" + load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -794,6 +1011,10 @@ lodash@^4.17.4: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" +log-driver@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.5.tgz#7ae4ec257302fd790d557cb10c97100d857b0056" + longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" @@ -855,6 +1076,16 @@ micromatch@^2.3.11: parse-glob "^3.0.4" regex-cache "^0.4.2" +mime-db@~1.30.0: + version "1.30.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" + +mime-types@^2.1.12, mime-types@~2.1.17: + version "2.1.17" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" + dependencies: + mime-db "~1.30.0" + mimic-fn@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" @@ -959,6 +1190,10 @@ nyc@^11.3.0: yargs "^10.0.3" yargs-parser "^8.0.0" +oauth-sign@~0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -1062,6 +1297,10 @@ pathval@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -1090,6 +1329,14 @@ pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +qs@~6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" + randomatic@^1.1.3: version "1.1.7" resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" @@ -1140,6 +1387,33 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" +request@^2.79.0: + version "2.83.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.6.0" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.1" + forever-agent "~0.6.1" + form-data "~2.3.1" + har-validator "~5.0.3" + hawk "~6.0.2" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.17" + oauth-sign "~0.8.2" + performance-now "^2.1.0" + qs "~6.5.1" + safe-buffer "^5.1.1" + stringstream "~0.0.5" + tough-cookie "~2.3.3" + tunnel-agent "^0.6.0" + uuid "^3.1.0" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -1170,6 +1444,10 @@ rimraf@^2.3.3, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: dependencies: glob "^7.0.5" +safe-buffer@^5.0.1, safe-buffer@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + "semver@2 || 3 || 4 || 5", semver@^5.3.0: version "5.4.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" @@ -1196,6 +1474,12 @@ slide@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" +sntp@2.x.x: + version "2.1.0" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" + dependencies: + hoek "4.x.x" + source-map-support@^0.4.0: version "0.4.18" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" @@ -1237,6 +1521,24 @@ spdx-license-ids@^1.0.2: version "1.2.2" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + +sshpk@^1.7.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -1252,6 +1554,10 @@ string-width@^2.0.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +stringstream@~0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -1318,6 +1624,12 @@ to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" +tough-cookie@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" + dependencies: + punycode "^1.4.1" + trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" @@ -1403,6 +1715,16 @@ tsutils@^2.12.1: dependencies: tslib "^1.7.1" +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + type-detect@^4.0.0: version "4.0.5" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.5.tgz#d70e5bc81db6de2a381bcaca0c6e0cbdc7635de2" @@ -1424,6 +1746,10 @@ uglify-to-browserify@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" +uuid@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" + v8flags@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.0.1.tgz#dce8fc379c17d9f2c9e9ed78d89ce00052b1b76b" @@ -1437,6 +1763,14 @@ validate-npm-package-license@^3.0.1: spdx-correct "~1.0.0" spdx-expression-parse "~1.0.0" +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" From 42d83739adf88d08c84d4f6fc79352f1db20b88d Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Wed, 15 Nov 2017 14:55:46 -0500 Subject: [PATCH 25/35] ignore nyc output --- .gitignore | 1 + .nyc_output/0ea5c78196f139d9bdd50c3b8785f3a3.json | 1 - .nyc_output/186721d2195fccb6c194175f017cb64f.json | 1 - .nyc_output/28b7b15abc870041ad8407ae2fe12a52.json | 1 - 4 files changed, 1 insertion(+), 3 deletions(-) delete mode 100644 .nyc_output/0ea5c78196f139d9bdd50c3b8785f3a3.json delete mode 100644 .nyc_output/186721d2195fccb6c194175f017cb64f.json delete mode 100644 .nyc_output/28b7b15abc870041ad8407ae2fe12a52.json diff --git a/.gitignore b/.gitignore index e47249f..7ff4843 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.nyc_output/ lib/ node_modules/ diff --git a/.nyc_output/0ea5c78196f139d9bdd50c3b8785f3a3.json b/.nyc_output/0ea5c78196f139d9bdd50c3b8785f3a3.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.nyc_output/0ea5c78196f139d9bdd50c3b8785f3a3.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.nyc_output/186721d2195fccb6c194175f017cb64f.json b/.nyc_output/186721d2195fccb6c194175f017cb64f.json deleted file mode 100644 index 098e55e..0000000 --- a/.nyc_output/186721d2195fccb6c194175f017cb64f.json +++ /dev/null @@ -1 +0,0 @@ -{"/Users/mpham/Code/nativecode/chest/src/Chest.ts":{"path":"/Users/mpham/Code/nativecode/chest/src/Chest.ts","statementMap":{"0":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":8,"column":7}},"2":{"start":{"line":4,"column":36},"end":{"line":4,"column":97}},"3":{"start":{"line":4,"column":42},"end":{"line":4,"column":70}},"4":{"start":{"line":4,"column":85},"end":{"line":4,"column":95}},"5":{"start":{"line":5,"column":35},"end":{"line":5,"column":100}},"6":{"start":{"line":5,"column":41},"end":{"line":5,"column":73}},"7":{"start":{"line":5,"column":88},"end":{"line":5,"column":98}},"8":{"start":{"line":6,"column":32},"end":{"line":6,"column":149}},"9":{"start":{"line":6,"column":97},"end":{"line":6,"column":119}},"10":{"start":{"line":7,"column":8},"end":{"line":7,"column":78}},"11":{"start":{"line":10,"column":0},"end":{"line":10,"column":62}},"12":{"start":{"line":11,"column":13},"end":{"line":11,"column":28}},"13":{"start":{"line":12,"column":15},"end":{"line":12,"column":32}},"14":{"start":{"line":15,"column":8},"end":{"line":30,"column":11}},"15":{"start":{"line":16,"column":28},"end":{"line":16,"column":59}},"16":{"start":{"line":17,"column":12},"end":{"line":19,"column":13}},"17":{"start":{"line":18,"column":16},"end":{"line":18,"column":72}},"18":{"start":{"line":20,"column":24},"end":{"line":20,"column":56}},"19":{"start":{"line":21,"column":28},"end":{"line":21,"column":62}},"20":{"start":{"line":22,"column":12},"end":{"line":28,"column":13}},"21":{"start":{"line":23,"column":16},"end":{"line":27,"column":41}},"22":{"start":{"line":24,"column":44},"end":{"line":24,"column":148}},"23":{"start":{"line":24,"column":91},"end":{"line":24,"column":145}},"24":{"start":{"line":25,"column":51},"end":{"line":27,"column":18}},"25":{"start":{"line":26,"column":20},"end":{"line":26,"column":66}},"26":{"start":{"line":29,"column":12},"end":{"line":29,"column":29}},"27":{"start":{"line":33,"column":8},"end":{"line":44,"column":11}},"28":{"start":{"line":34,"column":12},"end":{"line":34,"column":114}},"29":{"start":{"line":35,"column":12},"end":{"line":37,"column":13}},"30":{"start":{"line":36,"column":16},"end":{"line":36,"column":94}},"31":{"start":{"line":38,"column":29},"end":{"line":38,"column":71}},"32":{"start":{"line":39,"column":12},"end":{"line":43,"column":17}},"33":{"start":{"line":39,"column":57},"end":{"line":43,"column":14}},"34":{"start":{"line":40,"column":32},"end":{"line":40,"column":66}},"35":{"start":{"line":41,"column":28},"end":{"line":41,"column":60}},"36":{"start":{"line":42,"column":16},"end":{"line":42,"column":68}},"37":{"start":{"line":47,"column":0},"end":{"line":47,"column":22}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":44},"end":{"line":2,"column":45}},"loc":{"start":{"line":2,"column":89},"end":{"line":9,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":36},"end":{"line":3,"column":37}},"loc":{"start":{"line":3,"column":63},"end":{"line":8,"column":5}},"line":3},"2":{"name":"fulfilled","decl":{"start":{"line":4,"column":17},"end":{"line":4,"column":26}},"loc":{"start":{"line":4,"column":34},"end":{"line":4,"column":99}},"line":4},"3":{"name":"rejected","decl":{"start":{"line":5,"column":17},"end":{"line":5,"column":25}},"loc":{"start":{"line":5,"column":33},"end":{"line":5,"column":102}},"line":5},"4":{"name":"step","decl":{"start":{"line":6,"column":17},"end":{"line":6,"column":21}},"loc":{"start":{"line":6,"column":30},"end":{"line":6,"column":151}},"line":6},"5":{"name":"(anonymous_5)","decl":{"start":{"line":6,"column":76},"end":{"line":6,"column":77}},"loc":{"start":{"line":6,"column":95},"end":{"line":6,"column":121}},"line":6},"6":{"name":"(anonymous_6)","decl":{"start":{"line":14,"column":4},"end":{"line":14,"column":5}},"loc":{"start":{"line":14,"column":26},"end":{"line":31,"column":5}},"line":14},"7":{"name":"(anonymous_7)","decl":{"start":{"line":15,"column":47},"end":{"line":15,"column":48}},"loc":{"start":{"line":15,"column":60},"end":{"line":30,"column":9}},"line":15},"8":{"name":"(anonymous_8)","decl":{"start":{"line":24,"column":25},"end":{"line":24,"column":26}},"loc":{"start":{"line":24,"column":44},"end":{"line":24,"column":148}},"line":24},"9":{"name":"(anonymous_9)","decl":{"start":{"line":24,"column":76},"end":{"line":24,"column":77}},"loc":{"start":{"line":24,"column":89},"end":{"line":24,"column":147}},"line":24},"10":{"name":"(anonymous_10)","decl":{"start":{"line":25,"column":28},"end":{"line":25,"column":29}},"loc":{"start":{"line":25,"column":51},"end":{"line":27,"column":18}},"line":25},"11":{"name":"(anonymous_11)","decl":{"start":{"line":25,"column":83},"end":{"line":25,"column":84}},"loc":{"start":{"line":25,"column":96},"end":{"line":27,"column":17}},"line":25},"12":{"name":"(anonymous_12)","decl":{"start":{"line":32,"column":4},"end":{"line":32,"column":5}},"loc":{"start":{"line":32,"column":44},"end":{"line":45,"column":5}},"line":32},"13":{"name":"(anonymous_13)","decl":{"start":{"line":33,"column":47},"end":{"line":33,"column":48}},"loc":{"start":{"line":33,"column":60},"end":{"line":44,"column":9}},"line":33},"14":{"name":"(anonymous_14)","decl":{"start":{"line":39,"column":44},"end":{"line":39,"column":45}},"loc":{"start":{"line":39,"column":57},"end":{"line":43,"column":14}},"line":39},"15":{"name":"(anonymous_15)","decl":{"start":{"line":39,"column":89},"end":{"line":39,"column":90}},"loc":{"start":{"line":39,"column":102},"end":{"line":43,"column":13}},"line":39}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":17},"end":{"line":2,"column":21}},{"start":{"line":2,"column":25},"end":{"line":2,"column":39}},{"start":{"line":2,"column":44},"end":{"line":9,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":16},"end":{"line":3,"column":34}},"type":"binary-expr","locations":[{"start":{"line":3,"column":16},"end":{"line":3,"column":17}},{"start":{"line":3,"column":22},"end":{"line":3,"column":33}}],"line":3},"2":{"loc":{"start":{"line":6,"column":32},"end":{"line":6,"column":148}},"type":"cond-expr","locations":[{"start":{"line":6,"column":46},"end":{"line":6,"column":67}},{"start":{"line":6,"column":70},"end":{"line":6,"column":148}}],"line":6},"3":{"loc":{"start":{"line":7,"column":51},"end":{"line":7,"column":67}},"type":"binary-expr","locations":[{"start":{"line":7,"column":51},"end":{"line":7,"column":61}},{"start":{"line":7,"column":65},"end":{"line":7,"column":67}}],"line":7},"4":{"loc":{"start":{"line":17,"column":12},"end":{"line":19,"column":13}},"type":"if","locations":[{"start":{"line":17,"column":12},"end":{"line":19,"column":13}},{"start":{"line":17,"column":12},"end":{"line":19,"column":13}}],"line":17},"5":{"loc":{"start":{"line":22,"column":12},"end":{"line":28,"column":13}},"type":"if","locations":[{"start":{"line":22,"column":12},"end":{"line":28,"column":13}},{"start":{"line":22,"column":12},"end":{"line":28,"column":13}}],"line":22},"6":{"loc":{"start":{"line":22,"column":16},"end":{"line":22,"column":44}},"type":"binary-expr","locations":[{"start":{"line":22,"column":16},"end":{"line":22,"column":27}},{"start":{"line":22,"column":31},"end":{"line":22,"column":44}}],"line":22},"7":{"loc":{"start":{"line":35,"column":12},"end":{"line":37,"column":13}},"type":"if","locations":[{"start":{"line":35,"column":12},"end":{"line":37,"column":13}},{"start":{"line":35,"column":12},"end":{"line":37,"column":13}}],"line":35}},"s":{"0":1,"1":10,"2":16,"3":16,"4":0,"5":0,"6":0,"7":0,"8":26,"9":16,"10":10,"11":1,"12":1,"13":1,"14":2,"15":2,"16":2,"17":0,"18":2,"19":2,"20":2,"21":1,"22":2,"23":2,"24":2,"25":2,"26":1,"27":2,"28":2,"29":2,"30":0,"31":2,"32":2,"33":2,"34":2,"35":2,"36":2,"37":1},"f":{"0":10,"1":10,"2":16,"3":0,"4":26,"5":16,"6":2,"7":2,"8":2,"9":2,"10":2,"11":2,"12":2,"13":2,"14":2,"15":2},"b":{"0":[1,1,1],"1":[10,10],"2":[10,16],"3":[10,10],"4":[0,2],"5":[1,1],"6":[2,1],"7":[0,2]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"e5dc3ddac5cf4247486df34d73e876dc75a9f834","contentHash":"ff661ba3761bab947b7f7230fc3e87f4_11.3.0"},"/Users/mpham/Code/nativecode/chest/src/Core/index.ts":{"path":"/Users/mpham/Code/nativecode/chest/src/Core/index.ts","statementMap":{"0":{"start":{"line":3,"column":4},"end":{"line":3,"column":71}},"1":{"start":{"line":3,"column":21},"end":{"line":3,"column":71}},"2":{"start":{"line":3,"column":53},"end":{"line":3,"column":71}},"3":{"start":{"line":5,"column":0},"end":{"line":5,"column":62}},"4":{"start":{"line":6,"column":0},"end":{"line":6,"column":34}},"5":{"start":{"line":7,"column":0},"end":{"line":7,"column":29}},"6":{"start":{"line":8,"column":0},"end":{"line":8,"column":30}},"7":{"start":{"line":9,"column":0},"end":{"line":9,"column":31}},"8":{"start":{"line":10,"column":0},"end":{"line":10,"column":32}},"9":{"start":{"line":11,"column":0},"end":{"line":11,"column":36}}},"fnMap":{"0":{"name":"__export","decl":{"start":{"line":2,"column":9},"end":{"line":2,"column":17}},"loc":{"start":{"line":2,"column":21},"end":{"line":4,"column":1}},"line":2}},"branchMap":{"0":{"loc":{"start":{"line":3,"column":21},"end":{"line":3,"column":71}},"type":"if","locations":[{"start":{"line":3,"column":21},"end":{"line":3,"column":71}},{"start":{"line":3,"column":21},"end":{"line":3,"column":71}}],"line":3}},"s":{"0":6,"1":6,"2":6,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1},"f":{"0":6},"b":{"0":[6,0]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"f68b1d3ae54f171fe92fc2e31ab7e7a676304dfc","contentHash":"cfda12a40cb74f4d0a286c041f659373_11.3.0"},"/Users/mpham/Code/nativecode/chest/src/Core/Interfaces/index.ts":{"path":"/Users/mpham/Code/nativecode/chest/src/Core/Interfaces/index.ts","statementMap":{"0":{"start":{"line":3,"column":4},"end":{"line":3,"column":71}},"1":{"start":{"line":3,"column":21},"end":{"line":3,"column":71}},"2":{"start":{"line":3,"column":53},"end":{"line":3,"column":71}},"3":{"start":{"line":5,"column":0},"end":{"line":5,"column":62}},"4":{"start":{"line":6,"column":0},"end":{"line":6,"column":31}}},"fnMap":{"0":{"name":"__export","decl":{"start":{"line":2,"column":9},"end":{"line":2,"column":17}},"loc":{"start":{"line":2,"column":21},"end":{"line":4,"column":1}},"line":2}},"branchMap":{"0":{"loc":{"start":{"line":3,"column":21},"end":{"line":3,"column":71}},"type":"if","locations":[{"start":{"line":3,"column":21},"end":{"line":3,"column":71}},{"start":{"line":3,"column":21},"end":{"line":3,"column":71}}],"line":3}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"f":{"0":1},"b":{"0":[1,0]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"4619863f9162a36374fa4a981137a63bafa6e146","contentHash":"983b344bdfc181a1c9bad371bbe0d3db_11.3.0"},"/Users/mpham/Code/nativecode/chest/src/Core/Interfaces/Updater.ts":{"path":"/Users/mpham/Code/nativecode/chest/src/Core/Interfaces/Updater.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":4,"column":0},"end":{"line":7,"column":68}},"2":{"start":{"line":5,"column":4},"end":{"line":5,"column":33}},"3":{"start":{"line":6,"column":4},"end":{"line":6,"column":41}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":1},"end":{"line":4,"column":2}},"loc":{"start":{"line":4,"column":24},"end":{"line":7,"column":1}},"line":4}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":17},"end":{"line":7,"column":66}},"type":"binary-expr","locations":[{"start":{"line":7,"column":17},"end":{"line":7,"column":36}},{"start":{"line":7,"column":41},"end":{"line":7,"column":65}}],"line":7}},"s":{"0":1,"1":1,"2":1,"3":1},"f":{"0":1},"b":{"0":[1,1]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"b8d116e169ab652a19c9c477b2d97774634a652a","contentHash":"9c212a740ee773f4503bc6f241194b16_11.3.0"},"/Users/mpham/Code/nativecode/chest/src/Core/Files.ts":{"path":"/Users/mpham/Code/nativecode/chest/src/Core/Files.ts","statementMap":{"0":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":8,"column":7}},"2":{"start":{"line":4,"column":36},"end":{"line":4,"column":97}},"3":{"start":{"line":4,"column":42},"end":{"line":4,"column":70}},"4":{"start":{"line":4,"column":85},"end":{"line":4,"column":95}},"5":{"start":{"line":5,"column":35},"end":{"line":5,"column":100}},"6":{"start":{"line":5,"column":41},"end":{"line":5,"column":73}},"7":{"start":{"line":5,"column":88},"end":{"line":5,"column":98}},"8":{"start":{"line":6,"column":32},"end":{"line":6,"column":149}},"9":{"start":{"line":6,"column":97},"end":{"line":6,"column":119}},"10":{"start":{"line":7,"column":8},"end":{"line":7,"column":78}},"11":{"start":{"line":10,"column":0},"end":{"line":10,"column":62}},"12":{"start":{"line":11,"column":11},"end":{"line":11,"column":24}},"13":{"start":{"line":12,"column":13},"end":{"line":12,"column":28}},"14":{"start":{"line":15,"column":8},"end":{"line":17,"column":11}},"15":{"start":{"line":16,"column":12},"end":{"line":16,"column":61}},"16":{"start":{"line":16,"column":44},"end":{"line":16,"column":59}},"17":{"start":{"line":20,"column":25},"end":{"line":20,"column":48}},"18":{"start":{"line":21,"column":24},"end":{"line":21,"column":46}},"19":{"start":{"line":22,"column":8},"end":{"line":22,"column":45}},"20":{"start":{"line":25,"column":8},"end":{"line":25,"column":34}},"21":{"start":{"line":28,"column":8},"end":{"line":34,"column":11}},"22":{"start":{"line":29,"column":12},"end":{"line":32,"column":13}},"23":{"start":{"line":30,"column":31},"end":{"line":30,"column":60}},"24":{"start":{"line":31,"column":16},"end":{"line":31,"column":53}},"25":{"start":{"line":33,"column":12},"end":{"line":33,"column":73}},"26":{"start":{"line":37,"column":8},"end":{"line":46,"column":11}},"27":{"start":{"line":38,"column":12},"end":{"line":45,"column":15}},"28":{"start":{"line":39,"column":16},"end":{"line":44,"column":17}},"29":{"start":{"line":40,"column":20},"end":{"line":40,"column":34}},"30":{"start":{"line":43,"column":20},"end":{"line":43,"column":34}},"31":{"start":{"line":49,"column":8},"end":{"line":52,"column":11}},"32":{"start":{"line":50,"column":26},"end":{"line":50,"column":56}},"33":{"start":{"line":51,"column":12},"end":{"line":51,"column":77}},"34":{"start":{"line":51,"column":40},"end":{"line":51,"column":48}},"35":{"start":{"line":51,"column":62},"end":{"line":51,"column":75}},"36":{"start":{"line":55,"column":8},"end":{"line":58,"column":11}},"37":{"start":{"line":56,"column":26},"end":{"line":56,"column":56}},"38":{"start":{"line":57,"column":12},"end":{"line":57,"column":78}},"39":{"start":{"line":57,"column":40},"end":{"line":57,"column":49}},"40":{"start":{"line":57,"column":63},"end":{"line":57,"column":76}},"41":{"start":{"line":61,"column":8},"end":{"line":63,"column":11}},"42":{"start":{"line":62,"column":12},"end":{"line":62,"column":74}},"43":{"start":{"line":66,"column":8},"end":{"line":77,"column":11}},"44":{"start":{"line":67,"column":12},"end":{"line":76,"column":15}},"45":{"start":{"line":68,"column":16},"end":{"line":75,"column":19}},"46":{"start":{"line":69,"column":20},"end":{"line":74,"column":21}},"47":{"start":{"line":70,"column":24},"end":{"line":70,"column":38}},"48":{"start":{"line":73,"column":24},"end":{"line":73,"column":39}},"49":{"start":{"line":80,"column":8},"end":{"line":99,"column":11}},"50":{"start":{"line":81,"column":12},"end":{"line":98,"column":16}},"51":{"start":{"line":81,"column":51},"end":{"line":98,"column":14}},"52":{"start":{"line":82,"column":16},"end":{"line":97,"column":17}},"53":{"start":{"line":83,"column":20},"end":{"line":83,"column":34}},"54":{"start":{"line":86,"column":37},"end":{"line":94,"column":23}},"55":{"start":{"line":86,"column":61},"end":{"line":94,"column":22}},"56":{"start":{"line":87,"column":41},"end":{"line":87,"column":70}},"57":{"start":{"line":88,"column":37},"end":{"line":88,"column":66}},"58":{"start":{"line":89,"column":24},"end":{"line":93,"column":26}},"59":{"start":{"line":95,"column":34},"end":{"line":95,"column":61}},"60":{"start":{"line":96,"column":20},"end":{"line":96,"column":35}},"61":{"start":{"line":102,"column":8},"end":{"line":111,"column":11}},"62":{"start":{"line":103,"column":12},"end":{"line":110,"column":15}},"63":{"start":{"line":104,"column":16},"end":{"line":109,"column":17}},"64":{"start":{"line":105,"column":20},"end":{"line":105,"column":34}},"65":{"start":{"line":108,"column":20},"end":{"line":108,"column":30}},"66":{"start":{"line":114,"column":0},"end":{"line":114,"column":36}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":44},"end":{"line":2,"column":45}},"loc":{"start":{"line":2,"column":89},"end":{"line":9,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":36},"end":{"line":3,"column":37}},"loc":{"start":{"line":3,"column":63},"end":{"line":8,"column":5}},"line":3},"2":{"name":"fulfilled","decl":{"start":{"line":4,"column":17},"end":{"line":4,"column":26}},"loc":{"start":{"line":4,"column":34},"end":{"line":4,"column":99}},"line":4},"3":{"name":"rejected","decl":{"start":{"line":5,"column":17},"end":{"line":5,"column":25}},"loc":{"start":{"line":5,"column":33},"end":{"line":5,"column":102}},"line":5},"4":{"name":"step","decl":{"start":{"line":6,"column":17},"end":{"line":6,"column":21}},"loc":{"start":{"line":6,"column":30},"end":{"line":6,"column":151}},"line":6},"5":{"name":"(anonymous_5)","decl":{"start":{"line":6,"column":76},"end":{"line":6,"column":77}},"loc":{"start":{"line":6,"column":95},"end":{"line":6,"column":121}},"line":6},"6":{"name":"(anonymous_6)","decl":{"start":{"line":14,"column":4},"end":{"line":14,"column":5}},"loc":{"start":{"line":14,"column":21},"end":{"line":18,"column":5}},"line":14},"7":{"name":"(anonymous_7)","decl":{"start":{"line":15,"column":27},"end":{"line":15,"column":28}},"loc":{"start":{"line":15,"column":48},"end":{"line":17,"column":9}},"line":15},"8":{"name":"(anonymous_8)","decl":{"start":{"line":16,"column":32},"end":{"line":16,"column":33}},"loc":{"start":{"line":16,"column":44},"end":{"line":16,"column":59}},"line":16},"9":{"name":"(anonymous_9)","decl":{"start":{"line":19,"column":4},"end":{"line":19,"column":5}},"loc":{"start":{"line":19,"column":28},"end":{"line":23,"column":5}},"line":19},"10":{"name":"(anonymous_10)","decl":{"start":{"line":24,"column":4},"end":{"line":24,"column":5}},"loc":{"start":{"line":24,"column":18},"end":{"line":26,"column":5}},"line":24},"11":{"name":"(anonymous_11)","decl":{"start":{"line":27,"column":4},"end":{"line":27,"column":5}},"loc":{"start":{"line":27,"column":19},"end":{"line":35,"column":5}},"line":27},"12":{"name":"(anonymous_12)","decl":{"start":{"line":28,"column":47},"end":{"line":28,"column":48}},"loc":{"start":{"line":28,"column":60},"end":{"line":34,"column":9}},"line":28},"13":{"name":"(anonymous_13)","decl":{"start":{"line":36,"column":4},"end":{"line":36,"column":5}},"loc":{"start":{"line":36,"column":23},"end":{"line":47,"column":5}},"line":36},"14":{"name":"(anonymous_14)","decl":{"start":{"line":37,"column":27},"end":{"line":37,"column":28}},"loc":{"start":{"line":37,"column":48},"end":{"line":46,"column":9}},"line":37},"15":{"name":"(anonymous_15)","decl":{"start":{"line":38,"column":34},"end":{"line":38,"column":35}},"loc":{"start":{"line":38,"column":51},"end":{"line":45,"column":13}},"line":38},"16":{"name":"(anonymous_16)","decl":{"start":{"line":48,"column":4},"end":{"line":48,"column":5}},"loc":{"start":{"line":48,"column":23},"end":{"line":53,"column":5}},"line":48},"17":{"name":"(anonymous_17)","decl":{"start":{"line":49,"column":47},"end":{"line":49,"column":48}},"loc":{"start":{"line":49,"column":60},"end":{"line":52,"column":9}},"line":49},"18":{"name":"(anonymous_18)","decl":{"start":{"line":51,"column":32},"end":{"line":51,"column":33}},"loc":{"start":{"line":51,"column":40},"end":{"line":51,"column":48}},"line":51},"19":{"name":"(anonymous_19)","decl":{"start":{"line":51,"column":54},"end":{"line":51,"column":55}},"loc":{"start":{"line":51,"column":62},"end":{"line":51,"column":75}},"line":51},"20":{"name":"(anonymous_20)","decl":{"start":{"line":54,"column":4},"end":{"line":54,"column":5}},"loc":{"start":{"line":54,"column":24},"end":{"line":59,"column":5}},"line":54},"21":{"name":"(anonymous_21)","decl":{"start":{"line":55,"column":47},"end":{"line":55,"column":48}},"loc":{"start":{"line":55,"column":60},"end":{"line":58,"column":9}},"line":55},"22":{"name":"(anonymous_22)","decl":{"start":{"line":57,"column":32},"end":{"line":57,"column":33}},"loc":{"start":{"line":57,"column":40},"end":{"line":57,"column":49}},"line":57},"23":{"name":"(anonymous_23)","decl":{"start":{"line":57,"column":55},"end":{"line":57,"column":56}},"loc":{"start":{"line":57,"column":63},"end":{"line":57,"column":76}},"line":57},"24":{"name":"(anonymous_24)","decl":{"start":{"line":60,"column":4},"end":{"line":60,"column":5}},"loc":{"start":{"line":60,"column":25},"end":{"line":64,"column":5}},"line":60},"25":{"name":"(anonymous_25)","decl":{"start":{"line":61,"column":47},"end":{"line":61,"column":48}},"loc":{"start":{"line":61,"column":60},"end":{"line":63,"column":9}},"line":61},"26":{"name":"(anonymous_26)","decl":{"start":{"line":65,"column":4},"end":{"line":65,"column":5}},"loc":{"start":{"line":65,"column":23},"end":{"line":78,"column":5}},"line":65},"27":{"name":"(anonymous_27)","decl":{"start":{"line":66,"column":47},"end":{"line":66,"column":48}},"loc":{"start":{"line":66,"column":60},"end":{"line":77,"column":9}},"line":66},"28":{"name":"(anonymous_28)","decl":{"start":{"line":67,"column":31},"end":{"line":67,"column":32}},"loc":{"start":{"line":67,"column":52},"end":{"line":76,"column":13}},"line":67},"29":{"name":"(anonymous_29)","decl":{"start":{"line":68,"column":34},"end":{"line":68,"column":35}},"loc":{"start":{"line":68,"column":52},"end":{"line":75,"column":17}},"line":68},"30":{"name":"(anonymous_30)","decl":{"start":{"line":79,"column":4},"end":{"line":79,"column":5}},"loc":{"start":{"line":79,"column":24},"end":{"line":100,"column":5}},"line":79},"31":{"name":"(anonymous_31)","decl":{"start":{"line":80,"column":27},"end":{"line":80,"column":28}},"loc":{"start":{"line":80,"column":48},"end":{"line":99,"column":9}},"line":80},"32":{"name":"(anonymous_32)","decl":{"start":{"line":81,"column":33},"end":{"line":81,"column":34}},"loc":{"start":{"line":81,"column":51},"end":{"line":98,"column":14}},"line":81},"33":{"name":"(anonymous_33)","decl":{"start":{"line":81,"column":83},"end":{"line":81,"column":84}},"loc":{"start":{"line":81,"column":96},"end":{"line":98,"column":13}},"line":81},"34":{"name":"(anonymous_34)","decl":{"start":{"line":86,"column":47},"end":{"line":86,"column":48}},"loc":{"start":{"line":86,"column":61},"end":{"line":94,"column":22}},"line":86},"35":{"name":"(anonymous_35)","decl":{"start":{"line":86,"column":93},"end":{"line":86,"column":94}},"loc":{"start":{"line":86,"column":106},"end":{"line":94,"column":21}},"line":86},"36":{"name":"(anonymous_36)","decl":{"start":{"line":101,"column":4},"end":{"line":101,"column":5}},"loc":{"start":{"line":101,"column":30},"end":{"line":112,"column":5}},"line":101},"37":{"name":"(anonymous_37)","decl":{"start":{"line":102,"column":27},"end":{"line":102,"column":28}},"loc":{"start":{"line":102,"column":48},"end":{"line":111,"column":9}},"line":102},"38":{"name":"(anonymous_38)","decl":{"start":{"line":103,"column":41},"end":{"line":103,"column":42}},"loc":{"start":{"line":103,"column":52},"end":{"line":110,"column":13}},"line":103}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":17},"end":{"line":2,"column":21}},{"start":{"line":2,"column":25},"end":{"line":2,"column":39}},{"start":{"line":2,"column":44},"end":{"line":9,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":16},"end":{"line":3,"column":34}},"type":"binary-expr","locations":[{"start":{"line":3,"column":16},"end":{"line":3,"column":17}},{"start":{"line":3,"column":22},"end":{"line":3,"column":33}}],"line":3},"2":{"loc":{"start":{"line":6,"column":32},"end":{"line":6,"column":148}},"type":"cond-expr","locations":[{"start":{"line":6,"column":46},"end":{"line":6,"column":67}},{"start":{"line":6,"column":70},"end":{"line":6,"column":148}}],"line":6},"3":{"loc":{"start":{"line":7,"column":51},"end":{"line":7,"column":67}},"type":"binary-expr","locations":[{"start":{"line":7,"column":51},"end":{"line":7,"column":61}},{"start":{"line":7,"column":65},"end":{"line":7,"column":67}}],"line":7},"4":{"loc":{"start":{"line":29,"column":12},"end":{"line":32,"column":13}},"type":"if","locations":[{"start":{"line":29,"column":12},"end":{"line":32,"column":13}},{"start":{"line":29,"column":12},"end":{"line":32,"column":13}}],"line":29},"5":{"loc":{"start":{"line":39,"column":16},"end":{"line":44,"column":17}},"type":"if","locations":[{"start":{"line":39,"column":16},"end":{"line":44,"column":17}},{"start":{"line":39,"column":16},"end":{"line":44,"column":17}}],"line":39},"6":{"loc":{"start":{"line":69,"column":20},"end":{"line":74,"column":21}},"type":"if","locations":[{"start":{"line":69,"column":20},"end":{"line":74,"column":21}},{"start":{"line":69,"column":20},"end":{"line":74,"column":21}}],"line":69},"7":{"loc":{"start":{"line":82,"column":16},"end":{"line":97,"column":17}},"type":"if","locations":[{"start":{"line":82,"column":16},"end":{"line":97,"column":17}},{"start":{"line":82,"column":16},"end":{"line":97,"column":17}}],"line":82},"8":{"loc":{"start":{"line":104,"column":16},"end":{"line":109,"column":17}},"type":"if","locations":[{"start":{"line":104,"column":16},"end":{"line":109,"column":17}},{"start":{"line":104,"column":16},"end":{"line":109,"column":17}}],"line":104}},"s":{"0":1,"1":12,"2":14,"3":14,"4":0,"5":0,"6":0,"7":0,"8":26,"9":14,"10":12,"11":1,"12":1,"13":1,"14":8,"15":8,"16":8,"17":0,"18":0,"19":0,"20":4,"21":4,"22":4,"23":4,"24":4,"25":0,"26":4,"27":4,"28":4,"29":0,"30":4,"31":2,"32":2,"33":2,"34":2,"35":2,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":2,"44":2,"45":2,"46":2,"47":0,"48":2,"49":2,"50":2,"51":2,"52":2,"53":0,"54":2,"55":2,"56":2,"57":2,"58":2,"59":2,"60":2,"61":0,"62":0,"63":0,"64":0,"65":0,"66":1},"f":{"0":12,"1":12,"2":14,"3":0,"4":26,"5":14,"6":8,"7":8,"8":8,"9":0,"10":4,"11":4,"12":4,"13":4,"14":4,"15":4,"16":2,"17":2,"18":2,"19":2,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":2,"27":2,"28":2,"29":2,"30":2,"31":2,"32":2,"33":2,"34":2,"35":2,"36":0,"37":0,"38":0},"b":{"0":[1,1,1],"1":[12,12],"2":[12,14],"3":[12,12],"4":[4,0],"5":[0,4],"6":[0,2],"7":[0,2],"8":[0,0]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"c0a76f42a231dbbdf0bae7132c6827bf64c59bee","contentHash":"c6b9aff4112421317b57651446a4c601_11.3.0"},"/Users/mpham/Code/nativecode/chest/src/Core/Logger.ts":{"path":"/Users/mpham/Code/nativecode/chest/src/Core/Logger.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":14},"end":{"line":3,"column":30}},"2":{"start":{"line":5,"column":16},"end":{"line":5,"column":46}},"3":{"start":{"line":6,"column":17},"end":{"line":6,"column":64}},"4":{"start":{"line":6,"column":27},"end":{"line":6,"column":64}},"5":{"start":{"line":7,"column":4},"end":{"line":28,"column":6}},"6":{"start":{"line":9,"column":12},"end":{"line":11,"column":13}},"7":{"start":{"line":10,"column":16},"end":{"line":10,"column":79}},"8":{"start":{"line":14,"column":12},"end":{"line":14,"column":72}},"9":{"start":{"line":17,"column":12},"end":{"line":17,"column":72}},"10":{"start":{"line":20,"column":12},"end":{"line":20,"column":69}},"11":{"start":{"line":23,"column":12},"end":{"line":23,"column":69}},"12":{"start":{"line":26,"column":12},"end":{"line":26,"column":65}},"13":{"start":{"line":30,"column":0},"end":{"line":30,"column":24}}},"fnMap":{"0":{"name":"Logger","decl":{"start":{"line":4,"column":9},"end":{"line":4,"column":15}},"loc":{"start":{"line":4,"column":32},"end":{"line":29,"column":1}},"line":4},"1":{"name":"(anonymous_1)","decl":{"start":{"line":6,"column":17},"end":{"line":6,"column":18}},"loc":{"start":{"line":6,"column":27},"end":{"line":6,"column":64}},"line":6},"2":{"name":"(anonymous_2)","decl":{"start":{"line":8,"column":15},"end":{"line":8,"column":16}},"loc":{"start":{"line":8,"column":28},"end":{"line":12,"column":9}},"line":8},"3":{"name":"(anonymous_3)","decl":{"start":{"line":13,"column":15},"end":{"line":13,"column":16}},"loc":{"start":{"line":13,"column":28},"end":{"line":15,"column":9}},"line":13},"4":{"name":"(anonymous_4)","decl":{"start":{"line":16,"column":14},"end":{"line":16,"column":15}},"loc":{"start":{"line":16,"column":27},"end":{"line":18,"column":9}},"line":16},"5":{"name":"(anonymous_5)","decl":{"start":{"line":19,"column":15},"end":{"line":19,"column":16}},"loc":{"start":{"line":19,"column":28},"end":{"line":21,"column":9}},"line":19},"6":{"name":"(anonymous_6)","decl":{"start":{"line":22,"column":14},"end":{"line":22,"column":15}},"loc":{"start":{"line":22,"column":27},"end":{"line":24,"column":9}},"line":22},"7":{"name":"(anonymous_7)","decl":{"start":{"line":25,"column":14},"end":{"line":25,"column":15}},"loc":{"start":{"line":25,"column":27},"end":{"line":27,"column":9}},"line":25}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":16},"end":{"line":5,"column":46}},"type":"cond-expr","locations":[{"start":{"line":5,"column":27},"end":{"line":5,"column":41}},{"start":{"line":5,"column":44},"end":{"line":5,"column":46}}],"line":5},"1":{"loc":{"start":{"line":9,"column":12},"end":{"line":11,"column":13}},"type":"if","locations":[{"start":{"line":9,"column":12},"end":{"line":11,"column":13}},{"start":{"line":9,"column":12},"end":{"line":11,"column":13}}],"line":9}},"s":{"0":1,"1":1,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":1},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0},"b":{"0":[0,0],"1":[0,0]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"2f0ba63f63fa57c6098e084f0c3ec0768109c80c","contentHash":"5bfbbebbd09530e907c8a440f0be3343_11.3.0"},"/Users/mpham/Code/nativecode/chest/src/Core/Project.ts":{"path":"/Users/mpham/Code/nativecode/chest/src/Core/Project.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":5,"column":8},"end":{"line":5,"column":26}},"2":{"start":{"line":6,"column":8},"end":{"line":6,"column":36}},"3":{"start":{"line":7,"column":8},"end":{"line":7,"column":26}},"4":{"start":{"line":10,"column":8},"end":{"line":10,"column":26}},"5":{"start":{"line":13,"column":8},"end":{"line":13,"column":27}},"6":{"start":{"line":16,"column":8},"end":{"line":16,"column":26}},"7":{"start":{"line":19,"column":0},"end":{"line":19,"column":26}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":4},"end":{"line":4,"column":5}},"loc":{"start":{"line":4,"column":35},"end":{"line":8,"column":5}},"line":4},"1":{"name":"(anonymous_1)","decl":{"start":{"line":9,"column":4},"end":{"line":9,"column":5}},"loc":{"start":{"line":9,"column":15},"end":{"line":11,"column":5}},"line":9},"2":{"name":"(anonymous_2)","decl":{"start":{"line":12,"column":4},"end":{"line":12,"column":5}},"loc":{"start":{"line":12,"column":16},"end":{"line":14,"column":5}},"line":12},"3":{"name":"(anonymous_3)","decl":{"start":{"line":15,"column":4},"end":{"line":15,"column":5}},"loc":{"start":{"line":15,"column":15},"end":{"line":17,"column":5}},"line":15}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":22},"end":{"line":6,"column":35}},"type":"binary-expr","locations":[{"start":{"line":6,"column":22},"end":{"line":6,"column":27}},{"start":{"line":6,"column":31},"end":{"line":6,"column":35}}],"line":6}},"s":{"0":1,"1":4,"2":4,"3":4,"4":4,"5":2,"6":3,"7":1},"f":{"0":4,"1":4,"2":2,"3":3},"b":{"0":[4,2]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"7ed056c5773a2de7630b33bdc7d2627bb46e9eaa","contentHash":"0301e29dc48d0833450febf639483781_11.3.0"},"/Users/mpham/Code/nativecode/chest/src/Core/Registry.ts":{"path":"/Users/mpham/Code/nativecode/chest/src/Core/Registry.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":5,"column":8},"end":{"line":5,"column":57}},"2":{"start":{"line":8,"column":8},"end":{"line":8,"column":53}},"3":{"start":{"line":11,"column":8},"end":{"line":12,"column":63}},"4":{"start":{"line":11,"column":43},"end":{"line":11,"column":60}},"5":{"start":{"line":12,"column":25},"end":{"line":12,"column":60}},"6":{"start":{"line":15,"column":20},"end":{"line":15,"column":38}},"7":{"start":{"line":16,"column":8},"end":{"line":18,"column":9}},"8":{"start":{"line":17,"column":12},"end":{"line":17,"column":43}},"9":{"start":{"line":19,"column":8},"end":{"line":19,"column":64}},"10":{"start":{"line":22,"column":0},"end":{"line":22,"column":28}},"11":{"start":{"line":23,"column":0},"end":{"line":23,"column":28}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":4},"end":{"line":4,"column":5}},"loc":{"start":{"line":4,"column":30},"end":{"line":6,"column":5}},"line":4},"1":{"name":"(anonymous_1)","decl":{"start":{"line":7,"column":4},"end":{"line":7,"column":5}},"loc":{"start":{"line":7,"column":17},"end":{"line":9,"column":5}},"line":7},"2":{"name":"(anonymous_2)","decl":{"start":{"line":10,"column":4},"end":{"line":10,"column":5}},"loc":{"start":{"line":10,"column":34},"end":{"line":13,"column":5}},"line":10},"3":{"name":"(anonymous_3)","decl":{"start":{"line":11,"column":36},"end":{"line":11,"column":37}},"loc":{"start":{"line":11,"column":43},"end":{"line":11,"column":60}},"line":11},"4":{"name":"(anonymous_4)","decl":{"start":{"line":12,"column":17},"end":{"line":12,"column":18}},"loc":{"start":{"line":12,"column":25},"end":{"line":12,"column":60}},"line":12},"5":{"name":"(anonymous_5)","decl":{"start":{"line":14,"column":4},"end":{"line":14,"column":5}},"loc":{"start":{"line":14,"column":21},"end":{"line":20,"column":5}},"line":14}},"branchMap":{"0":{"loc":{"start":{"line":16,"column":8},"end":{"line":18,"column":9}},"type":"if","locations":[{"start":{"line":16,"column":8},"end":{"line":18,"column":9}},{"start":{"line":16,"column":8},"end":{"line":18,"column":9}}],"line":16}},"s":{"0":1,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":1,"11":1},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"b":{"0":[0,0]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"fb7041a0d864e18fd9b661fce84183f600a2cded","contentHash":"a7c3a928a98bcf45b37ebc026cbb2b29_11.3.0"},"/Users/mpham/Code/nativecode/chest/src/Core/UpdateScript.ts":{"path":"/Users/mpham/Code/nativecode/chest/src/Core/UpdateScript.ts","statementMap":{"0":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":8,"column":7}},"2":{"start":{"line":4,"column":36},"end":{"line":4,"column":97}},"3":{"start":{"line":4,"column":42},"end":{"line":4,"column":70}},"4":{"start":{"line":4,"column":85},"end":{"line":4,"column":95}},"5":{"start":{"line":5,"column":35},"end":{"line":5,"column":100}},"6":{"start":{"line":5,"column":41},"end":{"line":5,"column":73}},"7":{"start":{"line":5,"column":88},"end":{"line":5,"column":98}},"8":{"start":{"line":6,"column":32},"end":{"line":6,"column":149}},"9":{"start":{"line":6,"column":97},"end":{"line":6,"column":119}},"10":{"start":{"line":7,"column":8},"end":{"line":7,"column":78}},"11":{"start":{"line":10,"column":0},"end":{"line":10,"column":62}},"12":{"start":{"line":11,"column":11},"end":{"line":11,"column":35}},"13":{"start":{"line":12,"column":13},"end":{"line":12,"column":28}},"14":{"start":{"line":13,"column":16},"end":{"line":13,"column":34}},"15":{"start":{"line":16,"column":8},"end":{"line":16,"column":26}},"16":{"start":{"line":17,"column":8},"end":{"line":17,"column":26}},"17":{"start":{"line":18,"column":8},"end":{"line":18,"column":40}},"18":{"start":{"line":21,"column":8},"end":{"line":21,"column":26}},"19":{"start":{"line":24,"column":8},"end":{"line":24,"column":26}},"20":{"start":{"line":27,"column":8},"end":{"line":27,"column":33}},"21":{"start":{"line":30,"column":8},"end":{"line":30,"column":33}},"22":{"start":{"line":33,"column":8},"end":{"line":39,"column":11}},"23":{"start":{"line":34,"column":29},"end":{"line":34,"column":64}},"24":{"start":{"line":35,"column":12},"end":{"line":37,"column":13}},"25":{"start":{"line":36,"column":16},"end":{"line":36,"column":52}},"26":{"start":{"line":38,"column":12},"end":{"line":38,"column":72}},"27":{"start":{"line":42,"column":8},"end":{"line":58,"column":11}},"28":{"start":{"line":43,"column":12},"end":{"line":43,"column":66}},"29":{"start":{"line":44,"column":26},"end":{"line":47,"column":14}},"30":{"start":{"line":45,"column":16},"end":{"line":46,"column":42}},"31":{"start":{"line":46,"column":20},"end":{"line":46,"column":42}},"32":{"start":{"line":48,"column":12},"end":{"line":48,"column":147}},"33":{"start":{"line":48,"column":44},"end":{"line":48,"column":145}},"34":{"start":{"line":48,"column":98},"end":{"line":48,"column":103}},"35":{"start":{"line":48,"column":121},"end":{"line":48,"column":144}},"36":{"start":{"line":49,"column":12},"end":{"line":49,"column":146}},"37":{"start":{"line":49,"column":44},"end":{"line":49,"column":144}},"38":{"start":{"line":49,"column":98},"end":{"line":49,"column":103}},"39":{"start":{"line":49,"column":121},"end":{"line":49,"column":143}},"40":{"start":{"line":50,"column":12},"end":{"line":57,"column":15}},"41":{"start":{"line":51,"column":16},"end":{"line":56,"column":17}},"42":{"start":{"line":52,"column":20},"end":{"line":52,"column":30}},"43":{"start":{"line":55,"column":20},"end":{"line":55,"column":35}},"44":{"start":{"line":61,"column":23},"end":{"line":63,"column":9}},"45":{"start":{"line":62,"column":12},"end":{"line":62,"column":92}},"46":{"start":{"line":62,"column":40},"end":{"line":62,"column":51}},"47":{"start":{"line":62,"column":65},"end":{"line":62,"column":90}},"48":{"start":{"line":64,"column":8},"end":{"line":66,"column":9}},"49":{"start":{"line":65,"column":12},"end":{"line":65,"column":73}},"50":{"start":{"line":67,"column":8},"end":{"line":67,"column":58}},"51":{"start":{"line":70,"column":0},"end":{"line":70,"column":36}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":44},"end":{"line":2,"column":45}},"loc":{"start":{"line":2,"column":89},"end":{"line":9,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":36},"end":{"line":3,"column":37}},"loc":{"start":{"line":3,"column":63},"end":{"line":8,"column":5}},"line":3},"2":{"name":"fulfilled","decl":{"start":{"line":4,"column":17},"end":{"line":4,"column":26}},"loc":{"start":{"line":4,"column":34},"end":{"line":4,"column":99}},"line":4},"3":{"name":"rejected","decl":{"start":{"line":5,"column":17},"end":{"line":5,"column":25}},"loc":{"start":{"line":5,"column":33},"end":{"line":5,"column":102}},"line":5},"4":{"name":"step","decl":{"start":{"line":6,"column":17},"end":{"line":6,"column":21}},"loc":{"start":{"line":6,"column":30},"end":{"line":6,"column":151}},"line":6},"5":{"name":"(anonymous_5)","decl":{"start":{"line":6,"column":76},"end":{"line":6,"column":77}},"loc":{"start":{"line":6,"column":95},"end":{"line":6,"column":121}},"line":6},"6":{"name":"(anonymous_6)","decl":{"start":{"line":15,"column":4},"end":{"line":15,"column":5}},"loc":{"start":{"line":15,"column":28},"end":{"line":19,"column":5}},"line":15},"7":{"name":"(anonymous_7)","decl":{"start":{"line":20,"column":4},"end":{"line":20,"column":5}},"loc":{"start":{"line":20,"column":15},"end":{"line":22,"column":5}},"line":20},"8":{"name":"(anonymous_8)","decl":{"start":{"line":23,"column":4},"end":{"line":23,"column":5}},"loc":{"start":{"line":23,"column":15},"end":{"line":25,"column":5}},"line":23},"9":{"name":"(anonymous_9)","decl":{"start":{"line":26,"column":4},"end":{"line":26,"column":5}},"loc":{"start":{"line":26,"column":19},"end":{"line":28,"column":5}},"line":26},"10":{"name":"(anonymous_10)","decl":{"start":{"line":29,"column":4},"end":{"line":29,"column":5}},"loc":{"start":{"line":29,"column":23},"end":{"line":31,"column":5}},"line":29},"11":{"name":"(anonymous_11)","decl":{"start":{"line":32,"column":4},"end":{"line":32,"column":5}},"loc":{"start":{"line":32,"column":18},"end":{"line":40,"column":5}},"line":32},"12":{"name":"(anonymous_12)","decl":{"start":{"line":33,"column":47},"end":{"line":33,"column":48}},"loc":{"start":{"line":33,"column":60},"end":{"line":39,"column":9}},"line":33},"13":{"name":"(anonymous_13)","decl":{"start":{"line":41,"column":4},"end":{"line":41,"column":5}},"loc":{"start":{"line":41,"column":35},"end":{"line":59,"column":5}},"line":41},"14":{"name":"(anonymous_14)","decl":{"start":{"line":42,"column":27},"end":{"line":42,"column":28}},"loc":{"start":{"line":42,"column":48},"end":{"line":58,"column":9}},"line":42},"15":{"name":"(anonymous_15)","decl":{"start":{"line":44,"column":89},"end":{"line":44,"column":90}},"loc":{"start":{"line":44,"column":98},"end":{"line":47,"column":13}},"line":44},"16":{"name":"(anonymous_16)","decl":{"start":{"line":48,"column":36},"end":{"line":48,"column":37}},"loc":{"start":{"line":48,"column":44},"end":{"line":48,"column":145}},"line":48},"17":{"name":"(anonymous_17)","decl":{"start":{"line":48,"column":89},"end":{"line":48,"column":90}},"loc":{"start":{"line":48,"column":98},"end":{"line":48,"column":103}},"line":48},"18":{"name":"(anonymous_18)","decl":{"start":{"line":48,"column":113},"end":{"line":48,"column":114}},"loc":{"start":{"line":48,"column":121},"end":{"line":48,"column":144}},"line":48},"19":{"name":"(anonymous_19)","decl":{"start":{"line":49,"column":36},"end":{"line":49,"column":37}},"loc":{"start":{"line":49,"column":44},"end":{"line":49,"column":144}},"line":49},"20":{"name":"(anonymous_20)","decl":{"start":{"line":49,"column":89},"end":{"line":49,"column":90}},"loc":{"start":{"line":49,"column":98},"end":{"line":49,"column":103}},"line":49},"21":{"name":"(anonymous_21)","decl":{"start":{"line":49,"column":113},"end":{"line":49,"column":114}},"loc":{"start":{"line":49,"column":121},"end":{"line":49,"column":143}},"line":49},"22":{"name":"(anonymous_22)","decl":{"start":{"line":50,"column":38},"end":{"line":50,"column":39}},"loc":{"start":{"line":50,"column":56},"end":{"line":57,"column":13}},"line":50},"23":{"name":"(anonymous_23)","decl":{"start":{"line":60,"column":4},"end":{"line":60,"column":5}},"loc":{"start":{"line":60,"column":32},"end":{"line":68,"column":5}},"line":60},"24":{"name":"(anonymous_24)","decl":{"start":{"line":61,"column":23},"end":{"line":61,"column":24}},"loc":{"start":{"line":61,"column":34},"end":{"line":63,"column":9}},"line":61},"25":{"name":"(anonymous_25)","decl":{"start":{"line":62,"column":32},"end":{"line":62,"column":33}},"loc":{"start":{"line":62,"column":40},"end":{"line":62,"column":51}},"line":62},"26":{"name":"(anonymous_26)","decl":{"start":{"line":62,"column":57},"end":{"line":62,"column":58}},"loc":{"start":{"line":62,"column":65},"end":{"line":62,"column":90}},"line":62}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":17},"end":{"line":2,"column":21}},{"start":{"line":2,"column":25},"end":{"line":2,"column":39}},{"start":{"line":2,"column":44},"end":{"line":9,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":16},"end":{"line":3,"column":34}},"type":"binary-expr","locations":[{"start":{"line":3,"column":16},"end":{"line":3,"column":17}},{"start":{"line":3,"column":22},"end":{"line":3,"column":33}}],"line":3},"2":{"loc":{"start":{"line":6,"column":32},"end":{"line":6,"column":148}},"type":"cond-expr","locations":[{"start":{"line":6,"column":46},"end":{"line":6,"column":67}},{"start":{"line":6,"column":70},"end":{"line":6,"column":148}}],"line":6},"3":{"loc":{"start":{"line":7,"column":51},"end":{"line":7,"column":67}},"type":"binary-expr","locations":[{"start":{"line":7,"column":51},"end":{"line":7,"column":61}},{"start":{"line":7,"column":65},"end":{"line":7,"column":67}}],"line":7},"4":{"loc":{"start":{"line":35,"column":12},"end":{"line":37,"column":13}},"type":"if","locations":[{"start":{"line":35,"column":12},"end":{"line":37,"column":13}},{"start":{"line":35,"column":12},"end":{"line":37,"column":13}}],"line":35},"5":{"loc":{"start":{"line":45,"column":16},"end":{"line":46,"column":42}},"type":"if","locations":[{"start":{"line":45,"column":16},"end":{"line":46,"column":42}},{"start":{"line":45,"column":16},"end":{"line":46,"column":42}}],"line":45},"6":{"loc":{"start":{"line":51,"column":16},"end":{"line":56,"column":17}},"type":"if","locations":[{"start":{"line":51,"column":16},"end":{"line":56,"column":17}},{"start":{"line":51,"column":16},"end":{"line":56,"column":17}}],"line":51},"7":{"loc":{"start":{"line":64,"column":8},"end":{"line":66,"column":9}},"type":"if","locations":[{"start":{"line":64,"column":8},"end":{"line":66,"column":9}},{"start":{"line":64,"column":8},"end":{"line":66,"column":9}}],"line":64}},"s":{"0":1,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":1,"12":1,"13":1,"14":1,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":1},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0},"b":{"0":[1,1,1],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"1c4d6a3ec30c8c4f2a377d517cc67046d6b25927","contentHash":"40e3e25f853950e8a418599b438b2f9e_11.3.0"}} \ No newline at end of file diff --git a/.nyc_output/28b7b15abc870041ad8407ae2fe12a52.json b/.nyc_output/28b7b15abc870041ad8407ae2fe12a52.json deleted file mode 100644 index bc58f44..0000000 --- a/.nyc_output/28b7b15abc870041ad8407ae2fe12a52.json +++ /dev/null @@ -1 +0,0 @@ -{"/Users/mpham/Code/nativecode/chest/src/Core/Actions/index.ts":{"path":"/Users/mpham/Code/nativecode/chest/src/Core/Actions/index.ts","statementMap":{},"fnMap":{},"branchMap":{},"s":{},"f":{},"b":{}},"/Users/mpham/Code/nativecode/chest/src/Core/index.ts":{"path":"/Users/mpham/Code/nativecode/chest/src/Core/index.ts","statementMap":{},"fnMap":{},"branchMap":{},"s":{},"f":{},"b":{}},"/Users/mpham/Code/nativecode/chest/src/Core/Interfaces/Dictionary.ts":{"path":"/Users/mpham/Code/nativecode/chest/src/Core/Interfaces/Dictionary.ts","statementMap":{},"fnMap":{},"branchMap":{},"s":{},"f":{},"b":{}},"/Users/mpham/Code/nativecode/chest/src/Core/Interfaces/index.ts":{"path":"/Users/mpham/Code/nativecode/chest/src/Core/Interfaces/index.ts","statementMap":{},"fnMap":{},"branchMap":{},"s":{},"f":{},"b":{}},"/Users/mpham/Code/nativecode/chest/src/index.ts":{"path":"/Users/mpham/Code/nativecode/chest/src/index.ts","statementMap":{},"fnMap":{},"branchMap":{},"s":{},"f":{},"b":{}}} \ No newline at end of file From 3bbcbc70184ae4632c2d74ea71ab9d82ca022217 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Wed, 15 Nov 2017 15:52:25 -0500 Subject: [PATCH 26/35] adding test for invalid projects --- package.json | 2 ++ src/Chest.spec.ts | 16 ++++++++++++++-- src/Chest.ts | 2 +- src/Core/Project.ts | 7 +++++++ src/Core/index.ts | 3 ++- testables/invalid/package.json | 0 yarn.lock | 20 ++++++++++++++------ 7 files changed, 40 insertions(+), 10 deletions(-) create mode 100644 testables/invalid/package.json diff --git a/package.json b/package.json index 6f53212..cd523d3 100644 --- a/package.json +++ b/package.json @@ -11,11 +11,13 @@ }, "devDependencies": { "@types/chai": "^4.0.4", + "@types/chai-as-promised": "^7.1.0", "@types/chalk": "^2.2.0", "@types/mocha": "^2.2.44", "@types/node": "^8.0.52", "bin-shebang": "^1.0.11", "chai": "^4.1.2", + "chai-as-promised": "^7.1.1", "coveralls": "^3.0.0", "cross-env": "^5.1.1", "mocha": "^4.0.1", diff --git a/src/Chest.spec.ts b/src/Chest.spec.ts index 94c1be0..69abf40 100644 --- a/src/Chest.spec.ts +++ b/src/Chest.spec.ts @@ -1,11 +1,19 @@ import 'mocha' -import { expect } from 'chai' +import * as chai from 'chai' +import * as chaiAsPromised from 'chai-as-promised' import { Chest } from './Chest' import { Files } from './Core' +const expect = chai.expect + describe('when using RootProject to load a project', () => { + beforeEach(() => { + chai.should() + chai.use(chaiAsPromised) + }) + it('should load single npm project', async () => { const directory = Files.join(process.cwd(), 'testables', 'single') const projects = await Chest.projects(directory) @@ -21,7 +29,11 @@ describe('when using RootProject to load a project', () => { expect(projects[0].name).to.equal('simple-package') expect(projects[1].name).to.equal('simple-project') expect(projects[0].owner).to.not.equal(undefined) - expect((projects[0].owner || { name: 'invalid' }).name).to.equal('project-workspaces') + }) + + it('should throw error when single project does not exist', () => { + const directory = Files.join(process.cwd(), 'testables', 'nonexistant') + Chest.projects(directory).should.eventually.throw() }) }) diff --git a/src/Chest.ts b/src/Chest.ts index 84ab770..4866413 100644 --- a/src/Chest.ts +++ b/src/Chest.ts @@ -15,7 +15,7 @@ export class Chest { if (npm.private && npm.workspace) { return npm.workspace - .map(async workspaceRoot => await Chest.workspaces(project, workspaceRoot)) + .map(workspaceRoot => Chest.workspaces(project, workspaceRoot)) .reduce(async (previous: Promise, current: Promise): Promise => { return (await previous).concat(await current) }, Promise.resolve([])) diff --git a/src/Core/Project.ts b/src/Core/Project.ts index c94250a..32b0137 100644 --- a/src/Core/Project.ts +++ b/src/Core/Project.ts @@ -1,3 +1,6 @@ +import { Files } from './Files' +import { NPM } from './Interfaces' + export class Project { private readonly _name: string private readonly _owner: Project @@ -17,6 +20,10 @@ export class Project { return this._owner } + public get package(): Promise { + return Files.json(Files.join(this.path, 'package.json')) + } + public get path(): string { return this._path } diff --git a/src/Core/index.ts b/src/Core/index.ts index 4c990f2..5a66884 100644 --- a/src/Core/index.ts +++ b/src/Core/index.ts @@ -1,4 +1,3 @@ -export * from './Actions' export * from './Interfaces' export * from './Files' @@ -6,3 +5,5 @@ export * from './Logger' export * from './Project' export * from './Registry' export * from './UpdateScript' + +import './Actions' diff --git a/testables/invalid/package.json b/testables/invalid/package.json new file mode 100644 index 0000000..e69de29 diff --git a/yarn.lock b/yarn.lock index a59d306..fc2d35d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,7 +2,13 @@ # yarn lockfile v1 -"@types/chai@^4.0.4": +"@types/chai-as-promised@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.0.tgz#010b04cde78eacfb6e72bfddb3e58fe23c2e78b9" + dependencies: + "@types/chai" "*" + +"@types/chai@*", "@types/chai@^4.0.4": version "4.0.4" resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.0.4.tgz#fe86315d9a66827feeb16f73bc954688ec950e18" @@ -272,6 +278,12 @@ center-align@^0.1.1: align-text "^0.1.3" lazy-cache "^1.0.3" +chai-as-promised@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.1.tgz#08645d825deb8696ee61725dbf590c012eb00ca0" + dependencies: + check-error "^1.0.2" + chai@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chai/-/chai-4.1.2.tgz#0f64584ba642f0f2ace2806279f4f06ca23ad73c" @@ -301,7 +313,7 @@ chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -check-error@^1.0.1: +check-error@^1.0.1, check-error@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" @@ -369,10 +381,6 @@ core-util-is@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" -coverage@^0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/coverage/-/coverage-0.0.0.tgz#fe35dfd6258e2cce0295e37145e689ae7f156620" - coveralls@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-3.0.0.tgz#22ef730330538080d29b8c151dc9146afde88a99" From 96ec42cc9e75092c65cb6ff65252bd4a7b3bc988 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Wed, 15 Nov 2017 16:40:15 -0500 Subject: [PATCH 27/35] adding tests --- src/Chest.spec.ts | 5 +++++ src/Chest.ts | 9 +++------ testables/invalid/package.json | 0 testables/workspaces-invalid/package.json | 14 ++++++++++++++ 4 files changed, 22 insertions(+), 6 deletions(-) delete mode 100644 testables/invalid/package.json create mode 100644 testables/workspaces-invalid/package.json diff --git a/src/Chest.spec.ts b/src/Chest.spec.ts index 69abf40..d1d46da 100644 --- a/src/Chest.spec.ts +++ b/src/Chest.spec.ts @@ -36,4 +36,9 @@ describe('when using RootProject to load a project', () => { Chest.projects(directory).should.eventually.throw() }) + it('should throw error when workspace project has no child projects', () => { + const directory = Files.join(process.cwd(), 'testables', 'workspaces-invalid') + Chest.projects(directory).should.eventually.throw() + }) + }) diff --git a/src/Chest.ts b/src/Chest.ts index 4866413..bc1c260 100644 --- a/src/Chest.ts +++ b/src/Chest.ts @@ -14,18 +14,15 @@ export class Chest { const project = new Project(npm.name, root) if (npm.private && npm.workspace) { - return npm.workspace - .map(workspaceRoot => Chest.workspaces(project, workspaceRoot)) - .reduce(async (previous: Promise, current: Promise): Promise => { - return (await previous).concat(await current) - }, Promise.resolve([])) + return npm.workspace.map(workspaceRoot => Chest.workspaces(project, workspaceRoot)) + .reduce(async (previous, current) => (await previous).concat(await current), Promise.resolve([])) } return [project] } private static async workspaces(owner: Project, workspaceRoot: string): Promise { - workspaceRoot = Files.join(owner.path, workspaceRoot.substring(0, workspaceRoot.indexOf('*'))) + workspaceRoot = Files.join(owner.path, workspaceRoot.substring(0, workspaceRoot.indexOf('/*'))) if (await Files.exists(workspaceRoot) === false) { throw new Error(`failed to find workspace ${workspaceRoot} in ${owner.name}`) diff --git a/testables/invalid/package.json b/testables/invalid/package.json deleted file mode 100644 index e69de29..0000000 diff --git a/testables/workspaces-invalid/package.json b/testables/workspaces-invalid/package.json new file mode 100644 index 0000000..9d1a800 --- /dev/null +++ b/testables/workspaces-invalid/package.json @@ -0,0 +1,14 @@ +{ + "dependencies": { + "chalk": "*" + }, + "description": "invalid workspace project", + "devDependencies": { + "@types/chalk": "*" + }, + "name": "project-single", + "version": "1.0.0", + "workspace": [ + "packages/*" + ] +} From 967805c36ad05d5cc647480b3b4d25a96898c5ae Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Wed, 15 Nov 2017 16:58:27 -0500 Subject: [PATCH 28/35] fixing coverage badge --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 25cbbb1..da173d5 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,10 @@ [![David](https://img.shields.io/david/dev/nativecode-dev/chest.svg?style=flat-square&label=devdeps)](https://www.npmjs.com/package/@beard/chest) [![Travis](https://img.shields.io/travis/nativecode-dev/chest/master.svg?style=flat-square&label=master)](https://travis-ci.org/nativecode-dev/chest) -[![Coveralls github branch](https://img.shields.io/coveralls/github/nativecode-dev/chest/master.svg?style=flat-square&label=coverage)]() +[![Coveralls branch](https://img.shields.io/coveralls/github/nativecode-dev/chest/master.svg?style=flat-square)](https://coveralls.io/github/nativecode-dev/chest) [![Travis](https://img.shields.io/travis/nativecode-dev/chest/develop.svg?style=flat-square&label=develop)](https://travis-ci.org/nativecode-dev/chest) -[![Coveralls github branch](https://img.shields.io/coveralls/github/nativecode-dev/chest/develop.svg?style=flat-square&label=coverage)]() +[![Coveralls branch](https://img.shields.io/coveralls/github/nativecode-dev/chest/develop.svg?style=flat-square)](https://coveralls.io/github/nativecode-dev/chest) # @beard/chest From 22e62f479053a3d7fca71d3d6276fe949ad344ee Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Wed, 15 Nov 2017 17:52:04 -0500 Subject: [PATCH 29/35] added tests for Chest.run --- package.json | 5 +++-- src/CLI.ts | 21 ++------------------- src/Chest.spec.ts | 28 +++++++++++++++++++++------- src/Chest.ts | 28 +++++++++++++++++++++++++--- src/Core/Actions/Packages.ts | 14 ++++++++++---- src/Core/Actions/Typings.ts | 10 +++++++--- src/Core/UpdateScript.ts | 5 +++++ 7 files changed, 73 insertions(+), 38 deletions(-) diff --git a/package.json b/package.json index cd523d3..f2e0016 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "license": "MIT", "main": "./lib/CLI.js", "typings": "./lib/index.d.ts", - "version": "2.0.0", + "version": "2.0.0-alpha-1", "dependencies": { "chalk": "^2.3.0" }, @@ -32,7 +32,8 @@ "nyc": { "all": true, "exclude": [ - "src/**/*.spec.ts" + "src/**/*.spec.ts", + "src/CLI.ts" ], "extension": [ ".ts" diff --git a/src/CLI.ts b/src/CLI.ts index bc69842..6424024 100644 --- a/src/CLI.ts +++ b/src/CLI.ts @@ -1,20 +1,3 @@ -import { Chest } from './Chest' -import { Registry } from './Core' +import { Chest } from './index' -class CLI { - private readonly args: string[] - - private constructor(...args: string[]) { - this.args = args - } - - public static parse(...args: string[]): CLI { - return new CLI(...args) - } - - public async execute(): Promise { - Registry.execute(process.cwd(), ...this.args) - } -} - -CLI.parse(...process.argv.slice(2)).execute() +Chest.run(process.cwd(), ...process.argv.slice(2)) diff --git a/src/Chest.spec.ts b/src/Chest.spec.ts index d1d46da..150ad6f 100644 --- a/src/Chest.spec.ts +++ b/src/Chest.spec.ts @@ -2,8 +2,9 @@ import 'mocha' import * as chai from 'chai' import * as chaiAsPromised from 'chai-as-promised' + import { Chest } from './Chest' -import { Files } from './Core' +import { Files, Registry } from './Core' const expect = chai.expect @@ -16,7 +17,8 @@ describe('when using RootProject to load a project', () => { it('should load single npm project', async () => { const directory = Files.join(process.cwd(), 'testables', 'single') - const projects = await Chest.projects(directory) + const project = await Chest.project(directory) + const projects = await Chest.projects(project) expect(projects.length).to.equal(1) expect(projects[0].name).to.equal('project-single') expect(projects[0].path).to.equal(directory) @@ -24,21 +26,33 @@ describe('when using RootProject to load a project', () => { it('should load yarn workspace project', async () => { const directory = Files.join(process.cwd(), 'testables', 'workspaces') - const projects = await Chest.projects(directory) + const project = await Chest.project(directory) + const projects = await Chest.projects(project) expect(projects.length).to.equal(2) expect(projects[0].name).to.equal('simple-package') expect(projects[1].name).to.equal('simple-project') expect(projects[0].owner).to.not.equal(undefined) + expect(projects[0].owner).to.not.equal(undefined) }) - it('should throw error when single project does not exist', () => { + it('should throw error when single project does not exist', async () => { const directory = Files.join(process.cwd(), 'testables', 'nonexistant') - Chest.projects(directory).should.eventually.throw() + Chest.project(directory).then(project => Chest.projects(project).should.eventually.throw()) }) - it('should throw error when workspace project has no child projects', () => { + it('should throw error when workspace project has no child projects', async () => { const directory = Files.join(process.cwd(), 'testables', 'workspaces-invalid') - Chest.projects(directory).should.eventually.throw() + Chest.project(directory).then(project => Chest.projects(project).should.eventually.throw()) + }) + + it('should run scripts for single project', () => { + const directory = Files.join(process.cwd(), 'testables', 'single') + Chest.run(directory, ...Object.keys(Registry.all())) + }) + + it('should run scripts for workspace project', () => { + const directory = Files.join(process.cwd(), 'testables', 'workspaces') + Chest.run(directory, ...Object.keys(Registry.all())) }) }) diff --git a/src/Chest.ts b/src/Chest.ts index bc1c260..1a6f0be 100644 --- a/src/Chest.ts +++ b/src/Chest.ts @@ -1,9 +1,26 @@ import * as path from 'path' -import { Files, NPM, Project } from './Core' +import { Files, NPM, Project, UpdaterType } from './Core' +import { Registry } from 'src'; export class Chest { - public static async projects(root: string): Promise { + public static async run(root: string, ...args: string[]): Promise { + const project = await Chest.project(root) + const projects = await Chest.projects(project) + const updaters = Registry.all() + + Object.keys(updaters).forEach(async name => { + const updater = updaters[name] + + if (updater.type === UpdaterType.Root) { + await updater.exec(root) + } else { + await Promise.all(projects.map(child => updater.workspace(child))) + } + }) + } + + public static async project(root: string): Promise { const npmfile = path.join(root, 'package.json') if (await Files.exists(npmfile) === false) { @@ -11,7 +28,12 @@ export class Chest { } const npm = await Files.json(npmfile) - const project = new Project(npm.name, root) + return new Project(npm.name, root) + } + + public static async projects(owner: Project): Promise { + const project = await Chest.project(owner.path) + const npm = await project.package if (npm.private && npm.workspace) { return npm.workspace.map(workspaceRoot => Chest.workspaces(project, workspaceRoot)) diff --git a/src/Core/Actions/Packages.ts b/src/Core/Actions/Packages.ts index 9dfb821..3e47a53 100644 --- a/src/Core/Actions/Packages.ts +++ b/src/Core/Actions/Packages.ts @@ -24,8 +24,9 @@ class Script extends UpdateScript { } public async workspace(project: Project): Promise { - const source = await this.npm(project.path) - const target = await this.npm(project.owner.path) + const source = await project.package + const target = await project.owner.package + target.author = source.author target.bugs = source.bugs target.description = source.description @@ -34,8 +35,13 @@ class Script extends UpdateScript { target.repository = source.repository const filename = path.join(project.path, 'package.json') - await Files.save(filename, target) - this.log.task('updated package info', filename) + + if (this.testing) { + this.log.task('updated package info', filename, target) + } else { + await Files.save(filename, target) + this.log.task('updated package info', filename) + } } } diff --git a/src/Core/Actions/Typings.ts b/src/Core/Actions/Typings.ts index 4c77a1c..0b566fb 100644 --- a/src/Core/Actions/Typings.ts +++ b/src/Core/Actions/Typings.ts @@ -19,7 +19,7 @@ interface Dependency { **/ class Script extends UpdateScript { constructor() { - super(ScriptName, UpdaterType.Projects) + super(ScriptName, UpdaterType.Root) } public async exec(rootpath: string): Promise { @@ -34,9 +34,13 @@ class Script extends UpdateScript { const typings = dependencies.reduce((previous, current) => previous.concat(current.filter(c => !!c.typings)), []) tsconfig.compilerOptions.types = typings.map(typing => typing.npmname).sort() - await Files.save(tsconfigfile, tsconfig) - this.log.task('updated types', tsconfigfile) + if (this.testing) { + this.log.task('updated types', tsconfigfile, tsconfig) + } else { + await Files.save(tsconfigfile, tsconfig) + this.log.task('updated types', tsconfigfile) + } } } diff --git a/src/Core/UpdateScript.ts b/src/Core/UpdateScript.ts index 18cfbde..46d8150 100644 --- a/src/Core/UpdateScript.ts +++ b/src/Core/UpdateScript.ts @@ -18,6 +18,11 @@ export abstract class UpdateScript implements Updater { return this._name } + public get testing(): boolean { + const env = process.env.NODE_ENV || '' + return ['test', 'testing'].some(value => value === env.toLowerCase()) + } + public get type(): UpdaterType { return this._type } From 7f956979febbc53946d7c281dffc8f35f0aea74b Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Wed, 15 Nov 2017 18:15:57 -0500 Subject: [PATCH 30/35] fixing import statement and npmignore --- .npmignore | 2 ++ package.json | 2 +- src/Chest.ts | 3 +-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.npmignore b/.npmignore index 618e05e..15b3f50 100644 --- a/.npmignore +++ b/.npmignore @@ -4,6 +4,8 @@ src/ *.log .npmignore +.travis.yml +mocha.opts tsconfig.json tslint.json yarn.lock diff --git a/package.json b/package.json index f2e0016..dcb301c 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "license": "MIT", "main": "./lib/CLI.js", "typings": "./lib/index.d.ts", - "version": "2.0.0-alpha-1", + "version": "2.0.0-alpha-2", "dependencies": { "chalk": "^2.3.0" }, diff --git a/src/Chest.ts b/src/Chest.ts index 1a6f0be..cece83b 100644 --- a/src/Chest.ts +++ b/src/Chest.ts @@ -1,7 +1,6 @@ import * as path from 'path' -import { Files, NPM, Project, UpdaterType } from './Core' -import { Registry } from 'src'; +import { Files, NPM, Project, Registry, UpdaterType } from './Core' export class Chest { public static async run(root: string, ...args: string[]): Promise { From c92da0001865ae500c7d5849abc78f7c9c2c68cc Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Wed, 15 Nov 2017 18:17:24 -0500 Subject: [PATCH 31/35] removing nyc output from published package --- .npmignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.npmignore b/.npmignore index 15b3f50..4b2af47 100644 --- a/.npmignore +++ b/.npmignore @@ -1,3 +1,4 @@ +.nyc_output/ node_modules/ src/ From beef3b8c542b2da140038599f00d5f3b2c95163d Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Wed, 15 Nov 2017 18:25:59 -0500 Subject: [PATCH 32/35] updating readme --- README.md | 32 +++++++++++++++++++++++++++++++- package.json | 2 +- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index da173d5..655d3a4 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ It's a chest. With TypeScript inside. -Actually, it's a set of tools to manage TypeScript projects, whether they are stand-alone or workspace-based (either [Yarn](https://yarnpkg.com) or [Lerna](https://lernajs.io). +Actually, it's a set of tools to manage TypeScript projects, whether they are stand-alone or workspace-based (either [Yarn](https://yarnpkg.com) or [Lerna](https://lernajs.io)). # What Problems Get Solved @@ -28,6 +28,36 @@ CHEST will... - Link `@types` dependencies as a `types` array in your `tsconfig.json`, explicitly listing your declaration dependencies. - Propogate desriptive `package.json` properties down to child projects if using [Yarn](https://yarnpkg.com) workspaces. +# Getting Started + +## Command-Line + +If you plan on running `chest` from the command-line: + +```bash +yarn global add @beard/chest +chest +``` + +## Project Package + +If you prefer to install `chest` into a local project: + +```bash +yarn add -D @beard/chest +``` + +Edit your `package.json` file script to perform a post-build action. + +```json +{ + scripts: { + "build": "...", + "postbuild": "chest" + } +} +``` + # Supported Project Management Tools - [Yarn](https://yarnpkg.com) 1.3.2+ diff --git a/package.json b/package.json index dcb301c..019af49 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "license": "MIT", "main": "./lib/CLI.js", "typings": "./lib/index.d.ts", - "version": "2.0.0-alpha-2", + "version": "2.0.0-alpha-3", "dependencies": { "chalk": "^2.3.0" }, From 10fcc9f51746cbaaf6a1c8988698a98ca12aa8c9 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Wed, 15 Nov 2017 18:27:52 -0500 Subject: [PATCH 33/35] fixing version since it's still the same PR --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 019af49..dcb301c 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "license": "MIT", "main": "./lib/CLI.js", "typings": "./lib/index.d.ts", - "version": "2.0.0-alpha-3", + "version": "2.0.0-alpha-2", "dependencies": { "chalk": "^2.3.0" }, From e17d2ef6d7eb2d36b20b987ffe093e1554c5ae11 Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Wed, 15 Nov 2017 18:32:29 -0500 Subject: [PATCH 34/35] fixing readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 655d3a4..afd9d74 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ Edit your `package.json` file script to perform a post-build action. ```json { - scripts: { + "scripts": { "build": "...", "postbuild": "chest" } From fb8b0ac151ca29045215894a48f603923cef45fe Mon Sep 17 00:00:00 2001 From: Mike Pham Date: Wed, 15 Nov 2017 18:38:04 -0500 Subject: [PATCH 35/35] fixing npm package files --- .npmignore | 1 + package.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.npmignore b/.npmignore index 4b2af47..3874581 100644 --- a/.npmignore +++ b/.npmignore @@ -1,6 +1,7 @@ .nyc_output/ node_modules/ src/ +testables/ *.log diff --git a/package.json b/package.json index dcb301c..019af49 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "license": "MIT", "main": "./lib/CLI.js", "typings": "./lib/index.d.ts", - "version": "2.0.0-alpha-2", + "version": "2.0.0-alpha-3", "dependencies": { "chalk": "^2.3.0" },