diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 57bf80c7f..8e485a5ba 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -48,21 +48,21 @@ "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", "@homarr/widgets": "workspace:^0.1.0", - "@mantine/colors-generator": "^7.17.5", - "@mantine/core": "^7.17.5", - "@mantine/dropzone": "^7.17.5", - "@mantine/hooks": "^7.17.5", - "@mantine/modals": "^7.17.5", - "@mantine/tiptap": "^7.17.5", + "@mantine/colors-generator": "^7.17.7", + "@mantine/core": "^7.17.7", + "@mantine/dropzone": "^7.17.7", + "@mantine/hooks": "^7.17.7", + "@mantine/modals": "^7.17.7", + "@mantine/tiptap": "^7.17.7", "@million/lint": "1.0.14", "@tabler/icons-react": "^3.31.0", - "@tanstack/react-query": "^5.74.4", - "@tanstack/react-query-devtools": "^5.74.4", - "@tanstack/react-query-next-experimental": "^5.74.4", - "@trpc/client": "^11.1.1", - "@trpc/next": "^11.1.1", - "@trpc/react-query": "^11.1.1", - "@trpc/server": "^11.1.1", + "@tanstack/react-query": "^5.75.1", + "@tanstack/react-query-devtools": "^5.75.1", + "@tanstack/react-query-next-experimental": "^5.75.1", + "@trpc/client": "^11.1.2", + "@trpc/next": "^11.1.2", + "@trpc/react-query": "^11.1.2", + "@trpc/server": "^11.1.2", "@xterm/addon-canvas": "^0.7.0", "@xterm/addon-fit": "0.10.0", "@xterm/xterm": "^5.5.0", @@ -92,10 +92,10 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/chroma-js": "3.1.1", - "@types/node": "^22.15.2", + "@types/node": "^22.15.3", "@types/prismjs": "^1.26.5", "@types/react": "19.1.2", - "@types/react-dom": "19.1.2", + "@types/react-dom": "19.1.3", "@types/swagger-ui-react": "^5.18.0", "concurrently": "^9.1.2", "eslint": "^9.25.1", diff --git a/apps/nextjs/src/app/[locale]/boards/(content)/_creator.tsx b/apps/nextjs/src/app/[locale]/boards/(content)/_creator.tsx index 49be8c37c..80d52a50f 100644 --- a/apps/nextjs/src/app/[locale]/boards/(content)/_creator.tsx +++ b/apps/nextjs/src/app/[locale]/boards/(content)/_creator.tsx @@ -4,15 +4,21 @@ import { TRPCError } from "@trpc/server"; // Placed here because gridstack styles are used for board content import "~/styles/gridstack.scss"; +import { dehydrate, HydrationBoundary } from "@tanstack/react-query"; + +import { getQueryClient } from "@homarr/api/server"; import { IntegrationProvider } from "@homarr/auth/client"; import { auth } from "@homarr/auth/next"; import { getIntegrationsWithPermissionsAsync } from "@homarr/auth/server"; import { isNullOrWhitespace } from "@homarr/common"; +import type { WidgetKind } from "@homarr/definitions"; +import { logger } from "@homarr/log"; import { getI18n } from "@homarr/translation/server"; +import { prefetchForKindAsync } from "@homarr/widgets/prefetch"; import { createMetaTitle } from "~/metadata"; import { createBoardLayout } from "../_layout-creator"; -import type { Board } from "../_types"; +import type { Board, Item } from "../_types"; import { DynamicClientBoard } from "./_dynamic-client"; import { BoardContentHeaderActions } from "./_header-actions"; @@ -31,14 +37,36 @@ export const createBoardContentPage = >( getInitialBoardAsync: getInitialBoard, }), // eslint-disable-next-line no-restricted-syntax - page: async () => { + page: async ({ params }: { params: Promise }) => { const session = await auth(); const integrations = await getIntegrationsWithPermissionsAsync(session); + const board = await getInitialBoard(await params); + const queryClient = getQueryClient(); + + // Prefetch item data + const itemsMap = board.items.reduce((acc, item) => { + const existing = acc.get(item.kind); + if (existing) { + existing.push(item); + } else { + acc.set(item.kind, [item]); + } + return acc; + }, new Map()); + + for (const [kind, items] of itemsMap) { + await prefetchForKindAsync(kind, queryClient, items).catch((error) => { + logger.error(new Error("Failed to prefetch widget", { cause: error })); + }); + } + return ( - - - + + + + + ); }, generateMetadataAsync: async ({ params }: { params: Promise }): Promise => { diff --git a/apps/nextjs/src/app/[locale]/layout.tsx b/apps/nextjs/src/app/[locale]/layout.tsx index 5fbd3c3f7..afb773f72 100644 --- a/apps/nextjs/src/app/[locale]/layout.tsx +++ b/apps/nextjs/src/app/[locale]/layout.tsx @@ -7,6 +7,7 @@ import "@homarr/ui/styles.css"; import "~/styles/scroll-area.scss"; import { notFound } from "next/navigation"; +import type { DayOfWeek } from "@mantine/dates"; import { NextIntlClientProvider } from "next-intl"; import { api } from "@homarr/api/server"; @@ -87,7 +88,15 @@ export default async function Layout(props: { }, (innerProps) => ( =22.15.0" }, @@ -72,9 +72,6 @@ "overrides": { "proxmox-api>undici": "7.8.0" }, - "patchedDependencies": { - "pretty-print-error": "patches/pretty-print-error.patch" - }, "allowUnusedPatches": true, "ignoredBuiltDependencies": [ "@scarf/scarf", diff --git a/packages/api/package.json b/packages/api/package.json index 946028ffc..a42d8411f 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -41,12 +41,13 @@ "@homarr/server-settings": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", "@kubernetes/client-node": "^1.1.2", - "@trpc/client": "^11.1.1", - "@trpc/react-query": "^11.1.1", - "@trpc/server": "^11.1.1", + "@tanstack/react-query": "^5.75.1", + "@trpc/client": "^11.1.2", + "@trpc/react-query": "^11.1.2", + "@trpc/server": "^11.1.2", + "@trpc/tanstack-react-query": "^11.1.2", "lodash.clonedeep": "^4.5.0", "next": "15.3.1", - "pretty-print-error": "^1.1.2", "react": "19.1.0", "react-dom": "19.1.0", "superjson": "2.2.2", diff --git a/packages/api/src/middlewares/integration.ts b/packages/api/src/middlewares/integration.ts index 8df7f1d3f..07f1f9407 100644 --- a/packages/api/src/middlewares/integration.ts +++ b/packages/api/src/middlewares/integration.ts @@ -20,7 +20,7 @@ export type IntegrationAction = "query" | "interact"; * @param action query for showing data or interact for mutating data * @param kinds kinds of integrations that are supported * @returns middleware that can be used with trpc - * @example publicProcedure.unstable_concat(createOneIntegrationMiddleware("query", "piHole", "homeAssistant")).query(...) + * @example publicProcedure.concat(createOneIntegrationMiddleware("query", "piHole", "homeAssistant")).query(...) * @throws TRPCError NOT_FOUND if the integration was not found * @throws TRPCError FORBIDDEN if the user does not have permission to perform the specified action on the specified integration */ @@ -82,7 +82,7 @@ export const createOneIntegrationMiddleware = ( * @param action query for showing data or interact for mutating data * @param kinds kinds of integrations that are supported * @returns middleware that can be used with trpc - * @example publicProcedure.unstable_concat(createManyIntegrationMiddleware("query", "piHole", "homeAssistant")).query(...) + * @example publicProcedure.concat(createManyIntegrationMiddleware("query", "piHole", "homeAssistant")).query(...) * @throws TRPCError NOT_FOUND if the integration was not found * @throws TRPCError FORBIDDEN if the user does not have permission to perform the specified action on at least one of the specified integrations */ diff --git a/packages/api/src/router/docker/docker-router.ts b/packages/api/src/router/docker/docker-router.ts index 8b16de81c..57537b1e4 100644 --- a/packages/api/src/router/docker/docker-router.ts +++ b/packages/api/src/router/docker/docker-router.ts @@ -18,7 +18,7 @@ const dockerCache = createCacheChannel<{ export const dockerRouter = createTRPCRouter({ getContainers: permissionRequiredProcedure .requiresPermission("admin") - .unstable_concat(dockerMiddleware()) + .concat(dockerMiddleware()) .query(async () => { const result = await dockerCache .consumeAsync(async () => { @@ -81,14 +81,14 @@ export const dockerRouter = createTRPCRouter({ }), invalidate: permissionRequiredProcedure .requiresPermission("admin") - .unstable_concat(dockerMiddleware()) + .concat(dockerMiddleware()) .mutation(async () => { await dockerCache.invalidateAsync(); return; }), startAll: permissionRequiredProcedure .requiresPermission("admin") - .unstable_concat(dockerMiddleware()) + .concat(dockerMiddleware()) .input(z.object({ ids: z.array(z.string()) })) .mutation(async ({ input }) => { await Promise.allSettled( @@ -102,7 +102,7 @@ export const dockerRouter = createTRPCRouter({ }), stopAll: permissionRequiredProcedure .requiresPermission("admin") - .unstable_concat(dockerMiddleware()) + .concat(dockerMiddleware()) .input(z.object({ ids: z.array(z.string()) })) .mutation(async ({ input }) => { await Promise.allSettled( @@ -116,7 +116,7 @@ export const dockerRouter = createTRPCRouter({ }), restartAll: permissionRequiredProcedure .requiresPermission("admin") - .unstable_concat(dockerMiddleware()) + .concat(dockerMiddleware()) .input(z.object({ ids: z.array(z.string()) })) .mutation(async ({ input }) => { await Promise.allSettled( @@ -130,7 +130,7 @@ export const dockerRouter = createTRPCRouter({ }), removeAll: permissionRequiredProcedure .requiresPermission("admin") - .unstable_concat(dockerMiddleware()) + .concat(dockerMiddleware()) .input(z.object({ ids: z.array(z.string()) })) .mutation(async ({ input }) => { await Promise.allSettled( diff --git a/packages/api/src/router/integration/integration-router.ts b/packages/api/src/router/integration/integration-router.ts index 014ca1429..02a50707e 100644 --- a/packages/api/src/router/integration/integration-router.ts +++ b/packages/api/src/router/integration/integration-router.ts @@ -467,7 +467,7 @@ export const integrationRouter = createTRPCRouter({ }); }), searchInIntegration: protectedProcedure - .unstable_concat(createOneIntegrationMiddleware("query", ...getIntegrationKindsByCategory("search"))) + .concat(createOneIntegrationMiddleware("query", ...getIntegrationKindsByCategory("search"))) .input(z.object({ integrationId: z.string(), query: z.string() })) .query(async ({ ctx, input }) => { const integrationInstance = await createIntegrationAsync(ctx.integration); diff --git a/packages/api/src/router/kubernetes/router/cluster.ts b/packages/api/src/router/kubernetes/router/cluster.ts index 8b44e5dcd..0d7a77da1 100644 --- a/packages/api/src/router/kubernetes/router/cluster.ts +++ b/packages/api/src/router/kubernetes/router/cluster.ts @@ -13,7 +13,7 @@ import { MemoryResourceParser } from "../resource-parser/memory-resource-parser" export const clusterRouter = createTRPCRouter({ getCluster: permissionRequiredProcedure .requiresPermission("admin") - .unstable_concat(kubernetesMiddleware()) + .concat(kubernetesMiddleware()) .query(async (): Promise => { const { coreApi, metricsApi, versionApi, kubeConfig } = KubernetesClient.getInstance(); diff --git a/packages/api/src/router/kubernetes/router/configMaps.ts b/packages/api/src/router/kubernetes/router/configMaps.ts index 93aa1eb36..c97f6e44f 100644 --- a/packages/api/src/router/kubernetes/router/configMaps.ts +++ b/packages/api/src/router/kubernetes/router/configMaps.ts @@ -10,7 +10,7 @@ import { KubernetesClient } from "../kubernetes-client"; export const configMapsRouter = createTRPCRouter({ getConfigMaps: permissionRequiredProcedure .requiresPermission("admin") - .unstable_concat(kubernetesMiddleware()) + .concat(kubernetesMiddleware()) .query(async (): Promise => { const { coreApi } = KubernetesClient.getInstance(); diff --git a/packages/api/src/router/kubernetes/router/ingresses.ts b/packages/api/src/router/kubernetes/router/ingresses.ts index e0bea4932..17d6c97d3 100644 --- a/packages/api/src/router/kubernetes/router/ingresses.ts +++ b/packages/api/src/router/kubernetes/router/ingresses.ts @@ -11,7 +11,7 @@ import { KubernetesClient } from "../kubernetes-client"; export const ingressesRouter = createTRPCRouter({ getIngresses: permissionRequiredProcedure .requiresPermission("admin") - .unstable_concat(kubernetesMiddleware()) + .concat(kubernetesMiddleware()) .query(async (): Promise => { const { networkingApi } = KubernetesClient.getInstance(); try { diff --git a/packages/api/src/router/kubernetes/router/namespaces.ts b/packages/api/src/router/kubernetes/router/namespaces.ts index 90d5e62d9..889075d4a 100644 --- a/packages/api/src/router/kubernetes/router/namespaces.ts +++ b/packages/api/src/router/kubernetes/router/namespaces.ts @@ -10,7 +10,7 @@ import { KubernetesClient } from "../kubernetes-client"; export const namespacesRouter = createTRPCRouter({ getNamespaces: permissionRequiredProcedure .requiresPermission("admin") - .unstable_concat(kubernetesMiddleware()) + .concat(kubernetesMiddleware()) .query(async (): Promise => { const { coreApi } = KubernetesClient.getInstance(); diff --git a/packages/api/src/router/kubernetes/router/nodes.ts b/packages/api/src/router/kubernetes/router/nodes.ts index c241c6628..a4fc1959c 100644 --- a/packages/api/src/router/kubernetes/router/nodes.ts +++ b/packages/api/src/router/kubernetes/router/nodes.ts @@ -12,7 +12,7 @@ import { MemoryResourceParser } from "../resource-parser/memory-resource-parser" export const nodesRouter = createTRPCRouter({ getNodes: permissionRequiredProcedure .requiresPermission("admin") - .unstable_concat(kubernetesMiddleware()) + .concat(kubernetesMiddleware()) .query(async (): Promise => { const { coreApi, metricsApi } = KubernetesClient.getInstance(); diff --git a/packages/api/src/router/kubernetes/router/pods.ts b/packages/api/src/router/kubernetes/router/pods.ts index bb785fa65..fbf5fb183 100644 --- a/packages/api/src/router/kubernetes/router/pods.ts +++ b/packages/api/src/router/kubernetes/router/pods.ts @@ -12,7 +12,7 @@ import { KubernetesClient } from "../kubernetes-client"; export const podsRouter = createTRPCRouter({ getPods: permissionRequiredProcedure .requiresPermission("admin") - .unstable_concat(kubernetesMiddleware()) + .concat(kubernetesMiddleware()) .query(async (): Promise => { const { coreApi, kubeConfig } = KubernetesClient.getInstance(); try { diff --git a/packages/api/src/router/kubernetes/router/secrets.ts b/packages/api/src/router/kubernetes/router/secrets.ts index 471eab785..2fb80b272 100644 --- a/packages/api/src/router/kubernetes/router/secrets.ts +++ b/packages/api/src/router/kubernetes/router/secrets.ts @@ -10,7 +10,7 @@ import { KubernetesClient } from "../kubernetes-client"; export const secretsRouter = createTRPCRouter({ getSecrets: permissionRequiredProcedure .requiresPermission("admin") - .unstable_concat(kubernetesMiddleware()) + .concat(kubernetesMiddleware()) .query(async (): Promise => { const { coreApi } = KubernetesClient.getInstance(); try { diff --git a/packages/api/src/router/kubernetes/router/services.ts b/packages/api/src/router/kubernetes/router/services.ts index edb5c75ba..94b91598c 100644 --- a/packages/api/src/router/kubernetes/router/services.ts +++ b/packages/api/src/router/kubernetes/router/services.ts @@ -10,7 +10,7 @@ import { KubernetesClient } from "../kubernetes-client"; export const servicesRouter = createTRPCRouter({ getServices: permissionRequiredProcedure .requiresPermission("admin") - .unstable_concat(kubernetesMiddleware()) + .concat(kubernetesMiddleware()) .query(async (): Promise => { const { coreApi } = KubernetesClient.getInstance(); diff --git a/packages/api/src/router/kubernetes/router/volumes.ts b/packages/api/src/router/kubernetes/router/volumes.ts index b2e06df1a..f1275a704 100644 --- a/packages/api/src/router/kubernetes/router/volumes.ts +++ b/packages/api/src/router/kubernetes/router/volumes.ts @@ -10,7 +10,7 @@ import { KubernetesClient } from "../kubernetes-client"; export const volumesRouter = createTRPCRouter({ getVolumes: permissionRequiredProcedure .requiresPermission("admin") - .unstable_concat(kubernetesMiddleware()) + .concat(kubernetesMiddleware()) .query(async (): Promise => { const { coreApi } = KubernetesClient.getInstance(); diff --git a/packages/api/src/router/search-engine/search-engine-router.ts b/packages/api/src/router/search-engine/search-engine-router.ts index e361b3bc9..b513b4ec2 100644 --- a/packages/api/src/router/search-engine/search-engine-router.ts +++ b/packages/api/src/router/search-engine/search-engine-router.ts @@ -133,14 +133,14 @@ export const searchEngineRouter = createTRPCRouter({ }); }), getMediaRequestOptions: protectedProcedure - .unstable_concat(createOneIntegrationMiddleware("query", "jellyseerr", "overseerr")) + .concat(createOneIntegrationMiddleware("query", "jellyseerr", "overseerr")) .input(mediaRequestOptionsSchema) .query(async ({ ctx, input }) => { const integration = await createIntegrationAsync(ctx.integration); return await integration.getSeriesInformationAsync(input.mediaType, input.mediaId); }), requestMedia: protectedProcedure - .unstable_concat(createOneIntegrationMiddleware("interact", "jellyseerr", "overseerr")) + .concat(createOneIntegrationMiddleware("interact", "jellyseerr", "overseerr")) .input(mediaRequestRequestSchema) .mutation(async ({ ctx, input }) => { const integration = await createIntegrationAsync(ctx.integration); diff --git a/packages/api/src/router/widgets/calendar.ts b/packages/api/src/router/widgets/calendar.ts index f8062d539..a4a7b993a 100644 --- a/packages/api/src/router/widgets/calendar.ts +++ b/packages/api/src/router/widgets/calendar.ts @@ -17,7 +17,7 @@ export const calendarRouter = createTRPCRouter({ showUnmonitored: z.boolean(), }), ) - .unstable_concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("calendar"))) + .concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("calendar"))) .query(async ({ ctx, input }) => { const results = await Promise.all( ctx.integrations.map(async (integration) => { diff --git a/packages/api/src/router/widgets/dns-hole.ts b/packages/api/src/router/widgets/dns-hole.ts index 38c016913..2fa585a31 100644 --- a/packages/api/src/router/widgets/dns-hole.ts +++ b/packages/api/src/router/widgets/dns-hole.ts @@ -14,7 +14,7 @@ import { createTRPCRouter, protectedProcedure, publicProcedure } from "../../trp export const dnsHoleRouter = createTRPCRouter({ summary: publicProcedure - .unstable_concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("dnsHole"))) + .concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("dnsHole"))) .query(async ({ ctx }) => { const results = await Promise.all( ctx.integrations.map(async (integration) => { @@ -36,7 +36,7 @@ export const dnsHoleRouter = createTRPCRouter({ }), subscribeToSummary: publicProcedure - .unstable_concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("dnsHole"))) + .concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("dnsHole"))) .subscription(({ ctx }) => { return observable<{ integration: Modify }>; @@ -63,7 +63,7 @@ export const dnsHoleRouter = createTRPCRouter({ }), enable: protectedProcedure - .unstable_concat(createOneIntegrationMiddleware("interact", ...getIntegrationKindsByCategory("dnsHole"))) + .concat(createOneIntegrationMiddleware("interact", ...getIntegrationKindsByCategory("dnsHole"))) .mutation(async ({ ctx: { integration } }) => { const client = await createIntegrationAsync(integration); await client.enableAsync(); @@ -81,7 +81,7 @@ export const dnsHoleRouter = createTRPCRouter({ duration: z.number().optional(), }), ) - .unstable_concat(createOneIntegrationMiddleware("interact", ...getIntegrationKindsByCategory("dnsHole"))) + .concat(createOneIntegrationMiddleware("interact", ...getIntegrationKindsByCategory("dnsHole"))) .mutation(async ({ ctx: { integration }, input }) => { const client = await createIntegrationAsync(integration); await client.disableAsync(input.duration); diff --git a/packages/api/src/router/widgets/downloads.ts b/packages/api/src/router/widgets/downloads.ts index 10eb7c021..5387da62f 100644 --- a/packages/api/src/router/widgets/downloads.ts +++ b/packages/api/src/router/widgets/downloads.ts @@ -18,7 +18,7 @@ const createDownloadClientIntegrationMiddleware = (action: IntegrationAction) => export const downloadsRouter = createTRPCRouter({ getJobsAndStatuses: publicProcedure - .unstable_concat(createDownloadClientIntegrationMiddleware("query")) + .concat(createDownloadClientIntegrationMiddleware("query")) .query(async ({ ctx }) => { return await Promise.all( ctx.integrations.map(async (integration) => { @@ -39,7 +39,7 @@ export const downloadsRouter = createTRPCRouter({ ); }), subscribeToJobsAndStatuses: publicProcedure - .unstable_concat(createDownloadClientIntegrationMiddleware("query")) + .concat(createDownloadClientIntegrationMiddleware("query")) .subscription(({ ctx }) => { return observable<{ integration: Modify }>; @@ -64,18 +64,16 @@ export const downloadsRouter = createTRPCRouter({ }; }); }), - pause: protectedProcedure - .unstable_concat(createDownloadClientIntegrationMiddleware("interact")) - .mutation(async ({ ctx }) => { - await Promise.all( - ctx.integrations.map(async (integration) => { - const integrationInstance = await createIntegrationAsync(integration); - await integrationInstance.pauseQueueAsync(); - }), - ); - }), + pause: protectedProcedure.concat(createDownloadClientIntegrationMiddleware("interact")).mutation(async ({ ctx }) => { + await Promise.all( + ctx.integrations.map(async (integration) => { + const integrationInstance = await createIntegrationAsync(integration); + await integrationInstance.pauseQueueAsync(); + }), + ); + }), pauseItem: protectedProcedure - .unstable_concat(createDownloadClientIntegrationMiddleware("interact")) + .concat(createDownloadClientIntegrationMiddleware("interact")) .input(z.object({ item: downloadClientItemSchema })) .mutation(async ({ ctx, input }) => { await Promise.all( @@ -85,18 +83,16 @@ export const downloadsRouter = createTRPCRouter({ }), ); }), - resume: protectedProcedure - .unstable_concat(createDownloadClientIntegrationMiddleware("interact")) - .mutation(async ({ ctx }) => { - await Promise.all( - ctx.integrations.map(async (integration) => { - const integrationInstance = await createIntegrationAsync(integration); - await integrationInstance.resumeQueueAsync(); - }), - ); - }), + resume: protectedProcedure.concat(createDownloadClientIntegrationMiddleware("interact")).mutation(async ({ ctx }) => { + await Promise.all( + ctx.integrations.map(async (integration) => { + const integrationInstance = await createIntegrationAsync(integration); + await integrationInstance.resumeQueueAsync(); + }), + ); + }), resumeItem: protectedProcedure - .unstable_concat(createDownloadClientIntegrationMiddleware("interact")) + .concat(createDownloadClientIntegrationMiddleware("interact")) .input(z.object({ item: downloadClientItemSchema })) .mutation(async ({ ctx, input }) => { await Promise.all( @@ -107,7 +103,7 @@ export const downloadsRouter = createTRPCRouter({ ); }), deleteItem: protectedProcedure - .unstable_concat(createDownloadClientIntegrationMiddleware("interact")) + .concat(createDownloadClientIntegrationMiddleware("interact")) .input(z.object({ item: downloadClientItemSchema, fromDisk: z.boolean() })) .mutation(async ({ ctx, input }) => { await Promise.all( diff --git a/packages/api/src/router/widgets/health-monitoring.ts b/packages/api/src/router/widgets/health-monitoring.ts index a51cfed2e..c260bef5c 100644 --- a/packages/api/src/router/widgets/health-monitoring.ts +++ b/packages/api/src/router/widgets/health-monitoring.ts @@ -9,7 +9,7 @@ import { createTRPCRouter, publicProcedure } from "../../trpc"; export const healthMonitoringRouter = createTRPCRouter({ getSystemHealthStatus: publicProcedure - .unstable_concat(createManyIntegrationMiddleware("query", "openmediavault", "dashDot")) + .concat(createManyIntegrationMiddleware("query", "openmediavault", "dashDot")) .query(async ({ ctx }) => { return await Promise.all( ctx.integrations.map(async (integration) => { @@ -26,7 +26,7 @@ export const healthMonitoringRouter = createTRPCRouter({ ); }), subscribeSystemHealthStatus: publicProcedure - .unstable_concat(createManyIntegrationMiddleware("query", "openmediavault", "dashDot")) + .concat(createManyIntegrationMiddleware("query", "openmediavault", "dashDot")) .subscription(({ ctx }) => { return observable<{ integrationId: string; healthInfo: HealthMonitoring; timestamp: Date }>((emit) => { const unsubscribes: (() => void)[] = []; @@ -49,14 +49,14 @@ export const healthMonitoringRouter = createTRPCRouter({ }); }), getClusterHealthStatus: publicProcedure - .unstable_concat(createOneIntegrationMiddleware("query", "proxmox")) + .concat(createOneIntegrationMiddleware("query", "proxmox")) .query(async ({ ctx }) => { const innerHandler = clusterInfoRequestHandler.handler(ctx.integration, {}); const { data } = await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: false }); return data; }), subscribeClusterHealthStatus: publicProcedure - .unstable_concat(createOneIntegrationMiddleware("query", "proxmox")) + .concat(createOneIntegrationMiddleware("query", "proxmox")) .subscription(({ ctx }) => { return observable((emit) => { const unsubscribes: (() => void)[] = []; diff --git a/packages/api/src/router/widgets/indexer-manager.ts b/packages/api/src/router/widgets/indexer-manager.ts index 74bffb2af..b5b9ea6be 100644 --- a/packages/api/src/router/widgets/indexer-manager.ts +++ b/packages/api/src/router/widgets/indexer-manager.ts @@ -16,7 +16,7 @@ const createIndexerManagerIntegrationMiddleware = (action: IntegrationAction) => export const indexerManagerRouter = createTRPCRouter({ getIndexersStatus: publicProcedure - .unstable_concat(createIndexerManagerIntegrationMiddleware("query")) + .concat(createIndexerManagerIntegrationMiddleware("query")) .query(async ({ ctx }) => { const results = await Promise.all( ctx.integrations.map(async (integration) => { @@ -33,7 +33,7 @@ export const indexerManagerRouter = createTRPCRouter({ }), subscribeIndexersStatus: publicProcedure - .unstable_concat(createIndexerManagerIntegrationMiddleware("query")) + .concat(createIndexerManagerIntegrationMiddleware("query")) .subscription(({ ctx }) => { return observable<{ integrationId: string; indexers: Indexer[] }>((emit) => { const unsubscribes: (() => void)[] = []; @@ -55,7 +55,7 @@ export const indexerManagerRouter = createTRPCRouter({ }); }), testAllIndexers: protectedProcedure - .unstable_concat(createIndexerManagerIntegrationMiddleware("interact")) + .concat(createIndexerManagerIntegrationMiddleware("interact")) .mutation(async ({ ctx }) => { await Promise.all( ctx.integrations.map(async (integration) => { diff --git a/packages/api/src/router/widgets/media-requests.ts b/packages/api/src/router/widgets/media-requests.ts index 4af50a583..69fe09fce 100644 --- a/packages/api/src/router/widgets/media-requests.ts +++ b/packages/api/src/router/widgets/media-requests.ts @@ -12,7 +12,7 @@ import { createTRPCRouter, protectedProcedure, publicProcedure } from "../../trp export const mediaRequestsRouter = createTRPCRouter({ getLatestRequests: publicProcedure - .unstable_concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("mediaRequest"))) + .concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("mediaRequest"))) .query(async ({ ctx }) => { const results = await Promise.all( ctx.integrations.map(async (integration) => { @@ -39,7 +39,7 @@ export const mediaRequestsRouter = createTRPCRouter({ }); }), subscribeToLatestRequests: publicProcedure - .unstable_concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("mediaRequest"))) + .concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("mediaRequest"))) .subscription(({ ctx }) => { return observable<{ integrationId: string; @@ -65,7 +65,7 @@ export const mediaRequestsRouter = createTRPCRouter({ }); }), getStats: publicProcedure - .unstable_concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("mediaRequest"))) + .concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("mediaRequest"))) .query(async ({ ctx }) => { const results = await Promise.all( ctx.integrations.map(async (integration) => { @@ -91,7 +91,7 @@ export const mediaRequestsRouter = createTRPCRouter({ }; }), answerRequest: protectedProcedure - .unstable_concat(createOneIntegrationMiddleware("interact", ...getIntegrationKindsByCategory("mediaRequest"))) + .concat(createOneIntegrationMiddleware("interact", ...getIntegrationKindsByCategory("mediaRequest"))) .input(z.object({ requestId: z.number(), answer: z.enum(["approve", "decline"]) })) .mutation(async ({ ctx: { integration }, input }) => { const integrationInstance = await createIntegrationAsync(integration); diff --git a/packages/api/src/router/widgets/media-server.ts b/packages/api/src/router/widgets/media-server.ts index 50d52e594..9ab3025c3 100644 --- a/packages/api/src/router/widgets/media-server.ts +++ b/packages/api/src/router/widgets/media-server.ts @@ -14,7 +14,7 @@ const createMediaServerIntegrationMiddleware = (action: IntegrationAction) => export const mediaServerRouter = createTRPCRouter({ getCurrentStreams: publicProcedure - .unstable_concat(createMediaServerIntegrationMiddleware("query")) + .concat(createMediaServerIntegrationMiddleware("query")) .input(z.object({ showOnlyPlaying: z.boolean() })) .query(async ({ ctx, input }) => { return await Promise.all( @@ -32,7 +32,7 @@ export const mediaServerRouter = createTRPCRouter({ ); }), subscribeToCurrentStreams: publicProcedure - .unstable_concat(createMediaServerIntegrationMiddleware("query")) + .concat(createMediaServerIntegrationMiddleware("query")) .input(z.object({ showOnlyPlaying: z.boolean() })) .subscription(({ ctx, input }) => { return observable<{ integrationId: string; data: StreamSession[] }>((emit) => { diff --git a/packages/api/src/router/widgets/media-transcoding.ts b/packages/api/src/router/widgets/media-transcoding.ts index c2f0b0d9b..81e65625e 100644 --- a/packages/api/src/router/widgets/media-transcoding.ts +++ b/packages/api/src/router/widgets/media-transcoding.ts @@ -11,7 +11,7 @@ const createIndexerManagerIntegrationMiddleware = (action: IntegrationAction) => export const mediaTranscodingRouter = createTRPCRouter({ getDataAsync: publicProcedure - .unstable_concat(createIndexerManagerIntegrationMiddleware("query")) + .concat(createIndexerManagerIntegrationMiddleware("query")) .input(paginatedSchema.pick({ page: true, pageSize: true })) .query(async ({ ctx, input }) => { const innerHandler = mediaTranscodingRequestHandler.handler(ctx.integration, { diff --git a/packages/api/src/router/widgets/network-controller.ts b/packages/api/src/router/widgets/network-controller.ts index 662a8063b..053bd0dcb 100644 --- a/packages/api/src/router/widgets/network-controller.ts +++ b/packages/api/src/router/widgets/network-controller.ts @@ -12,7 +12,7 @@ import { createTRPCRouter, publicProcedure } from "../../trpc"; export const networkControllerRouter = createTRPCRouter({ summary: publicProcedure - .unstable_concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("networkController"))) + .concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("networkController"))) .query(async ({ ctx }) => { const results = await Promise.all( ctx.integrations.map(async (integration) => { @@ -34,7 +34,7 @@ export const networkControllerRouter = createTRPCRouter({ }), subscribeToSummary: publicProcedure - .unstable_concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("networkController"))) + .concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("networkController"))) .subscription(({ ctx }) => { return observable<{ integration: Modify }>; diff --git a/packages/api/src/router/widgets/smart-home.ts b/packages/api/src/router/widgets/smart-home.ts index 2294bf6bb..65b44535b 100644 --- a/packages/api/src/router/widgets/smart-home.ts +++ b/packages/api/src/router/widgets/smart-home.ts @@ -15,14 +15,14 @@ const createSmartHomeIntegrationMiddleware = (action: IntegrationAction) => export const smartHomeRouter = createTRPCRouter({ entityState: publicProcedure .input(z.object({ entityId: z.string() })) - .unstable_concat(createSmartHomeIntegrationMiddleware("query")) + .concat(createSmartHomeIntegrationMiddleware("query")) .query(async ({ ctx: { integration }, input }) => { const innerHandler = smartHomeEntityStateRequestHandler.handler(integration, { entityId: input.entityId }); const { data } = await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: false }); return data; }), subscribeEntityState: publicProcedure - .unstable_concat(createSmartHomeIntegrationMiddleware("query")) + .concat(createSmartHomeIntegrationMiddleware("query")) .input(z.object({ entityId: z.string() })) .subscription(({ input, ctx }) => { return observable<{ @@ -42,7 +42,7 @@ export const smartHomeRouter = createTRPCRouter({ }); }), switchEntity: protectedProcedure - .unstable_concat(createSmartHomeIntegrationMiddleware("interact")) + .concat(createSmartHomeIntegrationMiddleware("interact")) .input(z.object({ entityId: z.string() })) .mutation(async ({ ctx: { integration }, input }) => { const client = await createIntegrationAsync(integration); @@ -54,7 +54,7 @@ export const smartHomeRouter = createTRPCRouter({ return success; }), executeAutomation: protectedProcedure - .unstable_concat(createSmartHomeIntegrationMiddleware("interact")) + .concat(createSmartHomeIntegrationMiddleware("interact")) .input(z.object({ automationId: z.string() })) .mutation(async ({ ctx: { integration }, input }) => { const client = await createIntegrationAsync(integration); diff --git a/packages/api/src/server.ts b/packages/api/src/server.ts index 08fc5e1e3..b172e2e84 100644 --- a/packages/api/src/server.ts +++ b/packages/api/src/server.ts @@ -1,9 +1,12 @@ import { cache } from "react"; import { headers } from "next/headers"; +import { createTRPCOptionsProxy } from "@trpc/tanstack-react-query"; -import { createCaller, createTRPCContext } from "@homarr/api"; +import { appRouter, createCaller, createTRPCContext } from "@homarr/api"; import { auth } from "@homarr/auth/next"; +import { makeQueryClient } from "./shared"; + /** * This wraps the `createTRPCContext` helper and provides the required context for the tRPC API when * handling a tRPC call from a React Server Component. @@ -19,3 +22,12 @@ const createContext = cache(async () => { }); export const api = createCaller(createContext); + +// IMPORTANT: Create a stable getter for the query client that +// will return the same client during the same request. +export const getQueryClient = cache(makeQueryClient); +export const trpc = createTRPCOptionsProxy({ + ctx: createContext, + router: appRouter, + queryClient: getQueryClient, +}); diff --git a/packages/api/src/shared.ts b/packages/api/src/shared.ts index b08f09893..4ef9b7a4f 100644 --- a/packages/api/src/shared.ts +++ b/packages/api/src/shared.ts @@ -1,3 +1,5 @@ +import { defaultShouldDehydrateQuery, QueryClient } from "@tanstack/react-query"; + /** * Creates a headers callback for a given source * It will set the x-trpc-source header and cookies if needed @@ -51,3 +53,16 @@ export const trpcPath = "/api/trpc"; export function getTrpcUrl() { return `${getBaseUrl()}${trpcPath}`; } + +export const makeQueryClient = () => { + return new QueryClient({ + defaultOptions: { + queries: { + staleTime: 5 * 1000, + }, + dehydrate: { + shouldDehydrateQuery: (query) => defaultShouldDehydrateQuery(query) || query.state.status === "pending", + }, + }, + }); +}; diff --git a/packages/auth/package.json b/packages/auth/package.json index 3fbc2d8f8..aa8234320 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -37,7 +37,6 @@ "ldapts": "7.4.0", "next": "15.3.1", "next-auth": "5.0.0-beta.27", - "pretty-print-error": "^1.1.2", "react": "19.1.0", "react-dom": "19.1.0", "zod": "^3.24.3" diff --git a/packages/common/src/cookie.ts b/packages/common/src/cookie.ts index fc2e5df9e..68f35ad4f 100644 --- a/packages/common/src/cookie.ts +++ b/packages/common/src/cookie.ts @@ -1,22 +1,8 @@ import type { CookieSerializeOptions } from "cookie"; -import { serialize } from "cookie"; +import { parse, serialize } from "cookie"; export function parseCookies(cookieString: string) { - const list: Record = {}; - const cookieHeader = cookieString; - if (!cookieHeader) return list; - - cookieHeader.split(";").forEach(function (cookie) { - const items = cookie.split("="); - let name = items.shift(); - name = name?.trim(); - if (!name) return; - const value = items.join("=").trim(); - if (!value) return; - list[name] = decodeURIComponent(value); - }); - - return list; + return parse(cookieString); } export function setClientCookie(name: string, value: string, options: CookieSerializeOptions = {}) { diff --git a/packages/common/src/test/url.spec.ts b/packages/common/src/test/url.spec.ts new file mode 100644 index 000000000..eafee07dd --- /dev/null +++ b/packages/common/src/test/url.spec.ts @@ -0,0 +1,40 @@ +import { describe, expect, test } from "vitest"; + +import { getPortFromUrl } from "../url"; + +describe("getPortFromUrl", () => { + test.each([ + [80, "http"], + [443, "https"], + ])("should return %s for %s protocol without port", (expectedPort, protocol) => { + // Arrange + const url = new URL(`${protocol}://example.com`); + + // Act + const port = getPortFromUrl(url); + + // Assert + expect(port).toBe(expectedPort); + }); + test.each([["http"], ["https"], ["anything"]])("should return the specified port for %s protocol", (protocol) => { + // Arrange + const expectedPort = 3000; + const url = new URL(`${protocol}://example.com:${expectedPort}`); + + // Act + const port = getPortFromUrl(url); + + // Assert + expect(port).toBe(expectedPort); + }); + test("should throw an error for unsupported protocol", () => { + // Arrange + const url = new URL("ftp://example.com"); + + // Act + const act = () => getPortFromUrl(url); + + // Act & Assert + expect(act).toThrowError("Unsupported protocol: ftp:"); + }); +}); diff --git a/packages/common/src/url.ts b/packages/common/src/url.ts index 8efbb968c..0bdf322fe 100644 --- a/packages/common/src/url.ts +++ b/packages/common/src/url.ts @@ -21,3 +21,20 @@ export const extractBaseUrlFromHeaders = ( return `${protocol}://${host}`; }; + +export const getPortFromUrl = (url: URL): number => { + const port = url.port; + if (port) { + return Number(port); + } + + if (url.protocol === "https:") { + return 443; + } + + if (url.protocol === "http:") { + return 80; + } + + throw new Error(`Unsupported protocol: ${url.protocol}`); +}; diff --git a/packages/db/package.json b/packages/db/package.json index 0da93a3de..1435a3cf0 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -44,9 +44,9 @@ "@homarr/env": "workspace:^0.1.0", "@homarr/log": "workspace:^0.1.0", "@homarr/server-settings": "workspace:^0.1.0", - "@mantine/core": "^7.17.5", + "@mantine/core": "^7.17.7", "@paralleldrive/cuid2": "^2.2.2", - "@testcontainers/mysql": "^10.24.2", + "@testcontainers/mysql": "^10.25.0", "better-sqlite3": "^11.9.1", "dotenv": "^16.5.0", "drizzle-kit": "^0.31.0", @@ -62,7 +62,7 @@ "dotenv-cli": "^8.0.0", "eslint": "^9.25.1", "prettier": "^3.5.3", - "tsx": "4.19.3", + "tsx": "4.19.4", "typescript": "^5.8.3" } } diff --git a/packages/definitions/src/docs/homarr-docs-sitemap.ts b/packages/definitions/src/docs/homarr-docs-sitemap.ts index 875c441b2..67cc3c132 100644 --- a/packages/definitions/src/docs/homarr-docs-sitemap.ts +++ b/packages/definitions/src/docs/homarr-docs-sitemap.ts @@ -113,6 +113,8 @@ export type HomarrDocumentationPath = | "/docs/tags/proxmox" | "/docs/tags/proxy" | "/docs/tags/puid" + | "/docs/tags/releases" + | "/docs/tags/repositories" | "/docs/tags/responsive" | "/docs/tags/roles" | "/docs/tags/rss" @@ -212,6 +214,7 @@ export type HomarrDocumentationPath = | "/docs/widgets/media-server" | "/docs/widgets/minecraft-server-status" | "/docs/widgets/notebook" + | "/docs/widgets/releases" | "/docs/widgets/rss" | "/docs/widgets/stocks" | "/docs/widgets/video" diff --git a/packages/env/package.json b/packages/env/package.json index 26653a7cd..a01106c92 100644 --- a/packages/env/package.json +++ b/packages/env/package.json @@ -23,7 +23,7 @@ }, "prettier": "@homarr/prettier-config", "dependencies": { - "@t3-oss/env-nextjs": "^0.13.0", + "@t3-oss/env-nextjs": "^0.13.4", "zod": "^3.24.3" }, "devDependencies": { diff --git a/packages/form/package.json b/packages/form/package.json index 911a85970..67c8f8698 100644 --- a/packages/form/package.json +++ b/packages/form/package.json @@ -26,7 +26,7 @@ "@homarr/common": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/form": "^7.17.5", + "@mantine/form": "^7.17.7", "zod": "^3.24.3" }, "devDependencies": { diff --git a/packages/forms-collection/package.json b/packages/forms-collection/package.json index 6272b02fb..6cfc2b224 100644 --- a/packages/forms-collection/package.json +++ b/packages/forms-collection/package.json @@ -29,7 +29,7 @@ "@homarr/notifications": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^7.17.5", + "@mantine/core": "^7.17.7", "react": "19.1.0", "zod": "^3.24.3" }, diff --git a/packages/integrations/src/interfaces/media-requests/media-request.ts b/packages/integrations/src/interfaces/media-requests/media-request.ts index 7c90c15d8..c22302159 100644 --- a/packages/integrations/src/interfaces/media-requests/media-request.ts +++ b/packages/integrations/src/interfaces/media-requests/media-request.ts @@ -48,6 +48,7 @@ export enum MediaRequestStatus { Approved = 2, Declined = 3, Failed = 4, + Completed = 5, } export enum MediaAvailability { diff --git a/packages/integrations/src/unifi-controller/unifi-controller-integration.ts b/packages/integrations/src/unifi-controller/unifi-controller-integration.ts index 4d5233762..1c4ed7959 100644 --- a/packages/integrations/src/unifi-controller/unifi-controller-integration.ts +++ b/packages/integrations/src/unifi-controller/unifi-controller-integration.ts @@ -1,6 +1,8 @@ import type { SiteStats } from "node-unifi"; import { Controller } from "node-unifi"; +import { getPortFromUrl } from "@homarr/common"; + import { Integration } from "../base/integration"; import type { NetworkControllerSummaryIntegration } from "../interfaces/network-controller-summary/network-controller-summary-integration"; import type { NetworkControllerSummary } from "../interfaces/network-controller-summary/network-controller-summary-types"; @@ -42,20 +44,16 @@ export class UnifiControllerIntegration extends Integration implements NetworkCo } private async createControllerClientAsync() { - const portString = new URL(this.integration.url).port; - const port = Number.isInteger(portString) ? Number(portString) : undefined; - const hostname = new URL(this.integration.url).hostname; + const url = new URL(this.integration.url); const client = new Controller({ - host: hostname, - // @ts-expect-error the URL construction is incorrect and does not append the required / at the end: https://github.com/jens-maus/node-unifi/blob/05665e8f82a900a15a9ea8b1071750b29825b3bc/unifi.js#L56, https://github.com/jens-maus/node-unifi/blob/05665e8f82a900a15a9ea8b1071750b29825b3bc/unifi.js#L95 - port: port === undefined ? "/" : `${port}/`, + host: url.hostname, + port: getPortFromUrl(url), sslverify: false, // TODO: implement a "ignore certificate toggle", see https://github.com/homarr-labs/homarr/issues/2553 username: this.getSecretValue("username"), password: this.getSecretValue("password"), }); - // Object.defineProperty(client, '_baseurl', { value: url }); await client.login(this.getSecretValue("username"), this.getSecretValue("password"), null); return client; } diff --git a/packages/modals-collection/package.json b/packages/modals-collection/package.json index b3be401ad..1563287d1 100644 --- a/packages/modals-collection/package.json +++ b/packages/modals-collection/package.json @@ -33,7 +33,7 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^7.17.5", + "@mantine/core": "^7.17.7", "@tabler/icons-react": "^3.31.0", "dayjs": "^1.11.13", "next": "15.3.1", diff --git a/packages/modals/package.json b/packages/modals/package.json index adc64aba4..cdb1e5b4b 100644 --- a/packages/modals/package.json +++ b/packages/modals/package.json @@ -24,8 +24,8 @@ "dependencies": { "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", - "@mantine/core": "^7.17.5", - "@mantine/hooks": "^7.17.5", + "@mantine/core": "^7.17.7", + "@mantine/hooks": "^7.17.7", "react": "19.1.0" }, "devDependencies": { diff --git a/packages/notifications/package.json b/packages/notifications/package.json index 5176ad0a4..8b93c4271 100644 --- a/packages/notifications/package.json +++ b/packages/notifications/package.json @@ -24,7 +24,7 @@ "prettier": "@homarr/prettier-config", "dependencies": { "@homarr/ui": "workspace:^0.1.0", - "@mantine/notifications": "^7.17.5", + "@mantine/notifications": "^7.17.7", "@tabler/icons-react": "^3.31.0" }, "devDependencies": { diff --git a/packages/old-import/package.json b/packages/old-import/package.json index cb0630e0f..640590033 100644 --- a/packages/old-import/package.json +++ b/packages/old-import/package.json @@ -37,8 +37,8 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^7.17.5", - "@mantine/hooks": "^7.17.5", + "@mantine/core": "^7.17.7", + "@mantine/hooks": "^7.17.7", "adm-zip": "0.5.16", "next": "15.3.1", "react": "19.1.0", diff --git a/packages/ping/package.json b/packages/ping/package.json index 089c0f336..1dec8055d 100644 --- a/packages/ping/package.json +++ b/packages/ping/package.json @@ -24,8 +24,7 @@ "dependencies": { "@homarr/certificates": "workspace:^0.1.0", "@homarr/common": "workspace:^0.1.0", - "@homarr/log": "workspace:^0.1.0", - "pretty-print-error": "^1.1.2" + "@homarr/log": "workspace:^0.1.0" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/request-handler/package.json b/packages/request-handler/package.json index 468f3a561..379dad834 100644 --- a/packages/request-handler/package.json +++ b/packages/request-handler/package.json @@ -31,7 +31,6 @@ "@homarr/redis": "workspace:^0.1.0", "dayjs": "^1.11.13", "octokit": "^4.1.3", - "pretty-print-error": "^1.1.2", "superjson": "2.2.2" }, "devDependencies": { diff --git a/packages/settings/package.json b/packages/settings/package.json index 4d041bc8c..2a8d0d51c 100644 --- a/packages/settings/package.json +++ b/packages/settings/package.json @@ -5,7 +5,8 @@ "license": "Apache-2.0", "type": "module", "exports": { - ".": "./index.ts" + ".": "./index.ts", + "./creator": "./src/creator.ts" }, "typesVersions": { "*": { @@ -25,7 +26,7 @@ "@homarr/api": "workspace:^0.1.0", "@homarr/db": "workspace:^0.1.0", "@homarr/server-settings": "workspace:^0.1.0", - "@mantine/dates": "^7.17.5", + "@mantine/dates": "^7.17.7", "next": "15.3.1", "react": "19.1.0", "react-dom": "19.1.0" diff --git a/packages/settings/src/context.tsx b/packages/settings/src/context.tsx index d7b71aa72..df3fd927c 100644 --- a/packages/settings/src/context.tsx +++ b/packages/settings/src/context.tsx @@ -2,30 +2,9 @@ import type { PropsWithChildren } from "react"; import { createContext, useContext } from "react"; -import type { DayOfWeek } from "@mantine/dates"; -import type { RouterOutputs } from "@homarr/api"; -import type { User } from "@homarr/db/schema"; -import type { ServerSettings } from "@homarr/server-settings"; - -export type SettingsContextProps = Pick< - User, - | "firstDayOfWeek" - | "defaultSearchEngineId" - | "homeBoardId" - | "mobileHomeBoardId" - | "openSearchInNewTab" - | "pingIconsEnabled" -> & - Pick; - -interface PublicServerSettings { - search: Pick; - board: Pick< - ServerSettings["board"], - "homeBoardId" | "mobileHomeBoardId" | "enableStatusByDefault" | "forceDisableStatus" - >; -} +import type { PublicServerSettings, SettingsContextProps, UserSettings } from "./creator"; +import { createSettings } from "./creator"; const SettingsContext = createContext(null); @@ -33,22 +12,9 @@ export const SettingsProvider = ({ user, serverSettings, children, -}: PropsWithChildren<{ user: RouterOutputs["user"]["getById"] | null; serverSettings: PublicServerSettings }>) => { +}: PropsWithChildren<{ user: UserSettings | null; serverSettings: PublicServerSettings }>) => { return ( - - {children} - + {children} ); }; diff --git a/packages/settings/src/creator.ts b/packages/settings/src/creator.ts new file mode 100644 index 000000000..5eb348930 --- /dev/null +++ b/packages/settings/src/creator.ts @@ -0,0 +1,48 @@ +import type { User } from "@homarr/db/schema"; +import type { ServerSettings } from "@homarr/server-settings"; + +export type SettingsContextProps = Pick< + User, + | "firstDayOfWeek" + | "defaultSearchEngineId" + | "homeBoardId" + | "mobileHomeBoardId" + | "openSearchInNewTab" + | "pingIconsEnabled" +> & + Pick; + +export interface PublicServerSettings { + search: Pick; + board: Pick< + ServerSettings["board"], + "homeBoardId" | "mobileHomeBoardId" | "enableStatusByDefault" | "forceDisableStatus" + >; +} + +export type UserSettings = Pick< + User, + | "firstDayOfWeek" + | "defaultSearchEngineId" + | "homeBoardId" + | "mobileHomeBoardId" + | "openSearchInNewTab" + | "pingIconsEnabled" +>; + +export const createSettings = ({ + user, + serverSettings, +}: { + user: UserSettings | null; + serverSettings: PublicServerSettings; +}) => ({ + defaultSearchEngineId: user?.defaultSearchEngineId ?? serverSettings.search.defaultSearchEngineId, + openSearchInNewTab: user?.openSearchInNewTab ?? true, + firstDayOfWeek: user?.firstDayOfWeek ?? (1 as const), + homeBoardId: user?.homeBoardId ?? serverSettings.board.homeBoardId, + mobileHomeBoardId: user?.mobileHomeBoardId ?? serverSettings.board.mobileHomeBoardId, + pingIconsEnabled: user?.pingIconsEnabled ?? false, + enableStatusByDefault: serverSettings.board.enableStatusByDefault, + forceDisableStatus: serverSettings.board.forceDisableStatus, +}); diff --git a/packages/spotlight/package.json b/packages/spotlight/package.json index 75f60a161..785d36fc7 100644 --- a/packages/spotlight/package.json +++ b/packages/spotlight/package.json @@ -33,9 +33,9 @@ "@homarr/settings": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", - "@mantine/core": "^7.17.5", - "@mantine/hooks": "^7.17.5", - "@mantine/spotlight": "^7.17.5", + "@mantine/core": "^7.17.7", + "@mantine/hooks": "^7.17.7", + "@mantine/spotlight": "^7.17.7", "@tabler/icons-react": "^3.31.0", "jotai": "^2.12.3", "next": "15.3.1", diff --git a/packages/translation/src/lang/ca.json b/packages/translation/src/lang/ca.json index 4aa40daa1..156413786 100644 --- a/packages/translation/src/lang/ca.json +++ b/packages/translation/src/lang/ca.json @@ -1949,7 +1949,8 @@ "pending": "", "approved": "", "declined": "", - "failed": "" + "failed": "", + "completed": "" }, "toBeDetermined": "" }, diff --git a/packages/translation/src/lang/cn.json b/packages/translation/src/lang/cn.json index a0948ed1b..227fb722a 100644 --- a/packages/translation/src/lang/cn.json +++ b/packages/translation/src/lang/cn.json @@ -1949,7 +1949,8 @@ "pending": "待处理", "approved": "已批准", "declined": "已拒绝", - "failed": "失败" + "failed": "失败", + "completed": "" }, "toBeDetermined": "待定" }, diff --git a/packages/translation/src/lang/cs.json b/packages/translation/src/lang/cs.json index d302e052c..2201dbe4f 100644 --- a/packages/translation/src/lang/cs.json +++ b/packages/translation/src/lang/cs.json @@ -1949,7 +1949,8 @@ "pending": "", "approved": "", "declined": "", - "failed": "" + "failed": "", + "completed": "" }, "toBeDetermined": "" }, diff --git a/packages/translation/src/lang/da.json b/packages/translation/src/lang/da.json index f356cfb31..ed750b39b 100644 --- a/packages/translation/src/lang/da.json +++ b/packages/translation/src/lang/da.json @@ -1949,7 +1949,8 @@ "pending": "Afventende", "approved": "Godkendt", "declined": "Afvist", - "failed": "Mislykket" + "failed": "Mislykket", + "completed": "" }, "toBeDetermined": "TBD" }, diff --git a/packages/translation/src/lang/de-CH.json b/packages/translation/src/lang/de-CH.json index 1ba32bc31..3c8922019 100644 --- a/packages/translation/src/lang/de-CH.json +++ b/packages/translation/src/lang/de-CH.json @@ -1949,7 +1949,8 @@ "pending": "Ausstehend", "approved": "Bestätigt", "declined": "Abgelehnt", - "failed": "Fehlgeschlagen" + "failed": "Fehlgeschlagen", + "completed": "" }, "toBeDetermined": "Noch Festzulegen" }, diff --git a/packages/translation/src/lang/de.json b/packages/translation/src/lang/de.json index fec7e4006..3a4c2b320 100644 --- a/packages/translation/src/lang/de.json +++ b/packages/translation/src/lang/de.json @@ -618,11 +618,11 @@ "title": "" }, "create": { - "title": "", + "title": "Neue App erstellen", "description": "", "action": "" }, - "add": "" + "add": "App hinzufügen" } }, "integration": { @@ -995,7 +995,7 @@ }, "option": { "title": { - "label": "" + "label": "Titel" }, "borderColor": { "label": "Rahmenfarbe" @@ -1949,7 +1949,8 @@ "pending": "Ausstehend", "approved": "Bestätigt", "declined": "Abgelehnt", - "failed": "Fehlgeschlagen" + "failed": "Fehlgeschlagen", + "completed": "" }, "toBeDetermined": "Noch Festzulegen" }, diff --git a/packages/translation/src/lang/el.json b/packages/translation/src/lang/el.json index aec17b181..8f400ba6e 100644 --- a/packages/translation/src/lang/el.json +++ b/packages/translation/src/lang/el.json @@ -1949,7 +1949,8 @@ "pending": "", "approved": "", "declined": "", - "failed": "" + "failed": "", + "completed": "" }, "toBeDetermined": "" }, diff --git a/packages/translation/src/lang/en-gb.json b/packages/translation/src/lang/en-gb.json index cd542f2c7..8e758a660 100644 --- a/packages/translation/src/lang/en-gb.json +++ b/packages/translation/src/lang/en-gb.json @@ -1949,7 +1949,8 @@ "pending": "", "approved": "", "declined": "", - "failed": "" + "failed": "", + "completed": "" }, "toBeDetermined": "" }, diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index abb0b0b74..515ff45b5 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -1949,7 +1949,8 @@ "pending": "Pending", "approved": "Approved", "declined": "Declined", - "failed": "Failed" + "failed": "Failed", + "completed": "Completed" }, "toBeDetermined": "TBD" }, diff --git a/packages/translation/src/lang/es.json b/packages/translation/src/lang/es.json index 9e07a8918..c3c8f0b52 100644 --- a/packages/translation/src/lang/es.json +++ b/packages/translation/src/lang/es.json @@ -3,7 +3,7 @@ "step": { "start": { "title": "Bienvenido a Homarr", - "subtitle": "", + "subtitle": "Comencemos con la configuración de tu instancia de Homar.", "description": "Para empezar, por favor, seleccione cómo desea configurar su instancia de Homarr.", "action": { "scratch": "Empezar de cero", @@ -27,18 +27,18 @@ "description": "" }, "boardSelection": { - "title": "", + "title": "Se encontraron {count} tableros", "description": "", "action": { - "selectAll": "", - "unselectAll": "" + "selectAll": "Seleccionar todo", + "unselectAll": "Deseleccionar todo" } }, "summary": { "title": "Importar resumen", "description": "", "action": { - "import": "" + "import": "Confirmar la importación y continuar" }, "entities": { "apps": "Aplicaciones", @@ -78,24 +78,24 @@ }, "group": { "title": "", - "subtitle": "", + "subtitle": "Especifique el grupo que debe ser usado para usuarios externos.", "form": { "name": { - "label": "", - "description": "" + "label": "Nombre del grupo", + "description": "El nombre debe coincidir con el grupo de administración del proveedor externo" } } }, "settings": { "title": "Ajustes", - "subtitle": "" + "subtitle": "Configurar ajustes del servidor." }, "finish": { "title": "", "subtitle": "", "description": "", "action": { - "goToBoard": "", + "goToBoard": "Ir al tablero {name}", "createBoard": "", "inviteUser": "", "docs": "" @@ -109,7 +109,7 @@ "name": "Usuario", "page": { "login": { - "title": "", + "title": "Inicia sesión en tu cuenta", "subtitle": "" }, "invite": { @@ -160,12 +160,12 @@ } }, "error": { - "usernameTaken": "" + "usernameTaken": "Nombre de usuario ya está ocupado" }, "action": { "login": { "label": "Iniciar sesión", - "labelWith": "", + "labelWith": "Iniciar sesión con {provider}", "notification": { "success": { "title": "", @@ -229,10 +229,10 @@ "changeFirstDayOfWeek": { "notification": { "success": { - "message": "" + "message": "Primer día de la semana cambiado con éxito" }, "error": { - "message": "" + "message": "No se ha podido cambiar el primer día de la semana" } } }, @@ -251,7 +251,7 @@ "label": "", "notification": { "success": { - "message": "" + "message": "La imagen ha sido cambiada con éxito" }, "error": { "message": "No se puede cambiar la imagen" @@ -267,7 +267,7 @@ "confirm": "Por favor, confirma que deseas eliminar esta imagen", "notification": { "success": { - "message": "" + "message": "Imagen eliminada con éxito" }, "error": { "message": "" @@ -278,7 +278,7 @@ "editProfile": { "notification": { "success": { - "message": "" + "message": "Perfil actualizado con éxito" }, "error": { "message": "" @@ -288,10 +288,10 @@ "delete": { "label": "", "description": "", - "confirm": "" + "confirm": "¿Estás seguro de que quieres eliminar el usuario {username} con sus preferencias?" }, "select": { - "label": "", + "label": "Seleccionar usuario", "notFound": "" }, "transfer": { @@ -1949,7 +1949,8 @@ "pending": "", "approved": "", "declined": "", - "failed": "" + "failed": "", + "completed": "" }, "toBeDetermined": "" }, diff --git a/packages/translation/src/lang/et.json b/packages/translation/src/lang/et.json index 1a020f9e6..91ec10167 100644 --- a/packages/translation/src/lang/et.json +++ b/packages/translation/src/lang/et.json @@ -1949,7 +1949,8 @@ "pending": "", "approved": "", "declined": "", - "failed": "" + "failed": "", + "completed": "" }, "toBeDetermined": "" }, diff --git a/packages/translation/src/lang/fr.json b/packages/translation/src/lang/fr.json index ecea4bead..930f1325e 100644 --- a/packages/translation/src/lang/fr.json +++ b/packages/translation/src/lang/fr.json @@ -1949,7 +1949,8 @@ "pending": "En attente", "approved": "Approuvé", "declined": "Refusé", - "failed": "Échec" + "failed": "Échec", + "completed": "" }, "toBeDetermined": "À déterminer" }, diff --git a/packages/translation/src/lang/he.json b/packages/translation/src/lang/he.json index 6bd735463..e3ef91a1d 100644 --- a/packages/translation/src/lang/he.json +++ b/packages/translation/src/lang/he.json @@ -1949,7 +1949,8 @@ "pending": "ממתין", "approved": "אושר", "declined": "נדחה", - "failed": "נכשל" + "failed": "נכשל", + "completed": "" }, "toBeDetermined": "ייקבע בהמשך" }, diff --git a/packages/translation/src/lang/hr.json b/packages/translation/src/lang/hr.json index 27b337b96..f0b7eba92 100644 --- a/packages/translation/src/lang/hr.json +++ b/packages/translation/src/lang/hr.json @@ -1949,7 +1949,8 @@ "pending": "", "approved": "", "declined": "", - "failed": "" + "failed": "", + "completed": "" }, "toBeDetermined": "" }, diff --git a/packages/translation/src/lang/hu.json b/packages/translation/src/lang/hu.json index 7e2d46b8b..54131ba6e 100644 --- a/packages/translation/src/lang/hu.json +++ b/packages/translation/src/lang/hu.json @@ -1949,7 +1949,8 @@ "pending": "", "approved": "", "declined": "", - "failed": "" + "failed": "", + "completed": "" }, "toBeDetermined": "" }, diff --git a/packages/translation/src/lang/it.json b/packages/translation/src/lang/it.json index 541e57e4b..f73900801 100644 --- a/packages/translation/src/lang/it.json +++ b/packages/translation/src/lang/it.json @@ -1949,7 +1949,8 @@ "pending": "", "approved": "", "declined": "", - "failed": "" + "failed": "", + "completed": "" }, "toBeDetermined": "" }, diff --git a/packages/translation/src/lang/ja.json b/packages/translation/src/lang/ja.json index f6330dc96..aaff155f1 100644 --- a/packages/translation/src/lang/ja.json +++ b/packages/translation/src/lang/ja.json @@ -1949,7 +1949,8 @@ "pending": "", "approved": "", "declined": "", - "failed": "" + "failed": "", + "completed": "" }, "toBeDetermined": "" }, diff --git a/packages/translation/src/lang/ko.json b/packages/translation/src/lang/ko.json index 7a27d7b70..9a5158984 100644 --- a/packages/translation/src/lang/ko.json +++ b/packages/translation/src/lang/ko.json @@ -1949,7 +1949,8 @@ "pending": "", "approved": "", "declined": "", - "failed": "" + "failed": "", + "completed": "" }, "toBeDetermined": "" }, diff --git a/packages/translation/src/lang/lt.json b/packages/translation/src/lang/lt.json index fb31462b5..cf5ba5ff3 100644 --- a/packages/translation/src/lang/lt.json +++ b/packages/translation/src/lang/lt.json @@ -1949,7 +1949,8 @@ "pending": "", "approved": "", "declined": "", - "failed": "" + "failed": "", + "completed": "" }, "toBeDetermined": "" }, diff --git a/packages/translation/src/lang/lv.json b/packages/translation/src/lang/lv.json index 4b6dc8a7c..4a15babdc 100644 --- a/packages/translation/src/lang/lv.json +++ b/packages/translation/src/lang/lv.json @@ -1949,7 +1949,8 @@ "pending": "", "approved": "", "declined": "", - "failed": "" + "failed": "", + "completed": "" }, "toBeDetermined": "" }, diff --git a/packages/translation/src/lang/nl.json b/packages/translation/src/lang/nl.json index 485a02a2a..3c4fa3edd 100644 --- a/packages/translation/src/lang/nl.json +++ b/packages/translation/src/lang/nl.json @@ -1949,7 +1949,8 @@ "pending": "In afwachting", "approved": "Goedgekeurd", "declined": "Afgewezen", - "failed": "Mislukt" + "failed": "Mislukt", + "completed": "" }, "toBeDetermined": "TBD" }, diff --git a/packages/translation/src/lang/no.json b/packages/translation/src/lang/no.json index 8a2ed690d..303c9ddd1 100644 --- a/packages/translation/src/lang/no.json +++ b/packages/translation/src/lang/no.json @@ -1949,7 +1949,8 @@ "pending": "Venter", "approved": "Godkjent", "declined": "Avslått", - "failed": "Feilet" + "failed": "Feilet", + "completed": "" }, "toBeDetermined": "Uavklart" }, diff --git a/packages/translation/src/lang/pl.json b/packages/translation/src/lang/pl.json index 9300733ae..8c9c742ec 100644 --- a/packages/translation/src/lang/pl.json +++ b/packages/translation/src/lang/pl.json @@ -1949,7 +1949,8 @@ "pending": "", "approved": "", "declined": "", - "failed": "" + "failed": "", + "completed": "" }, "toBeDetermined": "" }, diff --git a/packages/translation/src/lang/pt.json b/packages/translation/src/lang/pt.json index cf2b9eb9c..942ebba58 100644 --- a/packages/translation/src/lang/pt.json +++ b/packages/translation/src/lang/pt.json @@ -1949,7 +1949,8 @@ "pending": "", "approved": "", "declined": "", - "failed": "" + "failed": "", + "completed": "" }, "toBeDetermined": "" }, diff --git a/packages/translation/src/lang/ro.json b/packages/translation/src/lang/ro.json index be4262e06..a740be322 100644 --- a/packages/translation/src/lang/ro.json +++ b/packages/translation/src/lang/ro.json @@ -1949,7 +1949,8 @@ "pending": "", "approved": "", "declined": "", - "failed": "" + "failed": "", + "completed": "" }, "toBeDetermined": "" }, diff --git a/packages/translation/src/lang/ru.json b/packages/translation/src/lang/ru.json index 1e8b652d0..23200adca 100644 --- a/packages/translation/src/lang/ru.json +++ b/packages/translation/src/lang/ru.json @@ -1949,7 +1949,8 @@ "pending": "В ожидании", "approved": "Одобрено", "declined": "Отклонено", - "failed": "Ошибка" + "failed": "Ошибка", + "completed": "" }, "toBeDetermined": "Будет определено позже" }, diff --git a/packages/translation/src/lang/sk.json b/packages/translation/src/lang/sk.json index e4f9f8458..b5b516216 100644 --- a/packages/translation/src/lang/sk.json +++ b/packages/translation/src/lang/sk.json @@ -1949,7 +1949,8 @@ "pending": "", "approved": "", "declined": "", - "failed": "" + "failed": "", + "completed": "" }, "toBeDetermined": "TBD" }, diff --git a/packages/translation/src/lang/sl.json b/packages/translation/src/lang/sl.json index be48e3fc4..bde793786 100644 --- a/packages/translation/src/lang/sl.json +++ b/packages/translation/src/lang/sl.json @@ -1949,7 +1949,8 @@ "pending": "", "approved": "", "declined": "", - "failed": "" + "failed": "", + "completed": "" }, "toBeDetermined": "" }, diff --git a/packages/translation/src/lang/sv.json b/packages/translation/src/lang/sv.json index 57b741617..8c6a24d94 100644 --- a/packages/translation/src/lang/sv.json +++ b/packages/translation/src/lang/sv.json @@ -1949,7 +1949,8 @@ "pending": "", "approved": "", "declined": "", - "failed": "" + "failed": "", + "completed": "" }, "toBeDetermined": "" }, diff --git a/packages/translation/src/lang/tr.json b/packages/translation/src/lang/tr.json index e171acc0d..ad558a247 100644 --- a/packages/translation/src/lang/tr.json +++ b/packages/translation/src/lang/tr.json @@ -1949,7 +1949,8 @@ "pending": "Bekleyen", "approved": "Onaylandı", "declined": "Reddedildi", - "failed": "Başarısız" + "failed": "Başarısız", + "completed": "" }, "toBeDetermined": "-Yapım Aşamasında-" }, @@ -2053,83 +2054,83 @@ } }, "releases": { - "name": "", - "description": "", + "name": "Sürümler", + "description": "Verilen sürüm düzenli ifadesiyle, belirtilen depoların mevcut sürümlerinin bir listesini gösterir.", "option": { "newReleaseWithin": { - "label": "", - "description": "" + "label": "Yeni Sürüm Süresi (içinde)", + "description": "Kullanım örneği: 1w (1 hafta), 10m (10 ay). Kabul edilen birim türleri: h (saat), d (gün), w (hafta), m (ay), y (yıl). Yeni sürümleri vurgulamak istemiyorsanız boş bırakın." }, "staleReleaseWithin": { - "label": "", - "description": "" + "label": "Eski Sürüm Süresi (içinde)", + "description": "Kullanım örneği: 1w (1 hafta), 10m (10 ay). Kabul edilen birim türleri h (saat), d (gün), w (hafta), m (ay), y (yıl). Eski sürümleri vurgulamak istemiyorsanız boş bırakın." }, "showOnlyHighlighted": { - "label": "", - "description": "" + "label": "Yalnızca Vurgulananları Göster", + "description": "Yalnızca yeni veya eski sürümleri göster. Yukarıdaki açıklamaya göre." }, "showDetails": { - "label": "" + "label": "Ayrıntıları Göster" }, "repositories": { - "label": "", + "label": "Depolar", "addRRepository": { - "label": "" + "label": "Depo Ekle" }, "provider": { - "label": "" + "label": "Sağlayıcı" }, "identifier": { - "label": "", - "placeholder": "" + "label": "Tanımlayıcı", + "placeholder": "Ad veya Sahip/Ad" }, "versionFilter": { - "label": "", + "label": "Sürüm Filtresi", "prefix": { - "label": "" + "label": "Önek" }, "precision": { - "label": "", + "label": "Hassasiyet", "options": { - "none": "" + "none": "Hiçbiri" } }, "suffix": { - "label": "" + "label": "Sonek" }, "regex": { - "label": "" + "label": "Düzenli İfade" } }, "edit": { - "label": "" + "label": "Düzenle" }, "editForm": { - "title": "", + "title": "Depoyu Düzenle", "cancel": { - "label": "" + "label": "Vazgeç" }, "confirm": { - "label": "" + "label": "Onayla" } }, "example": { - "label": "" + "label": "Örnek" }, - "invalid": "" + "invalid": "Geçersiz depo tanımı, lütfen değerleri kontrol edin" } }, - "not-found": "", - "pre-release": "", - "archived": "", - "forked": "", - "starsCount": "", - "forksCount": "", - "issuesCount": "", - "openProjectPage": "", - "openReleasePage": "", - "releaseDescription": "", - "created": "" + "not-found": "Bulunamadı", + "pre-release": "Ön Sürüm", + "archived": "Arşivlenmiş", + "forked": "Çatallanmış", + "starsCount": "Yıldızlar", + "forksCount": "Çatallar", + "issuesCount": "Sorunları Aç", + "openProjectPage": "Proje Sayfasını Aç", + "openReleasePage": "Sürüm Sayfasını Aç", + "releaseDescription": "Sürüm Açıklaması", + "created": "Oluşturuldu" }, "networkControllerSummary": { "option": {}, diff --git a/packages/translation/src/lang/uk.json b/packages/translation/src/lang/uk.json index 290d99c89..1e904af56 100644 --- a/packages/translation/src/lang/uk.json +++ b/packages/translation/src/lang/uk.json @@ -1949,7 +1949,8 @@ "pending": "", "approved": "", "declined": "", - "failed": "" + "failed": "", + "completed": "" }, "toBeDetermined": "" }, diff --git a/packages/translation/src/lang/vi.json b/packages/translation/src/lang/vi.json index b4cd99203..b349e18da 100644 --- a/packages/translation/src/lang/vi.json +++ b/packages/translation/src/lang/vi.json @@ -1949,7 +1949,8 @@ "pending": "", "approved": "", "declined": "", - "failed": "" + "failed": "", + "completed": "" }, "toBeDetermined": "" }, diff --git a/packages/translation/src/lang/zh.json b/packages/translation/src/lang/zh.json index 1fbaf03a0..94e10751c 100644 --- a/packages/translation/src/lang/zh.json +++ b/packages/translation/src/lang/zh.json @@ -1093,7 +1093,7 @@ "label": "集成" }, "title": { - "label": "" + "label": "標題" }, "customCssClasses": { "label": "自定義 CSS html" @@ -1771,8 +1771,8 @@ "description": "顯示當前多媒體伺服器的串流", "option": { "showOnlyPlaying": { - "label": "", - "description": "" + "label": "只顯示目前播放中的項目", + "description": "停用此功能將無法在 Plex 上運作" } }, "items": { @@ -1949,7 +1949,8 @@ "pending": "待處理", "approved": "已批准", "declined": "已拒絕", - "failed": "失敗" + "failed": "失敗", + "completed": "已完成" }, "toBeDetermined": "多媒體請求狀態" }, @@ -2053,83 +2054,83 @@ } }, "releases": { - "name": "", - "description": "", + "name": "版本發佈", + "description": "顯示符合指定版本規則的儲存庫及其目前版本列表", "option": { "newReleaseWithin": { - "label": "", - "description": "" + "label": "新版本發布於", + "description": "使用範例:1w(1週)、10m(10個月)。接受的單位類型有:h(小時)、d(天)、w(週)、m(個月)、y(年)。若留空,則不會特別標示新版本" }, "staleReleaseWithin": { - "label": "", - "description": "" + "label": "過時版本範圍內", + "description": "使用範例:1w(1週)、10m(10個月)。接受的單位類型有:h(小時)、d(天)、w(週)、m(個月)、y(年)。若留空,則不會特別標示過時版本" }, "showOnlyHighlighted": { - "label": "", - "description": "" + "label": "只顯示已標示的項目", + "description": "只顯示新版本或過時版本。如上所述" }, "showDetails": { - "label": "" + "label": "顯示詳情" }, "repositories": { - "label": "", + "label": "儲存庫", "addRRepository": { - "label": "" + "label": "新增儲存庫" }, "provider": { - "label": "" + "label": "提供者" }, "identifier": { - "label": "", - "placeholder": "" + "label": "識別碼", + "placeholder": "名稱或擁有者/名稱" }, "versionFilter": { - "label": "", + "label": "版本篩選", "prefix": { - "label": "" + "label": "前綴" }, "precision": { - "label": "", + "label": "精確度", "options": { - "none": "" + "none": "無" } }, "suffix": { - "label": "" + "label": "後綴" }, "regex": { - "label": "" + "label": "正則表達式" } }, "edit": { - "label": "" + "label": "編輯" }, "editForm": { - "title": "", + "title": "編輯儲存庫", "cancel": { - "label": "" + "label": "取消" }, "confirm": { - "label": "" + "label": "確認" } }, "example": { - "label": "" + "label": "範例" }, - "invalid": "" + "invalid": "無效的儲存庫定義,請檢查值的設定" } }, - "not-found": "", - "pre-release": "", - "archived": "", - "forked": "", - "starsCount": "", - "forksCount": "", - "issuesCount": "", - "openProjectPage": "", - "openReleasePage": "", - "releaseDescription": "", - "created": "" + "not-found": "未找到", + "pre-release": "預發佈", + "archived": "已歸檔", + "forked": "已分支", + "starsCount": "星標", + "forksCount": "分支數", + "issuesCount": "開放問題", + "openProjectPage": "開啟專案頁面", + "openReleasePage": "開啟發布葉面", + "releaseDescription": "版本描述", + "created": "已創建" }, "networkControllerSummary": { "option": {}, @@ -3888,8 +3889,8 @@ "title": "尚無憑證" }, "invalid": { - "title": "", - "description": "" + "title": "無效的證書", + "description": "解析證書失敗" }, "expires": "到期 {when}" } diff --git a/packages/ui/package.json b/packages/ui/package.json index b9fe8d380..ca696a46f 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -29,9 +29,9 @@ "@homarr/log": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^7.17.5", - "@mantine/dates": "^7.17.5", - "@mantine/hooks": "^7.17.5", + "@mantine/core": "^7.17.7", + "@mantine/dates": "^7.17.7", + "@mantine/hooks": "^7.17.7", "@tabler/icons-react": "^3.31.0", "mantine-react-table": "2.0.0-beta.9", "next": "15.3.1", diff --git a/packages/widgets/package.json b/packages/widgets/package.json index d6203804c..3dcbb4636 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -7,7 +7,8 @@ "exports": { ".": "./index.ts", "./errors": "./src/errors/component.tsx", - "./modals": "./src/modals/index.ts" + "./modals": "./src/modals/index.ts", + "./prefetch": "./src/prefetch.ts" }, "typesVersions": { "*": { @@ -35,6 +36,7 @@ "@homarr/form": "workspace:^0.1.0", "@homarr/forms-collection": "workspace:^0.1.0", "@homarr/integrations": "workspace:^0.1.0", + "@homarr/log": "workspace:^0.1.0", "@homarr/modals": "workspace:^0.1.0", "@homarr/modals-collection": "workspace:^0.1.0", "@homarr/notifications": "workspace:^0.1.0", @@ -45,25 +47,25 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/charts": "^7.17.5", - "@mantine/core": "^7.17.5", - "@mantine/hooks": "^7.17.5", + "@mantine/charts": "^7.17.7", + "@mantine/core": "^7.17.7", + "@mantine/hooks": "^7.17.7", "@tabler/icons-react": "^3.31.0", - "@tiptap/extension-color": "2.11.7", - "@tiptap/extension-highlight": "2.11.7", - "@tiptap/extension-image": "2.11.7", - "@tiptap/extension-link": "^2.11.7", - "@tiptap/extension-table": "2.11.7", - "@tiptap/extension-table-cell": "2.11.7", - "@tiptap/extension-table-header": "2.11.7", - "@tiptap/extension-table-row": "2.11.7", - "@tiptap/extension-task-item": "2.11.7", - "@tiptap/extension-task-list": "2.11.7", - "@tiptap/extension-text-align": "2.11.7", - "@tiptap/extension-text-style": "2.11.7", - "@tiptap/extension-underline": "2.11.7", - "@tiptap/react": "^2.11.7", - "@tiptap/starter-kit": "^2.11.7", + "@tiptap/extension-color": "2.11.9", + "@tiptap/extension-highlight": "2.11.9", + "@tiptap/extension-image": "2.11.9", + "@tiptap/extension-link": "^2.11.9", + "@tiptap/extension-table": "2.11.9", + "@tiptap/extension-table-cell": "2.11.9", + "@tiptap/extension-table-header": "2.11.9", + "@tiptap/extension-table-row": "2.11.9", + "@tiptap/extension-task-item": "2.11.9", + "@tiptap/extension-task-list": "2.11.9", + "@tiptap/extension-text-align": "2.11.9", + "@tiptap/extension-text-style": "2.11.9", + "@tiptap/extension-underline": "2.11.9", + "@tiptap/react": "^2.11.9", + "@tiptap/starter-kit": "^2.11.9", "clsx": "^2.1.1", "dayjs": "^1.11.13", "mantine-react-table": "2.0.0-beta.9", diff --git a/packages/widgets/src/app/prefetch.ts b/packages/widgets/src/app/prefetch.ts new file mode 100644 index 000000000..c1d148a6b --- /dev/null +++ b/packages/widgets/src/app/prefetch.ts @@ -0,0 +1,23 @@ +import { trpc } from "@homarr/api/server"; +import { db, inArray } from "@homarr/db"; +import { apps } from "@homarr/db/schema"; +import { logger } from "@homarr/log"; + +import type { Prefetch } from "../definition"; + +const prefetchAllAsync: Prefetch<"app"> = async (queryClient, items) => { + const appIds = items.map((item) => item.options.appId); + const distinctAppIds = [...new Set(appIds)]; + + const dbApps = await db.query.apps.findMany({ + where: inArray(apps.id, distinctAppIds), + }); + + for (const app of dbApps) { + queryClient.setQueryData(trpc.app.byId.queryKey({ id: app.id }), app); + } + + logger.info(`Successfully prefetched ${dbApps.length} apps for app widget`); +}; + +export default prefetchAllAsync; diff --git a/packages/widgets/src/bookmarks/prefetch.ts b/packages/widgets/src/bookmarks/prefetch.ts new file mode 100644 index 000000000..1da24c6ed --- /dev/null +++ b/packages/widgets/src/bookmarks/prefetch.ts @@ -0,0 +1,30 @@ +import { trpc } from "@homarr/api/server"; +import { db, inArray } from "@homarr/db"; +import { apps } from "@homarr/db/schema"; +import { logger } from "@homarr/log"; + +import type { Prefetch } from "../definition"; + +const prefetchAllAsync: Prefetch<"bookmarks"> = async (queryClient, items) => { + const appIds = items.flatMap((item) => item.options.items); + const distinctAppIds = [...new Set(appIds)]; + + const dbApps = await db.query.apps.findMany({ + where: inArray(apps.id, distinctAppIds), + }); + + for (const item of items) { + if (item.options.items.length === 0) { + continue; + } + + queryClient.setQueryData( + trpc.app.byIds.queryKey(item.options.items), + dbApps.filter((app) => item.options.items.includes(app.id)), + ); + } + + logger.info(`Successfully prefetched ${dbApps.length} apps for bookmarks`); +}; + +export default prefetchAllAsync; diff --git a/packages/widgets/src/definition.ts b/packages/widgets/src/definition.ts index 85e2de5ad..f7df8c95d 100644 --- a/packages/widgets/src/definition.ts +++ b/packages/widgets/src/definition.ts @@ -1,9 +1,10 @@ import type { LoaderComponent } from "next/dynamic"; +import type { QueryClient } from "@tanstack/react-query"; import type { DefaultErrorData } from "@trpc/server/unstable-core-do-not-import"; import type { IntegrationKind, WidgetKind } from "@homarr/definitions"; import type { ServerSettings } from "@homarr/server-settings"; -import type { SettingsContextProps } from "@homarr/settings"; +import type { SettingsContextProps } from "@homarr/settings/creator"; import type { stringOrTranslation } from "@homarr/translation"; import type { TablerIcon } from "@homarr/ui"; @@ -21,6 +22,15 @@ const createWithDynamicImport = componentLoader, }); +export type PrefetchLoader = () => Promise<{ default: Prefetch }>; +export type Prefetch = ( + queryClient: QueryClient, + items: { + options: inferOptionsFromCreator>; + integrationIds: string[]; + }[], +) => Promise; + export const createWidgetDefinition = ( kind: TKind, definition: TDefinition, diff --git a/packages/widgets/src/index.tsx b/packages/widgets/src/index.tsx index 36cdcfa9f..df1701741 100644 --- a/packages/widgets/src/index.tsx +++ b/packages/widgets/src/index.tsx @@ -5,7 +5,7 @@ import { Center, Loader as UiLoader } from "@mantine/core"; import { objectEntries } from "@homarr/common"; import type { IntegrationKind, WidgetKind } from "@homarr/definitions"; -import type { SettingsContextProps } from "@homarr/settings"; +import type { SettingsContextProps } from "@homarr/settings/creator"; import * as app from "./app"; import * as bookmarks from "./bookmarks"; diff --git a/packages/widgets/src/media-requests/list/component.tsx b/packages/widgets/src/media-requests/list/component.tsx index 58499ecd4..24c58e4ac 100644 --- a/packages/widgets/src/media-requests/list/component.tsx +++ b/packages/widgets/src/media-requests/list/component.tsx @@ -215,6 +215,7 @@ const statusMapping = { [MediaRequestStatus.Approved]: { color: "green", label: (t) => t("approved") }, [MediaRequestStatus.Declined]: { color: "red", label: (t) => t("declined") }, [MediaRequestStatus.Failed]: { color: "red", label: (t) => t("failed") }, + [MediaRequestStatus.Completed]: { color: "green", label: (t) => t("completed") }, } satisfies Record< MediaRequestStatus, { diff --git a/packages/widgets/src/modals/widget-edit-modal.tsx b/packages/widgets/src/modals/widget-edit-modal.tsx index 4d0f172bb..8e6c56c8a 100644 --- a/packages/widgets/src/modals/widget-edit-modal.tsx +++ b/packages/widgets/src/modals/widget-edit-modal.tsx @@ -8,7 +8,7 @@ import { objectEntries } from "@homarr/common"; import type { WidgetKind } from "@homarr/definitions"; import { zodResolver } from "@homarr/form"; import { createModal, useModalAction } from "@homarr/modals"; -import type { SettingsContextProps } from "@homarr/settings"; +import type { SettingsContextProps } from "@homarr/settings/creator"; import { useI18n } from "@homarr/translation/client"; import { zodErrorMap } from "@homarr/validation/form/i18n"; diff --git a/packages/widgets/src/prefetch.ts b/packages/widgets/src/prefetch.ts new file mode 100644 index 000000000..590237cc9 --- /dev/null +++ b/packages/widgets/src/prefetch.ts @@ -0,0 +1,45 @@ +import { cache } from "react"; +import type { QueryClient } from "@tanstack/react-query"; + +import { db } from "@homarr/db"; +import { getServerSettingsAsync } from "@homarr/db/queries"; +import type { WidgetKind } from "@homarr/definitions"; +import { createSettings } from "@homarr/settings/creator"; + +import { reduceWidgetOptionsWithDefaultValues } from "."; +import prefetchForApps from "./app/prefetch"; +import prefetchForBookmarks from "./bookmarks/prefetch"; +import type { Prefetch, WidgetOptionsRecordOf } from "./definition"; +import type { inferOptionsFromCreator } from "./options"; + +const cachedGetServerSettingsAsync = cache(getServerSettingsAsync); + +const prefetchCallbacks: Partial<{ + [TKind in WidgetKind]: Prefetch; +}> = { + bookmarks: prefetchForBookmarks, + app: prefetchForApps, +}; + +export const prefetchForKindAsync = async ( + kind: TKind, + queryClient: QueryClient, + items: { + options: inferOptionsFromCreator>; + integrationIds: string[]; + }[], +) => { + const callback = prefetchCallbacks[kind]; + if (!callback) { + return; + } + + const serverSettings = await cachedGetServerSettingsAsync(db); + + const itemsWithDefaultOptions = items.map((item) => ({ + ...item, + options: reduceWidgetOptionsWithDefaultValues(kind, createSettings({ user: null, serverSettings }), item.options), + })); + + await callback(queryClient, itemsWithDefaultOptions as never[]); +}; diff --git a/packages/widgets/src/releases/component.tsx b/packages/widgets/src/releases/component.tsx index 603b3db17..d6a465f7c 100644 --- a/packages/widgets/src/releases/component.tsx +++ b/packages/widgets/src/releases/component.tsx @@ -141,7 +141,6 @@ export default function ReleasesWidget({ options }: WidgetComponentProps<"releas [classes.active ?? ""]: isActive, })} p="xs" - wrap="nowrap" onClick={() => toggleExpandedRepository(repository.identifier)} > - + {repository.identifier} @@ -163,7 +162,7 @@ export default function ReleasesWidget({ options }: WidgetComponentProps<"releas - + name !== "stack" && name !== "message" - ); - if (propNames.length > 0) { -- const props = {}; -+ const props: Record = {}; - propNames.forEach((name) => { -- props[name] = err[name]; -+ props[name] = (err as Record)[name]; - }); - - let propertiesString; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f4d6d5b11..092681fff 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,11 +7,6 @@ settings: overrides: proxmox-api>undici: 7.8.0 -patchedDependencies: - pretty-print-error: - hash: d1432e02330bdaf8359eb0e54528a74ed6b7e5cce6bb65c13310c82e34fd1e4d - path: patches/pretty-print-error.patch - importers: .: @@ -39,10 +34,10 @@ importers: version: 14.0.3(semantic-release@24.2.3(typescript@5.8.3)) '@turbo/gen': specifier: ^2.5.2 - version: 2.5.2(@types/node@22.15.2)(typescript@5.8.3) + version: 2.5.2(@types/node@22.15.3)(typescript@5.8.3) '@vitejs/plugin-react': specifier: ^4.4.1 - version: 4.4.1(vite@5.4.5(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) + version: 4.4.1(vite@5.4.5(@types/node@22.15.3)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) '@vitest/coverage-v8': specifier: ^3.1.2 version: 3.1.2(vitest@3.1.2) @@ -65,8 +60,8 @@ importers: specifier: ^24.2.3 version: 24.2.3(typescript@5.8.3) testcontainers: - specifier: ^10.24.2 - version: 10.24.2 + specifier: ^10.25.0 + version: 10.25.0 turbo: specifier: ^2.5.2 version: 2.5.2 @@ -75,10 +70,10 @@ importers: version: 5.8.3 vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.8.3)(vite@5.4.5(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) + version: 5.1.4(typescript@5.8.3)(vite@5.4.5(@types/node@22.15.3)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) vitest: specifier: ^3.1.2 - version: 3.1.2(@types/debug@4.1.12)(@types/node@22.15.2)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + version: 3.1.2(@types/debug@4.1.12)(@types/node@22.15.3)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) apps/nextjs: dependencies: @@ -182,23 +177,23 @@ importers: specifier: workspace:^0.1.0 version: link:../../packages/widgets '@mantine/colors-generator': - specifier: ^7.17.5 - version: 7.17.5(chroma-js@3.1.2) + specifier: ^7.17.7 + version: 7.17.7(chroma-js@3.1.2) '@mantine/core': - specifier: ^7.17.5 - version: 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.7 + version: 7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@mantine/dropzone': - specifier: ^7.17.5 - version: 7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.7 + version: 7.17.7(@mantine/core@7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.7(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@mantine/hooks': - specifier: ^7.17.5 - version: 7.17.5(react@19.1.0) + specifier: ^7.17.7 + version: 7.17.7(react@19.1.0) '@mantine/modals': - specifier: ^7.17.5 - version: 7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.7 + version: 7.17.7(@mantine/core@7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.7(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@mantine/tiptap': - specifier: ^7.17.5 - version: 7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(@tiptap/extension-link@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7))(@tiptap/react@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.7 + version: 7.17.7(@mantine/core@7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.7(react@19.1.0))(@tiptap/extension-link@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9))(@tiptap/react@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@million/lint': specifier: 1.0.14 version: 1.0.14(rollup@4.21.3)(webpack-sources@3.2.3) @@ -206,26 +201,26 @@ importers: specifier: ^3.31.0 version: 3.31.0(react@19.1.0) '@tanstack/react-query': - specifier: ^5.74.4 - version: 5.74.4(react@19.1.0) + specifier: ^5.75.1 + version: 5.75.1(react@19.1.0) '@tanstack/react-query-devtools': - specifier: ^5.74.4 - version: 5.74.4(@tanstack/react-query@5.74.4(react@19.1.0))(react@19.1.0) + specifier: ^5.75.1 + version: 5.75.1(@tanstack/react-query@5.75.1(react@19.1.0))(react@19.1.0) '@tanstack/react-query-next-experimental': - specifier: ^5.74.4 - version: 5.74.4(@tanstack/react-query@5.74.4(react@19.1.0))(next@15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react@19.1.0) + specifier: ^5.75.1 + version: 5.75.1(@tanstack/react-query@5.75.1(react@19.1.0))(next@15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react@19.1.0) '@trpc/client': - specifier: ^11.1.1 - version: 11.1.1(@trpc/server@11.1.1(typescript@5.8.3))(typescript@5.8.3) + specifier: ^11.1.2 + version: 11.1.2(@trpc/server@11.1.2(typescript@5.8.3))(typescript@5.8.3) '@trpc/next': - specifier: ^11.1.1 - version: 11.1.1(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.1(@trpc/server@11.1.1(typescript@5.8.3))(typescript@5.8.3))(@trpc/react-query@11.1.1(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.1(@trpc/server@11.1.1(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.1(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3))(@trpc/server@11.1.1(typescript@5.8.3))(next@15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) + specifier: ^11.1.2 + version: 11.1.2(@tanstack/react-query@5.75.1(react@19.1.0))(@trpc/client@11.1.2(@trpc/server@11.1.2(typescript@5.8.3))(typescript@5.8.3))(@trpc/react-query@11.1.2(@tanstack/react-query@5.75.1(react@19.1.0))(@trpc/client@11.1.2(@trpc/server@11.1.2(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.2(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3))(@trpc/server@11.1.2(typescript@5.8.3))(next@15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) '@trpc/react-query': - specifier: ^11.1.1 - version: 11.1.1(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.1(@trpc/server@11.1.1(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.1(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) + specifier: ^11.1.2 + version: 11.1.2(@tanstack/react-query@5.75.1(react@19.1.0))(@trpc/client@11.1.2(@trpc/server@11.1.2(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.2(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) '@trpc/server': - specifier: ^11.1.1 - version: 11.1.1(typescript@5.8.3) + specifier: ^11.1.2 + version: 11.1.2(typescript@5.8.3) '@xterm/addon-canvas': specifier: ^0.7.0 version: 0.7.0(@xterm/xterm@5.5.0) @@ -258,7 +253,7 @@ importers: version: 2.12.3(@types/react@19.1.2)(react@19.1.0) mantine-react-table: specifier: 2.0.0-beta.9 - version: 2.0.0-beta.9(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/dates@7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(@tabler/icons-react@3.31.0(react@19.1.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 2.0.0-beta.9(@mantine/core@7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/dates@7.17.7(@mantine/core@7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.7(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.7(react@19.1.0))(@tabler/icons-react@3.31.0(react@19.1.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) next: specifier: 15.3.1 version: 15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) @@ -309,8 +304,8 @@ importers: specifier: 3.1.1 version: 3.1.1 '@types/node': - specifier: ^22.15.2 - version: 22.15.2 + specifier: ^22.15.3 + version: 22.15.3 '@types/prismjs': specifier: ^1.26.5 version: 1.26.5 @@ -318,8 +313,8 @@ importers: specifier: 19.1.2 version: 19.1.2 '@types/react-dom': - specifier: 19.1.2 - version: 19.1.2(@types/react@19.1.2) + specifier: 19.1.3 + version: 19.1.3(@types/react@19.1.2) '@types/swagger-ui-react': specifier: ^5.18.0 version: 5.18.0 @@ -409,8 +404,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript '@types/node': - specifier: ^22.15.2 - version: 22.15.2 + specifier: ^22.15.3 + version: 22.15.3 dotenv-cli: specifier: ^8.0.0 version: 8.0.0 @@ -421,8 +416,8 @@ importers: specifier: ^3.5.3 version: 3.5.3 tsx: - specifier: 4.19.3 - version: 4.19.3 + specifier: 4.19.4 + version: 4.19.4 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -457,8 +452,8 @@ importers: specifier: ^16.5.0 version: 16.5.0 tsx: - specifier: 4.19.3 - version: 4.19.3 + specifier: 4.19.4 + version: 4.19.4 ws: specifier: ^8.18.1 version: 8.18.1 @@ -581,24 +576,27 @@ importers: '@kubernetes/client-node': specifier: ^1.1.2 version: 1.1.2 + '@tanstack/react-query': + specifier: ^5.75.1 + version: 5.75.1(react@19.1.0) '@trpc/client': - specifier: ^11.1.1 - version: 11.1.1(@trpc/server@11.1.1(typescript@5.8.3))(typescript@5.8.3) + specifier: ^11.1.2 + version: 11.1.2(@trpc/server@11.1.2(typescript@5.8.3))(typescript@5.8.3) '@trpc/react-query': - specifier: ^11.1.1 - version: 11.1.1(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.1(@trpc/server@11.1.1(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.1(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) + specifier: ^11.1.2 + version: 11.1.2(@tanstack/react-query@5.75.1(react@19.1.0))(@trpc/client@11.1.2(@trpc/server@11.1.2(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.2(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) '@trpc/server': - specifier: ^11.1.1 - version: 11.1.1(typescript@5.8.3) + specifier: ^11.1.2 + version: 11.1.2(typescript@5.8.3) + '@trpc/tanstack-react-query': + specifier: ^11.1.2 + version: 11.1.2(@tanstack/react-query@5.75.1(react@19.1.0))(@trpc/client@11.1.2(@trpc/server@11.1.2(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.2(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) lodash.clonedeep: specifier: ^4.5.0 version: 4.5.0 next: specifier: 15.3.1 version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) - pretty-print-error: - specifier: ^1.1.2 - version: 1.1.2(patch_hash=d1432e02330bdaf8359eb0e54528a74ed6b7e5cce6bb65c13310c82e34fd1e4d) react: specifier: 19.1.0 version: 19.1.0 @@ -610,7 +608,7 @@ importers: version: 2.2.2 trpc-to-openapi: specifier: ^2.2.0 - version: 2.2.0(@trpc/server@11.1.1(typescript@5.8.3))(zod-openapi@2.19.0(zod@3.24.3))(zod@3.24.3) + version: 2.2.0(@trpc/server@11.1.2(typescript@5.8.3))(zod-openapi@2.19.0(zod@3.24.3))(zod@3.24.3) zod: specifier: ^3.24.3 version: 3.24.3 @@ -678,9 +676,6 @@ importers: next-auth: specifier: 5.0.0-beta.27 version: 5.0.0-beta.27(next@15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react@19.1.0) - pretty-print-error: - specifier: ^1.1.2 - version: 1.1.2(patch_hash=d1432e02330bdaf8359eb0e54528a74ed6b7e5cce6bb65c13310c82e34fd1e4d) react: specifier: 19.1.0 version: 19.1.0 @@ -1024,14 +1019,14 @@ importers: specifier: workspace:^0.1.0 version: link:../server-settings '@mantine/core': - specifier: ^7.17.5 - version: 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.7 + version: 7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@paralleldrive/cuid2': specifier: ^2.2.2 version: 2.2.2 '@testcontainers/mysql': - specifier: ^10.24.2 - version: 10.24.2 + specifier: ^10.25.0 + version: 10.25.0 better-sqlite3: specifier: ^11.9.1 version: 11.9.1 @@ -1073,8 +1068,8 @@ importers: specifier: ^3.5.3 version: 3.5.3 tsx: - specifier: 4.19.3 - version: 4.19.3 + specifier: 4.19.4 + version: 4.19.4 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -1135,8 +1130,8 @@ importers: packages/env: dependencies: '@t3-oss/env-nextjs': - specifier: ^0.13.0 - version: 0.13.0(arktype@2.1.20)(typescript@5.8.3)(zod@3.24.3) + specifier: ^0.13.4 + version: 0.13.4(arktype@2.1.20)(typescript@5.8.3)(zod@3.24.3) zod: specifier: ^3.24.3 version: 3.24.3 @@ -1169,8 +1164,8 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/form': - specifier: ^7.17.5 - version: 7.17.5(react@19.1.0) + specifier: ^7.17.7 + version: 7.17.7(react@19.1.0) zod: specifier: ^3.24.3 version: 3.24.3 @@ -1215,8 +1210,8 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^7.17.5 - version: 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.7 + version: 7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: specifier: 19.1.0 version: 19.1.0 @@ -1396,11 +1391,11 @@ importers: specifier: workspace:^0.1.0 version: link:../ui '@mantine/core': - specifier: ^7.17.5 - version: 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.7 + version: 7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@mantine/hooks': - specifier: ^7.17.5 - version: 7.17.5(react@19.1.0) + specifier: ^7.17.7 + version: 7.17.7(react@19.1.0) react: specifier: 19.1.0 version: 19.1.0 @@ -1457,8 +1452,8 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^7.17.5 - version: 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.7 + version: 7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@tabler/icons-react': specifier: ^3.31.0 version: 3.31.0(react@19.1.0) @@ -1500,8 +1495,8 @@ importers: specifier: workspace:^0.1.0 version: link:../ui '@mantine/notifications': - specifier: ^7.17.5 - version: 7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.7 + version: 7.17.7(@mantine/core@7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.7(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@tabler/icons-react': specifier: ^3.31.0 version: 3.31.0(react@19.1.0) @@ -1558,11 +1553,11 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^7.17.5 - version: 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.7 + version: 7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@mantine/hooks': - specifier: ^7.17.5 - version: 7.17.5(react@19.1.0) + specifier: ^7.17.7 + version: 7.17.7(react@19.1.0) adm-zip: specifier: 0.5.16 version: 0.5.16 @@ -1640,9 +1635,6 @@ importers: '@homarr/log': specifier: workspace:^0.1.0 version: link:../log - pretty-print-error: - specifier: ^1.1.2 - version: 1.1.2(patch_hash=d1432e02330bdaf8359eb0e54528a74ed6b7e5cce6bb65c13310c82e34fd1e4d) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1726,9 +1718,6 @@ importers: octokit: specifier: ^4.1.3 version: 4.1.3 - pretty-print-error: - specifier: ^1.1.2 - version: 1.1.2(patch_hash=d1432e02330bdaf8359eb0e54528a74ed6b7e5cce6bb65c13310c82e34fd1e4d) superjson: specifier: 2.2.2 version: 2.2.2 @@ -1786,8 +1775,8 @@ importers: specifier: workspace:^0.1.0 version: link:../server-settings '@mantine/dates': - specifier: ^7.17.5 - version: 7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.7 + version: 7.17.7(@mantine/core@7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.7(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) next: specifier: 15.3.1 version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) @@ -1847,14 +1836,14 @@ importers: specifier: workspace:^0.1.0 version: link:../ui '@mantine/core': - specifier: ^7.17.5 - version: 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.7 + version: 7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@mantine/hooks': - specifier: ^7.17.5 - version: 7.17.5(react@19.1.0) + specifier: ^7.17.7 + version: 7.17.7(react@19.1.0) '@mantine/spotlight': - specifier: ^7.17.5 - version: 7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.7 + version: 7.17.7(@mantine/core@7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.7(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@tabler/icons-react': specifier: ^3.31.0 version: 3.31.0(react@19.1.0) @@ -1906,7 +1895,7 @@ importers: version: 4.3.1 mantine-react-table: specifier: 2.0.0-beta.9 - version: 2.0.0-beta.9(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/dates@7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(@tabler/icons-react@3.31.0(react@19.1.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 2.0.0-beta.9(@mantine/core@7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/dates@7.17.7(@mantine/core@7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.7(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.7(react@19.1.0))(@tabler/icons-react@3.31.0(react@19.1.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) next: specifier: 15.3.1 version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) @@ -1954,20 +1943,20 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^7.17.5 - version: 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.7 + version: 7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@mantine/dates': - specifier: ^7.17.5 - version: 7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.7 + version: 7.17.7(@mantine/core@7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.7(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@mantine/hooks': - specifier: ^7.17.5 - version: 7.17.5(react@19.1.0) + specifier: ^7.17.7 + version: 7.17.7(react@19.1.0) '@tabler/icons-react': specifier: ^3.31.0 version: 3.31.0(react@19.1.0) mantine-react-table: specifier: 2.0.0-beta.9 - version: 2.0.0-beta.9(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/dates@7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(@tabler/icons-react@3.31.0(react@19.1.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 2.0.0-beta.9(@mantine/core@7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/dates@7.17.7(@mantine/core@7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.7(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.7(react@19.1.0))(@tabler/icons-react@3.31.0(react@19.1.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) next: specifier: 15.3.1 version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) @@ -2063,6 +2052,9 @@ importers: '@homarr/integrations': specifier: workspace:^0.1.0 version: link:../integrations + '@homarr/log': + specifier: workspace:^0.1.0 + version: link:../log '@homarr/modals': specifier: workspace:^0.1.0 version: link:../modals @@ -2094,62 +2086,62 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/charts': - specifier: ^7.17.5 - version: 7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(recharts@2.15.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0)) + specifier: ^7.17.7 + version: 7.17.7(@mantine/core@7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.7(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(recharts@2.15.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0)) '@mantine/core': - specifier: ^7.17.5 - version: 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.17.7 + version: 7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@mantine/hooks': - specifier: ^7.17.5 - version: 7.17.5(react@19.1.0) + specifier: ^7.17.7 + version: 7.17.7(react@19.1.0) '@tabler/icons-react': specifier: ^3.31.0 version: 3.31.0(react@19.1.0) '@tiptap/extension-color': - specifier: 2.11.7 - version: 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/extension-text-style@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))) + specifier: 2.11.9 + version: 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/extension-text-style@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))) '@tiptap/extension-highlight': - specifier: 2.11.7 - version: 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) + specifier: 2.11.9 + version: 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) '@tiptap/extension-image': - specifier: 2.11.7 - version: 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) + specifier: 2.11.9 + version: 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) '@tiptap/extension-link': - specifier: ^2.11.7 - version: 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7) + specifier: ^2.11.9 + version: 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9) '@tiptap/extension-table': - specifier: 2.11.7 - version: 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7) + specifier: 2.11.9 + version: 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9) '@tiptap/extension-table-cell': - specifier: 2.11.7 - version: 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) + specifier: 2.11.9 + version: 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) '@tiptap/extension-table-header': - specifier: 2.11.7 - version: 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) + specifier: 2.11.9 + version: 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) '@tiptap/extension-table-row': - specifier: 2.11.7 - version: 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) + specifier: 2.11.9 + version: 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) '@tiptap/extension-task-item': - specifier: 2.11.7 - version: 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7) + specifier: 2.11.9 + version: 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9) '@tiptap/extension-task-list': - specifier: 2.11.7 - version: 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) + specifier: 2.11.9 + version: 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) '@tiptap/extension-text-align': - specifier: 2.11.7 - version: 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) + specifier: 2.11.9 + version: 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) '@tiptap/extension-text-style': - specifier: 2.11.7 - version: 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) + specifier: 2.11.9 + version: 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) '@tiptap/extension-underline': - specifier: 2.11.7 - version: 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) + specifier: 2.11.9 + version: 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) '@tiptap/react': - specifier: ^2.11.7 - version: 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^2.11.9 + version: 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@tiptap/starter-kit': - specifier: ^2.11.7 - version: 2.11.7 + specifier: ^2.11.9 + version: 2.11.9 clsx: specifier: ^2.1.1 version: 2.1.1 @@ -2158,7 +2150,7 @@ importers: version: 1.11.13 mantine-react-table: specifier: 2.0.0-beta.9 - version: 2.0.0-beta.9(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/dates@7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(@tabler/icons-react@3.31.0(react@19.1.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 2.0.0-beta.9(@mantine/core@7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/dates@7.17.7(@mantine/core@7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.7(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.7(react@19.1.0))(@tabler/icons-react@3.31.0(react@19.1.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) next: specifier: 15.3.1 version: 15.3.1(@babel/core@7.26.10)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) @@ -2213,7 +2205,7 @@ importers: version: 2.5.2(eslint@9.25.1)(turbo@2.5.2) eslint-plugin-import: specifier: ^2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1) + version: 2.31.0(@typescript-eslint/parser@8.31.1(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1) eslint-plugin-jsx-a11y: specifier: ^6.10.2 version: 6.10.2(eslint@9.25.1) @@ -2224,8 +2216,8 @@ importers: specifier: ^5.2.0 version: 5.2.0(eslint@9.25.1) typescript-eslint: - specifier: ^8.31.0 - version: 8.31.0(eslint@9.25.1)(typescript@5.8.3) + specifier: ^8.31.1 + version: 8.31.1(eslint@9.25.1)(typescript@5.8.3) devDependencies: '@homarr/prettier-config': specifier: workspace:^0.1.0 @@ -2569,12 +2561,6 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.25.0': - resolution: {integrity: sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.25.2': resolution: {integrity: sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==} engines: {node: '>=18'} @@ -2599,12 +2585,6 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.25.0': - resolution: {integrity: sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.25.2': resolution: {integrity: sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==} engines: {node: '>=18'} @@ -2629,12 +2609,6 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.25.0': - resolution: {integrity: sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.25.2': resolution: {integrity: sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==} engines: {node: '>=18'} @@ -2659,12 +2633,6 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.25.0': - resolution: {integrity: sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.25.2': resolution: {integrity: sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==} engines: {node: '>=18'} @@ -2689,12 +2657,6 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.25.0': - resolution: {integrity: sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.25.2': resolution: {integrity: sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==} engines: {node: '>=18'} @@ -2719,12 +2681,6 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.25.0': - resolution: {integrity: sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.25.2': resolution: {integrity: sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==} engines: {node: '>=18'} @@ -2749,12 +2705,6 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.25.0': - resolution: {integrity: sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.25.2': resolution: {integrity: sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==} engines: {node: '>=18'} @@ -2779,12 +2729,6 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.0': - resolution: {integrity: sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.25.2': resolution: {integrity: sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==} engines: {node: '>=18'} @@ -2809,12 +2753,6 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.25.0': - resolution: {integrity: sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.25.2': resolution: {integrity: sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==} engines: {node: '>=18'} @@ -2839,12 +2777,6 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.25.0': - resolution: {integrity: sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.25.2': resolution: {integrity: sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==} engines: {node: '>=18'} @@ -2869,12 +2801,6 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.25.0': - resolution: {integrity: sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.25.2': resolution: {integrity: sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==} engines: {node: '>=18'} @@ -2899,12 +2825,6 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.25.0': - resolution: {integrity: sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.25.2': resolution: {integrity: sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==} engines: {node: '>=18'} @@ -2929,12 +2849,6 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.25.0': - resolution: {integrity: sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.25.2': resolution: {integrity: sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==} engines: {node: '>=18'} @@ -2959,12 +2873,6 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.25.0': - resolution: {integrity: sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.25.2': resolution: {integrity: sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==} engines: {node: '>=18'} @@ -2989,12 +2897,6 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.25.0': - resolution: {integrity: sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.25.2': resolution: {integrity: sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==} engines: {node: '>=18'} @@ -3019,12 +2921,6 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.25.0': - resolution: {integrity: sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.25.2': resolution: {integrity: sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==} engines: {node: '>=18'} @@ -3049,24 +2945,12 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.25.0': - resolution: {integrity: sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.25.2': resolution: {integrity: sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.0': - resolution: {integrity: sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - '@esbuild/netbsd-arm64@0.25.2': resolution: {integrity: sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==} engines: {node: '>=18'} @@ -3091,24 +2975,12 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.0': - resolution: {integrity: sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.25.2': resolution: {integrity: sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.0': - resolution: {integrity: sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - '@esbuild/openbsd-arm64@0.25.2': resolution: {integrity: sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==} engines: {node: '>=18'} @@ -3133,12 +3005,6 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.0': - resolution: {integrity: sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.25.2': resolution: {integrity: sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==} engines: {node: '>=18'} @@ -3163,12 +3029,6 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.25.0': - resolution: {integrity: sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.25.2': resolution: {integrity: sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==} engines: {node: '>=18'} @@ -3193,12 +3053,6 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.25.0': - resolution: {integrity: sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.25.2': resolution: {integrity: sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==} engines: {node: '>=18'} @@ -3223,12 +3077,6 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.25.0': - resolution: {integrity: sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.25.2': resolution: {integrity: sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==} engines: {node: '>=18'} @@ -3253,12 +3101,6 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.25.0': - resolution: {integrity: sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.25.2': resolution: {integrity: sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==} engines: {node: '>=18'} @@ -3581,88 +3423,88 @@ packages: '@libsql/core@0.14.0': resolution: {integrity: sha512-nhbuXf7GP3PSZgdCY2Ecj8vz187ptHlZQ0VRc751oB2C1W8jQUXKKklvt7t1LJiUTQBVJuadF628eUk+3cRi4Q==} - '@mantine/charts@7.17.5': - resolution: {integrity: sha512-VDDRwUqTsZYqYSYqcc8wXrdiKIvkqRcoDQXKdiuSin7ebQtk29QnPDQmcM536HQpVlUuemI7iTJNTUmhdc7ALQ==} + '@mantine/charts@7.17.7': + resolution: {integrity: sha512-ZhvN6FaPY/kQs606NYBAFVm/SFTwq8p0taWeegZh2fpZbvUmNzVZEeBpoVhYOKEtZQRIQ7t1Y80WJafYumkhTw==} peerDependencies: - '@mantine/core': 7.17.5 - '@mantine/hooks': 7.17.5 + '@mantine/core': 7.17.7 + '@mantine/hooks': 7.17.7 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x recharts: ^2.13.3 - '@mantine/colors-generator@7.17.5': - resolution: {integrity: sha512-OEskYYba8760q0t/6Xkyv9b+QYxVKW/0593Vg9Qyvul18EVW7Bq8PhtIiGg26KOn3JXfTRDmt/nKxCBI0OF77A==} + '@mantine/colors-generator@7.17.7': + resolution: {integrity: sha512-qMoE3ZguEHYx5iyVs2en2v/AX3WzXXEbvw6EIhFcXuV+q78H5tvxhpZdBDP8dyp0DKVRemg5afQ2blCogjYSxQ==} peerDependencies: chroma-js: '>=2.4.2' - '@mantine/core@7.17.5': - resolution: {integrity: sha512-66g/lr281cDPfucjtPw8gFo/yNS9G5iSKqysvPGuDpUBG2bEw8FsJMIsU0bMXtravToIpa3vJRrFUuPndPGnpQ==} + '@mantine/core@7.17.7': + resolution: {integrity: sha512-JMyV4/jPATXxmE31g8TJxsrH7XvdrA5pwT4gg25zBl1KE5vLBpBLLjsHG728+bDKuf+bDV+8lw+1kqgW7FcplQ==} peerDependencies: - '@mantine/hooks': 7.17.5 + '@mantine/hooks': 7.17.7 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/dates@7.17.5': - resolution: {integrity: sha512-8/Qjjb9159rQhxtuHLukNfo3/AEGl7SVSRESN8MkfyP8MCQ7mgm9wqvMADb/9Q75boUA0HIN2pewlzlcd31MHQ==} + '@mantine/dates@7.17.7': + resolution: {integrity: sha512-/F3QteV5Sb5H0zVkU7ZyKdlISYWngdViNLqmredJo8296ukLTsRPr/iIfuYSm3hy3wEWyW5/dWzNPVr1L5cyQg==} peerDependencies: - '@mantine/core': 7.17.5 - '@mantine/hooks': 7.17.5 + '@mantine/core': 7.17.7 + '@mantine/hooks': 7.17.7 dayjs: '>=1.0.0' react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/dropzone@7.17.5': - resolution: {integrity: sha512-vH938od4LpjPTDOSsAFOwhm4IuQy6IzYj11FYmQiJuajzgcUDDvEghMlSR6HIe5Vm8oIvxMi/0iOIEIVYoc9UA==} + '@mantine/dropzone@7.17.7': + resolution: {integrity: sha512-z+nxUlvmezv5x2+AvQCzDJZAFmyfcVkjOc/jNZPl8ByMHnF9jSa6doOrOPox+baTn7vrgeDNHB7djQTo6iOFZQ==} peerDependencies: - '@mantine/core': 7.17.5 - '@mantine/hooks': 7.17.5 + '@mantine/core': 7.17.7 + '@mantine/hooks': 7.17.7 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/form@7.17.5': - resolution: {integrity: sha512-24xkjs8486uOoevymHx2xgZ69j8mM9EG01LMOOMmEHV2k+0HwrCvwPL/2ISCnzWfHZBSwrq9ZTw7KZ6HPnU0nQ==} + '@mantine/form@7.17.7': + resolution: {integrity: sha512-BloLbPLbSKyQ+crkwcREiaF22v1y8CvgAbS9tcrWdZvA3SwUvkmsEoX8QYui82eTLKrqFEvlqp0rYVQ+y2cjIQ==} peerDependencies: react: ^18.x || ^19.x - '@mantine/hooks@7.17.5': - resolution: {integrity: sha512-Q/3AHI1fjl+W7xQ3jEoMmSoTxLqxMI2gPfxIjd73OPmRpPenYWR1zk/diirXXm2t7JOrAbmpA3/O1gzmgqzc/Q==} + '@mantine/hooks@7.17.7': + resolution: {integrity: sha512-5MIvN/YAcewc97nG3jVrlnFqAExnJRBNWmV6UgGHWbiZiPSCh5o2RJE/5ZVGSfkexDpav9gkm2jkWkIbemVqVA==} peerDependencies: react: ^18.x || ^19.x - '@mantine/modals@7.17.5': - resolution: {integrity: sha512-K2rKBkQmndZzL+uPBpQ54qcGwAL1f78ipucQt0Dhf5i252NTBaQVWrRRbPSL0KQQqtK+9TSaV5C8rQ4O9EKUjw==} + '@mantine/modals@7.17.7': + resolution: {integrity: sha512-OL2nwGKaoa2YOtX5j4JUIJcto0ws2xVNXrmrVI42PCYWjgyvYfsNDz7RHrR+h0qUTl9unPwTfT/Y7T8xgWk5Iw==} peerDependencies: - '@mantine/core': 7.17.5 - '@mantine/hooks': 7.17.5 + '@mantine/core': 7.17.7 + '@mantine/hooks': 7.17.7 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/notifications@7.17.5': - resolution: {integrity: sha512-dLbrSm7ct97fb0Yv8ImVj9mVNkjnD/xkDCP1PANt/shM9xDh0TguqQTvborb+8Wxh1g+RtWVML/an5rVsHbKmg==} + '@mantine/notifications@7.17.7': + resolution: {integrity: sha512-T6m4uUPEkPcTdo7J29lDey5YDJkVh/t6kWaCGQ0xDX1tzGGGPtaf1Exj1N0EtrIetbXPuEE8+yvq5P7wUJ3t9w==} peerDependencies: - '@mantine/core': 7.17.5 - '@mantine/hooks': 7.17.5 + '@mantine/core': 7.17.7 + '@mantine/hooks': 7.17.7 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/spotlight@7.17.5': - resolution: {integrity: sha512-E7S3tLVT8TMABWkwq200N01UYEOJv2WfSrc1eAo33gGTdlbMb4Ei8z+VYv3M54dtN+aWi7oth4cqkyhnPhWx+A==} + '@mantine/spotlight@7.17.7': + resolution: {integrity: sha512-IBp324XpA80tZzApWKAOEZMOEFKUMW2osXb90draudDPWgdOlVKU1EVeA9iY37AT9StbD9ZNHFPifqFL2O0NHA==} peerDependencies: - '@mantine/core': 7.17.5 - '@mantine/hooks': 7.17.5 + '@mantine/core': 7.17.7 + '@mantine/hooks': 7.17.7 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/store@7.17.5': - resolution: {integrity: sha512-HQzy4rBlUFyw+39TgiAV+TGuQivMWYeQlnMctKJlaxwVY5ZTdF2IpJ/JZcjkGrmrZvBwUQ8IOMFvt2eZc20P1Q==} + '@mantine/store@7.17.7': + resolution: {integrity: sha512-a2XmX6/ixuT+q1H7uNZq3opKZWlxS67XWU2fxCc/E/XHbzik25i2oj9inFpIZMT7UmhUkxj4/pbJQGMs3T5liw==} peerDependencies: react: ^18.x || ^19.x - '@mantine/tiptap@7.17.5': - resolution: {integrity: sha512-O2A7TwrW0GrUBVE/0u+wy3SJARPsGdpbFtdoCMXyLYW+oTZgNRzwY7IlIsZ+ohykHgED6YOal1uuQouofS+fJQ==} + '@mantine/tiptap@7.17.7': + resolution: {integrity: sha512-0Hei1bCEWW0KWtS/rWK96xk5HBC7YAY63sBkZJRKSY5LpOZCqm37eRNJCQ/5drTzqT89XPKbw4cU8pJJuJaSvA==} peerDependencies: - '@mantine/core': 7.17.5 - '@mantine/hooks': 7.17.5 + '@mantine/core': 7.17.7 + '@mantine/hooks': 7.17.7 '@tiptap/extension-link': '>=2.1.12' '@tiptap/react': '>=2.1.12' react: ^18.x || ^19.x @@ -4314,8 +4156,8 @@ packages: '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} - '@t3-oss/env-core@0.13.0': - resolution: {integrity: sha512-bV7LAvwoeyigLXyjBnlgbKb8S9l+E29uSzWtU1GJYuKMQ6qF9dvFbjakkgoxR+tXFoxg7aGbg8DdEfwNihvF8Q==} + '@t3-oss/env-core@0.13.4': + resolution: {integrity: sha512-zVOiYO0+CF7EnBScz8s0O5JnJLPTU0lrUi8qhKXfIxIJXvI/jcppSiXXsEJwfB4A6XZawY/Wg/EQGKANi/aPmQ==} peerDependencies: arktype: ^2.1.0 typescript: '>=5.0.0' @@ -4329,8 +4171,8 @@ packages: zod: optional: true - '@t3-oss/env-nextjs@0.13.0': - resolution: {integrity: sha512-l+3H7w1rezfPhnfi5DPKeoLaMhsG8Os2WtoSA1Sq/+X+szccidazNmTAGKjp4v03IuUz4bsxYvU9DzQAX7atkg==} + '@t3-oss/env-nextjs@0.13.4': + resolution: {integrity: sha512-6ecXR7SH7zJKVcBODIkB7wV9QLMU23uV8D9ec6P+ULHJ5Ea/YXEHo+Z/2hSYip5i9ptD/qZh8VuOXyldspvTTg==} peerDependencies: typescript: '>=5.0.0' valibot: ^1.0.0-beta.7 || ^1.0.0 @@ -4355,27 +4197,27 @@ packages: resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==} engines: {node: '>=12'} - '@tanstack/query-core@5.74.4': - resolution: {integrity: sha512-YuG0A0+3i9b2Gfo9fkmNnkUWh5+5cFhWBN0pJAHkHilTx6A0nv8kepkk4T4GRt4e5ahbtFj2eTtkiPcVU1xO4A==} + '@tanstack/query-core@5.75.0': + resolution: {integrity: sha512-rk8KQuCdhoRkzjRVF3QxLgAfFUyS0k7+GCQjlGEpEGco+qazJ0eMH6aO1DjDjibH7/ik383nnztua3BG+lOnwg==} - '@tanstack/query-devtools@5.73.3': - resolution: {integrity: sha512-hBQyYwsOuO7QOprK75NzfrWs/EQYjgFA0yykmcvsV62q0t6Ua97CU3sYgjHx0ZvxkXSOMkY24VRJ5uv9f5Ik4w==} + '@tanstack/query-devtools@5.74.7': + resolution: {integrity: sha512-nSNlfuGdnHf4yB0S+BoNYOE1o3oAH093weAYZolIHfS2stulyA/gWfSk/9H4ZFk5mAAHb5vNqAeJOmbdcGPEQw==} - '@tanstack/react-query-devtools@5.74.4': - resolution: {integrity: sha512-PGCAcytQMmeagoeGG45ccBhrC1x0/5OlNjsM1FAb9OfsQZIhPzjwjhGcwmMu6TbT4RIHgvjxLwC5NHgkUwJQzw==} + '@tanstack/react-query-devtools@5.75.1': + resolution: {integrity: sha512-6S71fJRBlb0adlG5z/OHRqZqtHoPYVCklf/KCnOoZ3vdx9O/K9BLvqeeDeMUkZ6Rak/IupbEbvBsFoUiMHwZiQ==} peerDependencies: - '@tanstack/react-query': ^5.74.4 + '@tanstack/react-query': ^5.75.1 react: ^18 || ^19 - '@tanstack/react-query-next-experimental@5.74.4': - resolution: {integrity: sha512-tI+7rKidU3WI/UwiP88YxDGE8FUxIZ5JCalRY59v5X9djUJjVi1DrD9cCcTVKqLql0gvakbF5z3R0txgr7B0oQ==} + '@tanstack/react-query-next-experimental@5.75.1': + resolution: {integrity: sha512-CiC0at5P8mrpwXrOeezOYTVwbeJni3GQf2+C/11BNdaT1BM+w2fIRKM96rzKekO081ML4TbnjJwk3aTPD8cdtg==} peerDependencies: - '@tanstack/react-query': ^5.74.4 + '@tanstack/react-query': ^5.75.1 next: ^13 || ^14 || ^15 react: ^18 || ^19 - '@tanstack/react-query@5.74.4': - resolution: {integrity: sha512-mAbxw60d4ffQ4qmRYfkO1xzRBPUEf/72Dgo3qqea0J66nIKuDTLEqQt0ku++SDFlMGMnB6uKDnEG1xD/TDse4Q==} + '@tanstack/react-query@5.75.1': + resolution: {integrity: sha512-tN+gG+eXCHYm+VpmdXUP1rfE9LUrRzgYozTkBZtJV1/WFM3vwWNKQC8G6b2RKcs+2cPg+hdToZHZfjL3bF4yIQ==} peerDependencies: react: ^18 || ^19 @@ -4399,203 +4241,203 @@ packages: '@tanstack/virtual-core@3.11.2': resolution: {integrity: sha512-vTtpNt7mKCiZ1pwU9hfKPhpdVO2sVzFQsxoVBGtOSHxlrRRzYr8iQ2TlwbAcRYCcEiZ9ECAM8kBzH0v2+VzfKw==} - '@testcontainers/mysql@10.24.2': - resolution: {integrity: sha512-wRICcCjzFlAiAsOvM/ValragSrc0RcRyXX2nifOAda/BmCSD44dYaVabbxOvJLFbHKX7HWuRplebGvpplko/wg==} + '@testcontainers/mysql@10.25.0': + resolution: {integrity: sha512-jUlwvo2P4Ae2jQ4IaInWycbhcsDq5gfLzRUYETjJiiEpig/p2S5+90iVpBoMDALHFVASuJ9Z6HSzphpQ+mOMVw==} - '@tiptap/core@2.11.7': - resolution: {integrity: sha512-zN+NFFxLsxNEL8Qioc+DL6b8+Tt2bmRbXH22Gk6F6nD30x83eaUSFlSv3wqvgyCq3I1i1NO394So+Agmayx6rQ==} + '@tiptap/core@2.11.9': + resolution: {integrity: sha512-UZSxQLLyJst47xep3jlyKM6y1ebZnmvbGsB7njBVjfxf5H+4yFpRJwwNqrBHM/vyU55LCtPChojqaYC1wXLf6g==} peerDependencies: '@tiptap/pm': ^2.7.0 - '@tiptap/extension-blockquote@2.11.7': - resolution: {integrity: sha512-liD8kWowl3CcYCG9JQlVx1eSNc/aHlt6JpVsuWvzq6J8APWX693i3+zFqyK2eCDn0k+vW62muhSBe3u09hA3Zw==} + '@tiptap/extension-blockquote@2.11.9': + resolution: {integrity: sha512-muGiVb5k86wF01ehbtT5oh1bxwcI0yQo47y9Sso7Jlvd06GW6Ur3X2aJwtKZsV0uPTFliKKLR6DhtLJE1AaR4g==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-bold@2.11.7': - resolution: {integrity: sha512-VTR3JlldBixXbjpLTFme/Bxf1xeUgZZY3LTlt5JDlCW3CxO7k05CIa+kEZ8LXpog5annytZDUVtWqxrNjmsuHQ==} + '@tiptap/extension-bold@2.11.9': + resolution: {integrity: sha512-VUwiKOBr2gFxI098hICgfkeCQqkFZXVFLxKMvu/ohwmuTV412cxtYJZikhN0JuINUjBt+LX1zk72BJ8q2C9puA==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-bubble-menu@2.11.7': - resolution: {integrity: sha512-0vYqSUSSap3kk3/VT4tFE1/6StX70I3/NKQ4J68ZSFgkgyB3ZVlYv7/dY3AkEukjsEp3yN7m8Gw8ei2eEwyzwg==} + '@tiptap/extension-bubble-menu@2.11.9': + resolution: {integrity: sha512-5EttgsqjzlKRd0dmbVlujw47XGHA2JSDI4eEvsJz5O7XcRtzPjBJ+DdH4Q+wlyBf9ZWzVY/1bp90xP1dxHesJg==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-bullet-list@2.11.7': - resolution: {integrity: sha512-WbPogE2/Q3e3/QYgbT1Sj4KQUfGAJNc5pvb7GrUbvRQsAh7HhtuO8hqdDwH8dEdD/cNUehgt17TO7u8qV6qeBw==} + '@tiptap/extension-bullet-list@2.11.9': + resolution: {integrity: sha512-H9n0ShHVFc+UNZCui/wplDdVoi4MYVFWB1GFOhHSiSe4CCGNW6qftjI7c0NPR7Bhmzga1fraJR5W5H/qCtoPLA==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-code-block@2.11.7': - resolution: {integrity: sha512-To/y/2H04VWqiANy53aXjV7S6fA86c2759RsH1hTIe57jA1KyE7I5tlAofljOLZK/covkGmPeBddSPHGJbz++Q==} + '@tiptap/extension-code-block@2.11.9': + resolution: {integrity: sha512-brwvt/SdP65DpchPv5rkhjEjjIIgE1+9ySw8kCTiyXWUrmZA0kK/iwp5zPpHfsoWT8Sa9+fh2uraVZGOF9Dcqw==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-code@2.11.7': - resolution: {integrity: sha512-VpPO1Uy/eF4hYOpohS/yMOcE1C07xmMj0/D989D9aS1x95jWwUVrSkwC+PlWMUBx9PbY2NRsg1ZDwVvlNKZ6yQ==} + '@tiptap/extension-code@2.11.9': + resolution: {integrity: sha512-RbTdzWk6F1+EsThT2Sj4eQHgkXO3NfFdeNZ/V+t9invJm7duqhprMT0G1aEaSxGvr3rjbdeuwYpSsEeV3Wrw+A==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-color@2.11.7': - resolution: {integrity: sha512-2CWb0Qnh8Crf9OwnnWB+M1QJtWrbn6IMSwuOzk+tSzdWSazjN8h6XAZVemr0qMdAA/SyUigzorStiPxN6o3/vQ==} + '@tiptap/extension-color@2.11.9': + resolution: {integrity: sha512-8nsOU/qgfIuXRF+IbSBQMfylrQtU/SE0ZLRV+C810ie/gufEvnrMFTjs1CggSJXqXkeKamdbdjsud0s/HIe5wA==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/extension-text-style': ^2.7.0 - '@tiptap/extension-document@2.11.7': - resolution: {integrity: sha512-95ouJXPjdAm9+VBRgFo4lhDoMcHovyl/awORDI8gyEn0Rdglt+ZRZYoySFzbVzer9h0cre+QdIwr9AIzFFbfdA==} + '@tiptap/extension-document@2.11.9': + resolution: {integrity: sha512-lkrCkMDDLtaPvMljw7vfvwnNZmZTy4uIfbkLdF3BkaV4XAHMVfoOzSbq0uRaTgUSLH8Fv0L1B6Nwol4OYnzI3w==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-dropcursor@2.11.7': - resolution: {integrity: sha512-63mL+nxQILizsr5NbmgDeOjFEWi34BLt7evwL6UUZEVM15K8V1G8pD9Y0kCXrZYpHWz0tqFRXdrhDz0Ppu8oVw==} + '@tiptap/extension-dropcursor@2.11.9': + resolution: {integrity: sha512-LqWEaAWyJ3eUrafgKT4UCIvDqhth1cX976dQcAOPg5POmldZ8KgZTeEYZl7AYpzFS++HlTIwJ8PMOu29/g+l+g==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-floating-menu@2.11.7': - resolution: {integrity: sha512-DG54WoUu2vxHRVzKZiR5I5RMOYj45IlxQMkBAx1wjS0ch41W8DUYEeipvMMjCeKtEI+emz03xYUcOAP9LRmg+w==} + '@tiptap/extension-floating-menu@2.11.9': + resolution: {integrity: sha512-0rWGnfjtDx4AAOUaPd/hJsy5VOPp4A4zjVX+bPiDdSGAJZELQnQRT18GwwjdzKWE+imeGZ4pe/dbPcgD9uY2FA==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-gapcursor@2.11.7': - resolution: {integrity: sha512-EceesmPG7FyjXZ8EgeJPUov9G1mAf2AwdypxBNH275g6xd5dmU/KvjoFZjmQ0X1ve7mS+wNupVlGxAEUYoveew==} + '@tiptap/extension-gapcursor@2.11.9': + resolution: {integrity: sha512-IFdprIzeDAck0r4mS55ad6tts/AHyLg83jk2jbcy+f7CMGDpoVW8R10ORl8LD8kJBxnC/TqBsbr44mQJtxzDog==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-hard-break@2.11.7': - resolution: {integrity: sha512-zTkZSA6q+F5sLOdCkiC2+RqJQN0zdsJqvFIOVFL/IDVOnq6PZO5THzwRRLvOSnJJl3edRQCl/hUgS0L5sTInGQ==} + '@tiptap/extension-hard-break@2.11.9': + resolution: {integrity: sha512-S2IfkK+dlX+59KWuUHgtTEjLVsOTEQFt6Kng/lNqKY8G46gujY6L3EDqtPibxs63B+KKOHHOlKShcYZKWzWvvw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-heading@2.11.7': - resolution: {integrity: sha512-8kWh7y4Rd2fwxfWOhFFWncHdkDkMC1Z60yzIZWjIu72+6yQxvo8w3yeb7LI7jER4kffbMmadgcfhCHC/fkObBA==} + '@tiptap/extension-heading@2.11.9': + resolution: {integrity: sha512-Z84Vbw26bnMyIyZ7hc8/xXDD5uAcr4GA1zs0HPs4Er9wROOqkZnlgE54LaObXn2YbMKuDZ24cmCU8LFy0etN+w==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-highlight@2.11.7': - resolution: {integrity: sha512-c/NH4kIpNOWCUQv8RkFNDyOcgt+2pYFpDf0QBJmzhAuv4BIeS2bDmDtuNS7VgoWRZH+xxCNXfvm2BG+kjtipEg==} + '@tiptap/extension-highlight@2.11.9': + resolution: {integrity: sha512-HWGU46hk8vozcptZcsc53GZnS2//snyhq+rwqY7WIQrbA8P0q/ImjgHRFMyfQcAK412sJbq9vkGzIRQvVOqdJA==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-history@2.11.7': - resolution: {integrity: sha512-Cu5x3aS13I040QSRoLdd+w09G4OCVfU+azpUqxufZxeNs9BIJC+0jowPLeOxKDh6D5GGT2A8sQtxc6a/ssbs8g==} + '@tiptap/extension-history@2.11.9': + resolution: {integrity: sha512-DqA9tGPqmt5EmREGW2Wg3vc+Qb6rBeSmuHeQ9R4M4dYJYSh2gBheunBNnerQlZDj9Dk4H8NGgAz2YLrAkSlxSA==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-horizontal-rule@2.11.7': - resolution: {integrity: sha512-uVmQwD2dzZ5xwmvUlciy0ItxOdOfQjH6VLmu80zyJf8Yu7mvwP8JyxoXUX0vd1xHpwAhgQ9/ozjIWYGIw79DPQ==} + '@tiptap/extension-horizontal-rule@2.11.9': + resolution: {integrity: sha512-7UhwRZPA3ykKTat4ooY/GzGO4wy9040vzsnev+189BHIMvxe4I483B1v3sUBvUJrFf8z0+iWulJx3zoTskieoA==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-image@2.11.7': - resolution: {integrity: sha512-YvCmTDB7Oo+A56tR4S/gcNaYpqU4DDlSQcRp5IQvmQV5EekSe0lnEazGDoqOCwsit9qQhj4MPQJhKrnaWrJUrg==} + '@tiptap/extension-image@2.11.9': + resolution: {integrity: sha512-1MD2FUzRMz+OSm+y2nQY1CjVynAA0qBAyJwt+T4YefzmxwYrklqCoeLz9a+bK7GxlhSxByGNK5w9aa5oPmKFXA==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-italic@2.11.7': - resolution: {integrity: sha512-r985bkQfG0HMpmCU0X0p/Xe7U1qgRm2mxvcp6iPCuts2FqxaCoyfNZ8YnMsgVK1mRhM7+CQ5SEg2NOmQNtHvPw==} + '@tiptap/extension-italic@2.11.9': + resolution: {integrity: sha512-xLQW6OtOwTEOkyvEX0jQcbm4kfjl1uOLMJ5daHolCR3DiEDWoxYrZrs2lt467nf5Sz4/50MQqGuZw8pVfWWxqg==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-link@2.11.7': - resolution: {integrity: sha512-qKIowE73aAUrnQCIifYP34xXOHOsZw46cT/LBDlb0T60knVfQoKVE4ku08fJzAV+s6zqgsaaZ4HVOXkQYLoW7g==} + '@tiptap/extension-link@2.11.9': + resolution: {integrity: sha512-gi1UonACmQ/T81QdpIociNEIFPr9h6CKoMxfdZgYRrVWMsZuANuXooSjL8d8OirzWkPHxmbhEMyWjcTAV+HYgw==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-list-item@2.11.7': - resolution: {integrity: sha512-6ikh7Y+qAbkSuIHXPIINqfzmWs5uIGrylihdZ9adaIyvrN1KSnWIqrZIk/NcZTg5YFIJlXrnGSRSjb/QM3WUhw==} + '@tiptap/extension-list-item@2.11.9': + resolution: {integrity: sha512-57VO0Joe8WEEz2ypxY64TYx4KenFaqYnhrTLsWUvlearpBXbTFc8IaI/rdLubgJlEE5Q3e+NirCyQSLCE8a2Zg==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-ordered-list@2.11.7': - resolution: {integrity: sha512-bLGCHDMB0vbJk7uu8bRg8vES3GsvxkX7Cgjgm/6xysHFbK98y0asDtNxkW1VvuRreNGz4tyB6vkcVCfrxl4jKw==} + '@tiptap/extension-ordered-list@2.11.9': + resolution: {integrity: sha512-jLRn0L6nRJ/yp3JEVuk1elc11XPSF4lDTQdj45EMSgxMoHU13LF9MZm2H2jwLXPpBflB/MVJtt9Nd2XzOPTGcw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-paragraph@2.11.7': - resolution: {integrity: sha512-Pl3B4q6DJqTvvAdraqZaNP9Hh0UWEHL5nNdxhaRNuhKaUo7lq8wbDSIxIW3lvV0lyCs0NfyunkUvSm1CXb6d4Q==} + '@tiptap/extension-paragraph@2.11.9': + resolution: {integrity: sha512-smoxsfujsPJ9GVXG03QqM7yBwVfaLQa0l8VHPXaJUIjjvSpG1g8WlaxC46JB4Ba4W9KlrkPt1fdEpNcelRwcmw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-strike@2.11.7': - resolution: {integrity: sha512-D6GYiW9F24bvAY7XMOARNZbC8YGPzdzWdXd8VOOJABhf4ynMi/oW4NNiko+kZ67jn3EGaKoz32VMJzNQgYi1HA==} + '@tiptap/extension-strike@2.11.9': + resolution: {integrity: sha512-YFZ/Mjv/wA13oO8wEK4DVw6zSuYfEz4NLF6EA2mMo8N6UUSrBFEWiGE3pHBysIwcRXTaUzzGoYN+lohbmpHwBQ==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-table-cell@2.11.7': - resolution: {integrity: sha512-JMOkSYRckc5SJP86yGGiHzCxCR8ecrRENvTWAKib6qer2tutxs5u42W+Z8uTcHC2dRz7Fv54snOkDoqPwkf6cw==} + '@tiptap/extension-table-cell@2.11.9': + resolution: {integrity: sha512-YlM7y4UlAcHZuW8p6gkAi1DJa4Vc/8F5BiL2fiW/lot2awE05mI14jjpCZLqJ2wrO9aLguOJbN2VRXEFcTQO7Q==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-table-header@2.11.7': - resolution: {integrity: sha512-wPRKpliS5QQXgsp//ZjXrHMdLICMkjg2fUrQinOiBa7wDL5C7Y+SehtuK4s2tjeAkyAdj+nepfftyBRIlUSMXg==} + '@tiptap/extension-table-header@2.11.9': + resolution: {integrity: sha512-6bLZDywhLaBlgy4Zp26yB28256F2lyjgoUO90w1doU4c19qlS1pkAwt3clYNlqQgMVVVjIZObbt8gZYma/8svA==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-table-row@2.11.7': - resolution: {integrity: sha512-K254RiXWGXGjz5Cm835hqfQiwnYXm8aw6oOa3isDh4A1B+1Ev4DB2vEDKMrgaOor3nbTsSYmAx2iEMrZSbpaRg==} + '@tiptap/extension-table-row@2.11.9': + resolution: {integrity: sha512-so/rP4KTabeoQtvnPFYrVFqMi/QJAihBa5InZPDEjT4pue0yPQbOnTcGRgKiMNYLIEwAC9nw6i1zWlkY5Eic+w==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-table@2.11.7': - resolution: {integrity: sha512-rfwWkNXz/EZuhc8lylsCWPbx0Xr5FlIhreWFyeoXYrDEO3x4ytYcVOpNmbabJYP2semfM0PvPR5o84zfFkLZyg==} + '@tiptap/extension-table@2.11.9': + resolution: {integrity: sha512-4VWflJs7B9hgt1uG0SUdFtXJHlHbggIUtjX0tqd1BU9AsYspPXREALicG8Rz9Dm0eOX6dR30+I3LvL3K15XhTA==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-task-item@2.11.7': - resolution: {integrity: sha512-m+UyE85nnqhQ4epLMYqdwaQj6DoqGGUNE0gyJOtJB1qhBi7GM7yPEDoiX82ByaQetWjoZIduRuQSRfgkD0MEeA==} + '@tiptap/extension-task-item@2.11.9': + resolution: {integrity: sha512-DrlhZkCjtfcM3szV6cn9IG3Ao8f8Oeo60GdVfrw4NIvSkjDwVqWYxOwoCZBERMLMdYwpkmlVRgnGZLz+MNYasA==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-task-list@2.11.7': - resolution: {integrity: sha512-rgpkLvKxeSWibMpZazR5PkISSwz90Wnpe/KqIWLu/s3UuRE0Sc5kA8ZOva4ZAvcpSWEJ1cNn1OqllwHsj0NxwQ==} + '@tiptap/extension-task-list@2.11.9': + resolution: {integrity: sha512-xFMo5FMrpld4U5pqS+Ml9LKXXvRalcx5HUw4bFiUbx9hJON+WgTcXUgIGoLIphE/cMRp63vo331lK/PVSpNrHw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-text-align@2.11.7': - resolution: {integrity: sha512-3M8zd9ROADXazVNpgR6Ejs1evSvBveN36qN4GgV71GqrNlTcjqYgQcXFLQrsd2hnE+aXir8/8bLJ+aaJXDninA==} + '@tiptap/extension-text-align@2.11.9': + resolution: {integrity: sha512-MaCL83TPiDX20vdKSe+QwghBcJ5HDtrK6btGqgW4pugae0Pi71oe2lqkeM+eJBsiXN4WG+x9XMwBRd9vUnLF0g==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-text-style@2.11.7': - resolution: {integrity: sha512-LHO6DBg/9SkCQFdWlVfw9nolUmw+Cid94WkTY+7IwrpyG2+ZGQxnKpCJCKyeaFNbDoYAtvu0vuTsSXeCkgShcA==} + '@tiptap/extension-text-style@2.11.9': + resolution: {integrity: sha512-lB3uJBRiRYTCxtNeEF70IiwzGFfAU69xvsHpQowJU357lZsTj/QPRQt8Blu48qIoUAJGU00vGRTLae6X9myMMw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-text@2.11.7': - resolution: {integrity: sha512-wObCn8qZkIFnXTLvBP+X8KgaEvTap/FJ/i4hBMfHBCKPGDx99KiJU6VIbDXG8d5ZcFZE0tOetK1pP5oI7qgMlQ==} + '@tiptap/extension-text@2.11.9': + resolution: {integrity: sha512-OGjdsXN+d3UZFQZ+r+ozX20G7BcHWCGkn9XZUVItJwzpNa9x4EiPsKCJVk17jVFRAsAHdMBcsBRdErzdO6/Hrg==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-underline@2.11.7': - resolution: {integrity: sha512-NtoQw6PGijOAtXC6G+0Aq0/Z5wwEjPhNHs8nsjXogfWIgaj/aI4/zfBnA06eI3WT+emMYQTl0fTc4CUPnLVU8g==} + '@tiptap/extension-underline@2.11.9': + resolution: {integrity: sha512-b8MwovgUqaDZSwCJ48ug9cKBBD3prwPTUH0IZ8HofodHc8VF8xbPmUEpePRnCYaV0ONGKPHkiz1crIwj1FBK+A==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/pm@2.11.7': - resolution: {integrity: sha512-7gEEfz2Q6bYKXM07vzLUD0vqXFhC5geWRA6LCozTiLdVFDdHWiBrvb2rtkL5T7mfLq03zc1QhH7rI3F6VntOEA==} + '@tiptap/pm@2.11.9': + resolution: {integrity: sha512-hhonYVcL3fRkWyiCFJQ7HHXtmFviwnof8VDRFX1vm69GskGeqUTJUFR+1as2hZYekHe5rO4FZUm1dlETDWTnzQ==} - '@tiptap/react@2.11.7': - resolution: {integrity: sha512-gQZEUkAoPsBptnB4T2gAtiUxswjVGhfsM9vOElQco+b11DYmy110T2Zuhg+2YGvB/CG3RoWJx34808P0FX1ijA==} + '@tiptap/react@2.11.9': + resolution: {integrity: sha512-cjQICAcx5eTlAsACbVHuDI0d2UO10lijTHhtn6WyaCzpcWcVp6RgHgn6//ffWg7oQB0IfJFRZy5tpEvNMOVuvA==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tiptap/starter-kit@2.11.7': - resolution: {integrity: sha512-K+q51KwNU/l0kqRuV5e1824yOLVftj6kGplGQLvJG56P7Rb2dPbM/JeaDbxQhnHT/KDGamG0s0Po0M3pPY163A==} + '@tiptap/starter-kit@2.11.9': + resolution: {integrity: sha512-UUx5t1PrwR+KVOjTkmGC1duOq6Ubz/fsetI1OieyegMT/2J1wkFFP1w3NFZarj5jo0GLBt3GMlBwS9GY8cJUxQ==} '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} @@ -4608,19 +4450,19 @@ packages: tree-sitter: optional: true - '@trpc/client@11.1.1': - resolution: {integrity: sha512-Beiv56hlt+ARbijtUsCQOvKJw/FkfuVk4W9TzJl285iIJw8iCA3ZTwTG9GjIeSgeR7d2MyOeUbI26LV255n33A==} + '@trpc/client@11.1.2': + resolution: {integrity: sha512-RpifJOAv+ql9gF3oafa3dLCF01AzWu2DzejvehAPG2IlwHxopKoYXaImJ8zPwRkZokuWiKz5v65HjElmi8TlrQ==} peerDependencies: - '@trpc/server': 11.1.1 + '@trpc/server': 11.1.2 typescript: '>=5.7.2' - '@trpc/next@11.1.1': - resolution: {integrity: sha512-4uz4S+QtpVGPENm4Kp7HSvMW+nXocBvI+A+dkwVvM3R9MIU3lIQ35H1fQ1aN/O+PlR4LOs5FceCwC1LjWkScZQ==} + '@trpc/next@11.1.2': + resolution: {integrity: sha512-dtk8p/al4p5BU4Otol8ufM3sjuJT/1do0wR912OjetRLwG0Y41FTwhUeXcfLpUMjWUWy+dnCwG8aH/sDvLO5RQ==} peerDependencies: '@tanstack/react-query': ^5.59.15 - '@trpc/client': 11.1.1 - '@trpc/react-query': 11.1.1 - '@trpc/server': 11.1.1 + '@trpc/client': 11.1.2 + '@trpc/react-query': 11.1.2 + '@trpc/server': 11.1.2 next: '*' react: '>=16.8.0' react-dom: '>=16.8.0' @@ -4631,21 +4473,31 @@ packages: '@trpc/react-query': optional: true - '@trpc/react-query@11.1.1': - resolution: {integrity: sha512-TzKwTBsohUS23vusIIYJpFVp1p1rjEryTv9YCRnHtR6oDxR7W0aLh/TYyQ4chAhQ9edmdhVKeUetAQpF5HvUTA==} + '@trpc/react-query@11.1.2': + resolution: {integrity: sha512-Ws3oIaj0qqbVIUyfYd9uFBwqk7eRqsxaLhLKN7grskoBo8wkh/CUADcN6ZD+GGogC3Dsg9S4WhgU1jVgfc/ahg==} peerDependencies: '@tanstack/react-query': ^5.67.1 - '@trpc/client': 11.1.1 - '@trpc/server': 11.1.1 + '@trpc/client': 11.1.2 + '@trpc/server': 11.1.2 react: '>=18.2.0' react-dom: '>=18.2.0' typescript: '>=5.7.2' - '@trpc/server@11.1.1': - resolution: {integrity: sha512-ZjPN3ypBHvGMAlMgeZPrxlRcH/3dn4AK0s5Ph1z+E6uiAvIQVCj7ZoMlXeeBsIy4THGDAk953jHVW2kMnlbb4g==} + '@trpc/server@11.1.2': + resolution: {integrity: sha512-Oi9zWHG0ZDkbDo4sYkduoV7q4sIe6UwjrRLC91vNMYQK+PVgpbTCmK1laRwewAGu0zaayqcGDosANjceOIC3GA==} peerDependencies: typescript: '>=5.7.2' + '@trpc/tanstack-react-query@11.1.2': + resolution: {integrity: sha512-c+NupnmIQmwgwYVTaHgDg59BZBtJ6KxqB0cxF9FBhKHPY6PlwGLdU8+mo25C5VIpofZYEII4H7NKE4yKGFSe3w==} + peerDependencies: + '@tanstack/react-query': ^5.67.1 + '@trpc/client': 11.1.2 + '@trpc/server': 11.1.2 + react: '>=18.2.0' + react-dom: '>=18.2.0' + typescript: '>=5.7.2' + '@tsconfig/node10@1.0.11': resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} @@ -4831,8 +4683,8 @@ packages: '@types/node@18.19.50': resolution: {integrity: sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg==} - '@types/node@22.15.2': - resolution: {integrity: sha512-uKXqKN9beGoMdBfcaTY1ecwz6ctxuJAcUlwE55938g0ZJ8lRxwAZqRz2AJ4pzpt5dHdTPMB863UZ0ESiFUcP7A==} + '@types/node@22.15.3': + resolution: {integrity: sha512-lX7HFZeHf4QG/J7tBZqrCAXwz9J5RD56Y6MpP0eJkka8p+K0RY/yBTW7CYFJ4VGCclxqOLKmiGP5juQc6MKgcw==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -4849,8 +4701,8 @@ packages: '@types/range-parser@1.2.7': resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - '@types/react-dom@19.1.2': - resolution: {integrity: sha512-XGJkWF41Qq305SKWEILa1O8vzhb3aOo3ogBlSmiqNko/WmRb6QIaweuZCXjKygVDXpzXb5wyxKTSOsmkuqj+Qw==} + '@types/react-dom@19.1.3': + resolution: {integrity: sha512-rJXC08OG0h3W6wDMFxQrZF00Kq6qQvw0djHRdzl3U5DnIERz0MRce3WVc7IS6JYBwtaP/DwYtRRjVlvivNveKg==} peerDependencies: '@types/react': ^19.0.0 @@ -4914,51 +4766,51 @@ packages: '@types/xml2js@0.4.14': resolution: {integrity: sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ==} - '@typescript-eslint/eslint-plugin@8.31.0': - resolution: {integrity: sha512-evaQJZ/J/S4wisevDvC1KFZkPzRetH8kYZbkgcTRyql3mcKsf+ZFDV1BVWUGTCAW5pQHoqn5gK5b8kn7ou9aFQ==} + '@typescript-eslint/eslint-plugin@8.31.1': + resolution: {integrity: sha512-oUlH4h1ABavI4F0Xnl8/fOtML/eu8nI2A1nYd+f+55XI0BLu+RIqKoCiZKNo6DtqZBEQm5aNKA20G3Z5w3R6GQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/parser@8.31.0': - resolution: {integrity: sha512-67kYYShjBR0jNI5vsf/c3WG4u+zDnCTHTPqVMQguffaWWFs7artgwKmfwdifl+r6XyM5LYLas/dInj2T0SgJyw==} + '@typescript-eslint/parser@8.31.1': + resolution: {integrity: sha512-oU/OtYVydhXnumd0BobL9rkJg7wFJ9bFFPmSmB/bf/XWN85hlViji59ko6bSKBXyseT9V8l+CN1nwmlbiN0G7Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/scope-manager@8.31.0': - resolution: {integrity: sha512-knO8UyF78Nt8O/B64i7TlGXod69ko7z6vJD9uhSlm0qkAbGeRUSudcm0+K/4CrRjrpiHfBCjMWlc08Vav1xwcw==} + '@typescript-eslint/scope-manager@8.31.1': + resolution: {integrity: sha512-BMNLOElPxrtNQMIsFHE+3P0Yf1z0dJqV9zLdDxN/xLlWMlXK/ApEsVEKzpizg9oal8bAT5Sc7+ocal7AC1HCVw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.31.0': - resolution: {integrity: sha512-DJ1N1GdjI7IS7uRlzJuEDCgDQix3ZVYVtgeWEyhyn4iaoitpMBX6Ndd488mXSx0xah/cONAkEaYyylDyAeHMHg==} + '@typescript-eslint/type-utils@8.31.1': + resolution: {integrity: sha512-fNaT/m9n0+dpSp8G/iOQ05GoHYXbxw81x+yvr7TArTuZuCA6VVKbqWYVZrV5dVagpDTtj/O8k5HBEE/p/HM5LA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/types@8.31.0': - resolution: {integrity: sha512-Ch8oSjVyYyJxPQk8pMiP2FFGYatqXQfQIaMp+TpuuLlDachRWpUAeEu1u9B/v/8LToehUIWyiKcA/w5hUFRKuQ==} + '@typescript-eslint/types@8.31.1': + resolution: {integrity: sha512-SfepaEFUDQYRoA70DD9GtytljBePSj17qPxFHA/h3eg6lPTqGJ5mWOtbXCk1YrVU1cTJRd14nhaXWFu0l2troQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.31.0': - resolution: {integrity: sha512-xLmgn4Yl46xi6aDSZ9KkyfhhtnYI15/CvHbpOy/eR5NWhK/BK8wc709KKwhAR0m4ZKRP7h07bm4BWUYOCuRpQQ==} + '@typescript-eslint/typescript-estree@8.31.1': + resolution: {integrity: sha512-kaA0ueLe2v7KunYOyWYtlf/QhhZb7+qh4Yw6Ni5kgukMIG+iP773tjgBiLWIXYumWCwEq3nLW+TUywEp8uEeag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.31.0': - resolution: {integrity: sha512-qi6uPLt9cjTFxAb1zGNgTob4x9ur7xC6mHQJ8GwEzGMGE9tYniublmJaowOJ9V2jUzxrltTPfdG2nKlWsq0+Ww==} + '@typescript-eslint/utils@8.31.1': + resolution: {integrity: sha512-2DSI4SNfF5T4oRveQ4nUrSjUqjMND0nLq9rEkz0gfGr3tg0S5KB6DhwR+WZPCjzkZl3cH+4x2ce3EsL50FubjQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/visitor-keys@8.31.0': - resolution: {integrity: sha512-QcGHmlRHWOl93o64ZUMNewCdwKGU6WItOU52H0djgNmn1EOrhVudrDzXz4OycCRSCPwFCDrE2iIt5vmuUdHxuQ==} + '@typescript-eslint/visitor-keys@8.31.1': + resolution: {integrity: sha512-I+/rgqOVBn6f0o7NDTmAPWWC6NuqhV174lfYvAm9fUaWeiefLdux9/YI3/nLugEn9L8fcSi0XmpKi/r5u0nmpw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@umami/node@0.4.0': @@ -6431,11 +6283,6 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.25.0: - resolution: {integrity: sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==} - engines: {node: '>=18'} - hasBin: true - esbuild@0.25.2: resolution: {integrity: sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==} engines: {node: '>=18'} @@ -8844,9 +8691,6 @@ packages: resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} engines: {node: '>=18'} - pretty-print-error@1.1.2: - resolution: {integrity: sha512-XkKN3W8aeRYApO17WpzuaJZmqH3WNSFeqR4Sxt7vu+C7pcWB+3+JDJ2dnnhzSCqvC1IaYR36CVh4VsFZyBicQA==} - prismjs@1.27.0: resolution: {integrity: sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==} engines: {node: '>=6'} @@ -9914,8 +9758,8 @@ packages: resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} engines: {node: '>=18'} - testcontainers@10.24.2: - resolution: {integrity: sha512-Don3EXEQuSw14+nFG9pj48fL9ck/jXDfR9Rb0K3acOyn/gg97+gsnfZaLzpdejl9GcPJVKxACNRe3SYVC2uWqg==} + testcontainers@10.25.0: + resolution: {integrity: sha512-X3x6cjorEMgei1vVx3M7dnTMzWoWOTi4krpUf3C2iOvOcwsaMUHbca9J4yzpN65ieiWhcK2dA5dxpZyUonwC2Q==} text-decoder@1.2.0: resolution: {integrity: sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==} @@ -10129,8 +9973,8 @@ packages: resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} engines: {node: '>=0.6.x'} - tsx@4.19.3: - resolution: {integrity: sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==} + tsx@4.19.4: + resolution: {integrity: sha512-gK5GVzDkJK1SI1zwHf32Mqxf2tSJkNx+eYcNly5+nHvWqXUJYUkWBQtKauoESz3ymezAI++ZwT855x5p5eop+Q==} engines: {node: '>=18.0.0'} hasBin: true @@ -10244,8 +10088,8 @@ packages: types-ramda@0.30.1: resolution: {integrity: sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==} - typescript-eslint@8.31.0: - resolution: {integrity: sha512-u+93F0sB0An8WEAPtwxVhFby573E8ckdjwUUQUj9QA4v8JAvgtoDdIyYR3XFwFHq2W1KJ1AurwJCO+w+Y1ixyQ==} + typescript-eslint@8.31.1: + resolution: {integrity: sha512-j6DsEotD/fH39qKzXTQRwYYWlt7D+0HmfpOK+DVhwJOFLcdmn92hq3mBb7HlKJHbjjI/gTOqEcc9d6JfpFf/VA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -11266,9 +11110,6 @@ snapshots: '@esbuild/aix-ppc64@0.21.5': optional: true - '@esbuild/aix-ppc64@0.25.0': - optional: true - '@esbuild/aix-ppc64@0.25.2': optional: true @@ -11281,9 +11122,6 @@ snapshots: '@esbuild/android-arm64@0.21.5': optional: true - '@esbuild/android-arm64@0.25.0': - optional: true - '@esbuild/android-arm64@0.25.2': optional: true @@ -11296,9 +11134,6 @@ snapshots: '@esbuild/android-arm@0.21.5': optional: true - '@esbuild/android-arm@0.25.0': - optional: true - '@esbuild/android-arm@0.25.2': optional: true @@ -11311,9 +11146,6 @@ snapshots: '@esbuild/android-x64@0.21.5': optional: true - '@esbuild/android-x64@0.25.0': - optional: true - '@esbuild/android-x64@0.25.2': optional: true @@ -11326,9 +11158,6 @@ snapshots: '@esbuild/darwin-arm64@0.21.5': optional: true - '@esbuild/darwin-arm64@0.25.0': - optional: true - '@esbuild/darwin-arm64@0.25.2': optional: true @@ -11341,9 +11170,6 @@ snapshots: '@esbuild/darwin-x64@0.21.5': optional: true - '@esbuild/darwin-x64@0.25.0': - optional: true - '@esbuild/darwin-x64@0.25.2': optional: true @@ -11356,9 +11182,6 @@ snapshots: '@esbuild/freebsd-arm64@0.21.5': optional: true - '@esbuild/freebsd-arm64@0.25.0': - optional: true - '@esbuild/freebsd-arm64@0.25.2': optional: true @@ -11371,9 +11194,6 @@ snapshots: '@esbuild/freebsd-x64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.25.0': - optional: true - '@esbuild/freebsd-x64@0.25.2': optional: true @@ -11386,9 +11206,6 @@ snapshots: '@esbuild/linux-arm64@0.21.5': optional: true - '@esbuild/linux-arm64@0.25.0': - optional: true - '@esbuild/linux-arm64@0.25.2': optional: true @@ -11401,9 +11218,6 @@ snapshots: '@esbuild/linux-arm@0.21.5': optional: true - '@esbuild/linux-arm@0.25.0': - optional: true - '@esbuild/linux-arm@0.25.2': optional: true @@ -11416,9 +11230,6 @@ snapshots: '@esbuild/linux-ia32@0.21.5': optional: true - '@esbuild/linux-ia32@0.25.0': - optional: true - '@esbuild/linux-ia32@0.25.2': optional: true @@ -11431,9 +11242,6 @@ snapshots: '@esbuild/linux-loong64@0.21.5': optional: true - '@esbuild/linux-loong64@0.25.0': - optional: true - '@esbuild/linux-loong64@0.25.2': optional: true @@ -11446,9 +11254,6 @@ snapshots: '@esbuild/linux-mips64el@0.21.5': optional: true - '@esbuild/linux-mips64el@0.25.0': - optional: true - '@esbuild/linux-mips64el@0.25.2': optional: true @@ -11461,9 +11266,6 @@ snapshots: '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-ppc64@0.25.0': - optional: true - '@esbuild/linux-ppc64@0.25.2': optional: true @@ -11476,9 +11278,6 @@ snapshots: '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.25.0': - optional: true - '@esbuild/linux-riscv64@0.25.2': optional: true @@ -11491,9 +11290,6 @@ snapshots: '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/linux-s390x@0.25.0': - optional: true - '@esbuild/linux-s390x@0.25.2': optional: true @@ -11506,15 +11302,9 @@ snapshots: '@esbuild/linux-x64@0.21.5': optional: true - '@esbuild/linux-x64@0.25.0': - optional: true - '@esbuild/linux-x64@0.25.2': optional: true - '@esbuild/netbsd-arm64@0.25.0': - optional: true - '@esbuild/netbsd-arm64@0.25.2': optional: true @@ -11527,15 +11317,9 @@ snapshots: '@esbuild/netbsd-x64@0.21.5': optional: true - '@esbuild/netbsd-x64@0.25.0': - optional: true - '@esbuild/netbsd-x64@0.25.2': optional: true - '@esbuild/openbsd-arm64@0.25.0': - optional: true - '@esbuild/openbsd-arm64@0.25.2': optional: true @@ -11548,9 +11332,6 @@ snapshots: '@esbuild/openbsd-x64@0.21.5': optional: true - '@esbuild/openbsd-x64@0.25.0': - optional: true - '@esbuild/openbsd-x64@0.25.2': optional: true @@ -11563,9 +11344,6 @@ snapshots: '@esbuild/sunos-x64@0.21.5': optional: true - '@esbuild/sunos-x64@0.25.0': - optional: true - '@esbuild/sunos-x64@0.25.2': optional: true @@ -11578,9 +11356,6 @@ snapshots: '@esbuild/win32-arm64@0.21.5': optional: true - '@esbuild/win32-arm64@0.25.0': - optional: true - '@esbuild/win32-arm64@0.25.2': optional: true @@ -11593,9 +11368,6 @@ snapshots: '@esbuild/win32-ia32@0.21.5': optional: true - '@esbuild/win32-ia32@0.25.0': - optional: true - '@esbuild/win32-ia32@0.25.2': optional: true @@ -11608,9 +11380,6 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true - '@esbuild/win32-x64@0.25.0': - optional: true - '@esbuild/win32-x64@0.25.2': optional: true @@ -11908,7 +11677,7 @@ snapshots: '@kubernetes/client-node@1.1.2': dependencies: '@types/js-yaml': 4.0.9 - '@types/node': 22.15.2 + '@types/node': 22.15.3 '@types/node-fetch': 2.6.12 '@types/stream-buffers': 3.0.7 '@types/tar': 6.1.13 @@ -11943,22 +11712,22 @@ snapshots: js-base64: 3.7.7 optional: true - '@mantine/charts@7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(recharts@2.15.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0))': + '@mantine/charts@7.17.7(@mantine/core@7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.7(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(recharts@2.15.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0))': dependencies: - '@mantine/core': 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@mantine/hooks': 7.17.5(react@19.1.0) + '@mantine/core': 7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@mantine/hooks': 7.17.7(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) recharts: 2.15.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@mantine/colors-generator@7.17.5(chroma-js@3.1.2)': + '@mantine/colors-generator@7.17.7(chroma-js@3.1.2)': dependencies: chroma-js: 3.1.2 - '@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@mantine/core@7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@floating-ui/react': 0.26.28(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@mantine/hooks': 7.17.5(react@19.1.0) + '@mantine/hooks': 7.17.7(react@19.1.0) clsx: 2.1.1 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -11969,67 +11738,67 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@mantine/dates@7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@mantine/dates@7.17.7(@mantine/core@7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.7(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@mantine/core': 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@mantine/hooks': 7.17.5(react@19.1.0) + '@mantine/core': 7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@mantine/hooks': 7.17.7(react@19.1.0) clsx: 2.1.1 dayjs: 1.11.13 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - '@mantine/dropzone@7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@mantine/dropzone@7.17.7(@mantine/core@7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.7(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@mantine/core': 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@mantine/hooks': 7.17.5(react@19.1.0) + '@mantine/core': 7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@mantine/hooks': 7.17.7(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) react-dropzone-esm: 15.2.0(react@19.1.0) - '@mantine/form@7.17.5(react@19.1.0)': + '@mantine/form@7.17.7(react@19.1.0)': dependencies: fast-deep-equal: 3.1.3 klona: 2.0.6 react: 19.1.0 - '@mantine/hooks@7.17.5(react@19.1.0)': + '@mantine/hooks@7.17.7(react@19.1.0)': dependencies: react: 19.1.0 - '@mantine/modals@7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@mantine/modals@7.17.7(@mantine/core@7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.7(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@mantine/core': 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@mantine/hooks': 7.17.5(react@19.1.0) + '@mantine/core': 7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@mantine/hooks': 7.17.7(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - '@mantine/notifications@7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@mantine/notifications@7.17.7(@mantine/core@7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.7(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@mantine/core': 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@mantine/hooks': 7.17.5(react@19.1.0) - '@mantine/store': 7.17.5(react@19.1.0) + '@mantine/core': 7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@mantine/hooks': 7.17.7(react@19.1.0) + '@mantine/store': 7.17.7(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) react-transition-group: 4.4.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@mantine/spotlight@7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@mantine/spotlight@7.17.7(@mantine/core@7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.7(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@mantine/core': 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@mantine/hooks': 7.17.5(react@19.1.0) - '@mantine/store': 7.17.5(react@19.1.0) + '@mantine/core': 7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@mantine/hooks': 7.17.7(react@19.1.0) + '@mantine/store': 7.17.7(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - '@mantine/store@7.17.5(react@19.1.0)': + '@mantine/store@7.17.7(react@19.1.0)': dependencies: react: 19.1.0 - '@mantine/tiptap@7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(@tiptap/extension-link@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7))(@tiptap/react@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@mantine/tiptap@7.17.7(@mantine/core@7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.7(react@19.1.0))(@tiptap/extension-link@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9))(@tiptap/react@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@mantine/core': 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@mantine/hooks': 7.17.5(react@19.1.0) - '@tiptap/extension-link': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7) - '@tiptap/react': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@mantine/core': 7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@mantine/hooks': 7.17.7(react@19.1.0) + '@tiptap/extension-link': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9) + '@tiptap/react': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -13004,16 +12773,16 @@ snapshots: dependencies: tslib: 2.8.1 - '@t3-oss/env-core@0.13.0(arktype@2.1.20)(typescript@5.8.3)(zod@3.24.3)': + '@t3-oss/env-core@0.13.4(arktype@2.1.20)(typescript@5.8.3)(zod@3.24.3)': dependencies: arktype: 2.1.20 optionalDependencies: typescript: 5.8.3 zod: 3.24.3 - '@t3-oss/env-nextjs@0.13.0(arktype@2.1.20)(typescript@5.8.3)(zod@3.24.3)': + '@t3-oss/env-nextjs@0.13.4(arktype@2.1.20)(typescript@5.8.3)(zod@3.24.3)': dependencies: - '@t3-oss/env-core': 0.13.0(arktype@2.1.20)(typescript@5.8.3)(zod@3.24.3) + '@t3-oss/env-core': 0.13.4(arktype@2.1.20)(typescript@5.8.3)(zod@3.24.3) optionalDependencies: typescript: 5.8.3 zod: 3.24.3 @@ -13031,25 +12800,25 @@ snapshots: dependencies: remove-accents: 0.5.0 - '@tanstack/query-core@5.74.4': {} + '@tanstack/query-core@5.75.0': {} - '@tanstack/query-devtools@5.73.3': {} + '@tanstack/query-devtools@5.74.7': {} - '@tanstack/react-query-devtools@5.74.4(@tanstack/react-query@5.74.4(react@19.1.0))(react@19.1.0)': + '@tanstack/react-query-devtools@5.75.1(@tanstack/react-query@5.75.1(react@19.1.0))(react@19.1.0)': dependencies: - '@tanstack/query-devtools': 5.73.3 - '@tanstack/react-query': 5.74.4(react@19.1.0) + '@tanstack/query-devtools': 5.74.7 + '@tanstack/react-query': 5.75.1(react@19.1.0) react: 19.1.0 - '@tanstack/react-query-next-experimental@5.74.4(@tanstack/react-query@5.74.4(react@19.1.0))(next@15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react@19.1.0)': + '@tanstack/react-query-next-experimental@5.75.1(@tanstack/react-query@5.75.1(react@19.1.0))(next@15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react@19.1.0)': dependencies: - '@tanstack/react-query': 5.74.4(react@19.1.0) + '@tanstack/react-query': 5.75.1(react@19.1.0) next: 15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) react: 19.1.0 - '@tanstack/react-query@5.74.4(react@19.1.0)': + '@tanstack/react-query@5.75.1(react@19.1.0)': dependencies: - '@tanstack/query-core': 5.74.4 + '@tanstack/query-core': 5.75.0 react: 19.1.0 '@tanstack/react-table@8.20.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': @@ -13068,164 +12837,164 @@ snapshots: '@tanstack/virtual-core@3.11.2': {} - '@testcontainers/mysql@10.24.2': + '@testcontainers/mysql@10.25.0': dependencies: - testcontainers: 10.24.2 + testcontainers: 10.25.0 transitivePeerDependencies: - bare-buffer - supports-color - '@tiptap/core@2.11.7(@tiptap/pm@2.11.7)': + '@tiptap/core@2.11.9(@tiptap/pm@2.11.9)': dependencies: - '@tiptap/pm': 2.11.7 + '@tiptap/pm': 2.11.9 - '@tiptap/extension-blockquote@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': + '@tiptap/extension-blockquote@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) - '@tiptap/extension-bold@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': + '@tiptap/extension-bold@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) - '@tiptap/extension-bubble-menu@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7)': + '@tiptap/extension-bubble-menu@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9)': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) - '@tiptap/pm': 2.11.7 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) + '@tiptap/pm': 2.11.9 tippy.js: 6.3.7 - '@tiptap/extension-bullet-list@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': + '@tiptap/extension-bullet-list@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) - '@tiptap/extension-code-block@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7)': + '@tiptap/extension-code-block@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9)': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) - '@tiptap/pm': 2.11.7 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) + '@tiptap/pm': 2.11.9 - '@tiptap/extension-code@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': + '@tiptap/extension-code@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) - '@tiptap/extension-color@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/extension-text-style@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)))': + '@tiptap/extension-color@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/extension-text-style@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)))': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) - '@tiptap/extension-text-style': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) + '@tiptap/extension-text-style': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) - '@tiptap/extension-document@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': + '@tiptap/extension-document@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) - '@tiptap/extension-dropcursor@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7)': + '@tiptap/extension-dropcursor@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9)': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) - '@tiptap/pm': 2.11.7 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) + '@tiptap/pm': 2.11.9 - '@tiptap/extension-floating-menu@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7)': + '@tiptap/extension-floating-menu@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9)': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) - '@tiptap/pm': 2.11.7 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) + '@tiptap/pm': 2.11.9 tippy.js: 6.3.7 - '@tiptap/extension-gapcursor@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7)': + '@tiptap/extension-gapcursor@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9)': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) - '@tiptap/pm': 2.11.7 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) + '@tiptap/pm': 2.11.9 - '@tiptap/extension-hard-break@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': + '@tiptap/extension-hard-break@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) - '@tiptap/extension-heading@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': + '@tiptap/extension-heading@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) - '@tiptap/extension-highlight@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': + '@tiptap/extension-highlight@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) - '@tiptap/extension-history@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7)': + '@tiptap/extension-history@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9)': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) - '@tiptap/pm': 2.11.7 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) + '@tiptap/pm': 2.11.9 - '@tiptap/extension-horizontal-rule@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7)': + '@tiptap/extension-horizontal-rule@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9)': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) - '@tiptap/pm': 2.11.7 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) + '@tiptap/pm': 2.11.9 - '@tiptap/extension-image@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': + '@tiptap/extension-image@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) - '@tiptap/extension-italic@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': + '@tiptap/extension-italic@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) - '@tiptap/extension-link@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7)': + '@tiptap/extension-link@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9)': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) - '@tiptap/pm': 2.11.7 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) + '@tiptap/pm': 2.11.9 linkifyjs: 4.2.0 - '@tiptap/extension-list-item@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': + '@tiptap/extension-list-item@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) - '@tiptap/extension-ordered-list@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': + '@tiptap/extension-ordered-list@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) - '@tiptap/extension-paragraph@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': + '@tiptap/extension-paragraph@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) - '@tiptap/extension-strike@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': + '@tiptap/extension-strike@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) - '@tiptap/extension-table-cell@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': + '@tiptap/extension-table-cell@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) - '@tiptap/extension-table-header@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': + '@tiptap/extension-table-header@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) - '@tiptap/extension-table-row@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': + '@tiptap/extension-table-row@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) - '@tiptap/extension-table@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7)': + '@tiptap/extension-table@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9)': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) - '@tiptap/pm': 2.11.7 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) + '@tiptap/pm': 2.11.9 - '@tiptap/extension-task-item@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7)': + '@tiptap/extension-task-item@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9)': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) - '@tiptap/pm': 2.11.7 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) + '@tiptap/pm': 2.11.9 - '@tiptap/extension-task-list@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': + '@tiptap/extension-task-list@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) - '@tiptap/extension-text-align@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': + '@tiptap/extension-text-align@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) - '@tiptap/extension-text-style@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': + '@tiptap/extension-text-style@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) - '@tiptap/extension-text@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': + '@tiptap/extension-text@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) - '@tiptap/extension-underline@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))': + '@tiptap/extension-underline@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) - '@tiptap/pm@2.11.7': + '@tiptap/pm@2.11.9': dependencies: prosemirror-changeset: 2.2.1 prosemirror-collab: 1.3.1 @@ -13246,41 +13015,41 @@ snapshots: prosemirror-transform: 1.10.2 prosemirror-view: 1.37.2 - '@tiptap/react@2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@tiptap/react@2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) - '@tiptap/extension-bubble-menu': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7) - '@tiptap/extension-floating-menu': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7) - '@tiptap/pm': 2.11.7 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) + '@tiptap/extension-bubble-menu': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9) + '@tiptap/extension-floating-menu': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9) + '@tiptap/pm': 2.11.9 '@types/use-sync-external-store': 0.0.6 fast-deep-equal: 3.1.3 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) use-sync-external-store: 1.4.0(react@19.1.0) - '@tiptap/starter-kit@2.11.7': + '@tiptap/starter-kit@2.11.9': dependencies: - '@tiptap/core': 2.11.7(@tiptap/pm@2.11.7) - '@tiptap/extension-blockquote': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) - '@tiptap/extension-bold': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) - '@tiptap/extension-bullet-list': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) - '@tiptap/extension-code': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) - '@tiptap/extension-code-block': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7) - '@tiptap/extension-document': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) - '@tiptap/extension-dropcursor': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7) - '@tiptap/extension-gapcursor': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7) - '@tiptap/extension-hard-break': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) - '@tiptap/extension-heading': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) - '@tiptap/extension-history': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7) - '@tiptap/extension-horizontal-rule': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7))(@tiptap/pm@2.11.7) - '@tiptap/extension-italic': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) - '@tiptap/extension-list-item': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) - '@tiptap/extension-ordered-list': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) - '@tiptap/extension-paragraph': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) - '@tiptap/extension-strike': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) - '@tiptap/extension-text': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) - '@tiptap/extension-text-style': 2.11.7(@tiptap/core@2.11.7(@tiptap/pm@2.11.7)) - '@tiptap/pm': 2.11.7 + '@tiptap/core': 2.11.9(@tiptap/pm@2.11.9) + '@tiptap/extension-blockquote': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) + '@tiptap/extension-bold': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) + '@tiptap/extension-bullet-list': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) + '@tiptap/extension-code': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) + '@tiptap/extension-code-block': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9) + '@tiptap/extension-document': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) + '@tiptap/extension-dropcursor': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9) + '@tiptap/extension-gapcursor': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9) + '@tiptap/extension-hard-break': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) + '@tiptap/extension-heading': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) + '@tiptap/extension-history': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9) + '@tiptap/extension-horizontal-rule': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9))(@tiptap/pm@2.11.9) + '@tiptap/extension-italic': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) + '@tiptap/extension-list-item': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) + '@tiptap/extension-ordered-list': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) + '@tiptap/extension-paragraph': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) + '@tiptap/extension-strike': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) + '@tiptap/extension-text': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) + '@tiptap/extension-text-style': 2.11.9(@tiptap/core@2.11.9(@tiptap/pm@2.11.9)) + '@tiptap/pm': 2.11.9 '@tootallnate/quickjs-emscripten@0.23.0': {} @@ -13292,36 +13061,45 @@ snapshots: tree-sitter: 0.22.1 optional: true - '@trpc/client@11.1.1(@trpc/server@11.1.1(typescript@5.8.3))(typescript@5.8.3)': + '@trpc/client@11.1.2(@trpc/server@11.1.2(typescript@5.8.3))(typescript@5.8.3)': dependencies: - '@trpc/server': 11.1.1(typescript@5.8.3) + '@trpc/server': 11.1.2(typescript@5.8.3) typescript: 5.8.3 - '@trpc/next@11.1.1(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.1(@trpc/server@11.1.1(typescript@5.8.3))(typescript@5.8.3))(@trpc/react-query@11.1.1(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.1(@trpc/server@11.1.1(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.1(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3))(@trpc/server@11.1.1(typescript@5.8.3))(next@15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)': + '@trpc/next@11.1.2(@tanstack/react-query@5.75.1(react@19.1.0))(@trpc/client@11.1.2(@trpc/server@11.1.2(typescript@5.8.3))(typescript@5.8.3))(@trpc/react-query@11.1.2(@tanstack/react-query@5.75.1(react@19.1.0))(@trpc/client@11.1.2(@trpc/server@11.1.2(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.2(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3))(@trpc/server@11.1.2(typescript@5.8.3))(next@15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)': dependencies: - '@trpc/client': 11.1.1(@trpc/server@11.1.1(typescript@5.8.3))(typescript@5.8.3) - '@trpc/server': 11.1.1(typescript@5.8.3) + '@trpc/client': 11.1.2(@trpc/server@11.1.2(typescript@5.8.3))(typescript@5.8.3) + '@trpc/server': 11.1.2(typescript@5.8.3) next: 15.3.1(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) typescript: 5.8.3 optionalDependencies: - '@tanstack/react-query': 5.74.4(react@19.1.0) - '@trpc/react-query': 11.1.1(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.1(@trpc/server@11.1.1(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.1(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) + '@tanstack/react-query': 5.75.1(react@19.1.0) + '@trpc/react-query': 11.1.2(@tanstack/react-query@5.75.1(react@19.1.0))(@trpc/client@11.1.2(@trpc/server@11.1.2(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.2(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) - '@trpc/react-query@11.1.1(@tanstack/react-query@5.74.4(react@19.1.0))(@trpc/client@11.1.1(@trpc/server@11.1.1(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.1(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)': + '@trpc/react-query@11.1.2(@tanstack/react-query@5.75.1(react@19.1.0))(@trpc/client@11.1.2(@trpc/server@11.1.2(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.2(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)': dependencies: - '@tanstack/react-query': 5.74.4(react@19.1.0) - '@trpc/client': 11.1.1(@trpc/server@11.1.1(typescript@5.8.3))(typescript@5.8.3) - '@trpc/server': 11.1.1(typescript@5.8.3) + '@tanstack/react-query': 5.75.1(react@19.1.0) + '@trpc/client': 11.1.2(@trpc/server@11.1.2(typescript@5.8.3))(typescript@5.8.3) + '@trpc/server': 11.1.2(typescript@5.8.3) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) typescript: 5.8.3 - '@trpc/server@11.1.1(typescript@5.8.3)': + '@trpc/server@11.1.2(typescript@5.8.3)': dependencies: typescript: 5.8.3 + '@trpc/tanstack-react-query@11.1.2(@tanstack/react-query@5.75.1(react@19.1.0))(@trpc/client@11.1.2(@trpc/server@11.1.2(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.1.2(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)': + dependencies: + '@tanstack/react-query': 5.75.1(react@19.1.0) + '@trpc/client': 11.1.2(@trpc/server@11.1.2(typescript@5.8.3))(typescript@5.8.3) + '@trpc/server': 11.1.2(typescript@5.8.3) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + typescript: 5.8.3 + '@tsconfig/node10@1.0.11': {} '@tsconfig/node12@1.0.11': {} @@ -13332,7 +13110,7 @@ snapshots: '@tsconfig/svelte@1.0.13': {} - '@turbo/gen@2.5.2(@types/node@22.15.2)(typescript@5.8.3)': + '@turbo/gen@2.5.2(@types/node@22.15.3)(typescript@5.8.3)': dependencies: '@turbo/workspaces': 2.5.2 commander: 10.0.1 @@ -13342,7 +13120,7 @@ snapshots: node-plop: 0.26.3 picocolors: 1.0.1 proxy-agent: 6.5.0 - ts-node: 10.9.2(@types/node@22.15.2)(typescript@5.8.3) + ts-node: 10.9.2(@types/node@22.15.3)(typescript@5.8.3) update-check: 1.5.4 validate-npm-package-name: 5.0.1 transitivePeerDependencies: @@ -13368,11 +13146,11 @@ snapshots: '@types/adm-zip@0.5.7': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.3 '@types/asn1@0.2.4': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.3 '@types/aws-lambda@8.10.146': {} @@ -13399,22 +13177,22 @@ snapshots: '@types/bcrypt@5.0.2': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.3 '@types/better-sqlite3@7.6.13': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.3 '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.15.2 + '@types/node': 22.15.3 '@types/chroma-js@3.1.1': {} '@types/connect@3.4.38': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.3 '@types/cookie@0.4.1': {} @@ -13423,11 +13201,11 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 4.17.21 '@types/keygrip': 1.0.6 - '@types/node': 22.15.2 + '@types/node': 22.15.3 '@types/cors@2.8.17': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.3 '@types/css-font-loading-module@0.0.7': {} @@ -13463,13 +13241,13 @@ snapshots: '@types/docker-modem@3.0.6': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.3 '@types/ssh2': 1.15.1 '@types/dockerode@3.3.38': dependencies: '@types/docker-modem': 3.0.6 - '@types/node': 22.15.2 + '@types/node': 22.15.3 '@types/ssh2': 1.15.1 '@types/estree-jsx@1.0.5': @@ -13482,7 +13260,7 @@ snapshots: '@types/express-serve-static-core@4.19.5': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.3 '@types/qs': 6.9.16 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -13497,7 +13275,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 22.15.2 + '@types/node': 22.15.3 '@types/hast@2.3.10': dependencies: @@ -13545,7 +13323,7 @@ snapshots: '@types/node-fetch@2.6.12': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.3 form-data: 4.0.1 '@types/node-unifi@2.5.1': @@ -13556,7 +13334,7 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/node@22.15.2': + '@types/node@22.15.3': dependencies: undici-types: 6.21.0 @@ -13572,7 +13350,7 @@ snapshots: '@types/range-parser@1.2.7': {} - '@types/react-dom@19.1.2(@types/react@19.1.2)': + '@types/react-dom@19.1.3(@types/react@19.1.2)': dependencies: '@types/react': 19.1.2 @@ -13585,21 +13363,21 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.15.2 + '@types/node': 22.15.3 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.15.2 + '@types/node': 22.15.3 '@types/send': 0.17.4 '@types/ssh2-streams@0.1.12': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.3 '@types/ssh2@0.5.52': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.3 '@types/ssh2-streams': 0.1.12 '@types/ssh2@1.15.1': @@ -13608,7 +13386,7 @@ snapshots: '@types/stream-buffers@3.0.7': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.3 '@types/swagger-ui-react@5.18.0': dependencies: @@ -13616,12 +13394,12 @@ snapshots: '@types/tar@6.1.13': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.3 minipass: 4.2.8 '@types/through@0.0.33': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.3 '@types/tinycolor2@1.4.6': {} @@ -13640,20 +13418,20 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.3 '@types/xml2js@0.4.14': dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.3 - '@typescript-eslint/eslint-plugin@8.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.31.0(eslint@9.25.1)(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.31.0 - '@typescript-eslint/type-utils': 8.31.0(eslint@9.25.1)(typescript@5.8.3) - '@typescript-eslint/utils': 8.31.0(eslint@9.25.1)(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.31.0 + '@typescript-eslint/parser': 8.31.1(eslint@9.25.1)(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.31.1 + '@typescript-eslint/type-utils': 8.31.1(eslint@9.25.1)(typescript@5.8.3) + '@typescript-eslint/utils': 8.31.1(eslint@9.25.1)(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.31.1 eslint: 9.25.1 graphemer: 1.4.0 ignore: 5.3.2 @@ -13663,27 +13441,27 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3)': + '@typescript-eslint/parser@8.31.1(eslint@9.25.1)(typescript@5.8.3)': dependencies: - '@typescript-eslint/scope-manager': 8.31.0 - '@typescript-eslint/types': 8.31.0 - '@typescript-eslint/typescript-estree': 8.31.0(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.31.0 + '@typescript-eslint/scope-manager': 8.31.1 + '@typescript-eslint/types': 8.31.1 + '@typescript-eslint/typescript-estree': 8.31.1(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.31.1 debug: 4.4.0 eslint: 9.25.1 typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.31.0': + '@typescript-eslint/scope-manager@8.31.1': dependencies: - '@typescript-eslint/types': 8.31.0 - '@typescript-eslint/visitor-keys': 8.31.0 + '@typescript-eslint/types': 8.31.1 + '@typescript-eslint/visitor-keys': 8.31.1 - '@typescript-eslint/type-utils@8.31.0(eslint@9.25.1)(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.31.1(eslint@9.25.1)(typescript@5.8.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.31.0(typescript@5.8.3) - '@typescript-eslint/utils': 8.31.0(eslint@9.25.1)(typescript@5.8.3) + '@typescript-eslint/typescript-estree': 8.31.1(typescript@5.8.3) + '@typescript-eslint/utils': 8.31.1(eslint@9.25.1)(typescript@5.8.3) debug: 4.4.0 eslint: 9.25.1 ts-api-utils: 2.0.1(typescript@5.8.3) @@ -13691,12 +13469,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.31.0': {} + '@typescript-eslint/types@8.31.1': {} - '@typescript-eslint/typescript-estree@8.31.0(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.31.1(typescript@5.8.3)': dependencies: - '@typescript-eslint/types': 8.31.0 - '@typescript-eslint/visitor-keys': 8.31.0 + '@typescript-eslint/types': 8.31.1 + '@typescript-eslint/visitor-keys': 8.31.1 debug: 4.4.0 fast-glob: 3.3.2 is-glob: 4.0.3 @@ -13707,20 +13485,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.31.0(eslint@9.25.1)(typescript@5.8.3)': + '@typescript-eslint/utils@8.31.1(eslint@9.25.1)(typescript@5.8.3)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.25.1) - '@typescript-eslint/scope-manager': 8.31.0 - '@typescript-eslint/types': 8.31.0 - '@typescript-eslint/typescript-estree': 8.31.0(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.31.1 + '@typescript-eslint/types': 8.31.1 + '@typescript-eslint/typescript-estree': 8.31.1(typescript@5.8.3) eslint: 9.25.1 typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.31.0': + '@typescript-eslint/visitor-keys@8.31.1': dependencies: - '@typescript-eslint/types': 8.31.0 + '@typescript-eslint/types': 8.31.1 eslint-visitor-keys: 4.2.0 '@umami/node@0.4.0': {} @@ -13755,14 +13533,14 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-react@4.4.1(vite@5.4.5(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0))': + '@vitejs/plugin-react@4.4.1(vite@5.4.5(@types/node@22.15.3)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0))': dependencies: '@babel/core': 7.26.10 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 5.4.5(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite: 5.4.5(@types/node@22.15.3)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) transitivePeerDependencies: - supports-color @@ -13780,7 +13558,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.1.2(@types/debug@4.1.12)(@types/node@22.15.2)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vitest: 3.1.2(@types/debug@4.1.12)(@types/node@22.15.3)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) transitivePeerDependencies: - supports-color @@ -13791,13 +13569,13 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.1.2(vite@5.4.5(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0))': + '@vitest/mocker@3.1.2(vite@5.4.5(@types/node@22.15.3)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0))': dependencies: '@vitest/spy': 3.1.2 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 5.4.5(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite: 5.4.5(@types/node@22.15.3)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) '@vitest/pretty-format@3.1.2': dependencies: @@ -13827,7 +13605,7 @@ snapshots: sirv: 3.0.1 tinyglobby: 0.2.13 tinyrainbow: 2.0.0 - vitest: 3.1.2(@types/debug@4.1.12)(@types/node@22.15.2)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vitest: 3.1.2(@types/debug@4.1.12)(@types/node@22.15.3)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) '@vitest/utils@3.1.2': dependencies: @@ -15134,7 +14912,7 @@ snapshots: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 22.15.2 + '@types/node': 22.15.3 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -15412,34 +15190,6 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 - esbuild@0.25.0: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.0 - '@esbuild/android-arm': 0.25.0 - '@esbuild/android-arm64': 0.25.0 - '@esbuild/android-x64': 0.25.0 - '@esbuild/darwin-arm64': 0.25.0 - '@esbuild/darwin-x64': 0.25.0 - '@esbuild/freebsd-arm64': 0.25.0 - '@esbuild/freebsd-x64': 0.25.0 - '@esbuild/linux-arm': 0.25.0 - '@esbuild/linux-arm64': 0.25.0 - '@esbuild/linux-ia32': 0.25.0 - '@esbuild/linux-loong64': 0.25.0 - '@esbuild/linux-mips64el': 0.25.0 - '@esbuild/linux-ppc64': 0.25.0 - '@esbuild/linux-riscv64': 0.25.0 - '@esbuild/linux-s390x': 0.25.0 - '@esbuild/linux-x64': 0.25.0 - '@esbuild/netbsd-arm64': 0.25.0 - '@esbuild/netbsd-x64': 0.25.0 - '@esbuild/openbsd-arm64': 0.25.0 - '@esbuild/openbsd-x64': 0.25.0 - '@esbuild/sunos-x64': 0.25.0 - '@esbuild/win32-arm64': 0.25.0 - '@esbuild/win32-ia32': 0.25.0 - '@esbuild/win32-x64': 0.25.0 - esbuild@0.25.2: optionalDependencies: '@esbuild/aix-ppc64': 0.25.2 @@ -15504,17 +15254,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.25.1): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.31.1(eslint@9.25.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.25.1): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.31.0(eslint@9.25.1)(typescript@5.8.3) + '@typescript-eslint/parser': 8.31.1(eslint@9.25.1)(typescript@5.8.3) eslint: 9.25.1 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.31.1(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -15525,7 +15275,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.25.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.25.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.31.1(eslint@9.25.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.25.1) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -15537,7 +15287,7 @@ snapshots: string.prototype.trimend: 1.0.8 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.31.0(eslint@9.25.1)(typescript@5.8.3) + '@typescript-eslint/parser': 8.31.1(eslint@9.25.1)(typescript@5.8.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -16761,7 +16511,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.3 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -17030,11 +16780,11 @@ snapshots: make-error@1.3.6: {} - mantine-react-table@2.0.0-beta.9(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/dates@7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(@tabler/icons-react@3.31.0(react@19.1.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + mantine-react-table@2.0.0-beta.9(@mantine/core@7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/dates@7.17.7(@mantine/core@7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.7(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.7(react@19.1.0))(@tabler/icons-react@3.31.0(react@19.1.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: - '@mantine/core': 7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@mantine/dates': 7.17.5(@mantine/core@7.17.5(@mantine/hooks@7.17.5(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.5(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@mantine/hooks': 7.17.5(react@19.1.0) + '@mantine/core': 7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@mantine/dates': 7.17.7(@mantine/core@7.17.7(@mantine/hooks@7.17.7(react@19.1.0))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@mantine/hooks@7.17.7(react@19.1.0))(dayjs@1.11.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@mantine/hooks': 7.17.7(react@19.1.0) '@tabler/icons-react': 3.31.0(react@19.1.0) '@tanstack/match-sorter-utils': 8.19.4 '@tanstack/react-table': 8.20.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -18110,10 +17860,6 @@ snapshots: dependencies: parse-ms: 4.0.0 - pretty-print-error@1.1.2(patch_hash=d1432e02330bdaf8359eb0e54528a74ed6b7e5cce6bb65c13310c82e34fd1e4d): - dependencies: - kleur: 4.1.5 - prismjs@1.27.0: {} prismjs@1.30.0: {} @@ -18261,7 +18007,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 22.15.2 + '@types/node': 22.15.3 long: 5.2.3 proxmox-api@1.1.1: @@ -19528,7 +19274,7 @@ snapshots: glob: 10.4.5 minimatch: 9.0.5 - testcontainers@10.24.2: + testcontainers@10.25.0: dependencies: '@balena/dockerignore': 1.0.2 '@types/dockerode': 3.3.38 @@ -19685,9 +19431,9 @@ snapshots: trough@2.2.0: {} - trpc-to-openapi@2.2.0(@trpc/server@11.1.1(typescript@5.8.3))(zod-openapi@2.19.0(zod@3.24.3))(zod@3.24.3): + trpc-to-openapi@2.2.0(@trpc/server@11.1.2(typescript@5.8.3))(zod-openapi@2.19.0(zod@3.24.3))(zod@3.24.3): dependencies: - '@trpc/server': 11.1.1(typescript@5.8.3) + '@trpc/server': 11.1.2(typescript@5.8.3) co-body: 6.2.0 h3: 1.15.1 openapi3-ts: 4.4.0 @@ -19702,14 +19448,14 @@ snapshots: ts-mixer@6.0.4: {} - ts-node@10.9.2(@types/node@22.15.2)(typescript@5.8.3): + ts-node@10.9.2(@types/node@22.15.3)(typescript@5.8.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.15.2 + '@types/node': 22.15.3 acorn: 8.14.1 acorn-walk: 8.3.4 arg: 4.1.3 @@ -19751,9 +19497,9 @@ snapshots: tsscmp@1.0.6: {} - tsx@4.19.3: + tsx@4.19.4: dependencies: - esbuild: 0.25.0 + esbuild: 0.25.2 get-tsconfig: 4.8.1 optionalDependencies: fsevents: 2.3.3 @@ -19885,11 +19631,11 @@ snapshots: dependencies: ts-toolbelt: 9.6.0 - typescript-eslint@8.31.0(eslint@9.25.1)(typescript@5.8.3): + typescript-eslint@8.31.1(eslint@9.25.1)(typescript@5.8.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)(typescript@5.8.3) - '@typescript-eslint/parser': 8.31.0(eslint@9.25.1)(typescript@5.8.3) - '@typescript-eslint/utils': 8.31.0(eslint@9.25.1)(typescript@5.8.3) + '@typescript-eslint/eslint-plugin': 8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)(typescript@5.8.3) + '@typescript-eslint/parser': 8.31.1(eslint@9.25.1)(typescript@5.8.3) + '@typescript-eslint/utils': 8.31.1(eslint@9.25.1)(typescript@5.8.3) eslint: 9.25.1 typescript: 5.8.3 transitivePeerDependencies: @@ -20183,13 +19929,13 @@ snapshots: dependencies: global: 4.4.0 - vite-node@3.1.2(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): + vite-node@3.1.2(@types/node@22.15.3)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 2.0.3 - vite: 5.4.5(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite: 5.4.5(@types/node@22.15.3)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) transitivePeerDependencies: - '@types/node' - less @@ -20201,33 +19947,33 @@ snapshots: - supports-color - terser - vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@5.4.5(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)): + vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@5.4.5(@types/node@22.15.3)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)): dependencies: debug: 4.3.7 globrex: 0.1.2 tsconfck: 3.1.3(typescript@5.8.3) optionalDependencies: - vite: 5.4.5(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite: 5.4.5(@types/node@22.15.3)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) transitivePeerDependencies: - supports-color - typescript - vite@5.4.5(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): + vite@5.4.5(@types/node@22.15.3)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): dependencies: esbuild: 0.21.5 postcss: 8.4.47 rollup: 4.21.3 optionalDependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.3 fsevents: 2.3.3 sass: 1.87.0 sugarss: 4.0.1(postcss@8.4.47) terser: 5.39.0 - vitest@3.1.2(@types/debug@4.1.12)(@types/node@22.15.2)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): + vitest@3.1.2(@types/debug@4.1.12)(@types/node@22.15.3)(@vitest/ui@3.1.2)(jsdom@26.1.0)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): dependencies: '@vitest/expect': 3.1.2 - '@vitest/mocker': 3.1.2(vite@5.4.5(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) + '@vitest/mocker': 3.1.2(vite@5.4.5(@types/node@22.15.3)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) '@vitest/pretty-format': 3.1.2 '@vitest/runner': 3.1.2 '@vitest/snapshot': 3.1.2 @@ -20244,12 +19990,12 @@ snapshots: tinyglobby: 0.2.13 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 5.4.5(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) - vite-node: 3.1.2(@types/node@22.15.2)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite: 5.4.5(@types/node@22.15.3)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite-node: 3.1.2(@types/node@22.15.3)(sass@1.87.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 - '@types/node': 22.15.2 + '@types/node': 22.15.3 '@vitest/ui': 3.1.2(vitest@3.1.2) jsdom: 26.1.0 transitivePeerDependencies: diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index 920127195..57b8e914b 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -24,7 +24,7 @@ "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^5.2.0", - "typescript-eslint": "^8.31.0" + "typescript-eslint": "^8.31.1" }, "devDependencies": { "@homarr/prettier-config": "workspace:^0.1.0",