From 07262e91ba39610b1f0ccd7189cdabd73f197b0b Mon Sep 17 00:00:00 2001 From: eafonyang Date: Thu, 18 Jun 2026 16:12:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=BB=93=E6=9E=84=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=EF=BC=8C=E6=96=B0=E5=A2=9E=E9=83=A8=E7=BD=B2=E8=84=9A?= =?UTF-8?q?=E6=9C=AC=EF=BC=8C=E4=B8=80=E9=94=AE=E4=B8=8A=E4=BC=A0s3=20?= =?UTF-8?q?=E5=92=8C=E5=88=B7=E6=96=B0=20cdn?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .npmrc | 1 + client/public/{ => images}/IIS/iis_app1.png | Bin client/public/{ => images}/IIS/iis_app2.png | Bin client/public/{ => images}/IIS/iis_app3.png | Bin client/public/{ => images}/IIS/iis_app4.png | Bin client/public/{ => images}/IIS/iis_app5.png | Bin client/public/{ => images}/IIS/iis_app6.png | Bin client/public/{ => images}/IIS/iis_app7.png | Bin client/public/{ => images}/IIS/iis_app8.png | Bin client/public/{ => images}/favicon.ico | Bin client/public/{ => images}/home/bypass.png | Bin client/public/{ => images}/logo.png | Bin client/public/{ => images}/player/music.png | Bin client/public/{ => images}/player/pause.png | Bin client/public/{ => images}/player/play.png | Bin .../public/{ => images}/player/skip-back.png | Bin .../{ => images}/player/skip-forward.png | Bin client/public/{ => images}/vu/vu1.png | Bin client/public/{ => images}/vu/vu10.png | Bin client/public/{ => images}/vu/vu11.png | Bin client/public/{ => images}/vu/vu12.png | Bin client/public/{ => images}/vu/vu13.png | Bin client/public/{ => images}/vu/vu14.png | Bin client/public/{ => images}/vu/vu15.png | Bin client/public/{ => images}/vu/vu16.png | Bin client/public/{ => images}/vu/vu2.png | Bin client/public/{ => images}/vu/vu3.png | Bin client/public/{ => images}/vu/vu4.png | Bin client/public/{ => images}/vu/vu5.png | Bin client/public/{ => images}/vu/vu6.png | Bin client/public/{ => images}/vu/vu7.png | Bin client/public/{ => images}/vu/vu8.png | Bin client/public/{ => images}/vu/vu9.png | Bin client/src/pages/Home.tsx | 12 +- client/src/pages/SelectPage.tsx | 2 +- client/src/pages/VUPage.tsx | 2 +- pnpm-lock.yaml | 566 +----------------- scripts/deploy.sh | 98 +++ 38 files changed, 114 insertions(+), 567 deletions(-) create mode 100644 .npmrc rename client/public/{ => images}/IIS/iis_app1.png (100%) rename client/public/{ => images}/IIS/iis_app2.png (100%) rename client/public/{ => images}/IIS/iis_app3.png (100%) rename client/public/{ => images}/IIS/iis_app4.png (100%) rename client/public/{ => images}/IIS/iis_app5.png (100%) rename client/public/{ => images}/IIS/iis_app6.png (100%) rename client/public/{ => images}/IIS/iis_app7.png (100%) rename client/public/{ => images}/IIS/iis_app8.png (100%) rename client/public/{ => images}/favicon.ico (100%) rename client/public/{ => images}/home/bypass.png (100%) rename client/public/{ => images}/logo.png (100%) rename client/public/{ => images}/player/music.png (100%) rename client/public/{ => images}/player/pause.png (100%) rename client/public/{ => images}/player/play.png (100%) rename client/public/{ => images}/player/skip-back.png (100%) rename client/public/{ => images}/player/skip-forward.png (100%) rename client/public/{ => images}/vu/vu1.png (100%) rename client/public/{ => images}/vu/vu10.png (100%) rename client/public/{ => images}/vu/vu11.png (100%) rename client/public/{ => images}/vu/vu12.png (100%) rename client/public/{ => images}/vu/vu13.png (100%) rename client/public/{ => images}/vu/vu14.png (100%) rename client/public/{ => images}/vu/vu15.png (100%) rename client/public/{ => images}/vu/vu16.png (100%) rename client/public/{ => images}/vu/vu2.png (100%) rename client/public/{ => images}/vu/vu3.png (100%) rename client/public/{ => images}/vu/vu4.png (100%) rename client/public/{ => images}/vu/vu5.png (100%) rename client/public/{ => images}/vu/vu6.png (100%) rename client/public/{ => images}/vu/vu7.png (100%) rename client/public/{ => images}/vu/vu8.png (100%) rename client/public/{ => images}/vu/vu9.png (100%) create mode 100755 scripts/deploy.sh diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..319e41e --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +strict-peer-dependencies=false diff --git a/client/public/IIS/iis_app1.png b/client/public/images/IIS/iis_app1.png similarity index 100% rename from client/public/IIS/iis_app1.png rename to client/public/images/IIS/iis_app1.png diff --git a/client/public/IIS/iis_app2.png b/client/public/images/IIS/iis_app2.png similarity index 100% rename from client/public/IIS/iis_app2.png rename to client/public/images/IIS/iis_app2.png diff --git a/client/public/IIS/iis_app3.png b/client/public/images/IIS/iis_app3.png similarity index 100% rename from client/public/IIS/iis_app3.png rename to client/public/images/IIS/iis_app3.png diff --git a/client/public/IIS/iis_app4.png b/client/public/images/IIS/iis_app4.png similarity index 100% rename from client/public/IIS/iis_app4.png rename to client/public/images/IIS/iis_app4.png diff --git a/client/public/IIS/iis_app5.png b/client/public/images/IIS/iis_app5.png similarity index 100% rename from client/public/IIS/iis_app5.png rename to client/public/images/IIS/iis_app5.png diff --git a/client/public/IIS/iis_app6.png b/client/public/images/IIS/iis_app6.png similarity index 100% rename from client/public/IIS/iis_app6.png rename to client/public/images/IIS/iis_app6.png diff --git a/client/public/IIS/iis_app7.png b/client/public/images/IIS/iis_app7.png similarity index 100% rename from client/public/IIS/iis_app7.png rename to client/public/images/IIS/iis_app7.png diff --git a/client/public/IIS/iis_app8.png b/client/public/images/IIS/iis_app8.png similarity index 100% rename from client/public/IIS/iis_app8.png rename to client/public/images/IIS/iis_app8.png diff --git a/client/public/favicon.ico b/client/public/images/favicon.ico similarity index 100% rename from client/public/favicon.ico rename to client/public/images/favicon.ico diff --git a/client/public/home/bypass.png b/client/public/images/home/bypass.png similarity index 100% rename from client/public/home/bypass.png rename to client/public/images/home/bypass.png diff --git a/client/public/logo.png b/client/public/images/logo.png similarity index 100% rename from client/public/logo.png rename to client/public/images/logo.png diff --git a/client/public/player/music.png b/client/public/images/player/music.png similarity index 100% rename from client/public/player/music.png rename to client/public/images/player/music.png diff --git a/client/public/player/pause.png b/client/public/images/player/pause.png similarity index 100% rename from client/public/player/pause.png rename to client/public/images/player/pause.png diff --git a/client/public/player/play.png b/client/public/images/player/play.png similarity index 100% rename from client/public/player/play.png rename to client/public/images/player/play.png diff --git a/client/public/player/skip-back.png b/client/public/images/player/skip-back.png similarity index 100% rename from client/public/player/skip-back.png rename to client/public/images/player/skip-back.png diff --git a/client/public/player/skip-forward.png b/client/public/images/player/skip-forward.png similarity index 100% rename from client/public/player/skip-forward.png rename to client/public/images/player/skip-forward.png diff --git a/client/public/vu/vu1.png b/client/public/images/vu/vu1.png similarity index 100% rename from client/public/vu/vu1.png rename to client/public/images/vu/vu1.png diff --git a/client/public/vu/vu10.png b/client/public/images/vu/vu10.png similarity index 100% rename from client/public/vu/vu10.png rename to client/public/images/vu/vu10.png diff --git a/client/public/vu/vu11.png b/client/public/images/vu/vu11.png similarity index 100% rename from client/public/vu/vu11.png rename to client/public/images/vu/vu11.png diff --git a/client/public/vu/vu12.png b/client/public/images/vu/vu12.png similarity index 100% rename from client/public/vu/vu12.png rename to client/public/images/vu/vu12.png diff --git a/client/public/vu/vu13.png b/client/public/images/vu/vu13.png similarity index 100% rename from client/public/vu/vu13.png rename to client/public/images/vu/vu13.png diff --git a/client/public/vu/vu14.png b/client/public/images/vu/vu14.png similarity index 100% rename from client/public/vu/vu14.png rename to client/public/images/vu/vu14.png diff --git a/client/public/vu/vu15.png b/client/public/images/vu/vu15.png similarity index 100% rename from client/public/vu/vu15.png rename to client/public/images/vu/vu15.png diff --git a/client/public/vu/vu16.png b/client/public/images/vu/vu16.png similarity index 100% rename from client/public/vu/vu16.png rename to client/public/images/vu/vu16.png diff --git a/client/public/vu/vu2.png b/client/public/images/vu/vu2.png similarity index 100% rename from client/public/vu/vu2.png rename to client/public/images/vu/vu2.png diff --git a/client/public/vu/vu3.png b/client/public/images/vu/vu3.png similarity index 100% rename from client/public/vu/vu3.png rename to client/public/images/vu/vu3.png diff --git a/client/public/vu/vu4.png b/client/public/images/vu/vu4.png similarity index 100% rename from client/public/vu/vu4.png rename to client/public/images/vu/vu4.png diff --git a/client/public/vu/vu5.png b/client/public/images/vu/vu5.png similarity index 100% rename from client/public/vu/vu5.png rename to client/public/images/vu/vu5.png diff --git a/client/public/vu/vu6.png b/client/public/images/vu/vu6.png similarity index 100% rename from client/public/vu/vu6.png rename to client/public/images/vu/vu6.png diff --git a/client/public/vu/vu7.png b/client/public/images/vu/vu7.png similarity index 100% rename from client/public/vu/vu7.png rename to client/public/images/vu/vu7.png diff --git a/client/public/vu/vu8.png b/client/public/images/vu/vu8.png similarity index 100% rename from client/public/vu/vu8.png rename to client/public/images/vu/vu8.png diff --git a/client/public/vu/vu9.png b/client/public/images/vu/vu9.png similarity index 100% rename from client/public/vu/vu9.png rename to client/public/images/vu/vu9.png diff --git a/client/src/pages/Home.tsx b/client/src/pages/Home.tsx index 390313f..7b4bb2a 100644 --- a/client/src/pages/Home.tsx +++ b/client/src/pages/Home.tsx @@ -762,7 +762,7 @@ export default function Home() { onClick={() => updateSetting({ bt_next: 0 })} className="w-10 h-10 rounded-full flex items-center justify-center transition-all active:scale-95" style={{ background: "rgba(0,255,246,0.15)", border: "1px solid rgba(0,255,246,0.3)" }}> - 上一首 + 上一首 @@ -842,7 +842,7 @@ export default function Home() { onClick={() => updateSetting({ dsp_enable: bypassOn ? 1 : 0 })} > Bypass} label={homeText.vu ?? "VU表"} value={vuLabel} - thumbnail={`${import.meta.env.BASE_URL}vu/vu${(ds.vu ?? 0) + 1}.png`} + thumbnail={`${import.meta.env.BASE_URL}images/vu/vu${(ds.vu ?? 0) + 1}.png`} onClick={() => setLocation("/vu")} /> ; const iisModeImageUrl = (index: number) => - `${import.meta.env.BASE_URL}IIS/iis_app${index + 1}.png`; + `${import.meta.env.BASE_URL}images/IIS/iis_app${index + 1}.png`; /* ── Key → API field mapping ── */ const KEY_TO_SETTING: Record = { diff --git a/client/src/pages/VUPage.tsx b/client/src/pages/VUPage.tsx index e5d191f..772ca74 100644 --- a/client/src/pages/VUPage.tsx +++ b/client/src/pages/VUPage.tsx @@ -26,7 +26,7 @@ interface VUStyle { const VU_STYLES: VUStyle[] = Array.from({ length: 16 }, (_, i) => ({ index: i, name: `VU ${i + 1}`, - preview: `${import.meta.env.BASE_URL}vu/vu${i + 1}.png`, + preview: `${import.meta.env.BASE_URL}images/vu/vu${i + 1}.png`, })); export default function VUPage() { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f87e361..90e8f0c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -110,9 +110,6 @@ importers: embla-carousel-react: specifier: ^8.6.0 version: 8.6.0(react@19.2.7) - express: - specifier: ^4.21.2 - version: 4.22.2 framer-motion: specifier: ^12.23.22 version: 12.40.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7) @@ -173,13 +170,10 @@ importers: version: 0.1.1(vite@7.3.5(@types/node@24.13.1)(jiti@1.21.7)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.22.4)) '@tailwindcss/typography': specifier: ^0.5.15 - version: 0.5.19(tailwindcss@4.3.0) + version: 0.5.20(tailwindcss@4.3.0) '@tailwindcss/vite': specifier: ^4.1.3 version: 4.3.0(vite@7.3.5(@types/node@24.13.1)(jiti@1.21.7)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.22.4)) - '@types/express': - specifier: 4.17.21 - version: 4.17.21 '@types/google.maps': specifier: ^3.58.1 version: 3.65.1 @@ -222,9 +216,6 @@ importers: terser: specifier: ^5.46.1 version: 5.46.1 - tsx: - specifier: ^4.19.1 - version: 4.22.4 tw-animate-css: specifier: ^1.4.0 version: 1.4.0 @@ -1957,10 +1948,10 @@ packages: resolution: {integrity: sha512-F7HZGBeN9I0/AuuJS5PwcD8xayx5ri5GhjYUDBEVYUkexyA/giwbDNjRVrxSezE3T250OU2K/wp/ltWx3UOefg==} engines: {node: '>= 20'} - '@tailwindcss/typography@0.5.19': - resolution: {integrity: sha512-w31dd8HOx3k9vPtcQh5QHP9GwKcgbMp87j58qi6xgiBnFFtKEAgCWnDw4qUT8aHwkCp8bKvb/KGKWWHedP0AAg==} + '@tailwindcss/typography@0.5.20': + resolution: {integrity: sha512-hwbzQuNUfcPvbegQFatVPl/MY/tcM9KLl963hQ5laJKPh81TEZ1+dNG9PirGvcaDBkp+BCshExAyKVPW91dozw==} peerDependencies: - tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1' + tailwindcss: '>=3.0.0 || >=4.0.0 || insiders' '@tailwindcss/vite@4.3.0': resolution: {integrity: sha512-t6J3OrB5Fc0ExuhohouH0fWUGMYL6PTLhW+E7zIk/pdbnJARZDCwjBznFnkh5ynRnIRSI4YjtTH0t6USjJISrw==} @@ -1979,12 +1970,6 @@ packages: '@types/babel__traverse@7.28.0': resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} - '@types/body-parser@1.19.6': - resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} - - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - '@types/d3-array@3.2.2': resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} @@ -2090,12 +2075,6 @@ packages: '@types/estree@1.0.9': resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} - '@types/express-serve-static-core@4.19.6': - resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} - - '@types/express@4.17.21': - resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} - '@types/geojson@7946.0.16': resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} @@ -2105,30 +2084,18 @@ packages: '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} - '@types/http-errors@2.0.5': - resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} - '@types/katex@0.16.7': resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==} '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} - '@types/mime@1.3.5': - resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} '@types/node@24.13.1': resolution: {integrity: sha512-RSpUJGmvsJ1ZeBehQZFhIdpsz+bIpES0nIQXko4Ybq+N+kX6XvOq3Jo+iJ82FWLdblFq85AsMikd3m35jgezYg==} - '@types/qs@6.14.0': - resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} - - '@types/range-parser@1.2.7': - resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - '@types/react-dom@19.2.1': resolution: {integrity: sha512-/EEvYBdT3BflCWvTMO7YkYBHVE9Ci6XdqZciZANQgKpaiDRGOLIlRo91jbTNRQjgPFWVaRxcYc0luVNFitz57A==} peerDependencies: @@ -2137,15 +2104,6 @@ packages: '@types/react@19.2.17': resolution: {integrity: sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==} - '@types/send@0.17.5': - resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==} - - '@types/send@1.2.0': - resolution: {integrity: sha512-zBF6vZJn1IaMpg3xUF25VK3gd3l8zwE0ZLRX7dsQyQi+jp4E8mMDJNGDYnYse+bQhYwWERTxVwHpi3dMOq7RKQ==} - - '@types/serve-static@1.15.9': - resolution: {integrity: sha512-dOTIuqpWLyl3BBXU3maNQsS4A3zuuoYRNIvYSxxhebPfXg2mzWQEPne/nlJ37yOse6uGgR386uTpdsx4D0QZWA==} - '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} @@ -2196,10 +2154,6 @@ packages: '@vitest/utils@2.1.9': resolution: {integrity: sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==} - accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - acorn@8.15.0: resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} @@ -2226,9 +2180,6 @@ packages: resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} engines: {node: '>=10'} - array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} @@ -2258,10 +2209,6 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} - body-parser@1.20.5: - resolution: {integrity: sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -2274,10 +2221,6 @@ packages: buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -2286,10 +2229,6 @@ packages: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} - call-bound@1.0.4: - resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} - engines: {node: '>= 0.4'} - camelcase-css@2.0.1: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} @@ -2373,24 +2312,9 @@ packages: confbox@0.2.2: resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} - content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} - - content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} - convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - - cookie@0.7.1: - resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} - engines: {node: '>= 0.6'} - cose-base@1.0.3: resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} @@ -2573,14 +2497,6 @@ packages: dayjs@1.11.18: resolution: {integrity: sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==} - debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -2610,18 +2526,10 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} @@ -2651,9 +2559,6 @@ packages: echarts@6.1.0: resolution: {integrity: sha512-q0yaFPggC9FUdsWH4blavRWFmxdrIodbkoKNAjJudAI6CA9gNPxHtV2RcZNEepZVlk4yvBYkOkbk6HIVpIyHZA==} - ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.368: resolution: {integrity: sha512-7RckJJK4uESJF9PxvfMWd3TGqIiieUTG4HxnKaKuIpGbcr+r2ZEB3g2gAhCP3Fqm42vJSzLfgab9eva/C4/XVw==} @@ -2670,14 +2575,6 @@ packages: embla-carousel@8.6.0: resolution: {integrity: sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==} - encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - - encodeurl@2.0.0: - resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} - engines: {node: '>= 0.8'} - enhanced-resolve@5.23.0: resolution: {integrity: sha512-yJN/BOOLxcOW2aQgeif9mSnaUB8KtvmMMp56oA1kx1CRfBKbhZm2pJ+NBY+3eOboHxix8lfjWpHE0Ei5U8RbSA==} engines: {node: '>=10.13.0'} @@ -2729,9 +2626,6 @@ packages: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} - escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - escape-string-regexp@5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} @@ -2745,10 +2639,6 @@ packages: estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} @@ -2756,10 +2646,6 @@ packages: resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} engines: {node: '>=12.0.0'} - express@4.22.2: - resolution: {integrity: sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q==} - engines: {node: '>= 0.10.0'} - exsolve@1.0.7: resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} @@ -2790,10 +2676,6 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - finalhandler@1.3.1: - resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} - engines: {node: '>= 0.8'} - follow-redirects@1.16.0: resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} engines: {node: '>=4.0'} @@ -2807,10 +2689,6 @@ packages: resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} engines: {node: '>= 6'} - forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - fraction.js@5.3.4: resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} @@ -2828,10 +2706,6 @@ packages: react-dom: optional: true - fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -2946,29 +2820,14 @@ packages: html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - - http-errors@2.0.1: - resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} - engines: {node: '>= 0.8'} - https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - inline-style-parser@0.2.4: resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} @@ -2985,10 +2844,6 @@ packages: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} - ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} @@ -3249,13 +3104,6 @@ packages: mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} - - merge-descriptors@1.0.3: - resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} - merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -3263,10 +3111,6 @@ packages: mermaid@11.12.0: resolution: {integrity: sha512-ZudVx73BwrMJfCFmSSJT84y6u5brEoV8DOItdHomNLz32uBjNrelm7mg95X7g+C6UoQH/W6mBLGDEDv73JdxBg==} - methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} - micromark-core-commonmark@2.0.3: resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} @@ -3395,11 +3239,6 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} - mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} @@ -3415,9 +3254,6 @@ packages: motion-utils@12.39.0: resolution: {integrity: sha512-8nadJAJjTtqRkmRF36FoJTrywK9nnFmnPwnSMyxaOCU7GDjN9RTMJIxx9De8ErM+vpPhMccr/6fo5WciyQLnMQ==} - ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -3434,10 +3270,6 @@ packages: engines: {node: ^18 || >=20} hasBin: true - negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - next-themes@0.4.6: resolution: {integrity: sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==} peerDependencies: @@ -3460,14 +3292,6 @@ packages: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} - object-inspect@1.13.4: - resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} - engines: {node: '>= 0.4'} - - on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} - oniguruma-parser@0.12.1: resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} @@ -3483,19 +3307,12 @@ packages: parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} - parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - path-data-parser@0.1.0: resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==} path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-to-regexp@0.1.12: - resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} - pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} @@ -3607,32 +3424,16 @@ packages: property-information@7.2.0: resolution: {integrity: sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==} - proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} - proxy-from-env@2.1.0: resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==} engines: {node: '>=10'} - qs@6.15.2: - resolution: {integrity: sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==} - engines: {node: '>=0.6'} - quansync@0.2.11: resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - - raw-body@2.5.3: - resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==} - engines: {node: '>= 0.8'} - react-day-picker@9.14.0: resolution: {integrity: sha512-tBaoDWjPwe0M5pGrum4H0SR6Lyk+BO9oHnp9JbKpGKW2mlraNPgP9BMfsg5pWpwrssARmeqk7YBl2oXutZTaHA==} engines: {node: '>=18'} @@ -3818,9 +3619,6 @@ packages: rw@1.3.3: resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -3831,36 +3629,9 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - send@0.19.0: - resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} - engines: {node: '>= 0.8.0'} - - serve-static@1.16.2: - resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} - engines: {node: '>= 0.8.0'} - - setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - shiki@3.14.0: resolution: {integrity: sha512-J0yvpLI7LSig3Z3acIuDLouV5UCKQqu8qOArwMx+/yPVC3WRMgrP67beaG8F+j4xfEWE0eVC4GeBCIXeOPra1g==} - side-channel-list@1.0.1: - resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} - engines: {node: '>= 0.4'} - - side-channel-map@1.0.1: - resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} - engines: {node: '>= 0.4'} - - side-channel-weakmap@1.0.2: - resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} - engines: {node: '>= 0.4'} - - side-channel@1.1.0: - resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} - engines: {node: '>= 0.4'} - siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} @@ -3887,14 +3658,6 @@ packages: stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - - statuses@2.0.2: - resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} - engines: {node: '>= 0.8'} - std-env@3.9.0: resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} @@ -3988,10 +3751,6 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} @@ -4019,10 +3778,6 @@ packages: tw-animate-css@1.4.0: resolution: {integrity: sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==} - type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} - typescript@5.6.3: resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} engines: {node: '>=14.17'} @@ -4058,10 +3813,6 @@ packages: unist-util-visit@5.1.0: resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} - unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - update-browserslist-db@1.2.3: resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} hasBin: true @@ -4096,18 +3847,10 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - uuid@11.1.0: resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} hasBin: true - vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - vaul@1.1.2: resolution: {integrity: sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA==} peerDependencies: @@ -5679,7 +5422,7 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.3.0 '@tailwindcss/oxide-win32-x64-msvc': 4.3.0 - '@tailwindcss/typography@0.5.19(tailwindcss@4.3.0)': + '@tailwindcss/typography@0.5.20(tailwindcss@4.3.0)': dependencies: postcss-selector-parser: 6.0.10 tailwindcss: 4.3.0 @@ -5712,15 +5455,6 @@ snapshots: dependencies: '@babel/types': 7.28.4 - '@types/body-parser@1.19.6': - dependencies: - '@types/connect': 3.4.38 - '@types/node': 24.13.1 - - '@types/connect@3.4.38': - dependencies: - '@types/node': 24.13.1 - '@types/d3-array@3.2.2': {} '@types/d3-axis@3.0.6': @@ -5850,20 +5584,6 @@ snapshots: '@types/estree@1.0.9': {} - '@types/express-serve-static-core@4.19.6': - dependencies: - '@types/node': 24.13.1 - '@types/qs': 6.14.0 - '@types/range-parser': 1.2.7 - '@types/send': 1.2.0 - - '@types/express@4.17.21': - dependencies: - '@types/body-parser': 1.19.6 - '@types/express-serve-static-core': 4.19.6 - '@types/qs': 6.14.0 - '@types/serve-static': 1.15.9 - '@types/geojson@7946.0.16': {} '@types/google.maps@3.65.1': {} @@ -5872,26 +5592,18 @@ snapshots: dependencies: '@types/unist': 3.0.3 - '@types/http-errors@2.0.5': {} - '@types/katex@0.16.7': {} '@types/mdast@4.0.4': dependencies: '@types/unist': 3.0.3 - '@types/mime@1.3.5': {} - '@types/ms@2.1.0': {} '@types/node@24.13.1': dependencies: undici-types: 7.18.2 - '@types/qs@6.14.0': {} - - '@types/range-parser@1.2.7': {} - '@types/react-dom@19.2.1(@types/react@19.2.17)': dependencies: '@types/react': 19.2.17 @@ -5900,21 +5612,6 @@ snapshots: dependencies: csstype: 3.2.3 - '@types/send@0.17.5': - dependencies: - '@types/mime': 1.3.5 - '@types/node': 24.13.1 - - '@types/send@1.2.0': - dependencies: - '@types/node': 24.13.1 - - '@types/serve-static@1.15.9': - dependencies: - '@types/http-errors': 2.0.5 - '@types/node': 24.13.1 - '@types/send': 0.17.5 - '@types/trusted-types@2.0.7': optional: true @@ -5978,11 +5675,6 @@ snapshots: loupe: 3.2.1 tinyrainbow: 1.2.0 - accepts@1.3.8: - dependencies: - mime-types: 2.1.35 - negotiator: 0.6.3 - acorn@8.15.0: {} add@2.0.6: {} @@ -6006,8 +5698,6 @@ snapshots: dependencies: tslib: 2.8.1 - array-flatten@1.1.1: {} - assertion-error@2.0.1: {} asynckit@0.4.0: {} @@ -6037,23 +5727,6 @@ snapshots: binary-extensions@2.3.0: {} - body-parser@1.20.5: - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.1 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.15.2 - raw-body: 2.5.3 - type-is: 1.6.18 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -6068,8 +5741,6 @@ snapshots: buffer-from@1.1.2: {} - bytes@3.1.2: {} - cac@6.7.14: {} call-bind-apply-helpers@1.0.2: @@ -6077,11 +5748,6 @@ snapshots: es-errors: 1.3.0 function-bind: 1.1.2 - call-bound@1.0.4: - dependencies: - call-bind-apply-helpers: 1.0.2 - get-intrinsic: 1.3.0 - camelcase-css@2.0.1: {} caniuse-lite@1.0.30001797: {} @@ -6168,18 +5834,8 @@ snapshots: confbox@0.2.2: {} - content-disposition@0.5.4: - dependencies: - safe-buffer: 5.2.1 - - content-type@1.0.5: {} - convert-source-map@2.0.0: {} - cookie-signature@1.0.6: {} - - cookie@0.7.1: {} - cose-base@1.0.3: dependencies: layout-base: 1.0.2 @@ -6384,10 +6040,6 @@ snapshots: dayjs@1.11.18: {} - debug@2.6.9: - dependencies: - ms: 2.0.0 - debug@4.4.3: dependencies: ms: 2.1.3 @@ -6410,12 +6062,8 @@ snapshots: delayed-stream@1.0.0: {} - depd@2.0.0: {} - dequal@2.0.3: {} - destroy@1.2.0: {} - detect-libc@2.1.2: {} detect-node-es@1.1.0: {} @@ -6448,8 +6096,6 @@ snapshots: tslib: 2.3.0 zrender: 6.1.0 - ee-first@1.1.1: {} - electron-to-chromium@1.5.368: {} embla-carousel-react@8.6.0(react@19.2.7): @@ -6464,10 +6110,6 @@ snapshots: embla-carousel@8.6.0: {} - encodeurl@1.0.2: {} - - encodeurl@2.0.0: {} - enhanced-resolve@5.23.0: dependencies: graceful-fs: 4.2.11 @@ -6604,11 +6246,10 @@ snapshots: '@esbuild/win32-arm64': 0.28.0 '@esbuild/win32-ia32': 0.28.0 '@esbuild/win32-x64': 0.28.0 + optional: true escalade@3.2.0: {} - escape-html@1.0.3: {} - escape-string-regexp@5.0.0: {} estree-util-is-identifier-name@3.0.0: {} @@ -6619,48 +6260,10 @@ snapshots: dependencies: '@types/estree': 1.0.8 - etag@1.8.1: {} - eventemitter3@4.0.7: {} expect-type@1.2.2: {} - express@4.22.2: - dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.5 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookie: 0.7.1 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.3.1 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.3 - methods: 1.1.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - path-to-regexp: 0.1.12 - proxy-addr: 2.0.7 - qs: 6.15.2 - range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.19.0 - serve-static: 1.16.2 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - exsolve@1.0.7: {} extend@3.0.2: {} @@ -6687,18 +6290,6 @@ snapshots: dependencies: to-regex-range: 5.0.1 - finalhandler@1.3.1: - dependencies: - debug: 2.6.9 - encodeurl: 2.0.0 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.1 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - follow-redirects@1.16.0: {} form-data@4.0.5: @@ -6709,8 +6300,6 @@ snapshots: hasown: 2.0.4 mime-types: 2.1.35 - forwarded@0.2.0: {} - fraction.js@5.3.4: {} framer-motion@12.40.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7): @@ -6722,8 +6311,6 @@ snapshots: react: 19.2.7 react-dom: 19.2.7(react@19.2.7) - fresh@0.5.2: {} - fsevents@2.3.3: optional: true @@ -6911,22 +6498,6 @@ snapshots: html-void-elements@3.0.0: {} - http-errors@2.0.0: - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - - http-errors@2.0.1: - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.2 - toidentifier: 1.0.1 - https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.0 @@ -6934,16 +6505,10 @@ snapshots: transitivePeerDependencies: - supports-color - iconv-lite@0.4.24: - dependencies: - safer-buffer: 2.1.2 - iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 - inherits@2.0.4: {} - inline-style-parser@0.2.4: {} input-otp@1.4.2(react-dom@19.2.7(react@19.2.7))(react@19.2.7): @@ -6955,8 +6520,6 @@ snapshots: internmap@2.0.3: {} - ipaddr.js@1.9.1: {} - is-alphabetical@2.0.1: {} is-alphanumerical@2.0.1: @@ -7295,10 +6858,6 @@ snapshots: dependencies: '@types/mdast': 4.0.4 - media-typer@0.3.0: {} - - merge-descriptors@1.0.3: {} - merge2@1.4.1: {} mermaid@11.12.0: @@ -7326,8 +6885,6 @@ snapshots: transitivePeerDependencies: - supports-color - methods@1.1.2: {} - micromark-core-commonmark@2.0.3: dependencies: decode-named-character-reference: 1.3.0 @@ -7572,8 +7129,6 @@ snapshots: dependencies: mime-db: 1.52.0 - mime@1.6.0: {} - mitt@3.0.1: {} mlly@1.8.0: @@ -7591,8 +7146,6 @@ snapshots: motion-utils@12.39.0: {} - ms@2.0.0: {} - ms@2.1.3: {} mz@2.7.0: @@ -7605,8 +7158,6 @@ snapshots: nanoid@5.1.11: {} - negotiator@0.6.3: {} - next-themes@0.4.6(react-dom@19.2.7(react@19.2.7))(react@19.2.7): dependencies: react: 19.2.7 @@ -7620,12 +7171,6 @@ snapshots: object-hash@3.0.0: {} - object-inspect@1.13.4: {} - - on-finished@2.4.1: - dependencies: - ee-first: 1.1.1 - oniguruma-parser@0.12.1: {} oniguruma-to-es@4.3.3: @@ -7650,14 +7195,10 @@ snapshots: dependencies: entities: 6.0.1 - parseurl@1.3.3: {} - path-data-parser@0.1.0: {} path-parse@1.0.7: {} - path-to-regexp@0.1.12: {} - pathe@1.1.2: {} pathe@2.0.3: {} @@ -7750,30 +7291,12 @@ snapshots: property-information@7.2.0: {} - proxy-addr@2.0.7: - dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - proxy-from-env@2.1.0: {} - qs@6.15.2: - dependencies: - side-channel: 1.1.0 - quansync@0.2.11: {} queue-microtask@1.2.3: {} - range-parser@1.2.1: {} - - raw-body@2.5.3: - dependencies: - bytes: 3.1.2 - http-errors: 2.0.1 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - react-day-picker@9.14.0(react@19.2.7): dependencies: '@date-fns/tz': 1.4.1 @@ -8027,43 +7550,12 @@ snapshots: rw@1.3.3: {} - safe-buffer@5.2.1: {} - safer-buffer@2.1.2: {} scheduler@0.27.0: {} semver@6.3.1: {} - send@0.19.0: - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - - serve-static@1.16.2: - dependencies: - encodeurl: 2.0.0 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 0.19.0 - transitivePeerDependencies: - - supports-color - - setprototypeof@1.2.0: {} - shiki@3.14.0: dependencies: '@shikijs/core': 3.14.0 @@ -8075,34 +7567,6 @@ snapshots: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 - side-channel-list@1.0.1: - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.4 - - side-channel-map@1.0.1: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - object-inspect: 1.13.4 - - side-channel-weakmap@1.0.2: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - object-inspect: 1.13.4 - side-channel-map: 1.0.1 - - side-channel@1.1.0: - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.4 - side-channel-list: 1.0.1 - side-channel-map: 1.0.1 - side-channel-weakmap: 1.0.2 - siginfo@2.0.0: {} sonner@2.0.7(react-dom@19.2.7(react@19.2.7))(react@19.2.7): @@ -8123,10 +7587,6 @@ snapshots: stackback@0.0.2: {} - statuses@2.0.1: {} - - statuses@2.0.2: {} - std-env@3.9.0: {} streamdown@1.6.11(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2)(react@19.2.7): @@ -8264,8 +7724,6 @@ snapshots: dependencies: is-number: 7.0.0 - toidentifier@1.0.1: {} - trim-lines@3.0.1: {} trough@2.2.0: {} @@ -8283,14 +7741,10 @@ snapshots: esbuild: 0.28.0 optionalDependencies: fsevents: 2.3.3 + optional: true tw-animate-css@1.4.0: {} - type-is@1.6.18: - dependencies: - media-typer: 0.3.0 - mime-types: 2.1.35 - typescript@5.6.3: {} ufo@1.6.1: {} @@ -8340,8 +7794,6 @@ snapshots: unist-util-is: 6.0.1 unist-util-visit-parents: 6.0.2 - unpipe@1.0.0: {} - update-browserslist-db@1.2.3(browserslist@4.28.2): dependencies: browserslist: 4.28.2 @@ -8369,12 +7821,8 @@ snapshots: util-deprecate@1.0.2: {} - utils-merge@1.0.1: {} - uuid@11.1.0: {} - vary@1.1.2: {} - vaul@1.1.2(@types/react-dom@19.2.1(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7): dependencies: '@radix-ui/react-dialog': 1.1.16(@types/react-dom@19.2.1(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) diff --git a/scripts/deploy.sh b/scripts/deploy.sh new file mode 100755 index 0000000..3b162f3 --- /dev/null +++ b/scripts/deploy.sh @@ -0,0 +1,98 @@ +#!/bin/bash + +# ============================================================ +# 部署脚本 - 支持 test 环境与 images 目录排除 +# +# 用法: +# ./scripts/deploy.sh 上传至正式环境 (v2) +# ./scripts/deploy.sh -test 上传至测试环境 (test) +# ./scripts/deploy.sh -eximg 排除 images 目录,上传至正式环境 +# ./scripts/deploy.sh -eximg -test 排除 images 目录,上传至测试环境 +# -reload 参数:上传完成后刷新 CloudFront 缓存 +# ./scripts/deploy.sh -reload 上传正式环境并刷新缓存 +# ./scripts/deploy.sh -eximg -test -reload 排除 images,上传测试环境并刷新缓存 +# ============================================================ + +set -e + +# 自动识别项目名称 (x8 / x9),依据脚本所在的项目根目录名 +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_ROOT="$(basename "$(dirname "$SCRIPT_DIR")")" +PROJECT_NAME="$(echo "$PROJECT_ROOT" | grep -oE '^(x8|x9)')" + +if [ -z "$PROJECT_NAME" ]; then + echo "错误: 无法从路径 '$PROJECT_ROOT' 识别项目名称 (x8/x9)" + exit 1 +fi + +# 解析参数 +TARGET_ENV="prod" # 默认正式环境 +EXCLUDE_IMAGES=false # 默认不排除 images +RELOAD=false # 默认不刷新 CloudFront 缓存 + +for arg in "$@"; do + case "$arg" in + -test) + TARGET_ENV="test" + ;; + -eximg) + EXCLUDE_IMAGES=true + ;; + -reload) + RELOAD=true + ;; + *) + echo "未知参数: $arg" + echo "用法: ./scripts/deploy.sh [-test] [-eximg] [-reload]" + exit 1 + ;; + esac +done + +# 确定 S3 目标路径与 CloudFront 刷新路径 +if [ "$TARGET_ENV" = "test" ]; then + S3_PATH="s3://luxsin-app-bucket/${PROJECT_NAME}/test/" + CF_PATH="/${PROJECT_NAME}/test/*" +else + S3_PATH="s3://luxsin-app-bucket/${PROJECT_NAME}/v2/" + CF_PATH="/${PROJECT_NAME}/v2/*" +fi + +# CloudFront 分配 ID +DISTRIBUTION_ID="EUS4XQ8Y0W2ZV" + +# 构建 aws s3 sync 命令参数(使用数组,避免引号转义问题) +CMD_ARGS=("aws" "s3" "sync" "./dist" "$S3_PATH" "--delete") + +if [ "$EXCLUDE_IMAGES" = true ]; then + CMD_ARGS+=("--exclude" "*images/*") +fi + +# 输出部署信息 +echo "==========================================" +echo "项目: ${PROJECT_NAME}" +echo "环境: ${TARGET_ENV}" +echo "目标: ${S3_PATH}" +[ "$EXCLUDE_IMAGES" = true ] && echo "排除: *images/*" +echo "刷新: ${RELOAD}" +echo "命令: ${CMD_ARGS[*]}" +echo "==========================================" +echo "" + +# 执行同步 +"${CMD_ARGS[@]}" + +echo "" + +# 刷新 CloudFront 缓存 +if [ "$RELOAD" = true ]; then + echo "刷新 CloudFront 缓存..." + echo "路径: ${CF_PATH}" + aws cloudfront create-invalidation \ + --distribution-id "$DISTRIBUTION_ID" \ + --paths "$CF_PATH" + echo "" + echo "CloudFront 缓存刷新完成!" +fi + +echo "部署完成!"