From 915ab12094884b3f8e8a1f522a54ef946553e8a4 Mon Sep 17 00:00:00 2001
From: Jinhan
Date: Sun, 15 Dec 2024 23:52:27 +0900
Subject: [PATCH] =?UTF-8?q?chore:=20sprint9=20=EB=AF=B8=EC=85=98=20?=
=?UTF-8?q?=EC=A4=80=EB=B9=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sprint9/.eslintrc.json | 3 +
sprint9/.gitignore | 241 +
sprint9/README.md | 99 +
.../components/ArticleDetail/ArticleInfo.jsx | 76 +
.../components/ArticleDetail/CommentPost.jsx | 34 +
sprint9/components/ArticleDetail/Comments.jsx | 47 +
.../ArticleDetail/EditDeletMenu.jsx | 40 +
.../components/ArticleDetail/NoneComments.jsx | 30 +
.../CommunityFeed/ArticleSearchInput.jsx | 14 +
.../components/CommunityFeed/ArticlesList.jsx | 66 +
.../components/CommunityFeed/BestArticles.jsx | 67 +
.../components/CommunityFeed/DropdownList.jsx | 60 +
sprint9/components/HomePage/Hero.jsx | 44 +
sprint9/components/HomePage/Section1.jsx | 41 +
sprint9/components/HomePage/Section2.jsx | 43 +
sprint9/components/HomePage/Section3.jsx | 41 +
sprint9/components/HomePage/UnderBanner.jsx | 32 +
sprint9/hooks/useArticle.js | 21 +
sprint9/hooks/useArticleId.js | 32 +
sprint9/hooks/useArticlePost.js | 27 +
sprint9/hooks/useComment.js | 37 +
sprint9/jsconfig.json | 7 +
sprint9/layouts/Footer.jsx | 59 +
sprint9/layouts/Header.jsx | 67 +
sprint9/lib/axios.js | 7 +
sprint9/lib/formatDate.js | 7 +
sprint9/lib/pandaMarketApiService.js | 100 +
sprint9/next.config.mjs | 6 +
sprint9/package-lock.json | 4540 +++++++++++++++++
sprint9/package.json | 22 +
sprint9/pages/404.jsx | 86 +
sprint9/pages/_app.js | 35 +
sprint9/pages/_document.js | 14 +
sprint9/pages/article-detail/[id].jsx | 54 +
sprint9/pages/article-post.jsx | 103 +
sprint9/pages/community-feed.jsx | 26 +
sprint9/pages/index.js | 20 +
sprint9/pages/items/[id].jsx | 11 +
sprint9/pages/items/index.jsx | 11 +
sprint9/pages/login.jsx | 111 +
sprint9/pages/signIn.jsx | 133 +
.../public/images/404page/Not_Found_img.png | Bin 0 -> 76797 bytes
.../images/404page/panda_land-left-medium.png | Bin 0 -> 171759 bytes
.../images/404page/panda_land-rigt_big.png | Bin 0 -> 223098 bytes
.../public/images/404page/panda_president.png | Bin 0 -> 38843 bytes
.../public/images/404page/sky_cloud_1-img.png | Bin 0 -> 40348 bytes
.../public/images/404page/sky_cloud_2-img.png | Bin 0 -> 39253 bytes
.../public/images/default/FE_default_Img.png | Bin 0 -> 5184 bytes
.../images/default/None_comments_Img.png | Bin 0 -> 76803 bytes
.../images/home/bottom-banner-image.png | Bin 0 -> 72091 bytes
sprint9/public/images/home/feature1-image.png | Bin 0 -> 25334 bytes
sprint9/public/images/home/feature2-image.png | Bin 0 -> 30978 bytes
sprint9/public/images/home/feature3-image.png | Bin 0 -> 21270 bytes
sprint9/public/images/home/hero-image.png | Bin 0 -> 71399 bytes
sprint9/public/images/icons/backArrow.png | Bin 0 -> 336 bytes
sprint9/public/images/icons/favicon.ico | Bin 0 -> 15406 bytes
sprint9/public/images/icons/heart.png | Bin 0 -> 962 bytes
sprint9/public/images/icons/ic_X.png | Bin 0 -> 1075 bytes
sprint9/public/images/icons/ic_medal.png | Bin 0 -> 454 bytes
sprint9/public/images/icons/ic_profile.png | Bin 0 -> 798 bytes
.../public/images/icons/ic_profile_big.png | Bin 0 -> 1349 bytes
sprint9/public/images/icons/invisible_eye.png | Bin 0 -> 821 bytes
sprint9/public/images/icons/left.png | Bin 0 -> 308 bytes
sprint9/public/images/icons/menu.png | Bin 0 -> 273 bytes
sprint9/public/images/icons/right.png | Bin 0 -> 324 bytes
sprint9/public/images/icons/visible_eye.png | Bin 0 -> 695 bytes
.../public/images/logo/panda-market-logo.png | Bin 0 -> 2955 bytes
sprint9/public/images/logo/panda-text-log.png | Bin 0 -> 1644 bytes
sprint9/public/images/social/google-logo.png | Bin 0 -> 2266 bytes
sprint9/public/images/social/ic_facebook.png | Bin 0 -> 633 bytes
.../public/images/social/ic_instargram.png | Bin 0 -> 626 bytes
sprint9/public/images/social/ic_twitter.png | Bin 0 -> 330 bytes
sprint9/public/images/social/ic_youtube.png | Bin 0 -> 477 bytes
sprint9/public/images/social/kakao-logo.png | Bin 0 -> 1580 bytes
.../ArticleDetail/ArticleInfo.module.css | 145 +
.../ArticleDetail/CommentPost.module.css | 76 +
.../ArticleDetail/Comments.module.css | 72 +
.../ArticleDetail/EditDeletMenu.module.css | 51 +
.../ArticleDetail/NoneComments.module.css | 23 +
.../ArticleSearchInput.module.css | 25 +
.../CommunityFeed/Articles.module.css | 80 +
.../CommunityFeed/BestArticles.module.css | 96 +
.../CommunityFeed/DropdownList.module.css | 112 +
sprint9/styles/globals.css | 68 +
sprint9/styles/layouts/Footer.module.css | 81 +
sprint9/styles/layouts/Header.module.css | 200 +
sprint9/styles/pages/404.module.css | 92 +
sprint9/styles/pages/ArticleDetail.module.css | 42 +
sprint9/styles/pages/ArticlePost.module.css | 148 +
sprint9/styles/pages/CommunityFeed.module.css | 53 +
sprint9/styles/pages/HomePage/Hero.css | 103 +
sprint9/styles/pages/HomePage/Section1.css | 138 +
sprint9/styles/pages/HomePage/Section2.css | 104 +
sprint9/styles/pages/HomePage/Section3.css | 90 +
sprint9/styles/pages/HomePage/UnderBanner.css | 23 +
sprint9/styles/pages/HomePage/common.css | 79 +
sprint9/styles/pages/ItemDetail.module.css | 0
sprint9/styles/pages/Items.module.css | 0
sprint9/styles/pages/Login.module.css | 406 ++
sprint9/styles/pages/SignIn.module.css | 208 +
100 files changed, 9029 insertions(+)
create mode 100644 sprint9/.eslintrc.json
create mode 100644 sprint9/.gitignore
create mode 100644 sprint9/README.md
create mode 100644 sprint9/components/ArticleDetail/ArticleInfo.jsx
create mode 100644 sprint9/components/ArticleDetail/CommentPost.jsx
create mode 100644 sprint9/components/ArticleDetail/Comments.jsx
create mode 100644 sprint9/components/ArticleDetail/EditDeletMenu.jsx
create mode 100644 sprint9/components/ArticleDetail/NoneComments.jsx
create mode 100644 sprint9/components/CommunityFeed/ArticleSearchInput.jsx
create mode 100644 sprint9/components/CommunityFeed/ArticlesList.jsx
create mode 100644 sprint9/components/CommunityFeed/BestArticles.jsx
create mode 100644 sprint9/components/CommunityFeed/DropdownList.jsx
create mode 100644 sprint9/components/HomePage/Hero.jsx
create mode 100644 sprint9/components/HomePage/Section1.jsx
create mode 100644 sprint9/components/HomePage/Section2.jsx
create mode 100644 sprint9/components/HomePage/Section3.jsx
create mode 100644 sprint9/components/HomePage/UnderBanner.jsx
create mode 100644 sprint9/hooks/useArticle.js
create mode 100644 sprint9/hooks/useArticleId.js
create mode 100644 sprint9/hooks/useArticlePost.js
create mode 100644 sprint9/hooks/useComment.js
create mode 100644 sprint9/jsconfig.json
create mode 100644 sprint9/layouts/Footer.jsx
create mode 100644 sprint9/layouts/Header.jsx
create mode 100644 sprint9/lib/axios.js
create mode 100644 sprint9/lib/formatDate.js
create mode 100644 sprint9/lib/pandaMarketApiService.js
create mode 100644 sprint9/next.config.mjs
create mode 100644 sprint9/package-lock.json
create mode 100644 sprint9/package.json
create mode 100644 sprint9/pages/404.jsx
create mode 100644 sprint9/pages/_app.js
create mode 100644 sprint9/pages/_document.js
create mode 100644 sprint9/pages/article-detail/[id].jsx
create mode 100644 sprint9/pages/article-post.jsx
create mode 100644 sprint9/pages/community-feed.jsx
create mode 100644 sprint9/pages/index.js
create mode 100644 sprint9/pages/items/[id].jsx
create mode 100644 sprint9/pages/items/index.jsx
create mode 100644 sprint9/pages/login.jsx
create mode 100644 sprint9/pages/signIn.jsx
create mode 100644 sprint9/public/images/404page/Not_Found_img.png
create mode 100644 sprint9/public/images/404page/panda_land-left-medium.png
create mode 100644 sprint9/public/images/404page/panda_land-rigt_big.png
create mode 100644 sprint9/public/images/404page/panda_president.png
create mode 100644 sprint9/public/images/404page/sky_cloud_1-img.png
create mode 100644 sprint9/public/images/404page/sky_cloud_2-img.png
create mode 100644 sprint9/public/images/default/FE_default_Img.png
create mode 100644 sprint9/public/images/default/None_comments_Img.png
create mode 100644 sprint9/public/images/home/bottom-banner-image.png
create mode 100644 sprint9/public/images/home/feature1-image.png
create mode 100644 sprint9/public/images/home/feature2-image.png
create mode 100644 sprint9/public/images/home/feature3-image.png
create mode 100644 sprint9/public/images/home/hero-image.png
create mode 100644 sprint9/public/images/icons/backArrow.png
create mode 100644 sprint9/public/images/icons/favicon.ico
create mode 100644 sprint9/public/images/icons/heart.png
create mode 100644 sprint9/public/images/icons/ic_X.png
create mode 100644 sprint9/public/images/icons/ic_medal.png
create mode 100644 sprint9/public/images/icons/ic_profile.png
create mode 100644 sprint9/public/images/icons/ic_profile_big.png
create mode 100644 sprint9/public/images/icons/invisible_eye.png
create mode 100644 sprint9/public/images/icons/left.png
create mode 100644 sprint9/public/images/icons/menu.png
create mode 100644 sprint9/public/images/icons/right.png
create mode 100644 sprint9/public/images/icons/visible_eye.png
create mode 100644 sprint9/public/images/logo/panda-market-logo.png
create mode 100644 sprint9/public/images/logo/panda-text-log.png
create mode 100644 sprint9/public/images/social/google-logo.png
create mode 100644 sprint9/public/images/social/ic_facebook.png
create mode 100644 sprint9/public/images/social/ic_instargram.png
create mode 100644 sprint9/public/images/social/ic_twitter.png
create mode 100644 sprint9/public/images/social/ic_youtube.png
create mode 100644 sprint9/public/images/social/kakao-logo.png
create mode 100644 sprint9/styles/components/ArticleDetail/ArticleInfo.module.css
create mode 100644 sprint9/styles/components/ArticleDetail/CommentPost.module.css
create mode 100644 sprint9/styles/components/ArticleDetail/Comments.module.css
create mode 100644 sprint9/styles/components/ArticleDetail/EditDeletMenu.module.css
create mode 100644 sprint9/styles/components/ArticleDetail/NoneComments.module.css
create mode 100644 sprint9/styles/components/CommunityFeed/ArticleSearchInput.module.css
create mode 100644 sprint9/styles/components/CommunityFeed/Articles.module.css
create mode 100644 sprint9/styles/components/CommunityFeed/BestArticles.module.css
create mode 100644 sprint9/styles/components/CommunityFeed/DropdownList.module.css
create mode 100644 sprint9/styles/globals.css
create mode 100644 sprint9/styles/layouts/Footer.module.css
create mode 100644 sprint9/styles/layouts/Header.module.css
create mode 100644 sprint9/styles/pages/404.module.css
create mode 100644 sprint9/styles/pages/ArticleDetail.module.css
create mode 100644 sprint9/styles/pages/ArticlePost.module.css
create mode 100644 sprint9/styles/pages/CommunityFeed.module.css
create mode 100644 sprint9/styles/pages/HomePage/Hero.css
create mode 100644 sprint9/styles/pages/HomePage/Section1.css
create mode 100644 sprint9/styles/pages/HomePage/Section2.css
create mode 100644 sprint9/styles/pages/HomePage/Section3.css
create mode 100644 sprint9/styles/pages/HomePage/UnderBanner.css
create mode 100644 sprint9/styles/pages/HomePage/common.css
create mode 100644 sprint9/styles/pages/ItemDetail.module.css
create mode 100644 sprint9/styles/pages/Items.module.css
create mode 100644 sprint9/styles/pages/Login.module.css
create mode 100644 sprint9/styles/pages/SignIn.module.css
diff --git a/sprint9/.eslintrc.json b/sprint9/.eslintrc.json
new file mode 100644
index 000000000..bffb357a7
--- /dev/null
+++ b/sprint9/.eslintrc.json
@@ -0,0 +1,3 @@
+{
+ "extends": "next/core-web-vitals"
+}
diff --git a/sprint9/.gitignore b/sprint9/.gitignore
new file mode 100644
index 000000000..130d83e6d
--- /dev/null
+++ b/sprint9/.gitignore
@@ -0,0 +1,241 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.*
+.yarn/*
+!.yarn/patches
+!.yarn/plugins
+!.yarn/releases
+!.yarn/versions
+!.yarn/cache
+
+# testing
+/coverage
+
+# next.js
+/.next/
+/out/
+
+# production
+/build
+
+# misc
+.DS_Store
+*.pem
+
+# debug
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# env files (can opt-in for committing if needed)
+.env*
+
+# typescript
+*.tsbuildinfo
+next-env.d.ts
+
+# macOS
+.Icon*
+
+# Thumbnails
+._*
+
+### Windows ###
+# Windows thumbnail cache files
+Thumbs.db
+Thumbs.db:encryptable
+ehthumbs.db
+ehthumbs_vista.db
+
+# Dump file
+*.stackdump
+
+# Folder config file
+[Dd]esktop.ini
+
+# Recycle Bin used on file shares
+$RECYCLE.BIN/
+
+# Windows Installer files
+*.cab
+*.msi
+*.msix
+*.msm
+*.msp
+
+# Windows shortcuts
+*.lnk
+
+### yarn ###
+/.yarn/
+
+### React ###
+.DS_*
+**/*.backup.*
+**/*.back.*
+
+### ReactNative ###
+# React Native Stack Base
+
+.expo
+__generated__
+
+### OTHER ###
+# Node.js logs
+logs
+*.log
+lerna-debug.log*
+.pnpm-debug.log*
+report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
+
+# Runtime data
+pids
+*.pid
+*.seed
+*.pid.lock
+
+# nyc test coverage
+.nyc_output
+
+# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# Bower dependency directory (https://bower.io/)
+bower_components
+
+# Snowpack dependency directory (https://snowpack.dev/)
+web_modules/
+
+# Microbundle cache
+.rpt2_cache/
+.rts2_cache_cjs/
+.rts2_cache_es/
+.rts2_cache_umd/
+
+# parcel-bundler cache (https://parceljs.org/)
+.cache
+.parcel-cache
+
+# Optional eslint cache
+.eslintcache
+
+# Stores VSCode versions used for testing VSCode extensions
+.vscode-test
+
+# Serverless directories
+.serverless/
+
+# FuseBox cache
+.fusebox/
+
+# DynamoDB Local files
+.dynamodb/
+
+# TernJS port file
+.tern-port
+
+# yarn v2
+.yarn-integrity
+
+# General
+.DS_Store
+.AppleDouble
+.LSOverride
+
+### ReactNative.Android Stack ###
+# Gradle files
+.gradle/
+build/
+
+# Local configuration file (sdk path, etc)
+local.properties
+
+# Log/OS Files
+
+# Android Studio generated files and folders
+captures/
+.externalNativeBuild/
+.cxx/
+*.apk
+output.json
+
+# IntelliJ
+*.iml
+.idea/
+misc.xml
+deploymentTargetDropDown.xml
+render.experimental.xml
+
+# Keystore files
+*.jks
+*.keystore
+
+# Google Services (e.g. APIs or Firebase)
+google-services.json
+
+# Android Profiling
+*.hprof
+
+### ReactNative.Xcode Stack ###
+## User settings
+xcuserdata/
+
+## Xcode 8 and earlier
+*.xcscmblueprint
+*.xccheckout
+
+### ReactNative.Buck Stack ###
+buck-out/
+.buckconfig.local
+.buckd/
+.buckversion
+.fakebuckversion
+
+### ReactNative.Gradle Stack ###
+.gradle
+**/build/
+!src/**/build/
+
+# Ignore Gradle GUI config
+gradle-app.setting
+
+### ReactNative.Linux Stack ###
+*~
+
+# temporary files which can be created if a process still has a handle open of a deleted file
+.fuse_hidden*
+
+# KDE directory preferences
+.directory
+
+# Linux trash folder which might appear on any partition or disk
+.Trash-*
+
+# .nfs files are created when an open file is removed but is still being accessed
+.nfs*
+
+### VisualStudioCode ###
+.vscode/*
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
+!.vscode/*.code-snippets
+
+### VisualStudioCode Patch ###
+# Ignore all local history of files
+.history
+.ionide
+
+### Webstorm
+.idea/
+
+# Stores IntelliJ IDEA project settings
+*.iml
+
+# IDEs
+.idea/
+.vscode
diff --git a/sprint9/README.md b/sprint9/README.md
new file mode 100644
index 000000000..705e683a1
--- /dev/null
+++ b/sprint9/README.md
@@ -0,0 +1,99 @@
+## ๐ ์ํด๋ฆฌ ๋ฏธ์
์๊ตฌ์ฌํญ
+
+### **๊ธฐ๋ณธ ์๊ตฌ์ฌํญ**
+
+#### **๊ณตํต**
+- [ ] Github์ ์ํด๋ฆฌ ๋ฏธ์
PR์ ๋ง๋ค์ด ์ฃผ์ธ์.
+- [ ] React ํน์ Next.js๋ฅผ ์ฌ์ฉํด ์งํํฉ๋๋ค.
+- [ ] ํ๋ก ํธ์๋์์ API ์์ฒญ ๊ตฌํ์ TanStack React Query๋ฅผ ํ์ฉํด ์ฃผ์ธ์.
+- [ ] API๋ `https://panda-market-api.vercel.app`๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ช
์ธ๋ `https://panda-market-api.vercel.app/docs`๋ฅผ ํ์ธํด ์ฃผ์ธ์.
+
+---
+
+#### **๋ก๊ทธ์ธ/ํ์๊ฐ์
ํ์ด์ง**
+- [ ] JavaScript๋ก ๊ตฌํํ ๋ก๊ทธ์ธ/ํ์๊ฐ์
ํ์ด์ง๋ฅผ React.js ํน์ Next.js๋ก ๋ง์ด๊ทธ๋ ์ด์
ํด ์ฃผ์ธ์.
+
+---
+
+#### **๋ก๊ทธ์ธ ํ์ด์ง**
+- [ ] "ํ์ ๊ฐ์
ํ๊ธฐ"๋ฅผ ํด๋ฆญํ๋ฉด ํ์๊ฐ์
ํ์ด์ง๋ก ์ด๋ํด ์ฃผ์ธ์.
+- [ ] ๋ก๊ทธ์ธ ์คํจํ๋ ๊ฒฝ์ฐ, ์ด๋ฉ์ผ input ์๋์ "์ด๋ฉ์ผ์ ํ์ธํด ์ฃผ์ธ์.", ๋น๋ฐ๋ฒํธ input ์๋์ "๋น๋ฐ๋ฒํธ๋ฅผ ํ์ธํด ์ฃผ์ธ์." ์๋ฌ ๋ฉ์์ง๋ฅผ ํ์ํด ์ฃผ์ธ์.
+- [ ] ๋ก๊ทธ์ธ ๋ฒํผ์ด ํ์ฑํ๋ ํ, ๋ก๊ทธ์ธ ๋ฒํผ ํด๋ฆญ ๋๋ Enterํค ์
๋ ฅ์ผ๋ก ๋ก๊ทธ์ธ ์คํํฉ๋๋ค.
+- [ ] "/auth/signIn"์ผ๋ก POST ์์ฒญํด์ ์ฑ๊ณต ์๋ต์ ๋ฐ์ผ๋ฉด ์ค๊ณ ๋ง์ผ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค. ์ฐธ๊ณ ๋ก JWT๋ก ๊ตฌํ๋์ด ์์ต๋๋ค.
+- [ ] ์คํจํ ๊ฒฝ์ฐ, ์คํจ ๋ฉ์์ง๋ฅผ ๋ชจ๋ฌ์ ํตํด ํ์ํฉ๋๋ค.
+
+---
+
+#### **ํ์๊ฐ์
ํ์ด์ง**
+- [ ] "ํ์ ๊ฐ์
ํ๊ธฐ"๋ฅผ ํด๋ฆญํ๋ฉด '/signin' ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
+- [ ] ํ์๊ฐ์
๋ฒํผ ํด๋ฆญ ๋๋ Enterํค ์
๋ ฅ์ผ๋ก ํ์๊ฐ์
์ ์คํํฉ๋๋ค.
+- [ ] ๋น๋ฐ๋ฒํธ input๊ณผ ๋น๋ฐ๋ฒํธ ํ์ธ input์ ๊ฐ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ, ๋น๋ฐ๋ฒํธ ํ์ธ input ์๋์ "๋น๋ฐ๋ฒํธ๊ฐ ์ผ์นํ์ง ์์์." ์๋ฌ ๋ฉ์์ง๋ฅผ ํ์ํด ์ฃผ์ธ์.
+- [ ] ๋ฒํผ์ด ํ์ฑํ๋ ํ, ํ์๊ฐ์
์ "/auth/signUp" POST ์์ฒญํด์ ์งํํฉ๋๋ค. ์ฐธ๊ณ ๋ก JWT๋ก ๊ตฌํ๋์ด ์์ต๋๋ค.
+- [ ] ํ์๊ฐ์
์ฑ๊ณต ์๋ต์ ๋ฐ์ผ๋ฉด ์ค๊ณ ๋ง์ผ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
+- [ ] ์คํจํ ๊ฒฝ์ฐ, ์คํจ ๋ฉ์์ง๋ฅผ ๋ชจ๋ฌ์ ํตํด ํ์ํฉ๋๋ค.
+
+---
+
+#### **๋ก๊ทธ์ธ, ํ์๊ฐ์
ํ์ด์ง ๊ณตํต**
+- [ ] ๋ ๋ชจ์ ์์ด์ฝ ํด๋ฆญ ์ ๋น๋ฐ๋ฒํธ์ ๋ฌธ์์ด์ด ๋ณด์ด๊ธฐ๋ ํ๊ณ , ๊ฐ๋ ค์ง๋๋ค.
+- [ ] ๋น๋ฐ๋ฒํธ์ ๋ฌธ์์ด์ด ๊ฐ๋ ค์ง ๋๋ ๋ ๋ชจ์ ์์ด์ฝ์๋ ์ฌ์ ์ด ๊ทธ์ด์ ธ ์๊ณ , ๋น๋ฐ๋ฒํธ์ ๋ฌธ์์ด์ด ๋ณด์ผ ๋๋ ์ฌ์ ์ด ์๋ ๋ ๋ชจ์ ์์ด์ฝ์ด ๋ณด์
๋๋ค.
+- [ ] ์์
๋ก๊ทธ์ธ์ ๊ตฌ๊ธ ์์ด์ฝ ํด๋ฆญ ์ 'https://www.google.com', ์นด์นด์ค ์์ด์ฝ ํด๋ฆญ ์ 'https://www.kakaocorp.com/page'๋ก ์ด๋ํฉ๋๋ค.
+- [ ] ๋ก๊ทธ์ธ/ํ์๊ฐ์
์ ์ฑ๊ณต ์๋ต์ผ๋ก ๋ฐ์ accessToken์ ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ์ ์ฅํฉ๋๋ค.
+- [ ] ๋ก๊ทธ์ธ/ํ์๊ฐ์
ํ์ด์ง์ ์ ๊ทผ ์ ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ accessToken์ด ์๋ ๊ฒฝ์ฐ '/items' ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
+
+---
+
+#### **GNB**
+- [ ] ์๋จ ๋ด๋น๊ฒ์ด์
๋ฐ์ ํ๋กํ ์์ญ์ ์ธ๊ฐ๋ ๊ฒฝ์ฐ, ์ ์ ์ ๋ณด API๋ฅผ ํ์ฉํด ์ฃผ์ธ์.
+- [ ] ์ธ๊ฐ๋์ง ์์์ ๊ฒฝ์ฐ "๋ก๊ทธ์ธ" ๋ฒํผ์ด ๋ณด์ด๊ฒ ํด ์ฃผ์ธ์.
+
+---
+
+#### **์ํ ์์ธ ํ์ด์ง**
+- [ ] PC, Tablet, Mobile ๋์์ธ์ ํด๋นํ๋ ์ํ ์์ธ ํ์ด์ง๋ฅผ ๋ง๋ค์ด ์ฃผ์ธ์.
+- [ ] ์ํ ์์ธ ํ์ด์ง URL path๋ "/items/{itemId}"๋ก ์ค์ ํ์ธ์.
+- [ ] '๋ชฉ๋ก์ผ๋ก ๋์๊ฐ๊ธฐ' ๋ฒํผ ํด๋ฆญ ์ ์ค๊ณ ๋ง์ผ ํ์ด์ง "/items"๋ก ์ด๋ํฉ๋๋ค.
+- [ ] ์ํ ์์ธ ๋ฐ์ดํฐ๋ '/products/{productId}' GET ๋ฉ์๋ ์ฌ์ฉํด ๋ถ๋ฌ์ค์ธ์. ์ด๋, ์ํ ์์ธ ์กฐํ๋ ์ธ๊ฐ๋ ์ฌ์ฉ์๋ง ์ด์ฉํ ์ ์๋๋ก ํฉ๋๋ค.
+- [ ] ์ํ์ ๋ํ ๋๊ธ ์กฐํ๋ ๊ฐ๋ฅํฉ๋๋ค.
+- [ ] ์ํ ์์ ๋ฐ ์ญ์ ๊ธฐ๋ฅ์ API๋ฅผ ํ์ฉํด ๊ตฌํํฉ๋๋ค. ์ด๋, ์ธ๊ฐ๋ ์ฌ์ฉ์๋ง ์ด์ฉํ ์ ์๋๋ก ํฉ๋๋ค.
+ - [ ] ์ํ ์์ ์ '/products/{productId}' PATCH์ ์ฌ์ฉํฉ๋๋ค.
+ - [ ] ์ํ ์ญ์ ๋ '/products/{productId}' DELETE๋ฅผ ์ฌ์ฉํฉ๋๋ค.
+- [ ] ์ํ ์ญ์ ์ , ํ์ธ ๋ชจ๋ฌ์ ๋์์ฃผ์ธ์.
+- [ ] ์ํ์ ๋ํ ์ข์์ ๋ฐ ์ข์์ ์ทจ์ ๊ธฐ๋ฅ์ '/products/{productId}/favorite' POST & DELETE ํ์ฉํด ๊ตฌํํฉ๋๋ค. ์ด๋ ์ธ๊ฐ๋ ์ฌ์ฉ์๋ง ์ข์์ ๊ธฐ๋ฅ์ ์ด์ฉํ ์ ์๋๋ก ํฉ๋๋ค.
+- [ ] ๋๊ธ ์์ฑ ๋ฐ ์ญ์ ๊ธฐ๋ฅ์ API๋ฅผ ํ์ฉํด ๊ตฌํํฉ๋๋ค. ์ด๋, ์ธ๊ฐ๋ ์ฌ์ฉ์๋ง ์ด์ฉํ ์ ์๋๋ก ํฉ๋๋ค.
+ - [ ] ๋๊ธ ์์ ์ '/comments/{commentId}' PATCH์ ์ฌ์ฉํฉ๋๋ค.
+ - [ ] ๋๊ธ ์ญ์ ๋ '/comments/{commentId}' DELETE๋ฅผ ์ฌ์ฉํฉ๋๋ค.
+
+---
+
+### **์ฌํ ์๊ตฌ์ฌํญ**
+
+#### **๋ก๊ทธ์ธ ๋ฐ ํ์๊ฐ์
ํ์ด์ง ๊ณตํต**
+- [ ] ๋ก๊ทธ์ธ, ํ์๊ฐ์
๊ธฐ๋ฅ์ react-hook-form์ ํ์ฉํด ์ฃผ์ธ์.
+- [ ] ๋ธ๋ผ์ฐ์ ์ ํ์ฌ ๋ณด์ด๋ ํ๋ฉด์ ์์ญ(viewport) ๋๋น๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ถ๊ธฐ๋๋ ๋ฐ์ํ ๋์์ธ์ ์ ์ฉํฉ๋๋ค:
+ - PC: 1200px ์ด์
+ - Tablet: 744px ์ด์ ~ 1199px ์ดํ
+ - Mobile: 375px ์ด์ ~ 743px ์ดํ
+ - 375px ๋ฏธ๋ง ์ฌ์ด์ฆ์ ๋์์ธ์ ๊ณ ๋ คํ์ง ์์ต๋๋ค.
+
+---
+
+#### **์ ์ ๊ธฐ๋ฅ**
+- [ ] ๋ฆฌํ์คํธ ํค๋์ ์ธ์ฆ ํ ํฐ์ ์ฒจ๋ถํ ๋ axios interceptors๋ฅผ ํ์ฉํด ์ฃผ์ธ์. (axios๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด ์ด์ ์ ์ฌํ ๊ธฐ๋ฅ์ ํ์ฉํด ์ฃผ์ธ์.)
+
+---
+
+#### **React-Query๋ก ๋ง์ด๊ทธ๋ ์ด์
**
+- [ ] fetch ํน์ axios๋ก ๊ตฌํ๋ ๊ธฐ์กด์ API ์์ฒญ ์ฝ๋๋ฅผ React-Qeury๋ก ๋ง์ด๊ทธ๋ ์ด์
ํฉ๋๋ค.
+
+---
+
+#### **๋ก๋ฉ ๋ฐ ์๋ฌ ํธ๋ค๋ง**
+- [ ] ๋ก๋ฉ ์ธ๋์ผ์ดํฐ์ ์๋ฌ ๋ฉ์์ง๋ฅผ ๊ตฌํํฉ๋๋ค.
+- [ ] ์ํ ๋ชฉ๋ก ๋ฐ ์ํ ์์ธ ๋ฐ์ดํฐ๋ฅผ Prefetching ํฉ๋๋ค.
+
+---
+
+#### **์ํ ๋ฐ์ดํฐ ์บ์ฑ ๋ฐ ์
๋ฐ์ดํธ**
+- [ ] React Query์ ์บ์ฑ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ๋ฐ์ดํฐ ๋ก๋ฉ ์๊ฐ์ ์ต์ํํฉ๋๋ค.
+- [ ] ์ํ ๋ชฉ๋ก ํ์ด์ง์์ ๋ฐ์ดํฐ์ ์ค์๊ฐ ์
๋ฐ์ดํธ๋ฅผ ์ํด ์ ์ ํ Query Refresh ์ค์ ์ ์ ์ฉํฉ๋๋ค.
diff --git a/sprint9/components/ArticleDetail/ArticleInfo.jsx b/sprint9/components/ArticleDetail/ArticleInfo.jsx
new file mode 100644
index 000000000..801cb0085
--- /dev/null
+++ b/sprint9/components/ArticleDetail/ArticleInfo.jsx
@@ -0,0 +1,76 @@
+import { useState } from "react";
+import Image from "next/image";
+import styles from "@/styles/components/ArticleDetail/ArticleInfo.module.css";
+import formatDate from '@/lib/formatDate';
+import EditDeletMenu from "@/components/ArticleDetail/EditDeletMenu";
+
+function ArticleInfo({ article }) {
+ const [toggleMenu, setToggleMenu] = useState(false);
+ const [articleEditDelete, setArticleEditDelete] = useState(false);
+
+ return (
+
+
+
{article.title}
+
{
+ setToggleMenu(!toggleMenu)
+ setArticleEditDelete(!articleEditDelete)
+ }}
+ className={styles.togleMenuMark}
+ >โฎ
+ {toggleMenu ?
: null}
+
+
+
+
+
+
+
์ด๋ช
ํํ๋ค
+
+ {formatDate(article.createdAt)}
+
+
+
+
+
+
+
+
+ ❤️
+
+
{article.likes}
+
+
+
+
+
+ {article.content}
+
+
+
+ );
+}
+
+export default ArticleInfo;
diff --git a/sprint9/components/ArticleDetail/CommentPost.jsx b/sprint9/components/ArticleDetail/CommentPost.jsx
new file mode 100644
index 000000000..ada2382e5
--- /dev/null
+++ b/sprint9/components/ArticleDetail/CommentPost.jsx
@@ -0,0 +1,34 @@
+import { useState } from "react";
+import styles from "@/styles/components/ArticleDetail/CommentPost.module.css";
+import { postComment } from "@/lib/pandaMarketApiService";
+import useComment from "@/hooks/useComment";
+
+function CommentPost({ handlePostComment, setTextareaValue, textareaValue }) {
+
+
+ return (
+
+ )
+}
+
+export default CommentPost;
\ No newline at end of file
diff --git a/sprint9/components/ArticleDetail/Comments.jsx b/sprint9/components/ArticleDetail/Comments.jsx
new file mode 100644
index 000000000..3c58f3a8e
--- /dev/null
+++ b/sprint9/components/ArticleDetail/Comments.jsx
@@ -0,0 +1,47 @@
+import { useState } from "react";
+import Image from "next/image";
+import styles from "@/styles/components/ArticleDetail/Comments.module.css";
+import formatDate from "@/lib/formatDate";
+import EditDeletMenu from "@/components/ArticleDetail/EditDeletMenu";
+
+
+function Comments({ comment, handleDeleteComment }) {
+ const [toggleMenu, setToggleMenu] = useState(false);
+
+ return (
+
+
+
+ {comment.content}
+
+
{ setToggleMenu(!toggleMenu) }}
+ className={styles.togleMenuMark}
+ >
+ โฎ
+
+ {toggleMenu ?
: null}
+
+
+
+
+
+
+
๋๋ํํ๋ค
+
{formatDate(comment.createdAt)}
+
+
+
+ )
+}
+
+export default Comments;
\ No newline at end of file
diff --git a/sprint9/components/ArticleDetail/EditDeletMenu.jsx b/sprint9/components/ArticleDetail/EditDeletMenu.jsx
new file mode 100644
index 000000000..2779c020c
--- /dev/null
+++ b/sprint9/components/ArticleDetail/EditDeletMenu.jsx
@@ -0,0 +1,40 @@
+import { deleteComment, deleteArticle } from "@/lib/pandaMarketApiService";
+import { useRouter } from "next/router";
+import styles from "@/styles/components/ArticleDetail/EditDeletMenu.module.css";
+import useComment from "@/hooks/useComment";
+
+function EditDeletMenu({ onToggleMenu, commentId, handleDeleteComment, articleId, article, setArticleEditDelete }) {
+ const router = useRouter();
+
+ const handleDeleteArticle = async () => {
+ const response = await deleteArticle(articleId);
+ router.push('/community-feed');
+ }
+
+ return (
+
+
+
+
+ )
+}
+
+export default EditDeletMenu;
diff --git a/sprint9/components/ArticleDetail/NoneComments.jsx b/sprint9/components/ArticleDetail/NoneComments.jsx
new file mode 100644
index 000000000..c64764691
--- /dev/null
+++ b/sprint9/components/ArticleDetail/NoneComments.jsx
@@ -0,0 +1,30 @@
+import Image from "next/image";
+import styles from "@/styles/components/ArticleDetail/NoneComments.module.css";
+
+function NoneComments() {
+ return (
+
+
+
+
+
+ ์์ง ๋๊ธ์ด ์์ด์,
+ ์ง๊ธ ๋๊ธ์ ๋ฌ์๋ณด์ธ์!
+
+
+ )
+}
+
+export default NoneComments;
\ No newline at end of file
diff --git a/sprint9/components/CommunityFeed/ArticleSearchInput.jsx b/sprint9/components/CommunityFeed/ArticleSearchInput.jsx
new file mode 100644
index 000000000..a66a2877f
--- /dev/null
+++ b/sprint9/components/CommunityFeed/ArticleSearchInput.jsx
@@ -0,0 +1,14 @@
+import styles from "@/styles/components/CommunityFeed/ArticleSearchInput.module.css"
+
+function ArticleSearchInput({onChange}) {
+ return (
+
+ )
+}
+
+export default ArticleSearchInput;
diff --git a/sprint9/components/CommunityFeed/ArticlesList.jsx b/sprint9/components/CommunityFeed/ArticlesList.jsx
new file mode 100644
index 000000000..541d3f788
--- /dev/null
+++ b/sprint9/components/CommunityFeed/ArticlesList.jsx
@@ -0,0 +1,66 @@
+import Link from 'next/link';
+import Image from 'next/image';
+import styles from '@/styles/components/CommunityFeed/Articles.module.css';
+import ArticleSearchInput from '@/components/CommunityFeed/ArticleSearchInput';
+import DropdownList from '@/components/CommunityFeed/DropdownList';
+import formatDate from '@/lib/formatDate';
+import useArticle from '@/hooks/useArticle';
+
+function ArticlesList() {
+
+ const articlesList = useArticle(4, 'recent');
+ const Articles = articlesList.article || [];
+
+ if (!articlesList) return null;
+
+ return (
+
+
+
+ {Articles.map((article, index) => (
+
+
+
+
{article.title}
+
+
+
+
+
+
์ด๋ช
ํํ๋ค
+
+ {formatDate(article.createdAt)}
+
+
+
+
+
+
+ ))}
+
+
+ );
+}
+
+export default ArticlesList;
\ No newline at end of file
diff --git a/sprint9/components/CommunityFeed/BestArticles.jsx b/sprint9/components/CommunityFeed/BestArticles.jsx
new file mode 100644
index 000000000..3d7dee505
--- /dev/null
+++ b/sprint9/components/CommunityFeed/BestArticles.jsx
@@ -0,0 +1,67 @@
+import Link from "next/link";
+import Image from "next/image";
+import styles from "@/styles/components/CommunityFeed/BestArticles.module.css";
+import formatDate from "@/lib/formatDate";
+import useArticle from "@/hooks/useArticle";
+
+function BestArticles() {
+
+ const bestArticlesList = useArticle(3, 'best');
+ const BsetArticles = bestArticlesList.article || [];
+
+ if (!bestArticlesList) return null;
+
+ return (
+
+ {BsetArticles.map((article, index) => (
+
+
+
+
+ Best
+
+
+
{article.title}
+
+
+
+
+
์ด๋ช
ํํ๋ค
+
+
+
+
{article.likes}
+
+
{formatDate(article.createdAt)}
+
+
+
+ ))}
+
+ );
+}
+
+export default BestArticles;
diff --git a/sprint9/components/CommunityFeed/DropdownList.jsx b/sprint9/components/CommunityFeed/DropdownList.jsx
new file mode 100644
index 000000000..f8d0eb5cf
--- /dev/null
+++ b/sprint9/components/CommunityFeed/DropdownList.jsx
@@ -0,0 +1,60 @@
+// // import styles from "@/styles/components/CommunityFeed/DropdownList.module.css"
+
+
+function DropdownList() {
+// // return (
+// // <>
+// //
+// //
+// //
+// //
+
+// //
+// // ์ต์ ์
+// // ์ข์์์
+// // >
+// // )
+// // }
+
+// // export default DropdownList;
+
+// import {
+// Dropdown,
+// DropdownTrigger,
+// DropdownMenu,
+// DropdownItem,
+// } from '@nextui-org/dropdown';
+// import styles from '@/styles/components/CommunityFeed/BestArticles.module.css';
+
+// function DropdownList() {
+// return (
+//
+//
+//
+//
+//
+//
+// ๋งํฌ 1
+// ๋งํฌ 2
+// ๋งํฌ 3
+//
+//
+//
+// );
+}
+
+export default DropdownList;
diff --git a/sprint9/components/HomePage/Hero.jsx b/sprint9/components/HomePage/Hero.jsx
new file mode 100644
index 000000000..186759df1
--- /dev/null
+++ b/sprint9/components/HomePage/Hero.jsx
@@ -0,0 +1,44 @@
+import Link from "next/link";
+import Image from "next/image";
+
+
+const Hero = () => {
+ return (
+
+
+
+
+ ์ผ์์ ๋ชจ๋ ๋ฌผ๊ฑด์
+
+ ๊ฑฐ๋ํด ๋ณด์ธ์
+
+
+
+
+ ๊ตฌ๊ฒฝํ๋ฌ ๊ฐ๊ธฐ
+
+ {/* ์ผ๋จ CommunityFeed ํ์ด์ง๋ก ์ด๋*/}
+
+
+
+
+
+
+
+ );
+};
+
+export default Hero;
diff --git a/sprint9/components/HomePage/Section1.jsx b/sprint9/components/HomePage/Section1.jsx
new file mode 100644
index 000000000..c5ec78c74
--- /dev/null
+++ b/sprint9/components/HomePage/Section1.jsx
@@ -0,0 +1,41 @@
+import Image from "next/image";
+
+const Section1 = () => {
+ return (
+
+
+
+
+
+
+
Hot item
+
+
+
์ธ๊ธฐ ์ํ์
+
ํ์ธํด ๋ณด์ธ์
+
+
+
+
๊ฐ์ฅ HOTํ ์ค๊ณ ๊ฑฐ๋ ๋ฌผํ์
+
ํ๋ค ๋ง์ผ์์ ํ์ธํด ๋ณด์ธ์
+
+
+
+
+ );
+};
+
+export default Section1;
diff --git a/sprint9/components/HomePage/Section2.jsx b/sprint9/components/HomePage/Section2.jsx
new file mode 100644
index 000000000..4c2a62b86
--- /dev/null
+++ b/sprint9/components/HomePage/Section2.jsx
@@ -0,0 +1,43 @@
+import Image from "next/image";
+
+const Section2 = () => {
+ return (
+
+
+
+
+ Search
+
+
+
+
๊ตฌ๋งค๋ฅผ ์ํ๋
+
์ํ์ ๊ฒ์ํ์ธ์
+
+
+
+
๊ตฌ๋งคํ๊ณ ์ถ์ ๋ฌผํ์ ๊ฒ์ํด์
+
์ฝ๊ฒ ์ฐพ์๋ณด์ธ์
+
+
+
+
+
+
+
+ );
+};
+
+export default Section2;
diff --git a/sprint9/components/HomePage/Section3.jsx b/sprint9/components/HomePage/Section3.jsx
new file mode 100644
index 000000000..61b090e4a
--- /dev/null
+++ b/sprint9/components/HomePage/Section3.jsx
@@ -0,0 +1,41 @@
+import Image from "next/image";
+
+const Section3 = () => {
+ return (
+
+
+
+
+
+
+
Rigister
+
+
+
ํ๋งค๋ฅผ ์ํ๋
+
์ํ์ ๋ฑ๋กํ์ธ์
+
+
+
+
์ด๋ค ๋ฌผ๊ฑด์ด๋ ํ๋งคํ๊ณ ์ถ์ ์ํ์
+
์ฝ๊ฒ ๋ฑ๋กํ์ธ์
+
+
+
+
+ );
+};
+
+export default Section3;
diff --git a/sprint9/components/HomePage/UnderBanner.jsx b/sprint9/components/HomePage/UnderBanner.jsx
new file mode 100644
index 000000000..fbf56d503
--- /dev/null
+++ b/sprint9/components/HomePage/UnderBanner.jsx
@@ -0,0 +1,32 @@
+import Image from "next/image";
+
+const UnderBanner = () => {
+ return (
+
+
+
+
๋ฏฟ์ ์ ์๋
+
ํ๋ค๋ง์ผ ์ค๊ณ ๊ฑฐ๋
+
+
+
+
+
+
+ );
+};
+
+export default UnderBanner;
diff --git a/sprint9/hooks/useArticle.js b/sprint9/hooks/useArticle.js
new file mode 100644
index 000000000..60b80541e
--- /dev/null
+++ b/sprint9/hooks/useArticle.js
@@ -0,0 +1,21 @@
+import { useState, useEffect } from "react";
+import { getArticles } from "@/lib/pandaMarketApiService";
+
+export default function useArticle(limit = 4, order = 'recent') {
+ const [articles, setArticles] = useState([]);
+
+ useEffect(() => {
+ const fetchArticles = async () => {
+ try {
+ const articlesList = await getArticles(0, limit, order);
+ setArticles(articlesList);
+ } catch (error) {
+ console.error("Error fetching articles:", error);
+ }
+ };
+
+ fetchArticles();
+ }, []);
+
+ return articles;
+}
\ No newline at end of file
diff --git a/sprint9/hooks/useArticleId.js b/sprint9/hooks/useArticleId.js
new file mode 100644
index 000000000..d067435a5
--- /dev/null
+++ b/sprint9/hooks/useArticleId.js
@@ -0,0 +1,32 @@
+import { useState, useEffect } from "react";
+import { getArticleId } from "@/lib/pandaMarketApiService";
+
+export default function useArticleId(articleId) {
+ const [article, setArticle] = useState([]);
+ const [isLoading, setIsLoading] = useState(false);
+ const [hasError, setHasError] = useState(false);
+
+ useEffect(() => {
+ if (!articleId) return;
+
+ const fetchArticle = async () => {
+ setIsLoading(true);
+ setHasError(false);
+
+ try {
+ const articleDetail = await getArticleId(articleId);
+ if (!articleDetail) return;
+ setArticle(articleDetail);
+ } catch (error) {
+ console.error("Error fetching article:", error);
+ setHasError(true);
+ } finally {
+ setIsLoading(false);
+ }
+ };
+
+ fetchArticle();
+ }, [articleId]);
+
+ return { article, isLoading, hasError };
+}
diff --git a/sprint9/hooks/useArticlePost.js b/sprint9/hooks/useArticlePost.js
new file mode 100644
index 000000000..8156af59f
--- /dev/null
+++ b/sprint9/hooks/useArticlePost.js
@@ -0,0 +1,27 @@
+import { getArticles, postArticle } from "@/lib/pandaMarketApiService";
+import { useRouter } from "next/router";
+
+function useArticlePost(title, content, setTitle, setContent) {
+ const router = useRouter();
+
+ const postHandler = async () => {
+ try {
+ if (title !== "" && content !== "") {
+ const response = await postArticle(title, content);
+
+ setTitle('');
+ setContent('');
+ }
+ // ๊ฒ์๋ฌผ ๋ฑ๋กํ๋ฉด์ ์ด๋์ํด ์ต์ ๊ฒ์๊ธ id๋ฅผ ๋ฐ์์ค๊ธฐ
+ const toMoveArticle = await getArticles(0, 1, 'recent');
+ const toMoveArticleID = toMoveArticle.article[0].id;
+
+ router.push(`/article-detail/${toMoveArticleID}`);
+ } catch (error) {
+ console.error("Error posting article:", error);
+ }
+ }
+ return {postHandler}
+}
+
+export default useArticlePost;
\ No newline at end of file
diff --git a/sprint9/hooks/useComment.js b/sprint9/hooks/useComment.js
new file mode 100644
index 000000000..8c0a8e83a
--- /dev/null
+++ b/sprint9/hooks/useComment.js
@@ -0,0 +1,37 @@
+import { useState, useEffect, useCallback } from "react";
+import { deleteComment, getComments, postComment } from "@/lib/pandaMarketApiService";
+
+function useComment(articleId) {
+ const [comments, setComments] = useState([]);
+ const [textareaValue, setTextareaValue] = useState("");
+
+ const handleLoadComments = useCallback(async () => {
+ try {
+ const commentsList = await getComments(articleId);
+ setComments(commentsList.comments);
+ } catch (error) {
+ console.error("Error fetching comments:", error);
+ }
+ }, [articleId]);
+
+ const handleDeleteComment = useCallback(async (commentId) => {
+ const response = await deleteComment(commentId);
+ await handleLoadComments();
+ }, [handleLoadComments]);
+
+ useEffect(() => {
+
+ handleLoadComments();
+ }, [handleLoadComments]);
+
+ const handlePostComment = async (e) => {
+ if (textareaValue === "") return;
+ const response = await postComment(articleId, textareaValue);
+ setTextareaValue('');
+ handleLoadComments();
+ }
+
+ return { comments, handleDeleteComment, handlePostComment, setTextareaValue, textareaValue };
+}
+
+export default useComment;
diff --git a/sprint9/jsconfig.json b/sprint9/jsconfig.json
new file mode 100644
index 000000000..2a2e4b3bf
--- /dev/null
+++ b/sprint9/jsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "paths": {
+ "@/*": ["./*"]
+ }
+ }
+}
diff --git a/sprint9/layouts/Footer.jsx b/sprint9/layouts/Footer.jsx
new file mode 100644
index 000000000..e73885ac4
--- /dev/null
+++ b/sprint9/layouts/Footer.jsx
@@ -0,0 +1,59 @@
+import Link from "next/link";
+import Image from "next/image";
+import styles from "@/styles/layouts/Footer.module.css";
+
+function Footer() {
+ return (
+
+ );
+}
+
+export default Footer;
diff --git a/sprint9/layouts/Header.jsx b/sprint9/layouts/Header.jsx
new file mode 100644
index 000000000..fafe7373d
--- /dev/null
+++ b/sprint9/layouts/Header.jsx
@@ -0,0 +1,67 @@
+import Link from "next/link";
+import Image from "next/image";
+import { useRouter } from "next/router";
+import styles from "@/styles/layouts/Header.module.css";
+
+function Header() {
+ const router = useRouter();
+
+ const getLinkStyle = (path) => (
+ {
+ color: router.pathname === path ? "var(--mainColor)" : "#4B5563",
+ fontWeight: router.pathname === path ? 800 : 700, fontSize: router.pathname === path ? 18 : 18,
+ });
+
+ return (
+
+
+
+ );
+}
+
+export default Header;
diff --git a/sprint9/lib/axios.js b/sprint9/lib/axios.js
new file mode 100644
index 000000000..519a4cee4
--- /dev/null
+++ b/sprint9/lib/axios.js
@@ -0,0 +1,7 @@
+import axios from 'axios';
+
+const instance = axios.create({
+ baseURL: 'https://panda-market-be.onrender.com',
+});
+
+export default instance;
\ No newline at end of file
diff --git a/sprint9/lib/formatDate.js b/sprint9/lib/formatDate.js
new file mode 100644
index 000000000..1e40f3895
--- /dev/null
+++ b/sprint9/lib/formatDate.js
@@ -0,0 +1,7 @@
+import { format } from 'date-fns';
+
+const formatDate = (isoString) => {
+ return format(new Date(isoString), 'yyyy. MM. dd');
+};
+
+export default formatDate;
diff --git a/sprint9/lib/pandaMarketApiService.js b/sprint9/lib/pandaMarketApiService.js
new file mode 100644
index 000000000..c6d5804c8
--- /dev/null
+++ b/sprint9/lib/pandaMarketApiService.js
@@ -0,0 +1,100 @@
+import axios from '@/lib/axios.js';
+
+const getProducts = async (offset = 0, limit = 10, order = 'recent') => {
+ try {
+ const { data } = await axios.get(`/products?offset=${offset}&limit=${limit}&order=${order}`);
+ return data;
+ } catch (error) {
+ console.error('Error fetching products:', error);
+ throw error;
+ }
+};
+
+const getProductId = async (productId) => {
+ try {
+ const { data } = await axios.get(`/products/${productId}`);
+ return data;
+ } catch (error) {
+ console.error('Error fetching product by ID:', error);
+ throw error;
+ }
+};
+
+const getArticles = async (offset = 0, limit = 3, order = 'recent') => {
+ try {
+ const { data } = await axios.get(`/articles?offset=${offset}&limit=${limit}&order=${order}`);
+ return data;
+ } catch (error) {
+ console.error('Error fetching articles:', error);
+ throw error;
+ }
+};
+
+const postArticle = async (title, content) => {
+ try {
+ const { data } = await axios.post('/articles', {
+ title,
+ content,
+ });
+ return data;
+ } catch (error) {
+ console.error('Error posting article:', error.response?.data || error.message);
+ throw error;
+ }
+};
+
+const getArticleId = async (articleId) => {
+ try {
+ const { data } = await axios.get(`/articles/${articleId}`);
+ return data;
+ } catch (error) {
+ console.error('Error fetching article by ID:', error);
+ throw error;
+ }
+};
+
+const getComments = async (articleId) => {
+ try {
+ const { data } = await axios.get(`/articles/${articleId}/comments`);
+ return data;
+ } catch (error) {
+ console.error('Error fetching comments:', error);
+ throw error;
+ }
+};
+
+const postComment = async (articleId, content) => {
+ try {
+ const { data } = await axios.post(`/articles/${articleId}/comments`, {
+ content,
+ });
+ return data;
+ } catch (error) {
+ console.error('Error posting comment:', error.response?.data || error.message);
+ throw error;
+ }
+};
+
+// ๊ฒ์๊ธ ์ญ์
+const deleteArticle = async (articleId) => {
+ try {
+ const { data } = await axios.delete(`/articles/${articleId}`);
+ return data;
+ } catch (error) {
+ console.error('Error deleting article:', error.response?.data || error.message);
+ throw error;
+ }
+};
+
+// ๋๊ธ ์ญ์
+const deleteComment = async (commentId) => {
+ try {
+ const { data } = await axios.delete(`/comments/${commentId}`);
+ return data;
+ } catch (error) {
+ console.error('Error deleting article:', error.response?.data || error.message);
+ throw error;
+ }
+};
+
+export { getProducts, getProductId, getArticles, postArticle, getArticleId, getComments, postComment, deleteArticle, deleteComment };
diff --git a/sprint9/next.config.mjs b/sprint9/next.config.mjs
new file mode 100644
index 000000000..d5456a15d
--- /dev/null
+++ b/sprint9/next.config.mjs
@@ -0,0 +1,6 @@
+/** @type {import('next').NextConfig} */
+const nextConfig = {
+ reactStrictMode: true,
+};
+
+export default nextConfig;
diff --git a/sprint9/package-lock.json b/sprint9/package-lock.json
new file mode 100644
index 000000000..a494a2cf7
--- /dev/null
+++ b/sprint9/package-lock.json
@@ -0,0 +1,4540 @@
+{
+ "name": "sprint8",
+ "version": "0.1.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "sprint8",
+ "version": "0.1.0",
+ "dependencies": {
+ "axios": "^1.7.9",
+ "date-fns": "^4.1.0",
+ "next": "15.0.3",
+ "react": "19.0.0-rc-66855b96-20241106",
+ "react-dom": "19.0.0-rc-66855b96-20241106"
+ },
+ "devDependencies": {
+ "eslint": "^8",
+ "eslint-config-next": "15.0.3"
+ }
+ },
+ "node_modules/@emnapi/runtime": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz",
+ "integrity": "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz",
+ "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==",
+ "dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^3.4.3"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
+ "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
+ "dev": true,
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
+ "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
+ "dev": true,
+ "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.1",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
+ "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
+ "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
+ "deprecated": "Use @eslint/config-array instead",
+ "dev": true,
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^2.0.3",
+ "debug": "^4.3.1",
+ "minimatch": "^3.0.5"
+ },
+ "engines": {
+ "node": ">=10.10.0"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
+ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
+ "deprecated": "Use @eslint/object-schema instead",
+ "dev": true
+ },
+ "node_modules/@img/sharp-darwin-arm64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz",
+ "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-darwin-arm64": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-darwin-x64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz",
+ "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-darwin-x64": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-libvips-darwin-arm64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz",
+ "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-darwin-x64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz",
+ "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-arm": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz",
+ "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-arm64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz",
+ "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-s390x": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz",
+ "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==",
+ "cpu": [
+ "s390x"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-x64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz",
+ "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linuxmusl-arm64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz",
+ "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linuxmusl-x64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz",
+ "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-linux-arm": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz",
+ "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-arm": "1.0.5"
+ }
+ },
+ "node_modules/@img/sharp-linux-arm64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz",
+ "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-arm64": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-s390x": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz",
+ "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==",
+ "cpu": [
+ "s390x"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-s390x": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-x64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz",
+ "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-x64": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-linuxmusl-arm64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz",
+ "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linuxmusl-arm64": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-linuxmusl-x64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz",
+ "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linuxmusl-x64": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-wasm32": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz",
+ "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==",
+ "cpu": [
+ "wasm32"
+ ],
+ "optional": true,
+ "dependencies": {
+ "@emnapi/runtime": "^1.2.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-win32-ia32": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz",
+ "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-win32-x64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz",
+ "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@next/env": {
+ "version": "15.0.3",
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-15.0.3.tgz",
+ "integrity": "sha512-t9Xy32pjNOvVn2AS+Utt6VmyrshbpfUMhIjFO60gI58deSo/KgLOp31XZ4O+kY/Is8WAGYwA5gR7kOb1eORDBA=="
+ },
+ "node_modules/@next/eslint-plugin-next": {
+ "version": "15.0.3",
+ "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.0.3.tgz",
+ "integrity": "sha512-3Ln/nHq2V+v8uIaxCR6YfYo7ceRgZNXfTd3yW1ukTaFbO+/I8jNakrjYWODvG9BuR2v5kgVtH/C8r0i11quOgw==",
+ "dev": true,
+ "dependencies": {
+ "fast-glob": "3.3.1"
+ }
+ },
+ "node_modules/@next/swc-darwin-arm64": {
+ "version": "15.0.3",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.0.3.tgz",
+ "integrity": "sha512-s3Q/NOorCsLYdCKvQlWU+a+GeAd3C8Rb3L1YnetsgwXzhc3UTWrtQpB/3eCjFOdGUj5QmXfRak12uocd1ZiiQw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-darwin-x64": {
+ "version": "15.0.3",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.0.3.tgz",
+ "integrity": "sha512-Zxl/TwyXVZPCFSf0u2BNj5sE0F2uR6iSKxWpq4Wlk/Sv9Ob6YCKByQTkV2y6BCic+fkabp9190hyrDdPA/dNrw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-arm64-gnu": {
+ "version": "15.0.3",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.0.3.tgz",
+ "integrity": "sha512-T5+gg2EwpsY3OoaLxUIofmMb7ohAUlcNZW0fPQ6YAutaWJaxt1Z1h+8zdl4FRIOr5ABAAhXtBcpkZNwUcKI2fw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-arm64-musl": {
+ "version": "15.0.3",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.0.3.tgz",
+ "integrity": "sha512-WkAk6R60mwDjH4lG/JBpb2xHl2/0Vj0ZRu1TIzWuOYfQ9tt9NFsIinI1Epma77JVgy81F32X/AeD+B2cBu/YQA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-gnu": {
+ "version": "15.0.3",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.0.3.tgz",
+ "integrity": "sha512-gWL/Cta1aPVqIGgDb6nxkqy06DkwJ9gAnKORdHWX1QBbSZZB+biFYPFti8aKIQL7otCE1pjyPaXpFzGeG2OS2w==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-musl": {
+ "version": "15.0.3",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.0.3.tgz",
+ "integrity": "sha512-QQEMwFd8r7C0GxQS62Zcdy6GKx999I/rTO2ubdXEe+MlZk9ZiinsrjwoiBL5/57tfyjikgh6GOU2WRQVUej3UA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-arm64-msvc": {
+ "version": "15.0.3",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.0.3.tgz",
+ "integrity": "sha512-9TEp47AAd/ms9fPNgtgnT7F3M1Hf7koIYYWCMQ9neOwjbVWJsHZxrFbI3iEDJ8rf1TDGpmHbKxXf2IFpAvheIQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-x64-msvc": {
+ "version": "15.0.3",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.0.3.tgz",
+ "integrity": "sha512-VNAz+HN4OGgvZs6MOoVfnn41kBzT+M+tB+OK4cww6DNyWS6wKaDpaAm/qLeOUbnMh0oVx1+mg0uoYARF69dJyA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nolyfill/is-core-module": {
+ "version": "1.0.39",
+ "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz",
+ "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.4.0"
+ }
+ },
+ "node_modules/@rtsao/scc": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz",
+ "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==",
+ "dev": true
+ },
+ "node_modules/@rushstack/eslint-patch": {
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz",
+ "integrity": "sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==",
+ "dev": true
+ },
+ "node_modules/@swc/counter": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz",
+ "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ=="
+ },
+ "node_modules/@swc/helpers": {
+ "version": "0.5.13",
+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.13.tgz",
+ "integrity": "sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==",
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@types/json5": {
+ "version": "0.0.29",
+ "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
+ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
+ "dev": true
+ },
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "8.17.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.17.0.tgz",
+ "integrity": "sha512-HU1KAdW3Tt8zQkdvNoIijfWDMvdSweFYm4hWh+KwhPstv+sCmWb89hCIP8msFm9N1R/ooh9honpSuvqKWlYy3w==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/regexpp": "^4.10.0",
+ "@typescript-eslint/scope-manager": "8.17.0",
+ "@typescript-eslint/type-utils": "8.17.0",
+ "@typescript-eslint/utils": "8.17.0",
+ "@typescript-eslint/visitor-keys": "8.17.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.3.1",
+ "natural-compare": "^1.4.0",
+ "ts-api-utils": "^1.3.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0",
+ "eslint": "^8.57.0 || ^9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/parser": {
+ "version": "8.17.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.17.0.tgz",
+ "integrity": "sha512-Drp39TXuUlD49F7ilHHCG7TTg8IkA+hxCuULdmzWYICxGXvDXmDmWEjJYZQYgf6l/TFfYNE167m7isnc3xlIEg==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "8.17.0",
+ "@typescript-eslint/types": "8.17.0",
+ "@typescript-eslint/typescript-estree": "8.17.0",
+ "@typescript-eslint/visitor-keys": "8.17.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "8.17.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.17.0.tgz",
+ "integrity": "sha512-/ewp4XjvnxaREtqsZjF4Mfn078RD/9GmiEAtTeLQ7yFdKnqwTOgRMSvFz4et9U5RiJQ15WTGXPLj89zGusvxBg==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "8.17.0",
+ "@typescript-eslint/visitor-keys": "8.17.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/type-utils": {
+ "version": "8.17.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.17.0.tgz",
+ "integrity": "sha512-q38llWJYPd63rRnJ6wY/ZQqIzPrBCkPdpIsaCfkR3Q4t3p6sb422zougfad4TFW9+ElIFLVDzWGiGAfbb/v2qw==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/typescript-estree": "8.17.0",
+ "@typescript-eslint/utils": "8.17.0",
+ "debug": "^4.3.4",
+ "ts-api-utils": "^1.3.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "8.17.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.17.0.tgz",
+ "integrity": "sha512-gY2TVzeve3z6crqh2Ic7Cr+CAv6pfb0Egee7J5UAVWCpVvDI/F71wNfolIim4FE6hT15EbpZFVUj9j5i38jYXA==",
+ "dev": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "8.17.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.17.0.tgz",
+ "integrity": "sha512-JqkOopc1nRKZpX+opvKqnM3XUlM7LpFMD0lYxTqOTKQfCWAmxw45e3qlOCsEqEB2yuacujivudOFpCnqkBDNMw==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "8.17.0",
+ "@typescript-eslint/visitor-keys": "8.17.0",
+ "debug": "^4.3.4",
+ "fast-glob": "^3.3.2",
+ "is-glob": "^4.0.3",
+ "minimatch": "^9.0.4",
+ "semver": "^7.6.0",
+ "ts-api-utils": "^1.3.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "dev": true,
+ "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/@typescript-eslint/typescript-estree/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@typescript-eslint/utils": {
+ "version": "8.17.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.17.0.tgz",
+ "integrity": "sha512-bQC8BnEkxqG8HBGKwG9wXlZqg37RKSMY7v/X8VEWD8JG2JuTHuNK0VFvMPMUKQcbk6B+tf05k+4AShAEtCtJ/w==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "@typescript-eslint/scope-manager": "8.17.0",
+ "@typescript-eslint/types": "8.17.0",
+ "@typescript-eslint/typescript-estree": "8.17.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "8.17.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.17.0.tgz",
+ "integrity": "sha512-1Hm7THLpO6ww5QU6H/Qp+AusUUl+z/CAm3cNZZ0jQvon9yicgO7Rwd+/WWRpMKLYV6p2UvdbR27c86rzCPpreg==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "8.17.0",
+ "eslint-visitor-keys": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz",
+ "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==",
+ "dev": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@ungap/structured-clone": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
+ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
+ "dev": true
+ },
+ "node_modules/acorn": {
+ "version": "8.14.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
+ "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "node_modules/aria-query": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz",
+ "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/array-buffer-byte-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz",
+ "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz",
+ "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==",
+ "dev": true,
+ "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.prototype.findlast": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz",
+ "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz",
+ "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz",
+ "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz",
+ "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz",
+ "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz",
+ "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz",
+ "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==",
+ "dev": true
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ },
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
+ "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
+ "dev": true,
+ "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.2",
+ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.2.tgz",
+ "integrity": "sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/axios": {
+ "version": "1.7.9",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz",
+ "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==",
+ "dependencies": {
+ "follow-redirects": "^1.15.6",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
+ "node_modules/axobject-query": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",
+ "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "dev": true,
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/busboy": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
+ "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
+ "dependencies": {
+ "streamsearch": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=10.16.0"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz",
+ "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==",
+ "dev": true,
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.0",
+ "es-define-property": "^1.0.0",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/call-bind-apply-helpers": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.0.tgz",
+ "integrity": "sha512-CCKAP2tkPau7D3GE8+V8R6sQubA9R5foIzGp+85EXCVSCivuxBNAWqcpn72PKYiIcqoViv/kcUDpaEIMBVi1lQ==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001687",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001687.tgz",
+ "integrity": "sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ==",
+ "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"
+ }
+ ]
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
+ "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
+ },
+ "node_modules/color": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
+ "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
+ "optional": true,
+ "dependencies": {
+ "color-convert": "^2.0.1",
+ "color-string": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=12.5.0"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "devOptional": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "devOptional": true
+ },
+ "node_modules/color-string": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
+ "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+ "optional": true,
+ "dependencies": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
+ }
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/damerau-levenshtein": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
+ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==",
+ "dev": true
+ },
+ "node_modules/data-view-buffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz",
+ "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz",
+ "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz",
+ "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==",
+ "dev": true,
+ "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/date-fns": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz",
+ "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/kossnocorp"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
+ "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+ "dev": true,
+ "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/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/detect-libc": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
+ "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
+ "optional": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/dunder-proto": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.0.tgz",
+ "integrity": "sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==",
+ "dev": true,
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true
+ },
+ "node_modules/enhanced-resolve": {
+ "version": "5.17.1",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
+ "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/es-abstract": {
+ "version": "1.23.5",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.5.tgz",
+ "integrity": "sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==",
+ "dev": true,
+ "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.4",
+ "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.3",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.5",
+ "regexp.prototype.flags": "^1.5.3",
+ "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.1",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-iterator-helpers": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.0.tgz",
+ "integrity": "sha512-tpxqxncxnpw3c93u8n3VOzACmRFoVmWJqbWXvX/JfKbkhBw1oslgPrUfeSt2psuqyEJFD6N/9lg5i7bsKpoq+Q==",
+ "dev": true,
+ "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.4",
+ "gopd": "^1.0.1",
+ "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.3",
+ "safe-array-concat": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz",
+ "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz",
+ "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz",
+ "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==",
+ "dev": true,
+ "dependencies": {
+ "hasown": "^2.0.0"
+ }
+ },
+ "node_modules/es-to-primitive": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz",
+ "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==",
+ "dev": true,
+ "dependencies": {
+ "is-callable": "^1.2.7",
+ "is-date-object": "^1.0.5",
+ "is-symbol": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "8.57.1",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
+ "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
+ "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.4",
+ "@eslint/js": "8.57.1",
+ "@humanwhocodes/config-array": "^0.13.0",
+ "@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": "15.0.3",
+ "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.0.3.tgz",
+ "integrity": "sha512-IGP2DdQQrgjcr4mwFPve4DrCqo7CVVez1WoYY47XwKSrYO4hC0Dlb+iJA60i0YfICOzgNADIb8r28BpQ5Zs0wg==",
+ "dev": true,
+ "dependencies": {
+ "@next/eslint-plugin-next": "15.0.3",
+ "@rushstack/eslint-patch": "^1.10.3",
+ "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0",
+ "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0",
+ "eslint-import-resolver-node": "^0.3.6",
+ "eslint-import-resolver-typescript": "^3.5.2",
+ "eslint-plugin-import": "^2.31.0",
+ "eslint-plugin-jsx-a11y": "^6.10.0",
+ "eslint-plugin-react": "^7.35.0",
+ "eslint-plugin-react-hooks": "^5.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^7.23.0 || ^8.0.0 || ^9.0.0",
+ "typescript": ">=3.3.1"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-import-resolver-node": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz",
+ "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-import-resolver-typescript": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.7.0.tgz",
+ "integrity": "sha512-Vrwyi8HHxY97K5ebydMtffsWAn1SCR9eol49eCd5fJS4O1WV7PaAjbcjmbfJJSMz/t4Mal212Uz/fQZrOB8mow==",
+ "dev": true,
+ "dependencies": {
+ "@nolyfill/is-core-module": "1.0.39",
+ "debug": "^4.3.7",
+ "enhanced-resolve": "^5.15.0",
+ "fast-glob": "^3.3.2",
+ "get-tsconfig": "^4.7.5",
+ "is-bun-module": "^1.0.2",
+ "is-glob": "^4.0.3",
+ "stable-hash": "^0.0.4"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts"
+ },
+ "peerDependencies": {
+ "eslint": "*",
+ "eslint-plugin-import": "*",
+ "eslint-plugin-import-x": "*"
+ },
+ "peerDependenciesMeta": {
+ "eslint-plugin-import": {
+ "optional": true
+ },
+ "eslint-plugin-import-x": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-import-resolver-typescript/node_modules/fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "dev": true,
+ "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/eslint-import-resolver-typescript/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/eslint-module-utils": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz",
+ "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^3.2.7"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependenciesMeta": {
+ "eslint": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-module-utils/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-plugin-import": {
+ "version": "2.31.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz",
+ "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==",
+ "dev": true,
+ "dependencies": {
+ "@rtsao/scc": "^1.1.0",
+ "array-includes": "^3.1.8",
+ "array.prototype.findlastindex": "^1.2.5",
+ "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.12.0",
+ "hasown": "^2.0.2",
+ "is-core-module": "^2.15.1",
+ "is-glob": "^4.0.3",
+ "minimatch": "^3.1.2",
+ "object.fromentries": "^2.0.8",
+ "object.groupby": "^1.0.3",
+ "object.values": "^1.2.0",
+ "semver": "^6.3.1",
+ "string.prototype.trimend": "^1.0.8",
+ "tsconfig-paths": "^3.15.0"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/eslint-plugin-jsx-a11y": {
+ "version": "6.10.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz",
+ "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==",
+ "dev": true,
+ "dependencies": {
+ "aria-query": "^5.3.2",
+ "array-includes": "^3.1.8",
+ "array.prototype.flatmap": "^1.3.2",
+ "ast-types-flow": "^0.0.8",
+ "axe-core": "^4.10.0",
+ "axobject-query": "^4.1.0",
+ "damerau-levenshtein": "^1.0.8",
+ "emoji-regex": "^9.2.2",
+ "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.1"
+ },
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9"
+ }
+ },
+ "node_modules/eslint-plugin-react": {
+ "version": "7.37.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.2.tgz",
+ "integrity": "sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w==",
+ "dev": true,
+ "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.1.0",
+ "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": "5.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0.tgz",
+ "integrity": "sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/resolve": {
+ "version": "2.0.0-next.5",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz",
+ "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==",
+ "dev": true,
+ "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-plugin-react/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/espree": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
+ "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
+ "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "node_modules/fastq": {
+ "version": "1.17.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
+ "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
+ "dev": true,
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "dev": true,
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dev": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
+ "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
+ "dev": true,
+ "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.2",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz",
+ "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==",
+ "dev": true
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.15.9",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
+ "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/for-each": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+ "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "dev": true,
+ "dependencies": {
+ "is-callable": "^1.1.3"
+ }
+ },
+ "node_modules/form-data": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz",
+ "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/function.prototype.name": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
+ "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.5.tgz",
+ "integrity": "sha512-Y4+pKa7XeRUPWFNvOOYHkRYrfzW07oraURSvjDmRVOJ748OrVmeXtpE4+GCEHncjCjkTxPNRt8kEbxDhsn6VTg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.0",
+ "dunder-proto": "^1.0.0",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-symbol-description": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz",
+ "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==",
+ "dev": true,
+ "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.8.1",
+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz",
+ "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==",
+ "dev": true,
+ "dependencies": {
+ "resolve-pkg-maps": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "dev": true,
+ "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/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/globals": {
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globalthis": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
+ "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
+ "dev": true,
+ "dependencies": {
+ "define-properties": "^1.2.1",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true
+ },
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true
+ },
+ "node_modules/has-bigints": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "dev": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz",
+ "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==",
+ "dev": true,
+ "dependencies": {
+ "dunder-proto": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/internal-slot": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz",
+ "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "hasown": "^2.0.0",
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/is-array-buffer": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz",
+ "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==",
+ "dev": true,
+ "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.3.2",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
+ "optional": true
+ },
+ "node_modules/is-async-function": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz",
+ "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-bigint": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz",
+ "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==",
+ "dev": true,
+ "dependencies": {
+ "has-bigints": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-boolean-object": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.0.tgz",
+ "integrity": "sha512-kR5g0+dXf/+kXnqI+lu0URKYPKgICtHGGNCDSB10AaUFj3o/HkB3u7WfpRBJGFopxxY0oH3ux7ZsDjLtK7xqvw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-bun-module": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.3.0.tgz",
+ "integrity": "sha512-DgXeu5UWI0IsMQundYb5UAOzm6G2eVnarJ0byP6Tm55iZNKceD59LNPA2L4VvsScTtHcw0yEkVwSf7PC+QoLSA==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^7.6.3"
+ }
+ },
+ "node_modules/is-callable": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.15.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz",
+ "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz",
+ "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-finalizationregistry": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.0.tgz",
+ "integrity": "sha512-qfMdqbAQEwBw78ZyReKnlA8ezmPdb9BemzIIip/JkjaZUhitfXDkkr+3QTboW0JrSXT1QWyYShpvnNHGZ4c4yA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-generator-function": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
+ "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-map": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
+ "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-negative-zero": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
+ "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-number-object": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.0.tgz",
+ "integrity": "sha512-KVSZV0Dunv9DTPkhXwcZ3Q+tUc9TsaE1ZwX5J2WMvsSGS6Md8TFPun5uwh0yRdrNerI6vf/tbJxqSx4c1ZI1Lw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-regex": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.0.tgz",
+ "integrity": "sha512-B6ohK4ZmoftlUe+uvenXSbPJFo6U37BH7oO1B3nQH8f/7h27N56s85MhUtbFJAziz5dcmuR3i8ovUl35zp8pFA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "gopd": "^1.1.0",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-set": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz",
+ "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-shared-array-buffer": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz",
+ "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-string": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.0.tgz",
+ "integrity": "sha512-PlfzajuF9vSo5wErv3MJAKD/nqf9ngAs1NFQYm16nUYFO2IzxJ2hcm+IOCg+EEopdykNNUhVq5cz35cAUxU8+g==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-symbol": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.0.tgz",
+ "integrity": "sha512-qS8KkNNXUZ/I+nX6QT8ZS1/Yx0A444yhzdTKxCzKkNjQ9sHErBxJnJAgh+f5YhusYECEcjo4XcyH87hn6+ks0A==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "has-symbols": "^1.0.3",
+ "safe-regex-test": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-typed-array": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz",
+ "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz",
+ "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakref": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+ "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakset": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz",
+ "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==",
+ "dev": true,
+ "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": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "node_modules/iterator.prototype": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.3.tgz",
+ "integrity": "sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==",
+ "dev": true,
+ "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"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true
+ },
+ "node_modules/json5": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/jsx-ast-utils": {
+ "version": "3.3.5",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz",
+ "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/language-subtag-registry": {
+ "version": "0.3.23",
+ "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz",
+ "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==",
+ "dev": true
+ },
+ "node_modules/language-tags": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz",
+ "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==",
+ "dev": true,
+ "dependencies": {
+ "language-subtag-registry": "^0.3.20"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
+ },
+ "node_modules/loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "dev": true,
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
+ }
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "dev": true,
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.8",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
+ "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true
+ },
+ "node_modules/next": {
+ "version": "15.0.3",
+ "resolved": "https://registry.npmjs.org/next/-/next-15.0.3.tgz",
+ "integrity": "sha512-ontCbCRKJUIoivAdGB34yCaOcPgYXr9AAkV/IwqFfWWTXEPUgLYkSkqBhIk9KK7gGmgjc64B+RdoeIDM13Irnw==",
+ "dependencies": {
+ "@next/env": "15.0.3",
+ "@swc/counter": "0.1.3",
+ "@swc/helpers": "0.5.13",
+ "busboy": "1.6.0",
+ "caniuse-lite": "^1.0.30001579",
+ "postcss": "8.4.31",
+ "styled-jsx": "5.1.6"
+ },
+ "bin": {
+ "next": "dist/bin/next"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^19.8.0 || >= 20.0.0"
+ },
+ "optionalDependencies": {
+ "@next/swc-darwin-arm64": "15.0.3",
+ "@next/swc-darwin-x64": "15.0.3",
+ "@next/swc-linux-arm64-gnu": "15.0.3",
+ "@next/swc-linux-arm64-musl": "15.0.3",
+ "@next/swc-linux-x64-gnu": "15.0.3",
+ "@next/swc-linux-x64-musl": "15.0.3",
+ "@next/swc-win32-arm64-msvc": "15.0.3",
+ "@next/swc-win32-x64-msvc": "15.0.3",
+ "sharp": "^0.33.5"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.1.0",
+ "@playwright/test": "^1.41.2",
+ "babel-plugin-react-compiler": "*",
+ "react": "^18.2.0 || 19.0.0-rc-66855b96-20241106",
+ "react-dom": "^18.2.0 || 19.0.0-rc-66855b96-20241106",
+ "sass": "^1.3.0"
+ },
+ "peerDependenciesMeta": {
+ "@opentelemetry/api": {
+ "optional": true
+ },
+ "@playwright/test": {
+ "optional": true
+ },
+ "babel-plugin-react-compiler": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.3",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz",
+ "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.assign": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
+ "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz",
+ "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz",
+ "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz",
+ "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz",
+ "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/possible-typed-array-names": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
+ "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.4.31",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
+ "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
+ "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"
+ }
+ ],
+ "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",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/prop-types": {
+ "version": "15.8.1",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
+ "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
+ "dev": true,
+ "dependencies": {
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.13.1"
+ }
+ },
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "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"
+ }
+ ]
+ },
+ "node_modules/react": {
+ "version": "19.0.0-rc-66855b96-20241106",
+ "resolved": "https://registry.npmjs.org/react/-/react-19.0.0-rc-66855b96-20241106.tgz",
+ "integrity": "sha512-klH7xkT71SxRCx4hb1hly5FJB21Hz0ACyxbXYAECEqssUjtJeFUAaI2U1DgJAzkGEnvEm3DkxuBchMC/9K4ipg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "19.0.0-rc-66855b96-20241106",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0-rc-66855b96-20241106.tgz",
+ "integrity": "sha512-D25vdaytZ1wFIRiwNU98NPQ/upS2P8Co4/oNoa02PzHbh8deWdepjm5qwZM/46OdSiGv4WSWwxP55RO9obqJEQ==",
+ "dependencies": {
+ "scheduler": "0.25.0-rc-66855b96-20241106"
+ },
+ "peerDependencies": {
+ "react": "19.0.0-rc-66855b96-20241106"
+ }
+ },
+ "node_modules/react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
+ "dev": true
+ },
+ "node_modules/reflect.getprototypeof": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.8.tgz",
+ "integrity": "sha512-B5dj6usc5dkk8uFliwjwDHM8To5/QwdKz9JcBZ8Ic4G1f0YmeeJTtE/ZTdgRFPAfxZFiUaPhZ1Jcs4qeagItGQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "define-properties": "^1.2.1",
+ "dunder-proto": "^1.0.0",
+ "es-abstract": "^1.23.5",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.2.0",
+ "which-builtin-type": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/regexp.prototype.flags": {
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz",
+ "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-errors": "^1.3.0",
+ "set-function-name": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve": {
+ "version": "1.22.8",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/resolve-pkg-maps": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
+ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true,
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "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"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safe-array-concat": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz",
+ "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==",
+ "dev": true,
+ "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-regex-test": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz",
+ "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==",
+ "dev": true,
+ "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.25.0-rc-66855b96-20241106",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0-rc-66855b96-20241106.tgz",
+ "integrity": "sha512-HQXp/Mnp/MMRSXMQF7urNFla+gmtXW/Gr1KliuR0iboTit4KvZRY8KYaq5ccCTAOJiUqQh2rE2F3wgUekmgdlA=="
+ },
+ "node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "devOptional": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
+ "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
+ "dev": true,
+ "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/sharp": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz",
+ "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==",
+ "hasInstallScript": true,
+ "optional": true,
+ "dependencies": {
+ "color": "^4.2.3",
+ "detect-libc": "^2.0.3",
+ "semver": "^7.6.3"
+ },
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-darwin-arm64": "0.33.5",
+ "@img/sharp-darwin-x64": "0.33.5",
+ "@img/sharp-libvips-darwin-arm64": "1.0.4",
+ "@img/sharp-libvips-darwin-x64": "1.0.4",
+ "@img/sharp-libvips-linux-arm": "1.0.5",
+ "@img/sharp-libvips-linux-arm64": "1.0.4",
+ "@img/sharp-libvips-linux-s390x": "1.0.4",
+ "@img/sharp-libvips-linux-x64": "1.0.4",
+ "@img/sharp-libvips-linuxmusl-arm64": "1.0.4",
+ "@img/sharp-libvips-linuxmusl-x64": "1.0.4",
+ "@img/sharp-linux-arm": "0.33.5",
+ "@img/sharp-linux-arm64": "0.33.5",
+ "@img/sharp-linux-s390x": "0.33.5",
+ "@img/sharp-linux-x64": "0.33.5",
+ "@img/sharp-linuxmusl-arm64": "0.33.5",
+ "@img/sharp-linuxmusl-x64": "0.33.5",
+ "@img/sharp-wasm32": "0.33.5",
+ "@img/sharp-win32-ia32": "0.33.5",
+ "@img/sharp-win32-x64": "0.33.5"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
+ "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
+ "dev": true,
+ "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/simple-swizzle": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+ "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
+ "optional": true,
+ "dependencies": {
+ "is-arrayish": "^0.3.1"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/stable-hash": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.4.tgz",
+ "integrity": "sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==",
+ "dev": true
+ },
+ "node_modules/streamsearch": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
+ "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/string.prototype.includes": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz",
+ "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/string.prototype.matchall": {
+ "version": "4.0.11",
+ "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz",
+ "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz",
+ "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==",
+ "dev": true,
+ "dependencies": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.5"
+ }
+ },
+ "node_modules/string.prototype.trim": {
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz",
+ "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz",
+ "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
+ "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/styled-jsx": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz",
+ "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==",
+ "dependencies": {
+ "client-only": "0.0.1"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "peerDependencies": {
+ "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "@babel/core": {
+ "optional": true
+ },
+ "babel-plugin-macros": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/tapable": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/ts-api-utils": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz",
+ "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==",
+ "dev": true,
+ "engines": {
+ "node": ">=16"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.2.0"
+ }
+ },
+ "node_modules/tsconfig-paths": {
+ "version": "3.15.0",
+ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz",
+ "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==",
+ "dev": true,
+ "dependencies": {
+ "@types/json5": "^0.0.29",
+ "json5": "^1.0.2",
+ "minimist": "^1.2.6",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/typed-array-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz",
+ "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz",
+ "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==",
+ "dev": true,
+ "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.3",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.3.tgz",
+ "integrity": "sha512-GsvTyUHTriq6o/bHcTd0vM7OQ9JEdlvluu9YISaA7+KzDzPaIzEeDFNkTfhdE3MYcNhNi0vq/LlegYgIs5yPAw==",
+ "dev": true,
+ "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",
+ "reflect.getprototypeof": "^1.0.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-length": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz",
+ "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "is-typed-array": "^1.1.13",
+ "possible-typed-array-names": "^1.0.0",
+ "reflect.getprototypeof": "^1.0.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
+ "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "dev": true,
+ "peer": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/unbox-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+ "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.0.3",
+ "which-boxed-primitive": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/which-boxed-primitive": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.0.tgz",
+ "integrity": "sha512-Ei7Miu/AXe2JJ4iNF5j/UphAgRoma4trE6PtisM09bPygb3egMH3YLW/befsWb1A1AxvNSFidOFTB18XtnIIng==",
+ "dev": true,
+ "dependencies": {
+ "is-bigint": "^1.1.0",
+ "is-boolean-object": "^1.2.0",
+ "is-number-object": "^1.1.0",
+ "is-string": "^1.1.0",
+ "is-symbol": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-builtin-type": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.0.tgz",
+ "integrity": "sha512-I+qLGQ/vucCby4tf5HsLmGueEla4ZhwTBSqaooS+Y0BuxN4Cp+okmGuV+8mXZ84KDI9BA+oklo+RzKg0ONdSUA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "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.1.0",
+ "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-collection": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz",
+ "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==",
+ "dev": true,
+ "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.16",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.16.tgz",
+ "integrity": "sha512-g+N+GAWiRj66DngFwHvISJd+ITsyphZvD1vChfVg6cEdnzy53GzB3oy0fUNlvhz7H7+MiqhYr26qxQShCpKTTQ==",
+ "dev": true,
+ "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",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ }
+ }
+}
diff --git a/sprint9/package.json b/sprint9/package.json
new file mode 100644
index 000000000..62726cca9
--- /dev/null
+++ b/sprint9/package.json
@@ -0,0 +1,22 @@
+{
+ "name": "sprint8",
+ "version": "0.1.0",
+ "private": true,
+ "scripts": {
+ "dev": "next dev",
+ "build": "next build",
+ "start": "next start",
+ "lint": "next lint"
+ },
+ "dependencies": {
+ "axios": "^1.7.9",
+ "date-fns": "^4.1.0",
+ "next": "15.0.3",
+ "react": "19.0.0-rc-66855b96-20241106",
+ "react-dom": "19.0.0-rc-66855b96-20241106"
+ },
+ "devDependencies": {
+ "eslint": "^8",
+ "eslint-config-next": "15.0.3"
+ }
+}
diff --git a/sprint9/pages/404.jsx b/sprint9/pages/404.jsx
new file mode 100644
index 000000000..697b237df
--- /dev/null
+++ b/sprint9/pages/404.jsx
@@ -0,0 +1,86 @@
+import Image from "next/image";
+import styles from "@/styles/pages/404.module.css";
+import Link from "next/link";
+
+function NotFound() {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Welcome to 404 Panda World!
+
You are looking for a page you can't find.
+ Please follow me.
+
+
+
+
+
+
+
+
+
+
+ );
+}
+
+export default NotFound;
\ No newline at end of file
diff --git a/sprint9/pages/_app.js b/sprint9/pages/_app.js
new file mode 100644
index 000000000..8de930f05
--- /dev/null
+++ b/sprint9/pages/_app.js
@@ -0,0 +1,35 @@
+import { useRouter } from "next/router";
+import Footer from "@/layouts/Footer";
+import Header from "@/layouts/Header";
+import Head from "next/head";
+import "@/styles/globals.css";
+// HomePage ๊ด๋ จ css ์ด์ฉ ์ ์์ด ์ ์ญ css๋ก ๋์ฒด ํจ
+import "@/styles/pages/HomePage/common.css";
+import "@/styles/pages/HomePage/Hero.css";
+import "@/styles/pages/HomePage/Section1.css";
+import "@/styles/pages/HomePage/Section2.css";
+import "@/styles/pages/HomePage/Section3.css";
+import "@/styles/pages/HomePage/UnderBanner.css";
+
+
+/**ํ๋ผ๋ฏธํฐ Component, pageProps
+ * Component: ๊ฐ๊ฐ์ ํ์ด์ง์ ๋ํ ์ปดํฌ๋ํธ, ํ์ด์ง๋ผ๊ณ ๋ณด๋ฉด ๋จ
+ * pageProps: ์ปดํฌ๋ํธ์์ ์ ๋ฌํ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ๊ฐ์ฒด
+ * */
+export default function App({ Component, pageProps }) {
+ const router = useRouter();
+ const noLayoutPages = ['/login', '/signIn']; // Layout์ ์ ์ฉํ์ง ์์ ํ์ด์ง ๊ฒฝ๋ก
+ const shouldShowLayout = !noLayoutPages.includes(router.pathname);
+ return (
+ <>
+
+ ํ๋ค๋ง์ผ
+
+
+
+ {shouldShowLayout &&}
+
+ {shouldShowLayout && }
+ >
+ )
+}
diff --git a/sprint9/pages/_document.js b/sprint9/pages/_document.js
new file mode 100644
index 000000000..8211f7be0
--- /dev/null
+++ b/sprint9/pages/_document.js
@@ -0,0 +1,14 @@
+import { Html, Head, Main, NextScript } from "next/document";
+
+// ๊ณตํต๋ HTML ์ฝ๋๋ฅผ ์ง์ ํ ์ ์๋ ํ์ผ
+export default function Document() {
+ return (
+
+
+
+
+
+
+
+ );
+}
diff --git a/sprint9/pages/article-detail/[id].jsx b/sprint9/pages/article-detail/[id].jsx
new file mode 100644
index 000000000..98c5df37f
--- /dev/null
+++ b/sprint9/pages/article-detail/[id].jsx
@@ -0,0 +1,54 @@
+import { useRouter } from "next/router";
+import Link from "next/link";
+import Image from "next/image";
+import styles from "@/styles/pages/ArticleDetail.module.css";
+import ArticleInfo from "@/components/ArticleDetail/ArticleInfo";
+import CommentPost from "@/components/ArticleDetail/CommentPost";
+import Comments from "@/components/ArticleDetail/Comments";
+import NoneComments from "@/components/ArticleDetail/NoneComments";
+import useArticleId from "@/hooks/useArticleId";
+import useComment from "@/hooks/useComment";
+
+function ArticleDetail() {
+ const router = useRouter();
+ const articleId = router.query.id;
+
+ const { article, isLoading, hasError } = useArticleId(articleId) || [];
+ const { comments, handleDeleteComment, handlePostComment, setTextareaValue, textareaValue } = useComment(articleId) || [];
+
+// loading, error ์ผ ๋์ ํ๋ฉด ์ฒ๋ฆฌ ๋์์ธ ํ์(๋ค์์)
+ if (isLoading) { return Loading...
; }
+ if (hasError) {
+ return Error loading article. Please try again later.
;
+ }
+ if (!article || article.length === 0) {
+ return No article found.
;
+ }
+
+ return (
+
+
+
+
+ {comments.map((comment, index) => (
+
+ ))}
+ {comments.length ? null :
}
+
+
+
+
+ );
+}
+
+export default ArticleDetail;
diff --git a/sprint9/pages/article-post.jsx b/sprint9/pages/article-post.jsx
new file mode 100644
index 000000000..f81561f02
--- /dev/null
+++ b/sprint9/pages/article-post.jsx
@@ -0,0 +1,103 @@
+import { useState } from "react";
+import styles from "@/styles/pages/ArticlePost.module.css";
+import useArticlePost from "@/hooks/useArticlePost";
+
+function ArticlePost() {
+ const [title, setTitle] = useState("");
+ const [content, setContent] = useState("");
+ const [titleValid, setTitleValid] = useState(false);
+ const [contentValid, setContentValid] = useState(false);
+
+ const { postHandler } = useArticlePost(title, content, setTitle, setContent);
+
+ const titleValidHandler = () => {
+ if (title === "") {
+ setTitleValid(true);
+ setTimeout(() => {
+ setTitleValid(false);
+ }, 2000);
+ } else {
+ setTitleValid(false);
+ }
+ };
+
+ const contentValidHandler = () => {
+ if (content === "") {
+ setContentValid(true);
+ setTimeout(() => {
+ setContentValid(false);
+ }, 2000);
+ } else {
+ setContentValid(false);
+ }
+ };
+
+ return (
+
+
+
+
+ ๊ฒ์๊ธ ์ฐ๊ธฐ
+
+
+
+
+
*์ ๋ชฉ
+
+
setTitle(e.target.value)}
+ onBlur={titleValidHandler}
+ onClick={() => {
+ setContentValid(false)
+ }}
+ className={`${styles.inputTitle} ${titleValid ? styles.inputValidBox : ""}`}
+ type="text"
+ name="title"
+ placeholder="์ ๋ชฉ์ ์
๋ ฅํด์ฃผ์ธ์"
+ />
+ {titleValid ?
+
+ ์ ๋ชฉ์ ์
๋ ฅํด์ฃผ์ธ์
+
+ : null
+ }
+
+
+
+
+
+ )
+}
+
+export default ArticlePost;
diff --git a/sprint9/pages/community-feed.jsx b/sprint9/pages/community-feed.jsx
new file mode 100644
index 000000000..985f1d158
--- /dev/null
+++ b/sprint9/pages/community-feed.jsx
@@ -0,0 +1,26 @@
+import Link from "next/link";
+import styles from "@/styles/pages/CommunityFeed.module.css";
+import BestArticles from "@/components/CommunityFeed/BestArticles";
+import ArticlesList from "@/components/CommunityFeed/ArticlesList";
+
+function CommunityFeed({ articles }) {
+ return (
+
+
+
๋ฒ ์คํธ ๊ฒ์๊ธ
+
+
+
๊ฒ์๊ธ
+
+
+
+
+
+
+
+ );
+}
+
+export default CommunityFeed;
diff --git a/sprint9/pages/index.js b/sprint9/pages/index.js
new file mode 100644
index 000000000..851c29145
--- /dev/null
+++ b/sprint9/pages/index.js
@@ -0,0 +1,20 @@
+import Hero from "@/components/HomePage/Hero";
+import Section1 from "@/components/HomePage/Section1";
+import Section2 from "@/components/HomePage/Section2";
+import Section3 from "@/components/HomePage/Section3";
+import UnderBanner from "@/components/HomePage/UnderBanner";
+
+
+function HomePage() {
+ return (
+ <>
+
+
+
+
+
+ >
+ );
+}
+
+export default HomePage;
diff --git a/sprint9/pages/items/[id].jsx b/sprint9/pages/items/[id].jsx
new file mode 100644
index 000000000..9f260f29f
--- /dev/null
+++ b/sprint9/pages/items/[id].jsx
@@ -0,0 +1,11 @@
+import styles from '@/styles/pages/ItemDetail.module.css';
+
+function ItemDetail() {
+ return (
+
+ ItemDetail page
+
+ )
+}
+
+export default ItemDetail;
diff --git a/sprint9/pages/items/index.jsx b/sprint9/pages/items/index.jsx
new file mode 100644
index 000000000..b1d6b602a
--- /dev/null
+++ b/sprint9/pages/items/index.jsx
@@ -0,0 +1,11 @@
+import styles from '@/styles/pages/Items.module.css';
+
+function Items() {
+ return (
+
+ Items page
+
+ )
+}
+
+export default Items;
diff --git a/sprint9/pages/login.jsx b/sprint9/pages/login.jsx
new file mode 100644
index 000000000..ea3d45882
--- /dev/null
+++ b/sprint9/pages/login.jsx
@@ -0,0 +1,111 @@
+import { useState } from "react";
+import Link from "next/link";
+import Image from "next/image";
+import styles from "@/styles/pages/login.module.css";
+
+function Login() {
+ const [passwordVisible, setPasswordVisible] = useState(false);
+
+ return (
+
+
+
+
+
์ด๋ฉ์ผ
+
+
+
+
+
+
๋น๋ฐ๋ฒํธ
+
+
+
+
+
+
+
+
+
๊ฐํธ ๋ก๊ทธ์ธํ๊ธฐ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ํ๋ค๋ง์ผ์ด ์ฒ์์ด์ ๊ฐ์?
+
+
+ ํ์๊ฐ์
+
+
+
+
+
+ )
+}
+
+export default Login;
\ No newline at end of file
diff --git a/sprint9/pages/signIn.jsx b/sprint9/pages/signIn.jsx
new file mode 100644
index 000000000..51ce365a6
--- /dev/null
+++ b/sprint9/pages/signIn.jsx
@@ -0,0 +1,133 @@
+import { useState } from "react";
+import Image from "next/image";
+import Link from "next/link";
+import styles from "@/styles/pages/SignIn.module.css";
+
+
+function SignIn() {
+const [passwordVisible, setPasswordVisible] = useState(false);
+const [checkPasswordVisible, setCheckPasswordVisible] = useState(false);
+
+ return (
+
+
+
+
+
์ด๋ฉ์ผ
+
+
+
+
+
+
๋๋ค์
+
+
+
+
+
+
๋น๋ฐ๋ฒํธ
+
+
+
+
+
+
+
๋น๋ฐ๋ฒํธ ํ์ธ
+
+
+
+
+
+
+
+
+
๊ฐํธ ๋ก๊ทธ์ธํ๊ธฐ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ์ด๋ฏธ ํ์์ด์ ๊ฐ์?
+
+
+ ๋ก๊ทธ์ธ
+
+
+
+
+
+ );
+}
+
+export default SignIn;
diff --git a/sprint9/public/images/404page/Not_Found_img.png b/sprint9/public/images/404page/Not_Found_img.png
new file mode 100644
index 0000000000000000000000000000000000000000..bf15885cd48f24177502cd25f76f55f8281bb533
GIT binary patch
literal 76797
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