diff --git a/apps/nextjs/src/app/[locale]/auth/login/_login-form.tsx b/apps/nextjs/src/app/[locale]/auth/login/_login-form.tsx index 411055756..71d249cf5 100644 --- a/apps/nextjs/src/app/[locale]/auth/login/_login-form.tsx +++ b/apps/nextjs/src/app/[locale]/auth/login/_login-form.tsx @@ -13,6 +13,7 @@ import type { useForm } from "@homarr/form"; import { useZodForm } from "@homarr/form"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useScopedI18n } from "@homarr/translation/client"; +import { sanitizeRedirectionUrl } from "@homarr/validation/redirection-url"; import { userSignInSchema } from "@homarr/validation/user"; type Provider = "credentials" | "ldap" | "oidc"; @@ -70,7 +71,7 @@ export const LoginForm = ({ providers, oidcClientName, isOidcAutoLoginEnabled, c // Redirect to the callback URL if the response is defined and comes from a credentials provider (ldap or credentials). oidc is redirected automatically. await revalidatePathActionAsync("/"); - router.push(callbackUrl); + router.push(sanitizeRedirectionUrl(callbackUrl)); }, [t, router, callbackUrl], ); diff --git a/apps/nextjs/src/app/[locale]/auth/login/page.tsx b/apps/nextjs/src/app/[locale]/auth/login/page.tsx index c9d913c08..22adf3b87 100644 --- a/apps/nextjs/src/app/[locale]/auth/login/page.tsx +++ b/apps/nextjs/src/app/[locale]/auth/login/page.tsx @@ -4,6 +4,7 @@ import { Card, Center, Stack, Text, Title } from "@mantine/core"; import { env } from "@homarr/auth/env"; import { auth } from "@homarr/auth/next"; import { getScopedI18n } from "@homarr/translation/server"; +import { sanitizeRedirectionUrl } from "@homarr/validation/redirection-url"; import { HomarrLogoWithTitle } from "~/components/layout/logo/homarr-logo"; import { LoginForm } from "./_login-form"; @@ -19,7 +20,7 @@ export default async function Login(props: LoginProps) { const session = await auth(); if (session) { - redirect(searchParams.callbackUrl ?? "/"); + redirect(sanitizeRedirectionUrl(searchParams.callbackUrl)); } const t = await getScopedI18n("user.page.login"); diff --git a/apps/nextjs/src/app/[locale]/boards/(content)/_header-actions.tsx b/apps/nextjs/src/app/[locale]/boards/(content)/_header-actions.tsx index ce6866ef3..f1185430c 100644 --- a/apps/nextjs/src/app/[locale]/boards/(content)/_header-actions.tsx +++ b/apps/nextjs/src/app/[locale]/boards/(content)/_header-actions.tsx @@ -264,6 +264,5 @@ const usePreventLeaveWithDirty = (isDirty: boolean) => { window.removeEventListener("popstate", handlePopState); window.removeEventListener("beforeunload", handleBeforeUnload); }; - // eslint-disable-next-line react-hooks/exhaustive-deps }, [isDirty]); }; diff --git a/apps/nextjs/src/app/[locale]/boards/(content)/_ready-context.tsx b/apps/nextjs/src/app/[locale]/boards/(content)/_ready-context.tsx index dcd07a311..606a296ea 100644 --- a/apps/nextjs/src/app/[locale]/boards/(content)/_ready-context.tsx +++ b/apps/nextjs/src/app/[locale]/boards/(content)/_ready-context.tsx @@ -27,7 +27,6 @@ export const BoardReadyProvider = ({ children }: PropsWithChildren) => { useEffect(() => { setReadySections((previous) => previous.filter((id) => board.sections.some((section) => section.id === id))); - // eslint-disable-next-line react-hooks/exhaustive-deps }, [board.sections.length, setReadySections]); const markAsReady = useCallback((id: string) => { diff --git a/apps/nextjs/src/app/[locale]/manage/tools/api/page.tsx b/apps/nextjs/src/app/[locale]/manage/tools/api/page.tsx index adfa1648a..e848c0fcf 100644 --- a/apps/nextjs/src/app/[locale]/manage/tools/api/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/tools/api/page.tsx @@ -14,7 +14,7 @@ import { ApiKeysManagement } from "./components/api-keys"; export async function generateMetadata() { const session = await auth(); - if (!session?.user || !session.user.permissions.includes("admin")) { + if (!session?.user.permissions.includes("admin")) { return {}; } @@ -27,7 +27,7 @@ export async function generateMetadata() { export default async function ApiPage() { const session = await auth(); - if (!session?.user || !session.user.permissions.includes("admin")) { + if (!session?.user.permissions.includes("admin")) { notFound(); } const document = openApiDocument(extractBaseUrlFromHeaders(await headers())); diff --git a/apps/nextjs/src/app/[locale]/manage/tools/logs/page.tsx b/apps/nextjs/src/app/[locale]/manage/tools/logs/page.tsx index d672947e4..b6901934c 100644 --- a/apps/nextjs/src/app/[locale]/manage/tools/logs/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/tools/logs/page.tsx @@ -18,7 +18,7 @@ import { LogContextProvider } from "./log-context"; export async function generateMetadata() { const session = await auth(); - if (!session?.user || !session.user.permissions.includes("admin")) { + if (!session?.user.permissions.includes("admin")) { return {}; } const t = await getScopedI18n("management"); @@ -30,7 +30,7 @@ export async function generateMetadata() { export default async function LogsManagementPage() { const session = await auth(); - if (!session?.user || !session.user.permissions.includes("other-view-logs")) { + if (!session?.user.permissions.includes("other-view-logs")) { notFound(); } diff --git a/apps/nextjs/src/app/api/health/live/route.ts b/apps/nextjs/src/app/api/health/live/route.ts index 2576b3f8e..ceeb7dc15 100644 --- a/apps/nextjs/src/app/api/health/live/route.ts +++ b/apps/nextjs/src/app/api/health/live/route.ts @@ -75,7 +75,6 @@ const executeHealthCheckSafelyAsync = async ( }, }; } catch (error) { - // eslint-disable-next-line @typescript-eslint/restrict-template-expressions logger.error(new ErrorWithMetadata("Healthcheck failed", { name }, { cause: error })); return { status: "unhealthy", diff --git a/apps/nextjs/src/components/board/items/item-content.tsx b/apps/nextjs/src/components/board/items/item-content.tsx index 8f89ba091..d61d05902 100644 --- a/apps/nextjs/src/components/board/items/item-content.tsx +++ b/apps/nextjs/src/components/board/items/item-content.tsx @@ -117,7 +117,6 @@ const InnerContent = ({ item, ...dimensions }: InnerContentProps) => { when={ widgetSupportsIntegrations && item.integrationIds.length === 0 && - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition (!("integrationsRequired" in definition) || definition.integrationsRequired !== false) } /> diff --git a/apps/nextjs/src/components/board/sections/gridstack/use-gridstack.ts b/apps/nextjs/src/components/board/sections/gridstack/use-gridstack.ts index 4f2fef067..eda89a8e6 100644 --- a/apps/nextjs/src/components/board/sections/gridstack/use-gridstack.ts +++ b/apps/nextjs/src/components/board/sections/gridstack/use-gridstack.ts @@ -206,7 +206,6 @@ export const useGridstack = (section: Omit, itemIds: string[]) } // Only run this effect when the section items change - // eslint-disable-next-line react-hooks/exhaustive-deps }, [itemIds.length, columnCount]); /** diff --git a/apps/tasks/package.json b/apps/tasks/package.json index dc6f5eb1a..b8ebf997a 100644 --- a/apps/tasks/package.json +++ b/apps/tasks/package.json @@ -41,7 +41,7 @@ "dotenv": "^17.3.1", "fastify": "^5.8.2", "superjson": "2.2.6", - "undici": "7.18.2" + "undici": "7.24.5" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/package.json b/package.json index cb0f431be..7e3ee143d 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "@semantic-release/npm": "^13.1.5", "@semantic-release/release-notes-generator": "^14.1.0", "@testcontainers/redis": "^11.13.0", - "@turbo/gen": "^2.8.19", + "@turbo/gen": "^2.8.20", "@vitejs/plugin-react": "^5.2.0", "@vitest/coverage-v8": "^4.1.0", "@vitest/ui": "^4.1.0", @@ -54,7 +54,7 @@ "prettier": "^3.8.1", "semantic-release": "^25.0.3", "testcontainers": "^11.13.0", - "turbo": "^2.8.19", + "turbo": "^2.8.20", "typescript": "^5.9.3", "vite-tsconfig-paths": "^6.1.1", "vitest": "^4.1.0" @@ -88,7 +88,7 @@ "linkifyjs@<4.3.2": ">=4.3.2", "nanoid@>=4.0.0 <5.0.9": ">=5.1.7", "prismjs@<1.30.0": ">=1.30.0", - "proxmox-api>undici": "7.19.2", + "proxmox-api>undici": "7.24.0", "react-is": "^19.2.4", "rollup@>=4.0.0 <4.22.4": ">=4.59.0", "sha.js@<=2.4.11": ">=2.4.12", diff --git a/packages/common/package.json b/packages/common/package.json index 129352e7d..db046ee48 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -34,7 +34,7 @@ "octokit": "^5.0.5", "react": "19.2.4", "react-dom": "19.2.4", - "undici": "7.18.2", + "undici": "7.24.5", "zod": "^4.2.1", "zod-validation-error": "^5.0.0" }, diff --git a/packages/integrations/package.json b/packages/integrations/package.json index 78f3e9510..9e98502ed 100644 --- a/packages/integrations/package.json +++ b/packages/integrations/package.json @@ -38,7 +38,7 @@ "@homarr/redis": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@immich/sdk": "^2.6.0", + "@immich/sdk": "^2.6.1", "@jellyfin/sdk": "^0.13.0", "@octokit/auth-app": "^8.2.0", "ical.js": "^2.2.1", @@ -47,7 +47,7 @@ "octokit": "^5.0.5", "proxmox-api": "1.1.1", "tsdav": "^2.1.8", - "undici": "7.18.2", + "undici": "7.24.5", "xml2js": "^0.6.2", "zod": "^4.2.1" }, diff --git a/packages/integrations/src/nextcloud/nextcloud.integration.ts b/packages/integrations/src/nextcloud/nextcloud.integration.ts index 8d6cf8066..531191cf6 100644 --- a/packages/integrations/src/nextcloud/nextcloud.integration.ts +++ b/packages/integrations/src/nextcloud/nextcloud.integration.ts @@ -8,7 +8,7 @@ import { DAVClient } from "tsdav"; import { z } from "zod"; import { ResponseError } from "@homarr/common/server"; -import { fetchWithTrustedCertificatesAsync, createHttpsAgentAsync } from "@homarr/core/infrastructure/http"; +import { createHttpsAgentAsync, fetchWithTrustedCertificatesAsync } from "@homarr/core/infrastructure/http"; import { createLogger } from "@homarr/core/infrastructure/logs"; import { HandleIntegrationErrors } from "../base/errors/decorator"; @@ -18,8 +18,8 @@ import { Integration } from "../base/integration"; import type { TestingResult } from "../base/test-connection/test-connection-service"; import type { ICalendarIntegration } from "../interfaces/calendar/calendar-integration"; import type { CalendarEvent } from "../interfaces/calendar/calendar-types"; -import type { INotificationsIntegration } from "../interfaces/notifications/notifications-integration"; import type { Notification } from "../interfaces/notifications/notification-types"; +import type { INotificationsIntegration } from "../interfaces/notifications/notifications-integration"; const notificationSchema = z.object({ ocs: z.object({ diff --git a/packages/modals-collection/src/boards/add-board-modal.tsx b/packages/modals-collection/src/boards/add-board-modal.tsx index 9561a1717..b18ca9851 100644 --- a/packages/modals-collection/src/boards/add-board-modal.tsx +++ b/packages/modals-collection/src/boards/add-board-modal.tsx @@ -55,17 +55,16 @@ export const AddBoardModal = createModal(({ actions }) => { label={t("board.field.name.label")} data-autofocus {...form.getInputProps("name")} - description={ - boardNameStatus.description ? ( - - - {boardNameStatus.description.icon ? : null} - {boardNameStatus.description.label} - - - ) : null - } - + description={ + boardNameStatus.description ? ( + + + {boardNameStatus.description.icon ? : null} + {boardNameStatus.description.label} + + + ) : null + } /> oldOptions.allowMicrophone, allowGeolocation: (oldOptions) => oldOptions.allowGeolocation, allowScrolling: (oldOptions) => oldOptions.allowScrolling, + allowModals: () => undefined, }, video: { feedUrl: (oldOptions) => oldOptions.FeedUrl, diff --git a/packages/request-handler/package.json b/packages/request-handler/package.json index 015a70745..f18a1a97a 100644 --- a/packages/request-handler/package.json +++ b/packages/request-handler/package.json @@ -33,7 +33,7 @@ "dayjs": "^1.11.20", "octokit": "^5.0.5", "superjson": "2.2.6", - "undici": "7.18.2", + "undici": "7.24.5", "zod": "^4.2.1" }, "devDependencies": { diff --git a/packages/spotlight/src/modes/home/context.tsx b/packages/spotlight/src/modes/home/context.tsx index 3a681499b..fced7fc06 100644 --- a/packages/spotlight/src/modes/home/context.tsx +++ b/packages/spotlight/src/modes/home/context.tsx @@ -94,7 +94,6 @@ const createSpotlightContext = (displayName: string) => { context.unregisterItems(key); }; // We ignore the results - // eslint-disable-next-line react-hooks/exhaustive-deps }, [...dependencyArray, key]); }; diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index 77d37810f..29fb9b979 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -1625,6 +1625,9 @@ }, "allowGeolocation": { "label": "Allow geolocation" + }, + "allowModals": { + "label": "Allow modals" } }, "error": { @@ -2033,7 +2036,6 @@ "directStream": "Direct Stream" } }, - "recentActivity": { "title": "Recent Activity", "empty": "No recent activity", diff --git a/packages/validation/src/redirection-url.ts b/packages/validation/src/redirection-url.ts new file mode 100644 index 000000000..3121f6726 --- /dev/null +++ b/packages/validation/src/redirection-url.ts @@ -0,0 +1,14 @@ +/** + * Sanitizes the URL from malicious payloads. + * Prevents open redirects such as //example.com/path + * and prevents XSS such as javascript:(). + * Returns / as a default or when unsafe. + * @param url The URL to sanitize + */ +export const sanitizeRedirectionUrl = (url?: string) => { + if (url && url.startsWith("/") && !url.startsWith("//")) { + return url; + } else { + return "/"; // Safe default + } +}; diff --git a/packages/widgets/src/iframe/component.tsx b/packages/widgets/src/iframe/component.tsx index 67fa73536..ac794a631 100644 --- a/packages/widgets/src/iframe/component.tsx +++ b/packages/widgets/src/iframe/component.tsx @@ -105,6 +105,10 @@ const getSandboxFlags = ( baseSandbox.push("allow-popups-to-escape-sandbox"); } + if (permissions.allowModals) { + baseSandbox.push("allow-modals"); + } + return baseSandbox; }; @@ -115,4 +119,5 @@ const permissionMapping = { allowGeolocation: "geolocation", allowMicrophone: "microphone", allowPayment: "payment", + allowModals: "allow-modals", } satisfies Record["options"], "embedUrl" | "allowScrolling">, string>; diff --git a/packages/widgets/src/iframe/index.ts b/packages/widgets/src/iframe/index.ts index 9e6cc06e1..d4313aebe 100644 --- a/packages/widgets/src/iframe/index.ts +++ b/packages/widgets/src/iframe/index.ts @@ -17,6 +17,7 @@ export const { definition, componentLoader } = createWidgetDefinition("iframe", allowMicrophone: factory.switch(), allowCamera: factory.switch(), allowGeolocation: factory.switch(), + allowModals: factory.switch(), })); }, }).withDynamicImport(() => import("./component")); diff --git a/packages/widgets/src/video/component.tsx b/packages/widgets/src/video/component.tsx index 68038744e..12b6bbde0 100644 --- a/packages/widgets/src/video/component.tsx +++ b/packages/widgets/src/video/component.tsx @@ -79,7 +79,6 @@ const Feed = ({ options }: Pick, "options">) => { ], }); // All other properties are updated with other useEffect - // eslint-disable-next-line react-hooks/exhaustive-deps }, [videoRef]); useEffect(() => { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ce2fa120d..9cfa56735 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,7 +16,7 @@ overrides: linkifyjs@<4.3.2: '>=4.3.2' nanoid@>=4.0.0 <5.0.9: '>=5.1.7' prismjs@<1.30.0: '>=1.30.0' - proxmox-api>undici: 7.19.2 + proxmox-api>undici: 7.24.0 react-is: ^19.2.4 rollup@>=4.0.0 <4.22.4: '>=4.59.0' sha.js@<=2.4.11: '>=2.4.12' @@ -62,7 +62,7 @@ importers: specifier: ^11.13.0 version: 11.13.0 '@turbo/gen': - specifier: ^2.8.19 + specifier: ^2.8.20 version: 2.8.20(@types/node@24.12.0) '@vitejs/plugin-react': specifier: ^5.2.0 @@ -95,8 +95,8 @@ importers: specifier: ^11.13.0 version: 11.13.0 turbo: - specifier: ^2.8.19 - version: 2.8.19 + specifier: ^2.8.20 + version: 2.8.20 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -438,8 +438,8 @@ importers: specifier: 2.2.6 version: 2.2.6 undici: - specifier: 7.18.2 - version: 7.18.2 + specifier: 7.24.5 + version: 7.24.5 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -862,8 +862,8 @@ importers: specifier: 19.2.4 version: 19.2.4(react@19.2.4) undici: - specifier: 7.18.2 - version: 7.18.2 + specifier: 7.24.5 + version: 7.24.5 zod: specifier: ^4.2.1 version: 4.2.1 @@ -1455,7 +1455,7 @@ importers: version: link:../image-proxy '@homarr/node-unifi': specifier: ^2.6.0 - version: 2.6.0(undici@7.18.2) + version: 2.6.0(undici@7.24.5) '@homarr/redis': specifier: workspace:^0.1.0 version: link:../redis @@ -1466,7 +1466,7 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@immich/sdk': - specifier: ^2.6.0 + specifier: ^2.6.1 version: 2.6.1 '@jellyfin/sdk': specifier: ^0.13.0 @@ -1493,8 +1493,8 @@ importers: specifier: ^2.1.8 version: 2.1.8 undici: - specifier: 7.18.2 - version: 7.18.2 + specifier: 7.24.5 + version: 7.24.5 xml2js: specifier: ^0.6.2 version: 0.6.2 @@ -1864,8 +1864,8 @@ importers: specifier: 2.2.6 version: 2.2.6 undici: - specifier: 7.18.2 - version: 7.18.2 + specifier: 7.24.5 + version: 7.24.5 zod: specifier: ^4.2.1 version: 4.2.1 @@ -2364,11 +2364,11 @@ importers: specifier: ^10.1.8 version: 10.1.8(eslint@9.39.4) eslint-config-turbo: - specifier: ^2.8.19 - version: 2.8.20(eslint@9.39.4)(turbo@2.8.19) + specifier: ^2.8.20 + version: 2.8.20(eslint@9.39.4)(turbo@2.8.20) eslint-plugin-import: specifier: ^2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.57.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4) + version: 2.32.0(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4) eslint-plugin-jsx-a11y: specifier: ^6.10.2 version: 6.10.2(eslint@9.39.4) @@ -2379,8 +2379,8 @@ importers: specifier: ^6.1.1 version: 6.1.1(eslint@9.39.4) typescript-eslint: - specifier: ^8.57.0 - version: 8.57.0(eslint@9.39.4)(typescript@5.9.3) + specifier: ^8.57.1 + version: 8.57.1(eslint@9.39.4)(typescript@5.9.3) devDependencies: '@homarr/prettier-config': specifier: workspace:^0.1.0 @@ -4967,13 +4967,13 @@ packages: '@tsconfig/svelte@1.0.13': resolution: {integrity: sha512-5lYJP45Xllo4yE/RUBccBT32eBlRDbqN8r1/MIvQbKxW3aFqaYPCNgm8D5V20X4ShHcwvYWNlKg3liDh1MlBoA==} - '@turbo/darwin-64@2.8.19': - resolution: {integrity: sha512-WNzpqJV7rO/oKmsxjtSFXuV87fZb/qxzeGWXJng4oHFz7iPOFSWrPb2gTazJgoTvXUfe1kOH2o0F+zFrerwzRw==} + '@turbo/darwin-64@2.8.20': + resolution: {integrity: sha512-FQ9EX1xMU5nbwjxXxM3yU88AQQ6Sqc6S44exPRroMcx9XZHqqppl5ymJF0Ig/z3nvQNwDmz1Gsnvxubo+nXWjQ==} cpu: [x64] os: [darwin] - '@turbo/darwin-arm64@2.8.19': - resolution: {integrity: sha512-KTq8/PH0/ml9bNFomZ2VjmOqW6RYPRqBqV5CfNeD5ekJMuNwJUdeQz0qXguxCzW4OkHCnTdPeKIehR0cdQObPg==} + '@turbo/darwin-arm64@2.8.20': + resolution: {integrity: sha512-Gpyh9ATFGThD6/s9L95YWY54cizg/VRWl2B67h0yofG8BpHf67DFAh9nuJVKG7bY0+SBJDAo5cMur+wOl9YOYw==} cpu: [arm64] os: [darwin] @@ -4981,23 +4981,23 @@ packages: resolution: {integrity: sha512-SazKn5Pc9mitpc3uc6Pmf+QhkNtvF5t6Ro0V1cuc0QFhblbfw4KwWqFnnfTEmGzgDtb2CZJB3BK8LFMBX52eLg==} hasBin: true - '@turbo/linux-64@2.8.19': - resolution: {integrity: sha512-d0xcXiGUt1Q/HzMfgkqai5KyXrassLRuUZhxmUs4ZX99tQFbqRL2/CkSKCnMqyDv7c0K5eugLerVUY+DYr1DQg==} + '@turbo/linux-64@2.8.20': + resolution: {integrity: sha512-p2QxWUYyYUgUFG0b0kR+pPi8t7c9uaVlRtjTTI1AbCvVqkpjUfCcReBn6DgG/Hu8xrWdKLuyQFaLYFzQskZbcA==} cpu: [x64] os: [linux] - '@turbo/linux-arm64@2.8.19': - resolution: {integrity: sha512-UX3r1iwqsOK8dMgKFtZpDqZk7feqHXZJ/EQAknh0SVQrnc4vkm6mZqjX4j2j3DVoSo4Ho8xGITYlor9Xxsyomw==} + '@turbo/linux-arm64@2.8.20': + resolution: {integrity: sha512-Gn5yjlZGLRZWarLWqdQzv0wMqyBNIdq1QLi48F1oY5Lo9kiohuf7BPQWtWxeNVS2NgJ1+nb/DzK1JduYC4AWOA==} cpu: [arm64] os: [linux] - '@turbo/windows-64@2.8.19': - resolution: {integrity: sha512-3MrvD/gMYWfQKZVZOeilKm1629zPG0+KlErZbI0n9Nr3L32+5qrZOF/cgWErukLnOSR38whgf8t2WaPJQALqxg==} + '@turbo/windows-64@2.8.20': + resolution: {integrity: sha512-vyaDpYk/8T6Qz5V/X+ihKvKFEZFUoC0oxYpC1sZanK6gaESJlmV3cMRT3Qhcg4D2VxvtC2Jjs9IRkrZGL+exLw==} cpu: [x64] os: [win32] - '@turbo/windows-arm64@2.8.19': - resolution: {integrity: sha512-j+8mi7kyEgT7cUTPOtPJS8KbTWxu4+OQBiDIo+zklz/RKV4hoN+k4+J8iCM9Nj+o+SVnzc01xSI+s3eBG0MDSA==} + '@turbo/windows-arm64@2.8.20': + resolution: {integrity: sha512-voicVULvUV5yaGXo0Iue13BcHGYW3u0VgqSbfQwBaHbpj1zLjYV4KIe+7fYIo6DO8FVUJzxFps3ODCQG/Wy2Qw==} cpu: [arm64] os: [win32] @@ -5231,63 +5231,63 @@ packages: '@types/xml2js@0.4.14': resolution: {integrity: sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ==} - '@typescript-eslint/eslint-plugin@8.57.0': - resolution: {integrity: sha512-qeu4rTHR3/IaFORbD16gmjq9+rEs9fGKdX0kF6BKSfi+gCuG3RCKLlSBYzn/bGsY9Tj7KE/DAQStbp8AHJGHEQ==} + '@typescript-eslint/eslint-plugin@8.57.1': + resolution: {integrity: sha512-Gn3aqnvNl4NGc6x3/Bqk1AOn0thyTU9bqDRhiRnUWezgvr2OnhYCWCgC8zXXRVqBsIL1pSDt7T9nJUe0oM0kDQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.57.0 + '@typescript-eslint/parser': ^8.57.1 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.57.0': - resolution: {integrity: sha512-XZzOmihLIr8AD1b9hL9ccNMzEMWt/dE2u7NyTY9jJG6YNiNthaD5XtUHVF2uCXZ15ng+z2hT3MVuxnUYhq6k1g==} + '@typescript-eslint/parser@8.57.1': + resolution: {integrity: sha512-k4eNDan0EIMTT/dUKc/g+rsJ6wcHYhNPdY19VoX/EOtaAG8DLtKCykhrUnuHPYvinn5jhAPgD2Qw9hXBwrahsw==} 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.57.0': - resolution: {integrity: sha512-pR+dK0BlxCLxtWfaKQWtYr7MhKmzqZxuii+ZjuFlZlIGRZm22HnXFqa2eY+90MUz8/i80YJmzFGDUsi8dMOV5w==} + '@typescript-eslint/project-service@8.57.1': + resolution: {integrity: sha512-vx1F37BRO1OftsYlmG9xay1TqnjNVlqALymwWVuYTdo18XuKxtBpCj1QlzNIEHlvlB27osvXFWptYiEWsVdYsg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.57.0': - resolution: {integrity: sha512-nvExQqAHF01lUM66MskSaZulpPL5pgy5hI5RfrxviLgzZVffB5yYzw27uK/ft8QnKXI2X0LBrHJFr1TaZtAibw==} + '@typescript-eslint/scope-manager@8.57.1': + resolution: {integrity: sha512-hs/QcpCwlwT2L5S+3fT6gp0PabyGk4Q0Rv2doJXA0435/OpnSR3VRgvrp8Xdoc3UAYSg9cyUjTeFXZEPg/3OKg==} 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==} + '@typescript-eslint/tsconfig-utils@8.57.1': + resolution: {integrity: sha512-0lgOZB8cl19fHO4eI46YUx2EceQqhgkPSuCGLlGi79L2jwYY1cxeYc1Nae8Aw1xjgW3PKVDLlr3YJ6Bxx8HkWg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.57.0': - resolution: {integrity: sha512-yjgh7gmDcJ1+TcEg8x3uWQmn8ifvSupnPfjP21twPKrDP/pTHlEQgmKcitzF/rzPSmv7QjJ90vRpN4U+zoUjwQ==} + '@typescript-eslint/type-utils@8.57.1': + resolution: {integrity: sha512-+Bwwm0ScukFdyoJsh2u6pp4S9ktegF98pYUU0hkphOOqdMB+1sNQhIz8y5E9+4pOioZijrkfNO/HUJVAFFfPKA==} 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.57.0': - resolution: {integrity: sha512-dTLI8PEXhjUC7B9Kre+u0XznO696BhXcTlOn0/6kf1fHaQW8+VjJAVHJ3eTI14ZapTxdkOmc80HblPQLaEeJdg==} + '@typescript-eslint/types@8.57.1': + resolution: {integrity: sha512-S29BOBPJSFUiblEl6RzPPjJt6w25A6XsBqRVDt53tA/tlL8q7ceQNZHTjPeONt/3S7KRI4quk+yP9jK2WjBiPQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.57.0': - resolution: {integrity: sha512-m7faHcyVg0BT3VdYTlX8GdJEM7COexXxS6KqGopxdtkQRvBanK377QDHr4W/vIPAR+ah9+B/RclSW5ldVniO1Q==} + '@typescript-eslint/typescript-estree@8.57.1': + resolution: {integrity: sha512-ybe2hS9G6pXpqGtPli9Gx9quNV0TWLOmh58ADlmZe9DguLq0tiAKVjirSbtM1szG6+QH6rVXyU6GTLQbWnMY+g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.57.0': - resolution: {integrity: sha512-5iIHvpD3CZe06riAsbNxxreP+MuYgVUsV0n4bwLH//VJmgtt54sQeY2GszntJ4BjYCpMzrfVh2SBnUQTtys2lQ==} + '@typescript-eslint/utils@8.57.1': + resolution: {integrity: sha512-XUNSJ/lEVFttPMMoDVA2r2bwrl8/oPx8cURtczkSEswY5T3AeLmCy+EKWQNdL4u0MmAHOjcWrqJp2cdvgjn8dQ==} 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.57.0': - resolution: {integrity: sha512-zm6xx8UT/Xy2oSr2ZXD0pZo7Jx2XsCoID2IUh9YSTFRu7z+WdwYTRk6LhUftm1crwqbuoF6I8zAFeCMw0YjwDg==} + '@typescript-eslint/visitor-keys@8.57.1': + resolution: {integrity: sha512-YWnmJkXbofiz9KbnbbwuA2rpGkFPLbAIetcCNO6mJ8gdhdZ/v7WDXsoGFAJuM6ikUFKTlSQnjWnVO4ux+UzS6A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@umami/node@0.4.0': @@ -10301,8 +10301,8 @@ packages: resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} - turbo@2.8.19: - resolution: {integrity: sha512-9NTKvQZ/02XnJCSU4mF5gvAPK+nuLbvCtft/NE8dJeOwaup0bJ14rYx7TxmSXp8JJuAN8nAjqfXWFsWwoQSFHg==} + turbo@2.8.20: + resolution: {integrity: sha512-Rb4qk5YT8RUwwdXtkLpkVhNEe/lor6+WV7S5tTlLpxSz6MjV5Qi8jGNn4gS6NAvrYGA/rNrE6YUQM85sCZUDbQ==} hasBin: true tweetnacl@0.14.5: @@ -10374,8 +10374,8 @@ packages: types-ramda@0.30.1: resolution: {integrity: sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==} - typescript-eslint@8.57.0: - resolution: {integrity: sha512-W8GcigEMEeB07xEZol8oJ26rigm3+bfPHxHvwbYUlu1fUDsGuQ7Hiskx5xGW/xM4USc9Ephe3jtv7ZYPQntHeA==} + typescript-eslint@8.57.1: + resolution: {integrity: sha512-fLvZWf+cAGw3tqMCYzGIU6yR8K+Y9NT2z23RwOjlNFF2HwSB3KhdEFI5lSBv8tNmFkkBShSjsCjzx1vahZfISA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -10424,20 +10424,12 @@ packages: resolution: {integrity: sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==} engines: {node: '>=18.17'} - undici@7.18.2: - resolution: {integrity: sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw==} + undici@7.24.0: + resolution: {integrity: sha512-jxytwMHhsbdpBXxLAcuu0fzlQeXCNnWdDyRHpvWsUl8vd98UwYdl9YTyn8/HcpcJPC3pwUveefsa3zTxyD/ERg==} engines: {node: '>=20.18.1'} - undici@7.19.2: - resolution: {integrity: sha512-4VQSpGEGsWzk0VYxyB/wVX/Q7qf9t5znLRgs0dzszr9w9Fej/8RVNQ+S20vdXSAyra/bJ7ZQfGv6ZMj7UEbzSg==} - engines: {node: '>=20.18.1'} - - undici@7.21.0: - resolution: {integrity: sha512-Hn2tCQpoDt1wv23a68Ctc8Cr/BHpUSfaPYrkajTXOS9IKpxVRx/X5m1K2YkbK2ipgZgxXSgsUinl3x+2YdSSfg==} - engines: {node: '>=20.18.1'} - - undici@7.24.4: - resolution: {integrity: sha512-BM/JzwwaRXxrLdElV2Uo6cTLEjhSb3WXboncJamZ15NgUURmvlXvxa6xkwIOILIjPNo9i8ku136ZvWV0Uly8+w==} + undici@7.24.5: + resolution: {integrity: sha512-3IWdCpjgxp15CbJnsi/Y9TCDE7HWVN19j1hmzVhoAkY/+CJx449tVxT5wZc1Gwg8J+P0LWvzlBzxYRnHJ+1i7Q==} engines: {node: '>=20.18.1'} unicode-emoji-modifier-base@1.0.0: @@ -11904,11 +11896,11 @@ snapshots: '@homarr/gridstack@1.12.0': {} - '@homarr/node-unifi@2.6.0(undici@7.18.2)': + '@homarr/node-unifi@2.6.0(undici@7.24.5)': dependencies: axios: 1.9.0 eventemitter2: 6.4.9 - http-cookie-agent: 6.0.8(tough-cookie@5.1.2)(undici@7.18.2) + http-cookie-agent: 6.0.8(tough-cookie@5.1.2)(undici@7.24.5) tough-cookie: 5.1.2 ws: 8.19.0 transitivePeerDependencies: @@ -12884,7 +12876,7 @@ snapshots: p-filter: 4.1.0 semantic-release: 25.0.3(typescript@5.9.3) tinyglobby: 0.2.15 - undici: 7.18.2 + undici: 7.24.5 url-join: 5.0.0 transitivePeerDependencies: - supports-color @@ -13781,10 +13773,10 @@ snapshots: '@tsconfig/svelte@1.0.13': {} - '@turbo/darwin-64@2.8.19': + '@turbo/darwin-64@2.8.20': optional: true - '@turbo/darwin-arm64@2.8.19': + '@turbo/darwin-arm64@2.8.20': optional: true '@turbo/gen@2.8.20(@types/node@24.12.0)': @@ -13794,16 +13786,16 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@turbo/linux-64@2.8.19': + '@turbo/linux-64@2.8.20': optional: true - '@turbo/linux-arm64@2.8.19': + '@turbo/linux-arm64@2.8.20': optional: true - '@turbo/windows-64@2.8.19': + '@turbo/windows-64@2.8.20': optional: true - '@turbo/windows-arm64@2.8.19': + '@turbo/windows-arm64@2.8.20': optional: true '@types/adm-zip@0.5.8': @@ -14067,14 +14059,14 @@ snapshots: dependencies: '@types/node': 24.12.0 - '@typescript-eslint/eslint-plugin@8.57.0(@typescript-eslint/parser@8.57.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.57.1(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.57.0(eslint@9.39.4)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.57.0 - '@typescript-eslint/type-utils': 8.57.0(eslint@9.39.4)(typescript@5.9.3) - '@typescript-eslint/utils': 8.57.0(eslint@9.39.4)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.57.0 + '@typescript-eslint/parser': 8.57.1(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.57.1 + '@typescript-eslint/type-utils': 8.57.1(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.1(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.57.1 eslint: 9.39.4 ignore: 7.0.5 natural-compare: 1.4.0 @@ -14083,41 +14075,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.57.0(eslint@9.39.4)(typescript@5.9.3)': + '@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3)': dependencies: - '@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 + '@typescript-eslint/scope-manager': 8.57.1 + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.57.1 debug: 4.4.3 eslint: 9.39.4 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.57.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.57.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.57.0(typescript@5.9.3) - '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/tsconfig-utils': 8.57.1(typescript@5.9.3) + '@typescript-eslint/types': 8.57.1 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.57.0': + '@typescript-eslint/scope-manager@8.57.1': dependencies: - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/visitor-keys': 8.57.0 + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/visitor-keys': 8.57.1 - '@typescript-eslint/tsconfig-utils@8.57.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.57.1(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.57.0(eslint@9.39.4)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.57.1(eslint@9.39.4)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.57.0(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.1(eslint@9.39.4)(typescript@5.9.3) debug: 4.4.3 eslint: 9.39.4 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -14125,14 +14117,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.57.0': {} + '@typescript-eslint/types@8.57.1': {} - '@typescript-eslint/typescript-estree@8.57.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.57.1(typescript@5.9.3)': dependencies: - '@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 + '@typescript-eslint/project-service': 8.57.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.57.1(typescript@5.9.3) + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/visitor-keys': 8.57.1 debug: 4.4.3 minimatch: 10.2.2 semver: 7.7.4 @@ -14142,20 +14134,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.57.0(eslint@9.39.4)(typescript@5.9.3)': + '@typescript-eslint/utils@8.57.1(eslint@9.39.4)(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) - '@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/scope-manager': 8.57.1 + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.3) eslint: 9.39.4 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.57.0': + '@typescript-eslint/visitor-keys@8.57.1': dependencies: - '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/types': 8.57.1 eslint-visitor-keys: 5.0.0 '@umami/node@0.4.0': {} @@ -15838,11 +15830,11 @@ snapshots: dependencies: eslint: 9.39.4 - eslint-config-turbo@2.8.20(eslint@9.39.4)(turbo@2.8.19): + eslint-config-turbo@2.8.20(eslint@9.39.4)(turbo@2.8.20): dependencies: eslint: 9.39.4 - eslint-plugin-turbo: 2.8.20(eslint@9.39.4)(turbo@2.8.19) - turbo: 2.8.19 + eslint-plugin-turbo: 2.8.20(eslint@9.39.4)(turbo@2.8.20) + turbo: 2.8.20 eslint-import-resolver-node@0.3.9: dependencies: @@ -15852,17 +15844,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.57.0(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.4): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.4): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.57.0(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/parser': 8.57.1(eslint@9.39.4)(typescript@5.9.3) eslint: 9.39.4 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -15873,7 +15865,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.4 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.57.0(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.4) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.4) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -15885,7 +15877,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.57.0(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/parser': 8.57.1(eslint@9.39.4)(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -15942,11 +15934,11 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-turbo@2.8.20(eslint@9.39.4)(turbo@2.8.19): + eslint-plugin-turbo@2.8.20(eslint@9.39.4)(turbo@2.8.20): dependencies: dotenv: 16.0.3 eslint: 9.39.4 - turbo: 2.8.19 + turbo: 2.8.20 eslint-scope@5.1.1: dependencies: @@ -16593,12 +16585,12 @@ snapshots: html-url-attributes@3.0.1: {} - http-cookie-agent@6.0.8(tough-cookie@5.1.2)(undici@7.18.2): + http-cookie-agent@6.0.8(tough-cookie@5.1.2)(undici@7.24.5): dependencies: agent-base: 7.1.3 tough-cookie: 5.1.2 optionalDependencies: - undici: 7.18.2 + undici: 7.24.5 http-errors@2.0.0: dependencies: @@ -17080,7 +17072,7 @@ snapshots: saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 6.0.0 - undici: 7.21.0 + undici: 7.24.5 w3c-xmlserializer: 5.0.0 webidl-conversions: 8.0.1 whatwg-mimetype: 5.0.0 @@ -17107,7 +17099,7 @@ snapshots: saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 6.0.1 - undici: 7.24.4 + undici: 7.24.5 w3c-xmlserializer: 5.0.0 webidl-conversions: 8.0.1 whatwg-mimetype: 5.0.0 @@ -18492,7 +18484,7 @@ snapshots: proxmox-api@1.1.1: dependencies: - undici: 7.19.2 + undici: 7.24.0 proxy-from-env@1.1.0: {} @@ -19740,7 +19732,7 @@ snapshots: ssh-remote-port-forward: 1.0.4 tar-fs: 3.1.2 tmp: 0.2.5 - undici: 7.24.4 + undici: 7.24.5 transitivePeerDependencies: - bare-buffer - supports-color @@ -19929,14 +19921,14 @@ snapshots: tunnel@0.0.6: {} - turbo@2.8.19: + turbo@2.8.20: optionalDependencies: - '@turbo/darwin-64': 2.8.19 - '@turbo/darwin-arm64': 2.8.19 - '@turbo/linux-64': 2.8.19 - '@turbo/linux-arm64': 2.8.19 - '@turbo/windows-64': 2.8.19 - '@turbo/windows-arm64': 2.8.19 + '@turbo/darwin-64': 2.8.20 + '@turbo/darwin-arm64': 2.8.20 + '@turbo/linux-64': 2.8.20 + '@turbo/linux-arm64': 2.8.20 + '@turbo/windows-64': 2.8.20 + '@turbo/windows-arm64': 2.8.20 tweetnacl@0.14.5: {} @@ -20034,12 +20026,12 @@ snapshots: dependencies: ts-toolbelt: 9.6.0 - typescript-eslint@8.57.0(eslint@9.39.4)(typescript@5.9.3): + typescript-eslint@8.57.1(eslint@9.39.4)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.57.0(@typescript-eslint/parser@8.57.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) - '@typescript-eslint/parser': 8.57.0(eslint@9.39.4)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.57.0(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.57.1(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/parser': 8.57.1(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.1(eslint@9.39.4)(typescript@5.9.3) eslint: 9.39.4 typescript: 5.9.3 transitivePeerDependencies: @@ -20080,13 +20072,9 @@ snapshots: undici@6.23.0: {} - undici@7.18.2: {} + undici@7.24.0: {} - undici@7.19.2: {} - - undici@7.21.0: {} - - undici@7.24.4: {} + undici@7.24.5: {} unicode-emoji-modifier-base@1.0.0: {} diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index 7c452ab12..2c288327c 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -19,12 +19,12 @@ "dependencies": { "@next/eslint-plugin-next": "16.2.0", "eslint-config-prettier": "^10.1.8", - "eslint-config-turbo": "^2.8.19", + "eslint-config-turbo": "^2.8.20", "eslint-plugin-import": "^2.32.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^6.1.1", - "typescript-eslint": "^8.57.0" + "typescript-eslint": "^8.57.1" }, "devDependencies": { "@homarr/prettier-config": "workspace:^0.1.0",