From e3222752dc017e83fac505a56c693b9a5eb6a83c Mon Sep 17 00:00:00 2001 From: sylarchen1389 Date: Sat, 22 Nov 2025 15:14:58 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=81=8A=E5=A4=A9=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E6=94=AF=E6=8C=81=E4=B8=8A=E4=BC=A0zip?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .claude/settings.local.json | 7 +- CLAUDE.md | 2 +- backend/open_webui/favicon.png | Bin 0 -> 14794 bytes backend/open_webui/main.py | 5 + backend/open_webui/static/site.webmanifest | 4 +- package-lock.json | 714 +++++------------- package.json | 3 + .../chat/Settings/DataControls.svelte | 36 +- src/lib/components/common/Folder.svelte | 37 +- src/lib/components/layout/Sidebar.svelte | 36 +- src/lib/utils/chatImport.ts | 61 ++ 11 files changed, 308 insertions(+), 597 deletions(-) create mode 100644 backend/open_webui/favicon.png create mode 100644 src/lib/utils/chatImport.ts diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 4f9852e81a..f926e39777 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -6,7 +6,12 @@ "Bash(git rev-parse:*)", "Bash(chmod:*)", "Bash(test:*)", - "Bash(lsof:*)" + "Bash(lsof:*)", + "WebSearch", + "Bash(npm install:*)", + "Bash(ls:*)", + "Bash(npm run build:*)", + "Bash(cat:*)" ], "deny": [], "ask": [] diff --git a/CLAUDE.md b/CLAUDE.md index 4bde32da28..52300bf563 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co ## Project Overview -Open WebUI 是一个功能丰富的自托管 AI 平台,支持完全离线运行。核心技术栈: +CyberLover 是一个功能丰富的自托管 AI 平台,支持完全离线运行。核心技术栈: - **前端**: SvelteKit 4 + TypeScript + Vite 5 + Tailwind CSS 4 - **后端**: Python 3.11 + FastAPI + SQLAlchemy - **部署**: Docker 多阶段构建,生产环境前后端同容器运行 diff --git a/backend/open_webui/favicon.png b/backend/open_webui/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..dae46dbd5f08fa0198433bfe49d76681defa124e GIT binary patch literal 14794 zcmeIZ_g7Qh^9GuP8W18KBLqcy6(JNMpa>#edM|=>kkFADA%cK_H0dC{7p3;RQh2$)$#pO!9s(OYzx2Pdx zSBB?zg2Tdd9^Q|7@+`m7fU`S)tu67Sb=1OWp=@(ov8>Yi4Uc;A|Nrm*Wr0a0<~I2o z3&SGyUK9aY(b|r-EAa1NR`4by&dqei@#5q+g~;{OB~98^S46E)R*&!+-VQH*Z(;kk zR3VM+H<}&8{wQR%64~Z-z2eA$DxIctZAHtyQ1N$)IhOE7g~y#%ST-z5|h1#UMThgMA{d%(K3AHrh9r~D{5 zjQVe)NH<5Y)r1l9*&+8Qa@v+L)9>AL4MdLoATw{Z21m0IyIF{v^SKkw5(S&PfT}fu z6;gq$F5a{jr1(9O4CCesGR@I2r~orboABn%=R?_ zbN%U!#%ux#lA6dm->%Xw2LTFr-$Hgbdexkbzqrw4j+Yr?qRH|L<%A3tItnoXBfW!} zIeXns8iCKiyY{C#=xpXSkoabAqIZDGf@Fbi{sCDhT_A6*7=prShL|5pdbX3$$dEO? z!9~84-638mh97TR75l={CSSCZF<$lv8q9{iTJN>fy>6U9PptH^z&BFwe2>-zC4O08 zTNrXco^G~=n@w%_XioZ?-ojDQl5Q&sa~WBT^~X8A%kr%3jz9JwRYsVM^v}HT@CkS* z++++sNkzB(TeT$LY}S2F=}o=8h0sW=vs=9+r)@8ItOwl#3+Ckg=(IR?0H zA9T=8fI}2r>xloFkfzv0oKJ?EPM~tjJ*}K-N zNoO%Ba^4|>E_)QJ>yhVpaU3pjm+G5{AmL24fyKjeH6aeO1nCjPcRrU5rxeSHq`h`7 zFiq!3NZ6}40|!)PGxp9+)%$@hB--5!f+#wl)S5x-pi*L78luBlEFsNNPOCegmD(V( z*GSjUL9np;;G4}>KQddW5%*>F2j(C(pmevBlU!taN&G68DLiO|pptYaSu{#^IB`TZ1Jk0RBQ zp!SKIcumi2QUwo~3U?Zt{#0jrJl*0GO>zpDChpF)>o zN_{rI^UIkhPLlF>I1;S2&SZyvH|X@@hnAIW1153}|MkknR`9RkzUDn`yKw2E_taZM z@Wbu?BLivuJ|-Fxq{!>(rWww}3IB?P*fF0Q;~YtISdl%q)ONUAS59~tDl1}elKe~z z7Y1G>o8r6>6(+o^d~PiJS19liG#`rAj+!}M4c`MVYG-+r-NXe;TItGMbd+Lsb$>J+ z`~b;3ZO>bLbAo(Rx}XK+`g$9D>hb1r=>aASDIBQhocCZ=D~KO-U6o^I0IV~tP%0@D zc(a~oxpm-6DfpZpH+{|egp7TG<#SXj1k1$N3(@Q<&@f2TJw7Sus0D|Amu4I)C& zZD7dT8|(AuJ(V+H+@&JvV65yq`I+o;L7rDe($_{8<0^lA!N0KAj~=4wo+4149gkPn zH+z5g$av`?O!6-M7^V#krk^`vJfx|Yde9Th65_?+&a~H+aeI?0&<5kc=jZaDZ|3lt zrYv@1u?(f}NXU!)xcK!AhfUY`Ic1<#X?K{*g!8To7t-R2;!$q3$L$KuKWQu>?~Bxr zWWb2bVBCr;>kbRPgOh*gu2dPOW^^YllTk6RAY5&<4`tAEo+5-RBFpj6Pam*^Qu!0_ zci+Tie{MPRC?ua1#a*-F8=;|hm_EsN5+-R3#+;^u5ew6siUdcpPF`Gm#Zn6+{V>YZ zWtn`oCsO_B^^a9k!%s+q-kvB&y(cEn{ov}55>gg8;ZHqRI?TAHBk1l2vsO=xO#l(m zjXW|fiP7ur;XTJ4l6B_)t>#ARNLS)%3p!AXW!_&SpGZ>^za{+46DRn*o|Ri=a`wW& z__|A1g-Pl2WN8D|P~9soY@$|(d9kSqPzSkeS<%O1&8*_?`xqO)sns7~MB0g89v}FS z+GQ6sl2&iBw8YfBa4?tmcASYOLO%MUo5OkAt__%nLR- zEFb+lrfD8SJ#yjjFzsurP|RTof$}eIDK|Lp^wB4KO!m->!WRErqlnX#mHmA(yq|Yf zkgkM=n4-cp^bd6M8}aVhlQSCnvD{P(t^cCIo2y|A2QcutaB;_p4|kCs#26k5Z7CaR zYjyB7A}#|loqwI;bU}9biS))p=n181(sGwLVWn-5Kfd$+L?Uy_?&SEC<_vX}Z8Xj3 z^%qY=gPD%oSQG?~HcO0Xi5Z}o(pE~L!23IY)o;0>+h-4;iXkQ@_4Ye|U79?u;z{%B z!7Sl}ci?`LO>oE-^JMC2*Qmioahe6kq`Po?X+-odL=J296*P{TXV>C1jpz~*cGq7h z(Dso*+x7+8tHxK8H)Qf@ZMbo-Fxl{LonHlJ;eS8O*F{IMF`ns*6YSdt`Ql$Q=H=Kz ztXc6-+6GGxAqvtwLGT=_VQ}?v985KGIMeYk5TVI%`xHP;e zwVT_;$gd)D?lw4LB)Km%E(~|>tLI)b)QdA?Jc#{NZ?xl8;gd~C^7y#9&SBdyAF02# z!?-Ngx@AJd&qpS=KPHzIU5(~9{q36Nq1Q{{QCD=IMKnKCw_@DzY*Q^KU8i?2Jj<7* z^Tu*?DLrv?-d^82@>XP>yBD361nt}^BKkiXVqS)i0rX@Qk&-&uesd>pFXhFX;KxJa zxCi}cKTs{K-eBk4jRy-Vdzh0i2L3*Z5)h05?Z%Rx{JV}`o421_XXjx5@Wwk+c;2x% z{DT9gihI;x_cQ8-;7e_YCEI4CexHvw>`_q}whTKh|I;V44C?Bj5orAp+s!;Hdz4XJ zt~@_vrnZVmd^m&8Jbqu*8kUgzGWhpS*+Uad(XCMvu2EE;3qk1Pvw2?J?h920JF9Pz z!DMV|uS%fJ)H@Qej+sa`Neau`WP{?-O22lpA1 zZr+sJPHw-t*LlQ9KZHUEMv3>74faaUYd#iVeLSP7#UJiR5`R zv038y>3f_v-|{Tv1>Ig7R(oYc5vYxo)tA0b-YPvQDm?5p0QHtR+J*6D1^&> z?z|si(6_2-sWVw%v3QBHG~)bxWTs(lh7J!-_XX$NfFPd5hxmos3XXJpTfce5-Kc*R zDI$pf01*?x@3V{`OkH@4h#>q68!o!@zA`A;{5&hADoMJV2)j%2bf5V2v%6cMW(-|W@ zSo#YJV=5G=TFfO(wTg&qy!)NrtGV)w!t~aWtzEfoG$_64)O+vw^43~9tDPQ&jmJN; z?$(HH9~e(EFIX(`c8@5<_aRh<`bzJeq%`8wWy^9Zkc`T!6eG;w_YuiY#w_Wsfnk`U z7#~FU<-5_!bYt$du?b=+~K)nMm^>eWqL_3m%Pt45*gR2gw^8Wr<`Z!lCd;Hy6~ zEo;|}?Rmp=QbciX29_OQ9q`cnidz*{S2a*{HRIg@MG?+ohrx*Gexos7l8j1iUB?(~ ztz)o?Y=@k)ne+(f%7Z*LnNJFM75MeGMpM0-C!=WcSZ^j!YOOO&Yb$$hrpn3QQqIZw zPJS-=5tu1RAsZ~;NT;uhlU%Np zgH}#+w@wpXJHuF(>=-@SL~Xw^=Dqn4FE-^x^AJToE2Ydqz_M#o1W$z3?N2I(+@jtKB}gm}VvG z@SS+Pt@7@(YoI0DHgi4yO1SAH9Ysi$#~XH^GC1G9>|0Rcv+KneakX_#;|8=$yD*nBr4O8D zcDKkC!__VJAV@e}zjPRfb)Ez}a-^!v9yeyP;yVc%Kxh(E)YCw=>IF!wio z$?(_@>!+leBj>x3Ietrkd;S?!H`C1lfpvGfdlMWF1V2svhQEzz4WpI4qnwd@>tjX` z-~ORA<<9h-0VGOR?xB-+woCYl$IaS5^`hF*Rqd|jSj`Ss;ga5>zAB5T9|^1XxSDL0 zJuBS9a$C%6%%z;*W1s%$S^J>XqeoEV?L)B+XwikDqSe*(fRo=cC2f!dw`)ZL1U%=Ko!3|GnYZ%`Mm|JE3X>AAc(}bbBy#x~l(ugE{B@S; zTVm#OqK9RNC0w<4%^aU|3H^IONM+}|1{fboLPwRx!4;YDoY#JSXQw76z!g>U8m5-o zAz>*63%`!huGrhK*sBlBTR~2g33YE^1RG>7Do_NA3q*9eMM!Yb*PJx+h%-g&3_(a+<*B6gH4bj%~N%R0p3p z)XYkTeQ-VOv6E|$u#)G$-Ijq)DJh%Qo1zgNlc_WwE9roJmuq)=?cGQr2?K7k{5Tn} zgDt6SI${&|Si~2&?7NxNV-E}Y5RTKr-#s?=67#$ox}|TRp^s3lPIK(YQ=x}81Grel z&Nrnx$C=lDE(uGWgw1>zZ~o8R2VEsU_;$bsl(^pOmVxQhtSXASn2{a;jO=HgIUa4; zxD>8~EQqszrU}zoN6M2OmJ=j#4#F4tUNl6?WyIqKA7}a=V(0pw_hFcon85YN6AFq! zv?DdYEqMPx#HtDQxKY$>flNW1wWp@@=(MxL0JgR^4gL7*C$6tVS{B>@i@QxP8C$P3 zZfoQ`ydYvs%{pV>0{u!uP4va;mW#OYFk7V2eXSv6*g3mTW`42PP%9)n;~aCOVyLkHKE2n%ZZM zRqyVdms;!nZhjNf#5GgSOiEOs4Y)4Kc`i&k*YohR#Z^0HLn7`u2`bv-zNAIBHRIN; zrE~1x;Or_}=RnPL{00y9j0#z4egPo-B#P;u1|D5PlD>`b|26>&RB%YrGO#LDa< zHG9#ZEjHpLqEkt~vx4EtGmFHxdz+1S3Sdv9`wAIMvXQb7S#YRW(QmL zo01365)VK=RT2X%EF9hJ%|i>jPsnG*{|gRtpa3xI4AzwSNj4q`ipmDuxJ`5GdQG3i zC&?la9zv}*R>^Io%R=Kd9jfo(gc3O7iHGkBqz);d0n?+wVM(yF1f1eo@*(Iz+ zG$A4UlWghPIg62M;B=MO72(eEgYg?|Uy~e_xkk6PFLaGvR8y^;9cp)w(@l29u5-LN z7<<9;bzX%wjLF9Y3tZKZQ*oS^lsw$-pB~JgtoAj#LCchDLe<>ZdxI~)!kU*5 z+UqW&o4ri5vI=&?oRHIuUe@~IA;@B`P~b#Pf^lhV4=5X3YWb%hSdb130kZ_w^Q>l@ zV@-VjX2y8*?QiFEE0(DV&PK+=y^2TSJM|2|UH%4mUH zdgzHMn3kju%cGoU7cPBfP=!T2NyydU+b1-JE>!=ViVx$mR{prwM={?7@1Iz_Rh-+SfkOQY))X`i}WFeEKh^SD-SHrPxO|o?j!>z(&dD9ZccrnB6vi)%=xzo zP(B|v3G%bT7jQQ2Q7`A`1EcRw zH)dxV#h$RWw}n+Q`tQ8UP2GT4&&81(bgD*P_Fn^*`t6XdeJuJ;MkJZrY`TPX|6|-j zyQ`a{R^m&}bvB|n6I$$|)jL;@l5hVe^L7s^Yh3bA|C2}!kCh-+9G?}^u)ox*iRH(C z@H`2s=wCaZnca|sEPVR~|9kU4owrUYuKR=zT;6L!=CKtb#w>BX`-Gwu5vbfFSW&69 zap;pXHXdyY>^)NSqHB%W>3bv>+sNL!u=kO}%~*QPJl2%};*b$;2PLZ*pjK)HzTS9+ z@OSpX?E+YVbNKt3F_PhbS*AY3uW;-14lY_>GZQ)%w2O(yr^o$nL1^=xuvgb?bEU!D z!~b&(?7zdFWDRp`Vyt5|{j~~t5uQ7+HNR9Ku$u!dgR1p< zue+Vw_X%pg4Ytm;OB@|SqMx~2AI!18%|IjoJ}u3^={X7+zPBHBsqk=v%o5JkW1Sz4-C`=m7yH+g2JW3*Vw@67R+J>$q? zMGl%%u_sJx`vhU=id%##>HQtG=r|?*7-*>MS+g+a>}4(MF|t$6hzLJtipy|*12!8MT+2gFgNHhH9p%hP^2JeN}_)0l8VKK(_wrliC*nhjdugsMNtifkQRc2Vc zuqQj3N_8Va1@&?JzbEJMz80%bqTk-!kRyerj%wXxIwroI^xiaoqMR;upC%CfH9VXF z?NPj=#mN*T@6>d9GzX5e_f<*0V?owxk_|$hO6%K{CPTY&ZJJMyj40;R{>1P&Fyp}^ z;f?>rv4>_F1Mtq3^c>5c7(2nHKIFdE40e@8DJzw}g?7CR%kfM}Ot|_W*?X?d1M|pd zW9m*pi_gt%;W`u~BYqqh@4z}+;qY4X{gAmZfS7-V6q29w%OYjJ$cis9ZE1~?l!cp1Ng?w0Z94EJ_B_?G&D`4tQB(X(r-o<77)_Onb!K+!Qy-6PVl-UQqINWbjZD=hbdJtOg| zQ{^SN$E$hRPZ58yhb9$^O%scoCAd-TIRKugcEoou^le>nN8C){@pGWfs%fbi#vR?- zceu<6OzFc5L%;N7g2rA?aH(%7W1PMzCZ0OVok~0mFU^Ib@`|`W2I^qhlc#`~{XL1n zj+!Y*OM>zE%!!}~QaxY4Ae$=fIzSO>SSc6RX9@ z{D-e@X{}2fxRD&^ZcuD#p4?*Q6)b6@^f3}fhLE*XsoEnB5nFjZhd@y4`aps zF{!v5vUT6b(odKogra=z=#h*>ftobaTC+SZED4yc*2T43pMlLOk}ObbE)={y-u&<` z4#A>uTbV;WwlIPU-0_h5pn(N#jFoM_#uNmh;9wV=y3YM6shGX+^sYGGKw^3Qt=2kp z7^Q~b?RGCSAC{|2eU$~*(icUBF>c)ngtb#Jf852_wTn1zld)28lszvS9E%ln= z{)?;pP9gNBKz@5314SieuD;cO&5{#LH7f{chihP>!HJ1iE5!)k7?z!Rwbo;*F%2;$ zj6@VL@yXkEBlp$BqkXtPO)5zglpUNu^70oW2qxL7Pr3>d{@`xidKv6lENc#B3Q|Uq zB$9NLvtA^EH0?en7f&}*{te4Gt)?ndi7iRHUBGYLPsRP|2X||{wth6E^F2n?{$nL! z0a#gc<~Y-4f0ESLH~U#niFu^HhC6fB4rF`=4+9~fo zhUtjm-QF)x6T4~rU$f{=?!!~v68wc6z(CE$<^A%X!_0AcX{tJ^+BoLgtmp?X{J1}* zNacR7Bz(oW7YELa^oAwbxgaygI|3vaV5S229hMNv{4!0rjvkU_yg7z_FBiwlu;PNu z7?)h{jeceN?p>4dzV>;4S7I+oJ>=e|Q zYO!6I0F^6dY{WaZ&p&3EYxC`E1))P0=2v4KN-^T%vB7g%lh~}69&wIzI*kgC`<;S` zk*0qeZ}aWHJ|^D97rweVvx!8`%EYr9O#W)K=jx`azAmxK8%q1g!9jU!GYf7Fm$U^3 z(4jg0(nr0KGW!li`&J9N%2Z@qY?}fqv4$^C+owxK zDK{Xur=iL{F7#npH)^8*JOK2)LFkZ(@e^3A*rTjFES)*8erJ2G&i39kgER2$Puy9G z45e+oeSZsOz~M<5hn8Ht<#d@V@K`-{(y&3uCO>ufQ`llMFixT%u{jKu2hPd5amX1w!tg#o>#BwR zku)M_EN@vdGzfOstBSrgf>k_zwvLSZ6~-oy23ydLhA!RkcUR9fm%&NkzP~4fZDcEf zTNVA?KRGCK!AuUbSgHh@8y5I+6Syp>ou-CoJV-6c(Q3FPbe7YkF_D7lnAG}e)#5)S z)J};9N4S>;EY-L2{>@S~o>!sT;9$ra@2eVet#$jS^rOZ9FeR-A2dy-Ui8EL!u~c~%y--JJLy^=YW;FoU zi8>}OwEw%IX5(d!`$~2iu+^Hp3?)kAl^C(Lw1Hkd6`8e{AiyA$pVn#pCbnJ~Url6^}07t*EU92S-pa74v^!tic1P2j+Lb~5x?zN1_D)(=r z-UM6=Mitr@UInYux@y7+bo!(I$<4Bn!Xjqf#+iM7DBgEhZ?R|HF_2MfuT8sg3JWH> zzstYTd>7yxaQL7C;b@JB+0F0heY;k-h}q<4bF7h1^OgfwzXcO{Y@bKW4&kthW^WH{ z#V0u^-~Zs?fVpP@X1ACV!2LzKC*3&o3>rDk*kt@@%*VI?#m5hZFyWW2eUIs&i)||w z7!mlx_5B*N#ScDzJVcCxXHVFE(AXLn=&SBbBXr7pe`_091+SmM`!p(^S7$SjLy*{` zs}`A=sbc@6%c9*J8;_GLUefdF)Pc3J<)4 zwvQkNn+>bRZj{;y>#AQ3rXV)TksKms;S4$hOtn<}--%ZynSGw?K)K>MO|l+>6(8f` z7_mDu^}2OtQ= z=ksL}kd~!E*#Z-A7~?gfkbvV@50>Gvq&`n_Sq z=2Z0KLa%VyquBvu0hR2HPr>?qFWLtEEre!o;+kS=KY0?~>bq19Q_Av9V7-kfj=rLB zKv$29Y?vSJJuwcdc<1)ZtvehHyC8k6fzyY~8Dtcv~lO&6gLE>~KILW647 zkyR18+E;_S?%$6QW%`IPr`zRO@c8^8s)aWe^?sGWS)3gm3t!9=IIMpr)coN|#H>=w z?2s?u(k%|C+3O^ah}rD4TZY39#7((BduQ-G`gvZ5>nTqkckOS>>Umn+@PUn3Uy41^^J5Lqno9w(f@d#mGu(R`3 zcjxG-G)@LX#rG=ola_(|?^E*kNJp)8NS2+LYP+47Je6!tr?6+sZh3B!#TD7UQUXel zjN{?nOSxt@s!ztFI#(_1KVxfqvLhv3ScggkR{z7&(BB+eoK?lOb2c?W!)lEOuPo%Q zH-n!Whq3X7zyn<)W@T6`{;2}XGSE?Ie~HL>EW_V@DLKzb|B5pJ>8>1L!y`0VZJQ@` zeR6>_J7N{SZiqPovSFz5kz3$1Sb`>?bQoJ}@uxq@Pmxr-PnZ16i^2<(TK5{P5>W=3e?_e%@X1BUC3*PiHlAuG-OkBU&9wb z?Uwo!IC9(LU(^CBt-APum-I%y@Jw+;o+bIjd~bCAkTKqL_t=MMIayt41>umRJ<_;( zvU@!8??(mOL(y%S!39_3ezpO*0hdvGHEgih-Iig#C~6nt282Xq@rha{Z3JMTnOKBE zywr)cOpa%_h&RNRxYu?5SD}vL3vE}k z?#a>r8xQPwfXRRJ&d`}Ie5=1--G^KhHvm2-uTHyhxD-^+g4T|ht#Wuw<5y5tnEPXM z=VNo4nG&w8SZ?>?XK%1K;1IVL^C`4%gcrCK)UNj;R3jRSqmCR`hE%7zW+XL{R>BHYkqBW1kb`GcdHuaD`X0K9;VV~C&n9c$2(lj zPFN2k8MS_Lt?h*FDn8u4o1ZsC-xjp+rf6z?z@vRx!M_?I>aH~c1iXrR=yMFp8-_L{4^)eoA$hb7B84Cd zcX4!rwZCb)u{L=;@h|S+WEgo5N-jwrARpR#3rtwVObeH7`uxh*nh2nJB{YEy;rY}2 zR72l4jw~m`S^0F+J&UP*K$QW%uTtm1nYDLZc4)e;Iui3TTz&s%p0dH4N67<2cfnyv z&UT$wTQzsUtB?B(nE3YY-m~gU@lKRXkxwJ8snl&|7R!G({qI^rviZ+Q)QctFS6$B^ znf!JwX5n=A*(i)>XncZMi6u9>a3$H-$;qy6%)T$l*4p+!`nkr@=+qKMp>`LYR2_Fv z4w^Gpw0o1DIxWEFXCvueIK<3dW6`9vxoW`C6{HSBQ0AoHXxy(+fH!0jF@f)FUr(CeR zq}0MI)lRUT?6HjW)!%Z86ixcS1&vhtR{(LwuaZisn(*VElK)n_obI{R`;~;`_UE;L zhU-A7jvl<2>-={qgzn^!Z~~x)mM_@a(F1}7MduwolFUm6VK=zJ1VQKzq;{jSrq*cW zApIA|0Z{Uct}A&ZS`!PkG8^tK!<+$_F`VKeS-}5Uy5H>g63*u7OvXHmesD}*kDr*8 zyGxqZ`cNs=F1cdr<&9gWc^Nd!rqN;19#-Q<7FL1;Ci%hz&ALq@ef~_qO`Hz6R`+j^5nABz_(synT?EdRX9UcCMh-%H5;^VTit8Xk(;A1`rT%>_Q~v2%9yVFR0o_Z^>olCXl{=0R+4Q z)|fQSczHtJdS?QAO2$`|@zoq0#`)Jzj>%N==pA=CBt(3o$;XdkZVmB{Cq9kF{|efp zFy>$Oz0Ba(4AortK?dtYgUr`O)=oks*FrZ(GfedVMwWm&C|V^xky~8?E4DAojPx|O zl|F8cixVWZ1~_RUAv}6_Z1kk3A-wASLWCdS;~2h;fL{n35hH`^VK>L(bu00`Z6}}0h%ra8DDdF?1Z!W?(Dz5S@CddE;U;2|kC80% zN=Kk3SD=#g$i)43Am7vJ9-jC}q;dmJ_!BnlU$H1Wnq-VLD!7>p@Nj)gPlSu}_@fEA1BDP{$Wg;)P`5Lx|jM-`f{nL34w(`%obq=(qFtw{fqgL031}Iz2cfxtM_wzYxQy(}Q*Tjj$2>zx>ASr1sKk@$W!X zJQ@nZ8nco|q;^)@nK!kwLuKB8w@S4;3X#kUi^D=M516gV|79xHUp=3^XHlQr&Y&Zn zsl=>r(CnlKV=6}ax*oLK2`hcH6TU1a^56tx7$-jg9~ZPyWsI}3&W9xk$K5WNv3!I3%q)LcWJ2G24|J8;a{oLjZD%YGA?DI zjJ9hanc_#5EFm#}MOO7wi9aq;&Sju~oGkT1V^;ohBi;jPWjW{~TOjjDBhVZ;`^kK! z0O2!3H}&&kYH&!EFfN;^i*k?URP*v#={<@%jnrYlZBa+0X8>MTN1lT`KLa~7$qXef zsz7UiOw&7Yw>gzqd}+~(%Omb`%*-3Yr)Ot@z`t*!B8@?|7=in<0#AD{Dfo4A@gGBD zbm0HldliA#779dP9`U)?N8eHEljIq6Xstq(fKMXx!bc#sUKGUgt@CRo2`&zC{RiHwC;JKqP!s2vW9qOiftGD;0J$<4NvE$?d8Uh*8(rnHhI*Co=M}pVi^Cp za{jz?GkOV-S-5+1;e93BhYfq9-Be=WPsu-rf#&MTAHM35o-)#Yz8tX%xF&F5M@2PL z#Gq)6!e%jU&lnT+FQYmA+gh3M4 zlk);GB1+QRUqzgH?&v&f=LK{`tP+Yd9l!o~;B)kQ)s+;;wV2w$mHcc3D;8h=T(%n{ zO4Ay?(+y%qJHxCYQ*9^Q>XWTdaDrB2c*sp4@p#YTQrzaD4G(q0IwJqwl57e$hxt?0 zj!ktJPunV|5A@$HsIWW4B+Q-lAQWg?D_8t^Mc+WJ;9S=!WTCUAaRaU-11<#pX-V86 zPZPj4oFtLlVE*D+|CLu*=_6ZyXs=FY+%C{u`P~OOBtL&!AMZvJcnW-Fh4pxpTnv(@ zXcg;qJ=}zB0jDdOM?3z1;oI&qME9KYs_Um~1ZrTcu}>Gpv-@r*^9V-MSbvu;Fu9De zZ+KibC`h}k(9nzdvveMHGO%Ln_*3gXe(xiTWFXDbf>Md!$mDu$VZy5pS68LDK;VBG z@$9(?lL8b3^|J)R-j#gujRuXC$!&X7^@azCp+jKZAj_m0r~fZ~J*Y2y!G%q`7=anp Sj{+ZOg49)YRBDxNBmN&WwepPs literal 0 HcmV?d00001 diff --git a/backend/open_webui/main.py b/backend/open_webui/main.py index c3ccf2547f..adcf521eae 100644 --- a/backend/open_webui/main.py +++ b/backend/open_webui/main.py @@ -2087,6 +2087,11 @@ async def healthcheck_with_db(): app.mount("/static", StaticFiles(directory=STATIC_DIR), name="static") +@app.get("/favicon.png") +async def get_favicon(): + return FileResponse(os.path.join(STATIC_DIR, "favicon.png")) + + @app.get("/cache/{path:path}") async def serve_cache_file( path: str, diff --git a/backend/open_webui/static/site.webmanifest b/backend/open_webui/static/site.webmanifest index 95915ae2bc..b462eaa6dd 100644 --- a/backend/open_webui/static/site.webmanifest +++ b/backend/open_webui/static/site.webmanifest @@ -1,6 +1,6 @@ { - "name": "Open WebUI", - "short_name": "WebUI", + "name": "CyberLover", + "short_name": "Lover", "icons": [ { "src": "/static/web-app-manifest-192x192.png", diff --git a/package-lock.json b/package-lock.json index 4b3183e318..8048e6c14d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -63,6 +63,7 @@ "idb": "^7.1.1", "js-sha256": "^0.10.1", "jspdf": "^3.0.0", + "jszip": "^3.10.1", "katex": "^0.16.22", "kokoro-js": "^1.1.1", "leaflet": "^1.9.4", @@ -97,6 +98,7 @@ "vega-lite": "^6.4.1", "vite-plugin-static-copy": "^2.2.0", "y-prosemirror": "^1.3.7", + "y-protocols": "^1.0.6", "yaml": "^2.7.1", "yjs": "^13.6.27" }, @@ -108,6 +110,7 @@ "@tailwindcss/container-queries": "^0.1.1", "@tailwindcss/postcss": "^4.0.0", "@tailwindcss/typography": "^0.5.13", + "@types/jszip": "^3.4.0", "@typescript-eslint/eslint-plugin": "^8.31.1", "@typescript-eslint/parser": "^8.31.1", "cypress": "^13.15.0", @@ -159,6 +162,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -189,22 +193,6 @@ "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@asamuzakjp/css-color": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz", - "integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@csstools/css-calc": "^2.1.3", - "@csstools/css-color-parser": "^3.0.9", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "lru-cache": "^10.4.3" - } - }, "node_modules/@azure/msal-browser": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.5.0.tgz", @@ -248,7 +236,7 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.2.2.tgz", "integrity": "sha512-UNtPCbrwrenpmrXuRwn9jYpPoweNXj8X5sMvYgsqYyaH8jQ6LfUJSk3dJLnBK+6sfYPrF4iAIo5sd5HQ+tg75A==", - "devOptional": true, + "dev": true, "license": "(Apache-2.0 AND BSD-3-Clause)" }, "node_modules/@chevrotain/cst-dts-gen": { @@ -667,131 +655,6 @@ "node": ">=0.1.90" } }, - "node_modules/@csstools/color-helpers": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.2.tgz", - "integrity": "sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT-0", - "optional": true, - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@csstools/css-calc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", - "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "node_modules/@csstools/css-color-parser": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.10.tgz", - "integrity": "sha512-TiJ5Ajr6WRd1r8HSiwJvZBiJOqtH86aHpUjq5aEKWHiII2Qfjqd/HCWKPOW8EP4vcspXbHnXrwIDlu5savQipg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@csstools/color-helpers": "^5.0.2", - "@csstools/css-calc": "^2.1.4" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", - "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "node_modules/@csstools/css-tokenizer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", - "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=18" - } - }, "node_modules/@cypress/request": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.5.tgz", @@ -2000,6 +1863,7 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -2013,6 +1877,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, "engines": { "node": ">=6.0.0" } @@ -2021,6 +1886,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, "engines": { "node": ">=6.0.0" } @@ -2034,6 +1900,7 @@ "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -2471,6 +2338,7 @@ "version": "1.0.0-next.28", "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz", "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==", + "dev": true, "license": "MIT" }, "node_modules/@popperjs/core": { @@ -2869,6 +2737,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.5.tgz", "integrity": "sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ==", + "dev": true, "license": "MIT", "peerDependencies": { "acorn": "^8.9.0" @@ -2914,6 +2783,7 @@ "version": "2.22.4", "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.22.4.tgz", "integrity": "sha512-BXK9hTbP8AeQIfoz6+P3uoyVYStVHc5CIKqoTSF7hXm3Q5P9BwFMdEus4jsQuhaYmXGHzukcGlxe2QrsE8BJfQ==", + "dev": true, "license": "MIT", "dependencies": { "@sveltejs/acorn-typescript": "^1.0.5", @@ -2951,6 +2821,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.1.1.tgz", "integrity": "sha512-rimpFEAboBBHIlzISibg94iP09k/KYdHgVhJlcsTfn7KMBhc70jFX/GRWkRdFCc2fdnk+4+Bdfej23cMDnJS6A==", + "dev": true, "dependencies": { "@sveltejs/vite-plugin-svelte-inspector": "^2.1.0", "debug": "^4.3.4", @@ -2972,6 +2843,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-2.1.0.tgz", "integrity": "sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==", + "dev": true, "dependencies": { "debug": "^4.3.4" }, @@ -3385,23 +3257,6 @@ "lowlight": "^2 || ^3" } }, - "node_modules/@tiptap/extension-collaboration": { - "version": "3.4.5", - "resolved": "https://registry.npmjs.org/@tiptap/extension-collaboration/-/extension-collaboration-3.4.5.tgz", - "integrity": "sha512-JyPXTYkYi2XzUWsmObv2cogMrs7huAvfq6l7d5hAwsU2FnA1vMycaa48N4uekogySP6VBkiQNDf9B4T09AwwqA==", - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^3.4.5", - "@tiptap/pm": "^3.4.5", - "@tiptap/y-tiptap": "^3.0.0-beta.3", - "yjs": "^13" - } - }, "node_modules/@tiptap/extension-document": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-3.0.7.tgz", @@ -3644,21 +3499,6 @@ "@tiptap/suggestion": "^3.0.9" } }, - "node_modules/@tiptap/extension-node-range": { - "version": "3.4.5", - "resolved": "https://registry.npmjs.org/@tiptap/extension-node-range/-/extension-node-range-3.4.5.tgz", - "integrity": "sha512-mHCjdJZX8DZCpnw9wBqioanANy6tRoy20/OcJxMW1T7naeRCuCU4sFjwO37yb/tmYk1BQA2/L1/H2r0fVoZwtA==", - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^3.4.5", - "@tiptap/pm": "^3.4.5" - } - }, "node_modules/@tiptap/extension-ordered-list": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-3.0.7.tgz", @@ -3725,20 +3565,6 @@ "@tiptap/core": "^3.0.7" } }, - "node_modules/@tiptap/extension-text-style": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@tiptap/extension-text-style/-/extension-text-style-3.0.7.tgz", - "integrity": "sha512-naJ1XxlbFJ1qlpA+i54lQYKuhWP1dnkUslM86OT0TZt0zJBeu7LIrqSOVGmMB++lF/btnQLMnYkYSSnkLgIw3A==", - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^3.0.7" - } - }, "node_modules/@tiptap/extension-typography": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@tiptap/extension-typography/-/extension-typography-3.0.7.tgz", @@ -3872,31 +3698,11 @@ "@tiptap/pm": "^3.4.2" } }, - "node_modules/@tiptap/y-tiptap": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@tiptap/y-tiptap/-/y-tiptap-3.0.0.tgz", - "integrity": "sha512-HIeJZCj+KYJde2x6fONzo4o6kd7gW7eonwhQsv2p2VQnUgwNXMVhN+D6Z3AH/2i541Sq33y1PO4U/1ThCPjqbA==", - "license": "MIT", - "peer": true, - "dependencies": { - "lib0": "^0.2.100" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=8.0.0" - }, - "peerDependencies": { - "prosemirror-model": "^1.7.1", - "prosemirror-state": "^1.2.3", - "prosemirror-view": "^1.9.10", - "y-protocols": "^1.0.1", - "yjs": "^13.5.38" - } - }, "node_modules/@types/cookie": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==" + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", + "dev": true }, "node_modules/@types/d3": { "version": "7.4.3", @@ -4165,6 +3971,16 @@ "@types/unist": "*" } }, + "node_modules/@types/jszip": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@types/jszip/-/jszip-3.4.0.tgz", + "integrity": "sha512-GFHqtQQP3R4NNuvZH3hNCYD0NbyBZ42bkN7kO3NDrU/SnvIZWMS8Bp38XCsRKBT5BXvgm0y1zqpZWp/ZkRzBzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "jszip": "*" + } + }, "node_modules/@types/linkify-it": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", @@ -4649,18 +4465,6 @@ "node": ">=0.4.0" } }, - "node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 14" - } - }, "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -4806,6 +4610,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, "dependencies": { "dequal": "^2.0.3" } @@ -4898,6 +4703,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", + "dev": true, "dependencies": { "dequal": "^2.0.3" } @@ -5173,7 +4979,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/buffer-builder/-/buffer-builder-0.2.0.tgz", "integrity": "sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==", - "devOptional": true, + "dev": true, "license": "MIT/X11" }, "node_modules/buffer-crc32": { @@ -5706,6 +5512,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", + "dev": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15", "@types/estree": "^1.0.1", @@ -5718,6 +5525,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, "dependencies": { "@types/estree": "^1.0.0" } @@ -5825,7 +5633,7 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz", "integrity": "sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/colors": { @@ -5894,6 +5702,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -5914,8 +5723,7 @@ "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, "node_modules/cose-base": { "version": "1.0.3", @@ -5985,6 +5793,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, "dependencies": { "mdn-data": "2.0.30", "source-map-js": "^1.0.1" @@ -6018,31 +5827,6 @@ "node": ">=4" } }, - "node_modules/cssstyle": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", - "integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@asamuzakjp/css-color": "^3.2.0", - "rrweb-cssom": "^0.8.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/cssstyle/node_modules/rrweb-cssom": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", - "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/cypress": { "version": "13.15.0", "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.15.0.tgz", @@ -6698,22 +6482,6 @@ "node": ">=0.10" } }, - "node_modules/data-urls": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", - "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/dayjs": { "version": "1.11.13", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", @@ -6736,15 +6504,6 @@ } } }, - "node_modules/decimal.js": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", - "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/deep-eql": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", @@ -6835,7 +6594,8 @@ "node_modules/devalue": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz", - "integrity": "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==" + "integrity": "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==", + "dev": true }, "node_modules/devlop": { "version": "1.1.0", @@ -7379,6 +7139,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz", "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==", + "dev": true, "license": "MIT" }, "node_modules/espree": { @@ -8126,7 +7887,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "devOptional": true, + "dev": true, "engines": { "node": ">=8" } @@ -8238,21 +7999,6 @@ "node": ">=12.0.0" } }, - "node_modules/html-encoding-sniffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", - "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "whatwg-encoding": "^3.1.1" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/html-entities": { "version": "2.5.3", "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.3.tgz", @@ -8321,22 +8067,6 @@ "entities": "^4.5.0" } }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/http-signature": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.4.0.tgz", @@ -8351,22 +8081,6 @@ "node": ">=0.10" } }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/human-signals": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", @@ -8493,11 +8207,17 @@ "node": ">= 4" } }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "license": "MIT" + }, "node_modules/immutable": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz", "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/import-fresh": { @@ -8715,15 +8435,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/is-reference": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", @@ -8774,8 +8485,7 @@ "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, "node_modules/isexe": { "version": "2.0.0", @@ -8827,73 +8537,6 @@ "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", "dev": true }, - "node_modules/jsdom": { - "version": "24.1.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.1.1.tgz", - "integrity": "sha512-5O1wWV99Jhq4DV7rCLIoZ/UIhyQeDR7wHVyZAHAshbrvZsLs+Xzz7gtwnlJTJDjleiTKh54F4dXrX70vJQTyJQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "cssstyle": "^4.0.1", - "data-urls": "^5.0.0", - "decimal.js": "^10.4.3", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^4.0.0", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.5", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.12", - "parse5": "^7.1.2", - "rrweb-cssom": "^0.7.1", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.4", - "w3c-xmlserializer": "^5.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^3.1.1", - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.0.0", - "ws": "^8.18.0", - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "canvas": "^2.11.2" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsdom/node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -8974,6 +8617,18 @@ "verror": "1.10.0" } }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "license": "(MIT OR GPL-3.0-or-later)", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, "node_modules/katex": { "version": "0.16.22", "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.22.tgz", @@ -9016,6 +8671,7 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, "engines": { "node": ">=6" } @@ -9130,11 +8786,20 @@ "url": "https://github.com/sponsors/dmonad" } }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, "node_modules/lightningcss": { "version": "1.29.1", "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.1.tgz", "integrity": "sha512-FmGoeD4S05ewj+AkhTY+D+myDvXI6eL27FjHIjoyUkO/uw7WZD1fBVs0QxeYWa7E17CUHJaYX/RUGISCtcrG4Q==", - "devOptional": true, + "dev": true, "license": "MPL-2.0", "dependencies": { "detect-libc": "^1.0.3" @@ -9166,6 +8831,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -9186,6 +8852,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -9206,6 +8873,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -9226,6 +8894,7 @@ "cpu": [ "arm" ], + "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -9246,6 +8915,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -9266,6 +8936,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -9286,6 +8957,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -9306,6 +8978,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -9326,6 +8999,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -9346,6 +9020,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -9363,7 +9038,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "bin": { "detect-libc": "bin/detect-libc.js" @@ -9482,7 +9157,8 @@ "node_modules/locate-character": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", - "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==" + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", + "dev": true }, "node_modules/locate-path": { "version": "6.0.0", @@ -9741,7 +9417,8 @@ "node_modules/mdn-data": { "version": "2.0.30", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true }, "node_modules/mdurl": { "version": "2.0.0", @@ -10015,6 +9692,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, "engines": { "node": ">=4" } @@ -10023,6 +9701,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -10107,15 +9786,6 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "node_modules/nwsapi": { - "version": "2.2.21", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.21.tgz", - "integrity": "sha512-o6nIY3qwiSXl7/LuOU0Dmuctd34Yay0yeuZRLFmDPrrdHpXKFndPj3hM+YEPVHYC5fx2otBx4Ilc/gyYSAUaIA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -10290,6 +9960,12 @@ "quansync": "^0.2.7" } }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "license": "(MIT AND Zlib)" + }, "node_modules/paneforge": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/paneforge/-/paneforge-0.0.6.tgz", @@ -10465,6 +10141,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", + "dev": true, "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^3.0.0", @@ -10475,6 +10152,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, "dependencies": { "@types/estree": "^1.0.0" } @@ -10483,6 +10161,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", + "dev": true, "dependencies": { "@types/estree": "*" } @@ -10578,6 +10257,7 @@ "version": "8.4.47", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "dev": true, "funding": [ { "type": "opencollective", @@ -10708,6 +10388,7 @@ "version": "3.3.8", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "dev": true, "funding": [ { "type": "github", @@ -10808,8 +10489,7 @@ "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/promise-map-series": { "version": "0.3.0", @@ -11251,7 +10931,6 @@ "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -11504,15 +11183,6 @@ "points-on-path": "^0.2.1" } }, - "node_modules/rrweb-cssom": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", - "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/rsvp": { "version": "4.8.5", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", @@ -11554,7 +11224,7 @@ "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "devOptional": true, + "dev": true, "dependencies": { "tslib": "^2.1.0" } @@ -11563,6 +11233,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, "dependencies": { "mri": "^1.1.0" }, @@ -11573,8 +11244,7 @@ "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 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/safer-buffer": { "version": "2.1.2", @@ -11652,7 +11322,7 @@ "version": "1.81.0", "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.81.0.tgz", "integrity": "sha512-uZQ2Faxb1oWBHpeSSzjxnhClbMb3QadN0ql0ZFNuqWOLUxwaVhrMlMhPq6TDPbbfDUjihuwrMCuy695Bgna5RA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@bufbuild/protobuf": "^2.0.0", @@ -11700,6 +11370,7 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11716,6 +11387,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11732,6 +11404,7 @@ "cpu": [ "ia32" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11748,6 +11421,7 @@ "cpu": [ "riscv64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11764,6 +11438,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11780,6 +11455,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11796,6 +11472,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11812,6 +11489,7 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11828,6 +11506,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11844,6 +11523,7 @@ "cpu": [ "ia32" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11860,6 +11540,7 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11876,6 +11557,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11892,6 +11574,7 @@ "cpu": [ "ia32" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11908,6 +11591,7 @@ "cpu": [ "riscv64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11924,6 +11608,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11940,6 +11625,7 @@ "cpu": [ "riscv64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11956,6 +11642,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11972,6 +11659,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11988,6 +11676,7 @@ "cpu": [ "ia32" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -12004,6 +11693,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -12017,7 +11707,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -12029,21 +11719,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/saxes": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=v12.22.7" - } - }, "node_modules/semver": { "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", @@ -12058,7 +11733,8 @@ "node_modules/set-cookie-parser": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", - "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==" + "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==", + "dev": true }, "node_modules/set-function-length": { "version": "1.2.2", @@ -12077,6 +11753,12 @@ "node": ">= 0.4" } }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT" + }, "node_modules/sharp": { "version": "0.33.5", "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", @@ -12181,6 +11863,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.0.tgz", "integrity": "sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==", + "dev": true, "license": "MIT", "dependencies": { "@polka/url": "^1.0.0-next.24", @@ -12271,6 +11954,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -12359,7 +12043,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -12530,6 +12213,7 @@ "version": "4.2.19", "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.19.tgz", "integrity": "sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==", + "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.1", "@jridgewell/sourcemap-codec": "^1.4.15", @@ -12610,6 +12294,7 @@ "version": "0.16.0", "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.16.0.tgz", "integrity": "sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==", + "dev": true, "engines": { "node": "^12.20 || ^14.13.1 || >= 16" }, @@ -12692,6 +12377,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, "dependencies": { "@types/estree": "^1.0.0" } @@ -12700,6 +12386,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", + "dev": true, "dependencies": { "@types/estree": "*" } @@ -12714,15 +12401,6 @@ "node": ">=12.0.0" } }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/symlink-or-copy": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/symlink-or-copy/-/symlink-or-copy-1.3.1.tgz", @@ -12733,7 +12411,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/sync-child-process/-/sync-child-process-1.0.2.tgz", "integrity": "sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "sync-message-port": "^1.0.0" @@ -12746,7 +12424,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/sync-message-port/-/sync-message-port-1.1.3.tgz", "integrity": "sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=16.0.0" @@ -12955,6 +12633,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -12984,21 +12663,6 @@ "node": ">= 4.0.0" } }, - "node_modules/tr46": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", - "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "punycode": "^2.3.1" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/ts-api-utils": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", @@ -13188,8 +12852,7 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/utrie": { "version": "1.0.2", @@ -13225,7 +12888,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/vega": { @@ -13734,6 +13397,7 @@ "version": "5.4.19", "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.19.tgz", "integrity": "sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==", + "dev": true, "license": "MIT", "dependencies": { "esbuild": "^0.21.3", @@ -13837,6 +13501,7 @@ "cpu": [ "ppc64" ], + "dev": true, "optional": true, "os": [ "aix" @@ -13852,6 +13517,7 @@ "cpu": [ "arm" ], + "dev": true, "optional": true, "os": [ "android" @@ -13867,6 +13533,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "android" @@ -13882,6 +13549,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "android" @@ -13897,6 +13565,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "darwin" @@ -13912,6 +13581,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "darwin" @@ -13927,6 +13597,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "freebsd" @@ -13942,6 +13613,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "freebsd" @@ -13957,6 +13629,7 @@ "cpu": [ "arm" ], + "dev": true, "optional": true, "os": [ "linux" @@ -13972,6 +13645,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -13987,6 +13661,7 @@ "cpu": [ "ia32" ], + "dev": true, "optional": true, "os": [ "linux" @@ -14002,6 +13677,7 @@ "cpu": [ "loong64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -14017,6 +13693,7 @@ "cpu": [ "mips64el" ], + "dev": true, "optional": true, "os": [ "linux" @@ -14032,6 +13709,7 @@ "cpu": [ "ppc64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -14047,6 +13725,7 @@ "cpu": [ "riscv64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -14062,6 +13741,7 @@ "cpu": [ "s390x" ], + "dev": true, "optional": true, "os": [ "linux" @@ -14077,6 +13757,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -14092,6 +13773,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "netbsd" @@ -14107,6 +13789,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "openbsd" @@ -14122,6 +13805,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "sunos" @@ -14137,6 +13821,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "win32" @@ -14152,6 +13837,7 @@ "cpu": [ "ia32" ], + "dev": true, "optional": true, "os": [ "win32" @@ -14167,6 +13853,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "win32" @@ -14179,6 +13866,7 @@ "version": "0.21.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -14216,6 +13904,7 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", + "dev": true, "peerDependencies": { "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" }, @@ -14467,21 +14156,6 @@ "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==" }, - "node_modules/w3c-xmlserializer": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", - "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/walk-sync": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/walk-sync/-/walk-sync-2.2.0.tgz", @@ -14520,18 +14194,6 @@ "node": "*" } }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, - "license": "BSD-2-Clause", - "optional": true, - "peer": true, - "engines": { - "node": ">=12" - } - }, "node_modules/whatwg-encoding": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", @@ -14555,22 +14217,6 @@ "node": ">=18" } }, - "node_modules/whatwg-url": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", - "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "tr46": "^5.1.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/wheel": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wheel/-/wheel-1.0.0.tgz", @@ -14718,27 +14364,6 @@ } } }, - "node_modules/xml-name-validator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", - "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/xmlhttprequest-ssl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", @@ -14785,7 +14410,6 @@ "resolved": "https://registry.npmjs.org/y-protocols/-/y-protocols-1.0.6.tgz", "integrity": "sha512-vHRF2L6iT3rwj1jub/K5tYcTT/mEYDUppgNPXwp8fmLpui9f7Yeq3OEtTLVF012j39QnV+KEQpNqoN7CWU7Y9Q==", "license": "MIT", - "peer": true, "dependencies": { "lib0": "^0.2.85" }, diff --git a/package.json b/package.json index 6d0aa8f5d5..c707083c44 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "@tailwindcss/container-queries": "^0.1.1", "@tailwindcss/postcss": "^4.0.0", "@tailwindcss/typography": "^0.5.13", + "@types/jszip": "^3.4.0", "@typescript-eslint/eslint-plugin": "^8.31.1", "@typescript-eslint/parser": "^8.31.1", "cypress": "^13.15.0", @@ -107,6 +108,7 @@ "idb": "^7.1.1", "js-sha256": "^0.10.1", "jspdf": "^3.0.0", + "jszip": "^3.10.1", "katex": "^0.16.22", "kokoro-js": "^1.1.1", "leaflet": "^1.9.4", @@ -141,6 +143,7 @@ "vega-lite": "^6.4.1", "vite-plugin-static-copy": "^2.2.0", "y-prosemirror": "^1.3.7", + "y-protocols": "^1.0.6", "yaml": "^2.7.1", "yjs": "^13.6.27" }, diff --git a/src/lib/components/chat/Settings/DataControls.svelte b/src/lib/components/chat/Settings/DataControls.svelte index 3aef3b1c62..c7b9d13905 100644 --- a/src/lib/components/chat/Settings/DataControls.svelte +++ b/src/lib/components/chat/Settings/DataControls.svelte @@ -20,6 +20,7 @@ getPinnedChatList } from '$lib/apis/chats'; import { getImportOrigin, convertOpenAIChats } from '$lib/utils'; + import { extractChatsFromFile } from '$lib/utils/chatImport'; import { onMount, getContext } from 'svelte'; import { goto } from '$app/navigation'; import { toast } from 'svelte-sonner'; @@ -41,22 +42,25 @@ $: if (importFiles) { console.log(importFiles); - let reader = new FileReader(); - reader.onload = (event) => { - let chats = JSON.parse(event.target.result); - console.log(chats); - if (getImportOrigin(chats) == 'openai') { - try { - chats = convertOpenAIChats(chats); - } catch (error) { - console.log('Unable to import chats:', error); - } - } - importChats(chats); - }; - if (importFiles.length > 0) { - reader.readAsText(importFiles[0]); + extractChatsFromFile(importFiles[0]) + .then((chats) => { + console.log(chats); + if (getImportOrigin(chats) == 'openai') { + try { + chats = convertOpenAIChats(chats); + } catch (error) { + console.log('Unable to import chats:', error); + toast.error($i18n.t('Failed to convert OpenAI chats')); + return; + } + } + importChats(chats); + }) + .catch((error) => { + console.error('Import error:', error); + toast.error($i18n.t(error.message)); + }); } } @@ -134,7 +138,7 @@ bind:this={chatImportInputElement} bind:files={importFiles} type="file" - accept=".json" + accept=".json,.zip" hidden />