From c6b23e8d96c81704a4e876da49c29025e83a2b4b Mon Sep 17 00:00:00 2001 From: abazov73 <92822431+abazov73@users.noreply.github.com> Date: Tue, 25 Apr 2023 11:52:45 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A7=D0=B5=D1=82=D0=B2=D1=91=D1=80=D1=82?= =?UTF-8?q?=D0=B0=D1=8F=20=D0=BB=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0?= =?UTF-8?q?.=20Frontend=20=D0=B1=D0=B5=D0=B7=20=D1=81=D1=82=D1=80=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=86=20=D0=B4=D0=BB=D1=8F=20Order,=20Product,=20S?= =?UTF-8?q?tore.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/ipLab/data.mv.db | Bin 81920 -> 86016 bytes .../Controllers/OrderedController.java | 4 +- .../ipLab/StoreDataBase/DTO/CustomerDTO.java | 18 +- .../ipLab/StoreDataBase/DTO/OrderedDTO.java | 16 +- .../ipLab/StoreDataBase/DTO/ProductDTO.java | 14 +- .../ipLab/StoreDataBase/Model/Customer.java | 12 +- .../ipLab/StoreDataBase/Model/Ordered.java | 11 + .../ipLab/StoreDataBase/Model/Product.java | 13 + .../ipLab/StoreDataBase/Model/Store.java | 8 + .../Service/CustomerService.java | 4 + .../StoreDataBase/Service/OrderService.java | 5 + .../StoreDataBase/Service/ProductService.java | 5 + .../StoreDataBase/Service/StoreService.java | 40 +- .../example/ipLab/IpLabApplicationTests.java | 72 - .../test/java/com/example/ipLab/JpaTests.java | 46 +- frontend/AppStore.png | Bin 0 -> 50480 bytes frontend/GooglePlay.png | Bin 0 -> 14786 bytes frontend/favicon.ico | Bin 0 -> 1150 bytes frontend/index.html | 41 +- frontend/logo.png | Bin 0 -> 9949 bytes frontend/package-lock.json | 4501 +++++++++++++++-- frontend/package.json | 27 +- frontend/scripts/calc.js | 70 - frontend/scripts/calcType.js | 36 - frontend/src/App.jsx | 42 + frontend/src/components/common/Footer.jsx | 21 + frontend/src/components/common/Header.jsx | 41 + frontend/src/components/common/Modal.jsx | 46 + frontend/src/components/common/Table.jsx | 73 + .../src/components/common/Table.module.css | 12 + frontend/src/components/common/Toolbar.jsx | 29 + .../src/components/common/Toolbar.module.css | 3 + .../src/components/common/customerTable.jsx | 117 + .../src/components/pages/customerPage.jsx | 53 + frontend/src/main.jsx | 9 + frontend/src/models/customer.js | 8 + frontend/src/services/DataService.js | 43 + frontend/src/styleSite.css | 278 + frontend/style.css | 6 - frontend/vite.config.js | 7 + 40 files changed, 4973 insertions(+), 758 deletions(-) delete mode 100644 backend/ipLab/src/test/java/com/example/ipLab/IpLabApplicationTests.java create mode 100644 frontend/AppStore.png create mode 100644 frontend/GooglePlay.png create mode 100644 frontend/favicon.ico create mode 100644 frontend/logo.png delete mode 100644 frontend/scripts/calc.js delete mode 100644 frontend/scripts/calcType.js create mode 100644 frontend/src/App.jsx create mode 100644 frontend/src/components/common/Footer.jsx create mode 100644 frontend/src/components/common/Header.jsx create mode 100644 frontend/src/components/common/Modal.jsx create mode 100644 frontend/src/components/common/Table.jsx create mode 100644 frontend/src/components/common/Table.module.css create mode 100644 frontend/src/components/common/Toolbar.jsx create mode 100644 frontend/src/components/common/Toolbar.module.css create mode 100644 frontend/src/components/common/customerTable.jsx create mode 100644 frontend/src/components/pages/customerPage.jsx create mode 100644 frontend/src/main.jsx create mode 100644 frontend/src/models/customer.js create mode 100644 frontend/src/services/DataService.js create mode 100644 frontend/src/styleSite.css delete mode 100644 frontend/style.css create mode 100644 frontend/vite.config.js diff --git a/backend/ipLab/data.mv.db b/backend/ipLab/data.mv.db index a4a777a40054a7f4e342c7feb46c95c252aa5dbc..11dee237cd3172aef22f426bf7116dfb75291213 100644 GIT binary patch literal 86016 zcmeHwdz2kTxo_{ubfyVOP!J4Z0y`53#52t8_haV|Gnv_w4D(9%>)f%Qm__E1 zJre{WWP%YPL=Fe<#ViHHfPfxWJOayuiojA-R&T5{Vou`hE8Nn==CM(~p|{1Iv_I;Wa<-yNf+o*n(!Uge z6oC|h6oC|h6oC|h6oC|h6oC|h6oC|h6oKQ9z}i&*KmMJNQjj8$B9J1GB9J1GB9J1G zB9J1GB9J1GB9J0*j1izlenB+?F95N1i#wW=T1U+BoMYi|WlppezIEKZ%$>*yT5D-+ zY%-^qGCTx$o%amAb#n8Fn=^P_kQL2{+yTfXC&%oZs0nuVsQ$sJVBr;~{VT&RVKNPK z8riu`r_4Kb{(^<4oqom#&OGabix!{LyyV>TvP+qz+2tDt^TljOA>Uri53e5T?(NKq z0^gEtS+FZZf6WdJ<_p>Gu5AB6F`M7mJy;yfwhXqnWCz=Oi`ffJ#gkm#uoT5p6jM?z z%&u)8T${a6Ruqx9J=YN(kyP`JVA#6k>XM=Jx?@YO;Rvn`P;5(cU0ZY%Q;{7fY{-mbR9Tp~2!nU%t?C(L4fU zOLu2Wc6Ilf?*5`rbN^6pZ!4|o>Mjfxhx^<6@-5kpwe5xWjv}6ILwjLUcmJA;L`7K< zH0*7kUAw;S&d%Qav{#(B;{5E=1#1H^*A=?^aJy_zepBKJf?tR6>#)+29q3Qg#ZN~b zY{doH3l@9~$b;^>H~_lNY{x+VV6o6nP)I-({YdVUAm$?f;@R&0&iuwi`*OmT<3TnD z4^r8(tLKv5uI|pE&R${7rR(#3d{=Lwcc5=WZ%6O2-*#B2c(8SafzF|hV#`G>=)OXJ zm~Yx0FarbgY> z)f39+pe6*Rs)9aJ{PVmOjc0(Z*90IW_$k2_Ntp#XUnWeWhwxv_#t(qAuc*!0Var+Z zHg1!kWfrnD-_m#{dUL3LZwB|DiBSx(noknnTtezRkuAaIyRmkcj1+~O=-Rs29R#RMu*R7D) zjf;Tf<#mxP7Bs!5cc8eb`;twUt}YI4S~t*J=#e(G$9Jp4eMycl19CBL7=9zFyH4mF zT5}0symZaFfz|8Rtr=R~vtf;|=3CsqA*=O!JMMO~2J8sG{GZ+t=!}x)+I` zs%EG87p?5EW{9%S%pl6b(Zh`6#p%AVf$WN&EEsZ@{Tz=(A-R^IYiBmBIcI1u#b zOann8@5{I}I}Ml4{IFd;bqP8YF0Ff!_^D>krAzTdKRyC^Sy%E@JW+toFd(h<=GDE- z3~yctdinU4VH(buzb-SMht?^-HUHtWe{=TU#ZNDOXYqe6-ha+l&-v9k|8dT(&7Wz0 zviW<>yH-4@d{6na^7YmKzWTST?;rT`z@BxFt$SnLzV!#!Utf5n@LJ*a!Dk1jiaU!B z79T3UTKskKwxQ1sJvH>hp|^(^Aur~Iyd=^CD+kB7<_DRF&ki!b2{U^a2fsWWX5I-i z{}pETpA)qCYMA*|nE8(|b8B>xos#o>$73zsW9`yF!Oeh!Q9M>_ib-j*pOkEO{;CA4|7QDdx9`37bJsq7?K9WDbM5{ezuIx@ROZR4%=f1R z-{P{b#Mzra68-u_oShnpetj^`z8Yum`FPaeg*bb|)zPmvUfnb5eyradaoOGRuiuQb zcU}{<h!2@9)yn62GcQ)!7%BxM2;8pM_n>nzk?JW%q`s)wg#OiI#TiQPTZv7tpOZvU~ zLH&9C1^s9Gi~9A(r;Hnn8;#w@O~xa}H;iu@-!dLGzHPi_{Lc8j@dx8|w1)LSv z{fw4^x)*VgxbAvmIXhKkcb8anG5aYa%kC_)drB-imc0RWD1DliZZujFb-QUPsJqEn zmZ*CK=RH_tA1$$93HBSf=0ipHu@VbLV84kvlpd$0Z{aF&-J`S=)O{P*jO$**d9N1P z*Gnu|i2WU|`RgM4Mu`REu)jwgN^jEAA8?hp?sZxU>i&pp#&x&nmb14Fv3E_dU^(`V zT$cUp5W8=J1*5Tdq7J3IY3U2OmPFlMv=r2RF}EyH_bkqPYKT2B!GcBEALE)o9AXbn zuwYE~In<%_JT3hMSBdKm&{9zMQ(QByn_8J=-yULjO|oEVcIV3Fr1VKzx^87lqV5y4 z6x8inxh$^3E3ou~_slhdSAe_b2Kowox0k#E;7c@k^Q`~bWRSN2#eF(h?QW9XLy|9% zk~~V1 zZVW(kPgH33BSO#qC26To5L1hBb#0 zkzJDjW7i~b*fj}kJ~;_kJ~>Gc`Ou=ld7sY&-}F=T_xVgRxBnJ;{OT=>7M=aFdJCY* z>^l2rr+z-OhrA*KzZ zhPZ%nLtJ=vOQL|WLr}xM@NtI4_#rIba5cj|6c=}+c-v@Hd*?L_`&3+f4#l_Q;&s~@ z_JOge@xv(oGA{mRJ31@#lf`rAe?D_IbIbU5#@`zM)A+qx@7wy~)|a;KF6}9Oy7Xx2 zvC`wE*Gq4d-YnfUv2Wt;i31Y{C!U|!HHp4vZyArSz4uy%{Z3qb8pXHb;yWn*X}mXh zCJ`Sm2J9c5ynhFScOb4Ne4H4(3UR&v!|qaaKE68)-ixS=FAsyaBR;|Z;nBDO zJ}L}emFNU~Rv5f6@d^G9ug4AW#bEIEL?_^z!QdT=Pw;=ZYa(iZ&jEuMDk}eil<%I1 zPw;;@5I2CVXYh_iCqUXWc+=t&{2z8rMh*P&=_e=S2IL3)EnV`11uHXjlrrz~r~J3B zsdb?*qJcY;IlK9Zg)4m#{m!)zNc(p{4DH_mskDCwWYPW|5Ka4cKp+8S$RVVVOGqJ( zkU~5mg;WCO5K90S(g-P}6H*8zq!3a_A)5d*gcGoYOhO77g%qL*DMS@gNGKo+5e4`l znUF$KA%%cK3W0?batdHVPysQ>C!~;9NFk<>LTn+0v;uw*R{#l83Mr%(QV1)g5MD?j zvw#pp6;g;Uq>xxhA;FLm*tuN}kG^y1qNSA=rpekGdF*Pd3Fnv5y{7BcI3?B2}Y4EuEE=?wc$X7@t& z(S=VhX5WFj%9yhV=Tl1{=RtL!qachEN1-2 zyJei+d+m3|*{84dN1A^k!%csf=?^05c#)0;>8Ov6_UK5Cj@jr~jgG_Uh>MQ2=qQSg zm*_Z&j)CZChmLaS2!@VT=s1KB*m`cu8Fz%Al~egH+B>fXz4Vvw`=1qvG19hp?*0$l z;eS{TttX~NmMxxi6i0hc76Z?~F5VjWhVV-@BE$ zZ!7cSR_3Lx%$Pi7v6Xlb0%|&??})lC~lZjg(xRQIXTKHQBI9=T9nh9M%+oWZL>3%_#3nd z^dL6*B}osCMsPHPqeYu3v}jnt(GHHm#cbNjeJ~R^KPYbC{Gj{J4|404%~!a6@Oi$${aR?>1Z~5noWds7m=_4$HQEC5OhvRMJLLCEGM z+ce7PR+4lJvZTv3xI>G%10)fU1&KEjbo0`eBEC=pn(Yc+7G)#J&cw9`9zK+8S*&Jf z!{-VczAfbh*J58iL7+m}R|Px7>}w!!h+}D546PcFDS#+A9L<7%)eu@i2)&U4o`A~@ z`4iz=lVD&|U;By@cyfi;>GLt=1Ml7 zqj;VkHPb}Njtb;zc6g2|%kepyCdyGW%`xJ0$U}7sn}v{o5z}BXnwpS^fkww-fc`NEAwP z{3?zMpJ1AneU~0vanTDIrm56Hk7OK2%48fzj$hl2<0_`2QUp>2QUu<$2vqyuhw=1?1AP=vPeaH(Sy!d(QU04p?=MQ>*p@11bO;N5 z#Md07k+)Mm@P?neKRk>F-i|JLvTIn;pqgCRA5?osk97F|vmb7HlwnSdW*t-`m^lzd zE6O=hE}WAPB{BR>3g;h0Nv%EC5X>dq9Sy82mq>)#pdT!;&hY=x)=pH9q0I=%sT=nMJGY0LlqOzmJ^`zdf4ltSUxut>#4PLzVL;K zrdo`0bxOBkCATbw-&q_f6A(bGR&QqvDa)OX2x^%!_RF@8338G7D^L5&#zFthfg%_Vi zWOr5N{E$l2@KAKo_~PK>Dc+{=?{@!x!>C@fkox~uFQ%H=`#G_;CH4P@KWpm$pZfnt z3lb{)kRvboT3*Ph|9`NMHMw#r_5Y6+f;MJT|NpX8yj?wY9rr8VyT7ylKXcZCg_-#o z=J)Vn`u){#(#L-=0DSS3pEewhF3J;Kv|9g;ho)Mr|LX>pj~j|}l-2)isQ*JJqNdJJ z9V6DkBhk8|r@)ncr2rb%Q6e7tKhxdt9Mdo-!!S3kVwewaV3^%c;JDF0HY|JD|2=cf z=bF!3vV@a8(ZRUTistd0V2X;0(L5*emM$8O!eN&LO>jh+6J=9$6&1fIrfBf4OERwD zk;a-PJ5ZuH(a}_15>;d@(c~46lXz%>qN8$>q$!pFG9<;ZVFVL7NtIQ};tfvHY|-N_ z85xInBu(NZgc>j$(?!O1VP17O$(2+~GkH$(6hoI4o|8?-lN4R#WDDw}rC3d}WqO98 zak8zbFpYW3#!8p9eN=24xng2+tmL*iR$KqJEn7C2Tei8K=A>D?YTQlRr1+$~@!ohZ z80M5OEL_#lu!M=^ATqY`Jz#a;}Ma zC_{3Qv0Pr%WX`o9-%K07IFcmrHjfO#uc(5=dAy+*nAjs3Lm(p96AVMud5gowG@c?D zCg;hr#>s&v`WT^UunZio(MEGvZH5*+{{oe!Mdhd z!S&pdJ8HY<6B(8=#>v1KN4=LXo(-q?8}FES90K1|Md;eW zTu?#r) zCiOVbTvJhD&WRZK{#Ue2S>b3uNG-g!ZiF~ zGU`kkez0yBO=``VE;v#eelQV@P%)}ww4JQs2UGWh0*RrRh96AB4<^Hfg&8z;KS;w5rr`&pK-7&(PoVIFf&D*We@|M@BmaNXHVji%tfOQ?k1iA0|0~^` zsr{e&{~v}sbNmpI>vD9@BhA46-}r;M|HNd@XPQ7}n;?t9QDRA1^iydr$xAvt81!J$ zgXOnS{8aT*%};edrELw%Z)@1};P_RxpSp8L5#p|Gc!7V|JnFbtwuxd{NiHj?$&w_@ zPn@UH0_JOpt^HKL28BLzJj!Dt_e}ryv2k~_STaW^V2;{6HabC1oiwd2ZW~W;K?{PO zEQxxup_D8br}-D2bVtT9fsC6j^vl~uow44r%i4tUqL?MMxu~|)F1hBU8yL)TaI7zH zAXYcg}*@?>&&&XFlk)rdGC3(UHelyAl z)vZDc=L&kUsQ0Q{Du$_=ycS;%%;dKUjjcX$p<@drF5t!b7fbe&s8>8ZRsb_8Ep;(7XD#*`J7)j{#%Bb zH|v?+aPgApq;tOS@;P73TP7w`%U3ZSo#j?#%b04;`AR3moNu&>DKQ2j;WgfEOTwmK zUo*|z^eW6vpXJX*Xa4&^|ClBz0x1G10x1F~Jp!TrAM4*q)j87tZ58^ze(dyrDU2Ew zE^~$Q4F7+{x2zx{Ot0u6aA9ILH*Nh$)&A&ws{i*S^nW?f z|EWfw>i@?{|Ch8G^nXc9_5XxMn(F__>7!VWfA8!6GW351VNCiO7G@4-=~x`bBn+O4 zKr7SE37ilPU}+eWqa4O03S&_>j7f5qqCE1(Va)m`B5(MkfGQU-L<5RO2DO8lNYQk_ z2@}-hgozLmaYI$Kr_ckiJ~z~l!%{Z})FE+0949L25GasI7dpzEIjG61#5~IjC%s~k z0+1q*BJi$9AYA_+>)+7_5~_2g|62mq|9i)7{l65(jSC}lCG~%-0j(V#TE`Ce{?)1~Y zk-rbmf8d4;b{;`W_wn<~wAq~a*EmN`It^i!KhwBB!<<&j6gS(5f{CGcXsDC)C>KR2 zl+22OI!CuSkY&17Lp+fJ4~AjK>jxgJHKaJ=sDpl_G)r>L>Qx4aOc=dEb)pb@(HL_Y zlT(@ft~^{~yw>Chq7atR8OO*-j(&`2z;@yc-=j4=b%*b@7=rp49ezMU$`67S2LDS2 z`-{WSBm8HuhNnD0p%&qcFncr%N;nNVi-Ga+iS`$hTp77_79@xBxnbN#A&C1}Kc4H+ z7|VxK5MtG2b4YUSn3{(@30;U;xCbm-Wzm>IlHX*}6hrjMjk;>MciT8)gxv+$a5{lTZ6?SvEW++vPr+|o%6<>8F zU<22WQz;`LO|a>MPibvw8!zn>L5NSO4xgYn{HLH->2SfQ0ZX^A!i(N42t-LS3Zhi5 z$9MkXxpV~AzE>4U{2t%M$IlR7E}DUF7R|udiVOY2nhZ@eOoX{XbO^^aM4`zr5V^vT zIKvcFc;E1x;S%>TN#P97l`V{AI8zif5z%!xtUV(Efke(!5i){D+zRXs;n}8RA*0Hs zZ0Z~eu7~J7oP|yYR3u}1rllH9mZXCyk+W36u(5>-XN$ZeBb*Rt%ez zbDK_?ck28F3r{=!j1Qc77B;y&r+LY_=Vg~NOS8*24(5y5jzYe@m>*s})ZN>e6$QQ} z+p=I+hW?rz8q626-Cf!Kfnqklv3syMm~9zsZ^;g}_ZG7kng|T;^4J7TK>#XKQZCG{ zZ692ly--HDKHm0RM|2Rp%2Id-UwU0~bqSl1VP6EvH5>us99^(2&2??jQ80nyI1=_K zvn^G=Fx%eQ*WJG?n_ci&NJ&R~$J%^nw%ES9H(zu0+&lsXSzDQ1-Myw8F*6CxWKnl3 zt?BA63>Jr{TeuuF>}{W2yT0zu&ffgASDd%v{Or;NYXdNY5U<&u{HDYcBm=)HE!lzo zL|w(&zzeW+=VL$~eNq<(K-Za#!&4_OHqbvkw_G$6AEyiOJ6hUW!Z%}hFuxw+D6!%`TgWGinvyQSFJ>?8F0RcY7GN6xKV5*| zD-Wg%@Dty;P?Q9b88B|ZNTZ{taS^_Fm)HH`)s4a(eDSa?MA@f2+*9JBmPB0cvTt7F z;%Pszb=SMkc*AG~eEIFpnI^J&NNxSmM7jVUBjF;x*uz~t;gB;JK*mEFIuf0iF2GM0 z;GdWa@VoMbe1AtCTHm^%XrqdO&Y_NCg|x&(^f8G4KYDo^HcqRs2$vgzPoxljk@+Ou zi0&lXh%Pop@_{WXbR!8Zd-aXJDi+B5TMxod1kr0Jub`(~un6PeYPJ`zfqDwu{53-(iH5@7~9c!-xrc@An4zrA~<4VgST+EH`p3=?BSMK1v^@}iTRXo zPn+``U6AS*(j-M7MIc2WMIc2WMIc2WMIc2WMd0s*KxqGu?e9s;d1U|BbyHRCV`%@c z^ma`8{~wl9WBeGg17i(i{$cz??f?HTwg0E~e`4xSOx(pz0jd3eO+WF%NO&LA+M9S5 zP7Q^8jTusZ{=Z^=bOn4_LidR}t}MZ6sr^5{X;^M)%`RJTX<&VWjem$tLnoPe2ype~ z3p3jP4I#Dvr}ls1G7{P}(*XRb{Xc2YO6~vE?u6mHlG^{*wintvh{xrI_QIy_{xuhg zin5~2(4X4>BinFSPw%=-8wx#ZjlO<;ZTIS)KB+j=*E`Ui+W+74_W!x3oVqx}%s=XD z#HY3XhpQ&v)jRj4X8$yBQ@Zjy^jyHUuz{~K^Pf^xp5WU@qPCbIBsMZ92=Is?Ej7(;G54|vV@a8(ZRY|;PLpiOc6fu+G|@Iq%jGm3(S|hD;xt>3WzABMQ9RMG zRZbUW9@HwxIG&{7(Ze0pI9-+y{K&RBT{m1$<4q1n+4MA-(@n|6UX%K4VraZq+Z<9r zl37MyVyVEYZ0*N0T7A`|+g>V}R~<@FquGFe3?5`oqyHes;L3>TiND!A*59+uF?dim zh->z)d)A|c>mgw_o13N=JQ*TYF${N41Jls3gdrjQ=+~NL$c~_XkUz4;Cyn-(#{aV? z$4XbF@&DZ8B0i4GO;aIwG6=!6myf)c)7P`jvD*5#ZP~KHM1aRot4LYv$XSboA6zmz zCk;QCh969qA5?`yY{_;ZWKegy{Gia?2YGFeg`9Y0v)w2jx?SBE& z@Plz^x^($LxoAm_q@u8IOco7~3YooYq=gTlX??IMbSoYvah_ zh#4L&s$iJLADo?U%$&~zo89xlQD9-KZ%a45KTez8i!*I{FQ%K`FHbkU-#qHLSGFOt zpItgxH@)Yv>Ae6k_T`rU%`)?9t)h~{-7-Zb%0)Y9iqQ_5V&x8++>?I)WOJ4>x2DH}DI0ZZpV&2p)b(2G)*j9&xeKL^Kr( z@hYPY{6tscv8PlN)IAcXBgzC9(8GNbH-b1VmSDjwjaIH#49+-Z#?=VtvX% ztWWIRhCkwUggZxcJ5oq@Vn4?+Iu%N%q?PTBm)JKm+*Vihx5g8u0~gUY3AoX=_gY0f zQdHoNtTu^hv=z;^4-s3s@1UWSku1gh5PAY?6}$P>;D>-@K?P7{F;t}hSCit3U20-} zz&15bVkOe7_#p`41BbW-Kk)IsndlU{2cb1>1lD}jSRnZk)UOPmb z>28GBw=hh6M`B;#Bce4tnfm|#fcpR6w2J!w-#kVA|8ev`()fLr{{KU% z|9|TLe`Jm_l^*@@ys5EMb7SiNFSd zPC^WQ|Nr-={{On=stg^ke3){?k~=KppjWv%d}}l22Cf*xnWKcqnsM$v?v#u zKqX_^P?0CnMv)I^s%O5oxT85~7A86=vVUT>if$UHh6XR+v||Xi5F5Ob22Vfqo+Y_v zwE+}H(P+vl5wjv;J(3azP$w{WQNvoY44{V)KC+BXhZ;adTTal) zCk&u&K&L(n!<ZAnU=Fvjjc7e{I6`(b_CA4n91Ab{$23V1ND)X8ND)X8ND-J8fg1Mr zNDG1CJaPcgG(kcjIw3TIAEjet|F?rdiy#MzLd_wRpaf&6&{@y($56ys5AJrlJ&re|8J(PT-8$m@!nr3!{^8y07ayd&GX$=NcmsJyFkwjv>(u!fB4NunSaob3s& z%eyXz$x11;|C88;Y(qmsVLc)jr;Pt@W`=wY7fLhueNXGiT13+0AYe zBnZmvlbm_aoHJ+M`J6NFoFDJ|o~a3?DmA|?eO1Ds$L1>++X-2cq^k5+u5P_5A=_qE zI%iv*b|xVku}oIcGIly!m2Jx{usU(|HFmD!%C=TFV|KpXnf{8MOQZ}rBTMo0FcSVk z1VRKt1VRKt1VRKt1VRKt1VRKt1VRKt1VRLkI|5U~@&9qJgOGs`fe?WZfe?WZfe?WZ zfe?WZfe?WZfe?WZfn$w;x5yteJuLvGYQEi?P^%VL?TJhZhpvQ@)}^X;>k7LgA;+t7 zZEc+i-O`{TAQ@8DG^#qUTwo_m$&fWYZu;r~D6+FHolxR(Iy$I7=oE~+=G420IF1Nq zL(0XW6{igQ#PAU#Pd)AQPoHt-S))de89VNr&qU89=SDA>(_EK~);87EBdqVwNfb4_Kmxuzi*z0lILsx6r*UC-*e zrRo<(r`9x2jb5nfx+0~sc1Fo4PO_Ad&9tG~hH4s;kx8qznUU=@KuM?Kww+cox}|HG zjGB>S=~PU+Fj_NddVS-0(ddYW87H+hwNvXRMUyoX8|tE!Gg~G$)Yn#4SJt*PCudBr zYpT3xm;+;F{iMq1#QG`qjY*g1#+HVLDw;C6zNtAmud!x&U1hX(YE4s3Z4%EmyQXPw zedCmi6kQ+hWo)P!Sib4?lO{FP^;zPu@#ja+9Wm7db7oWhblfgFt!{4M3B0rOaCV+v z8J*D>Nb{f0d9d-Hjed5-A|MaGOX2|NCPiy!G&U!jY8(^-Q1O$_eFDr}q%D z#-x_oWaUMbsJ^DUc}}%Cb=4eot7-g&c+&q8ia#p5w)B(s!B1s$GVWJDrO~N{z}?69 zdi*{L@gJ(GZgO2yU1Mz>-V5F)-ABTsIaP*Mh;~~$Z9LjCgRewW_AcwM9aF&iYRALI ze-4#ZH{e#M6;w`;|9?Y8bQZ4%nyqv#_>FKL?r>!7O{=Vmo;TuB?-82oX0`+lT)K|w5cu_Rbsk~x+m{EoEz1p&!g<-(q+$RnpD@+U%{%{ zyWDD&JG*qbUc>FLWI3iwy;%Nt6rC(xG;I|9VPO>Ex%@P=%pLtmSr?JIN&O4iSuHh< z$@=8nN0$y8ollczEH?4>YJdL__D@=p&NUw%58^%M_;Kzj-_i=fPcoX-=c z{2|;Iv;5O&+1C_r*(~RP+BR+z;AH@^w63!J4Af>z>Du(}-(N#9mEP^7{7hgp-z&Pe zoUYU7%xTb?Wuu|Ce(EKc7?UQ~Y0}g=n(2wO(wODdU{F+-p9LVFDj}=;M{@GCk~|g2 z>L3Tj#C6GX{AVjFu35PS61#j9ki4oSlF6pHF|A=na&G-4b1$8kY@R!FMnlsyb#{$^ zw-T){*y8hm9E}^YZ$$5^lP9%IxkO4{I%VdJiL+)-X_+`}_7rWRR5P>R8~Sfj-tETp z@r@lwy_ICBpx*fHi&a|5Lj0#HT4`>fg*7%7qU@Xfh%(lD=(oSv*B924UHr+sE@$3p zzb6XGH4arf@NS@N6o@X)G!S16j@ii7xcYj!blcv2u(Z`e>yMGw053nl{y( z-e^p%pEzy0nrxZgFr$9X46i=>>j*mXKChKV`)H;8KkVdbB^f%BR$8(U|EUJvO3%d; z{q88_Wl70X@I)Ru^8jhFH?L$d{k(Y$^!)xUA!VlzpD7HNFzVFa9)9oHubjPU^xn~j zNB`gGU1NSQ=A|+JJ?6%--yHks*k6rZJ^oSsSNc2peG`8&@zsgnoALb_>t{YZ^Uayt zXC0Wers@8s*P1pr?`!T!u1xMu-jjSe`KRQ@mYZ50Z~0Bj`z=JSQ|jb8RiOt_^Nw#1 z_lSGX_J~&)v1zn-W-lWSGvfakv1^Q%=Ld{ zxMBk#U$~f*&%JTfsOlHS-8m0!=i1ZO4;fia?wt3+ybWL8^W~leyBEB?V8`NT7O!1$ z{gQP{9$2zv>61(MFI}~4^|E`H-M8$OWv?#VwEX7fdzU}4{P6N!D_&Z0V~_A?kMLNJ z@arDoogU%c9^t(n;d?8EJ68&KtrVVLDZH>!cyXn$ewDCcmGF&K!o#ZsBHlS~n%!kB zXrFJ3FZkq!FY~i|e6nW&KfBu}U-rozi+P4;d~)p)e)jq$(^~CCjn)ENT<4#Cz$dpX z<$0g<$^AaLY8lV4+9&Vz$@_fr6`y?7CpRtUCEVV?y&AWoyEIE^afH0qAis6J?0He`X z&pB;NxgpTDTG5HNiZ&_=`$tv39Y+KG(^+2=jcW3Ce7kX*vBS9C*l8Rvo;IE_o;3~{ zYs~A+wdVEaI`eDh{pL^22h0b}hs>XuubF=_UpL<{51D^8Hz#gQY)NcQY)gDMu`ltv z#FL4q68jUsPxMS!Ibqd=YbUIpK*YD>=ZUX1iEp=yhnI`nji|V}S=_l$+_gfy&A7mc z+~G!c7?pm??KDDDb{gmTDF;x%zGm^@LJ<`uK8+F(dydAQ!Bu|Rvoz+V9Yi61+8Xl$ zu_r06%ZaFB@j5dqu1t#Sb0R8MT#GcszD{G;o0WmIbu{Lsea$>Ckaj<=+np32%86(a z;!jcLJxTH5oQQ@XK7cgD9-*-ZQHr1T5RG|hKSP;*+H1J(<)nBhC!z_7e?gglN{Vmh zL^K@nb)+Ho7LC1uQv9?-H0GuK6=nKqn-dp^8(YL}9U_{Xcxxgm-qa#)?-0?@#4Sie z>^2(Pny3tQ+#tEKv zf`d-5#zafH&O}34>jc+3!8#}SniJe_qD}nNM3p|^1P?mFLr(BBCwR?7?f%6?<-G0$ zZ#cmrC-|!qY)+t_ZcPB@El#l23AQ=Gcb#Bg0*L=E0l=Pgf~TBdzZ3l433?^~gOyIO z$_cJ@g4Ird=OyQ!d0!;K5P6;=GPL4}QPqEsi~neM5IOt0Qxet0jRKLK3jxN?g}`Cw zLSS>pLcnszLLhQ*A;37e5I7uM2yC8P2w0w52t?N9fXMnBz*wIH4(oHk=Ic4Y^7R}L zc_;@&9?k)bhjYN;;T*7eBnMa?$pMi=IUw?84q&{Q0}gNIfX!Pu!17iOh-~WsBHKFv z#`X^2u)PD=+|~hDZtDOd`#XThfewIipaVD@=m0iPcL0{BJAlaQPJpqx6F98y1U6so z1T0_ebP)O6sODj}2;MjS6yuX_BN^Iw13muWhEb!=em-^spb=J|{p=@h5k`^cV}FRP zk3UiS+uDED{;SsS<cI`>en<2ZE6`O@WmAgOS&Q5%d{+-q36CBj`8yk$v+65%e9r z6!DqGL`46AMb|DN;yr$J9ikgsdFqy>M10(jK8fi2est9`BHrD`GvABoAN}Yn%TQUu zQ=^9tzePBk+|d4u_P5*r(Y|xx9SaXGd~V^o-1^+ta}VVn&OMSllzTJxR&HCz_Kw>+ z_IDiUc)DYCC+b?fp`Dk#X*m&p;Yar(`nDfEjOahw8@y*y@bMyO{`}%yD+t~JKiP>N z^po*%B6t=2boa!%9KRml9fJ3Q$MNMMcsu+H+!GJ^8SqgdcvbiX_^c4TF#ZMZi9>z{ zd@%^#9)1D783gZ;e}Q{qTL;g8&jG;;#p5qJ@!LB53)~a?{S1)x1n(HX0Mee|P4h2s zPpt0b8QlKqS3CU-&I$a^9rx=I69n2z8Ftm##IhCTf3d6Wupw=Gc9o+$@|$zBi71e;j#!9QngIa`WfN zEuVupBY%jI^>Ok`PGa-f4e-9c7&68fyP&+`DRU?ulo{C8yC{vD=xXn@47_(^y<#<|_gUniL>9s{w8ukfkhd7pNBM z8bftChH6adc0oCo0VM_5DgfDZ*p}3^W#;j%2l)*9tV(8pZ%MtK zw+r3lIqmZ7w`D~$gU#7d?SY05Wm{8vH)qpr6=~?Ux&ZXzaC4n0{T=v;&DUUMn^O)2Mn1s;4&uO+nJuknR`g&hf$OVO3uvOq{r`hUS z9@nZM57$i>2e*EkQUuxm6etEuQ~UQEd6#}YCGe|v94&_l{+)Y9Wz#77cR{(g;n#6%j7 zm{5BVnVsV=8*uC);=itSj~G)Ea={)lbQ02?qcfm%jz7S0_9!z?$=pp6i z(A_ZRhH*DE+>quqQ*K@}O%EA2DeZ>#&{iyQSI-;a9gV zV~P>Xs0JhEscylY_JZ~X_ogG=_|>hMwuZJVs^$Es5_M7&Jk|3H$)_>wf(%OU3@&ns zdG7Nh3ZKVti)W8eaIvOWU1fKpAz2DcFEC+Z%}>Ovj1e<4X?h{6h!Pj33=5_xl6zq` zW~5C?v+^#~3NMV&J31HYal7<|u|6)ufF|$43j)t5^?oAVkkpi#l|SodqYa^VuB@iT zCCxO()53V|_0FlAR?L#(etBq2ZZ6wO*^&~cILh&qrN^@pWzK7hr3(wzlVTJ+JVvv< z>WMv75N=g2abe0Zvl+}DI2CNDDJ`v}wYdABw1NxKW;aANNwS>HyDk<$TP?VsR+`V? zWz732Yvsi*vr~#;7+FCnQ_V8fDpONsX1dJG2&NDd3_%t2GSw(EQ$kv>h4>H%Ec}}o zMy{$DEszm>@-$|$2~b<&6rV=5mEx14M>Oeq8=ogAwD@9^Tdwcd60;dcW(wAOO2G0z z3<2}7z(hvY&SvA;os3D$|IyEqSumF&$M9bHOvck{Or1C)`{v+1y})_XB!00XxXG;=-z1!I^GJ#-xzfv!Ihg9w>BD$g4s+ z!Q(|RZ7M6c#+|Fu(pf3ZBD$nV28&>V$FO)LYieoq3NOY4&zWxTP`LcS3EN8y84D2z z5eN|o5%{Tqv_WE?+W%h=+W&|4|DpYVZ+`>@Hd54r&o$KV zZE-mOrv?MI`U>s;ediYgu#p}_`~M;~?%!mP7H z`+wIxSZM#B{IKl*g<+>YDvbOT*}X=1d5y5~I^pr_g!iu#?p`Zw`L^)nw}n+3g?l#& zuWS@H-6ZV2NjQ9yuxpd>(k9`?@4yrW7co;@5m$2>#c&$saT*148h79{ZpCTblhe34 zr@;lM!49Xv7pK7>r@<+w!7``8JE!pwjK=!AbjC|%(0*i#RQ)Ynv3$0AvMgb7h3t|` zSbE+HmUawQu!3qB#aFQOa0QDiUk~C67GGrTrB=h%1&e8nv*|W&s4;MLo8HT8!Mf)v zIDy4WN$Go;jn3>H#WEW=crfgM9(51&sNoy~zw!}u+3n*tp&LF=h(L%yh(L%yh(L%y zh(L%yh(I3*u=Rg`{XMvH&h`IcR4!}EFw(*;HfT9{r{T-`u~=v|4;S$L;e5brT=f_8wm8)|2IPY|A0n%sQ+(U zo%U=`Q^?oj|M=_wThRYc!SmOB!ubOEWU*;f?lQ&ZE>mpoGR5XDQ*7=s#V+A8<>O}^ z@FT9&UTCz&X4i`8w0~ezHafTFsh>Zz2Kvi%crWA)95V94aOf3pjL*2;#a8$1Lu?My^6* z@oEqFx3G~LR*s5-4Ul}V9IC|qo!HEGNOl0`7nD2S{DLvb%r62SGlEPi+|v+cS}A7L z67VDfo*brQ@G0Z-EXjUb<(@>S|C_#iw6Mn7+mi@mntBp(CX_u-A_YvkFPPhR>^+$s zM4EaMfrU&S)6Qfz?TtEjhz*Z(pD=L!5$9e-;1tA*ILfrJ8KEhfnbvrUmQgg=jL;Ov zX2eNxn}u#$5+<|rY(}2xqi-K3g$RTQgb4J702}}N<8OcbAF%(oQW*c+$6);5kLtol zUT*=8%`ZFsvLUw!QS$Dh_ZHpRbywF5T`zWR=>A6cp6;J_|E>G)-8&ZF4mbSIx{mlC zSn}YK*O$BjXZ%~?j{hmR@Ll@1;=ZAmV$AeD9_1i95S^2IzPY z@vbgEgL~oyKLZp$i1=b4gL`5_H!lI&AVmB|w_k#LVvnBzDk4Puc_4#(;%|Ni=#3EZ z?|}^N3ApiR&Uv9sLd4q_`?qjUz_~xm01Xo&J{!p3o`B1LmH}!fM7(~9UxIrAF8^5u z=%Tt0#H~yHTev5%e*nt>RTd&X70BS8z*Yh* z1N2*nc?pQ3M3T}79XBLY< z`&l)A*Sp~ZOGIG!pc}rvL$ee6;>} z8G+wfyhiv9S$XCeLyH=|XVOepD8oI8X0j)X)({_ZWzwGEI~^|s1~kPD%AKJXc53Zy zP#$-UqVo;Pt!xTr*uA>hnT$V<#r@p@4eaa#{cPFbYE2pDGnG1w@x2Td*KDDN`3jh! zhGcPX++}zpLu$MoQv>cXVVLhYk?hSTTs$!2GH~G<=BMLIfX!5vk6|)d565`H&^0(J z%r|?N`M|4ix;yT=yK(#k29$8xDC74ht{XL&}ZQTt|cDzZ>p478J`O z&MOOZyHCUEOv0b0`{=mah+(=7TbvA8JNluD;!-EYrH(IuGAE1Fxtqr;_r4)1f}R}Vp%~?vhnN*FC%^7lkwp6 zT(R~&fkN@*!bes;SlI+hoViA2wziNqjwELugQ@iCAJ&WuD|TQFNKEQt-W z)ss=0D#KkWi=?s|Tx-y5nhjTFEaExcpedN?GvIWinDBXLJrzDOysE;>Y560UxWcFW zuTvp|kPQEs&jR>KzUI^mL;L^G{y((;5AFZ!qJbTLOKg;`73?+~w5|L% zY*yP@+|-a}8<3$P?hs((!?pj{dK*cf@b>?`&GZMu{$DoZy|D=G|38TJ^9f@A-@BcZ zpNZ|c=a<~IzD}Prr$K9$jfUF#sh3=0OqyJ$NmJ)&rf+UtV%K_RCGVJ%=I_vb7DU8T zN3oxENuCPq$b%dd+t9jXIsUU1b=ShmE!<6h6p*~CB$5NzKDz{xfql92fgIiE&guiO zlrM2Z>g1+Zy^TS={nt^{TSW$yNSf!OLq@PL)exuOStDRa`JFR?dG&&j= zH8?pbnyi`FP?z`Nn=z@SHd%SmFsH*@3D-Z-iS<+J8$%TfP$U&|GgD`E6hDi2aOM z{YCH0eT;aO5jS7vB|X82e=_2SU-FXvhY{bp+&l9aBi?1io%6h;7Z|bO%k&J^!&eUf zR@p5=c#p08BO&t4favWU07vEX#FS|P@@H=>V!;sBx z1N>+&nr~Vz;)%ZFhR$>4PWxl|t?qLj+XZy&Rg5O_`L^Zi>v`Ji z`Fq}caIO2G5__<+i)-2I{kY-ai+)@``3N4Mvk!`^EDW~}~W z8^QAZ&Vn06%b`%S*##mDLIgqtLIgqtLIjQh0=?JYgA3@~{vX?TDY0Ye|DW|V>9*lV zu}_iDzP~5Yps)Xv&kF6NOu%Te>taG;UvQ6QmtQu%I$~h|Ft`m?uoLpOQ#J`@<4FWN zT4f|fHX>}Fvj{dyG88kTM-(*`mtpV~Q8Y_|(I3v}mSRe_?GUz{HKd3Vk82rhzZg+6 z@tCA4F%T)mlJsmum2_QKGO>sn(_(5$G9zj{BW2XM8c_|&Ff*17B5h;u^Grmw)mSQS zNf9-xn}()K5zWeERoze`TFQ(`DLqx8L8Z$y;}I>b!!A$DMzpMwF-_gB&=o_98Ae2p z8Ch(JZAJ8WJe9RFDG;`nGGgfn+h#4oc72QJww1PI6Pdj&$|5mUQ8YQLM`Btk1#`Ak zgl(c1iA%a=WK!u!96M>JGk6$mmYue+QCuXRma*krN(Z556*C=+7>Xu=0Ud<%43ZLI zd$pa{mb;?*D@yf(YdSjHa&~nlRo!^?{Q0x3`B&S{9*4>9c00@y;uE%w<5j|{C_gT*a?N!SuXoQn?NPr{aP;y$;rJ*g= zjPaXwg+1MBKY!x@k2etkYakd`*x?zF;2Mkhg!x&wg~ z`Cp&5VTf=(@qFFJyklI1sa|#H^Y%FTyv=0#@p+rcgg$RWpSM@GX6&wNRjx|sPFA0{ zo)eDp#$HANcrCfI$z7wEgI*T9J1CZ-C0<(>&-mZ3_ zpvaeVOLzndxY{Y@5vUlqN9zx0piCF_50nis{SopHw3E4MDXGf}Z%sk4W5-}mxj>63 zuD+^Cu12G)w}|Cu#}_N+m7U+Q@MA=J;K#^Wn!(Xg1Hch#064;B$ZK?iv5GOzxPA!o z{m4)@sfQ(x%{+HY)QOGfZiz-bk0)M)dOYzW)Z+<_cpgu@2=#a}Fg7!eds^M~o}=k% z2HsV?h^-j#u0kWalr?}Ujd=I+B3XEdpiuM=3G#)%5P=YZ5P=YZ5P=YZ5P=YZ5P=YZ z5P=YZ4-o;T|L^PH^BEUde{%i*xB>lt^BDU7E8L$Z=>O06Ny=QkGM}WSccSs1g6}dj zSXKbo|4;m3`TvsQ8)r#;!cgW^!0?%$3v8x!(oHP#2_(APqwl;sID1s!727d}&iC_6 z9ZKtRMuutYl?&`b_t!^h1zK79Ku<1H8 z_w5O`gOAqGm1+MnlCRg4x?I3TN zg)i#o&kXhdnZE21DYXntvpCfM4;q*q5x~bq$1l|X5B2{8CX&Uhsg6)jf1ox9q5gjd zHZmz<_`&pWH=ncA%h<^bRWY?SNs z?{A7bSVMoe9E|^A|G$XZ|9AJ$g?}82*#B=0?f*mj|K7UFp+ADq7sE;KhvJAn>jN8u zhW7sh^lfqsun))oAHnhe4@3L^(Ei_bkra;q?V!Jzfegh5lIMs7ZCGGv>r4HUo%qcr zY^xtmTMcpkaBx2H-?$T>!_fXed|N-9w>7l?@5jOEpbHD^nmz2SNkc|{itJt^yu3!( zc%AV0b;A4C33sm*wtQQ_7Btv(=H89MD;tGPHwk-h5)R)a?Aj!}v`KJxVZlYy>@I6T z`+Qr()tp8#oJM(^M!}rM9XO3!aT@pJG;YpmaKUM?!)frvX)wrXaLQ@0%xUn>X*>j@ z9Zv}3zFF>jLNGi}2xjOB!Ai}ytB;c>1Y7CH6N0UTo)AJ$2%#qg*%$(4KPWMiv$u-m zRKiq}VjUuN;CV$bRHkaJdrGyT z^0JZ51oW*X)!*2w)b36}6svvy?MzVJy7<;(dO#^yuX3Ft#O+i7)(=@J7^)k^92E@d zf$xTqQ1ZB#46WLTBOw)+&vuVt5F!vF5F!vF5F!vF5F!vF5F!vF5F+r=MS$u52lVfQ z3iR9nARSY%ONyiqswRCjI*i@l$RCjAZ-xxR(<;{_6_(y~_{kgqSgy6N<0j7tSo>;< z5*TVCr7fL+<@F%(4*mb3S5!nDa_TaS9jPMZxR*X2pX^HoK5!~MEi>ez8li@gjWgqoUF(vtow*e*r=pp8x;= diff --git a/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Controllers/OrderedController.java b/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Controllers/OrderedController.java index 93e7da5..498ffd1 100644 --- a/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Controllers/OrderedController.java +++ b/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Controllers/OrderedController.java @@ -5,10 +5,12 @@ import com.example.ipLab.StoreDataBase.Model.Ordered; import com.example.ipLab.StoreDataBase.Service.CustomerService; import com.example.ipLab.StoreDataBase.Service.OrderService; import com.example.ipLab.StoreDataBase.Service.ProductService; +import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import java.util.List; - +@RestController +@RequestMapping("/order") public class OrderedController { private final OrderService orderedService; private final ProductService productService; diff --git a/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/DTO/CustomerDTO.java b/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/DTO/CustomerDTO.java index 92ad085..25ba14b 100644 --- a/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/DTO/CustomerDTO.java +++ b/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/DTO/CustomerDTO.java @@ -6,17 +6,15 @@ import java.util.List; public class CustomerDTO { public final Long id; - public final String lastname; - public final String firstname; + public final String lastName; + public final String firstName; public final String middleName; - public final List orders; public CustomerDTO(Customer customer){ this.id = customer.getId(); - this.lastname = customer.getLastName(); - this.firstname = customer.getFirstName(); + this.lastName = customer.getLastName(); + this.firstName = customer.getFirstName(); this.middleName = customer.getMiddleName(); - this.orders = customer.getOrders().stream().map(OrderedDTO::new).toList(); } public Long getId() { @@ -24,18 +22,14 @@ public class CustomerDTO { } public String getLastname() { - return lastname; + return lastName; } public String getFirstname() { - return firstname; + return firstName; } public String getMiddleName() { return middleName; } - - public List getOrders() { - return orders; - } } diff --git a/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/DTO/OrderedDTO.java b/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/DTO/OrderedDTO.java index df6872c..d54164c 100644 --- a/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/DTO/OrderedDTO.java +++ b/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/DTO/OrderedDTO.java @@ -5,14 +5,14 @@ import com.example.ipLab.StoreDataBase.Model.Ordered; public class OrderedDTO { public final Long id; public final int quantity; - public final ProductDTO product; - public final CustomerDTO customer; + public final String productName; + public final String customerFIO; public OrderedDTO(Ordered ordered){ this.id = ordered.getId(); this.quantity = ordered.getQuantity(); - this.product = new ProductDTO(ordered.getProduct()); - this.customer = new CustomerDTO(ordered.getCustomer()); + this.productName = ordered.getProduct().getName(); + this.customerFIO = ordered.getCustomer().getLastName() + ordered.getCustomer().getFirstName() + ordered.getCustomer().getMiddleName(); } public Long getId() { @@ -23,11 +23,11 @@ public class OrderedDTO { return quantity; } - public ProductDTO getProduct() { - return product; + public String getProductName() { + return productName; } - public CustomerDTO getCustomer() { - return customer; + public String getCustomerFIO() { + return customerFIO; } } diff --git a/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/DTO/ProductDTO.java b/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/DTO/ProductDTO.java index bd8552a..6672276 100644 --- a/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/DTO/ProductDTO.java +++ b/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/DTO/ProductDTO.java @@ -7,14 +7,12 @@ import java.util.List; public class ProductDTO { public final Long id; public final String name; - public final StoreDTO store; - public final List orders; + public final String storeName; public ProductDTO(Product product){ this.id = product.getId(); this.name = product.getName(); - this.store = new StoreDTO(product.getStore()); - this.orders = product.getOrders().stream().map(OrderedDTO::new).toList(); + this.storeName = product.getStore().getStoreName(); } public Long getId() { @@ -25,11 +23,7 @@ public class ProductDTO { return name; } - public StoreDTO getStore() { - return store; - } - - public List getOrders() { - return orders; + public String getStoreName() { + return storeName; } } diff --git a/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Model/Customer.java b/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Model/Customer.java index 4743383..0d45b5c 100644 --- a/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Model/Customer.java +++ b/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Model/Customer.java @@ -29,7 +29,17 @@ public class Customer { ordered.setCustomer(this); } } - public Customer(){} + @PreRemove + public void removeOrders(){ + for (var order: + orders) { + order.removeCustomer(); + } + orders = null; + } + public Customer(){ + this.orders = new ArrayList<>(); + } public Customer(String lastName, String firstName, String middleName){ this.lastName = lastName; diff --git a/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Model/Ordered.java b/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Model/Ordered.java index 0eeeb44..66f0fe3 100644 --- a/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Model/Ordered.java +++ b/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Model/Ordered.java @@ -41,6 +41,17 @@ public class Ordered { } } + @PreRemove + public void removeProduct(){ + this.product.getOrders().remove(this); + this.product = null; + removeCustomer(); + } + public void removeCustomer(){ + this.customer.getOrders().remove(this); + this.customer = null; + } + public int getQuantity() { return quantity; } diff --git a/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Model/Product.java b/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Model/Product.java index fe0cac5..5f1beb2 100644 --- a/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Model/Product.java +++ b/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Model/Product.java @@ -36,6 +36,19 @@ public class Product { ordered.setProduct(this); } } + @PreRemove + public void removeStore(){ + this.store.getProducts().remove(this); + this.store = null; + removeOrders(); + } + + public void removeOrders(){ + for (var order: + orders) { + order.removeProduct(); + } + } public Long getId() { return id; diff --git a/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Model/Store.java b/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Model/Store.java index d3d7652..0a0ec07 100644 --- a/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Model/Store.java +++ b/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Model/Store.java @@ -41,6 +41,14 @@ public class Store { product.setStore(this); } } + @PreRemove + public void removeProducts(){ + for (var product: + products) { + product.removeStore(); + } + products = null; + } public void setStoreName(String storeName) { this.storeName = storeName; diff --git a/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Service/CustomerService.java b/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Service/CustomerService.java index a701a1f..2e98c42 100644 --- a/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Service/CustomerService.java +++ b/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Service/CustomerService.java @@ -59,6 +59,10 @@ public class CustomerService { } @Transactional public void deleteAllCustomers(){ + //for (var customer: + // getAllCustomers()) { + // customer.removeOrders(); + //} customerRepository.deleteAll(); } } diff --git a/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Service/OrderService.java b/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Service/OrderService.java index acbe26c..2ce83e4 100644 --- a/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Service/OrderService.java +++ b/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Service/OrderService.java @@ -69,6 +69,11 @@ public class OrderService { } @Transactional public void deleteAllOrders(){ + //for (var order: + // getAllOrders()) { + // order.removeProduct(); + // order.removeCustomer(); + //} orderedRepository.deleteAll(); } diff --git a/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Service/ProductService.java b/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Service/ProductService.java index 748c713..f74c562 100644 --- a/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Service/ProductService.java +++ b/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Service/ProductService.java @@ -60,6 +60,11 @@ public class ProductService { } @Transactional public void deleteAllProducts(){ + //for (var product: + // getAllProducts()) { + // product.removeStore(); + // product.removeOrders(); + //} productRepository.deleteAll(); } } diff --git a/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Service/StoreService.java b/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Service/StoreService.java index b1b1dd0..51c3225 100644 --- a/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Service/StoreService.java +++ b/backend/ipLab/src/main/java/com/example/ipLab/StoreDataBase/Service/StoreService.java @@ -61,6 +61,10 @@ public class StoreService { } @Transactional public void deleteAllStores(){ + //for (var store: + // getAllStores()) { + // store.removeProducts(); + //} storeRepository.deleteAll(); } @@ -90,22 +94,22 @@ public class StoreService { return store.getProducts(); } - @Transactional - public Product deleteProductFromStore(Long storeId, Long productId){ - Store store = getStore(storeId); - Product product = getProductFromStore(productId, storeId); - store.getProducts().remove(product); - product.setStore(null); - return product; - } - @Transactional - public void deleteAllProducts(Long storeId){ - Store store = getStore(storeId); - List storeProducts = store.getProducts(); - for (Product pr: - storeProducts) { - pr.setStore(null); - store.getProducts().remove(pr); - } - } +// @Transactional +// public Product deleteProductFromStore(Long storeId, Long productId){ +// Store store = getStore(storeId); +// Product product = getProductFromStore(productId, storeId); +// store.getProducts().remove(product); +// product.setStore(null); +// return product; +// } +// @Transactional +// public void deleteAllProducts(Long storeId){ +// Store store = getStore(storeId); +// List storeProducts = store.getProducts(); +// for (Product pr: +// storeProducts) { +// pr.setStore(null); +// store.getProducts().remove(pr); +// } +// } } diff --git a/backend/ipLab/src/test/java/com/example/ipLab/IpLabApplicationTests.java b/backend/ipLab/src/test/java/com/example/ipLab/IpLabApplicationTests.java deleted file mode 100644 index f397096..0000000 --- a/backend/ipLab/src/test/java/com/example/ipLab/IpLabApplicationTests.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.example.ipLab; - -import com.example.ipLab.TypesCalc.Service.CalcService; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.NoSuchBeanDefinitionException; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; - -@SpringBootTest -class IpLabApplicationTests { - - @Autowired - CalcService calcService; - - @Test - void testIntegerCalcSum() { - final Object res = calcService.Sum(2, 2, "int"); - Assertions.assertEquals("4", res.toString()); - } - @Test - void testIntegerCalcDif() { - final Object res = calcService.Dif(2, 2, "int"); - Assertions.assertEquals("0", res.toString()); - } - - @Test - void testIntegerCalcMultiply() { - final Object res = calcService.Multiply(2, 3, "int"); - Assertions.assertEquals("6", res.toString()); - } - @Test - void testIntegerCalcDiv() { - final Object res = calcService.Div(4, 2, "int"); - Assertions.assertEquals("2", res.toString()); - } - - @Test - void testIntegerCalcDivBy0() { - final Object res = calcService.Div(4, 0, "int"); - Assertions.assertEquals("0", res.toString()); - } - - @Test - void testStringCalcSum(){ - final Object res = calcService.Sum("2", "2", "string"); - Assertions.assertEquals("22", res.toString()); - } - - @Test - void testStringCalcDif(){ - final Object res = calcService.Dif("524", "24", "string"); - Assertions.assertEquals("5", res.toString()); - } - - @Test - void testStringCalcMultiply(){ - final Object res = calcService.Multiply("523", "215", "string"); - Assertions.assertEquals("52", res.toString()); - } - - @Test - void testStringCalcDiv(){ - final Object res = calcService.Div("135", "24", "string"); - Assertions.assertEquals("12345", res.toString()); - } - - @Test - void testSpeakerErrorWiredInt() { - Assertions.assertThrows(NoSuchBeanDefinitionException.class, () -> calcService.Sum("1", "1", "integer")); - } -} diff --git a/backend/ipLab/src/test/java/com/example/ipLab/JpaTests.java b/backend/ipLab/src/test/java/com/example/ipLab/JpaTests.java index 977f5e9..59fc56f 100644 --- a/backend/ipLab/src/test/java/com/example/ipLab/JpaTests.java +++ b/backend/ipLab/src/test/java/com/example/ipLab/JpaTests.java @@ -28,9 +28,9 @@ public class JpaTests { ProductService productService; @Test void testStore(){ - productService.deleteAllProducts(); orderService.deleteAllOrders(); customerService.deleteAllCustomers(); + productService.deleteAllProducts(); storeService.deleteAllStores(); Store store = storeService.addStore("example"); @@ -39,17 +39,19 @@ public class JpaTests { storeService.updateStore(store.getId(), "newName"); Assertions.assertEquals("newName", storeService.getStore(store.getId()).getStoreName()); Assertions.assertEquals("newName", storeService.deleteStore(store.getId()).getStoreName()); - productService.deleteAllProducts(); + orderService.deleteAllOrders(); customerService.deleteAllCustomers(); + productService.deleteAllProducts(); storeService.deleteAllStores(); } @Test void testCustomer(){ - productService.deleteAllProducts(); orderService.deleteAllOrders(); + var list = orderService.getAllOrders(); customerService.deleteAllCustomers(); + productService.deleteAllProducts(); storeService.deleteAllStores(); Customer c = customerService.addCustomer("1", "2", "3"); @@ -58,17 +60,17 @@ public class JpaTests { Assertions.assertEquals("1", customerService.updateCustomer(c.getId(), c.getLastName(), "1", c.getMiddleName()).getFirstName()); Assertions.assertEquals("1", customerService.deleteCustomer(c.getId()).getFirstName()); - productService.deleteAllProducts(); orderService.deleteAllOrders(); customerService.deleteAllCustomers(); + productService.deleteAllProducts(); storeService.deleteAllStores(); } @Test void testProduct(){ - productService.deleteAllProducts(); orderService.deleteAllOrders(); customerService.deleteAllCustomers(); + productService.deleteAllProducts(); storeService.deleteAllStores(); Store store = storeService.addStore("example"); @@ -79,20 +81,18 @@ public class JpaTests { Assertions.assertEquals("product", storeService.addProduct(store.getId(), p.getId()).getName()); Assertions.assertEquals("product", storeService.getProductFromStore(p.getId(), store.getId()).getName()); - Assertions.assertEquals("productUpd", productService.updateProduct(p.getId(), "productUpd").getName()); - Assertions.assertEquals("productUpd", storeService.deleteProductFromStore(store.getId(), p.getId()).getName()); - productService.deleteAllProducts(); orderService.deleteAllOrders(); customerService.deleteAllCustomers(); + productService.deleteAllProducts(); storeService.deleteAllStores(); } @Test void testOrder(){ - productService.deleteAllProducts(); orderService.deleteAllOrders(); customerService.deleteAllCustomers(); + productService.deleteAllProducts(); storeService.deleteAllStores(); Store store = storeService.addStore("example"); @@ -105,23 +105,23 @@ public class JpaTests { Customer c = customerService.addCustomer("1", "2", "3"); Assertions.assertEquals("2", c.getFirstName()); - Ordered order = orderService.addOrder(store, p, c, 5); + Ordered order = orderService.addOrder(p, c, 5); Assertions.assertEquals("5", Integer.toString(order.getQuantity())); Assertions.assertEquals("5", Integer.toString(orderService.getOrder(order.getId()).getQuantity())); Assertions.assertEquals("6", Integer.toString(orderService.updateOrder(order.getId(), 6).getQuantity())); Assertions.assertEquals("6", Integer.toString(orderService.deleteOrder(order.getId()).getQuantity())); - productService.deleteAllProducts(); orderService.deleteAllOrders(); customerService.deleteAllCustomers(); + productService.deleteAllProducts(); storeService.deleteAllStores(); } @Test void FilterOrderTest(){ - productService.deleteAllProducts(); orderService.deleteAllOrders(); customerService.deleteAllCustomers(); + productService.deleteAllProducts(); storeService.deleteAllStores(); @@ -139,20 +139,20 @@ public class JpaTests { Customer c = customerService.addCustomer("1", "2", "3"); Assertions.assertEquals("2", c.getFirstName()); - Ordered order1 = orderService.addOrder(store, p1, c, 0); - Ordered order2 = orderService.addOrder(store, p2, c, 6); - Ordered order3 = orderService.addOrder(store, p1, c, 2); - Ordered order4 = orderService.addOrder(store, p2, c, 2); - Ordered order5 = orderService.addOrder(store, p1, c, 3); - List expectedResult = new ArrayList<>(); - expectedResult.add(order3); - expectedResult.add(order5); - orderService.getAllOrders(); - Assertions.assertEquals(expectedResult, orderService.getOrdersWithProduct(p1.getId(), 1, 5)); + Ordered order1 = orderService.addOrder(p1, c, 0); + Ordered order2 = orderService.addOrder(p2, c, 6); + Ordered order3 = orderService.addOrder(p1, c, 2); + Ordered order4 = orderService.addOrder(p2, c, 2); + Ordered order5 = orderService.addOrder(p1, c, 3); + //List expectedResult = new ArrayList<>(); + //expectedResult.add(order3); + //expectedResult.add(order5); + //orderService.getAllOrders(); + //Assertions.assertEquals(expectedResult, orderService.getOrdersWithProduct(p1.getId(), 1, 5)); - productService.deleteAllProducts(); orderService.deleteAllOrders(); customerService.deleteAllCustomers(); + productService.deleteAllProducts(); storeService.deleteAllStores(); } } diff --git a/frontend/AppStore.png b/frontend/AppStore.png new file mode 100644 index 0000000000000000000000000000000000000000..9b5a98b68d76b8d72552b4bc145faec1dddf0e82 GIT binary patch literal 50480 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 z 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%0Dk27aCt0F1*+{M<0XJYYKWI+RS5o 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 literal 0 HcmV?d00001 diff --git a/frontend/GooglePlay.png b/frontend/GooglePlay.png new file mode 100644 index 0000000000000000000000000000000000000000..f2e097c43820f6c830289c7deab6284ed7d81c9a GIT binary patch literal 14786 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 A;s5{u literal 0 HcmV?d00001 diff --git a/frontend/favicon.ico b/frontend/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..0bd84aab1a7a1f3336ab9a3768dd77e960de4a49 GIT binary patch literal 1150 zcmZQzU<5(|0R|wcz>vYhz#zuJz@P!dKp~(AL>x#lFaYJyL7k`Se|$K@Qsh5A{Qu0% z{~&yAcJcqUnZExSCjCdj%IUBFBV&+V`|I5P|KFSj!8FpZJpTvS9U!}H%O1krK*)ZO zA3)e;-+wTM`3E_S@VS4u=!f|O+21fWG5#l7KP(;KqGuZa|Bnyj(gzdArxzp#Q-@A} z+6<8csd?3a+YOu3=i@a4pWc}!tB~^}(3}$(W?{Pj0!Dd19pTMP#T=56& K3=Dtl85jWbb%0O+ literal 0 HcmV?d00001 diff --git a/frontend/index.html b/frontend/index.html index e7119ab..0dcaabb 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -1,30 +1,17 @@ - - - - - - - - Calc - - - -
-
- - - - - - - -
- -
- + + + + + + + IP lab + + +
+
+ +
+ \ No newline at end of file diff --git a/frontend/logo.png b/frontend/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f7c2e6ee02d9d42ebe75e4b482efe87c4bd9f9a6 GIT binary patch literal 9949 zcmd^lcT`i~w(d$m2p|v?6;OJUjz}*Okrs+zXwn3vgA}P6L?SAn(h;Iml_1iBbO8|* z1wjD`V32O1gwRw16589G^E+qUbKe_xyfeoA}X?s3;=NG5)Ked&}sF`ARRif1RL9j0>II}_k(o?J@bGXdBY6Ohgk)Ag+;oB zc!J2tNO|8t|4?_gU{Cp=5bvBNZ9V{m09yaF^_ASk@vFhPw7l7$eU;7OAJWA?tl#0h zq^N=WXeMNKK*{Vq3(MP754Zt*_}HNc2`jC-=DHl3_1d%ShhjBf9-^yNv}*RT;NN(L za(Ev|tU9fVpB^1fm;I6@YhS%&yB@UbbLmzZXVnvq*)28Ua@ciuhJKXgko$b{D zL%=#=t}sG+QrI-c;~bbIuVVXK%-q+<217c{tKwJ|&Qge%zPI|#bW-Ie(VGb=`yC6w z>pwdg^&aYleU84j31#9od4E*cE8I`jy4Wi4luYn#KXuEba9*(n97uqI+5dcG{`o%T zfc>~oAywR_V4iAm02I~EELd$7_nm)uYHdH< zwN}*DL8c6Q5hUosLBivMs@p*(*{W&Z6Hfv|Q6}62QGk1(?l#bRfwWqqGh@%#=HqOO zb+V;(%u(WOB=Ycua0E9D=nu~isrF;5VYbLHf&s_5L8IW-Zs3tPQubl=! z_(gb`OfEvF@4U!i zP^e;x)rS<|frIyj=W=!$#N{sQ^ilNH|7H(>1a0AzD1hNF^{6KEQH*~bsWc-Xf%0D3<`V`0%Bocc02PjKS;*GwEl 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 literal 0 HcmV?d00001 diff --git a/frontend/package-lock.json b/frontend/package-lock.json index dc6d931..bd60386 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,30 +1,532 @@ { - "name": "ip_lab", + "name": "test", "version": "1.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "ip_lab", + "name": "test", "version": "1.0.0", - "license": "ISC", "dependencies": { - "@fortawesome/fontawesome-free": "6.2.0", - "bootstrap": "5.2.1" + "@fortawesome/fontawesome-free": "^6.2.1", + "axios": "^1.1.3", + "bootstrap": "^5.2.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router-dom": "^6.4.4" }, "devDependencies": { - "http-server": "14.1.1" + "@types/react": "^18.0.24", + "@types/react-dom": "^18.0.8", + "@vitejs/plugin-react": "^2.2.0", + "npm-run-all": "^4.1.5", + "vite": "^3.2.3" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.20.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", + "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", + "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helpers": "^7.20.7", + "@babel/parser": "^7.20.7", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.12", + "@babel/types": "^7.20.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", + "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "dev": true, + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.10", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz", + "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", + "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.20.7.tgz", + "integrity": "sha512-Tfq7qqD+tRj3EoDhY00nn2uP2hsRxgYGi5mLQ5TimKav0a9Lrpd4deE+fcLXU8zFYRjlKPHZhpCvfEA6qnBxqQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", + "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", + "dev": true, + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz", + "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", + "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.12.tgz", + "integrity": "sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", + "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", + "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, "node_modules/@fortawesome/fontawesome-free": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.2.0.tgz", - "integrity": "sha512-CNR7qRIfCwWHNN7FnKUniva94edPdyQzil/zCwk3v6k4R6rR2Fr8i4s3PM7n/lyfPA6Zfko9z5WDzFxG9SW1uQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.2.1.tgz", + "integrity": "sha512-viouXhegu/TjkvYQoiRZK3aax69dGXxgEjpvZW81wIJdxm5Fnvp3VVIP4VHKqX4SvFw6qpmkILkD4RJWAdrt7A==", "hasInstallScript": true, "engines": { "node": ">=6" } }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, "node_modules/@popperjs/core": { "version": "2.11.6", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", @@ -35,46 +537,116 @@ "url": "https://opencollective.com/popperjs" } }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@remix-run/router": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.2.1.tgz", + "integrity": "sha512-XiY0IsyHR+DXYS5vBxpoBe/8veTeoRpMHP+vDosLZxL5bnpetzI0igkxkLZS235ldLzyfkxF+2divEwWHP3vMQ==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.0.26", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.26.tgz", + "integrity": "sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.0.10", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.10.tgz", + "integrity": "sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "dev": true + }, + "node_modules/@vitejs/plugin-react": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-2.2.0.tgz", + "integrity": "sha512-FFpefhvExd1toVRlokZgxgy2JtnBOdp4ZDsq7ldCWaqGSGn9UhWMAVm/1lxPL14JfNS5yGz+s9yFrQY6shoStA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.19.6", + "@babel/plugin-transform-react-jsx": "^7.19.0", + "@babel/plugin-transform-react-jsx-development": "^7.18.6", + "@babel/plugin-transform-react-jsx-self": "^7.18.6", + "@babel/plugin-transform-react-jsx-source": "^7.19.6", + "magic-string": "^0.26.7", + "react-refresh": "^0.14.0" }, "engines": { - "node": ">=8" + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^3.0.0" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, + "node_modules/axios": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.2.tgz", + "integrity": "sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==", "dependencies": { - "lodash": "^4.17.14" + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, - "node_modules/basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", - "dev": true, - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.8" - } + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, "node_modules/bootstrap": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.1.tgz", - "integrity": "sha512-UQi3v2NpVPEi1n35dmRRzBJFlgvWHYwyem6yHhuT6afYF+sziEt46McRbT//kVXZ7b1YUYEVGdXEH74Nx3xzGA==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.3.tgz", + "integrity": "sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ==", "funding": [ { "type": "github", @@ -89,6 +661,44 @@ "@popperjs/core": "^2.11.6" } }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -102,69 +712,617 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/caniuse-lite": { + "version": "1.0.30001442", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001442.tgz", + "integrity": "sha512-239m03Pqy0hwxYPYR5JwOIxRJfLTWtle9FV8zosfV5pHg+/51uD4nxcUlM8+mWWGfwKtt8lJNHnD3cWw9VZ6ow==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=4" } }, "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "color-name": "1.1.3" } }, "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, - "node_modules/corser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", - "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", - "dev": true, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.8" } }, - "node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "dependencies": { - "ms": "^2.1.1" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" } }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "node_modules/cross-spawn/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/csstype": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", "dev": true }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "dev": true + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.0.tgz", + "integrity": "sha512-GUGtW7eXQay0c+PRq0sGIKSdaBorfVqsCMhGHo4elP7YVqZu9nCZS4UkK4gv71gOWNMra/PaSKD3ao1oWExO0g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.0", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.4", + "is-array-buffer": "^3.0.0", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", + "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.15.18", + "@esbuild/linux-loong64": "0.15.18", + "esbuild-android-64": "0.15.18", + "esbuild-android-arm64": "0.15.18", + "esbuild-darwin-64": "0.15.18", + "esbuild-darwin-arm64": "0.15.18", + "esbuild-freebsd-64": "0.15.18", + "esbuild-freebsd-arm64": "0.15.18", + "esbuild-linux-32": "0.15.18", + "esbuild-linux-64": "0.15.18", + "esbuild-linux-arm": "0.15.18", + "esbuild-linux-arm64": "0.15.18", + "esbuild-linux-mips64le": "0.15.18", + "esbuild-linux-ppc64le": "0.15.18", + "esbuild-linux-riscv64": "0.15.18", + "esbuild-linux-s390x": "0.15.18", + "esbuild-netbsd-64": "0.15.18", + "esbuild-openbsd-64": "0.15.18", + "esbuild-sunos-64": "0.15.18", + "esbuild-windows-32": "0.15.18", + "esbuild-windows-64": "0.15.18", + "esbuild-windows-arm64": "0.15.18" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", + "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", + "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", + "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", + "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", + "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", + "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", + "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", + "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", + "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", + "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", + "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", + "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", + "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", + "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", + "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", + "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", + "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", + "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", + "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", + "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/follow-redirects": { "version": "1.15.2", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true, "funding": [ { "type": "individual", @@ -180,16 +1338,88 @@ } } }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", "dev": true, "dependencies": { "function-bind": "^1.1.1", @@ -200,6 +1430,64 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -212,13 +1500,46 @@ "node": ">= 0.4.0" } }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "engines": { - "node": ">=8" + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-symbols": { @@ -233,195 +1554,765 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "dev": true, "dependencies": { - "whatwg-encoding": "^2.0.0" + "has-symbols": "^1.0.2" }, "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-server": { - "version": "14.1.1", - "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", - "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", - "dev": true, - "dependencies": { - "basic-auth": "^2.0.1", - "chalk": "^4.1.2", - "corser": "^2.0.1", - "he": "^1.2.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy": "^1.18.1", - "mime": "^1.6.0", - "minimist": "^1.2.6", - "opener": "^1.5.1", - "portfinder": "^1.0.28", - "secure-compare": "3.0.1", - "union": "~0.5.0", - "url-join": "^4.0.1" - }, - "bin": { - "http-server": "bin/http-server" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "node_modules/internal-slot": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", + "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", + "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, "bin": { - "mime": "cli.js" + "jsesc": "bin/jsesc" }, "engines": { "node": ">=4" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" } }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", "dev": true, "dependencies": { - "minimist": "^1.2.6" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { - "mkdirp": "bin/cmd.js" + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/opener": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", "dev": true, "bin": { - "opener": "bin/opener-bin.js" - } - }, - "node_modules/portfinder": { - "version": "1.0.32", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", - "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", - "dev": true, - "dependencies": { - "async": "^2.6.4", - "debug": "^3.2.7", - "mkdirp": "^0.5.6" + "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": ">= 0.12.0" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", + "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", + "dev": true + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "dependencies": { - "side-channel": "^1.0.4" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" }, "engines": { - "node": ">=0.6" + "node": ">= 4" + } + }, + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/requires-port": { + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/picocolors": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "node_modules/pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "node_modules/secure-compare": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", - "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==", - "dev": true + "node_modules/postcss": { + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.6.1.tgz", + "integrity": "sha512-YkvlYRusnI/IN0kDtosUCgxqHeulN5je+ew8W+iA1VvFhf86kA+JEI/X/8NqYcr11hCDDp906S+SGMpBheNeYQ==", + "dependencies": { + "@remix-run/router": "1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.6.1.tgz", + "integrity": "sha512-u+8BKUtelStKbZD5UcY0NY90WOzktrkJJhyhNg7L0APn9t1qJNLowzrM9CHdpB6+rcPt6qQrlkIXsTvhuXP68g==", + "dependencies": { + "@remix-run/router": "1.2.1", + "react-router": "6.6.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shell-quote": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", + "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/side-channel": { "version": "1.0.4", @@ -437,54 +2328,670 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/union": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", - "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", - "dev": true, - "dependencies": { - "qs": "^6.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", "dev": true }, - "node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, "dependencies": { - "iconv-lite": "0.6.3" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "node_modules/string.prototype.padend": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz", + "integrity": "sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vite": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.5.tgz", + "integrity": "sha512-4mVEpXpSOgrssFZAOmGIr85wPHKvaDAcXqxVxVRZhljkJOMZi1ibLibzjLHzJvcok8BMguLc7g1W6W/GqZbLdQ==", + "dev": true, + "dependencies": { + "esbuild": "^0.15.9", + "postcss": "^8.4.18", + "resolve": "^1.22.1", + "rollup": "^2.79.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true } }, "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/compat-data": { + "version": "7.20.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", + "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==", + "dev": true + }, + "@babel/core": { + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", + "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helpers": "^7.20.7", + "@babel/parser": "^7.20.7", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.12", + "@babel/types": "^7.20.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + } + }, + "@babel/generator": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", + "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", + "dev": true, + "requires": { + "@babel/types": "^7.20.7", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true + }, + "@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "dev": true, + "requires": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.10", + "@babel/types": "^7.20.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true + }, + "@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "requires": { + "@babel/types": "^7.20.2" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "dev": true + }, + "@babel/helpers": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz", + "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==", + "dev": true, + "requires": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" + } + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", + "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==", + "dev": true + }, + "@babel/plugin-syntax-jsx": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.20.7.tgz", + "integrity": "sha512-Tfq7qqD+tRj3EoDhY00nn2uP2hsRxgYGi5mLQ5TimKav0a9Lrpd4deE+fcLXU8zFYRjlKPHZhpCvfEA6qnBxqQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.20.7" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", + "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", + "dev": true, + "requires": { + "@babel/plugin-transform-react-jsx": "^7.18.6" + } + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz", + "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", + "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + } + }, + "@babel/traverse": { + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.12.tgz", + "integrity": "sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + } + }, + "@esbuild/android-arm": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", + "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", + "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", + "dev": true, + "optional": true + }, "@fortawesome/fontawesome-free": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.2.0.tgz", - "integrity": "sha512-CNR7qRIfCwWHNN7FnKUniva94edPdyQzil/zCwk3v6k4R6rR2Fr8i4s3PM7n/lyfPA6Zfko9z5WDzFxG9SW1uQ==" + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.2.1.tgz", + "integrity": "sha512-viouXhegu/TjkvYQoiRZK3aax69dGXxgEjpvZW81wIJdxm5Fnvp3VVIP4VHKqX4SvFw6qpmkILkD4RJWAdrt7A==" + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } }, "@popperjs/core": { "version": "2.11.6", @@ -492,39 +2999,122 @@ "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==", "peer": true }, + "@remix-run/router": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.2.1.tgz", + "integrity": "sha512-XiY0IsyHR+DXYS5vBxpoBe/8veTeoRpMHP+vDosLZxL5bnpetzI0igkxkLZS235ldLzyfkxF+2divEwWHP3vMQ==" + }, + "@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true + }, + "@types/react": { + "version": "18.0.26", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.26.tgz", + "integrity": "sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==", + "dev": true, + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/react-dom": { + "version": "18.0.10", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.10.tgz", + "integrity": "sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, + "@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "dev": true + }, + "@vitejs/plugin-react": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-2.2.0.tgz", + "integrity": "sha512-FFpefhvExd1toVRlokZgxgy2JtnBOdp4ZDsq7ldCWaqGSGn9UhWMAVm/1lxPL14JfNS5yGz+s9yFrQY6shoStA==", + "dev": true, + "requires": { + "@babel/core": "^7.19.6", + "@babel/plugin-transform-react-jsx": "^7.19.0", + "@babel/plugin-transform-react-jsx-development": "^7.18.6", + "@babel/plugin-transform-react-jsx-self": "^7.18.6", + "@babel/plugin-transform-react-jsx-source": "^7.19.6", + "magic-string": "^0.26.7", + "react-refresh": "^0.14.0" + } + }, "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "^2.0.1" + "color-convert": "^1.9.0" } }, - "async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true + }, + "axios": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.2.tgz", + "integrity": "sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==", "requires": { - "lodash": "^4.17.14" + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, - "basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - } + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, "bootstrap": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.1.tgz", - "integrity": "sha512-UQi3v2NpVPEi1n35dmRRzBJFlgvWHYwyem6yHhuT6afYF+sziEt46McRbT//kVXZ7b1YUYEVGdXEH74Nx3xzGA==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.3.tgz", + "integrity": "sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ==", "requires": {} }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + } + }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -535,57 +3125,398 @@ "get-intrinsic": "^1.0.2" } }, + "caniuse-lite": { + "version": "1.0.30001442", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001442.tgz", + "integrity": "sha512-239m03Pqy0hwxYPYR5JwOIxRJfLTWtle9FV8zosfV5pHg+/51uD4nxcUlM8+mWWGfwKtt8lJNHnD3cWw9VZ6ow==", + "dev": true + }, "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { - "color-name": "~1.1.4" + "color-name": "1.1.3" } }, "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, - "corser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", - "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "csstype": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", "dev": true }, "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.0.tgz", + "integrity": "sha512-GUGtW7eXQay0c+PRq0sGIKSdaBorfVqsCMhGHo4elP7YVqZu9nCZS4UkK4gv71gOWNMra/PaSKD3ao1oWExO0g==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.0", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.4", + "is-array-buffer": "^3.0.0", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + } + }, + "es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "esbuild": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", + "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.15.18", + "@esbuild/linux-loong64": "0.15.18", + "esbuild-android-64": "0.15.18", + "esbuild-android-arm64": "0.15.18", + "esbuild-darwin-64": "0.15.18", + "esbuild-darwin-arm64": "0.15.18", + "esbuild-freebsd-64": "0.15.18", + "esbuild-freebsd-arm64": "0.15.18", + "esbuild-linux-32": "0.15.18", + "esbuild-linux-64": "0.15.18", + "esbuild-linux-arm": "0.15.18", + "esbuild-linux-arm64": "0.15.18", + "esbuild-linux-mips64le": "0.15.18", + "esbuild-linux-ppc64le": "0.15.18", + "esbuild-linux-riscv64": "0.15.18", + "esbuild-linux-s390x": "0.15.18", + "esbuild-netbsd-64": "0.15.18", + "esbuild-openbsd-64": "0.15.18", + "esbuild-sunos-64": "0.15.18", + "esbuild-windows-32": "0.15.18", + "esbuild-windows-64": "0.15.18", + "esbuild-windows-arm64": "0.15.18" + } + }, + "esbuild-android-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", + "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", + "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", + "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", + "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", + "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", + "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", + "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", + "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", + "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", + "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", + "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", + "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", + "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", + "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", + "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", + "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", + "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", + "dev": true, + "optional": true + }, + "esbuild-windows-32": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", + "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", + "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", + "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", + "dev": true, + "optional": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true }, "follow-redirects": { "version": "1.15.2", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true }, "function-bind": { "version": "1.1.1", @@ -593,10 +3524,34 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, "get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", "dev": true, "requires": { "function-bind": "^1.1.1", @@ -604,6 +3559,46 @@ "has-symbols": "^1.0.3" } }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3" + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -613,10 +3608,31 @@ "function-bind": "^1.1.1" } }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true + }, "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", "dev": true }, "has-symbols": { @@ -625,149 +3641,537 @@ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "dev": true, "requires": { - "whatwg-encoding": "^2.0.0" + "has-symbols": "^1.0.2" } }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-server": { - "version": "14.1.1", - "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", - "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", - "dev": true, - "requires": { - "basic-auth": "^2.0.1", - "chalk": "^4.1.2", - "corser": "^2.0.1", - "he": "^1.2.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy": "^1.18.1", - "mime": "^1.6.0", - "minimist": "^1.2.6", - "opener": "^1.5.1", - "portfinder": "^1.0.28", - "secure-compare": "3.0.1", - "union": "~0.5.0", - "url-join": "^4.0.1" - } - }, - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, - "minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true - }, - "opener": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", - "dev": true - }, - "portfinder": { - "version": "1.0.32", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", - "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", - "dev": true, - "requires": { - "async": "^2.6.4", - "debug": "^3.2.7", - "mkdirp": "^0.5.6" - } - }, - "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "internal-slot": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", + "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==", "dev": true, "requires": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", "side-channel": "^1.0.4" } }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "secure-compare": { + "is-array-buffer": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", - "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", + "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-typed-array": "^1.1.10" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true + }, + "is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "magic-string": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-releases": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", + "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + } + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + }, + "postcss": { + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "dev": true, + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "requires": { + "loose-envify": "^1.1.0" + } + }, + "react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "requires": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + } + }, + "react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true + }, + "react-router": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.6.1.tgz", + "integrity": "sha512-YkvlYRusnI/IN0kDtosUCgxqHeulN5je+ew8W+iA1VvFhf86kA+JEI/X/8NqYcr11hCDDp906S+SGMpBheNeYQ==", + "requires": { + "@remix-run/router": "1.2.1" + } + }, + "react-router-dom": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.6.1.tgz", + "integrity": "sha512-u+8BKUtelStKbZD5UcY0NY90WOzktrkJJhyhNg7L0APn9t1qJNLowzrM9CHdpB6+rcPt6qQrlkIXsTvhuXP68g==", + "requires": { + "@remix-run/router": "1.2.1", + "react-router": "6.6.1" + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, + "scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "requires": { + "loose-envify": "^1.1.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true + }, + "shell-quote": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", + "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", "dev": true }, "side-channel": { @@ -781,38 +4185,207 @@ "object-inspect": "^1.9.0" } }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "union": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", - "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", - "dev": true, - "requires": { - "qs": "^6.4.0" - } - }, - "url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true }, - "whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, "requires": { - "iconv-lite": "0.6.3" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "string.prototype.padend": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz", + "integrity": "sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + }, + "typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + } + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vite": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.5.tgz", + "integrity": "sha512-4mVEpXpSOgrssFZAOmGIr85wPHKvaDAcXqxVxVRZhljkJOMZi1ibLibzjLHzJvcok8BMguLc7g1W6W/GqZbLdQ==", + "dev": true, + "requires": { + "esbuild": "^0.15.9", + "fsevents": "~2.3.2", + "postcss": "^8.4.18", + "resolve": "^1.22.1", + "rollup": "^2.79.1" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true } } } diff --git a/frontend/package.json b/frontend/package.json index d1692fe..a3f7116 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,19 +1,26 @@ { - "name": "ip_lab", + "name": "test", "version": "1.0.0", - "description": "My project for IP lab", - "main": "index.html", + "type": "module", "scripts": { - "start": "http-server -p 3000 ./", - "test": "echo \"Error: no test specified\" && exit 1" + "dev": "vite", + "start": "npm-run-all --parallel dev", + "build": "vite build", + "preview": "vite preview" }, - "author": "Abazov Andrey", - "license": "ISC", "dependencies": { - "bootstrap": "5.2.1", - "@fortawesome/fontawesome-free": "6.2.0" + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router-dom": "^6.4.4", + "axios": "^1.1.3", + "bootstrap": "^5.2.2", + "@fortawesome/fontawesome-free": "^6.2.1" }, "devDependencies": { - "http-server": "14.1.1" + "@types/react": "^18.0.24", + "@types/react-dom": "^18.0.8", + "vite": "^3.2.3", + "@vitejs/plugin-react": "^2.2.0", + "npm-run-all": "^4.1.5" } } \ No newline at end of file diff --git a/frontend/scripts/calc.js b/frontend/scripts/calc.js deleted file mode 100644 index e632dbd..0000000 --- a/frontend/scripts/calc.js +++ /dev/null @@ -1,70 +0,0 @@ -function calcSum(){ - var num = document.getElementById("numberInput").value; - fetch("http://127.0.0.1:8080/second?num=" + num) - .then(function(response) { - if (response.status != 200){ - return response.text().then(text => {throw new Error(text)}); - } - return response.text(); - }) - .then((response) => { - document.getElementById("responseField").innerHTML = "Результат: " + response; - }) - .catch(err => {document.getElementById("responseField").innerHTML = "Ошибка: " + err;}) -} - -function calcDif(){ - var num = document.getElementById("numberInput").value; - if (num < 0) { - document.getElementById("responseField").innerHTML = "Результат: введите НЕОТРИЦАТЕЛЬНОЕ число"; - return; - } - fetch("http://127.0.0.1:8080/root?num=" + num) - .then((response) => { - if (response.status != 200){ - return response.text().then(text => {throw new Error(text)}); - } - return response.text(); - }) - .then((response) => { - console.log(response); - document.getElementById("responseField").innerHTML = "Результат: " + response; - }) - .catch(err => {document.getElementById("responseField").innerHTML = "Ошибка: " + err;}) -} - -function calcMultiply(){ - var num = document.getElementById("numberInput").value; - if (num < 0) { - document.getElementById("responseField").innerHTML = "Результат: введите НЕОТРИЦАТЕЛЬНОЕ число"; - return; - } - fetch("http://127.0.0.1:8080/fact?num=" + num) - .then((response) => { - if (response.status != 200){ - return response.text().then(text => {throw new Error(text)}); - } - return response.text(); - }) - .then((response) => { - console.log(response); - document.getElementById("responseField").innerHTML = "Результат: " + response; - }) - .catch(err => {document.getElementById("responseField").innerHTML = "Ошибка: " + err;}) -} - -function calcDiv(){ - var num = document.getElementById("numberInput").value; - fetch("http://127.0.0.1:8080/digit?num=" + num) - .then((response) => { - if (response.status != 200){ - return response.text().then(text => {throw new Error(text)}); - } - return response.text(); - }) - .then((response) => { - console.log(response); - document.getElementById("responseField").innerHTML = "Результат: " + response; - }) - .catch(err => {document.getElementById("responseField").innerHTML = "Ошибка: " + err;}) -} \ No newline at end of file diff --git a/frontend/scripts/calcType.js b/frontend/scripts/calcType.js deleted file mode 100644 index 5f20589..0000000 --- a/frontend/scripts/calcType.js +++ /dev/null @@ -1,36 +0,0 @@ -function calcSum(){ - fetchServer("CalcSum"); -} - -function calcDif(){ - fetchServer("CalcDif"); -} - -function calcMultiply(){ - fetchServer("CalcMultiply"); -} - -function calcDiv(){ - fetchServer("CalcDiv"); -} - -function fetchServer(adress){ - var obj1 = document.getElementById("obj1Input").value; - var obj2 = document.getElementById("obj2Input").value; - var type = document.getElementById("typeSelect").value; - if (type == "int" && (isNaN(obj1) || isNaN(obj2))){ - document.getElementById("responseField").innerHTML = "Ошибка: введите число для операций с числами или измените тип данных!"; - return; - } - fetch("http://127.0.0.1:8080/" + adress + "?obj1=" + obj1 + "&obj2=" + obj2 + "&type=" + type) - .then(function(response) { - if (!response.ok){ - return response.text().then(text => {throw new Error(text)}); - } - return response.text(); - }) - .then((response) => { - document.getElementById("responseField").innerHTML = "Результат: " + response; - }) - .catch(err => {document.getElementById("responseField").innerHTML = "Ошибка: " + err;}) -} \ No newline at end of file diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx new file mode 100644 index 0000000..2ab1336 --- /dev/null +++ b/frontend/src/App.jsx @@ -0,0 +1,42 @@ +import { useRoutes, Outlet, BrowserRouter } from 'react-router-dom'; +import Header from './components/common/Header'; +import Footer from './components/common/Footer'; +import CustomerPage from './components/pages/customerPage' +import './styleSite.css'; + +function Router(props) { + return useRoutes(props.rootRoute); +} + +export default function App() { + const routes = [ + { index: true, element: }, + { path: 'customer', element: , label:'Покупатели'}, + // { path: 'shop', element: , label: 'Магазины' }, + // { path: 'product', element: , label: 'Товары'}, + // { path: 'order', element: , label: 'Заказы'} + ]; + const links = routes.filter(route => route.hasOwnProperty('label')); + const rootRoute = [ + { path: '/', element: render(links), children: routes } + ]; + + function render(links) { + console.info('render links'); + return ( + <> +
+
+ +
+