From 7cdee1703f01d309575432fbee6eee9acb125e3b Mon Sep 17 00:00:00 2001 From: Mridang Agarwalla Date: Thu, 12 Mar 2026 21:02:52 +1100 Subject: [PATCH] chore: standardised the eslint config structure accross the project (#11814) --- apps/docs/app/[[...slug]]/layout.tsx | 2 +- apps/docs/app/providers.tsx | 4 +- .../docs/components/PermissionTable/index.jsx | 6 +- apps/docs/components/mixpanel-provider.tsx | 2 +- apps/docs/eslint.config.mjs | 186 +- apps/docs/package.json | 17 +- .../{check-links.mts => check-links.ts} | 1 - .../{clean-openapi.mts => clean-openapi.ts} | 1 - apps/docs/scripts/clean.mjs | 2 +- apps/docs/scripts/fetch-remote-content.mjs | 12 +- ...eference.mts => generate-api-reference.ts} | 5 +- apps/docs/scripts/generate-proto-docs.mjs | 1 + ...endpoints.mts => inspect-toc-endpoints.ts} | 0 apps/docs/scripts/relink-images.mjs | 4 - apps/docs/scripts/validate-redirects.mjs | 2 - apps/login/.eslintrc.cjs | 79 - apps/login/acceptance/.eslintrc.cjs | 10 - apps/login/acceptance/eslint.config.mjs | 30 + apps/login/eslint.config.mjs | 149 ++ apps/login/integration/.eslintrc.cjs | 10 - apps/login/integration/eslint.config.mjs | 32 + apps/login/package.json | 20 +- apps/login/project.json | 4 +- apps/login/src/components/avatar.tsx | 31 +- apps/login/src/components/button.tsx | 1 - apps/login/src/components/card.tsx | 1 - apps/login/src/components/checkbox.tsx | 2 +- .../src/components/copy-to-clipboard.tsx | 2 +- .../src/components/idp-process-handler.tsx | 2 +- apps/login/src/components/input.tsx | 1 - .../login/src/components/register-passkey.tsx | 59 +- .../src/components/sessions-clear-list.tsx | 8 +- apps/login/src/components/username-form.tsx | 45 +- apps/login/src/components/verify-form.tsx | 2 +- apps/login/src/helpers/colors.ts | 49 +- apps/login/src/i18n/request.ts | 2 +- apps/login/src/lib/api.ts | 4 +- apps/login/src/lib/server/loginname.ts | 63 +- apps/login/src/lib/server/password.test.ts | 1 - apps/login/src/lib/server/password.ts | 4 +- apps/login/src/lib/verify-helper.ts | 2 + apps/login/src/lib/zitadel.ts | 4 +- apps/login/tsconfig.json | 3 +- ...erized.mts => vitest.config.dockerized.ts} | 0 .../{vitest.config.mts => vitest.config.ts} | 0 console/.eslintrc.js | 40 - console/eslint.config.mjs | 110 + console/package.json | 21 +- .../scrollable/scrollable.directive.ts | 4 +- .../display-json-dialog.component.ts | 2 - .../modules/idp-table/idp-table.component.ts | 1 + .../src/app/modules/input/input.directive.ts | 1 + .../dialog-add-sms-provider.component.ts | 2 +- .../notification-sms-provider.component.ts | 2 +- .../statehandler/statehandler.service.ts | 3 +- console/src/app/utils/color.ts | 2 +- packages/zitadel-client/.eslintrc.cjs | 17 - packages/zitadel-client/eslint.config.mjs | 44 + packages/zitadel-client/package.json | 13 +- packages/zitadel-client/project.json | 1 + pnpm-lock.yaml | 1908 ++++------------- 61 files changed, 1025 insertions(+), 2011 deletions(-) rename apps/docs/scripts/{check-links.mts => check-links.ts} (99%) rename apps/docs/scripts/{clean-openapi.mts => clean-openapi.ts} (98%) rename apps/docs/scripts/{generate-api-reference.mts => generate-api-reference.ts} (98%) rename apps/docs/scripts/{inspect-toc-endpoints.mts => inspect-toc-endpoints.ts} (100%) delete mode 100644 apps/login/.eslintrc.cjs delete mode 100644 apps/login/acceptance/.eslintrc.cjs create mode 100644 apps/login/acceptance/eslint.config.mjs create mode 100644 apps/login/eslint.config.mjs delete mode 100644 apps/login/integration/.eslintrc.cjs create mode 100644 apps/login/integration/eslint.config.mjs rename apps/login/{vitest.config.dockerized.mts => vitest.config.dockerized.ts} (100%) rename apps/login/{vitest.config.mts => vitest.config.ts} (100%) delete mode 100644 console/.eslintrc.js create mode 100644 console/eslint.config.mjs delete mode 100644 packages/zitadel-client/.eslintrc.cjs create mode 100644 packages/zitadel-client/eslint.config.mjs diff --git a/apps/docs/app/[[...slug]]/layout.tsx b/apps/docs/app/[[...slug]]/layout.tsx index 1703f5029..41bfd4c32 100644 --- a/apps/docs/app/[[...slug]]/layout.tsx +++ b/apps/docs/app/[[...slug]]/layout.tsx @@ -26,7 +26,7 @@ export default async function Layout(props: { children: ReactNode; params: Promi } }); - let tree = source.pageTree; + let tree: typeof source.pageTree; if (currentVersion !== 'latest') { // Hoist the version folder to root to flatten sidebar // versionSource.pageTree -> [ v4.10 folder, v4.9 folder ... ] diff --git a/apps/docs/app/providers.tsx b/apps/docs/app/providers.tsx index f143a4231..d4dba8597 100644 --- a/apps/docs/app/providers.tsx +++ b/apps/docs/app/providers.tsx @@ -2,14 +2,14 @@ import { RootProvider } from 'fumadocs-ui/provider/next'; import dynamic from "next/dynamic"; -import { ThemeProvider } from 'next-themes'; +import { ReactNode } from 'react'; import MixpanelProvider from '@/components/mixpanel-provider'; import PlausibleProvider from '@/components/plausible-provider'; const SearchDialog = dynamic(() => import("@/components/inkeep-search")); -export function Providers({ children }: { children: React.ReactNode }) { +export function Providers({ children }: { children: ReactNode }) { return ( = { 'admin.openapi.json': '/admin/v1', diff --git a/apps/docs/scripts/clean.mjs b/apps/docs/scripts/clean.mjs index d6d40c0c5..f3a932e44 100644 --- a/apps/docs/scripts/clean.mjs +++ b/apps/docs/scripts/clean.mjs @@ -32,7 +32,7 @@ async function run() { } // Versioned content and protos - const cleanVersioned = (dir, pattern) => { + const cleanVersioned = (dir) => { if (!fs.existsSync(dir)) return; const files = fs.readdirSync(dir); for (const file of files) { diff --git a/apps/docs/scripts/fetch-remote-content.mjs b/apps/docs/scripts/fetch-remote-content.mjs index 83649f4d8..1c7d67639 100644 --- a/apps/docs/scripts/fetch-remote-content.mjs +++ b/apps/docs/scripts/fetch-remote-content.mjs @@ -71,7 +71,7 @@ function getCurrentRef() { cachedRef = branch; return cachedRef; } - } catch (e) { + } catch { // Ignore git errors } console.log(`[ref] Defaulting to ${FALLBACK_BRANCH}`); @@ -143,7 +143,7 @@ function copyDirectorySafely(src, dest) { if (versionDirPattern.test(item) && fs.statSync(join(src, item)).isDirectory()) { isVersionDir = true; } - } catch (e) { + } catch { // Ignore stat errors } @@ -281,7 +281,7 @@ async function downloadFileContent(tagOrBranch, repoPath) { let decodedRepoPath; try { decodedRepoPath = decodeURIComponent(repoPath.replace(/\\/g, '/')); - } catch (e) { + } catch { // If decoding fails (malformed escape sequences), fall back to original decodedRepoPath = repoPath; } @@ -370,7 +370,7 @@ async function fixRelativeImports(versionDir, tagOrBranch) { }); // 2. Markdown Images: ![alt](src) - const mdImgRegex = /(!\[.*?\]\()([^\)]+)(\))/g; + const mdImgRegex = /(!\[.*?\]\()([^)]+)(\))/g; content = content.replace(mdImgRegex, (match, p1, p2, p3) => { if (!p2.startsWith('.')) return match; const rewritten = rewritePath(filePath, p2); @@ -452,7 +452,7 @@ function getLocalVersion() { if (!branch) { try { branch = execSync('git branch --show-current').toString().trim(); - } catch (e) {} + } catch { /* ignore git errors */ } } if (branch && branch !== 'main' && branch !== 'master') { @@ -467,7 +467,7 @@ function getLocalVersion() { if (semver.valid(tag) && semver.gt(tag, CUTOFF)) { return { label: tag, isUnreleased: false }; } - } catch (e) { } + } catch { /* ignore git errors */ } return { label: 'v4.11.0', isUnreleased: true }; } diff --git a/apps/docs/scripts/generate-api-reference.mts b/apps/docs/scripts/generate-api-reference.ts similarity index 98% rename from apps/docs/scripts/generate-api-reference.mts rename to apps/docs/scripts/generate-api-reference.ts index aea6d17e3..e3dc9d8bb 100644 --- a/apps/docs/scripts/generate-api-reference.mts +++ b/apps/docs/scripts/generate-api-reference.ts @@ -4,7 +4,6 @@ import { writeFileSync, mkdirSync, readdirSync, lstatSync, readFileSync, existsS import path, { join, dirname, basename } from 'path'; import { fileURLToPath } from 'url'; import { glob } from 'glob'; -import yaml from 'js-yaml'; // Suppress "Generated: ..." logs to avoid Vercel log limits const originalLog = console.log; @@ -147,7 +146,7 @@ async function fixAllGeneratedLinks() { const versionMap = fileIndex.get(version); // [Text](apis/resources/service_name/file_name.api.mdx) - const linkRegex = /\[([^\]]+)\]\(([\/]?apis\/resources\/([^\/]+)\/([^\/)]+)\.api\.mdx)\)/g; + const linkRegex = /\[([^\]]+)\]\(([/]?apis\/resources\/([^/]+)\/([^/)]+)\.api\.mdx)\)/g; let modified = false; let newContent = content.replace(linkRegex, (match, text, fullLink, serviceSlug, fileSlug) => { @@ -178,7 +177,7 @@ async function fixAllGeneratedLinks() { // Fix v2beta links that were likely in the source proto comments // and also remove potential double /docs prefixing from source comments - const internalLinkRegex = /\[([^\]]+)\]\(([\/]?docs\/)?reference\/api\/([^\/]+)\/([^\s)]+)\)/g; + const internalLinkRegex = /\[([^\]]+)\]\(([/]?docs\/)?reference\/api\/([^/]+)\/([^\s)]+)\)/g; newContent = newContent.replace(internalLinkRegex, (match, text, docsPrefix, service, fileSlug) => { let targetFileSlug = fileSlug; let isV2Beta = fileSlug.includes('.v2beta.'); diff --git a/apps/docs/scripts/generate-proto-docs.mjs b/apps/docs/scripts/generate-proto-docs.mjs index 304c821be..eb637330c 100644 --- a/apps/docs/scripts/generate-proto-docs.mjs +++ b/apps/docs/scripts/generate-proto-docs.mjs @@ -87,6 +87,7 @@ async function run() { // Use spawn (async) instead of spawnSync to avoid blocking the event loop + // eslint-disable-next-line no-async-promise-executor await new Promise(async (resolvePromise, rejectPromise) => { // Dynamic discovery of excluded paths const getExcludedPaths = async () => { diff --git a/apps/docs/scripts/inspect-toc-endpoints.mts b/apps/docs/scripts/inspect-toc-endpoints.ts similarity index 100% rename from apps/docs/scripts/inspect-toc-endpoints.mts rename to apps/docs/scripts/inspect-toc-endpoints.ts diff --git a/apps/docs/scripts/relink-images.mjs b/apps/docs/scripts/relink-images.mjs index 1646cb236..101f7b206 100644 --- a/apps/docs/scripts/relink-images.mjs +++ b/apps/docs/scripts/relink-images.mjs @@ -43,10 +43,6 @@ walk(CONTENT_DIR, (filepath) => { // Replaces /docs/img/ -> correctPrefix + img/ // Replaces /docs/vX.Y/ -> correctPrefix + vX.Y/ - const PUBLIC_PREFIX = '/docs/img/'; - const VERSION_PREFIXES = ['/docs/v4.10/', '/docs/v4.9/', '/docs/v4.8/']; - const TARGET_PATHS = [PUBLIC_PREFIX, ...VERSION_PREFIXES]; - // Pattern: (!\[.*?\]\(|src=["'])(/docs/(?:img|v\d+\.\d+)/.*?)(\)|["']) const pattern = /(!\[.*?\]\(|src=["'])\/docs\/((?:img|v\d+\.\d+)\/.*?)(\)|["'])/g; diff --git a/apps/docs/scripts/validate-redirects.mjs b/apps/docs/scripts/validate-redirects.mjs index 099097b6f..562204001 100644 --- a/apps/docs/scripts/validate-redirects.mjs +++ b/apps/docs/scripts/validate-redirects.mjs @@ -1,5 +1,4 @@ import fs from 'fs'; -import path from 'path'; const REDIRECTS_PATH = '/home/ffo/git/zitadel/zitadel/apps/docs/redirects.json'; @@ -37,7 +36,6 @@ function validateRedirects() { }); // 2. Circular & Chains - const checked = new Set(); sources.forEach((value, source) => { let currentSource = source; const path = [currentSource]; diff --git a/apps/login/.eslintrc.cjs b/apps/login/.eslintrc.cjs deleted file mode 100644 index b94843c3e..000000000 --- a/apps/login/.eslintrc.cjs +++ /dev/null @@ -1,79 +0,0 @@ -module.exports = { - parser: "@typescript-eslint/parser", - extends: ["next", "prettier"], - plugins: ["@typescript-eslint", "import"], - rules: { - "import/first": "error", - "@next/next/no-html-link-for-pages": "off", - "@next/next/no-img-element": "off", - "react/no-unescaped-entities": "off", - "no-unused-vars": "off", - "@typescript-eslint/no-unused-vars": ["error", { - argsIgnorePattern: "^_" , - varsIgnorePattern: "^_" , - }], - "no-undef": "off", - "no-restricted-imports": ["error", { - "paths": [{ - "name": "next/image", - "message": "Use of next/image is forbidden. Use regular elements instead." - }] - }], - }, - parserOptions: { - ecmaVersion: "latest", - sourceType: "module", - ecmaFeatures: { - jsx: true, - }, - project: "./tsconfig.json", - }, - overrides: [ - { - // Server components and server actions: must use logger, not console.* - // Files in src/lib/server/*, src/app/**/route.ts, src/middleware.ts, and files with "use server" - files: [ - "src/lib/server/**/*.ts", - "src/app/**/route.ts", - "src/middleware.ts", - "src/lib/cookies.ts", - ], - rules: { - "no-console": "warn", - }, - }, - { - // instrumentation.ts uses console.log during OTEL initialization (before logger is available) - files: ["src/instrumentation.ts"], - rules: { - "no-console": "off", - }, - }, - { - // Client components: logger import is forbidden (enforced by server-only at build time) - // This override documents the expectation for client components - files: ["src/components/**/*.tsx"], - rules: { - "no-restricted-imports": ["error", { - "paths": [ - { - "name": "next/image", - "message": "Use of next/image is forbidden. Use regular elements instead." - }, - { - "name": "@/lib/logger", - "message": "Cannot import logger in client components. Use console.* instead. The logger uses 'server-only' and will fail at build time." - } - ] - }], - }, - }, - { - // Test files: allow console.* - files: ["**/*.test.ts", "**/*.test.tsx", "**/*.spec.ts", "**/*.spec.tsx", "**/tests/**/*"], - rules: { - "no-console": "off", - }, - }, - ], -}; diff --git a/apps/login/acceptance/.eslintrc.cjs b/apps/login/acceptance/.eslintrc.cjs deleted file mode 100644 index 84711c588..000000000 --- a/apps/login/acceptance/.eslintrc.cjs +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - root: true, - // Use basic ESLint config since the login app has its own detailed config - extends: ["eslint:recommended"], - settings: { - next: { - rootDir: ["apps/*/"], - }, - }, -}; diff --git a/apps/login/acceptance/eslint.config.mjs b/apps/login/acceptance/eslint.config.mjs new file mode 100644 index 000000000..8773b264d --- /dev/null +++ b/apps/login/acceptance/eslint.config.mjs @@ -0,0 +1,30 @@ +import js from "@eslint/js"; +import tsPlugin from "@typescript-eslint/eslint-plugin"; +import tsParser from "@typescript-eslint/parser"; +import prettierConfig from "eslint-config-prettier/flat"; + +export default [ + { ignores: ["node_modules/**"] }, + js.configs.recommended, + { + files: ["**/*.ts"], + plugins: { + "@typescript-eslint": tsPlugin, + }, + languageOptions: { + parser: tsParser, + ecmaVersion: "latest", + sourceType: "module", + }, + rules: { + ...tsPlugin.configs.recommended.rules, + "no-unused-vars": "off", + "no-undef": "off", + "@typescript-eslint/no-unused-vars": [ + "error", + { argsIgnorePattern: "^_" }, + ], + }, + }, + prettierConfig, +]; diff --git a/apps/login/eslint.config.mjs b/apps/login/eslint.config.mjs new file mode 100644 index 000000000..a0319c084 --- /dev/null +++ b/apps/login/eslint.config.mjs @@ -0,0 +1,149 @@ +import js from "@eslint/js"; +import nextPlugin from "@next/eslint-plugin-next"; +import tsPlugin from "@typescript-eslint/eslint-plugin"; +import tsParser from "@typescript-eslint/parser"; +import prettierConfig from "eslint-config-prettier/flat"; +import importPlugin from "eslint-plugin-import"; +import reactHooksPlugin from "eslint-plugin-react-hooks"; +import globals from "globals"; + +export default [ + { + ignores: [ + "node_modules/**", + ".next/**", + "dockerized/**", + "cypress/**", + "acceptance/**", + "integration/**", + "vitest.config*.ts", + "next-env.d.ts", + ], + }, + js.configs.recommended, + nextPlugin.configs["core-web-vitals"], + { + files: ["**/*.{ts,tsx,jsx}"], + plugins: { + "react-hooks": reactHooksPlugin, + }, + rules: { + "react-hooks/rules-of-hooks": "error", + "react-hooks/exhaustive-deps": "error", + }, + }, + { + files: ["**/*.{js,mjs,cjs}"], + languageOptions: { + globals: { + ...globals.browser, + ...globals.node, + }, + }, + }, + { + files: ["**/*.{ts,tsx}"], + plugins: { + "@typescript-eslint": tsPlugin, + import: importPlugin, + }, + languageOptions: { + parser: tsParser, + ecmaVersion: "latest", + sourceType: "module", + parserOptions: { + ecmaFeatures: { jsx: true }, + project: "./tsconfig.json", + }, + }, + settings: { + "import/resolver": { + typescript: true, + }, + }, + rules: { + ...tsPlugin.configs.recommended.rules, + ...importPlugin.configs.recommended.rules, + "no-unused-vars": "off", + "@typescript-eslint/no-unused-vars": [ + "error", + { + argsIgnorePattern: "^_", + varsIgnorePattern: "^_", + }, + ], + "no-undef": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/ban-ts-comment": "off", + "@next/next/no-img-element": "off", + "no-restricted-imports": [ + "error", + { + paths: [ + { + name: "next/image", + message: + "Use of next/image is forbidden. Use regular elements instead.", + }, + ], + }, + ], + }, + }, + // Server components and server actions: must use logger, not console.* + { + files: [ + "src/lib/server/**/*.ts", + "src/app/**/route.ts", + "src/middleware.ts", + "src/lib/cookies.ts", + ], + rules: { + "no-console": "warn", + }, + }, + // instrumentation.ts uses console.log during OTEL initialization (before logger is available) + { + files: ["src/instrumentation.ts"], + rules: { + "no-console": "off", + }, + }, + // Client components: logger import is forbidden (enforced by server-only at build time) + { + files: ["src/components/**/*.tsx"], + rules: { + "no-restricted-imports": [ + "error", + { + paths: [ + { + name: "next/image", + message: + "Use of next/image is forbidden. Use regular elements instead.", + }, + { + name: "@/lib/logger", + message: + "Cannot import logger in client components. Use console.* instead. The logger uses 'server-only' and will fail at build time.", + }, + ], + }, + ], + }, + }, + // Test files: allow console.* + { + files: [ + "**/*.test.ts", + "**/*.test.tsx", + "**/*.spec.ts", + "**/*.spec.tsx", + "**/tests/**/*", + ], + rules: { + "no-console": "off", + }, + }, + prettierConfig, +]; diff --git a/apps/login/integration/.eslintrc.cjs b/apps/login/integration/.eslintrc.cjs deleted file mode 100644 index 84711c588..000000000 --- a/apps/login/integration/.eslintrc.cjs +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - root: true, - // Use basic ESLint config since the login app has its own detailed config - extends: ["eslint:recommended"], - settings: { - next: { - rootDir: ["apps/*/"], - }, - }, -}; diff --git a/apps/login/integration/eslint.config.mjs b/apps/login/integration/eslint.config.mjs new file mode 100644 index 000000000..7f020bdc4 --- /dev/null +++ b/apps/login/integration/eslint.config.mjs @@ -0,0 +1,32 @@ +import js from "@eslint/js"; +import tsPlugin from "@typescript-eslint/eslint-plugin"; +import tsParser from "@typescript-eslint/parser"; +import prettierConfig from "eslint-config-prettier/flat"; +import pluginCypress from "eslint-plugin-cypress"; + +export default [ + { ignores: ["node_modules/**"] }, + js.configs.recommended, + { + files: ["**/*.ts"], + plugins: { + "@typescript-eslint": tsPlugin, + }, + languageOptions: { + parser: tsParser, + ecmaVersion: "latest", + sourceType: "module", + }, + rules: { + ...tsPlugin.configs.recommended.rules, + "no-unused-vars": "off", + "no-undef": "off", + "@typescript-eslint/no-unused-vars": [ + "error", + { argsIgnorePattern: "^_" }, + ], + }, + }, + pluginCypress.configs.recommended, + prettierConfig, +]; diff --git a/apps/login/package.json b/apps/login/package.json index 407990488..8a453f6d3 100644 --- a/apps/login/package.json +++ b/apps/login/package.json @@ -8,11 +8,11 @@ "build-vercel": "next build", "dev": "HOSTNAME=127.0.0.1 ./scripts/entrypoint.sh next dev", "prod": "cd ./.next/standalone && HOSTNAME=127.0.0.1 ./entrypoint.sh node apps/login/server.js", - "lint-check-next": "next lint", + "lint-check-next": "eslint .", "lint-check-prettier": "prettier --check .", "lint-fix": "prettier --write .", "test-unit": "vitest --run", - "test-dockerized": "vitest --run --config vitest.config.dockerized.mts", + "test-dockerized": "vitest --run --config vitest.config.dockerized.ts", "lint-staged": "lint-staged", "clean": "rm -rf node_modules .next cypress" }, @@ -55,8 +55,9 @@ "winston": "^3.17.0" }, "devDependencies": { - "@babel/eslint-parser": "^7.28.6", + "@eslint/js": "^10.0.0", "@faker-js/faker": "^9.9.0", + "@next/eslint-plugin-next": "16.1.6", "@opentelemetry/sdk-trace-base": "^2.5.0", "@opentelemetry/sdk-trace-node": "^2.5.0", "@otplib/core": "^12.0.1", @@ -72,8 +73,8 @@ "@types/react-dom": "19.2.3", "@types/tinycolor2": "^1.4.6", "@types/uuid": "^10.0.0", - "@typescript-eslint/eslint-plugin": "^8.54.0", - "@typescript-eslint/parser": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.57.0", + "@typescript-eslint/parser": "^8.57.0", "@vercel/git-hooks": "1.0.0", "@vitejs/plugin-react": "^4.7.0", "@zitadel/client": "workspace:*", @@ -84,11 +85,14 @@ "dotenv-cli": "^8.0.0", "env-cmd": "^10.1.0", "esbuild": "^0.27.3", - "eslint": "^8.57.1", - "eslint-config-next": "15.5.9", - "eslint-config-prettier": "^9.1.2", + "eslint": "^10.0.0", + "eslint-config-prettier": "^10.1.8", + "eslint-import-resolver-typescript": "^4.4.4", + "eslint-plugin-cypress": "^4.2.0", "eslint-plugin-import": "^2.32.0", + "eslint-plugin-react-hooks": "^7.0.1", "gaxios": "^7.1.3", + "globals": "^17.0.0", "grpc-tools": "^1.13.1", "jsdom": "^26.1.0", "lint-staged": "15.5.1", diff --git a/apps/login/project.json b/apps/login/project.json index ad56b84f2..6216cde52 100644 --- a/apps/login/project.json +++ b/apps/login/project.json @@ -129,7 +129,7 @@ "options": { "cwd": "{projectRoot}", "commands": [ - "pnpm vitest --run --config vitest.config.dockerized.mts" + "pnpm vitest --run --config vitest.config.dockerized.ts" ] } }, @@ -149,7 +149,7 @@ "options": { "cwd": "{projectRoot}", "commands": [ - "pnpm vitest --run --config vitest.config.dockerized.mts dockerized/ssl" + "pnpm vitest --run --config vitest.config.dockerized.ts dockerized/ssl" ] } }, diff --git a/apps/login/src/components/avatar.tsx b/apps/login/src/components/avatar.tsx index e8850199a..646ad2619 100644 --- a/apps/login/src/components/avatar.tsx +++ b/apps/login/src/components/avatar.tsx @@ -13,30 +13,21 @@ interface AvatarProps { } export function getInitials(name: string, loginName: string) { - let credentials = ""; if (name) { const split = name.split(" "); - if (split) { - const initials = split[0].charAt(0) + (split[1] ? split[1].charAt(0) : ""); - credentials = initials; - } else { - credentials = name.charAt(0); - } - } else { - const username = loginName.split("@")[0]; - let separator = "_"; - if (username.includes("-")) { - separator = "-"; - } - if (username.includes(".")) { - separator = "."; - } - const split = username.split(separator); - const initials = split[0].charAt(0) + (split[1] ? split[1].charAt(0) : ""); - credentials = initials; + return split[0].charAt(0) + (split[1] ? split[1].charAt(0) : ""); } - return credentials; + const username = loginName.split("@")[0]; + let separator = "_"; + if (username.includes("-")) { + separator = "-"; + } + if (username.includes(".")) { + separator = "."; + } + const split = username.split(separator); + return split[0].charAt(0) + (split[1] ? split[1].charAt(0) : ""); } // Helper function to get avatar roundness from theme diff --git a/apps/login/src/components/button.tsx b/apps/login/src/components/button.tsx index 5e2c9a7a1..ed975a336 100644 --- a/apps/login/src/components/button.tsx +++ b/apps/login/src/components/button.tsx @@ -65,7 +65,6 @@ function getDefaultButtonAppearance(): string { return appearance?.button || "border border-button-light-border dark:border-button-dark-border"; // Fallback to flat design } -// eslint-disable-next-line react/display-name export const Button = forwardRef( ( { diff --git a/apps/login/src/components/card.tsx b/apps/login/src/components/card.tsx index ec439565b..848f70f93 100644 --- a/apps/login/src/components/card.tsx +++ b/apps/login/src/components/card.tsx @@ -35,7 +35,6 @@ function getDefaultCardStyling(): string { return appearance?.card || "shadow-sm border-0"; // Fallback to material design } -// eslint-disable-next-line react/display-name export const Card = forwardRef( ( { diff --git a/apps/login/src/components/checkbox.tsx b/apps/login/src/components/checkbox.tsx index 1c8b53e21..b36199679 100644 --- a/apps/login/src/components/checkbox.tsx +++ b/apps/login/src/components/checkbox.tsx @@ -26,7 +26,7 @@ export const Checkbox = forwardRef(function Che checked={enabled} onChange={(event) => { setEnabled(event.target?.checked); - onChangeVal && onChangeVal(event.target?.checked); + if (onChangeVal) onChangeVal(event.target?.checked); }} disabled={disabled} type="checkbox" diff --git a/apps/login/src/components/copy-to-clipboard.tsx b/apps/login/src/components/copy-to-clipboard.tsx index 5554dc282..3a9c35e3f 100644 --- a/apps/login/src/components/copy-to-clipboard.tsx +++ b/apps/login/src/components/copy-to-clipboard.tsx @@ -17,7 +17,7 @@ export function CopyToClipboard({ value }: Props) { const to = setTimeout(setCopied, 1000, false); return () => clearTimeout(to); } - }, [copied]); + }, [copied, value]); return (
diff --git a/apps/login/src/components/idp-process-handler.tsx b/apps/login/src/components/idp-process-handler.tsx index a790d4e09..7e9c6e2bf 100644 --- a/apps/login/src/components/idp-process-handler.tsx +++ b/apps/login/src/components/idp-process-handler.tsx @@ -91,7 +91,7 @@ export function IdpProcessHandler({ setError(err instanceof Error ? err.message : t("processing.unexpectedError")); setLoading(false); }); - }, [provider, id, token, requestId, organization, link, sessionId, postErrorRedirectUrl, router]); + }, [provider, id, token, requestId, organization, link, sessionId, linkFingerprint, postErrorRedirectUrl, router, t]); return (
diff --git a/apps/login/src/components/input.tsx b/apps/login/src/components/input.tsx index 83656e5d7..a789c7af3 100644 --- a/apps/login/src/components/input.tsx +++ b/apps/login/src/components/input.tsx @@ -37,7 +37,6 @@ function getDefaultInputRoundness(): string { return getComponentRoundness("input"); } -// eslint-disable-next-line react/display-name export const TextInput = forwardRef( ( { diff --git a/apps/login/src/components/register-passkey.tsx b/apps/login/src/components/register-passkey.tsx index a5dbd0933..c2e614587 100644 --- a/apps/login/src/components/register-passkey.tsx +++ b/apps/login/src/components/register-passkey.tsx @@ -11,7 +11,7 @@ import { Button, ButtonVariants } from "./button"; import { Spinner } from "./spinner"; import { Translated } from "./translated"; -type Inputs = {}; +type Inputs = Record; type Props = { sessionId?: string; @@ -44,6 +44,35 @@ export function RegisterPasskey({ const router = useRouter(); + const continueAndLogin = useCallback( + (loginName?: string) => { + const params = new URLSearchParams(); + + if (organization) { + params.set("organization", organization); + } + + if (requestId) { + params.set("requestId", requestId); + } + + if (sessionId) { + params.set("sessionId", sessionId); + } + + if (userId) { + params.set("userId", userId); + } + + if (loginName ?? initialLoginName) { + params.set("loginName", loginName ?? initialLoginName ?? ""); + } + + router.push("/passkey?" + params); + }, + [organization, requestId, sessionId, userId, initialLoginName, router], + ); + async function submitVerify( passkeyId: string, passkeyName: string, @@ -166,7 +195,7 @@ export function RegisterPasskey({ } continueAndLogin(verificationResponse.loginName); - }, [sessionId, userId, code]); + }, [sessionId, userId, code, codeId, continueAndLogin]); // Auto-submit when code is provided (similar to VerifyForm) useEffect(() => { @@ -175,32 +204,6 @@ export function RegisterPasskey({ } }, [code, submitRegisterAndContinue]); - function continueAndLogin(loginName?: string) { - const params = new URLSearchParams(); - - if (organization) { - params.set("organization", organization); - } - - if (requestId) { - params.set("requestId", requestId); - } - - if (sessionId) { - params.set("sessionId", sessionId); - } - - if (userId) { - params.set("userId", userId); - } - - if (loginName ?? initialLoginName) { - params.set("loginName", loginName ?? initialLoginName ?? ""); - } - - router.push("/passkey?" + params); - } - return (
{error && ( diff --git a/apps/login/src/components/sessions-clear-list.tsx b/apps/login/src/components/sessions-clear-list.tsx index ba00b3ec3..1c9e85f33 100644 --- a/apps/login/src/components/sessions-clear-list.tsx +++ b/apps/login/src/components/sessions-clear-list.tsx @@ -4,7 +4,7 @@ import { clearSession } from "@/lib/server/session"; import { timestampDate } from "@zitadel/client"; import { Session } from "@zitadel/proto/zitadel/session/v2/session_pb"; import { redirect, useRouter } from "next/navigation"; -import { useEffect, useState } from "react"; +import { useCallback, useEffect, useState } from "react"; import { Alert, AlertType } from "./alert"; import { SessionClearItem } from "./session-clear-item"; import { Translated } from "./translated"; @@ -20,7 +20,7 @@ export function SessionsClearList({ sessions, logoutHint, postLogoutRedirectUri, const [list, setList] = useState(sessions); const router = useRouter(); - async function clearHintedSession() { + const clearHintedSession = useCallback(async () => { console.log("Clearing session for login hint:", logoutHint); // If a login hint is provided, we logout that specific session const sessionIdToBeCleared = sessions.find((session) => { @@ -53,13 +53,13 @@ export function SessionsClearList({ sessions, logoutHint, postLogoutRedirectUri, } else { console.warn(`No session found for login hint: ${logoutHint}`); } - } + }, [logoutHint, sessions, postLogoutRedirectUri, organization, router]); useEffect(() => { if (logoutHint) { clearHintedSession(); } - }, []); + }, [logoutHint, clearHintedSession]); return sessions ? (
diff --git a/apps/login/src/components/username-form.tsx b/apps/login/src/components/username-form.tsx index 4c523be94..9f0ce715a 100644 --- a/apps/login/src/components/username-form.tsx +++ b/apps/login/src/components/username-form.tsx @@ -5,7 +5,7 @@ import { sendLoginname } from "@/lib/server/loginname"; import { LoginSettings } from "@zitadel/proto/zitadel/settings/v2/login_settings_pb"; import { useTranslations } from "next-intl"; import { useRouter } from "next/navigation"; -import { useEffect, useState } from "react"; +import { useCallback, useEffect, useState } from "react"; import { useForm } from "react-hook-form"; import { Alert } from "./alert"; import { AutoSubmitForm } from "./auto-submit-form"; @@ -55,34 +55,37 @@ export function UsernameForm({ const [error, setError] = useState(""); const [samlData, setSamlData] = useState<{ url: string; fields: Record } | null>(null); - async function submitLoginName(values: Inputs, organization?: string) { - setLoading(true); + const submitLoginName = useCallback( + async (values: Inputs, organization?: string) => { + setLoading(true); - try { - const res = await sendLoginname({ - loginName: values.loginName, - organization, - defaultOrganization, - requestId, - suffix, - ignoreUnknownUsernames: loginSettings?.ignoreUnknownUsernames, - }); + try { + const res = await sendLoginname({ + loginName: values.loginName, + organization, + defaultOrganization, + requestId, + suffix, + ignoreUnknownUsernames: loginSettings?.ignoreUnknownUsernames, + }); - handleServerActionResponse(res, router, setSamlData, setError); - return res; - } catch { - setError(t("errors.internalError")); - } finally { - setLoading(false); - } - } + handleServerActionResponse(res, router, setSamlData, setError); + return res; + } catch { + setError(t("errors.internalError")); + } finally { + setLoading(false); + } + }, + [defaultOrganization, requestId, suffix, loginSettings, router, t], + ); useEffect(() => { if (submit && loginName) { // When we navigate to this page, we always want to be redirected if submit is true and the parameters are valid. submitLoginName({ loginName }, organization); } - }, []); + }, [submit, loginName, organization, submitLoginName]); let inputLabel = t("labels.loginname"); if (loginSettings?.disableLoginWithEmail && loginSettings?.disableLoginWithPhone) { diff --git a/apps/login/src/components/verify-form.tsx b/apps/login/src/components/verify-form.tsx index 0db24eca5..8fa822704 100644 --- a/apps/login/src/components/verify-form.tsx +++ b/apps/login/src/components/verify-form.tsx @@ -101,7 +101,7 @@ export function VerifyForm({ userId, loginName, organization, requestId, code, i setLoading(false); } }, - [isInvite, userId], + [isInvite, userId, loginName, organization, requestId, router, t], ); useEffect(() => { diff --git a/apps/login/src/helpers/colors.ts b/apps/login/src/helpers/colors.ts index bfc0bd557..eafa25351 100644 --- a/apps/login/src/helpers/colors.ts +++ b/apps/login/src/helpers/colors.ts @@ -341,58 +341,39 @@ export function hashCode(str: string, seed = 0): number { export function getMembershipColor(role: string): ColorShade { const hash = hashCode(role); - let color = COLORS[hash % COLORS.length]; - switch (role) { case "IAM_OWNER": - color = COLORS[0]; - break; + return COLORS[0]; case "IAM_OWNER_VIEWER": - color = COLORS[14]; - break; + return COLORS[14]; case "IAM_ORG_MANAGER": - color = COLORS[11]; - break; + return COLORS[11]; case "IAM_USER_MANAGER": - color = COLORS[8]; - break; + return COLORS[8]; case "ORG_OWNER": - color = COLORS[16]; - break; + return COLORS[16]; case "ORG_USER_MANAGER": - color = COLORS[8]; - break; + return COLORS[8]; case "ORG_OWNER_VIEWER": - color = COLORS[14]; - break; + return COLORS[14]; case "ORG_USER_PERMISSION_EDITOR": - color = COLORS[7]; - break; + return COLORS[7]; case "ORG_PROJECT_PERMISSION_EDITOR": - color = COLORS[11]; - break; + return COLORS[11]; case "ORG_PROJECT_CREATOR": - color = COLORS[12]; - break; + return COLORS[12]; case "PROJECT_OWNER": - color = COLORS[9]; - break; + return COLORS[9]; case "PROJECT_OWNER_VIEWER": - color = COLORS[10]; - break; + return COLORS[10]; case "PROJECT_OWNER_GLOBAL": - color = COLORS[11]; - break; + return COLORS[11]; case "PROJECT_OWNER_VIEWER_GLOBAL": - color = COLORS[12]; - break; + return COLORS[12]; default: - color = COLORS[hash % COLORS.length]; - break; + return COLORS[hash % COLORS.length]; } - - return color; } diff --git a/apps/login/src/i18n/request.ts b/apps/login/src/i18n/request.ts index 659c73d6b..fd63ee241 100644 --- a/apps/login/src/i18n/request.ts +++ b/apps/login/src/i18n/request.ts @@ -52,7 +52,7 @@ export default getRequestConfig(async () => { const i18nOrganization = _headers.get("x-zitadel-i18n-organization") || ""; // You may need to set this header in middleware - let translations: JsonObject | {} = {}; + let translations: JsonObject | Record = {}; try { const i18nJSON = await getHostedLoginTranslation({ serviceConfig, diff --git a/apps/login/src/lib/api.ts b/apps/login/src/lib/api.ts index c49716d98..12aea4e75 100644 --- a/apps/login/src/lib/api.ts +++ b/apps/login/src/lib/api.ts @@ -46,6 +46,8 @@ export async function loginServiceKeyToken() { key: key, }); } catch (err) { - throw new Error(`Failed to read login service key file "${keyFile}": ${err instanceof Error ? err.message : err}`); + throw new Error(`Failed to read login service key file "${keyFile}": ${err instanceof Error ? err.message : err}`, { + cause: err, + }); } } diff --git a/apps/login/src/lib/server/loginname.ts b/apps/login/src/lib/server/loginname.ts index 627517702..dfbb56bd8 100644 --- a/apps/login/src/lib/server/loginname.ts +++ b/apps/login/src/lib/server/loginname.ts @@ -374,24 +374,26 @@ export async function sendLoginname(command: SendLoginnameCommand) { }; } - const paramsPassword = new URLSearchParams({ - loginName: command.ignoreUnknownUsernames - ? command.loginName - : (session?.factors?.user?.loginName ?? user.preferredLoginName), - }); + { + const paramsPassword = new URLSearchParams({ + loginName: command.ignoreUnknownUsernames + ? command.loginName + : (session?.factors?.user?.loginName ?? user.preferredLoginName), + }); - if (organization) { - paramsPassword.append("organization", organization); + if (organization) { + paramsPassword.append("organization", organization); + } + + if (command.requestId) { + paramsPassword.append("requestId", command.requestId); + } + + return { + redirect: "/password?" + paramsPassword, + }; } - if (command.requestId) { - paramsPassword.append("requestId", command.requestId); - } - - return { - redirect: "/password?" + paramsPassword, - }; - case AuthenticationMethodType.PASSKEY: // AuthenticationMethodType.AUTHENTICATION_METHOD_TYPE_PASSKEY if (userLoginSettings?.passkeysType === PasskeysType.NOT_ALLOWED || !userLoginSettings?.allowLocalAuthentication) { if (command.ignoreUnknownUsernames) { @@ -402,22 +404,24 @@ export async function sendLoginname(command: SendLoginnameCommand) { }; } - const paramsPasskey = new URLSearchParams({ - loginName: command.ignoreUnknownUsernames - ? command.loginName - : (session?.factors?.user?.loginName ?? user.preferredLoginName), - }); - if (command.requestId) { - paramsPasskey.append("requestId", command.requestId); + { + const paramsPasskey = new URLSearchParams({ + loginName: command.ignoreUnknownUsernames + ? command.loginName + : (session?.factors?.user?.loginName ?? user.preferredLoginName), + }); + if (command.requestId) { + paramsPasskey.append("requestId", command.requestId); + } + + if (organization) { + paramsPasskey.append("organization", organization); + } + + return { redirect: "/passkey?" + paramsPasskey }; } - if (organization) { - paramsPasskey.append("organization", organization); - } - - return { redirect: "/passkey?" + paramsPasskey }; - - case AuthenticationMethodType.IDP: + case AuthenticationMethodType.IDP: { const resp = await redirectUserToIDP(userId, organization); if (resp?.error) { @@ -425,6 +429,7 @@ export async function sendLoginname(command: SendLoginnameCommand) { } return resp; + } } } else { // prefer passkey in favor of other methods diff --git a/apps/login/src/lib/server/password.test.ts b/apps/login/src/lib/server/password.test.ts index a514001cf..41a256197 100644 --- a/apps/login/src/lib/server/password.test.ts +++ b/apps/login/src/lib/server/password.test.ts @@ -317,7 +317,6 @@ describe("sendPassword", () => { const { completeFlowOrGetUrl } = await import("../client"); vi.mocked(completeFlowOrGetUrl).mockResolvedValue({ redirect: "https://example.com" }); - // eslint-disable-next-line const verifyHelper = await import("../verify-helper"); vi.mocked(verifyHelper.checkPasswordChangeRequired).mockReturnValue(undefined); vi.mocked(verifyHelper.checkEmailVerification).mockReturnValue(undefined); diff --git a/apps/login/src/lib/server/password.ts b/apps/login/src/lib/server/password.ts index 8a9db0a53..1097ad00a 100644 --- a/apps/login/src/lib/server/password.ts +++ b/apps/login/src/lib/server/password.ts @@ -293,7 +293,7 @@ export async function sendPassword( return { error: t(messageKey, { failedAttempts: error.failedAttempts, - maxPasswordAttempts: hasLimit ? (lockoutSettings?.maxPasswordAttempts).toString() : "?", + maxPasswordAttempts: hasLimit ? String(lockoutSettings?.maxPasswordAttempts ?? 0) : "?", lockoutMessage: locked ? t("errors.accountLockedContactAdmin") : "", }), }; @@ -565,7 +565,7 @@ export async function checkSessionAndSetPassword({ return { error: t(messageKey, { failedAttempts: error.failedAttempts, - maxPasswordAttempts: hasLimit ? (lockoutSettings?.maxPasswordAttempts).toString() : "?", + maxPasswordAttempts: hasLimit ? String(lockoutSettings?.maxPasswordAttempts ?? 0) : "?", lockoutMessage: locked ? t("errors.accountLockedContactAdmin") : "", }), }; diff --git a/apps/login/src/lib/verify-helper.ts b/apps/login/src/lib/verify-helper.ts index 2ece17e63..5040e5130 100644 --- a/apps/login/src/lib/verify-helper.ts +++ b/apps/login/src/lib/verify-helper.ts @@ -164,6 +164,7 @@ export async function checkMFAFactors( // TODO: provide a way to setup passkeys on mfa page? return { redirect: `/mfa/set?` + params }; + /* eslint-disable no-dupe-else-if -- TODO: this branch is unreachable, conditions overlap with the previous branch */ } else if ( loginSettings?.mfaInitSkipLifetime && (loginSettings.mfaInitSkipLifetime.nanos > 0 || loginSettings.mfaInitSkipLifetime.seconds > 0) && @@ -171,6 +172,7 @@ export async function checkMFAFactors( session?.factors?.user?.id && shouldEnforceMFA(session, loginSettings) ) { + /* eslint-enable no-dupe-else-if */ const userResponse = await getUserByID({ serviceConfig, userId: session.factors?.user?.id }); const humanUser = userResponse?.user?.type.case === "human" ? userResponse?.user.type.value : undefined; diff --git a/apps/login/src/lib/zitadel.ts b/apps/login/src/lib/zitadel.ts index 6d2fde31a..0d6c1336d 100644 --- a/apps/login/src/lib/zitadel.ts +++ b/apps/login/src/lib/zitadel.ts @@ -1237,20 +1237,18 @@ export interface ServiceConfig { /** * Base type that all function parameters must extend to ensure serviceConfig is always required */ +// eslint-disable-next-line @typescript-eslint/no-empty-object-type export type WithServiceConfig = T & { serviceConfig: ServiceConfig; }; export function createServerTransport(token: string, serviceConfig: ServiceConfig) { // Build interceptors list - OTEL interceptor is always included for trace propagation - // eslint-disable-next-line @typescript-eslint/no-explicit-any const interceptors: any[] = [otelGrpcInterceptor]; // Add custom headers interceptor if needed if (process.env.CUSTOM_REQUEST_HEADERS || serviceConfig.instanceHost || serviceConfig.publicHost) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any interceptors.push((next: any) => { - // eslint-disable-next-line @typescript-eslint/no-explicit-any return (req: any) => { // Apply headers from serviceConfig if (serviceConfig.instanceHost) { diff --git a/apps/login/tsconfig.json b/apps/login/tsconfig.json index cc9089616..d109ec052 100644 --- a/apps/login/tsconfig.json +++ b/apps/login/tsconfig.json @@ -39,6 +39,7 @@ "node_modules", "integration", "acceptance", - "dockerized" + "dockerized", + "vitest.config*.ts" ] } diff --git a/apps/login/vitest.config.dockerized.mts b/apps/login/vitest.config.dockerized.ts similarity index 100% rename from apps/login/vitest.config.dockerized.mts rename to apps/login/vitest.config.dockerized.ts diff --git a/apps/login/vitest.config.mts b/apps/login/vitest.config.ts similarity index 100% rename from apps/login/vitest.config.mts rename to apps/login/vitest.config.ts diff --git a/console/.eslintrc.js b/console/.eslintrc.js deleted file mode 100644 index 0b9ce1afd..000000000 --- a/console/.eslintrc.js +++ /dev/null @@ -1,40 +0,0 @@ -module.exports = { - root: true, - ignorePatterns: ['projects/**/*'], - overrides: [ - { - files: ['*.ts'], - parserOptions: { - project: ['tsconfig.json', 'e2e/tsconfig.json'], - createDefaultProgram: true, - tsconfigRootDir: __dirname, - }, - extends: ['plugin:@angular-eslint/recommended', 'plugin:@angular-eslint/template/process-inline-templates'], - rules: { - '@angular-eslint/no-conflicting-lifecycle': 'off', - '@angular-eslint/no-host-metadata-property': 'off', - '@angular-eslint/component-selector': [ - 'error', - { - prefix: 'cnsl', - style: 'kebab-case', - type: 'element', - }, - ], - '@angular-eslint/directive-selector': [ - 'error', - { - prefix: 'cnsl', - style: 'camelCase', - type: 'attribute', - }, - ], - }, - }, - { - files: ['*.html'], - extends: ['plugin:@angular-eslint/template/recommended'], - rules: {}, - }, - ], -}; diff --git a/console/eslint.config.mjs b/console/eslint.config.mjs new file mode 100644 index 000000000..6b1c08294 --- /dev/null +++ b/console/eslint.config.mjs @@ -0,0 +1,110 @@ +import js from "@eslint/js"; +import angularPlugin from "@angular-eslint/eslint-plugin"; +import angularTemplatePlugin from "@angular-eslint/eslint-plugin-template"; +import angularTemplateParser from "@angular-eslint/template-parser"; +import tsPlugin from "@typescript-eslint/eslint-plugin"; +import tsParser from "@typescript-eslint/parser"; +import importPlugin from "eslint-plugin-import"; +import prettierConfig from "eslint-config-prettier/flat"; +import globals from "globals"; + +export default [ + { + ignores: [ + "projects/**/*", + "dist/**", + "node_modules/**", + ".angular/**", + "src/app/proto/generated/**", + ], + }, + js.configs.recommended, + { + files: ["**/*.{js,mjs,cjs}"], + languageOptions: { + globals: { + ...globals.browser, + ...globals.node, + }, + }, + }, + { + files: ["**/*.ts"], + plugins: { + "@typescript-eslint": tsPlugin, + "@angular-eslint": angularPlugin, + import: importPlugin, + }, + languageOptions: { + parser: tsParser, + parserOptions: { + project: ["tsconfig.json", "e2e/tsconfig.json"], + createDefaultProgram: true, + }, + }, + processor: angularTemplatePlugin.processors["extract-inline-html"], + settings: { + "import/resolver": { + typescript: true, + }, + }, + rules: { + ...tsPlugin.configs.recommended.rules, + ...importPlugin.configs.recommended.rules, + // Proto imports are generated at build time and don't exist during lint + "import/no-unresolved": "off", + "no-unused-vars": "off", + "no-undef": "off", + "@typescript-eslint/no-unused-vars": [ + "warn", + { argsIgnorePattern: "^_" }, + ], + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/ban-ts-comment": "off", + "@typescript-eslint/no-unused-expressions": "off", + "@typescript-eslint/no-require-imports": "off", + "@typescript-eslint/no-unsafe-function-type": "off", + "@typescript-eslint/no-wrapper-object-types": "off", + "@typescript-eslint/no-empty-object-type": "off", + "no-case-declarations": "off", + ...angularPlugin.configs.recommended.rules, + // Disable rules added in angular-eslint 21.x that weren't in the original 18.x config + "@angular-eslint/prefer-inject": "off", + "@angular-eslint/prefer-standalone": "off", + "@angular-eslint/no-conflicting-lifecycle": "off", + "@angular-eslint/no-host-metadata-property": "off", + "@angular-eslint/component-selector": [ + "error", + { + prefix: "cnsl", + style: "kebab-case", + type: "element", + }, + ], + "@angular-eslint/directive-selector": [ + "error", + { + prefix: "cnsl", + style: "camelCase", + type: "attribute", + }, + ], + }, + }, + { + files: ["**/*.html"], + plugins: { + "@angular-eslint/template": angularTemplatePlugin, + }, + languageOptions: { + parser: angularTemplateParser, + }, + rules: { + ...angularTemplatePlugin.configs.recommended.rules, + // Disable rules added in angular-eslint 21.x that weren't in the original 18.x config + "@angular-eslint/template/prefer-control-flow": "off", + "@angular-eslint/template/eqeqeq": "off", + }, + }, + prettierConfig, +]; diff --git a/console/package.json b/console/package.json index 75b2829ca..e94999b64 100644 --- a/console/package.json +++ b/console/package.json @@ -5,7 +5,7 @@ "ng": "ng", "dev": "wait-on --verbose --interval 2000 --simultaneous 1 --timeout 30m ${ENVIRONMENT_JSON_URL} && node prebuild.development.js && ng serve --host=${DEVCONTAINER_LISTEN_HOST:-127.0.0.1}", "build": "ng build --configuration production --base-href=/ui/console/", - "lint-check-ng": "ng lint", + "lint-check-ng": "eslint .", "lint-check-prettier": "prettier --check src", "lint-fix": "prettier --write src", "generate": "pnpm exec buf generate ../proto --include-imports --include-wkt", @@ -59,15 +59,14 @@ "zone.js": "~0.15.1" }, "devDependencies": { - "@angular-eslint/builder": "18.3.0", - "@angular-eslint/eslint-plugin": "18.0.0", - "@angular-eslint/eslint-plugin-template": "18.0.0", - "@angular-eslint/schematics": "19.8.1", - "@angular-eslint/template-parser": "19.8.1", + "@angular-eslint/eslint-plugin": "21.3.0", + "@angular-eslint/eslint-plugin-template": "21.3.0", + "@angular-eslint/template-parser": "21.3.0", "@angular/build": "^20.3.15", "@angular/cli": "^20.3.15", "@angular/compiler-cli": "^20.3.16", "@angular/language-service": "^20.3.16", + "@eslint/js": "^10.0.0", "@types/file-saver": "^2.0.7", "@types/google-protobuf": "~3.15.12", "@types/jasmine": "~5.1.15", @@ -77,11 +76,15 @@ "@types/opentype.js": "^1.3.9", "@types/qrcode": "^1.5.6", "@types/uuid": "^10.0.0", - "@typescript-eslint/eslint-plugin": "^8.54.0", - "@typescript-eslint/parser": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.57.0", + "@typescript-eslint/parser": "^8.57.0", "@zitadel/client": "workspace:*", "@zitadel/proto": "workspace:*", - "eslint": "^8.57.1", + "eslint": "^10.0.0", + "eslint-config-prettier": "^10.1.8", + "eslint-import-resolver-typescript": "^4.4.4", + "eslint-plugin-import": "^2.32.0", + "globals": "^17.0.0", "jasmine-core": "~5.12.1", "jasmine-spec-reporter": "~7.0.0", "karma": "^6.4.4", diff --git a/console/src/app/directives/scrollable/scrollable.directive.ts b/console/src/app/directives/scrollable/scrollable.directive.ts index a8cda5fae..cd38ddf58 100644 --- a/console/src/app/directives/scrollable/scrollable.directive.ts +++ b/console/src/app/directives/scrollable/scrollable.directive.ts @@ -25,6 +25,8 @@ export class ScrollableDirective { if (top === 0) { this.scrollPosition.emit('top'); } - } catch (err) {} + } catch { + // scroll position detection may fail in some browsers + } } } diff --git a/console/src/app/modules/display-json-dialog/display-json-dialog.component.ts b/console/src/app/modules/display-json-dialog/display-json-dialog.component.ts index 4e5e917c3..5976e069d 100644 --- a/console/src/app/modules/display-json-dialog/display-json-dialog.component.ts +++ b/console/src/app/modules/display-json-dialog/display-json-dialog.component.ts @@ -19,8 +19,6 @@ export class DisplayJsonDialogComponent { @Inject(MAT_DIALOG_DATA) public data: any, ) { this.event = data.event; - if ((data.event as Event) && data.event.payload) { - } } public closeDialog(): void { diff --git a/console/src/app/modules/idp-table/idp-table.component.ts b/console/src/app/modules/idp-table/idp-table.component.ts index 9feecb479..77e0d7109 100644 --- a/console/src/app/modules/idp-table/idp-table.component.ts +++ b/console/src/app/modules/idp-table/idp-table.component.ts @@ -235,6 +235,7 @@ export class IdpTableComponent implements OnInit, OnDestroy { } else if (this.service instanceof ManagementService) { return ['/org', 'idp', 'create']; } + return undefined; } public routerLinkForRow(row: Provider.AsObject): any { diff --git a/console/src/app/modules/input/input.directive.ts b/console/src/app/modules/input/input.directive.ts index 7d6803e8b..c98cd5fce 100644 --- a/console/src/app/modules/input/input.directive.ts +++ b/console/src/app/modules/input/input.directive.ts @@ -248,6 +248,7 @@ export class InputDirective implements MatFormFieldControl, OnChanges, OnDe this._previousNativeValue = this.value; // Force setter to be called in case id was not specified. + // eslint-disable-next-line no-self-assign this.id = this.id; // On some versions of iOS the caret gets stuck in the wrong place when holding down the delete diff --git a/console/src/app/modules/policies/notification-sms-provider/dialog-add-sms-provider/dialog-add-sms-provider.component.ts b/console/src/app/modules/policies/notification-sms-provider/dialog-add-sms-provider/dialog-add-sms-provider.component.ts index fd5e53731..4ebcf298f 100644 --- a/console/src/app/modules/policies/notification-sms-provider/dialog-add-sms-provider/dialog-add-sms-provider.component.ts +++ b/console/src/app/modules/policies/notification-sms-provider/dialog-add-sms-provider/dialog-add-sms-provider.component.ts @@ -48,7 +48,7 @@ export class DialogAddSMSProviderComponent { }); this.smsProviders = data.smsProviders; - if (!!this.twilio) { + if (this.twilio) { this.twilioForm.patchValue(this.twilio); } else { this.twilioForm.addControl('token', new FormControl('', requiredValidator)); diff --git a/console/src/app/modules/policies/notification-sms-provider/notification-sms-provider.component.ts b/console/src/app/modules/policies/notification-sms-provider/notification-sms-provider.component.ts index af48471fd..12a47dd6d 100644 --- a/console/src/app/modules/policies/notification-sms-provider/notification-sms-provider.component.ts +++ b/console/src/app/modules/policies/notification-sms-provider/notification-sms-provider.component.ts @@ -61,7 +61,7 @@ export class NotificationSMSProviderComponent implements OnInit { dialogRef.afterClosed().subscribe((req: AddSMSProviderTwilioRequest | UpdateSMSProviderTwilioRequest) => { if (req) { - if (!!this.twilio) { + if (this.twilio) { this.service .updateSMSProviderTwilio(req as UpdateSMSProviderTwilioRequest) .then(() => { diff --git a/console/src/app/services/statehandler/statehandler.service.ts b/console/src/app/services/statehandler/statehandler.service.ts index fa034e56f..4014f2450 100644 --- a/console/src/app/services/statehandler/statehandler.service.ts +++ b/console/src/app/services/statehandler/statehandler.service.ts @@ -72,10 +72,9 @@ export class StatehandlerServiceImpl implements StatehandlerService, OnDestroy { removeParam(key: string, sourceURL: string) { var rtn = sourceURL.split('?')[0], param, - params_arr = [], queryString = sourceURL.indexOf('?') !== -1 ? sourceURL.split('?')[1] : ''; if (queryString !== '') { - params_arr = queryString.split('&'); + var params_arr = queryString.split('&'); for (var i = params_arr.length - 1; i >= 0; i -= 1) { param = params_arr[i].split('=')[0]; if (param === key) { diff --git a/console/src/app/utils/color.ts b/console/src/app/utils/color.ts index fef8da25a..e55a5de8f 100644 --- a/console/src/app/utils/color.ts +++ b/console/src/app/utils/color.ts @@ -72,7 +72,7 @@ export function getColor(toGen: string): string { export function getMembershipColor(role: string): Color { const hash = hashCode(role); - let color = COLORS[hash % COLORS.length]; + let color: Color; switch (role) { case 'IAM_OWNER': diff --git a/packages/zitadel-client/.eslintrc.cjs b/packages/zitadel-client/.eslintrc.cjs deleted file mode 100644 index dc9f0a66c..000000000 --- a/packages/zitadel-client/.eslintrc.cjs +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = { - root: true, - extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended"], - parser: "@typescript-eslint/parser", - plugins: ["@typescript-eslint"], - env: { - node: true, - es2022: true, - }, - parserOptions: { - ecmaVersion: 2022, - sourceType: "module", - }, - rules: { - "@typescript-eslint/no-unused-vars": ["error", { argsIgnorePattern: "^_" }] - } -}; diff --git a/packages/zitadel-client/eslint.config.mjs b/packages/zitadel-client/eslint.config.mjs new file mode 100644 index 000000000..daf577b24 --- /dev/null +++ b/packages/zitadel-client/eslint.config.mjs @@ -0,0 +1,44 @@ +import js from "@eslint/js"; +import tsPlugin from "@typescript-eslint/eslint-plugin"; +import tsParser from "@typescript-eslint/parser"; +import prettierConfig from "eslint-config-prettier/flat"; +import importPlugin from "eslint-plugin-import"; +import globals from "globals"; + +export default [ + { + ignores: ["dist/**", "node_modules/**"], + }, + js.configs.recommended, + { + files: ["**/*.ts"], + plugins: { + "@typescript-eslint": tsPlugin, + import: importPlugin, + }, + languageOptions: { + parser: tsParser, + ecmaVersion: 2022, + sourceType: "module", + globals: { + ...globals.node, + }, + }, + settings: { + "import/resolver": { + typescript: true, + }, + }, + rules: { + ...tsPlugin.configs.recommended.rules, + ...importPlugin.configs.recommended.rules, + "no-unused-vars": "off", + "no-undef": "off", + "@typescript-eslint/no-unused-vars": [ + "error", + { argsIgnorePattern: "^_" }, + ], + }, + }, + prettierConfig, +]; diff --git a/packages/zitadel-client/package.json b/packages/zitadel-client/package.json index fe1c9d007..db5bd325c 100644 --- a/packages/zitadel-client/package.json +++ b/packages/zitadel-client/package.json @@ -65,7 +65,7 @@ "sideEffects": false, "scripts": { "build": "tsup", - "lint-check-eslint": "eslint 'src/**/*.ts*'", + "lint-check-eslint": "eslint .", "lint-check-knip": "knip", "test-unit": "vitest --run", "clean": "rm -rf node_modules dist" @@ -80,10 +80,15 @@ }, "devDependencies": { "@bufbuild/protocompile": "^0.0.1", + "@eslint/js": "^10.0.0", "@types/node": "^24.10.9", - "@typescript-eslint/eslint-plugin": "^8.54.0", - "@typescript-eslint/parser": "^8.54.0", - "eslint": "^8.57.1", + "@typescript-eslint/eslint-plugin": "^8.57.0", + "@typescript-eslint/parser": "^8.57.0", + "eslint": "^10.0.0", + "eslint-config-prettier": "^10.1.8", + "eslint-import-resolver-typescript": "^4.4.4", + "eslint-plugin-import": "^2.32.0", + "globals": "^17.0.0", "knip": "^5.82.1", "tsup": "^8.5.1", "typescript": "^5.9.3", diff --git a/packages/zitadel-client/project.json b/packages/zitadel-client/project.json index bd044ec90..bde548ead 100644 --- a/packages/zitadel-client/project.json +++ b/packages/zitadel-client/project.json @@ -18,6 +18,7 @@ }, "lint-check-eslint": { "description": "Checks code formatting with ESLint", + "dependsOn": ["^generate"], "inputs": [ "default" ], diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 56a6a9060..55a8c6011 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -109,9 +109,6 @@ importers: specifier: ^4.3.6 version: 4.3.6 devDependencies: - '@eslint/eslintrc': - specifier: ^3.3.3 - version: 3.3.3 '@eslint/js': specifier: ^10.0.1 version: 10.0.1(eslint@10.0.0(jiti@2.6.1)) @@ -134,20 +131,26 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@typescript-eslint/eslint-plugin': - specifier: ^8.56.0 - version: 8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + specifier: ^8.57.0 + version: 8.57.0(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^8.56.0 - version: 8.56.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + specifier: ^8.57.0 + version: 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) eslint: specifier: ^10.0.0 version: 10.0.0(jiti@2.6.1) - eslint-config-next: - specifier: 16.1.6 - version: 16.1.6(@typescript-eslint/parser@8.56.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + eslint-config-prettier: + specifier: ^10.1.8 + version: 10.1.8(eslint@10.0.0(jiti@2.6.1)) + eslint-import-resolver-typescript: + specifier: ^4.4.4 + version: 4.4.4(eslint-plugin-import@2.32.0)(eslint@10.0.0(jiti@2.6.1)) + eslint-plugin-import: + specifier: ^2.32.0 + version: 2.32.0(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)) eslint-plugin-mdx: - specifier: ^3.6.2 - version: 3.6.2(eslint@10.0.0(jiti@2.6.1)) + specifier: ^3.7.0 + version: 3.7.0(eslint@10.0.0(jiti@2.6.1)) glob: specifier: ^13.0.5 version: 13.0.5 @@ -278,12 +281,15 @@ importers: specifier: ^3.17.0 version: 3.19.0 devDependencies: - '@babel/eslint-parser': - specifier: ^7.28.6 - version: 7.28.6(@babel/core@7.28.4)(eslint@8.57.1) + '@eslint/js': + specifier: ^10.0.0 + version: 10.0.1(eslint@10.0.0(jiti@2.6.1)) '@faker-js/faker': specifier: ^9.9.0 version: 9.9.0 + '@next/eslint-plugin-next': + specifier: 16.1.6 + version: 16.1.6 '@opentelemetry/sdk-trace-base': specifier: ^2.5.0 version: 2.5.1(@opentelemetry/api@1.9.0) @@ -330,11 +336,11 @@ importers: specifier: ^10.0.0 version: 10.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^8.54.0 - version: 8.54.0(@typescript-eslint/parser@8.54.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.57.0 + version: 8.57.0(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^8.54.0 - version: 8.54.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.57.0 + version: 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) '@vercel/git-hooks': specifier: 1.0.0 version: 1.0.0 @@ -366,20 +372,29 @@ importers: specifier: ^0.27.3 version: 0.27.3 eslint: - specifier: ^8.57.1 - version: 8.57.1 - eslint-config-next: - specifier: 15.5.9 - version: 15.5.9(eslint@8.57.1)(typescript@5.9.3) + specifier: ^10.0.0 + version: 10.0.0(jiti@2.6.1) eslint-config-prettier: - specifier: ^9.1.2 - version: 9.1.2(eslint@8.57.1) + specifier: ^10.1.8 + version: 10.1.8(eslint@10.0.0(jiti@2.6.1)) + eslint-import-resolver-typescript: + specifier: ^4.4.4 + version: 4.4.4(eslint-plugin-import@2.32.0)(eslint@10.0.0(jiti@2.6.1)) + eslint-plugin-cypress: + specifier: ^4.2.0 + version: 4.3.0(eslint@10.0.0(jiti@2.6.1)) eslint-plugin-import: specifier: ^2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.54.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1) + version: 2.32.0(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)) + eslint-plugin-react-hooks: + specifier: ^7.0.1 + version: 7.0.1(eslint@10.0.0(jiti@2.6.1)) gaxios: specifier: ^7.1.3 version: 7.1.3 + globals: + specifier: ^17.0.0 + version: 17.3.0 grpc-tools: specifier: ^1.13.1 version: 1.13.1(encoding@0.1.13) @@ -567,21 +582,15 @@ importers: specifier: ~0.15.1 version: 0.15.1 devDependencies: - '@angular-eslint/builder': - specifier: 18.3.0 - version: 18.3.0(eslint@8.57.1)(typescript@5.9.2) '@angular-eslint/eslint-plugin': - specifier: 18.0.0 - version: 18.0.0(eslint@8.57.1)(typescript@5.9.2) + specifier: 21.3.0 + version: 21.3.0(@typescript-eslint/utils@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) '@angular-eslint/eslint-plugin-template': - specifier: 18.0.0 - version: 18.0.0(eslint@8.57.1)(typescript@5.9.2) - '@angular-eslint/schematics': - specifier: 19.8.1 - version: 19.8.1(@angular-eslint/template-parser@19.8.1(eslint@8.57.1)(typescript@5.9.2))(@typescript-eslint/types@8.56.0)(@typescript-eslint/utils@8.56.0(eslint@8.57.1)(typescript@5.9.2))(chokidar@4.0.3)(eslint@8.57.1)(typescript@5.9.2) + specifier: 21.3.0 + version: 21.3.0(@angular-eslint/template-parser@21.3.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(@typescript-eslint/types@8.57.0)(@typescript-eslint/utils@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) '@angular-eslint/template-parser': - specifier: 19.8.1 - version: 19.8.1(eslint@8.57.1)(typescript@5.9.2) + specifier: 21.3.0 + version: 21.3.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) '@angular/build': specifier: ^20.3.15 version: 20.3.15(@angular/compiler-cli@20.3.16(@angular/compiler@20.3.16)(typescript@5.9.2))(@angular/compiler@20.3.16)(@angular/core@20.3.16(@angular/compiler@20.3.16)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.16(@angular/animations@20.3.16(@angular/core@20.3.16(@angular/compiler@20.3.16)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.16(@angular/core@20.3.16(@angular/compiler@20.3.16)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.16(@angular/compiler@20.3.16)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/service-worker@20.3.16(@angular/core@20.3.16(@angular/compiler@20.3.16)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@types/node@22.19.7)(chokidar@4.0.3)(jiti@2.6.1)(karma@6.4.4)(lightningcss@1.30.2)(postcss@8.5.6)(tailwindcss@4.1.18)(terser@5.44.0)(tslib@2.8.1)(tsx@4.21.0)(typescript@5.9.2)(yaml@2.8.1) @@ -594,6 +603,9 @@ importers: '@angular/language-service': specifier: ^20.3.16 version: 20.3.16 + '@eslint/js': + specifier: ^10.0.0 + version: 10.0.1(eslint@10.0.0(jiti@2.6.1)) '@types/file-saver': specifier: ^2.0.7 version: 2.0.7 @@ -622,11 +634,11 @@ importers: specifier: ^10.0.0 version: 10.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^8.54.0 - version: 8.54.0(@typescript-eslint/parser@8.54.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) + specifier: ^8.57.0 + version: 8.57.0(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) '@typescript-eslint/parser': - specifier: ^8.54.0 - version: 8.54.0(eslint@8.57.1)(typescript@5.9.2) + specifier: ^8.57.0 + version: 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) '@zitadel/client': specifier: workspace:* version: link:../packages/zitadel-client @@ -634,8 +646,20 @@ importers: specifier: workspace:* version: link:../packages/zitadel-proto eslint: - specifier: ^8.57.1 - version: 8.57.1 + specifier: ^10.0.0 + version: 10.0.0(jiti@2.6.1) + eslint-config-prettier: + specifier: ^10.1.8 + version: 10.1.8(eslint@10.0.0(jiti@2.6.1)) + eslint-import-resolver-typescript: + specifier: ^4.4.4 + version: 4.4.4(eslint-plugin-import@2.32.0)(eslint@10.0.0(jiti@2.6.1)) + eslint-plugin-import: + specifier: ^2.32.0 + version: 2.32.0(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)) + globals: + specifier: ^17.0.0 + version: 17.3.0 jasmine-core: specifier: ~5.12.1 version: 5.12.1 @@ -703,18 +727,33 @@ importers: '@bufbuild/protocompile': specifier: ^0.0.1 version: 0.0.1(@bufbuild/buf@1.65.0) + '@eslint/js': + specifier: ^10.0.0 + version: 10.0.1(eslint@10.0.0(jiti@2.6.1)) '@types/node': specifier: ^24.10.9 version: 24.10.9 '@typescript-eslint/eslint-plugin': - specifier: ^8.54.0 - version: 8.54.0(@typescript-eslint/parser@8.54.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.57.0 + version: 8.57.0(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^8.54.0 - version: 8.54.0(eslint@8.57.1)(typescript@5.9.3) + specifier: ^8.57.0 + version: 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) eslint: - specifier: ^8.57.1 - version: 8.57.1 + specifier: ^10.0.0 + version: 10.0.0(jiti@2.6.1) + eslint-config-prettier: + specifier: ^10.1.8 + version: 10.1.8(eslint@10.0.0(jiti@2.6.1)) + eslint-import-resolver-typescript: + specifier: ^4.4.4 + version: 4.4.4(eslint-plugin-import@2.32.0)(eslint@10.0.0(jiti@2.6.1)) + eslint-plugin-import: + specifier: ^2.32.0 + version: 2.32.0(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)) + globals: + specifier: ^17.0.0 + version: 17.3.0 knip: specifier: ^5.82.1 version: 5.82.1(@types/node@24.10.9)(typescript@5.9.3) @@ -919,15 +958,6 @@ packages: resolution: {integrity: sha512-HmGnUTLVwpvOFilc3gTP6CL9o+UbkVyu9S4WENkQbInbW3zp54lkzY71uWJIP7QvuXPa+bS4WHEmoGNQtNvv1A==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-devkit/core@19.2.17': - resolution: {integrity: sha512-Ah008x2RJkd0F+NLKqIpA34/vUGwjlprRCkvddjDopAWRzYn6xCkz1Tqwuhn0nR1Dy47wTLKYD999TYl5ONOAQ==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - peerDependencies: - chokidar: ^4.0.0 - peerDependenciesMeta: - chokidar: - optional: true - '@angular-devkit/core@20.3.15': resolution: {integrity: sha512-s7sE4S5Hy62dLrtHwizbZaMcupAE8fPhm6rF+jBkhHZ75zXGhGzXP8WKFztYCAuGnis4pPnGSEKP/xVTc2lw6Q==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} @@ -937,74 +967,40 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@19.2.17': - resolution: {integrity: sha512-ADfbaBsrG8mBF6Mfs+crKA/2ykB8AJI50Cv9tKmZfwcUcyAdmTr+vVvhsBCfvUAEokigSsgqgpYxfkJVxhJYeg==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-devkit/schematics@20.3.15': resolution: {integrity: sha512-xMN1fyuhhP8Y5sNlmQvl4nMiOouHTKPkLR0zlhu5z6fHuwxxlverh31Gpq3eFzPHqmOzzb2TkgYCptCFXsXcrg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-eslint/builder@18.3.0': - resolution: {integrity: sha512-httEQyqyBw3+0CRtAa7muFxHrauRfkEfk/jmrh5fn2Eiu+I53hAqFPgrwVi1V6AP/kj2zbAiWhd5xM3pMJdoRQ==} + '@angular-eslint/bundled-angular-compiler@21.3.0': + resolution: {integrity: sha512-l521I24J9gJxyMbRkrM24Tc7W8J8BP+TDAmVs2nT8+lXbS3kg8QpWBRtd+hNUgq6o+vt+lKBkytnEfu8OiqeRg==} + + '@angular-eslint/eslint-plugin-template@21.3.0': + resolution: {integrity: sha512-lVixd/KypPWgA/5/pUOhJV9MTcaHjYZEqyOi+IiLk+h+maGxn6/s6Ot+20n+XGS85zAgOY+qUw6EEQ11hoojIQ==} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - - '@angular-eslint/bundled-angular-compiler@18.0.0': - resolution: {integrity: sha512-c5XNfpWN6vfMoZpnLLeras7nUIVI10ofJu3W3s1s1NpCjP67kY84SPYRJIND1LemVewMQ+mhnP4xJnqvJxC1tA==} - - '@angular-eslint/bundled-angular-compiler@19.8.1': - resolution: {integrity: sha512-WXi1YbSs7SIQo48u+fCcc5Nt14/T4QzYQPLZUnjtsUXPgQG7ZoahhcGf7PPQ+n0V3pSopHOlSHwqK+tSsYK87A==} - - '@angular-eslint/eslint-plugin-template@18.0.0': - resolution: {integrity: sha512-KN32zW5eutRLumjJNGM77pZ4dpQe/PlffU2fGGVagHSDRrjaEqBmJ/khecUHjz3+VxYLbVWBM2skfb5jC4Lr2g==} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - - '@angular-eslint/eslint-plugin-template@19.8.1': - resolution: {integrity: sha512-0ZVQldndLrDfB0tzFe/uIwvkUcakw8qGxvkEU0l7kSbv/ngNQ/qrkRi7P64otB15inIDUNZI2jtmVat52dqSfQ==} - peerDependencies: - '@angular-eslint/template-parser': 19.8.1 + '@angular-eslint/template-parser': 21.3.0 '@typescript-eslint/types': ^7.11.0 || ^8.0.0 '@typescript-eslint/utils': ^7.11.0 || ^8.0.0 - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '*' - '@angular-eslint/eslint-plugin@18.0.0': - resolution: {integrity: sha512-XhsIR28HiFOg3qbyjr0ZFBvOeFSXowbriFn8pAuiUjYoLJEtNZzPA1Ih/J0Ky5ZXYwcSJbZRQdNR/q1INQEFqA==} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - - '@angular-eslint/eslint-plugin@19.8.1': - resolution: {integrity: sha512-wZEBMPwD2TRhifG751hcj137EMIEaFmsxRB2EI+vfINCgPnFGSGGOHXqi8aInn9fXqHs7VbXkAzXYdBsvy1m4Q==} + '@angular-eslint/eslint-plugin@21.3.0': + resolution: {integrity: sha512-Whf/AUUBekOlfSJRS78m76YGrBQAZ3waXE7oOdlW5xEQvn8jBDN9EGuNnjg/syZzvzjK4ZpYC4g1XYXrc+fQIg==} peerDependencies: '@typescript-eslint/utils': ^7.11.0 || ^8.0.0 - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '*' - '@angular-eslint/schematics@19.8.1': - resolution: {integrity: sha512-MKzfO3puOCuQFgP8XDUkEr5eaqcCQLAdYLLMcywEO/iRs1eRHL46+rkW+SjDp1cUqlxKtu+rLiTYr0T/O4fi9Q==} - - '@angular-eslint/template-parser@19.8.1': - resolution: {integrity: sha512-pQiOg+se1AU/ncMlnJ9V6xYnMQ84qI1BGWuJpbU6A99VTXJg90scg0+T7DWmKssR1YjP5qmmBtrZfKsHEcLW/A==} + '@angular-eslint/template-parser@21.3.0': + resolution: {integrity: sha512-ysyou1zAY6M6rSZNdIcYKGd4nk6TCapamyFNB3ivmTlVZ0O35TS9o/rJ0aUttuHgDp+Ysgs3ql+LA746PXgCyQ==} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '*' - '@angular-eslint/utils@18.0.0': - resolution: {integrity: sha512-ygOlsC5HrknbI8Ah5pa6tGtrpxB0W4UqzZG9Ii7whoWs7OjkBTIbeNy/qaWv1e45MR2/Ytd5BSWK17w0Poyz8w==} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - - '@angular-eslint/utils@19.8.1': - resolution: {integrity: sha512-gVDKYWmAjeTPtaYmddT/HS03fCebXJtrk8G1MouQIviZbHqLjap6TbVlzlkBigRzaF0WnFnrDduQslkJzEdceA==} + '@angular-eslint/utils@21.3.0': + resolution: {integrity: sha512-oNigH6w3l+owTMboj/uFG0tHOy43uH8BpQRtBOQL1/s2+5in/BJ2Fjobv3SyizxTgeJ1FhRefbkT8GmVjK7jAA==} peerDependencies: '@typescript-eslint/utils': ^7.11.0 || ^8.0.0 - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '*' '@angular/animations@20.3.16': @@ -1192,13 +1188,6 @@ packages: resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==} engines: {node: '>=6.9.0'} - '@babel/eslint-parser@7.28.6': - resolution: {integrity: sha512-QGmsKi2PBO/MHSQk+AAgA9R6OHQr+VqnniFE0eMWZcVcfBZoA2dKn2hUsl3Csg/Plt9opRUWdY7//VXsrIlEiA==} - engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} - peerDependencies: - '@babel/core': ^7.11.0 - eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 - '@babel/generator@7.28.3': resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} engines: {node: '>=6.9.0'} @@ -1237,10 +1226,6 @@ packages: resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.27.1': - resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.28.5': resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} @@ -2186,22 +2171,12 @@ packages: cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.9.0': - resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/eslint-utils@4.9.1': resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.12.1': - resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint-community/regexpp@4.12.2': resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -2218,14 +2193,6 @@ packages: resolution: {integrity: sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@eslint/eslintrc@3.3.3': - resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@10.0.1': resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} @@ -2235,10 +2202,6 @@ packages: eslint: optional: true - '@eslint/js@8.57.1': - resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@eslint/object-schema@3.0.1': resolution: {integrity: sha512-P9cq2dpr+LU8j3qbLygLcSZrl2/ds/pUpfnHNNuk5HW7mnngHs+6WSq5C9mO3rqRX8A1poxqLTC9cu0KOyJlBg==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} @@ -2432,19 +2395,10 @@ packages: resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} engines: {node: '>=18.18.0'} - '@humanwhocodes/config-array@0.13.0': - resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} - 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.4.3': resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} @@ -3113,9 +3067,6 @@ packages: '@next/env@16.1.6': resolution: {integrity: sha512-N1ySLuZjnAtN3kFnwhAwPvZah8RJxKasD7x1f8shFqhncnWZn4JMfg37diLNuoHsLAlrDfM3g4mawVdtAG8XLQ==} - '@next/eslint-plugin-next@15.5.9': - resolution: {integrity: sha512-kUzXx0iFiXw27cQAViE1yKWnz/nF8JzRmwgMRTMh8qMY90crNsdXJRh2e+R0vBpFR3kk1yvAR7wev7+fCCb79Q==} - '@next/eslint-plugin-next@16.1.6': resolution: {integrity: sha512-/Qq3PTagA6+nYVfryAtQ7/9FEr/6YVyvOtl6rZnGsbReGLf0jZU6gkpr1FuChAQpvV46a78p4cmHOVP8mbfSMQ==} @@ -3239,9 +3190,6 @@ packages: '@angular/common': '>=16' '@angular/core': '>=16' - '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': - resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} - '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -3254,10 +3202,6 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@nolyfill/is-core-module@1.0.39': - resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} - engines: {node: '>=12.4.0'} - '@npmcli/agent@4.0.0': resolution: {integrity: sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==} engines: {node: ^20.17.0 || >=22.9.0} @@ -5127,9 +5071,6 @@ packages: '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - '@rushstack/eslint-patch@1.15.0': - resolution: {integrity: sha512-ojSshQPKwVvSMR8yT2L/QtUkV5SXi/IfDiJ4/8d6UbTPjiHVmxZzUAzGD8Tzks1b9+qQkZa0isUOvYObedITaw==} - '@scalar/agent-chat@0.5.16': resolution: {integrity: sha512-GNM7riKeYWprb4eV3bhglONmCUbeHXBigm/r61mP2PGC0uHsuYUTfpFu6sf42D7uTA72XNJiopPTDbVMzUVXfw==} engines: {node: '>=20'} @@ -5804,149 +5745,63 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.54.0': - resolution: {integrity: sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==} + '@typescript-eslint/eslint-plugin@8.57.0': + resolution: {integrity: sha512-qeu4rTHR3/IaFORbD16gmjq9+rEs9fGKdX0kF6BKSfi+gCuG3RCKLlSBYzn/bGsY9Tj7KE/DAQStbp8AHJGHEQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.54.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/eslint-plugin@8.56.0': - resolution: {integrity: sha512-lRyPDLzNCuae71A3t9NEINBiTn7swyOhvUj3MyUOxb8x6g6vPEFoOU+ZRmGMusNC3X3YMhqMIX7i8ShqhT74Pw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.56.0 + '@typescript-eslint/parser': ^8.57.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.54.0': - resolution: {integrity: sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/parser@8.56.0': - resolution: {integrity: sha512-IgSWvLobTDOjnaxAfDTIHaECbkNlAlKv2j5SjpB2v7QHKv1FIfjwMy8FsDbVfDX/KjmCmYICcw7uGaXLhtsLNg==} + '@typescript-eslint/parser@8.57.0': + resolution: {integrity: sha512-XZzOmihLIr8AD1b9hL9ccNMzEMWt/dE2u7NyTY9jJG6YNiNthaD5XtUHVF2uCXZ15ng+z2hT3MVuxnUYhq6k1g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.54.0': - resolution: {integrity: sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==} + '@typescript-eslint/project-service@8.57.0': + resolution: {integrity: sha512-pR+dK0BlxCLxtWfaKQWtYr7MhKmzqZxuii+ZjuFlZlIGRZm22HnXFqa2eY+90MUz8/i80YJmzFGDUsi8dMOV5w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.56.0': - resolution: {integrity: sha512-M3rnyL1vIQOMeWxTWIW096/TtVP+8W3p/XnaFflhmcFp+U4zlxUxWj4XwNs6HbDeTtN4yun0GNTTDBw/SvufKg==} + '@typescript-eslint/scope-manager@8.57.0': + resolution: {integrity: sha512-nvExQqAHF01lUM66MskSaZulpPL5pgy5hI5RfrxviLgzZVffB5yYzw27uK/ft8QnKXI2X0LBrHJFr1TaZtAibw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.57.0': + resolution: {integrity: sha512-LtXRihc5ytjJIQEH+xqjB0+YgsV4/tW35XKX3GTZHpWtcC8SPkT/d4tqdf1cKtesryHm2bgp6l555NYcT2NLvA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.0.0-alpha.20': - resolution: {integrity: sha512-+Ncj0Q6DT8ZHYNp8h5RndW4Siv52kiPpHEz/i8Sj2rh2y8ZCc5pKSHSslk+eZi0Bdj+/+swNOmDNcL2CrlaEnA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/scope-manager@8.54.0': - resolution: {integrity: sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/scope-manager@8.56.0': - resolution: {integrity: sha512-7UiO/XwMHquH+ZzfVCfUNkIXlp/yQjjnlYUyYz7pfvlK3/EyyN6BK+emDmGNyQLBtLGaYrTAI6KOw8tFucWL2w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/tsconfig-utils@8.54.0': - resolution: {integrity: sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/tsconfig-utils@8.56.0': - resolution: {integrity: sha512-bSJoIIt4o3lKXD3xmDh9chZcjCz5Lk8xS7Rxn+6l5/pKrDpkCwtQNQQwZ2qRPk7TkUYhrq3WPIHXOXlbXP0itg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/type-utils@8.54.0': - resolution: {integrity: sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/type-utils@8.56.0': - resolution: {integrity: sha512-qX2L3HWOU2nuDs6GzglBeuFXviDODreS58tLY/BALPC7iu3Fa+J7EOTwnX9PdNBxUI7Uh0ntP0YWGnxCkXzmfA==} + '@typescript-eslint/type-utils@8.57.0': + resolution: {integrity: sha512-yjgh7gmDcJ1+TcEg8x3uWQmn8ifvSupnPfjP21twPKrDP/pTHlEQgmKcitzF/rzPSmv7QjJ90vRpN4U+zoUjwQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.0.0-alpha.20': - resolution: {integrity: sha512-xpU1rMQfnnNZxpHN6YUfr18sGOMcpC9hvt54fupcU6N1qMCagEtkRt1U15x086oJAgAITJGa67454ffAoCxv/w==} + '@typescript-eslint/types@8.57.0': + resolution: {integrity: sha512-dTLI8PEXhjUC7B9Kre+u0XznO696BhXcTlOn0/6kf1fHaQW8+VjJAVHJ3eTI14ZapTxdkOmc80HblPQLaEeJdg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.54.0': - resolution: {integrity: sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/types@8.56.0': - resolution: {integrity: sha512-DBsLPs3GsWhX5HylbP9HNG15U0bnwut55Lx12bHB9MpXxQ+R5GC8MwQe+N1UFXxAeQDvEsEDY6ZYwX03K7Z6HQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@8.0.0-alpha.20': - resolution: {integrity: sha512-VQ8Mf8upDCuf0uMTjX/Pdw3gvCZomkG43nuThUuzhK3YFwFmIDTqx0ZWSsYJkVGfll0WrXgIua+rKSP/n6NBWw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/typescript-estree@8.54.0': - resolution: {integrity: sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==} + '@typescript-eslint/typescript-estree@8.57.0': + resolution: {integrity: sha512-m7faHcyVg0BT3VdYTlX8GdJEM7COexXxS6KqGopxdtkQRvBanK377QDHr4W/vIPAR+ah9+B/RclSW5ldVniO1Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/typescript-estree@8.56.0': - resolution: {integrity: sha512-ex1nTUMWrseMltXUHmR2GAQ4d+WjkZCT4f+4bVsps8QEdh0vlBsaCokKTPlnqBFqqGaxilDNJG7b8dolW2m43Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/utils@8.0.0-alpha.20': - resolution: {integrity: sha512-0aMhjDTvIrkGkHqyM0ZByAwR8BV1f2HhKdYyjtxko8S/Ca4PGjOIjub6VoF+bQwCRxEuV8viNUld78rqm9jqLA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - - '@typescript-eslint/utils@8.54.0': - resolution: {integrity: sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/utils@8.56.0': - resolution: {integrity: sha512-RZ3Qsmi2nFGsS+n+kjLAYDPVlrzf7UhTffrDIKr+h2yzAlYP/y5ZulU0yeDEPItos2Ph46JAL5P/On3pe7kDIQ==} + '@typescript-eslint/utils@8.57.0': + resolution: {integrity: sha512-5iIHvpD3CZe06riAsbNxxreP+MuYgVUsV0n4bwLH//VJmgtt54sQeY2GszntJ4BjYCpMzrfVh2SBnUQTtys2lQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.0.0-alpha.20': - resolution: {integrity: sha512-ej06rfct0kalfJgIR8nTR7dF1mgfF83hkylrYas7IAElHfgw4zx99BUGa6VrnHZ1PkxdJBp5PgcO2FmmlOoaRQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/visitor-keys@8.54.0': - resolution: {integrity: sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/visitor-keys@8.56.0': - resolution: {integrity: sha512-q+SL+b+05Ud6LbEE35qe4A99P+htKTKVbyiNEe45eCbJFyh/HVK9QXwlrbz+Q4L8SOW4roxSVwXYj4DMBT7Ieg==} + '@typescript-eslint/visitor-keys@8.57.0': + resolution: {integrity: sha512-zm6xx8UT/Xy2oSr2ZXD0pZo7Jx2XsCoID2IUh9YSTFRu7z+WdwYTRk6LhUftm1crwqbuoF6I8zAFeCMw0YjwDg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript/vfs@1.6.4': @@ -6538,10 +6393,6 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - array.prototype.findlast@1.2.5: - resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} - engines: {node: '>= 0.4'} - array.prototype.findlastindex@1.2.6: resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} engines: {node: '>= 0.4'} @@ -6554,10 +6405,6 @@ packages: resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} engines: {node: '>= 0.4'} - array.prototype.tosorted@1.1.4: - resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} - engines: {node: '>= 0.4'} - arraybuffer.prototype.slice@1.0.4: resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} @@ -6573,9 +6420,6 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - ast-types-flow@0.0.8: - resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} @@ -6618,16 +6462,9 @@ packages: aws4@1.13.2: resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} - axe-core@4.10.3: - resolution: {integrity: sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==} - engines: {node: '>=4'} - axios@1.13.4: resolution: {integrity: sha512-1wVkUaAO6WyaYtCkcYCOx12ZgpGf9Zif+qXa4n+oYzK558YryKqiL6UWwd5DqiH3VRW0GYhTZQ/vlgJrCoNQlg==} - axobject-query@4.0.0: - resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==} - axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} @@ -6827,10 +6664,6 @@ packages: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - camelcase-css@2.0.1: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} @@ -7195,9 +7028,6 @@ packages: engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - damerau-levenshtein@1.0.8: - resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - dashdash@1.14.1: resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} engines: {node: '>=0.10'} @@ -7396,10 +7226,6 @@ packages: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dom-accessibility-api@0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} @@ -7566,8 +7392,8 @@ packages: error-stack-parser@2.1.4: resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} - es-abstract@1.24.0: - resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} + es-abstract@1.24.1: + resolution: {integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==} engines: {node: '>= 0.4'} es-define-property@1.0.1: @@ -7578,10 +7404,6 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-iterator-helpers@1.2.1: - resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} - engines: {node: '>= 0.4'} - es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} @@ -7646,36 +7468,27 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - eslint-config-next@15.5.9: - resolution: {integrity: sha512-852JYI3NkFNzW8CqsMhI0K2CDRxTObdZ2jQJj5CtpEaOkYHn13107tHpNuD/h0WRpU4FAbCdUaxQsrfBtNK9Kw==} - peerDependencies: - eslint: ^7.23.0 || ^8.0.0 || ^9.0.0 - typescript: '>=3.3.1' - peerDependenciesMeta: - typescript: - optional: true - - eslint-config-next@16.1.6: - resolution: {integrity: sha512-vKq40io2B0XtkkNDYyleATwblNt8xuh3FWp8SpSz3pt7P01OkBFlKsJZ2mWt5WsCySlDQLckb1zMY9yE9Qy0LA==} - peerDependencies: - eslint: '>=9.0.0' - typescript: '>=3.3.1' - peerDependenciesMeta: - typescript: - optional: true - - eslint-config-prettier@9.1.2: - resolution: {integrity: sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==} + eslint-config-prettier@10.1.8: + resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} hasBin: true peerDependencies: eslint: '>=7.0.0' + eslint-import-context@0.1.9: + resolution: {integrity: sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + peerDependencies: + unrs-resolver: ^1.0.0 + peerDependenciesMeta: + unrs-resolver: + optional: true + eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - eslint-import-resolver-typescript@3.10.1: - resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==} - engines: {node: ^14.18.0 || >=16.0.0} + eslint-import-resolver-typescript@4.4.4: + resolution: {integrity: sha512-1iM2zeBvrYmUNTj2vSC/90JTHDth+dfOfiNKkxApWRsTJYNrc8rOdxxIf5vazX+BiAXTeOT0UvWpGI/7qIWQOw==} + engines: {node: ^16.17.0 || >=18.6.0} peerDependencies: eslint: '*' eslint-plugin-import: '*' @@ -7686,8 +7499,8 @@ packages: eslint-plugin-import-x: optional: true - eslint-mdx@3.6.2: - resolution: {integrity: sha512-5hczn5iSSEcwtNtVXFwCKIk6iLEDaZpwc3vjYDl/B779OzaAAK/ou16J2xVdO6ecOLEO1WZqp7MRCQ/WsKDUig==} + eslint-mdx@3.7.0: + resolution: {integrity: sha512-QpPdJ6EeFthHuIrfgnWneZgwwFNOLFj/nf2jg/tOTBoiUnqNTxUUpTGAn0ZFHYEh5htVVoe5kjvD02oKtxZGeA==} engines: {node: '>=18.0.0'} peerDependencies: eslint: '>=8.0.0' @@ -7717,6 +7530,11 @@ packages: eslint-import-resolver-webpack: optional: true + eslint-plugin-cypress@4.3.0: + resolution: {integrity: sha512-CgS/S940MJlT8jtnWGKI0LvZQBGb/BB0QCpgBOxFMM/Z6znD+PZUwBhCTwHKN2GEr5AOny3xB92an0QfzBGooQ==} + peerDependencies: + eslint: '>=9' + eslint-plugin-import@2.32.0: resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} engines: {node: '>=4'} @@ -7727,55 +7545,29 @@ packages: '@typescript-eslint/parser': optional: true - eslint-plugin-jsx-a11y@6.10.2: - resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - - eslint-plugin-mdx@3.6.2: - resolution: {integrity: sha512-RfMd5HYD/9+cqANhVWJbuBRg3huWUsAoGJNGmPsyiRD2X6BaG6bvt1omyk1ORlg81GK8ST7Ojt5fNAuwWhWU8A==} + eslint-plugin-mdx@3.7.0: + resolution: {integrity: sha512-JXaaQPnKqyti/QSOSQDThLV1EemHm/Fe2l/nMKH0vmhvmABtN/yV/9+GtKgh8UTZwrwuTfQq1HW5eR8HXneNLA==} engines: {node: '>=18.0.0'} peerDependencies: eslint: '>=8.0.0' - eslint-plugin-react-hooks@5.2.0: - resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - eslint-plugin-react-hooks@7.0.1: resolution: {integrity: sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==} engines: {node: '>=18'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - eslint-plugin-react@7.37.5: - resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-scope@8.4.0: - resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint-scope@9.1.0: resolution: {integrity: sha512-CkWE42hOJsNj9FJRaoMX9waUFYhqY4jmyLFdAdzZr6VaCg3ynLYx4WnOdkaIifGfH4gsUcBTn4OZbHXkpLD0FQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint-visitor-keys@2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} + eslint-scope@9.1.2: + resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} @@ -7799,12 +7591,6 @@ packages: jiti: optional: true - eslint@8.57.1: - resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. - hasBin: true - espree@10.4.0: resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -7813,19 +7599,11 @@ packages: resolution: {integrity: sha512-WFWYhO1fV4iYkqOOvq8FbqIhr2pYfoDY0kCotMkDeNtGpiGGkZ1iov2u8ydjtgM8yF8rzK7oaTbw2NAzbAbehw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true - esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} - engines: {node: '>=0.10'} - esquery@1.7.0: resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} engines: {node: '>=0.10'} @@ -8022,10 +7800,6 @@ packages: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} - 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'} @@ -8063,10 +7837,6 @@ packages: flag-icons@7.5.0: resolution: {integrity: sha512-kd+MNXviFIg5hijH766tt+3x76ele1AXlo4zDdCxIvqWZhKt4T83bOtxUOOMlTx/EcFdUMH5yvQgYlFh1EqqFg==} - 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'} @@ -8352,6 +8122,10 @@ packages: resolution: {integrity: sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==} engines: {node: '>=14'} + generator-function@2.0.1: + resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} + engines: {node: '>= 0.4'} + gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -8445,16 +8219,8 @@ packages: resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} engines: {node: '>=10'} - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - - globals@16.4.0: - resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==} + globals@15.15.0: + resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} engines: {node: '>=18'} globals@17.3.0: @@ -8486,9 +8252,6 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - gray-matter@4.0.3: resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} engines: {node: '>=6.0'} @@ -8750,10 +8513,6 @@ packages: immutable@5.1.3: resolution: {integrity: sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==} - import-fresh@3.3.1: - resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} - engines: {node: '>=6'} - import-in-the-middle@2.0.6: resolution: {integrity: sha512-3vZV3jX0XRFW3EJDTwzWoZa+RH1b8eTTx6YOCjglrLyPuepwoBti1k3L2dKwdCUrnVEfc5CuRuGstaC/uQJJaw==} @@ -8900,8 +8659,8 @@ packages: resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} engines: {node: '>=18'} - is-generator-function@1.1.0: - resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + is-generator-function@1.1.2: + resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} engines: {node: '>= 0.4'} is-glob@4.0.3: @@ -9102,10 +8861,6 @@ packages: resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} - iterator.prototype@1.1.5: - resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} - engines: {node: '>= 0.4'} - jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} @@ -9265,10 +9020,6 @@ packages: resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==} engines: {'0': node >=0.6.0} - jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} - just-clone@6.2.0: resolution: {integrity: sha512-1IynUYEc/HAwxhi3WDpIpxJbZpMCvvrrmZVqvj9EhpvbH8lls7HhdhiByjL7DkAaWlLIzpC0Xc/VPvy/UxLNjA==} @@ -9313,10 +9064,6 @@ packages: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - knip@5.82.1: resolution: {integrity: sha512-1nQk+5AcnkqL40kGQXfouzAEXkTR+eSrgo/8m1d0BMei4eAzFwghoXC4gOKbACgBiCof7hE8wkBVDsEvznf85w==} engines: {node: '>=18.18.0'} @@ -9328,13 +9075,6 @@ packages: kuler@2.0.0: resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} - language-subtag-registry@0.3.23: - resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} - - language-tags@1.0.9: - resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} - engines: {node: '>=0.10'} - lazy-ass@1.6.0: resolution: {integrity: sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==} engines: {node: '> 0.8'} @@ -9531,9 +9271,6 @@ packages: lodash.isstring@4.0.1: resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash.once@4.1.1: resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} @@ -9901,6 +9638,10 @@ packages: resolution: {integrity: sha512-MClCe8IL5nRRmawL6ib/eT4oLyeKMGCghibcDWK+J0hh0Q8kqSdia6BvbRMVk6mPa6WqUa5uR2oxt6C5jd533A==} engines: {node: 20 || >=22} + minimatch@10.2.4: + resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} + engines: {node: 18 || 20 || >=22} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -10054,8 +9795,8 @@ packages: engines: {node: ^18 || >=20} hasBin: true - napi-postinstall@0.3.3: - resolution: {integrity: sha512-uTp172LLXSxuSYHv/kou+f6KW3SMppU9ivthaVTXian9sOt3XM/zHYHpRZiLgQoxeWfYUnslNWQHF1+G71xcow==} + napi-postinstall@0.3.4: + resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} hasBin: true @@ -10324,10 +10065,6 @@ packages: resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} - object.entries@1.1.9: - resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} - engines: {node: '>= 0.4'} - object.fromentries@2.0.8: resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} engines: {node: '>= 0.4'} @@ -10405,10 +10142,6 @@ packages: resolution: {integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==} engines: {node: '>=10'} - ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - ora@8.2.0: resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} engines: {node: '>=18'} @@ -10492,10 +10225,6 @@ packages: engines: {node: ^20.17.0 || >=22.9.0} hasBin: true - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - parse-entities@4.0.2: resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} @@ -10606,10 +10335,6 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - picomatch@4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} - engines: {node: '>=12'} - picomatch@4.0.3: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} @@ -11254,10 +10979,6 @@ packages: resolution: {integrity: sha512-yE7KUfFvaBFzGPs5H3Ops1RevfUEsDc5Iz65rOwWg4lE8HJSYtle77uul3+573457oHvBKuHYDl/xqUkKpEEdw==} engines: {node: '>=18'} - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} @@ -11274,10 +10995,6 @@ packages: engines: {node: '>= 0.4'} hasBin: true - resolve@2.0.0-next.5: - resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} - hasBin: true - restore-cursor@3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} @@ -11326,16 +11043,9 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - rxjs@7.8.1: - resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} - rxjs@7.8.2: resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} - sade@1.8.1: - resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} - engines: {node: '>=6'} - safe-array-concat@1.1.3: resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} engines: {node: '>=0.4'} @@ -11560,10 +11270,6 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - source-map@0.7.6: resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} engines: {node: '>= 12'} @@ -11611,8 +11317,9 @@ packages: resolution: {integrity: sha512-yizwGBpbCn4YomB2lzhZqrHLJoqFGXihNbib3ozhqF/cIp5ue+xSmOQrjNasEE62hFxsCcg/V/z23t4n8jMEng==} engines: {node: ^20.17.0 || >=22.9.0} - stable-hash@0.0.5: - resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} + stable-hash-x@0.2.0: + resolution: {integrity: sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==} + engines: {node: '>=12.0.0'} stack-generator@2.0.10: resolution: {integrity: sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==} @@ -11691,17 +11398,6 @@ packages: string.prototype.codepointat@0.2.1: resolution: {integrity: sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==} - string.prototype.includes@2.0.1: - resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} - engines: {node: '>= 0.4'} - - string.prototype.matchall@4.0.12: - resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} - engines: {node: '>= 0.4'} - - string.prototype.repeat@1.0.0: - resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} - string.prototype.trim@1.2.10: resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} engines: {node: '>= 0.4'} @@ -11924,9 +11620,6 @@ packages: text-hex@1.0.0: resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} @@ -12039,12 +11732,6 @@ packages: resolution: {integrity: sha512-QVsbr1WhGLq2F0oDyYbqtOXcf3gcnL8C9H5EX8bBwAr8ZWvWGJzukpPrDrWgJMrNtgDbo74BIjI4kJu3q2xQWw==} engines: {node: '>=18.18.0'} - ts-api-utils@1.4.3: - resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' - ts-api-utils@2.4.0: resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} engines: {node: '>=18.12'} @@ -12129,10 +11816,6 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} @@ -12180,13 +11863,6 @@ packages: typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - typescript-eslint@8.54.0: - resolution: {integrity: sha512-CKsJ+g53QpsNPqbzUsfKVgd3Lny4yKZ1pP4qN3jdMOg/sisIDLGyDMezycquXLE5JsEU0wp3dGNdzig0/fmSVQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' - typescript@5.4.5: resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} engines: {node: '>=14.17'} @@ -12283,9 +11959,6 @@ packages: unist-util-visit@1.4.1: resolution: {integrity: sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==} - unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - unist-util-visit@5.1.0: resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} @@ -12397,11 +12070,6 @@ packages: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true - uvu@0.5.6: - resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} - engines: {node: '>=8'} - hasBin: true - validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -12683,8 +12351,8 @@ packages: which-module@2.0.1: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - which-typed-array@1.1.19: - resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + which-typed-array@1.1.20: + resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==} engines: {node: '>= 0.4'} which@1.3.1: @@ -13115,17 +12783,6 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular-devkit/core@19.2.17(chokidar@4.0.3)': - dependencies: - ajv: 8.17.1 - ajv-formats: 3.0.1(ajv@8.17.1) - jsonc-parser: 3.3.1 - picomatch: 4.0.2 - rxjs: 7.8.1 - source-map: 0.7.4 - optionalDependencies: - chokidar: 4.0.3 - '@angular-devkit/core@20.3.15(chokidar@4.0.3)': dependencies: ajv: 8.17.1 @@ -13137,16 +12794,6 @@ snapshots: optionalDependencies: chokidar: 4.0.3 - '@angular-devkit/schematics@19.2.17(chokidar@4.0.3)': - dependencies: - '@angular-devkit/core': 19.2.17(chokidar@4.0.3) - jsonc-parser: 3.3.1 - magic-string: 0.30.17 - ora: 5.4.1 - rxjs: 7.8.1 - transitivePeerDependencies: - - chokidar - '@angular-devkit/schematics@20.3.15(chokidar@4.0.3)': dependencies: '@angular-devkit/core': 20.3.15(chokidar@4.0.3) @@ -13157,95 +12804,41 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular-eslint/builder@18.3.0(eslint@8.57.1)(typescript@5.9.2)': + '@angular-eslint/bundled-angular-compiler@21.3.0': {} + + '@angular-eslint/eslint-plugin-template@21.3.0(@angular-eslint/template-parser@21.3.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(@typescript-eslint/types@8.57.0)(@typescript-eslint/utils@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2)': dependencies: - eslint: 8.57.1 - typescript: 5.9.2 - - '@angular-eslint/bundled-angular-compiler@18.0.0': {} - - '@angular-eslint/bundled-angular-compiler@19.8.1': {} - - '@angular-eslint/eslint-plugin-template@18.0.0(eslint@8.57.1)(typescript@5.9.2)': - dependencies: - '@angular-eslint/bundled-angular-compiler': 18.0.0 - '@angular-eslint/utils': 18.0.0(eslint@8.57.1)(typescript@5.9.2) - '@typescript-eslint/utils': 8.0.0-alpha.20(eslint@8.57.1)(typescript@5.9.2) - aria-query: 5.3.0 - axobject-query: 4.0.0 - eslint: 8.57.1 - typescript: 5.9.2 - transitivePeerDependencies: - - supports-color - - '@angular-eslint/eslint-plugin-template@19.8.1(@angular-eslint/template-parser@19.8.1(eslint@8.57.1)(typescript@5.9.2))(@typescript-eslint/types@8.56.0)(@typescript-eslint/utils@8.56.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2)': - dependencies: - '@angular-eslint/bundled-angular-compiler': 19.8.1 - '@angular-eslint/template-parser': 19.8.1(eslint@8.57.1)(typescript@5.9.2) - '@angular-eslint/utils': 19.8.1(@typescript-eslint/utils@8.56.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) - '@typescript-eslint/types': 8.56.0 - '@typescript-eslint/utils': 8.56.0(eslint@8.57.1)(typescript@5.9.2) + '@angular-eslint/bundled-angular-compiler': 21.3.0 + '@angular-eslint/template-parser': 21.3.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) + '@angular-eslint/utils': 21.3.0(@typescript-eslint/utils@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) + '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/utils': 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) aria-query: 5.3.2 axobject-query: 4.1.0 - eslint: 8.57.1 + eslint: 10.0.0(jiti@2.6.1) typescript: 5.9.2 - '@angular-eslint/eslint-plugin@18.0.0(eslint@8.57.1)(typescript@5.9.2)': + '@angular-eslint/eslint-plugin@21.3.0(@typescript-eslint/utils@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2)': dependencies: - '@angular-eslint/bundled-angular-compiler': 18.0.0 - '@angular-eslint/utils': 18.0.0(eslint@8.57.1)(typescript@5.9.2) - '@typescript-eslint/utils': 8.0.0-alpha.20(eslint@8.57.1)(typescript@5.9.2) - eslint: 8.57.1 - typescript: 5.9.2 - transitivePeerDependencies: - - supports-color - - '@angular-eslint/eslint-plugin@19.8.1(@typescript-eslint/utils@8.56.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2)': - dependencies: - '@angular-eslint/bundled-angular-compiler': 19.8.1 - '@angular-eslint/utils': 19.8.1(@typescript-eslint/utils@8.56.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) - '@typescript-eslint/utils': 8.56.0(eslint@8.57.1)(typescript@5.9.2) - eslint: 8.57.1 + '@angular-eslint/bundled-angular-compiler': 21.3.0 + '@angular-eslint/utils': 21.3.0(@typescript-eslint/utils@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) + '@typescript-eslint/utils': 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) + eslint: 10.0.0(jiti@2.6.1) + ts-api-utils: 2.4.0(typescript@5.9.2) typescript: 5.9.2 - '@angular-eslint/schematics@19.8.1(@angular-eslint/template-parser@19.8.1(eslint@8.57.1)(typescript@5.9.2))(@typescript-eslint/types@8.56.0)(@typescript-eslint/utils@8.56.0(eslint@8.57.1)(typescript@5.9.2))(chokidar@4.0.3)(eslint@8.57.1)(typescript@5.9.2)': + '@angular-eslint/template-parser@21.3.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2)': dependencies: - '@angular-devkit/core': 19.2.17(chokidar@4.0.3) - '@angular-devkit/schematics': 19.2.17(chokidar@4.0.3) - '@angular-eslint/eslint-plugin': 19.8.1(@typescript-eslint/utils@8.56.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) - '@angular-eslint/eslint-plugin-template': 19.8.1(@angular-eslint/template-parser@19.8.1(eslint@8.57.1)(typescript@5.9.2))(@typescript-eslint/types@8.56.0)(@typescript-eslint/utils@8.56.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) - ignore: 7.0.5 - semver: 7.7.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - '@angular-eslint/template-parser' - - '@typescript-eslint/types' - - '@typescript-eslint/utils' - - chokidar - - eslint - - typescript - - '@angular-eslint/template-parser@19.8.1(eslint@8.57.1)(typescript@5.9.2)': - dependencies: - '@angular-eslint/bundled-angular-compiler': 19.8.1 - eslint: 8.57.1 - eslint-scope: 8.4.0 + '@angular-eslint/bundled-angular-compiler': 21.3.0 + eslint: 10.0.0(jiti@2.6.1) + eslint-scope: 9.1.2 typescript: 5.9.2 - '@angular-eslint/utils@18.0.0(eslint@8.57.1)(typescript@5.9.2)': + '@angular-eslint/utils@21.3.0(@typescript-eslint/utils@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2)': dependencies: - '@angular-eslint/bundled-angular-compiler': 18.0.0 - '@typescript-eslint/utils': 8.0.0-alpha.20(eslint@8.57.1)(typescript@5.9.2) - eslint: 8.57.1 - typescript: 5.9.2 - transitivePeerDependencies: - - supports-color - - '@angular-eslint/utils@19.8.1(@typescript-eslint/utils@8.56.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2)': - dependencies: - '@angular-eslint/bundled-angular-compiler': 19.8.1 - '@typescript-eslint/utils': 8.56.0(eslint@8.57.1)(typescript@5.9.2) - eslint: 8.57.1 + '@angular-eslint/bundled-angular-compiler': 21.3.0 + '@typescript-eslint/utils': 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) + eslint: 10.0.0(jiti@2.6.1) typescript: 5.9.2 '@angular/animations@20.3.16(@angular/core@20.3.16(@angular/compiler@20.3.16)(rxjs@7.8.2)(zone.js@0.15.1))': @@ -13442,7 +13035,7 @@ snapshots: '@babel/code-frame@7.27.1': dependencies: - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 @@ -13456,7 +13049,7 @@ snapshots: '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.3) '@babel/helpers': 7.28.4 - '@babel/parser': 7.28.5 + '@babel/parser': 7.29.0 '@babel/template': 7.27.2 '@babel/traverse': 7.28.4 '@babel/types': 7.28.5 @@ -13488,18 +13081,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/eslint-parser@7.28.6(@babel/core@7.28.4)(eslint@8.57.1)': - dependencies: - '@babel/core': 7.28.4 - '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 8.57.1 - eslint-visitor-keys: 2.1.0 - semver: 6.3.1 - '@babel/generator@7.28.3': dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.4 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 @@ -13521,7 +13106,7 @@ snapshots: '@babel/helper-module-imports@7.27.1': dependencies: '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color @@ -13529,7 +13114,7 @@ snapshots: dependencies: '@babel/core': 7.28.3 '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color @@ -13538,7 +13123,7 @@ snapshots: dependencies: '@babel/core': 7.28.4 '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color @@ -13551,8 +13136,6 @@ snapshots: '@babel/helper-string-parser@7.27.1': {} - '@babel/helper-validator-identifier@7.27.1': {} - '@babel/helper-validator-identifier@7.28.5': {} '@babel/helper-validator-option@7.27.1': {} @@ -13560,15 +13143,15 @@ snapshots: '@babel/helpers@7.28.4': dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.28.4 + '@babel/types': 7.29.0 '@babel/parser@7.28.4': dependencies: - '@babel/types': 7.28.4 + '@babel/types': 7.29.0 '@babel/parser@7.28.5': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.29.0 '@babel/parser@7.29.0': dependencies: @@ -13589,17 +13172,17 @@ snapshots: '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.5 - '@babel/types': 7.28.4 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 '@babel/traverse@7.28.4': dependencies: '@babel/code-frame': 7.27.1 '@babel/generator': 7.28.3 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.5 + '@babel/parser': 7.29.0 '@babel/template': 7.27.2 - '@babel/types': 7.28.4 + '@babel/types': 7.29.0 debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -13607,7 +13190,7 @@ snapshots: '@babel/types@7.28.4': dependencies: '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 '@babel/types@7.28.5': dependencies: @@ -14351,23 +13934,11 @@ snapshots: '@esbuild/win32-x64@0.27.3': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@8.57.1)': - dependencies: - eslint: 8.57.1 - eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.9.1(eslint@10.0.0(jiti@2.6.1))': dependencies: eslint: 10.0.0(jiti@2.6.1) eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.9.1(eslint@8.57.1)': - dependencies: - eslint: 8.57.1 - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.12.1': {} - '@eslint-community/regexpp@4.12.2': {} '@eslint/config-array@0.23.1': @@ -14386,40 +13957,10 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@2.1.4': - dependencies: - ajv: 6.12.6 - debug: 4.4.3(supports-color@8.1.1) - espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.1 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/eslintrc@3.3.3': - dependencies: - ajv: 6.12.6 - debug: 4.4.1(supports-color@5.5.0) - espree: 10.4.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.1 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - '@eslint/js@10.0.1(eslint@10.0.0(jiti@2.6.1))': optionalDependencies: eslint: 10.0.0(jiti@2.6.1) - '@eslint/js@8.57.1': {} - '@eslint/object-schema@3.0.1': {} '@eslint/plugin-kit@0.6.0': @@ -14621,18 +14162,8 @@ snapshots: '@humanfs/core': 0.19.1 '@humanwhocodes/retry': 0.4.3 - '@humanwhocodes/config-array@0.13.0': - dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.4.3(supports-color@8.1.1) - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/object-schema@2.0.3': {} - '@humanwhocodes/retry@0.4.3': {} '@iarna/toml@2.2.5': {} @@ -15350,10 +14881,6 @@ snapshots: '@next/env@16.1.6': {} - '@next/eslint-plugin-next@15.5.9': - dependencies: - fast-glob: 3.3.1 - '@next/eslint-plugin-next@16.1.6': dependencies: fast-glob: 3.3.1 @@ -15423,10 +14950,6 @@ snapshots: '@angular/core': 20.3.16(@angular/compiler@20.3.16)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 - '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': - dependencies: - eslint-scope: 5.1.1 - '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -15439,8 +14962,6 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.19.1 - '@nolyfill/is-core-module@1.0.39': {} - '@npmcli/agent@4.0.0': dependencies: agent-base: 7.1.4 @@ -17569,8 +17090,6 @@ snapshots: '@rtsao/scc@1.1.0': {} - '@rushstack/eslint-patch@1.15.0': {} - '@scalar/agent-chat@0.5.16(axios@1.13.4)(qrcode@1.5.4)(tailwindcss@4.1.18)(typescript@5.9.3)': dependencies: '@ai-sdk/vue': 3.0.33(vue@3.5.28(typescript@5.9.3))(zod@4.3.6) @@ -18287,7 +17806,7 @@ snapshots: '@tufjs/models@4.1.0': dependencies: '@tufjs/canonical-json': 2.0.0 - minimatch: 10.2.1 + minimatch: 10.2.4 '@tybys/wasm-util@0.10.1': dependencies: @@ -18312,16 +17831,16 @@ snapshots: '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.29.0 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 '@types/babel__traverse@7.28.0': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.29.0 '@types/bunyan@1.8.11': dependencies: @@ -18543,62 +18062,30 @@ snapshots: '@types/node': 24.10.9 optional: true - '@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.57.0(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/type-utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/parser': 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.57.0 + '@typescript-eslint/type-utils': 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) + '@typescript-eslint/utils': 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.57.0 eslint: 10.0.0(jiti@2.6.1) ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.4.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2)': - dependencies: - '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.54.0(eslint@8.57.1)(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/type-utils': 8.54.0(eslint@8.57.1)(typescript@5.9.2) - '@typescript-eslint/utils': 8.54.0(eslint@8.57.1)(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.54.0 - eslint: 8.57.1 - ignore: 7.0.5 - natural-compare: 1.4.0 ts-api-utils: 2.4.0(typescript@5.9.2) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.57.0(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.54.0(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/type-utils': 8.54.0(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/utils': 8.54.0(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.54.0 - eslint: 8.57.1 - ignore: 7.0.5 - natural-compare: 1.4.0 - ts-api-utils: 2.4.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': - dependencies: - '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.56.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.56.0 - '@typescript-eslint/type-utils': 8.56.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.56.0 + '@typescript-eslint/parser': 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.57.0 + '@typescript-eslint/type-utils': 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.57.0 eslint: 10.0.0(jiti@2.6.1) ignore: 7.0.5 natural-compare: 1.4.0 @@ -18607,190 +18094,78 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2)': dependencies: - '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.56.0(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.56.0 - '@typescript-eslint/type-utils': 8.56.0(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.0(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.56.0 - eslint: 8.57.1 - ignore: 7.0.5 - natural-compare: 1.4.0 - ts-api-utils: 2.4.0(typescript@5.9.3) - typescript: 5.9.3 + '@typescript-eslint/scope-manager': 8.57.0 + '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.57.0 + debug: 4.4.3(supports-color@8.1.1) + eslint: 10.0.0(jiti@2.6.1) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/scope-manager': 8.57.0 + '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.57.0 debug: 4.4.3(supports-color@8.1.1) eslint: 10.0.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.54.0(eslint@8.57.1)(typescript@5.9.2)': + '@typescript-eslint/project-service@8.57.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/tsconfig-utils': 8.57.0(typescript@5.9.2) + '@typescript-eslint/types': 8.57.0 debug: 4.4.3(supports-color@8.1.1) - eslint: 8.57.1 typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.54.0(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/project-service@8.57.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/tsconfig-utils': 8.57.0(typescript@5.9.3) + '@typescript-eslint/types': 8.57.0 debug: 4.4.3(supports-color@8.1.1) - eslint: 8.57.1 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.56.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/scope-manager@8.57.0': dependencies: - '@typescript-eslint/scope-manager': 8.56.0 - '@typescript-eslint/types': 8.56.0 - '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.56.0 + '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/visitor-keys': 8.57.0 + + '@typescript-eslint/tsconfig-utils@8.57.0(typescript@5.9.2)': + dependencies: + typescript: 5.9.2 + + '@typescript-eslint/tsconfig-utils@8.57.0(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@typescript-eslint/type-utils@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2)': + dependencies: + '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) debug: 4.4.3(supports-color@8.1.1) eslint: 10.0.0(jiti@2.6.1) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.56.0(eslint@8.57.1)(typescript@5.9.3)': - dependencies: - '@typescript-eslint/scope-manager': 8.56.0 - '@typescript-eslint/types': 8.56.0 - '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.56.0 - debug: 4.4.3(supports-color@8.1.1) - eslint: 8.57.1 - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/project-service@8.54.0(typescript@5.9.2)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.2) - '@typescript-eslint/types': 8.54.0 - debug: 4.4.3(supports-color@8.1.1) - typescript: 5.9.2 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/project-service@8.54.0(typescript@5.9.3)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) - '@typescript-eslint/types': 8.54.0 - debug: 4.4.3(supports-color@8.1.1) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/project-service@8.56.0(typescript@5.9.2)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.56.0(typescript@5.9.2) - '@typescript-eslint/types': 8.56.0 - debug: 4.4.3(supports-color@8.1.1) - typescript: 5.9.2 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/project-service@8.56.0(typescript@5.9.3)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.56.0(typescript@5.9.3) - '@typescript-eslint/types': 8.56.0 - debug: 4.4.3(supports-color@8.1.1) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/scope-manager@8.0.0-alpha.20': - dependencies: - '@typescript-eslint/types': 8.0.0-alpha.20 - '@typescript-eslint/visitor-keys': 8.0.0-alpha.20 - - '@typescript-eslint/scope-manager@8.54.0': - dependencies: - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/visitor-keys': 8.54.0 - - '@typescript-eslint/scope-manager@8.56.0': - dependencies: - '@typescript-eslint/types': 8.56.0 - '@typescript-eslint/visitor-keys': 8.56.0 - - '@typescript-eslint/tsconfig-utils@8.54.0(typescript@5.9.2)': - dependencies: - typescript: 5.9.2 - - '@typescript-eslint/tsconfig-utils@8.54.0(typescript@5.9.3)': - dependencies: - typescript: 5.9.3 - - '@typescript-eslint/tsconfig-utils@8.56.0(typescript@5.9.2)': - dependencies: - typescript: 5.9.2 - - '@typescript-eslint/tsconfig-utils@8.56.0(typescript@5.9.3)': - dependencies: - typescript: 5.9.3 - - '@typescript-eslint/type-utils@8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': - dependencies: - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) - debug: 4.4.3(supports-color@8.1.1) - eslint: 10.0.0(jiti@2.6.1) - ts-api-utils: 2.4.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/type-utils@8.54.0(eslint@8.57.1)(typescript@5.9.2)': - dependencies: - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.54.0(eslint@8.57.1)(typescript@5.9.2) - debug: 4.4.3(supports-color@8.1.1) - eslint: 8.57.1 ts-api-utils: 2.4.0(typescript@5.9.2) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.54.0(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.54.0(eslint@8.57.1)(typescript@5.9.3) - debug: 4.4.3(supports-color@8.1.1) - eslint: 8.57.1 - ts-api-utils: 2.4.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/type-utils@8.56.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': - dependencies: - '@typescript-eslint/types': 8.56.0 - '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3(supports-color@8.1.1) eslint: 10.0.0(jiti@2.6.1) ts-api-utils: 2.4.0(typescript@5.9.3) @@ -18798,47 +18173,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.56.0(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/types@8.57.0': {} + + '@typescript-eslint/typescript-estree@8.57.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/types': 8.56.0 - '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/project-service': 8.57.0(typescript@5.9.2) + '@typescript-eslint/tsconfig-utils': 8.57.0(typescript@5.9.2) + '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/visitor-keys': 8.57.0 debug: 4.4.3(supports-color@8.1.1) - eslint: 8.57.1 - ts-api-utils: 2.4.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/types@8.0.0-alpha.20': {} - - '@typescript-eslint/types@8.54.0': {} - - '@typescript-eslint/types@8.56.0': {} - - '@typescript-eslint/typescript-estree@8.0.0-alpha.20(typescript@5.9.2)': - dependencies: - '@typescript-eslint/types': 8.0.0-alpha.20 - '@typescript-eslint/visitor-keys': 8.0.0-alpha.20 - debug: 4.4.3(supports-color@8.1.1) - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.4 - ts-api-utils: 1.4.3(typescript@5.9.2) - optionalDependencies: - typescript: 5.9.2 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/typescript-estree@8.54.0(typescript@5.9.2)': - dependencies: - '@typescript-eslint/project-service': 8.54.0(typescript@5.9.2) - '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.2) - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/visitor-keys': 8.54.0 - debug: 4.4.3(supports-color@8.1.1) - minimatch: 9.0.5 + minimatch: 10.2.4 semver: 7.7.4 tinyglobby: 0.2.15 ts-api-utils: 2.4.0(typescript@5.9.2) @@ -18846,14 +18190,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.54.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.57.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.54.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/project-service': 8.57.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.57.0(typescript@5.9.3) + '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/visitor-keys': 8.57.0 debug: 4.4.3(supports-color@8.1.1) - minimatch: 9.0.5 + minimatch: 10.2.4 semver: 7.7.4 tinyglobby: 0.2.15 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -18861,126 +18205,31 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.56.0(typescript@5.9.2)': - dependencies: - '@typescript-eslint/project-service': 8.56.0(typescript@5.9.2) - '@typescript-eslint/tsconfig-utils': 8.56.0(typescript@5.9.2) - '@typescript-eslint/types': 8.56.0 - '@typescript-eslint/visitor-keys': 8.56.0 - debug: 4.4.3(supports-color@8.1.1) - minimatch: 9.0.5 - semver: 7.7.4 - tinyglobby: 0.2.15 - ts-api-utils: 2.4.0(typescript@5.9.2) - typescript: 5.9.2 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/typescript-estree@8.56.0(typescript@5.9.3)': - dependencies: - '@typescript-eslint/project-service': 8.56.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.56.0(typescript@5.9.3) - '@typescript-eslint/types': 8.56.0 - '@typescript-eslint/visitor-keys': 8.56.0 - debug: 4.4.3(supports-color@8.1.1) - minimatch: 9.0.5 - semver: 7.7.4 - tinyglobby: 0.2.15 - ts-api-utils: 2.4.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.0.0-alpha.20(eslint@8.57.1)(typescript@5.9.2)': - dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) - '@typescript-eslint/scope-manager': 8.0.0-alpha.20 - '@typescript-eslint/types': 8.0.0-alpha.20 - '@typescript-eslint/typescript-estree': 8.0.0-alpha.20(typescript@5.9.2) - eslint: 8.57.1 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/utils@8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.57.0 + '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.2) eslint: 10.0.0(jiti@2.6.1) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.54.0(eslint@8.57.1)(typescript@5.9.2)': - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.2) - eslint: 8.57.1 typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.54.0(eslint@8.57.1)(typescript@5.9.3)': - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - eslint: 8.57.1 - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.56.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.56.0 - '@typescript-eslint/types': 8.56.0 - '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.57.0 + '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) eslint: 10.0.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.56.0(eslint@8.57.1)(typescript@5.9.2)': + '@typescript-eslint/visitor-keys@8.57.0': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) - '@typescript-eslint/scope-manager': 8.56.0 - '@typescript-eslint/types': 8.56.0 - '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.2) - eslint: 8.57.1 - typescript: 5.9.2 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.56.0(eslint@8.57.1)(typescript@5.9.3)': - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) - '@typescript-eslint/scope-manager': 8.56.0 - '@typescript-eslint/types': 8.56.0 - '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) - eslint: 8.57.1 - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/visitor-keys@8.0.0-alpha.20': - dependencies: - '@typescript-eslint/types': 8.0.0-alpha.20 - eslint-visitor-keys: 3.4.3 - - '@typescript-eslint/visitor-keys@8.54.0': - dependencies: - '@typescript-eslint/types': 8.54.0 - eslint-visitor-keys: 4.2.1 - - '@typescript-eslint/visitor-keys@8.56.0': - dependencies: - '@typescript-eslint/types': 8.56.0 + '@typescript-eslint/types': 8.57.0 eslint-visitor-keys: 5.0.0 '@typescript/vfs@1.6.4(typescript@5.4.5)': @@ -19631,7 +18880,7 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 is-string: 1.1.1 @@ -19639,21 +18888,12 @@ snapshots: array-union@2.1.0: {} - array.prototype.findlast@1.2.5: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - es-shim-unscopables: 1.1.0 - array.prototype.findlastindex@1.2.6: dependencies: call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 es-shim-unscopables: 1.1.0 @@ -19662,22 +18902,14 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-shim-unscopables: 1.1.0 array.prototype.flatmap@1.3.3: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 - es-shim-unscopables: 1.1.0 - - array.prototype.tosorted@1.1.4: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-errors: 1.3.0 + es-abstract: 1.24.1 es-shim-unscopables: 1.1.0 arraybuffer.prototype.slice@1.0.4: @@ -19685,7 +18917,7 @@ snapshots: array-buffer-byte-length: 1.0.2 call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 @@ -19698,8 +18930,6 @@ snapshots: assertion-error@2.0.1: {} - ast-types-flow@0.0.8: {} - astral-regex@2.0.0: {} astring@1.9.0: {} @@ -19731,8 +18961,6 @@ snapshots: aws4@1.13.2: {} - axe-core@4.10.3: {} - axios@1.13.4(debug@4.4.3): dependencies: follow-redirects: 1.15.11(debug@4.4.3) @@ -19741,10 +18969,6 @@ snapshots: transitivePeerDependencies: - debug - axobject-query@4.0.0: - dependencies: - dequal: 2.0.3 - axobject-query@4.1.0: {} b4a@1.7.3: {} @@ -19962,8 +19186,6 @@ snapshots: call-bind-apply-helpers: 1.0.2 get-intrinsic: 1.3.0 - callsites@3.1.0: {} - camelcase-css@2.0.1: {} camelcase@5.3.1: {} @@ -20332,8 +19554,6 @@ snapshots: untildify: 4.0.0 yauzl: 2.10.0 - damerau-levenshtein@1.0.8: {} - dashdash@1.14.1: dependencies: assert-plus: 1.0.0 @@ -20504,10 +19724,6 @@ snapshots: dependencies: esutils: 2.0.3 - doctrine@3.0.0: - dependencies: - esutils: 2.0.3 - dom-accessibility-api@0.5.16: {} dom-accessibility-api@0.6.3: {} @@ -20681,7 +19897,7 @@ snapshots: dependencies: stackframe: 1.3.4 - es-abstract@1.24.0: + es-abstract@1.24.1: dependencies: array-buffer-byte-length: 1.0.2 arraybuffer.prototype.slice: 1.0.4 @@ -20736,31 +19952,12 @@ snapshots: typed-array-byte-offset: 1.0.4 typed-array-length: 1.0.7 unbox-primitive: 1.1.0 - which-typed-array: 1.1.19 + which-typed-array: 1.1.20 es-define-property@1.0.1: {} es-errors@1.3.0: {} - es-iterator-helpers@1.2.1: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-errors: 1.3.0 - es-set-tostringtag: 2.1.0 - function-bind: 1.1.2 - get-intrinsic: 1.3.0 - globalthis: 1.0.4 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - has-proto: 1.2.0 - has-symbols: 1.1.0 - internal-slot: 1.1.0 - iterator.prototype: 1.1.5 - safe-array-concat: 1.1.3 - es-module-lexer@1.7.0: {} es-object-atoms@1.1.1: @@ -20921,49 +20118,16 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-next@15.5.9(eslint@8.57.1)(typescript@5.9.3): + eslint-config-prettier@10.1.8(eslint@10.0.0(jiti@2.6.1)): dependencies: - '@next/eslint-plugin-next': 15.5.9 - '@rushstack/eslint-patch': 1.15.0 - '@typescript-eslint/eslint-plugin': 8.56.0(@typescript-eslint/parser@8.56.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/parser': 8.56.0(eslint@8.57.1)(typescript@5.9.3) - eslint: 8.57.1 - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.56.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) - eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1) - eslint-plugin-react: 7.37.5(eslint@8.57.1) - eslint-plugin-react-hooks: 5.2.0(eslint@8.57.1) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - eslint-import-resolver-webpack - - eslint-plugin-import-x - - supports-color - - eslint-config-next@16.1.6(@typescript-eslint/parser@8.56.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3): - dependencies: - '@next/eslint-plugin-next': 16.1.6 eslint: 10.0.0(jiti@2.6.1) - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.0.0(jiti@2.6.1)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.56.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.0.0(jiti@2.6.1)) - eslint-plugin-jsx-a11y: 6.10.2(eslint@10.0.0(jiti@2.6.1)) - eslint-plugin-react: 7.37.5(eslint@10.0.0(jiti@2.6.1)) - eslint-plugin-react-hooks: 7.0.1(eslint@10.0.0(jiti@2.6.1)) - globals: 16.4.0 - typescript-eslint: 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-webpack - - eslint-plugin-import-x - - supports-color - eslint-config-prettier@9.1.2(eslint@8.57.1): + eslint-import-context@0.1.9(unrs-resolver@1.11.1): dependencies: - eslint: 8.57.1 + get-tsconfig: 4.10.1 + stable-hash-x: 0.2.0 + optionalDependencies: + unrs-resolver: 1.11.1 eslint-import-resolver-node@0.3.9: dependencies: @@ -20973,37 +20137,22 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@10.0.0(jiti@2.6.1)): + eslint-import-resolver-typescript@4.4.4(eslint-plugin-import@2.32.0)(eslint@10.0.0(jiti@2.6.1)): dependencies: - '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3(supports-color@8.1.1) eslint: 10.0.0(jiti@2.6.1) + eslint-import-context: 0.1.9(unrs-resolver@1.11.1) get-tsconfig: 4.10.1 is-bun-module: 2.0.0 - stable-hash: 0.0.5 + stable-hash-x: 0.2.0 tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.56.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.0.0(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1): - dependencies: - '@nolyfill/is-core-module': 1.0.39 - debug: 4.4.3(supports-color@8.1.1) - eslint: 8.57.1 - get-tsconfig: 4.10.1 - is-bun-module: 2.0.0 - stable-hash: 0.0.5 - tinyglobby: 0.2.15 - unrs-resolver: 1.11.1 - optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.54.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1) - transitivePeerDependencies: - - supports-color - - eslint-mdx@3.6.2(eslint@10.0.0(jiti@2.6.1)): + eslint-mdx@3.7.0(eslint@10.0.0(jiti@2.6.1)): dependencies: acorn: 8.15.0 acorn-jsx: 5.3.2(acorn@8.15.0) @@ -21016,46 +20165,40 @@ snapshots: synckit: 0.11.12 unified: 11.0.5 unified-engine: 11.2.2 - unist-util-visit: 5.0.0 - uvu: 0.5.6 + unist-util-visit: 5.1.0 vfile: 6.0.3 transitivePeerDependencies: - bluebird - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.54.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)): dependencies: debug: 3.2.7(supports-color@8.1.1) optionalDependencies: - '@typescript-eslint/parser': 8.54.0(eslint@8.57.1)(typescript@5.9.3) - eslint: 8.57.1 - eslint-import-resolver-node: 0.3.9 - transitivePeerDependencies: - - supports-color - - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.56.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@10.0.0(jiti@2.6.1)): - dependencies: - debug: 3.2.7(supports-color@8.1.1) - optionalDependencies: - '@typescript-eslint/parser': 8.56.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) eslint: 10.0.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.0.0(jiti@2.6.1)) + eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import@2.32.0)(eslint@10.0.0(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.56.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)): dependencies: debug: 3.2.7(supports-color@8.1.1) optionalDependencies: - '@typescript-eslint/parser': 8.56.0(eslint@8.57.1)(typescript@5.9.3) - eslint: 8.57.1 + '@typescript-eslint/parser': 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 10.0.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1) + eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import@2.32.0)(eslint@10.0.0(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.54.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1): + eslint-plugin-cypress@4.3.0(eslint@10.0.0(jiti@2.6.1)): + dependencies: + eslint: 10.0.0(jiti@2.6.1) + globals: 15.15.0 + + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -21064,9 +20207,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7(supports-color@8.1.1) doctrine: 2.1.0 - eslint: 8.57.1 + eslint: 10.0.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.54.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -21078,13 +20221,13 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.54.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/parser': 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.56.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@10.0.0(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -21095,7 +20238,7 @@ snapshots: doctrine: 2.1.0 eslint: 10.0.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.56.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@10.0.0(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -21107,83 +20250,16 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.56.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.56.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): - dependencies: - '@rtsao/scc': 1.1.0 - array-includes: 3.1.9 - array.prototype.findlastindex: 1.2.6 - array.prototype.flat: 1.3.3 - array.prototype.flatmap: 1.3.3 - debug: 3.2.7(supports-color@8.1.1) - doctrine: 2.1.0 - eslint: 8.57.1 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.56.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) - hasown: 2.0.2 - is-core-module: 2.16.1 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.1 - semver: 6.3.1 - string.prototype.trimend: 1.0.9 - tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 8.56.0(eslint@8.57.1)(typescript@5.9.3) - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - - eslint-plugin-jsx-a11y@6.10.2(eslint@10.0.0(jiti@2.6.1)): - dependencies: - aria-query: 5.3.2 - array-includes: 3.1.9 - array.prototype.flatmap: 1.3.3 - ast-types-flow: 0.0.8 - axe-core: 4.10.3 - axobject-query: 4.1.0 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - eslint: 10.0.0(jiti@2.6.1) - hasown: 2.0.2 - jsx-ast-utils: 3.3.5 - language-tags: 1.0.9 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - safe-regex-test: 1.1.0 - string.prototype.includes: 2.0.1 - - eslint-plugin-jsx-a11y@6.10.2(eslint@8.57.1): - dependencies: - aria-query: 5.3.2 - array-includes: 3.1.9 - array.prototype.flatmap: 1.3.3 - ast-types-flow: 0.0.8 - axe-core: 4.10.3 - axobject-query: 4.1.0 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - eslint: 8.57.1 - hasown: 2.0.2 - jsx-ast-utils: 3.3.5 - language-tags: 1.0.9 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - safe-regex-test: 1.1.0 - string.prototype.includes: 2.0.1 - - eslint-plugin-mdx@3.6.2(eslint@10.0.0(jiti@2.6.1)): + eslint-plugin-mdx@3.7.0(eslint@10.0.0(jiti@2.6.1)): dependencies: eslint: 10.0.0(jiti@2.6.1) - eslint-mdx: 3.6.2(eslint@10.0.0(jiti@2.6.1)) + eslint-mdx: 3.7.0(eslint@10.0.0(jiti@2.6.1)) mdast-util-from-markdown: 2.0.2 mdast-util-mdx: 3.0.0 micromark-extension-mdxjs: 3.0.0 @@ -21198,14 +20274,10 @@ snapshots: - remark-lint-file-extension - supports-color - eslint-plugin-react-hooks@5.2.0(eslint@8.57.1): - dependencies: - eslint: 8.57.1 - eslint-plugin-react-hooks@7.0.1(eslint@10.0.0(jiti@2.6.1)): dependencies: '@babel/core': 7.28.4 - '@babel/parser': 7.28.5 + '@babel/parser': 7.29.0 eslint: 10.0.0(jiti@2.6.1) hermes-parser: 0.25.1 zod: 4.3.6 @@ -21213,65 +20285,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-react@7.37.5(eslint@10.0.0(jiti@2.6.1)): - dependencies: - array-includes: 3.1.9 - array.prototype.findlast: 1.2.5 - array.prototype.flatmap: 1.3.3 - array.prototype.tosorted: 1.1.4 - doctrine: 2.1.0 - es-iterator-helpers: 1.2.1 - eslint: 10.0.0(jiti@2.6.1) - estraverse: 5.3.0 - hasown: 2.0.2 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 - object.entries: 1.1.9 - object.fromentries: 2.0.8 - object.values: 1.2.1 - prop-types: 15.8.1 - resolve: 2.0.0-next.5 - semver: 6.3.1 - string.prototype.matchall: 4.0.12 - string.prototype.repeat: 1.0.0 - - eslint-plugin-react@7.37.5(eslint@8.57.1): - dependencies: - array-includes: 3.1.9 - array.prototype.findlast: 1.2.5 - array.prototype.flatmap: 1.3.3 - array.prototype.tosorted: 1.1.4 - doctrine: 2.1.0 - es-iterator-helpers: 1.2.1 - eslint: 8.57.1 - estraverse: 5.3.0 - hasown: 2.0.2 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 - object.entries: 1.1.9 - object.fromentries: 2.0.8 - object.values: 1.2.1 - prop-types: 15.8.1 - resolve: 2.0.0-next.5 - semver: 6.3.1 - string.prototype.matchall: 4.0.12 - string.prototype.repeat: 1.0.0 - eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 - eslint-scope@7.2.2: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-scope@8.4.0: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - eslint-scope@9.1.0: dependencies: '@types/esrecurse': 4.3.1 @@ -21279,7 +20297,12 @@ snapshots: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-visitor-keys@2.1.0: {} + eslint-scope@9.1.2: + dependencies: + '@types/esrecurse': 4.3.1 + '@types/estree': 1.0.8 + esrecurse: 4.3.0 + estraverse: 5.3.0 eslint-visitor-keys@3.4.3: {} @@ -21316,7 +20339,7 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 - minimatch: 10.1.1 + minimatch: 10.2.1 natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: @@ -21324,49 +20347,6 @@ snapshots: transitivePeerDependencies: - supports-color - eslint@8.57.1: - dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) - '@eslint-community/regexpp': 4.12.1 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.1 - '@humanwhocodes/config-array': 0.13.0 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.3.0 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.1(supports-color@5.5.0) - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.6.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - 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.1 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - espree@10.4.0: dependencies: acorn: 8.15.0 @@ -21379,18 +20359,8 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 5.0.0 - espree@9.6.1: - dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) - eslint-visitor-keys: 3.4.3 - esprima@4.0.1: {} - esquery@1.6.0: - dependencies: - estraverse: 5.3.0 - esquery@1.7.0: dependencies: estraverse: 5.3.0 @@ -21639,10 +20609,6 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 - file-entry-cache@6.0.1: - dependencies: - flat-cache: 3.2.0 - file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -21700,12 +20666,6 @@ snapshots: flag-icons@7.5.0: {} - flat-cache@3.2.0: - dependencies: - flatted: 3.3.3 - keyv: 4.5.4 - rimraf: 3.0.2 - flat-cache@4.0.1: dependencies: flatted: 3.3.3 @@ -22012,6 +20972,8 @@ snapshots: - encoding - supports-color + generator-function@2.0.1: {} + gensync@1.0.0-beta.2: {} get-caller-file@2.0.5: {} @@ -22117,13 +21079,7 @@ snapshots: dependencies: ini: 2.0.0 - globals@13.24.0: - dependencies: - type-fest: 0.20.2 - - globals@14.0.0: {} - - globals@16.4.0: {} + globals@15.15.0: {} globals@17.3.0: {} @@ -22151,8 +21107,6 @@ snapshots: graceful-fs@4.2.11: {} - graphemer@1.4.0: {} - gray-matter@4.0.3: dependencies: js-yaml: 3.14.1 @@ -22498,7 +21452,7 @@ snapshots: ignore-walk@8.0.0: dependencies: - minimatch: 10.2.1 + minimatch: 10.2.4 ignore@5.3.2: {} @@ -22513,11 +21467,6 @@ snapshots: immutable@5.1.3: {} - import-fresh@3.3.1: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - import-in-the-middle@2.0.6: dependencies: acorn: 8.15.0 @@ -22648,9 +21597,10 @@ snapshots: dependencies: get-east-asian-width: 1.4.0 - is-generator-function@1.1.0: + is-generator-function@1.1.2: dependencies: call-bound: 1.0.4 + generator-function: 2.0.1 get-proto: 1.0.1 has-tostringtag: 1.0.2 safe-regex-test: 1.1.0 @@ -22734,7 +21684,7 @@ snapshots: is-typed-array@1.1.15: dependencies: - which-typed-array: 1.1.19 + which-typed-array: 1.1.20 is-typedarray@1.0.0: {} @@ -22787,7 +21737,7 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: '@babel/core': 7.28.4 - '@babel/parser': 7.28.4 + '@babel/parser': 7.29.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -22797,7 +21747,7 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: '@babel/core': 7.28.4 - '@babel/parser': 7.28.5 + '@babel/parser': 7.29.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.7.4 @@ -22812,7 +21762,7 @@ snapshots: istanbul-lib-source-maps@3.0.6: dependencies: - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.3(supports-color@8.1.1) istanbul-lib-coverage: 2.0.5 make-dir: 2.1.0 rimraf: 2.7.1 @@ -22833,15 +21783,6 @@ snapshots: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 - iterator.prototype@1.1.5: - dependencies: - define-data-property: 1.1.4 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - has-symbols: 1.1.0 - set-function-name: 2.0.2 - jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 @@ -23015,13 +21956,6 @@ snapshots: json-schema: 0.4.0 verror: 1.10.0 - jsx-ast-utils@3.3.5: - dependencies: - array-includes: 3.1.9 - array.prototype.flat: 1.3.3 - object.assign: 4.1.7 - object.values: 1.2.1 - just-clone@6.2.0: {} jwa@2.0.1: @@ -23109,8 +22043,6 @@ snapshots: kind-of@6.0.3: {} - kleur@4.1.5: {} - knip@5.82.1(@types/node@24.10.9)(typescript@5.9.3): dependencies: '@nodelib/fs.walk': 1.2.8 @@ -23130,12 +22062,6 @@ snapshots: kuler@2.0.0: {} - language-subtag-registry@0.3.23: {} - - language-tags@1.0.9: - dependencies: - language-subtag-registry: 0.3.23 - lazy-ass@1.6.0: {} lazystream@1.0.1: @@ -23335,8 +22261,6 @@ snapshots: lodash.isstring@4.0.1: {} - lodash.merge@4.6.2: {} - lodash.once@4.1.1: {} lodash.startcase@4.4.0: {} @@ -23965,6 +22889,10 @@ snapshots: dependencies: brace-expansion: 5.0.2 + minimatch@10.2.4: + dependencies: + brace-expansion: 5.0.2 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.12 @@ -24150,7 +23078,7 @@ snapshots: nanoid@5.1.6: {} - napi-postinstall@0.3.3: {} + napi-postinstall@0.3.4: {} natural-compare@1.4.0: {} @@ -24498,25 +23426,18 @@ snapshots: has-symbols: 1.1.0 object-keys: 1.1.1 - object.entries@1.1.9: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - object.fromentries@2.0.8: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-object-atoms: 1.1.1 object.groupby@1.0.3: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 object.values@1.2.1: dependencies: @@ -24614,18 +23535,6 @@ snapshots: strip-ansi: 6.0.1 wcwidth: 1.0.1 - ora@5.4.1: - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - ora@8.2.0: dependencies: chalk: 5.6.2 @@ -24746,10 +23655,6 @@ snapshots: transitivePeerDependencies: - supports-color - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - parse-entities@4.0.2: dependencies: '@types/unist': 2.0.11 @@ -24855,8 +23760,6 @@ snapshots: picomatch@2.3.1: {} - picomatch@4.0.2: {} - picomatch@4.0.3: {} pidtree@0.6.0: {} @@ -25399,7 +24302,7 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 @@ -25546,8 +24449,6 @@ snapshots: reserved-identifiers@1.2.0: {} - resolve-from@4.0.0: {} - resolve-from@5.0.0: {} resolve-pkg-maps@1.0.0: {} @@ -25560,12 +24461,6 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - resolve@2.0.0-next.5: - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - restore-cursor@3.1.0: dependencies: onetime: 5.1.2 @@ -25638,18 +24533,10 @@ snapshots: dependencies: queue-microtask: 1.2.3 - rxjs@7.8.1: - dependencies: - tslib: 2.8.1 - rxjs@7.8.2: dependencies: tslib: 2.8.1 - sade@1.8.1: - dependencies: - mri: 1.2.0 - safe-array-concat@1.1.3: dependencies: call-bind: 1.0.8 @@ -25979,8 +24866,6 @@ snapshots: source-map@0.6.1: {} - source-map@0.7.4: {} - source-map@0.7.6: {} space-separated-tokens@2.0.2: {} @@ -26041,7 +24926,7 @@ snapshots: dependencies: minipass: 7.1.2 - stable-hash@0.0.5: {} + stable-hash-x@0.2.0: {} stack-generator@2.0.10: dependencies: @@ -26132,40 +25017,13 @@ snapshots: string.prototype.codepointat@0.2.1: {} - string.prototype.includes@2.0.1: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - - string.prototype.matchall@4.0.12: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - gopd: 1.2.0 - has-symbols: 1.1.0 - internal-slot: 1.1.0 - regexp.prototype.flags: 1.5.4 - set-function-name: 2.0.2 - side-channel: 1.1.0 - - string.prototype.repeat@1.0.0: - dependencies: - define-properties: 1.2.1 - es-abstract: 1.24.0 - string.prototype.trim@1.2.10: dependencies: call-bind: 1.0.8 call-bound: 1.0.4 define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-object-atoms: 1.1.1 has-property-descriptors: 1.0.2 @@ -26441,8 +25299,6 @@ snapshots: text-hex@1.0.0: {} - text-table@0.2.0: {} - thenify-all@1.6.0: dependencies: thenify: 3.3.1 @@ -26529,10 +25385,6 @@ snapshots: string-byte-length: 3.0.1 string-byte-slice: 3.0.1 - ts-api-utils@1.4.3(typescript@5.9.2): - dependencies: - typescript: 5.9.2 - ts-api-utils@2.4.0(typescript@5.9.2): dependencies: typescript: 5.9.2 @@ -26635,8 +25487,6 @@ snapshots: dependencies: prelude-ls: 1.2.1 - type-fest@0.20.2: {} - type-fest@0.21.3: {} type-fest@0.8.1: {} @@ -26695,17 +25545,6 @@ snapshots: typedarray@0.0.6: {} - typescript-eslint@8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3): - dependencies: - '@typescript-eslint/eslint-plugin': 8.54.0(@typescript-eslint/parser@8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) - eslint: 10.0.0(jiti@2.6.1) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - typescript@5.4.5: {} typescript@5.9.2: {} @@ -26829,12 +25668,6 @@ snapshots: dependencies: unist-util-visit-parents: 2.1.2 - unist-util-visit@5.0.0: - dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 - unist-util-visit@5.1.0: dependencies: '@types/unist': 3.0.3 @@ -26849,7 +25682,7 @@ snapshots: unrs-resolver@1.11.1: dependencies: - napi-postinstall: 0.3.3 + napi-postinstall: 0.3.4 optionalDependencies: '@unrs/resolver-binding-android-arm-eabi': 1.11.1 '@unrs/resolver-binding-android-arm64': 1.11.1 @@ -26939,13 +25772,6 @@ snapshots: uuid@9.0.1: {} - uvu@0.5.6: - dependencies: - dequal: 2.0.3 - diff: 5.2.0 - kleur: 4.1.5 - sade: 1.8.1 - validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 @@ -27340,13 +26166,13 @@ snapshots: is-async-function: 2.1.1 is-date-object: 1.1.0 is-finalizationregistry: 1.1.1 - is-generator-function: 1.1.0 + is-generator-function: 1.1.2 is-regex: 1.2.1 is-weakref: 1.1.1 isarray: 2.0.5 which-boxed-primitive: 1.1.1 which-collection: 1.0.2 - which-typed-array: 1.1.19 + which-typed-array: 1.1.20 which-collection@1.0.2: dependencies: @@ -27357,7 +26183,7 @@ snapshots: which-module@2.0.1: {} - which-typed-array@1.1.19: + which-typed-array@1.1.20: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.8