From 7567e53a851a3095d60d1e695fb2f8386c5b9b00 Mon Sep 17 00:00:00 2001 From: Vomitblood Date: Tue, 6 Aug 2024 21:47:34 +0800 Subject: [PATCH] changed config format from json to toml --- .prettierrc | 18 + .tool-versions | 2 + bun.lockb | Bin 170480 -> 170176 bytes package-lock.json | 5030 +++++++++++++++++++++ package.json | 4 +- src-tauri/Cargo.toml | 2 +- src-tauri/tauri.conf.json | 7 + src/components/Generic/Initialization.tsx | 20 +- src/contexts/SettingsContext.tsx | 55 +- src/lib/defaultSettings.ts | 14 - src/lib/lowDB.ts | 53 - src/lib/path.ts | 88 + src/lib/settings.ts | 43 + src/lib/store/zustand/path.ts | 93 - src/lib/testing.ts | 5 + src/lib/utils/json.ts | 21 + src/lib/utils/toml.ts | 22 + src/pages/_app.tsx | 20 +- src/pages/testing.tsx | 48 +- 19 files changed, 5333 insertions(+), 212 deletions(-) create mode 100644 .prettierrc create mode 100644 .tool-versions create mode 100644 package-lock.json delete mode 100644 src/lib/defaultSettings.ts delete mode 100644 src/lib/lowDB.ts create mode 100644 src/lib/path.ts create mode 100644 src/lib/settings.ts delete mode 100644 src/lib/store/zustand/path.ts create mode 100644 src/lib/testing.ts create mode 100644 src/lib/utils/json.ts create mode 100644 src/lib/utils/toml.ts diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..794bbbd --- /dev/null +++ b/.prettierrc @@ -0,0 +1,18 @@ +{ + "arrowParens": "always", + "bracketSameLine": false, + "bracketSpacing": true, + "endOfLine": "lf", + "htmlWhitespaceSensitivity": "css", + "jsxBracketSameLine": false, + "jsxSingleQuote": true, + "printWidth": 120, + "proseWrap": "preserve", + "quoteProps": "consistent", + "semi": true, + "singleAttributePerLine": true, + "singleQuote": false, + "tabWidth": 2, + "trailingComma": "all", + "useTabs": false +} \ No newline at end of file diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 0000000..e24ef3b --- /dev/null +++ b/.tool-versions @@ -0,0 +1,2 @@ +bun 1.1.21 +nodejs 20.6.1 diff --git a/bun.lockb b/bun.lockb index 861244558967d3a43c81036245c671a5690b40fc..3b9fabc2ceb57cd32ccb8976b5229ba28d323403 100755 GIT binary patch delta 32466 zcmeIbdz_9{_s4(l+uY1G490oPFvj^b!(a@Cxs6lC?KE;qr3S+&48}2P##3Z;kalc3 zQjv62dFY_1$XSz!lu*hcMF)}M_g>e5si&Ur^LxF1uh;LN?w8N3z1CiP@3q!GUiWpm zuQRVkY*-!fKw_g05=ZQMX6XFYHI|kb*reo*o!=gMtWC}j-M)V3y*bY<`SE1==8OG4 z`8>5?P+Y!wT-l7zmp3VQ;v~|yP0pK?HEx72nvAMGU%|xetl=Wx2VVxh1*I+Mr^tjB zx%8wfAD2B%)O};Ze7@@B_j74mXf%8+mxe>D+ep23;(ZgscA9-o=CqpBkrLao)G4NvG_}sin!}IcdU&BPge+Cu3aarSX^%zwq z{~I`IU`+0ath^kb@0Q$2S)-}=T~H4B8mJU3M5zX}IlSoiMi>R9@=4RjXZyw>jDa5v z6$ctXr6D_l38V8qEbG)W7b*s}C!b_~!CqRah@gifC`f{e!rSGY2-I*Zs_0U$!r^1` zreTZkdGsovkL^-n0p^Suo#*qdL|7UAVW`OOb?HnfMGBrozoIYSSD;CVr&HVt8dFNT zVh!F-fk(iz}b_}-p`Ve1fpes}wOo(+1Di4*e z$(}edcVa^JwAwII?lO8}@JsOGv8w6w)rJnw$r^Jj^@*W3ilv*$a1BTpIVNk=oA6S> zAFR>p64f9jNH7gi>KaBbRQd@5KFO*d3xm)1 zMH5HctIexrbY9lPiCNQqV@Ho0J$5w9h^sf0GSXW;p)wq@nYrU8v7|Kj`S7S<9h7(% zJnYc?g7ze2yyQd0|6MJdXijP7xG}k<GO>mlRFGseCLr%{%NSVKYHBAF{4N6&4KDsLsA?OgJII7>=C|LeKt_FQMERX zVJDyxq2#u%A@EXB8Mi@8CzWiF-!IiMH#=|q#O!RJZ=1_!4bPp(Aope6A`{N%ThZQG zDj$T(VEhg@rI#j89G!4Wp3gUa^0?{4b4O(V?#d5C#odpgV#OAhCIuZg8$vBvSk{vv ze!b$-(Rm5B>%%)biqE+6sX3#E%i=LQFMAqx`o1B*9Od3fcLu=ttVuZuw`Na&41I~W zcIoS#9KO)y2X}VDFeZBn{?Yrr5lDelmv)6>S;2_x?D4FKzI?afSUsy$T>jTx9di%5 zbbP{?+~HZ1P#wc~n&dm!&B@Qsn=mFN99!?xLK#601 z!CDex-Yt2#;}{aYyzH@4vM2g{3CLw4L^FcRLB~NwFB~e%i#H+4^>Vhd^-vk;F}EwTeo-6=4{hg6?2z@cM*#Kvu*Z`G=_n#q7#qwp)GSIuB($H;CDOZ-oM&#q+rQ8sxlcyVwORJN+MP>Jjis2E&1oA^tEnFuWCGt5Ns;51bDVH2~4 zXR{iNU;z{PDyUTO8&vYgW=|ZI-NNVdCVL|FNPUyC#%B#1lkMAtfwDN>>C$1NeZIQz zb)a$3($z?ahhIX)qARPdPAXkB|K(eqkuhTQM0*j*8)F}qe4Ws)g?10BmD1kYI%BNU z{2r)`sPQhnew=GAo5c96ygaX!QRG|b4bFASg`kn}?Z(^k{DQ9#h*>8PNMH{^rD9j% zKNclVf6hcFPM*HEwYS7zsiy{1M#zv!PJDVnrQv3i9fvyFJd-nlL`5=^rZ^*DK2!=` zaQTO(I+mYvoJazxs0$JXjSMSXcV-%TYnj7S@`VRoO(7x?aBED z35mdSP#MGXXE+sPP0LPTOUb^(=#YXxLB)V`368&#cTlwDdnyk6fA zj@N(lhud{d^`+`dZN&stbDhE8r*t8IkLs;4!9c3t=WC~TCZq-?+o@hnQv)xNO4awp zq^civVQkQ!T0(D&O$)3H^Z5qpow2Eb%U4nZ13upXeP7M?VRk|?eIju?L+Nu|{o@QLProIxoC@v-NDclg< zt8S`lrMK1#Dy^;hLI3Avb&vXKR#p0%-Mt`8FQDn`^w#=8Wwg~G=s#Xg_h^u&QgmU1 zU|?c-yVbg>fsaV_l-dF{8O&|$dI##lhQYx7@NFgb)(51TQ>kAn4g3PvUG%IV3u*`C zrFCZg6l*1ZUR_`iWNE0Eva1-ZGnxkjg={nSxV7FRCH)@IL_no! zD=BErjrIA4AtQD~)gRGN|Y>^tM!_*roDOISq zwg~z^uBjthrm4C*qh-*_VV+7w42gskYbl&m1XsU}iqjFT(ySC_wmS&pQmj0eo5L`Q3iwFf4z;)Jv^rytT>jFrWEw+qGl<95L`PQ**evFg_Lvva>9G5j-Hp278qDpT90gy8hDOWdpq?F zDco+5%9t%|6SO{M5$i`mr88TmSWW9QMr^yNUQN*%ZG+ZcWZi5H30_^jwQVpkkSm{% zX5moFbVj?N^6SEOL8}c{PvVubJ937$QiFl_k#*DewM(@!8~J=)yj*MH6^@~99e|U# z2E;9^YGa?TFC5O0HwsQBC6P-=QIF}Z?SuZkjder^qS3?&s-rj=PP&R-ZjoZW0N28) zgep(Mxg&rP(@!~l6w~WjxL)>B z)J9t!gVsf6>qN&kEFGJ~%6Nr)7fvD@CKFRN(^h&=-L5mz8Qj>FX`2?+A;n5<>5T=6 z`CZ!T6byWcti2dz#WB;bMr}BpO!hFH*)ApUJX{}pA-qVcJMxlt#Cjz=HkXj;VHLuW z&6s6+`PV1wh%RYXI1!Zs&T#AtCoVf7zF%+c60|lWlVWyf27ZNWZm%niQzRA1YL!h& zN--I5{wX+=;Fy1b18_kd8BA48bYZukHI$B#Tv}+Kq8`%LHNn8o$U55Qci}S88Dddg zQmlD!L3CLU7?NAzWJ39MX1_M!3@>+Op~-1*QYmY2ZB`vP>3(N0d<`e&2gDpzU1wwj z)%CiNzl-$NjG(nA)rmSIu1Sh)l0AZIxGwAwv^LP)H`w*a>J_W4P|zB~>MI7?8-w)< zoYWnrqe3ax*Kkg|;&@FW(oF(ojUXjGN8CHevR2rWy&+9+>zT&9@CFr&gf$foYo$|J zGFHQ->B!Vn>w8HdFDV^oB@hJ1Ss65A;bd6aJB9TuoM^II4rvpf?hSk?*69i->(?YW z@xxvwtPkKi!8vQ2MN<5r1Bq=qoHXFG$I$IA=ZvrST#ne)O7UOrq__1=vvN8+BZ{iK zqy%1uW0Ztat;3|8ii#MFu|z~T#sNFoU^wv{E;c3bAY5zl+`pxZj_8;c_+7H?Sf+IK zY!feX;Up9c5JIus<*+6pC2$rl&0cYv;iwZnDKi#MytB2e<#1Aiy+c`FyP7^3M}fN6 zh#4FdtRbXi31J4a65I=iK?FIIe*O@yjonT-^GMpUyU*$dM|j*(I2X=wH!3y7dLQl< z@`!gviW;e{K|yOG%Pl4&%WRh7-_b+Q82_qYBu-@6OeK-m9+`XV>Y;aH=WfY$YHgolS%bXrP;1~CxSo1v zmsE~^88-*5{qU%}tt1ZiI9dMgf^#BBN&km~b&ssHK-23azP++iS=P5^1q1uwyV*gE z9pdwtQdA>t zjR;!fh?YC}aAp-8fusX3kzype)2G{w&iZP1pfv|h!pg`abUWY}2n4M9P+6-9g*Akf zQ!5(QA~?rFar@*@J#S>1)$t~;Zob|3Q?7DEa|@i9 z=!~lJSw7!T+w^gy2(%-&Hp4mfWoD&V6^1z@j@nsTZibUd!@RmNMLnnsM+dDl$Yg-A zXtG~49Db$$I3g~9bH=NTr!U}~;Icbd%|!7d zEAkjKY&&^yvh1Kq3#;MeV8C|QEyem3&KX700nKydP+{~nL%uL?NY2&ZeF;(_l_7} zydNHiW5bocW#;)NIK#+Us|Uh~Md5ajJp?E1h1)UM1?ToO5s8@SaL$(64NmHGdh;PT z83oSfyB|*Kv}7r@s^mEw33L3z2d8r6E#kSnf>Y_E$Ob zroqV=aPpon&iM~d(>-RSSuLk~^G+%&gp=*bHa4&auD2|hR{U*F2%OVME}VppYB^l& zhU4mUWU6J&aKdJ9XI2KBEMCl0uEbWr4RkmziGG`*x80s*CC|JPS(c3Ha8fN%k4y2d znW^X9k!G#Ey;wOFsjd8=%F!A5L2LOPPGKhCttr+CxWRV)vJa-`dmL+owFFKEQw2HF z`48snc?D@IUT-Z3`iB+hZFSNDj~9p!oH7F8|6+BqQ@4=1!A@p34&+7|#!2VXd#&+P*As{JWWOCgyB zM1PK*`@hjJbmsx7|3PWrBJl_iPak#ZV^FF1Ng$u%v^4w+w)DSKiNwo5=&P=NaVqV- zCjLuejjJG38h*p&i&L@uZC75LO8IwOxljr9Mj-l|fP93CAzOsuBUH-eZxxP@P!Vi% z>2|1mgi3`wh2bMq^mYlur#Kb84}o;eCqOxXMwWJ~Y`aSe!~jDXv_oM4+9^3zcLle?+f?EB|jaUv$#= zBNe4Xh3~{4na|yY`4g3jd$@9;k_@@DrzGK>rsegn zT&N^(kUx5CVO(1=_hwg`B~m^@CE(dE|5sG$^@VYIM`3t|7?9&?3YFw&mlrC@TU>gp zD;Fv)k8|a@BG(<}RaHLSbzWS)1Z}FTD^%K;?&{v=%KsNCsxw@Dp;FK7E-zG)ceqq~ zQ1}AnE~X@G!7Qj0ywm0H5-mPLB{|!rb6mMl3Hp3!1?V!Ugmbx@U!00)g)0{-L3vg& zm_@eA%@8UXFSxu=NxtaPm!L9%UK8P;sFYjl>aBD2)@G$J~ZEMcsl}#>n@iTxeCRp8mVtz8d8?tx^$3=(DBO#snU8nf6M41{zmFXPY&W) zyjlD$rw{PAyiR&*kc!fU{H>sm@VBCF`}81v{OL&j*wZ0ZS)YJgygX9(S{_nW^^)a- zboUjJ`ggc!ov~t&J`eZ8iV(NbF2JpPCQ{${Oi0zx&ptCq4_+CmBUgrartP|wgLL?_ zk$OE`yng-JL3$lrja4C4M{is;Naw7I)b*YVsd{?CbAxoX=OXo9xCT1@dAx#~{d|ZU z&_!_5o{!YYFNAmmXx0mZbi)@S^)a{vo%G@$y&rDjiy@wiIs!NM#Yo-trI1R}3tk$e z+q@L1e}-$R(_h9vxaBX0RI)w`xA^5qJz#Z+$19hu#=q5(I`B$Jwbhxg;2+!?xKyoP z#lKe~b@r3H zdcwc)@89?bca4r;i+^yl*M?MvE`po37XQ|TR7lTShkxtv53ZL^dL94Z7QP-*ee@By zxv%5j8zGgc7rcRgZ{Q!?wL1Mx{DWKmW=IXtXWeXj@k2ZzKM}jneV&;vd}XcSAffTLd@lUHp45!~>JF-owB5@DFaRPI@2z;1<3g z;vu>taC6_szfB=EK`+>Zf1B_RE>EX##y_~_n?q`{J`1;aGyZ)LQd9M^5Ag2;{M!;z z({<(+{DWHqH$$tf__qcBwuX3SZZ+KCtz~tUZ9RC%H)|XIZNtB9AvH@!ZO1>j$=gHf zPQ4K>XFLAw2&vh6!Vdh~fq!s!>-e4c2RD0XhzC83;HK@wzg;19kDj#)|90UY+FAO3w3Qp@#(Pw?*({DXT&$M45KxY_$d>RDX`H*G)u9SEuC^sEE;cL4w3 zUeHOO;vd|?PebY@eFSdqr}%d;q*m(%2l4M9{=vPf(?7#MxaFUP)Ea#jZt-XM_jyRI z)yqD|zt8dSP)NP5GY{b(+#0wywfX}84&mPyA+=twh8z3^{v8gfcXZZa{5y<)a2s{h z5&VOjd?cja(;MM(j^N+XklLgt9L2w*_y_laj{g$>;AVdrQd@Nq+_W$8@2e0`i_iKB z|GvUMxScxb82-U6JQh;B^%1za$MEm#kSfv(zQ(_=@egi~PX7k~;Ff+8L@zszf5-9fL`WUbnJ4fMZVlW)txn?K3H&=5QlIP9aDz|c->H!LLT8=Azf<@J zcSJ{hi+^yFzYXy~{zkZ*Z}IPRNFCD?PUGKc{Db>O$A5=^aI?P)sS~;gZrXSF_kBp6 z(zCwDzwhx6?zB!igMV-f&xF+X`Uu?IGx&Elq|WLEXYubW{=xmI(|^D}xaB{D)X(}X z+~Obb@5hk(MKAji|9-^3pF-+_&io1g;MTxh)aqya`w9Pk4yoVuYPi8ab zb^!-}4YBdf`V|L%#X-18opccg;TB#DvH2Z=n|l!le+#kwE%*%wf5SnziaPyw9E4l` zyKI1G;THdngO_9jTy_ZuFX7;2*#I*y;~?A`xR`~C1$O1-vI|G59;(K|)oRef!79>J zR*D_aWRYva6@pD7h&NGw1nWdF*^i)(*(ib>KZ1HC5Y#ghN+76K0>NGpG%)dD2)2k| zb{K+2rbq3gD%~=sF4o5J+LXcvXSqQpY2m%oZ+M3J=1m{JtMg*xwl}4~K z0zr0Z1Rcz35ezPkpmG@mL6cPmL3kMin?#Uqq9PHj6T#$21f9)B5#&T7s8<$2S2Lk3 zf@)=nT^CcYekEh3m*4nc+~62Y``2$IVq2$@;s5i~51;Ft({nWQKL`$e!Y3PB%p zL8i2-b+;dZVf!SXmiCb`=CSn$;p0Tm?bpst9f}Syd5)S4FT%1X(7k8iI8q zm|P9PaI;YaIn@xIk-oV0Lu`qfL7#xqFa%}|p zCaX4r@Y)DAiC~tAs)Jyi2qxD-aHrWQf}A=C>eWRs+f1m7pjur7dqr@!iLZxXiwI`d zLr`dnL@=!$g5>%L?lH6KBWPG3!7&lsXObEq*e`;G4G_#XM?^5U0fMd#5iBqZ8X{=Z z5W&wP&?dbRg5x4s-Uz`$b5;b48zC6bScUvX>04F}G~F8`cmaW0VlFgRgVe(&vkBx8 z^Q@3ZjcN*c%v>krakE;;6UIuQuJ8nkj!mHGGV?kD^`wbPR8N)mejZ}@n9+u(;s-2h zrpoveORO#1Og*X8gte=it0zi47!zh5Xr;mfrJ}k2xOR1#+T+(BRG!QwyKqCvNo!ndd45Pr5(3!L_R}W zY2SfX8u09swHDDJB{iPw==`@h-`W?_)R%tM(JV+;6$3Lv{HHd@mbHg7)bSFgc{8;| zDrugf!u>Nt1|RMa{w?84k6rs>n%d`Ii&j&qx0pxL{Cq@f2lrN`Gb0YWKd$leGV}No zD$Tyv=DT#+`N-w(T>G+#TS{_srWh|bcLJ`g5GuUfnkntd?r~*uD{2Xl&wa=wTWEOChJ zkSmjiKD@_N7P>OIJJr!GyU4q-9f|OFw-Mti%1t-#cGqH8Ru0*l=!v0ATv>V2E0Bqy z54$q?-e5P7&m*o(ZnIsoCEN^kW%+XNOdgyOOCLihHdF$&-P>MIxQdmL$-PSXEOlj7 zNL#L+JX63w`Olj^?_TDUuB;le&2HJJTp5Gi_krB&l!~28W&3|k`?k7@@=$^#W5707 z_KaIN7TE?MpOvnx25GtXDF!_2%4(9{gRDAKo>}0Z{2xr;4rEgAbLwVCSPNz&kcyv2 zOPq=an?Nlf4>a)4R~u{wwZO}+tPbg|ARerCWrrmkd{(YBFFvbkn~$GVH~1%)Fo{p8 z`eo&gqda(bEhwkVu&2}_6=p6xrRv-`3(>#8o!~Ao8$1X!SO^vY8QdqpNpK3>3p#>M zpfl(KWUzMw-9ZNE0oZMyR(OJTL`}2lDjH7%&!$1cSg3Add_60v$kGz|GoxUnkt}47z}BpgYI_Az64)`Z-C6_$H3#@3I8BxGT%*MnZWbF zO?dqzcpAtAUI|u#=fD#{9v8a+egzl7Z$KvXcVHwK1qPUUD^#7)*;IEIkSB9)2dSVv z$OZCf(RNgKfIg)Ag5Dqv1VKk24@b-eg{ftx`VkP#@8P3D%YB65GfDUb&h-T-fb_24P+40sqU01pCrHe(lN$_nx#kg>0T zAIJ(a8+wQG4YQva@%uPzI}55AKGGXfPVa+_;2j_jaJ&Lu1M*DCLtsC) z9{`^Md7QBbd<6CYc|LP3SO;DQKZ2jYIeC;ZA6w+vxz3;)xCUGV1F19`{7za{!ge4P zqybsI6!3#;@Xbg z9*Fr0g|ER;@HUW#W4fXvo04ooli;U-N65PY$kRKre>@FVfCs=!$Yl#iN52JpBg)HT zDldS2$S-H{=LhgJ=s@NNWK@94a=ROR4CJvCS!!iz-H4vZ1d=bS=w|Q%kd<-^*ar5? z+Rf+Vf7`2Mrle(d%LXXBWqo*YLRLRn1s8y}ARWvE9YGM(1$97e5DzSXdA?Gn#wyjI zp6rWZu1IJckkwyy1=*Tp$EakoS8;vz&?;3vzZAS|ZL%{(1F1@O64_y5K`r1OST3iK zZU|a~WY7vU0WCl?kOUfoMxY+>$_bTrq;7Fj>SzEc)5CuBO$?QaY(JpFCxE6vDwYDx zfoDMR#wEWEXlWL#QWf((n?x+_N|jQ~vss#vJZay{7b;D7c@lP!$w$hkfexTONCoYH zSASj7q9gn@GJ9r_=mI(eDIonJZ~@0n&(w27^Ih2#`^50~iVdE`K9* z7`PeS1hT+zFanICeS4e8f#!l+fmA#Rv}Zgcr*(8*vb zm;$D|yrd;c5}~=^4v>F4f27~U5E()R;BGJn%m#OXJHfxeEI0iCRPyJ8dqJT~=RxlQ zQvQB$9}qn`X@3uulfeWaCk5Hu*!}bEt^YeR#R!?p>%o3-9EjI%fVJQoa2Ol`>%exf z27Cbyfrr88U?2Dx>;XH$Hn0_J2Ajb9U;}s$yej?wJc*^i02vrhfXBgNum~&!4*|&+ z1H~w5YzcS-JO&;G%fNHsS@0xy3akVxfJ8ycEC){mkv}7lu&)9yffvAw;1%#PSPdi^ zUKGS@i9|LK&!xiGz`w!k;4Sbb5JM%s5o`eOfVaWBU<>%bg+wra2Y)^SAA((AHz)#o z!KdIea1a~-(k-6=kqa;MF!&N21z&+<;A`N+{wPDyQm94+OTC6moB>kTk6=Fd0i1Qya#T4_ z`W*O0`u{SCU%>@%5&Q;z0sX)w@H>zOB~RpX-Vq&-7d_$q$fYi?tjI)H>h>B9gO}&} zTLB9wIXkojEkF|RDi!OR!zY3SAeA+RHUVCx#f@u(ydek&4M2Sm3+jQgpc1GH>Hu-H zHZ%^X8fMmNRW-i~>B^uYC=CL@HV|40NSh^r1Vh@00OC{yS5^iZ1kzDkiUETG3zU7iI>1$yMs5IE zU^o~CZUQ%go#+gOO5V+&Kgb3nz*sN}+zMoGx&=BC$O0+ykEQ=5V>C<-7!Rb76d2>u zTG${<;5} zBli}$CZuKbduvZ4_-UX9kV>UbWkyVgms#`Yx+GufxD6x#8O;BZ{+Cfc3lxA@P#4HF zl!avmkaZy++yQO}Gl5j@%?L?LWwU`d>gT%ocSB{AOB+&mJs@?@0nTDb{NrF`o)&M= zv)-%RYfwCtNN{v}-_8>81f(lrZ^wU&w`^i9A6q-7JE z54|50?=R1wFy!9Uk_ht}c8**R$ zH67Z9t60ieNSZ^-K&w}-7d5NSwL2)2)F!cIVoUpQTArM_Z?5>L+SH<^UQTnL_amsU z_b-_7Qu&qV$!U|AoRZkw*Hhf9K%wv3kD1cwsbj;#RZ^?O7KzEuK|F$-C+Zb6Z8AH1 z7=@A(lM`Dp%_viroDDA*bgJ3E>mENQBqb)bOiY?$iq@%Ub(c8>iIMP^Loa1#SUEjWpl*oFS(WK^>nQ;=ePP^%FjPu!TNsj)tt6r z=Eb*EwHWV*wY$&p^=SIcV0~3%j5+d_Y8f+!DkMN}FMoAY_ZME{rXao5Dv7`>GR@Yj zma51Mhs0J4cf9Gg>hiO(t2>pm1DM3%^_8;BE9+Hbe+A1NTCZxU&&;gtMDA-kLY!@~ z_o<0Rx4v?N^ll($5Y9P&8*nNe@6S*oHb_b!3)e$l$|Lys>n z^W|@=(Q}7b19NtRsvOsbj_`g4`}p?Z9Y6X0feu%d+MCRGh;k2eDx6d%v!9X(UDSyi^YBF)W!4TRnMS@8Au{?x6~_tQ7~Rbxua$2PlCNoFiptY-ZN z>bHkvrIM{AM7HZKWB#+Pv<@=+5}P~9rEKL7%bFn@RSV_RX_jqNasIvK%)1*^&;K>Z z0SU4b%0Avth=2T5{O-c_&6!?ahj>3i{z9MIHf43Zf9BO3O#Z{F_t(K|QpbzW|JCWm z?5X-Ub=v_~E6jcGsZ`fZ<&2nOg_HiX2ZkmkC#EDOwfJw<#&~xAg_4>2zKZ|PmQ;?} z`933X3Xzb-cTfDLrc*DZat~e>U$zaOJ${;886q>yg5C7`y`~SNio34MHbYjLdp=|RX)FxI(&sL}V+sWeU^L~welrOF5WWxiM=qcF(S|m32ejoh3 zBlj*EJHKT~$ze67m8Z;DOo;J*=>389PfvXN+y`&l3iiBpY^?NW56i0~mCUZqtO@^{ z1%JCeHUA$iaHFIeo8=#Q>g>!5*leQ4ZR%X749P3Kj@%clU81Faj zn{~K1tnP(_@7OLAD^3|EYAZ#Dn&yL*J}vYVKgq*^Gt^^ses>AHK7}j}y^Ic3PfnGIy}}dB2xGY(m`*9ZQ#M zgF;ebTZvYJd141^@vF6*z2mv~!B74=`*K}d!4BsJa%3(3_WZEVZ>kvHiX1o4z0GNg zszkGKm#Q2Pd)k@!ohq7mnEQ8OmiN2)r*4@s$7|1HdG3ArJpYp#Dm3`}_Ry&v2ezQWf@@?QiS{c8OT-y0!!&Z@t?Hs$a>^h=j{;p_q zpF8~RabL;2vs(pXy~iY8x$~8GF13kFqc#S$binBb=J0Mt&$$LpoX>TuKB(+%C%&k} zRCXj2O~Qwm>b<9;U*WzNYYy%aK@}J(Rd_%6zx{MzaC-fBTDz6A@kf{$AF5t4RT}Y) z0lsWc?Urh0Ebrr2cet%LHc3UQN*F^h+5Ao`F`ZGBq4Z?SeZ8Mpejx=_IYgjft48zK zQK(4us`#I6jxo;_sd)dIhGth0{&+vWUZ>LAk3I28(YI98oV6EoBTURk%&uh92NL7` z8uHOI^*?W%l6w&2QxaRsIngqYeS}5c4?+L(@?j$ps{WBOGB*VX7<LY#CX5rKj6TTCKcjBx7oJX zE8jC_J_@b9Ul4zM&YPWA{$6$k3Yhi@K2cQzl?XtL`TnA+E>mEN*-oV~yAW~-S&%k2^T`W0 zjgh03%oe1R&1GrTd#}Zy%#VBB_`}vCZr!x#z4>D6eKX5e_3z~pg*h(1`#PIm`_*n` zkBKUANW7O@1io3=dfeg{%UrGGe6s0xK#h#?-gPmyQO#ki9va51m5!0hs+m0pRIk_r zgj+&=&xnUszxCO$}YhE337Hux0Bmlk5m!D&b z_u`9bum8+%RA)Sgf<%bv?NpH7sM z#cVjYo8Fpqsf4<(wSFR(7noPxx7FCa(?K3#9-ol(`PkgqaCeTa!WjGle0scd>5 zR&82)@6srF?1zd2N>rLs{>s&k_kx4U)gEhF#lKT_A}Wzn&!!CX)?rmG_GpH)TilX! z&H1T^Q{O;Cj-`x`c|^s!V=UQw9mA^&R{J9# z*u`xNJMy&Ry+fmY{gp}OJ3X+>uHE%IE6iWT)H$kZsCFj(D2r@&Gxn%TjrCptvTni5 zFFGxq`hab--6tD*nD>vW7XHg2vmxAHO@*7NF9}7oiT?&N&K!aBU+iga{t|P`nX})h zDsgn>e{N2=Xn)JFzL$AXbYo2XPgiPiPl7Sti$ZF|{+_>J)i=c!l|0kzE5@-`+G*G< z`idbQV^)8K5r53`&X!IyvEB@G|ZS0`fhYf7+eGGe?8vj_#ympNGZLc`* z{4oLpOjeXXy0!Ouj4qpgYa84?VcykfukC9;f>3a#V0+)j^)Ec^=CC?{)YqIjt*Uu7 z`j7WDOTT6h@m|64Ve4;I@9mX)T&*iI(>W`BdgsP!Rd$_~86nFsf&P=%ZokwvsdP__ z_tKBkBfdIuZtjepb}`%Q&L&s-&xuZq_p*?3VUHiZsYPsoTRj7Eyh#f9qs_i=uEasz zVoD#UsNEsW!_c|S%qrur62{QG+kA13tVQNN(O72g`Y1H5q*|LV5GH%CZCUxlw7Ul{iIE?|C*2qKs%*$x_Pxmuv%q{<)#)YYJO0|+F>c8axNu2G7OLX&3;ZKfv^E9n6DnI;z z;ak_lo&JMbGo!w>`yvJs>%H)%^wHFlA-y2dw$@%!Umjrkev1)KCseM<;=W;kbK+XM zB%*cP>-T=|x<*ggCfLTbyux$rM59wW{l&9Gi+l1zK>mpoM2Q5YxU=8QoNej zzpuufrvLA>-P!+tSNq5H&zr&jU23lsRZBGYIg?Wg-F)WCienx;BUiX?H(rgWz1q5q zq|@^z@vNh1mv$FociC!a`jqtB3vsc;FAu_Rx$m3ftTeo7f*Y19)#MimY;e$eDW&d+QnJX}9~l z<=6>;-<{=doXtnn;fB$+-3@}P?8Vads7e@%>+?HQY^Vp4xrHU8AE-tzY+hulRGX|XZj>c;;4X5#1<@2CN0fvmN*>s$k$Qvqi+ zuM$T0It#IXeWqy|!NO9kw438u<@UO>nYp{VdGQz3+c|SYn=0p3D=BaHAh(xY;cSIJ4>$G zgaY5Kh{A6p&BTk;ly8<_R9)3PbLt}Bla@A-ztJUi%xb>5Qk_h?aKp^?zo|!(z1Ka( z`Hv3G{O&uxXy)4?nTftHM?2p_?5f;7{pp`>aqb=1t^Bb*`)VQDZ6szWC5zt?E3eWz z$jzGOTtn@?%+%iA(ro!%6(s-Vsn*`&yf<6z`fC07#rOZr)eZjJdxG=b+aLVtYV{gx zKTcUN%3Q|1zi?=%ctmi#H(t#yf5VtDcd1A1RVPWZW|&@>M*O+lt|9|s&sg)X%c^l5 zuWs)pS!dqAef*=J?6B|V$v1eOSFOFbV?Dm=!BbT#e>9uA+t4cW(tCf_%ITMKTP}@B z53?^C#GS8l7uNJwizzkUxtKfu>x`Ut2S3Dh_?cY$A%p_GFw-BM-;{j0P9JgId+$D8 zZfU@;sv@b3#Cy}$fIZ*Vy)C!=b#|k6pa!8KcZ8B6&Yo)Atx}j@bw(mf?q6P=*eABH zXjQ)N`+bahd3^0IpHiD#x5zrB7oKLJbiS^L_1@d{?T8@*K5xIFi|ZDxu;N<^BOKk}{L7ijHDz=rM@=O^& z4gSrg4TmD+Ibz-uu~nANGC!_iMiN4%%#P?kVA~mf@-;l01Xmt<5np#(T@#mM-t? zUOPXnw`&6{mwOH2Y=Jc~%6p;Pj9-38*m%>5k*Lb`HY0Y98C#0Z^xpiIxH!Ji$@JQZ zc3t-D%{R+R`CIx=W}1Da7(UM7HP(Bx+@2N7`uA;VyvsqFa!!do{ohVC_i}WO_1-;q z>BjkkPJPtv6Srxs^qeieVcUIXZ&vPZo^8@C2GJAddPwo@@;NhKGVH=t#7FO4bmf1% zvwYS1xyf!gSoZ9l)jk_L-kS0e{_5@)+`_;4Hghvu@&9$5Vvj5PQl&~w>iqk2l6$;= z$XtxTV(-x0@`}68$hfj|JAPhaol9ot8ZO%Z#%<>7(*B;_erkG_@mG)WUa~iE#hM4& zmR$I6x3B0-dwfRopI;?rF@G~*nBrk(cNuJRmj=GUED_1Pwx_pzN0kW|Z3YT$(1y3gS+DdlFVEDSL!-C%LkTE$gqs zw{I=W`r~7~cmF-P@#ysWd+wM1lDjKB(=g5CmSw4!PXi7Aa;Yd~FBRVSai^Ml5c%Vo z#Ti@9w*}55bSJS~6uTFm_T00F(BE__OU(av-|RnDoU7Lr#lNC)FFUTRL;v+)^+$gk z)np?2ha25j@90-9aB{5N_M1;;KKv&49{B3MHD8GDH^1|>NX!o?$XC2E7tR*kvm<&S z4{6vB%+Q%8sRA>qi3vesGG_6}6?#LLH9hs@!S8RpsyE8yqmVoYg*X(B-t8N^dT;-- zR~43%BWwK5=L6AAKQH~$)tpUcCq?TXL!k}|KfT`a*6yEOJbYE5O$DBv;WMp*iKyuB zX!=(4H?N+R;P`Y`o8%p8TG>l0U8RPL&BGP_?aMi@NgvvR!NY#t%IvP_f4+kAO7ao8 zWAn!5j!Br5J9f<41(p0SsLEIPW(m!%q)pKs{(5WEs`%%Gn}%`z9COnmf5h5-asKs_ R%mZ=$ZfhTV$bW6%{{fiaZzuo& delta 32181 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 kKUMOMFw36u`b-1uOPx# diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..3ddcd60 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,5030 @@ +{ + "name": "stort", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "stort", + "version": "0.1.0", + "dependencies": { + "@emotion/cache": "^11.13.1", + "@emotion/react": "^11.13.0", + "@emotion/server": "^11.11.0", + "@emotion/styled": "^11.13.0", + "@mui/icons-material": "^5.16.6", + "@mui/material": "^5.16.6", + "@tauri-apps/api": "^1.6.0", + "@types/lodash": "^4.17.7", + "jotai": "^2.9.1", + "lodash": "^4.17.21", + "lowdb": "^7.0.1", + "next": "14.2.5", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "zustand": "^4.5.4" + }, + "devDependencies": { + "@tauri-apps/cli": "^1.6.0", + "@types/node": "^20.14.14", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "eslint": "^8.57.0", + "eslint-config-next": "14.2.5", + "typescript": "^5.5.4" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.25.0", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.7", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.8", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk/node_modules/ansi-styles": { + "version": "3.2.1", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk/node_modules/ansi-styles/node_modules/color-convert": { + "version": "1.9.3", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/chalk/node_modules/ansi-styles/node_modules/color-convert/node_modules/color-name": { + "version": "1.1.3", + "license": "MIT" + }, + "node_modules/@babel/highlight/node_modules/chalk/node_modules/escape-string-regexp": { + "version": "1.0.5", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk/node_modules/supports-color/node_modules/has-flag": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.25.0", + "license": "MIT", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.25.0", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.25.0", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.25.2", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.2", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.25.2", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@emotion/babel-plugin": { + "version": "11.12.0", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/serialize": "^1.2.0", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/cache": { + "version": "11.13.1", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0", + "@emotion/sheet": "^1.4.0", + "@emotion/utils": "^1.4.0", + "@emotion/weak-memoize": "^0.4.0", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.2", + "license": "MIT" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.3.0", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.9.0", + "license": "MIT" + }, + "node_modules/@emotion/react": { + "version": "11.13.0", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.12.0", + "@emotion/cache": "^11.13.0", + "@emotion/serialize": "^1.3.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", + "@emotion/utils": "^1.4.0", + "@emotion/weak-memoize": "^0.4.0", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.3.0", + "license": "MIT", + "dependencies": { + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/unitless": "^0.9.0", + "@emotion/utils": "^1.4.0", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/server": { + "version": "11.11.0", + "license": "MIT", + "dependencies": { + "@emotion/utils": "^1.2.1", + "html-tokenize": "^2.0.0", + "multipipe": "^1.0.2", + "through": "^2.3.8" + }, + "peerDependencies": { + "@emotion/css": "^11.0.0-rc.0" + }, + "peerDependenciesMeta": { + "@emotion/css": { + "optional": true + } + } + }, + "node_modules/@emotion/sheet": { + "version": "1.4.0", + "license": "MIT" + }, + "node_modules/@emotion/styled": { + "version": "11.13.0", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.12.0", + "@emotion/is-prop-valid": "^1.3.0", + "@emotion/serialize": "^1.3.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", + "@emotion/utils": "^1.4.0" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/unitless": { + "version": "0.9.0", + "license": "MIT" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.1.0", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.4.0", + "license": "MIT" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.4.0", + "license": "MIT" + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.11.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mui/core-downloads-tracker": { + "version": "5.16.6", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + } + }, + "node_modules/@mui/icons-material": { + "version": "5.16.6", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.9" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@mui/material": "^5.0.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material": { + "version": "5.16.6", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/core-downloads-tracker": "^5.16.6", + "@mui/system": "^5.16.6", + "@mui/types": "^7.2.15", + "@mui/utils": "^5.16.6", + "@popperjs/core": "^2.11.8", + "@types/react-transition-group": "^4.4.10", + "clsx": "^2.1.0", + "csstype": "^3.1.3", + "prop-types": "^15.8.1", + "react-is": "^18.3.1", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/private-theming": { + "version": "5.16.6", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/utils": "^5.16.6", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/styled-engine": { + "version": "5.16.6", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@emotion/cache": "^11.11.0", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/system": { + "version": "5.16.6", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/private-theming": "^5.16.6", + "@mui/styled-engine": "^5.16.6", + "@mui/types": "^7.2.15", + "@mui/utils": "^5.16.6", + "clsx": "^2.1.0", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/types": { + "version": "7.2.15", + "license": "MIT", + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "5.16.6", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/types": "^7.2.15", + "@types/prop-types": "^15.7.12", + "clsx": "^2.1.1", + "prop-types": "^15.8.1", + "react-is": "^18.3.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@next/env": { + "version": "14.2.5", + "license": "MIT" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "14.2.5", + "dev": true, + "license": "MIT", + "dependencies": { + "glob": "10.3.10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "14.2.5", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "14.2.5", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.10.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "license": "Apache-2.0" + }, + "node_modules/@swc/helpers": { + "version": "0.5.5", + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3", + "tslib": "^2.4.0" + } + }, + "node_modules/@tauri-apps/api": { + "version": "1.6.0", + "license": "Apache-2.0 OR MIT", + "engines": { + "node": ">= 14.6.0", + "npm": ">= 6.6.0", + "yarn": ">= 1.19.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/tauri" + } + }, + "node_modules/@tauri-apps/cli": { + "version": "1.6.0", + "dev": true, + "license": "Apache-2.0 OR MIT", + "bin": { + "tauri": "tauri.js" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/tauri" + }, + "optionalDependencies": { + "@tauri-apps/cli-darwin-arm64": "1.6.0", + "@tauri-apps/cli-darwin-x64": "1.6.0", + "@tauri-apps/cli-linux-arm-gnueabihf": "1.6.0", + "@tauri-apps/cli-linux-arm64-gnu": "1.6.0", + "@tauri-apps/cli-linux-arm64-musl": "1.6.0", + "@tauri-apps/cli-linux-x64-gnu": "1.6.0", + "@tauri-apps/cli-linux-x64-musl": "1.6.0", + "@tauri-apps/cli-win32-arm64-msvc": "1.6.0", + "@tauri-apps/cli-win32-ia32-msvc": "1.6.0", + "@tauri-apps/cli-win32-x64-msvc": "1.6.0" + } + }, + "node_modules/@tauri-apps/cli-linux-x64-gnu": { + "version": "1.6.0", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-x64-musl": { + "version": "1.6.0", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/lodash": { + "version": "4.17.7", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.14.14", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.12", + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.3.3", + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.10", + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.2.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "7.2.0", + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/typescript-estree": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.2.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.6.3", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "7.2.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "dev": true, + "license": "ISC" + }, + "node_modules/acorn": { + "version": "8.12.1", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/aria-query": { + "version": "5.1.3", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.8", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "dev": true, + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.10.0", + "dev": true, + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "3.1.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/babel-plugin-macros/node_modules/resolve": { + "version": "1.22.8", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.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/balanced-match": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer-from": { + "version": "0.1.2", + "license": "MIT" + }, + "node_modules/busboy": { + "version": "1.6.0", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001643", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "license": "MIT" + }, + "node_modules/clsx": { + "version": "2.1.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "license": "MIT" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.3.6", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-equal": { + "version": "2.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-equal/node_modules/isarray": { + "version": "2.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/deep-is": { + "version": "0.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "license": "BSD-3-Clause", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/duplexer2/node_modules/readable-stream": { + "version": "2.3.8", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/duplexer2/node_modules/readable-stream/node_modules/isarray": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/duplexer2/node_modules/readable-stream/node_modules/string_decoder": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "license": "MIT" + }, + "node_modules/enhanced-resolve": { + "version": "5.17.1", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-get-iterator/node_modules/isarray": { + "version": "2.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.19", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "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/escape-string-regexp": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-next": { + "version": "14.2.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@next/eslint-plugin-next": "14.2.5", + "@rushstack/eslint-patch": "^1.3.3", + "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" + }, + "peerDependencies": { + "eslint": "^7.23.0 || ^8.0.0", + "typescript": ">=3.3.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/resolve": { + "version": "1.22.8", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.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/eslint-import-resolver-typescript": { + "version": "3.6.1", + "dev": true, + "license": "ISC", + "dependencies": { + "debug": "^4.3.4", + "enhanced-resolve": "^5.12.0", + "eslint-module-utils": "^2.7.4", + "fast-glob": "^3.3.1", + "get-tsconfig": "^4.5.0", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.1", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.29.1", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "aria-query": "~5.1.3", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.9.1", + "axobject-query": "~3.1.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "es-iterator-helpers": "^1.0.19", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.0" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.35.0", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.19", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.0", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.11", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.17.1", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "license": "MIT" + }, + "node_modules/find-up": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "dev": true, + "license": "ISC" + }, + "node_modules/for-each": { + "version": "0.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.2.1", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.7.6", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob": { + "version": "10.3.10", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.5", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob/node_modules/minimatch/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "license": "MIT" + }, + "node_modules/html-tokenize": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "buffer-from": "~0.1.1", + "inherits": "~2.0.1", + "minimist": "~1.2.5", + "readable-stream": "~1.0.27-1", + "through2": "~0.4.1" + }, + "bin": { + "html-tokenize": "bin/cmd.js" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "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-array-buffer": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "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", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.15.0", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "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-set": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "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", + "dev": true, + "license": "MIT", + "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.13", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "0.0.1", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jotai": { + "version": "2.9.1", + "license": "MIT", + "engines": { + "node": ">=12.20.0" + }, + "peerDependencies": { + "@types/react": ">=17.0.0", + "react": ">=17.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + } + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.9", + "dev": true, + "license": "MIT", + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "license": "MIT" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "dev": true, + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lowdb": { + "version": "7.0.1", + "license": "MIT", + "dependencies": { + "steno": "^4.0.2" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "dev": true, + "license": "ISC" + }, + "node_modules/merge2": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "license": "MIT" + }, + "node_modules/multipipe": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "duplexer2": "^0.1.2", + "object-assign": "^4.1.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/next": { + "version": "14.2.5", + "license": "MIT", + "dependencies": { + "@next/env": "14.2.5", + "@swc/helpers": "0.5.5", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001579", + "graceful-fs": "^4.2.11", + "postcss": "8.4.31", + "styled-jsx": "5.1.1" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=18.17.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "14.2.5", + "@next/swc-darwin-x64": "14.2.5", + "@next/swc-linux-arm64-gnu": "14.2.5", + "@next/swc-linux-arm64-musl": "14.2.5", + "@next/swc-linux-x64-gnu": "14.2.5", + "@next/swc-linux-x64-musl": "14.2.5", + "@next/swc-win32-arm64-msvc": "14.2.5", + "@next/swc-win32-ia32-msvc": "14.2.5", + "@next/swc-win32-x64-msvc": "14.2.5" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.41.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.1", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.31", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/prop-types": { + "version": "15.8.1", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/react": { + "version": "18.3.1", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-is": { + "version": "18.3.1", + "license": "MIT" + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/readable-stream": { + "version": "1.0.34", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "license": "MIT" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve": { + "version": "2.0.0-next.5", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.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/resolve-from": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/steno": { + "version": "4.0.2", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string_decoder": { + "version": "0.10.31", + "license": "MIT" + }, + "node_modules/string-width": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string.prototype.includes": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.11", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.1", + "license": "MIT", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/stylis": { + "version": "4.2.0", + "license": "MIT" + }, + "node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/through": { + "version": "2.3.8", + "license": "MIT" + }, + "node_modules/through2": { + "version": "0.4.2", + "license": "MIT", + "dependencies": { + "readable-stream": "~1.0.17", + "xtend": "~2.1.1" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tslib": { + "version": "2.6.3", + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.5.4", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "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/undici-types": { + "version": "5.26.5", + "dev": true, + "license": "MIT" + }, + "node_modules/uri-js": { + "version": "4.4.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.2.0", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/which": { + "version": "2.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "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-builtin-type": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type/node_modules/isarray": { + "version": "2.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/which-collection": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "dev": true, + "license": "ISC" + }, + "node_modules/xtend": { + "version": "2.1.2", + "dependencies": { + "object-keys": "~0.4.0" + }, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/xtend/node_modules/object-keys": { + "version": "0.4.0", + "license": "MIT" + }, + "node_modules/yaml": { + "version": "1.10.2", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zustand": { + "version": "4.5.4", + "license": "MIT", + "dependencies": { + "use-sync-external-store": "1.2.0" + }, + "engines": { + "node": ">=12.7.0" + }, + "peerDependencies": { + "@types/react": ">=16.8", + "immer": ">=9.0.6", + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + } + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.5.tgz", + "integrity": "sha512-/9zVxJ+K9lrzSGli1///ujyRfon/ZneeZ+v4ptpiPoOU+GKZnm8Wj8ELWU1Pm7GHltYRBklmXMTUqM/DqQ99FQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.5.tgz", + "integrity": "sha512-vXHOPCwfDe9qLDuq7U1OYM2wUY+KQ4Ex6ozwsKxp26BlJ6XXbHleOUldenM67JRyBfVjv371oneEvYd3H2gNSA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.5.tgz", + "integrity": "sha512-vlhB8wI+lj8q1ExFW8lbWutA4M2ZazQNvMWuEDqZcuJJc78iUnLdPPunBPX8rC4IgT6lIx/adB+Cwrl99MzNaA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.5.tgz", + "integrity": "sha512-NpDB9NUR2t0hXzJJwQSGu1IAOYybsfeB+LxpGsXrRIb7QOrYmidJz3shzY8cM6+rO4Aojuef0N/PEaX18pi9OA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.5.tgz", + "integrity": "sha512-1GpG2VhbspO+aYoMOQPQiqc/tG3LzmsdBH0LhnDS3JrtDx2QmzXe0B6mSZZiN3Bq7IOMXxv1nlsjzoS1+9mzZw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.5.tgz", + "integrity": "sha512-Igh9ZlxwvCDsu6438FXlQTHlRno4gFpJzqPjSIBZooD22tKeI4fE/YMRoHVJHmrQ2P5YL1DoZ0qaOKkbeFWeMg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.5.tgz", + "integrity": "sha512-tEQ7oinq1/CjSG9uSTerca3v4AZ+dFa+4Yu6ihaG8Ud8ddqLQgFGcnwYls13H5X5CPDPZJdYxyeMui6muOLd4g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + } + } +} diff --git a/package.json b/package.json index a05058a..52feba7 100644 --- a/package.json +++ b/package.json @@ -17,16 +17,16 @@ "@mui/icons-material": "^5.16.6", "@mui/material": "^5.16.6", "@tauri-apps/api": "^1.6.0", - "@types/lodash": "^4.17.7", "jotai": "^2.9.1", "lodash": "^4.17.21", - "lowdb": "^7.0.1", "next": "14.2.5", "react": "^18.3.1", "react-dom": "^18.3.1", + "smol-toml": "^1.3.0", "zustand": "^4.5.4" }, "devDependencies": { + "@types/lodash": "^4.17.7", "@tauri-apps/cli": "^1.6.0", "@types/node": "^20.14.14", "@types/react": "^18.3.3", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 2645023..1f7acf7 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -17,7 +17,7 @@ tauri-build = { version = "1.5.3", features = [] } [dependencies] serde_json = "1.0" serde = { version = "1.0", features = ["derive"] } -tauri = { version = "1.7.0", features = [ "path-all", "window-all", "process-all", "notification-all", "dialog-all"] } +tauri = { version = "1.7.0", features = [ "fs-all", "path-all", "window-all", "process-all", "notification-all", "dialog-all"] } [features] # this feature is used for production builds or when `devPath` points to the filesystem and the built-in dev server is disabled. diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index ea13942..6e657ca 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -20,6 +20,13 @@ "open": true, "save": true }, + "fs": { + "all": true, + "scope": [ + "$CONFIG/stort/", + "$CONFIG/stort/**" + ] + }, "notification": { "all": true }, diff --git a/src/components/Generic/Initialization.tsx b/src/components/Generic/Initialization.tsx index eb43e15..2af6cd9 100644 --- a/src/components/Generic/Initialization.tsx +++ b/src/components/Generic/Initialization.tsx @@ -1,11 +1,23 @@ import { useEffect } from "react"; -import { usePathStore } from "../../lib/store/zustand/path"; +import Paths from "../../lib/path"; +import { createDir, exists } from "@tauri-apps/api/fs"; export const Initialization = () => { - const setPaths = usePathStore((state) => state.setPaths); - useEffect(() => { - setPaths(); + const initializePaths = async () => { + try { + await Paths.initialize(); + } catch (error) { + console.error(`Failed to initialize paths: ${error}`); + } + }; + + const createDirectories = async () => { + const configDirectoryExists = await exists(Paths.getPath("configDirectory")); + if (!configDirectoryExists) await createDir(Paths.getPath("configDirectory")); + }; + + initializePaths().then(() => createDirectories()); }); return null; diff --git a/src/contexts/SettingsContext.tsx b/src/contexts/SettingsContext.tsx index 184e6d2..c5b8d96 100644 --- a/src/contexts/SettingsContext.tsx +++ b/src/contexts/SettingsContext.tsx @@ -1,45 +1,27 @@ -import { - createContext, - FC, - ReactNode, - useContext, - useEffect, - useMemo, - useState, -} from "react"; -import { defaultSettings, SettingsType } from "../lib/defaultSettings"; +import { createContext, FC, ReactNode, useContext, useEffect, useState } from "react"; import { logcat } from "../lib/logcatService"; -import { LowDB } from "../lib/lowDB"; +import { defaultSettings, readConfigFile, SettingsType, writeConfigFile } from "../lib/settings"; // settings context type SettingsContextProps = { settings: SettingsType; settingsLoading: boolean; + updateSettings: (updates: SettingsType) => void; + resetSettings: () => void; }; -const SettingsContext = createContext( - undefined, -); +const SettingsContext = createContext(undefined); export const SettingsProvider: FC<{ children: ReactNode }> = ({ children }) => { logcat.log("Initializing settings...", "INFO"); - // useStates + // states const [settings, setSettings] = useState(defaultSettings); const [settingsLoading, setSettingsLoading] = useState(true); - // initialize a new lowdb instance for settings outside of state - const settingsDB = useMemo(() => { - return new LowDB("settings.json", defaultSettings); - }, []); // empty dependency array ensures this is only created once - - // function to update settings - const updateSettings = async (updates: Partial) => { + const updateSettings = async (newSettings: SettingsType) => { try { - await settingsDB.updateData((data) => { - Object.assign(data, updates); - }); - const newSettings = await settingsDB.readData(); + await writeConfigFile(newSettings); setSettings(newSettings); logcat.log("Settings updated successfully", "INFO"); } catch (error) { @@ -47,13 +29,24 @@ export const SettingsProvider: FC<{ children: ReactNode }> = ({ children }) => { } }; + // set settings state to default values + // and write default values to the settings file + const resetSettings = async () => { + try { + await writeConfigFile(defaultSettings); + setSettings(defaultSettings); + logcat.log("Settings reset successfully", "INFO"); + } catch (error) { + logcat.log(`Failed to reset settings: ${error}`, "ERROR"); + } + }; + // fetch user settings from local on first load every time useEffect(() => { const fetchSettings = async () => { try { - await settingsDB.init(); - const storedSettings = await settingsDB.readData(); - setSettings(storedSettings); + const existingSettings = await readConfigFile(); + setSettings(existingSettings); } catch (error) { logcat.log(`Failed to load settings: ${error}`, "ERROR"); } finally { @@ -62,13 +55,15 @@ export const SettingsProvider: FC<{ children: ReactNode }> = ({ children }) => { }; fetchSettings(); - }, [settingsDB]); + }, []); return ( {children} diff --git a/src/lib/defaultSettings.ts b/src/lib/defaultSettings.ts deleted file mode 100644 index 0e6d4f5..0000000 --- a/src/lib/defaultSettings.ts +++ /dev/null @@ -1,14 +0,0 @@ -export const defaultSettings = { - display: { - dark_mode: true as boolean, - accent_color: "#8ab4f8" as string, - transition_duration: 200 as number, - radius: 8 as number, - window_height: 60 as number, - window_width: 400 as number, - font_family: "monospace" as string, - font_scaling: 100, - }, -} as const; - -export type SettingsType = typeof defaultSettings; diff --git a/src/lib/lowDB.ts b/src/lib/lowDB.ts deleted file mode 100644 index ad2dcd6..0000000 --- a/src/lib/lowDB.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { merge } from "lodash"; -import { Low } from "lowdb"; -import { JSONFile } from "lowdb/node"; - -// define a generic interface for json structure -interface Database { - data: T; -} - -type UpdateCallback = (data: T) => void; - -export class LowDB { - private db: Low>; - private defaultData: T; - - constructor(filePath: string, defaultData: T) { - const adapter = new JSONFile>(filePath); - this.db = new Low(adapter, { data: defaultData }); - this.defaultData = defaultData; - } - - // initialize the json file and merge with default data if needed - async init() { - await this.db.read(); - if (!this.db.data || !this.db.data.data) { - // initialize with default data - this.db.data = { data: { ...this.defaultData } }; - } else { - // merge existing data with default data to fill in missing properties - this.db.data.data = { ...this.defaultData, ...this.db.data.data }; - } - await this.db.write(); - } - - async readData(): Promise { - await this.db.read(); - // ensure that the data is merged with default values every time it is read - this.db.data!.data = merge({}, this.defaultData, this.db.data!.data); - return this.db.data!.data; - } - - async writeData(data: T): Promise { - this.db.data!.data = data; - await this.db.write(); - } - - // update a specific part of the json file - async updateData(callback: UpdateCallback): Promise { - await this.db.read(); - callback(this.db.data!.data); - await this.db.write(); - } -} diff --git a/src/lib/path.ts b/src/lib/path.ts new file mode 100644 index 0000000..d0b62bf --- /dev/null +++ b/src/lib/path.ts @@ -0,0 +1,88 @@ +type PathsType = { + audioDirectory: string; + cacheDirectory: string; + configDirectory: string; + dataDirectory: string; + desktopDirectory: string; + documentDirectory: string; + downloadDirectory: string; + executableDirectory: string; + fontDirectory: string; + homeDirectory: string; + logDirectory: string; + pictureDirectory: string; + templateDirectory: string; + videoDirectory: string; +}; + +const programTrailingPath = "stort/"; + +class Paths { + private static instance: Paths; + paths: PathsType | null = null; + + private constructor() {} + + static getInstance(): Paths { + if (!Paths.instance) { + Paths.instance = new Paths(); + } + return Paths.instance; + } + + async initialize(): Promise { + // avoid reinitialization if already doen + if (this.paths) return; + + const { + audioDir, + cacheDir, + configDir, + dataDir, + desktopDir, + documentDir, + downloadDir, + executableDir, + fontDir, + homeDir, + logDir, + pictureDir, + templateDir, + videoDir, + } = await import("@tauri-apps/api/path"); + + try { + this.paths = { + audioDirectory: await audioDir(), + cacheDirectory: (await cacheDir()) + programTrailingPath, + configDirectory: (await configDir()) + programTrailingPath, + dataDirectory: (await dataDir()) + programTrailingPath, + desktopDirectory: await desktopDir(), + documentDirectory: await documentDir(), + downloadDirectory: await downloadDir(), + executableDirectory: await executableDir(), + fontDirectory: await fontDir(), + homeDirectory: await homeDir(), + logDirectory: await logDir(), + pictureDirectory: await pictureDir(), + templateDirectory: await templateDir(), + videoDirectory: await videoDir(), + }; + + // make paths immutable + Object.freeze(this.paths); + } catch (error) { + console.error("Error initializing paths:", error); + throw error; + } + } + + getPath(key: keyof PathsType): string { + if (!this.paths) { + throw new Error("Paths are not initialized. Call initialize() first."); + } + return this.paths[key]; + } +} + +export default Paths.getInstance(); diff --git a/src/lib/settings.ts b/src/lib/settings.ts new file mode 100644 index 0000000..271d618 --- /dev/null +++ b/src/lib/settings.ts @@ -0,0 +1,43 @@ +import Paths from "./path"; +import { readTomlFile, writeTomlFile } from "./utils/toml"; + +export const defaultSettings = { + display: { + dark_mode: true as boolean, + accent_color: "#8ab4f8" as string, + transition_duration: 200 as number, + radius: 8 as number, + window_height: 60 as number, + window_width: 400 as number, + font_family: "monospace" as string, + font_scaling: 100, + }, +}; + +export type SettingsType = typeof defaultSettings; + +export const readConfigFile = async (): Promise => { + let existingData: SettingsType = defaultSettings; + + try { + // try to read the config file + const data = await readTomlFile(Paths.getPath("configDirectory") + "config.toml"); + if (data) { + existingData = data; + } + } catch (error) { + // file does not exist, called function will throw error + console.error(`Failed to read settings file: ${error}, using default settings.`); + existingData = defaultSettings; + } + + // merge the existing data with the default settings + // existing data will overwrite the default settings for the properties that exist + const mergedSettings = { ...defaultSettings, ...existingData }; + + return mergedSettings; +}; + +export const writeConfigFile = async (settingsValues: SettingsType): Promise => { + await writeTomlFile(Paths.getPath("configDirectory") + "config.toml", settingsValues); +}; diff --git a/src/lib/store/zustand/path.ts b/src/lib/store/zustand/path.ts deleted file mode 100644 index 718e4e5..0000000 --- a/src/lib/store/zustand/path.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { create } from "zustand"; - -type Paths = { - audioDirectory: string; - cacheDirectory: string; - configDirectory: string; - dataDirectory: string; - desktopDirectory: string; - documentDirectory: string; - downloadDirectory: string; - executableDirectory: string; - fontDirectory: string; - homeDirectory: string; - logDirectory: string; - pictureDirectory: string; - templateDirectory: string; - videoDirectory: string; -}; - -type PathStore = { - paths: Paths; - setPaths: () => Promise; -}; - -const programTrailingPath = "stort/"; - -const initializePaths = async (): Promise => { - try { - const { - audioDir, - cacheDir, - configDir, - dataDir, - desktopDir, - documentDir, - downloadDir, - executableDir, - fontDir, - homeDir, - logDir, - pictureDir, - templateDir, - videoDir, - } = await import("@tauri-apps/api/path"); - - return { - audioDirectory: await audioDir(), - cacheDirectory: (await cacheDir()) + programTrailingPath, - configDirectory: (await configDir()) + programTrailingPath, - dataDirectory: (await dataDir()) + programTrailingPath, - desktopDirectory: await desktopDir(), - documentDirectory: await documentDir(), - downloadDirectory: await downloadDir(), - executableDirectory: await executableDir(), - fontDirectory: await fontDir(), - homeDirectory: await homeDir(), - logDirectory: await logDir(), - pictureDirectory: await pictureDir(), - templateDirectory: await templateDir(), - videoDirectory: await videoDir(), - }; - } catch (error) { - console.error("Error initializing paths:", error); - throw error; - } -}; - -export const usePathStore = create((set) => ({ - paths: { - audioDirectory: "", - cacheDirectory: "", - configDirectory: "", - dataDirectory: "", - desktopDirectory: "", - documentDirectory: "", - downloadDirectory: "", - executableDirectory: "", - fontDirectory: "", - homeDirectory: "", - logDirectory: "", - pictureDirectory: "", - templateDirectory: "", - videoDirectory: "", - }, - setPaths: async () => { - try { - const paths = await initializePaths(); - set({ paths }); - } catch (error) { - console.error("Failed to set paths:", error); - } - }, -})); diff --git a/src/lib/testing.ts b/src/lib/testing.ts new file mode 100644 index 0000000..9b724ba --- /dev/null +++ b/src/lib/testing.ts @@ -0,0 +1,5 @@ +import { createDir } from "@tauri-apps/api/fs"; + +export const testing = async () => { + await createDir("/home/vomitblood/.config/stort/"); +}; diff --git a/src/lib/utils/json.ts b/src/lib/utils/json.ts new file mode 100644 index 0000000..b442cae --- /dev/null +++ b/src/lib/utils/json.ts @@ -0,0 +1,21 @@ +import { readTextFile, writeTextFile } from "@tauri-apps/api/fs"; + +export const readJsonFile = async (path: string): Promise => { + try { + const contents = await readTextFile(path); + return JSON.parse(contents); + } catch (error) { + console.error(`Failed to read JSON file ${path}: ${error}`); + throw new Error(`Failed to read JSON file ${path}: ${error}`); + } +}; + +export const writeJsonFile = async (path: string, data: T): Promise => { + try { + const jsonString = JSON.stringify(data, null, 2); + await writeTextFile(path, jsonString); + } catch (error) { + console.error(`Error writing file ${path}: ${error}`); + throw new Error(`Error writing file ${path}: ${error}`); + } +}; diff --git a/src/lib/utils/toml.ts b/src/lib/utils/toml.ts new file mode 100644 index 0000000..f339efd --- /dev/null +++ b/src/lib/utils/toml.ts @@ -0,0 +1,22 @@ +import { readTextFile, writeTextFile } from "@tauri-apps/api/fs"; +import { parse, stringify } from "smol-toml"; + +export const readTomlFile = async (path: string): Promise => { + try { + const contents = await readTextFile(path); + return parse(contents) as T; + } catch (error) { + console.error(`Failed to read JSON file ${path}: ${error}`); + throw new Error(`Failed to read JSON file ${path}: ${error}`); + } +}; + +export const writeTomlFile = async (path: string, data: T): Promise => { + try { + const tomlString = stringify(data); + await writeTextFile(path, tomlString); + } catch (error) { + console.error(`Error writing file ${path}: ${error}`); + throw new Error(`Error writing file ${path}: ${error}`); + } +}; diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 3f360e2..22432ff 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -6,6 +6,7 @@ import { Initialization } from "../components/Generic/Initialization"; import { UserThemeProvider } from "../contexts/ThemeContext"; import createEmotionCache from "../lib/createEmotionCache"; import "../styles/global.css"; +import { SettingsProvider } from "../contexts/SettingsContext"; // Client-side cache, shared for the whole session of the user in the browser. const clientSideEmotionCache = createEmotionCache(); @@ -20,14 +21,19 @@ export default function MyApp(props: MyAppProps) { Stort - + - - {/* CssBaseline kickstart an elegant, consistent, and simple baseline to build upon. */} - - - - + + + {/* CssBaseline kickstart an elegant, consistent, and simple baseline to build upon. */} + + + + + ); } diff --git a/src/pages/testing.tsx b/src/pages/testing.tsx index 09b77b6..f8f9c24 100644 --- a/src/pages/testing.tsx +++ b/src/pages/testing.tsx @@ -1,16 +1,16 @@ -"use client"; - import { BugReport } from "@mui/icons-material"; import { Box, Button, IconButton, TextField, Typography } from "@mui/material"; import { useRouter } from "next/router"; import { useState } from "react"; -import { usePathStore } from "../lib/store/zustand/path"; +import { useSettings } from "../contexts/SettingsContext"; +import { testing } from "../lib/testing"; export default function Testing() { + // contexts const router = useRouter(); + const { settings, settingsLoading, updateSettings, resetSettings } = useSettings(); - const paths = usePathStore((state) => state.paths); - + // states const [text, setText] = useState(""); return ( @@ -23,11 +23,43 @@ export default function Testing() { + + + {text}