diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bb028c7..c438a13 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -173,6 +173,17 @@ jobs: - name: Build for Lighthouse run: pnpm --filter portfolio run build + env: + NEXT_PUBLIC_SITE_URL: https://angelhidalgo.dev + + - name: Install wait-on + run: npm install -g wait-on + + - name: Start production server + run: | + pnpm --filter portfolio run start & + echo $! > server.pid + wait-on http://localhost:3000 -t 60000 - name: Run Lighthouse CI uses: treosh/lighthouse-ci-action@v10 @@ -182,6 +193,15 @@ jobs: uploadArtifacts: true temporaryPublicStorage: true + - name: Stop production server + if: always() + run: | + if [ -f server.pid ]; then + kill $(cat server.pid) || true + rm server.pid + fi + pkill -f "next start" || true + # Job 6: Security Audit security: name: Security Audit @@ -194,7 +214,7 @@ jobs: - name: Setup pnpm uses: pnpm/action-setup@v2 with: - version: 8 + version: 9 - name: Setup Node.js uses: actions/setup-node@v4 @@ -202,8 +222,11 @@ jobs: node-version: ${{ env.NODE_VERSION }} cache: 'pnpm' + - name: Install dependencies + run: pnpm install --frozen-lockfile + - name: Run pnpm audit - run: pnpm audit --production + run: pnpm audit --production || echo "Audit failed, continuing..." continue-on-error: true # Job 7: Status Check Summary diff --git a/.gitignore b/.gitignore index 6ba6161..bdf5419 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,7 @@ .yarn/install-state.gz # testing -/coverage +coverage/ # next.js /.next/ diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..1d5e644 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +24 diff --git a/apps/lab/docusaurus.config.js b/apps/lab/docusaurus.config.js index 6139f98..5fb0dd0 100644 --- a/apps/lab/docusaurus.config.js +++ b/apps/lab/docusaurus.config.js @@ -7,7 +7,7 @@ const config = { favicon: 'img/favicon.ico', url: 'https://desenvolupadormaster.vercel.app', - baseUrl: '/lab/', + baseUrl: '/', organizationName: 'GMNAPI', projectName: 'devportfolio-lab', diff --git a/apps/lab/vercel.json b/apps/lab/vercel.json index a1e5dae..6896c9b 100644 --- a/apps/lab/vercel.json +++ b/apps/lab/vercel.json @@ -1,8 +1,6 @@ { - "buildCommand": "cd ../.. && pnpm --filter lab build", - "installCommand": "cd ../.. && pnpm install --frozen-lockfile", - "framework": "docusaurus", - "env": { - "NODE_VERSION": "20" - } -} + "buildCommand": "cd ../.. && pnpm install && cd apps/lab && pnpm run build", + "installCommand": "cd ../.. && pnpm install", + "outputDirectory": "build", + "framework": "docusaurus" +} \ No newline at end of file diff --git a/apps/portfolio/.env.example b/apps/portfolio/.env.example new file mode 100644 index 0000000..f8c1771 --- /dev/null +++ b/apps/portfolio/.env.example @@ -0,0 +1,20 @@ +# SMTP Configuration for Contact Form +# Required for the portfolio contact form to send emails +# +# Copy this file to .env.local and fill with your SMTP credentials +# For production, configure these as environment variables in Vercel + +EMAIL_HOST=smtp.example.com +EMAIL_PORT=587 +EMAIL_USER=your-email@example.com +EMAIL_PASSWORD=your-secure-password +EMAIL_FROM=noreply@example.com +EMAIL_TO=contact@example.com + +# Notes: +# - EMAIL_HOST: SMTP server hostname +# - EMAIL_PORT: Usually 587 (STARTTLS) or 465 (SSL) +# - EMAIL_USER: SMTP authentication username +# - EMAIL_PASSWORD: SMTP authentication password +# - EMAIL_FROM: Sender email address +# - EMAIL_TO: Recipient email address (where form submissions are sent) diff --git a/apps/portfolio/.nvmrc b/apps/portfolio/.nvmrc new file mode 100644 index 0000000..1d5e644 --- /dev/null +++ b/apps/portfolio/.nvmrc @@ -0,0 +1 @@ +24 diff --git a/apps/portfolio/middleware.ts b/apps/portfolio/middleware.ts index 3582c27..baefc5b 100644 --- a/apps/portfolio/middleware.ts +++ b/apps/portfolio/middleware.ts @@ -4,5 +4,5 @@ import { routing } from './src/i18n/routing'; export default createMiddleware(routing); export const config = { - matcher: ['/', '/(es|en)/:path*', '/((?!_next|_vercel|.*\\..*).*)'], + matcher: ['/', '/(es|en)/:path*', '/((?!api|_next|_vercel|.*\\..*).*)'], }; diff --git a/apps/portfolio/public/cvEn.pdf b/apps/portfolio/public/cvEn.pdf new file mode 100644 index 0000000..2787df1 Binary files /dev/null and b/apps/portfolio/public/cvEn.pdf differ diff --git a/apps/portfolio/public/cvEs.pdf b/apps/portfolio/public/cvEs.pdf new file mode 100644 index 0000000..10ec621 Binary files /dev/null and b/apps/portfolio/public/cvEs.pdf differ diff --git a/apps/portfolio/src/features/hero/Hero.tsx b/apps/portfolio/src/features/hero/Hero.tsx index b9588ff..b50529a 100644 --- a/apps/portfolio/src/features/hero/Hero.tsx +++ b/apps/portfolio/src/features/hero/Hero.tsx @@ -8,7 +8,7 @@ 'use client'; import { m } from 'framer-motion'; -import { useTranslations } from 'next-intl'; +import { useTranslations, useLocale } from 'next-intl'; import { Button } from '@/shared/components/ui/Button'; import { personalInfo, availability } from '@/shared/constants/personal'; @@ -17,6 +17,7 @@ import { fadeInUp, fadeIn, staggerContainer } from '@/shared/utils/motion'; export function Hero() { const tHero = useTranslations('hero'); const tPersonal = useTranslations('personal'); + const locale = useLocale(); const scrollToProjects = () => { const projectsSection = document.getElementById('projects'); @@ -33,7 +34,8 @@ export function Hero() { }; const downloadCV = () => { - window.open(personalInfo.cvUrl, '_blank', 'noopener,noreferrer'); + const cvFileName = locale === 'en' ? 'cvEn.pdf' : 'cvEs.pdf'; + window.open(`/${cvFileName}`, '_blank', 'noopener,noreferrer'); }; const asciiLines = [ diff --git a/apps/portfolio/src/shared/constants/personal.ts b/apps/portfolio/src/shared/constants/personal.ts index bdeed12..240a2c3 100644 --- a/apps/portfolio/src/shared/constants/personal.ts +++ b/apps/portfolio/src/shared/constants/personal.ts @@ -20,7 +20,6 @@ export interface PersonalInfo { full: string; }; avatar: string; - cvUrl: string; social: { email: string; linkedin: string; @@ -53,7 +52,6 @@ export const personalInfo: PersonalInfo = { }, avatar: '/images/avatar-placeholder.svg', - cvUrl: '/documents/cv-angel-hidalgo-barreiro.pdf', social: { email: 'angel@gestionominegocio.es', diff --git a/apps/portfolio/tests/features/hero/Hero.test.tsx b/apps/portfolio/tests/features/hero/Hero.test.tsx index a113dcc..85afede 100644 --- a/apps/portfolio/tests/features/hero/Hero.test.tsx +++ b/apps/portfolio/tests/features/hero/Hero.test.tsx @@ -4,11 +4,13 @@ import userEvent from '@testing-library/user-event'; import { NextIntlClientProvider } from 'next-intl'; import esMessages from '../../../messages/es.json'; +import enMessages from '../../../messages/en.json'; import { Hero } from '@/features/hero/Hero'; -function renderHero() { +function renderHero(locale = 'es') { + const messages = locale === 'en' ? enMessages : esMessages; return render( - + ); @@ -138,6 +140,34 @@ describe('Hero Section', () => { windowOpenSpy.mockRestore(); }); + it('should download Spanish CV when locale is es', async () => { + const user = userEvent.setup(); + const windowOpenSpy = vi.spyOn(window, 'open').mockImplementation(() => null); + + renderHero('es'); + + const cvButton = screen.getByRole('button', { name: /descargar cv/i }); + await user.click(cvButton); + + expect(windowOpenSpy).toHaveBeenCalledWith('/cvEs.pdf', '_blank', 'noopener,noreferrer'); + + windowOpenSpy.mockRestore(); + }); + + it('should download English CV when locale is en', async () => { + const user = userEvent.setup(); + const windowOpenSpy = vi.spyOn(window, 'open').mockImplementation(() => null); + + renderHero('en'); + + const cvButton = screen.getByRole('button', { name: /download cv/i }); + await user.click(cvButton); + + expect(windowOpenSpy).toHaveBeenCalledWith('/cvEn.pdf', '_blank', 'noopener,noreferrer'); + + windowOpenSpy.mockRestore(); + }); + it('should handle missing projects section gracefully', async () => { const user = userEvent.setup(); diff --git a/apps/portfolio/vercel.json b/apps/portfolio/vercel.json deleted file mode 100644 index 21cbe43..0000000 --- a/apps/portfolio/vercel.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "buildCommand": "cd ../.. && pnpm --filter portfolio build", - "installCommand": "cd ../.. && pnpm install --frozen-lockfile", - "framework": "nextjs", - "env": { - "NODE_VERSION": "20" - } -} diff --git a/package.json b/package.json index cfe9506..d88166f 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,8 @@ "name": "devportfolio-monorepo", "version": "1.0.0", "private": true, + "packageManager": "pnpm@10.25.0", + "engines": { "node": ">=24 <25" }, "workspaces": [ "apps/*", "packages/*" @@ -27,6 +29,7 @@ "format:check": "prettier --check \"**/*.{ts,tsx,js,jsx,json,css,md}\"" }, "devDependencies": { + "next": "15.0.5", "prettier": "^3.6.2", "turbo": "^1.11.3" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5d77c18..11d7591 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ importers: .: devDependencies: + next: + specifier: 15.0.5 + version: 15.0.5(@babel/core@7.28.5)(react-dom@19.2.3)(react@19.2.3) prettier: specifier: ^3.6.2 version: 3.7.4 @@ -19,10 +22,10 @@ importers: dependencies: '@docusaurus/core': specifier: 2.4.3 - version: 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) + version: 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) '@docusaurus/preset-classic': specifier: 2.4.3 - version: 2.4.3(@algolia/client-search@5.46.0)(@types/react@19.2.7)(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(search-insights@2.17.3)(typescript@5.2.2) + version: 2.4.3(@algolia/client-search@5.46.0)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.17.3)(typescript@5.2.2) '@mdx-js/react': specifier: ^1.6.22 version: 1.6.22(react@17.0.2) @@ -41,10 +44,10 @@ importers: devDependencies: '@docusaurus/module-type-aliases': specifier: 2.4.3 - version: 2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + version: 2.4.3(react-dom@17.0.2)(react@17.0.2) '@docusaurus/types': specifier: 2.4.3 - version: 2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + version: 2.4.3(react-dom@17.0.2)(react@17.0.2) typescript: specifier: ~5.2.0 version: 5.2.2 @@ -56,16 +59,16 @@ importers: version: 2.1.1 framer-motion: specifier: ^11.18.2 - version: 11.18.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 11.18.2(react-dom@19.2.3)(react@19.2.3) next: specifier: 15.0.5 - version: 15.0.5(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 15.0.5(@babel/core@7.28.5)(react-dom@19.2.3)(react@19.2.3) next-intl: specifier: ^4.5.0 - version: 4.6.0(next@15.0.5(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(typescript@5.2.2) + version: 4.6.0(next@15.0.5)(react@19.2.3)(typescript@5.2.2) next-themes: specifier: ^0.4.6 - version: 0.4.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 0.4.6(react-dom@19.2.3)(react@19.2.3) nodemailer: specifier: ^7.0.10 version: 7.0.11 @@ -84,7 +87,7 @@ importers: version: 6.9.1 '@testing-library/react': specifier: ^16.3.0 - version: 16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3) '@testing-library/user-event': specifier: ^14.6.1 version: 14.6.1(@testing-library/dom@10.4.1) @@ -102,31 +105,31 @@ importers: version: 19.2.3(@types/react@19.2.7) '@typescript-eslint/eslint-plugin': specifier: ^8.46.3 - version: 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.2.2))(eslint@9.39.1(jiti@1.21.7))(typescript@5.2.2) + version: 8.49.0(@typescript-eslint/parser@8.49.0)(eslint@9.39.1)(typescript@5.2.2) '@typescript-eslint/parser': specifier: ^8.46.3 - version: 8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.2.2) + version: 8.49.0(eslint@9.39.1)(typescript@5.2.2) '@vitejs/plugin-react': specifier: ^5.1.2 - version: 5.1.2(vite@7.2.7(@types/node@20.19.26)(jiti@1.21.7)(terser@5.44.1)) + version: 5.1.2(vite@7.2.7) '@vitest/coverage-v8': specifier: ^4.0.8 - version: 4.0.15(vitest@4.0.15(@types/node@20.19.26)(jiti@1.21.7)(jsdom@27.3.0(postcss@8.5.6))(terser@5.44.1)) + version: 4.0.15(vitest@4.0.15) autoprefixer: specifier: ^10.0.1 version: 10.4.22(postcss@8.5.6) eslint: specifier: ^9 - version: 9.39.1(jiti@1.21.7) + version: 9.39.1 eslint-config-next: specifier: ^15.0.0 - version: 15.5.9(eslint@9.39.1(jiti@1.21.7))(typescript@5.2.2) + version: 15.5.9(eslint@9.39.1)(typescript@5.2.2) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.39.1(jiti@1.21.7)) + version: 10.1.8(eslint@9.39.1) eslint-plugin-prettier: specifier: ^5.5.4 - version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7))(prettier@3.7.4) + version: 5.5.4(eslint-config-prettier@10.1.8)(eslint@9.39.1)(prettier@3.7.4) jsdom: specifier: ^27.1.0 version: 27.3.0(postcss@8.5.6) @@ -147,7 +150,7 @@ importers: version: 5.2.2 vitest: specifier: ^4.0.8 - version: 4.0.15(@types/node@20.19.26)(jiti@1.21.7)(jsdom@27.3.0(postcss@8.5.6))(terser@5.44.1) + version: 4.0.15(@types/node@20.19.26)(jsdom@27.3.0) packages: @@ -5086,6 +5089,7 @@ packages: next@15.0.5: resolution: {integrity: sha512-WTh/Rmxkn4J4vwSYiqEZGzoxjid83iCyN0qg7oJFKzHjYCzy5mwBRqWVlFotM9nAnxGGv5MzbMa4gMu88qeGLA==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} + deprecated: This version has a security vulnerability. Please upgrade to a patched version. See https://nextjs.org/blog/security-update-2025-12-11 for more details. hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 @@ -7332,8 +7336,8 @@ snapshots: '@asamuzakjp/css-color@4.1.0': dependencies: - '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5)(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5)(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 lru-cache: 11.2.4 @@ -8570,15 +8574,15 @@ snapshots: '@csstools/color-helpers@5.1.0': {} - '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5)(@csstools/css-tokenizer@3.0.4)': dependencies: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5)(@csstools/css-tokenizer@3.0.4)': dependencies: '@csstools/color-helpers': 5.1.0 - '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5)(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 @@ -8596,21 +8600,19 @@ snapshots: '@docsearch/css@3.9.0': {} - '@docsearch/react@3.9.0(@algolia/client-search@5.46.0)(@types/react@19.2.7)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(search-insights@2.17.3)': + '@docsearch/react@3.9.0(@algolia/client-search@5.46.0)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.17.3)': dependencies: '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.46.0)(algoliasearch@5.46.0)(search-insights@2.17.3) '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.46.0)(algoliasearch@5.46.0) '@docsearch/css': 3.9.0 algoliasearch: 5.46.0 - optionalDependencies: - '@types/react': 19.2.7 react: 17.0.2 react-dom: 17.0.2(react@17.0.2) search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' - '@docusaurus/core@2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)': + '@docusaurus/core@2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2)': dependencies: '@babel/core': 7.28.5 '@babel/generator': 7.28.5 @@ -8624,11 +8626,11 @@ snapshots: '@babel/traverse': 7.28.5 '@docusaurus/cssnano-preset': 2.4.3 '@docusaurus/logger': 2.4.3 - '@docusaurus/mdx-loader': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@docusaurus/mdx-loader': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2) '@docusaurus/react-loadable': 5.5.2(react@17.0.2) - '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) - '@docusaurus/utils-common': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) - '@docusaurus/utils-validation': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) + '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3) + '@docusaurus/utils-common': 2.4.3(@docusaurus/types@2.4.3) + '@docusaurus/utils-validation': 2.4.3(@docusaurus/types@2.4.3) '@slorber/static-site-generator-webpack-plugin': 4.0.7 '@svgr/webpack': 6.5.1 autoprefixer: 10.4.22(postcss@8.5.6) @@ -8663,13 +8665,13 @@ snapshots: postcss-loader: 7.3.4(postcss@8.5.6)(typescript@5.2.2)(webpack@5.103.0) prompts: 2.4.2 react: 17.0.2 - react-dev-utils: 12.0.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.2.2)(webpack@5.103.0) + react-dev-utils: 12.0.1(typescript@5.2.2)(webpack@5.103.0) react-dom: 17.0.2(react@17.0.2) - react-helmet-async: 1.3.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + react-helmet-async: 1.3.0(react-dom@17.0.2)(react@17.0.2) react-loadable: '@docusaurus/react-loadable@5.5.2(react@17.0.2)' - react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@5.5.2(react@17.0.2))(webpack@5.103.0) + react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@5.5.2)(webpack@5.103.0) react-router: 5.3.4(react@17.0.2) - react-router-config: 5.1.1(react-router@5.3.4(react@17.0.2))(react@17.0.2) + react-router-config: 5.1.1(react-router@5.3.4)(react@17.0.2) react-router-dom: 5.3.4(react@17.0.2) rtl-detect: 1.1.2 semver: 7.7.3 @@ -8678,7 +8680,7 @@ snapshots: terser-webpack-plugin: 5.3.16(webpack@5.103.0) tslib: 2.8.1 update-notifier: 5.1.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.103.0))(webpack@5.103.0) + url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.103.0) wait-on: 6.0.1 webpack: 5.103.0 webpack-bundle-analyzer: 4.10.2 @@ -8716,12 +8718,12 @@ snapshots: chalk: 4.1.2 tslib: 2.8.1 - '@docusaurus/mdx-loader@2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + '@docusaurus/mdx-loader@2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)': dependencies: '@babel/parser': 7.28.5 '@babel/traverse': 7.28.5 '@docusaurus/logger': 2.4.3 - '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) + '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3) '@mdx-js/mdx': 1.6.22 escape-html: 1.0.3 file-loader: 6.2.0(webpack@5.103.0) @@ -8735,7 +8737,7 @@ snapshots: tslib: 2.8.1 unified: 9.2.2 unist-util-visit: 2.0.3 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.103.0))(webpack@5.103.0) + url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.103.0) webpack: 5.103.0 transitivePeerDependencies: - '@docusaurus/types' @@ -8745,10 +8747,10 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/module-type-aliases@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + '@docusaurus/module-type-aliases@2.4.3(react-dom@17.0.2)(react@17.0.2)': dependencies: '@docusaurus/react-loadable': 5.5.2(react@17.0.2) - '@docusaurus/types': 2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@docusaurus/types': 2.4.3(react-dom@17.0.2)(react@17.0.2) '@types/history': 4.7.11 '@types/react': 19.2.7 '@types/react-router-config': 5.0.11 @@ -8763,15 +8765,15 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/plugin-content-blog@2.4.3(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)': + '@docusaurus/plugin-content-blog@2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2)': dependencies: - '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) + '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) '@docusaurus/logger': 2.4.3 - '@docusaurus/mdx-loader': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@docusaurus/types': 2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) - '@docusaurus/utils-common': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) - '@docusaurus/utils-validation': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) + '@docusaurus/mdx-loader': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/types': 2.4.3(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3) + '@docusaurus/utils-common': 2.4.3(@docusaurus/types@2.4.3) + '@docusaurus/utils-validation': 2.4.3(@docusaurus/types@2.4.3) cheerio: 1.1.2 feed: 4.2.2 fs-extra: 10.1.0 @@ -8801,15 +8803,15 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-content-docs@2.4.3(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)': + '@docusaurus/plugin-content-docs@2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2)': dependencies: - '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) + '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) '@docusaurus/logger': 2.4.3 - '@docusaurus/mdx-loader': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@docusaurus/module-type-aliases': 2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@docusaurus/types': 2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) - '@docusaurus/utils-validation': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) + '@docusaurus/mdx-loader': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/module-type-aliases': 2.4.3(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/types': 2.4.3(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3) + '@docusaurus/utils-validation': 2.4.3(@docusaurus/types@2.4.3) '@types/react-router-config': 5.0.11 combine-promises: 1.2.0 fs-extra: 10.1.0 @@ -8839,13 +8841,13 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-content-pages@2.4.3(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)': + '@docusaurus/plugin-content-pages@2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2)': dependencies: - '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) - '@docusaurus/mdx-loader': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@docusaurus/types': 2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) - '@docusaurus/utils-validation': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) + '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/mdx-loader': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/types': 2.4.3(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3) + '@docusaurus/utils-validation': 2.4.3(@docusaurus/types@2.4.3) fs-extra: 10.1.0 react: 17.0.2 react-dom: 17.0.2(react@17.0.2) @@ -8869,15 +8871,15 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-debug@2.4.3(@types/react@19.2.7)(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)': + '@docusaurus/plugin-debug@2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2)': dependencies: - '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) - '@docusaurus/types': 2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) + '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/types': 2.4.3(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3) fs-extra: 10.1.0 react: 17.0.2 react-dom: 17.0.2(react@17.0.2) - react-json-view: 1.21.3(@types/react@19.2.7)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + react-json-view: 1.21.3(react-dom@17.0.2)(react@17.0.2) tslib: 2.8.1 transitivePeerDependencies: - '@parcel/css' @@ -8899,11 +8901,11 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-analytics@2.4.3(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)': + '@docusaurus/plugin-google-analytics@2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2)': dependencies: - '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) - '@docusaurus/types': 2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@docusaurus/utils-validation': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) + '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/types': 2.4.3(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/utils-validation': 2.4.3(@docusaurus/types@2.4.3) react: 17.0.2 react-dom: 17.0.2(react@17.0.2) tslib: 2.8.1 @@ -8925,11 +8927,11 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-gtag@2.4.3(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)': + '@docusaurus/plugin-google-gtag@2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2)': dependencies: - '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) - '@docusaurus/types': 2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@docusaurus/utils-validation': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) + '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/types': 2.4.3(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/utils-validation': 2.4.3(@docusaurus/types@2.4.3) react: 17.0.2 react-dom: 17.0.2(react@17.0.2) tslib: 2.8.1 @@ -8951,11 +8953,11 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-tag-manager@2.4.3(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)': + '@docusaurus/plugin-google-tag-manager@2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2)': dependencies: - '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) - '@docusaurus/types': 2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@docusaurus/utils-validation': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) + '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/types': 2.4.3(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/utils-validation': 2.4.3(@docusaurus/types@2.4.3) react: 17.0.2 react-dom: 17.0.2(react@17.0.2) tslib: 2.8.1 @@ -8977,14 +8979,14 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-sitemap@2.4.3(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)': + '@docusaurus/plugin-sitemap@2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2)': dependencies: - '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) + '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) '@docusaurus/logger': 2.4.3 - '@docusaurus/types': 2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) - '@docusaurus/utils-common': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) - '@docusaurus/utils-validation': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) + '@docusaurus/types': 2.4.3(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3) + '@docusaurus/utils-common': 2.4.3(@docusaurus/types@2.4.3) + '@docusaurus/utils-validation': 2.4.3(@docusaurus/types@2.4.3) fs-extra: 10.1.0 react: 17.0.2 react-dom: 17.0.2(react@17.0.2) @@ -9008,21 +9010,21 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/preset-classic@2.4.3(@algolia/client-search@5.46.0)(@types/react@19.2.7)(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(search-insights@2.17.3)(typescript@5.2.2)': - dependencies: - '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) - '@docusaurus/plugin-content-blog': 2.4.3(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) - '@docusaurus/plugin-content-docs': 2.4.3(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) - '@docusaurus/plugin-content-pages': 2.4.3(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) - '@docusaurus/plugin-debug': 2.4.3(@types/react@19.2.7)(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) - '@docusaurus/plugin-google-analytics': 2.4.3(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) - '@docusaurus/plugin-google-gtag': 2.4.3(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) - '@docusaurus/plugin-google-tag-manager': 2.4.3(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) - '@docusaurus/plugin-sitemap': 2.4.3(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) - '@docusaurus/theme-classic': 2.4.3(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) - '@docusaurus/theme-common': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) - '@docusaurus/theme-search-algolia': 2.4.3(@algolia/client-search@5.46.0)(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(@types/react@19.2.7)(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(search-insights@2.17.3)(typescript@5.2.2) - '@docusaurus/types': 2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@docusaurus/preset-classic@2.4.3(@algolia/client-search@5.46.0)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.17.3)(typescript@5.2.2)': + dependencies: + '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/plugin-content-blog': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/plugin-content-docs': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/plugin-content-pages': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/plugin-debug': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/plugin-google-analytics': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/plugin-google-gtag': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/plugin-google-tag-manager': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/plugin-sitemap': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/theme-classic': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/theme-common': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/theme-search-algolia': 2.4.3(@algolia/client-search@5.46.0)(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.17.3)(typescript@5.2.2) + '@docusaurus/types': 2.4.3(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 react-dom: 17.0.2(react@17.0.2) transitivePeerDependencies: @@ -9053,20 +9055,20 @@ snapshots: prop-types: 15.8.1 react: 17.0.2 - '@docusaurus/theme-classic@2.4.3(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)': + '@docusaurus/theme-classic@2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2)': dependencies: - '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) - '@docusaurus/mdx-loader': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@docusaurus/module-type-aliases': 2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@docusaurus/plugin-content-blog': 2.4.3(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) - '@docusaurus/plugin-content-docs': 2.4.3(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) - '@docusaurus/plugin-content-pages': 2.4.3(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) - '@docusaurus/theme-common': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) + '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/mdx-loader': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/module-type-aliases': 2.4.3(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/plugin-content-blog': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/plugin-content-docs': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/plugin-content-pages': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/theme-common': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) '@docusaurus/theme-translations': 2.4.3 - '@docusaurus/types': 2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) - '@docusaurus/utils-common': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) - '@docusaurus/utils-validation': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) + '@docusaurus/types': 2.4.3(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3) + '@docusaurus/utils-common': 2.4.3(@docusaurus/types@2.4.3) + '@docusaurus/utils-validation': 2.4.3(@docusaurus/types@2.4.3) '@mdx-js/react': 1.6.22(react@17.0.2) clsx: 1.2.1 copy-text-to-clipboard: 3.2.2 @@ -9100,15 +9102,15 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/theme-common@2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2)': + '@docusaurus/theme-common@2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2)': dependencies: - '@docusaurus/mdx-loader': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@docusaurus/module-type-aliases': 2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@docusaurus/plugin-content-blog': 2.4.3(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) - '@docusaurus/plugin-content-docs': 2.4.3(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) - '@docusaurus/plugin-content-pages': 2.4.3(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) - '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) - '@docusaurus/utils-common': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) + '@docusaurus/mdx-loader': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/module-type-aliases': 2.4.3(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/plugin-content-blog': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/plugin-content-docs': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/plugin-content-pages': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3) + '@docusaurus/utils-common': 2.4.3(@docusaurus/types@2.4.3) '@types/history': 4.7.11 '@types/react': 19.2.7 '@types/react-router-config': 5.0.11 @@ -9139,16 +9141,16 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/theme-search-algolia@2.4.3(@algolia/client-search@5.46.0)(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(@types/react@19.2.7)(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(search-insights@2.17.3)(typescript@5.2.2)': + '@docusaurus/theme-search-algolia@2.4.3(@algolia/client-search@5.46.0)(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.17.3)(typescript@5.2.2)': dependencies: - '@docsearch/react': 3.9.0(@algolia/client-search@5.46.0)(@types/react@19.2.7)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(search-insights@2.17.3) - '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) + '@docsearch/react': 3.9.0(@algolia/client-search@5.46.0)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.17.3) + '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) '@docusaurus/logger': 2.4.3 - '@docusaurus/plugin-content-docs': 2.4.3(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) - '@docusaurus/theme-common': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(eslint@9.39.1(jiti@1.21.7))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.2.2) + '@docusaurus/plugin-content-docs': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) + '@docusaurus/theme-common': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@5.2.2) '@docusaurus/theme-translations': 2.4.3 - '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) - '@docusaurus/utils-validation': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) + '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3) + '@docusaurus/utils-validation': 2.4.3(@docusaurus/types@2.4.3) algoliasearch: 4.25.3 algoliasearch-helper: 3.26.1(algoliasearch@4.25.3) clsx: 1.2.1 @@ -9186,7 +9188,7 @@ snapshots: fs-extra: 10.1.0 tslib: 2.8.1 - '@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + '@docusaurus/types@2.4.3(react-dom@17.0.2)(react@17.0.2)': dependencies: '@types/history': 4.7.11 '@types/react': 19.2.7 @@ -9194,7 +9196,7 @@ snapshots: joi: 17.13.3 react: 17.0.2 react-dom: 17.0.2(react@17.0.2) - react-helmet-async: 1.3.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + react-helmet-async: 1.3.0(react-dom@17.0.2)(react@17.0.2) utility-types: 3.11.0 webpack: 5.103.0 webpack-merge: 5.10.0 @@ -9204,16 +9206,15 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils-common@2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2))': + '@docusaurus/utils-common@2.4.3(@docusaurus/types@2.4.3)': dependencies: + '@docusaurus/types': 2.4.3(react-dom@17.0.2)(react@17.0.2) tslib: 2.8.1 - optionalDependencies: - '@docusaurus/types': 2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@docusaurus/utils-validation@2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2))': + '@docusaurus/utils-validation@2.4.3(@docusaurus/types@2.4.3)': dependencies: '@docusaurus/logger': 2.4.3 - '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2)) + '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3) joi: 17.13.3 js-yaml: 4.1.1 tslib: 2.8.1 @@ -9225,9 +9226,10 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils@2.4.3(@docusaurus/types@2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2))': + '@docusaurus/utils@2.4.3(@docusaurus/types@2.4.3)': dependencies: '@docusaurus/logger': 2.4.3 + '@docusaurus/types': 2.4.3(react-dom@17.0.2)(react@17.0.2) '@svgr/webpack': 6.5.1 escape-string-regexp: 4.0.0 file-loader: 6.2.0(webpack@5.103.0) @@ -9241,10 +9243,8 @@ snapshots: resolve-pathname: 3.0.0 shelljs: 0.8.5 tslib: 2.8.1 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.103.0))(webpack@5.103.0) + url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.103.0) webpack: 5.103.0 - optionalDependencies: - '@docusaurus/types': 2.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2) transitivePeerDependencies: - '@swc/core' - esbuild @@ -9346,9 +9346,9 @@ snapshots: '@esbuild/win32-x64@0.25.12': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1(jiti@1.21.7))': + '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1)': dependencies: - eslint: 9.39.1(jiti@1.21.7) + eslint: 9.39.1 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} @@ -10235,15 +10235,14 @@ snapshots: picocolors: 1.1.1 redent: 3.0.0 - '@testing-library/react@16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@testing-library/react@16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3)(@types/react@19.2.7)(react-dom@19.2.3)(react@19.2.3)': dependencies: '@babel/runtime': 7.28.4 '@testing-library/dom': 10.4.1 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) - optionalDependencies: '@types/react': 19.2.7 '@types/react-dom': 19.2.3(@types/react@19.2.7) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.1)': dependencies: @@ -10470,15 +10469,15 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.2.2))(eslint@9.39.1(jiti@1.21.7))(typescript@5.2.2)': + '@typescript-eslint/eslint-plugin@8.49.0(@typescript-eslint/parser@8.49.0)(eslint@9.39.1)(typescript@5.2.2)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.2.2) + '@typescript-eslint/parser': 8.49.0(eslint@9.39.1)(typescript@5.2.2) '@typescript-eslint/scope-manager': 8.49.0 - '@typescript-eslint/type-utils': 8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.2.2) - '@typescript-eslint/utils': 8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.2.2) + '@typescript-eslint/type-utils': 8.49.0(eslint@9.39.1)(typescript@5.2.2) + '@typescript-eslint/utils': 8.49.0(eslint@9.39.1)(typescript@5.2.2) '@typescript-eslint/visitor-keys': 8.49.0 - eslint: 9.39.1(jiti@1.21.7) + eslint: 9.39.1 ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.1.0(typescript@5.2.2) @@ -10486,14 +10485,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.2.2)': + '@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.2.2)': dependencies: '@typescript-eslint/scope-manager': 8.49.0 '@typescript-eslint/types': 8.49.0 '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.2.2) '@typescript-eslint/visitor-keys': 8.49.0 debug: 4.4.3 - eslint: 9.39.1(jiti@1.21.7) + eslint: 9.39.1 typescript: 5.2.2 transitivePeerDependencies: - supports-color @@ -10516,13 +10515,13 @@ snapshots: dependencies: typescript: 5.2.2 - '@typescript-eslint/type-utils@8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.2.2)': + '@typescript-eslint/type-utils@8.49.0(eslint@9.39.1)(typescript@5.2.2)': dependencies: '@typescript-eslint/types': 8.49.0 '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.2.2) - '@typescript-eslint/utils': 8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.2.2) + '@typescript-eslint/utils': 8.49.0(eslint@9.39.1)(typescript@5.2.2) debug: 4.4.3 - eslint: 9.39.1(jiti@1.21.7) + eslint: 9.39.1 ts-api-utils: 2.1.0(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: @@ -10545,13 +10544,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.2.2)': + '@typescript-eslint/utils@8.49.0(eslint@9.39.1)(typescript@5.2.2)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@1.21.7)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1) '@typescript-eslint/scope-manager': 8.49.0 '@typescript-eslint/types': 8.49.0 '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.2.2) - eslint: 9.39.1(jiti@1.21.7) + eslint: 9.39.1 typescript: 5.2.2 transitivePeerDependencies: - supports-color @@ -10620,7 +10619,7 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vitejs/plugin-react@5.1.2(vite@7.2.7(@types/node@20.19.26)(jiti@1.21.7)(terser@5.44.1))': + '@vitejs/plugin-react@5.1.2(vite@7.2.7)': dependencies: '@babel/core': 7.28.5 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5) @@ -10628,11 +10627,11 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.53 '@types/babel__core': 7.20.5 react-refresh: 0.18.0 - vite: 7.2.7(@types/node@20.19.26)(jiti@1.21.7)(terser@5.44.1) + vite: 7.2.7(@types/node@20.19.26) transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@4.0.15(vitest@4.0.15(@types/node@20.19.26)(jiti@1.21.7)(jsdom@27.3.0(postcss@8.5.6))(terser@5.44.1))': + '@vitest/coverage-v8@4.0.15(vitest@4.0.15)': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.15 @@ -10645,7 +10644,7 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.15(@types/node@20.19.26)(jiti@1.21.7)(jsdom@27.3.0(postcss@8.5.6))(terser@5.44.1) + vitest: 4.0.15(@types/node@20.19.26)(jsdom@27.3.0) transitivePeerDependencies: - supports-color @@ -10658,13 +10657,12 @@ snapshots: chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.15(vite@7.2.7(@types/node@20.19.26)(jiti@1.21.7)(terser@5.44.1))': + '@vitest/mocker@4.0.15(vite@7.2.7)': dependencies: '@vitest/spy': 4.0.15 estree-walker: 3.0.3 magic-string: 0.30.21 - optionalDependencies: - vite: 7.2.7(@types/node@20.19.26)(jiti@1.21.7)(terser@5.44.1) + vite: 7.2.7(@types/node@20.19.26) '@vitest/pretty-format@4.0.15': dependencies: @@ -10797,7 +10795,7 @@ snapshots: indent-string: 4.0.0 ajv-formats@2.1.1(ajv@8.17.1): - optionalDependencies: + dependencies: ajv: 8.17.1 ajv-keywords@3.5.2(ajv@6.12.6): @@ -11423,7 +11421,6 @@ snapshots: js-yaml: 4.1.1 parse-json: 5.2.0 path-type: 4.0.0 - optionalDependencies: typescript: 5.2.2 cross-fetch@3.2.0: @@ -11454,11 +11451,11 @@ snapshots: postcss-modules-values: 4.0.0(postcss@8.5.6) postcss-value-parser: 4.2.0 semver: 7.7.3 - optionalDependencies: webpack: 5.103.0 css-minimizer-webpack-plugin@4.2.2(clean-css@5.3.3)(webpack@5.103.0): dependencies: + clean-css: 5.3.3 cssnano: 5.1.15(postcss@8.5.6) jest-worker: 29.7.0 postcss: 8.5.6 @@ -11466,8 +11463,6 @@ snapshots: serialize-javascript: 6.0.2 source-map: 0.6.1 webpack: 5.103.0 - optionalDependencies: - clean-css: 5.3.3 css-select@4.3.0: dependencies: @@ -11943,29 +11938,28 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-next@15.5.9(eslint@9.39.1(jiti@1.21.7))(typescript@5.2.2): + eslint-config-next@15.5.9(eslint@9.39.1)(typescript@5.2.2): dependencies: '@next/eslint-plugin-next': 15.5.9 '@rushstack/eslint-patch': 1.15.0 - '@typescript-eslint/eslint-plugin': 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.2.2))(eslint@9.39.1(jiti@1.21.7))(typescript@5.2.2) - '@typescript-eslint/parser': 8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.2.2) - eslint: 9.39.1(jiti@1.21.7) + '@typescript-eslint/eslint-plugin': 8.49.0(@typescript-eslint/parser@8.49.0)(eslint@9.39.1)(typescript@5.2.2) + '@typescript-eslint/parser': 8.49.0(eslint@9.39.1)(typescript@5.2.2) + eslint: 9.39.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@1.21.7)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.2.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@1.21.7)) - eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.1(jiti@1.21.7)) - eslint-plugin-react: 7.37.5(eslint@9.39.1(jiti@1.21.7)) - eslint-plugin-react-hooks: 5.2.0(eslint@9.39.1(jiti@1.21.7)) - optionalDependencies: + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.49.0)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1) + eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.1) + eslint-plugin-react: 7.37.5(eslint@9.39.1) + eslint-plugin-react-hooks: 5.2.0(eslint@9.39.1) typescript: 5.2.2 transitivePeerDependencies: - eslint-import-resolver-webpack - eslint-plugin-import-x - supports-color - eslint-config-prettier@10.1.8(eslint@9.39.1(jiti@1.21.7)): + eslint-config-prettier@10.1.8(eslint@9.39.1): dependencies: - eslint: 9.39.1(jiti@1.21.7) + eslint: 9.39.1 eslint-import-resolver-node@0.3.9: dependencies: @@ -11975,44 +11969,43 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@1.21.7)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 - eslint: 9.39.1(jiti@1.21.7) + eslint: 9.39.1 + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.49.0)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1) get-tsconfig: 4.13.0 is-bun-module: 2.0.0 stable-hash: 0.0.5 tinyglobby: 0.2.15 unrs-resolver: 1.11.1 - optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.2.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@1.21.7)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.2.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@1.21.7)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.49.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1): dependencies: + '@typescript-eslint/parser': 8.49.0(eslint@9.39.1)(typescript@5.2.2) debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.2.2) - eslint: 9.39.1(jiti@1.21.7) + eslint: 9.39.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@1.21.7)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.2.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@1.21.7)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.49.0)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1): dependencies: '@rtsao/scc': 1.1.0 + '@typescript-eslint/parser': 8.49.0(eslint@9.39.1)(typescript@5.2.2) array-includes: 3.1.9 array.prototype.findlastindex: 1.2.6 array.prototype.flat: 1.3.3 array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.39.1(jiti@1.21.7) + eslint: 9.39.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.2.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@1.21.7)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.49.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -12023,14 +12016,12 @@ snapshots: semver: 6.3.1 string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 8.49.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.2.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.1(jiti@1.21.7)): + eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.1): dependencies: aria-query: 5.3.2 array-includes: 3.1.9 @@ -12040,7 +12031,7 @@ snapshots: axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 9.39.1(jiti@1.21.7) + eslint: 9.39.1 hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -12049,21 +12040,19 @@ snapshots: safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 - eslint-plugin-prettier@5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7))(prettier@3.7.4): + eslint-plugin-prettier@5.5.4(eslint-config-prettier@10.1.8)(eslint@9.39.1)(prettier@3.7.4): dependencies: - eslint: 9.39.1(jiti@1.21.7) + eslint: 9.39.1 + eslint-config-prettier: 10.1.8(eslint@9.39.1) prettier: 3.7.4 prettier-linter-helpers: 1.0.0 synckit: 0.11.11 - optionalDependencies: - '@types/eslint': 9.6.1 - eslint-config-prettier: 10.1.8(eslint@9.39.1(jiti@1.21.7)) - eslint-plugin-react-hooks@5.2.0(eslint@9.39.1(jiti@1.21.7)): + eslint-plugin-react-hooks@5.2.0(eslint@9.39.1): dependencies: - eslint: 9.39.1(jiti@1.21.7) + eslint: 9.39.1 - eslint-plugin-react@7.37.5(eslint@9.39.1(jiti@1.21.7)): + eslint-plugin-react@7.37.5(eslint@9.39.1): dependencies: array-includes: 3.1.9 array.prototype.findlast: 1.2.5 @@ -12071,7 +12060,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.2.1 - eslint: 9.39.1(jiti@1.21.7) + eslint: 9.39.1 estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -12099,9 +12088,9 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.39.1(jiti@1.21.7): + eslint@9.39.1: dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@1.21.7)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.21.1 '@eslint/config-helpers': 0.4.2 @@ -12135,8 +12124,6 @@ snapshots: minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.4 - optionalDependencies: - jiti: 1.21.7 transitivePeerDependencies: - supports-color @@ -12294,7 +12281,7 @@ snapshots: - encoding fdir@6.5.0(picomatch@4.0.3): - optionalDependencies: + dependencies: picomatch: 4.0.3 feed@4.2.2: @@ -12372,7 +12359,7 @@ snapshots: dependencies: is-callable: 1.2.7 - fork-ts-checker-webpack-plugin@6.5.3(eslint@9.39.1(jiti@1.21.7))(typescript@5.2.2)(webpack@5.103.0): + fork-ts-checker-webpack-plugin@6.5.3(typescript@5.2.2)(webpack@5.103.0): dependencies: '@babel/code-frame': 7.27.1 '@types/json-schema': 7.0.15 @@ -12389,21 +12376,18 @@ snapshots: tapable: 1.1.3 typescript: 5.2.2 webpack: 5.103.0 - optionalDependencies: - eslint: 9.39.1(jiti@1.21.7) forwarded@0.2.0: {} fraction.js@5.3.4: {} - framer-motion@11.18.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + framer-motion@11.18.2(react-dom@19.2.3)(react@19.2.3): dependencies: motion-dom: 11.18.1 motion-utils: 11.18.1 - tslib: 2.8.1 - optionalDependencies: react: 19.2.3 react-dom: 19.2.3(react@19.2.3) + tslib: 2.8.1 fresh@0.5.2: {} @@ -12701,7 +12685,6 @@ snapshots: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.3.0 - optionalDependencies: webpack: 5.103.0 htmlparser2@10.0.0: @@ -12756,13 +12739,12 @@ snapshots: http-proxy-middleware@2.0.9(@types/express@4.17.25): dependencies: + '@types/express': 4.17.25 '@types/http-proxy': 1.17.17 http-proxy: 1.18.1 is-glob: 4.0.3 is-plain-obj: 3.0.0 micromatch: 4.0.8 - optionalDependencies: - '@types/express': 4.17.25 transitivePeerDependencies: - debug @@ -13433,28 +13415,27 @@ snapshots: next-intl-swc-plugin-extractor@4.6.0: {} - next-intl@4.6.0(next@15.0.5(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(typescript@5.2.2): + next-intl@4.6.0(next@15.0.5)(react@19.2.3)(typescript@5.2.2): dependencies: '@formatjs/intl-localematcher': 0.5.10 '@parcel/watcher': 2.5.1 '@swc/core': 1.15.3 negotiator: 1.0.0 - next: 15.0.5(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + next: 15.0.5(@babel/core@7.28.5)(react-dom@19.2.3)(react@19.2.3) next-intl-swc-plugin-extractor: 4.6.0 po-parser: 2.0.0 react: 19.2.3 - use-intl: 4.6.0(react@19.2.3) - optionalDependencies: typescript: 5.2.2 + use-intl: 4.6.0(react@19.2.3) transitivePeerDependencies: - '@swc/helpers' - next-themes@0.4.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + next-themes@0.4.6(react-dom@19.2.3)(react@19.2.3): dependencies: react: 19.2.3 react-dom: 19.2.3(react@19.2.3) - next@15.0.5(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + next@15.0.5(@babel/core@7.28.5)(react-dom@19.2.3)(react@19.2.3): dependencies: '@next/env': 15.0.5 '@swc/counter': 0.1.3 @@ -13797,9 +13778,8 @@ snapshots: postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6): dependencies: - lilconfig: 3.1.3 - optionalDependencies: jiti: 1.21.7 + lilconfig: 3.1.3 postcss: 8.5.6 postcss-loader@7.3.4(postcss@8.5.6)(typescript@5.2.2)(webpack@5.103.0): @@ -14105,7 +14085,7 @@ snapshots: lodash.flow: 3.5.0 pure-color: 1.3.0 - react-dev-utils@12.0.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.2.2)(webpack@5.103.0): + react-dev-utils@12.0.1(typescript@5.2.2)(webpack@5.103.0): dependencies: '@babel/code-frame': 7.27.1 address: 1.2.2 @@ -14116,7 +14096,7 @@ snapshots: escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.39.1(jiti@1.21.7))(typescript@5.2.2)(webpack@5.103.0) + fork-ts-checker-webpack-plugin: 6.5.3(typescript@5.2.2)(webpack@5.103.0) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -14131,9 +14111,8 @@ snapshots: shell-quote: 1.8.3 strip-ansi: 6.0.1 text-table: 0.2.0 - webpack: 5.103.0 - optionalDependencies: typescript: 5.2.2 + webpack: 5.103.0 transitivePeerDependencies: - eslint - supports-color @@ -14155,7 +14134,7 @@ snapshots: react-fast-compare@3.2.2: {} - react-helmet-async@1.3.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2): + react-helmet-async@1.3.0(react-dom@17.0.2)(react@17.0.2): dependencies: '@babel/runtime': 7.28.4 invariant: 2.2.4 @@ -14176,21 +14155,21 @@ snapshots: react-is@17.0.2: {} - react-json-view@1.21.3(@types/react@19.2.7)(react-dom@17.0.2(react@17.0.2))(react@17.0.2): + react-json-view@1.21.3(react-dom@17.0.2)(react@17.0.2): dependencies: flux: 4.0.4(react@17.0.2) react: 17.0.2 react-base16-styling: 0.6.0 react-dom: 17.0.2(react@17.0.2) react-lifecycles-compat: 3.0.4 - react-textarea-autosize: 8.5.9(@types/react@19.2.7)(react@17.0.2) + react-textarea-autosize: 8.5.9(react@17.0.2) transitivePeerDependencies: - '@types/react' - encoding react-lifecycles-compat@3.0.4: {} - react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@5.5.2(react@17.0.2))(webpack@5.103.0): + react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@5.5.2)(webpack@5.103.0): dependencies: '@babel/runtime': 7.28.4 react-loadable: '@docusaurus/react-loadable@5.5.2(react@17.0.2)' @@ -14198,7 +14177,7 @@ snapshots: react-refresh@0.18.0: {} - react-router-config@5.1.1(react-router@5.3.4(react@17.0.2))(react@17.0.2): + react-router-config@5.1.1(react-router@5.3.4)(react@17.0.2): dependencies: '@babel/runtime': 7.28.4 react: 17.0.2 @@ -14228,12 +14207,12 @@ snapshots: tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - react-textarea-autosize@8.5.9(@types/react@19.2.7)(react@17.0.2): + react-textarea-autosize@8.5.9(react@17.0.2): dependencies: '@babel/runtime': 7.28.4 react: 17.0.2 - use-composed-ref: 1.4.0(@types/react@19.2.7)(react@17.0.2) - use-latest: 1.3.0(@types/react@19.2.7)(react@17.0.2) + use-composed-ref: 1.4.0(react@17.0.2) + use-latest: 1.3.0(react@17.0.2) transitivePeerDependencies: - '@types/react' @@ -14931,10 +14910,9 @@ snapshots: styled-jsx@5.1.6(@babel/core@7.28.5)(react@19.2.3): dependencies: + '@babel/core': 7.28.5 client-only: 0.0.1 react: 19.2.3 - optionalDependencies: - '@babel/core': 7.28.5 stylehacks@5.1.1(postcss@8.5.6): dependencies: @@ -15322,24 +15300,21 @@ snapshots: dependencies: punycode: 2.3.1 - url-loader@4.1.1(file-loader@6.2.0(webpack@5.103.0))(webpack@5.103.0): + url-loader@4.1.1(file-loader@6.2.0)(webpack@5.103.0): dependencies: + file-loader: 6.2.0(webpack@5.103.0) loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.3.0 webpack: 5.103.0 - optionalDependencies: - file-loader: 6.2.0(webpack@5.103.0) url-parse-lax@3.0.0: dependencies: prepend-http: 2.0.0 - use-composed-ref@1.4.0(@types/react@19.2.7)(react@17.0.2): + use-composed-ref@1.4.0(react@17.0.2): dependencies: react: 17.0.2 - optionalDependencies: - '@types/react': 19.2.7 use-intl@4.6.0(react@19.2.3): dependencies: @@ -15348,18 +15323,14 @@ snapshots: intl-messageformat: 10.7.18 react: 19.2.3 - use-isomorphic-layout-effect@1.2.1(@types/react@19.2.7)(react@17.0.2): + use-isomorphic-layout-effect@1.2.1(react@17.0.2): dependencies: react: 17.0.2 - optionalDependencies: - '@types/react': 19.2.7 - use-latest@1.3.0(@types/react@19.2.7)(react@17.0.2): + use-latest@1.3.0(react@17.0.2): dependencies: react: 17.0.2 - use-isomorphic-layout-effect: 1.2.1(@types/react@19.2.7)(react@17.0.2) - optionalDependencies: - '@types/react': 19.2.7 + use-isomorphic-layout-effect: 1.2.1(react@17.0.2) use-sync-external-store@1.6.0(react@17.0.2): dependencies: @@ -15393,8 +15364,9 @@ snapshots: unist-util-stringify-position: 2.0.3 vfile-message: 2.0.4 - vite@7.2.7(@types/node@20.19.26)(jiti@1.21.7)(terser@5.44.1): + vite@7.2.7(@types/node@20.19.26): dependencies: + '@types/node': 20.19.26 esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 @@ -15402,15 +15374,13 @@ snapshots: rollup: 4.53.3 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 20.19.26 fsevents: 2.3.3 - jiti: 1.21.7 - terser: 5.44.1 - vitest@4.0.15(@types/node@20.19.26)(jiti@1.21.7)(jsdom@27.3.0(postcss@8.5.6))(terser@5.44.1): + vitest@4.0.15(@types/node@20.19.26)(jsdom@27.3.0): dependencies: + '@types/node': 20.19.26 '@vitest/expect': 4.0.15 - '@vitest/mocker': 4.0.15(vite@7.2.7(@types/node@20.19.26)(jiti@1.21.7)(terser@5.44.1)) + '@vitest/mocker': 4.0.15(vite@7.2.7) '@vitest/pretty-format': 4.0.15 '@vitest/runner': 4.0.15 '@vitest/snapshot': 4.0.15 @@ -15418,6 +15388,7 @@ snapshots: '@vitest/utils': 4.0.15 es-module-lexer: 1.7.0 expect-type: 1.3.0 + jsdom: 27.3.0(postcss@8.5.6) magic-string: 0.30.21 obug: 2.1.1 pathe: 2.0.3 @@ -15427,11 +15398,8 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.2.7(@types/node@20.19.26)(jiti@1.21.7)(terser@5.44.1) + vite: 7.2.7(@types/node@20.19.26) why-is-node-running: 2.3.0 - optionalDependencies: - '@types/node': 20.19.26 - jsdom: 27.3.0(postcss@8.5.6) transitivePeerDependencies: - jiti - less @@ -15531,10 +15499,9 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 + webpack: 5.103.0 webpack-dev-middleware: 5.3.4(webpack@5.103.0) ws: 8.18.3 - optionalDependencies: - webpack: 5.103.0 transitivePeerDependencies: - bufferutil - debug diff --git a/vercel.json b/vercel.json new file mode 100644 index 0000000..4c40e66 --- /dev/null +++ b/vercel.json @@ -0,0 +1,7 @@ +{ + "$schema": "https://openapi.vercel.sh/vercel.json", + "buildCommand": "pnpm --filter portfolio build", + "installCommand": "pnpm install --no-frozen-lockfile", + "outputDirectory": "apps/portfolio/.next", + "framework": "nextjs" +}