From a681d4129e85e5d0ca50f61f5d168ab239589301 Mon Sep 17 00:00:00 2001 From: Harmit2101 Date: Fri, 14 Aug 2026 14:45:45 +0530 Subject: [PATCH] @ feat: secure admin access with Supabase RLS and production hardening Lock the admin dashboard to authenticated admin profiles, enforce row-level policies on jobs, reviews, contact messages, and profiles, and add the public-site, SEO, CI, and form validation needed to ship safely. @ --- .env.example | 2 + .github/workflows/ci.yml | 22 + .gitignore | 6 +- README.md | 135 +- e2e/smoke.spec.ts | 36 + eslint.config.js | 2 +- index.html | 4 +- package-lock.json | 1701 +---------------- package.json | 16 +- playwright.config.ts | 29 + public/og-image.png | Bin 0 -> 98526 bytes public/robots.txt | 2 + public/sitemap.xml | 72 +- server/tsconfig.json | 15 - sitemap.xml | 29 - src/App.tsx | 4 + src/admin/components/AdminNotice.tsx | 28 + src/admin/components/Sidebar.tsx | 4 +- src/admin/components/StatCard.tsx | 39 +- src/admin/components/Topbar.tsx | 2 + src/admin/modules/Applications.tsx | 174 +- src/admin/modules/ContactMessages.tsx | 27 +- src/admin/modules/DashboardHome.tsx | 40 +- src/admin/modules/Jobs.tsx | 58 +- src/admin/modules/Reviews.tsx | 26 +- src/admin/pages/AccessDenied.tsx | 32 + src/admin/pages/Login.tsx | 74 +- src/admin/routes/ProtectedRoute.tsx | 57 +- src/components/ContactCard.tsx | 215 ++- src/components/ErrorBoundary.tsx | 47 + src/components/Header.tsx | 5 +- src/components/JobCard.tsx | 7 +- src/components/LoaderOverlay.tsx | 3 +- src/components/RouteSeo.tsx | 8 + src/components/Seo.tsx | 54 + src/components/home/FaqSection.tsx | 6 +- src/components/home/ReviewForm.tsx | 234 ++- src/components/home/TestimonialsSection.tsx | 96 +- src/components/shared/TestimonialCarousel.tsx | 22 +- src/constants/seo.ts | 98 + src/context/GlobalLoaderContext.tsx | 1 + src/context/LogoAnimationContext.tsx | 1 + src/index.css | 7 +- src/lib/auth.ts | 24 + src/lib/errors.ts | 24 + src/lib/supabase.ts | 34 +- src/lib/validation.ts | 18 + src/main.tsx | 59 +- src/pages/Career.tsx | 92 +- src/pages/Home.tsx | 2 +- src/pages/NotFound.tsx | 41 + src/pages/PrivacyPolicy.tsx | 31 +- src/pages/TermsAndConditions.tsx | 2 +- src/types/admin.ts | 25 +- src/types/database.ts | 149 ++ supabase/README.md | 40 + .../20260814_production_security.sql | 283 +++ 57 files changed, 2047 insertions(+), 2217 deletions(-) create mode 100644 .env.example create mode 100644 .github/workflows/ci.yml create mode 100644 e2e/smoke.spec.ts create mode 100644 playwright.config.ts create mode 100644 public/og-image.png delete mode 100644 server/tsconfig.json delete mode 100644 sitemap.xml create mode 100644 src/admin/components/AdminNotice.tsx create mode 100644 src/admin/pages/AccessDenied.tsx create mode 100644 src/components/ErrorBoundary.tsx create mode 100644 src/components/RouteSeo.tsx create mode 100644 src/components/Seo.tsx create mode 100644 src/constants/seo.ts create mode 100644 src/lib/auth.ts create mode 100644 src/lib/errors.ts create mode 100644 src/lib/validation.ts create mode 100644 src/pages/NotFound.tsx create mode 100644 src/types/database.ts create mode 100644 supabase/README.md create mode 100644 supabase/migrations/20260814_production_security.sql diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..9c38242 --- /dev/null +++ b/.env.example @@ -0,0 +1,2 @@ +VITE_SUPABASE_URL=https://your-project-ref.supabase.co +VITE_SUPABASE_ANON_KEY=your-anon-public-key diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..26d6998 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,22 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + +jobs: + lint-and-build: + runs-on: ubuntu-latest + env: + VITE_SUPABASE_URL: https://example.supabase.co + VITE_SUPABASE_ANON_KEY: public-anon-placeholder + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 22 + cache: npm + - run: npm ci + - run: npm run lint + - run: npm run build diff --git a/.gitignore b/.gitignore index 2ed832a..1f83c94 100644 --- a/.gitignore +++ b/.gitignore @@ -38,5 +38,7 @@ pnpm-debug.log* *.sln *.sw? -# Vercel -.vercel +# Playwright +/playwright-report +/test-results +/blob-report diff --git a/README.md b/README.md index 09f6e8f..20e0a1d 100644 --- a/README.md +++ b/README.md @@ -1,76 +1,119 @@ # HM Coding -Official website and showcase platform for HM Coding — a modern software studio focused on building high-quality digital products. +Official website for HM Coding, a software studio that builds websites, web apps, mobile apps, AI integrations, and business systems. -## About Us +Live site: https://hm-coding.vercel.app +Canonical domain: https://hmcoding.com -HM Coding is a technology-driven firm specializing in: +## Tech stack -- Modern Websites -- Web Applications -- Mobile Applications -- AI Integrations -- CRM & Business Systems -- UI/UX Focused Digital Products +- React 19 +- TypeScript +- Vite 7 +- React Router +- Tailwind CSS 3 +- Framer Motion +- Supabase Auth + PostgreSQL +- Vercel (static SPA) -We build scalable, visually polished, and performance-focused solutions for startups, businesses, and growing brands. +There is no Express, MongoDB, or Render backend in this repository. ---- +## Local setup -## Tech Stack +```bash +npm install +cp .env.example .env +``` -Frontend: +Fill `.env` with your Supabase project URL and anon key, then: -- React -- TypeScript -- Tailwind CSS -- Framer Motion -- Vite +```bash +npm run dev +``` -Backend: +Other commands: -- Node.js -- Express -- TypeScript +```bash +npm run lint +npm run build +npm run preview +npm run test:e2e +``` + +## Environment variables -Deployment: +Frontend variables (Vite, must be prefixed with `VITE_`): -- Vercel -- Render +| Variable | Required | Purpose | +| --- | --- | --- | +| `VITE_SUPABASE_URL` | Yes | Supabase project URL | +| `VITE_SUPABASE_ANON_KEY` | Yes | Supabase anon/public key | ---- +Never put a Supabase service-role key in frontend code or Vercel `VITE_*` settings. -## Features +For production, set the same variables in the Vercel project. -- Responsive modern UI -- Dark / Light mode support -- Animated sections -- Showcase project pages -- Careers section -- Contact integration -- SEO-friendly structure -- Reusable component architecture +## Data and admin ---- +Supabase tables used by the app: -## Live Website +- `jobs` — public careers listings +- `reviews` — testimonials, shown only when approved +- `contact_messages` — contact, internship, startup, and demo inquiries +- `profiles` — admin authorization (`role = admin` or `user`) -https://hm-coding.vercel.app +Apply SQL from `supabase/migrations/20260814_production_security.sql`, then promote an Auth user: ---- +```sql +update public.profiles +set role = 'admin', updated_at = now() +where id = ''; +``` -## Development +See `supabase/README.md` for the access model. -Install dependencies: +Admin portal: `/hm-portal-admin-dashboard` +Shortcut on the public site: `Ctrl+Shift+H` -```bash -npm install +Route guards are UX only. Row Level Security is authoritative. + +Job applications use each listing's external `apply_url`. Internship and startup inquiries are stored as contact messages. + +## Public routes + +- `/` Home +- `/about` +- `/services` +- `/projects` +- `/projects/:slug` product demos or project pages +- `/careers` +- `/terms` +- `/privacy` + +Unknown routes render a branded 404 page. + +## Project structure + +``` +src/ React application +src/admin/ Admin portal +src/components/ Shared UI +src/pages/ Public routes +src/lib/ Supabase client, auth, validation +supabase/migrations Versioned SQL +public/ Static assets, robots.txt, sitemap.xml ``` -Vision +## Deployment + +Vercel builds with `npm run build` (`tsc -b && vite build`) and publishes `dist`. + +`vercel.json` rewrites all paths to `index.html` so React Router deep links work. + +## Design -We aim to create modern software experiences that combine clean design, strong engineering, and future-ready technologies. +The site is a dark premium interface. There is no light-mode toggle. -License +## License Private project — HM Coding diff --git a/e2e/smoke.spec.ts b/e2e/smoke.spec.ts new file mode 100644 index 0000000..6117cdd --- /dev/null +++ b/e2e/smoke.spec.ts @@ -0,0 +1,36 @@ +import { expect, test } from "@playwright/test"; + +const publicRoutes = [ + "/", + "/about", + "/services", + "/projects", + "/careers", + "/terms", + "/privacy", +]; + +for (const path of publicRoutes) { + test(`loads ${path}`, async ({ page }) => { + const response = await page.goto(path); + expect(response?.ok()).toBeTruthy(); + await expect(page.locator("header, h1").first()).toBeVisible(); + }); +} + +test("unknown route shows branded 404", async ({ page }) => { + await page.goto("/this-page-does-not-exist"); + await expect(page.getByRole("heading", { name: /does not exist/i })).toBeVisible(); + await expect(page.getByRole("link", { name: /return home/i })).toBeVisible(); +}); + +test("admin login route is reachable", async ({ page }) => { + await page.goto("/hm-portal-admin-dashboard/login"); + await expect(page.getByRole("heading", { name: /admin login/i })).toBeVisible(); + await expect(page.getByLabel(/email/i)).toBeVisible(); +}); + +test("protected admin route redirects unauthenticated users", async ({ page }) => { + await page.goto("/hm-portal-admin-dashboard"); + await expect(page).toHaveURL(/hm-portal-admin-dashboard\/login/); +}); diff --git a/eslint.config.js b/eslint.config.js index b19330b..9d361dc 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -6,7 +6,7 @@ import tseslint from 'typescript-eslint' import { defineConfig, globalIgnores } from 'eslint/config' export default defineConfig([ - globalIgnores(['dist']), + globalIgnores(['dist', 'e2e', 'playwright.config.ts']), { files: ['**/*.{ts,tsx}'], extends: [ diff --git a/index.html b/index.html index ed1db6c..1656d16 100644 --- a/index.html +++ b/index.html @@ -26,7 +26,7 @@ property="og:description" content="Empowering businesses through custom-built websites, web apps, and mobile apps — with future-ready AI integration." /> - + @@ -39,7 +39,7 @@ property="twitter:description" content="Empowering businesses through custom-built web and mobile solutions." /> - + diff --git a/package-lock.json b/package-lock.json index 6dab1f3..bcbe581 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,15 +9,8 @@ "version": "0.0.0", "dependencies": { "@supabase/supabase-js": "^2.110.0", - "@types/cors": "^2.8.19", - "@types/express": "^5.0.6", - "@types/node": "^24.10.11", - "cors": "^2.8.6", - "dotenv": "^17.2.4", - "express": "^5.2.1", "framer-motion": "^12.23.24", "lucide-react": "^0.469.0", - "mongoose": "^9.1.6", "react": "^19.1.1", "react-dom": "^19.1.1", "react-icons": "^5.7.0", @@ -26,6 +19,7 @@ "devDependencies": { "@eslint/js": "^9.36.0", "@playwright/test": "^1.61.1", + "@types/node": "^24.10.11", "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", @@ -34,12 +28,8 @@ "eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-react-refresh": "^0.4.22", "globals": "^16.4.0", - "nodemon": "^3.1.11", "postcss": "^8.4.31", - "rollup-plugin-visualizer": "^7.0.1", "tailwindcss": "^3.3.3", - "ts-node": "^10.9.2", - "tsx": "^4.21.0", "typescript": "~5.9.3", "typescript-eslint": "^8.45.0", "vite": "^7.1.7" @@ -346,6 +336,8 @@ "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@jridgewell/trace-mapping": "0.3.9" }, @@ -359,6 +351,8 @@ "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -1083,15 +1077,6 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@mongodb-js/saslprep": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.4.5.tgz", - "integrity": "sha512-k64Lbyb7ycCSXHSLzxVdb2xsKGPMvYZfCICXvDsI8Z65CeWQzTEKS4YmGbnqw+U9RBvLPTsB6UCmwkgsDTGWIw==", - "license": "MIT", - "dependencies": { - "sparse-bitfield": "^3.0.3" - } - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1561,28 +1546,36 @@ "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "peer": true }, "node_modules/@tsconfig/node12": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "peer": true }, "node_modules/@tsconfig/node14": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "peer": true }, "node_modules/@tsconfig/node16": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "peer": true }, "node_modules/@types/babel__core": { "version": "7.20.5", @@ -1629,34 +1622,6 @@ "@babel/types": "^7.28.2" } }, - "node_modules/@types/body-parser": { - "version": "1.19.6", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", - "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", - "license": "MIT", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/cors": { - "version": "2.8.19", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz", - "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", @@ -1664,35 +1629,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/express": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.6.tgz", - "integrity": "sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==", - "license": "MIT", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^5.0.0", - "@types/serve-static": "^2" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz", - "integrity": "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/http-errors": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", - "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", - "license": "MIT" - }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -1704,23 +1640,12 @@ "version": "24.10.11", "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.11.tgz", "integrity": "sha512-/Af7O8r1frCVgOz0I62jWUtMohJ0/ZQU/ZoketltOJPZpnb17yoNc9BSoVuV9qlaIXJiPNOpsfq4ByFajSArNQ==", + "dev": true, "license": "MIT", "dependencies": { "undici-types": "~7.16.0" } }, - "node_modules/@types/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", - "license": "MIT" - }, - "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "license": "MIT" - }, "node_modules/@types/react": { "version": "19.2.2", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.2.tgz", @@ -1741,40 +1666,6 @@ "@types/react": "^19.2.0" } }, - "node_modules/@types/send": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", - "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz", - "integrity": "sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==", - "license": "MIT", - "dependencies": { - "@types/http-errors": "*", - "@types/node": "*" - } - }, - "node_modules/@types/webidl-conversions": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", - "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==", - "license": "MIT" - }, - "node_modules/@types/whatwg-url": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-13.0.0.tgz", - "integrity": "sha512-N8WXpbE6Wgri7KUSvrmQcqrMllKZ9uxkYWMt+mCSGwNc0Hsw9VQTW7ApqI4XNrx6/SaM2QQJCzMPDEXE058s+Q==", - "license": "MIT", - "dependencies": { - "@types/webidl-conversions": "*" - } - }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "8.46.2", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.2.tgz", @@ -2067,19 +1958,6 @@ "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" } }, - "node_modules/accepts": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", - "license": "MIT", - "dependencies": { - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", @@ -2109,6 +1987,8 @@ "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "acorn": "^8.11.0" }, @@ -2261,30 +2141,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/body-parser": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", - "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", - "license": "MIT", - "dependencies": { - "bytes": "^3.1.2", - "content-type": "^1.0.5", - "debug": "^4.4.3", - "http-errors": "^2.0.0", - "iconv-lite": "^0.7.0", - "on-finished": "^2.4.1", - "qs": "^6.14.1", - "raw-body": "^3.0.1", - "type-is": "^2.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -2343,69 +2199,6 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/bson": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/bson/-/bson-7.2.0.tgz", - "integrity": "sha512-YCEo7KjMlbNlyHhz7zAZNDpIpQbd+wOEHJYezv0nMYTn4x31eIUM2yomNNubclAt63dObUzKHWsBLJ9QcZNSnQ==", - "license": "Apache-2.0", - "engines": { - "node": ">=20.19.0" - } - }, - "node_modules/bundle-name": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", - "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "run-applescript": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -2502,77 +2295,6 @@ "node": ">= 6" } }, - "node_modules/cliui": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", - "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^7.2.0", - "strip-ansi": "^7.1.0", - "wrap-ansi": "^9.0.0" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/cliui/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", - "dev": true, - "license": "MIT" - }, - "node_modules/cliui/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", - "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -2610,28 +2332,6 @@ "dev": true, "license": "MIT" }, - "node_modules/content-disposition": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", - "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -2648,38 +2348,14 @@ "node": ">=18" } }, - "node_modules/cookie-signature": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", - "license": "MIT", - "engines": { - "node": ">=6.6.0" - } - }, - "node_modules/cors": { - "version": "2.8.6", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", - "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", - "license": "MIT", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "peer": true }, "node_modules/cross-spawn": { "version": "7.0.6", @@ -2720,6 +2396,7 @@ "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -2740,58 +2417,6 @@ "dev": true, "license": "MIT" }, - "node_modules/default-browser": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", - "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "bundle-name": "^4.1.0", - "default-browser-id": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser-id": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", - "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", @@ -2805,6 +2430,8 @@ "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", "dev": true, "license": "BSD-3-Clause", + "optional": true, + "peer": true, "engines": { "node": ">=0.3.1" } @@ -2816,32 +2443,6 @@ "dev": true, "license": "MIT" }, - "node_modules/dotenv": { - "version": "17.2.4", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", - "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -2849,12 +2450,6 @@ "dev": true, "license": "MIT" }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "license": "MIT" - }, "node_modules/electron-to-chromium": { "version": "1.5.238", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.238.tgz", @@ -2869,45 +2464,6 @@ "dev": true, "license": "MIT" }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/esbuild": { "version": "0.25.11", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.11.tgz", @@ -2960,12 +2516,6 @@ "node": ">=6" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "license": "MIT" - }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -3156,67 +2706,6 @@ "node": ">=0.10.0" } }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", - "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", - "license": "MIT", - "dependencies": { - "accepts": "^2.0.0", - "body-parser": "^2.2.1", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", - "cookie": "^0.7.1", - "cookie-signature": "^1.2.1", - "debug": "^4.4.0", - "depd": "^2.0.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "finalhandler": "^2.1.0", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "merge-descriptors": "^2.0.0", - "mime-types": "^3.0.0", - "on-finished": "^2.4.1", - "once": "^1.4.0", - "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", - "range-parser": "^1.2.1", - "router": "^2.2.0", - "send": "^1.1.0", - "serve-static": "^2.2.0", - "statuses": "^2.0.1", - "type-is": "^2.0.1", - "vary": "^1.1.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/express/node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -3304,27 +2793,6 @@ "node": ">=8" } }, - "node_modules/finalhandler": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", - "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1" - }, - "engines": { - "node": ">= 18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -3380,15 +2848,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/fraction.js": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", @@ -3430,15 +2889,6 @@ } } }, - "node_modules/fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -3458,6 +2908,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3473,72 +2924,14 @@ "node": ">=6.9.0" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-east-asian-width": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz", - "integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/get-tsconfig": { "version": "4.13.6", "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.6.tgz", "integrity": "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "resolve-pkg-maps": "^1.0.0" }, @@ -3619,18 +3012,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -3648,22 +3029,11 @@ "node": ">=8" } }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -3672,26 +3042,6 @@ "node": ">= 0.4" } }, - "node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", - "license": "MIT", - "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/iceberg-js": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/iceberg-js/-/iceberg-js-0.8.1.tgz", @@ -3701,22 +3051,6 @@ "node": ">=20.0.0" } }, - "node_modules/iconv-lite": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", - "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -3727,13 +3061,6 @@ "node": ">= 4" } }, - "node_modules/ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", - "dev": true, - "license": "ISC" - }, "node_modules/import-fresh": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", @@ -3761,21 +3088,6 @@ "node": ">=0.8.19" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -3805,22 +3117,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "dev": true, - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -3854,38 +3150,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-in-ssh": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-in-ssh/-/is-in-ssh-1.0.0.tgz", - "integrity": "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -3896,28 +3160,6 @@ "node": ">=0.12.0" } }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "license": "MIT" - }, - "node_modules/is-wsl": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", - "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-inside-container": "^1.0.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -4018,15 +3260,6 @@ "node": ">=6" } }, - "node_modules/kareem": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-3.0.0.tgz", - "integrity": "sha512-RKhaOBSPN8L7y4yAgNhDT2602G5FD6QbOIISbjN9D6mjHPeqeg7K+EB5IGSU5o81/X2Gzm3ICnAvQW3x3OP8HA==", - "license": "Apache-2.0", - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -4115,43 +3348,9 @@ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true, - "license": "ISC" - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/media-typer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/memory-pager": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", - "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "license": "MIT" - }, - "node_modules/merge-descriptors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", - "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "ISC", + "optional": true, + "peer": true }, "node_modules/merge2": { "version": "1.4.1", @@ -4177,31 +3376,6 @@ "node": ">=8.6" } }, - "node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", - "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", - "license": "MIT", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -4225,86 +3399,6 @@ "node": ">=16 || 14 >=14.17" } }, - "node_modules/mongodb": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-7.0.0.tgz", - "integrity": "sha512-vG/A5cQrvGGvZm2mTnCSz1LUcbOPl83hfB6bxULKQ8oFZauyox/2xbZOoGNl+64m8VBrETkdGCDBdOsCr3F3jg==", - "license": "Apache-2.0", - "dependencies": { - "@mongodb-js/saslprep": "^1.3.0", - "bson": "^7.0.0", - "mongodb-connection-string-url": "^7.0.0" - }, - "engines": { - "node": ">=20.19.0" - }, - "peerDependencies": { - "@aws-sdk/credential-providers": "^3.806.0", - "@mongodb-js/zstd": "^7.0.0", - "gcp-metadata": "^7.0.1", - "kerberos": "^7.0.0", - "mongodb-client-encryption": ">=7.0.0 <7.1.0", - "snappy": "^7.3.2", - "socks": "^2.8.6" - }, - "peerDependenciesMeta": { - "@aws-sdk/credential-providers": { - "optional": true - }, - "@mongodb-js/zstd": { - "optional": true - }, - "gcp-metadata": { - "optional": true - }, - "kerberos": { - "optional": true - }, - "mongodb-client-encryption": { - "optional": true - }, - "snappy": { - "optional": true - }, - "socks": { - "optional": true - } - } - }, - "node_modules/mongodb-connection-string-url": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-7.0.1.tgz", - "integrity": "sha512-h0AZ9A7IDVwwHyMxmdMXKy+9oNlF0zFoahHiX3vQ8e3KFcSP3VmsmfvtRSuLPxmyv2vjIDxqty8smTgie/SNRQ==", - "license": "Apache-2.0", - "dependencies": { - "@types/whatwg-url": "^13.0.0", - "whatwg-url": "^14.1.0" - }, - "engines": { - "node": ">=20.19.0" - } - }, - "node_modules/mongoose": { - "version": "9.1.6", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-9.1.6.tgz", - "integrity": "sha512-ZrtgRsJKtW3od36TVXtAnrNHOO3rqhsqfVut6IzyWyJeLLeLTqW66qej/0qB37GZd5jL06nHfAceTikkfnSqbA==", - "license": "MIT", - "dependencies": { - "kareem": "3.0.0", - "mongodb": "~7.0", - "mpath": "0.9.0", - "mquery": "6.0.0", - "ms": "2.1.3", - "sift": "17.1.3" - }, - "engines": { - "node": ">=20.19.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mongoose" - } - }, "node_modules/motion-dom": { "version": "12.23.23", "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.23.23.tgz", @@ -4320,28 +3414,11 @@ "integrity": "sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==", "license": "MIT" }, - "node_modules/mpath": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", - "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", - "license": "MIT", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mquery": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-6.0.0.tgz", - "integrity": "sha512-b2KQNsmgtkscfeDgkYMcWGn9vZI9YoXh802VDEwE6qc50zxBFQ0Oo8ROkawbPAsXCY1/Z1yp0MagqsZStPWJjw==", - "license": "MIT", - "engines": { - "node": ">=20.19.0" - } - }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, "license": "MIT" }, "node_modules/mz": { @@ -4382,15 +3459,6 @@ "dev": true, "license": "MIT" }, - "node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/node-releases": { "version": "2.0.26", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.26.tgz", @@ -4398,71 +3466,6 @@ "dev": true, "license": "MIT" }, - "node_modules/nodemon": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.11.tgz", - "integrity": "sha512-is96t8F/1//UHAjNPHpbsNY46ELPpftGUoSVNXwUfMk/qdjSylYrWSu1XavVTBOn526kFiOR733ATgNBCQyH0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "chokidar": "^3.5.2", - "debug": "^4", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.1.2", - "pstree.remy": "^1.1.8", - "semver": "^7.5.3", - "simple-update-notifier": "^2.0.0", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5" - }, - "bin": { - "nodemon": "bin/nodemon.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nodemon" - } - }, - "node_modules/nodemon/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/nodemon/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/nodemon/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -4487,6 +3490,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -4502,60 +3506,6 @@ "node": ">= 6" } }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/open": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/open/-/open-11.0.0.tgz", - "integrity": "sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==", - "dev": true, - "license": "MIT", - "dependencies": { - "default-browser": "^5.4.0", - "define-lazy-prop": "^3.0.0", - "is-in-ssh": "^1.0.0", - "is-inside-container": "^1.0.0", - "powershell-utils": "^0.1.0", - "wsl-utils": "^0.3.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -4626,15 +3576,6 @@ "node": ">=6" } }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -4686,16 +3627,6 @@ "dev": true, "license": "ISC" }, - "node_modules/path-to-regexp": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", - "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -4952,19 +3883,6 @@ "dev": true, "license": "MIT" }, - "node_modules/powershell-utils": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/powershell-utils/-/powershell-utils-0.1.0.tgz", - "integrity": "sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -4975,50 +3893,16 @@ "node": ">= 0.8.0" } }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", - "dev": true, - "license": "MIT" - }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/qs": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", - "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -5036,33 +3920,9 @@ { "type": "consulting", "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", - "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", - "license": "MIT", - "dependencies": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.7.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.10" - } + } + ], + "license": "MIT" }, "node_modules/react": { "version": "19.2.0", @@ -5202,6 +4062,8 @@ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "funding": { "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } @@ -5259,79 +4121,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/rollup-plugin-visualizer": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-7.0.1.tgz", - "integrity": "sha512-UJUT4+1Ho4OcWmPYU3sYXgUqI8B8Ayfe06MX7y0qCJ1K8aGoKtR/NDd/2nZqM7ADkrzny+I99Ul7GgyoiVNAgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "open": "^11.0.0", - "picomatch": "^4.0.2", - "source-map": "^0.7.4", - "yargs": "^18.0.0" - }, - "bin": { - "rollup-plugin-visualizer": "dist/bin/cli.js" - }, - "engines": { - "node": ">=22" - }, - "peerDependencies": { - "rolldown": "1.x || ^1.0.0-beta || ^1.0.0-rc", - "rollup": "2.x || 3.x || 4.x" - }, - "peerDependenciesMeta": { - "rolldown": { - "optional": true - }, - "rollup": { - "optional": true - } - } - }, - "node_modules/rollup-plugin-visualizer/node_modules/picomatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", - "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/router": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", - "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "depd": "^2.0.0", - "is-promise": "^4.0.0", - "parseurl": "^1.3.3", - "path-to-regexp": "^8.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/run-applescript": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", - "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -5356,12 +4145,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, "node_modules/scheduler": { "version": "0.27.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", @@ -5378,63 +4161,12 @@ "semver": "bin/semver.js" } }, - "node_modules/send": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", - "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.3", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "fresh": "^2.0.0", - "http-errors": "^2.0.1", - "mime-types": "^3.0.2", - "ms": "^2.1.3", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "statuses": "^2.0.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/serve-static": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", - "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", - "license": "MIT", - "dependencies": { - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "parseurl": "^1.3.3", - "send": "^1.2.0" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/set-cookie-parser": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", "license": "MIT" }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -5458,84 +4190,6 @@ "node": ">=8" } }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/sift": { - "version": "17.1.3", - "resolved": "https://registry.npmjs.org/sift/-/sift-17.1.3.tgz", - "integrity": "sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ==", - "license": "MIT" - }, "node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", @@ -5549,42 +4203,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/simple-update-notifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", - "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/simple-update-notifier/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/source-map": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", - "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 12" - } - }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -5595,24 +4213,6 @@ "node": ">=0.10.0" } }, - "node_modules/sparse-bitfield": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", - "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", - "license": "MIT", - "dependencies": { - "memory-pager": "^1.0.2" - } - }, - "node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", @@ -5901,37 +4501,6 @@ "node": ">=8.0" } }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/touch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", - "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", - "dev": true, - "license": "ISC", - "bin": { - "nodetouch": "bin/nodetouch.js" - } - }, - "node_modules/tr46": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", - "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==", - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/ts-api-utils": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", @@ -5958,6 +4527,8 @@ "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -6001,7 +4572,9 @@ "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "peer": true }, "node_modules/tslib": { "version": "2.8.1", @@ -6015,6 +4588,8 @@ "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "esbuild": "~0.27.0", "get-tsconfig": "^4.7.5" @@ -6042,6 +4617,7 @@ "os": [ "aix" ], + "peer": true, "engines": { "node": ">=18" } @@ -6059,6 +4635,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=18" } @@ -6076,6 +4653,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=18" } @@ -6093,6 +4671,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=18" } @@ -6110,6 +4689,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=18" } @@ -6127,6 +4707,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=18" } @@ -6144,6 +4725,7 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -6161,6 +4743,7 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -6178,6 +4761,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -6195,6 +4779,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -6212,6 +4797,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -6229,6 +4815,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -6246,6 +4833,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -6263,6 +4851,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -6280,6 +4869,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -6297,6 +4887,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -6314,6 +4905,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -6331,6 +4923,7 @@ "os": [ "netbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -6348,6 +4941,7 @@ "os": [ "netbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -6365,6 +4959,7 @@ "os": [ "openbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -6382,6 +4977,7 @@ "os": [ "openbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -6399,6 +4995,7 @@ "os": [ "openharmony" ], + "peer": true, "engines": { "node": ">=18" } @@ -6416,6 +5013,7 @@ "os": [ "sunos" ], + "peer": true, "engines": { "node": ">=18" } @@ -6433,6 +5031,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=18" } @@ -6450,6 +5049,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=18" } @@ -6467,6 +5067,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=18" } @@ -6478,6 +5079,8 @@ "dev": true, "hasInstallScript": true, "license": "MIT", + "optional": true, + "peer": true, "bin": { "esbuild": "bin/esbuild" }, @@ -6526,20 +5129,6 @@ "node": ">= 0.8.0" } }, - "node_modules/type-is": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", - "license": "MIT", - "dependencies": { - "content-type": "^1.0.5", - "media-typer": "^1.1.0", - "mime-types": "^3.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/typescript": { "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", @@ -6578,28 +5167,13 @@ "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", - "dev": true, - "license": "MIT" - }, "node_modules/undici-types": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "dev": true, "license": "MIT" }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/update-browserslist-db": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", @@ -6653,16 +5227,9 @@ "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", "dev": true, - "license": "MIT" - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "license": "MIT", - "engines": { - "node": ">= 0.8" - } + "optional": true, + "peer": true }, "node_modules/vite": { "version": "7.1.11", @@ -6799,28 +5366,6 @@ "node": "^10 || ^12 || >=14" } }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-url": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", - "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", - "license": "MIT", - "dependencies": { - "tr46": "^5.1.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -6942,39 +5487,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC" - }, - "node_modules/wsl-utils": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.3.1.tgz", - "integrity": "sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-wsl": "^3.1.0", - "powershell-utils": "^0.1.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -6995,65 +5507,14 @@ "node": ">= 14.6" } }, - "node_modules/yargs": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", - "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^9.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "string-width": "^7.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^22.0.0" - }, - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=23" - } - }, - "node_modules/yargs-parser": { - "version": "22.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", - "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=23" - } - }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", - "dev": true, - "license": "MIT" - }, - "node_modules/yargs/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "engines": { "node": ">=6" } diff --git a/package.json b/package.json index 808237e..47660a5 100644 --- a/package.json +++ b/package.json @@ -8,21 +8,12 @@ "build": "tsc -b && vite build", "lint": "eslint .", "preview": "vite preview", - "server:dev": "nodemon --watch server --exec tsx server/index.ts", - "build:server": "tsc -p server/tsconfig.json", - "server": "node dist/index.js" + "test:e2e": "playwright test" }, "dependencies": { "@supabase/supabase-js": "^2.110.0", - "@types/cors": "^2.8.19", - "@types/express": "^5.0.6", - "@types/node": "^24.10.11", - "cors": "^2.8.6", - "dotenv": "^17.2.4", - "express": "^5.2.1", "framer-motion": "^12.23.24", "lucide-react": "^0.469.0", - "mongoose": "^9.1.6", "react": "^19.1.1", "react-dom": "^19.1.1", "react-icons": "^5.7.0", @@ -31,6 +22,7 @@ "devDependencies": { "@eslint/js": "^9.36.0", "@playwright/test": "^1.61.1", + "@types/node": "^24.10.11", "@types/react": "^19.1.16", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.4", @@ -39,12 +31,8 @@ "eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-react-refresh": "^0.4.22", "globals": "^16.4.0", - "nodemon": "^3.1.11", "postcss": "^8.4.31", - "rollup-plugin-visualizer": "^7.0.1", "tailwindcss": "^3.3.3", - "ts-node": "^10.9.2", - "tsx": "^4.21.0", "typescript": "~5.9.3", "typescript-eslint": "^8.45.0", "vite": "^7.1.7" diff --git a/playwright.config.ts b/playwright.config.ts new file mode 100644 index 0000000..d4c2c9f --- /dev/null +++ b/playwright.config.ts @@ -0,0 +1,29 @@ +import { defineConfig, devices } from "@playwright/test"; + +export default defineConfig({ + testDir: "./e2e", + timeout: 30_000, + fullyParallel: true, + forbidOnly: !!process.env.CI, + retries: process.env.CI ? 1 : 0, + use: { + baseURL: "http://127.0.0.1:4173", + trace: "on-first-retry", + }, + webServer: { + command: "npm run build && npm run preview -- --host 127.0.0.1 --port 4173", + url: "http://127.0.0.1:4173", + reuseExistingServer: !process.env.CI, + timeout: 120_000, + env: { + VITE_SUPABASE_URL: process.env.VITE_SUPABASE_URL || "https://example.supabase.co", + VITE_SUPABASE_ANON_KEY: process.env.VITE_SUPABASE_ANON_KEY || "public-anon-placeholder", + }, + }, + projects: [ + { + name: "chromium", + use: { ...devices["Desktop Chrome"] }, + }, + ], +}); diff --git a/public/og-image.png b/public/og-image.png new file mode 100644 index 0000000000000000000000000000000000000000..5d804d24b727d2f3b8164c2a59ca6a6d7b7d82cb GIT binary patch literal 98526 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 V0OqnID+>Ss002ovPDHLkV1k1D{Ote$ literal 0 HcmV?d00001 diff --git a/public/robots.txt b/public/robots.txt index a6eebed..015b344 100644 --- a/public/robots.txt +++ b/public/robots.txt @@ -1,4 +1,6 @@ User-agent: * Allow: / +Disallow: /hm-portal-admin-dashboard +Disallow: /hm-portal-admin-dashboard/ Sitemap: https://hmcoding.com/sitemap.xml diff --git a/public/sitemap.xml b/public/sitemap.xml index 09b5fe3..490a8c0 100644 --- a/public/sitemap.xml +++ b/public/sitemap.xml @@ -2,26 +2,80 @@ https://hmcoding.com/ - 2025-11-06T00:00:00+05:30 + 2026-08-14 weekly 1.00 - https://hmcoding.com/services/ - 2025-11-06T00:00:00+05:30 + https://hmcoding.com/about + 2026-08-14 monthly + 0.80 + + + https://hmcoding.com/services + 2026-08-14 + monthly + 0.90 + + + https://hmcoding.com/projects + 2026-08-14 + weekly 0.90 - https://hmcoding.com/projects/ - 2025-11-06T00:00:00+05:30 + https://hmcoding.com/projects/convertly + 2026-08-14 + monthly + 0.70 + + + https://hmcoding.com/projects/gym-management + 2026-08-14 + monthly + 0.70 + + + https://hmcoding.com/projects/client-reminder-crm + 2026-08-14 + monthly + 0.70 + + + https://hmcoding.com/projects/inventory-system + 2026-08-14 + monthly + 0.70 + + + https://hmcoding.com/projects/real-estate-crm + 2026-08-14 + monthly + 0.70 + + + https://hmcoding.com/projects/restaurant-pos + 2026-08-14 monthly - 0.85 + 0.70 - https://hmcoding.com/about/ - 2025-11-06T00:00:00+05:30 + https://hmcoding.com/careers + 2026-08-14 + weekly + 0.75 + + + https://hmcoding.com/terms + 2026-08-14 yearly - 0.80 + 0.30 + + + https://hmcoding.com/privacy + 2026-08-14 + yearly + 0.30 diff --git a/server/tsconfig.json b/server/tsconfig.json deleted file mode 100644 index b30a50f..0000000 --- a/server/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2022", - "module": "NodeNext", - "moduleResolution": "NodeNext", - "rootDir": ".", - "outDir": "../dist", - "esModuleInterop": true, - "strict": true, - "skipLibCheck": true, - "forceConsistentCasingInFileNames": true, - "types": ["node"] - }, - "include": ["**/*.ts"] -} \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml deleted file mode 100644 index bd6728e..0000000 --- a/sitemap.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - https://hmcoding.com/ - 2025-11-06 - 1.00 - - - - https://hmcoding.com/services - 2025-11-06 - 0.90 - - - - https://hmcoding.com/projects - 2025-11-06 - 0.85 - - - - https://hmcoding.com/about - 2025-11-06 - 0.80 - - - diff --git a/src/App.tsx b/src/App.tsx index 8c6e078..1a2307b 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -21,6 +21,7 @@ import { ContactModalProvider } from "./context/ContactModalProvider"; import { LogoAnimationProvider } from "./context/LogoAnimationContext"; import { useGlobalLoader } from "./context/GlobalLoaderContext"; import { GlobalBackground } from "./components/shared/GlobalBackground"; +import { RouteSeo } from "./components/RouteSeo"; import ProtectedRoute from "./admin/routes/ProtectedRoute"; const Login = lazy(() => import("./admin/pages/Login")); @@ -30,6 +31,7 @@ const ContactMessages = lazy(() => import("./admin/modules/ContactMessages")); const Reviews = lazy(() => import("./admin/modules/Reviews")); const Jobs = lazy(() => import("./admin/modules/Jobs")); const Applications = lazy(() => import("./admin/modules/Applications")); +const NotFound = lazy(() => import("./pages/NotFound")); export default function App() { const [isContactOpen, setIsContactOpen] = useState(false); @@ -128,6 +130,7 @@ export default function App() {
+ {!isAdminRoute &&
} @@ -207,6 +210,7 @@ export default function App() { } /> } /> + } /> diff --git a/src/admin/components/AdminNotice.tsx b/src/admin/components/AdminNotice.tsx new file mode 100644 index 0000000..28a73f0 --- /dev/null +++ b/src/admin/components/AdminNotice.tsx @@ -0,0 +1,28 @@ +type AdminNoticeProps = { + tone?: "error" | "success" | "info"; + message: string; + onRetry?: () => void; +}; + +const toneClass = { + error: "border-red-500/40 bg-red-500/10 text-red-300", + success: "border-emerald-500/40 bg-emerald-500/10 text-emerald-300", + info: "border-brand-cyan/30 bg-brand-cyan/10 text-brand-cyan", +}; + +export function AdminNotice({ tone = "error", message, onRetry }: AdminNoticeProps) { + return ( +
+

{message}

+ {onRetry && ( + + )} +
+ ); +} diff --git a/src/admin/components/Sidebar.tsx b/src/admin/components/Sidebar.tsx index 9dfadd4..a5b9bb0 100644 --- a/src/admin/components/Sidebar.tsx +++ b/src/admin/components/Sidebar.tsx @@ -37,9 +37,11 @@ const Sidebar: React.FC = ({ isOpen, setIsOpen }) => { return ( <> {isOpen && ( -
setIsOpen(false)} + aria-label="Close sidebar" /> )}