From a97a50f91a2851c3efe3472c5b8495d209211dd1 Mon Sep 17 00:00:00 2001 From: kevin olson Date: Sat, 17 Aug 2024 13:01:13 -0500 Subject: [PATCH] =?UTF-8?q?=F0=9F=A7=AA=20some=20progress=20with=20tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/types/oauth.d.ts | 1 + nuxt.config.ts | 3 +- package.json | 13 +- pnpm-lock.yaml | 1253 +++++++++++------ server/api/[...slug].ts | 20 +- .../{api/routes => controllers}/cartridge.ts | 0 .../{api/routes => controllers}/cartridges.ts | 0 server/{api/routes => controllers}/logout.ts | 0 server/{api/routes => controllers}/me.ts | 0 server/{api/routes => controllers}/pen.ts | 0 server/{api/routes => controllers}/pens.ts | 0 server/{api/routes => controllers}/shot.ts | 0 server/{api/routes => controllers}/shots.ts | 0 server/{api/routes => controllers}/token.ts | 0 server/{api/routes => controllers}/user.ts | 0 server/utils/oauth.ts | 77 +- server/utils/user.ts | 85 ++ test/user.test.ts | 47 + vitest.config.ts | 18 + 19 files changed, 989 insertions(+), 528 deletions(-) rename server/{api/routes => controllers}/cartridge.ts (100%) rename server/{api/routes => controllers}/cartridges.ts (100%) rename server/{api/routes => controllers}/logout.ts (100%) rename server/{api/routes => controllers}/me.ts (100%) rename server/{api/routes => controllers}/pen.ts (100%) rename server/{api/routes => controllers}/pens.ts (100%) rename server/{api/routes => controllers}/shot.ts (100%) rename server/{api/routes => controllers}/shots.ts (100%) rename server/{api/routes => controllers}/token.ts (100%) rename server/{api/routes => controllers}/user.ts (100%) create mode 100644 server/utils/user.ts create mode 100644 test/user.test.ts create mode 100644 vitest.config.ts diff --git a/app/types/oauth.d.ts b/app/types/oauth.d.ts index dace030..1b98803 100644 --- a/app/types/oauth.d.ts +++ b/app/types/oauth.d.ts @@ -2,6 +2,7 @@ export interface UserInfo { name: string avatar: string email: string + payload?: UserPayload } export interface GoogleUserInfo { diff --git a/nuxt.config.ts b/nuxt.config.ts index c78418e..1e9cc02 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -9,6 +9,7 @@ export default defineNuxtConfig({ '@nuxt/content', '@nuxt/image', 'nuxt-auth-utils', + "@nuxt/test-utils" ], eslint: { config: { @@ -62,4 +63,4 @@ export default defineNuxtConfig({ }, }, }, -}) +}) \ No newline at end of file diff --git a/package.json b/package.json index a039a72..f4d6a2e 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,12 @@ "scripts": { "build": "nuxt build", "dev": "nuxt dev", + "dev-test": "nuxt dev --dotenv .env.test", "generate": "nuxt generate", "preview": "nuxt preview", + "test": "vitest run", + "test:reset": "pnpm run test:db-reset; vitest run", + "test:db-reset": "dotenv -e .env.test -- npx prisma migrate reset --force", "lint": "eslint .", "lint:fix": "eslint . --fix", "lint:action": "pnpm run lint -f @jamesacarr/github-actions" @@ -16,21 +20,24 @@ "date-fns": "^3.6.0" }, "devDependencies": { - "@antfu/eslint-config": "^2.25.1", + "@antfu/eslint-config": "^2.26.0", "@iconify-json/logos": "^1.1.44", "@iconify-json/mdi": "^1.1.68", "@nuxt/content": "^2.13.2", "@nuxt/devtools": "^1.3.9", "@nuxt/eslint": "^0.5.0", "@nuxt/image": "^1.7.0", + "@nuxt/test-utils": "^3.14.1", "@prisma/client": "^5.18.0", "@prisma/nuxt": "^0.0.35", "@types/ua-parser-js": "^0.7.39", + "dotenv-cli": "^7.4.2", + "happy-dom": "^14.12.3", "nuxt": "^3.12.4", "nuxt-auth-utils": "^0.3.4", "prisma": "^5.18.0", "ua-parser-js": "^1.0.38", + "vitest": "^2.0.5", "zod": "^3.23.8" - }, - "packageManager": "pnpm@8.7.0+sha1.4a6f863625170af87d027789f72662e0601ecb57" + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 63020fa..f733868 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,14 +10,14 @@ importers: dependencies: '@nuxt/ui-pro': specifier: ^1.4.1 - version: 1.4.1(magicast@0.3.4)(rollup@4.20.0)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4)) + version: 1.4.1(magicast@0.3.4)(rollup@4.20.0)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4)) date-fns: specifier: ^3.6.0 version: 3.6.0 devDependencies: '@antfu/eslint-config': - specifier: ^2.25.1 - version: 2.25.1(@typescript-eslint/utils@8.1.0(eslint@8.57.0)(typescript@5.5.4))(@vue/compiler-sfc@3.4.38)(eslint@8.57.0)(typescript@5.5.4) + specifier: ^2.26.0 + version: 2.26.0(@typescript-eslint/utils@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(@vue/compiler-sfc@3.4.38)(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)(vitest@2.0.5(@types/node@22.4.0)(happy-dom@14.12.3)(terser@5.31.6)) '@iconify-json/logos': specifier: ^1.1.44 version: 1.1.44 @@ -26,28 +26,37 @@ importers: version: 1.1.68 '@nuxt/content': specifier: ^2.13.2 - version: 2.13.2(ioredis@5.4.1)(magicast@0.3.4)(nuxt@3.12.4(@parcel/watcher@2.4.1)(@types/node@22.3.0)(eslint@8.57.0)(ioredis@5.4.1)(magicast@0.3.4)(optionator@0.9.4)(rollup@4.20.0)(terser@5.31.6)(typescript@5.5.4)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6)))(rollup@4.20.0)(vue@3.4.38(typescript@5.5.4)) + version: 2.13.2(ioredis@5.4.1)(magicast@0.3.4)(nuxt@3.12.4(@parcel/watcher@2.4.1)(@types/node@22.4.0)(eslint@9.9.0(jiti@1.21.6))(ioredis@5.4.1)(magicast@0.3.4)(optionator@0.9.4)(rollup@4.20.0)(terser@5.31.6)(typescript@5.5.4)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6)))(rollup@4.20.0)(vue@3.4.38(typescript@5.5.4)) '@nuxt/devtools': specifier: ^1.3.9 - version: 1.3.9(rollup@4.20.0)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6)) + version: 1.3.9(rollup@4.20.0)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6)) '@nuxt/eslint': specifier: ^0.5.0 - version: 0.5.0(eslint@8.57.0)(magicast@0.3.4)(rollup@4.20.0)(typescript@5.5.4)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6)) + version: 0.5.0(eslint@9.9.0(jiti@1.21.6))(magicast@0.3.4)(rollup@4.20.0)(typescript@5.5.4)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6)) '@nuxt/image': specifier: ^1.7.0 version: 1.7.0(ioredis@5.4.1)(magicast@0.3.4)(rollup@4.20.0) + '@nuxt/test-utils': + specifier: ^3.14.1 + version: 3.14.1(h3@1.12.0)(happy-dom@14.12.3)(magicast@0.3.4)(nitropack@2.9.7(magicast@0.3.4))(rollup@4.20.0)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6))(vitest@2.0.5(@types/node@22.4.0)(happy-dom@14.12.3)(terser@5.31.6))(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4)) '@prisma/client': specifier: ^5.18.0 version: 5.18.0(prisma@5.18.0) '@prisma/nuxt': specifier: ^0.0.35 - version: 0.0.35(magicast@0.3.4)(prisma@5.18.0)(rollup@4.20.0)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6)) + version: 0.0.35(magicast@0.3.4)(prisma@5.18.0)(rollup@4.20.0)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6)) '@types/ua-parser-js': specifier: ^0.7.39 version: 0.7.39 + dotenv-cli: + specifier: ^7.4.2 + version: 7.4.2 + happy-dom: + specifier: ^14.12.3 + version: 14.12.3 nuxt: specifier: ^3.12.4 - version: 3.12.4(@parcel/watcher@2.4.1)(@types/node@22.3.0)(eslint@8.57.0)(ioredis@5.4.1)(magicast@0.3.4)(optionator@0.9.4)(rollup@4.20.0)(terser@5.31.6)(typescript@5.5.4)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6)) + version: 3.12.4(@parcel/watcher@2.4.1)(@types/node@22.4.0)(eslint@9.9.0(jiti@1.21.6))(ioredis@5.4.1)(magicast@0.3.4)(optionator@0.9.4)(rollup@4.20.0)(terser@5.31.6)(typescript@5.5.4)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6)) nuxt-auth-utils: specifier: ^0.3.4 version: 0.3.4(magicast@0.3.4)(rollup@4.20.0) @@ -57,6 +66,9 @@ importers: ua-parser-js: specifier: ^1.0.38 version: 1.0.38 + vitest: + specifier: ^2.0.5 + version: 2.0.5(@types/node@22.4.0)(happy-dom@14.12.3)(terser@5.31.6) zod: specifier: ^3.23.8 version: 3.23.8 @@ -71,8 +83,8 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@antfu/eslint-config@2.25.1': - resolution: {integrity: sha512-aWnq8kNL4MM3RjXJtMvCGhzzXiukbNn4oXT3RFVgQ2KkBmryrlCos8HW7zfF27gggSqrMX8p75wHk8zM/Mo9+Q==} + '@antfu/eslint-config@2.26.0': + resolution: {integrity: sha512-eGYHHyXeajqaeNk+IAH8vGeIugcx21M2heJ/K/H72MuuDC8tCe0PlI0UkKHv63fMP1G5Em1KepOc/Aov/Erwaw==} hasBin: true peerDependencies: '@eslint-react/eslint-plugin': ^1.5.8 @@ -120,8 +132,8 @@ packages: '@antfu/install-pkg@0.1.1': resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==} - '@antfu/install-pkg@0.3.4': - resolution: {integrity: sha512-xmYFuDsaS5hlqVSJYVIzBGnUBhZR6NpwelQx/qr9wHTenqMF14YhsexWADcFyMCKwf/vApnvLTfEEnaOBvo5SA==} + '@antfu/install-pkg@0.3.5': + resolution: {integrity: sha512-HwIACY0IzrM7FGafMbWZOqEDBSfCwPcylu+GacaRcxJm4Yvvuh3Dy2vZwqdJAzXponc6aLO9FaH4l75pq8/ZSA==} '@antfu/utils@0.7.10': resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} @@ -330,8 +342,8 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.23.0': - resolution: {integrity: sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==} + '@esbuild/aix-ppc64@0.23.1': + resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -348,8 +360,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.23.0': - resolution: {integrity: sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==} + '@esbuild/android-arm64@0.23.1': + resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -366,8 +378,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.23.0': - resolution: {integrity: sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==} + '@esbuild/android-arm@0.23.1': + resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -384,8 +396,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.23.0': - resolution: {integrity: sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==} + '@esbuild/android-x64@0.23.1': + resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -402,8 +414,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.23.0': - resolution: {integrity: sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==} + '@esbuild/darwin-arm64@0.23.1': + resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -420,8 +432,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.23.0': - resolution: {integrity: sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==} + '@esbuild/darwin-x64@0.23.1': + resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -438,8 +450,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.23.0': - resolution: {integrity: sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==} + '@esbuild/freebsd-arm64@0.23.1': + resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -456,8 +468,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.23.0': - resolution: {integrity: sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==} + '@esbuild/freebsd-x64@0.23.1': + resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -474,8 +486,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.23.0': - resolution: {integrity: sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==} + '@esbuild/linux-arm64@0.23.1': + resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -492,8 +504,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.23.0': - resolution: {integrity: sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==} + '@esbuild/linux-arm@0.23.1': + resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -510,8 +522,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.23.0': - resolution: {integrity: sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==} + '@esbuild/linux-ia32@0.23.1': + resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -528,8 +540,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.23.0': - resolution: {integrity: sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==} + '@esbuild/linux-loong64@0.23.1': + resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -546,8 +558,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.23.0': - resolution: {integrity: sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==} + '@esbuild/linux-mips64el@0.23.1': + resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -564,8 +576,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.23.0': - resolution: {integrity: sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==} + '@esbuild/linux-ppc64@0.23.1': + resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -582,8 +594,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.23.0': - resolution: {integrity: sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==} + '@esbuild/linux-riscv64@0.23.1': + resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -600,8 +612,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.23.0': - resolution: {integrity: sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==} + '@esbuild/linux-s390x@0.23.1': + resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -618,8 +630,8 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.23.0': - resolution: {integrity: sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==} + '@esbuild/linux-x64@0.23.1': + resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} engines: {node: '>=18'} cpu: [x64] os: [linux] @@ -636,14 +648,14 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.23.0': - resolution: {integrity: sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==} + '@esbuild/netbsd-x64@0.23.1': + resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.23.0': - resolution: {integrity: sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==} + '@esbuild/openbsd-arm64@0.23.1': + resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -660,8 +672,8 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.23.0': - resolution: {integrity: sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==} + '@esbuild/openbsd-x64@0.23.1': + resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] @@ -678,8 +690,8 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.23.0': - resolution: {integrity: sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==} + '@esbuild/sunos-x64@0.23.1': + resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -696,8 +708,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.23.0': - resolution: {integrity: sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==} + '@esbuild/win32-arm64@0.23.1': + resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -714,8 +726,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.23.0': - resolution: {integrity: sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==} + '@esbuild/win32-ia32@0.23.1': + resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -732,12 +744,18 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.23.0': - resolution: {integrity: sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==} + '@esbuild/win32-x64@0.23.1': + resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} engines: {node: '>=18'} cpu: [x64] os: [win32] + '@eslint-community/eslint-plugin-eslint-comments@4.4.0': + resolution: {integrity: sha512-yljsWl5Qv3IkIRmJ38h3NrHXFCm4EUl55M8doGTF6hvzvFF8kRpextgSrg2dwHev9lzBZyafCr9RelGIyQm6fw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + '@eslint-community/eslint-utils@4.4.0': resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -752,19 +770,15 @@ packages: resolution: {integrity: sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/config-inspector@0.5.2': - resolution: {integrity: sha512-m7uUwWhYU4DoHTakyLIRauqnYK05Bv8G+R47IN7a6KC4XXAjIw/OeztgBU5tjGNfzsSOM8nr9Rf779B7D3GPtw==} + '@eslint/config-inspector@0.5.3': + resolution: {integrity: sha512-ZetBSOuoZ+5U947Y3VDbZKerILI6SuiVPCz9zJiJKGVPgm/42rGZe31yeSUp0/kyiSIIpKD3RXXzqqXVzIFMOw==} hasBin: true peerDependencies: eslint: ^8.50.0 || ^9.0.0 - '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@eslint/js@8.57.0': - resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/eslintrc@3.1.0': + resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/js@9.9.0': resolution: {integrity: sha512-hhetes6ZHP3BlXLxmd8K2SNgkhNSi+UcecbnwWKwpP7kyi/uC75DJ1lOOBO3xrC4jyojtGE3YxKZPHfk4yrgug==} @@ -794,18 +808,13 @@ packages: peerDependencies: vue: ^3.2.0 - '@humanwhocodes/config-array@0.11.14': - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead - '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/object-schema@2.0.3': - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - deprecated: Use @eslint/object-schema instead + '@humanwhocodes/retry@0.3.0': + resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} + engines: {node: '>=18.18'} '@iconify-json/heroicons@1.1.24': resolution: {integrity: sha512-Axd6nxsEeQMpuK8ugkAkJ1kS6cbmgXX1s1+Z6NbANvtgtNTBIx9bLQcEL6loKjxpfktDXERElrR5G6xzWOqysg==} @@ -819,8 +828,8 @@ packages: '@iconify-json/vscode-icons@1.1.37': resolution: {integrity: sha512-02+dR2/LdIZTqGfyQerla5snhdN4edwYgpDuFZpI2lK9w8OVm26WYbg8RR8TxXQrlCRs726NQYxl5W+7V1YM/Q==} - '@iconify/collections@1.0.449': - resolution: {integrity: sha512-qkAj2Qcsjqwh4H3vdgTQ+SGbbfvAxZXPDM8KG0gUtGFORAKuSES6UVoEuIPdT5rxtJaJw+Km/ucdJ+eCSmO8Xw==} + '@iconify/collections@1.0.450': + resolution: {integrity: sha512-h8cW4Ut1tAUCxr7wZBp8dwgive6IeY1OCYBraR23ismei7vFgx9FB9oNJvahhOYtIClqX0+BreJwOB05aYxejw==} '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} @@ -861,6 +870,10 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jsdevtools/ez-spawn@3.0.4': + resolution: {integrity: sha512-f5DRIOZf7wxogefH03RjMPMdBF7ADTWUMoOs9kaJo06EfwF+aFhMZMDZxHg/Xe12hptN9xoZjGso2fdjapBRIA==} + engines: {node: '>=10'} + '@jsdevtools/ono@7.1.3': resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} @@ -976,6 +989,47 @@ packages: resolution: {integrity: sha512-KH6wxzsNys69daSO0xUv0LEBAfhwwjK1M+0Cdi1/vxmifCslMIY7lN11B4eywSfscbyVPAYJvANyc7XiVPImBQ==} hasBin: true + '@nuxt/test-utils@3.14.1': + resolution: {integrity: sha512-D8F18hnOHQSarKnzsLORRXzFPlI9Y5fcQFRKwJgGhnejlIRX6sFvVnyl2SDgCvoV+F2x2czQsdGkwg51iWAshA==} + engines: {node: '>=18.20.4'} + peerDependencies: + '@cucumber/cucumber': ^10.3.1 + '@jest/globals': ^29.5.0 + '@playwright/test': ^1.43.1 + '@testing-library/vue': ^7.0.0 || ^8.0.1 + '@vitest/ui': ^0.34.6 || ^1.0.0 || ^2.0.0 + '@vue/test-utils': ^2.4.2 + h3: '*' + happy-dom: ^9.10.9 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 + jsdom: ^22.0.0 || ^23.0.0 || ^24.0.0 + nitropack: '*' + playwright-core: ^1.43.1 + vite: '*' + vitest: ^0.34.6 || ^1.0.0 || ^2.0.0 + vue: ^3.3.4 + vue-router: ^4.0.0 + peerDependenciesMeta: + '@cucumber/cucumber': + optional: true + '@jest/globals': + optional: true + '@playwright/test': + optional: true + '@testing-library/vue': + optional: true + '@vitest/ui': + optional: true + '@vue/test-utils': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + playwright-core: + optional: true + vitest: + optional: true + '@nuxt/ui-pro@1.4.1': resolution: {integrity: sha512-ab+SNjyWHQTH23/WJD0gDE2p6FoF5zEshij4HFAhkco7x5w1HeGMtyLDUlzDb95zIaxAC+Mj5EP+ytBH/McJrg==} @@ -989,8 +1043,8 @@ packages: peerDependencies: vue: ^3.3.4 - '@nuxtjs/color-mode@3.4.2': - resolution: {integrity: sha512-6A+lDP8R6fFXc1Ip5tDepKq9MJW6oxbRlz1plvW52yacnpeDFXv5S5rDS0ax31AuSFUPlgzHymFSdjcylBwZ6w==} + '@nuxtjs/color-mode@3.4.4': + resolution: {integrity: sha512-VSNJVGnRIjiGmfbMa0cN+rwNRowDRTL/wku/z5MpKSanVo3khIRitBNqNviso1l3T+LW0pLHeXBNp6L8g/l1EA==} '@nuxtjs/mdc@0.8.3': resolution: {integrity: sha512-FqvJFWkBN9u2FeWog+7+C0aIOx0WIu61TYgAXPmmIOVVua6s2mXQsMyF3fXY2M56QBIaYJzK/SYN+5FGr5GNTQ==} @@ -1297,31 +1351,31 @@ packages: '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} - '@stylistic/eslint-plugin-js@2.6.2': - resolution: {integrity: sha512-wCr/kVctAPayMU3pcOI1MKR7MoKIh6VKZU89lPklAqtJoxT+Em6RueiiARbpznUYG5eg3LymiU+aMD+aIZXdqA==} + '@stylistic/eslint-plugin-js@2.6.4': + resolution: {integrity: sha512-kx1hS3xTvzxZLdr/DCU/dLBE++vcP97sHeEFX2QXhk1Ipa4K1rzPOLw1HCbf4mU3s+7kHP5eYpDe+QteEOFLug==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.40.0' - '@stylistic/eslint-plugin-jsx@2.6.2': - resolution: {integrity: sha512-dSXK/fSPA938J1fBi10QmhzLKtZ/2TuyVNHQMk8jUhWfKJDleAogaSqcWNAbN8fwcoe9UWmt/3StiIf2oYC1aQ==} + '@stylistic/eslint-plugin-jsx@2.6.4': + resolution: {integrity: sha512-bIvVhdtjmyu3S10V7QRIuawtCZSq9gRmzAX23ucjCOdSFzEwlq+di0IM0riBAvvQerrJL4SM6G3xgyPs8BSXIA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.40.0' - '@stylistic/eslint-plugin-plus@2.6.2': - resolution: {integrity: sha512-cANcPASfRvq3VTbbQCrSIXq+2AI0IW68PNYaZoXXS0ENlp7HDB8dmrsJnOgWCcoEvdCB8z/eWcG/eq/v5Qcl+Q==} + '@stylistic/eslint-plugin-plus@2.6.4': + resolution: {integrity: sha512-EuRvtxhf7Hv8OoMIePulP/6rBJIgPTu1l5GAm1780WcF1Cl8bOZXIn84Pdac5pNv6lVlzCOFm8MD3VE+2YROuA==} peerDependencies: eslint: '*' - '@stylistic/eslint-plugin-ts@2.6.2': - resolution: {integrity: sha512-6OEN3VtUNxjgOvWPavnC10MByr1H4zsgwNND3rQXr5lDFv93MLUnTsH+/SH15OkuqdyJgrQILI6b9lYecb1vIg==} + '@stylistic/eslint-plugin-ts@2.6.4': + resolution: {integrity: sha512-yxL8Hj6WkObw1jfiLpBzKy5yfxY6vwlwO4miq34ySErUjUecPV5jxfVbOe4q1QDPKemQGPq93v7sAQS5PzM8lA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.40.0' - '@stylistic/eslint-plugin@2.6.2': - resolution: {integrity: sha512-Ic5oFNM/25iuagob6LiIBkSI/A2y45TsyKtDtODXHRZDy52WfPfeexI6r+OH5+aWN9QGob2Bw+4JRM9/4areWw==} + '@stylistic/eslint-plugin@2.6.4': + resolution: {integrity: sha512-euUGnjzH8EOqEYTGk9dB2OBINp0FX1nuO7/k4fO82zNRBIKZgJoDwTLM4Ce+Om6W1Qmh1PrZjCr4jh4tMEXGPQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.40.0' @@ -1388,8 +1442,8 @@ packages: '@types/ms@0.7.34': resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - '@types/node@22.3.0': - resolution: {integrity: sha512-nrWpWVaDZuaVc5X84xJ0vNrLvomM205oQyLsRt7OHNZbSHslcWsvgFR7O7hire2ZonjLrWBbedmotmIlJDVd6g==} + '@types/node@22.4.0': + resolution: {integrity: sha512-49AbMDwYUz7EXxKU/r7mXOsxwFr4BYbvB7tWYxVuLdb2ibd30ijjXINSMAHiEEZk5PCRBmW1gUeisn2VMKt3cQ==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -1547,6 +1601,24 @@ packages: vitest: optional: true + '@vitest/expect@2.0.5': + resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} + + '@vitest/pretty-format@2.0.5': + resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} + + '@vitest/runner@2.0.5': + resolution: {integrity: sha512-TfRfZa6Bkk9ky4tW0z20WKXFEwwvWhRY+84CnSEtq4+3ZvDlJyY32oNTJtM7AW9ihW90tX/1Q78cb6FjoAs+ig==} + + '@vitest/snapshot@2.0.5': + resolution: {integrity: sha512-SgCPUeDFLaM0mIUHfaArq8fD2WbaXG/zVXjRupthYfYGzc8ztbFbu6dUNOblBG7XLMR1kEhS/DNnfCZ2IhdDew==} + + '@vitest/spy@2.0.5': + resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} + + '@vitest/utils@2.0.5': + resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} + '@voxpelli/config-array-find-files@0.1.2': resolution: {integrity: sha512-jOva73R+0Nc5/pyS/piBSjQzO4EehME7rPSkBpPC9PYSta+yj3OpF14v0m0HLLYLVNuyHbBjQh5QvGIZwTH2eA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1780,6 +1852,10 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + ast-kit@1.0.1: resolution: {integrity: sha512-XdXKlmX3YIrGKJS7d324CAbswH+C1klMCIRQ4VRy0+iPxGeP2scVOoYd09/V6uGjGAi/ZuEwBLzT7xBerSKNQg==} engines: {node: '>=16.14.0'} @@ -1909,6 +1985,9 @@ packages: resolution: {integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==} engines: {node: '>= 6.0.0'} + call-me-maybe@1.0.2: + resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -1930,6 +2009,10 @@ packages: ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + chai@5.1.1: + resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} + engines: {node: '>=12'} + chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -1967,6 +2050,10 @@ packages: character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} @@ -2247,6 +2334,10 @@ packages: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + deep-equal@1.0.1: resolution: {integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==} @@ -2359,6 +2450,14 @@ packages: resolution: {integrity: sha512-xaBe6ZT4DHPkg0k4Ytbvn5xoxgpG0jOS1dYxSOwAHPuNLjP3/OzN0gH55SrLqpx8cBfSaVt91lXYkApjb+nYdQ==} engines: {node: '>=16'} + dotenv-cli@7.4.2: + resolution: {integrity: sha512-SbUj8l61zIbzyhIbg0FwPJq6+wjbzdn9oEtozQpZ6kW2ihCcapKVZj49oCT3oPM+mgQm+itgvUQcG5szxVrZTA==} + hasBin: true + + dotenv-expand@10.0.0: + resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} + engines: {node: '>=12'} + dotenv@16.4.5: resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} @@ -2372,8 +2471,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.8: - resolution: {integrity: sha512-4Nx0gP2tPNBLTrFxBMHpkQbtn2hidPVr/+/FTtcCiBYTucqc70zRyVZiOLj17Ui3wTO7SQ1/N+hkHYzJjBzt6A==} + electron-to-chromium@1.5.10: + resolution: {integrity: sha512-C3RDERDjrNW262GCRvpoer3a0Ksd66CtgDLxMHhzShQ8fhL4kwnpVXsJPAKg9xJjIROXUbLBrvtOzVAjALMIWA==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -2431,8 +2530,8 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.23.0: - resolution: {integrity: sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==} + esbuild@0.23.1: + resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} engines: {node: '>=18'} hasBin: true @@ -2491,12 +2590,6 @@ packages: peerDependencies: eslint: '>=8' - eslint-plugin-eslint-comments@3.2.0: - resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} - engines: {node: '>=6.5.0'} - peerDependencies: - eslint: '>=4.19.1' - eslint-plugin-import-x@3.1.0: resolution: {integrity: sha512-/UbPA+bYY7nIxcjL3kpcDY3UNdoLHFhyBFzHox2M0ypcUoueTn6woZUUmzzi5et/dXChksasYYFeKE2wshOrhg==} engines: {node: '>=16'} @@ -2533,8 +2626,8 @@ packages: peerDependencies: eslint: '>=8.23.0' - eslint-plugin-no-only-tests@3.1.0: - resolution: {integrity: sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw==} + eslint-plugin-no-only-tests@3.3.0: + resolution: {integrity: sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==} engines: {node: '>=5.0.0'} eslint-plugin-perfectionist@3.2.0: @@ -2605,6 +2698,10 @@ packages: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-scope@8.0.2: + resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-typegen@0.3.1: resolution: {integrity: sha512-D1hMMOuQw+WmN1uMk5lDfc9XCgOZMRlvOWwQfME6dyAgJqxGJ/STEyN7YBmt3zMqKkN7XJJ+4mjB82JcR4s/UA==} peerDependencies: @@ -2618,10 +2715,15 @@ packages: resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@8.57.0: - resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint@9.9.0: + resolution: {integrity: sha512-JfiKJrbx0506OEerjK2Y1QlldtBxkAlLxT5OEcRF8uaQ86noDe2k31Vw9rnSWv+MXZHj7OOUV/dA0AhdLFcyvA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true espree@10.1.0: resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} @@ -2687,6 +2789,10 @@ packages: externality@1.0.2: resolution: {integrity: sha512-LyExtJWKxtgVzmgtEHyQtLFpw1KFhQphF9nTG8TpAIVkiI/xQ3FJh75tRFLYl4hkn7BNIIdLJInuDAavX35pMw==} + fake-indexeddb@6.0.0: + resolution: {integrity: sha512-YEboHE5VfopUclOck7LncgIqskAqnv4q0EWbYCaxKKjAvO93c+TJIaBuGy8CBFdbg9nKdpN3AuPRwVBJ4k7NrQ==} + engines: {node: '>=18'} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -2709,9 +2815,9 @@ packages: fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} @@ -2736,9 +2842,9 @@ packages: resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} engines: {node: '>=18'} - flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} flat@6.0.1: resolution: {integrity: sha512-/3FfIa8mbrg3xE7+wAhWeV+bd7L2Mof+xtZb5dRDKZ+wDvYJK4WDYeIOuOhre5Yv5aQObZrlbRmk3RTSiuQBtw==} @@ -2802,6 +2908,9 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} + get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + get-port-please@3.1.2: resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} @@ -2869,6 +2978,10 @@ packages: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + globals@15.9.0: resolution: {integrity: sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==} engines: {node: '>=18'} @@ -2894,6 +3007,10 @@ packages: h3@1.12.0: resolution: {integrity: sha512-Zi/CcNeWBXDrFNlV0hUBJQR9F7a96RjMeAZweW/ZWkR9fuXrMcvKnSA63f/zZ9l0GgQOZDVHGvXivNN9PWOwhA==} + happy-dom@14.12.3: + resolution: {integrity: sha512-vsYlEs3E9gLwA1Hp+w3qzu+RUDFf4VTT8cyKqVICoZ2k7WM++Qyd2LwzyTi5bqMJFiIC/vNpTDYuxdreENRK/g==} + engines: {node: '>=16.0.0'} + has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} @@ -3361,6 +3478,9 @@ packages: longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + loupe@3.1.1: + resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} + lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -3949,6 +4069,10 @@ packages: pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} + perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} @@ -3982,8 +4106,8 @@ packages: resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==} engines: {node: '>= 0.12.0'} - postcss-calc@10.0.1: - resolution: {integrity: sha512-pp1Z3FxtxA+xHAoWXcOXgnBN1WPu4ZiJ5LWGjKyf9MMreagAsaTUtnqFK1y1sHhyJddAkYTPu6XSuLgb3oYCjw==} + postcss-calc@10.0.2: + resolution: {integrity: sha512-DT/Wwm6fCKgpYVI7ZEWuPJ4az8hiEHtCUeYjZXqU7Ou4QqYh1Df2yCQ7Ca6N7xqKPFkxN3fhf+u9KSoOCJNAjg==} engines: {node: ^18.12 || ^20.9 || >=22.0} peerDependencies: postcss: ^8.4.38 @@ -4476,6 +4600,9 @@ packages: shiki@1.13.0: resolution: {integrity: sha512-e0dWfnONbEv6xl7FJy3XIhsVHQ/65XHDZl92+6H9+4xWjfdo7pmkqG7Kg47KWtDiEtzM5Z+oEfb4vtRvoZ/X9w==} + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -4579,6 +4706,9 @@ packages: stable-hash@0.0.4: resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + standard-as-callback@2.1.0: resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} @@ -4596,6 +4726,10 @@ packages: streamx@2.18.0: resolution: {integrity: sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==} + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -4752,13 +4886,21 @@ packages: tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - tinyexec@0.1.4: - resolution: {integrity: sha512-Ba2ELcNnnWkgqnAJBouhcsDsYitbD9LIAVNSz3746u50f+tlF3wO0uB3uqyz8NHFSTpv23qtT47XGDw8pXW5DA==} + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinypool@1.0.0: + resolution: {integrity: sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==} + engines: {node: ^18.0.0 || >=20.0.0} tinyrainbow@1.2.0: resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} engines: {node: '>=14.0.0'} + tinyspy@3.0.0: + resolution: {integrity: sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==} + engines: {node: '>=14.0.0'} + to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} @@ -4811,6 +4953,10 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} + type-detect@4.1.0: + resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} + engines: {node: '>=4'} + type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} @@ -4855,8 +5001,8 @@ packages: unctx@2.3.1: resolution: {integrity: sha512-PhKke8ZYauiqh3FEMVNm7ljvzQiph0Mt3GBRve03IJm7ukfaON2OBK795tLwhbyfzknuRRkW0+Ze+CQUmzOZ+A==} - undici-types@6.18.2: - resolution: {integrity: sha512-5ruQbENj95yDYJNS3TvcaxPMshV7aizdv/hWYjGIKoANWKjhWNBsr2YEuYZKodQulB1b8l7ILOuDQep3afowQQ==} + undici-types@6.19.6: + resolution: {integrity: sha512-e/vggGopEfTKSvj4ihnOLTsqhrKRN3LeO6qSN/GxohhuRv8qH9bNQ4B8W7e/vFL+0XTnmHPB4/kegunZGA4Org==} undici@5.28.4: resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} @@ -4907,16 +5053,16 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - unplugin-vue-router@0.10.4: - resolution: {integrity: sha512-PXnUnX/MPCI/YaxmfYxE1JVc/5n7QGLGWJtIB8aI1hsQA/A14T+39d+wHxDnWzFJd5VXsGusV3G/RREdocbYGQ==} + unplugin-vue-router@0.10.7: + resolution: {integrity: sha512-5KEh7Swc1L2Xh5WOD7yQLeB5bO3iTw+Hst7qMxwmwYcPm9qVrtrRTZUftn2Hj4is17oMKgqacyWadjQzwW5B/Q==} peerDependencies: vue-router: ^4.4.0 peerDependenciesMeta: vue-router: optional: true - unplugin@1.12.1: - resolution: {integrity: sha512-aXEH9c5qi3uYZHo0niUtxDlT9ylG/luMW/dZslSCkbtC31wCyFkmM0kyoBBh+Grhn7CL+/kvKLfN61/EdxPxMQ==} + unplugin@1.12.2: + resolution: {integrity: sha512-bEqQxeC7rxtxPZ3M5V4Djcc4lQqKPgGe3mAWZvxcSmX5jhGxll19NliaRzQSQPrk4xJZSGniK3puLWpRuZN7VQ==} engines: {node: '>=14.0.0'} unstorage@1.10.2: @@ -5067,8 +5213,8 @@ packages: peerDependencies: vite: ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 - vite@5.4.0: - resolution: {integrity: sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==} + vite@5.4.1: + resolution: {integrity: sha512-1oE6yuNXssjrZdblI9AfBbHCC41nnyoVoEZxQnID6yvQZAFBzxxkqoFLtHUMkYunL8hwOLEjgTuxpkRxvba3kA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -5098,6 +5244,34 @@ packages: terser: optional: true + vitest-environment-nuxt@1.0.1: + resolution: {integrity: sha512-eBCwtIQriXW5/M49FjqNKfnlJYlG2LWMSNFsRVKomc8CaMqmhQPBS5LZ9DlgYL9T8xIVsiA6RZn2lk7vxov3Ow==} + + vitest@2.0.5: + resolution: {integrity: sha512-8GUxONfauuIdeSl5f9GTgVEpg5BTOlplET4WEDaeY2QBiN8wSm68vxN/tb5z405OwppfoCavnwXafiaYBC/xOA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 2.0.5 + '@vitest/ui': 2.0.5 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + vscode-jsonrpc@6.0.0: resolution: {integrity: sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==} engines: {node: '>=8.0.0 || >=10.0.0'} @@ -5169,6 +5343,10 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + webpack-sources@3.2.3: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} @@ -5176,6 +5354,10 @@ packages: webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -5189,6 +5371,11 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} hasBin: true + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + wide-align@1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} @@ -5305,42 +5492,42 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@antfu/eslint-config@2.25.1(@typescript-eslint/utils@8.1.0(eslint@8.57.0)(typescript@5.5.4))(@vue/compiler-sfc@3.4.38)(eslint@8.57.0)(typescript@5.5.4)': + '@antfu/eslint-config@2.26.0(@typescript-eslint/utils@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(@vue/compiler-sfc@3.4.38)(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)(vitest@2.0.5(@types/node@22.4.0)(happy-dom@14.12.3)(terser@5.31.6))': dependencies: - '@antfu/install-pkg': 0.3.4 + '@antfu/install-pkg': 0.3.5 '@clack/prompts': 0.7.0 - '@stylistic/eslint-plugin': 2.6.2(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/eslint-plugin': 8.1.0(@typescript-eslint/parser@8.1.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/parser': 8.1.0(eslint@8.57.0)(typescript@5.5.4) - '@vitest/eslint-plugin': 1.0.3(@typescript-eslint/utils@8.1.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - eslint: 8.57.0 + '@eslint-community/eslint-plugin-eslint-comments': 4.4.0(eslint@9.9.0(jiti@1.21.6)) + '@stylistic/eslint-plugin': 2.6.4(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/eslint-plugin': 8.1.0(@typescript-eslint/parser@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/parser': 8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) + '@vitest/eslint-plugin': 1.0.3(@typescript-eslint/utils@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)(vitest@2.0.5(@types/node@22.4.0)(happy-dom@14.12.3)(terser@5.31.6)) + eslint: 9.9.0(jiti@1.21.6) eslint-config-flat-gitignore: 0.1.8 eslint-flat-config-utils: 0.3.0 - eslint-merge-processors: 0.1.0(eslint@8.57.0) - eslint-plugin-antfu: 2.3.5(eslint@8.57.0) - eslint-plugin-command: 0.2.3(eslint@8.57.0) - eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.0) - eslint-plugin-import-x: 3.1.0(eslint@8.57.0)(typescript@5.5.4) - eslint-plugin-jsdoc: 50.2.2(eslint@8.57.0) - eslint-plugin-jsonc: 2.16.0(eslint@8.57.0) - eslint-plugin-markdown: 5.1.0(eslint@8.57.0) - eslint-plugin-n: 17.10.2(eslint@8.57.0) - eslint-plugin-no-only-tests: 3.1.0 - eslint-plugin-perfectionist: 3.2.0(eslint@8.57.0)(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@8.57.0)) - eslint-plugin-regexp: 2.6.0(eslint@8.57.0) - eslint-plugin-toml: 0.11.1(eslint@8.57.0) - eslint-plugin-unicorn: 55.0.0(eslint@8.57.0) - eslint-plugin-unused-imports: 4.1.3(@typescript-eslint/eslint-plugin@8.1.0(@typescript-eslint/parser@8.1.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0) - eslint-plugin-vue: 9.27.0(eslint@8.57.0) - eslint-plugin-yml: 1.14.0(eslint@8.57.0) - eslint-processor-vue-blocks: 0.1.2(@vue/compiler-sfc@3.4.38)(eslint@8.57.0) + eslint-merge-processors: 0.1.0(eslint@9.9.0(jiti@1.21.6)) + eslint-plugin-antfu: 2.3.5(eslint@9.9.0(jiti@1.21.6)) + eslint-plugin-command: 0.2.3(eslint@9.9.0(jiti@1.21.6)) + eslint-plugin-import-x: 3.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) + eslint-plugin-jsdoc: 50.2.2(eslint@9.9.0(jiti@1.21.6)) + eslint-plugin-jsonc: 2.16.0(eslint@9.9.0(jiti@1.21.6)) + eslint-plugin-markdown: 5.1.0(eslint@9.9.0(jiti@1.21.6)) + eslint-plugin-n: 17.10.2(eslint@9.9.0(jiti@1.21.6)) + eslint-plugin-no-only-tests: 3.3.0 + eslint-plugin-perfectionist: 3.2.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.9.0(jiti@1.21.6))) + eslint-plugin-regexp: 2.6.0(eslint@9.9.0(jiti@1.21.6)) + eslint-plugin-toml: 0.11.1(eslint@9.9.0(jiti@1.21.6)) + eslint-plugin-unicorn: 55.0.0(eslint@9.9.0(jiti@1.21.6)) + eslint-plugin-unused-imports: 4.1.3(@typescript-eslint/eslint-plugin@8.1.0(@typescript-eslint/parser@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.6)) + eslint-plugin-vue: 9.27.0(eslint@9.9.0(jiti@1.21.6)) + eslint-plugin-yml: 1.14.0(eslint@9.9.0(jiti@1.21.6)) + eslint-processor-vue-blocks: 0.1.2(@vue/compiler-sfc@3.4.38)(eslint@9.9.0(jiti@1.21.6)) globals: 15.9.0 jsonc-eslint-parser: 2.4.0 local-pkg: 0.5.0 parse-gitignore: 2.0.0 picocolors: 1.0.1 toml-eslint-parser: 0.10.0 - vue-eslint-parser: 9.4.3(eslint@8.57.0) + vue-eslint-parser: 9.4.3(eslint@9.9.0(jiti@1.21.6)) yaml-eslint-parser: 1.2.3 yargs: 17.7.2 transitivePeerDependencies: @@ -5356,9 +5543,9 @@ snapshots: execa: 5.1.1 find-up: 5.0.0 - '@antfu/install-pkg@0.3.4': + '@antfu/install-pkg@0.3.5': dependencies: - tinyexec: 0.1.4 + '@jsdevtools/ez-spawn': 3.0.4 '@antfu/utils@0.7.10': {} @@ -5627,7 +5814,7 @@ snapshots: '@esbuild/aix-ppc64@0.21.5': optional: true - '@esbuild/aix-ppc64@0.23.0': + '@esbuild/aix-ppc64@0.23.1': optional: true '@esbuild/android-arm64@0.20.2': @@ -5636,7 +5823,7 @@ snapshots: '@esbuild/android-arm64@0.21.5': optional: true - '@esbuild/android-arm64@0.23.0': + '@esbuild/android-arm64@0.23.1': optional: true '@esbuild/android-arm@0.20.2': @@ -5645,7 +5832,7 @@ snapshots: '@esbuild/android-arm@0.21.5': optional: true - '@esbuild/android-arm@0.23.0': + '@esbuild/android-arm@0.23.1': optional: true '@esbuild/android-x64@0.20.2': @@ -5654,7 +5841,7 @@ snapshots: '@esbuild/android-x64@0.21.5': optional: true - '@esbuild/android-x64@0.23.0': + '@esbuild/android-x64@0.23.1': optional: true '@esbuild/darwin-arm64@0.20.2': @@ -5663,7 +5850,7 @@ snapshots: '@esbuild/darwin-arm64@0.21.5': optional: true - '@esbuild/darwin-arm64@0.23.0': + '@esbuild/darwin-arm64@0.23.1': optional: true '@esbuild/darwin-x64@0.20.2': @@ -5672,7 +5859,7 @@ snapshots: '@esbuild/darwin-x64@0.21.5': optional: true - '@esbuild/darwin-x64@0.23.0': + '@esbuild/darwin-x64@0.23.1': optional: true '@esbuild/freebsd-arm64@0.20.2': @@ -5681,7 +5868,7 @@ snapshots: '@esbuild/freebsd-arm64@0.21.5': optional: true - '@esbuild/freebsd-arm64@0.23.0': + '@esbuild/freebsd-arm64@0.23.1': optional: true '@esbuild/freebsd-x64@0.20.2': @@ -5690,7 +5877,7 @@ snapshots: '@esbuild/freebsd-x64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.23.0': + '@esbuild/freebsd-x64@0.23.1': optional: true '@esbuild/linux-arm64@0.20.2': @@ -5699,7 +5886,7 @@ snapshots: '@esbuild/linux-arm64@0.21.5': optional: true - '@esbuild/linux-arm64@0.23.0': + '@esbuild/linux-arm64@0.23.1': optional: true '@esbuild/linux-arm@0.20.2': @@ -5708,7 +5895,7 @@ snapshots: '@esbuild/linux-arm@0.21.5': optional: true - '@esbuild/linux-arm@0.23.0': + '@esbuild/linux-arm@0.23.1': optional: true '@esbuild/linux-ia32@0.20.2': @@ -5717,7 +5904,7 @@ snapshots: '@esbuild/linux-ia32@0.21.5': optional: true - '@esbuild/linux-ia32@0.23.0': + '@esbuild/linux-ia32@0.23.1': optional: true '@esbuild/linux-loong64@0.20.2': @@ -5726,7 +5913,7 @@ snapshots: '@esbuild/linux-loong64@0.21.5': optional: true - '@esbuild/linux-loong64@0.23.0': + '@esbuild/linux-loong64@0.23.1': optional: true '@esbuild/linux-mips64el@0.20.2': @@ -5735,7 +5922,7 @@ snapshots: '@esbuild/linux-mips64el@0.21.5': optional: true - '@esbuild/linux-mips64el@0.23.0': + '@esbuild/linux-mips64el@0.23.1': optional: true '@esbuild/linux-ppc64@0.20.2': @@ -5744,7 +5931,7 @@ snapshots: '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-ppc64@0.23.0': + '@esbuild/linux-ppc64@0.23.1': optional: true '@esbuild/linux-riscv64@0.20.2': @@ -5753,7 +5940,7 @@ snapshots: '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.23.0': + '@esbuild/linux-riscv64@0.23.1': optional: true '@esbuild/linux-s390x@0.20.2': @@ -5762,7 +5949,7 @@ snapshots: '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/linux-s390x@0.23.0': + '@esbuild/linux-s390x@0.23.1': optional: true '@esbuild/linux-x64@0.20.2': @@ -5771,7 +5958,7 @@ snapshots: '@esbuild/linux-x64@0.21.5': optional: true - '@esbuild/linux-x64@0.23.0': + '@esbuild/linux-x64@0.23.1': optional: true '@esbuild/netbsd-x64@0.20.2': @@ -5780,10 +5967,10 @@ snapshots: '@esbuild/netbsd-x64@0.21.5': optional: true - '@esbuild/netbsd-x64@0.23.0': + '@esbuild/netbsd-x64@0.23.1': optional: true - '@esbuild/openbsd-arm64@0.23.0': + '@esbuild/openbsd-arm64@0.23.1': optional: true '@esbuild/openbsd-x64@0.20.2': @@ -5792,7 +5979,7 @@ snapshots: '@esbuild/openbsd-x64@0.21.5': optional: true - '@esbuild/openbsd-x64@0.23.0': + '@esbuild/openbsd-x64@0.23.1': optional: true '@esbuild/sunos-x64@0.20.2': @@ -5801,7 +5988,7 @@ snapshots: '@esbuild/sunos-x64@0.21.5': optional: true - '@esbuild/sunos-x64@0.23.0': + '@esbuild/sunos-x64@0.23.1': optional: true '@esbuild/win32-arm64@0.20.2': @@ -5810,7 +5997,7 @@ snapshots: '@esbuild/win32-arm64@0.21.5': optional: true - '@esbuild/win32-arm64@0.23.0': + '@esbuild/win32-arm64@0.23.1': optional: true '@esbuild/win32-ia32@0.20.2': @@ -5819,7 +6006,7 @@ snapshots: '@esbuild/win32-ia32@0.21.5': optional: true - '@esbuild/win32-ia32@0.23.0': + '@esbuild/win32-ia32@0.23.1': optional: true '@esbuild/win32-x64@0.20.2': @@ -5828,12 +6015,18 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true - '@esbuild/win32-x64@0.23.0': + '@esbuild/win32-x64@0.23.1': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': + '@eslint-community/eslint-plugin-eslint-comments@4.4.0(eslint@9.9.0(jiti@1.21.6))': + dependencies: + escape-string-regexp: 4.0.0 + eslint: 9.9.0(jiti@1.21.6) + ignore: 5.3.2 + + '@eslint-community/eslint-utils@4.4.0(eslint@9.9.0(jiti@1.21.6))': dependencies: - eslint: 8.57.0 + eslint: 9.9.0(jiti@1.21.6) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.11.0': {} @@ -5846,7 +6039,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/config-inspector@0.5.2(eslint@8.57.0)': + '@eslint/config-inspector@0.5.3(eslint@9.9.0(jiti@1.21.6))': dependencies: '@eslint/config-array': 0.17.1 '@voxpelli/config-array-find-files': 0.1.2(@eslint/config-array@0.17.1) @@ -5854,7 +6047,7 @@ snapshots: cac: 6.7.14 chokidar: 3.6.0 esbuild: 0.21.5 - eslint: 8.57.0 + eslint: 9.9.0(jiti@1.21.6) fast-glob: 3.3.2 find-up: 7.0.0 get-port-please: 3.1.2 @@ -5871,12 +6064,12 @@ snapshots: - uWebSockets.js - utf-8-validate - '@eslint/eslintrc@2.1.4': + '@eslint/eslintrc@3.1.0': dependencies: ajv: 6.12.6 debug: 4.3.6 - espree: 9.6.1 - globals: 13.24.0 + espree: 10.1.0 + globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -5885,8 +6078,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@8.57.0': {} - '@eslint/js@9.9.0': {} '@eslint/object-schema@2.1.4': {} @@ -5905,17 +6096,9 @@ snapshots: '@tanstack/vue-virtual': 3.9.0(vue@3.4.38(typescript@5.5.4)) vue: 3.4.38(typescript@5.5.4) - '@humanwhocodes/config-array@0.11.14': - dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.6 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/object-schema@2.0.3': {} + '@humanwhocodes/retry@0.3.0': {} '@iconify-json/heroicons@1.1.24': dependencies: @@ -5933,7 +6116,7 @@ snapshots: dependencies: '@iconify/types': 2.0.0 - '@iconify/collections@1.0.449': + '@iconify/collections@1.0.450': dependencies: '@iconify/types': 2.0.0 @@ -5989,6 +6172,13 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@jsdevtools/ez-spawn@3.0.4': + dependencies: + call-me-maybe: 1.0.2 + cross-spawn: 7.0.3 + string-argv: 0.3.2 + type-detect: 4.1.0 + '@jsdevtools/ono@7.1.3': {} '@koa/router@12.0.1': @@ -6059,13 +6249,13 @@ snapshots: '@nodelib/fs.scandir': 3.0.0 fastq: 1.17.1 - '@nuxt/content@2.13.2(ioredis@5.4.1)(magicast@0.3.4)(nuxt@3.12.4(@parcel/watcher@2.4.1)(@types/node@22.3.0)(eslint@8.57.0)(ioredis@5.4.1)(magicast@0.3.4)(optionator@0.9.4)(rollup@4.20.0)(terser@5.31.6)(typescript@5.5.4)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6)))(rollup@4.20.0)(vue@3.4.38(typescript@5.5.4))': + '@nuxt/content@2.13.2(ioredis@5.4.1)(magicast@0.3.4)(nuxt@3.12.4(@parcel/watcher@2.4.1)(@types/node@22.4.0)(eslint@9.9.0(jiti@1.21.6))(ioredis@5.4.1)(magicast@0.3.4)(optionator@0.9.4)(rollup@4.20.0)(terser@5.31.6)(typescript@5.5.4)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6)))(rollup@4.20.0)(vue@3.4.38(typescript@5.5.4))': dependencies: '@nuxt/kit': 3.12.4(magicast@0.3.4)(rollup@4.20.0) '@nuxtjs/mdc': 0.8.3(magicast@0.3.4)(rollup@4.20.0) '@vueuse/core': 10.11.1(vue@3.4.38(typescript@5.5.4)) '@vueuse/head': 2.0.0(vue@3.4.38(typescript@5.5.4)) - '@vueuse/nuxt': 10.11.1(magicast@0.3.4)(nuxt@3.12.4(@parcel/watcher@2.4.1)(@types/node@22.3.0)(eslint@8.57.0)(ioredis@5.4.1)(magicast@0.3.4)(optionator@0.9.4)(rollup@4.20.0)(terser@5.31.6)(typescript@5.5.4)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6)))(rollup@4.20.0)(vue@3.4.38(typescript@5.5.4)) + '@vueuse/nuxt': 10.11.1(magicast@0.3.4)(nuxt@3.12.4(@parcel/watcher@2.4.1)(@types/node@22.4.0)(eslint@9.9.0(jiti@1.21.6))(ioredis@5.4.1)(magicast@0.3.4)(optionator@0.9.4)(rollup@4.20.0)(terser@5.31.6)(typescript@5.5.4)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6)))(rollup@4.20.0)(vue@3.4.38(typescript@5.5.4)) consola: 3.2.3 defu: 6.1.4 destr: 2.0.3 @@ -6114,12 +6304,12 @@ snapshots: '@nuxt/devalue@2.0.2': {} - '@nuxt/devtools-kit@1.3.9(magicast@0.3.4)(rollup@4.20.0)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6))': + '@nuxt/devtools-kit@1.3.9(magicast@0.3.4)(rollup@4.20.0)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6))': dependencies: '@nuxt/kit': 3.12.4(magicast@0.3.4)(rollup@4.20.0) '@nuxt/schema': 3.12.4(rollup@4.20.0) execa: 7.2.0 - vite: 5.4.0(@types/node@22.3.0)(terser@5.31.6) + vite: 5.4.1(@types/node@22.4.0)(terser@5.31.6) transitivePeerDependencies: - magicast - rollup @@ -6138,13 +6328,13 @@ snapshots: rc9: 2.1.2 semver: 7.6.3 - '@nuxt/devtools@1.3.9(rollup@4.20.0)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6))': + '@nuxt/devtools@1.3.9(rollup@4.20.0)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6))': dependencies: '@antfu/utils': 0.7.10 - '@nuxt/devtools-kit': 1.3.9(magicast@0.3.4)(rollup@4.20.0)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6)) + '@nuxt/devtools-kit': 1.3.9(magicast@0.3.4)(rollup@4.20.0)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6)) '@nuxt/devtools-wizard': 1.3.9 '@nuxt/kit': 3.12.4(magicast@0.3.4)(rollup@4.20.0) - '@vue/devtools-core': 7.3.3(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6)) + '@vue/devtools-core': 7.3.3(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6)) '@vue/devtools-kit': 7.3.3 birpc: 0.2.17 consola: 3.2.3 @@ -6173,9 +6363,9 @@ snapshots: simple-git: 3.25.0 sirv: 2.0.4 unimport: 3.10.0(rollup@4.20.0) - vite: 5.4.0(@types/node@22.3.0)(terser@5.31.6) - vite-plugin-inspect: 0.8.5(@nuxt/kit@3.12.4(magicast@0.3.4)(rollup@4.20.0))(rollup@4.20.0)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6)) - vite-plugin-vue-inspector: 5.1.3(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6)) + vite: 5.4.1(@types/node@22.4.0)(terser@5.31.6) + vite-plugin-inspect: 0.8.5(@nuxt/kit@3.12.4(magicast@0.3.4)(rollup@4.20.0))(rollup@4.20.0)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6)) + vite-plugin-vue-inspector: 5.1.3(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6)) which: 3.0.1 ws: 8.18.0 transitivePeerDependencies: @@ -6184,51 +6374,51 @@ snapshots: - supports-color - utf-8-validate - '@nuxt/eslint-config@0.5.0(eslint@8.57.0)(typescript@5.5.4)': + '@nuxt/eslint-config@0.5.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)': dependencies: '@eslint/js': 9.9.0 - '@nuxt/eslint-plugin': 0.5.0(eslint@8.57.0)(typescript@5.5.4) + '@nuxt/eslint-plugin': 0.5.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) '@rushstack/eslint-patch': 1.10.4 - '@stylistic/eslint-plugin': 2.6.2(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/eslint-plugin': 8.1.0(@typescript-eslint/parser@8.1.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/parser': 8.1.0(eslint@8.57.0)(typescript@5.5.4) - eslint: 8.57.0 + '@stylistic/eslint-plugin': 2.6.4(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/eslint-plugin': 8.1.0(@typescript-eslint/parser@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/parser': 8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) + eslint: 9.9.0(jiti@1.21.6) eslint-config-flat-gitignore: 0.1.8 eslint-flat-config-utils: 0.3.0 - eslint-plugin-import-x: 3.1.0(eslint@8.57.0)(typescript@5.5.4) - eslint-plugin-jsdoc: 48.11.0(eslint@8.57.0) - eslint-plugin-regexp: 2.6.0(eslint@8.57.0) - eslint-plugin-unicorn: 55.0.0(eslint@8.57.0) - eslint-plugin-vue: 9.27.0(eslint@8.57.0) + eslint-plugin-import-x: 3.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) + eslint-plugin-jsdoc: 48.11.0(eslint@9.9.0(jiti@1.21.6)) + eslint-plugin-regexp: 2.6.0(eslint@9.9.0(jiti@1.21.6)) + eslint-plugin-unicorn: 55.0.0(eslint@9.9.0(jiti@1.21.6)) + eslint-plugin-vue: 9.27.0(eslint@9.9.0(jiti@1.21.6)) globals: 15.9.0 local-pkg: 0.5.0 pathe: 1.1.2 tslib: 2.6.3 - vue-eslint-parser: 9.4.3(eslint@8.57.0) + vue-eslint-parser: 9.4.3(eslint@9.9.0(jiti@1.21.6)) transitivePeerDependencies: - supports-color - typescript - '@nuxt/eslint-plugin@0.5.0(eslint@8.57.0)(typescript@5.5.4)': + '@nuxt/eslint-plugin@0.5.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)': dependencies: '@typescript-eslint/types': 8.1.0 - '@typescript-eslint/utils': 8.1.0(eslint@8.57.0)(typescript@5.5.4) - eslint: 8.57.0 + '@typescript-eslint/utils': 8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) + eslint: 9.9.0(jiti@1.21.6) transitivePeerDependencies: - supports-color - typescript - '@nuxt/eslint@0.5.0(eslint@8.57.0)(magicast@0.3.4)(rollup@4.20.0)(typescript@5.5.4)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6))': + '@nuxt/eslint@0.5.0(eslint@9.9.0(jiti@1.21.6))(magicast@0.3.4)(rollup@4.20.0)(typescript@5.5.4)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6))': dependencies: - '@eslint/config-inspector': 0.5.2(eslint@8.57.0) - '@nuxt/devtools-kit': 1.3.9(magicast@0.3.4)(rollup@4.20.0)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6)) - '@nuxt/eslint-config': 0.5.0(eslint@8.57.0)(typescript@5.5.4) - '@nuxt/eslint-plugin': 0.5.0(eslint@8.57.0)(typescript@5.5.4) + '@eslint/config-inspector': 0.5.3(eslint@9.9.0(jiti@1.21.6)) + '@nuxt/devtools-kit': 1.3.9(magicast@0.3.4)(rollup@4.20.0)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6)) + '@nuxt/eslint-config': 0.5.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) + '@nuxt/eslint-plugin': 0.5.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) '@nuxt/kit': 3.12.4(magicast@0.3.4)(rollup@4.20.0) chokidar: 3.6.0 - eslint: 8.57.0 + eslint: 9.9.0(jiti@1.21.6) eslint-flat-config-utils: 0.3.0 - eslint-typegen: 0.3.1(eslint@8.57.0) + eslint-typegen: 0.3.1(eslint@9.9.0(jiti@1.21.6)) find-up: 7.0.0 get-port-please: 3.1.2 mlly: 1.7.1 @@ -6244,13 +6434,13 @@ snapshots: - utf-8-validate - vite - '@nuxt/icon@1.4.5(magicast@0.3.4)(rollup@4.20.0)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))': + '@nuxt/icon@1.4.5(magicast@0.3.4)(rollup@4.20.0)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))': dependencies: - '@iconify/collections': 1.0.449 + '@iconify/collections': 1.0.450 '@iconify/types': 2.0.0 '@iconify/utils': 2.1.30 '@iconify/vue': 4.1.3-beta.1(vue@3.4.38(typescript@5.5.4)) - '@nuxt/devtools-kit': 1.3.9(magicast@0.3.4)(rollup@4.20.0)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6)) + '@nuxt/devtools-kit': 1.3.9(magicast@0.3.4)(rollup@4.20.0)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6)) '@nuxt/kit': 3.12.4(magicast@0.3.4)(rollup@4.20.0) consola: 3.2.3 fast-glob: 3.3.2 @@ -6366,10 +6556,48 @@ snapshots: - rollup - supports-color - '@nuxt/ui-pro@1.4.1(magicast@0.3.4)(rollup@4.20.0)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))': + '@nuxt/test-utils@3.14.1(h3@1.12.0)(happy-dom@14.12.3)(magicast@0.3.4)(nitropack@2.9.7(magicast@0.3.4))(rollup@4.20.0)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6))(vitest@2.0.5(@types/node@22.4.0)(happy-dom@14.12.3)(terser@5.31.6))(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4))': + dependencies: + '@nuxt/kit': 3.12.4(magicast@0.3.4)(rollup@4.20.0) + '@nuxt/schema': 3.12.4(rollup@4.20.0) + c12: 1.11.1(magicast@0.3.4) + consola: 3.2.3 + defu: 6.1.4 + destr: 2.0.3 + estree-walker: 3.0.3 + execa: 8.0.1 + fake-indexeddb: 6.0.0 + get-port-please: 3.1.2 + h3: 1.12.0 + local-pkg: 0.5.0 + magic-string: 0.30.11 + nitropack: 2.9.7(magicast@0.3.4) + node-fetch-native: 1.6.4 + ofetch: 1.3.4 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + radix3: 1.1.2 + scule: 1.3.0 + std-env: 3.7.0 + ufo: 1.5.4 + unenv: 1.10.0 + unplugin: 1.12.2 + vite: 5.4.1(@types/node@22.4.0)(terser@5.31.6) + vitest-environment-nuxt: 1.0.1(h3@1.12.0)(happy-dom@14.12.3)(magicast@0.3.4)(nitropack@2.9.7(magicast@0.3.4))(rollup@4.20.0)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6))(vitest@2.0.5(@types/node@22.4.0)(happy-dom@14.12.3)(terser@5.31.6))(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4)) + vue: 3.4.38(typescript@5.5.4) + vue-router: 4.4.3(vue@3.4.38(typescript@5.5.4)) + optionalDependencies: + happy-dom: 14.12.3 + vitest: 2.0.5(@types/node@22.4.0)(happy-dom@14.12.3)(terser@5.31.6) + transitivePeerDependencies: + - magicast + - rollup + - supports-color + + '@nuxt/ui-pro@1.4.1(magicast@0.3.4)(rollup@4.20.0)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))': dependencies: '@iconify-json/vscode-icons': 1.1.37 - '@nuxt/ui': 2.18.4(magicast@0.3.4)(rollup@4.20.0)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4)) + '@nuxt/ui': 2.18.4(magicast@0.3.4)(rollup@4.20.0)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4)) '@vueuse/core': 10.11.1(vue@3.4.38(typescript@5.5.4)) defu: 6.1.4 git-url-parse: 14.1.0 @@ -6400,14 +6628,14 @@ snapshots: - vite - vue - '@nuxt/ui@2.18.4(magicast@0.3.4)(rollup@4.20.0)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))': + '@nuxt/ui@2.18.4(magicast@0.3.4)(rollup@4.20.0)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))': dependencies: '@headlessui/tailwindcss': 0.2.1(tailwindcss@3.4.10) '@headlessui/vue': 1.7.22(vue@3.4.38(typescript@5.5.4)) '@iconify-json/heroicons': 1.1.24 - '@nuxt/icon': 1.4.5(magicast@0.3.4)(rollup@4.20.0)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4)) + '@nuxt/icon': 1.4.5(magicast@0.3.4)(rollup@4.20.0)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4)) '@nuxt/kit': 3.12.4(magicast@0.3.4)(rollup@4.20.0) - '@nuxtjs/color-mode': 3.4.2(magicast@0.3.4)(rollup@4.20.0) + '@nuxtjs/color-mode': 3.4.4(magicast@0.3.4)(rollup@4.20.0) '@nuxtjs/tailwindcss': 6.12.1(magicast@0.3.4)(rollup@4.20.0) '@popperjs/core': 2.11.8 '@tailwindcss/aspect-ratio': 0.4.2(tailwindcss@3.4.10) @@ -6445,18 +6673,18 @@ snapshots: - vite - vue - '@nuxt/vite-builder@3.12.4(@types/node@22.3.0)(eslint@8.57.0)(magicast@0.3.4)(optionator@0.9.4)(rollup@4.20.0)(terser@5.31.6)(typescript@5.5.4)(vue@3.4.38(typescript@5.5.4))': + '@nuxt/vite-builder@3.12.4(@types/node@22.4.0)(eslint@9.9.0(jiti@1.21.6))(magicast@0.3.4)(optionator@0.9.4)(rollup@4.20.0)(terser@5.31.6)(typescript@5.5.4)(vue@3.4.38(typescript@5.5.4))': dependencies: '@nuxt/kit': 3.12.4(magicast@0.3.4)(rollup@4.20.0) '@rollup/plugin-replace': 5.0.7(rollup@4.20.0) - '@vitejs/plugin-vue': 5.1.2(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4)) - '@vitejs/plugin-vue-jsx': 4.0.1(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4)) + '@vitejs/plugin-vue': 5.1.2(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4)) + '@vitejs/plugin-vue-jsx': 4.0.1(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4)) autoprefixer: 10.4.20(postcss@8.4.41) clear: 0.1.0 consola: 3.2.3 cssnano: 7.0.5(postcss@8.4.41) defu: 6.1.4 - esbuild: 0.23.0 + esbuild: 0.23.1 escape-string-regexp: 5.0.0 estree-walker: 3.0.3 externality: 1.0.2 @@ -6475,10 +6703,10 @@ snapshots: strip-literal: 2.1.0 ufo: 1.5.4 unenv: 1.10.0 - unplugin: 1.12.1 - vite: 5.4.0(@types/node@22.3.0)(terser@5.31.6) - vite-node: 2.0.5(@types/node@22.3.0)(terser@5.31.6) - vite-plugin-checker: 0.7.2(eslint@8.57.0)(optionator@0.9.4)(typescript@5.5.4)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6)) + unplugin: 1.12.2 + vite: 5.4.1(@types/node@22.4.0)(terser@5.31.6) + vite-node: 2.0.5(@types/node@22.4.0)(terser@5.31.6) + vite-plugin-checker: 0.7.2(eslint@9.9.0(jiti@1.21.6))(optionator@0.9.4)(typescript@5.5.4)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6)) vue: 3.4.38(typescript@5.5.4) vue-bundle-renderer: 2.1.0 transitivePeerDependencies: @@ -6504,7 +6732,7 @@ snapshots: - vti - vue-tsc - '@nuxtjs/color-mode@3.4.2(magicast@0.3.4)(rollup@4.20.0)': + '@nuxtjs/color-mode@3.4.4(magicast@0.3.4)(rollup@4.20.0)': dependencies: '@nuxt/kit': 3.12.4(magicast@0.3.4)(rollup@4.20.0) pathe: 1.1.2 @@ -6673,9 +6901,9 @@ snapshots: dependencies: '@prisma/debug': 5.18.0 - '@prisma/nuxt@0.0.35(magicast@0.3.4)(prisma@5.18.0)(rollup@4.20.0)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6))': + '@prisma/nuxt@0.0.35(magicast@0.3.4)(prisma@5.18.0)(rollup@4.20.0)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6))': dependencies: - '@nuxt/devtools-kit': 1.3.9(magicast@0.3.4)(rollup@4.20.0)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6)) + '@nuxt/devtools-kit': 1.3.9(magicast@0.3.4)(rollup@4.20.0)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6)) '@nuxt/kit': 3.12.4(magicast@0.3.4)(rollup@4.20.0) '@prisma/client': 5.18.0(prisma@5.18.0) chalk: 5.3.0 @@ -6823,49 +7051,47 @@ snapshots: '@socket.io/component-emitter@3.1.2': {} - '@stylistic/eslint-plugin-js@2.6.2(eslint@8.57.0)': + '@stylistic/eslint-plugin-js@2.6.4(eslint@9.9.0(jiti@1.21.6))': dependencies: '@types/eslint': 9.6.0 acorn: 8.12.1 - eslint: 8.57.0 + eslint: 9.9.0(jiti@1.21.6) eslint-visitor-keys: 4.0.0 espree: 10.1.0 - '@stylistic/eslint-plugin-jsx@2.6.2(eslint@8.57.0)': + '@stylistic/eslint-plugin-jsx@2.6.4(eslint@9.9.0(jiti@1.21.6))': dependencies: - '@stylistic/eslint-plugin-js': 2.6.2(eslint@8.57.0) + '@stylistic/eslint-plugin-js': 2.6.4(eslint@9.9.0(jiti@1.21.6)) '@types/eslint': 9.6.0 - eslint: 8.57.0 + eslint: 9.9.0(jiti@1.21.6) + eslint-visitor-keys: 4.0.0 + espree: 10.1.0 estraverse: 5.3.0 picomatch: 4.0.2 - '@stylistic/eslint-plugin-plus@2.6.2(eslint@8.57.0)(typescript@5.5.4)': + '@stylistic/eslint-plugin-plus@2.6.4(eslint@9.9.0(jiti@1.21.6))': dependencies: '@types/eslint': 9.6.0 - '@typescript-eslint/utils': 8.1.0(eslint@8.57.0)(typescript@5.5.4) - eslint: 8.57.0 - transitivePeerDependencies: - - supports-color - - typescript + eslint: 9.9.0(jiti@1.21.6) - '@stylistic/eslint-plugin-ts@2.6.2(eslint@8.57.0)(typescript@5.5.4)': + '@stylistic/eslint-plugin-ts@2.6.4(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)': dependencies: - '@stylistic/eslint-plugin-js': 2.6.2(eslint@8.57.0) + '@stylistic/eslint-plugin-js': 2.6.4(eslint@9.9.0(jiti@1.21.6)) '@types/eslint': 9.6.0 - '@typescript-eslint/utils': 8.1.0(eslint@8.57.0)(typescript@5.5.4) - eslint: 8.57.0 + '@typescript-eslint/utils': 8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) + eslint: 9.9.0(jiti@1.21.6) transitivePeerDependencies: - supports-color - typescript - '@stylistic/eslint-plugin@2.6.2(eslint@8.57.0)(typescript@5.5.4)': + '@stylistic/eslint-plugin@2.6.4(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)': dependencies: - '@stylistic/eslint-plugin-js': 2.6.2(eslint@8.57.0) - '@stylistic/eslint-plugin-jsx': 2.6.2(eslint@8.57.0) - '@stylistic/eslint-plugin-plus': 2.6.2(eslint@8.57.0)(typescript@5.5.4) - '@stylistic/eslint-plugin-ts': 2.6.2(eslint@8.57.0)(typescript@5.5.4) + '@stylistic/eslint-plugin-js': 2.6.4(eslint@9.9.0(jiti@1.21.6)) + '@stylistic/eslint-plugin-jsx': 2.6.4(eslint@9.9.0(jiti@1.21.6)) + '@stylistic/eslint-plugin-plus': 2.6.4(eslint@9.9.0(jiti@1.21.6)) + '@stylistic/eslint-plugin-ts': 2.6.4(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) '@types/eslint': 9.6.0 - eslint: 8.57.0 + eslint: 9.9.0(jiti@1.21.6) transitivePeerDependencies: - supports-color - typescript @@ -6922,7 +7148,7 @@ snapshots: '@types/http-proxy@1.17.15': dependencies: - '@types/node': 22.3.0 + '@types/node': 22.4.0 '@types/json-schema@7.0.15': {} @@ -6936,9 +7162,9 @@ snapshots: '@types/ms@0.7.34': {} - '@types/node@22.3.0': + '@types/node@22.4.0': dependencies: - undici-types: 6.18.2 + undici-types: 6.19.6 '@types/normalize-package-data@2.4.4': {} @@ -6952,15 +7178,15 @@ snapshots: '@types/web-bluetooth@0.0.20': {} - '@typescript-eslint/eslint-plugin@8.1.0(@typescript-eslint/parser@8.1.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/eslint-plugin@8.1.0(@typescript-eslint/parser@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.1.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/parser': 8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) '@typescript-eslint/scope-manager': 8.1.0 - '@typescript-eslint/type-utils': 8.1.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/utils': 8.1.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/type-utils': 8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/utils': 8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) '@typescript-eslint/visitor-keys': 8.1.0 - eslint: 8.57.0 + eslint: 9.9.0(jiti@1.21.6) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -6970,14 +7196,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.1.0(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/parser@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)': dependencies: '@typescript-eslint/scope-manager': 8.1.0 '@typescript-eslint/types': 8.1.0 '@typescript-eslint/typescript-estree': 8.1.0(typescript@5.5.4) '@typescript-eslint/visitor-keys': 8.1.0 debug: 4.3.6 - eslint: 8.57.0 + eslint: 9.9.0(jiti@1.21.6) optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: @@ -6993,10 +7219,10 @@ snapshots: '@typescript-eslint/types': 8.1.0 '@typescript-eslint/visitor-keys': 8.1.0 - '@typescript-eslint/type-utils@8.1.0(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/type-utils@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)': dependencies: '@typescript-eslint/typescript-estree': 8.1.0(typescript@5.5.4) - '@typescript-eslint/utils': 8.1.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/utils': 8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) debug: 4.3.6 ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: @@ -7039,24 +7265,24 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/utils@7.18.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@1.21.6)) '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) - eslint: 8.57.0 + eslint: 9.9.0(jiti@1.21.6) transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@8.1.0(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/utils@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@1.21.6)) '@typescript-eslint/scope-manager': 8.1.0 '@typescript-eslint/types': 8.1.0 '@typescript-eslint/typescript-estree': 8.1.0(typescript@5.5.4) - eslint: 8.57.0 + eslint: 9.9.0(jiti@1.21.6) transitivePeerDependencies: - supports-color - typescript @@ -7118,27 +7344,61 @@ snapshots: - encoding - supports-color - '@vitejs/plugin-vue-jsx@4.0.1(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))': + '@vitejs/plugin-vue-jsx@4.0.1(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))': dependencies: '@babel/core': 7.25.2 '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2) '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.25.2) - vite: 5.4.0(@types/node@22.3.0)(terser@5.31.6) + vite: 5.4.1(@types/node@22.4.0)(terser@5.31.6) vue: 3.4.38(typescript@5.5.4) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.1.2(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))': + '@vitejs/plugin-vue@5.1.2(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))': dependencies: - vite: 5.4.0(@types/node@22.3.0)(terser@5.31.6) + vite: 5.4.1(@types/node@22.4.0)(terser@5.31.6) vue: 3.4.38(typescript@5.5.4) - '@vitest/eslint-plugin@1.0.3(@typescript-eslint/utils@8.1.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)': + '@vitest/eslint-plugin@1.0.3(@typescript-eslint/utils@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)(vitest@2.0.5(@types/node@22.4.0)(happy-dom@14.12.3)(terser@5.31.6))': dependencies: - eslint: 8.57.0 + eslint: 9.9.0(jiti@1.21.6) optionalDependencies: - '@typescript-eslint/utils': 8.1.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/utils': 8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) typescript: 5.5.4 + vitest: 2.0.5(@types/node@22.4.0)(happy-dom@14.12.3)(terser@5.31.6) + + '@vitest/expect@2.0.5': + dependencies: + '@vitest/spy': 2.0.5 + '@vitest/utils': 2.0.5 + chai: 5.1.1 + tinyrainbow: 1.2.0 + + '@vitest/pretty-format@2.0.5': + dependencies: + tinyrainbow: 1.2.0 + + '@vitest/runner@2.0.5': + dependencies: + '@vitest/utils': 2.0.5 + pathe: 1.1.2 + + '@vitest/snapshot@2.0.5': + dependencies: + '@vitest/pretty-format': 2.0.5 + magic-string: 0.30.11 + pathe: 1.1.2 + + '@vitest/spy@2.0.5': + dependencies: + tinyspy: 3.0.0 + + '@vitest/utils@2.0.5': + dependencies: + '@vitest/pretty-format': 2.0.5 + estree-walker: 3.0.3 + loupe: 3.1.1 + tinyrainbow: 1.2.0 '@voxpelli/config-array-find-files@0.1.2(@eslint/config-array@0.17.1)': dependencies: @@ -7219,14 +7479,14 @@ snapshots: '@vue/devtools-api@6.6.3': {} - '@vue/devtools-core@7.3.3(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6))': + '@vue/devtools-core@7.3.3(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6))': dependencies: '@vue/devtools-kit': 7.3.3 '@vue/devtools-shared': 7.3.8 mitt: 3.0.1 nanoid: 3.3.7 pathe: 1.1.2 - vite-hot-client: 0.2.3(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6)) + vite-hot-client: 0.2.3(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6)) transitivePeerDependencies: - vite @@ -7307,13 +7567,13 @@ snapshots: '@vueuse/metadata@10.11.1': {} - '@vueuse/nuxt@10.11.1(magicast@0.3.4)(nuxt@3.12.4(@parcel/watcher@2.4.1)(@types/node@22.3.0)(eslint@8.57.0)(ioredis@5.4.1)(magicast@0.3.4)(optionator@0.9.4)(rollup@4.20.0)(terser@5.31.6)(typescript@5.5.4)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6)))(rollup@4.20.0)(vue@3.4.38(typescript@5.5.4))': + '@vueuse/nuxt@10.11.1(magicast@0.3.4)(nuxt@3.12.4(@parcel/watcher@2.4.1)(@types/node@22.4.0)(eslint@9.9.0(jiti@1.21.6))(ioredis@5.4.1)(magicast@0.3.4)(optionator@0.9.4)(rollup@4.20.0)(terser@5.31.6)(typescript@5.5.4)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6)))(rollup@4.20.0)(vue@3.4.38(typescript@5.5.4))': dependencies: '@nuxt/kit': 3.12.4(magicast@0.3.4)(rollup@4.20.0) '@vueuse/core': 10.11.1(vue@3.4.38(typescript@5.5.4)) '@vueuse/metadata': 10.11.1 local-pkg: 0.5.0 - nuxt: 3.12.4(@parcel/watcher@2.4.1)(@types/node@22.3.0)(eslint@8.57.0)(ioredis@5.4.1)(magicast@0.3.4)(optionator@0.9.4)(rollup@4.20.0)(terser@5.31.6)(typescript@5.5.4)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6)) + nuxt: 3.12.4(@parcel/watcher@2.4.1)(@types/node@22.4.0)(eslint@9.9.0(jiti@1.21.6))(ioredis@5.4.1)(magicast@0.3.4)(optionator@0.9.4)(rollup@4.20.0)(terser@5.31.6)(typescript@5.5.4)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6)) vue-demi: 0.14.10(vue@3.4.38(typescript@5.5.4)) transitivePeerDependencies: - '@vue/composition-api' @@ -7425,6 +7685,8 @@ snapshots: array-union@2.1.0: {} + assertion-error@2.0.1: {} + ast-kit@1.0.1: dependencies: '@babel/parser': 7.25.3 @@ -7519,7 +7781,7 @@ snapshots: browserslist@4.23.3: dependencies: caniuse-lite: 1.0.30001651 - electron-to-chromium: 1.5.8 + electron-to-chromium: 1.5.10 node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) @@ -7573,6 +7835,8 @@ snapshots: mime-types: 2.1.35 ylru: 1.4.0 + call-me-maybe@1.0.2: {} + callsites@3.1.0: {} camelcase-css@2.0.1: {} @@ -7590,6 +7854,14 @@ snapshots: ccount@2.0.1: {} + chai@5.1.1: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.1 + pathval: 2.0.0 + chalk@2.4.2: dependencies: ansi-styles: 3.2.1 @@ -7619,6 +7891,8 @@ snapshots: character-reference-invalid@2.0.1: {} + check-error@2.1.1: {} + chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -7807,7 +8081,7 @@ snapshots: css-declaration-sorter: 7.2.0(postcss@8.4.41) cssnano-utils: 5.0.0(postcss@8.4.41) postcss: 8.4.41 - postcss-calc: 10.0.1(postcss@8.4.41) + postcss-calc: 10.0.2(postcss@8.4.41) postcss-colormin: 7.0.2(postcss@8.4.41) postcss-convert-values: 7.0.3(postcss@8.4.41) postcss-discard-comments: 7.0.2(postcss@8.4.41) @@ -7876,6 +8150,8 @@ snapshots: mimic-response: 3.1.0 optional: true + deep-eql@5.0.2: {} + deep-equal@1.0.1: {} deep-extend@0.6.0: @@ -7960,6 +8236,15 @@ snapshots: dependencies: type-fest: 3.13.1 + dotenv-cli@7.4.2: + dependencies: + cross-spawn: 7.0.3 + dotenv: 16.4.5 + dotenv-expand: 10.0.0 + minimist: 1.2.8 + + dotenv-expand@10.0.0: {} + dotenv@16.4.5: {} duplexer@0.1.2: {} @@ -7968,7 +8253,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.8: {} + electron-to-chromium@1.5.10: {} emoji-regex@8.0.0: {} @@ -8068,32 +8353,32 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 - esbuild@0.23.0: + esbuild@0.23.1: optionalDependencies: - '@esbuild/aix-ppc64': 0.23.0 - '@esbuild/android-arm': 0.23.0 - '@esbuild/android-arm64': 0.23.0 - '@esbuild/android-x64': 0.23.0 - '@esbuild/darwin-arm64': 0.23.0 - '@esbuild/darwin-x64': 0.23.0 - '@esbuild/freebsd-arm64': 0.23.0 - '@esbuild/freebsd-x64': 0.23.0 - '@esbuild/linux-arm': 0.23.0 - '@esbuild/linux-arm64': 0.23.0 - '@esbuild/linux-ia32': 0.23.0 - '@esbuild/linux-loong64': 0.23.0 - '@esbuild/linux-mips64el': 0.23.0 - '@esbuild/linux-ppc64': 0.23.0 - '@esbuild/linux-riscv64': 0.23.0 - '@esbuild/linux-s390x': 0.23.0 - '@esbuild/linux-x64': 0.23.0 - '@esbuild/netbsd-x64': 0.23.0 - '@esbuild/openbsd-arm64': 0.23.0 - '@esbuild/openbsd-x64': 0.23.0 - '@esbuild/sunos-x64': 0.23.0 - '@esbuild/win32-arm64': 0.23.0 - '@esbuild/win32-ia32': 0.23.0 - '@esbuild/win32-x64': 0.23.0 + '@esbuild/aix-ppc64': 0.23.1 + '@esbuild/android-arm': 0.23.1 + '@esbuild/android-arm64': 0.23.1 + '@esbuild/android-x64': 0.23.1 + '@esbuild/darwin-arm64': 0.23.1 + '@esbuild/darwin-x64': 0.23.1 + '@esbuild/freebsd-arm64': 0.23.1 + '@esbuild/freebsd-x64': 0.23.1 + '@esbuild/linux-arm': 0.23.1 + '@esbuild/linux-arm64': 0.23.1 + '@esbuild/linux-ia32': 0.23.1 + '@esbuild/linux-loong64': 0.23.1 + '@esbuild/linux-mips64el': 0.23.1 + '@esbuild/linux-ppc64': 0.23.1 + '@esbuild/linux-riscv64': 0.23.1 + '@esbuild/linux-s390x': 0.23.1 + '@esbuild/linux-x64': 0.23.1 + '@esbuild/netbsd-x64': 0.23.1 + '@esbuild/openbsd-arm64': 0.23.1 + '@esbuild/openbsd-x64': 0.23.1 + '@esbuild/sunos-x64': 0.23.1 + '@esbuild/win32-arm64': 0.23.1 + '@esbuild/win32-ia32': 0.23.1 + '@esbuild/win32-x64': 0.23.1 escalade@3.1.2: {} @@ -8105,9 +8390,9 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-compat-utils@0.5.1(eslint@8.57.0): + eslint-compat-utils@0.5.1(eslint@9.9.0(jiti@1.21.6)): dependencies: - eslint: 8.57.0 + eslint: 9.9.0(jiti@1.21.6) semver: 7.6.3 eslint-config-flat-gitignore@0.1.8: @@ -8128,39 +8413,33 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-merge-processors@0.1.0(eslint@8.57.0): + eslint-merge-processors@0.1.0(eslint@9.9.0(jiti@1.21.6)): dependencies: - eslint: 8.57.0 + eslint: 9.9.0(jiti@1.21.6) - eslint-plugin-antfu@2.3.5(eslint@8.57.0): + eslint-plugin-antfu@2.3.5(eslint@9.9.0(jiti@1.21.6)): dependencies: '@antfu/utils': 0.7.10 - eslint: 8.57.0 + eslint: 9.9.0(jiti@1.21.6) - eslint-plugin-command@0.2.3(eslint@8.57.0): + eslint-plugin-command@0.2.3(eslint@9.9.0(jiti@1.21.6)): dependencies: '@es-joy/jsdoccomment': 0.43.1 - eslint: 8.57.0 + eslint: 9.9.0(jiti@1.21.6) - eslint-plugin-es-x@7.8.0(eslint@8.57.0): + eslint-plugin-es-x@7.8.0(eslint@9.9.0(jiti@1.21.6)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@1.21.6)) '@eslint-community/regexpp': 4.11.0 - eslint: 8.57.0 - eslint-compat-utils: 0.5.1(eslint@8.57.0) + eslint: 9.9.0(jiti@1.21.6) + eslint-compat-utils: 0.5.1(eslint@9.9.0(jiti@1.21.6)) - eslint-plugin-eslint-comments@3.2.0(eslint@8.57.0): + eslint-plugin-import-x@3.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4): dependencies: - escape-string-regexp: 1.0.5 - eslint: 8.57.0 - ignore: 5.3.2 - - eslint-plugin-import-x@3.1.0(eslint@8.57.0)(typescript@5.5.4): - dependencies: - '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/utils': 7.18.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) debug: 4.3.6 doctrine: 3.0.0 - eslint: 8.57.0 + eslint: 9.9.0(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 get-tsconfig: 4.7.6 is-glob: 4.0.3 @@ -8172,14 +8451,14 @@ snapshots: - supports-color - typescript - eslint-plugin-jsdoc@48.11.0(eslint@8.57.0): + eslint-plugin-jsdoc@48.11.0(eslint@9.9.0(jiti@1.21.6)): dependencies: '@es-joy/jsdoccomment': 0.46.0 are-docs-informative: 0.0.2 comment-parser: 1.4.1 debug: 4.3.6 escape-string-regexp: 4.0.0 - eslint: 8.57.0 + eslint: 9.9.0(jiti@1.21.6) espree: 10.1.0 esquery: 1.6.0 parse-imports: 2.1.1 @@ -8189,14 +8468,14 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-jsdoc@50.2.2(eslint@8.57.0): + eslint-plugin-jsdoc@50.2.2(eslint@9.9.0(jiti@1.21.6)): dependencies: '@es-joy/jsdoccomment': 0.48.0 are-docs-informative: 0.0.2 comment-parser: 1.4.1 debug: 4.3.6 escape-string-regexp: 4.0.0 - eslint: 8.57.0 + eslint: 9.9.0(jiti@1.21.6) espree: 10.1.0 esquery: 1.6.0 parse-imports: 2.1.1 @@ -8206,80 +8485,80 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-jsonc@2.16.0(eslint@8.57.0): + eslint-plugin-jsonc@2.16.0(eslint@9.9.0(jiti@1.21.6)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - eslint: 8.57.0 - eslint-compat-utils: 0.5.1(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@1.21.6)) + eslint: 9.9.0(jiti@1.21.6) + eslint-compat-utils: 0.5.1(eslint@9.9.0(jiti@1.21.6)) espree: 9.6.1 graphemer: 1.4.0 jsonc-eslint-parser: 2.4.0 natural-compare: 1.4.0 synckit: 0.6.2 - eslint-plugin-markdown@5.1.0(eslint@8.57.0): + eslint-plugin-markdown@5.1.0(eslint@9.9.0(jiti@1.21.6)): dependencies: - eslint: 8.57.0 + eslint: 9.9.0(jiti@1.21.6) mdast-util-from-markdown: 0.8.5 transitivePeerDependencies: - supports-color - eslint-plugin-n@17.10.2(eslint@8.57.0): + eslint-plugin-n@17.10.2(eslint@9.9.0(jiti@1.21.6)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@1.21.6)) enhanced-resolve: 5.17.1 - eslint: 8.57.0 - eslint-plugin-es-x: 7.8.0(eslint@8.57.0) + eslint: 9.9.0(jiti@1.21.6) + eslint-plugin-es-x: 7.8.0(eslint@9.9.0(jiti@1.21.6)) get-tsconfig: 4.7.6 globals: 15.9.0 ignore: 5.3.2 minimatch: 9.0.5 semver: 7.6.3 - eslint-plugin-no-only-tests@3.1.0: {} + eslint-plugin-no-only-tests@3.3.0: {} - eslint-plugin-perfectionist@3.2.0(eslint@8.57.0)(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@8.57.0)): + eslint-plugin-perfectionist@3.2.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.9.0(jiti@1.21.6))): dependencies: '@typescript-eslint/types': 8.1.0 - '@typescript-eslint/utils': 8.1.0(eslint@8.57.0)(typescript@5.5.4) - eslint: 8.57.0 + '@typescript-eslint/utils': 8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) + eslint: 9.9.0(jiti@1.21.6) minimatch: 10.0.1 natural-compare-lite: 1.4.0 optionalDependencies: - vue-eslint-parser: 9.4.3(eslint@8.57.0) + vue-eslint-parser: 9.4.3(eslint@9.9.0(jiti@1.21.6)) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-regexp@2.6.0(eslint@8.57.0): + eslint-plugin-regexp@2.6.0(eslint@9.9.0(jiti@1.21.6)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@1.21.6)) '@eslint-community/regexpp': 4.11.0 comment-parser: 1.4.1 - eslint: 8.57.0 + eslint: 9.9.0(jiti@1.21.6) jsdoc-type-pratt-parser: 4.1.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scslre: 0.3.0 - eslint-plugin-toml@0.11.1(eslint@8.57.0): + eslint-plugin-toml@0.11.1(eslint@9.9.0(jiti@1.21.6)): dependencies: debug: 4.3.6 - eslint: 8.57.0 - eslint-compat-utils: 0.5.1(eslint@8.57.0) + eslint: 9.9.0(jiti@1.21.6) + eslint-compat-utils: 0.5.1(eslint@9.9.0(jiti@1.21.6)) lodash: 4.17.21 toml-eslint-parser: 0.10.0 transitivePeerDependencies: - supports-color - eslint-plugin-unicorn@55.0.0(eslint@8.57.0): + eslint-plugin-unicorn@55.0.0(eslint@9.9.0(jiti@1.21.6)): dependencies: '@babel/helper-validator-identifier': 7.24.7 - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@1.21.6)) ci-info: 4.0.0 clean-regexp: 1.0.0 core-js-compat: 3.38.0 - eslint: 8.57.0 + eslint: 9.9.0(jiti@1.21.6) esquery: 1.6.0 globals: 15.9.0 indent-string: 4.0.0 @@ -8292,51 +8571,56 @@ snapshots: semver: 7.6.3 strip-indent: 3.0.0 - eslint-plugin-unused-imports@4.1.3(@typescript-eslint/eslint-plugin@8.1.0(@typescript-eslint/parser@8.1.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0): + eslint-plugin-unused-imports@4.1.3(@typescript-eslint/eslint-plugin@8.1.0(@typescript-eslint/parser@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.6)): dependencies: - eslint: 8.57.0 + eslint: 9.9.0(jiti@1.21.6) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.1.0(@typescript-eslint/parser@8.1.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/eslint-plugin': 8.1.0(@typescript-eslint/parser@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) - eslint-plugin-vue@9.27.0(eslint@8.57.0): + eslint-plugin-vue@9.27.0(eslint@9.9.0(jiti@1.21.6)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - eslint: 8.57.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@1.21.6)) + eslint: 9.9.0(jiti@1.21.6) globals: 13.24.0 natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.1.2 semver: 7.6.3 - vue-eslint-parser: 9.4.3(eslint@8.57.0) + vue-eslint-parser: 9.4.3(eslint@9.9.0(jiti@1.21.6)) xml-name-validator: 4.0.0 transitivePeerDependencies: - supports-color - eslint-plugin-yml@1.14.0(eslint@8.57.0): + eslint-plugin-yml@1.14.0(eslint@9.9.0(jiti@1.21.6)): dependencies: debug: 4.3.6 - eslint: 8.57.0 - eslint-compat-utils: 0.5.1(eslint@8.57.0) + eslint: 9.9.0(jiti@1.21.6) + eslint-compat-utils: 0.5.1(eslint@9.9.0(jiti@1.21.6)) lodash: 4.17.21 natural-compare: 1.4.0 yaml-eslint-parser: 1.2.3 transitivePeerDependencies: - supports-color - eslint-processor-vue-blocks@0.1.2(@vue/compiler-sfc@3.4.38)(eslint@8.57.0): + eslint-processor-vue-blocks@0.1.2(@vue/compiler-sfc@3.4.38)(eslint@9.9.0(jiti@1.21.6)): dependencies: '@vue/compiler-sfc': 3.4.38 - eslint: 8.57.0 + eslint: 9.9.0(jiti@1.21.6) eslint-scope@7.2.2: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-typegen@0.3.1(eslint@8.57.0): + eslint-scope@8.0.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-typegen@0.3.1(eslint@9.9.0(jiti@1.21.6)): dependencies: '@types/eslint': 9.6.0 - eslint: 8.57.0 + eslint: 9.9.0(jiti@1.21.6) json-schema-to-typescript-lite: 14.1.0 ohash: 1.1.3 @@ -8344,38 +8628,34 @@ snapshots: eslint-visitor-keys@4.0.0: {} - eslint@8.57.0: + eslint@9.9.0(jiti@1.21.6): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@1.21.6)) '@eslint-community/regexpp': 4.11.0 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.0 - '@humanwhocodes/config-array': 0.11.14 + '@eslint/config-array': 0.17.1 + '@eslint/eslintrc': 3.1.0 + '@eslint/js': 9.9.0 '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.3.0 '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 debug: 4.3.6 - doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 + eslint-scope: 8.0.2 + eslint-visitor-keys: 4.0.0 + espree: 10.1.0 esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 + file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 ignore: 5.3.2 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 @@ -8384,6 +8664,8 @@ snapshots: optionator: 0.9.4 strip-ansi: 6.0.1 text-table: 0.2.0 + optionalDependencies: + jiti: 1.21.6 transitivePeerDependencies: - supports-color @@ -8471,6 +8753,8 @@ snapshots: pathe: 1.1.2 ufo: 1.5.4 + fake-indexeddb@6.0.0: {} + fast-deep-equal@3.1.3: {} fast-fifo@1.3.2: {} @@ -8493,9 +8777,9 @@ snapshots: dependencies: reusify: 1.0.4 - file-entry-cache@6.0.1: + file-entry-cache@8.0.0: dependencies: - flat-cache: 3.2.0 + flat-cache: 4.0.1 file-uri-to-path@1.0.0: {} @@ -8521,11 +8805,10 @@ snapshots: path-exists: 5.0.0 unicorn-magic: 0.1.0 - flat-cache@3.2.0: + flat-cache@4.0.1: dependencies: flatted: 3.3.1 keyv: 4.5.4 - rimraf: 3.0.2 flat@6.0.1: {} @@ -8585,6 +8868,8 @@ snapshots: get-caller-file@2.0.5: {} + get-func-name@2.0.2: {} + get-port-please@3.1.2: {} get-stream@6.0.1: {} @@ -8666,6 +8951,8 @@ snapshots: dependencies: type-fest: 0.20.2 + globals@14.0.0: {} + globals@15.9.0: {} globby@11.1.0: @@ -8709,6 +8996,12 @@ snapshots: transitivePeerDependencies: - uWebSockets.js + happy-dom@14.12.3: + dependencies: + entities: 4.5.0 + webidl-conversions: 7.0.0 + whatwg-mimetype: 3.0.0 + has-flag@3.0.0: {} has-flag@4.0.0: {} @@ -9226,6 +9519,10 @@ snapshots: longest-streak@3.1.0: {} + loupe@3.1.1: + dependencies: + get-func-name: 2.0.2 + lru-cache@10.4.3: {} lru-cache@5.1.1: @@ -9867,14 +10164,14 @@ snapshots: - rollup - supports-color - nuxt@3.12.4(@parcel/watcher@2.4.1)(@types/node@22.3.0)(eslint@8.57.0)(ioredis@5.4.1)(magicast@0.3.4)(optionator@0.9.4)(rollup@4.20.0)(terser@5.31.6)(typescript@5.5.4)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6)): + nuxt@3.12.4(@parcel/watcher@2.4.1)(@types/node@22.4.0)(eslint@9.9.0(jiti@1.21.6))(ioredis@5.4.1)(magicast@0.3.4)(optionator@0.9.4)(rollup@4.20.0)(terser@5.31.6)(typescript@5.5.4)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6)): dependencies: '@nuxt/devalue': 2.0.2 - '@nuxt/devtools': 1.3.9(rollup@4.20.0)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6)) + '@nuxt/devtools': 1.3.9(rollup@4.20.0)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6)) '@nuxt/kit': 3.12.4(magicast@0.3.4)(rollup@4.20.0) '@nuxt/schema': 3.12.4(rollup@4.20.0) '@nuxt/telemetry': 2.5.4(magicast@0.3.4)(rollup@4.20.0) - '@nuxt/vite-builder': 3.12.4(@types/node@22.3.0)(eslint@8.57.0)(magicast@0.3.4)(optionator@0.9.4)(rollup@4.20.0)(terser@5.31.6)(typescript@5.5.4)(vue@3.4.38(typescript@5.5.4)) + '@nuxt/vite-builder': 3.12.4(@types/node@22.4.0)(eslint@9.9.0(jiti@1.21.6))(magicast@0.3.4)(optionator@0.9.4)(rollup@4.20.0)(terser@5.31.6)(typescript@5.5.4)(vue@3.4.38(typescript@5.5.4)) '@unhead/dom': 1.9.16 '@unhead/ssr': 1.9.16 '@unhead/vue': 1.9.16(vue@3.4.38(typescript@5.5.4)) @@ -9889,7 +10186,7 @@ snapshots: destr: 2.0.3 devalue: 5.0.0 errx: 0.1.0 - esbuild: 0.23.0 + esbuild: 0.23.1 escape-string-regexp: 5.0.0 estree-walker: 3.0.3 globby: 14.0.2 @@ -9920,8 +10217,8 @@ snapshots: unctx: 2.3.1 unenv: 1.10.0 unimport: 3.10.0(rollup@4.20.0) - unplugin: 1.12.1 - unplugin-vue-router: 0.10.4(rollup@4.20.0)(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4)) + unplugin: 1.12.2 + unplugin-vue-router: 0.10.7(rollup@4.20.0)(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4)) unstorage: 1.10.2(ioredis@5.4.1) untyped: 1.4.2 vue: 3.4.38(typescript@5.5.4) @@ -9930,7 +10227,7 @@ snapshots: vue-router: 4.4.3(vue@3.4.38(typescript@5.5.4)) optionalDependencies: '@parcel/watcher': 2.4.1 - '@types/node': 22.3.0 + '@types/node': 22.4.0 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -10159,6 +10456,8 @@ snapshots: pathe@1.1.2: {} + pathval@2.0.0: {} + perfect-debounce@1.0.0: {} picocolors@1.0.1: {} @@ -10187,7 +10486,7 @@ snapshots: transitivePeerDependencies: - supports-color - postcss-calc@10.0.1(postcss@8.4.41): + postcss-calc@10.0.2(postcss@8.4.41): dependencies: postcss: 8.4.41 postcss-selector-parser: 6.1.2 @@ -10778,6 +11077,8 @@ snapshots: '@shikijs/core': 1.13.0 '@types/hast': 3.0.4 + siginfo@2.0.0: {} + signal-exit@3.0.7: {} signal-exit@4.1.0: {} @@ -10885,6 +11186,8 @@ snapshots: stable-hash@0.0.4: {} + stackback@0.0.2: {} + standard-as-callback@2.1.0: {} statuses@1.5.0: {} @@ -10901,6 +11204,8 @@ snapshots: optionalDependencies: bare-events: 2.4.2 + string-argv@0.3.2: {} + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -11115,10 +11420,14 @@ snapshots: tiny-invariant@1.3.3: {} - tinyexec@0.1.4: {} + tinybench@2.9.0: {} + + tinypool@1.0.0: {} tinyrainbow@1.2.0: {} + tinyspy@3.0.0: {} + to-fast-properties@2.0.0: {} to-regex-range@5.0.1: @@ -11158,6 +11467,8 @@ snapshots: dependencies: prelude-ls: 1.2.1 + type-detect@4.1.0: {} + type-fest@0.20.2: {} type-fest@0.21.3: {} @@ -11188,9 +11499,9 @@ snapshots: acorn: 8.12.1 estree-walker: 3.0.3 magic-string: 0.30.11 - unplugin: 1.12.1 + unplugin: 1.12.2 - undici-types@6.18.2: {} + undici-types@6.19.6: {} undici@5.28.4: dependencies: @@ -11239,7 +11550,7 @@ snapshots: pkg-types: 1.1.3 scule: 1.3.0 strip-literal: 2.1.0 - unplugin: 1.12.1 + unplugin: 1.12.2 transitivePeerDependencies: - rollup @@ -11276,7 +11587,7 @@ snapshots: universalify@2.0.1: {} - unplugin-vue-router@0.10.4(rollup@4.20.0)(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4)): + unplugin-vue-router@0.10.7(rollup@4.20.0)(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4)): dependencies: '@babel/types': 7.25.2 '@rollup/pluginutils': 5.1.0(rollup@4.20.0) @@ -11290,7 +11601,7 @@ snapshots: mlly: 1.7.1 pathe: 1.1.2 scule: 1.3.0 - unplugin: 1.12.1 + unplugin: 1.12.2 yaml: 2.5.0 optionalDependencies: vue-router: 4.4.3(vue@3.4.38(typescript@5.5.4)) @@ -11298,7 +11609,7 @@ snapshots: - rollup - vue - unplugin@1.12.1: + unplugin@1.12.2: dependencies: acorn: 8.12.1 chokidar: 3.6.0 @@ -11347,7 +11658,7 @@ snapshots: mlly: 1.7.1 pathe: 1.1.2 pkg-types: 1.1.3 - unplugin: 1.12.1 + unplugin: 1.12.2 update-browserslist-db@1.1.0(browserslist@4.23.3): dependencies: @@ -11388,17 +11699,17 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - vite-hot-client@0.2.3(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6)): + vite-hot-client@0.2.3(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6)): dependencies: - vite: 5.4.0(@types/node@22.3.0)(terser@5.31.6) + vite: 5.4.1(@types/node@22.4.0)(terser@5.31.6) - vite-node@2.0.5(@types/node@22.3.0)(terser@5.31.6): + vite-node@2.0.5(@types/node@22.4.0)(terser@5.31.6): dependencies: cac: 6.7.14 debug: 4.3.6 pathe: 1.1.2 tinyrainbow: 1.2.0 - vite: 5.4.0(@types/node@22.3.0)(terser@5.31.6) + vite: 5.4.1(@types/node@22.4.0)(terser@5.31.6) transitivePeerDependencies: - '@types/node' - less @@ -11410,7 +11721,7 @@ snapshots: - supports-color - terser - vite-plugin-checker@0.7.2(eslint@8.57.0)(optionator@0.9.4)(typescript@5.5.4)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6)): + vite-plugin-checker@0.7.2(eslint@9.9.0(jiti@1.21.6))(optionator@0.9.4)(typescript@5.5.4)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6)): dependencies: '@babel/code-frame': 7.24.7 ansi-escapes: 4.3.2 @@ -11422,17 +11733,17 @@ snapshots: npm-run-path: 4.0.1 strip-ansi: 6.0.1 tiny-invariant: 1.3.3 - vite: 5.4.0(@types/node@22.3.0)(terser@5.31.6) + vite: 5.4.1(@types/node@22.4.0)(terser@5.31.6) vscode-languageclient: 7.0.0 vscode-languageserver: 7.0.0 vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.0.8 optionalDependencies: - eslint: 8.57.0 + eslint: 9.9.0(jiti@1.21.6) optionator: 0.9.4 typescript: 5.5.4 - vite-plugin-inspect@0.8.5(@nuxt/kit@3.12.4(magicast@0.3.4)(rollup@4.20.0))(rollup@4.20.0)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6)): + vite-plugin-inspect@0.8.5(@nuxt/kit@3.12.4(magicast@0.3.4)(rollup@4.20.0))(rollup@4.20.0)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6)): dependencies: '@antfu/utils': 0.7.10 '@rollup/pluginutils': 5.1.0(rollup@4.20.0) @@ -11443,14 +11754,14 @@ snapshots: perfect-debounce: 1.0.0 picocolors: 1.0.1 sirv: 2.0.4 - vite: 5.4.0(@types/node@22.3.0)(terser@5.31.6) + vite: 5.4.1(@types/node@22.4.0)(terser@5.31.6) optionalDependencies: '@nuxt/kit': 3.12.4(magicast@0.3.4)(rollup@4.20.0) transitivePeerDependencies: - rollup - supports-color - vite-plugin-vue-inspector@5.1.3(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6)): + vite-plugin-vue-inspector@5.1.3(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6)): dependencies: '@babel/core': 7.25.2 '@babel/plugin-proposal-decorators': 7.24.7(@babel/core@7.25.2) @@ -11461,20 +11772,77 @@ snapshots: '@vue/compiler-dom': 3.4.38 kolorist: 1.8.0 magic-string: 0.30.11 - vite: 5.4.0(@types/node@22.3.0)(terser@5.31.6) + vite: 5.4.1(@types/node@22.4.0)(terser@5.31.6) transitivePeerDependencies: - supports-color - vite@5.4.0(@types/node@22.3.0)(terser@5.31.6): + vite@5.4.1(@types/node@22.4.0)(terser@5.31.6): dependencies: esbuild: 0.21.5 postcss: 8.4.41 rollup: 4.20.0 optionalDependencies: - '@types/node': 22.3.0 + '@types/node': 22.4.0 fsevents: 2.3.3 terser: 5.31.6 + vitest-environment-nuxt@1.0.1(h3@1.12.0)(happy-dom@14.12.3)(magicast@0.3.4)(nitropack@2.9.7(magicast@0.3.4))(rollup@4.20.0)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6))(vitest@2.0.5(@types/node@22.4.0)(happy-dom@14.12.3)(terser@5.31.6))(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4)): + dependencies: + '@nuxt/test-utils': 3.14.1(h3@1.12.0)(happy-dom@14.12.3)(magicast@0.3.4)(nitropack@2.9.7(magicast@0.3.4))(rollup@4.20.0)(vite@5.4.1(@types/node@22.4.0)(terser@5.31.6))(vitest@2.0.5(@types/node@22.4.0)(happy-dom@14.12.3)(terser@5.31.6))(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4)) + transitivePeerDependencies: + - '@cucumber/cucumber' + - '@jest/globals' + - '@playwright/test' + - '@testing-library/vue' + - '@vitest/ui' + - '@vue/test-utils' + - h3 + - happy-dom + - jsdom + - magicast + - nitropack + - playwright-core + - rollup + - supports-color + - vite + - vitest + - vue + - vue-router + + vitest@2.0.5(@types/node@22.4.0)(happy-dom@14.12.3)(terser@5.31.6): + dependencies: + '@ampproject/remapping': 2.3.0 + '@vitest/expect': 2.0.5 + '@vitest/pretty-format': 2.0.5 + '@vitest/runner': 2.0.5 + '@vitest/snapshot': 2.0.5 + '@vitest/spy': 2.0.5 + '@vitest/utils': 2.0.5 + chai: 5.1.1 + debug: 4.3.6 + execa: 8.0.1 + magic-string: 0.30.11 + pathe: 1.1.2 + std-env: 3.7.0 + tinybench: 2.9.0 + tinypool: 1.0.0 + tinyrainbow: 1.2.0 + vite: 5.4.1(@types/node@22.4.0)(terser@5.31.6) + vite-node: 2.0.5(@types/node@22.4.0)(terser@5.31.6) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 22.4.0 + happy-dom: 14.12.3 + transitivePeerDependencies: + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + vscode-jsonrpc@6.0.0: {} vscode-languageclient@7.0.0: @@ -11508,10 +11876,10 @@ snapshots: vue-devtools-stub@0.1.0: {} - vue-eslint-parser@9.4.3(eslint@8.57.0): + vue-eslint-parser@9.4.3(eslint@9.9.0(jiti@1.21.6)): dependencies: debug: 4.3.6 - eslint: 8.57.0 + eslint: 9.9.0(jiti@1.21.6) eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 @@ -11545,10 +11913,14 @@ snapshots: webidl-conversions@3.0.1: {} + webidl-conversions@7.0.0: {} + webpack-sources@3.2.3: {} webpack-virtual-modules@0.6.2: {} + whatwg-mimetype@3.0.0: {} + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 @@ -11562,6 +11934,11 @@ snapshots: dependencies: isexe: 2.0.0 + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + wide-align@1.1.5: dependencies: string-width: 4.2.3 diff --git a/server/api/[...slug].ts b/server/api/[...slug].ts index 8eb8a69..b6fc803 100644 --- a/server/api/[...slug].ts +++ b/server/api/[...slug].ts @@ -1,15 +1,15 @@ import { createRouter, useBase } from 'h3' import { githubHandler, googleHandler } from '../utils/oauth' -import logout from './routes/logout' -import me from './routes/me' -import token from './routes/token' -import pen from './routes/pen' -import pens from './routes/pens' -import cartridge from './routes/cartridge' -import cartridges from './routes/cartridges' -import shots from './routes/shots' -import shot from './routes/shot' -import user from './routes/user' +import logout from '../controllers/logout' +import me from '../controllers/me' +import token from '../controllers/token' +import pen from '../controllers/pen' +import pens from '../controllers/pens' +import cartridge from '../controllers/cartridge' +import cartridges from '../controllers/cartridges' +import shots from '../controllers/shots' +import shot from '../controllers/shot' +import user from '../controllers/user' const router = createRouter() diff --git a/server/api/routes/cartridge.ts b/server/controllers/cartridge.ts similarity index 100% rename from server/api/routes/cartridge.ts rename to server/controllers/cartridge.ts diff --git a/server/api/routes/cartridges.ts b/server/controllers/cartridges.ts similarity index 100% rename from server/api/routes/cartridges.ts rename to server/controllers/cartridges.ts diff --git a/server/api/routes/logout.ts b/server/controllers/logout.ts similarity index 100% rename from server/api/routes/logout.ts rename to server/controllers/logout.ts diff --git a/server/api/routes/me.ts b/server/controllers/me.ts similarity index 100% rename from server/api/routes/me.ts rename to server/controllers/me.ts diff --git a/server/api/routes/pen.ts b/server/controllers/pen.ts similarity index 100% rename from server/api/routes/pen.ts rename to server/controllers/pen.ts diff --git a/server/api/routes/pens.ts b/server/controllers/pens.ts similarity index 100% rename from server/api/routes/pens.ts rename to server/controllers/pens.ts diff --git a/server/api/routes/shot.ts b/server/controllers/shot.ts similarity index 100% rename from server/api/routes/shot.ts rename to server/controllers/shot.ts diff --git a/server/api/routes/shots.ts b/server/controllers/shots.ts similarity index 100% rename from server/api/routes/shots.ts rename to server/controllers/shots.ts diff --git a/server/api/routes/token.ts b/server/controllers/token.ts similarity index 100% rename from server/api/routes/token.ts rename to server/controllers/token.ts diff --git a/server/api/routes/user.ts b/server/controllers/user.ts similarity index 100% rename from server/api/routes/user.ts rename to server/controllers/user.ts diff --git a/server/utils/oauth.ts b/server/utils/oauth.ts index eb10a47..aef0f6b 100644 --- a/server/utils/oauth.ts +++ b/server/utils/oauth.ts @@ -1,13 +1,8 @@ -import crypto from 'node:crypto' -import fs from 'node:fs' -import { Buffer } from 'node:buffer' import type { EventHandlerRequest, H3Event } from 'h3' import type { User } from '~/types/models' import type { GithubUserInfo, GoogleUserInfo, MicrosoftUserInfo, TokenLocation, UserInfo } from '~/types/oauth' const signIn = async (event: H3Event, oauthPayload: any, provider: string): Promise => { - let user: User | null = null - let userPayload: GithubUserInfo | GoogleUserInfo | MicrosoftUserInfo | null = null userPayload = oauthPayload as GithubUserInfo const info: UserInfo = { email: '', name: '', avatar: '' } @@ -33,77 +28,7 @@ const signIn = async (event: H3Event, oauthPayload: any, pr info.avatar = '' } - user = await prisma.user.findUnique({ - where: { - email: info.email, - }, - }) as unknown as User - - if (!user) - user = await prisma.user.create({ - data: { - email: info.email, - name: info.name, - avatar: info.avatar, - payload: ({ roles: { admin: false } } as UserPayload) as unknown as Prisma.JsonObject, - providers: { - create: [ - { - - name: provider, - avatar: info.avatar, - payload: oauthPayload as unknown as Prisma.JsonObject, - }, - - ], - }, - }, - }) as unknown as User - else - await prisma.provider.upsert({ - where: { - userId_name: { - userId: BigInt(user.id), - name: provider, - }, - }, - update: { - avatar: info.avatar, - payload: oauthPayload as unknown as Prisma.JsonObject, - }, - create: { - userId: BigInt(user.id), - name: provider, - avatar: info.avatar, - payload: oauthPayload as unknown as Prisma.JsonObject, - }, - }) - - const coordinate = `${event.node.req.headers['Cloudfront-Viewer-Latitude']} ${event.node.req.headers['Cloudfront-Viewer-Longitude']}` - - const location: TokenLocation = { - city: event.node.req.headers['Cloudfront-Viewer-City'] as string || 'Austin', - region: event.node.req.headers['Cloudfront-Viewer-Region-Name'] as string || 'TX', - country: event.node.req.headers['Cloudfront-Viewer-Country'] as string || 'US', - timezone: event.node.req.headers['Cloudfront-Viewer-Timezone'] as string || 'America/Chicago', - countryName: event.node.req.headers['Cloudfront-Viewer-CountryName'] as string || 'United States', - } - - const cfg = useRuntimeConfig(event) - - const token = await prisma.token.create({ - data: { - userId: BigInt(user.id), - hash: `${cfg.public.prefix}_${crypto.createHash('sha256').update(crypto.randomBytes(20).toString('hex')).digest('hex')}`, - source: `oauth:${provider}`, - ip: event.node.req.headers['x-forwarded-for'] as string, - agent: event.node.req.headers['user-agent'] as string, - location: location as unknown as Prisma.JsonObject, - coordinate: coordinate === 'undefined undefined' ? '30.2423 -97.7672' : coordinate, - }, - }) - - user.hash = token.hash + const user = await createUser(info, provider, oauthPayload, event) return user } diff --git a/server/utils/user.ts b/server/utils/user.ts new file mode 100644 index 0000000..81d5e5b --- /dev/null +++ b/server/utils/user.ts @@ -0,0 +1,85 @@ +import crypto from 'node:crypto' +import type { Prisma } from '@prisma/client' +import type { H3Event } from 'h3' +import prisma from './prisma' +import type { User, UserPayload } from '~/types/models' +import type { TokenLocation, UserInfo } from '~/types/oauth' + +export const createUser = async (info: UserInfo, provider: string, oauthPayload: any, event?: H3Event): Promise => { + let user: User | null = null + + user = await prisma.user.findUnique({ + where: { + email: info.email, + }, + }) as unknown as User + + if (!user) + user = await prisma.user.create({ + data: { + email: info.email, + name: info.name, + avatar: info.avatar, + payload: (info.payload ? info.payload : ({ roles: { admin: false } } as UserPayload)) as unknown as Prisma.JsonObject, + providers: { + create: [ + { + + name: provider, + avatar: info.avatar, + payload: oauthPayload as unknown as Prisma.JsonObject, + }, + + ], + }, + }, + }) as unknown as User + else + await prisma.provider.upsert({ + where: { + userId_name: { + userId: BigInt(user.id), + name: provider, + }, + }, + update: { + avatar: info.avatar, + payload: oauthPayload as unknown as Prisma.JsonObject, + }, + create: { + userId: BigInt(user.id), + name: provider, + avatar: info.avatar, + payload: oauthPayload as unknown as Prisma.JsonObject, + }, + }) + + const coordinate = event + ? `${event.node.req.headers['Cloudfront-Viewer-Latitude']} ${event.node.req.headers['Cloudfront-Viewer-Longitude']}` + : '30.2423 -97.7672' + + const location: TokenLocation = { + city: event?.node.req.headers['Cloudfront-Viewer-City'] as string || 'Austin', + region: event?.node.req.headers['Cloudfront-Viewer-Region-Name'] as string || 'TX', + country: event?.node.req.headers['Cloudfront-Viewer-Country'] as string || 'US', + timezone: event?.node.req.headers['Cloudfront-Viewer-Timezone'] as string || 'America/Chicago', + countryName: event?.node.req.headers['Cloudfront-Viewer-CountryName'] as string || 'United States', + } + + const cfg = useRuntimeConfig(event) + + const token = await prisma.token.create({ + data: { + userId: BigInt(user.id), + hash: `${cfg.public.prefix}_${crypto.createHash('sha256').update(crypto.randomBytes(20).toString('hex')).digest('hex')}`, + source: `oauth:${provider}`, + ip: event?.node.req.headers['x-forwarded-for'] as string || '127.0.0.1', + agent: event?.node.req.headers['user-agent'] as string || 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36', + location: location as unknown as Prisma.JsonObject, + coordinate, + }, + }) + + user.hash = token.hash + return user +} diff --git a/test/user.test.ts b/test/user.test.ts new file mode 100644 index 0000000..cc31b9c --- /dev/null +++ b/test/user.test.ts @@ -0,0 +1,47 @@ +// @vitest-environment nuxt +import { describe, expect, it } from 'vitest' +import { $fetch, setup } from '@nuxt/test-utils/e2e' +import { createUser } from '~~/server/utils/user' + +const users = [ + { + session: {}, + email: 'test@test.com', + name: 'Test User', + avatar: 'https://avatars.githubusercontent.com/u/31337?v=4', + payload: { + roles: { + admin: false, + }, + }, + }, + { + email: 'admin@test.com', + name: 'Admin User', + avatar: 'https://avatars.githubusercontent.com/u/31337?v=4', + payload: { + roles: { + admin: true, + }, + }, + }, +] + +describe('my test', async () => { + await setup({ host: 'http://localhost:3000' }) + + users.map(async (userData) => { userData.session = await createUser(userData, 'github', {}) }) + + it('/api/me with no session should 401', async () => { + try { + await $fetch('/api/me') + } + catch (error: any) { + expect(error.response.status).toBe(401) + } + }) + it('/api/me returns the currently loggeed in user', async () => { + const { data: user } = await $fetch('/api/me') + console.log(user) + }) +}) diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 0000000..2a165e0 --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,18 @@ +// vitest.config.ts +import { defineVitestConfig } from '@nuxt/test-utils/config' + +export default defineVitestConfig({ + test: { + environment: 'nuxt', + // you can optionally set Nuxt-specific environment options + // environmentOptions: { + // nuxt: { + // rootDir: fileURLToPath(new URL('./playground', import.meta.url)), + // domEnvironment: 'happy-dom', // 'happy-dom' (default) or 'jsdom' + // overrides: { + // // other Nuxt config you want to pass + // } + // } + // } + }, +})