From 12adecfeeb9e402eecf293e703277fdf1ddaddc0 Mon Sep 17 00:00:00 2001 From: Art Rosnovsky Date: Mon, 5 Feb 2024 19:55:58 -0800 Subject: [PATCH] chore: add basic tests (#4) * chore: add basic tests * chore: address feedback --- .github/workflows/generate-pdf.yml | 5 ++- index.test.ts | 19 ---------- index.ts | 28 ++++---------- output/art_rosnovsky_software_engineer.pdf | Bin 89870 -> 0 bytes utils/fsChecks.ts | 18 +++++++++ utils/generatePdf.test.ts | 42 +++++++++++++++++++++ utils/generatePdf.ts | 25 ++++++++++++ utils/markdownToPdf.ts | 11 ++++++ 8 files changed, 107 insertions(+), 41 deletions(-) delete mode 100644 index.test.ts delete mode 100644 output/art_rosnovsky_software_engineer.pdf create mode 100644 utils/fsChecks.ts create mode 100644 utils/generatePdf.test.ts create mode 100644 utils/generatePdf.ts create mode 100644 utils/markdownToPdf.ts diff --git a/.github/workflows/generate-pdf.yml b/.github/workflows/generate-pdf.yml index 0ff9ec8..52f8f4d 100644 --- a/.github/workflows/generate-pdf.yml +++ b/.github/workflows/generate-pdf.yml @@ -28,7 +28,10 @@ jobs: node-version: "20.5.0" - name: Install dependencies - run: npm install -g pnpm && pnpm install + run: npm install -g pnpm && pnpm install + + - name: Run tests + run: pnpm test - name: Generate PDF run: pnpm build diff --git a/index.test.ts b/index.test.ts deleted file mode 100644 index 57b6506..0000000 --- a/index.test.ts +++ /dev/null @@ -1,19 +0,0 @@ -import assert from 'node:assert'; -import { describe, it } from "node:test"; - -export const markdownFilePath = "./resume.md"; -export const outputFilePath = "output/art_rosnovsky_software_engineer.pdf"; - -describe("generatePdf", () => { - it("should throw an error if the markdown file does not exist", async () => { - assert(true) - }); - - it("should throw an error if the mdToPdf function fails", async () => { - assert(true) - }); - - it("should successfully convert the markdown to a pdf and write it to the output file", async () => { - assert(true) - }); -}); diff --git a/index.ts b/index.ts index 070881d..f3512e7 100644 --- a/index.ts +++ b/index.ts @@ -1,27 +1,13 @@ -import fs from "node:fs"; -import path from "node:path"; -import { mdToPdf } from "md-to-pdf"; +import { generatePdf } from './utils/generatePdf'; -export const markdownFilePath = "./resume.md"; -export const outputFilePath = "output/art_rosnovsky_software_engineer.pdf"; - -export async function generatePdf() { - if (!fs.existsSync(markdownFilePath)) { - console.error(`File ${markdownFilePath} does not exist.`); - throw new Error(`File ${markdownFilePath} does not exist.`); - } +const INPUT_FILE_PATH = `${process.cwd()}/resume.md`; +const OUTPUT_FILE_PATH = `${process.cwd()}/output/art_rosnovsky_software_engineer.pdf`; +(async () => { try { - const pdf = await mdToPdf({ path: markdownFilePath }); - - if (pdf) { - fs.writeFileSync(path.resolve(__dirname, outputFilePath), pdf.content); - console.log(`PDF has been written to ${outputFilePath}`); - } + await generatePdf(INPUT_FILE_PATH, OUTPUT_FILE_PATH); } catch (error: any) { console.error(`Error occurred: ${error.message}`); - throw new Error(error.message); + process.exit(1); } -} - -generatePdf(); +}) diff --git a/output/art_rosnovsky_software_engineer.pdf b/output/art_rosnovsky_software_engineer.pdf deleted file mode 100644 index 3e93d1fbe2782314929869cd2f10c7fb90a8d21f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89870 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

*7 zxzkeKk3Bf_=q3>7{EW5q;xf=xA|XJHCRN^x^6}eZ9m-0wxe1PA<4D9~gN9Z{?r^_9 z=ZS>F13$U2>>S@w*9$y{=;-i|VWLD9THiWm9LjPas)O_S`ViVNN2zj-c9-_^2pi@M zW}CWM0A!=ERzkMs$1-%DV9XG5;i6o4URg;w0+x;vKynmzmZtjFl?WrEWUWoKRk0fr zJvD9cmo$zqazK~ha%TXlfXTvj)x6%#X6N-6FTU~Di`Hs-?5lj8#mOpySD;(8nSr3w z3*BnlHS)~LGwofRPH+ui@bb9Wd`C~fO4WTMqlEfSFX%d>a&)$dz9Gc@eD$6xGM zTY9B0<|YG6Lzrq#5oXpUDZDnDFWkJJ8rWe>^$rDFFZ@GFLhACJ_W8AV9*V`7C%CN0 z@+@#r2CFUs^CpU^{piX4(7JWfaZ_VL5c9buq=fwhqzd_ZW#I+uq!S4cDz!gk`qA3* zBy*02-Vh=|WWU^|8tGICuo>w6c#v=QGT?k}n?_;BST{@w->ib1!{?AED7R74`)+7} z`3+aWA%XrE; zW*7dQf@C`-oU^Ky*18!^wQ$(~t$aE)!(F2B! zdu#8gR)AFVgTm3IMEDL`nVB%kry~3^80t4L`3kML*Eu{iR&rpv}9 zI_}9$H;0wph(<4OO9y9)2%Sc+5wWhU>VND z)~=HkV+_`MMCd!kKk#6(*eCZ*7RkEni)I5`CfI@_nYA@66;cxv)RQh8%= zTrJu~3c_&ofC+q=@0ddi!Jr7pF=WVRpo3S*;e{wBfU<(e_*^E@pM2V=MG@)bMwD=z zNs}Ibfizca>+q?f3xHQ9M}pbTg;J+PjB~1SPQpWbP%Mc26(&Z>_5-G*W=VWX^E$Hq=ox#V(&fiLjF6qPUlV(p1K`~qCbJZSM*UObPGWP`FFmoG$@sp5L=^1SP<(^t00(~mf7NeBm$ zjq_bdhme~YhW#kbKq!iQad&nOr^KOV+EbTeuZfG^&AM(wpQR|*+1`!>*PKTy_~XCP zWu=ZXUCtuhq?^Cw;@y8!yNbSn6Y#C__WsW7!;1W{lh0eK&~0p=!}Jv@rieUFm@frPH*6X*#-D(Nt`529ggFHmF}yy&Fc@ zLyDL~D7Pu}A&Vop@ij{)O6F&Xr#)tjlT}Mq#}S*b*Wsz*h1i;|*?ZPBx#te-tjxx?8@WxIY}&t-hd0CJch6nAHX7_dnA6 zAXs9l#esNSZrFX4YeF6~WHg18o$Qy&0Yk2ce-SbCYt@z`;N@)BcV;dg)sUL`jxwj? z?-aUvx|*a;glAP_Gov*0Q^wd2dPo@tM1LWX;UgRt9}7*1ZpC~Rp~us&2qE%1T%|8#!TZq|&*pujg)f|M zbG>SZku6tY;a{r*zpUTgc5vhI91>*dJ^retD7I9qs;pRcEsgQ*c}Is=w4DyMeiq_+ zmeHBT>Q-N}aw7mE=Y(bG6Xy&n#!bV-VaCTozDLG$TvCx$s2Dr18ES#x(_C?G!0;@c zwf-QIxPC4hMTtkDyZ$9nC?*3j?LgKZ;;hMSjQeov!_$rIBKNFm=GVUEEi;#o3&Zlv zLRgwTeoWYINKa%)qivbCdWMZUyj3Qy`Y4-njz_(BX<~pWP>_UVN?L+pA|^{pm;*2K0~u8+I#$In-VX;VMW&w^ zH2s5$_qhyu9|;!at6Bg>0U(EX07?seB}De>dOC(?ajqA_Po+RI_VNSh5P2+wO8S?gI|1fJ z=fP)!6z>lSCqv7Ka1<)rKiM zQdqA{E@sH8M*6-F{z93IoVkQBeDE0OY>?-Xd0TaHX4clPmt1$R_PwrK`t_CB_4?>6 z&bRzn#JFz%zGq{btxHO@5UB4iI3d1x^iYs?0GokLuB3M@H7D7}XzW}^30t?1%=%xf zvMJDq4Ebwy4}=}Vgqd8ItdrEsL;W<+P*|wy6Xp_x6fQ&5Eu_8#$0SBM<4ViQ(jW{B ztcWER6w{V%HuA!87FJ2!m6#9b1_G)Rjupw%zwkx=0w~Ml#?H*mp|fG*w;SU-XixXm zxkn!x-=;d|x5L8!bbhShiy4Jt^?2tf!IM2|8%gAB>O3p5q_LUyW5KBv|R7y;q~n#7$<7~!CuP#!8H0d1DP^W=Mabc?x>QVs{hAE zIw==YKk8giv=xl}vkiUiJro*SQVSCl8l6IMK2uu7lMTD%yA3-FZ;`@#te7uz*6p_) z&z-RE&-cM-#=jicS!%vR@2QG9#b89m;u^wy`L-0Q2g6-QjBa{E29NC&4p_ovF2Tm1 z7!S0~I(sGtiD}O+t?H#)lYMpkvUoL_^%9(2m7ybTWbmtS5m(D2ij%%5FkAb1lVeov zGQRnx&}BKiWN$#KU_g=(8jHkEfu3{_j;~Y8$_=CkHdDJcf#)m@EKWv0-#fleYC)Ng zmU*DGK+B3T!EV!?KzLqpHlmxLVmYUpN4VHLMHsa}*b}+_OG=>m5}`}ruNpQHQg*{= z0I5fRSg<*1y)fy0xTLvb@aCgc%|wFpVB?T&%3Zbh-9-XsN!LxFu5HL047SYUZ< zIsDij#g9-OG;p79q(91jB0Wf}j1wW3dODsqwLDQPRmh7Lq#UV%YX-`;5+x{-8&7Zg3tP*Lx?Y=9=H?X;{*Wle+ zRPr=eME^XlTZQEfkcKxNJKpxSHoS!5 z^zhR}wQzE#9X{-|l$A&$iOy|MTRO@Xa-tTLHEhC@(^Y21?WFtg;X1easuf4h>SGt` z`85O|c_8b)p$N2wGcxWWDTmw57aXGGow|#}(ej26;P<&)>D{AdRe8>>jp<&;JBMu} z^Gm`I7>T9M|8%uBgmCu}^jgR8FA(fkkCbD7qfQ2&%3(&UomPn&H3&8g{VsuKt3J~6 zIGylyzGXQg9mee!kyz(O$;V6v+N4^J<|-8=V<+p zuC_V9q$?II2OIg0^~6r(FDr9Lnl+m*nx{+y!TBeXW$vRo4|-fkc6ahU%gH1h z?iYLoEJn;k-k_Y1kA(l8AF=(dS?TYn`adD{pHaQ&-=g~8{<{CKaXm0S1}37c{}Yeh z-_v?dPDTLtZ&4cq8vvNcap=B>d&<5kN&Iw z!4>`%*Z*Ux{!3i{znPG~Lb(5vkv%Yo`$K4_1MEbs1>pJ@A@PrJUh6Nr9WdSh(^Chu z&ao3~vHg4Fe+=~hWS(RG!#MZ*VE-}A0h9568|MD+D!Jc*^dB0y|9{kRzt8S}s*L-+ zE%5yR*J?PRhwrb9^S?8Gv9bJ@P*W#v{dXoFba8{;x~5BSF}Ds&+Ry~2dmFMM;Flh; zDilfbg~{uA5NBNk99EC=aE!%BnM*!$I!pY*CV|0i!!jRVW_Mn4%e2L;5A}Ouk`IN~ zXl^|{?2bzoAAIDIxN1^{I8iQ-JJ-$nSKLXvp**hQ9&^X-_Ubl-HQmZrf6$0SmU7yv z93(lWOz$(uEtHYFNLc5yL+`1V%!dpHJO2y?TyEMFE2{6#2VfNuePwR$u;qsObKM?w zBNLr3=lF#3eOCZX`ygdxf*91YLS-}@r6lBeu@6eLp>kr}N{pdVVmL~l7@-`75yfbf zZ}qm`y8E^?%~-bo_(6!aK<4j{u0Pa#e|~HK`qup|`u^X1UH^yiH{0*0#qZ|Z zf5hLvZ-qY}D1W5#|Bk=eIa%3%dpQ4_hR!U%ZG?XY;Ah^y1Mr2PI>!qOmd3gkl2-{4|@;HE%eqaq_Cqhg}ufss;w5|d%B5<><}2F)<&H$X=x z0Cuuv%Mac=$kfUV+#2idyzstw-*|pntE$pcX+C$jb1dT##wOVlDh$o*<+a7*H=el3 zFCrCtCJ7YZ;GpGr{XUq=S#lAmYE;a}S32b?@Mr|E3D}MNd?0Y}ku9$dIqqf)pNTr- z?lPbMU_vak;_JzCkt{8(7%Y0AnCD4D2qwDKGXEKmNGdY|j?ueISvk&ihzNB>BipyAwU+IMu#ZwxIfOLd!?|$PkaZ7F~d+g@N9_t%8a{mlcmPv=WNB zx&J&kVSsLaz9JSofyQV3J_y+uMhp*O5LxSQ6g%qx!-2v(_CM zacGZmK2gFFZo#M3&u9d%Z&8NIHzSX06KJb5lh_;^cPMVVJsf~DPw5GfQt zWpzVqV{YF1FuBj9Aforkp=%Soh>ahX{$4m#mYutI5RiQGgGfICCGJre0s-Pp{#v~fOv=W=HJ@wGzYv6p;HsYS=` zM&q4A@dDa<$j!sjd(1cRb)l&Sll5NE)>JBKz1z0h_2+KU%`PwgWS1gUCrVov=JD&; zDmnlvgW7zG76HMs(x}HgdZ8_5sjAX>WxHc8cS4~gJ3p6E6d~8&j5ZDCg&T8RIA8xA znl|7`nH}$rZHgXnm*+G`U;@Hq+IK~NyCr+?wtCSA9l>e9$c_O=7L*2s zzd(4{Z^hVbJ1FZ*&o9!YFQR(!Q+>>iOh2Z{rn-3NY($ZSukt)so@rU5i+Xj(tQoxy zMWtW6nJp&o6vg`_91SW`588@SZ&D!cU+zD3xc~Z`b4Fg@TzWtdKZfCd$Hk%sZA~fK z&6bmib)NkpU!Jx42!J-9gQl?Y(Q}%!11}2Jk1)D7mDT}-A%xd*3dIYontXk0&Bh5M zGdOAgC&W4(2_JloI~Y)Z458DPKP~)|46fZiiBwtwmxdtWJl3LMbcSY5nl?^O(p?E< zB4@I$){4tY^qkJM#zyX`_~0Ya0=cwA^GXfpO)AkB{pFiFwevWn6bFB zf}|u^TA?QJjf$sKsq43%XgUb8gO>>gN2fFzQl*TcSE43++vIY5b4;ArX+S|Ih(9pD z8%-_JwD{7|#tE_3Mgfk%4)yPt7mROs!(EI_#~m;ddw%3k%e8)Tp|fWW?^&|(g5dgr zr+~pDdr=%cGkN7eBez0^AZ+=Ho#SrCaNDV}MuxTZp~giq{NsgjRzk>q-bDeQ3G3}^ zmpV#>d(0X*9j%aa&3JrfO;MK{w+;*&hFbmE2u`Xdv$ zZpmUjJ=}q=s)FR4?Lx)d9ktR^L$X)eM4#cKZ0^n&x%a&yJ>{9344?BnUu~JmPT}{S zBh#su`hnZiRNkfKf!i^H+uIA$C387nEMdX@TQoVrgIh8=d6k)Xs=Q@MIeD>Jq}d~T zxoAeNrD=&LALh!#Tj=5o`zOZY3%e)IVq5zs%3|k?uJ1<%Ul)Lhv!s5(Be7C+w{NxMAlbV1x13amFT z4%|^pbuvDI$vg#pY73b?K60E~S^jPR>`)l zG-E9vRBQcsTUsf1r;NRRT%hIDmO3k&$k`M&D}`6-mrhH2G>G8R#FA=LGfRbc^yF+? z^DCoDi`T!>^J^7d;(|bI&w^ZzrS}XPj1xj}xtg~`p6d2s zIzNuU(y^o&BEZq(DLNJsuQ-ss(eV=A+Yipe3Y-^_)l;Nc7rMld#!K}4De7*p<~I)N$C$aPZvO>rRW=kA*Si)US$m0uM7(t z8D!Qn9*-BZM6%;1A!o|xTd|`uV-K5)ks(YL8Q38YnwtqAfXW2f;lgu$2vI~Twvqb^ za25u~Du%3>|4}qCFc&L-ma$UteQdB4LsRQ(Y0&3&Ne(#`vm%GGmeLG)iWX{6C^zbi zLVP}6DzbHI7o~ohs_&1Zi(8EEOdwC$Sv|hc$gX}&8>;8OusUFg`Vq+c>2ZvyQ-zY^ zJRC9^3)Bj>zi3dslD_te*wSL0LbW#Y$!{?D=JnIK(m9URNjjI$&L__iH7KrNc~o`j z3R<_WA2&|CIoFmpO*auVU7Q)6P6ASPIfvkfY)l*Kvv14~x%2C5L8KZj^DNU()o|n4usV2&x;=Q;n!|B1Cm;jQj$J!3I(t~Kl|?|*G@kk zr?x|Lz;tOaYBEDfKLkBj%s7+l4bjq(ph{H=&f38_WSIkIV=#^TabapdS@{R1g`0`Z zE_Nu@zQ62RaesJn%RZ;rtgZh-v@8JC*PS?ps$$4$D5jJt+gGlWAEE{o*=4KEK+14& zJ7LYk#M8A}o>v!$ zVdrhMZ55yz5Z!A|CgwF09F1EHSVn?<28|M{>^nbjJVpwiJ+EG|%`g{CUp?|8BiM!M z0uK*zo>3xIB#$B?Nt!5OlXLnd%&!g3fRv-nr%SYpOC%sb$z`qS#Nq*KJ)rf2vaz@B z`)3sGX>;jj?D0GemA*7%SwspH%@m3;+%IBnWc=S1S&k&BVT#S{t0sgq*N3y_Zo4#* z)KsVZZVgtT@9ieHYT9RpcCIw5oFnMCe!iuI9kEriMReS9yZJlk)`D91q)U8QEwcLT zTB6lhOs`dW0_@&XK3h+j1G5yxf4&uQo7Ks_MszS968m#5wv- zl67t;6`-Igpr)csMK{QJmEx4ubyES_JawLntewK|E`P+5u<5NEH+_RJl!cq5}p()j_& z&$Bmf7QbFZd>p43W8<2Ir6UsE_S4?2v9E$m?_y2*2%(3cSqu%H1T7la$2(bq)w9JT zcBigzG)YZG)oP8ry=(iGN$3=_)aB>BqFj5g6@FSfq=!iId995P_LKBC1a zWhq>)t^gf=^I=$pQQ1W2LX)8EBTt@r0Tn6wU^gYT_mSq;8!6m#G5BISvUL-Hq!JHn z26PL0*KnD&ydXk$aduY}$J^|$lNYLrT6~}I?7%a0_zZu~tq5A({!uq>re4cSuny#E zl=3%J5_7%^$RFo7#R`yxu`|$LD{M?P`xLZpR{ys1R11N$y zl318dLxiN%7y}SpZoL16kgCsgI%-!R%SWS5c!KH-iI(!v!6S=orWr;w7+$iOC(s_z+@Rq;`EQ18_KC@i73GJlu} zEsXV?%7O-;69J*_R$XQ9jo7y2o&|+2#6P)l2=xU*Ur{)efzi9RcgT9!n*` zG;280A*@2EmDnU4RdH<-s>M`&$Cr$Xj}utJOV2ue5>arDEh~p20Zq8xH%NB$q5A@mNx6J5dNQKrD8y%d)|S%)fVapqwbh8whr^{Enk94RyA zaE|$a`GpPZ3kDqTY;_mOdV^N-gkPykBQD($0QtU!*xVHEI3hSln;m>yG@6V8+f_KM z1@0_Ne5bv_b$M_Hj1P*bV6+xNqI6q5&A<-??j}ppM2>lK&vcT|*2j;6U8kTpjrH!5 zHp3Nyx&i8o0Kpf=e3~wWFUV3QB%ro+v<-o*;llnu!t0NWJ4*+Y-X;4##13}CoQEn1 zz$)o;f2!VS6<7oWnBY#-Eg^G8s^(j0_^0|q_Syqnki3f@%V$%#Ol#_m@RDm7cd!P^ z{nS)b+ei=#^H#lKa#fWR$<;o(mOE5N>t^0+YnE_yITla}%;fqPfjDo6MoKtx&U0y( z+cLZ7L^6%#)9XXedOb>J5ua-EEpdFGqO|OH4u_J)np*&I3#ia+wp?s;Zg;)XkzUMC z64co`N#=XRe?KbDevs!4snBb3>I*I$U5LMLPD-}*F01f5QNQq?Q4@UJo1X#SkP~0b zdcIqAw2a=7jAqbz!nW#xQxjgtkKK{6WtcHdPL^yJ9tY!GfVDZx78RWlVSYxLHWMh2bxA3N-eWO^c_C&z zMM(v9c+tBb`k0u@I-;?RG?=HKc+@|A=1qaE6Rr_fT>%xRQU~WWd=;~)ChvDK4pQ#` zMe;faPV%mE%jn>*6D|k1SVpcS#YF*p6Bz)VqJg@oV{Q|%HY>wyY-t~))x@(Q* z`~Cx@H)tz8h%N_II~(ldBe-UMqs?kH><63%y)tMG+X_UrUMuSHGkC1eRvgxbHt#KQ zE>kEdXu|p)y^GhdeUSAh`?bwP5cLHCqtaT)-Qk(o44vA{HzAwX$qyph!QzRpJ(Ss* z4&=OMo2Pz{Kn85{{Dz=Lj*k>ejioW!w1dgjhNX*#+X`z0t^*|P zkCeKw=eiVIVpDb)5jH4BqZp{AenN#J9+IZ&pUueQD!>R#k55+36J3Z0A&uau2F%u@ zW{(f-94ffKy{ye;XRePzU08RuG&kM@e(H$Q2&h?J%t+JreOYYlwtSBh8$y&GirS5u zy&4Z9FK&Gjoj#1|9Pd=1!w7l{6VVW0GDK+!_@rD?Wg79C1^evb?9474`w5ALjD2h; zA{Zr&kz>C3b9^?+F%<*ot#t*7wDoPg2#=B~PcIV6BL15!hHuj3_wq|{c|#LbgIQXi zpm)EoH7DQsO|PET$0_m$w-_D_UZ6KvjV~{#4z8jfieFq`@*&(BH(>nTwg@5i;)Da&LPTeH$GkCwL`;``EI&> zJvwyuCFqn9b1fn}NAE&r^(L9+g23X7e9XLTw1R5cn&Q2MedTa5KNC-bd1X%6s!uEU z9@~Hv7kEMI(J~ivFgufgUzm_273b?9bc!^5kxnT>WU56&KO{t?dfQYD#euFu0!dl6 zq?mVvTOy=0x_}{~60WPtkaHq5&7u>P@N~j#pPmyl1qp`I+vXAqvf9UO@Es9-B`6M0 zIw)W^^qje`vNu0ufbTz$PP?Q3f- z+&6O(REw9o#9kaqTc*p8bitQR2$$dM3`%PhD2;-|r1%q61#GWFuuAo1>Q>f*iTWYw zzM)uMNS{c0(24#a7=c&HNkIKLn0ESo`&yq*xeF^gzIX@c8qA&BN4u&=Yo7qKnA=nV z^iu`50aa3X4fs4-+eUqp~Oc(V4K9(%d ztgx(P{;@favnEh{(NZ{iBHJy?CL5hT&t0UdZ;v{MM0Ilq(b@D&o(}f|lid$x?$JFE z@2wbUia!bUOhZ-hmn`a6YRA8fyNGGY&IN*5SWP!Uha_4UpilHh9g6cQvk2+~Yw zo|q>iwg@MK=QBDZpR<~{|1`hz(u%IvaAZsm-wV$&)>ElKj&!Zh1ye+#1SZu3Lmo>x z93}-UTXfI&+{rR#CX^|v=bpjmWHJlt5Lu?TRW+nck@J;Mz(0#>Pbp=nX1+QzF0{0v zJNG?aTkTUF7knpq1IaHk8K--U$H0(}Yuj?}-k!CW+}}G$JUun_Rd-BToA)a8TCUp{ z$qp;|rIBNc`V?86JuY>MiAsQ0X(2W(DI??5WD^z@%ZKfrWp4{#$y@;2zyb>I>(F2m z7N($39Lns;MKQKcv+UkQ2<;-8reOS#d!#DZrs3{v(d7qEx|i!m&C*{#7iWNT39q@{#~SdUgz^h|+#tmczSFYMhpH^8S(=4ON6vYEm-MHwGN=EB;)#U)7o||SQ2nc_^rz85uC#`#NbAN5* zKPw)?tI>2m>o_cPO`KkIcr;KDNN-3{peX7!7k%3uFrQYFE-AQyL%2o)URCG62M-N_Me)rvsneda>46&Vc z-S@RG4NcqqP=RxFmT`nN}~*?o?tV6lmo7?7`&&(k9xdyX3AC z@ty8H@u?5uszMRGz)g2ma@H!(vh@7rnHjh>MH_Z&HKvh z9S0xR!a*y_afGzkDxg>c6lf-b@1iFWlF`)xqp=3Em zdBX4vT^zRhl4mUpeZY|wjNdufXO~isHk?XWFEGsc0#b|c3os$EUsq2xS;iX19?j2}2peXKXd z7CVK5)rM(ZG>wha8KN zKAJX~A)4kcsh{DjmZ6yTz(Ub!soa{qZY2f>^pRB1dLD&ffdB zNCM!)sBkj5QvkW{gR21&XM9h)+&|(}R$9(vBrVVzxeyx{X+&cKl-@fuox;`)S={SQrG3|B;XRWgowC1{T+C_RpWH7ogTG=e+{&iKc0^}*H^L@C zj=4WK4*JS}Wnk%(JN~hkN$@ytSG0$xXKry@;g%uu6qB-J@1XFijgwe|YbU^#(KJL-<|ycQqOxeaLEORSdNWK5USbd=l*r9cHGU%rIz6 z?Z+BuF*0GQNTre19r7#cDk>?G%l#o%_09~8PyiaVd{+LDEJ*|9J2uTxcf(HINyW;M zaZ@Jdm}PxsSA_lv78dFxN^8!g$9wZQVi;fObxGXO7rl}2y`oZ4*rj}4!;%Um!uRNN zG~pAsYj0Z>a@F3+bNHhS%$+R`kO^!4%Jio*>d=iSfU3TPai9_3x_a1|3r;a6mw9Hl zGQtkQvJAn}3axYF+@eJtC#gx-TdCvGBbjD`6wz5n!Zj6oac}TK**)kZM0`Y-k0~(& zi!dzCLzBl)CP$*LhNgDgo6JHRh3R8LolNodR2|vcJeA#OzvR}tIqU>PLJ6%DHc7`s zD5yCuGiw7a8O2Q1BR3WvT4u!JS#G1`VQ%W)5#+~(oY%N)l6!Uk1G@FFv4YG}t~beG zp^WWdIp>cy##qU2gh{D_*()kl_H#cXv05xRY%{JmS6pp7_UZ!FVX(cYr>}qILa4KC z&!UWFzpc+dT&-PI+`B6Ls&F}Z-d(zrNkuHtHd1_&&Z<^hzhk;rd7$+1^jo(4x>%)U z!){TQ?gVT9OFZWTO!`I`&Fzawz?7Z8HgC)xa}A4qu$I-3VdTAjRP$qvYrV`O zDV6VBSf@2pHL@zDD3(r|`Mxxssfl=vik*rX!D9X(q7-0&9@pxk@C#x`o&!z3aN}~) z4QsbaVd_l=HJUaOr3CpGXN7+B$|no7)c&Nn#A7&Th+?Dk>AkN~hH27t%4%`uaS0>M z1KOC`&RnB4Kk|n=Pb*^QXf+QgjTybO2ozV<_>_Ed)eht)RcO4r^16_iq!AD>d9|d_ z+ih3n2wNAu%2Zw0M}Oj^SFm-6Z>Dwl-K>7oDxCX8Nvb;anm=ahSY1z*tCo69g%cy` z@-{g!WG#s)E-Fsg`Mg_o>md*I^lTFaf zg3t1B?rf5ck{z@yab$A(BU4>bZLP7%mT&^ z6>iV5#g)36z48TZP3~_Von78eJGo81Z<0*MEK88xaVO(^H@A+XJBq8X=J7an!w6-> zus5yhI)|@yty&iG$${=!(Y)Jp=vxnRxW+SZQoHClMe!4f+6I zI=_bV%LL2vxbz~umI0n_li<7c@wzAnqqYT01mCFbhc|rs4LG=yB6DXF8wdI@3rkx! z)O^=;-Ks+Oja21CF#6u8>japV*=)U4T$yu`Z+tdxaG3HjO}J%T7o=)&dBrK zEL30K@uWa(q<>3Ub8Hm+fyzZ^Vm41^2_bzR{NhgWtN2-OU2k%JG|=`_IHzHI{Whm%k8y*^)kR&1-KTz`N|w=yyKF{V3kC z1VF$3sTYmfPsjgBThdkyyoTotmIBqtX#lRa`P!{R9-MJzdiixI!s3Ah z_v)fVScO{KXQmz6mB8mJ95;7&aj`jXiE>qF3`&=T0aQ;RH#$>{uvKh0h=9}}%nNM) z)htdNlAkGi6|otVzxI zY4}328NEy;RV$SCg0ec%CJ9(0b4hsHs#V^erz5X9{c5f7F{hzG_UtkqW>cPRhvjhSFKj4q1yfS%;u zXfb~^p4P=f-xLOP;gk6n+d{I+iZ8Kx=p$SQsgLr21f*H-NAGPupxF2?B9iDzaPM~$ z2Jb%V?-(I0i~tXv^P{{)qJBlIW0K(}QXovJghO+eh6Mf6qsb60LQ7lPtO}zu!I#Lb zQUpIDcU456Ca2eluIo{+F_SAUOry9&F@hzad&sxijrR_dBPc?ehS3l?6_mH98;m_Q zxf{5n<~*dfuI1|kK<#W58&PJ`jvBG-qz;iSk`J>U(LLd_!Y~qtA9$HF%QuMV6eUn! z%|K~{s+Nt{(bXr#V_B7ZV=M--$00eTUt?k{OwpGx)=f5dx8t4kaSzHi%Pscn#OTW3 z7IT*~F6ok0Ot2TQe~!GZZ_C2Zp(;RG0FNglt-N37K#0QAyc(U`Ykz1C_Vqcn<zg1Pks*xn(TY~}H*G?nJ^c$G|@;7FM zcu%RRMow2ute;;84X$r(i2CW{i;U_!%9tf1+3AkQzw0@T`wfoKdPJVegujSFsQs;zMPS z63Ug?MiOS)0DA2hc11bLSZ>>A6w&R>Nh{$4J)k(A$;E=hm$Eo54@SI?d$fi#RT@7i z`hmkhqU8CkF1$o-q#FZ*7f~+K6HM4#bW|G}w6T4%T)qZdSDPI0 zftA4F=%6M0K7?BbbwmOzq#sK%$17PYh^~#C>pNn(anLNb4je5YOMw(m>$R~D(nGPA zl*P_%p|`PYT}8K*sdlb+b#aT-`Sy`TA}yiMPb=#fpAhRJ@1kzg2r<{KmcjRFWIJHqePG_FGpA5A_=cl( zdt43?;93ITk64ab@ZH6#xYqdAs?d3V&^ORE{HQIjt#GpXMN5Y@TYg&}m6?<|3&M9t zS!@|@1^hCQhSC6V--hr)RHovPvl9}zIJw%3lE7&k);DCLm(;o z{atT3Nkc1+MaWfa>&B z2^u=}BDL*TWUKVuRne2Fqhte}-+Q<9u9RtP<)-%VZYLm(+UxE!t0U?B?)xrq-QVp- zDss2i6kWeQKve5xK1BFAJbPX(I24TwHRMse-jN#bxxZP)ZXzjM)rr%E-jOaWj6Q4g z2rR3wEQ>fMQ2BpCiyC% zJgJ6tyfBicv8EZyiaz(grSHaV_{*AS>?f3QD%PFGmtf#Y_87^s`HpEnBRyl<{A8SX z3UW=PU6l(Om<;Ti;N>GTV1ic&B(RZCF|TBZhQ%S&ZazQAXeAOs;Y)^(%C1=^d{jOE zcq@ZjV#raq#(tpI_<*a!C2~y<`Ym`wDoK`M0$+K96k2__xX7Wqo#(F zj?qk!6C{6h29i?tjjE@jtQ-1f+JU!ywRix%gOMdQGU@FY;_BRYz=+5SXcmMdNaNzj z4_{pPu%Xb+ZAmSrx|LTa8%ox^CZO!yd~XBzg@ulWaVOO3KdjKuz}2xSk{*zF-&|Sr z8BMvc5TShEN<0Kb8cja$E1b#g{!EP;cZq=}+B}I&ADAbpN>ajC-zIi|`F8b-pMZnF zx2c}}S9TgbB^O%>*(^TeZ9GHLz&J?2Qp{34>t*J>E=u7@N4YJy`p(+a%l=E$TeV<2 z7Cp&_eQ(^r68)uxoEH}dw4Lr(M+Yzx?0_NtC-i#B`TEYJwOQ;#Pd%1Te)Vc^ZN4a- z*u+$t5m7ag%H)MVSEHh&G=JH1LPSwGWh^sh$v+9ELF_RKr&G>H3y4mdzh#wwakNop z(6%x+%FctxmD}NFjln|Tf8~ch0MG_|qDVpQE6nrLvVHqBSV*lhor*v}slKlrH*?u^ zUDoj|41v9VsaM7Uw7bmH^;9hNhV@ct606l_3fh=j8592&|Hvo*NBHM|=zxED z8UDX_5d8rq$qM43{-#gB_|UIiwOc#f^1zZKoFht-=BV$ z{Wm)Fe}D~T2T?8mi46sSj7xu@R{oz*M1d?IoF)q!sJ(3LYz)6m7R;bF|Ffn4ri=cY zE&98q|A{Kf&dR~S#0mt_NB>P11v0TPFag*>=lqA*f1r&5ng5ANWe2r~lLgcukUi?3 z9MpeNNI@|+1|~KRHqQU2JW>`mkiF~oF#ZEQ^xtgJ|9^2w|4k+R!zaN1zBJk(LM}4^ zblLwo_OyxFm{>u)S0+{vI2Hf`mU8@qhRXEYr^X4g0)iO5pvn0k0j7T-690D=92Nlk z9}PGlfN5CZZ-6PttaYq|iGkvbK>9g+y_fKF1BzaJ)yFdCp6jlLHS#HlvTqyd&u`L{ zhRO~7s*y=z*(TTopSdC=aX;^tq6v)KeZbmaPRy%hhu3AkNfQ}cE)V}wtkNwV7BIO# ze8MnW=A<#p#Ngyu!ri~3a-^Fgpgtt7t_T-6d_8+~=L3!lwN#&I<6C<) z>z);MrUDTO;m8x2LP6JzqvzrLPLb&@q1J3!30?kj%_sQB6|s*8#&oC>3w8}aJ{S{b zvtK}Br`W>b6Z000Vq`6fip_)0*+O>6LI`GAUn_UnB;+P1v?ZOY{<$C96>7v(OAjMW zKk*`l@^>>ig;afRZe^2s*+d8X-J{WR0NsYVWvIwDP(N*C{49lsN26buJv z1PfDbbn}#aVk2S$Vf_#C;U|zCAxfp<5k!elcb!0gtNm$&kJ!O7QN30R`hd? z{?mDfPjxdsNey03gsWIEG&KLK?c-Uc4*zv>B$&X8Xx0}Ow%VyrK-uNjNC;Ijp;`hx zGCVOg6r;QEoEzGoa^5!k{FnM0QTu0KF~dBke)f^D>)u!gH6k#*F3<1Zi&()N`gy<~ z5iJ2&Z*5WD2zO~^yHlLO^2GgN0mMAq2+qMzk{Q8We*7qQ@36kvyifRKJt6f?T5IeqmxJSnTZkWI zHT)^=K`o@*P%`x`_o7V==VZ&vmnqerE<f zAz7|Uq(U?^-Mz;!s;QyC4WE6sU+rY-WO}XqX8aN&B>ojw_B}ygVMK?~q#y1csy|nA zu@1;t)WMAH`|L~b)G!w}v?ULu%8I61Pq!`kgyB8+ZP^hcqca#|T$P&M7rCM1;#Gor zTzCP>7=9=V^7(ujV@Q>nNN6G5Z#2@E@7F8aBUkg+u|N@x2}$K>LdZ(|YpncaL*O33 zgF~U8xSJc@89c6)M4_+UU?45)T6nY0#z6bbW9`Rgw{uA{+ zYhX0hHydS04f(G_8#>^NOi`-BZmpaHr7#um?5|zv*0=ZA;d#w-CWELFOlx z=cm2<63Y;eEHs1I_xv&b>5N3$UvG1`zt!LD68hl45#Jo!>i0hhS`q~;q${AUGyL4e+ZTm%(X;t+4040wd@`R%l38wY9H+-y`Tme#>nn z%zaO+9>iKhbb%5NLCi+~4T#N04I2JP9q<3Vl%SW_5P=E zACWm-e!I+82LgU~0`4DoTDrcO4n#m7ab=<)6YaMf$Lu2<{tEk-y>TV&w~Lw>sTUTy zS2`o-Hea@FkDbH2iq~setP1EMAvIx_IVdZ!y7{kMl@im_6Hy=8&YYh;M_ULgM$`;G zrX;yEq6m@HBv;+IN3v~a_02k_d_w@k{0vi{;n~o~7KyZJ!F7bb>exZmj^l27*|zTq zxNC`ZrCN(@A3j*?J^Kv)qkZm^?%D&_iKq2-U1r5EskOefuzM{-oT?{-jox9LgZbXU za1q~5XMaqsq828Pjgc=Oaqh3iAGA&nx()`e=dZU}`FTCnrBi{%AwkKNPXz-~@r|xo@eJmH-cO$=qMVzg%-`*QHlJI9xXEJ8oY(p7DHwmz~R` zq{`||&UWAX0ML!TDSCgDFCYm+El3S!j0hic{TY>>!=d%0W`2U@qQiF~`fjCtr|&5_;9Yc%YR)_F zYIjXc-%50J=DMP5$B%V}BTce_uG(!fQ-lf+1zkM8u$*&MMk)sBxc`$O+w!f;V$S=? zLhH#zt>u;>!#Q(4@XN~S%9j@NjW)ME2D(#43!$x_!3r_uGV*a%ZDcfhXE88lA&Bo6 zQM|q7$HsMfFC7_l#Y?_2C`pWOkJU<^ZbC%yvL^GND21(bq`$kqYsT#Caup~klM$l`8=Pft< zDwq*H#-LO;aKUsL+%vr7Rk}8atdIQ#a|T7k@0pkh*9IEfY$=2cDobnfyv>*5#E&*b z=|>ULyAXsr`+^@I479CfZdyx*!Y->PbGrhbTbIkEb;X+5N4KiekpgrIRZ0`!ns>?`BAj zy*yLI#W+WB-JEC3=FutS%yAKT$m=W-ex@$Aqgs z`N7J`jYr$PNk$>FLE%scX);bhU09ic{y=BAJ_@;Ud{-x{*;hlL^zkK4@NE5O*cdf| zUy~9m2U{JZ#rdb2w#Z+{1pEyUyTZS;Yz>(XO-q3dD{gXErWHL3e8T6=g?xg3QFn_W z4MNc9sOrJza0WA|F|HQ0+s+~19}A(sn^LK{uLQUrmWi>jVMD^_iBpZFWqCjNk>NIX ze5AdOUN3>HCYivVipv_K9)xZB1Punh##K?+wZZH(8X5XrU;`Nh<^U$cOBj6bZ;ndwAUk`ou&fN+lpk0jxlUZkxS}bt2j-oF4h!IAb-ND7-(*YFXNGoTX(U!<= z{^NR1Y99I@>SZVJj^(@>BIotrx$4-k9!J--6VQo}Dfjq8MhBQ8An5f8@K>5y=k>Ik z`Mc6t+|I78Q!T05olMG_OB!fQFQbaSlw#E6LUoGWnz-7PbTGF=)hD@1?73s6w0YF` zoVf9U{c=|$!?UsmYr2Fg(7=^*-%NBsyAZOezWVvK2pPe1_ zeHSVnL>A15qKzhow0B8hdXP!60uf0rlvk&+XE6=K+?!Ehv9iH`jin%q0C$T+T?(tK%fKfu&nPXCPBIhLOLHMH_G z=;71i`1JxFE*J%LWYV?!VHq_*n^50^d&e3#jdw>y`$;e zfU+-6yuA@r*iRe~)RY!j?C1j@eBcpTW?MQyjW}vvrw3Noe9J zlvhrYVqP8k!!|cDe^TCa&3i26?083-xv=q}d)Lx&1#lIoBmmR+&%JHHUf~QXsxYtK z`Fj8lv>cgz|Kvq?6| zoPzR2KKfs{wa}|3xwM2>kcZ%Xl9hIC=`U^RNdA6y<&7K{KcU*@z@hxX1Ajq7=s_Ma z?$e|Gs6q)`)e3|6^n6M2pd&nFtJ zbx{tAM1LZFG>IUcpZ132yo*9kKPuCDH2=@n`RFaGfUlkyjiezwUg4i@NfY|5m8H}i zT2r@ZO#8%xmtwHX6NX0|Qj;*YKQlC(ZX-Je#T!nV0#lpo8r8$=0PmwBiheXQpzfcP z)4^(eWB^nA;K$lGin)g8Ui`qFA&RJp08QP zieRYwX!4>GZ%q&x6_B%9&R6o?fsK%D)5I`3_I*v=3Q)lkdC3Ye9XV;Ip`kD7!X5`# z9ba7(5&xm)QBkp)z}q2hg$g3!$BZ_MDz;XsQ3fLrAk;PLJ1W1hq^bPXqW~e@xd$Ov zH$#$6KCw_yYxBxb_*-LAisU7nGOzp&x zDpt*2$-cwU8X||Kdz*yFEX*rf7W;vw5zgcMZkomjgND)x(MN4V28T%~xByM3?;$HT zi5dh@Ncy3w^2Kna%CFXDjIg3|Iij^9beQUp2vtFG$rSMs?M4mUsTj&ODmf*(Y~ME# zRN_lqmDN--BxlH-;DXLDqy>s~^zL?>!Kj592R&pjXO(rZk zO{XVCOPGgNVZ-=&0NwcnoFLVV>(*LwZHnrK97qeSH-Bve+Mc8{p1!V5Pju&n$7RhX zvmz*PQD&6_Kz1nSTZd5^S7-Ca41wlhjM^qeviSBRiKu5rr6IUxG*S-ryz=G6NWKnGRek!rU6~O^oU+nt==&@@)IO~qN zQ3W24aAXL|LyrxdCv!G%-f?vtY-jL(p;f?A=$wVZQZT+XHg39^T8DC4hdTE52p1i1 zdUB%_j=R54?OQ=5A*N2jKqao<;Yek9jab*CjS zI3wZ#E?W7{y6V+FovNM{PkoWX3#+Zl-u&o!Z0ufasoQrSTM@YJl9Z~V{FyRNRBKA(q{%Ax6!gCaRKCTDo3fiQ3EV`S4ENf)O zzFtr+XqhiDuOeJB);{Lq^R&lkMIIiv$p*MFlSYc)Yyt)K)0GVh&}kr{6jB~Xl;`?C zCPuVIG{%ik7P-^QD)=r36g&WimCV02mLvzP6(vb3!T2@U2UW@gTwL?TM_Mpo`&5aU zf1)A!d1b_v?}b;-5vkJrot4`*Mmau=r=Az3y>)j2r84~LB3_}cU)6}i2|DK>%v-Hi z?f`G47)x1fI3Z`WqCYRCUNmDJUE=n9PEw{)sxYfGM4TU@hW`rd!2wOvM~9e{1avWK z{=^##73k@>!_WSTL6~t}vMbe>UB@)EC&e3>slA)hru30xsIqewjv1^w!ER8`_KWu~ z0tDX`UcubxVbz`^SYLHI`sEc>byOMRk18`fXd3l(zt1Fv(MKqLSGKBI92&B;Z-NWD zz@&u4L*$A+9ej}+bn+0?XVq_%)#0wFEoRfm6th;#^36tup51{C8xH+ zA1t7(#`eQmf%(L{#IZ|yEBMVV7;KnlJ0is{wHPx32eBA!o+$NKMd@k|f zKwS3oC4;?Tq+Hfl%X#U6=!DcAv5#v|s{m z#9h4!YS~nSZ*Zg#4k5Y->^Ag$iaWbQx4#NZOU)f}!B?QJoI*b@1WEt=RQg9;SMBDj zyU!PWhA2e*uk&Pb_!NbN&+FG>M=P3`&pHLb3HCazw%z47LSN+gsbK@%aNa<{bHg{h zCpIs>o?A#NqIa^m#7dklgcRdG&#i>?=qb*Zhk_V)hA~tT%ipXAh~FcoU{n%MSRc0O zl{ZI9V+_;Xp383OlL?Ahv2vB$Ltx)Qf*&}lyJ|>eI!}9ad8`bnmk&(3c4tV~Lk{dB zjom#~_|rfbYSXE+p@Q>YdRDTNfGZY-noGFwH0M|J5#H~kzb>4NuK^irywyvC4|czWPmg+qqd-G{Pnuh;`Yy_UMdy7aNk>(hgEwIg^~MK&3C5Y**p?4%JJLNm zMo6X3xbB0LRkWflMQKs_8KaoQv((7YI;^!k|xU3 zNr*!BJYOI-?tc(1eG%=TrtOi2mE^^~yu&dR{1L=`Q@FESyw#8KrWJeHY_Lp<%L9+3 zA#x1fQp{Ea74(qISSbm(VhjLN)HY)OCMv2}@xf2AB6-j&Oe0!j@_15PK1X!K6ar`i zgzNOfscjY!Ef%5|tN-SI^P%Q*2y?g~k`)O?dh&NVRrD^JPRm;NmsN8*95zWS)c~HY z`r2()XxNWPCIypzcABvrX2#3_9GpPHy43j5k1}E`PmhU%)8v?2o15tI)x_m&<&2Tv z3n*|>i}*imTpMLr{hWqXu7S#*_ba&kCfF!2Bx;?gh(6>n;q9{Vy+3jq^XB%(;H?~I zpFk@sC>+vPBDLdrL{!l(_Pa7X61Ins!CSwpm|La}Bm4UZ=q8mbrYCL-`t#t@HjWZb2D5>EiN2;d7z$oIP3iU4Kh&$wO)fI`zZ;$7{rprUr0cL7E1 z4x!y>12a!re2VMb$LTi;+2a_4Sm0=68l=gV5vscy2tTU6#ZkBgi!6`fV%e`CRp$AL zd_Oj&O}CGCzpG|i?VqkgW?3;Fq8%@T(yrG)G_iz^sey)QqBr^2Af8Wd7+R+SskXBQ3BeLhBm=6IfAa2<>FT;8n8P+-f4LO9W?XsHo)DliJweHzCTVp zv+41ygX=_VV@~g_~pPz?c`oUpa((m3l>IDA^A#Bin>+N$22WGH;Ug z#furRCN<*_e@LRxj3^?`RfYY4mVgRNiQ#x}jSR^b{}u5&1?r_+Sb4obXhjdzAmsYt zmrAo!L}OX&{h{3c2H!K#BbO%(QOH0JKk1AR=>q0=FqbeZ(YmdQcYJwmD`dShMqCT-X3sN)G)a|tqYs=y!<@X;9=+tMFJ zCR-1_9bqNP?tGBgyCq*f%lGVU@x~hYN5iTq&25!k}2(h$aw>x~ul80KmQzI*;M zMGn||$$Zb^xH(wZxH?zuuJ3-8zIHgFQzg{X%^=(0B`8sMj2gfG?N3 zn2byN5?uYOulucGPoS950lj`!g$}ArAN50~QCvm=V|0E~&;wdqZ*Bx}Lz%po5dc>9 zC~T`L?m98oLOwpIw@ozIgSn<=hpxn=e%g~IG)4K{0=S-T=X466ss2FP=}W0)?NspS zM_SKa&rtK#NtulevX9TN?IG;euO5U23H{>$=BL=gO6Q_l{lt_s4R(25E_|9W=SS?a z5?KqKxLL2KYFpDfWp|Lu!gj6AmQbtFg}At$Cp-YnV(9t0=|i$dj#wZweC9SYO1ny(a^yDJ7eae93xBKDluUaG z1@szJV$$`~f@Pj=Lw}~wFOsPR?+_krz4i(@?~CUf&TVykUnX*dS#KuzwcAH{4rb>a z7GZ5=gk&)>YwFW(Q@(~#DuEs?&NY{E9nNq+oO=*6jI#L)t3LrDd2p8YzC$ zM}x%(RVeT}DdNP{fUwx8w{&5=U`>B@GJ9xesoE>R!Cjxk+VSc!)Mx0;=@6;o&R?N0 zsATboyT2xd*K@2pi>@-gACbaMXBtA{B+r?%T%PZ`4w1sT!65Eq9-k{EIIlnaPNZN9 zn?`pm!0SUPreu!7!dREJlaRNVw}i~r9$kRbB)Sm(?mSxHM>0Cza^wRV+}hwuCor;p zc;09ZBmD(QZR4HghX8(`XT@JjcrnQOAikMFoUD!j|F3dWMwA}H`Ijz)`$GN*whf~7 zwX(3tOIsfM z!r<}sA!kqDC2o7hLS*gpq7iOBqX~`w20#ebn9^KGoV%D}kzBopBISA!vSbe2@s{d` zI$?K4HJAb29&Em%lwU7>OyYBo=cB^TkO>tO0&=`_M-ah@!j|K6=R|8V9Y;3o! zQ7uU$`1w*(X?XBEUN$>Cj)GFfEUvw=IjP{3kt1)wPT8A*@aCShPF8$L%_K2srOE{V ziiRyp&*aQ9_DxDd9P)I8G1&KT0TYb!f&=0@KgYh(qm{3RozH5H6|?*DZ6zK1C#d?8 z^qE;SKK0V$jjzsdTn(@JT$lL%;%2W1`jgYQTfv=F;^cbj0+= z`s(Dyo`R4^&c9*m1=H?eyl-Kl&Rt{o zC%#B<#xt!yhJ=No=99=W+dEbE<;o#}H7}p5DZgL<+x;BI6^T$+HS7WptOo_G zz7RBoEA~8;1nSoNEs^P~4_QDsxzflQ%(7x@&;zl3s7Sp8-j8!f%0Y6)Cn;v7^D)9i zibZ%0gl7@<+cROIY}PKG*1~x;E==1>gA05e$dk#)tL5M)Xx!}c7cNUacnf;nM?>ds zzuH8N1bkW_$+3wk~Z_s>`INQd?CumQ2ggstCSsnva%^XBbn_+qfb%KP@9u zC;#|S2CN2-B#X@+m)`g#G>9LyAxn4Q&i4E|i6=WLDZx8ww?E!%s9+q=)8J&tP!s!u zoS9@gh=x{e|>&QPq#B4j*9a7bdrXx z_VCPFN8;(DZ!aTTG8n_=YxgTqj`K(rX4D;vaJ1@KGP|32I|vBC)y{ZHd1YKf9&1#h z(==Vv&#qSTOj5*28jKL5sz9V5(!Ugm6Ezg$P**=`m6H25T~=#7H3rUSs6f zx<(Wu-kE~;m1rnk65{*)8H-6N=EmpEhq#SR7L|rAGrCFUm>JNcc1_{okYPgKj4VFT zGwBYHNcYzwshauy3qY`N(KjK(ZzT&Rs=1N2(o2xp)pT)#)gffhFQkZPFbf~0T)I=D zIYuKhRG8WukeSc&WXh(=s^`mB;~T-^-;{lh=yX!y(>dB2W6_6R*A5m)&@N z&SOeL0;CRFDd=6{`4yR!Tb9*)K0G`s+g|dEhq6n9&Tz0xrqi1?2)s^a*~0Jd93BA1AWZQfph&pm3maB!#B5j_7+ZQwE9u>}|&e4gV>)s!b17PMaq%$Kk#~>d)JP~a0CwkuK z?Y4MKvR@o~&J6ouLo1xVq4KMqOX24{aQFxXVoZyh*3l{gaASo_zV}$e%VUbx#HA!kQcf|IrG7FY9Mnt5*rGmGmya%{B2iJbbk7=6 zL9L~67oC>2O4o_`)vD4I}u{>x9Ol0 zhA&+)hv-`0nixUX_dG@ng4;;>gGe2p)x2@P3uT8!IchzEP>EoL1myN)g>Kuo9;|oY z`>;SXxBXKxO?c@U}Iu zfal?1{I^E`Kl>6y|CcX8+T6g{LEp*T)<(wG#`d4y1W?uzK}SPl8z*9rUX+3Dx3(Of z@pnDHL-Z_6Obh@{04F;)6^&YJ+zM6)up z{`MpMyH;W#69-5G{aa-JucQCjn($lM`Uh(QEAxLk?Y~(Q{?R*sN_6sH^ufObyZ`Uo z6F5N%a8U0uak2w}|4Z=A^lwEkNF)BQ%lqG}z5gWO)s7ps0ja%3?_S{ayWrvo`h{J67}m3-y$8Ds*%LFt@`K)43=pD4O(DKFh*5Yu(U({CCe`>djJv#(w z=UI1)C&rZ3U-qLZfP|yX>9!8f{}c5RkoMTJ!zyr>ajW(7Iyh&J&33+CeJ12wDncbK za_R02O<9`1!rQH*;!WW5A-+i=33rsJ78w>O@kSgfFIjoIp zF>LNG{18+x+hs3p3mAN%5x`6B9GrU(2zw06+=2tjwICG*Evo2Xb(MoHu`sasI77Ru+(l>@Vd&`K5q= zJvX-BmaxB;17#Wd>oM5aSULY10|JEV0ysGT+V?HeuQ3jG&cDqC4i4tO^#KP5%WpT>KkIXH&^Na-cKCgF zRWkQ5{yp6o6>V*uhykF^BL>}BBy3D { + if (!fs.existsSync(filePath)) { + console.error(`File ${filePath} does not exist.`); + return false; + } + return true; +} + +export const checkFolderExists = (folderPath: string) => { + const folder = folderPath.split('/').slice(0, -1).join('/'); + if (!fs.existsSync(folder)) { + console.error(`Folder ${folder} does not exist.`); + return false; + } + return true; +} diff --git a/utils/generatePdf.test.ts b/utils/generatePdf.test.ts new file mode 100644 index 0000000..8ff6174 --- /dev/null +++ b/utils/generatePdf.test.ts @@ -0,0 +1,42 @@ +import assert from 'node:assert'; +import { after, afterEach, describe, test } from 'node:test'; +import { generatePdf } from "./generatePdf"; +import fs from 'node:fs'; + +const mockMarkdownFilePathDoesntExist = `${process.cwd()}/resume_not_found.md`; +const mockMarkdownFilePathExists = `${process.cwd()}/resume.md`; +const outputFilePath = `${process.cwd()}/outputings/some_random_file.pdf`; + +// set current working directory to the root of the project + + +describe('generatePdf', () => { + test('should throw an error when markdown file not found', async () => { + assert.rejects(generatePdf(mockMarkdownFilePathDoesntExist, outputFilePath), { + name: 'Error', + message: `File ${mockMarkdownFilePathDoesntExist} does not exist. How am I supposed to build you a resume, mate?` + }); + }) + + test('should create an output folder if it doesn\'t exist', async () => { + const folder = outputFilePath.split('/').slice(0, -1).join('/'); + await generatePdf(mockMarkdownFilePathExists, outputFilePath) + assert.strictEqual(fs.existsSync(folder), true); + + after(() => { + fs.rmSync(folder, { recursive: true, force: true }); + }); + }) + + test('should generate a pdf from markdown', async () => { + const folder = outputFilePath.split('/').slice(0, -1).join('/'); + + await generatePdf(mockMarkdownFilePathExists, outputFilePath); + + assert.strictEqual(fs.existsSync(outputFilePath), true); + + after(() => { + fs.rmSync(folder, { recursive: true, force: true }); + }); + }) +}) diff --git a/utils/generatePdf.ts b/utils/generatePdf.ts new file mode 100644 index 0000000..8c6417b --- /dev/null +++ b/utils/generatePdf.ts @@ -0,0 +1,25 @@ +import path from 'node:path'; +import fs from 'node:fs'; +import { checkFileExists, checkFolderExists } from './fsChecks'; +import { markdownToPdf } from './markdownToPdf'; + +export async function generatePdf(inputFilePath: string, outputFilePath: string) { + if (!checkFileExists(inputFilePath)) { + throw new Error(`File ${inputFilePath} does not exist. How am I supposed to build you a resume, mate?`); + } + + if (!checkFolderExists(outputFilePath)) { + fs.mkdirSync(outputFilePath.split('/').slice(0, -1).join("/"), { recursive: true }); + } + + try { + const pdf = await markdownToPdf(inputFilePath); + if (pdf) { + fs.writeFileSync(path.resolve(__dirname, outputFilePath), pdf.content); + return; + } + } catch (error: any) { + console.error(`Error occurred: ${error.message}`); + throw error; + } +} diff --git a/utils/markdownToPdf.ts b/utils/markdownToPdf.ts new file mode 100644 index 0000000..1618745 --- /dev/null +++ b/utils/markdownToPdf.ts @@ -0,0 +1,11 @@ +import mdToPdf from 'md-to-pdf'; + +export const markdownToPdf = async (inputFilePath: string) => { + try { + const pdf = await mdToPdf({ path: inputFilePath }); + return pdf; + } catch (error: any) { + console.error(`Error occurred: ${error.message}`); + throw error; + } +}