From decd45827d528533f19a1b2b63da1235d57719a6 Mon Sep 17 00:00:00 2001 From: Sourya Banerjee Date: Thu, 17 Oct 2024 12:04:13 +0530 Subject: [PATCH] Backend Migration --- .gitignore | 1 + package.json | 26 ++ realtime-voicecall-backend.rar | Bin 0 -> 17016 bytes src/index.ts | 98 +++++ tsconfig.json | 13 + vercel.json | 15 + yarn.lock | 772 +++++++++++++++++++++++++++++++++ 7 files changed, 925 insertions(+) create mode 100644 .gitignore create mode 100644 package.json create mode 100644 realtime-voicecall-backend.rar create mode 100644 src/index.ts create mode 100644 tsconfig.json create mode 100644 vercel.json create mode 100644 yarn.lock diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..30bc162 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/node_modules \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..e3fab96 --- /dev/null +++ b/package.json @@ -0,0 +1,26 @@ +{ + "name": "realtime-voicecall-backend", + "version": "1.0.0", + "main": "index.js", + "scripts": { + "dev": "ts-node src/index.ts", + "build": "tsc", + "start": "node dist/index.js" + }, + "keywords": [], + "author": "", + "license": "ISC", + "description": "", + "dependencies": { + "cors": "^2.8.5", + "express": "^4.21.1", + "socket.io": "^4.8.0" + }, + "devDependencies": { + "@types/express": "^5.0.0", + "@types/node": "^22.7.5", + "@types/socket.io": "^3.0.2", + "ts-node": "^10.9.2", + "typescript": "^5.6.3" + } +} diff --git a/realtime-voicecall-backend.rar b/realtime-voicecall-backend.rar new file mode 100644 index 0000000000000000000000000000000000000000..9ccf1a405f7505efdd06204efbbed8734ca0c099 GIT binary patch literal 17016 zcmV)kK%l=;VR9iF2LR8Ia{vGh000000001A^>iSRF#r+-008z20006w$knbKmQPt7 zGYkMA0001Ua${U+Ze(S6E_8DM@Y~@!4c$=8%-hXD7k|Kg;N&qtseu}l3NDo_piwLq z%@)WblwA~1Dv1{1wX&5(HtepyccRHFaiUfpgo#SGdH}aY*xDyEnat*4!hCBwPGQcj z55xEwo4Mcw$1IahA^c^SW;WoniM4jMq26|M`yeHZHU? zj`-%wrlL#z6ebs&o12lJH9vGuJhmR%+kQyB_cW?Ip@c0UnuS1dLPk5f{%OevOX$tODti zA?Aq|jI*py8V#fInCW`%d3bq%4(BHw{a>?jd%(9w4Ph|@B=ck%pq@NO<1@QrcyHl< zsEXwGowHpL4^c)N(WD9b%CkBRU?33?b1LD(A%U! zfpT&e5@%4jiL1R;>H1Todpz*V;p`)V;X2Tlr^LlTYc~6Q+TbsZ#MlBTBuGdDgNt%M zt9s*f!d-c5#0;efqkqJ;Z6rAkTlBGpi6n{k`a%bKxoaBZR5`K4$ak40k1G|1Fid&P z^u#CX1jjw;kHQ{wVa#3o!i@S4?I2?G>*>Jnly-<(b#)K2wg)Z`8Q zB3$Z`c%y-`Xq89F1O%*j&k8PBUFA`LF!9YaJujydFFOxqLSdD6uH9RW8#G-Kkjzut zBx$?JMqNamh0{^aoNrj5pLx^x2SDOhE7Km(;p}TLGT9tDF_m2_BhJta9!OqZc?VOpp+TyHP%p@NbYt-+idzQFILrvVu*6Dj!IYXDGUps ztOJ9^rN8?qqci~Ak(ccqT#Va0ZH=_g?i^iu{y6PnJ9wU9^UXY0q``pO5;#z1Wz)a_dq!14J> z*5Fo)<`$daL?Y*e-GNOeN*=#B>837jq_`Y^K;K=V=f4Ghy&6>wVCabW(KhyIyhVsS z7EO?)30mct<@6~u?s)S~EGyNjd^y$K&nF)*Fj~~8YLv`)&lXqJrStiVzzpCP-y!$$ z9<+W}lEq^_?$(cO`(=9L9n9%@(e13y^gzeBbRdv103-nb03!kb00Q=Z5{|BoPFWo@ z3;-Yi003}dV{2h&WiD!SZ*BnaoNNmW6%5SJ)j<<{;Y>Z%ryG`Eom2~S-PdInfTBnW zt#Kw2QQHI)yTKTd#^Zr}w;Td+wVw+x=O8G9grZIoN3#YD9^o3XK?Eiaazo|AK?5?2 zTZ)5}L=|#qvjktHFyZWCiU@?1=3=P{?g;*A43_`+) z$F0DW3O7G1YSQM=S%&1oxHPCJRW+;(wfOIk?wZ>Nlv;m|fwD8><)DW`zUdg@)Y+HH z87=60d-^y#MRl3{t-?;ex~N4a3z1q|Jj3-UJOP&K-tu&DD~Rm`vI0x)4!qq!wU?L1 znEBfmg!=WMd8GJXRgY*YnK_Sesg#G(PB8NU%WzzbfrKrTMlKcd7^(%4g6C~*aZbgq zbu!hIh;+B$jjxH@(P2ei2QuSzoy^6G!Gi@e>R>zVFm>=3<$=QAgHP(Bo4V1EbRdu} z0CYP50Dp-900Lz9G{QQKPFWo@2>>7f004Pma&9hcZ)0l!u;!>N5CKsPkx>~`6_tDT z&A$iBR=WNyp>t`s_L@+HApnqoM;ApiE+d6-0E8hO74F+>oYrSEASXyBWS#=6>8q`E z-fr4bfR`mxVQPL;WVh7xbG8TYM(( zlePF6c5KrR{^?Tk9GRinu20r)j?<$j>&2I;e>cI>qw-==`>)q#P5=53LWVVw$y}oh zY){SkSQVCol!q8KqFXF?I0!}g{~?+EoPgJxWS?kqu1KR%Nt~)UQ%VuCv15Z~i8QRl~MXn=llpwBnZW?Oi2+3joCC5BLf(~Jf ziYbP$(O-)gxRu<8rJY_EmnJY>R|05eB#U>|xs46lBB*P%?9jZH>((|$e!0d+fK|1y zE_C4*OEaZ2-TQL;)BI9z{QTa0+7Is3@I*tL6;=SeG!8|GB@*@zs?%u+CDprrFQV{ zXH@KpL*u*RZXPGGhwlJ7WyI*2OEkn_c)8c?JQ8kn>1Y{Sl#n-02i~ z)vq@KCKIzh1xdlGElw}C1okH$WOx|SipOHaUxod7#_GwKXA`Dqeot@ia+$r~N1*4~ zKQCuPdp}&zQvYvhf&Mt`qruY2En54(d9xTN{Mq;ZPl683d@%a70x)4*FoFhfflDQ$ z91wzw4Of?NVw(=rnApt-FmnDZHktdX$F+oVQn?O02JFv=h;Wg4nC=Lk2I|`v3KkN# ze*V*uuOdn{uT_NETI7~suxALiDmnMrzHbL-!F*Y1!*c={Z=L4(n<3@P?q=fK;46wG z+4mFmFWeSQhA-2Eueq)P4?YS!*?ivFw#X=egc*dmDB=UvnJwlrTLYNEZHPFoI7u=J=Q(vDG%bEd-**Yil!6 zg)|T?I??H^S-cb!725~zBYmj*>>Iz;8@@*G;M-&Q6O#HdZE~%mifMLA0Htw_C6^pv zK}i@RSYux}F3zqSisy{+T5w2=DM3!fbB%T?u@3dk$DKme%zI8FM$0#Mr4jeGV86K^ z5r>j!M`)T-M}n$&#zm%xDGP4+eV+q*642(DwYHz$@>EbZ=# zrKX4;Te9P=OJbu&+J-H{*4TE|DhCOLg^a0RK(wGeSgl%(aG{NS|5%Lk@JIYQy&~gjT0-xCTn6>O!~IaEs9NTmQ8{dqC?nU8d?&(rX5BN zpoZz4s`Br*g~wY*5w-9`p}VHZLx*3&oRH~eD|*k#{E-&t(?5X!5ZTxe;s3AG+vv^T zzL?&k?@xX37Dopk9M8Xpqe7J*J{mmPQ;H;ni;fP%AwcsSj9teJYx6W{X&w`349g^r z7$y>D&M4R_E0&xV%|i@|rM*?p(Xiqq-(*}^j`FoKISN8;r1IG$R>lZ$ihK3M!mZkw zZ{}}4xP?WVnk?X8%Z~4>invRmdy&z8I~{=D4IC9UFkvDu->X5gbc9&p`< z0z52+Wjq22D6s!{!hA@kn&E}AI_4BBUL&)vjvN$@;3JjAtgQEM-#A$*R6#6wM5Ky# zETMh93L;p=+%cGVxV}^t(Qxm$9;L$QIbKYq!FwVxscn0XVLm6sp<#>|i?{8~FD#|= zyY?DthJE^5&xl|4fc_xP2L5V1*qq%FqQx>+8z9mpR8op_mWH%xg%{()4U!CCZzb^9 z`M|>uMyB0#^NYVE18PEq7e~`*`7tS|^?3}Otnk7vMsSTX|BTFYh=m!K&(+R}Ed4Bk8YZiwFPAPCCfXzmkX!?AstnF**okGu9Kj3-U5)WEf|bv-6GzF@-g;qp*P% zp<>d8(yG?&!c!Xsf^x%?b1q@8XIU&&(~PzVu74yvrb}w9g@&-|a<*(lzhcEZto{Ut z!Dyv+@ROTgkLZpac-o=)F*UCKM*2VlWa_EEOwpnJ>M~3 z{||3^|99cqX@^=o0j_N)zw6BNGM*G9&TO63~UB?BTLp^gXMxL_b zSS=rkS1s2en1J+>Z)eg3-j|gNx_#2Cy_w+ApWh3ye^LLnDum3?119`Y zorlfr+X<7xhQVdDwuWFQWpY=>4QfPW*=8Mw1!zKwG*6rbrKU=F@LjV|XTwwK2M6z%O*l*jy)Vo%{<+>8Vo2fW*iyQvRor5cJ%Nw$Ln`%@aXz=@#M1^w5vH$+lIU+ zj(JxKR_btg8}@Cve%c$%HzU;6r-)msroN~N;^8*Ju!Iv-a3r^AuhkU zQ%-z0voKn|IeFk-1Qf6A20Tjuzw%M$z~>-v%rLyWgRPdxgcvhG>*N;EEd+z*u2BF< zIgSK_e>hrRY8&@qXZq?S7O0Y!&}FPPE^WC>e=cY$HIFa%Wv8wS-z6A9-;eA8J#A0H>*k|7PxwTLxK-{* z;Q^+a0DHk8V2!lAI7rOOsX%CPZ2_epI60QY8s4tPiu$+PM=t!!?j=;VRJ^ihCTvIz zhYh!rABYk(MqBC7C426d1^vn2y_)^E#(?{ERHbIY_}bfbF*Mb=sf(|BrZ}1_p8!w@ z$}js`%}mXuMt{W~Y))kqlqsyVF%5=P#FzeA29lmIrO05?OkB|g5tkVxzQMuUhCwox zuWCjcnD?Qn;S(G>Re_}8w|Sy$l^ME&_C-!2@~?$~g1o8MB&l`?I~u$TnA<%JxG z;TulQv7@rF2XHU-%w;yIe{vepf8d!bt{|T+WW@hz**e;@ir&1`d9^1Oh8R-F3Uo`E zA7b2Wa4qal5IK#S!7Pn23Vu>py^O(NGZWM@nEqIi zUWV-RNQ>V`|2#kJ51wslho3$=GqZWVpid}iLz>v`8aoUaK_oK5<~U1&E-{0&6VHlS zWcCTV(-4rTYsBBqe(HGd*fTBx%f`xWnXfzKR;`mIH3>h7_ZHd*9+RHa(Ig2O#M4mI zRdZI#Cdfp(lmn@nEgGl+i%HXCw*qfYfb$O*Wu67%7kBS8g`|J4x3iqjjFO*7h`x-# z4mxnrorTb^7d#*|#E>UkK}cPuSn=W-Fs+m`Oc&*@0c0!;-_9E=i0zqHTxW*AV{}_? z)E=Uz(nd-bs6%MsY@HAoPoe9cRUHKmKI-k^Lf?t3&HAP5w4Q#JAEZ{s?-GhfN0EP$@NCS!$TiKWabKwY1z#Th9xS_~yY`t{L4Be@o#c-9 zJlXS!eteW?WOJLK(i&(`n>=$%FNy9D6Kc2N7DyIC1Wov56fos5U(P2)+7jseS@h~{ zv7jY%u|Kx8;*SvG22DnxN~3zDCY+6H(Gld_7aUirzVOBHty<{7g=+TlK0Hphb8E|C zUcN^#v9ONWI#cuy+w_+R{xN5nhjf72&gc3+@x&-eL;Vw4WV2D>pX zlP1KtOQadc5E0mH!&zLingV)=>=q5NohZnWyV%XWV{5T|s4*ZEHU4*&cMjdTgjhsJ zx}si6GWvN6i8*4XxU?*BX8J9`wTzTA$jSQL%IN1*+=jbRS}MOo=sA0mUnVKkPrj33 z5A?e4i4%3t<)c6CbAd5NxXiXRO9nPT()dv9@=jWbE5HyY?I>17Ab||*X<$j0O}A50 zB4OMyc%xSC&L-F0n{IqgkT}?njmn9+j)7v_15x$kZNlv9v2PgmYgx4!_eiT{N_t&X zk;liojAY$z(e<{S=hoWSl8cV63B14DFUKbn;eFfdXwC%nbJ3lh%$2!YaHCBUSXdRX zl5dlv7~so@05L`|Q4P$EsVxoI(lq<$TZTLhy%ATM-3>~$aMGcY`*^ijItGWRJ?rlp zE_%_({z$DxcHBzkm)F#FIusPuahnAnyLOw)xt;8(HDfhw%xdW2OfL(3f6Ui()oKPt zeL4Sm@IBOleNsF;*|ezoaZwx4jn{h(B*uRwU#6J!_G80DxFOzRBT~ z5XqS*@_Kq)HpE#bbP~DPbWYQ2t<>hh{1_yhU-ZQ4mj~PLa|g$5qV8@vb3QO{IGTAi z7c)Pa9IejZ^FEvIH3I}Hx*ySnt$66o*txy2KAjCW_tbcLet{2sXH00H)0%FV7pL%G zGG(jR!mOx})#Fx}am zYq^SZeWI#~rkhOSVGj6ZcU_{#9Gd92r^QTPr9@YwI+Y(@Iy14k%bpNCD3d_{ffJO4!^c4}wbg@7$SmbEXARlAfU0b8 zmdh}&meN$o%^}z8xN14@SRP##sJeN`!qq(~ipj-kO6Zn0joX(zJA@0(auh47*TzQp ztt8a&bv@8~4>!>ae^-xkE+cFK0)D-p)Ah>cM)pw-n3ZSY%+KKs`uV?%KXd8(Zt^cC z%)LE`v%N>2W*W^7m^gZGZQL1~;s1Sd1pPUVK1RIVzxd+Oowd>Qj2VI(adv+=c5QJ0 zosk$7rdtJCMr4-EZGc|Ou{_OPt>alpk&G3#-09h{Fb8q(SnD*M%HIKa<+#S|Rq~NZ z14*f=IM#c~N3o4TS33d5GgU0Lx2KNw+b!+U88H#HgAodp8R3l9>BDWQB30WvcPWF%i4CUIrIB=XQk z{9eS&@2#IxjMJ)yZ6J(U`$)x7-UHlun>g$|V6LoR6$Z}NakUoB1g%V!~bIB#tD4r}v{GEn-8k-eS^tj2m zyS2tT!1NDV@)WVACfpt&h%ukRo3frZ?8!*gYli1iC5}4nJ#HbUwp_^C#~ml|gx)o_ z6^h%YXN4FDl8}-6I{WvV`mw$}em8&Z&L`xOP~lan1&p}NE^NKHF`#J3BU|?c1Bv-y z!-ZM>iml}0VK`s05GNcXz7$BT>#~`m!d7t*{jpn7D`8yL6e-D!mat^tolHNe<$_gm zX^^3A>rTCkV@b0Dd6u*^0&OV>>3Vhln(0LUueAK1zx(*EtMxQ8_O6@HLMGQ_QCbd@ zB+;5^$$2yt>u?lT@^OHrQQC0HVrXu|gG+s8EZ5Z$W86nwEU&Sy(Xmr+HsuilM(yW` z+F9DG;%Qi`cY=k>g8M?hkiGV+ZlQ}>4kZ1QOVmT%>x$w7E# z&Uix`&K#R%nofq40DUj3@|ut32(7 zu6}P42R)8R-WX`A0%#~F;C?J=n-y@6o$(XWlK6A-A`6_H+?9LiSl+&(_l>U|jm}U` z?z2|V)774a@ed5^Hek=MJu0=G0-nhO;2y+v2R2;Lts&sC(?wb5XYQVMZ+oPb^sgAF zWPk}j=8XTn&cZ1sb@b7-&)+%S@vIU&hO0@5{!#K4u0eWt|I@hw^u0L{C(1j&4gd~!T zU=houIwjFxeSI;!mSN<w+#zx6lhX2y*V5R zji#X3Gc+v)7_vIl4*x!Y{G1xsPjoL%!+8gH_$18C$ed-<)=Y~Mx)KTw%O#Q;V2IF$ zvIbFj;Hl18yogo{HMxwo`Ndp?zgVSwx=NgruLeVoMq9ii_FqZr`E;wJkuV> zyk(>azN-tD3gz^P$Ds4BQncyg$xQJbLhjqpTR`YxOI&_>YtBH|bmR>D35@!^cRMbA zzMqDS>?yz!3=lQIB$;`a6BuvA1V_kZqUFz)L^xz{-Sbx_x-Ub2_*%xLYwDk@PEWr=~X7zRIobJZDF-r#>V14y2lG z+sM6t;u_53lN)L$zGCUHhWoWMCT_eB#S%J_XmBS9WrGc9nPQibgb57S4JX@ikfw;! z1_hT}FXy;@B*$LeV(G+F<+YvkD^^bS_iZ2=-J4eZ30Er`ZI8CTY`GfUzauf@GW-Z2 ztH)VC8YbC$Q=UCU)0eJXC5db3l@&}y^r0EHz?}JP+5Qo>UTnYsJovh!ut*jPRJ#&W z0iuY`5a5FnNn^{`kr=?m0hM9t3@=~=z?^SNUR#%-p@Q=F6rr}{NG+)o4NE3HId9!l zLsfD%!BE|#fflvYNkaAzVdpm;+SqvTd5*T_Lo8TxSvzrZ9gTL~>3n<|C<2v{Yj>SX zLwC{ioDb2RFc0U)L|;b@U7_5U;Dn=WhlK8E;|$>;U0WlrYV)ZkNM|Fmqq54^!>G#o zs;_?&!ykd=cD|^|NdXw{rd=y`8M^dI*{NxVG}a}|#oWA$&2pt`j!@SY%22PGrfX<7 zePuEn^>i9K*5N)NNBBB~eeCtrNU%d0a}6*g*$I5e5Y~rXkX8_|KF}8WUBL__B=hW6 zyKG0zt#dIC6<#D#zAJTIdu@7U<3j%EjU6p%$(cA&JV~f4PX_y$Hx+>$QAp*ynD4MS zyKVw9A+8?=Gd0j3lPT)WU|NwNP<4!kd{nb(*l-N%j`?Hk>xhS zDF&WqWH{%ItL)c*Y5H#1V*=X+K*|9n4-hDSyD#wEk>0_Wl`WHXYqhbPuC98vi_OFq zcCccsk_8n;ox*n^{Z=EK>n;l?(K?SM>b>ln)8~8L^4OgD+o5yydM^(-=Og+VJLZqq zwEOOVI3DVH>wPgb^IQzidIvn`wdsfNc@Xucc|W|zGY)Iyo^qP}Wq;@5Nc?p~`g$Gw z8uK{s!xD(TnkKSXMQO$wamk>ZXjFJhgnn^_1=PU2WqAzp z^~7!`t+9V9*sZ29XSlGd4owV)v>)P)qa zx?+`dtT*yd1=%^qaYLQkZ#k>J7C9eONAtUA^y8yD8=j1$hl_SGJ><|?QOS-iXqLqS zb(!+A0Wtr|SWQXuhPd1&u+}$h8+LWJv0rMVW5HzvkKA!t=w&(N_oVEaWFvDl@(Z@b z_rYU~5(tYIXlUW4V?O;_yV^dkQLx?os$R2nreX7hWGt=*#!BnmBQ8Juem5UeLU1$F zm+_cMCJ=aRhKFcLe>A@k*e|?*2>iY0&MjAy|kk9uNna%W) zlVagoA1X}v%S>l`pvjm355*b(bDZ;{gtDNRc|?K-1W@>J)nF?5CosB0+Zw8IW zZA7E6pB2K1#lFFjE>%Nv?afJT_ngL_mS|IsB*jTs%yH{<^LF$^_P|Ka`0KGK>z^0x z_Uc@3*tkv-uwAHqLn0vk%n+ZnPsm@-1WOF^urE>c{oX$4}x1^YlUV zXTmen_;7(@?&V$fo#)m=`uZW?ti1Y+Z|Ph)?uk%)u6>8~ zQB$ii=*H^0sh!aZ^yz?9L_dz@OwJVpp34Opzd|km=pT#y3;OYG*l5l! zOvUy0{LYT_6MP=N<9AQoUyMb*mVljY3RHcZ)MsXMfNLO4Ta#<%IK(yJ0sQlLP%X09 zAFfzHBsCEbUdlXF)Hjaxi(^Row!g0Ao8hOvhC$uOxn(h|#rs1cd{gd;fhKA&ym+s* zi)t=9niP$;sF_65iPP#+J#6@wHT-+isisZcy#szss(pN+eOI*k``^;XJNNXl&u|Ou z;uj+t?i1ouFrDvuGiL4IpB)iB3Tg;n8ffJZF@Q?J42nx7w!>zYS*w^pU0)6P#qfI? z<1rP)L~~6&mn&UZ`$t`DthE9`jfh0WST0#$jA|TGo0Gp;NXE%&nCn1ne4k<6>F?m; zcbmB5Y>Qz``Y9=}q}JoEFF4~*qqlVWI{YjM2JdQiOx=Gs=8XTn&XVSVSazB;PYAGD z+}8pbgz{`x0$u5M9dSehAH0LH9F6tHdfp_(Gg=jGMALW3M($OSO4)Z9-f?hmV)3a` z!%s`a=+%)qBgpiQryd&HvDbS=_%UdGb6Ois{5}e;Vp&sL&Sk!xchzGB%}gB}b@R~|&d;zW%or1#3d{>|cGoGB3>-#C@&;IF3yNT`BVfMIlLB0?DY~(Gu$#FO zUP?XMGQ{%GZls!56lT^+n)hIZJ(B8nv4_E1NlELt>V?&(cCM53>!AhvLRBn+GhWGX z!Jn?1h>drla6ZZcd4hxgueZY#Z;Anfce(6o09EYgqdPnJO^#t8RCxfdFvYdYLqUC| z*kN{pfZ#Tf!2^@X8tj=_7A&yWtY!N2*4kVUyO4@|<;Te?L2)9ZTn&9qN z)SN!8h!(57YW6H3C1$Esy;QnTTZ=CEp2PPA>0X`A-kzV>v+d#qTyDtRj7ftw|WP|WS=c5Wex>8lBo4qGCdM zJ6)`r@_%hEe?gvDdru}m_63e7dWkzA>a3UzJ!z*K3WQrL@|r0Cw8H)fQZf;9C=8$GZ1R7mG0UjBiXN5y=!)ZHE(>Al8}sT z@Qc|-8^=T-dbJLaW9rT)FerZixe5`e(w_`jSElq)C2RHX7$QZ=er(AFeS&6gH^gz31e2xK6wdmVZE zs=IlNk5e+uq_x;BCb`Q?_xorkt zFc3H>jp>w;1n&#DXsk9`^87htHen62Nwe{iGdx;g&I1$Yv9l8`d&b>8U9%KjO{{fw zD6Sj}l-8`J;A*gpq>-{vK1-%+M0f0vWj0;bxwW3LmiTw(MQ|xtoJH=b8Pvl#`7YyD%C6v)9h*{{;{K=JUC_EG$?Znz*v4Q(mFbh}NgIT({Z(a6(TYrIh319g*< zq=Sz_rU?nbu-p((TJ_DAv0eM@_}59v9Ic1)9Vh=I`}GjPm_93JXERMy->UMSm(d;5 z-$VO*CF^}R|C6$Qtq;NVmUpZToRdFD?==C!k>?y z%ktVfcwfeIJ3$1^3tmGX9TM@o9pPJ;aJR|(R|gh2-7fpGL59&5^Bc+Cw`J{1cpq$4 znYkWQ?2B4EDRJe5H8rO>l9Stu)Ya+h^siI@pZE3)C2_vr|9yw%AN1_}@193}A51&w z%$Pap#p|%x2;$>1P%n@;#)=Y75D8ic6w4A8mW!^~<&Xuam)MfWMJ=eWgo;?5Tznhk zO#Q1{wTBaFR@bXHPp@Cjo1>Z+In!<+_?>K zwluBkZa$C`&8A{bKV0yE2S)eMZ+o7M*?@08Iy14k?F~)@=rZ~SrGlGe7%?Ii66OMU zE120qLwN-j1|oKK46v0VxI=UsuB`=P(axZ?T)M@WF9|`7i)LqycJAP|?pjj+CWQ>K zrR3Z$EK#d~dz2T^jH{HR6wGenyIP(sIk8?=(ESZad&`^Wqz^h7{z6ecjp28zJOHm= zN;9%KvD{pQEUW>GR_EPZM5w|3a>EHU@e zem;O)uI65IGj+|n8+-_n`iQgjGv)(5d1#5~i&=$=BU0KFpn>cKIAfjwROHx#3pC8c z`4Hh^BiQmSTGc~TzgsnZ6|}Qy+F37Ol`YbvYeCh;mC@~;wSq1~e?8M6zXe?N5m}Op zHahs8y!MChRVK7)f>lftYJ%g~+~x)O?9dYdzT-GMzrmF2;MJTN_hI!)jM0J)EU%PH zgR{$l$?!!5cpM5q3=I`UFc$V{fYC#+uR`i=1QFK8VWsju`uN0sJ%>rTNi$N@!ui-b zJKAd7(xGA_sr&9)&4){OuP0*VH@D$l?XxO0uxSD#(3Cc?(QhgRJ?Ib4Zx46x{s|U+ z8IysN@bwW+7NUWs0YFX30*(uEGRQc;fJs13BLX;Nw65bV{Pyp8nRM#Ssi{Y}JAGY` z;}N<7*&0j9HMe?@FBOZ#V5V^Q_SU7fTDhC5UZ*ZQ9qf0gR5;a5VO%L)G)SG@1?Uf~ zF!0|S&n5xpq%^=d!9N>fVn+IzF6Pac1Lwo{B>9(m1U4|tyofZmn&AeRSmFxL+!Wa3 z__=%}5rrLx3lp)Ss|%ks#VM5fdq(9T+@!zeg}>6vA`W@(t8`s_BxoTFssDxS!%Q~ zX+K%ljefwFvLt>bRubODg;O31yGVwG1(eXvOY8YALZ}gNXp$j3_Ve$O8q~$#x-1rW z_m_Vju;%`MJ`JWioS&GI4whHN(u(@-lj*dZmC?|Ek(qxD4+LpRk;kUN5if8x)=C#ExkL9_0WVmdQwBsTP$8wn% z(FO5@xh&-h1sSviYLaMG6Z7?w+H~;$E)u<7qS0E_NStOe)H*lUi#w6(a?;v0#*}%> zO5#^^zoNVA6?RJGDtfP?m_fAjT5E|elVbWY-Cboln!&?8=f}yCFYWd3 zPdsQMZ!1EN%SOU__5hoKK>kq3!F-nkE}E6LO7bFD>`2m8S9iq1)^VaeahIf}^T3*P zGUwl@m^Wmt$D{8XCM-KyvkurVuUfvUP?Ng~MN-3sQnqg{;2-5{WoPc%rLzvoqu{u+ zy*l^PVrTA~VrKWq&{xyzuU2pXUc8iNWOD+HY;ZrEv787W2`@q5o{-Su_~H$6TS8Zm zxr*{XoC=_Y=yf8jv?oJ7E$ttd9(Y516tM_jYzM$~ndR!sL zl_*=pW&AV|m+{pqsdZwZT}qH)b3>>)#hUkDWO}!)*1p*c-X|`46#qB05Ccv0hvs?Z zenmFJ3~%fL{TjZY$4m-5+C1fQY&H^;0*NOW0`c1d9~>Y;Oa~=gV501W#}I+s`RxCa zxsL3*Z?Bq1+j#6M;@GQX(}5~i5W1!-g{_I=L`?Ei)Wbv9dNO1z(IG=#D9654-dfeK zP@)(tjaKc#Y;W+^N?Hf=2E9~??i=Blvj8QEPja?gT60*X*<0fYj* zM3&&B0%w9SAWa?;bS}cYhlPK|`{ipl$7KEh_Qs1lb+so1y6`CTXwD3jTW0v986-4lmbL;& zamFY@hzYM+Y=Zv*k{Tt>$w&pd;d+_3nWeNuA~6q&qO6%xxVnqAY9?G>l{>J6Vq(fk zSML|2khONinVD}{b3}BLw4{KP}p0@V1b(~M$BYkKQo4~3rLOFr%l&w!kwG9s$NxM2+zfv z)U6I)r(XjKHdI!IIQ6{tK1AKIC7T;|W8J1p;yyJdDpF95l+HUHES1n}9pdaKt#F@0 zh8#zB@}=ismDOP+AIo`@%j!{YgQ_0s?A`sM7d$_rA^L7IBKeR|Q!CFkp#XuQZHz%B z0RrZjX{DA3EeO$opfIM1^X!$B2QyMe-LTE zlXbFb-)fR8I!gI1M|Y$&`fQ?o!+b1%#_xO0nK%*8iiqBJK(h4XY&2l(8XzE)X=MIM zytQWyASnqHgGVT)0+9cl1T%U%q|)LFXFV-Q<;jI;58%3EYcCeMcxWAL=Mq*LNxPzj zJ&LWrWv#1S5LGTt2!Wz#(=x zG3Tr>j?gPlb-T6om*Vf;zo46@p{QE4H0fgG1&Ko!8!B$m88sR)MO2`TPA}(w6T@GL zSdYT?n6Yhp^Yq;d`p_!w_8?R7rZjJ=3+wiS9(>eB^ebqB0M62dU_nDnGf5ySFffKZ zPmU004Vmi94W?VL@;I@;J%a|jP`jC=%pwAzZCEqe-d>F@>3;3BjY>sWty>_tK^ASS z64i8z<(!HPbxp{#Z_1G`YcgD|phj4XBEQAU+d5`iZPf;QkKcrZru{v0J-ey#zJ+MA zO5yd5W(A|zfOtVgfe;{OYW_8_osq#jVSSZ|8o)rY6Mf4#VlwS~r1Jjb(qg>9&|RiG zCdF?lR!qxE#>i^iL0lSG!YjJn&t3scD!U{;^EtU9jqGNwCxcvV`5e?XUfDI@-rAG; zt{djDXa3FIm(aVI0)2YQGwJ6_i~Uy`AIWx4@KTCrBlX>fr@IdLQ%qNTpU=Au^zlEK zDRA2^ngt(RC=`(xqQ?kjumxn67P2C?5X=ZqeC~IDR-EV7;pAQ|l-4N-vmWai?%-5x8q$Go+nxPu zryj-9$FlNDZoqr?n11iuu_C9`>^H%&KVyCvv}bKk*)`W>v4<2QlpYalK^5Rj7%YIt zV5ST(K%@jW#$LwkbCTmEWv)jV6wiSBw@o?c?vN(#98o%pXnwX!B;H**YbPal?;0W* zFl83z`U#$Ebz&l%N>aTZJoYWcijccOE%NIo=WbdLlh5wwVeUu&Pir*x`RkKmb}eK& zdtto$$?ITo{tula?P+uF&sGPoojy@angn_Q>H!=UMlp~z6s80TQW_t@@R?n~LW{n| zS_l(nrV{XL(qT3;I!hUG?I5h?XSCZ8Skz5)-o%*sFQU>ljNMmCxG>&M6*aqRq5AYe zxilM7H7q#Njw_pS5rs(jI=-Hi+jY*xGx~qcwDk3~W(4}Vy>^}z*k~+4OAYVkiH|y! z5{M9>Bskfm$sATq53&~Q8mQ$=6p+SMvuY*>s4fr%Nh2Q8ivfH z995@yCAE4A?in-%EPf}YV%V8oS+>S^%l9lq)#KwWL zn{24BSwkt9Deqe>2^Q@QSB*MRO>+1wyQx)8j}}kqkxFkVqs(LXc}YIKS?5ua9}CY? zJKp!TeS)t%Dl@e?ij!+}8Uwf+_c1~W1lEz{4FYP+jv#qUVHi+BpRjRFBv?wr&>6*+ zXegEhvd6;=;u9luHD9N7HnMI;PZ_o5t7i5R>-~Mbc|UFeGvT~m8TB=E`FGcu*xz&- zrie=Ih-hefyFs>MaBy{^zXmKy%(~Xu@yFg?Alz@6nX4&1>3N0q&2Ek)^{E4h&MvI zCBjZDsBZ+a)pY9D4(JF&Mt`Sz1E)>*!keBS(gV4(rUH5J(dNUP1p{-$7$g;JQwd-c zVrFnGV!S~Btk@>)!G2m_V{E|Ty0vtr_!Y7~X7*LOA5pt;y|L^Ng7GH$`KzWpLq<1| z$F7|RAYzvG)yB@dQd@$`Y1%D%d^**ZZKQ>QTE(A5m(kb!pH{{EpL=sY!*pk+W_|x} zQ~GITte zKfm>!%hKOVr@Qm?Hkn3fIA(MvG~@nX%I;=4{n6*2vXh?kRn853{Gbl*eoz0o;Qc(I zKfimMJMZ(K4IXSi;Sd{A%OM5!fR#W~VWwD`3nh+gO_*zgOmOQW_D%jVE^Z@8j)^Nn0)p!}N0u_MHqWqa)*q8PWUZ1>%&t^zbjZMqqbpz`L^ zMd1p=Zk&d8l8HZzoE$32ZfW}( zG=Mo(fk7-`0PhhD6{d+Pp!_gTW9mS2vvgOoxfGd*!GOfDY|g1{YpJafnTn=3v`McP zyQ{?p6jaH$OQr8+wL~p;v1qR&C~M;NJ6D!bUF;*k})o6lb9TNYqIQU~Q*1`fDVM#!EdHm#7;xWhQnF>RfR-+2r*g-UXj zci2{)Ss-B=!LMQFusp4hyxX_gED&H( z1Tn1)FP1m{%``wfE3im*c{qO-Td>6Bcpb4Ctk86MZ7eNcd~s246BAX?wC%c#I#zfo zVs%`^Ji&|Py`uT%Q>tC_6yR3mRZUkkLU8$a?CH7L`uWUX;Yb0Du<&5BIZ5c-GpMg@tN@)lu70)~Fh^%e#cPgGV7V z6thq+W=VEX_^K|c3Y#UXsE_CrlsM%!8=V=Y1j*n_At5oRfLW7Oo#M*{&&DW*I}#U1 zz!rl0bhb8^T!HfoT?$t#!jiIix@1p(2d?zb~5P0di%m>GAOp(LPfHZEf*K0)R0F? zo}-w@UPI^-r5z>yCJTN3M91 z9dG$4^ZlNABbQ)1M4546f=HGo*ks=rSgjf$5vE`*${&98DZPj)1XXJ73V9fmyIAd5 zu$7vqimginDN@`dFTTaMMk!%2T_pY5uvy84eC#WZhEg(PY#^<3Ra?es+WQ9vO(_nx zONz-ur~eUpNBf8Pcq3!|OKH9%2U-3~Gyca#24z%%1rNU`ETEDFqFY^#Q!Z0vc)--? zKE>g-3Hk3eZ*C$?h~S1HnJ01yBG0CRF<0I=XmQ^Y-c06+%-#(FqP literal 0 HcmV?d00001 diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..ad0edfc --- /dev/null +++ b/src/index.ts @@ -0,0 +1,98 @@ +import express, { Request, Response } from "express"; +import { createServer, Server as HTTPServer } from "http"; +import { Server as SocketIOServer, Socket } from "socket.io"; +import cors from "cors"; + +// Initialize Express +const app = express(); + +// Set up CORS middleware for Express +app.use( + cors({ + origin: "https://realtime-voicecall.vercel.app", // Update this to the origin of your client + methods: ["GET", "POST"], + credentials: true, // Allow credentials (e.g., cookies) if needed + }) +); + +// Create an HTTP server +const httpServer: HTTPServer = createServer(app); + +// Initialize Socket.io on the server +const io = new SocketIOServer(httpServer, { + path: "/socket", // Define the WebSocket path + cors: { + origin: "https://realtime-voicecall.vercel.app", // Update this to the origin of your client + methods: ["GET", "POST"], + credentials: true, // Allow credentials (e.g., cookies) if needed + }, +}); + +// Store online users +const onlineUsers: Map = new Map(); + +// Handle WebSocket connections +io.on("connection", (socket: Socket) => { + console.log("User connected", socket.id); + + // Handle user-online event + socket.on("user-online", (user: any) => { + // Now we store the socket ID along with the user details + onlineUsers.set(socket.id, { ...user, socketId: socket.id }); + io.emit("online-users", Array.from(onlineUsers.values())); + }); + + // Handle user disconnect event + socket.on("disconnect", () => { + onlineUsers.delete(socket.id); + io.emit("online-users", Array.from(onlineUsers.values())); + }); + + // Handle call-related events + + socket.on("call-request", (data) => { + console.log("Call request received on server:", data); + const { to } = data; + const caller = onlineUsers.get(socket.id); + console.log("Caller:", caller); + + if (caller) { + // Emit to the recipient's socket ID + io.to(to).emit("call-request", { caller }); + } + }); + + socket.on("call-accepted", (data: { to: string }) => { + const caller = onlineUsers.get(socket.id); + socket.to(data.to).emit("call-accepted", { caller }); + }); + + socket.on("call-rejected", (data: { to: string }) => { + socket.to(data.to).emit("call-rejected"); + }); + + socket.on("webrtc-offer", (data: { to: string; offer: any }) => { + const caller = onlineUsers.get(socket.id); + socket.to(data.to).emit("webrtc-offer", { data, caller }); + }); + + socket.on("webrtc-answer", (data: { to: string; answer: any }) => { + console.log("webrtc-answer", data); + socket.to(data.to).emit("webrtc-answer", data); + }); + + socket.on("webrtc-ice-candidate", (data: { to: string; candidate: any }) => { + socket.to(data.to).emit("webrtc-ice-candidate", data); + }); +}); + +// Define a basic route +app.get("/", (req: Request, res: Response) => { + res.send("WebSocket server is running"); +}); + +// Start the server on port 3000 +const PORT = process.env.PORT || 5000; +httpServer.listen(PORT, () => { + console.log(`Server is running on port ${PORT}`); +}); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..f3dc2bd --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "target": "ES2020", + "module": "commonjs", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "outDir": "./dist" + }, + "include": ["src/**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/vercel.json b/vercel.json new file mode 100644 index 0000000..ef70fb7 --- /dev/null +++ b/vercel.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "builds": [ + { + "src": "src/index.ts", + "use": "@vercel/node" + } + ], + "routes": [ + { + "src": "/(.*)", + "dest": "src/index.ts" + } + ] +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..2e67c09 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,772 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@socket.io/component-emitter@~3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz#821f8442f4175d8f0467b9daf26e3a18e2d02af2" + integrity sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA== + +"@tsconfig/node10@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" + integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + +"@types/body-parser@*": + version "1.19.5" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" + integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.38" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + +"@types/cookie@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d" + integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== + +"@types/cors@^2.8.12": + version "2.8.17" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.17.tgz#5d718a5e494a8166f569d986794e49c48b216b2b" + integrity sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA== + dependencies: + "@types/node" "*" + +"@types/express-serve-static-core@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.0.0.tgz#91f06cda1049e8f17eeab364798ed79c97488a1c" + integrity sha512-AbXMTZGt40T+KON9/Fdxx0B2WK5hsgxcfXJLr5bFpZ7b4JCex2WyQPTEKdXqfHiY5nKKBScZ7yCoO6Pvgxfvnw== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@types/express/-/express-5.0.0.tgz#13a7d1f75295e90d19ed6e74cab3678488eaa96c" + integrity sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^5.0.0" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/http-errors@*": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" + integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== + +"@types/mime@^1": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" + integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== + +"@types/node@*", "@types/node@>=10.0.0", "@types/node@^22.7.5": + version "22.7.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.5.tgz#cfde981727a7ab3611a481510b473ae54442b92b" + integrity sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ== + dependencies: + undici-types "~6.19.2" + +"@types/qs@*": + version "6.9.16" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.16.tgz#52bba125a07c0482d26747d5d4947a64daf8f794" + integrity sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A== + +"@types/range-parser@*": + version "1.2.7" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" + integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== + +"@types/send@*": + version "0.17.4" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" + integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/serve-static@*": + version "1.15.7" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714" + integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw== + dependencies: + "@types/http-errors" "*" + "@types/node" "*" + "@types/send" "*" + +"@types/socket.io@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/socket.io/-/socket.io-3.0.2.tgz#606c9639e3f93bb8454cba8f5f0a283d47917759" + integrity sha512-pu0sN9m5VjCxBZVK8hW37ZcMe8rjn4HHggBN5CbaRTvFwv5jOmuIRZEuddsBPa9Th0ts0SIo3Niukq+95cMBbQ== + dependencies: + socket.io "*" + +accepts@~1.3.4, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-walk@^8.1.1: + version "8.3.4" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" + integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== + dependencies: + acorn "^8.11.0" + +acorn@^8.11.0, acorn@^8.4.1: + version "8.12.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" + integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +base64id@2.0.0, base64id@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" + integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== + +body-parser@1.20.3: + version "1.20.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" + integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== + dependencies: + bytes "3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.13.0" + raw-body "2.5.2" + type-is "~1.6.18" + unpipe "1.0.0" + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4, content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.1.tgz#2f73c42142d5d5cf71310a74fc4ae61670e5dbc9" + integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== + +cookie@~0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7" + integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== + +cors@^2.8.5, cors@~2.8.5: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@~4.3.1, debug@~4.3.2, debug@~4.3.4: + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== + dependencies: + ms "^2.1.3" + +define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +encodeurl@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== + +engine.io-parser@~5.2.1: + version "5.2.3" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.3.tgz#00dc5b97b1f233a23c9398d0209504cf5f94d92f" + integrity sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q== + +engine.io@~6.6.0: + version "6.6.2" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.6.2.tgz#32bd845b4db708f8c774a4edef4e5c8a98b3da72" + integrity sha512-gmNvsYi9C8iErnZdVcJnvCpSKbWTt1E8+JZo8b+daLninywUWi5NQ5STSHZ9rFjFO7imNcvb8Pc5pe/wMR5xEw== + dependencies: + "@types/cookie" "^0.4.1" + "@types/cors" "^2.8.12" + "@types/node" ">=10.0.0" + accepts "~1.3.4" + base64id "2.0.0" + cookie "~0.7.2" + cors "~2.8.5" + debug "~4.3.1" + engine.io-parser "~5.2.1" + ws "~8.17.1" + +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +express@^4.21.1: + version "4.21.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.21.1.tgz#9dae5dda832f16b4eec941a4e44aa89ec481b281" + integrity sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.3" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.7.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~2.0.0" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.3.1" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.3" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.10" + proxy-addr "~2.0.7" + qs "6.13.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.19.0" + serve-static "1.16.2" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +finalhandler@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019" + integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ== + dependencies: + debug "2.6.9" + encodeurl "~2.0.0" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-proto@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== + +has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +hasown@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +inherits@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +merge-descriptors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" + integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.3, ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +object-assign@^4: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.13.1: + version "1.13.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" + integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +path-to-regexp@0.1.10: + version "0.1.10" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz#67e9108c5c0551b9e5326064387de4763c4d5f8b" + integrity sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w== + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +qs@6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" + integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== + dependencies: + side-channel "^1.0.6" + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +safe-buffer@5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +send@0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8" + integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serve-static@1.16.2: + version "1.16.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296" + integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw== + dependencies: + encodeurl "~2.0.0" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.19.0" + +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +side-channel@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + +socket.io-adapter@~2.5.2: + version "2.5.5" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz#c7a1f9c703d7756844751b6ff9abfc1780664082" + integrity sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg== + dependencies: + debug "~4.3.4" + ws "~8.17.1" + +socket.io-parser@~4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.4.tgz#c806966cf7270601e47469ddeec30fbdfda44c83" + integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew== + dependencies: + "@socket.io/component-emitter" "~3.1.0" + debug "~4.3.1" + +socket.io@*, socket.io@^4.8.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.8.0.tgz#33d05ae0915fad1670bd0c4efcc07ccfabebe3b1" + integrity sha512-8U6BEgGjQOfGz3HHTYaC/L1GaxDCJ/KM0XTkJly0EhZ5U/du9uNEZy4ZgYzEzIqlx2CMm25CrCqr1ck899eLNA== + dependencies: + accepts "~1.3.4" + base64id "~2.0.0" + cors "~2.8.5" + debug "~4.3.2" + engine.io "~6.6.0" + socket.io-adapter "~2.5.2" + socket.io-parser "~4.2.4" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +ts-node@^10.9.2: + version "10.9.2" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" + integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typescript@^5.6.3: + version "5.6.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b" + integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== + +undici-types@~6.19.2: + version "6.19.8" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" + integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +ws@~8.17.1: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==