From 6c8d4c6ec17208209b16a54fe688033c874ac8f9 Mon Sep 17 00:00:00 2001 From: headlessdev Date: Sat, 19 Apr 2025 19:44:54 +0200 Subject: [PATCH 01/34] Bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 69f0be1..f50d3e8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "corecontrol", - "version": "0.0.7", + "version": "0.0.8", "private": true, "scripts": { "dev": "next dev --turbopack", From a3d181434338467923d370bb59dfcb9d993512af Mon Sep 17 00:00:00 2001 From: headlessdev Date: Sat, 19 Apr 2025 21:47:00 +0200 Subject: [PATCH 02/34] Add monitoring fields and online status to server model in Prisma schema --- prisma/migrations/20250419180224_monitoring/migration.sql | 7 +++++++ prisma/schema.prisma | 6 ++++++ 2 files changed, 13 insertions(+) create mode 100644 prisma/migrations/20250419180224_monitoring/migration.sql diff --git a/prisma/migrations/20250419180224_monitoring/migration.sql b/prisma/migrations/20250419180224_monitoring/migration.sql new file mode 100644 index 0000000..c938471 --- /dev/null +++ b/prisma/migrations/20250419180224_monitoring/migration.sql @@ -0,0 +1,7 @@ +-- AlterTable +ALTER TABLE "server" ADD COLUMN "cpuUsage" TEXT, +ADD COLUMN "diskUsage" TEXT, +ADD COLUMN "monitoring" BOOLEAN NOT NULL DEFAULT false, +ADD COLUMN "monitoringURL" TEXT, +ADD COLUMN "online" BOOLEAN NOT NULL DEFAULT true, +ADD COLUMN "ramUsage" TEXT; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 9910cf4..7a08509 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -45,6 +45,12 @@ model server { gpu String? ram String? disk String? + monitoring Boolean @default(false) + monitoringURL String? + cpuUsage String? + ramUsage String? + diskUsage String? + online Boolean @default(true) } model settings { From d1549bf0961fd9ec3271c51281a5359870badd37 Mon Sep 17 00:00:00 2001 From: headlessdev Date: Sun, 20 Apr 2025 17:09:33 +0200 Subject: [PATCH 03/34] Add monitoring functionality to Servers component, including state management for monitoring settings and a new monitoring tab in the UI. --- app/dashboard/servers/Servers.tsx | 65 ++++++++++++++++++++++++++++++- 1 file changed, 64 insertions(+), 1 deletion(-) diff --git a/app/dashboard/servers/Servers.tsx b/app/dashboard/servers/Servers.tsx index 3d1077f..190143c 100644 --- a/app/dashboard/servers/Servers.tsx +++ b/app/dashboard/servers/Servers.tsx @@ -73,6 +73,8 @@ interface Server { disk?: string hostedVMs?: Server[] isVM?: boolean + monitoring?: boolean + monitoringURL?: string } interface GetServersResponse { @@ -92,6 +94,8 @@ export default function Dashboard() { const [gpu, setGpu] = useState("") const [ram, setRam] = useState("") const [disk, setDisk] = useState("") + const [monitoring, setMonitoring] = useState(false) + const [monitoringURL, setMonitoringURL] = useState("") const [currentPage, setCurrentPage] = useState(1) const [maxPage, setMaxPage] = useState(1) @@ -112,6 +116,9 @@ export default function Dashboard() { const [editGpu, setEditGpu] = useState("") const [editRam, setEditRam] = useState("") const [editDisk, setEditDisk] = useState("") + const [editMonitoring, setEditMonitoring] = useState(false) + const [editMonitoringURL, setEditMonitoringURL] = useState("") + const [searchTerm, setSearchTerm] = useState("") const [isSearching, setIsSearching] = useState(false) @@ -151,6 +158,8 @@ export default function Dashboard() { gpu, ram, disk, + monitoring, + monitoringURL, }) setIsAddDialogOpen(false) setHost(false) @@ -164,6 +173,8 @@ export default function Dashboard() { setGpu("") setRam("") setDisk("") + setMonitoring(false) + setMonitoringURL("") getServers() } catch (error: any) { console.log(error.response.data) @@ -223,6 +234,8 @@ export default function Dashboard() { setEditGpu(server.gpu || "") setEditRam(server.ram || "") setEditDisk(server.disk || "") + setEditMonitoring(server.monitoring || false) + setEditMonitoringURL(server.monitoringURL || "") } const edit = async () => { @@ -242,6 +255,8 @@ export default function Dashboard() { gpu: editGpu, ram: editRam, disk: editDisk, + monitoring: editMonitoring, + monitoringURL: editMonitoringURL, }) getServers() setEditId(null) @@ -375,6 +390,7 @@ export default function Dashboard() { General Hardware Virtualization + Monitoring
@@ -580,6 +596,29 @@ export default function Dashboard() { )}
+ +
+
+ setMonitoring(checked === true)} + /> + +
+ {monitoring && ( +
+ + setMonitoringURL(e.target.value)} + /> +
+ )} +
+
@@ -716,6 +755,7 @@ export default function Dashboard() { General Hardware Virtualization + Monitoring
@@ -845,7 +885,6 @@ export default function Dashboard() {
-
@@ -924,6 +963,30 @@ export default function Dashboard() { )}
+ +
+
+ setEditMonitoring(checked === true)} + /> + +
+ {editMonitoring && ( +
+ + setEditMonitoringURL(e.target.value)} + /> +
+ )} +
+
From 4a647ac19be795e73f0dd8deab1f3b98df53ea58 Mon Sep 17 00:00:00 2001 From: headlessdev Date: Sun, 20 Apr 2025 17:10:26 +0200 Subject: [PATCH 04/34] Add monitoring fields to server add and edit routes, including monitoring status and URL in request handling. --- app/api/servers/add/route.ts | 8 ++++++-- app/api/servers/edit/route.ts | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/app/api/servers/add/route.ts b/app/api/servers/add/route.ts index e29924c..440d4d0 100644 --- a/app/api/servers/add/route.ts +++ b/app/api/servers/add/route.ts @@ -13,13 +13,15 @@ interface AddRequest { gpu: string; ram: string; disk: string; + monitoring: boolean; + monitoringURL: string; } export async function POST(request: NextRequest) { try { const body: AddRequest = await request.json(); - const { host, hostServer, name, icon, os, ip, url, cpu, gpu, ram, disk } = body; + const { host, hostServer, name, icon, os, ip, url, cpu, gpu, ram, disk, monitoring, monitoringURL } = body; const server = await prisma.server.create({ data: { @@ -33,7 +35,9 @@ export async function POST(request: NextRequest) { cpu, gpu, ram, - disk + disk, + monitoring, + monitoringURL } }); diff --git a/app/api/servers/edit/route.ts b/app/api/servers/edit/route.ts index e0ef2f6..c857d68 100644 --- a/app/api/servers/edit/route.ts +++ b/app/api/servers/edit/route.ts @@ -14,12 +14,14 @@ interface EditRequest { gpu: string; ram: string; disk: string; + monitoring: boolean; + monitoringURL: string; } export async function PUT(request: NextRequest) { try { const body: EditRequest = await request.json(); - const { host, hostServer, id, name, icon, os, ip, url, cpu, gpu, ram, disk } = body; + const { host, hostServer, id, name, icon, os, ip, url, cpu, gpu, ram, disk, monitoring, monitoringURL } = body; const existingServer = await prisma.server.findUnique({ where: { id } }); if (!existingServer) { @@ -46,7 +48,9 @@ export async function PUT(request: NextRequest) { cpu, gpu, ram, - disk + disk, + monitoring, + monitoringURL } }); From 7f2ebf6129396115fe57d4a31ca6753a45cc70d0 Mon Sep 17 00:00:00 2001 From: headlessdev Date: Sun, 20 Apr 2025 17:16:10 +0200 Subject: [PATCH 05/34] Docker Compose depends_on fix --- README.md | 3 --- compose.yml | 3 --- 2 files changed, 6 deletions(-) diff --git a/README.md b/README.md index d13c9e7..0726892 100644 --- a/README.md +++ b/README.md @@ -60,9 +60,6 @@ services: environment: JWT_SECRET: RANDOM_SECRET # Replace with a secure random string DATABASE_URL: "postgresql://postgres:postgres@db:5432/postgres" - depends_on: - - db - - agent agent: image: haedlessdev/corecontrol-agent:latest diff --git a/compose.yml b/compose.yml index ea7f8c4..b833a07 100644 --- a/compose.yml +++ b/compose.yml @@ -6,9 +6,6 @@ services: environment: JWT_SECRET: RANDOM_SECRET # Replace with a secure random string DATABASE_URL: "postgresql://postgres:postgres@db:5432/postgres" - depends_on: - - db - - agent agent: image: haedlessdev/corecontrol-agent:latest From 9036110a1cf130ed7d9db48e28bb2d8f42c0ef1b Mon Sep 17 00:00:00 2001 From: headlessdev Date: Sun, 20 Apr 2025 18:37:38 +0200 Subject: [PATCH 06/34] Remove gitbook --- docs/.gitbook/assets/image.png | Bin 82057 -> 0 bytes docs/README.md | 27 ---------------- docs/SUMMARY.md | 4 --- docs/installation.md | 56 --------------------------------- 4 files changed, 87 deletions(-) delete mode 100644 docs/.gitbook/assets/image.png delete mode 100644 docs/README.md delete mode 100644 docs/SUMMARY.md delete mode 100644 docs/installation.md diff --git a/docs/.gitbook/assets/image.png b/docs/.gitbook/assets/image.png deleted file mode 100644 index 336d5b461d64b49658f0fe7b98fbf2ac3c5dc643..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82057 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≻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 pzf8ll$q+P-M8K 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 diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index 38d11e9..0000000 --- a/docs/README.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -icon: gear -layout: - title: - visible: true - description: - visible: true - tableOfContents: - visible: true - outline: - visible: false - pagination: - visible: true ---- - -# CoreControl - -
- -CoreControl is the only dashboard you'll ever need to manage your entire server infrastructure. Keep all your server data organized in one central place, easily add your self-hosted applications with quick access links, and monitor their availability in real-time with built-in uptime tracking. Designed for simplicity and control, it gives you a clear overview of your entire self-hosted setup at a glance. - -## Features - -* Dashboard: A clear screen with all the important information about your servers (WIP) -* Servers: This allows you to add all your servers (including Hardware Information), with Quicklinks to their Management Panels -* Applications: Add all your self-hosted services to a clear list and track their up and down time -* Networks: Generate visually stunning network flowcharts with ease. diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md deleted file mode 100644 index a4b8846..0000000 --- a/docs/SUMMARY.md +++ /dev/null @@ -1,4 +0,0 @@ -# Table of contents - -* [CoreControl](README.md) -* [Installation](installation.md) diff --git a/docs/installation.md b/docs/installation.md deleted file mode 100644 index 9bd88e8..0000000 --- a/docs/installation.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -icon: down ---- - -# Installation - -To install the application using Docker Compose, first, ensure that Docker and Docker Compose are installed on your system. - -You can then simply install and start the following Docker compose. Remember that you have to generate a JWT\_SECRET beforehand. - -```yaml -services: - web: - image: haedlessdev/corecontrol:latest - ports: - - "3000:3000" - environment: - JWT_SECRET: RANDOM_SECRET # Replace with a secure random string - DATABASE_URL: "postgresql://postgres:postgres@db:5432/postgres" - depends_on: - - db - - agent - - agent: - image: haedlessdev/corecontrol-agent:latest - environment: - DATABASE_URL: "postgresql://postgres:postgres@db:5432/postgres" - - db: - image: postgres:17 - restart: always - environment: - POSTGRES_USER: postgres - POSTGRES_PASSWORD: postgres - POSTGRES_DB: postgres - volumes: - - postgres_data:/var/lib/postgresql/data - -volumes: - postgres_data: -``` - -Now start the application: - -```sh -docker compose up -d -``` - - - -**The default login is:** - -E-Mail: [admin@example.com](mailto:admin@example.com)\ -Password: admin - -_Be sure to set your own password and customize the e-mail, otherwise this poses a security risk!_ From 2eb0b4c8a062bf6c884bafbb57036d24e58452b4 Mon Sep 17 00:00:00 2001 From: headlessdev Date: Sun, 20 Apr 2025 18:44:27 +0200 Subject: [PATCH 07/34] Vitepress init --- .gitignore | 5 + docs/.vitepress/config.mts | 28 + docs/api-examples.md | 49 + docs/index.md | 25 + docs/markdown-examples.md | 85 ++ package-lock.json | 2426 +++++++++++++++++++++++++++++++++++- package.json | 10 +- 7 files changed, 2609 insertions(+), 19 deletions(-) create mode 100644 docs/.vitepress/config.mts create mode 100644 docs/api-examples.md create mode 100644 docs/index.md create mode 100644 docs/markdown-examples.md diff --git a/.gitignore b/.gitignore index 5ef6a52..9f3bd95 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,10 @@ # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# Vitepress +docs/.vitepress/dist +docs/.vitepress/cache + # dependencies /node_modules /.pnp diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts new file mode 100644 index 0000000..53874fe --- /dev/null +++ b/docs/.vitepress/config.mts @@ -0,0 +1,28 @@ +import { defineConfig } from 'vitepress' + +// https://vitepress.dev/reference/site-config +export default defineConfig({ + title: "CoreControl", + description: "Dashboard to manage your entire server infrastructure", + themeConfig: { + // https://vitepress.dev/reference/default-theme-config + nav: [ + { text: 'Home', link: '/' }, + { text: 'Examples', link: '/markdown-examples' } + ], + + sidebar: [ + { + text: 'Examples', + items: [ + { text: 'Markdown Examples', link: '/markdown-examples' }, + { text: 'Runtime API Examples', link: '/api-examples' } + ] + } + ], + + socialLinks: [ + { icon: 'github', link: 'https://github.com/vuejs/vitepress' } + ] + } +}) diff --git a/docs/api-examples.md b/docs/api-examples.md new file mode 100644 index 0000000..6bd8bb5 --- /dev/null +++ b/docs/api-examples.md @@ -0,0 +1,49 @@ +--- +outline: deep +--- + +# Runtime API Examples + +This page demonstrates usage of some of the runtime APIs provided by VitePress. + +The main `useData()` API can be used to access site, theme, and page data for the current page. It works in both `.md` and `.vue` files: + +```md + + +## Results + +### Theme Data +
{{ theme }}
+ +### Page Data +
{{ page }}
+ +### Page Frontmatter +
{{ frontmatter }}
+``` + + + +## Results + +### Theme Data +
{{ theme }}
+ +### Page Data +
{{ page }}
+ +### Page Frontmatter +
{{ frontmatter }}
+ +## More + +Check out the documentation for the [full list of runtime APIs](https://vitepress.dev/reference/runtime-api#usedata). diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..e0fa992 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,25 @@ +--- +# https://vitepress.dev/reference/default-theme-home-page +layout: home + +hero: + name: "CoreControl" + text: "Dashboard to manage your entire server infrastructure" + tagline: My great project tagline + actions: + - theme: brand + text: Markdown Examples + link: /markdown-examples + - theme: alt + text: API Examples + link: /api-examples + +features: + - title: Feature A + details: Lorem ipsum dolor sit amet, consectetur adipiscing elit + - title: Feature B + details: Lorem ipsum dolor sit amet, consectetur adipiscing elit + - title: Feature C + details: Lorem ipsum dolor sit amet, consectetur adipiscing elit +--- + diff --git a/docs/markdown-examples.md b/docs/markdown-examples.md new file mode 100644 index 0000000..f9258a5 --- /dev/null +++ b/docs/markdown-examples.md @@ -0,0 +1,85 @@ +# Markdown Extension Examples + +This page demonstrates some of the built-in markdown extensions provided by VitePress. + +## Syntax Highlighting + +VitePress provides Syntax Highlighting powered by [Shiki](https://github.com/shikijs/shiki), with additional features like line-highlighting: + +**Input** + +````md +```js{4} +export default { + data () { + return { + msg: 'Highlighted!' + } + } +} +``` +```` + +**Output** + +```js{4} +export default { + data () { + return { + msg: 'Highlighted!' + } + } +} +``` + +## Custom Containers + +**Input** + +```md +::: info +This is an info box. +::: + +::: tip +This is a tip. +::: + +::: warning +This is a warning. +::: + +::: danger +This is a dangerous warning. +::: + +::: details +This is a details block. +::: +``` + +**Output** + +::: info +This is an info box. +::: + +::: tip +This is a tip. +::: + +::: warning +This is a warning. +::: + +::: danger +This is a dangerous warning. +::: + +::: details +This is a details block. +::: + +## More + +Check out the documentation for the [full list of markdown extensions](https://vitepress.dev/guide/markdown). diff --git a/package-lock.json b/package-lock.json index 16d96ec..c0ed9bd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "corecontrol", - "version": "0.0.7", + "version": "0.0.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "corecontrol", - "version": "0.0.7", + "version": "0.0.8", "dependencies": { "@prisma/client": "^6.6.0", "@prisma/extension-accelerate": "^1.3.0", @@ -52,7 +52,250 @@ "prisma": "^6.6.0", "tailwindcss": "^4", "tsx": "^4.19.3", - "typescript": "^5" + "typescript": "^5", + "vitepress": "^1.6.3" + } + }, + "node_modules/@algolia/autocomplete-core": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.17.7.tgz", + "integrity": "sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-plugin-algolia-insights": "1.17.7", + "@algolia/autocomplete-shared": "1.17.7" + } + }, + "node_modules/@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.7.tgz", + "integrity": "sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-shared": "1.17.7" + }, + "peerDependencies": { + "search-insights": ">= 1 < 3" + } + }, + "node_modules/@algolia/autocomplete-preset-algolia": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.7.tgz", + "integrity": "sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-shared": "1.17.7" + }, + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/autocomplete-shared": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.7.tgz", + "integrity": "sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/client-abtesting": { + "version": "5.23.4", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.23.4.tgz", + "integrity": "sha512-WIMT2Kxy+FFWXWQxIU8QgbTioL+SGE24zhpj0kipG4uQbzXwONaWt7ffaYLjfge3gcGSgJVv+1VlahVckafluQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.23.4", + "@algolia/requester-browser-xhr": "5.23.4", + "@algolia/requester-fetch": "5.23.4", + "@algolia/requester-node-http": "5.23.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-analytics": { + "version": "5.23.4", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.23.4.tgz", + "integrity": "sha512-4B9gChENsQA9kFmFlb+x3YhBz2Gx3vSsm81FHI1yJ3fn2zlxREHmfrjyqYoMunsU7BybT/o5Nb7ccCbm/vfseA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.23.4", + "@algolia/requester-browser-xhr": "5.23.4", + "@algolia/requester-fetch": "5.23.4", + "@algolia/requester-node-http": "5.23.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-common": { + "version": "5.23.4", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.23.4.tgz", + "integrity": "sha512-bsj0lwU2ytiWLtl7sPunr+oLe+0YJql9FozJln5BnIiqfKOaseSDdV42060vUy+D4373f2XBI009K/rm2IXYMA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-insights": { + "version": "5.23.4", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.23.4.tgz", + "integrity": "sha512-XSCtAYvJ/hnfDHfRVMbBH0dayR+2ofVZy3jf5qyifjguC6rwxDsSdQvXpT0QFVyG+h8UPGtDhMPoUIng4wIcZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.23.4", + "@algolia/requester-browser-xhr": "5.23.4", + "@algolia/requester-fetch": "5.23.4", + "@algolia/requester-node-http": "5.23.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-personalization": { + "version": "5.23.4", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.23.4.tgz", + "integrity": "sha512-l/0QvqgRFFOf7BnKSJ3myd1WbDr86ftVaa3PQwlsNh7IpIHmvVcT83Bi5zlORozVGMwaKfyPZo6O48PZELsOeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.23.4", + "@algolia/requester-browser-xhr": "5.23.4", + "@algolia/requester-fetch": "5.23.4", + "@algolia/requester-node-http": "5.23.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-query-suggestions": { + "version": "5.23.4", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.23.4.tgz", + "integrity": "sha512-TB0htrDgVacVGtPDyENoM6VIeYqR+pMsDovW94dfi2JoaRxfqu/tYmLpvgWcOknP6wLbr8bA+G7t/NiGksNAwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.23.4", + "@algolia/requester-browser-xhr": "5.23.4", + "@algolia/requester-fetch": "5.23.4", + "@algolia/requester-node-http": "5.23.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-search": { + "version": "5.23.4", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.23.4.tgz", + "integrity": "sha512-uBGo6KwUP6z+u6HZWRui8UJClS7fgUIAiYd1prUqCbkzDiCngTOzxaJbEvrdkK0hGCQtnPDiuNhC5MhtVNN4Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.23.4", + "@algolia/requester-browser-xhr": "5.23.4", + "@algolia/requester-fetch": "5.23.4", + "@algolia/requester-node-http": "5.23.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/ingestion": { + "version": "1.23.4", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.23.4.tgz", + "integrity": "sha512-Si6rFuGnSeEUPU9QchYvbknvEIyCRK7nkeaPVQdZpABU7m4V/tsiWdHmjVodtx3h20VZivJdHeQO9XbHxBOcCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.23.4", + "@algolia/requester-browser-xhr": "5.23.4", + "@algolia/requester-fetch": "5.23.4", + "@algolia/requester-node-http": "5.23.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/monitoring": { + "version": "1.23.4", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.23.4.tgz", + "integrity": "sha512-EXGoVVTshraqPJgr5cMd1fq7Jm71Ew6MpGCEaxI5PErBpJAmKdtjRIzs6JOGKHRaWLi+jdbJPYc2y8RN4qcx5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.23.4", + "@algolia/requester-browser-xhr": "5.23.4", + "@algolia/requester-fetch": "5.23.4", + "@algolia/requester-node-http": "5.23.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/recommend": { + "version": "5.23.4", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.23.4.tgz", + "integrity": "sha512-1t6glwKVCkjvBNlng2itTf8fwaLSqkL4JaMENgR3WTGR8mmW2akocUy/ZYSQcG4TcR7qu4zW2UMGAwLoWoflgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.23.4", + "@algolia/requester-browser-xhr": "5.23.4", + "@algolia/requester-fetch": "5.23.4", + "@algolia/requester-node-http": "5.23.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-browser-xhr": { + "version": "5.23.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.23.4.tgz", + "integrity": "sha512-UUuizcgc5+VSY8hqzDFVdJ3Wcto03lpbFRGPgW12pHTlUQHUTADtIpIhkLLOZRCjXmCVhtr97Z+eR6LcRYXa3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.23.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-fetch": { + "version": "5.23.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.23.4.tgz", + "integrity": "sha512-UhDg6elsek6NnV5z4VG1qMwR6vbp+rTMBEnl/v4hUyXQazU+CNdYkl++cpdmLwGI/7nXc28xtZiL90Es3I7viQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.23.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-node-http": { + "version": "5.23.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.23.4.tgz", + "integrity": "sha512-jXGzGBRUS0oywQwnaCA6mMDJO7LoC3dYSLsyNfIqxDR4SNGLhtg3je0Y31lc24OA4nYyKAYgVLtjfrpcpsWShg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.23.4" + }, + "engines": { + "node": ">= 14.0.0" } }, "node_modules/@alloc/quick-lru": { @@ -68,6 +311,163 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", + "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", + "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@docsearch/css": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.8.2.tgz", + "integrity": "sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@docsearch/js": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.8.2.tgz", + "integrity": "sha512-Q5wY66qHn0SwA7Taa0aDbHiJvaFJLOJyHmooQ7y8hlwwQLQ/5WwCcoX0g7ii04Qi2DJlHsd0XXzJ8Ypw9+9YmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@docsearch/react": "3.8.2", + "preact": "^10.0.0" + } + }, + "node_modules/@docsearch/js/node_modules/@docsearch/react": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.8.2.tgz", + "integrity": "sha512-xCRrJQlTt8N9GU0DG4ptwHRkfnSnD/YpdeaXe02iKfqs97TkZJv60yE+1eq/tjPcVnTW8dP5qLP7itifFVV5eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-core": "1.17.7", + "@algolia/autocomplete-preset-algolia": "1.17.7", + "@docsearch/css": "3.8.2", + "algoliasearch": "^5.14.2" + }, + "peerDependencies": { + "@types/react": ">= 16.8.0 < 19.0.0", + "react": ">= 16.8.0 < 19.0.0", + "react-dom": ">= 16.8.0 < 19.0.0", + "search-insights": ">= 1 < 3" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "search-insights": { + "optional": true + } + } + }, + "node_modules/@docsearch/js/node_modules/@types/react": { + "version": "18.3.20", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.20.tgz", + "integrity": "sha512-IPaCZN7PShZK/3t6Q87pfTkRm6oLTd4vztyoj+cbHUF1g3FfVb2tFIL79uCRKEfv16AhqDMBywP2VW3KIZUvcg==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@docsearch/js/node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@docsearch/js/node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/@docsearch/js/node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + } + }, "node_modules/@emnapi/runtime": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.1.tgz", @@ -541,6 +941,23 @@ "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==", "license": "MIT" }, + "node_modules/@iconify-json/simple-icons": { + "version": "1.2.32", + "resolved": "https://registry.npmjs.org/@iconify-json/simple-icons/-/simple-icons-1.2.32.tgz", + "integrity": "sha512-gxgLq0raip7SJaeJ0302vwhsqupQttS21B93Ci1kA/++B+hIgGw71HzTOWQoUhwjlrdWcoVUxSvpPJoMs7oURg==", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "@iconify/types": "*" + } + }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "dev": true, + "license": "MIT" + }, "node_modules/@img/sharp-darwin-arm64": { "version": "0.34.1", "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.1.tgz", @@ -918,6 +1335,13 @@ "url": "https://opencollective.com/libvips" } }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, "node_modules/@mapbox/node-pre-gyp": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", @@ -2094,6 +2518,373 @@ "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", "license": "MIT" }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.0.tgz", + "integrity": "sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.0.tgz", + "integrity": "sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.0.tgz", + "integrity": "sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.0.tgz", + "integrity": "sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.0.tgz", + "integrity": "sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.0.tgz", + "integrity": "sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.0.tgz", + "integrity": "sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.0.tgz", + "integrity": "sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.0.tgz", + "integrity": "sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.0.tgz", + "integrity": "sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.0.tgz", + "integrity": "sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.0.tgz", + "integrity": "sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.0.tgz", + "integrity": "sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.0.tgz", + "integrity": "sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.0.tgz", + "integrity": "sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.0.tgz", + "integrity": "sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.0.tgz", + "integrity": "sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.0.tgz", + "integrity": "sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.0.tgz", + "integrity": "sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.0.tgz", + "integrity": "sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@shikijs/core": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-2.5.0.tgz", + "integrity": "sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/engine-javascript": "2.5.0", + "@shikijs/engine-oniguruma": "2.5.0", + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.4" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-2.5.0.tgz", + "integrity": "sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^3.1.0" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-2.5.0.tgz", + "integrity": "sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/@shikijs/langs": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-2.5.0.tgz", + "integrity": "sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0" + } + }, + "node_modules/@shikijs/themes": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-2.5.0.tgz", + "integrity": "sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0" + } + }, + "node_modules/@shikijs/transformers": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-2.5.0.tgz", + "integrity": "sha512-SI494W5X60CaUwgi8u4q4m4s3YAFSxln3tzNjOSYqq54wlVgz0/NbbXEb3mdLbqMBztcmS7bVTaEd2w0qMmfeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/core": "2.5.0", + "@shikijs/types": "2.5.0" + } + }, + "node_modules/@shikijs/types": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-2.5.0.tgz", + "integrity": "sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "dev": true, + "license": "MIT" + }, "node_modules/@swc/counter": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", @@ -2410,6 +3201,23 @@ "@types/d3-selection": "*" } }, + "node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/@types/js-cookie": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-3.0.6.tgz", @@ -2426,6 +3234,41 @@ "@types/node": "*" } }, + "node_modules/@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/markdown-it": { + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/linkify-it": "^5", + "@types/mdurl": "^2" + } + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/ms": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", @@ -2441,6 +3284,15 @@ "undici-types": "~6.19.2" } }, + "node_modules/@types/prop-types": { + "version": "15.7.14", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", + "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true + }, "node_modules/@types/react": { "version": "19.1.1", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.1.tgz", @@ -2461,6 +3313,292 @@ "@types/react": "^19.0.0" } }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.21", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz", + "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.3.tgz", + "integrity": "sha512-IYSLEQj4LgZZuoVpdSUCw3dIynTWQgPlaRP6iAvMle4My0HdYwr5g5wQAfwOeHQBmYwEkqF70nRpSilr6PoUDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", + "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.13", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", + "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", + "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.13", + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.11", + "postcss": "^8.4.48", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", + "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/devtools-api": { + "version": "7.7.5", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.7.5.tgz", + "integrity": "sha512-HYV3tJGARROq5nlVMJh5KKHk7GU8Au3IrrmNNqr978m0edxgpHgYPDoNUGrvEgIbObz09SQezFR3A1EVmB5WZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-kit": "^7.7.5" + } + }, + "node_modules/@vue/devtools-kit": { + "version": "7.7.5", + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.5.tgz", + "integrity": "sha512-S9VAVJYVAe4RPx2JZb9ZTEi0lqTySz2CBeF0wHT5D3dkTLnT9yMMGegKNl4b2EIELwLSkcI9bl2qp0/jW+upqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-shared": "^7.7.5", + "birpc": "^2.3.0", + "hookable": "^5.5.3", + "mitt": "^3.0.1", + "perfect-debounce": "^1.0.0", + "speakingurl": "^14.0.1", + "superjson": "^2.2.2" + } + }, + "node_modules/@vue/devtools-shared": { + "version": "7.7.5", + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.7.5.tgz", + "integrity": "sha512-QBjG72RfpM0DKtpns2RZOxBltO226kOAls9e4Lri6YxS2gWTgL0H+wj1R2K76lxxIeOrqo4+2Ty6RQnzv+WSTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "rfdc": "^1.4.1" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz", + "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz", + "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", + "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.13", + "@vue/runtime-core": "3.5.13", + "@vue/shared": "3.5.13", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz", + "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13" + }, + "peerDependencies": { + "vue": "3.5.13" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", + "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vueuse/core": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-12.8.2.tgz", + "integrity": "sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.21", + "@vueuse/metadata": "12.8.2", + "@vueuse/shared": "12.8.2", + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/integrations": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-12.8.2.tgz", + "integrity": "sha512-fbGYivgK5uBTRt7p5F3zy6VrETlV9RtZjBqd1/HxGdjdckBgBM4ugP8LHpjolqTj14TXTxSK1ZfgPbHYyGuH7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vueuse/core": "12.8.2", + "@vueuse/shared": "12.8.2", + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "async-validator": "^4", + "axios": "^1", + "change-case": "^5", + "drauu": "^0.4", + "focus-trap": "^7", + "fuse.js": "^7", + "idb-keyval": "^6", + "jwt-decode": "^4", + "nprogress": "^0.2", + "qrcode": "^1.5", + "sortablejs": "^1", + "universal-cookie": "^7" + }, + "peerDependenciesMeta": { + "async-validator": { + "optional": true + }, + "axios": { + "optional": true + }, + "change-case": { + "optional": true + }, + "drauu": { + "optional": true + }, + "focus-trap": { + "optional": true + }, + "fuse.js": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "jwt-decode": { + "optional": true + }, + "nprogress": { + "optional": true + }, + "qrcode": { + "optional": true + }, + "sortablejs": { + "optional": true + }, + "universal-cookie": { + "optional": true + } + } + }, + "node_modules/@vueuse/metadata": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-12.8.2.tgz", + "integrity": "sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-12.8.2.tgz", + "integrity": "sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/@xyflow/react": { "version": "12.5.6", "resolved": "https://registry.npmjs.org/@xyflow/react/-/react-12.5.6.tgz", @@ -2509,6 +3647,31 @@ "node": ">= 6.0.0" } }, + "node_modules/algoliasearch": { + "version": "5.23.4", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.23.4.tgz", + "integrity": "sha512-QzAKFHl3fm53s44VHrTdEo0TkpL3XVUYQpnZy1r6/EHvMAyIg+O4hwprzlsNmcCHTNyVcF2S13DAUn7XhkC6qg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-abtesting": "5.23.4", + "@algolia/client-analytics": "5.23.4", + "@algolia/client-common": "5.23.4", + "@algolia/client-insights": "5.23.4", + "@algolia/client-personalization": "5.23.4", + "@algolia/client-query-suggestions": "5.23.4", + "@algolia/client-search": "5.23.4", + "@algolia/ingestion": "1.23.4", + "@algolia/monitoring": "1.23.4", + "@algolia/recommend": "5.23.4", + "@algolia/requester-browser-xhr": "5.23.4", + "@algolia/requester-fetch": "5.23.4", + "@algolia/requester-node-http": "5.23.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -2587,6 +3750,16 @@ "node": ">= 10.0.0" } }, + "node_modules/birpc": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.3.0.tgz", + "integrity": "sha512-ijbtkn/F3Pvzb6jHypHRyve2QApOCZDR25D/VnkY2G/lBNcXCTsnsCxgY4k4PkVB7zfwzYbY3O9Lcqe3xufS5g==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -2647,6 +3820,39 @@ ], "license": "CC-BY-4.0" }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", @@ -2755,6 +3961,17 @@ "node": ">= 0.8" } }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2767,6 +3984,22 @@ "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", "license": "ISC" }, + "node_modules/copy-anything": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", + "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-what": "^4.1.8" + }, + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", @@ -2911,6 +4144,16 @@ "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", "license": "MIT" }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/detect-libc": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", @@ -2926,6 +4169,20 @@ "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", "license": "MIT" }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -2955,6 +4212,13 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "license": "MIT" }, + "node_modules/emoji-regex-xs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", + "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==", + "dev": true, + "license": "MIT" + }, "node_modules/enhanced-resolve": { "version": "5.18.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", @@ -2969,6 +4233,19 @@ "node": ">=10.13.0" } }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -3068,6 +4345,23 @@ "esbuild": ">=0.12 <1" } }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/focus-trap": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.4.tgz", + "integrity": "sha512-xx560wGBk7seZ6y933idtjJQc1l+ck+pI3sKvhKozdBV1dRZoKhkW5xoCaFv9tQiX5RH1xfSxjuNu6g+lmN/gw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tabbable": "^6.2.0" + } + }, "node_modules/follow-redirects": { "version": "1.15.9", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", @@ -3331,6 +4625,62 @@ "node": ">= 0.4" } }, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -3377,6 +4727,19 @@ "node": ">=8" } }, + "node_modules/is-what": { + "version": "4.1.16", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", + "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, "node_modules/jiti": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", @@ -3396,6 +4759,15 @@ "node": ">=14" } }, + "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, + "license": "MIT", + "optional": true, + "peer": true + }, "node_modules/jsonwebtoken": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", @@ -3720,6 +5092,21 @@ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", "license": "MIT" }, + "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, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, "node_modules/lucide-react": { "version": "0.487.0", "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.487.0.tgz", @@ -3729,6 +5116,16 @@ "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -3753,6 +5150,13 @@ "semver": "bin/semver.js" } }, + "node_modules/mark.js": { + "version": "8.11.1", + "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", + "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", + "dev": true, + "license": "MIT" + }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -3762,6 +5166,122 @@ "node": ">= 0.4" } }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -3804,6 +5324,13 @@ "node": ">=8" } }, + "node_modules/minisearch": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-7.1.2.tgz", + "integrity": "sha512-R1Pd9eF+MD5JYDDSPAp/q1ougKglm14uEkPMvQ/05RGmx6G9wvmLTrTI/Q5iPNJLYqNdsDQ7qTGIcNWR+FrHmA==", + "dev": true, + "license": "MIT" + }, "node_modules/minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", @@ -3829,6 +5356,13 @@ "node": ">=8" } }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "dev": true, + "license": "MIT" + }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -4045,6 +5579,18 @@ "wrappy": "1" } }, + "node_modules/oniguruma-to-es": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-3.1.1.tgz", + "integrity": "sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex-xs": "^1.0.0", + "regex": "^6.0.1", + "regex-recursion": "^6.0.2" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -4054,6 +5600,13 @@ "node": ">=0.10.0" } }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "dev": true, + "license": "MIT" + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -4089,6 +5642,17 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/preact": { + "version": "10.26.5", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.26.5.tgz", + "integrity": "sha512-fmpDkgfGU6JYux9teDWLhj9mKN55tyepwYbxHgQuIxbWQzgFg5vk7Mrrtfx7xRxq798ynkY4DDDxZr235Kk+4w==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, "node_modules/prisma": { "version": "6.6.0", "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.6.0.tgz", @@ -4118,6 +5682,17 @@ } } }, + "node_modules/property-information": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz", + "integrity": "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -4228,6 +5803,33 @@ "node": ">= 6" } }, + "node_modules/regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz", + "integrity": "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-recursion": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", + "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", + "dev": true, + "license": "MIT" + }, "node_modules/resolve-pkg-maps": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", @@ -4238,6 +5840,13 @@ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" + }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -4254,6 +5863,46 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rollup": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.0.tgz", + "integrity": "sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.7" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.40.0", + "@rollup/rollup-android-arm64": "4.40.0", + "@rollup/rollup-darwin-arm64": "4.40.0", + "@rollup/rollup-darwin-x64": "4.40.0", + "@rollup/rollup-freebsd-arm64": "4.40.0", + "@rollup/rollup-freebsd-x64": "4.40.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.40.0", + "@rollup/rollup-linux-arm-musleabihf": "4.40.0", + "@rollup/rollup-linux-arm64-gnu": "4.40.0", + "@rollup/rollup-linux-arm64-musl": "4.40.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.40.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.40.0", + "@rollup/rollup-linux-riscv64-gnu": "4.40.0", + "@rollup/rollup-linux-riscv64-musl": "4.40.0", + "@rollup/rollup-linux-s390x-gnu": "4.40.0", + "@rollup/rollup-linux-x64-gnu": "4.40.0", + "@rollup/rollup-linux-x64-musl": "4.40.0", + "@rollup/rollup-win32-arm64-msvc": "4.40.0", + "@rollup/rollup-win32-ia32-msvc": "4.40.0", + "@rollup/rollup-win32-x64-msvc": "4.40.0", + "fsevents": "~2.3.2" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -4280,6 +5929,14 @@ "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", "license": "MIT" }, + "node_modules/search-insights": { + "version": "2.17.3", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz", + "integrity": "sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/semver": { "version": "7.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", @@ -4339,6 +5996,23 @@ "@img/sharp-win32-x64": "0.34.1" } }, + "node_modules/shiki": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-2.5.0.tgz", + "integrity": "sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/core": "2.5.0", + "@shikijs/engine-javascript": "2.5.0", + "@shikijs/engine-oniguruma": "2.5.0", + "@shikijs/langs": "2.5.0", + "@shikijs/themes": "2.5.0", + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -4364,6 +6038,27 @@ "node": ">=0.10.0" } }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/speakingurl": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", + "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/streamsearch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", @@ -4395,6 +6090,21 @@ "node": ">=8" } }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dev": true, + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -4430,6 +6140,26 @@ } } }, + "node_modules/superjson": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.2.tgz", + "integrity": "sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "copy-anything": "^3.0.2" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", + "dev": true, + "license": "MIT" + }, "node_modules/tailwind-merge": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.2.0.tgz", @@ -4480,6 +6210,17 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "license": "MIT" }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", @@ -4535,6 +6276,79 @@ "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", "license": "MIT" }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/use-callback-ref": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", @@ -4593,6 +6407,590 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "license": "MIT" }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vite": { + "version": "5.4.18", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.18.tgz", + "integrity": "sha512-1oDcnEp3lVyHCuQ2YFelM4Alm2o91xNoMncRm1U7S+JdYfYOvbiGZ3/CxGttrOu2M/KcGz7cRC2DoNUA6urmMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/vitepress": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.6.3.tgz", + "integrity": "sha512-fCkfdOk8yRZT8GD9BFqusW3+GggWYZ/rYncOfmgcDtP3ualNHCAg+Robxp2/6xfH1WwPHtGpPwv7mbA3qomtBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@docsearch/css": "3.8.2", + "@docsearch/js": "3.8.2", + "@iconify-json/simple-icons": "^1.2.21", + "@shikijs/core": "^2.1.0", + "@shikijs/transformers": "^2.1.0", + "@shikijs/types": "^2.1.0", + "@types/markdown-it": "^14.1.2", + "@vitejs/plugin-vue": "^5.2.1", + "@vue/devtools-api": "^7.7.0", + "@vue/shared": "^3.5.13", + "@vueuse/core": "^12.4.0", + "@vueuse/integrations": "^12.4.0", + "focus-trap": "^7.6.4", + "mark.js": "8.11.1", + "minisearch": "^7.1.1", + "shiki": "^2.1.0", + "vite": "^5.4.14", + "vue": "^3.5.13" + }, + "bin": { + "vitepress": "bin/vitepress.js" + }, + "peerDependencies": { + "markdown-it-mathjax3": "^4", + "postcss": "^8" + }, + "peerDependenciesMeta": { + "markdown-it-mathjax3": { + "optional": true + }, + "postcss": { + "optional": true + } + } + }, + "node_modules/vue": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", + "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-sfc": "3.5.13", + "@vue/runtime-dom": "3.5.13", + "@vue/server-renderer": "3.5.13", + "@vue/shared": "3.5.13" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -4658,19 +7056,15 @@ } } }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.3.0.tgz", - "integrity": "sha512-vHUQS4YVGJPmpjn7r5lEZuMhK5UQBNBRSB+iGDvJjaNk649pTIcRluDWNb9siunyLLiu/LDPHfvxBtNamyuLTw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } } } diff --git a/package.json b/package.json index f50d3e8..0b59172 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,10 @@ "dev": "next dev --turbopack", "build": "next build", "start": "next start", - "lint": "next lint" + "lint": "next lint", + "docs:dev": "vitepress dev docs", + "docs:build": "vitepress build docs", + "docs:preview": "vitepress preview docs" }, "dependencies": { "@prisma/client": "^6.6.0", @@ -53,6 +56,7 @@ "prisma": "^6.6.0", "tailwindcss": "^4", "tsx": "^4.19.3", - "typescript": "^5" + "typescript": "^5", + "vitepress": "^1.6.3" } -} +} \ No newline at end of file From 0975bc5c5f63659f5e999c4a3221a6425a34ef43 Mon Sep 17 00:00:00 2001 From: headlessdev Date: Sun, 20 Apr 2025 19:54:58 +0200 Subject: [PATCH 08/34] Documentation Init --- docs/.vitepress/config.mts | 26 +- docs/api-examples.md | 49 ---- docs/index.md | 19 +- docs/installation.md | 74 +++++ docs/markdown-examples.md | 85 ------ docs/public/logo.png | Bin 0 -> 24845 bytes package-lock.json | 576 +++++++++++++++++++++++++------------ package.json | 13 +- postcss.config.mjs | 5 - 9 files changed, 511 insertions(+), 336 deletions(-) delete mode 100644 docs/api-examples.md create mode 100644 docs/installation.md delete mode 100644 docs/markdown-examples.md create mode 100644 docs/public/logo.png delete mode 100644 postcss.config.mjs diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 53874fe..f97d250 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -4,25 +4,39 @@ import { defineConfig } from 'vitepress' export default defineConfig({ title: "CoreControl", description: "Dashboard to manage your entire server infrastructure", + lastUpdated: true, + cleanUrls: true, + metaChunk: true, + head: [ + ['link', { rel: 'icon', type: 'image/png', href: '/logo.png' }], + ], themeConfig: { - // https://vitepress.dev/reference/default-theme-config + logo: '/logo.png', nav: [ { text: 'Home', link: '/' }, - { text: 'Examples', link: '/markdown-examples' } + { text: 'Installation', link: '/installation' } ], + footer: { + message: 'Released under the MIT License.', + copyright: 'Copyright © 2025-present CoreControl' + }, + + search: { + provider: 'local', + }, + sidebar: [ { - text: 'Examples', + text: 'Deploy', items: [ - { text: 'Markdown Examples', link: '/markdown-examples' }, - { text: 'Runtime API Examples', link: '/api-examples' } + { text: 'Installation', link: '/installation' }, ] } ], socialLinks: [ - { icon: 'github', link: 'https://github.com/vuejs/vitepress' } + { icon: 'github', link: 'https://github.com/crocofied/corecontrol' } ] } }) diff --git a/docs/api-examples.md b/docs/api-examples.md deleted file mode 100644 index 6bd8bb5..0000000 --- a/docs/api-examples.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -outline: deep ---- - -# Runtime API Examples - -This page demonstrates usage of some of the runtime APIs provided by VitePress. - -The main `useData()` API can be used to access site, theme, and page data for the current page. It works in both `.md` and `.vue` files: - -```md - - -## Results - -### Theme Data -
{{ theme }}
- -### Page Data -
{{ page }}
- -### Page Frontmatter -
{{ frontmatter }}
-``` - - - -## Results - -### Theme Data -
{{ theme }}
- -### Page Data -
{{ page }}
- -### Page Frontmatter -
{{ frontmatter }}
- -## More - -Check out the documentation for the [full list of runtime APIs](https://vitepress.dev/reference/runtime-api#usedata). diff --git a/docs/index.md b/docs/index.md index e0fa992..fc4c8a9 100644 --- a/docs/index.md +++ b/docs/index.md @@ -4,15 +4,18 @@ layout: home hero: name: "CoreControl" - text: "Dashboard to manage your entire server infrastructure" + text: "Manage your server infrastructure" tagline: My great project tagline actions: - theme: brand - text: Markdown Examples - link: /markdown-examples + text: Install + link: /installation - theme: alt - text: API Examples - link: /api-examples + text: GitHub + link: https://github.com/crocofied/corecontrol + image: + src: /logo.png + alt: Logo features: - title: Feature A @@ -23,3 +26,9 @@ features: details: Lorem ipsum dolor sit amet, consectetur adipiscing elit --- + \ No newline at end of file diff --git a/docs/installation.md b/docs/installation.md new file mode 100644 index 0000000..5d802c6 --- /dev/null +++ b/docs/installation.md @@ -0,0 +1,74 @@ +# Installation + +The easiest way to install CoreControl is using Docker Compose. Follow these steps: + +## Docker Compose Installation + +::: danger +CoreControl is at an early stage of development and is subject to change. It is not recommended for use in a production environment at this time. +::: + +1. Make sure [Docker](https://docs.docker.com/get-docker/) and [Docker Compose](https://docs.docker.com/compose/install/) are installed on your system. + +2. Create a file named `docker-compose.yml` with the following content: + +```yaml +services: + web: + image: haedlessdev/corecontrol:latest + ports: + - "3000:3000" + environment: + JWT_SECRET: RANDOM_SECRET # Replace with a secure random string + DATABASE_URL: "postgresql://postgres:postgres@db:5432/postgres" + + agent: + image: haedlessdev/corecontrol-agent:latest + environment: + DATABASE_URL: "postgresql://postgres:postgres@db:5432/postgres" + depends_on: + db: + condition: service_healthy + + db: + image: postgres:17 + restart: always + environment: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_DB: postgres + volumes: + - postgres_data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres"] + interval: 2s + timeout: 2s + retries: 10 + +volumes: + postgres_data: +``` + +3. Generate a custom JWT_SECRET with e.g. [jwtsecret.com/generate](https://jwtsecret.com/generate) +3. Start CoreControl with the following command: + +```bash +docker-compose up -d +# OR +docker compose up -d +``` + +5. The application is now available at `http://localhost:3000`. + +## Authentication + +CoreControl comes with a default administrator account: + +- **Email**: admin@example.com +- **Password**: admin + +::: warning +For security reasons, it is strongly recommended to change the default credentials immediately after your first login. +::: + +You can change the administrator password in the settings after logging in. \ No newline at end of file diff --git a/docs/markdown-examples.md b/docs/markdown-examples.md deleted file mode 100644 index f9258a5..0000000 --- a/docs/markdown-examples.md +++ /dev/null @@ -1,85 +0,0 @@ -# Markdown Extension Examples - -This page demonstrates some of the built-in markdown extensions provided by VitePress. - -## Syntax Highlighting - -VitePress provides Syntax Highlighting powered by [Shiki](https://github.com/shikijs/shiki), with additional features like line-highlighting: - -**Input** - -````md -```js{4} -export default { - data () { - return { - msg: 'Highlighted!' - } - } -} -``` -```` - -**Output** - -```js{4} -export default { - data () { - return { - msg: 'Highlighted!' - } - } -} -``` - -## Custom Containers - -**Input** - -```md -::: info -This is an info box. -::: - -::: tip -This is a tip. -::: - -::: warning -This is a warning. -::: - -::: danger -This is a dangerous warning. -::: - -::: details -This is a details block. -::: -``` - -**Output** - -::: info -This is an info box. -::: - -::: tip -This is a tip. -::: - -::: warning -This is a warning. -::: - -::: danger -This is a dangerous warning. -::: - -::: details -This is a details block. -::: - -## More - -Check out the documentation for the [full list of markdown extensions](https://vitepress.dev/guide/markdown). diff --git a/docs/public/logo.png b/docs/public/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..934cd5d0df67bcbbbacad458786143d8ff799fe4 GIT binary patch literal 24845 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 UHx^XMA1rv&C&0VHbL+nU0$c`dga7~l literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index c0ed9bd..64a5230 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39,28 +39,30 @@ "lucide-react": "^0.487.0", "next": "15.3.0", "next-themes": "^0.4.6", + "postcss-loader": "^8.1.1", "react": "^19.0.0", "react-dom": "^19.0.0", "tailwind-merge": "^3.2.0", - "tw-animate-css": "^1.2.5" + "tw-animate-css": "^1.2.5", + "vitepress": "^1.6.3" }, "devDependencies": { "@tailwindcss/postcss": "^4", "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", + "autoprefixer": "^10.4.21", + "postcss": "^8.5.3", "prisma": "^6.6.0", - "tailwindcss": "^4", + "tailwindcss": "^4.1.4", "tsx": "^4.19.3", - "typescript": "^5", - "vitepress": "^1.6.3" + "typescript": "^5" } }, "node_modules/@algolia/autocomplete-core": { "version": "1.17.7", "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.17.7.tgz", "integrity": "sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==", - "dev": true, "license": "MIT", "dependencies": { "@algolia/autocomplete-plugin-algolia-insights": "1.17.7", @@ -71,7 +73,6 @@ "version": "1.17.7", "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.7.tgz", "integrity": "sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A==", - "dev": true, "license": "MIT", "dependencies": { "@algolia/autocomplete-shared": "1.17.7" @@ -84,7 +85,6 @@ "version": "1.17.7", "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.7.tgz", "integrity": "sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA==", - "dev": true, "license": "MIT", "dependencies": { "@algolia/autocomplete-shared": "1.17.7" @@ -98,7 +98,6 @@ "version": "1.17.7", "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.7.tgz", "integrity": "sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg==", - "dev": true, "license": "MIT", "peerDependencies": { "@algolia/client-search": ">= 4.9.1 < 6", @@ -109,7 +108,6 @@ "version": "5.23.4", "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.23.4.tgz", "integrity": "sha512-WIMT2Kxy+FFWXWQxIU8QgbTioL+SGE24zhpj0kipG4uQbzXwONaWt7ffaYLjfge3gcGSgJVv+1VlahVckafluQ==", - "dev": true, "license": "MIT", "dependencies": { "@algolia/client-common": "5.23.4", @@ -125,7 +123,6 @@ "version": "5.23.4", "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.23.4.tgz", "integrity": "sha512-4B9gChENsQA9kFmFlb+x3YhBz2Gx3vSsm81FHI1yJ3fn2zlxREHmfrjyqYoMunsU7BybT/o5Nb7ccCbm/vfseA==", - "dev": true, "license": "MIT", "dependencies": { "@algolia/client-common": "5.23.4", @@ -141,7 +138,6 @@ "version": "5.23.4", "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.23.4.tgz", "integrity": "sha512-bsj0lwU2ytiWLtl7sPunr+oLe+0YJql9FozJln5BnIiqfKOaseSDdV42060vUy+D4373f2XBI009K/rm2IXYMA==", - "dev": true, "license": "MIT", "engines": { "node": ">= 14.0.0" @@ -151,7 +147,6 @@ "version": "5.23.4", "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.23.4.tgz", "integrity": "sha512-XSCtAYvJ/hnfDHfRVMbBH0dayR+2ofVZy3jf5qyifjguC6rwxDsSdQvXpT0QFVyG+h8UPGtDhMPoUIng4wIcZA==", - "dev": true, "license": "MIT", "dependencies": { "@algolia/client-common": "5.23.4", @@ -167,7 +162,6 @@ "version": "5.23.4", "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.23.4.tgz", "integrity": "sha512-l/0QvqgRFFOf7BnKSJ3myd1WbDr86ftVaa3PQwlsNh7IpIHmvVcT83Bi5zlORozVGMwaKfyPZo6O48PZELsOeA==", - "dev": true, "license": "MIT", "dependencies": { "@algolia/client-common": "5.23.4", @@ -183,7 +177,6 @@ "version": "5.23.4", "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.23.4.tgz", "integrity": "sha512-TB0htrDgVacVGtPDyENoM6VIeYqR+pMsDovW94dfi2JoaRxfqu/tYmLpvgWcOknP6wLbr8bA+G7t/NiGksNAwQ==", - "dev": true, "license": "MIT", "dependencies": { "@algolia/client-common": "5.23.4", @@ -199,7 +192,6 @@ "version": "5.23.4", "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.23.4.tgz", "integrity": "sha512-uBGo6KwUP6z+u6HZWRui8UJClS7fgUIAiYd1prUqCbkzDiCngTOzxaJbEvrdkK0hGCQtnPDiuNhC5MhtVNN4Eg==", - "dev": true, "license": "MIT", "dependencies": { "@algolia/client-common": "5.23.4", @@ -215,7 +207,6 @@ "version": "1.23.4", "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.23.4.tgz", "integrity": "sha512-Si6rFuGnSeEUPU9QchYvbknvEIyCRK7nkeaPVQdZpABU7m4V/tsiWdHmjVodtx3h20VZivJdHeQO9XbHxBOcCw==", - "dev": true, "license": "MIT", "dependencies": { "@algolia/client-common": "5.23.4", @@ -231,7 +222,6 @@ "version": "1.23.4", "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.23.4.tgz", "integrity": "sha512-EXGoVVTshraqPJgr5cMd1fq7Jm71Ew6MpGCEaxI5PErBpJAmKdtjRIzs6JOGKHRaWLi+jdbJPYc2y8RN4qcx5Q==", - "dev": true, "license": "MIT", "dependencies": { "@algolia/client-common": "5.23.4", @@ -247,7 +237,6 @@ "version": "5.23.4", "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.23.4.tgz", "integrity": "sha512-1t6glwKVCkjvBNlng2itTf8fwaLSqkL4JaMENgR3WTGR8mmW2akocUy/ZYSQcG4TcR7qu4zW2UMGAwLoWoflgQ==", - "dev": true, "license": "MIT", "dependencies": { "@algolia/client-common": "5.23.4", @@ -263,7 +252,6 @@ "version": "5.23.4", "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.23.4.tgz", "integrity": "sha512-UUuizcgc5+VSY8hqzDFVdJ3Wcto03lpbFRGPgW12pHTlUQHUTADtIpIhkLLOZRCjXmCVhtr97Z+eR6LcRYXa3Q==", - "dev": true, "license": "MIT", "dependencies": { "@algolia/client-common": "5.23.4" @@ -276,7 +264,6 @@ "version": "5.23.4", "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.23.4.tgz", "integrity": "sha512-UhDg6elsek6NnV5z4VG1qMwR6vbp+rTMBEnl/v4hUyXQazU+CNdYkl++cpdmLwGI/7nXc28xtZiL90Es3I7viQ==", - "dev": true, "license": "MIT", "dependencies": { "@algolia/client-common": "5.23.4" @@ -289,7 +276,6 @@ "version": "5.23.4", "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.23.4.tgz", "integrity": "sha512-jXGzGBRUS0oywQwnaCA6mMDJO7LoC3dYSLsyNfIqxDR4SNGLhtg3je0Y31lc24OA4nYyKAYgVLtjfrpcpsWShg==", - "dev": true, "license": "MIT", "dependencies": { "@algolia/client-common": "5.23.4" @@ -311,11 +297,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-string-parser": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -325,7 +324,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -335,7 +333,6 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.27.0" @@ -351,7 +348,6 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.25.9", @@ -365,14 +361,12 @@ "version": "3.8.2", "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.8.2.tgz", "integrity": "sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ==", - "dev": true, "license": "MIT" }, "node_modules/@docsearch/js": { "version": "3.8.2", "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.8.2.tgz", "integrity": "sha512-Q5wY66qHn0SwA7Taa0aDbHiJvaFJLOJyHmooQ7y8hlwwQLQ/5WwCcoX0g7ii04Qi2DJlHsd0XXzJ8Ypw9+9YmQ==", - "dev": true, "license": "MIT", "dependencies": { "@docsearch/react": "3.8.2", @@ -383,7 +377,6 @@ "version": "3.8.2", "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.8.2.tgz", "integrity": "sha512-xCRrJQlTt8N9GU0DG4ptwHRkfnSnD/YpdeaXe02iKfqs97TkZJv60yE+1eq/tjPcVnTW8dP5qLP7itifFVV5eg==", - "dev": true, "license": "MIT", "dependencies": { "@algolia/autocomplete-core": "1.17.7", @@ -416,7 +409,6 @@ "version": "18.3.20", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.20.tgz", "integrity": "sha512-IPaCZN7PShZK/3t6Q87pfTkRm6oLTd4vztyoj+cbHUF1g3FfVb2tFIL79uCRKEfv16AhqDMBywP2VW3KIZUvcg==", - "dev": true, "license": "MIT", "optional": true, "peer": true, @@ -429,7 +421,6 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", - "dev": true, "license": "MIT", "optional": true, "peer": true, @@ -444,7 +435,6 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", - "dev": true, "license": "MIT", "optional": true, "peer": true, @@ -460,7 +450,6 @@ "version": "0.23.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", - "dev": true, "license": "MIT", "optional": true, "peer": true, @@ -945,7 +934,6 @@ "version": "1.2.32", "resolved": "https://registry.npmjs.org/@iconify-json/simple-icons/-/simple-icons-1.2.32.tgz", "integrity": "sha512-gxgLq0raip7SJaeJ0302vwhsqupQttS21B93Ci1kA/++B+hIgGw71HzTOWQoUhwjlrdWcoVUxSvpPJoMs7oURg==", - "dev": true, "license": "CC0-1.0", "dependencies": { "@iconify/types": "*" @@ -955,7 +943,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", - "dev": true, "license": "MIT" }, "node_modules/@img/sharp-darwin-arm64": { @@ -1339,7 +1326,6 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true, "license": "MIT" }, "node_modules/@mapbox/node-pre-gyp": { @@ -2525,7 +2511,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2539,7 +2524,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2553,7 +2537,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2567,7 +2550,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2581,7 +2563,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2595,7 +2576,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2609,7 +2589,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2623,7 +2602,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2637,7 +2615,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2651,7 +2628,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2665,7 +2641,6 @@ "cpu": [ "loong64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2679,7 +2654,6 @@ "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2693,7 +2667,6 @@ "cpu": [ "riscv64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2707,7 +2680,6 @@ "cpu": [ "riscv64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2721,7 +2693,6 @@ "cpu": [ "s390x" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2735,7 +2706,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2749,7 +2719,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2763,7 +2732,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2777,7 +2745,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2791,7 +2758,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2802,7 +2768,6 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-2.5.0.tgz", "integrity": "sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==", - "dev": true, "license": "MIT", "dependencies": { "@shikijs/engine-javascript": "2.5.0", @@ -2817,7 +2782,6 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-2.5.0.tgz", "integrity": "sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==", - "dev": true, "license": "MIT", "dependencies": { "@shikijs/types": "2.5.0", @@ -2829,7 +2793,6 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-2.5.0.tgz", "integrity": "sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==", - "dev": true, "license": "MIT", "dependencies": { "@shikijs/types": "2.5.0", @@ -2840,7 +2803,6 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-2.5.0.tgz", "integrity": "sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w==", - "dev": true, "license": "MIT", "dependencies": { "@shikijs/types": "2.5.0" @@ -2850,7 +2812,6 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-2.5.0.tgz", "integrity": "sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw==", - "dev": true, "license": "MIT", "dependencies": { "@shikijs/types": "2.5.0" @@ -2860,7 +2821,6 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-2.5.0.tgz", "integrity": "sha512-SI494W5X60CaUwgi8u4q4m4s3YAFSxln3tzNjOSYqq54wlVgz0/NbbXEb3mdLbqMBztcmS7bVTaEd2w0qMmfeg==", - "dev": true, "license": "MIT", "dependencies": { "@shikijs/core": "2.5.0", @@ -2871,7 +2831,6 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-2.5.0.tgz", "integrity": "sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==", - "dev": true, "license": "MIT", "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", @@ -2882,7 +2841,6 @@ "version": "10.0.2", "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", - "dev": true, "license": "MIT" }, "node_modules/@swc/counter": { @@ -2913,6 +2871,13 @@ "tailwindcss": "4.1.3" } }, + "node_modules/@tailwindcss/node/node_modules/tailwindcss": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.3.tgz", + "integrity": "sha512-2Q+rw9vy1WFXu5cIxlvsabCwhU2qUwodGq03ODhLJ0jW4ek5BUtoCsnLB0qG+m8AHgEsSJcJGDSDe06FXlP74g==", + "dev": true, + "license": "MIT" + }, "node_modules/@tailwindcss/oxide": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.3.tgz", @@ -3137,6 +3102,13 @@ "tailwindcss": "4.1.3" } }, + "node_modules/@tailwindcss/postcss/node_modules/tailwindcss": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.3.tgz", + "integrity": "sha512-2Q+rw9vy1WFXu5cIxlvsabCwhU2qUwodGq03ODhLJ0jW4ek5BUtoCsnLB0qG+m8AHgEsSJcJGDSDe06FXlP74g==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/axios": { "version": "0.9.36", "resolved": "https://registry.npmjs.org/@types/axios/-/axios-0.9.36.tgz", @@ -3205,14 +3177,12 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", - "dev": true, "license": "MIT" }, "node_modules/@types/hast": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", - "dev": true, "license": "MIT", "dependencies": { "@types/unist": "*" @@ -3238,14 +3208,12 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", - "dev": true, "license": "MIT" }, "node_modules/@types/markdown-it": { "version": "14.1.2", "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", - "dev": true, "license": "MIT", "dependencies": { "@types/linkify-it": "^5", @@ -3256,7 +3224,6 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, "license": "MIT", "dependencies": { "@types/unist": "*" @@ -3266,7 +3233,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", - "dev": true, "license": "MIT" }, "node_modules/@types/ms": { @@ -3288,7 +3254,6 @@ "version": "15.7.14", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", - "dev": true, "license": "MIT", "optional": true, "peer": true @@ -3317,28 +3282,24 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "dev": true, "license": "MIT" }, "node_modules/@types/web-bluetooth": { "version": "0.0.21", "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz", "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==", - "dev": true, "license": "MIT" }, "node_modules/@ungap/structured-clone": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "dev": true, "license": "ISC" }, "node_modules/@vitejs/plugin-vue": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.3.tgz", "integrity": "sha512-IYSLEQj4LgZZuoVpdSUCw3dIynTWQgPlaRP6iAvMle4My0HdYwr5g5wQAfwOeHQBmYwEkqF70nRpSilr6PoUDg==", - "dev": true, "license": "MIT", "engines": { "node": "^18.0.0 || >=20.0.0" @@ -3352,7 +3313,6 @@ "version": "3.5.13", "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", - "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.25.3", @@ -3366,7 +3326,6 @@ "version": "3.5.13", "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", - "dev": true, "license": "MIT", "dependencies": { "@vue/compiler-core": "3.5.13", @@ -3377,7 +3336,6 @@ "version": "3.5.13", "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", - "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.25.3", @@ -3395,7 +3353,6 @@ "version": "3.5.13", "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", - "dev": true, "license": "MIT", "dependencies": { "@vue/compiler-dom": "3.5.13", @@ -3406,7 +3363,6 @@ "version": "7.7.5", "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.7.5.tgz", "integrity": "sha512-HYV3tJGARROq5nlVMJh5KKHk7GU8Au3IrrmNNqr978m0edxgpHgYPDoNUGrvEgIbObz09SQezFR3A1EVmB5WZg==", - "dev": true, "license": "MIT", "dependencies": { "@vue/devtools-kit": "^7.7.5" @@ -3416,7 +3372,6 @@ "version": "7.7.5", "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.5.tgz", "integrity": "sha512-S9VAVJYVAe4RPx2JZb9ZTEi0lqTySz2CBeF0wHT5D3dkTLnT9yMMGegKNl4b2EIELwLSkcI9bl2qp0/jW+upqA==", - "dev": true, "license": "MIT", "dependencies": { "@vue/devtools-shared": "^7.7.5", @@ -3432,7 +3387,6 @@ "version": "7.7.5", "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.7.5.tgz", "integrity": "sha512-QBjG72RfpM0DKtpns2RZOxBltO226kOAls9e4Lri6YxS2gWTgL0H+wj1R2K76lxxIeOrqo4+2Ty6RQnzv+WSTQ==", - "dev": true, "license": "MIT", "dependencies": { "rfdc": "^1.4.1" @@ -3442,7 +3396,6 @@ "version": "3.5.13", "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz", "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", - "dev": true, "license": "MIT", "dependencies": { "@vue/shared": "3.5.13" @@ -3452,7 +3405,6 @@ "version": "3.5.13", "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz", "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", - "dev": true, "license": "MIT", "dependencies": { "@vue/reactivity": "3.5.13", @@ -3463,7 +3415,6 @@ "version": "3.5.13", "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", - "dev": true, "license": "MIT", "dependencies": { "@vue/reactivity": "3.5.13", @@ -3476,7 +3427,6 @@ "version": "3.5.13", "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz", "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", - "dev": true, "license": "MIT", "dependencies": { "@vue/compiler-ssr": "3.5.13", @@ -3490,14 +3440,12 @@ "version": "3.5.13", "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", - "dev": true, "license": "MIT" }, "node_modules/@vueuse/core": { "version": "12.8.2", "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-12.8.2.tgz", "integrity": "sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==", - "dev": true, "license": "MIT", "dependencies": { "@types/web-bluetooth": "^0.0.21", @@ -3513,7 +3461,6 @@ "version": "12.8.2", "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-12.8.2.tgz", "integrity": "sha512-fbGYivgK5uBTRt7p5F3zy6VrETlV9RtZjBqd1/HxGdjdckBgBM4ugP8LHpjolqTj14TXTxSK1ZfgPbHYyGuH7g==", - "dev": true, "license": "MIT", "dependencies": { "@vueuse/core": "12.8.2", @@ -3580,7 +3527,6 @@ "version": "12.8.2", "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-12.8.2.tgz", "integrity": "sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/antfu" @@ -3590,7 +3536,6 @@ "version": "12.8.2", "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-12.8.2.tgz", "integrity": "sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==", - "dev": true, "license": "MIT", "dependencies": { "vue": "^3.5.13" @@ -3651,7 +3596,6 @@ "version": "5.23.4", "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.23.4.tgz", "integrity": "sha512-QzAKFHl3fm53s44VHrTdEo0TkpL3XVUYQpnZy1r6/EHvMAyIg+O4hwprzlsNmcCHTNyVcF2S13DAUn7XhkC6qg==", - "dev": true, "license": "MIT", "dependencies": { "@algolia/client-abtesting": "5.23.4", @@ -3701,6 +3645,12 @@ "node": ">=10" } }, + "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==", + "license": "Python-2.0" + }, "node_modules/aria-hidden": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", @@ -3719,6 +3669,44 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "license": "MIT" }, + "node_modules/autoprefixer": { + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, "node_modules/axios": { "version": "1.8.4", "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz", @@ -3754,7 +3742,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.3.0.tgz", "integrity": "sha512-ijbtkn/F3Pvzb6jHypHRyve2QApOCZDR25D/VnkY2G/lBNcXCTsnsCxgY4k4PkVB7zfwzYbY3O9Lcqe3xufS5g==", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/antfu" @@ -3770,6 +3757,39 @@ "concat-map": "0.0.1" } }, + "node_modules/browserslist": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", @@ -3800,6 +3820,15 @@ "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==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/caniuse-lite": { "version": "1.0.30001713", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001713.tgz", @@ -3824,7 +3853,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "dev": true, "license": "MIT", "funding": { "type": "github", @@ -3835,7 +3863,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "dev": true, "license": "MIT", "funding": { "type": "github", @@ -3846,7 +3873,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "dev": true, "license": "MIT", "funding": { "type": "github", @@ -3965,7 +3991,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "dev": true, "license": "MIT", "funding": { "type": "github", @@ -3988,7 +4013,6 @@ "version": "3.0.5", "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", - "dev": true, "license": "MIT", "dependencies": { "is-what": "^4.1.8" @@ -4000,11 +4024,36 @@ "url": "https://github.com/sponsors/mesqueeb" } }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "devOptional": true, "license": "MIT" }, "node_modules/d3-color": { @@ -4148,7 +4197,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -4173,7 +4221,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", - "dev": true, "license": "MIT", "dependencies": { "dequal": "^2.0.0" @@ -4206,6 +4253,13 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/electron-to-chromium": { + "version": "1.5.139", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.139.tgz", + "integrity": "sha512-GGnRYOTdN5LYpwbIr0rwP/ZHOQSvAF6TG0LSzp28uCBb9JiXHJGmaaKw29qjNJc5bGnnp6kXJqRnGMQoELwi5w==", + "dev": true, + "license": "ISC" + }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -4216,7 +4270,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==", - "dev": true, "license": "MIT" }, "node_modules/enhanced-resolve": { @@ -4237,7 +4290,6 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=0.12" @@ -4246,6 +4298,30 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-ex/node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -4345,18 +4421,26 @@ "esbuild": ">=0.12 <1" } }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true, "license": "MIT" }, "node_modules/focus-trap": { "version": "7.6.4", "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.4.tgz", "integrity": "sha512-xx560wGBk7seZ6y933idtjJQc1l+ck+pI3sKvhKozdBV1dRZoKhkW5xoCaFv9tQiX5RH1xfSxjuNu6g+lmN/gw==", - "dev": true, "license": "MIT", "dependencies": { "tabbable": "^6.2.0" @@ -4397,6 +4481,20 @@ "node": ">= 6" } }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, "node_modules/fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", @@ -4431,7 +4529,6 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -4629,7 +4726,6 @@ "version": "9.0.5", "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", - "dev": true, "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -4653,7 +4749,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", - "dev": true, "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" @@ -4667,14 +4762,12 @@ "version": "5.5.3", "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", - "dev": true, "license": "MIT" }, "node_modules/html-void-elements": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", - "dev": true, "license": "MIT", "funding": { "type": "github", @@ -4694,6 +4787,22 @@ "node": ">= 6" } }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -4731,7 +4840,6 @@ "version": "4.1.16", "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", - "dev": true, "license": "MIT", "engines": { "node": ">=12.13" @@ -4763,10 +4871,25 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, + "license": "MIT" + }, + "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==", "license": "MIT", - "optional": true, - "peer": true + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" }, "node_modules/jsonwebtoken": { "version": "9.0.2", @@ -4815,7 +4938,7 @@ "version": "1.29.2", "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.2.tgz", "integrity": "sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==", - "dev": true, + "devOptional": true, "license": "MPL-2.0", "dependencies": { "detect-libc": "^2.0.3" @@ -5050,6 +5173,12 @@ "url": "https://opencollective.com/parcel" } }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, "node_modules/lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", @@ -5096,7 +5225,6 @@ "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, "license": "MIT", "optional": true, "peer": true, @@ -5120,7 +5248,6 @@ "version": "0.30.17", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" @@ -5154,7 +5281,6 @@ "version": "8.11.1", "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", - "dev": true, "license": "MIT" }, "node_modules/math-intrinsics": { @@ -5170,7 +5296,6 @@ "version": "13.2.0", "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", - "dev": true, "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -5192,7 +5317,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", - "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -5213,7 +5337,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", - "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -5230,7 +5353,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", - "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -5252,7 +5374,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", - "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -5269,7 +5390,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", - "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -5328,7 +5448,6 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-7.1.2.tgz", "integrity": "sha512-R1Pd9eF+MD5JYDDSPAp/q1ougKglm14uEkPMvQ/05RGmx6G9wvmLTrTI/Q5iPNJLYqNdsDQ7qTGIcNWR+FrHmA==", - "dev": true, "license": "MIT" }, "node_modules/minizlib": { @@ -5360,7 +5479,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", - "dev": true, "license": "MIT" }, "node_modules/mkdirp": { @@ -5533,6 +5651,13 @@ } } }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" + }, "node_modules/nopt": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", @@ -5548,6 +5673,16 @@ "node": ">=6" } }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/npmlog": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", @@ -5583,7 +5718,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-3.1.1.tgz", "integrity": "sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==", - "dev": true, "license": "MIT", "dependencies": { "emoji-regex-xs": "^1.0.0", @@ -5591,6 +5725,36 @@ "regex-recursion": "^6.0.2" } }, + "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==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -5604,7 +5768,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", - "dev": true, "license": "MIT" }, "node_modules/picocolors": { @@ -5617,7 +5780,6 @@ "version": "8.5.3", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", - "dev": true, "funding": [ { "type": "opencollective", @@ -5642,11 +5804,57 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/postcss-loader": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz", + "integrity": "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==", + "license": "MIT", + "dependencies": { + "cosmiconfig": "^9.0.0", + "jiti": "^1.20.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/postcss-loader/node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, "node_modules/preact": { "version": "10.26.5", "resolved": "https://registry.npmjs.org/preact/-/preact-10.26.5.tgz", "integrity": "sha512-fmpDkgfGU6JYux9teDWLhj9mKN55tyepwYbxHgQuIxbWQzgFg5vk7Mrrtfx7xRxq798ynkY4DDDxZr235Kk+4w==", - "dev": true, "license": "MIT", "funding": { "type": "opencollective", @@ -5686,7 +5894,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz", "integrity": "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==", - "dev": true, "license": "MIT", "funding": { "type": "github", @@ -5807,7 +6014,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz", "integrity": "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==", - "dev": true, "license": "MIT", "dependencies": { "regex-utilities": "^2.3.0" @@ -5817,7 +6023,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", - "dev": true, "license": "MIT", "dependencies": { "regex-utilities": "^2.3.0" @@ -5827,9 +6032,17 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", - "dev": true, "license": "MIT" }, + "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==", + "license": "MIT", + "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", @@ -5844,7 +6057,6 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "dev": true, "license": "MIT" }, "node_modules/rimraf": { @@ -5867,7 +6079,6 @@ "version": "4.40.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.0.tgz", "integrity": "sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==", - "dev": true, "license": "MIT", "dependencies": { "@types/estree": "1.0.7" @@ -5933,7 +6144,6 @@ "version": "2.17.3", "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz", "integrity": "sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==", - "dev": true, "license": "MIT", "peer": true }, @@ -6000,7 +6210,6 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/shiki/-/shiki-2.5.0.tgz", "integrity": "sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ==", - "dev": true, "license": "MIT", "dependencies": { "@shikijs/core": "2.5.0", @@ -6042,7 +6251,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", - "dev": true, "license": "MIT", "funding": { "type": "github", @@ -6053,7 +6261,6 @@ "version": "14.0.1", "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", - "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -6094,7 +6301,6 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", - "dev": true, "license": "MIT", "dependencies": { "character-entities-html4": "^2.0.0", @@ -6144,7 +6350,6 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.2.tgz", "integrity": "sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==", - "dev": true, "license": "MIT", "dependencies": { "copy-anything": "^3.0.2" @@ -6157,7 +6362,6 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", - "dev": true, "license": "MIT" }, "node_modules/tailwind-merge": { @@ -6171,9 +6375,9 @@ } }, "node_modules/tailwindcss": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.3.tgz", - "integrity": "sha512-2Q+rw9vy1WFXu5cIxlvsabCwhU2qUwodGq03ODhLJ0jW4ek5BUtoCsnLB0qG+m8AHgEsSJcJGDSDe06FXlP74g==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.4.tgz", + "integrity": "sha512-1ZIUqtPITFbv/DxRmDr5/agPqJwF69d24m9qmM1939TJehgY539CtzeZRjbLt5G6fSy/7YqqYsfvoTEw9xUI2A==", "dev": true, "license": "MIT" }, @@ -6214,7 +6418,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", - "dev": true, "license": "MIT", "funding": { "type": "github", @@ -6280,7 +6483,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", - "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" @@ -6294,7 +6496,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", - "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" @@ -6308,7 +6509,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" @@ -6322,7 +6522,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", - "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -6338,7 +6537,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", - "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -6349,6 +6547,37 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/use-callback-ref": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", @@ -6411,7 +6640,6 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", - "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -6426,7 +6654,6 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", - "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -6441,7 +6668,6 @@ "version": "5.4.18", "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.18.tgz", "integrity": "sha512-1oDcnEp3lVyHCuQ2YFelM4Alm2o91xNoMncRm1U7S+JdYfYOvbiGZ3/CxGttrOu2M/KcGz7cRC2DoNUA6urmMA==", - "dev": true, "license": "MIT", "dependencies": { "esbuild": "^0.21.3", @@ -6504,7 +6730,6 @@ "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6521,7 +6746,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6538,7 +6762,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6555,7 +6778,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6572,7 +6794,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6589,7 +6810,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6606,7 +6826,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6623,7 +6842,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6640,7 +6858,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6657,7 +6874,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6674,7 +6890,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6691,7 +6906,6 @@ "cpu": [ "loong64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6708,7 +6922,6 @@ "cpu": [ "mips64el" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6725,7 +6938,6 @@ "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6742,7 +6954,6 @@ "cpu": [ "riscv64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6759,7 +6970,6 @@ "cpu": [ "s390x" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6776,7 +6986,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6793,7 +7002,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6810,7 +7018,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6827,7 +7034,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6844,7 +7050,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6861,7 +7066,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6878,7 +7082,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6892,7 +7095,6 @@ "version": "0.21.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", - "dev": true, "hasInstallScript": true, "license": "MIT", "bin": { @@ -6931,7 +7133,6 @@ "version": "1.6.3", "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.6.3.tgz", "integrity": "sha512-fCkfdOk8yRZT8GD9BFqusW3+GggWYZ/rYncOfmgcDtP3ualNHCAg+Robxp2/6xfH1WwPHtGpPwv7mbA3qomtBw==", - "dev": true, "license": "MIT", "dependencies": { "@docsearch/css": "3.8.2", @@ -6973,7 +7174,6 @@ "version": "3.5.13", "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", - "dev": true, "license": "MIT", "dependencies": { "@vue/compiler-dom": "3.5.13", @@ -7060,12 +7260,26 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", - "dev": true, "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.3.0.tgz", + "integrity": "sha512-vHUQS4YVGJPmpjn7r5lEZuMhK5UQBNBRSB+iGDvJjaNk649pTIcRluDWNb9siunyLLiu/LDPHfvxBtNamyuLTw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } } } } diff --git a/package.json b/package.json index 0b59172..c2b3de3 100644 --- a/package.json +++ b/package.json @@ -43,20 +43,23 @@ "lucide-react": "^0.487.0", "next": "15.3.0", "next-themes": "^0.4.6", + "postcss-loader": "^8.1.1", "react": "^19.0.0", "react-dom": "^19.0.0", "tailwind-merge": "^3.2.0", - "tw-animate-css": "^1.2.5" + "tw-animate-css": "^1.2.5", + "vitepress": "^1.6.3" }, "devDependencies": { "@tailwindcss/postcss": "^4", "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", + "autoprefixer": "^10.4.21", + "postcss": "^8.5.3", "prisma": "^6.6.0", - "tailwindcss": "^4", + "tailwindcss": "^4.1.4", "tsx": "^4.19.3", - "typescript": "^5", - "vitepress": "^1.6.3" + "typescript": "^5" } -} \ No newline at end of file +} diff --git a/postcss.config.mjs b/postcss.config.mjs deleted file mode 100644 index c7bcb4b..0000000 --- a/postcss.config.mjs +++ /dev/null @@ -1,5 +0,0 @@ -const config = { - plugins: ["@tailwindcss/postcss"], -}; - -export default config; From f548367e865f8bfe8df227676f381bc99df2e937 Mon Sep 17 00:00:00 2001 From: headlessdev Date: Sun, 20 Apr 2025 22:45:54 +0200 Subject: [PATCH 09/34] Add server monitoring functionality, including server struct, metrics retrieval for CPU, memory, and disk usage, and status updates in the database. --- agent/main.go | 183 +++++++++++++++++++++++++++++++++++++++++++-- postcss.config.mjs | 5 ++ 2 files changed, 183 insertions(+), 5 deletions(-) create mode 100644 postcss.config.mjs diff --git a/agent/main.go b/agent/main.go index 48391bd..5be3785 100644 --- a/agent/main.go +++ b/agent/main.go @@ -28,6 +28,31 @@ type Application struct { Online bool } +type Server struct { + ID int + Name string + Monitoring bool + MonitoringURL sql.NullString + Online bool + CpuUsage sql.NullFloat64 + RamUsage sql.NullFloat64 + DiskUsage sql.NullFloat64 +} + +type CPUResponse struct { + Total float64 `json:"total"` +} + +type MemoryResponse struct { + Percent float64 `json:"percent"` +} + +type FSResponse []struct { + DeviceName string `json:"device_name"` + MntPoint string `json:"mnt_point"` + Percent float64 `json:"percent"` +} + type Notification struct { ID int Enabled bool @@ -108,20 +133,34 @@ func main() { } }() - ticker := time.NewTicker(time.Second) - defer ticker.Stop() - - client := &http.Client{ + appClient := &http.Client{ Timeout: 4 * time.Second, } + // Server monitoring every 5 seconds + go func() { + serverClient := &http.Client{ + Timeout: 5 * time.Second, + } + serverTicker := time.NewTicker(5 * time.Second) + defer serverTicker.Stop() + + for range serverTicker.C { + servers := getServers(db) + checkAndUpdateServerStatus(db, serverClient, servers) + } + }() + + ticker := time.NewTicker(time.Second) + defer ticker.Stop() + for now := range ticker.C { if now.Second()%10 != 0 { continue } apps := getApplications(db) - checkAndUpdateStatus(db, client, apps) + checkAndUpdateStatus(db, appClient, apps) } } @@ -202,6 +241,32 @@ func getApplications(db *sql.DB) []Application { return apps } +func getServers(db *sql.DB) []Server { + rows, err := db.Query( + `SELECT id, name, monitoring, "monitoringURL", online, "cpuUsage", "ramUsage", "diskUsage" + FROM server WHERE monitoring = true`, + ) + if err != nil { + fmt.Printf("Error fetching servers: %v\n", err) + return nil + } + defer rows.Close() + + var servers []Server + for rows.Next() { + var server Server + if err := rows.Scan( + &server.ID, &server.Name, &server.Monitoring, &server.MonitoringURL, + &server.Online, &server.CpuUsage, &server.RamUsage, &server.DiskUsage, + ); err != nil { + fmt.Printf("Error scanning server row: %v\n", err) + continue + } + servers = append(servers, server) + } + return servers +} + func checkAndUpdateStatus(db *sql.DB, client *http.Client, apps []Application) { var notificationTemplate string err := db.QueryRow("SELECT notification_text FROM settings LIMIT 1").Scan(¬ificationTemplate) @@ -301,6 +366,114 @@ func checkAndUpdateStatus(db *sql.DB, client *http.Client, apps []Application) { dbCancel2() } } + +func checkAndUpdateServerStatus(db *sql.DB, client *http.Client, servers []Server) { + for _, server := range servers { + if !server.Monitoring || !server.MonitoringURL.Valid { + continue + } + + logPrefix := fmt.Sprintf("[Server %s]", server.Name) + fmt.Printf("%s Checking...\n", logPrefix) + + baseURL := strings.TrimSuffix(server.MonitoringURL.String, "/") + var cpuUsage, ramUsage, diskUsage float64 + var online = true + + // Get CPU usage + cpuResp, err := client.Get(fmt.Sprintf("%s/api/4/cpu", baseURL)) + if err != nil { + fmt.Printf("%s CPU request failed: %v\n", logPrefix, err) + updateServerStatus(db, server.ID, false, 0, 0, 0) + continue + } + defer cpuResp.Body.Close() + + if cpuResp.StatusCode != http.StatusOK { + fmt.Printf("%s Bad CPU status code: %d\n", logPrefix, cpuResp.StatusCode) + updateServerStatus(db, server.ID, false, 0, 0, 0) + continue + } + + var cpuData CPUResponse + if err := json.NewDecoder(cpuResp.Body).Decode(&cpuData); err != nil { + fmt.Printf("%s Failed to parse CPU JSON: %v\n", logPrefix, err) + updateServerStatus(db, server.ID, false, 0, 0, 0) + continue + } + cpuUsage = cpuData.Total + + // Get Memory usage + memResp, err := client.Get(fmt.Sprintf("%s/api/4/mem", baseURL)) + if err != nil { + fmt.Printf("%s Memory request failed: %v\n", logPrefix, err) + updateServerStatus(db, server.ID, false, 0, 0, 0) + continue + } + defer memResp.Body.Close() + + if memResp.StatusCode != http.StatusOK { + fmt.Printf("%s Bad memory status code: %d\n", logPrefix, memResp.StatusCode) + updateServerStatus(db, server.ID, false, 0, 0, 0) + continue + } + + var memData MemoryResponse + if err := json.NewDecoder(memResp.Body).Decode(&memData); err != nil { + fmt.Printf("%s Failed to parse memory JSON: %v\n", logPrefix, err) + updateServerStatus(db, server.ID, false, 0, 0, 0) + continue + } + ramUsage = memData.Percent + + // Get Disk usage + fsResp, err := client.Get(fmt.Sprintf("%s/api/4/fs", baseURL)) + if err != nil { + fmt.Printf("%s Filesystem request failed: %v\n", logPrefix, err) + updateServerStatus(db, server.ID, false, 0, 0, 0) + continue + } + defer fsResp.Body.Close() + + if fsResp.StatusCode != http.StatusOK { + fmt.Printf("%s Bad filesystem status code: %d\n", logPrefix, fsResp.StatusCode) + updateServerStatus(db, server.ID, false, 0, 0, 0) + continue + } + + var fsData FSResponse + if err := json.NewDecoder(fsResp.Body).Decode(&fsData); err != nil { + fmt.Printf("%s Failed to parse filesystem JSON: %v\n", logPrefix, err) + updateServerStatus(db, server.ID, false, 0, 0, 0) + continue + } + + // Use the first filesystem entry's percentage + if len(fsData) > 0 { + diskUsage = fsData[0].Percent + } + + // Update server status with metrics + updateServerStatus(db, server.ID, online, cpuUsage, ramUsage, diskUsage) + fmt.Printf("%s Updated - CPU: %.2f%%, RAM: %.2f%%, Disk: %.2f%%\n", + logPrefix, cpuUsage, ramUsage, diskUsage) + } +} + +func updateServerStatus(db *sql.DB, serverID int, online bool, cpuUsage, ramUsage, diskUsage float64) { + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + + _, err := db.ExecContext(ctx, + `UPDATE server SET online = $1, "cpuUsage" = $2::float8, "ramUsage" = $3::float8, "diskUsage" = $4::float8 + WHERE id = $5`, + online, cpuUsage, ramUsage, diskUsage, serverID, + ) + if err != nil { + fmt.Printf("Failed to update server status (ID: %d): %v\n", serverID, err) + } +} + func sendNotifications(message string) { notifMutex.RLock() notifs := notifMutexCopy(notifications) diff --git a/postcss.config.mjs b/postcss.config.mjs new file mode 100644 index 0000000..92f98cd --- /dev/null +++ b/postcss.config.mjs @@ -0,0 +1,5 @@ +const config = { + plugins: ["@tailwindcss/postcss"], +}; + +export default config; \ No newline at end of file From ca81165a1c99f0bb6c01e918da3a23f23e73bb37 Mon Sep 17 00:00:00 2001 From: headlessdev Date: Sun, 20 Apr 2025 23:19:58 +0200 Subject: [PATCH 10/34] Enhance Servers component with detailed resource usage metrics display, including CPU, RAM, and Disk usage indicators, and update server icon to LucideServer. --- app/dashboard/servers/Servers.tsx | 167 ++++++++++++++++++++++++++++-- 1 file changed, 156 insertions(+), 11 deletions(-) diff --git a/app/dashboard/servers/Servers.tsx b/app/dashboard/servers/Servers.tsx index 190143c..8874b58 100644 --- a/app/dashboard/servers/Servers.tsx +++ b/app/dashboard/servers/Servers.tsx @@ -24,7 +24,7 @@ import { MicroscopeIcon as Microchip, MemoryStick, HardDrive, - Server, + LucideServer, } from "lucide-react" import { Card, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { @@ -75,6 +75,10 @@ interface Server { isVM?: boolean monitoring?: boolean monitoringURL?: string + online?: boolean + cpuUsage?: number + ramUsage?: number + diskUsage?: number } interface GetServersResponse { @@ -96,6 +100,10 @@ export default function Dashboard() { const [disk, setDisk] = useState("") const [monitoring, setMonitoring] = useState(false) const [monitoringURL, setMonitoringURL] = useState("") + const [online, setOnline] = useState(false) + const [cpuUsage, setCpuUsage] = useState(0) + const [ramUsage, setRamUsage] = useState(0) + const [diskUsage, setDiskUsage] = useState(0) const [currentPage, setCurrentPage] = useState(1) const [maxPage, setMaxPage] = useState(1) @@ -119,7 +127,6 @@ export default function Dashboard() { const [editMonitoring, setEditMonitoring] = useState(false) const [editMonitoringURL, setEditMonitoringURL] = useState("") - const [searchTerm, setSearchTerm] = useState("") const [isSearching, setIsSearching] = useState(false) @@ -638,6 +645,7 @@ export default function Dashboard() { onChange={(e) => setSearchTerm(e.target.value)} />

+
{!loading ? (
@@ -646,20 +654,28 @@ export default function Dashboard() { .map((server) => (
-
-
+
+
{server.icon && } - {server.icon && "・"} {server.name} + + {server.icon && "・"} {server.name} +
{server.isVM && ( VM )} + {server.monitoring && ( +
+ )} - + Host: {getHostServerName(server.hostServer)} @@ -716,10 +732,72 @@ export default function Dashboard() { Disk: {server.disk || "-"}
+ + {server.monitoring && server.hostServer === 0 && ( + <> +
+ +
+ +
+

Resource Usage

+
+
+
+
+ + CPU +
+ {server.cpuUsage || 0}% +
+
+
80 ? "bg-destructive" : server.cpuUsage && server.cpuUsage > 60 ? "bg-amber-500" : "bg-emerald-500"}`} + style={{ width: `${server.cpuUsage || 0}%` }} + /> +
+
+ +
+
+
+ + RAM +
+ {server.ramUsage || 0}% +
+
+
80 ? "bg-destructive" : server.ramUsage && server.ramUsage > 60 ? "bg-amber-500" : "bg-emerald-500"}`} + style={{ width: `${server.ramUsage || 0}%` }} + /> +
+
+ +
+
+
+ + Disk +
+ {server.diskUsage || 0}% +
+
+
80 ? "bg-destructive" : server.diskUsage && server.diskUsage > 60 ? "bg-amber-500" : "bg-emerald-500"}`} + style={{ width: `${server.diskUsage || 0}%` }} + /> +
+
+
+
+ + )}
-
+
+
@@ -729,7 +807,7 @@ export default function Dashboard() { className="gap-2" onClick={() => window.open(server.url, "_blank")} > - + )} @@ -1028,7 +1106,10 @@ export default function Dashboard() { size={24} /> )} -
{hostedVM.icon && "・ "}{hostedVM.name}
+
+ {hostedVM.icon && "・ "} + {hostedVM.name} +
+ + {hostedVM.monitoring && ( + <> +
+ +
+ +
+
+
+
+ + CPU +
+ + {hostedVM.cpuUsage || 0}% + +
+
+
80 ? "bg-destructive" : hostedVM.cpuUsage && hostedVM.cpuUsage > 60 ? "bg-amber-500" : "bg-emerald-500"}`} + style={{ width: `${hostedVM.cpuUsage || 0}%` }} + /> +
+
+ +
+
+
+ + RAM +
+ + {hostedVM.ramUsage || 0}% + +
+
+
80 ? "bg-destructive" : hostedVM.ramUsage && hostedVM.ramUsage > 60 ? "bg-amber-500" : "bg-emerald-500"}`} + style={{ width: `${hostedVM.ramUsage || 0}%` }} + /> +
+
+ +
+
+
+ + Disk +
+ + {hostedVM.diskUsage || 0}% + +
+
+
80 ? "bg-destructive" : hostedVM.diskUsage && hostedVM.diskUsage > 60 ? "bg-amber-500" : "bg-emerald-500"}`} + style={{ width: `${hostedVM.diskUsage || 0}%` }} + /> +
+
+
+ + )}
))}
From 456f40dab221081435191b65183dde9b37d05053 Mon Sep 17 00:00:00 2001 From: headlessdev Date: Sun, 20 Apr 2025 23:25:35 +0200 Subject: [PATCH 11/34] Updated Status indicator on Server card --- app/dashboard/servers/Servers.tsx | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/app/dashboard/servers/Servers.tsx b/app/dashboard/servers/Servers.tsx index 8874b58..a215168 100644 --- a/app/dashboard/servers/Servers.tsx +++ b/app/dashboard/servers/Servers.tsx @@ -654,9 +654,21 @@ export default function Dashboard() { .map((server) => ( + {server.monitoring && ( +
+
+
+
+
+ )}
@@ -670,12 +682,6 @@ export default function Dashboard() { {server.isVM && ( VM )} - {server.monitoring && ( -
- )} Date: Sun, 20 Apr 2025 23:34:57 +0200 Subject: [PATCH 12/34] Enhance Servers component by adding a "No host server" option in the server selection dropdown, updating state management to handle monitoring settings based on selected host server, and introducing a new "Hardware Information" section for better organization of server details. --- app/dashboard/servers/Servers.tsx | 44 ++++++++++++++++++++++++------- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/app/dashboard/servers/Servers.tsx b/app/dashboard/servers/Servers.tsx index a215168..5d66b81 100644 --- a/app/dashboard/servers/Servers.tsx +++ b/app/dashboard/servers/Servers.tsx @@ -586,12 +586,19 @@ export default function Dashboard() { setEditHostServer(Number(value))} + onValueChange={(value) => { + const newHostServer = Number(value); + setEditHostServer(newHostServer); + if (newHostServer !== 0) { + setEditMonitoring(false); + } + }} > + No host server {hostServers .filter((server) => server.id !== editId) .map((server) => ( @@ -1377,23 +1395,25 @@ export default function Dashboard() { setMonitoringURL(e.target.value)} - /> -
+ <> +
+ + setMonitoringURL(e.target.value)} + /> +
+
+

Required Server Setup

+

+ To enable monitoring, you need to install Glances on your server. Here's an example Docker Compose configuration: +

+
+                                    {`services:
+  glances:
+    image: nicolargo/glances:latest
+    container_name: glances
+    restart: unless-stopped
+    ports:
+      - "61208:61208"
+    pid: "host"
+    volumes:
+      - /var/run/docker.sock:/var/run/docker.sock:ro
+    environment:
+      - GLANCES_OPT=-w --disable-webui`}
+                                  
+
+ )}
@@ -1076,16 +1098,38 @@ export default function Dashboard() {
{editMonitoring && ( -
- - setEditMonitoringURL(e.target.value)} - /> -
+ <> +
+ + setEditMonitoringURL(e.target.value)} + /> +
+
+

Required Server Setup

+

+ To enable monitoring, you need to install Glances on your server. Here's an example Docker Compose configuration: +

+
+                                                      {`services:
+  glances:
+    image: nicolargo/glances:latest
+    container_name: glances
+    restart: unless-stopped
+    ports:
+      - "61208:61208"
+    pid: "host"
+    volumes:
+      - /var/run/docker.sock:/var/run/docker.sock:ro
+    environment:
+      - GLANCES_OPT=-w --disable-webui`}
+                                                    
+
+ )}
From ded91494665c4ca9f68f8d53f93f256048c0fee2 Mon Sep 17 00:00:00 2001 From: headlessdev Date: Mon, 21 Apr 2025 00:13:27 +0200 Subject: [PATCH 14/34] Copy Server Function --- app/dashboard/servers/Servers.tsx | 120 +++++++++++++++++++++++++++--- 1 file changed, 108 insertions(+), 12 deletions(-) diff --git a/app/dashboard/servers/Servers.tsx b/app/dashboard/servers/Servers.tsx index 2cc8887..e67d457 100644 --- a/app/dashboard/servers/Servers.tsx +++ b/app/dashboard/servers/Servers.tsx @@ -25,6 +25,7 @@ import { MemoryStick, HardDrive, LucideServer, + Copy, } from "lucide-react" import { Card, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { @@ -343,6 +344,40 @@ export default function Dashboard() { // Flatten icons for search const allIcons = Object.values(iconCategories).flat() + const copyServerDetails = (sourceServer: Server) => { + // First clear all fields + setName("") + setIcon("") + setOs("") + setIp("") + setUrl("") + setCpu("") + setGpu("") + setRam("") + setDisk("") + setMonitoring(false) + setMonitoringURL("") + setHost(false) + setHostServer(0) + + // Then copy the new server details + setTimeout(() => { + setName(sourceServer.name + " (Copy)") + setIcon(sourceServer.icon || "") + setOs(sourceServer.os || "") + setIp(sourceServer.ip || "") + setUrl(sourceServer.url || "") + setCpu(sourceServer.cpu || "") + setGpu(sourceServer.gpu || "") + setRam(sourceServer.ram || "") + setDisk(sourceServer.disk || "") + setMonitoring(sourceServer.monitoring || false) + setMonitoringURL(sourceServer.monitoringURL || "") + setHost(sourceServer.host) + setHostServer(sourceServer.hostServer || 0) + }, 0) + } + return ( @@ -390,7 +425,60 @@ export default function Dashboard() { - Add an server + + Add a server + + @@ -471,6 +559,7 @@ export default function Dashboard() { id="name" type="text" placeholder="e.g. Server1" + value={name} onChange={(e) => setName(e.target.value)} />
@@ -478,7 +567,7 @@ export default function Dashboard() { - setOs(value)}> @@ -490,13 +579,14 @@ export default function Dashboard() {
-
@@ -518,6 +608,7 @@ export default function Dashboard() { id="publicURL" type="text" placeholder="e.g. https://proxmox.server1.com" + value={url} onChange={(e) => setUrl(e.target.value)} />
@@ -526,46 +617,50 @@ export default function Dashboard() {
-
-
-
-
@@ -628,6 +723,7 @@ export default function Dashboard() { id="monitoringURL" type="text" placeholder={`http://${ip}:61208`} + value={monitoringURL} onChange={(e) => setMonitoringURL(e.target.value)} />
From 693368b735a1894a214ea0c2b6412af89a0e4ee3 Mon Sep 17 00:00:00 2001 From: headlessdev Date: Mon, 21 Apr 2025 12:16:53 +0200 Subject: [PATCH 15/34] Updated docs --- .gitignore | 1 + docs/package-lock.json | 2422 +++++++++++++++++++++++++++++++++++++++ docs/package.json | 19 + docs/postcss.config.cjs | 5 + package-lock.json | 191 ++- package.json | 8 +- 6 files changed, 2621 insertions(+), 25 deletions(-) create mode 100644 docs/package-lock.json create mode 100644 docs/package.json create mode 100644 docs/postcss.config.cjs diff --git a/.gitignore b/.gitignore index 9f3bd95..878f5fc 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ # Vitepress docs/.vitepress/dist docs/.vitepress/cache +docs/node_modules/ # dependencies /node_modules diff --git a/docs/package-lock.json b/docs/package-lock.json new file mode 100644 index 0000000..5068ba0 --- /dev/null +++ b/docs/package-lock.json @@ -0,0 +1,2422 @@ +{ + "name": "docs", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "docs", + "version": "1.0.0", + "license": "ISC", + "devDependencies": { + "vitepress": "^1.6.3" + } + }, + "node_modules/@algolia/autocomplete-core": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.17.7.tgz", + "integrity": "sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-plugin-algolia-insights": "1.17.7", + "@algolia/autocomplete-shared": "1.17.7" + } + }, + "node_modules/@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.7.tgz", + "integrity": "sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-shared": "1.17.7" + }, + "peerDependencies": { + "search-insights": ">= 1 < 3" + } + }, + "node_modules/@algolia/autocomplete-preset-algolia": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.7.tgz", + "integrity": "sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-shared": "1.17.7" + }, + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/autocomplete-shared": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.7.tgz", + "integrity": "sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/client-abtesting": { + "version": "5.23.4", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.23.4.tgz", + "integrity": "sha512-WIMT2Kxy+FFWXWQxIU8QgbTioL+SGE24zhpj0kipG4uQbzXwONaWt7ffaYLjfge3gcGSgJVv+1VlahVckafluQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.23.4", + "@algolia/requester-browser-xhr": "5.23.4", + "@algolia/requester-fetch": "5.23.4", + "@algolia/requester-node-http": "5.23.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-analytics": { + "version": "5.23.4", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.23.4.tgz", + "integrity": "sha512-4B9gChENsQA9kFmFlb+x3YhBz2Gx3vSsm81FHI1yJ3fn2zlxREHmfrjyqYoMunsU7BybT/o5Nb7ccCbm/vfseA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.23.4", + "@algolia/requester-browser-xhr": "5.23.4", + "@algolia/requester-fetch": "5.23.4", + "@algolia/requester-node-http": "5.23.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-common": { + "version": "5.23.4", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.23.4.tgz", + "integrity": "sha512-bsj0lwU2ytiWLtl7sPunr+oLe+0YJql9FozJln5BnIiqfKOaseSDdV42060vUy+D4373f2XBI009K/rm2IXYMA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-insights": { + "version": "5.23.4", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.23.4.tgz", + "integrity": "sha512-XSCtAYvJ/hnfDHfRVMbBH0dayR+2ofVZy3jf5qyifjguC6rwxDsSdQvXpT0QFVyG+h8UPGtDhMPoUIng4wIcZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.23.4", + "@algolia/requester-browser-xhr": "5.23.4", + "@algolia/requester-fetch": "5.23.4", + "@algolia/requester-node-http": "5.23.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-personalization": { + "version": "5.23.4", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.23.4.tgz", + "integrity": "sha512-l/0QvqgRFFOf7BnKSJ3myd1WbDr86ftVaa3PQwlsNh7IpIHmvVcT83Bi5zlORozVGMwaKfyPZo6O48PZELsOeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.23.4", + "@algolia/requester-browser-xhr": "5.23.4", + "@algolia/requester-fetch": "5.23.4", + "@algolia/requester-node-http": "5.23.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-query-suggestions": { + "version": "5.23.4", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.23.4.tgz", + "integrity": "sha512-TB0htrDgVacVGtPDyENoM6VIeYqR+pMsDovW94dfi2JoaRxfqu/tYmLpvgWcOknP6wLbr8bA+G7t/NiGksNAwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.23.4", + "@algolia/requester-browser-xhr": "5.23.4", + "@algolia/requester-fetch": "5.23.4", + "@algolia/requester-node-http": "5.23.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-search": { + "version": "5.23.4", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.23.4.tgz", + "integrity": "sha512-uBGo6KwUP6z+u6HZWRui8UJClS7fgUIAiYd1prUqCbkzDiCngTOzxaJbEvrdkK0hGCQtnPDiuNhC5MhtVNN4Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.23.4", + "@algolia/requester-browser-xhr": "5.23.4", + "@algolia/requester-fetch": "5.23.4", + "@algolia/requester-node-http": "5.23.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/ingestion": { + "version": "1.23.4", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.23.4.tgz", + "integrity": "sha512-Si6rFuGnSeEUPU9QchYvbknvEIyCRK7nkeaPVQdZpABU7m4V/tsiWdHmjVodtx3h20VZivJdHeQO9XbHxBOcCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.23.4", + "@algolia/requester-browser-xhr": "5.23.4", + "@algolia/requester-fetch": "5.23.4", + "@algolia/requester-node-http": "5.23.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/monitoring": { + "version": "1.23.4", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.23.4.tgz", + "integrity": "sha512-EXGoVVTshraqPJgr5cMd1fq7Jm71Ew6MpGCEaxI5PErBpJAmKdtjRIzs6JOGKHRaWLi+jdbJPYc2y8RN4qcx5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.23.4", + "@algolia/requester-browser-xhr": "5.23.4", + "@algolia/requester-fetch": "5.23.4", + "@algolia/requester-node-http": "5.23.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/recommend": { + "version": "5.23.4", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.23.4.tgz", + "integrity": "sha512-1t6glwKVCkjvBNlng2itTf8fwaLSqkL4JaMENgR3WTGR8mmW2akocUy/ZYSQcG4TcR7qu4zW2UMGAwLoWoflgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.23.4", + "@algolia/requester-browser-xhr": "5.23.4", + "@algolia/requester-fetch": "5.23.4", + "@algolia/requester-node-http": "5.23.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-browser-xhr": { + "version": "5.23.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.23.4.tgz", + "integrity": "sha512-UUuizcgc5+VSY8hqzDFVdJ3Wcto03lpbFRGPgW12pHTlUQHUTADtIpIhkLLOZRCjXmCVhtr97Z+eR6LcRYXa3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.23.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-fetch": { + "version": "5.23.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.23.4.tgz", + "integrity": "sha512-UhDg6elsek6NnV5z4VG1qMwR6vbp+rTMBEnl/v4hUyXQazU+CNdYkl++cpdmLwGI/7nXc28xtZiL90Es3I7viQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.23.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-node-http": { + "version": "5.23.4", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.23.4.tgz", + "integrity": "sha512-jXGzGBRUS0oywQwnaCA6mMDJO7LoC3dYSLsyNfIqxDR4SNGLhtg3je0Y31lc24OA4nYyKAYgVLtjfrpcpsWShg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.23.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", + "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", + "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@docsearch/css": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.8.2.tgz", + "integrity": "sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@docsearch/js": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.8.2.tgz", + "integrity": "sha512-Q5wY66qHn0SwA7Taa0aDbHiJvaFJLOJyHmooQ7y8hlwwQLQ/5WwCcoX0g7ii04Qi2DJlHsd0XXzJ8Ypw9+9YmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@docsearch/react": "3.8.2", + "preact": "^10.0.0" + } + }, + "node_modules/@docsearch/react": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.8.2.tgz", + "integrity": "sha512-xCRrJQlTt8N9GU0DG4ptwHRkfnSnD/YpdeaXe02iKfqs97TkZJv60yE+1eq/tjPcVnTW8dP5qLP7itifFVV5eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-core": "1.17.7", + "@algolia/autocomplete-preset-algolia": "1.17.7", + "@docsearch/css": "3.8.2", + "algoliasearch": "^5.14.2" + }, + "peerDependencies": { + "@types/react": ">= 16.8.0 < 19.0.0", + "react": ">= 16.8.0 < 19.0.0", + "react-dom": ">= 16.8.0 < 19.0.0", + "search-insights": ">= 1 < 3" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "search-insights": { + "optional": true + } + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@iconify-json/simple-icons": { + "version": "1.2.32", + "resolved": "https://registry.npmjs.org/@iconify-json/simple-icons/-/simple-icons-1.2.32.tgz", + "integrity": "sha512-gxgLq0raip7SJaeJ0302vwhsqupQttS21B93Ci1kA/++B+hIgGw71HzTOWQoUhwjlrdWcoVUxSvpPJoMs7oURg==", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "@iconify/types": "*" + } + }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.0.tgz", + "integrity": "sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.0.tgz", + "integrity": "sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.0.tgz", + "integrity": "sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.0.tgz", + "integrity": "sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.0.tgz", + "integrity": "sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.0.tgz", + "integrity": "sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.0.tgz", + "integrity": "sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.0.tgz", + "integrity": "sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.0.tgz", + "integrity": "sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.0.tgz", + "integrity": "sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.0.tgz", + "integrity": "sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.0.tgz", + "integrity": "sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.0.tgz", + "integrity": "sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.0.tgz", + "integrity": "sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.0.tgz", + "integrity": "sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.0.tgz", + "integrity": "sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.0.tgz", + "integrity": "sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.0.tgz", + "integrity": "sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.0.tgz", + "integrity": "sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.0.tgz", + "integrity": "sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@shikijs/core": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-2.5.0.tgz", + "integrity": "sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/engine-javascript": "2.5.0", + "@shikijs/engine-oniguruma": "2.5.0", + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.4" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-2.5.0.tgz", + "integrity": "sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^3.1.0" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-2.5.0.tgz", + "integrity": "sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/@shikijs/langs": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-2.5.0.tgz", + "integrity": "sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0" + } + }, + "node_modules/@shikijs/themes": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-2.5.0.tgz", + "integrity": "sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0" + } + }, + "node_modules/@shikijs/transformers": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-2.5.0.tgz", + "integrity": "sha512-SI494W5X60CaUwgi8u4q4m4s3YAFSxln3tzNjOSYqq54wlVgz0/NbbXEb3mdLbqMBztcmS7bVTaEd2w0qMmfeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/core": "2.5.0", + "@shikijs/types": "2.5.0" + } + }, + "node_modules/@shikijs/types": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-2.5.0.tgz", + "integrity": "sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/markdown-it": { + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/linkify-it": "^5", + "@types/mdurl": "^2" + } + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.21", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz", + "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.3.tgz", + "integrity": "sha512-IYSLEQj4LgZZuoVpdSUCw3dIynTWQgPlaRP6iAvMle4My0HdYwr5g5wQAfwOeHQBmYwEkqF70nRpSilr6PoUDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", + "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.13", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", + "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", + "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.13", + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.11", + "postcss": "^8.4.48", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", + "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/devtools-api": { + "version": "7.7.5", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.7.5.tgz", + "integrity": "sha512-HYV3tJGARROq5nlVMJh5KKHk7GU8Au3IrrmNNqr978m0edxgpHgYPDoNUGrvEgIbObz09SQezFR3A1EVmB5WZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-kit": "^7.7.5" + } + }, + "node_modules/@vue/devtools-kit": { + "version": "7.7.5", + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.5.tgz", + "integrity": "sha512-S9VAVJYVAe4RPx2JZb9ZTEi0lqTySz2CBeF0wHT5D3dkTLnT9yMMGegKNl4b2EIELwLSkcI9bl2qp0/jW+upqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-shared": "^7.7.5", + "birpc": "^2.3.0", + "hookable": "^5.5.3", + "mitt": "^3.0.1", + "perfect-debounce": "^1.0.0", + "speakingurl": "^14.0.1", + "superjson": "^2.2.2" + } + }, + "node_modules/@vue/devtools-shared": { + "version": "7.7.5", + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.7.5.tgz", + "integrity": "sha512-QBjG72RfpM0DKtpns2RZOxBltO226kOAls9e4Lri6YxS2gWTgL0H+wj1R2K76lxxIeOrqo4+2Ty6RQnzv+WSTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "rfdc": "^1.4.1" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz", + "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz", + "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", + "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.13", + "@vue/runtime-core": "3.5.13", + "@vue/shared": "3.5.13", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz", + "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13" + }, + "peerDependencies": { + "vue": "3.5.13" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", + "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vueuse/core": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-12.8.2.tgz", + "integrity": "sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.21", + "@vueuse/metadata": "12.8.2", + "@vueuse/shared": "12.8.2", + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/integrations": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-12.8.2.tgz", + "integrity": "sha512-fbGYivgK5uBTRt7p5F3zy6VrETlV9RtZjBqd1/HxGdjdckBgBM4ugP8LHpjolqTj14TXTxSK1ZfgPbHYyGuH7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vueuse/core": "12.8.2", + "@vueuse/shared": "12.8.2", + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "async-validator": "^4", + "axios": "^1", + "change-case": "^5", + "drauu": "^0.4", + "focus-trap": "^7", + "fuse.js": "^7", + "idb-keyval": "^6", + "jwt-decode": "^4", + "nprogress": "^0.2", + "qrcode": "^1.5", + "sortablejs": "^1", + "universal-cookie": "^7" + }, + "peerDependenciesMeta": { + "async-validator": { + "optional": true + }, + "axios": { + "optional": true + }, + "change-case": { + "optional": true + }, + "drauu": { + "optional": true + }, + "focus-trap": { + "optional": true + }, + "fuse.js": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "jwt-decode": { + "optional": true + }, + "nprogress": { + "optional": true + }, + "qrcode": { + "optional": true + }, + "sortablejs": { + "optional": true + }, + "universal-cookie": { + "optional": true + } + } + }, + "node_modules/@vueuse/metadata": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-12.8.2.tgz", + "integrity": "sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-12.8.2.tgz", + "integrity": "sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/algoliasearch": { + "version": "5.23.4", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.23.4.tgz", + "integrity": "sha512-QzAKFHl3fm53s44VHrTdEo0TkpL3XVUYQpnZy1r6/EHvMAyIg+O4hwprzlsNmcCHTNyVcF2S13DAUn7XhkC6qg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-abtesting": "5.23.4", + "@algolia/client-analytics": "5.23.4", + "@algolia/client-common": "5.23.4", + "@algolia/client-insights": "5.23.4", + "@algolia/client-personalization": "5.23.4", + "@algolia/client-query-suggestions": "5.23.4", + "@algolia/client-search": "5.23.4", + "@algolia/ingestion": "1.23.4", + "@algolia/monitoring": "1.23.4", + "@algolia/recommend": "5.23.4", + "@algolia/requester-browser-xhr": "5.23.4", + "@algolia/requester-fetch": "5.23.4", + "@algolia/requester-node-http": "5.23.4" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/birpc": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.3.0.tgz", + "integrity": "sha512-ijbtkn/F3Pvzb6jHypHRyve2QApOCZDR25D/VnkY2G/lBNcXCTsnsCxgY4k4PkVB7zfwzYbY3O9Lcqe3xufS5g==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/copy-anything": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", + "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-what": "^4.1.8" + }, + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/emoji-regex-xs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", + "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==", + "dev": true, + "license": "MIT" + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/focus-trap": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.4.tgz", + "integrity": "sha512-xx560wGBk7seZ6y933idtjJQc1l+ck+pI3sKvhKozdBV1dRZoKhkW5xoCaFv9tQiX5RH1xfSxjuNu6g+lmN/gw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tabbable": "^6.2.0" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-what": { + "version": "4.1.16", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", + "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/mark.js": { + "version": "8.11.1", + "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", + "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/minisearch": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-7.1.2.tgz", + "integrity": "sha512-R1Pd9eF+MD5JYDDSPAp/q1ougKglm14uEkPMvQ/05RGmx6G9wvmLTrTI/Q5iPNJLYqNdsDQ7qTGIcNWR+FrHmA==", + "dev": true, + "license": "MIT" + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/oniguruma-to-es": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-3.1.1.tgz", + "integrity": "sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex-xs": "^1.0.0", + "regex": "^6.0.1", + "regex-recursion": "^6.0.2" + } + }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/preact": { + "version": "10.26.5", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.26.5.tgz", + "integrity": "sha512-fmpDkgfGU6JYux9teDWLhj9mKN55tyepwYbxHgQuIxbWQzgFg5vk7Mrrtfx7xRxq798ynkY4DDDxZr235Kk+4w==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/property-information": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz", + "integrity": "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz", + "integrity": "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-recursion": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", + "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", + "dev": true, + "license": "MIT" + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/rollup": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.0.tgz", + "integrity": "sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.7" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.40.0", + "@rollup/rollup-android-arm64": "4.40.0", + "@rollup/rollup-darwin-arm64": "4.40.0", + "@rollup/rollup-darwin-x64": "4.40.0", + "@rollup/rollup-freebsd-arm64": "4.40.0", + "@rollup/rollup-freebsd-x64": "4.40.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.40.0", + "@rollup/rollup-linux-arm-musleabihf": "4.40.0", + "@rollup/rollup-linux-arm64-gnu": "4.40.0", + "@rollup/rollup-linux-arm64-musl": "4.40.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.40.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.40.0", + "@rollup/rollup-linux-riscv64-gnu": "4.40.0", + "@rollup/rollup-linux-riscv64-musl": "4.40.0", + "@rollup/rollup-linux-s390x-gnu": "4.40.0", + "@rollup/rollup-linux-x64-gnu": "4.40.0", + "@rollup/rollup-linux-x64-musl": "4.40.0", + "@rollup/rollup-win32-arm64-msvc": "4.40.0", + "@rollup/rollup-win32-ia32-msvc": "4.40.0", + "@rollup/rollup-win32-x64-msvc": "4.40.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/search-insights": { + "version": "2.17.3", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz", + "integrity": "sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/shiki": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-2.5.0.tgz", + "integrity": "sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/core": "2.5.0", + "@shikijs/engine-javascript": "2.5.0", + "@shikijs/engine-oniguruma": "2.5.0", + "@shikijs/langs": "2.5.0", + "@shikijs/themes": "2.5.0", + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "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==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/speakingurl": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", + "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dev": true, + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/superjson": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.2.tgz", + "integrity": "sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "copy-anything": "^3.0.2" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", + "dev": true, + "license": "MIT" + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vite": { + "version": "5.4.18", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.18.tgz", + "integrity": "sha512-1oDcnEp3lVyHCuQ2YFelM4Alm2o91xNoMncRm1U7S+JdYfYOvbiGZ3/CxGttrOu2M/KcGz7cRC2DoNUA6urmMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vitepress": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.6.3.tgz", + "integrity": "sha512-fCkfdOk8yRZT8GD9BFqusW3+GggWYZ/rYncOfmgcDtP3ualNHCAg+Robxp2/6xfH1WwPHtGpPwv7mbA3qomtBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@docsearch/css": "3.8.2", + "@docsearch/js": "3.8.2", + "@iconify-json/simple-icons": "^1.2.21", + "@shikijs/core": "^2.1.0", + "@shikijs/transformers": "^2.1.0", + "@shikijs/types": "^2.1.0", + "@types/markdown-it": "^14.1.2", + "@vitejs/plugin-vue": "^5.2.1", + "@vue/devtools-api": "^7.7.0", + "@vue/shared": "^3.5.13", + "@vueuse/core": "^12.4.0", + "@vueuse/integrations": "^12.4.0", + "focus-trap": "^7.6.4", + "mark.js": "8.11.1", + "minisearch": "^7.1.1", + "shiki": "^2.1.0", + "vite": "^5.4.14", + "vue": "^3.5.13" + }, + "bin": { + "vitepress": "bin/vitepress.js" + }, + "peerDependencies": { + "markdown-it-mathjax3": "^4", + "postcss": "^8" + }, + "peerDependenciesMeta": { + "markdown-it-mathjax3": { + "optional": true + }, + "postcss": { + "optional": true + } + } + }, + "node_modules/vue": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", + "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-sfc": "3.5.13", + "@vue/runtime-dom": "3.5.13", + "@vue/server-renderer": "3.5.13", + "@vue/shared": "3.5.13" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/docs/package.json b/docs/package.json new file mode 100644 index 0000000..7736b18 --- /dev/null +++ b/docs/package.json @@ -0,0 +1,19 @@ +{ + "name": "docs", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "docs:dev": "vitepress dev", + "docs:build": "vitepress build", + "docs:preview": "vitepress preview" + }, + "keywords": [], + "author": "", + "license": "ISC", + "type": "commonjs", + "devDependencies": { + "vitepress": "^1.6.3" + } +} \ No newline at end of file diff --git a/docs/postcss.config.cjs b/docs/postcss.config.cjs new file mode 100644 index 0000000..2f4a647 --- /dev/null +++ b/docs/postcss.config.cjs @@ -0,0 +1,5 @@ +// docs/postcss.config.cjs +module.exports = { + plugins: [] + } + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 64a5230..0939860 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43,8 +43,7 @@ "react": "^19.0.0", "react-dom": "^19.0.0", "tailwind-merge": "^3.2.0", - "tw-animate-css": "^1.2.5", - "vitepress": "^1.6.3" + "tw-animate-css": "^1.2.5" }, "devDependencies": { "@tailwindcss/postcss": "^4", @@ -56,13 +55,15 @@ "prisma": "^6.6.0", "tailwindcss": "^4.1.4", "tsx": "^4.19.3", - "typescript": "^5" + "typescript": "^5", + "vitepress": "^1.6.3" } }, "node_modules/@algolia/autocomplete-core": { "version": "1.17.7", "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.17.7.tgz", "integrity": "sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==", + "dev": true, "license": "MIT", "dependencies": { "@algolia/autocomplete-plugin-algolia-insights": "1.17.7", @@ -73,6 +74,7 @@ "version": "1.17.7", "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.7.tgz", "integrity": "sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A==", + "dev": true, "license": "MIT", "dependencies": { "@algolia/autocomplete-shared": "1.17.7" @@ -85,6 +87,7 @@ "version": "1.17.7", "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.7.tgz", "integrity": "sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA==", + "dev": true, "license": "MIT", "dependencies": { "@algolia/autocomplete-shared": "1.17.7" @@ -98,6 +101,7 @@ "version": "1.17.7", "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.7.tgz", "integrity": "sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg==", + "dev": true, "license": "MIT", "peerDependencies": { "@algolia/client-search": ">= 4.9.1 < 6", @@ -108,6 +112,7 @@ "version": "5.23.4", "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.23.4.tgz", "integrity": "sha512-WIMT2Kxy+FFWXWQxIU8QgbTioL+SGE24zhpj0kipG4uQbzXwONaWt7ffaYLjfge3gcGSgJVv+1VlahVckafluQ==", + "dev": true, "license": "MIT", "dependencies": { "@algolia/client-common": "5.23.4", @@ -123,6 +128,7 @@ "version": "5.23.4", "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.23.4.tgz", "integrity": "sha512-4B9gChENsQA9kFmFlb+x3YhBz2Gx3vSsm81FHI1yJ3fn2zlxREHmfrjyqYoMunsU7BybT/o5Nb7ccCbm/vfseA==", + "dev": true, "license": "MIT", "dependencies": { "@algolia/client-common": "5.23.4", @@ -138,6 +144,7 @@ "version": "5.23.4", "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.23.4.tgz", "integrity": "sha512-bsj0lwU2ytiWLtl7sPunr+oLe+0YJql9FozJln5BnIiqfKOaseSDdV42060vUy+D4373f2XBI009K/rm2IXYMA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 14.0.0" @@ -147,6 +154,7 @@ "version": "5.23.4", "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.23.4.tgz", "integrity": "sha512-XSCtAYvJ/hnfDHfRVMbBH0dayR+2ofVZy3jf5qyifjguC6rwxDsSdQvXpT0QFVyG+h8UPGtDhMPoUIng4wIcZA==", + "dev": true, "license": "MIT", "dependencies": { "@algolia/client-common": "5.23.4", @@ -162,6 +170,7 @@ "version": "5.23.4", "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.23.4.tgz", "integrity": "sha512-l/0QvqgRFFOf7BnKSJ3myd1WbDr86ftVaa3PQwlsNh7IpIHmvVcT83Bi5zlORozVGMwaKfyPZo6O48PZELsOeA==", + "dev": true, "license": "MIT", "dependencies": { "@algolia/client-common": "5.23.4", @@ -177,6 +186,7 @@ "version": "5.23.4", "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.23.4.tgz", "integrity": "sha512-TB0htrDgVacVGtPDyENoM6VIeYqR+pMsDovW94dfi2JoaRxfqu/tYmLpvgWcOknP6wLbr8bA+G7t/NiGksNAwQ==", + "dev": true, "license": "MIT", "dependencies": { "@algolia/client-common": "5.23.4", @@ -192,6 +202,7 @@ "version": "5.23.4", "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.23.4.tgz", "integrity": "sha512-uBGo6KwUP6z+u6HZWRui8UJClS7fgUIAiYd1prUqCbkzDiCngTOzxaJbEvrdkK0hGCQtnPDiuNhC5MhtVNN4Eg==", + "dev": true, "license": "MIT", "dependencies": { "@algolia/client-common": "5.23.4", @@ -207,6 +218,7 @@ "version": "1.23.4", "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.23.4.tgz", "integrity": "sha512-Si6rFuGnSeEUPU9QchYvbknvEIyCRK7nkeaPVQdZpABU7m4V/tsiWdHmjVodtx3h20VZivJdHeQO9XbHxBOcCw==", + "dev": true, "license": "MIT", "dependencies": { "@algolia/client-common": "5.23.4", @@ -222,6 +234,7 @@ "version": "1.23.4", "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.23.4.tgz", "integrity": "sha512-EXGoVVTshraqPJgr5cMd1fq7Jm71Ew6MpGCEaxI5PErBpJAmKdtjRIzs6JOGKHRaWLi+jdbJPYc2y8RN4qcx5Q==", + "dev": true, "license": "MIT", "dependencies": { "@algolia/client-common": "5.23.4", @@ -237,6 +250,7 @@ "version": "5.23.4", "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.23.4.tgz", "integrity": "sha512-1t6glwKVCkjvBNlng2itTf8fwaLSqkL4JaMENgR3WTGR8mmW2akocUy/ZYSQcG4TcR7qu4zW2UMGAwLoWoflgQ==", + "dev": true, "license": "MIT", "dependencies": { "@algolia/client-common": "5.23.4", @@ -252,6 +266,7 @@ "version": "5.23.4", "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.23.4.tgz", "integrity": "sha512-UUuizcgc5+VSY8hqzDFVdJ3Wcto03lpbFRGPgW12pHTlUQHUTADtIpIhkLLOZRCjXmCVhtr97Z+eR6LcRYXa3Q==", + "dev": true, "license": "MIT", "dependencies": { "@algolia/client-common": "5.23.4" @@ -264,6 +279,7 @@ "version": "5.23.4", "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.23.4.tgz", "integrity": "sha512-UhDg6elsek6NnV5z4VG1qMwR6vbp+rTMBEnl/v4hUyXQazU+CNdYkl++cpdmLwGI/7nXc28xtZiL90Es3I7viQ==", + "dev": true, "license": "MIT", "dependencies": { "@algolia/client-common": "5.23.4" @@ -276,6 +292,7 @@ "version": "5.23.4", "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.23.4.tgz", "integrity": "sha512-jXGzGBRUS0oywQwnaCA6mMDJO7LoC3dYSLsyNfIqxDR4SNGLhtg3je0Y31lc24OA4nYyKAYgVLtjfrpcpsWShg==", + "dev": true, "license": "MIT", "dependencies": { "@algolia/client-common": "5.23.4" @@ -315,6 +332,7 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -333,6 +351,7 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.27.0" @@ -348,6 +367,7 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.25.9", @@ -361,12 +381,14 @@ "version": "3.8.2", "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.8.2.tgz", "integrity": "sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ==", + "dev": true, "license": "MIT" }, "node_modules/@docsearch/js": { "version": "3.8.2", "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.8.2.tgz", "integrity": "sha512-Q5wY66qHn0SwA7Taa0aDbHiJvaFJLOJyHmooQ7y8hlwwQLQ/5WwCcoX0g7ii04Qi2DJlHsd0XXzJ8Ypw9+9YmQ==", + "dev": true, "license": "MIT", "dependencies": { "@docsearch/react": "3.8.2", @@ -377,6 +399,7 @@ "version": "3.8.2", "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.8.2.tgz", "integrity": "sha512-xCRrJQlTt8N9GU0DG4ptwHRkfnSnD/YpdeaXe02iKfqs97TkZJv60yE+1eq/tjPcVnTW8dP5qLP7itifFVV5eg==", + "dev": true, "license": "MIT", "dependencies": { "@algolia/autocomplete-core": "1.17.7", @@ -409,6 +432,7 @@ "version": "18.3.20", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.20.tgz", "integrity": "sha512-IPaCZN7PShZK/3t6Q87pfTkRm6oLTd4vztyoj+cbHUF1g3FfVb2tFIL79uCRKEfv16AhqDMBywP2VW3KIZUvcg==", + "dev": true, "license": "MIT", "optional": true, "peer": true, @@ -421,6 +445,7 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dev": true, "license": "MIT", "optional": true, "peer": true, @@ -435,6 +460,7 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dev": true, "license": "MIT", "optional": true, "peer": true, @@ -450,6 +476,7 @@ "version": "0.23.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dev": true, "license": "MIT", "optional": true, "peer": true, @@ -934,6 +961,7 @@ "version": "1.2.32", "resolved": "https://registry.npmjs.org/@iconify-json/simple-icons/-/simple-icons-1.2.32.tgz", "integrity": "sha512-gxgLq0raip7SJaeJ0302vwhsqupQttS21B93Ci1kA/++B+hIgGw71HzTOWQoUhwjlrdWcoVUxSvpPJoMs7oURg==", + "dev": true, "license": "CC0-1.0", "dependencies": { "@iconify/types": "*" @@ -943,6 +971,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "dev": true, "license": "MIT" }, "node_modules/@img/sharp-darwin-arm64": { @@ -1326,6 +1355,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, "license": "MIT" }, "node_modules/@mapbox/node-pre-gyp": { @@ -2511,6 +2541,7 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2524,6 +2555,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2537,6 +2569,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2550,6 +2583,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2563,6 +2597,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2576,6 +2611,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2589,6 +2625,7 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2602,6 +2639,7 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2615,6 +2653,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2628,6 +2667,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2641,6 +2681,7 @@ "cpu": [ "loong64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2654,6 +2695,7 @@ "cpu": [ "ppc64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2667,6 +2709,7 @@ "cpu": [ "riscv64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2680,6 +2723,7 @@ "cpu": [ "riscv64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2693,6 +2737,7 @@ "cpu": [ "s390x" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2706,6 +2751,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2719,6 +2765,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2732,6 +2779,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2745,6 +2793,7 @@ "cpu": [ "ia32" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2758,6 +2807,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2768,6 +2818,7 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-2.5.0.tgz", "integrity": "sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==", + "dev": true, "license": "MIT", "dependencies": { "@shikijs/engine-javascript": "2.5.0", @@ -2782,6 +2833,7 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-2.5.0.tgz", "integrity": "sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==", + "dev": true, "license": "MIT", "dependencies": { "@shikijs/types": "2.5.0", @@ -2793,6 +2845,7 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-2.5.0.tgz", "integrity": "sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==", + "dev": true, "license": "MIT", "dependencies": { "@shikijs/types": "2.5.0", @@ -2803,6 +2856,7 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-2.5.0.tgz", "integrity": "sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w==", + "dev": true, "license": "MIT", "dependencies": { "@shikijs/types": "2.5.0" @@ -2812,6 +2866,7 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-2.5.0.tgz", "integrity": "sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw==", + "dev": true, "license": "MIT", "dependencies": { "@shikijs/types": "2.5.0" @@ -2821,6 +2876,7 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-2.5.0.tgz", "integrity": "sha512-SI494W5X60CaUwgi8u4q4m4s3YAFSxln3tzNjOSYqq54wlVgz0/NbbXEb3mdLbqMBztcmS7bVTaEd2w0qMmfeg==", + "dev": true, "license": "MIT", "dependencies": { "@shikijs/core": "2.5.0", @@ -2831,6 +2887,7 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-2.5.0.tgz", "integrity": "sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==", + "dev": true, "license": "MIT", "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", @@ -2841,6 +2898,7 @@ "version": "10.0.2", "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "dev": true, "license": "MIT" }, "node_modules/@swc/counter": { @@ -3177,12 +3235,14 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "dev": true, "license": "MIT" }, "node_modules/@types/hast": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "*" @@ -3208,12 +3268,14 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "dev": true, "license": "MIT" }, "node_modules/@types/markdown-it": { "version": "14.1.2", "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", + "dev": true, "license": "MIT", "dependencies": { "@types/linkify-it": "^5", @@ -3224,6 +3286,7 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "*" @@ -3233,6 +3296,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", + "dev": true, "license": "MIT" }, "node_modules/@types/ms": { @@ -3254,6 +3318,7 @@ "version": "15.7.14", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", + "dev": true, "license": "MIT", "optional": true, "peer": true @@ -3282,24 +3347,28 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, "license": "MIT" }, "node_modules/@types/web-bluetooth": { "version": "0.0.21", "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz", "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==", + "dev": true, "license": "MIT" }, "node_modules/@ungap/structured-clone": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, "license": "ISC" }, "node_modules/@vitejs/plugin-vue": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.3.tgz", "integrity": "sha512-IYSLEQj4LgZZuoVpdSUCw3dIynTWQgPlaRP6iAvMle4My0HdYwr5g5wQAfwOeHQBmYwEkqF70nRpSilr6PoUDg==", + "dev": true, "license": "MIT", "engines": { "node": "^18.0.0 || >=20.0.0" @@ -3313,6 +3382,7 @@ "version": "3.5.13", "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", + "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.25.3", @@ -3326,6 +3396,7 @@ "version": "3.5.13", "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", + "dev": true, "license": "MIT", "dependencies": { "@vue/compiler-core": "3.5.13", @@ -3336,6 +3407,7 @@ "version": "3.5.13", "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.25.3", @@ -3353,6 +3425,7 @@ "version": "3.5.13", "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", + "dev": true, "license": "MIT", "dependencies": { "@vue/compiler-dom": "3.5.13", @@ -3363,6 +3436,7 @@ "version": "7.7.5", "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.7.5.tgz", "integrity": "sha512-HYV3tJGARROq5nlVMJh5KKHk7GU8Au3IrrmNNqr978m0edxgpHgYPDoNUGrvEgIbObz09SQezFR3A1EVmB5WZg==", + "dev": true, "license": "MIT", "dependencies": { "@vue/devtools-kit": "^7.7.5" @@ -3372,6 +3446,7 @@ "version": "7.7.5", "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.5.tgz", "integrity": "sha512-S9VAVJYVAe4RPx2JZb9ZTEi0lqTySz2CBeF0wHT5D3dkTLnT9yMMGegKNl4b2EIELwLSkcI9bl2qp0/jW+upqA==", + "dev": true, "license": "MIT", "dependencies": { "@vue/devtools-shared": "^7.7.5", @@ -3387,6 +3462,7 @@ "version": "7.7.5", "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.7.5.tgz", "integrity": "sha512-QBjG72RfpM0DKtpns2RZOxBltO226kOAls9e4Lri6YxS2gWTgL0H+wj1R2K76lxxIeOrqo4+2Ty6RQnzv+WSTQ==", + "dev": true, "license": "MIT", "dependencies": { "rfdc": "^1.4.1" @@ -3396,6 +3472,7 @@ "version": "3.5.13", "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz", "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", + "dev": true, "license": "MIT", "dependencies": { "@vue/shared": "3.5.13" @@ -3405,6 +3482,7 @@ "version": "3.5.13", "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz", "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", + "dev": true, "license": "MIT", "dependencies": { "@vue/reactivity": "3.5.13", @@ -3415,6 +3493,7 @@ "version": "3.5.13", "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", + "dev": true, "license": "MIT", "dependencies": { "@vue/reactivity": "3.5.13", @@ -3427,6 +3506,7 @@ "version": "3.5.13", "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz", "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", + "dev": true, "license": "MIT", "dependencies": { "@vue/compiler-ssr": "3.5.13", @@ -3440,12 +3520,14 @@ "version": "3.5.13", "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", + "dev": true, "license": "MIT" }, "node_modules/@vueuse/core": { "version": "12.8.2", "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-12.8.2.tgz", "integrity": "sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/web-bluetooth": "^0.0.21", @@ -3461,6 +3543,7 @@ "version": "12.8.2", "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-12.8.2.tgz", "integrity": "sha512-fbGYivgK5uBTRt7p5F3zy6VrETlV9RtZjBqd1/HxGdjdckBgBM4ugP8LHpjolqTj14TXTxSK1ZfgPbHYyGuH7g==", + "dev": true, "license": "MIT", "dependencies": { "@vueuse/core": "12.8.2", @@ -3527,6 +3610,7 @@ "version": "12.8.2", "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-12.8.2.tgz", "integrity": "sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==", + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/antfu" @@ -3536,6 +3620,7 @@ "version": "12.8.2", "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-12.8.2.tgz", "integrity": "sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==", + "dev": true, "license": "MIT", "dependencies": { "vue": "^3.5.13" @@ -3596,6 +3681,7 @@ "version": "5.23.4", "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.23.4.tgz", "integrity": "sha512-QzAKFHl3fm53s44VHrTdEo0TkpL3XVUYQpnZy1r6/EHvMAyIg+O4hwprzlsNmcCHTNyVcF2S13DAUn7XhkC6qg==", + "dev": true, "license": "MIT", "dependencies": { "@algolia/client-abtesting": "5.23.4", @@ -3742,6 +3828,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.3.0.tgz", "integrity": "sha512-ijbtkn/F3Pvzb6jHypHRyve2QApOCZDR25D/VnkY2G/lBNcXCTsnsCxgY4k4PkVB7zfwzYbY3O9Lcqe3xufS5g==", + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/antfu" @@ -3853,6 +3940,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -3863,6 +3951,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -3873,6 +3962,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -3991,6 +4081,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -4013,6 +4104,7 @@ "version": "3.0.5", "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", + "dev": true, "license": "MIT", "dependencies": { "is-what": "^4.1.8" @@ -4054,6 +4146,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "devOptional": true, "license": "MIT" }, "node_modules/d3-color": { @@ -4197,6 +4290,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -4221,6 +4315,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dev": true, "license": "MIT", "dependencies": { "dequal": "^2.0.0" @@ -4270,6 +4365,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==", + "dev": true, "license": "MIT" }, "node_modules/enhanced-resolve": { @@ -4290,6 +4386,7 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=0.12" @@ -4435,12 +4532,14 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, "license": "MIT" }, "node_modules/focus-trap": { "version": "7.6.4", "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.4.tgz", "integrity": "sha512-xx560wGBk7seZ6y933idtjJQc1l+ck+pI3sKvhKozdBV1dRZoKhkW5xoCaFv9tQiX5RH1xfSxjuNu6g+lmN/gw==", + "dev": true, "license": "MIT", "dependencies": { "tabbable": "^6.2.0" @@ -4529,6 +4628,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -4726,6 +4826,7 @@ "version": "9.0.5", "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "dev": true, "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -4749,6 +4850,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dev": true, "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" @@ -4762,12 +4864,14 @@ "version": "5.5.3", "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "dev": true, "license": "MIT" }, "node_modules/html-void-elements": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -4840,6 +4944,7 @@ "version": "4.1.16", "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", + "dev": true, "license": "MIT", "engines": { "node": ">=12.13" @@ -4938,7 +5043,7 @@ "version": "1.29.2", "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.2.tgz", "integrity": "sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==", - "devOptional": true, + "dev": true, "license": "MPL-2.0", "dependencies": { "detect-libc": "^2.0.3" @@ -5225,6 +5330,7 @@ "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, "license": "MIT", "optional": true, "peer": true, @@ -5248,6 +5354,7 @@ "version": "0.30.17", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" @@ -5281,6 +5388,7 @@ "version": "8.11.1", "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", + "dev": true, "license": "MIT" }, "node_modules/math-intrinsics": { @@ -5296,6 +5404,7 @@ "version": "13.2.0", "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "dev": true, "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -5317,6 +5426,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -5337,6 +5447,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -5353,6 +5464,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -5374,6 +5486,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -5390,6 +5503,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -5448,6 +5562,7 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-7.1.2.tgz", "integrity": "sha512-R1Pd9eF+MD5JYDDSPAp/q1ougKglm14uEkPMvQ/05RGmx6G9wvmLTrTI/Q5iPNJLYqNdsDQ7qTGIcNWR+FrHmA==", + "dev": true, "license": "MIT" }, "node_modules/minizlib": { @@ -5479,6 +5594,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "dev": true, "license": "MIT" }, "node_modules/mkdirp": { @@ -5718,6 +5834,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-3.1.1.tgz", "integrity": "sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==", + "dev": true, "license": "MIT", "dependencies": { "emoji-regex-xs": "^1.0.0", @@ -5768,6 +5885,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "dev": true, "license": "MIT" }, "node_modules/picocolors": { @@ -5855,6 +5973,7 @@ "version": "10.26.5", "resolved": "https://registry.npmjs.org/preact/-/preact-10.26.5.tgz", "integrity": "sha512-fmpDkgfGU6JYux9teDWLhj9mKN55tyepwYbxHgQuIxbWQzgFg5vk7Mrrtfx7xRxq798ynkY4DDDxZr235Kk+4w==", + "dev": true, "license": "MIT", "funding": { "type": "opencollective", @@ -5894,6 +6013,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz", "integrity": "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -6014,6 +6134,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz", "integrity": "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==", + "dev": true, "license": "MIT", "dependencies": { "regex-utilities": "^2.3.0" @@ -6023,6 +6144,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", + "dev": true, "license": "MIT", "dependencies": { "regex-utilities": "^2.3.0" @@ -6032,6 +6154,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", + "dev": true, "license": "MIT" }, "node_modules/resolve-from": { @@ -6057,6 +6180,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, "license": "MIT" }, "node_modules/rimraf": { @@ -6079,6 +6203,7 @@ "version": "4.40.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.0.tgz", "integrity": "sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==", + "dev": true, "license": "MIT", "dependencies": { "@types/estree": "1.0.7" @@ -6144,6 +6269,7 @@ "version": "2.17.3", "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz", "integrity": "sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==", + "dev": true, "license": "MIT", "peer": true }, @@ -6210,6 +6336,7 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/shiki/-/shiki-2.5.0.tgz", "integrity": "sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ==", + "dev": true, "license": "MIT", "dependencies": { "@shikijs/core": "2.5.0", @@ -6251,6 +6378,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -6261,6 +6389,7 @@ "version": "14.0.1", "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -6301,6 +6430,7 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dev": true, "license": "MIT", "dependencies": { "character-entities-html4": "^2.0.0", @@ -6350,6 +6480,7 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.2.tgz", "integrity": "sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==", + "dev": true, "license": "MIT", "dependencies": { "copy-anything": "^3.0.2" @@ -6362,6 +6493,7 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", + "dev": true, "license": "MIT" }, "node_modules/tailwind-merge": { @@ -6418,6 +6550,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -6483,6 +6616,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" @@ -6496,6 +6630,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" @@ -6509,6 +6644,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" @@ -6522,6 +6658,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -6537,6 +6674,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -6640,6 +6778,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -6654,6 +6793,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -6668,6 +6808,7 @@ "version": "5.4.18", "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.18.tgz", "integrity": "sha512-1oDcnEp3lVyHCuQ2YFelM4Alm2o91xNoMncRm1U7S+JdYfYOvbiGZ3/CxGttrOu2M/KcGz7cRC2DoNUA6urmMA==", + "dev": true, "license": "MIT", "dependencies": { "esbuild": "^0.21.3", @@ -6730,6 +6871,7 @@ "cpu": [ "ppc64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6746,6 +6888,7 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6762,6 +6905,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6778,6 +6922,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6794,6 +6939,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6810,6 +6956,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6826,6 +6973,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6842,6 +6990,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6858,6 +7007,7 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6874,6 +7024,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6890,6 +7041,7 @@ "cpu": [ "ia32" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6906,6 +7058,7 @@ "cpu": [ "loong64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6922,6 +7075,7 @@ "cpu": [ "mips64el" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6938,6 +7092,7 @@ "cpu": [ "ppc64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6954,6 +7109,7 @@ "cpu": [ "riscv64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6970,6 +7126,7 @@ "cpu": [ "s390x" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6986,6 +7143,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -7002,6 +7160,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -7018,6 +7177,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -7034,6 +7194,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -7050,6 +7211,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -7066,6 +7228,7 @@ "cpu": [ "ia32" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -7082,6 +7245,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -7095,6 +7259,7 @@ "version": "0.21.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, "hasInstallScript": true, "license": "MIT", "bin": { @@ -7133,6 +7298,7 @@ "version": "1.6.3", "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.6.3.tgz", "integrity": "sha512-fCkfdOk8yRZT8GD9BFqusW3+GggWYZ/rYncOfmgcDtP3ualNHCAg+Robxp2/6xfH1WwPHtGpPwv7mbA3qomtBw==", + "dev": true, "license": "MIT", "dependencies": { "@docsearch/css": "3.8.2", @@ -7174,6 +7340,7 @@ "version": "3.5.13", "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", + "dev": true, "license": "MIT", "dependencies": { "@vue/compiler-dom": "3.5.13", @@ -7260,26 +7427,12 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "dev": true, "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } - }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.3.0.tgz", - "integrity": "sha512-vHUQS4YVGJPmpjn7r5lEZuMhK5UQBNBRSB+iGDvJjaNk649pTIcRluDWNb9siunyLLiu/LDPHfvxBtNamyuLTw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } } } } diff --git a/package.json b/package.json index c2b3de3..bd6e221 100644 --- a/package.json +++ b/package.json @@ -6,10 +6,7 @@ "dev": "next dev --turbopack", "build": "next build", "start": "next start", - "lint": "next lint", - "docs:dev": "vitepress dev docs", - "docs:build": "vitepress build docs", - "docs:preview": "vitepress preview docs" + "lint": "next lint" }, "dependencies": { "@prisma/client": "^6.6.0", @@ -47,8 +44,7 @@ "react": "^19.0.0", "react-dom": "^19.0.0", "tailwind-merge": "^3.2.0", - "tw-animate-css": "^1.2.5", - "vitepress": "^1.6.3" + "tw-animate-css": "^1.2.5" }, "devDependencies": { "@tailwindcss/postcss": "^4", From df2c788b0bbf2ebdd2e112d7ed06fc3485808162 Mon Sep 17 00:00:00 2001 From: headlessdev Date: Mon, 21 Apr 2025 12:27:18 +0200 Subject: [PATCH 16/34] periodic monitoring data updates from the server API. --- app/api/servers/monitoring/route.ts | 35 +++++++++++++++++++++ app/dashboard/servers/Servers.tsx | 48 +++++++++++++++++++++++++++++ package-lock.json | 15 +++++++++ 3 files changed, 98 insertions(+) create mode 100644 app/api/servers/monitoring/route.ts diff --git a/app/api/servers/monitoring/route.ts b/app/api/servers/monitoring/route.ts new file mode 100644 index 0000000..e7c0f45 --- /dev/null +++ b/app/api/servers/monitoring/route.ts @@ -0,0 +1,35 @@ +import { NextResponse } from "next/server" +import { prisma } from "@/lib/prisma"; + + +export async function GET() { + try { + const servers = await prisma.server.findMany({ + select: { + id: true, + online: true, + cpuUsage: true, + ramUsage: true, + diskUsage: true, + } + }); + + const monitoringData = servers.map((server: { + id: number; + online: boolean; + cpuUsage: string | null; + ramUsage: string | null; + diskUsage: string | null; + }) => ({ + id: server.id, + online: server.online, + cpuUsage: server.cpuUsage ? parseInt(server.cpuUsage) : 0, + ramUsage: server.ramUsage ? parseInt(server.ramUsage) : 0, + diskUsage: server.diskUsage ? parseInt(server.diskUsage) : 0 + })); + + return NextResponse.json(monitoringData) + } catch (error) { + return new NextResponse("Internal Error", { status: 500 }) + } +} \ No newline at end of file diff --git a/app/dashboard/servers/Servers.tsx b/app/dashboard/servers/Servers.tsx index e67d457..fad3c4c 100644 --- a/app/dashboard/servers/Servers.tsx +++ b/app/dashboard/servers/Servers.tsx @@ -87,6 +87,14 @@ interface GetServersResponse { maxPage: number } +interface MonitoringData { + id: number + online: boolean + cpuUsage: number + ramUsage: number + diskUsage: number +} + export default function Dashboard() { const [host, setHost] = useState(false) const [hostServer, setHostServer] = useState(0) @@ -134,6 +142,8 @@ export default function Dashboard() { const [hostServers, setHostServers] = useState([]) const [isAddDialogOpen, setIsAddDialogOpen] = useState(false) + const [monitoringInterval, setMonitoringInterval] = useState(null); + useEffect(() => { const savedLayout = Cookies.get("layoutPreference-servers") const layout_bool = savedLayout === "grid" @@ -378,6 +388,44 @@ export default function Dashboard() { }, 0) } + const updateMonitoringData = async () => { + try { + const response = await axios.get("/api/servers/monitoring"); + const monitoringData = response.data; + + setServers(prevServers => + prevServers.map(server => { + const serverMonitoring = monitoringData.find(m => m.id === server.id); + if (serverMonitoring) { + return { + ...server, + online: serverMonitoring.online, + cpuUsage: serverMonitoring.cpuUsage, + ramUsage: serverMonitoring.ramUsage, + diskUsage: serverMonitoring.diskUsage + }; + } + return server; + }) + ); + } catch (error) { + console.error("Error updating monitoring data:", error); + } + }; + + // Set up monitoring interval + useEffect(() => { + updateMonitoringData(); + const interval = setInterval(updateMonitoringData, 5000); + setMonitoringInterval(interval); + + return () => { + if (monitoringInterval) { + clearInterval(monitoringInterval); + } + }; + }, []); + return ( diff --git a/package-lock.json b/package-lock.json index 0939860..e0b50e5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7433,6 +7433,21 @@ "type": "github", "url": "https://github.com/sponsors/wooorm" } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.3.0.tgz", + "integrity": "sha512-vHUQS4YVGJPmpjn7r5lEZuMhK5UQBNBRSB+iGDvJjaNk649pTIcRluDWNb9siunyLLiu/LDPHfvxBtNamyuLTw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } } } } From a1a5e5e2992a93ec6cfa1718ecfc8825d2ca54fc Mon Sep 17 00:00:00 2001 From: headlessdev Date: Mon, 21 Apr 2025 12:40:55 +0200 Subject: [PATCH 17/34] Updated Status indicator --- app/dashboard/applications/Applications.tsx | 16 ++------- app/dashboard/servers/Servers.tsx | 11 ++---- components/status-indicator.tsx | 38 +++++++++++++++++++++ 3 files changed, 43 insertions(+), 22 deletions(-) create mode 100644 components/status-indicator.tsx diff --git a/app/dashboard/applications/Applications.tsx b/app/dashboard/applications/Applications.tsx index 24f1fd2..8b0adc5 100644 --- a/app/dashboard/applications/Applications.tsx +++ b/app/dashboard/applications/Applications.tsx @@ -73,6 +73,7 @@ import { TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip" +import { StatusIndicator } from "@/components/status-indicator"; interface Application { id: number; @@ -440,20 +441,9 @@ export default function Dashboard() { >
-
-
-
+
-
+
{app.icon ? ( diff --git a/app/dashboard/servers/Servers.tsx b/app/dashboard/servers/Servers.tsx index fad3c4c..e332b07 100644 --- a/app/dashboard/servers/Servers.tsx +++ b/app/dashboard/servers/Servers.tsx @@ -58,7 +58,7 @@ import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" import { Checkbox } from "@/components/ui/checkbox" import { ScrollArea } from "@/components/ui/scroll-area" import { DynamicIcon } from "lucide-react/dynamic" - +import { StatusIndicator } from "@/components/status-indicator" interface Server { id: number name: string @@ -832,14 +832,7 @@ export default function Dashboard() { {server.monitoring && (
-
-
-
+
)}
diff --git a/components/status-indicator.tsx b/components/status-indicator.tsx new file mode 100644 index 0000000..25d5862 --- /dev/null +++ b/components/status-indicator.tsx @@ -0,0 +1,38 @@ +"use client" + +import { cn } from "@/lib/utils" +import { Badge } from "@/components/ui/badge" + +interface StatusIndicatorProps { + isOnline?: boolean + className?: string + showLabel?: boolean + pulseAnimation?: boolean +} + +export function StatusIndicator({ + isOnline = false, + className, + showLabel = true, + pulseAnimation = true, +}: StatusIndicatorProps) { + return ( + + + {isOnline && pulseAnimation && ( + + )} + + {showLabel && {isOnline ? "Online" : "Offline"}} + + ) +} From 809bf19eb4a2bde64cfd3f66115ff3aaeb9ac320 Mon Sep 17 00:00:00 2001 From: headlessdev Date: Mon, 21 Apr 2025 12:56:32 +0200 Subject: [PATCH 18/34] Grid/List View Pagination Fix --- app/dashboard/applications/Applications.tsx | 14 ++++++------ app/dashboard/servers/Servers.tsx | 24 ++++++++++----------- 2 files changed, 17 insertions(+), 21 deletions(-) diff --git a/app/dashboard/applications/Applications.tsx b/app/dashboard/applications/Applications.tsx index 8b0adc5..1b55709 100644 --- a/app/dashboard/applications/Applications.tsx +++ b/app/dashboard/applications/Applications.tsx @@ -116,21 +116,19 @@ export default function Dashboard() { const [currentPage, setCurrentPage] = useState(1); const [maxPage, setMaxPage] = useState(1); - const [itemsPerPage, setItemsPerPage] = useState(5); const [applications, setApplications] = useState([]); const [servers, setServers] = useState([]); - const [isGridLayout, setIsGridLayout] = useState(false); const [loading, setLoading] = useState(true); const [searchTerm, setSearchTerm] = useState(""); const [isSearching, setIsSearching] = useState(false); - useEffect(() => { - const savedLayout = Cookies.get("layoutPreference-app"); - const layout_bool = savedLayout === "grid"; - setIsGridLayout(layout_bool); - setItemsPerPage(layout_bool ? 15 : 5); - }, []); + const savedLayout = Cookies.get("layoutPreference-app"); + const initialIsGridLayout = savedLayout === "grid"; + const initialItemsPerPage = initialIsGridLayout ? 15 : 5; + + const [isGridLayout, setIsGridLayout] = useState(initialIsGridLayout); + const [itemsPerPage, setItemsPerPage] = useState(initialItemsPerPage); const toggleLayout = () => { const newLayout = !isGridLayout; diff --git a/app/dashboard/servers/Servers.tsx b/app/dashboard/servers/Servers.tsx index e332b07..a11faef 100644 --- a/app/dashboard/servers/Servers.tsx +++ b/app/dashboard/servers/Servers.tsx @@ -116,9 +116,7 @@ export default function Dashboard() { const [currentPage, setCurrentPage] = useState(1) const [maxPage, setMaxPage] = useState(1) - const [itemsPerPage, setItemsPerPage] = useState(4) const [servers, setServers] = useState([]) - const [isGridLayout, setIsGridLayout] = useState(false) const [loading, setLoading] = useState(true) const [editId, setEditId] = useState(null) @@ -144,23 +142,23 @@ export default function Dashboard() { const [monitoringInterval, setMonitoringInterval] = useState(null); - useEffect(() => { - const savedLayout = Cookies.get("layoutPreference-servers") - const layout_bool = savedLayout === "grid" - setIsGridLayout(layout_bool) - setItemsPerPage(layout_bool ? 6 : 4) - }, []) + const savedLayout = Cookies.get("layoutPreference-servers"); + const initialIsGridLayout = savedLayout === "grid"; + const initialItemsPerPage = initialIsGridLayout ? 6 : 4; + + const [isGridLayout, setIsGridLayout] = useState(initialIsGridLayout); + const [itemsPerPage, setItemsPerPage] = useState(initialItemsPerPage); const toggleLayout = () => { - const newLayout = !isGridLayout - setIsGridLayout(newLayout) + const newLayout = !isGridLayout; + setIsGridLayout(newLayout); Cookies.set("layoutPreference-servers", newLayout ? "grid" : "standard", { expires: 365, path: "/", sameSite: "strict", - }) - setItemsPerPage(newLayout ? 6 : 4) - } + }); + setItemsPerPage(newLayout ? 6 : 4); // Update itemsPerPage based on new layout + }; const add = async () => { try { From f47e22fe27c6cb961210ed77af91c02271cc2e81 Mon Sep 17 00:00:00 2001 From: headlessdev Date: Mon, 21 Apr 2025 13:11:37 +0200 Subject: [PATCH 19/34] Dashboard UI Fix --- app/dashboard/Dashboard.tsx | 183 +++++++++++++++++++++--------------- 1 file changed, 105 insertions(+), 78 deletions(-) diff --git a/app/dashboard/Dashboard.tsx b/app/dashboard/Dashboard.tsx index 3a38444..1275bbf 100644 --- a/app/dashboard/Dashboard.tsx +++ b/app/dashboard/Dashboard.tsx @@ -72,83 +72,94 @@ export default function Dashboard() {

Dashboard

- - -
-
- Servers - Physical and virtual servers overview -
- -
-
- -
- {/* Physical Servers */} -
-
- -
-
-
{serverCountNoVMs}
-

Physical Servers

-
-
- - {/* Virtual Machines */} -
-
- -
-
-
{serverCountOnlyVMs}
-

Virtual Servers

-
-
-
-
- - - -
- - - + +
- Applications - +
+ Servers + Physical and virtual servers overview +
+
- Manage your deployed applications
- -
{applicationCount}
-

Running applications

+ +
+ {/* Physical Servers */} +
+
+ +
+
+
{serverCountNoVMs}
+

Physical Servers

+
+
+ + {/* Virtual Machines */} +
+
+ +
+
+
{serverCountOnlyVMs}
+

Virtual Servers

+
+
+
- -
- - + +
- Uptime - +
+ Applications + Manage your deployed applications +
+
- Monitor your service availability
- + +
{applicationCount}
+

Running applications

+
+ + + +
+ + + +
+
+ Uptime + Monitor your service availability +
+ +
+
+
@@ -169,28 +180,44 @@ export default function Dashboard() {

Online applications

- - - - + +
- Network - +
+ Network + Manage network configuration +
+
- Manage network configuration
- +
{serverCountNoVMs + serverCountOnlyVMs + applicationCount}

Active connections

- -
From 49eeab4848b8c7efa0a32b48d99f12621e677149 Mon Sep 17 00:00:00 2001 From: headlessdev Date: Mon, 21 Apr 2025 13:15:30 +0200 Subject: [PATCH 20/34] Refactor settings model in Prisma schema to rename notification_text field to notification_text_application and add notification_text_server field for improved clarity and organization. --- .../migration.sql | 10 ++++++++++ prisma/schema.prisma | 3 ++- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 prisma/migrations/20250421111514_settings_notification_text_application_and_server/migration.sql diff --git a/prisma/migrations/20250421111514_settings_notification_text_application_and_server/migration.sql b/prisma/migrations/20250421111514_settings_notification_text_application_and_server/migration.sql new file mode 100644 index 0000000..d3498a8 --- /dev/null +++ b/prisma/migrations/20250421111514_settings_notification_text_application_and_server/migration.sql @@ -0,0 +1,10 @@ +/* + Warnings: + + - You are about to drop the column `notification_text` on the `settings` table. All the data in the column will be lost. + +*/ +-- AlterTable +ALTER TABLE "settings" DROP COLUMN "notification_text", +ADD COLUMN "notification_text_application" TEXT, +ADD COLUMN "notification_text_server" TEXT; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 7a08509..9e9bd76 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -56,7 +56,8 @@ model server { model settings { id Int @id @default(autoincrement()) uptime_checks Boolean @default(true) - notification_text String? + notification_text_application String? + notification_text_server String? } model user { From 21dd61c597ec3fe1bcca137feeb6cedd1be776ff Mon Sep 17 00:00:00 2001 From: headlessdev Date: Mon, 21 Apr 2025 13:22:40 +0200 Subject: [PATCH 21/34] Update notification text handling in API and dashboard to support separate application and server notification texts. --- .../settings/get_notification_text/route.ts | 6 +-- app/api/settings/notification_text/route.ts | 10 ++-- app/dashboard/settings/Settings.tsx | 54 +++++++++++++------ 3 files changed, 48 insertions(+), 22 deletions(-) diff --git a/app/api/settings/get_notification_text/route.ts b/app/api/settings/get_notification_text/route.ts index 65f3a1d..0c210e2 100644 --- a/app/api/settings/get_notification_text/route.ts +++ b/app/api/settings/get_notification_text/route.ts @@ -7,7 +7,7 @@ export async function POST(request: NextRequest) { // Check if there are any settings entries const existingSettings = await prisma.settings.findFirst(); if (!existingSettings) { - return NextResponse.json({ "notification_text": "" }); + return NextResponse.json({ "notification_text_application": "", "notification_text_server": "" }); } // If settings entry exists, fetch it @@ -15,10 +15,10 @@ export async function POST(request: NextRequest) { where: { id: existingSettings.id }, }); if (!settings) { - return NextResponse.json({ "notification_text": "" }); + return NextResponse.json({ "notification_text_application": "", "notification_text_server": "" }); } // Return the settings entry - return NextResponse.json({ "notification_text": settings.notification_text }); + return NextResponse.json({ "notification_text_application": settings.notification_text_application, "notification_text_server": settings.notification_text_server }); } catch (error: any) { return NextResponse.json({ error: error.message }, { status: 500 }); } diff --git a/app/api/settings/notification_text/route.ts b/app/api/settings/notification_text/route.ts index 0a37722..16ae26b 100644 --- a/app/api/settings/notification_text/route.ts +++ b/app/api/settings/notification_text/route.ts @@ -2,13 +2,14 @@ import { NextResponse, NextRequest } from "next/server"; import { prisma } from "@/lib/prisma"; interface AddRequest { - text: string; + text_application: string; + text_server: string; } export async function POST(request: NextRequest) { try { const body: AddRequest = await request.json(); - const { text } = body; + const { text_application, text_server } = body; // Check if there is already a settings entry const existingSettings = await prisma.settings.findFirst(); @@ -16,14 +17,15 @@ export async function POST(request: NextRequest) { // Update the existing settings entry const updatedSettings = await prisma.settings.update({ where: { id: existingSettings.id }, - data: { notification_text: text }, + data: { notification_text_application: text_application, notification_text_server: text_server }, }); return NextResponse.json({ message: "Success", updatedSettings }); } // If no settings entry exists, create a new one const settings = await prisma.settings.create({ data: { - notification_text: text, + notification_text_application: text_application, + notification_text_server: text_server, } }); diff --git a/app/dashboard/settings/Settings.tsx b/app/dashboard/settings/Settings.tsx index e006d2a..3e714e6 100644 --- a/app/dashboard/settings/Settings.tsx +++ b/app/dashboard/settings/Settings.tsx @@ -39,7 +39,8 @@ interface NotificationsResponse { notifications: any[] } interface NotificationResponse { - notification_text?: string + notification_text_application?: string + notification_text_server?: string } export default function Settings() { @@ -76,7 +77,8 @@ export default function Settings() { const [notifications, setNotifications] = useState([]) - const [notificationText, setNotificationText] = useState("") + const [notificationTextApplication, setNotificationTextApplication] = useState("") + const [notificationTextServer, setNotificationTextServer] = useState("") const changeEmail = async () => { setEmailErrorVisible(false) @@ -215,10 +217,15 @@ export default function Settings() { try { const response = await axios.post("/api/settings/get_notification_text", {}) if (response.status === 200) { - if (response.data.notification_text) { - setNotificationText(response.data.notification_text) + if (response.data.notification_text_application) { + setNotificationTextApplication(response.data.notification_text_application) } else { - setNotificationText("The application !name (!url) is now !status.") + setNotificationTextApplication("The application !name (!url) is now !status.") + } + if (response.data.notification_text_server) { + setNotificationTextServer(response.data.notification_text_server) + } else { + setNotificationTextServer("The server !name is now !status.") } } } catch (error: any) { @@ -229,7 +236,8 @@ export default function Settings() { const editNotificationText = async () => { try { const response = await axios.post("/api/settings/notification_text", { - text: notificationText, + text_application: notificationTextApplication, + text_server: notificationTextServer, }) } catch (error: any) { alert(error.response.data.error) @@ -613,12 +621,22 @@ export default function Settings() {
- +