From 5e5038320e0cd00a0ed25f6696f78cf7be6c0b63 Mon Sep 17 00:00:00 2001 From: kirinnee Date: Sun, 17 Dec 2023 17:15:36 +0800 Subject: [PATCH] feat: remove tsyringe and use JS for production --- Dockerfile | 9 ++++++-- bun.lockb | Bin 132460 -> 131433 bytes docker-compose.yaml | 10 ++++----- package.json | 6 ++--- src/cli/cli.ts | 12 +++------- src/domain/search_core.ts | 2 -- src/domain/searcher/builder.ts | 2 -- src/index.ts | 39 ++++++--------------------------- src/load-redis.ts | 32 +++++++++++++++++++++++++++ 9 files changed, 56 insertions(+), 56 deletions(-) create mode 100644 src/load-redis.ts diff --git a/Dockerfile b/Dockerfile index 812d62c..7e99468 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,12 @@ -FROM oven/bun:1.0.15-alpine +FROM oven/bun:1.0.15-alpine as builder WORKDIR /app COPY package.json . COPY bun.lockb . RUN bun i COPY . . -ENTRYPOINT ["bun", "run", "src/index.ts"] +RUN bun build ./src/index.ts --target bun --outdir ./build + +FROM oven/bun:1.0.15-alpine +WORKDIR /app +COPY --from=builder /app/build/index.js /app/index.js +ENTRYPOINT ["bun", "run", "index.js"] diff --git a/bun.lockb b/bun.lockb index 4a896d87a5d02394f5c59e827250e1100b63a1f5..cebe52d0090e59502b3fac4d7d9a338696257703 100755 GIT binary patch delta 23748 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%0Aqo1z<3}Hps#9EfZ+hWNE`&j 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 wvTGjmc6v27Wgb)Zzf;1F^?58v+|hXu zpY2~awQ%W*r4JlzefL#$J)AMKdj7eNS$7s4Zm=hAb@=r|ed~W?Ckphm%#W*{v(w5{ zA_)DH)6<3z5`>erKj~p+ORCYjLd$?YAy#susPTXf+OU7$g+^x8CnH5 zN(n+`@Jo=CuU}e93Z)zaF9)7DG*!)bKu=Fh${d=}6j56dQ2`lN>2i)PC+IR6(i7<> zdqHr6oCxU-na;hK%iGr_t@;a))a)ThQsW-%A~kLJQweeeB&B;oXHq*E+zGNPWO+!* ztku)q%=1|7=vGh}HQAmZFDYk29?Cv=_@KdLMrKBm>XMN|69*5@7KGVIM-4VBs&j$N z8l0XsEKm^q9r+)unq;){7xxlfat>A0DlY@YsO=t*QZ5M}cnd;xBo9s;nw1M)pq}=HsK4Tg{u>xwJS{TQfN;dC-XDp@Pt-j;2I*VtRU7 z)-Yi$(rL`L_7wy)Wb=cBFKt5+Pdz%hHeX~{+i6jK%_nsrY1FLYr|n#Fo;J|BZ)kE> zX8MR^!O>qcg+Y?)kNh+h`zK~)j?55*)(tgJE<`*vavSBTpE@L!}PcXatKBw0Kjk~;T&2=&Pqy5PwbbRge5Nx^%P(o zqA?{jL;f5Dq7Wbj7C@5AyPzO>;5}r9vbMPvL8uGa9h~Hp)`CzAvTPeo!FWh&c%{x$ z6Gx?G!UAK$jeJY1w*ZnnGHht$5L6`ug6EJXUI>uJC);WnlSd6p&gdryJ6bK`uu9m}0ge zkYrFhNK(+ZCHzmCjP0bkk|CiE_}48o3%5a%MSphIx?~!7eee`WZ%Ci6noHdwsq5V1 zG;W3@#s1XO@96StNQ$2vuSs)Gf;L+FLz2dJkYxD{WT*kzxtkVmq&Ekzg!nI!PJKC2 zuV_Cit_r?QZ=fX#=34xDUFP`q(p)_;Gc)|fSkgx}wD)1Sgd7=~~RXk76he@DrbP%c~`vz(VTTs%`S{B9=X90IA}$DV3~}YSQ`P$1<|DCEyr{B8^s?g)RV-ppJ04xd!dCIz zDpvL#FRWq}%bU1^vqkJ};?d3)wwUKSTcs~df`CbBWBhcLP_cYz?%-k(o0aC#E*3U{ z=ek(gc3z0TkGSM&6$8rfXjcmx%yV6>>?2-?sA~4y!Og;!@hCT|>7l(KMDycSBFqtz zAVi^FC@3%<>tBCPfW)P$R?|;NXvL3Li;x;)G+;%vnP5OD>MX2kW&60~ZZ&aCi1t(s zyT)_ftx{bKk4R0)YN1jZSTvZ(^W8()HXh|+6+{ramiUA7&gY9miY$BJcSxp6qYpbf~TwZGi>N$sseaiEqY8JMX zOVzE?aU@YSjOQbXRp5EmEmBKN8q7gNk~s^xRKv=S^Qan7&WY#Mu$VevrEN@BnI<9> z!p$`z*lr%>WtGgBM_MPKJ}DNAI$Y$ZT|!N{V2!xBY6Mm0ZIzrc$J(f=P)iyB_M#+u zM5<|(ZXu4G0JGq&T9x5Tt+pzmrlDX>xY;>^eaNL+R(6|5)v}5;tMI&97U?i{(-vCR zs-cp-v*vVxJJkpk+dA`TAB(gIk)4snj&x%Wc%hF~YK%RwBjVuHDxuOOFlt?M_yI8L z<5K*zPpDYml^4~vNF!X0NYpHy2czQ1;ub2^!KzK2t0_MOtR0vgcWRIR^tG~|d6chJ z3c-p;J%@N`nhvHpj9jutPcu=IQd^uFsdkZanihaXs=a%GLTWptgR6(uPAN54Kd?5` zJ<@uFsH4@=>et%!u14*eT_V^> z9@PK?2%J2vSy{fi)``fAlAXY)r0RExgK4(K!r@==Tt6#&!VCSZQp*~G5Q=9`4_cU3l$^0d0s<{bi`W_Qc$>z zI%52=eUQ;*cx>M=R+C3JvPcUNNBxM&fQj=R7>zp2KuoGSwX`0$r`aGSgOS3jE2X7i zT22~^*IqE{wuV@YDJRAaSSpy_0@#OOP1F{!EJ?TYoT|ITYPGpTkVU$Vy`dShU=q5A ziVf=UJVd5p;iqz?RZCWbX~P7qix=xqIa7aM9HhB9D8h6Up=dQ!5z9XM2XSvB)J+Y2 zh|t?==s7~YC?xi%#~nf}rgqql+Eaw|9zxVvc0ATARJ>K6lEtPC)LfGqU_s#KkO;}i zuh>E(y#@9*%9Nq*W}k8?%qrFM*Lpy+aJE0s3$w6eybwuF*t@hbNG^OEtc7Yd#++#` zSUfkoMo9M%qH&J37G09m$QYSU?xCg)U|snPzX*{9@Vq7#lO;ga4Cc;7XaMPGY89wf zh0qd&`cs@(E{GRJSR{t#Q3Z9rd#DruMjfTDbJCz!*t!=C+DSLTG+n8K>)_*&wk)Z` zr`=0(UEqbo%< zWNa8OvRcG);oKq8A|{9P=tzrnDqNeeRn)D|sR=JaWOIxjtwYJyjbLOehA4*iBb})` zf~g^ToM>Hqb))k^)yNCg8N|TJ(@=_BH}I04eE|7jn^3#*lMAslVI&= zN0Hp25e*Zxg*8G3Ba^VG!NAF2 z6_1|V3BGXwe?g_lT@t&lU_^?q@{z=WYZ?p3NQ>& zEWa2AaEd9VAN4CbntjEko;ZXj^XQ)Na5B$>c$UnI+QYXg+@Tkaa4CY2imKGZgUJuU z6duzxLgcBusF%g$*q_GMjGhtV*#11ax5cy*5h?t*93eJK<3+tuYZ`axV-Z6J@aR4k zY3u+&Kwr>mi=*g8Fs!E?BgBM(+#%6oDjJA+%wxPGq|)iyjK&;@2$foZH9|4WZ!Dq{ zz%b!a3C)2bFj^N%(K;jA4dQuyEm9ZEcv=vkHWs=3LEIt9g2PT!l2vrd;CV?Fv0Vl) zO0r0K8QOfs!si;wj_{~{5p{8*q0fZ^1H1uxNIC&QMDUPg+%wsQH%PYsZy`~Q*oy>_ zH$%yG$@Yn*z@WYQyiS%w3T#y$l2ikhF!d=eO^CtLqo!khQ6E+Ef@BwoD3%IA;K!3) zazq3$*VVk3;_5?^>c$ioC>`@tef~*OzHR{7fKFAP;*xag3sAingQ~>P%RvyM2A~Qs zzSQTxk&ehY1fU9ss-^xnNs11q_Njsq04XpEpy$7lR4!Z1tx0n11f7$l^ocruqr}Wq zGfvVozD|;2Qvf?44-k1lY8`$o)fKSMAvEBX2Ut^K&s#(Ko3dcmjTLn1t5)Y0Q8Wg2ENzj50LZ}msIX9K=K|y zPjN~0|D?u3(g3E65A_I=-#gP|$Q&b3TvA3? zWF*V0L6Raqkfc~WNJ?)2NeVU6(?cQYDK5!VO%P8>5qf$Fne(OuHJ&Q4pdiWSdPOaC z*;22txU@$;8S$ieEF?b62=73W;u9fB@yU?*CrqI~)c+J9OY$Ho!@Ihisb&y_*GbAZ z8|joKU(ZL96rBr6^)1l(Vo1urRF7W?iGRW>{3%8Kzm@`!A3##U4|Ta2k{*&2|1l(0 zv;&g5qyQ5CgwODY%I}9HOAqVuM<@}`KS^r;l?>ECplv%)ys9p%Lz3ooblw1x9#wMBK`uE| zy+2|}Hq>P!Jy&r_tpy>Tl7jVglGJ(=NGgw0mMWX-=_Dz>86=gDgruYvI&Uq)pX7%q zM39WpWvni{K;oYehd)$7H%Mx*x6b=QQn?gJYA97tPuKY%Nb1NeNP0+8a5(-@xoi>R ziTpEO&rn=a!Kr#YNorskBt_-v@&BttQT2G`1xfXJdr%A>Z@>xo_l!l}(9U4wi?%R7SA3vEV7ShYxi4QMph^_F#DT|XHz4+20T6PBW#)edF@`EzdFqb-e%Y?=dX3t7TC%y%27g&{dWLAkM zz7xm$=a~8DU{$zNP8@f&nfdS>ImU%ncm1(TajurR?sVGV9h z(!#4&WV~(uuOsROw5!?gWWuS4D+xLK>@Ekdt~_;rkLVWZy%OhsxVY`L8@#~g%6)7y zbK^s7aeUNxGd~CB&b`LRao-7MK6$*%Jo#y`3t+($WLBMzpAg5VO*HeHU|u|6VjK^f zWajfG%B&{826h{)^(2}3@cc>e(`5JwtPXEJ8Gf1qKTVcdUH%a4F<6%=GON#5PJy4M z!cS9W=Eq~F!cWuSC$NT`O@p6u;iqXbUe|2_+XYr7S7t#xF&BQygP*{Hxl^4~ISu$(Q^Jl@n*{~1nE#7=K?8}FJvt<^=AA&sw>yj@snXk-; zeRE*n9GS)N*g3F|!#=PMoN?GU7xrlRqPl0`4-MN(9F4^y*3@HopkxFNBg&h zG;Foqen>kTopSSxiQKiTOo40mHP@M=KWR0o^{zYN)&F=bbghvi_4#-J z2Cp%(()dDD`gn<%KU*xbfjnvn+_copH!hLcApQg_ewmr~Tq?6nzHTYpwA{?i%Vai$ zCoF@TzzV>!xU?K@T4Cmcmdk87-wo!v(#$^N99cUuWJtupg*D`hr@ z7lQe&HgmsKG8@OUSHVqSm%(y)-PLf@8Z)1?kPgn>0zzV=Pm)66+4X|&$%;xdkV6Gp+z6~-{c-jWo2X-86A$R)_ z_HBfHAIkVaQz4k|N3d_Bj9=YkBx)*tZ4tZI;>l{0>;#t*~#4jCY6&x4=HIXJ8w6)K=KH4fbu7*+%{ZEdFEI zw@qf7__}SdZ#(S!SY}&z!pE==tN?5qm$t*c9k6e^jGtHS26NpB`*z4|Cr{e}`@oKa z?dEPfVc#y;w^L?&cp;eYZrHa=#yh_3U9b=AGT2^TcQ@?&1orKg*?xWzENl<#`$WcD z!`x3`AJ~1c&w2PB*!L;y+au!*${nz_1+ec^nHBPdpTa({XJB~$QULotgM9@uJI3c${AX&>y{5Bv7X>>S?>=6V43?U&hkp0*$M zfgK0C$lVUWzJsvufXu$;gk47t7qG8LW)FEn5$ppi0DHuxFJRv>*!P9Ze&xHtT#v)PV>0`l zryYZRV8_9paJS>I?*!~SF0(&*A(-z;*mpu^&v^C;*avnQ>@QyTB)#VbG-lq&&$k( zr=5p^7s~My=cBQYx?O;Q7h&K9+D8k)d@sSki?oksUxa~Rm%*y@x|d+!*D&xB?V}gL z!oGohU(-IC`!(zXyAS5W!@q%jmto&Gw2$5aYkLLuU8a3>;bqtd_6)2(kGcZ;zJ+~P zXdit77Jn7?eM|f3x^H3MHQ0BR_R)l^un(*NEQm|jVBdAvca8SZ-C(ZY!M^LXkEUIR zePGAI!nxabu**qZyWc02b1Vqb=!%1eM=#_GH>)#S+RPZZI+)>m}v{XMt9tH`d+5U_f@tt zp9|A|X?hp3CZcol;Y^y%ZiAj#*9}E^lI)0O2lKlesDnex*kWb zASg)h6wm2#t@Jp0S@Ve=*P7z!8+S9XT#sy{XQcO0rS-VC^tkeftER`b)#EB4E*>Du zqx3lXrn8oANVFbT5pncIJ3aJHgo2fToS*c_c6wxGMAFLJKh@(p>T#}!qmw#4^b&@GZh%Qsu#)gLVkjI&zQi-_EoEja=B+ffGFvt3 z^cp}ma*PJX0Aqo1fK61cSlO~J*(f&}7z2z0$p7STawWO$Pn4%Oci#e6fos5Z;5={y zCcAMOa$ol`A8rRzz>YnA0~?Ns3cTRz0UYf)xNKpc3#s+Pn?i0d@iP z5cd&e9xxr~0mK3wfQ~?WAQ%V%=nY3MK<`0mF`{=mAwU=q4g>&!0KF^n1?ti}oO%e< z2Oguqe&7Ib5I6*U4om^20@HxWzz=As0VFM0G(~AjJ_BeP9tLItdB9!dqe*9ny4C3j z`7ZbjfPTsmfb@zY25US52>`taqL*eq0KF6Y6&Y^;^ak)VU?orys1Ni(etPpoFW3G6 z&jtD-P68JJ29yTM0J~_K;<*~DPJNnE>Vihfkr9yqt}jU?%V(K%PFaV&rM{}?@&>5gnMLk5l6AiQg=v9#`-~toWry4iib~zqtYMD6 zQ~hN^lpRnSs0`3rNNc1!P!*u{tvL`0&^)Fs$r!PL2$N$Q0`&nepaxJ4@C2#@b%EM| z4^Rv625QpVX63to0L2qG!kR=0iZl{Q5@rAt z{}HeeSPCowW&%{3Ip4U!_omG}^RIj{^M1t{H6!YD&V)#2@E))hSOcsERskkpB|!NpZ8A{2zGdLWmDsH3*+f0|ro`fkY(W8P~eHAXy*3EHt~ z2X6@Y0kqE7SALCRb#lrfXa*bs2jDkk{}p%y{0uw_knxBRp49T3h)i^HE;>I z2%HDL0?q+vfiu8ifE=6)7^)J-h{#b7QxsVQ90dx2FM(6QN#G0M7(mPD3CQEXX@G_! zL9eJ}#VRkJMt-1nNYYTepmIzw>Nz8_cm_k$l4+Oq3XHrZdC78jk^eey4WKj%Q=2~k z-=Tf=NN^kSd*Bvu1GouLj~k5`lc%II6i*El&-atgsS&E9WEmP6MtwO(;xEMtQCvwY z9wY8|J)Xk!+fn)<*)xQn0)GO308apFnDUfC`g2H%r#L$6i2wus0!JCx4?>9qN-zPX z06RUNDlyVY8VVa08}2WQd=y7{CKt;`9xiDN9nL7OI(?Gz1gQ$R0WJW&dZkL}^hU31 zs{nL@qcaMf<|vLpd0h3d2c)|mru>xd1yl!W0CbwAuu=Af5u}~r?iZ1WD{eta?O(@@ zvWB()sZR1L)$^kNiO{w}1^x9zvd~b3J_HzphVoKA`Y>QjG5T;|C}v1QDdKc)rK2_- zv+20q8gZrQY(bwQXt8VtGzCHdI_Nflq)+k@1WJRf@HYP7sXSNtsy(Z>)2;)v6J3le z4L;ZZTdBx;1^EXxR!p(%xjpOE$Une8ps_M;7ITXYd~q*_@jp|Mxv_tkej6g z@l&;iMpXA!W!Bp)h#gQ4k~pUPPU4bMzY_}IP+E6lK_QP(SVG~+J&yJn-_GHO%FNO% zz(3GGxDm6{Qs(w{vG)DO-1=pTgPrnGCl<)&E7wqyXtGzHc4DsX>GsEDF~id`L*!Ew;rxJ+bg>W-a#2i0G%*4>yIAEBJ=!rVM;j_UUh zwhkLlkGy~0Ef^VssCUslWt9pE%#}S+JiD?~591n=Jzw7H`$5*nQ;{*iA3ngAVOCaj zMcb{)DW7yj+otl$18_E5DHF$1byeDt{49_$9VMKZsqta7Q+rHS@A5$ z!?=nhVebRek}LOpRSPfxafq#?9EfM_L|su2nmcY47jcm28% zThN2fDWzKtT!@?@@HlMAQt}g^!USali3N&ZH;6ULw_w4>MJ;}Dapvyxn(S5U52aGZ zH7AyO*DKxo;E!s$j!4mJ2zl;8pJoJG=>F+D=C{0d5*g45RMfcG#QNTyr-9WnepM?C z@NbL-)KwYV4a&YDM<7jsO{CsIrLdbi_MZ{EtGIM$F&=+b)h?76Q}(ZB)jI65Q(MHa z!dP@yY~7h_h;d1ZV>$1c-I{kQha5CHki)n}#og=cCo$FH=cziW+BSAqPN1yl;jY~7 zPF-D1@#q2WTulk-!P>bSSEW2XA1$`-d}10(Hqz?MP?q+dH9ph-c>;%$B`jW z8*clQ)5yS{Dt93~%6h3k6tvZ=+@(&^{f@D!aslY}#-3hEjh@Wa!?*?|{!(zyc3mFV z&})MFlf9LFy`U8LR(|TqswfwGGf#1;x3a1y3-tKFTm5Kfn;-v0ll2)f-=Y}0kgV3S zw`1p&X1$<@CSIvTS<{PE74_;%WT2Z#UMb?LMD}KlMIRq!L~pDoucWCu#p-ptDy{mk zs%*8=yAO*Iht^g$r!rUNFyh=N*H%B1+Lmpe>(t@njeYT-G5rI=XzZ_55>uI*QaO=T z^)Rk{>Au-MJ~?etdIfd><;r2W^{JyoC!(8B=}!Y-ldrNO365#)JHIbH_~vrD68|~l ze_PXkZmZ*)wRv;OntIx*{CN1ibGsWa$Q4;5|HfEc@nKYRBio~RCc*IQN@x-b5~cb| zdJ_EMr#qrfedQByrhBt=KXmUKO|sP2ocgLWLyVhpGMz%`0vGGxFmNtv7|u$kAWvl>+Cr zZm7(G^e`^(`EBx!J^{@JJydgs(@g5rNV%GVafa6Zpc1coO!v0#XlS-_BsN;D!vfiJ z1E-c zB|*wPlyx_5C;IErt-NW!w!E+Az!mA6}z z*CevfZ{uE8{!kf&q9V>Q(+0qx=pg0O0We6b(O6zec>SN<&AwCi4t&u?t{&QDNVv#s z`SjGe&mQEzoOS=$Yp+&Q($yixjY@arj%{D+x^=nSbYCl!!P%9Dv2j<^hnWE%r$0zqh7>yUA!W5P4n^IKOP#v0 zC11DsefeNy2u21hKWaN}Skoz=hjEEhmoxWjjn1r)fPDI%BQ%?ziOx~8SN2j5g~p9h zp5E7L?vuP}0_tazsAfugt24C0m(HXO0q%wF2a}Dl=9N3X;doJF$|9bSYBU+9?oMR^;r4CZ2{V30R8X)|p zrl@C-4N3tjcRz~^*s*O}+xJ;qvHgN(M$yK?Z^}bt5IveJWrxBkEt;#}yxM#=e4qFI zoY`m8jA3+CPHL`1B1iB{xI&zp_gYFW^z}FH?rJR6aymcjKa~^Xo2O+H>vsCokJA zP`=HA*|>5`^-GTjk46QK`+DKaDvV3Hu1>zZ@a*iQrCLfbn)PX=_z#0(#&uqib5dGX za2lxhIqgZtg``C&>kpHfh?M{DIdD)*RzkIA*r9|6^! ztIzT~aZW26jx0D81P(W*N98i=hd0b9+i-0k${490os^$QmTjY)K)k+=&L4q;Lwp;> zV+4{`woyVxV1M*_OFP1@>DPPQs&<*3&=AdftPX*1DU*;x9Ql^AYXnZs#$9V`>Rp*W zJgROqa_S4sNu~No915XX@z#s2-mg>6NPc}OW$-ARHcu%u$FT>i=C~V|vfZpv%K6hO zhgU)a`g{`5NYK{`2fO)WaVq^`qIyD73zet?6h{noRcSN^#_3fXxhyftN26al@SmgK zRM!z@+!!nh#*J@#%!}*B9lhRCWMLQ{aIA1g*@6suagV>}!+BACG;_q%4ocOr=m6tN zxI@#fF}M5ScJJzEXGVz(pOS+80|Q^}58BR4IQ!u{7%xWU zC3@Mon69XB>h(uMN6<$X+gwg03yX1S5U9H%@-8=`xhGM1#?(R$M%#tnGu zy2a)?-P|zbWkKVTy}buN=zetTr7JH}j4HLN*q2Jc1auf}jz_@thCliz zC>@bQ_k+iq?SG}o;sc@NU@9?@-OKjWzG#>|@WNkHF8U1+*~1>%&5f@t9mdI1c`)h4 zhb;Bu>l+4|yK&dx#8wG?-Isqp9Rm$B(mx9Pc)8J|9A78=(E zo?TOU+^1E4Sc??>2sNjdQf>-%7~|r>sl$`@HQjl{>!riCD9xv!dk-qzAq+pvoC2Ng zdMgd4!jW$^dxE^u;jUdya?YC$%(w7yZ zE<@@){j`tvv9Ii`ZTYv-TkLqL7BU{2hPhLuY@CW=cOg;BnCEtPtjDzo91H^dNBNJ! z+Gf;fXsH(z7xYycp@QJQdo5fqxw5Zzr()*mWuJ^Y5Y>@pwpQmxW!yA0`sSiWBbubO zpT1zw7qt>=+Z+1(e~vD`e2FHl?3L^vYhd@~cgKq&%Ccj$6fb7LGFe6dB*qL;2)cEcN9V ztM0R5%FuMB<7|xI*L=ZByBR+58@E5l#h#7n`E%hlRY!G($%B+-DC^K?E>ri@74ztq zgpqhvVqD5SDLy2{>FAYS?}*xmw|P4}H#<+=>_b1gp$~J}yLb4;9{cIST=4SX?OVj1 z7#zvKUuI$TajjEQ6JvC1=_^jQ|=s7H0RBoPU?k>j7decPlH?;r{?86Xc}; diff --git a/docker-compose.yaml b/docker-compose.yaml index ac4cc32..eb27655 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,11 +1,11 @@ version: "3.7" services: - # consumer: - # build: . - # command: watch -d 2023-12-15 -i 5 -f JB - # volumes: - # - ./config:/app/config + consumer: + build: . + command: watch -d 28-12-2023 -i 5 -f JToW + volumes: + - ./config:/app/config redis: image: docker.dragonflydb.io/dragonflydb/dragonfly ports: diff --git a/package.json b/package.json index 49f7b13..25119bf 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,6 @@ "class-transformer": "^0.5.1", "class-validator": "^0.14.0", "commander": "^11.1.0", - "core-js": "^3.34.0", "fetch-cookie": "^2.1.0", "ioredis": "^5.3.2", "js-yaml": "^4.1.0", @@ -36,8 +35,7 @@ "pino": "^8.16.2", "pino-pretty": "^10.2.3", "query-string": "^8.1.0", - "reflect-metadata": "^0.1.14", - "ts-node": "^10.9.2", - "tsyringe": "^4.8.0" + "reflect-metadata": "^0.2.1", + "ts-node": "^10.9.2" } } diff --git a/src/cli/cli.ts b/src/cli/cli.ts index 85bf164..d6a5356 100644 --- a/src/cli/cli.ts +++ b/src/cli/cli.ts @@ -1,20 +1,15 @@ -import { autoInjectable, inject } from "tsyringe"; import { program } from "commander"; import { SearcherBuilder } from "../domain/searcher/builder.ts"; -import { svc } from "../system/constants.ts"; import type { Logger } from "pino"; import { trace } from "@opentelemetry/api"; import { RootConfig } from "../config/root.config.ts"; import Redis from "ioredis"; -@autoInjectable() class Cli { constructor( private readonly builder: SearcherBuilder, - @inject(svc.Logger) private readonly logger: Logger, private readonly cfg: RootConfig, - @inject(svc.livecache) private readonly redis: Redis, ) {} @@ -50,6 +45,7 @@ class Cli { }) => { await tracer.startActiveSpan("watch", async (span) => { const [day, month, year] = date.split("-"); + const originalDate = date; date = `${year}-${month}-${day}`; const d = new Date(date); const i = parseInt(interval); @@ -81,10 +77,8 @@ class Cli { const sch = await a.Search(); const timing: Record = {}; for (const s of sch) timing[s.departure_time] = s.available_seats; - const cmd = await this.redis.publish( - `ktmb:schedule:${from}:${date}`, - JSON.stringify(timing), - ); + const key = `ktmb:schedule:${from}:${originalDate}`; + const _ = await this.redis.publish(key, JSON.stringify(timing)); } this.logger.info({ index: index++ }, "Watch complete"); span.end(); diff --git a/src/domain/search_core.ts b/src/domain/search_core.ts index cbb5a3c..f39e75b 100644 --- a/src/domain/search_core.ts +++ b/src/domain/search_core.ts @@ -4,7 +4,6 @@ import * as cheerio from "cheerio"; import { From, TrainSchedule } from "./interface.ts"; import { stringify } from "querystring"; import moment from "moment"; -import { autoInjectable } from "tsyringe"; const fetch = fetchCookie(nodeFetch); @@ -61,7 +60,6 @@ interface TrainScheduleResp { data: string; } -@autoInjectable() class SearchCore { async mainKTMBPage(): Promise { const referer = "https://online.ktmb.com.my/"; diff --git a/src/domain/searcher/builder.ts b/src/domain/searcher/builder.ts index 4906c04..c01b182 100644 --- a/src/domain/searcher/builder.ts +++ b/src/domain/searcher/builder.ts @@ -7,9 +7,7 @@ import { import { StatelessScheduleSearcher } from "./stateless_schedule_searcher.ts"; import { LoadedScheduleSearcher } from "./loaded_schedule_searcher.ts"; import { FixedScheduleSearcher } from "./fixed_schedule_searcher.ts"; -import { autoInjectable } from "tsyringe"; -@autoInjectable() class SearcherBuilder { constructor(private readonly searchCore: SearchCore) {} diff --git a/src/index.ts b/src/index.ts index c2a1ce9..b9408c9 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,14 +1,12 @@ -import "core-js"; import "reflect-metadata"; -import { container } from "tsyringe"; import { Cli } from "./cli/cli.ts"; -import { svc } from "./system/constants.ts"; - import { RootConfig } from "./config/root.config"; import { ConfigLoader } from "./system/loader.ts"; import { OtelService } from "./system/tracing.ts"; -import Redis, { RedisOptions } from "ioredis"; +import { loadRedis } from "./load-redis.ts"; +import { SearcherBuilder } from "./domain/searcher/builder.ts"; +import { SearchCore } from "./domain/search_core.ts"; // start up that cannot use DI const landscape = process.env.LANDSCAPE; @@ -23,33 +21,10 @@ const otel = new OtelService(cfg); const logger = await otel.start(); // Start DI -cfg.cache.forEach((v, k) => { - const endpoint = v.endpoints.get("0")!; - - const [host, port] = endpoint.split(":") as [string, string]; - - const o: RedisOptions = { - name: k, - host, - db: 0, - port: parseInt(port), - autoResubscribe: v.autoResubscribe, - commandTimeout: v.commandTimeout, - connectTimeout: v.connectTimeout, - enableAutoPipelining: v.enableAutoPipelining, - keyPrefix: v.keyPrefix, - readOnly: v.readOnly, - password: v.password, - }; - - if (v.tls) o.tls = {}; - - const redis = new Redis(o); - container.register(svc[k + "cache"], { useValue: redis }); -}); -container.register(RootConfig, { useValue: cfg }); -container.register(svc.Logger, { useValue: logger }); +const caches = loadRedis(cfg); +const searchCore = new SearchCore(); +const searchBuilder = new SearcherBuilder(searchCore); -const cli = container.resolve(Cli); +const cli = new Cli(searchBuilder, logger, cfg, caches.get("live")!); await cli.start(); diff --git a/src/load-redis.ts b/src/load-redis.ts new file mode 100644 index 0000000..8736c67 --- /dev/null +++ b/src/load-redis.ts @@ -0,0 +1,32 @@ +import Redis, { RedisOptions } from "ioredis"; +import { RootConfig } from "./config/root.config.ts"; + +const loadRedis = (config: RootConfig): Map => { + return new Map( + [...config.cache.entries()].map(([k, v]) => { + const endpoint = v.endpoints.get("0")!; + const [host, port] = endpoint.split(":") as [string, string]; + + const o: RedisOptions = { + name: k, + host, + db: 0, + port: parseInt(port), + autoResubscribe: v.autoResubscribe, + commandTimeout: v.commandTimeout, + connectTimeout: v.connectTimeout, + enableAutoPipelining: v.enableAutoPipelining, + keyPrefix: v.keyPrefix, + readOnly: v.readOnly, + password: v.password, + }; + + if (v.tls) o.tls = {}; + + const redis = new Redis(o); + return [k, redis]; + }), + ); +}; + +export { loadRedis };