From 5e2b1b1ca44dc4d8b0908e29f084fbd3c187963e Mon Sep 17 00:00:00 2001 From: Moises Hernandez Date: Wed, 16 Jun 2021 16:35:50 +0200 Subject: [PATCH 01/17] Add docs & picture of relatioship between models --- README.md | 36 +++++++++++++++++++++++++++++------- docs/erd.png | Bin 0 -> 51532 bytes 2 files changed, 29 insertions(+), 7 deletions(-) create mode 100644 docs/erd.png diff --git a/README.md b/README.md index e2ff61f120..4fecb1b4ea 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,20 @@ -# Scaffold for social media app with Ruby on Rails +# Social media website + +> We build a social media app. +- As a guest user: +- You're able to create account/log in. +- You can see “Sign in” and “Sign out” page. +
+- As a logged-in user: +- You're able to see all users list. +- You're able to see selected user page with their user name and all posts written by them +- You're able to send a friendship invitation. +- You're able to see pending friendship invitations sent to me from other users. +- You're able to accept or reject friendships invitation. +- You're able to create new posts (text only). +- You're able to like/dislike posts (but I can like single post only once). +- You're able to add comments to posts. -> This repo includes intial code for social media app with basic styling. Its purpose is to be a starting point for Microverse students. ## Built With @@ -9,8 +23,6 @@ ## Live Demo -TBA - ## Getting Started @@ -70,14 +82,24 @@ Open `http://localhost:3000/` in your browser. TBA ## Authors +👤 **Moises Hernandez Coronado** + +- GitHub: [@Mhdez221993](https://github.com/Mhdez221993) +- Twitter: [@MoisesH42060050](https://twitter.com/MoisesH42060050) +- LinkedIn: [Moises Hernandez Coronado](https://www.linkedin.com/in/moises-hernandez-coronado/) + +👤 **Ivana Novaković-Leković** + +- GitHub: [@githubhandle](https://github.com/1v4n4) +- Twitter: [@twitterhandle](https://twitter.com/codeIv1) +- LinkedIn: [LinkedIn](https://www.linkedin.com/in/1v4n4/) -TBA ## 🤝 Contributing -Contributions, issues and feature requests are welcome! +Contributions, issues, and feature requests are welcome! -Feel free to check the [issues page](issues/). +Feel free to check the [issues page](https://github.com/Mhdez221993/private-events/issues). ## Show your support diff --git a/docs/erd.png b/docs/erd.png new file mode 100644 index 0000000000000000000000000000000000000000..04b744e2d419bee12751e51f051d707b398558ba GIT binary patch literal 51532 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 E4}o;70ssI2 literal 0 HcmV?d00001 From 3e2c6184dade69d31d030e65df030b720e317ef5 Mon Sep 17 00:00:00 2001 From: ivana Date: Wed, 16 Jun 2021 16:57:15 +0200 Subject: [PATCH 02/17] Readme fix --- Gemfile.lock | 4 +++- README.md | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index b67d4b3306..5532c5def5 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -89,7 +89,9 @@ GEM marcel (0.3.3) mimemagic (~> 0.3.2) method_source (0.9.2) - mimemagic (0.3.4) + mimemagic (0.3.10) + nokogiri (~> 1) + rake mini_mime (1.0.2) mini_portile2 (2.5.0) minitest (5.14.0) diff --git a/README.md b/README.md index 4fecb1b4ea..b937ffc486 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Social media website -> We build a social media app. +> We build a social media app for users to create and like each other's posts. They can also comment on posts. - As a guest user: - You're able to create account/log in. - You can see “Sign in” and “Sign out” page. From 1605767e3d126dc155c90068f89e09c284d7cbb3 Mon Sep 17 00:00:00 2001 From: Moises Hernandez Date: Thu, 17 Jun 2021 11:16:30 +0200 Subject: [PATCH 03/17] Add friendship table to erd --- docs/erd.png | Bin 51532 -> 0 bytes docs/erd2.png | Bin 0 -> 64612 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/erd.png create mode 100644 docs/erd2.png diff --git a/docs/erd.png b/docs/erd.png deleted file mode 100644 index 04b744e2d419bee12751e51f051d707b398558ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51532 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 E4}o;70ssI2 diff --git a/docs/erd2.png b/docs/erd2.png new file mode 100644 index 0000000000000000000000000000000000000000..ca46abf745e5fbe2d1bce90b12c49eaf58071c13 GIT binary patch literal 64612 zcmeFZc{r8*`!=dc5|StxBU1<=%AAB`$~~Q!H^_L$gCtY$&|TB5;BD-By)&N zWq!}q^L_U5d-w0%$Fcu--~HEKM@Pz9>t6Tz+@I^Z&g(qS>kd&@RUjv&BPAjtB0sMv zr$I!tGm404yB*1P{HBS1mpOjyaFIQ)MM6UIWk~HC{!8h4PR~`-!OGRc%-NDi)7s6| z)zbO$t+qWxL`R6u%bn5k?3?blF*?xmU35;U_w0jua%xJN`drq7Uo++Nb1yh#=ju8g zd)g(N+r@3*w6ERvoKLaARMj(X^~I;TSNnfxkkfqKAHvFgOXDi}T{<>7*^=@46^|rg z-gE3ZHM4uA>P9RcpN>5|7UMETrfDufMMNY^!t$GW#HYymt~U|U>t6aU67_4m2lt9! zjO(?t@;Bf;IQG%OR_icMorp;0+It6)Ge28L#>fxOe>heFpi;Oe^)3mBPlE zEz#=O7AuM$d;dO>qAKI}&rAOONi-t*_nH6e=l_>a{I}2g_ZR>E{BLLVzu}30zwm!M z)c?UJ{@Z8$`-^{n{{LU}MqJ%lnorcB^|zG%Zb%tEQ%)|iCXIt5rF4Hho2`Uu>Hq%z z(MJb6&(zE}-nHf;M{Bfs3VZDYW0g4$Y?!LE{C&ZD2meL~o#PH^M;Yb~i~R&RA{(uR zJ4k{_w-KJcK{_9=?JQ*2d{AiK(9N8Fkc_x)>*Sli&k@ZVuB^0_ud%JF>HOY(HvXG6 zk5R0ppiqA5Q@ryVyX%inhogwpnHS>SZk$~+Jn7Hv@5dBCxh;8WW=6$Cn~R#Jrs~xz zJvJ)sd55ltwRBg&_&bA?1G>F}zt$;H(U_`-nSJa%4{JZm*qIj7SS`fMr#d-1a|=}#NJk9X8hd(r%E-v*>CxUl zY;oV#wiCl4` zik*{F;oP}`em4ujSdC1EQ;sRh9A`&A?c26(+ldn=hK7c$19xQjw{7ZNcK`X+rt>T# zK7lUBp!mb{x@TJ4VR!G!9x&Rt;N0%N6Ne8UUKndRD@jE3D8$%9r)}GG z;5#1yx-bc*e0!RbL1GS0&SWvS4_42WIb58bSBJx;f4m{?u2p+5z;&_3q_4yH(VI7K zP9+l^sdReg= zF%%>ucf!MyPrGnP?YiN;V}tXmyu3Uy_co%G$~pPnrZW2$ez3(fIc>#n$Wq6LWtW{j zO2LZA%%F?y$@iG-*tJANWO`gmDrvp9lWbanBl6t2bL0%C)HAg@M&xIGv%ekNuFgJD zeJOE2-;pCnBqbS7?z^#0OhlxH6>_QBN_sSp5^KEavK5qQ42_ zHO+DSdj6llAo{fZ)mAPC4K;O&0BI`WkG7G~y{)}bPQQQlfBpJZA)IMtb+yE{>qCA0 zE;o&FY8sj-DLzMT88d487lFqQhPs)pX4jjah;KOYn~2;ZG;e3=%iYv7Sk!mBPUK=ICHYF4b>%%<8Aoma6|ao>gw{$7u{SPlXBN%0s?LQ{fW_LG1D_M z{iO~jQ|#hmVo6fhy%#6isY2K!CHw6}4$;uG$CSHG1%;DUh!JU>{<=jtRo~MWl4TFl z(sD&9O$ukFDIYs_%%NtZBtAY~kN04R90dgh&M_<`#AdL11D|@O`Eh~&mS2@|jsMo> zVIeDPVLI9OIr@dp&dyjoj~|~h(=Nm$Nq9Ne2JAsx+$JX1$nFYwaNMxOsNB^Czr@vx zm-gR`;?aE>l(NEfE%y!!sV1Cy(lh1%XK1&3qtKO)&5e!vRo+WW zQ$2%Te_q9Vgm`$TE~0c+v!3$=L^M9VjpQT8*=JC_-8N4>nHFmX0*)VYih z)_P4XE!XEqLXwl2>jb8iZ^|5@Bq3pu-dOD1So`h2{!4)`=Bi+R9j1ZjW2xo>Zj(jGPpAJ=H1r7CZ?nZ9DOx*Vgj`Sq2B zh=>UJ)QHyc;GiI!wXenJu5CmsNM=9cJ6gk|8!gD{zCG=Jw=mv%{NUc?R{n*q>FMc@ ziQ@Q}HWP7=p9x7xQqCia5sIHGJRCygWJ#Pn{yv;7Bw zrx^?9+Dxhc=E^uu_@xlP(W@73Q{B7v9xSr&UtL|AnqH3= zbwGZO9TT0}jJABqr>>`GyGEoXM?{*HjRqt76nj} zwdjiRs>F+2L$GD*=1ci3+xhwV85w;=Y~ax2qoZAjpeUuNM~~!EZz-ky_)^M$tcy;^ z>if&2mFZrgc-^(-nfSOk@1I{!KT&@i6?M|-`&(R-N2L$V3m(5y6x+#es=NDdM$6EB zrjedO6Xoj-Az5Sj&dwiv&`S|R=zYQ7xnCSDn-{bb}+ou^+Wn^A2PIexk zq9P`zD{>kC`2PL-8#jpNzvr46NX>XyM{pge6S&q_6f1Hqt`VhA*@!Qub-eQz zr{iRe zNpfdbyGC+)krx-N2H%f5$MBoj7w8ED>~VJ^B0#_!tLF(RUn5XF)Heu$ZcyrhR7RXm*REa5eAxJYqaUK^ddt6m|Gv6GeZggo zqZ;C{xp62eF0TCg+VYDR0^WZr-=5GLM#)g=H@G74`!F3vh@82L(dSv(qQNEkMDa#b zz@TFH#NKuJp5A#~;lI%42WOz{8Im&BNvf>v-$vU$KUe3{(A2D}t^JGX)ak!%mU?qZ zN+wd?;!(Y!s}O#4HIRhxJ?H7QB>N`!E)l6~@24PS1EL3mulexSi+hN)nTFKS#S#7U zZj#g}BCWE;#YI$xRHkWimBcp6XV0I%d;2zpiHK+=mv8b@S>eVe&ykvKGK}>UfAk9v z3m!Q_#HsP=@ujO|=py;a0T-0z<=QVS~ea0L`Hc2NKKdI)@siLv)`X>OX?=qv3acud%f?sTfZItLwEr`JC9DticCzV zTUS1{U{P75UD9*z+el+14%XP*Y+=&!;e(j>qP3EelC!g5Vq|o*JpC`F(y_mg6$_C4 z?VIVX_{a1~NcQ*WPX2fsav+>p`u^R!cmr!df~1f8>f&V0#&Udq{_G(WUzW&55*7)j z*+?}h{THTh8Y4Nc87vUppnUlF@hgwnfmDU?&DE*=bhTs=TC(X2h&}G8yBjA@pFYjP za+AsawV2=fsob>6%F1j0eWebAUD>)8*h(AANm9R=@Xnq6bQ)f{B>_rUd;spV2EEmj0wIGWjgAwzPk|7X`y9nb~~QlAAc% zq^nrs&!7DjCVnfU&(25Y>~IW=7x%E=m2YKb1-SS94$%$b?XCMV%m7}oi6tZ|MefCs zccu9J{#j_%LKPyHYfy};tQmUn_(buT_-y3?W@a@Kz#>WSMbFhmn@A275*CzLDw3TU zq8Yy*DUIITv773^0ZT#Pw%lezGUBs9D;w+U6ZuG9**dwa6RF`0jEuc=&owfmj~j}Z z)doB{8w`-{ljEgIc-)s`o$O5CC%ypCG&wmbB_(yK!W~4!v-&tuhos2JRE*U)nnvd}(^a*t8hxb(-@Li0x|^8z;Gsh( zSOrd_*iuOIv(;<%j*bAeFB^;tu>Z00qFKUnatP&@@pJXRmAcT$I{K)y?cVXD?Sd_8x@lvN@d5Ykp5sDHL5;}QC zryak&zIAK67$XD2`kUR%*2R5Z3uC`l*7+`#+x3@sb#=J`Yy>>$ExdxWs5&3Xfs$@q z<~$nA?DrXvMeOY_;KVqQYX-)Cg>SmqSS;S%J8WZPBfa_O@^PD*4CUJ`~I>h39X-k@0x(>5~>6p#0c696D4t#0&zwKshzyS-cLF(u$seT(AtcFB=VUaV(e(#jVue0gaJl<+);WU42>wY4?(A21o$e*j5~4=sN#)jn{BZ{ZVBQ#*>Ck&_;3HMp6+}T zY4_>R{#$ELQ6{&F#wr)v>ORqT{WCX|mzNhnDJ@-- zlf&zM=tTc#MCC97NiA8bzsg6HMJ~Tb`ugf4%7;-=qd$MDP89-77X@2*1!5;yS&ape z(`QxI&13_86Y-9S-pCUD+o=GsRzG+^$;rv-;4r(gFy0xjjZH$hM6Jov()|4V0s@ZH zp9=yW;IY2GKH3yBK0fZ_JZ2N}P zOSH}{@uKN5OP?Mc)AauR^Ez@4;AxR{d+p$0%?I59Q-Qe^-ypMz{6(f*e4Dz4hT!8z zDM{=Ht5wn^B_+4E{0F67IItY2pCDyUD+igqGUAI*od___=M0!|60|FKYu_m1aB-g#|oj<$u%tf*w|R0dItYMELifT<2!eU6$wwN_7`t!(ONY6@RO)}mqC&BMRoOWGc(s*q;FyWffAT3GRVz) z^|$7PHRQj_-a+(YZk>o|jlqC{BDwVtY2fyoH(JLHO&sSuCD4FVlje>W3Qg+Ph#a~? zv_!*rON}q)i%~n3EO#&KoAHGeU#Xa;<3e?(PMvCw7gb}80QHuIE7;Sc%SCPfr6i2< zsYd2Oeq$p&y;H6eZJp_AolM@`Q9sZ+70n8>$Ypm$mnGDw*net!au#i)bM*?$TjEX%Sv3=Ki-pBAJ>KP|B}Q@g z9GN4u5}uCk?(TMWc1}*e5Fe91hl9-a#w&BEskI^^_XNs{7uRSLFcbOCg`5{8#p>j| z2Sbq@v4v^L0E>a!UXL4uN9x=>#OP1xPr@JW$dDxse2R=e8b)boaQv_b531Bd&R9B= zDDEP3uqV) zsW$$b zncnaZF3HvBjRrdMPG(_|OYhVt5NYOuv7~$V?qNYjuqxEg?xG_j4l>)h{iYu8m~$Dr z<@8Rs>Cf%v1ta6*;m9$l+9)x0X5|EQX2e(e>=_PJ;Gbrz{UZCzENz0IhocLl4S4+gC zl1)}y^*tI3ldPDPuWST}P1(fpOcbee@%9I|tvVDqSkMOL=>dRVym;8;lR;_UFHZ^a zE;a2Z*$o2smb_oqi93}Uxl0At9oq`z| z|I^6+-<7Bv#P#L{=)2< z=H|X`^iAtVE!S7my@jp*sepvjLW4P+uC1XEE*?rIQE^d)*w$%U;>~+l?nGods$m zUE<{==$M~)3w!Soh;zc@2NA?00-KD7x@gLl1!Iaj7vSzStLJ|oL4ko!{D^FoynZvk zYiI!WD!iGHIH6{+2SUbT<>J%p-jmMO{-)Eqc>j9`w@tbNSHEm-v|R^6~EiFB@>g3|G@Qd)sOr<|*_xZ(9h5O$Ub`Z(Tt&5&Q*MxH< zKyQ3>PEHOQ%{=|Wpla7&-_Idh(_0h8OI;^5(9oo$q!1fl9=!gWG527Vu|J-#GS2Ur zYE6=?Fnx0?aPJ{xxT1j`8Nh~J`OnkS@dUksPSqhMCSxl_XjgYaLJBCXXxK^x515XE zTQ=4uP25^vaWUZF=Xa>TOCy$O4@6Hs&R{7(OTr?Sct7_k=xJW#NvL&qg0FL6YwB#OBK zZ~02qxZ9Il`(k67G3;SFZX*&OCO-@|OW$UKC zb*ltb=^rnE`h)QBaGh)wB_;1ab5E4g<`))@24r;EmYDbV_fIA~eaadl=L`X%txa9_ z4iuaV7xt2pI=i?uH8rKG>@>&~k(As(BM(@X9{Q9WJ1hR-!|y+Te)Q{B-(Y2Bm0B5z zBwZEjcqbevd(ldu(B9?p74E1HJ9bkbOMI{p%+xZ7?Gm6RD|(W-=qvUMZ3PXFj_YIx zI~&{EH*cO;@u;L}?3c~)uv+eEZdNWf*jSsbLE!~bG&pknIAJH^tJ*^z!&>DIK78;% z{fr?id4ZjF+e4&eYhif>1t3d*lsUJb45P^Nmv)HSf5qC~ym=Ez6_^1E1YKB=`=6-B=x1-;x|PGTl{U4KR`nLO%anY^LB>-eX-*B7k@)tRT%E#vG*>Q-57{rH zX%(_k&LwwP{PA}6e(Hr7zILBT5kPszp<3*R{xX*oYORLDZataFhCN)Vxr6`=792@{P1m*xO`=VOw;}e&EeXl2IB(pVJ_m7r7 z2eCNsSy@wcF}HF=r@RF{&WF)?utdbf#2|UaE;U9CEv!)ZTQXiEPz6&{;+7vC(d~0^ zy^c+wl$=UUTK~O16rmcEn7Dx+er#-vN|uU>YV2d;8X^qP%;Tp~-+>NO0gz_*4-1U} z%0+Ee6d5EWBtTNA1Uy0L1AKoftGa*9IP}gP0Ja855z9aO#T^DDqLdJm6Stjgu1D*; zm6eqtT-215#6Ym1IlX-Ovdw$`!WT+u-XY$37S2AC;F`Z}nUtrJ-q6P4{h2e{w=W!* z?1d2ex%IJlhoFFf7r*Pf44{T~JKZ;Lys@z{nlEsYQdd4E zu$&E|lznUdYp5>RMkvlWKN)p7<;-nk`(2PyaEj4UQC(=!yepI2yhUP_aZDyArnA8m z>;Xm?lcS^4tuxf00$c<=k8s*XlQ8AwV#uh@7}B` z@Eb4v;Nf8rY{FgG685lZ6jJ$h*Gy#&Xd;lGI3lY)c!Rv`>FFUf-o-4H7rUxGkCR+$-)^oNn;7v|9{rjX8Vep zIy+t7-q~MVCIwoo2Cyl$eFFUg+8gAKjb9DS;Xv;AWRNS9zm>oUiAyTHw)A-M zRUNu>4sYyJz^=&E%{L}cQDEb99oRC?;tUs%j*Kcjod&C~Ll?bNp_AJFxCL@T^FZS= z1k6spR6_o)mwJkCWJ@@c&zB}m;}I5ij%hs;IlK2UL82~6I>)-d>IFLa>!7&ND6_n^ z5N!YbQa9T5miskx=@f)$<#OLu*SG;<&5iHF!(eiZR~>mA)*Cw-ti0~YUyfDyoqY(f zyktc^%eIl<+aR@A%PNuj;KAtL5BvWrpIar{EZ*GO)&0Aspm(6D=_+UngfXtQtCQ1V z0aKY=$ww#}2ag-LLYe|fLT^t{5`^g@8|7y8QZ420(Vl6&2p*s2Y(1z|Y)%aYHSwaM z{<^x`l9xXV*T>|QM;uk4l0^kZ8Er~BJ8}4VWi9$Lnpgt^+z^Vzc)wz z8pttglT6S;-u11+zX%k3;T5&i_ETQ-Bd=b)LNoxsLd$r!`Vh^`C2+MgTi!-S36YVS zI}SgM6zMRS6#$D|%GXwWRoDBPt&qj(m?q1?dWt|<&d>DxlZu?Kt_P;16-b_3`j};6 zZEd}^xp9Hn-jbF-N z7whdUWn<8ML%R6zXYd`Nd&|`F#*ro_tdXY;<~{co+nXYN~|9 zI?w@JHnwNZ+$=3EUE*sPU(n{J`LgtLl#Pu|*!EKf=qILUp=oReF+JmAD!0iBj;lFSG>h0V${xE$n%1uX!9 z0YA8?!B-3;J(YM}sBoWwX{CB&*)UfJ*y|y*wDEn+QUrz;NQaU%5YbN{Fl@$8WRP?F z$32~iyxNnO#(1o*uI`%HAxhZ^N?+%)uVZ(kDd&G2r`mqg6gztdF`3>=i#=;{H{+n1 z^gtRGV|xb{;j_fb%6M{TEM1s97qz#ycloPVi&H(b;Bi}8T8{Jbeub2Qf@^bm=>jZ7 zKv!S{2y(~Iidh0(1@~GGY$6+yA0I^qE;-;4kouy0Vd#@4T1{^ zuA6LoQipA%HtRiD>9v4MvFKfeiU-zg((;UD(6iEG1SOO}vt5R4R=qyoBqqxJy6I9- zpE9K^uEfOK2P|ii#Q*#n-uhj$1>S^*kMAeYLx*iKSoFst*XVM2mOp?A$^)%}NCyG+ zv#*%IElzGYpw#T&zaKdh%D*)TO~fJuGu5r9l6l$OXTfWEy#nbJmE<5y$8+lG1)nE% z%Ymd{E}s;pQ}NnI%#}DOAt?#*06Zbk!sCdD0<${e2t|v9OHo?fX)2V9+&X+QaK80^ z>>ZAaIb2@o}l+86EpBWPBq@o6utfp$1qE2Mb_LZl?USuJjBEh=APG zm0Vc1&YwTeqm!eD@CI@Q>H-aR>|p5i>(?9ZGxAW95bt9G&S0dcH#9Pm@SHPUH4ZZS zT+0y|l6wVIQdDU+V(Ye~>WnM*i>bqz(Fs#Oy7j3+fbfRR7@HO7O;o))$OAexQG{*} zfp9vVMTZIz*=WIa?AQrf2*}DDn%%kd2*Z43&g?@o()w1xdGm0$>#hO;_LNLFwB z`EYL{rQMp1>indS4meJkBQNat_%Bb#_S)r*v_vk8=PY_(KYu=CX>%4DyhwZ~7_5IQ=o?m z*bqiv>hs&)!NH+KV1w#Gw+qfmHNCJiw}fW;$Fexh=h=G}HId54kKKcuqhn|$QiC)L zS)s|KeO=yv^Vc^P7(SZ;XLFNvbu_u}@QCoAAk%E}>7QF!?}*_bt9#_9aV=ITxAV}o zUEJ8q_IB)ToHZw3Uy8}yHnnjx*NY;!P9)+48B{F0?b0z##T2H&`tI%}bl1&L1-vBNw=e(CRQi111nM(kd;8%gT(&QKFxoABvh+;x&wXhF;?;)`NRTvYXi;1-9B zge;o<`<=ipphev(nR$yk`0n*37cEOMJrSAz z6&ttF0&52-B&O>fT%S}Ie|4&pqvffXt-dM}zlVi}?CFkT6?CI+t1tJ^L^1eva@6nl z%?{i;vixS$d1GTk-0g>4tI+aQV~{$2*`@9qe}+F7L~YC(8Z)yQO?+0Xo2J#*oOU{^ zy2LdrP~0mP3xBI6I12^73|-tw~=2boaabR;eaEheN%x+A1*c4qWEO!Wv~NX?qPZI-__kpFe-Pe*8noCL~At_uUxfn6t*~EZ<;cNxOnhwQU6ou{SD7R%kg#EILYagA!o1+sefu70mG>D=Ya~l$K7IPMqv71yQw{`ctz#@m z`TuH`^{%xLW~u37gM$9S|3?(BGXHHN+Z|QLTOG6L00FXBp){~l?GYzXASg9+3k#_$ z*C3#(B}q)8n!!FQ0^$y$MKK%?CN+K+qIqF_xpb1@1uMF|h(}&_eZv!e?F2`;Uv>d_ zl8&J;s~3+S(+0}of2ymtyDq?yRYYfVe)TGWi>n4`vHbWOAJd8Aj`}fy#grs*AimAQ z%KAOtp*mAJk(P`&Q1*mb?M~VE1ciO(OM^i3mE`O1x|RC{L5h(Yw=_533k?mue?RZ6 zq1Ngrvl`8t8y^+jB^y7j6>`B2tY_tyI%T)QLpLy?cJ1PcdHPRRa4A3@HGTXD?r;&Y z|9J(y-|^$QK+9lys;jHJ1L6KCeEAZ+$pK2r2eGlSU^rU+HzThP19NC|YXc=1l-TL> zi+g8kWkJp<%ryjP51@pA^B1u_)ye*X{uO%gvNm*%M~|pIJbq)*+Dp^Z(y+x>{`}GF zS;l?=As0+`xb~y+`SWGh*GeiXd>~I*8|u5em&ma;HZ}RccnZNQoZz`Q_?DveU&9UPe13uk6Nx{>tLHfKJ_5&u_~h37_{3u8TNYDJ%aTfc7@jl< zZn&qFf_7S$_j3Kud|jhNClY4I&9|lkZ6Q}$lb{Yg#Zq7oqU@jabKEZrqPHI9HGOqG2a3}*N!$m?~`U*ihPJ_?5@;zUArI=Z|n;4@?E;>L{ z0f2Tnd3nI3?+}RdT`CfA?c5j#UOAo3)dBG&CMK4pm4zcf28vQTm(BiP2|;$lM$kZ_ z4g;=^j-XFo=GArlW8sq;1daJtJZ(|i`iGzb<6Af>`0~mIo+mo#uh+Nzu+k$ zvJ(dcr;>aLve7eGeNJBORz5;`M~>CR#H3F_m5UkxZyccW^VSR-JS<0#rrw&fVjTLQ zZ13uaag0lMKo2#If~X}UBST(sEq};UH@?8Q`9Z9a*RZ4+EYXKY$4)X05V8zALNJuS z`V>M0Juf(s3u|IY(*AxQ6HY^JtweMad=6N!{RD?Ma?mD_ac0*KD3)z>z?65|t(8?& ziYaVpQr)n3Cw}}8bNitMFBp6s<*$0cU%k8nAGSM$aVx0$aL~YJ16|Ht`RQ*n4mP&t zMDgEf#%zn@az_Bc5qF&I?1`sctk8-V6ciLuH1XzWWSU>TOaT5M9k|u(`Kt&Tb=xNK zl0J|W^6*_69@-#%bi7zU7~Gwpvi=_MnFVl%AETjx6Dd?eBH`fj{Jb{|kC@?jt{nS) zY6@J_pdi@+28M*_Xb~tE;AUH6g@Q#`!Q;Xp`KDYY-){ng190S6H9tO+stbM$UjZS8 zs))sD9(6uR*8<7wlWj2~8X_vFbOZ(B&ts-9DkcUWHV7^OPzIoUbIN3kHQ;Ndm(Yn5 z5p_e0Ke~7%Bz$qI0S^%91S0{sEr<~aXWcxbJ*1@Ee0-ZYLols>e5F`MKz4UuKcbs! zu+*-=j2&?=@v<--n$q6x(!rW!Uci!NH$?Am^x&qoY9l*Uu~6 z^}xMa+?EyhK~9yyn$Tn^*qfa*4x$g}9bd+XzLq{L4xJY+HH?u=EYBcy5Kd&zp57Y& zn(**ev{a`U?klCOB60@(x31^ve8E-*E+O4{3kQIGUJAY~F0P3NW`8mYisudQL!BKR z=a!d0e)y0T>XRs+`eg8mpfff}uhaz;_2*|f2;3DW1>CPMMH4c>AQ+&_Zgfb6381}^3v7IM!tOg()nfPo?%ClT-fI3iIMo=A485M!U2lior!=i)uU3$84Bgo!zo4OMB~2gY<;TsQ}87j?eK#7^3i@ zsUQCJ*)QCVICVvdjS7kE#fukUv5`?5+S@O(Mm$#LkW~a#)9Yy^Ot*(+QMcHj3YQ4m z$+*TZu{tg>ab{@f3<+xX<(>rh`)Ra61xyW@N^ct)I`1cnoPXZTG7C__BTcP<){dR( zeAJ+7Y+T$bXrmVuzXlQ0c_R}F{6$&aRqW^Wk3RZe(Ucyy3R3$q1ro+6-d$IB8Ho_= zCTN|EU$-$;)W-ktvja0Kv@8ikGT{AZLMy)2@$p}<-k=TPtkcxcAaKq|YQBFQO9tn& zL6dv9xMWvwa>a{{EUdUvTmVz6%mD?ql_lT-n9B}whc6|^*ET3-B=n8VZpyqKa-7~j zU~Gw6E8}-NNEX%w6Wz|HPK0i((3KAPCnFdxta@wHr?6Mz z%14H{-%L`z){Jv@8lqLzzvt#sQpej*BLcwyMj#0x!}prQ%<0gRm$;FYhVE~4G`eGf zhs(&|;>G>(j#+H=`qGLsfjV{G8Lf9?Oje@ykdUOzf;Cu|ye0KYtK~`RO#loU({|)Ttk;%#PB)^uItGyODB)c(?6&D$K zb~pjXDS~@^`HRCAteFH(?&$gIySM(_xX+P!kULkF-z;mn-ZeRSg&qKbAf~W=WJ{>7?Dr`DpDn87hG!Wxq45#O71NSc0 zOb*`Hp7{3d+w}BTu#EU5jE~)wdkQuh+wu}$Oi#^j5my*cOa)NLo&dBL9nOVo7Yb6* zq#cN?A|0C{ctksS!m)xtjZxhezP{`Ap@(u6;w@04P+eS3F@S0j#DGa38^$cs^cy5( zNoL;lf;%LPitv-u3fvGGJV927aDZ9@M`T)hI>GXdPV#boYtHW1IaH8X(}s74owt1V z@WbwOf`w*9(M6ZNfqLeGU>#gBQ6^zZ6oE!7DybgqxtA)I!DLT&_f|?CIdX&I zhiQM{J*LO`1FS5RB=7DsuFVbAp%H^8x!5Y%Pk!MGVP9|ST)2h2tl0?~H?Wd}-aC1_48rf#Md9C!br zIfsBA1|icxdWGwsY2SlKjTXzGpi|Dg`4g$0jMUa5Mi1sVo>CB$CH8F?lu}gRy$5+| zVFZNoYHct(EE6KwO?c>4B_RW)`w9jF*ypWUlQy95sKp5%C41=^h$Td^73kwScu~@VE+N}3DOfdDPSVe0nekTjL(Nu=blmB}`A}WX!UKTo36HTL&xMV=W9f8x6@$ zDADdkAMk?Ow#aQK6YvFkUp$JVDUA-J@ z!B1%&EiE=`(#fTR;@80Gg@#VH7#Q*CvQg=K3}>n>*$EJM(YNL&`ej1vWv||A7=~o) zT>(cN=t#i4s+ksR;U7!hP_jZ{`SOn3V|XKX2)m1(jM)3~lX`Q^i<;#h>#apMxIy5& zrGitMTOawc0<$!YzD$lW$YuIxGKRiVxd=D+T}qAEPy;y4 zBNUbPy@Poi7h&lXGh97F@hwr6^lhra+Gb`$urR@Qklr~-M!X}rHNDP;l3<7dpV(_R z_RAA+ZqX3~HXtt{te`SBu)Ux+FLblCuXtl>8q94*8-$4q7~hr-Wdt3N`j^j~9)F)y zrNW_UW=0s)CCs<}zx49ayt`&ll*~ZR~$^npSK>_By6`7EkZA^b@x9V@2bffJwfX z7+uEP^?9cF<npIoui$m*@T z%fykU`@DI;TO_=&aDcLp=cTgU0(Ek0spj^~{jP?Dey@!3mhNb#UH#nEbrK4( zu<$4JQ72CP3KJbj5oN|e#u3WT`BC$uP&RMW7&$#5B}x%ViubI9Q|sqojY)Qw&ZaSS zvBAvL6g>lj(XdKt{)9tk#L4)dce;)U3%jDvEb_{&oYVO=Y7=`bZ@~Zf{Ey2IwAMqu zEFRyfgBb}pp<$d&z;LGd+dIH#eZCtz{|*+;Wx{2-qJrF;t**)FLq=NFc-9yyXCm~9dH{rz64gcN%a-296LIybJfc~9QCvmoyk zH9I>yn5oGrOA_9YJ(W)Kcm6RWj5f%teZToB230rX*r=Yj)O2(Pi8R_rS6alb>r3yR zW%mw@QgvF=)^>Yse}u6tTcY;K0HJ^zYo9rDChCw?a>Fj7Whql|L%L%(dqKJAN|aZ) zPR>L2i(b(S?FbB$zwG7zk%{wgd@aEU1u)|lsy;cYWz~rPrVdZ;5Z;Ll#P9L!FT+>G z+kD?d7UPe-Cobf0D$5_3H&l7qz$Lmg>tsQ+^ykL$e7LtCDzc@G$LK$97>-&Qho;m| z$3vFRZ+%LM`P;HM@r=i6mJ280J`FFr^9q;#M1K7Ek>;Ls=5g+K1jdx`_(A;dEl2+S z`L7A{-=F{GwjkLJAAFx*JL}m^82SG@S9k&$AY*4n;={;DnA>i76W#bx3i=X%susVX z=LQL0Y;b%-J53|1vg7^VI%-E@>`;`5*E$&0sQAI6;tDftX z=dbUAKE)YYS-?5WryO5fRU>n9QSW1tI1+$v$q!|pJBqY|i%4q+Qx?&WSR`s(3V@w^ zlp5;l(8+sHR>COfzc|z&^E-g133!0QWQ6%4bjdJexVXC$T6F946nBB25Rbn zDrzN7?kFspqOvkTh(=}+lf$v95B$fD?I9zxs9`41clbJhApI~9JW+pt5T5x9Dk|h8 zB#tgFsVAo4_FBZqV-5UUI3aXNq4gd3`tB=>X;`7ZPSAgxchy?Azxd(Hg4gQ2#u6|x zGD0caS8^@8%a)L}(Rlm%qPefD?n9u0NIK~-kdU_wmI)0KmL7Y<&^;E6Fkw8*!vmeP zfcOHKJ2c&B841%faK>MVRAj?T@NfWG2JiaKQZ^YSa^6?=?#(rFS z(4$i;Pp1uMiKVhKU!P@_}H#~|X3$4<+*(0JU##5KqM?M)cphk0oQ=*wZ5?d?N|P|Ob@mNqTj?&{5?u4M#c^F z0aLE!1dIPvcbNPmTo46$`OSsoEeXH%Ke$r@IvP)8JgDiEvd=Uo;p&@wxSNbt<`C`S z!>8dkL>gd0VG4n0Z!}dRI>Nv zhk=dNaK8mDZh~5U(xxNe-59g~x)Us)0AzPVLVBT!tK23Mi7EW&E+0^+3HMm(=?TM? zZ-w%o_;*m+y{~Tp<6j^z;m5!i!QTpUa&4Llz&fy8flNUpz~)84ETv3xUPT4kBVwKS z_7FA-pekBp*o`sZx0t1!J&}yV`~d_Lz1AmJ)A*sW@dPcIYwXDZ`YrI=*iKgdm&#oy zfyq%Euq_a)nVplErg~Fy025BXYPL2U%+0^Uxv1KjM(_+yxFt?=NF{{?x*P3#iv zU-8xOnw8r1KJA>u`x}=ZATo!+(t#><+gNpzeUDa;K(~)C>|p^x4&VM&xXC7IR23D$ z=jr0U3OQHCz%YPiCAb>v1eyVwy>L5#zC6LrB~i|w;#0I`s8rswEvyX}iq}xLEy->( zX_fX==9pEMN^Z3X@)}==Rl_}ZF#Cc+men%_QxQ*;5@x^nqLe(~0knAk0GmogSeOhp z6%fD6%gb=!_VkqIK|7eic$z72$ zwJ#zpv@$Qu>+jCZIVO!y)>$@16NXp7!T}CUS)8mwAEc!80nO&r?Ce&@1^#x!EbK@E z;{o~xhW*=bC=VQPS^x73Sz-W$7GYGi@Je`EnkD>a1m6RU-EoS_al+?WBhVzXfPIBo z68Bj^n@C75plERSl}jcj{8379^d1iK0)LCQ!ilOJN0_ahY%F;VMB3TW0ix-wWBV2I}epXor12;T|RQ zuO$KbK`%SIxmnUa2kZyKS*wYS?S|yPm4t)T_<`+QY_f|`)G{(!hdS^PohUSd$7n0h zo~aAlTJOuizx58qj7k>y0`?E^$*}bGZ*O|3k@=~%mQ_TgBqik=azy}T zkQs<6Dc1>gSw%Uyos1WHS-|oV?x+G->G`v4+}GC^ZJK^`+HX%i1A~so$e3v5VTZTM z$Bmnwo*>At76fk*cHtx=2j(3AJd(YDQ9b->>?(TbcLK`e6&ctMyiG3w#i&A_LEggH zR=|S~A3nggMVfvGe@910cjP~Kq{P0_-T38;56oS{oks$2eF7=x^ZhrjB7qi(hx*xQ zT)a4hdub7FkCjUA>f*A7G<)3FOU~raPJ)!Y_Ok+m(hyD>TUr>=L|0Y8Q^c><0L8f#-=>G6esozwLr(+*K{+!c}4eb)yC=8Rh)e2Lc z07A^o&FxRd4x;(ekIJ+!JPzURJq!(q!y?}-+;OM(j&C`70jb2973`z}-V0mlf@Gbj z>S6)m#=>n&(1A(z?)AY9TWnM_PQVlvuq7$1!kb%FDm0XIN^6F$%`Z1~hFb=CGMF8EZuy;s3Dp_nB@3&HeS$6f^& zjCNVh%M)nl-Ipjs+t?8gV{-Z5u3qEW>EC7YE;7y1N?gzn+Q` z!5T3EzZuN3(ApQrs&H2Us9RfLRfKcO%lqo<1Fho8>PW6%&E;_LSj`w88EK=x{bg%g zsOiq5uflG%v@(&ClP|KgE?{BCy%u&Iy&|`{%+{Z#CjWTX1&+u9UL-#?AAy~?4Thz@ zSVPch?=y3*bb=Olyq>P%tL;5>!XP)A4=Ad^LJ;L9qJyh4^ zx;7hC`=l7=K`=Udj`gCgZI&ZTm!MawAz^14+S}PtYcy1jon26FN}o z5zcQ{{9N|v-o1&lH?Dcb`Mo#Az3yU~4D%dLKDO-D8O*D$-gJsyd2Q?nByf}s=` zvs})BE_Y6ZFDwbmC^MLN?ym=>xv{zwf8uhG7PoeG*Vr5HD&te<_LfGsH>yt9vA29Y z4R0@IwKL)7hn#^xg}mWD6X$hHq5ZJRW;(QD6!LgVXA}+?&!M%n#0r7?|Ap;a>woj> zS0f&tY=D@pvSI?IH=1gH`EsXwgXx#VYO%NHiD~3^iOal%U+-^bh(fi%HcBMF3Lv4v>u8h5hm4>)tPN-DWcA>ttFxWN-;+Z8?KVcYa2c110 z?WDPpXDf}MQ%Ip3^l(mO0VQRCpI_zcrxB*U8EY}UY-&qxt$JH}y>8bowZh$Ky9;c( zK%c_=^E!N3eDLJCqGObllCQ)Xh3HJevI4uzqRh_7NX_q+4GVl^{u|4w9!FNzI^Mm| zM)ShaM?EcgP;kgk8aYx>(95f@72wk8(*1KcZrG|f3xHAjf zz7}fa>MS-h6S#G#fuL_#swf(?T&r392zSl@`s?G`=rE$TQdVABU}Pj@R|F$fejp&A zh!qkO9jU`>`(3$s@$96PFy$=Z*Nu-BU_pX!uf1**U8==8xzKDgk6rKM{=e7Is9qoJ;j3kD?( z2i)-X0+H+mJdaptCbJr#ukw_}`8}phEmYF|_U`(p{XMiHFLqC&Mxk=07wSN>Q7E&gk|2(2YnEb#%#0zEM9%AI`+#>D?2FF${@R%D;o=XM4+ z`3$wSeM<@>m37Cf0E-U%FvrfE$%@+uQpbj+i`ff3iCa^~X!f~3b}zf9^D)dygYp5- z9vL^VWU8Y^t!EXXs^JRot`8nO7;clX=eI5<>lHa`;iv@MW=4}@QSmlC9`^$)NK8!36dj%Vh7BIRXiC0+zT#F%lOeFWF)^9#e*K-l& z(u|uYBqR{i*OJ16fn46!);2TlQfwfYa&bn+!QQSHs2?s|2yfM?iRdk2cj#v6`B~$1 zy6fc1dF#(uy!b?F-jgTsJ4*}v#yxw_zLaTD=JaG^HiadIECSd3<`$`E&zm=oUVA}% z{~Mzh9bq>qC|E>b+qiM#4$f5P4iN$7;n6jDC6Zsy{F%f^T(~d?=>-xEYhWbZueEqrub;OQ~Jfj>#RiCyu*BXI5 zhjP*SPoe54kDNDP$NuHJb|qhZ1^$3`rL?RJLAv(0n8qj48`XAfNQjF&o0MO$O=Zd| zN0fr}nOw5)g{XSVhSrWY^{KJ0q&%#%QV6?yH)MR@%An<>HZLwI5kJP7h>eMn-hIFNx2bRJoFp(Z?V>NYyY{NL!}00e z{z`RRxxV@1iQ?j7r-8aIk+owVEJ##|jas|;=%v_LR+hP|>o@2itM%&zCUE}O3PmTp zShW+Rd*-T346jfb-5xz5C3K;4ar*?0!Fqq9-O6P{o3+m zorlqJqhu+|DJCz>)o?{d?=P4^!u4O&P1AVsUe8B(6yzp9j9D^v=Q44TN6)m|w0g<@CKA#;SEpIR z>zHn0mUomgK}ilS^q1ED4@E2%iQJo!R#Gh@lD85YAM9< zY%A53=c$REFC#9p`DmUHzuE8z91Dx4=hQ>v6X;dfrwkk{FE3Db4yg&-Ysuw2aAmZ} zbA|99q`{T-ja-EKuZ41aw3cs^&5a3Ta8TnbE`7|JU14g<_3Nfo>=@brGZf!NWT+6W zm{Ys*>z|F8*ZbUgB^*n-yYH+Rz$%(*6f${wx5+Q$yNcYHEu$+W%dO?3+~D_weV_58 z{KOMTvW>kSZc$oRHRi@rZNmS=8=ZSUO%yMF?Z8G<OhIB)wRKlas*|?;6Xa$$KCW-=cckZ3LpA3R z5_v2-+xl_!4ky7ypSlOf?Xz?GnkGM!CvbK@#h3Q+S?xpeUwU^GS#N(NfYTxR+$vtN zIqQf{Z|MKtt;>x*!}X8+sidT3vFA3sEHCHh0RRt1f$BKRMbX_G>Fax$#P%;9G}%#c z`0yG^cg;($=7~IaTffD+E8<^!k>J9nSDBN1h6|#s6Uz6@>pxRU{;<4KWUYzM0b~mX zEbTF&m%sQ{)&#&+xuDL@sHf7>^gzyDzaA(hHB9GieLd80J#UfpAd8h4{bgn6 zmIp#<0VadF6I62YY8+>GTwFm$#uzl2;S2L(GhQ{7m6Zhr1ySWv?vnC2Xi%1_#I8BU z#{JV(cO+L~!22S^T|vju5uizf)CQ5j;)=KU0f~Mbdp5@e++SPzQ_A$wNn2k%?lbkv zv@0d}-09?NP=Jl_z?Z>`^7H1ob8FelIftBUyeF`g{V`xbl3>JnL@`WJa~;$>d1WZF z{IwZUw-P8)aw^S`>=XBu(x^IS%!NC5%p&qplp@c3{rM|q^6iBUgL4VHj&?&C|lE-nX3>=sd zcgeRaS$xVS@dkgEgWeEMOiI%x*ufJScaoENFvLivcA)YBnEuj8&cn1i_l^nmS#;>Q zh|xVA4&NeJx*!$XYp&rCi&IcLBr?nkZty zrKR-f3@x0iyP-P6NC>Hh_Lt2*c)k;unBXWJc1%(awSW*r6mH2k1tQD@knq$R^sw~l zQ_Gm&QtDok$L{*SC`;S>T|hRgDhM32sD`?>`9p5s(Z0hH#_ z<;zhszHs(Yiq92Aw(ywz3X|o_pXTKWExb<+kZ|?;_f@Y=6{&<_8kR0yN_R&K2)`14 z{d$c{2OiX{>}(!co!o7Ms7_`)T;5v{s+g0ghN2CuSx;1qS`rnIoS;gau>gE(l21gs zEQxbOs9)fL5&~p6zWVg)MQS=<}LN=2Ra0tT%7p4iuUbBO@cWkr7fzcaBdT`La8XpY=l>N{fqGai>oUXK&Gy zCo&RVl)cAvJ1(yt{UGig$_2UsQ6Y4S4Z=#MRxm??QNX4GiNP1(%5)0rs|RFd?mIU! z{@IaDGjII0(Ap}<0>uughyw;JTe9ROd3rT9!viwm)fN6G+rfcB+%E zke!p?jfbOpjCQG5aO}AiM+2jy>%g;&Miqj%&uN}gRz0WV>E2OmpLqC!qe8R@#jJ~WFc0&)J4*`-r9)kKgY^}hyTPTQ9iPZ(-2ylb7C|9~JaUDfkp=8L5^}iGDCJ5DlLCcU4sfS5`gnUF$P91XEM8^Qy=0fBqRJ?Yf=-@Ac~wZ*Aczg2}~;rzyK#yOMijZ(~#1R99v_O8@o~7%o8( zB{UpJoRM02_@a&i#W#Mq)0~4I85^DsIg#k~X;@K?I`7yaFjEgm`YBj35^k=prsjmN?=;aZ4i1{n znrPvyqlD;hh(%oEAl(;8oO-siIh&3!+x`CPEd~bUhcq=dN*=ynt6Pp-X^&uXxOFcX-<01RR7r`Rf5E>EULTkqWFqRaPja|J*X{3zH2ITBzjlOXukrRX zf)tPGR$W_PwWGFN&FxRkpvcHb-$98I5dbb`W@d45arGZ0<10ifjg*|;<7HU0dbOFk z`N!%W{HmAsjeiQ}nNr!{`6XLNZa>-_zNXBfenj0UfAhGt8KCg+aBU8woFH03p4rW2 zetRLW;H|$cdQEdRcxUQoVCRH{*t=^opWi++LEb7b)IfFYfu3jg{g8gR#cr9zyXi|L z`|TW&ns%pDC%2@iD8Jj@jI~n!lX|z6OV1h|HDUCL43o9)xXk}ZiUzwBfMi9xfl6mis>4jT=e!8(JdB|0#o{0$w#KmrG^NH>L?Dd^3;B3IS z4~HD#H=lo=Ows6lXzvu^eSr5qdd9vP8ynlEd$vvPyDL3c(*zOgXc@1Y&rVB#O`4AA z%#d#Ax?7iPBD~uEnJ*wz$HHq`$Ipx@Ag4aB9;6PX=1r-jEo}Q~QnG=@ld{8g^ z-e^gFzV?t$DZj<{Bd(}uLuga~ytkkGw4iJv5nU6J1G2eA7eJV2e|H-w(OvdB&&{1X zI{xd3wj(DIJ16`!I6tC^k01Fwd*+LMx6e}mKI7p3txI=`S7OZwj$qHti+-|UJA!uo z2(ezh`WeG7QCdK2P_FZpqQ_WUX_=tT#xap9eG?Z9&wTuty@^1<`Um}bdWMFE(wbEs zFpj~#%!i2>EZE_|QIKp7zP5@l7Q*9;L>2hl9+H%;lbr3hfiUJ?2TY zboH4C(XvfL#^=Meak&Iy;L^ER>QFLV^}aoZ_=1(UgGVqjnmKbOa!S2$(cZn+%S7G1 zDu^e~~l&>w0w^ zE|V&%uez^qdslatkO_UF`tZ*{L!I2yDl(IXHzkeEc<>;~WomYu(z1fVrEk9auT?KC z%yZC>U_zi{AQx?~B%G zgQ^UAfi^N$TI=)Ctb;OJ!6hJz(8*O#kX~b@cf&b6DL*i^lANv4?_kF z7~TKy+qZAQUfFPY3=oE(e4q&dn!rN{1Pzsrp$aW|C;=DENfb-8D#r}?iD5#bQ+sw{ zVYBCem7BM3XXj?+DZ<0{>Q(gG0rKq&1`0fx3NLw2X|e8P*7(E6ujxw~ zGeYiO?IHZ(uWsUPa!MLMX7hvGv`hxScXRJeX3=h8WYLLUL#9HBoe@%UMPTVUQX497 zFN<76gwQboQ@0PPW95Q~$jQmEfy@*A`1!MtSA$W{jN-Gt9{Z6sAoJU|^XfAGR8cwV z<70ebiH9$4Rhk_3vuBuwuq_Ixr{CAFUqdE4`A7n6HZ(K<1+!mJM}RJZU7=bu9M#;? z@_w_CECFxJmd)O8M4r}>L6Zttk5Dx~i+(|qwP};`!!6*5n!A~nz`i`}7)>H+8v^gU z=z`|NiOxK*nnNc}d|FU&JW=N17IsMwUzG7njg194FGMm0`uoYAdev{=+EV_V$bc8~ z){me$tc0Zgo9-n=C?fBESH;|jV{yb*D9s@iCfRqz=iQ7@@%s20wxg58J4U)H8fZN$NItD0-z*uk2J5~(Q{b1P_iL2D!r}V6tfUbAP)uP=Z8n?vfdt& z3J-K5>i=BsKUizSlKJy{D~!<9b;Cd|k-qcC_f`a0$(yV99X+~$224~TewB?zLAMJ_ z=6=hr*N4tD@4r>GOqPWZYy9y3eHwQx64bFwhbY^GF%5KI6ZMAPfxM*t{rYLqfdZ#< zvk_9W5WPqFQfcUA*yPMnlUOsgH(ilPSm8a|B40X8F$G8>x!_SVV~tx$rs#A!@}oIA z4$T}^{UT(Q46PvnF+Mf4)ZhWl0V(bGi8!HyVJJ?`4OU_#`I#sNx^;^sK5&%`QKJ11 zL$IKJTBRz(MV{CEoAxH(yIKk)&sBr!Xu3$p&DH+>gtEimR2zrp&Yv%@vHnP^rD&f% zqdnGIS$+HV4RGW1x)o&~M@qg=`qb1U6>|1Oa9-(Lk3oh{w?H7_5&yvSTKNiH*^8Js(|0wxZbRLE!a)@*^YvNSjI$+Q=}!T**Ww4^2ANrFfH zy-OD{1r7(8vS<$R<%&^*7Z2I>sqe0bxl_Mwq#DtyB{2+&3Z&fORwi7B&r`uP-rao_ zrwuq&yh{H6XmyfZHkhnfF=qfODpiZnrvE|Z z?7uyf6WGein($9+X%%s6($k0kcX#s<`Q^^v4TVbqy0)N-CmHi1;{8&x>gXG#^@Jc9 zRxqQUf`gNRVkm)GsaA17&>*z`0wKRFK&aVc7Tu<>&XK6T8{GeF5XKbr4#ejA%4 z#84bR4i%Ul_m0pVH}(U*oztB4@FY9i`@w)e{*YjdMGs-Fh{IF>-ob*B9y4by!Ra3J zl|Q_FOP#SnJrHAx;V5AUjY~+<)vE$N2V?3IG5`W9ka;NE0o%cHJ_UrW@b6a}6{@zT z`@=1IP8IZC9?>uni3q!VYGl0nu6#iV8O%?(0n6$grO*-m;hAytNKkv!hXUnDdOg73 z*SxB#-B{}eJiS>VIpu z+-6Fs#H&}WjlHl6Becy^*6Pt?KQKo@`Afn{@T8@yV>Q1HfPO250dft!q4@u4z!iNFtPFMa34wGFXh<23o<_ym!d+u6%{2z<{*y}>ZasS$C$(03)D;WXs>_*YM zk!fb524kn_J8F1%zX2x4i;s=}>$;f9a(_Exi)L?0Jr94I;->7h^T=^X1qLq=-1cQn znl_p$G6^h0Jc&SLgNE`3^4cuhM>s6Onr!Wn6MTly{d1QuzrP!`m%@hHi5%4IO-2F+ zRzIS|!20+4Fd&(H(O}d6t!?6~gpM-)=K30i@a9!AwYyv63`XcR2@OrKjF*hCjRNZZ z)945fRp)DgT*Z%;5nBJFB%YD}yG}@##D;x@)ELLuZ69v8rD_@lngHUvmYuHO}l7`tG&3tMG>*ORxH-c3}h#um9PyIhR>>NYz`?fAQiWcs*lPwGDg0bF}z-FP=Ge?4#

1<+KplPD8225YR0;JH)>>U_0_`B8hY{^}^4`#GqqN>;CFjQ$*K53jzIzHWjH@!-+|b?@rO!iHR{_@z&xCILbR4 zHCnXzje0%iLp#lxBW6BkBk`pJ`uB$*SVn;wJaJ1J^uXOS#?#M}n}-}?{V2|1hnq!* z#ET9dIKXF!SFX)2a->V7yUVhjdD!SMhG@@S3hzio*CTWX0xDda$dh7&IzTVvG_^}3eHn4XC?J0 zWeH=$gIef4P2QLbX^f=ySGz44uqx% z>#XxuUiksEMpOVPAIQZ5{rqMnh0>gzJUQY{3AnqM0*3-)$jY&e zu7Vsd1k*s!Y@1a~S>l%_e(tTk^GhRIQP2J0

gtYAlX6pLuiUAk?-c92V-*dVBqD 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 literal 0 HcmV?d00001 From 22bd711ef4ccbe682ca454d2d5da7b6a95b260c4 Mon Sep 17 00:00:00 2001 From: Moises Hernandez Date: Thu, 17 Jun 2021 11:31:19 +0200 Subject: [PATCH 04/17] Add linter & rubocop files --- .github/workflows/linters.yml | 8 +-- .rubocop.yml | 15 ++-- bin/rails | 2 +- bin/rake | 2 +- bin/setup | 4 ++ bin/update | 4 ++ bin/yarn | 12 ++-- config/application.rb | 20 +++--- config/environments/development.rb | 2 +- config/environments/production.rb | 10 +-- config/environments/test.rb | 2 +- config/initializers/devise.rb | 4 -- config/puma.rb | 8 +-- config/routes.rb | 7 +- .../20200130195710_devise_create_users.rb | 11 ++- db/migrate/20200130205552_create_posts.rb | 2 +- db/schema.rb | 70 ++++++++++--------- 17 files changed, 88 insertions(+), 95 deletions(-) diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml index bd44d15a92..9ada6f4105 100644 --- a/.github/workflows/linters.yml +++ b/.github/workflows/linters.yml @@ -13,10 +13,10 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-ruby@v1 with: - ruby-version: 2.6.x + ruby-version: 3.0.x - name: Setup Rubocop run: | - gem install --no-document rubocop:'~>0.81.0' # https://docs.rubocop.org/en/stable/installation/ + gem install --no-document rubocop -v '>= 1.0, < 2.0' # https://docs.rubocop.org/en/stable/installation/ [ -f .rubocop.yml ] || wget https://raw.githubusercontent.com/microverseinc/linters-config/master/ror/.rubocop.yml - name: Rubocop Report run: rubocop --color @@ -30,7 +30,7 @@ jobs: node-version: "12.x" - name: Setup Stylelint run: | - npm install --save-dev stylelint@13.3.x stylelint-scss@3.17.x stylelint-config-standard@20.0.x stylelint-csstree-validator + npm install --save-dev stylelint@13.x stylelint-scss@3.x stylelint-config-standard@21.x stylelint-csstree-validator@1.x [ -f .stylelintrc.json ] || wget https://raw.githubusercontent.com/microverseinc/linters-config/master/ror/.stylelintrc.json - name: Stylelint Report - run: npx stylelint "**/*.{css,scss}" \ No newline at end of file + run: npx stylelint "**/*.{css,scss}" diff --git a/.rubocop.yml b/.rubocop.yml index 89f3b6bdbd..b4f9a4c7b9 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,8 +1,6 @@ AllCops: + NewCops: enable Exclude: - - "db/**/*" - - "bin/*" - - "config/**/*" - "Guardfile" - "Rakefile" - "node_modules/**/*" @@ -12,21 +10,16 @@ AllCops: Layout/LineLength: Max: 120 Metrics/MethodLength: - Include: - - "app/controllers/*" - - "app/models/*" Max: 20 Metrics/AbcSize: - Include: - - "app/controllers/*" - - "app/models/*" Max: 50 Metrics/ClassLength: Max: 150 Metrics/BlockLength: - ExcludedMethods: ["describe"] + IgnoredMethods: ['describe'] Max: 30 + Style/Documentation: Enabled: false Style/ClassAndModuleChildren: @@ -56,4 +49,4 @@ Style/HashEachMethods: Style/HashTransformKeys: Enabled: false Style/HashTransformValues: - Enabled: false \ No newline at end of file + Enabled: false diff --git a/bin/rails b/bin/rails index 5badb2fde0..7a8ff81e6e 100755 --- a/bin/rails +++ b/bin/rails @@ -1,6 +1,6 @@ #!/usr/bin/env ruby begin - load File.expand_path('../spring', __FILE__) + load File.expand_path('spring', __dir__) rescue LoadError => e raise unless e.message.include?('spring') end diff --git a/bin/rake b/bin/rake index d87d5f5781..0ba8c48cba 100755 --- a/bin/rake +++ b/bin/rake @@ -1,6 +1,6 @@ #!/usr/bin/env ruby begin - load File.expand_path('../spring', __FILE__) + load File.expand_path('spring', __dir__) rescue LoadError => e raise unless e.message.include?('spring') end diff --git a/bin/setup b/bin/setup index 94fd4d7977..6a2be88cce 100755 --- a/bin/setup +++ b/bin/setup @@ -1,4 +1,6 @@ #!/usr/bin/env ruby +# rubocop: disable Style/MixinUsage + require 'fileutils' include FileUtils @@ -34,3 +36,5 @@ chdir APP_ROOT do puts "\n== Restarting application server ==" system! 'bin/rails restart' end + +# rubocop: enable Style/MixinUsage diff --git a/bin/update b/bin/update index 58bfaed518..20003a8f37 100755 --- a/bin/update +++ b/bin/update @@ -1,4 +1,6 @@ #!/usr/bin/env ruby + +# rubocop: disable Style/MixinUsage require 'fileutils' include FileUtils @@ -29,3 +31,5 @@ chdir APP_ROOT do puts "\n== Restarting application server ==" system! 'bin/rails restart' end + +# rubocop: enable Style/MixinUsage diff --git a/bin/yarn b/bin/yarn index 460dd565b4..d3627c34cb 100755 --- a/bin/yarn +++ b/bin/yarn @@ -1,11 +1,9 @@ #!/usr/bin/env ruby APP_ROOT = File.expand_path('..', __dir__) Dir.chdir(APP_ROOT) do - begin - exec "yarnpkg", *ARGV - rescue Errno::ENOENT - $stderr.puts "Yarn executable was not detected in the system." - $stderr.puts "Download Yarn at https://yarnpkg.com/en/docs/install" - exit 1 - end + exec 'yarnpkg', *ARGV +rescue Errno::ENOENT + warn 'Yarn executable was not detected in the system.' + warn 'Download Yarn at https://yarnpkg.com/en/docs/install' + exit 1 end diff --git a/config/application.rb b/config/application.rb index 1cbf7597fa..20febe6ce8 100644 --- a/config/application.rb +++ b/config/application.rb @@ -1,16 +1,16 @@ require_relative 'boot' -require "rails" +require 'rails' # Pick the frameworks you want: -require "active_model/railtie" -require "active_job/railtie" -require "active_record/railtie" -require "active_storage/engine" -require "action_controller/railtie" -require "action_mailer/railtie" -require "action_view/railtie" -require "action_cable/engine" -require "sprockets/railtie" +require 'active_model/railtie' +require 'active_job/railtie' +require 'active_record/railtie' +require 'active_storage/engine' +require 'action_controller/railtie' +require 'action_mailer/railtie' +require 'action_view/railtie' +require 'action_cable/engine' +require 'sprockets/railtie' # require "rails/test_unit/railtie" # Require the gems listed in Gemfile, including any gems diff --git a/config/environments/development.rb b/config/environments/development.rb index 8f81b7b34f..b7b00803d1 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -58,7 +58,7 @@ # Use an evented file watcher to asynchronously detect changes in source code, # routes, locales, etc. This feature depends on the listen gem. config.file_watcher = ActiveSupport::EventedFileUpdateChecker - + # Devise auth config config.action_mailer.default_url_options = { host: 'localhost', port: 3000 } end diff --git a/config/environments/production.rb b/config/environments/production.rb index c38acd4618..faad614355 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -11,7 +11,7 @@ config.eager_load = true # Full error reports are disabled and caching is turned on. - config.consider_all_requests_local = false + config.consider_all_requests_local = false config.action_controller.perform_caching = true # Ensures that a master key has been made available in either ENV["RAILS_MASTER_KEY"] @@ -54,7 +54,7 @@ config.log_level = :debug # Prepend all log lines with the following tags. - config.log_tags = [ :request_id ] + config.log_tags = [:request_id] # Use a different cache store in production. # config.cache_store = :mem_cache_store @@ -83,10 +83,10 @@ # require 'syslog/logger' # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name') - if ENV["RAILS_LOG_TO_STDOUT"].present? - logger = ActiveSupport::Logger.new(STDOUT) + if ENV['RAILS_LOG_TO_STDOUT'].present? + logger = ActiveSupport::Logger.new($stdout) logger.formatter = config.log_formatter - config.logger = ActiveSupport::TaggedLogging.new(logger) + config.logger = ActiveSupport::TaggedLogging.new(logger) end # Do not dump schema after migrations. diff --git a/config/environments/test.rb b/config/environments/test.rb index 0a38fd3ce9..713baedb89 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -19,7 +19,7 @@ } # Show full error reports and disable caching. - config.consider_all_requests_local = true + config.consider_all_requests_local = true config.action_controller.perform_caching = false # Raise exceptions instead of rendering exception templates. diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb index 96561115dd..2bce847c07 100644 --- a/config/initializers/devise.rb +++ b/config/initializers/devise.rb @@ -1,5 +1,3 @@ -# frozen_string_literal: true - # Use this hook to configure devise mailer, warden hooks and so forth. # Many of these configuration options can be set straight in your model. Devise.setup do |config| @@ -8,7 +6,6 @@ # confirmation, reset password and unlock tokens in the database. # Devise will use the `secret_key_base` as its `secret_key` # by default. You can change it below and use your own secret key. - # config.secret_key = '67b47cf7eb7cd1b67d9057fd21fcbfbae6aebc2d4942449010ff41764e611cc93640784e5a674c21fd1c48017cf0e41a64e2d5f4030e4b7d3fedb425189e5cb6' # ==> Controller configuration # Configure the parent class to the devise controllers. @@ -114,7 +111,6 @@ config.stretches = Rails.env.test? ? 1 : 11 # Set up a pepper to generate the hashed password. - # config.pepper = 'd8638a186698ce5ee22d24022513dfb587f4220babda3b803e311474e8c2c8a4e2529e1c88ddd92963fedad1eb840a442c29c6b8a5c948986287ae4f58b810ec' # Send a notification to the original email when the user's email is changed. # config.send_email_changed_notification = false diff --git a/config/puma.rb b/config/puma.rb index b2102072b0..e4fc99b6c1 100644 --- a/config/puma.rb +++ b/config/puma.rb @@ -4,19 +4,19 @@ # the maximum value specified for Puma. Default is set to 5 threads for minimum # and maximum; this matches the default thread size of Active Record. # -threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 } +threads_count = ENV.fetch('RAILS_MAX_THREADS', 5) threads threads_count, threads_count # Specifies the `port` that Puma will listen on to receive requests; default is 3000. # -port ENV.fetch("PORT") { 3000 } +port ENV.fetch('PORT', 3000) # Specifies the `environment` that Puma will run in. # -environment ENV.fetch("RAILS_ENV") { "development" } +environment ENV.fetch('RAILS_ENV') { 'development' } # Specifies the `pidfile` that Puma will use. -pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" } +pidfile ENV.fetch('PIDFILE') { 'tmp/pids/server.pid' } # Specifies the number of `workers` to boot in clustered mode. # Workers are forked webserver processes. If using threads and workers together diff --git a/config/routes.rb b/config/routes.rb index d34298b198..dcb5eb8172 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,13 +1,12 @@ Rails.application.routes.draw do - root 'posts#index' devise_for :users - resources :users, only: [:index, :show] - resources :posts, only: [:index, :create] do + resources :users, only: %i[index show] + resources :posts, only: %i[index create] do resources :comments, only: [:create] - resources :likes, only: [:create, :destroy] + resources :likes, only: %i[create destroy] end # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html diff --git a/db/migrate/20200130195710_devise_create_users.rb b/db/migrate/20200130195710_devise_create_users.rb index e4fe133a93..7c8e4c770a 100644 --- a/db/migrate/20200130195710_devise_create_users.rb +++ b/db/migrate/20200130195710_devise_create_users.rb @@ -1,14 +1,12 @@ -# frozen_string_literal: true - class DeviseCreateUsers < ActiveRecord::Migration[5.2] def change create_table :users do |t| ## Database authenticatable - t.string :email, null: false, default: "" - t.string :encrypted_password, null: false, default: "" + t.string :email, null: false, default: '' + t.string :encrypted_password, null: false, default: '' ## Recoverable - t.string :reset_password_token + t.string :reset_password_token t.datetime :reset_password_sent_at ## Rememberable @@ -32,11 +30,10 @@ def change # t.string :unlock_token # Only if unlock strategy is :email or :both # t.datetime :locked_at - t.timestamps null: false end - add_index :users, :email, unique: true + add_index :users, :email, unique: true add_index :users, :reset_password_token, unique: true # add_index :users, :confirmation_token, unique: true # add_index :users, :unlock_token, unique: true diff --git a/db/migrate/20200130205552_create_posts.rb b/db/migrate/20200130205552_create_posts.rb index 8d2cec524d..3e6b52ad7f 100644 --- a/db/migrate/20200130205552_create_posts.rb +++ b/db/migrate/20200130205552_create_posts.rb @@ -3,7 +3,7 @@ def change create_table :posts do |t| t.integer :user_id t.text :content - + t.timestamps end diff --git a/db/schema.rb b/db/schema.rb index 30ee9f3fad..3d0f62a8bc 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,48 +10,50 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2020_02_04_165841) do +# rubocop: disable Metrics/BlockLength +ActiveRecord::Schema.define(version: 20_200_204_165_841) do # These are extensions that must be enabled in order to support this database - enable_extension "plpgsql" + enable_extension 'plpgsql' - create_table "comments", force: :cascade do |t| - t.integer "user_id" - t.integer "post_id" - t.text "content" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.index ["post_id"], name: "index_comments_on_post_id" - t.index ["user_id"], name: "index_comments_on_user_id" + create_table 'comments', force: :cascade do |t| + t.integer 'user_id' + t.integer 'post_id' + t.text 'content' + t.datetime 'created_at', null: false + t.datetime 'updated_at', null: false + t.index ['post_id'], name: 'index_comments_on_post_id' + t.index ['user_id'], name: 'index_comments_on_user_id' end - create_table "likes", force: :cascade do |t| - t.integer "post_id" - t.integer "user_id" - t.index ["post_id"], name: "index_likes_on_post_id" - t.index ["user_id"], name: "index_likes_on_user_id" + create_table 'likes', force: :cascade do |t| + t.integer 'post_id' + t.integer 'user_id' + t.index ['post_id'], name: 'index_likes_on_post_id' + t.index ['user_id'], name: 'index_likes_on_user_id' end - create_table "posts", force: :cascade do |t| - t.integer "user_id" - t.text "content" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.index ["user_id"], name: "index_posts_on_user_id" + create_table 'posts', force: :cascade do |t| + t.integer 'user_id' + t.text 'content' + t.datetime 'created_at', null: false + t.datetime 'updated_at', null: false + t.index ['user_id'], name: 'index_posts_on_user_id' end - create_table "users", force: :cascade do |t| - t.string "email", default: "", null: false - t.string "encrypted_password", default: "", null: false - t.string "reset_password_token" - t.datetime "reset_password_sent_at" - t.datetime "remember_created_at" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.string "name" - t.string "gravatar_url" - t.index ["email"], name: "index_users_on_email", unique: true - t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true + create_table 'users', force: :cascade do |t| + t.string 'email', default: '', null: false + t.string 'encrypted_password', default: '', null: false + t.string 'reset_password_token' + t.datetime 'reset_password_sent_at' + t.datetime 'remember_created_at' + t.datetime 'created_at', null: false + t.datetime 'updated_at', null: false + t.string 'name' + t.string 'gravatar_url' + t.index ['email'], name: 'index_users_on_email', unique: true + t.index ['reset_password_token'], name: 'index_users_on_reset_password_token', unique: true end - end + +# rubocop: enable Metrics/BlockLength From 1cd9eea97a212999fca299720980151550acd435 Mon Sep 17 00:00:00 2001 From: ivana Date: Thu, 17 Jun 2021 11:43:36 +0200 Subject: [PATCH 05/17] Add readme --- README.md | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/README.md b/README.md index b937ffc486..e722313198 100644 --- a/README.md +++ b/README.md @@ -49,16 +49,6 @@ Setup database with: rails db:migrate ``` -### Github Actions - -To make sure the linters' checks using Github Actions work properly, you should follow the next steps: - -1. On your recently forked repo, enable the GitHub Actions in the Actions tab. -2. Create the `feature/branch` and push. -3. Start working on your milestone as usual. -4. Open a PR from the `feature/branch` when your work is done. - - ### Usage Start server with: From dcac121436073ed5924ada0a6c1f7a5294b40510 Mon Sep 17 00:00:00 2001 From: Moises Hernandez Date: Thu, 17 Jun 2021 15:18:59 +0200 Subject: [PATCH 06/17] Update PK on erd --- docs/erd2.png | Bin 64612 -> 0 bytes docs/erd4.png | Bin 0 -> 41253 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/erd2.png create mode 100644 docs/erd4.png diff --git a/docs/erd2.png b/docs/erd2.png deleted file mode 100644 index ca46abf745e5fbe2d1bce90b12c49eaf58071c13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64612 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

gtYAlX6pLuiUAk?-c92V-*dVBqD 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 diff --git a/docs/erd4.png b/docs/erd4.png new file mode 100644 index 0000000000000000000000000000000000000000..6396be2b71a14d06d22a261560e544abfab4a762 GIT binary patch literal 41253 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 literal 0 HcmV?d00001 From b141b1ba514ae75d4b9e5c4730300f2fbcc6259d Mon Sep 17 00:00:00 2001 From: ivana Date: Thu, 17 Jun 2021 15:57:14 +0200 Subject: [PATCH 07/17] Add friendship model --- Gemfile.lock | 4 +- app/assets/javascripts/friendships.coffee | 3 + app/assets/stylesheets/friendships.scss | 3 + app/assets/stylesheets/scaffolds.scss | 84 + app/controllers/friendships_controller.rb | 74 + app/helpers/friendships_helper.rb | 2 + app/models/friendship.rb | 4 + app/models/user.rb | 3 + app/views/friendships/_form.html.erb | 32 + .../friendships/_friendship.json.jbuilder | 2 + app/views/friendships/edit.html.erb | 6 + app/views/friendships/index.html.erb | 31 + app/views/friendships/index.json.jbuilder | 1 + app/views/friendships/new.html.erb | 5 + app/views/friendships/show.html.erb | 19 + app/views/friendships/show.json.jbuilder | 1 + config/routes.rb | 1 + .../20210617133705_create_friendships.rb | 12 + db/schema.rb | 14 +- db/seeds.rb | 4 + yarn.lock | 1864 +++++++++++++++++ 21 files changed, 2167 insertions(+), 2 deletions(-) create mode 100644 app/assets/javascripts/friendships.coffee create mode 100644 app/assets/stylesheets/friendships.scss create mode 100644 app/assets/stylesheets/scaffolds.scss create mode 100644 app/controllers/friendships_controller.rb create mode 100644 app/helpers/friendships_helper.rb create mode 100644 app/models/friendship.rb create mode 100644 app/views/friendships/_form.html.erb create mode 100644 app/views/friendships/_friendship.json.jbuilder create mode 100644 app/views/friendships/edit.html.erb create mode 100644 app/views/friendships/index.html.erb create mode 100644 app/views/friendships/index.json.jbuilder create mode 100644 app/views/friendships/new.html.erb create mode 100644 app/views/friendships/show.html.erb create mode 100644 app/views/friendships/show.json.jbuilder create mode 100644 db/migrate/20210617133705_create_friendships.rb create mode 100644 yarn.lock diff --git a/Gemfile.lock b/Gemfile.lock index b67d4b3306..5532c5def5 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -89,7 +89,9 @@ GEM marcel (0.3.3) mimemagic (~> 0.3.2) method_source (0.9.2) - mimemagic (0.3.4) + mimemagic (0.3.10) + nokogiri (~> 1) + rake mini_mime (1.0.2) mini_portile2 (2.5.0) minitest (5.14.0) diff --git a/app/assets/javascripts/friendships.coffee b/app/assets/javascripts/friendships.coffee new file mode 100644 index 0000000000..24f83d18bb --- /dev/null +++ b/app/assets/javascripts/friendships.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/stylesheets/friendships.scss b/app/assets/stylesheets/friendships.scss new file mode 100644 index 0000000000..8c5a6c82dc --- /dev/null +++ b/app/assets/stylesheets/friendships.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the friendships controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/assets/stylesheets/scaffolds.scss b/app/assets/stylesheets/scaffolds.scss new file mode 100644 index 0000000000..6045188032 --- /dev/null +++ b/app/assets/stylesheets/scaffolds.scss @@ -0,0 +1,84 @@ +body { + background-color: #fff; + color: #333; + margin: 33px; + font-family: verdana, arial, helvetica, sans-serif; + font-size: 13px; + line-height: 18px; +} + +p, ol, ul, td { + font-family: verdana, arial, helvetica, sans-serif; + font-size: 13px; + line-height: 18px; +} + +pre { + background-color: #eee; + padding: 10px; + font-size: 11px; +} + +a { + color: #000; + + &:visited { + color: #666; + } + + &:hover { + color: #fff; + background-color: #000; + } +} + +th { + padding-bottom: 5px; +} + +td { + padding: 0 5px 7px; +} + +div { + &.field, &.actions { + margin-bottom: 10px; + } +} + +#notice { + color: green; +} + +.field_with_errors { + padding: 2px; + background-color: red; + display: table; +} + +#error_explanation { + width: 450px; + border: 2px solid red; + padding: 7px 7px 0; + margin-bottom: 20px; + background-color: #f0f0f0; + + h2 { + text-align: left; + font-weight: bold; + padding: 5px 5px 5px 15px; + font-size: 12px; + margin: -7px -7px 0; + background-color: #c00; + color: #fff; + } + + ul li { + font-size: 12px; + list-style: square; + } +} + +label { + display: block; +} diff --git a/app/controllers/friendships_controller.rb b/app/controllers/friendships_controller.rb new file mode 100644 index 0000000000..b6d9e7c46e --- /dev/null +++ b/app/controllers/friendships_controller.rb @@ -0,0 +1,74 @@ +class FriendshipsController < ApplicationController + before_action :set_friendship, only: [:show, :edit, :update, :destroy] + + # GET /friendships + # GET /friendships.json + def index + @friendships = Friendship.all + end + + # GET /friendships/1 + # GET /friendships/1.json + def show + end + + # GET /friendships/new + def new + @friendship = Friendship.new + end + + # GET /friendships/1/edit + def edit + end + + # POST /friendships + # POST /friendships.json + def create + @friendship = Friendship.new(friendship_params) + + respond_to do |format| + if @friendship.save + format.html { redirect_to @friendship, notice: 'Friendship was successfully created.' } + format.json { render :show, status: :created, location: @friendship } + else + format.html { render :new } + format.json { render json: @friendship.errors, status: :unprocessable_entity } + end + end + end + + # PATCH/PUT /friendships/1 + # PATCH/PUT /friendships/1.json + def update + respond_to do |format| + if @friendship.update(friendship_params) + format.html { redirect_to @friendship, notice: 'Friendship was successfully updated.' } + format.json { render :show, status: :ok, location: @friendship } + else + format.html { render :edit } + format.json { render json: @friendship.errors, status: :unprocessable_entity } + end + end + end + + # DELETE /friendships/1 + # DELETE /friendships/1.json + def destroy + @friendship.destroy + respond_to do |format| + format.html { redirect_to friendships_url, notice: 'Friendship was successfully destroyed.' } + format.json { head :no_content } + end + end + + private + # Use callbacks to share common setup or constraints between actions. + def set_friendship + @friendship = Friendship.find(params[:id]) + end + + # Only allow a list of trusted parameters through. + def friendship_params + params.require(:friendship).permit(:user_id, :friend_id, :confirmed) + end +end diff --git a/app/helpers/friendships_helper.rb b/app/helpers/friendships_helper.rb new file mode 100644 index 0000000000..64f89ba620 --- /dev/null +++ b/app/helpers/friendships_helper.rb @@ -0,0 +1,2 @@ +module FriendshipsHelper +end diff --git a/app/models/friendship.rb b/app/models/friendship.rb new file mode 100644 index 0000000000..fa783ddd12 --- /dev/null +++ b/app/models/friendship.rb @@ -0,0 +1,4 @@ +class Friendship < ApplicationRecord + belongs_to :user + belongs_to :friend, class_name: "User" +end diff --git a/app/models/user.rb b/app/models/user.rb index e97f1363c0..86a69500ef 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -9,4 +9,7 @@ class User < ApplicationRecord has_many :posts has_many :comments, dependent: :destroy has_many :likes, dependent: :destroy + + has_many :friendships, foreign_key: "user_id" + has_many :inverse_friendships, class_name: "Friendship", foreign_key: "friend_id" end diff --git a/app/views/friendships/_form.html.erb b/app/views/friendships/_form.html.erb new file mode 100644 index 0000000000..3e51e218f7 --- /dev/null +++ b/app/views/friendships/_form.html.erb @@ -0,0 +1,32 @@ +<%= form_with(model: friendship, local: true) do |form| %> + <% if friendship.errors.any? %> +

+ <% end %> + +
+ <%= form.label :user_id %> + <%= form.text_field :user_id %> +
+ +
+ <%= form.label :friend_id %> + <%= form.text_field :friend_id %> +
+ +
+ <%= form.label :confirmed %> + <%= form.check_box :confirmed %> +
+ +
+ <%= form.submit %> +
+<% end %> diff --git a/app/views/friendships/_friendship.json.jbuilder b/app/views/friendships/_friendship.json.jbuilder new file mode 100644 index 0000000000..c005e326f7 --- /dev/null +++ b/app/views/friendships/_friendship.json.jbuilder @@ -0,0 +1,2 @@ +json.extract! friendship, :id, :user_id, :friend_id, :confirmed, :created_at, :updated_at +json.url friendship_url(friendship, format: :json) diff --git a/app/views/friendships/edit.html.erb b/app/views/friendships/edit.html.erb new file mode 100644 index 0000000000..efb6a8feaf --- /dev/null +++ b/app/views/friendships/edit.html.erb @@ -0,0 +1,6 @@ +

Editing Friendship

+ +<%= render 'form', friendship: @friendship %> + +<%= link_to 'Show', @friendship %> | +<%= link_to 'Back', friendships_path %> diff --git a/app/views/friendships/index.html.erb b/app/views/friendships/index.html.erb new file mode 100644 index 0000000000..2e1e90a42d --- /dev/null +++ b/app/views/friendships/index.html.erb @@ -0,0 +1,31 @@ +

<%= notice %>

+ +

Friendships

+ + + + + + + + + + + + + <% @friendships.each do |friendship| %> + + + + + + + + + <% end %> + +
UserFriendConfirmed
<%= friendship.user %><%= friendship.friend %><%= friendship.confirmed %><%= link_to 'Show', friendship %><%= link_to 'Edit', edit_friendship_path(friendship) %><%= link_to 'Destroy', friendship, method: :delete, data: { confirm: 'Are you sure?' } %>
+ +
+ +<%= link_to 'New Friendship', new_friendship_path %> diff --git a/app/views/friendships/index.json.jbuilder b/app/views/friendships/index.json.jbuilder new file mode 100644 index 0000000000..7cbe0359f0 --- /dev/null +++ b/app/views/friendships/index.json.jbuilder @@ -0,0 +1 @@ +json.array! @friendships, partial: "friendships/friendship", as: :friendship diff --git a/app/views/friendships/new.html.erb b/app/views/friendships/new.html.erb new file mode 100644 index 0000000000..845e2d1ea6 --- /dev/null +++ b/app/views/friendships/new.html.erb @@ -0,0 +1,5 @@ +

New Friendship

+ +<%= render 'form', friendship: @friendship %> + +<%= link_to 'Back', friendships_path %> diff --git a/app/views/friendships/show.html.erb b/app/views/friendships/show.html.erb new file mode 100644 index 0000000000..38bf123482 --- /dev/null +++ b/app/views/friendships/show.html.erb @@ -0,0 +1,19 @@ +

<%= notice %>

+ +

+ User: + <%= @friendship.user %> +

+ +

+ Friend: + <%= @friendship.friend %> +

+ +

+ Confirmed: + <%= @friendship.confirmed %> +

+ +<%= link_to 'Edit', edit_friendship_path(@friendship) %> | +<%= link_to 'Back', friendships_path %> diff --git a/app/views/friendships/show.json.jbuilder b/app/views/friendships/show.json.jbuilder new file mode 100644 index 0000000000..a3e7a28076 --- /dev/null +++ b/app/views/friendships/show.json.jbuilder @@ -0,0 +1 @@ +json.partial! "friendships/friendship", friendship: @friendship diff --git a/config/routes.rb b/config/routes.rb index d34298b198..02a90668ac 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,5 +1,6 @@ Rails.application.routes.draw do + resources :friendships root 'posts#index' devise_for :users diff --git a/db/migrate/20210617133705_create_friendships.rb b/db/migrate/20210617133705_create_friendships.rb new file mode 100644 index 0000000000..4227b9b2dd --- /dev/null +++ b/db/migrate/20210617133705_create_friendships.rb @@ -0,0 +1,12 @@ +class CreateFriendships < ActiveRecord::Migration[5.2] + def change + create_table :friendships do |t| + t.references :user, index: true, foreign_key: true + t.references :friend, index: true + t.boolean :confirmed, default: false + + t.timestamps null: false + end + add_foreign_key :friendships, :users, column: :friend_id + end +end diff --git a/db/schema.rb b/db/schema.rb index 30ee9f3fad..a0597e104a 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2020_02_04_165841) do +ActiveRecord::Schema.define(version: 2021_06_17_133705) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -25,6 +25,16 @@ t.index ["user_id"], name: "index_comments_on_user_id" end + create_table "friendships", force: :cascade do |t| + t.bigint "user_id" + t.bigint "friend_id" + t.boolean "confirmed", default: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["friend_id"], name: "index_friendships_on_friend_id" + t.index ["user_id"], name: "index_friendships_on_user_id" + end + create_table "likes", force: :cascade do |t| t.integer "post_id" t.integer "user_id" @@ -54,4 +64,6 @@ t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true end + add_foreign_key "friendships", "users" + add_foreign_key "friendships", "users", column: "friend_id" end diff --git a/db/seeds.rb b/db/seeds.rb index 1beea2accd..218c950bb2 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -5,3 +5,7 @@ # # movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }]) # Character.create(name: 'Luke', movie: movies.first) + +10.times do |index| + User.create(name: "Doe#{index}", email: "doe#{index}@gamil.com", password: "#{index}123456", password_confirmation: "#{index}123456") +end diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000000..df563a966a --- /dev/null +++ b/yarn.lock @@ -0,0 +1,1864 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" + integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== + dependencies: + "@babel/highlight" "^7.14.5" + +"@babel/compat-data@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.5.tgz#8ef4c18e58e801c5c95d3c1c0f2874a2680fadea" + integrity sha512-kixrYn4JwfAVPa0f2yfzc2AWti6WRRyO3XjWW5PJAvtE11qhSayrrcrEnee05KAtNaPC+EwehE8Qt1UedEVB8w== + +"@babel/core@>=7.9.0": + version "7.14.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.6.tgz#e0814ec1a950032ff16c13a2721de39a8416fcab" + integrity sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/generator" "^7.14.5" + "@babel/helper-compilation-targets" "^7.14.5" + "@babel/helper-module-transforms" "^7.14.5" + "@babel/helpers" "^7.14.6" + "@babel/parser" "^7.14.6" + "@babel/template" "^7.14.5" + "@babel/traverse" "^7.14.5" + "@babel/types" "^7.14.5" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + source-map "^0.5.0" + +"@babel/generator@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.5.tgz#848d7b9f031caca9d0cd0af01b063f226f52d785" + integrity sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA== + dependencies: + "@babel/types" "^7.14.5" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/helper-compilation-targets@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz#7a99c5d0967911e972fe2c3411f7d5b498498ecf" + integrity sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw== + dependencies: + "@babel/compat-data" "^7.14.5" + "@babel/helper-validator-option" "^7.14.5" + browserslist "^4.16.6" + semver "^6.3.0" + +"@babel/helper-function-name@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz#89e2c474972f15d8e233b52ee8c480e2cfcd50c4" + integrity sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ== + dependencies: + "@babel/helper-get-function-arity" "^7.14.5" + "@babel/template" "^7.14.5" + "@babel/types" "^7.14.5" + +"@babel/helper-get-function-arity@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz#25fbfa579b0937eee1f3b805ece4ce398c431815" + integrity sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-hoist-variables@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz#e0dd27c33a78e577d7c8884916a3e7ef1f7c7f8d" + integrity sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-member-expression-to-functions@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.5.tgz#d5c70e4ad13b402c95156c7a53568f504e2fb7b8" + integrity sha512-UxUeEYPrqH1Q/k0yRku1JE7dyfyehNwT6SVkMHvYvPDv4+uu627VXBckVj891BO8ruKBkiDoGnZf4qPDD8abDQ== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-module-imports@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz#6d1a44df6a38c957aa7c312da076429f11b422f3" + integrity sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-module-transforms@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz#7de42f10d789b423eb902ebd24031ca77cb1e10e" + integrity sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA== + dependencies: + "@babel/helper-module-imports" "^7.14.5" + "@babel/helper-replace-supers" "^7.14.5" + "@babel/helper-simple-access" "^7.14.5" + "@babel/helper-split-export-declaration" "^7.14.5" + "@babel/helper-validator-identifier" "^7.14.5" + "@babel/template" "^7.14.5" + "@babel/traverse" "^7.14.5" + "@babel/types" "^7.14.5" + +"@babel/helper-optimise-call-expression@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz#f27395a8619e0665b3f0364cddb41c25d71b499c" + integrity sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-replace-supers@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz#0ecc0b03c41cd567b4024ea016134c28414abb94" + integrity sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.14.5" + "@babel/helper-optimise-call-expression" "^7.14.5" + "@babel/traverse" "^7.14.5" + "@babel/types" "^7.14.5" + +"@babel/helper-simple-access@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz#66ea85cf53ba0b4e588ba77fc813f53abcaa41c4" + integrity sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-split-export-declaration@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz#22b23a54ef51c2b7605d851930c1976dd0bc693a" + integrity sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-validator-identifier@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz#d0f0e277c512e0c938277faa85a3968c9a44c0e8" + integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg== + +"@babel/helper-validator-option@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" + integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== + +"@babel/helpers@^7.14.6": + version "7.14.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.6.tgz#5b58306b95f1b47e2a0199434fa8658fa6c21635" + integrity sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA== + dependencies: + "@babel/template" "^7.14.5" + "@babel/traverse" "^7.14.5" + "@babel/types" "^7.14.5" + +"@babel/highlight@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" + integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== + dependencies: + "@babel/helper-validator-identifier" "^7.14.5" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.14.5", "@babel/parser@^7.14.6": + version "7.14.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.6.tgz#d85cc68ca3cac84eae384c06f032921f5227f4b2" + integrity sha512-oG0ej7efjEXxb4UgE+klVx+3j4MVo+A2vCzm7OUN4CLo6WhQ+vSOD2yJ8m7B+DghObxtLxt3EfgMWpq+AsWehQ== + +"@babel/template@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.14.5.tgz#a9bc9d8b33354ff6e55a9c60d1109200a68974f4" + integrity sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/parser" "^7.14.5" + "@babel/types" "^7.14.5" + +"@babel/traverse@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.5.tgz#c111b0f58afab4fea3d3385a406f692748c59870" + integrity sha512-G3BiS15vevepdmFqmUc9X+64y0viZYygubAMO8SvBmKARuF6CPSZtH4Ng9vi/lrWlZFGe3FWdXNy835akH8Glg== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/generator" "^7.14.5" + "@babel/helper-function-name" "^7.14.5" + "@babel/helper-hoist-variables" "^7.14.5" + "@babel/helper-split-export-declaration" "^7.14.5" + "@babel/parser" "^7.14.5" + "@babel/types" "^7.14.5" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.5.tgz#3bb997ba829a2104cedb20689c4a5b8121d383ff" + integrity sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg== + dependencies: + "@babel/helper-validator-identifier" "^7.14.5" + to-fast-properties "^2.0.0" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.7" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.7.tgz#94c23db18ee4653e129abd26fb06f870ac9e1ee2" + integrity sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@stylelint/postcss-css-in-js@^0.37.2": + version "0.37.2" + resolved "https://registry.yarnpkg.com/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz#7e5a84ad181f4234a2480803422a47b8749af3d2" + integrity sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA== + dependencies: + "@babel/core" ">=7.9.0" + +"@stylelint/postcss-markdown@^0.36.2": + version "0.36.2" + resolved "https://registry.yarnpkg.com/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz#0a540c4692f8dcdfc13c8e352c17e7bfee2bb391" + integrity sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ== + dependencies: + remark "^13.0.0" + unist-util-find-all-after "^3.0.2" + +"@types/mdast@^3.0.0": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb" + integrity sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw== + dependencies: + "@types/unist" "*" + +"@types/minimist@^1.2.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.1.tgz#283f669ff76d7b8260df8ab7a4262cc83d988256" + integrity sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg== + +"@types/normalize-package-data@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" + integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== + +ajv@^8.0.1: + version "8.6.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.0.tgz#60cc45d9c46a477d80d92c48076d972c342e5720" + integrity sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +autoprefixer@^9.8.6: + version "9.8.6" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" + integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== + dependencies: + browserslist "^4.12.0" + caniuse-lite "^1.0.30001109" + colorette "^1.2.1" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.32" + postcss-value-parser "^4.1.0" + +bail@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" + integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +balanced-match@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-2.0.0.tgz#dc70f920d78db8b858535795867bf48f820633d9" + integrity sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browserslist@^4.12.0, browserslist@^4.16.6: + version "4.16.6" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" + integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== + dependencies: + caniuse-lite "^1.0.30001219" + colorette "^1.2.2" + electron-to-chromium "^1.3.723" + escalade "^3.1.1" + node-releases "^1.1.71" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase-keys@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" + integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== + dependencies: + camelcase "^5.3.1" + map-obj "^4.0.0" + quick-lru "^4.0.1" + +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001219: + version "1.0.30001237" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001237.tgz#4b7783661515b8e7151fc6376cfd97f0e427b9e5" + integrity sha512-pDHgRndit6p1NR2GhzMbQ6CkRrp4VKuSsqbcLeOQppYPKOYkKT/6ZvZDvKJUqcmtyWIAHuZq3SVS2vc1egCZzw== + +chalk@^2.0.0, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.1.0, chalk@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" + integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +character-entities-legacy@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" + integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== + +character-entities@^1.0.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" + integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== + +character-reference-invalid@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" + integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== + +clone-regexp@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clone-regexp/-/clone-regexp-2.2.0.tgz#7d65e00885cd8796405c35a737e7a86b7429e36f" + integrity sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q== + dependencies: + is-regexp "^2.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colorette@^1.2.1, colorette@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" + integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +cosmiconfig@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" + integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +css-tree@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +debug@^4.0.0, debug@^4.1.0, debug@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" + +decamelize-keys@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" + integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= + dependencies: + decamelize "^1.1.0" + map-obj "^1.0.0" + +decamelize@^1.1.0, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +domelementtype@1, domelementtype@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" + integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== + +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + dependencies: + domelementtype "1" + +domutils@^1.5.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +electron-to-chromium@^1.3.723: + version "1.3.752" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.752.tgz#0728587f1b9b970ec9ffad932496429aef750d09" + integrity sha512-2Tg+7jSl3oPxgsBsWKh5H83QazTkmWG/cnNwJplmyZc7KcN61+I10oUgaXSVk/NwfvN3BdkKDR4FYuRBQQ2v0A== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +entities@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +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" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +execall@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/execall/-/execall-2.0.0.tgz#16a06b5fe5099df7d00be5d9c06eecded1663b45" + integrity sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow== + dependencies: + clone-regexp "^2.1.0" + +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.1.1, fast-glob@^3.2.5: + version "3.2.5" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" + integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" + picomatch "^2.2.1" + +fastest-levenshtein@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" + integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== + +fastq@^1.6.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858" + integrity sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g== + dependencies: + reusify "^1.0.4" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" + integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-stdin@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" + integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== + +glob-parent@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@^7.1.3: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globby@^11.0.3: + version "11.0.4" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" + integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + +globjoin@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" + integrity sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM= + +gonzales-pe@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.3.0.tgz#fe9dec5f3c557eead09ff868c65826be54d067b3" + integrity sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ== + dependencies: + minimist "^1.2.5" + +hard-rejection@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" + integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +hosted-git-info@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.0.2.tgz#5e425507eede4fea846b7262f0838456c4209961" + integrity sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg== + dependencies: + lru-cache "^6.0.0" + +html-tags@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" + integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== + +htmlparser2@^3.10.0: + version "3.10.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" + integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== + dependencies: + domelementtype "^1.3.1" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^3.1.1" + +ignore@^5.1.4, ignore@^5.1.8: + version "5.1.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" + integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== + +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-lazy@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" + integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@^1.3.5: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +is-alphabetical@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" + integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== + +is-alphanumerical@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" + integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== + dependencies: + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-buffer@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + +is-core-module@^2.2.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" + integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== + dependencies: + has "^1.0.3" + +is-decimal@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" + integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-hexadecimal@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" + integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +is-plain-obj@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-regexp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-2.1.0.tgz#cd734a56864e23b956bf4e7c66c396a4c0b22c2d" + integrity sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA== + +is-typedarray@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json5@^2.1.2: + version "2.2.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" + integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== + dependencies: + minimist "^1.2.5" + +kind-of@^6.0.2, kind-of@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +known-css-properties@^0.21.0: + version "0.21.0" + resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.21.0.tgz#15fbd0bbb83447f3ce09d8af247ed47c68ede80d" + integrity sha512-sZLUnTqimCkvkgRS+kbPlYW5o8q5w1cu+uIisKpEWkj31I8mx8kNG162DwRav8Zirkva6N5uoFsm9kzK4mUXjw== + +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= + +lodash@^4.17.15, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +longest-streak@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4" + integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg== + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +map-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= + +map-obj@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.2.1.tgz#e4ea399dbc979ae735c83c863dd31bdf364277b7" + integrity sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ== + +mathml-tag-names@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" + integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== + +mdast-util-from-markdown@^0.8.0: + version "0.8.5" + resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz#d1ef2ca42bc377ecb0463a987910dae89bd9a28c" + integrity sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-to-string "^2.0.0" + micromark "~2.11.0" + parse-entities "^2.0.0" + unist-util-stringify-position "^2.0.0" + +mdast-util-to-markdown@^0.6.0: + version "0.6.5" + resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz#b33f67ca820d69e6cc527a93d4039249b504bebe" + integrity sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ== + dependencies: + "@types/unist" "^2.0.0" + longest-streak "^2.0.0" + mdast-util-to-string "^2.0.0" + parse-entities "^2.0.0" + repeat-string "^1.0.0" + zwitch "^1.0.0" + +mdast-util-to-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b" + integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== + +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +meow@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-9.0.0.tgz#cd9510bc5cac9dee7d03c73ee1f9ad959f4ea364" + integrity sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ== + dependencies: + "@types/minimist" "^1.2.0" + camelcase-keys "^6.2.2" + decamelize "^1.2.0" + decamelize-keys "^1.1.0" + hard-rejection "^2.1.0" + minimist-options "4.1.0" + normalize-package-data "^3.0.0" + read-pkg-up "^7.0.1" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.18.0" + yargs-parser "^20.2.3" + +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromark@~2.11.0: + version "2.11.4" + resolved "https://registry.yarnpkg.com/micromark/-/micromark-2.11.4.tgz#d13436138eea826383e822449c9a5c50ee44665a" + integrity sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA== + dependencies: + debug "^4.0.0" + parse-entities "^2.0.0" + +micromatch@^4.0.2, micromatch@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== + dependencies: + braces "^3.0.1" + picomatch "^2.2.3" + +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist-options@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" + integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + kind-of "^6.0.3" + +minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +node-releases@^1.1.71: + version "1.1.73" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.73.tgz#dd4e81ddd5277ff846b80b52bb40c49edf7a7b20" + integrity sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg== + +normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-package-data@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.2.tgz#cae5c410ae2434f9a6c1baa65d5bc3b9366c8699" + integrity sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg== + dependencies: + hosted-git-info "^4.0.1" + resolve "^1.20.0" + semver "^7.3.4" + validate-npm-package-license "^3.0.1" + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-selector@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/normalize-selector/-/normalize-selector-0.2.0.tgz#d0b145eb691189c63a78d201dc4fdb1293ef0c03" + integrity sha1-0LFF62kRicY6eNIB3E/bEpPvDAM= + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-entities@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" + integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== + dependencies: + character-entities "^1.0.0" + character-entities-legacy "^1.0.0" + character-reference-invalid "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.0" + is-hexadecimal "^1.0.0" + +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +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" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-parse@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +picomatch@^2.2.1, picomatch@^2.2.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== + +postcss-html@^0.36.0: + version "0.36.0" + resolved "https://registry.yarnpkg.com/postcss-html/-/postcss-html-0.36.0.tgz#b40913f94eaacc2453fd30a1327ad6ee1f88b204" + integrity sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw== + dependencies: + htmlparser2 "^3.10.0" + +postcss-less@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/postcss-less/-/postcss-less-3.1.4.tgz#369f58642b5928ef898ffbc1a6e93c958304c5ad" + integrity sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA== + dependencies: + postcss "^7.0.14" + +postcss-media-query-parser@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244" + integrity sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ= + +postcss-resolve-nested-selector@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#29ccbc7c37dedfac304e9fff0bf1596b3f6a0e4e" + integrity sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4= + +postcss-safe-parser@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz#a6d4e48f0f37d9f7c11b2a581bf00f8ba4870b96" + integrity sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g== + dependencies: + postcss "^7.0.26" + +postcss-sass@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/postcss-sass/-/postcss-sass-0.4.4.tgz#91f0f3447b45ce373227a98b61f8d8f0785285a3" + integrity sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg== + dependencies: + gonzales-pe "^4.3.0" + postcss "^7.0.21" + +postcss-scss@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-2.1.1.tgz#ec3a75fa29a55e016b90bf3269026c53c1d2b383" + integrity sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA== + dependencies: + postcss "^7.0.6" + +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.5: + version "6.0.6" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" + integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-syntax@^0.36.2: + version "0.36.2" + resolved "https://registry.yarnpkg.com/postcss-syntax/-/postcss-syntax-0.36.2.tgz#f08578c7d95834574e5593a82dfbfa8afae3b51c" + integrity sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w== + +postcss-value-parser@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" + integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== + +postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.32, postcss@^7.0.35, postcss@^7.0.6: + version "7.0.36" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.36.tgz#056f8cffa939662a8f5905950c07d5285644dfcb" + integrity sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quick-lru@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" + integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== + +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + +readable-stream@^3.1.1: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + +remark-parse@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-9.0.0.tgz#4d20a299665880e4f4af5d90b7c7b8a935853640" + integrity sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw== + dependencies: + mdast-util-from-markdown "^0.8.0" + +remark-stringify@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-9.0.1.tgz#576d06e910548b0a7191a71f27b33f1218862894" + integrity sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg== + dependencies: + mdast-util-to-markdown "^0.6.0" + +remark@^13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/remark/-/remark-13.0.0.tgz#d15d9bf71a402f40287ebe36067b66d54868e425" + integrity sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA== + dependencies: + remark-parse "^9.0.0" + remark-stringify "^9.0.0" + unified "^9.1.0" + +repeat-string@^1.0.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve@^1.10.0, resolve@^1.20.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +"semver@2 || 3 || 4 || 5": + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.3.4: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + +signal-exit@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +source-map@^0.5.0: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz#8a595135def9592bda69709474f1cbeea7c2467f" + integrity sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ== + +specificity@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/specificity/-/specificity-0.4.1.tgz#aab5e645012db08ba182e151165738d00887b019" + integrity sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg== + +string-width@^4.2.0, string-width@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" + integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + +style-search@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902" + integrity sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI= + +stylelint-config-recommended@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-3.0.0.tgz#e0e547434016c5539fe2650afd58049a2fd1d657" + integrity sha512-F6yTRuc06xr1h5Qw/ykb2LuFynJ2IxkKfCMf+1xqPffkxh0S09Zc902XCffcsw/XMFq/OzQ1w54fLIDtmRNHnQ== + +stylelint-config-standard@^20.0.0: + version "20.0.0" + resolved "https://registry.yarnpkg.com/stylelint-config-standard/-/stylelint-config-standard-20.0.0.tgz#06135090c9e064befee3d594289f50e295b5e20d" + integrity sha512-IB2iFdzOTA/zS4jSVav6z+wGtin08qfj+YyExHB3LF9lnouQht//YyB0KZq9gGz5HNPkddHOzcY8HsUey6ZUlA== + dependencies: + stylelint-config-recommended "^3.0.0" + +stylelint-csstree-validator@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/stylelint-csstree-validator/-/stylelint-csstree-validator-1.9.0.tgz#9f7971d87bf525f54e20434329fa5e27ee4e9491" + integrity sha512-fVbtWDEWzux/bZSPBk9tD/bvyc8bSmb52BvUDjcduOzXqKqOyFHUvFayVr9ic88l8KJEVV0Ujab9ah5oTdX4Uw== + dependencies: + css-tree "^1.0.0" + +stylelint-scss@^3.17.2: + version "3.19.0" + resolved "https://registry.yarnpkg.com/stylelint-scss/-/stylelint-scss-3.19.0.tgz#528006d5a4c5a0f1f4d709b02fd3f626ed66d742" + integrity sha512-Ic5bsmpS4wVucOw44doC1Yi9f5qbeVL4wPFiEOaUElgsOuLEN6Ofn/krKI8BeNL2gAn53Zu+IcVV4E345r6rBw== + dependencies: + lodash "^4.17.15" + postcss-media-query-parser "^0.2.3" + postcss-resolve-nested-selector "^0.1.1" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +stylelint@^13.3.3: + version "13.13.1" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-13.13.1.tgz#fca9c9f5de7990ab26a00f167b8978f083a18f3c" + integrity sha512-Mv+BQr5XTUrKqAXmpqm6Ddli6Ief+AiPZkRsIrAoUKFuq/ElkUh9ZMYxXD0iQNZ5ADghZKLOWz1h7hTClB7zgQ== + dependencies: + "@stylelint/postcss-css-in-js" "^0.37.2" + "@stylelint/postcss-markdown" "^0.36.2" + autoprefixer "^9.8.6" + balanced-match "^2.0.0" + chalk "^4.1.1" + cosmiconfig "^7.0.0" + debug "^4.3.1" + execall "^2.0.0" + fast-glob "^3.2.5" + fastest-levenshtein "^1.0.12" + file-entry-cache "^6.0.1" + get-stdin "^8.0.0" + global-modules "^2.0.0" + globby "^11.0.3" + globjoin "^0.1.4" + html-tags "^3.1.0" + ignore "^5.1.8" + import-lazy "^4.0.0" + imurmurhash "^0.1.4" + known-css-properties "^0.21.0" + lodash "^4.17.21" + log-symbols "^4.1.0" + mathml-tag-names "^2.1.3" + meow "^9.0.0" + micromatch "^4.0.4" + normalize-selector "^0.2.0" + postcss "^7.0.35" + postcss-html "^0.36.0" + postcss-less "^3.1.4" + postcss-media-query-parser "^0.2.3" + postcss-resolve-nested-selector "^0.1.1" + postcss-safe-parser "^4.0.2" + postcss-sass "^0.4.4" + postcss-scss "^2.1.1" + postcss-selector-parser "^6.0.5" + postcss-syntax "^0.36.2" + postcss-value-parser "^4.1.0" + resolve-from "^5.0.0" + slash "^3.0.0" + specificity "^0.4.1" + string-width "^4.2.2" + strip-ansi "^6.0.0" + style-search "^0.1.0" + sugarss "^2.0.0" + svg-tags "^1.0.0" + table "^6.6.0" + v8-compile-cache "^2.3.0" + write-file-atomic "^3.0.3" + +sugarss@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-2.0.0.tgz#ddd76e0124b297d40bf3cca31c8b22ecb43bc61d" + integrity sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ== + dependencies: + postcss "^7.0.2" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +svg-tags@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" + integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q= + +table@^6.6.0: + version "6.7.1" + resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" + integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== + dependencies: + ajv "^8.0.1" + lodash.clonedeep "^4.5.0" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.0" + strip-ansi "^6.0.0" + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +trim-newlines@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" + integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== + +trough@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" + integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== + +type-fest@^0.18.0: + version "0.18.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" + integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +unified@^9.1.0: + version "9.2.1" + resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.1.tgz#ae18d5674c114021bfdbdf73865ca60f410215a3" + integrity sha512-juWjuI8Z4xFg8pJbnEZ41b5xjGUWGHqXALmBZ3FC3WX0PIx1CZBIIJ6mXbYMcf6Yw4Fi0rFUTA1cdz/BglbOhA== + dependencies: + bail "^1.0.0" + extend "^3.0.0" + is-buffer "^2.0.0" + is-plain-obj "^2.0.0" + trough "^1.0.0" + vfile "^4.0.0" + +unist-util-find-all-after@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz#fdfecd14c5b7aea5e9ef38d5e0d5f774eeb561f6" + integrity sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ== + dependencies: + unist-util-is "^4.0.0" + +unist-util-is@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.1.0.tgz#976e5f462a7a5de73d94b706bac1b90671b57797" + integrity sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg== + +unist-util-stringify-position@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da" + integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g== + dependencies: + "@types/unist" "^2.0.2" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +util-deprecate@^1.0.1, util-deprecate@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +v8-compile-cache@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +vfile-message@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a" + integrity sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ== + dependencies: + "@types/unist" "^2.0.0" + unist-util-stringify-position "^2.0.0" + +vfile@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.2.1.tgz#03f1dce28fc625c625bc6514350fbdb00fa9e624" + integrity sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA== + dependencies: + "@types/unist" "^2.0.0" + is-buffer "^2.0.0" + unist-util-stringify-position "^2.0.0" + vfile-message "^2.0.0" + +which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yargs-parser@^20.2.3: + version "20.2.7" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a" + integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== + +zwitch@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920" + integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw== From 79cfe975ea8663b7f151e432a6a74816d78359f2 Mon Sep 17 00:00:00 2001 From: Moises Hernandez Date: Thu, 17 Jun 2021 16:12:21 +0200 Subject: [PATCH 08/17] Udd PK on User Comment & Freinship tables or erd --- docs/erd4.png | Bin 41253 -> 0 bytes docs/erd5.png | Bin 0 -> 54793 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/erd4.png create mode 100644 docs/erd5.png diff --git a/docs/erd4.png b/docs/erd4.png deleted file mode 100644 index 6396be2b71a14d06d22a261560e544abfab4a762..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41253 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 diff --git a/docs/erd5.png b/docs/erd5.png new file mode 100644 index 0000000000000000000000000000000000000000..ff8b1f3a439398dcb5981387d47d1c4cf08a09c0 GIT binary patch literal 54793 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 MvYv6=e97kj12MYki~s-t literal 0 HcmV?d00001 From c274ff2589ea53dcbbec089b84dec68e2f413614 Mon Sep 17 00:00:00 2001 From: Moises Hernandez Date: Thu, 17 Jun 2021 17:20:43 +0200 Subject: [PATCH 09/17] Update create acction --- app/controllers/friendships_controller.rb | 4 +++- app/views/users/_user.html.erb | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/controllers/friendships_controller.rb b/app/controllers/friendships_controller.rb index b6d9e7c46e..40d218af60 100644 --- a/app/controllers/friendships_controller.rb +++ b/app/controllers/friendships_controller.rb @@ -24,6 +24,9 @@ def edit # POST /friendships # POST /friendships.json def create + @friend = User.find(params{:friend_id}) + @friendship = current_user.build(friend_id: friend.id) + @friendship = Friendship.new(friendship_params) respond_to do |format| @@ -36,7 +39,6 @@ def create end end end - # PATCH/PUT /friendships/1 # PATCH/PUT /friendships/1.json def update diff --git a/app/views/users/_user.html.erb b/app/views/users/_user.html.erb index e03c4beb3f..ebb7a38ab2 100644 --- a/app/views/users/_user.html.erb +++ b/app/views/users/_user.html.erb @@ -2,5 +2,6 @@ Name: <%= user.name %> <%= link_to 'See Profile', user_path(user), class: 'profile-link' %> + <%= button_to 'Invite to friendship', { controller: 'friendship', action: 'create', :friend_id => user.id },:method => post %> \ No newline at end of file From 4bee18cad79958c5a750b0ed0eb43cac74f88430 Mon Sep 17 00:00:00 2001 From: ivana Date: Thu, 17 Jun 2021 17:54:11 +0200 Subject: [PATCH 10/17] Add create method for friendship --- app/controllers/friendships_controller.rb | 17 ++++++++++++----- app/views/posts/_post.html.erb | 2 +- app/views/users/_user.html.erb | 4 ++-- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/app/controllers/friendships_controller.rb b/app/controllers/friendships_controller.rb index 40d218af60..93be4ac7b2 100644 --- a/app/controllers/friendships_controller.rb +++ b/app/controllers/friendships_controller.rb @@ -1,5 +1,6 @@ class FriendshipsController < ApplicationController before_action :set_friendship, only: [:show, :edit, :update, :destroy] + before_action :authenticate_user!, only: [:index, :show] # GET /friendships # GET /friendships.json @@ -24,12 +25,18 @@ def edit # POST /friendships # POST /friendships.json def create - @friend = User.find(params{:friend_id}) - @friendship = current_user.build(friend_id: friend.id) - - @friendship = Friendship.new(friendship_params) + friend = User.find(params[:friend_id]) + if Friendship.where(user_id: current_user.id, friend_id: friend.id).exists? + redirect_to root_path, notice: "Frend request already sent" + return + elsif current_user == friend + redirect_to root_path, notice: "You can't send request to yourself" + return + end + + @friendship = current_user.friendships.build(friend_id: friend.id) - respond_to do |format| + respond_to do |format| if @friendship.save format.html { redirect_to @friendship, notice: 'Friendship was successfully created.' } format.json { render :show, status: :created, location: @friendship } diff --git a/app/views/posts/_post.html.erb b/app/views/posts/_post.html.erb index 271625b734..1317d8ea43 100644 --- a/app/views/posts/_post.html.erb +++ b/app/views/posts/_post.html.erb @@ -1,7 +1,7 @@
  • - <%= link_to post.user.name, user_path(post.user), class: 'post-author' %> + <%#<%= link_to post.user.name, user_path(post.user), class: 'post-author' %>
    diff --git a/app/views/users/_user.html.erb b/app/views/users/_user.html.erb index ebb7a38ab2..41f04e9135 100644 --- a/app/views/users/_user.html.erb +++ b/app/views/users/_user.html.erb @@ -2,6 +2,6 @@ Name: <%= user.name %> <%= link_to 'See Profile', user_path(user), class: 'profile-link' %> - <%= button_to 'Invite to friendship', { controller: 'friendship', action: 'create', :friend_id => user.id },:method => post %> + <%= button_to 'Invite to friendship', { :controller => "friendships", :action => "create", :friend_id => user.id }, method: :post %> -
  • \ No newline at end of file + From 68ebeb707a2b5f7c9bf64584c6121b3a44795743 Mon Sep 17 00:00:00 2001 From: ivana Date: Fri, 18 Jun 2021 12:25:10 +0200 Subject: [PATCH 11/17] Tests added --- Gemfile | 3 +- Gemfile.lock | 30 ++++++----- app/controllers/friendships_controller.rb | 2 +- app/controllers/users_controller.rb | 1 + app/views/users/show.html.erb | 10 ++++ spec/Model/comment_spec.rb | 15 ++++++ spec/Model/friendship_spec.rb | 15 ++++++ spec/Model/like_spec.rb | 15 ++++++ spec/Model/post_spec.rb | 20 +++++++ spec/Model/user_spec.rb | 24 +++++++++ spec/rails_helper.rb | 66 +++++++++++++++++++++++ 11 files changed, 186 insertions(+), 15 deletions(-) create mode 100644 spec/Model/comment_spec.rb create mode 100644 spec/Model/friendship_spec.rb create mode 100644 spec/Model/like_spec.rb create mode 100644 spec/Model/post_spec.rb create mode 100644 spec/Model/user_spec.rb create mode 100644 spec/rails_helper.rb diff --git a/Gemfile b/Gemfile index 67b156b339..826881d213 100644 --- a/Gemfile +++ b/Gemfile @@ -42,10 +42,11 @@ gem 'devise' group :development, :test do # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug', platforms: %i[mri mingw x64_mingw] + gem 'rspec-rails', '~> 5.0', '>= 5.0.1' end group :test do - gem 'rspec' + gem 'rspec-rails', '~> 5.0', '>= 5.0.1' end group :development do diff --git a/Gemfile.lock b/Gemfile.lock index 5532c5def5..df26e68807 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -65,7 +65,7 @@ GEM railties (>= 4.1.0) responders warden (~> 1.2.3) - diff-lcs (1.3) + diff-lcs (1.4.4) erubi (1.9.0) execjs (2.7.0) ffi (1.12.2) @@ -147,19 +147,23 @@ GEM actionpack (>= 5.0) railties (>= 5.0) rexml (3.2.4) - rspec (3.9.0) - rspec-core (~> 3.9.0) - rspec-expectations (~> 3.9.0) - rspec-mocks (~> 3.9.0) - rspec-core (3.9.1) - rspec-support (~> 3.9.1) - rspec-expectations (3.9.1) + rspec-core (3.10.1) + rspec-support (~> 3.10.0) + rspec-expectations (3.10.1) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.9.0) - rspec-mocks (3.9.1) + rspec-support (~> 3.10.0) + rspec-mocks (3.10.2) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.9.0) - rspec-support (3.9.2) + rspec-support (~> 3.10.0) + rspec-rails (5.0.1) + actionpack (>= 5.2) + activesupport (>= 5.2) + railties (>= 5.2) + rspec-core (~> 3.10) + rspec-expectations (~> 3.10) + rspec-mocks (~> 3.10) + rspec-support (~> 3.10) + rspec-support (3.10.2) rubocop (0.80.1) jaro_winkler (~> 1.5.1) parallel (~> 1.10) @@ -230,7 +234,7 @@ DEPENDENCIES pg (>= 0.18, < 2.0) puma (~> 3.12) rails (~> 5.2.4) - rspec + rspec-rails (~> 5.0, >= 5.0.1) rubocop sass-rails (~> 5.0) spring diff --git a/app/controllers/friendships_controller.rb b/app/controllers/friendships_controller.rb index 93be4ac7b2..b11683f1e7 100644 --- a/app/controllers/friendships_controller.rb +++ b/app/controllers/friendships_controller.rb @@ -38,7 +38,7 @@ def create respond_to do |format| if @friendship.save - format.html { redirect_to @friendship, notice: 'Friendship was successfully created.' } + format.html { redirect_to @friendship, notice: 'Friend request sent' } format.json { render :show, status: :created, location: @friendship } else format.html { render :new } diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index b0350d70e4..28ca6f045a 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -8,5 +8,6 @@ def index def show @user = User.find(params[:id]) @posts = @user.posts.ordered_by_most_recent + @received = current_user.friendships.where(:friend_id => current_user.id, :confirmed => false) end end diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb index e9919805de..be5f1e8f90 100644 --- a/app/views/users/show.html.erb +++ b/app/views/users/show.html.erb @@ -5,5 +5,15 @@
      <%= render @posts %>
    + <%= button_to 'Invite to friendship', { :controller => "friendships", :action => "create", :friend_id => @user.id }, method: :post %> +
    +

    Received friend requests

    +
      + <% @received.each do |received| %> + <%= received.user.name%> + <% end%> +
    +
    + diff --git a/spec/Model/comment_spec.rb b/spec/Model/comment_spec.rb new file mode 100644 index 0000000000..7c6f3f5c36 --- /dev/null +++ b/spec/Model/comment_spec.rb @@ -0,0 +1,15 @@ +require 'rails_helper' + +RSpec.describe Comment, type: :model do + + it 'belong to post' do + t = Comment.reflect_on_association(:post) + expect(t.macro).to eq(:belongs_to) + end + + it 'belong to user' do + t = Comment.reflect_on_association(:user) + expect(t.macro).to eq(:belongs_to) + end + +end diff --git a/spec/Model/friendship_spec.rb b/spec/Model/friendship_spec.rb new file mode 100644 index 0000000000..a5288a7c0c --- /dev/null +++ b/spec/Model/friendship_spec.rb @@ -0,0 +1,15 @@ +require 'rails_helper' + +RSpec.describe Friendship, type: :model do + + it 'belong to user' do + t = Friendship.reflect_on_association(:user) + expect(t.macro).to eq(:belongs_to) + end + + it 'belong to friend' do + t = Friendship.reflect_on_association(:friend) + expect(t.macro).to eq(:belongs_to) + end + +end diff --git a/spec/Model/like_spec.rb b/spec/Model/like_spec.rb new file mode 100644 index 0000000000..9c128c568b --- /dev/null +++ b/spec/Model/like_spec.rb @@ -0,0 +1,15 @@ +require 'rails_helper' + +RSpec.describe Like, type: :model do + + it 'belong to user' do + t = Like.reflect_on_association(:user) + expect(t.macro).to eq(:belongs_to) + end + + it 'belong to post' do + t = Like.reflect_on_association(:post) + expect(t.macro).to eq(:belongs_to) + end + +end diff --git a/spec/Model/post_spec.rb b/spec/Model/post_spec.rb new file mode 100644 index 0000000000..58b1b633ae --- /dev/null +++ b/spec/Model/post_spec.rb @@ -0,0 +1,20 @@ +require 'rails_helper' + +RSpec.describe Post, type: :model do + + it 'belong to user' do + t = Post.reflect_on_association(:user) + expect(t.macro).to eq(:belongs_to) + end + + it 'should have many comments' do + t = Post.reflect_on_association(:comments) + expect(t.macro).to eq(:has_many) + end + + it 'should have many likes' do + t = Post.reflect_on_association(:likes) + expect(t.macro).to eq(:has_many) + end + +end diff --git a/spec/Model/user_spec.rb b/spec/Model/user_spec.rb new file mode 100644 index 0000000000..a097d6817d --- /dev/null +++ b/spec/Model/user_spec.rb @@ -0,0 +1,24 @@ +require 'rails_helper' + +RSpec.describe User, type: :model do + + it 'should have many posts' do + t = User.reflect_on_association(:posts) + expect(t.macro).to eq(:has_many) + end + + it 'should have many comments' do + t = User.reflect_on_association(:comments) + expect(t.macro).to eq(:has_many) + end + + it 'should have many likes' do + t = User.reflect_on_association(:likes) + expect(t.macro).to eq(:has_many) + end + + it 'should have many friendships' do + t = User.reflect_on_association(:friendships) + expect(t.macro).to eq(:has_many) + end +end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb new file mode 100644 index 0000000000..b6e80c634e --- /dev/null +++ b/spec/rails_helper.rb @@ -0,0 +1,66 @@ +# This file is copied to spec/ when you run 'rails generate rspec:install' +require 'spec_helper' +ENV['RAILS_ENV'] ||= 'test' +require File.expand_path('../config/environment', __dir__) +# Prevent database truncation if the environment is production +abort('The Rails environment is running in production mode!') if Rails.env.production? +require 'rspec/rails' +# Add additional requires below this line. Rails is not loaded until this point! + +# Requires supporting ruby files with custom matchers and macros, etc, in +# spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are +# run as spec files by default. This means that files in spec/support that end +# in _spec.rb will both be required and run as specs, causing the specs to be +# run twice. It is recommended that you do not name files matching this glob to +# end with _spec.rb. You can configure this pattern with the --pattern +# option on the command line or in ~/.rspec, .rspec or `.rspec-local`. +# +# The following line is provided for convenience purposes. It has the downside +# of increasing the boot-up time by auto-requiring all files in the support +# directory. Alternatively, in the individual `*_spec.rb` files, manually +# require only the support files necessary. +# +# Dir[Rails.root.join('spec', 'support', '**', '*.rb')].sort.each { |f| require f } + +# Checks for pending migrations and applies them before tests are run. +# If you are not using ActiveRecord, you can remove these lines. +begin + ActiveRecord::Migration.maintain_test_schema! +rescue ActiveRecord::PendingMigrationError => e + puts e.to_s.strip + exit 1 +end +RSpec.configure do |config| + # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures + config.fixture_path = "#{::Rails.root}/spec/fixtures" + + # If you're not using ActiveRecord, or you'd prefer not to run each of your + # examples within a transaction, remove the following line or assign false + # instead of true. + config.use_transactional_fixtures = true + + # You can uncomment this line to turn off ActiveRecord support entirely. + # config.use_active_record = false + + # RSpec Rails can automatically mix in different behaviours to your tests + # based on their file location, for example enabling you to call `get` and + # `post` in specs under `spec/controllers`. + # + # You can disable this behaviour by removing the line below, and instead + # explicitly tag your specs with their type, e.g.: + # + # RSpec.describe UsersController, type: :controller do + # # ... + # end + # + # The different available types are documented in the features, such as in + # https://relishapp.com/rspec/rspec-rails/docs + config.infer_spec_type_from_file_location! + + # Filter lines from Rails gems in backtraces. + config.filter_rails_from_backtrace! + # arbitrary gems may also be filtered via: + # config.filter_gems_from_backtrace("gem name") +end + + From 2baf0b10a4ae1e61b0469998ea019e472fc6aba1 Mon Sep 17 00:00:00 2001 From: ivana Date: Fri, 18 Jun 2021 15:55:23 +0200 Subject: [PATCH 12/17] Invitation management added --- app/controllers/friendships_controller.rb | 6 +++--- app/controllers/users_controller.rb | 3 ++- app/views/friendships/_form.html.erb | 10 ---------- app/views/friendships/edit.html.erb | 2 +- app/views/users/show.html.erb | 3 +++ config/routes.rb | 2 ++ 6 files changed, 11 insertions(+), 15 deletions(-) diff --git a/app/controllers/friendships_controller.rb b/app/controllers/friendships_controller.rb index b11683f1e7..ed8a538ab9 100644 --- a/app/controllers/friendships_controller.rb +++ b/app/controllers/friendships_controller.rb @@ -38,7 +38,7 @@ def create respond_to do |format| if @friendship.save - format.html { redirect_to @friendship, notice: 'Friend request sent' } + format.html { redirect_to users_path, notice: 'Friend request sent' } format.json { render :show, status: :created, location: @friendship } else format.html { render :new } @@ -51,7 +51,7 @@ def create def update respond_to do |format| if @friendship.update(friendship_params) - format.html { redirect_to @friendship, notice: 'Friendship was successfully updated.' } + format.html { redirect_to @friendship, notice: 'Friend request accepted.' } format.json { render :show, status: :ok, location: @friendship } else format.html { render :edit } @@ -65,7 +65,7 @@ def update def destroy @friendship.destroy respond_to do |format| - format.html { redirect_to friendships_url, notice: 'Friendship was successfully destroyed.' } + format.html { redirect_to users_path, notice: 'Friendship was declined' } format.json { head :no_content } end end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 28ca6f045a..c3bc354425 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -8,6 +8,7 @@ def index def show @user = User.find(params[:id]) @posts = @user.posts.ordered_by_most_recent - @received = current_user.friendships.where(:friend_id => current_user.id, :confirmed => false) + @received = Friendship.where(:friend_id => @user.id, :confirmed => false) end + end diff --git a/app/views/friendships/_form.html.erb b/app/views/friendships/_form.html.erb index 3e51e218f7..3de8549842 100644 --- a/app/views/friendships/_form.html.erb +++ b/app/views/friendships/_form.html.erb @@ -11,16 +11,6 @@ <% end %> -
    - <%= form.label :user_id %> - <%= form.text_field :user_id %> -
    - -
    - <%= form.label :friend_id %> - <%= form.text_field :friend_id %> -
    -
    <%= form.label :confirmed %> <%= form.check_box :confirmed %> diff --git a/app/views/friendships/edit.html.erb b/app/views/friendships/edit.html.erb index efb6a8feaf..6822ee0037 100644 --- a/app/views/friendships/edit.html.erb +++ b/app/views/friendships/edit.html.erb @@ -2,5 +2,5 @@ <%= render 'form', friendship: @friendship %> -<%= link_to 'Show', @friendship %> | + <%= link_to 'Back', friendships_path %> diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb index be5f1e8f90..4e544f3aa9 100644 --- a/app/views/users/show.html.erb +++ b/app/views/users/show.html.erb @@ -12,6 +12,9 @@
      <% @received.each do |received| %> <%= received.user.name%> + <%= link_to 'Accept', edit_friendship_path(received) %> + <%= link_to 'Deny', destroy_path(received), method: :delete, data: { confirm: 'Are you sure?' } %> +
      <% end%>
    diff --git a/config/routes.rb b/config/routes.rb index 02a90668ac..c2233a0c4b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -4,6 +4,8 @@ root 'posts#index' devise_for :users + + get 'friendships/:id', to: 'friendships#destroy', as: 'destroy' resources :users, only: [:index, :show] resources :posts, only: [:index, :create] do From a790d0f0ac63d91c42c214db179ad8f4e70d0536 Mon Sep 17 00:00:00 2001 From: Moises Hernandez Date: Fri, 18 Jun 2021 16:33:27 +0200 Subject: [PATCH 13/17] Fix linters --- .github/workflows/linters.yml | 36 +++++++++++++ .rubocop.yml | 48 +++++++++++++++++ Gemfile | 51 +++++++++++++++++++ app/controllers/friendships_controller.rb | 38 +++++++------- app/controllers/users_controller.rb | 3 +- app/models/friendship.rb | 2 +- app/models/user.rb | 6 +-- app/views/friendships/index.json.jbuilder | 2 +- app/views/friendships/show.json.jbuilder | 2 +- config/routes.rb | 8 +-- .../20210617133705_create_friendships.rb | 2 +- db/schema.rb | 47 +++++------------ db/seeds.rb | 3 +- spec/Model/comment_spec.rb | 4 +- spec/Model/friendship_spec.rb | 4 +- spec/Model/like_spec.rb | 4 +- spec/Model/post_spec.rb | 10 ++-- spec/Model/user_spec.rb | 5 +- spec/rails_helper.rb | 2 - 19 files changed, 187 insertions(+), 90 deletions(-) create mode 100644 .github/workflows/linters.yml create mode 100644 .rubocop.yml create mode 100644 Gemfile diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml new file mode 100644 index 0000000000..9ada6f4105 --- /dev/null +++ b/.github/workflows/linters.yml @@ -0,0 +1,36 @@ +name: Linters + +on: pull_request + +env: + FORCE_COLOR: 1 + +jobs: + rubocop: + name: Rubocop + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-ruby@v1 + with: + ruby-version: 3.0.x + - name: Setup Rubocop + run: | + gem install --no-document rubocop -v '>= 1.0, < 2.0' # https://docs.rubocop.org/en/stable/installation/ + [ -f .rubocop.yml ] || wget https://raw.githubusercontent.com/microverseinc/linters-config/master/ror/.rubocop.yml + - name: Rubocop Report + run: rubocop --color + stylelint: + name: Stylelint + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v1 + with: + node-version: "12.x" + - name: Setup Stylelint + run: | + npm install --save-dev stylelint@13.x stylelint-scss@3.x stylelint-config-standard@21.x stylelint-csstree-validator@1.x + [ -f .stylelintrc.json ] || wget https://raw.githubusercontent.com/microverseinc/linters-config/master/ror/.stylelintrc.json + - name: Stylelint Report + run: npx stylelint "**/*.{css,scss}" diff --git a/.rubocop.yml b/.rubocop.yml new file mode 100644 index 0000000000..e413bc9b55 --- /dev/null +++ b/.rubocop.yml @@ -0,0 +1,48 @@ +AllCops: + NewCops: enable + Exclude: + - "Guardfile" + - "Rakefile" + - "node_modules/**/*" + + DisplayCopNames: true + +Layout/LineLength: + Max: 120 +Metrics/MethodLength: + Max: 20 +Metrics/AbcSize: + Max: 50 +Metrics/ClassLength: + Max: 150 +Metrics/BlockLength: + IgnoredMethods: ['describe'] + Max: 30 + + +Style/Documentation: + Enabled: false +Style/ClassAndModuleChildren: + Enabled: false +Style/EachForSimpleLoop: + Enabled: false +Style/AndOr: + Enabled: false +Style/DefWithParentheses: + Enabled: false +Style/FrozenStringLiteralComment: + EnforcedStyle: never + +Layout/HashAlignment: + EnforcedColonStyle: key +Layout/ExtraSpacing: + AllowForAlignment: false +Layout/MultilineMethodCallIndentation: + Enabled: true + EnforcedStyle: indented +Style/HashEachMethods: + Enabled: false +Style/HashTransformKeys: + Enabled: false +Style/HashTransformValues: + Enabled: false diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000000..ac89d266c9 --- /dev/null +++ b/Gemfile @@ -0,0 +1,51 @@ +source 'https://rubygems.org' +git_source(:github) { |repo| "https://github.com/#{repo}.git" } +ruby '2.7.0' +# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' +gem 'rails', '~> 5.2.4' +# Use postgresql as the database for Active Record +gem 'pg', '>= 0.18', '< 2.0' +# Use Puma as the app server +gem 'puma', '~> 3.12' +# Use SCSS for stylesheets +gem 'sass-rails', '~> 5.0' +# Use Uglifier as compressor for JavaScript assets +gem 'uglifier', '>= 1.3.0' +# See https://github.com/rails/execjs#readme for more supported runtimes +# gem 'mini_racer', platforms: :ruby +# Use CoffeeScript for .coffee assets and views +gem 'coffee-rails', '~> 4.2' +# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks +gem 'turbolinks', '~> 5' +# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder +gem 'jbuilder', '~> 2.5' +# Use Redis adapter to run Action Cable in production +# gem 'redis', '~> 4.0' +# Use ActiveModel has_secure_password +# gem 'bcrypt', '~> 3.1.7' +# Install wdm Gem if the platform is Windows +gem 'wdm', '>= 0.1.0' if Gem.win_platform? +# Use ActiveStorage variant +# gem 'mini_magick', '~> 4.8' +# Use Capistrano for deployment +# gem 'capistrano-rails', group: :development +# Reduces boot times through caching; required in config/boot.rb +gem 'bootsnap', '>= 1.1.0', require: false +gem 'devise' +group :development, :test do + # Call 'byebug' anywhere in the code to stop execution and get a debugger console + gem 'byebug', platforms: %i[mri mingw x64_mingw] + gem 'rspec-rails', '~> 5.0', '>= 5.0.1' +end + +group :development do + # Access an interactive console on exception pages or by calling 'console' anywhere in the code. + gem 'listen', '>= 3.0.5', '< 3.2' + gem 'web-console', '>= 3.3.0' + # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring + gem 'rubocop' + gem 'spring' + gem 'spring-watcher-listen', '~> 2.0.0' +end +# Windows does not include zoneinfo files, so bundle the tzinfo-data gem +gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw jruby] diff --git a/app/controllers/friendships_controller.rb b/app/controllers/friendships_controller.rb index d53d38419f..5b50d94393 100644 --- a/app/controllers/friendships_controller.rb +++ b/app/controllers/friendships_controller.rb @@ -1,6 +1,6 @@ class FriendshipsController < ApplicationController - before_action :set_friendship, only: [:show, :edit, :update, :destroy] - before_action :authenticate_user!, only: [:index, :show] + before_action :set_friendship, only: %i[show edit update destroy] + before_action :authenticate_user!, only: %i[index show] # GET /friendships # GET /friendships.json @@ -10,8 +10,7 @@ def index # GET /friendships/1 # GET /friendships/1.json - def show - end + def show; end # GET /friendships/new def new @@ -19,24 +18,23 @@ def new end # GET /friendships/1/edit - def edit - end + def edit; end # POST /friendships # POST /friendships.json def create - friend = User.find(params[:friend_id]) + friend = User.find(params[:friend_id]) if Friendship.where(user_id: current_user.id, friend_id: friend.id).exists? - redirect_to root_path, notice: "Frend request already sent" + redirect_to root_path, notice: 'Frend request already sent' return elsif current_user == friend redirect_to root_path, notice: "You can't send request to yourself" return end - - @friendship = current_user.friendships.build(friend_id: friend.id) - respond_to do |format| + @friendship = current_user.friendships.build(friend_id: friend.id) + + respond_to do |format| if @friendship.save format.html { redirect_to users_path, notice: 'Friend request sent' } format.json { render :show, status: :created, location: @friendship } @@ -46,6 +44,7 @@ def create end end end + # PATCH/PUT /friendships/1 # PATCH/PUT /friendships/1.json def update @@ -71,13 +70,14 @@ def destroy end private - # Use callbacks to share common setup or constraints between actions. - def set_friendship - @friendship = Friendship.find(params[:id]) - end - # Only allow a list of trusted parameters through. - def friendship_params - params.require(:friendship).permit(:user_id, :friend_id, :confirmed) - end + # Use callbacks to share common setup or constraints between actions. + def set_friendship + @friendship = Friendship.find(params[:id]) + end + + # Only allow a list of trusted parameters through. + def friendship_params + params.require(:friendship).permit(:user_id, :friend_id, :confirmed) + end end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index c3bc354425..e5a4014e01 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -8,7 +8,6 @@ def index def show @user = User.find(params[:id]) @posts = @user.posts.ordered_by_most_recent - @received = Friendship.where(:friend_id => @user.id, :confirmed => false) + @received = Friendship.where(friend_id: @user.id, confirmed: false) end - end diff --git a/app/models/friendship.rb b/app/models/friendship.rb index fa783ddd12..b334b963e5 100644 --- a/app/models/friendship.rb +++ b/app/models/friendship.rb @@ -1,4 +1,4 @@ class Friendship < ApplicationRecord belongs_to :user - belongs_to :friend, class_name: "User" + belongs_to :friend, class_name: 'User' end diff --git a/app/models/user.rb b/app/models/user.rb index 86a69500ef..01b89ad65b 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -9,7 +9,7 @@ class User < ApplicationRecord has_many :posts has_many :comments, dependent: :destroy has_many :likes, dependent: :destroy - - has_many :friendships, foreign_key: "user_id" - has_many :inverse_friendships, class_name: "Friendship", foreign_key: "friend_id" + + has_many :friendships, foreign_key: 'user_id' + has_many :inverse_friendships, class_name: 'Friendship', foreign_key: 'friend_id' end diff --git a/app/views/friendships/index.json.jbuilder b/app/views/friendships/index.json.jbuilder index 7cbe0359f0..b917939e97 100644 --- a/app/views/friendships/index.json.jbuilder +++ b/app/views/friendships/index.json.jbuilder @@ -1 +1 @@ -json.array! @friendships, partial: "friendships/friendship", as: :friendship +json.array! @friendships, partial: 'friendships/friendship', as: :friendship diff --git a/app/views/friendships/show.json.jbuilder b/app/views/friendships/show.json.jbuilder index a3e7a28076..6c0c28e529 100644 --- a/app/views/friendships/show.json.jbuilder +++ b/app/views/friendships/show.json.jbuilder @@ -1 +1 @@ -json.partial! "friendships/friendship", friendship: @friendship +json.partial! 'friendships/friendship', friendship: @friendship diff --git a/config/routes.rb b/config/routes.rb index e83c3a8549..00616ecc7e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,14 +1,10 @@ Rails.application.routes.draw do -<<<<<<< HEAD - resources :friendships -======= ->>>>>>> erb root 'posts#index' devise_for :users - - get 'friendships/:id', to: 'friendships#destroy', as: 'destroy' + + get 'friendships/:id', to: 'friendships#destroy', as: 'destroy' resources :users, only: %i[index show] resources :posts, only: %i[index create] do diff --git a/db/migrate/20210617133705_create_friendships.rb b/db/migrate/20210617133705_create_friendships.rb index 4227b9b2dd..2199095fb8 100644 --- a/db/migrate/20210617133705_create_friendships.rb +++ b/db/migrate/20210617133705_create_friendships.rb @@ -7,6 +7,6 @@ def change t.timestamps null: false end - add_foreign_key :friendships, :users, column: :friend_id + add_foreign_key :friendships, :users, column: :friend_id end end diff --git a/db/schema.rb b/db/schema.rb index 22d68820a8..cd5daa5e39 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -7,19 +7,12 @@ # system, you should be using db:schema:load, not running all the migrations # from scratch. The latter is a flawed and unsustainable approach (the more migrations # you'll amass, the slower it'll run and the greater likelihood for issues). -# -# It's strongly recommended that you check this file into your version control system. -<<<<<<< HEAD -ActiveRecord::Schema.define(version: 2021_06_17_133705) do -======= # rubocop: disable Metrics/BlockLength ->>>>>>> erb - -ActiveRecord::Schema.define(version: 20_200_204_165_841) do +# It's strongly recommended that you check this file into your version control system. +ActiveRecord::Schema.define(version: 20_210_617_133_705) do # These are extensions that must be enabled in order to support this database enable_extension 'plpgsql' - create_table 'comments', force: :cascade do |t| t.integer 'user_id' t.integer 'post_id' @@ -29,32 +22,21 @@ t.index ['post_id'], name: 'index_comments_on_post_id' t.index ['user_id'], name: 'index_comments_on_user_id' end - -<<<<<<< HEAD - create_table "friendships", force: :cascade do |t| - t.bigint "user_id" - t.bigint "friend_id" - t.boolean "confirmed", default: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.index ["friend_id"], name: "index_friendships_on_friend_id" - t.index ["user_id"], name: "index_friendships_on_user_id" + create_table 'friendships', force: :cascade do |t| + t.bigint 'user_id' + t.bigint 'friend_id' + t.boolean 'confirmed', default: false + t.datetime 'created_at', null: false + t.datetime 'updated_at', null: false + t.index ['friend_id'], name: 'index_friendships_on_friend_id' + t.index ['user_id'], name: 'index_friendships_on_user_id' end - - create_table "likes", force: :cascade do |t| - t.integer "post_id" - t.integer "user_id" - t.index ["post_id"], name: "index_likes_on_post_id" - t.index ["user_id"], name: "index_likes_on_user_id" -======= create_table 'likes', force: :cascade do |t| t.integer 'post_id' t.integer 'user_id' t.index ['post_id'], name: 'index_likes_on_post_id' t.index ['user_id'], name: 'index_likes_on_user_id' ->>>>>>> erb end - create_table 'posts', force: :cascade do |t| t.integer 'user_id' t.text 'content' @@ -62,7 +44,6 @@ t.datetime 'updated_at', null: false t.index ['user_id'], name: 'index_posts_on_user_id' end - create_table 'users', force: :cascade do |t| t.string 'email', default: '', null: false t.string 'encrypted_password', default: '', null: false @@ -76,12 +57,8 @@ t.index ['email'], name: 'index_users_on_email', unique: true t.index ['reset_password_token'], name: 'index_users_on_reset_password_token', unique: true end -<<<<<<< HEAD - - add_foreign_key "friendships", "users" - add_foreign_key "friendships", "users", column: "friend_id" -======= ->>>>>>> erb + add_foreign_key 'friendships', 'users' + add_foreign_key 'friendships', 'users', column: 'friend_id' end # rubocop: enable Metrics/BlockLength diff --git a/db/seeds.rb b/db/seeds.rb index 218c950bb2..398dbb8981 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -7,5 +7,6 @@ # Character.create(name: 'Luke', movie: movies.first) 10.times do |index| - User.create(name: "Doe#{index}", email: "doe#{index}@gamil.com", password: "#{index}123456", password_confirmation: "#{index}123456") + User.create(name: "Doe#{index}", email: "doe#{index}@gamil.com", password: "#{index}123456", + password_confirmation: "#{index}123456") end diff --git a/spec/Model/comment_spec.rb b/spec/Model/comment_spec.rb index 7c6f3f5c36..c58ac58891 100644 --- a/spec/Model/comment_spec.rb +++ b/spec/Model/comment_spec.rb @@ -1,7 +1,6 @@ require 'rails_helper' -RSpec.describe Comment, type: :model do - +RSpec.describe Comment, type: :model do it 'belong to post' do t = Comment.reflect_on_association(:post) expect(t.macro).to eq(:belongs_to) @@ -11,5 +10,4 @@ t = Comment.reflect_on_association(:user) expect(t.macro).to eq(:belongs_to) end - end diff --git a/spec/Model/friendship_spec.rb b/spec/Model/friendship_spec.rb index a5288a7c0c..9146d1d57e 100644 --- a/spec/Model/friendship_spec.rb +++ b/spec/Model/friendship_spec.rb @@ -1,7 +1,6 @@ require 'rails_helper' -RSpec.describe Friendship, type: :model do - +RSpec.describe Friendship, type: :model do it 'belong to user' do t = Friendship.reflect_on_association(:user) expect(t.macro).to eq(:belongs_to) @@ -11,5 +10,4 @@ t = Friendship.reflect_on_association(:friend) expect(t.macro).to eq(:belongs_to) end - end diff --git a/spec/Model/like_spec.rb b/spec/Model/like_spec.rb index 9c128c568b..b9c46a255f 100644 --- a/spec/Model/like_spec.rb +++ b/spec/Model/like_spec.rb @@ -1,7 +1,6 @@ require 'rails_helper' -RSpec.describe Like, type: :model do - +RSpec.describe Like, type: :model do it 'belong to user' do t = Like.reflect_on_association(:user) expect(t.macro).to eq(:belongs_to) @@ -11,5 +10,4 @@ t = Like.reflect_on_association(:post) expect(t.macro).to eq(:belongs_to) end - end diff --git a/spec/Model/post_spec.rb b/spec/Model/post_spec.rb index 58b1b633ae..3d00e2b9eb 100644 --- a/spec/Model/post_spec.rb +++ b/spec/Model/post_spec.rb @@ -1,12 +1,11 @@ require 'rails_helper' - + RSpec.describe Post, type: :model do - it 'belong to user' do t = Post.reflect_on_association(:user) expect(t.macro).to eq(:belongs_to) - end - + end + it 'should have many comments' do t = Post.reflect_on_association(:comments) expect(t.macro).to eq(:has_many) @@ -15,6 +14,5 @@ it 'should have many likes' do t = Post.reflect_on_association(:likes) expect(t.macro).to eq(:has_many) - end - + end end diff --git a/spec/Model/user_spec.rb b/spec/Model/user_spec.rb index a097d6817d..d2de82b32d 100644 --- a/spec/Model/user_spec.rb +++ b/spec/Model/user_spec.rb @@ -1,7 +1,6 @@ require 'rails_helper' -RSpec.describe User, type: :model do - +RSpec.describe User, type: :model do it 'should have many posts' do t = User.reflect_on_association(:posts) expect(t.macro).to eq(:has_many) @@ -16,7 +15,7 @@ t = User.reflect_on_association(:likes) expect(t.macro).to eq(:has_many) end - + it 'should have many friendships' do t = User.reflect_on_association(:friendships) expect(t.macro).to eq(:has_many) diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index b6e80c634e..30ebb5588e 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -62,5 +62,3 @@ # arbitrary gems may also be filtered via: # config.filter_gems_from_backtrace("gem name") end - - From 33726aba8aef9422dd58325db24127940fa840b7 Mon Sep 17 00:00:00 2001 From: Moises Hernandez Date: Fri, 18 Jun 2021 16:47:23 +0200 Subject: [PATCH 14/17] Fix stylelint --- app/assets/stylesheets/scaffolds.scss | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/assets/stylesheets/scaffolds.scss b/app/assets/stylesheets/scaffolds.scss index 6045188032..3fa3e07018 100644 --- a/app/assets/stylesheets/scaffolds.scss +++ b/app/assets/stylesheets/scaffolds.scss @@ -7,7 +7,10 @@ body { line-height: 18px; } -p, ol, ul, td { +p, +ol, +ul, +td { font-family: verdana, arial, helvetica, sans-serif; font-size: 13px; line-height: 18px; From a1f25a1f298c40645806d6c05351f63331e2a652 Mon Sep 17 00:00:00 2001 From: Moises Hernandez Date: Fri, 18 Jun 2021 16:49:40 +0200 Subject: [PATCH 15/17] Remove unnessessary code --- app/assets/stylesheets/scaffolds.scss | 87 --------------------------- 1 file changed, 87 deletions(-) delete mode 100644 app/assets/stylesheets/scaffolds.scss diff --git a/app/assets/stylesheets/scaffolds.scss b/app/assets/stylesheets/scaffolds.scss deleted file mode 100644 index 3fa3e07018..0000000000 --- a/app/assets/stylesheets/scaffolds.scss +++ /dev/null @@ -1,87 +0,0 @@ -body { - background-color: #fff; - color: #333; - margin: 33px; - font-family: verdana, arial, helvetica, sans-serif; - font-size: 13px; - line-height: 18px; -} - -p, -ol, -ul, -td { - font-family: verdana, arial, helvetica, sans-serif; - font-size: 13px; - line-height: 18px; -} - -pre { - background-color: #eee; - padding: 10px; - font-size: 11px; -} - -a { - color: #000; - - &:visited { - color: #666; - } - - &:hover { - color: #fff; - background-color: #000; - } -} - -th { - padding-bottom: 5px; -} - -td { - padding: 0 5px 7px; -} - -div { - &.field, &.actions { - margin-bottom: 10px; - } -} - -#notice { - color: green; -} - -.field_with_errors { - padding: 2px; - background-color: red; - display: table; -} - -#error_explanation { - width: 450px; - border: 2px solid red; - padding: 7px 7px 0; - margin-bottom: 20px; - background-color: #f0f0f0; - - h2 { - text-align: left; - font-weight: bold; - padding: 5px 5px 5px 15px; - font-size: 12px; - margin: -7px -7px 0; - background-color: #c00; - color: #fff; - } - - ul li { - font-size: 12px; - list-style: square; - } -} - -label { - display: block; -} From 14b70bb3c9b94cd7ef69827b1e37f32e9271d30d Mon Sep 17 00:00:00 2001 From: ivana Date: Sat, 19 Jun 2021 21:26:35 +0200 Subject: [PATCH 16/17] Removed invitation for current user, commented lines from controlers and node modules --- app/controllers/friendships_controller.rb | 18 ++++-------------- app/views/users/_user.html.erb | 4 +++- app/views/users/show.html.erb | 4 +++- 3 files changed, 10 insertions(+), 16 deletions(-) diff --git a/app/controllers/friendships_controller.rb b/app/controllers/friendships_controller.rb index 5b50d94393..dd6a7521d1 100644 --- a/app/controllers/friendships_controller.rb +++ b/app/controllers/friendships_controller.rb @@ -2,26 +2,22 @@ class FriendshipsController < ApplicationController before_action :set_friendship, only: %i[show edit update destroy] before_action :authenticate_user!, only: %i[index show] - # GET /friendships - # GET /friendships.json + def index @friendships = Friendship.all end - # GET /friendships/1 - # GET /friendships/1.json + def show; end - # GET /friendships/new def new @friendship = Friendship.new end - # GET /friendships/1/edit + def edit; end - # POST /friendships - # POST /friendships.json + def create friend = User.find(params[:friend_id]) if Friendship.where(user_id: current_user.id, friend_id: friend.id).exists? @@ -45,8 +41,6 @@ def create end end - # PATCH/PUT /friendships/1 - # PATCH/PUT /friendships/1.json def update respond_to do |format| if @friendship.update(friendship_params) @@ -59,8 +53,6 @@ def update end end - # DELETE /friendships/1 - # DELETE /friendships/1.json def destroy @friendship.destroy respond_to do |format| @@ -71,12 +63,10 @@ def destroy private - # Use callbacks to share common setup or constraints between actions. def set_friendship @friendship = Friendship.find(params[:id]) end - # Only allow a list of trusted parameters through. def friendship_params params.require(:friendship).permit(:user_id, :friend_id, :confirmed) end diff --git a/app/views/users/_user.html.erb b/app/views/users/_user.html.erb index 41f04e9135..623001a79c 100644 --- a/app/views/users/_user.html.erb +++ b/app/views/users/_user.html.erb @@ -2,6 +2,8 @@ Name: <%= user.name %> <%= link_to 'See Profile', user_path(user), class: 'profile-link' %> - <%= button_to 'Invite to friendship', { :controller => "friendships", :action => "create", :friend_id => user.id }, method: :post %> + <% if user != current_user %> + <%= button_to 'Invite to friendship', { :controller => "friendships", :action => "create", :friend_id => user.id }, method: :post %> + <% end %> diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb index 4e544f3aa9..e5dd53ff05 100644 --- a/app/views/users/show.html.erb +++ b/app/views/users/show.html.erb @@ -5,7 +5,9 @@
      <%= render @posts %>
    - <%= button_to 'Invite to friendship', { :controller => "friendships", :action => "create", :friend_id => @user.id }, method: :post %> + <%if @user != current_user %> + <%= button_to 'Invite to friendship', { :controller => "friendships", :action => "create", :friend_id => @user.id }, method: :post %> + <%end%>

    Received friend requests

    From f4b925d265c4e8118ace45809a97daf1e88ba730 Mon Sep 17 00:00:00 2001 From: ivana Date: Sat, 19 Jun 2021 21:30:21 +0200 Subject: [PATCH 17/17] Syntax fix --- app/controllers/friendships_controller.rb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/controllers/friendships_controller.rb b/app/controllers/friendships_controller.rb index dd6a7521d1..c8a20e45aa 100644 --- a/app/controllers/friendships_controller.rb +++ b/app/controllers/friendships_controller.rb @@ -2,22 +2,18 @@ class FriendshipsController < ApplicationController before_action :set_friendship, only: %i[show edit update destroy] before_action :authenticate_user!, only: %i[index show] - def index @friendships = Friendship.all end - def show; end def new @friendship = Friendship.new end - def edit; end - def create friend = User.find(params[:friend_id]) if Friendship.where(user_id: current_user.id, friend_id: friend.id).exists?