From c43a2f04880f7f1423ac5d3b0bb48b349179d570 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sun, 26 Jan 2025 22:16:27 +0100 Subject: [PATCH] refactor: move zod import from validation package to zod (#2111) * refactor: move zod import from validation package to zod * refactor: move missing zod imports --- apps/nextjs/package.json | 3 ++- .../auth/invite/[id]/_registration-form.tsx | 2 +- .../app/[locale]/auth/login/_login-form.tsx | 3 ++- .../[locale]/init/_steps/group/init-group.tsx | 2 +- .../init/_steps/settings/init-settings.tsx | 2 +- .../init/_steps/user/init-user-form.tsx | 2 +- .../src/app/[locale]/manage/apps/_form.tsx | 2 +- .../manage/apps/edit/[id]/_app-edit-form.tsx | 3 ++- .../manage/apps/new/_app-new-form.tsx | 3 ++- .../src/app/[locale]/manage/apps/page.tsx | 2 +- .../edit/[id]/_integration-edit-form.tsx | 2 +- .../new/_integration-new-form.tsx | 2 +- .../[locale]/manage/integrations/new/page.tsx | 2 +- .../src/app/[locale]/manage/medias/page.tsx | 2 +- .../[locale]/manage/search-engines/_form.tsx | 2 +- .../edit/[id]/_search-engine-edit-form.tsx | 3 ++- .../new/_search-engine-new-form.tsx | 3 ++- .../[locale]/manage/search-engines/page.tsx | 2 +- .../_components/add-certificate.tsx | 3 ++- .../_change-default-search-engine.tsx | 2 +- .../_components/_change-home-board.tsx | 2 +- .../_components/_first-day-of-week.tsx | 2 +- .../_components/_ping-icons-enabled.tsx | 2 +- .../_components/create-user-stepper.tsx | 3 ++- .../app/[locale]/manage/users/groups/page.tsx | 2 +- .../board/items/item-move-modal.tsx | 2 +- .../board/modals/board-rename-modal.tsx | 2 +- .../sections/category/category-edit-modal.tsx | 2 +- packages/api/package.json | 3 ++- packages/api/src/middlewares/integration.ts | 2 +- packages/api/src/middlewares/item.ts | 2 +- packages/api/src/router/app.ts | 3 ++- packages/api/src/router/board.ts | 3 ++- .../api/src/router/docker/docker-router.ts | 2 +- packages/api/src/router/group.ts | 3 ++- .../api/src/router/import/import-router.ts | 3 ++- .../router/integration/integration-router.ts | 3 ++- packages/api/src/router/invite.ts | 2 +- packages/api/src/router/location.ts | 3 ++- .../api/src/router/medias/media-router.ts | 3 ++- .../api/src/router/onboard/onboard-router.ts | 4 +++- .../search-engine/search-engine-router.ts | 3 ++- packages/api/src/router/serverSettings.ts | 4 +++- packages/api/src/router/user.ts | 3 ++- packages/api/src/router/widgets/app.ts | 2 +- packages/api/src/router/widgets/calendar.ts | 3 ++- packages/api/src/router/widgets/downloads.ts | 2 +- .../api/src/router/widgets/media-requests.ts | 2 +- packages/api/src/router/widgets/notebook.ts | 2 +- packages/api/src/router/widgets/rssFeed.ts | 3 ++- packages/api/src/router/widgets/smart-home.ts | 2 +- packages/api/src/schema-merger.ts | 4 ++-- packages/api/src/trpc.ts | 2 +- packages/auth/package.json | 3 ++- .../authorization/basic-authorization.ts | 3 ++- .../authorization/ldap-authorization.ts | 2 +- packages/auth/test/session.spec.ts | 3 +-- packages/form/package.json | 3 ++- packages/form/src/index.ts | 4 ++-- packages/form/src/messages.ts | 5 +++-- packages/integrations/package.json | 3 ++- .../src/adguard-home/adguard-home-types.ts | 2 +- packages/integrations/src/base/integration.ts | 2 +- .../src/base/test-connection-error.ts | 3 ++- .../src/dashdot/dashdot-integration.ts | 2 +- .../download-client/sabnzbd/sabnzbd-schema.ts | 2 +- .../src/homeassistant/homeassistant-types.ts | 2 +- .../downloads/download-client-items.ts | 3 ++- .../lidarr/lidarr-integration.ts | 3 ++- .../radarr/radarr-integration.ts | 3 ++- .../readarr/readarr-integration.ts | 3 ++- .../sonarr/sonarr-integration.ts | 3 ++- .../media-transcoding/tdarr-integration.ts | 3 ++- .../tdarr-validation-schemas.ts | 2 +- .../src/overseerr/overseerr-integration.ts | 3 ++- .../integrations/src/pi-hole/pi-hole-types.ts | 2 +- .../src/prowlarr/prowlarr-types.ts | 2 +- packages/modals-collection/package.json | 3 ++- .../src/boards/import-board-modal.tsx | 2 +- .../src/docker/add-docker-app-to-homarr.tsx | 2 +- packages/validation/index.ts | 1 - packages/widgets/package.json | 3 ++- packages/widgets/src/calendar/index.ts | 2 +- packages/widgets/src/downloads/index.ts | 2 +- .../widgets/src/media-transcoding/index.ts | 3 +-- .../src/minecraft/server-status/index.ts | 3 +-- .../widgets/src/modals/widget-edit-modal.tsx | 2 +- packages/widgets/src/options.ts | 4 ++-- packages/widgets/src/rssFeed/index.ts | 3 +-- packages/widgets/src/weather/index.ts | 3 +-- pnpm-lock.yaml | 21 +++++++++++++++++++ 91 files changed, 153 insertions(+), 99 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 4c53e9293..21f9616a7 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -78,7 +78,8 @@ "sass": "^1.83.4", "superjson": "2.2.2", "swagger-ui-react": "^5.18.2", - "use-deep-compare-effect": "^1.8.1" + "use-deep-compare-effect": "^1.8.1", + "zod": "^3.24.1" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/apps/nextjs/src/app/[locale]/auth/invite/[id]/_registration-form.tsx b/apps/nextjs/src/app/[locale]/auth/invite/[id]/_registration-form.tsx index 4c86fa61b..3f2689234 100644 --- a/apps/nextjs/src/app/[locale]/auth/invite/[id]/_registration-form.tsx +++ b/apps/nextjs/src/app/[locale]/auth/invite/[id]/_registration-form.tsx @@ -2,13 +2,13 @@ import { useRouter } from "next/navigation"; import { Button, PasswordInput, Stack, TextInput } from "@mantine/core"; +import type { z } from "zod"; import { clientApi } from "@homarr/api/client"; import { useZodForm } from "@homarr/form"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useScopedI18n } from "@homarr/translation/client"; import { CustomPasswordInput } from "@homarr/ui"; -import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; interface RegistrationFormProps { diff --git a/apps/nextjs/src/app/[locale]/auth/login/_login-form.tsx b/apps/nextjs/src/app/[locale]/auth/login/_login-form.tsx index f4ce00f67..6a013101f 100644 --- a/apps/nextjs/src/app/[locale]/auth/login/_login-form.tsx +++ b/apps/nextjs/src/app/[locale]/auth/login/_login-form.tsx @@ -5,6 +5,7 @@ import { useCallback, useEffect, useRef, useState } from "react"; import { useRouter } from "next/navigation"; import { Anchor, Button, Card, Code, Collapse, Divider, PasswordInput, Stack, Text, TextInput } from "@mantine/core"; import { useDisclosure } from "@mantine/hooks"; +import { z } from "zod"; import { signIn } from "@homarr/auth/client"; import { revalidatePathActionAsync } from "@homarr/common/client"; @@ -12,7 +13,7 @@ import type { useForm } from "@homarr/form"; import { useZodForm } from "@homarr/form"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useScopedI18n } from "@homarr/translation/client"; -import { validation, z } from "@homarr/validation"; +import { validation } from "@homarr/validation"; interface LoginFormProps { providers: string[]; diff --git a/apps/nextjs/src/app/[locale]/init/_steps/group/init-group.tsx b/apps/nextjs/src/app/[locale]/init/_steps/group/init-group.tsx index 93839a457..849891220 100644 --- a/apps/nextjs/src/app/[locale]/init/_steps/group/init-group.tsx +++ b/apps/nextjs/src/app/[locale]/init/_steps/group/init-group.tsx @@ -2,12 +2,12 @@ import { Button, Card, Stack, TextInput } from "@mantine/core"; import { IconArrowRight } from "@tabler/icons-react"; +import type { z } from "zod"; import { clientApi } from "@homarr/api/client"; import { revalidatePathActionAsync } from "@homarr/common/client"; import { useZodForm } from "@homarr/form"; import { useI18n } from "@homarr/translation/client"; -import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; export const InitGroup = () => { diff --git a/apps/nextjs/src/app/[locale]/init/_steps/settings/init-settings.tsx b/apps/nextjs/src/app/[locale]/init/_steps/settings/init-settings.tsx index 90e8c7a8d..3d40a4445 100644 --- a/apps/nextjs/src/app/[locale]/init/_steps/settings/init-settings.tsx +++ b/apps/nextjs/src/app/[locale]/init/_steps/settings/init-settings.tsx @@ -3,6 +3,7 @@ import { startTransition } from "react"; import { Button, Card, Group, Stack, Switch, Text } from "@mantine/core"; import { IconArrowRight } from "@tabler/icons-react"; +import type { z } from "zod"; import { clientApi } from "@homarr/api/client"; import { revalidatePathActionAsync } from "@homarr/common/client"; @@ -11,7 +12,6 @@ import type { CheckboxProps } from "@homarr/form/types"; import { defaultServerSettings } from "@homarr/server-settings"; import type { TranslationObject } from "@homarr/translation"; import { useI18n, useScopedI18n } from "@homarr/translation/client"; -import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; export const InitSettings = () => { diff --git a/apps/nextjs/src/app/[locale]/init/_steps/user/init-user-form.tsx b/apps/nextjs/src/app/[locale]/init/_steps/user/init-user-form.tsx index 2dcfac8f1..e094ce4ce 100644 --- a/apps/nextjs/src/app/[locale]/init/_steps/user/init-user-form.tsx +++ b/apps/nextjs/src/app/[locale]/init/_steps/user/init-user-form.tsx @@ -1,6 +1,7 @@ "use client"; import { Button, PasswordInput, Stack, TextInput } from "@mantine/core"; +import type { z } from "zod"; import { clientApi } from "@homarr/api/client"; import { revalidatePathActionAsync } from "@homarr/common/client"; @@ -8,7 +9,6 @@ import { useZodForm } from "@homarr/form"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useScopedI18n } from "@homarr/translation/client"; import { CustomPasswordInput } from "@homarr/ui"; -import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; export const InitUserForm = () => { diff --git a/apps/nextjs/src/app/[locale]/manage/apps/_form.tsx b/apps/nextjs/src/app/[locale]/manage/apps/_form.tsx index 9ec5b92d1..75d75e472 100644 --- a/apps/nextjs/src/app/[locale]/manage/apps/_form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/apps/_form.tsx @@ -2,11 +2,11 @@ import Link from "next/link"; import { Button, Group, Stack, Textarea, TextInput } from "@mantine/core"; +import type { z } from "zod"; import { useZodForm } from "@homarr/form"; import type { TranslationFunction } from "@homarr/translation"; import { useI18n } from "@homarr/translation/client"; -import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; import { IconPicker } from "~/components/icons/picker/icon-picker"; diff --git a/apps/nextjs/src/app/[locale]/manage/apps/edit/[id]/_app-edit-form.tsx b/apps/nextjs/src/app/[locale]/manage/apps/edit/[id]/_app-edit-form.tsx index 9c34c160a..69df2bcb4 100644 --- a/apps/nextjs/src/app/[locale]/manage/apps/edit/[id]/_app-edit-form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/apps/edit/[id]/_app-edit-form.tsx @@ -2,6 +2,7 @@ import { useCallback } from "react"; import { useRouter } from "next/navigation"; +import type { z } from "zod"; import type { RouterOutputs } from "@homarr/api"; import { clientApi } from "@homarr/api/client"; @@ -9,7 +10,7 @@ import { revalidatePathActionAsync } from "@homarr/common/client"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import type { TranslationFunction } from "@homarr/translation"; import { useScopedI18n } from "@homarr/translation/client"; -import type { validation, z } from "@homarr/validation"; +import type { validation } from "@homarr/validation"; import { AppForm } from "../../_form"; diff --git a/apps/nextjs/src/app/[locale]/manage/apps/new/_app-new-form.tsx b/apps/nextjs/src/app/[locale]/manage/apps/new/_app-new-form.tsx index 42a9ea40f..d78f6bba5 100644 --- a/apps/nextjs/src/app/[locale]/manage/apps/new/_app-new-form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/apps/new/_app-new-form.tsx @@ -2,13 +2,14 @@ import { useCallback } from "react"; import { useRouter } from "next/navigation"; +import type { z } from "zod"; import { clientApi } from "@homarr/api/client"; import { revalidatePathActionAsync } from "@homarr/common/client"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import type { TranslationFunction } from "@homarr/translation"; import { useScopedI18n } from "@homarr/translation/client"; -import type { validation, z } from "@homarr/validation"; +import type { validation } from "@homarr/validation"; import { AppForm } from "../_form"; diff --git a/apps/nextjs/src/app/[locale]/manage/apps/page.tsx b/apps/nextjs/src/app/[locale]/manage/apps/page.tsx index 5193166f3..c53f5e19f 100644 --- a/apps/nextjs/src/app/[locale]/manage/apps/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/apps/page.tsx @@ -2,6 +2,7 @@ import Link from "next/link"; import { redirect } from "next/navigation"; import { ActionIcon, ActionIconGroup, Anchor, Avatar, Card, Group, Stack, Text, Title } from "@mantine/core"; import { IconBox, IconPencil } from "@tabler/icons-react"; +import { z } from "zod"; import type { RouterOutputs } from "@homarr/api"; import { api } from "@homarr/api/server"; @@ -9,7 +10,6 @@ import { auth } from "@homarr/auth/next"; import type { inferSearchParamsFromSchema } from "@homarr/common/types"; import { getI18n, getScopedI18n } from "@homarr/translation/server"; import { SearchInput, TablePagination } from "@homarr/ui"; -import { z } from "@homarr/validation"; import { ManageContainer } from "~/components/manage/manage-container"; import { MobileAffixButton } from "~/components/manage/mobile-affix-button"; diff --git a/apps/nextjs/src/app/[locale]/manage/integrations/edit/[id]/_integration-edit-form.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/edit/[id]/_integration-edit-form.tsx index 867689b7e..b1b053e23 100644 --- a/apps/nextjs/src/app/[locale]/manage/integrations/edit/[id]/_integration-edit-form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/integrations/edit/[id]/_integration-edit-form.tsx @@ -3,6 +3,7 @@ import Link from "next/link"; import { useRouter } from "next/navigation"; import { Button, Fieldset, Group, Stack, TextInput } from "@mantine/core"; +import type { z } from "zod"; import type { RouterOutputs } from "@homarr/api"; import { clientApi } from "@homarr/api/client"; @@ -13,7 +14,6 @@ import { convertIntegrationTestConnectionError } from "@homarr/integrations/clie import { useConfirmModal } from "@homarr/modals"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useI18n } from "@homarr/translation/client"; -import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; import { SecretCard } from "../../_components/secrets/integration-secret-card"; diff --git a/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-form.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-form.tsx index a223e3bfc..5b11392a2 100644 --- a/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-form.tsx @@ -5,6 +5,7 @@ import Link from "next/link"; import { useRouter } from "next/navigation"; import { Alert, Button, Checkbox, Fieldset, Group, SegmentedControl, Stack, Text, TextInput } from "@mantine/core"; import { IconInfoCircle } from "@tabler/icons-react"; +import type { z } from "zod"; import { clientApi } from "@homarr/api/client"; import { revalidatePathActionAsync } from "@homarr/common/client"; @@ -15,7 +16,6 @@ import { useZodForm } from "@homarr/form"; import { convertIntegrationTestConnectionError } from "@homarr/integrations/client"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useI18n, useScopedI18n } from "@homarr/translation/client"; -import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; import { IntegrationSecretInput } from "../_components/secrets/integration-secret-inputs"; diff --git a/apps/nextjs/src/app/[locale]/manage/integrations/new/page.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/new/page.tsx index 4237c1422..dba8e5c1f 100644 --- a/apps/nextjs/src/app/[locale]/manage/integrations/new/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/integrations/new/page.tsx @@ -1,5 +1,6 @@ import { notFound } from "next/navigation"; import { Container, Group, Stack, Title } from "@mantine/core"; +import { z } from "zod"; import { auth } from "@homarr/auth/next"; import type { IntegrationKind } from "@homarr/definitions"; @@ -7,7 +8,6 @@ import { getIntegrationName, integrationKinds } from "@homarr/definitions"; import { getScopedI18n } from "@homarr/translation/server"; import { IntegrationAvatar } from "@homarr/ui"; import type { validation } from "@homarr/validation"; -import { z } from "@homarr/validation"; import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb"; import { NewIntegrationForm } from "./_integration-new-form"; diff --git a/apps/nextjs/src/app/[locale]/manage/medias/page.tsx b/apps/nextjs/src/app/[locale]/manage/medias/page.tsx index e5c9b98e1..3883fcb24 100644 --- a/apps/nextjs/src/app/[locale]/manage/medias/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/medias/page.tsx @@ -16,6 +16,7 @@ import { Tooltip, } from "@mantine/core"; import { IconExternalLink } from "@tabler/icons-react"; +import { z } from "zod"; import type { RouterOutputs } from "@homarr/api"; import { api } from "@homarr/api/server"; @@ -25,7 +26,6 @@ import type { inferSearchParamsFromSchema } from "@homarr/common/types"; import { createLocalImageUrl } from "@homarr/icons/local"; import { getI18n } from "@homarr/translation/server"; import { SearchInput, TablePagination, UserAvatar } from "@homarr/ui"; -import { z } from "@homarr/validation"; import { ManageContainer } from "~/components/manage/manage-container"; import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb"; diff --git a/apps/nextjs/src/app/[locale]/manage/search-engines/_form.tsx b/apps/nextjs/src/app/[locale]/manage/search-engines/_form.tsx index 4db3ba01a..9fa71510b 100644 --- a/apps/nextjs/src/app/[locale]/manage/search-engines/_form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/search-engines/_form.tsx @@ -4,13 +4,13 @@ import Link from "next/link"; import type { SegmentedControlItem } from "@mantine/core"; import { Button, Fieldset, Grid, Group, SegmentedControl, Stack, Textarea, TextInput } from "@mantine/core"; import { WidgetIntegrationSelect } from "node_modules/@homarr/widgets/src/widget-integration-select"; +import type { z } from "zod"; import { clientApi } from "@homarr/api/client"; import { searchEngineTypes } from "@homarr/definitions"; import { useZodForm } from "@homarr/form"; import type { TranslationFunction } from "@homarr/translation"; import { useI18n } from "@homarr/translation/client"; -import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; import { IconPicker } from "~/components/icons/picker/icon-picker"; diff --git a/apps/nextjs/src/app/[locale]/manage/search-engines/edit/[id]/_search-engine-edit-form.tsx b/apps/nextjs/src/app/[locale]/manage/search-engines/edit/[id]/_search-engine-edit-form.tsx index 93782e597..cc4c1eb79 100644 --- a/apps/nextjs/src/app/[locale]/manage/search-engines/edit/[id]/_search-engine-edit-form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/search-engines/edit/[id]/_search-engine-edit-form.tsx @@ -2,6 +2,7 @@ import { useCallback } from "react"; import { useRouter } from "next/navigation"; +import type { z } from "zod"; import type { RouterOutputs } from "@homarr/api"; import { clientApi } from "@homarr/api/client"; @@ -9,7 +10,7 @@ import { revalidatePathActionAsync } from "@homarr/common/client"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import type { TranslationFunction } from "@homarr/translation"; import { useScopedI18n } from "@homarr/translation/client"; -import type { validation, z } from "@homarr/validation"; +import type { validation } from "@homarr/validation"; import { SearchEngineForm } from "../../_form"; diff --git a/apps/nextjs/src/app/[locale]/manage/search-engines/new/_search-engine-new-form.tsx b/apps/nextjs/src/app/[locale]/manage/search-engines/new/_search-engine-new-form.tsx index 59fe95ccd..b5824d3c1 100644 --- a/apps/nextjs/src/app/[locale]/manage/search-engines/new/_search-engine-new-form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/search-engines/new/_search-engine-new-form.tsx @@ -2,13 +2,14 @@ import { useCallback } from "react"; import { useRouter } from "next/navigation"; +import type { z } from "zod"; import { clientApi } from "@homarr/api/client"; import { revalidatePathActionAsync } from "@homarr/common/client"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import type { TranslationFunction } from "@homarr/translation"; import { useScopedI18n } from "@homarr/translation/client"; -import type { validation, z } from "@homarr/validation"; +import type { validation } from "@homarr/validation"; import { SearchEngineForm } from "../_form"; diff --git a/apps/nextjs/src/app/[locale]/manage/search-engines/page.tsx b/apps/nextjs/src/app/[locale]/manage/search-engines/page.tsx index 8caeefbe7..0ecfa0cec 100644 --- a/apps/nextjs/src/app/[locale]/manage/search-engines/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/search-engines/page.tsx @@ -2,6 +2,7 @@ import Link from "next/link"; import { redirect } from "next/navigation"; import { ActionIcon, ActionIconGroup, Anchor, Avatar, Card, Group, Stack, Text, Title } from "@mantine/core"; import { IconPencil, IconSearch } from "@tabler/icons-react"; +import { z } from "zod"; import type { RouterOutputs } from "@homarr/api"; import { api } from "@homarr/api/server"; @@ -9,7 +10,6 @@ import { auth } from "@homarr/auth/next"; import type { inferSearchParamsFromSchema } from "@homarr/common/types"; import { getI18n, getScopedI18n } from "@homarr/translation/server"; import { SearchInput, TablePagination } from "@homarr/ui"; -import { z } from "@homarr/validation"; import { ManageContainer } from "~/components/manage/manage-container"; import { MobileAffixButton } from "~/components/manage/mobile-affix-button"; diff --git a/apps/nextjs/src/app/[locale]/manage/tools/certificates/_components/add-certificate.tsx b/apps/nextjs/src/app/[locale]/manage/tools/certificates/_components/add-certificate.tsx index 312abdffb..87aaa058f 100644 --- a/apps/nextjs/src/app/[locale]/manage/tools/certificates/_components/add-certificate.tsx +++ b/apps/nextjs/src/app/[locale]/manage/tools/certificates/_components/add-certificate.tsx @@ -2,6 +2,7 @@ import { Button, FileInput, Group, Stack } from "@mantine/core"; import { IconCertificate } from "@tabler/icons-react"; +import { z } from "zod"; import { clientApi } from "@homarr/api/client"; import { revalidatePathActionAsync } from "@homarr/common/client"; @@ -9,7 +10,7 @@ import { useZodForm } from "@homarr/form"; import { createModal, useModalAction } from "@homarr/modals"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useI18n } from "@homarr/translation/client"; -import { superRefineCertificateFile, z } from "@homarr/validation"; +import { superRefineCertificateFile } from "@homarr/validation"; export const AddCertificateButton = () => { const { openModal } = useModalAction(AddCertificateModal); diff --git a/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_change-default-search-engine.tsx b/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_change-default-search-engine.tsx index 367fa4098..952014acb 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_change-default-search-engine.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_change-default-search-engine.tsx @@ -1,6 +1,7 @@ "use client"; import { Button, Group, Select, Stack } from "@mantine/core"; +import type { z } from "zod"; import type { RouterOutputs } from "@homarr/api"; import { clientApi } from "@homarr/api/client"; @@ -8,7 +9,6 @@ import { revalidatePathActionAsync } from "@homarr/common/client"; import { useZodForm } from "@homarr/form"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useI18n } from "@homarr/translation/client"; -import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; interface ChangeDefaultSearchEngineFormProps { diff --git a/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_change-home-board.tsx b/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_change-home-board.tsx index 7a5b58817..9dc3a6491 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_change-home-board.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_change-home-board.tsx @@ -1,6 +1,7 @@ "use client"; import { Button, Group, Select, Stack } from "@mantine/core"; +import type { z } from "zod"; import type { RouterOutputs } from "@homarr/api"; import { clientApi } from "@homarr/api/client"; @@ -8,7 +9,6 @@ import { revalidatePathActionAsync } from "@homarr/common/client"; import { useZodForm } from "@homarr/form"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useI18n } from "@homarr/translation/client"; -import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; interface ChangeHomeBoardFormProps { diff --git a/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_first-day-of-week.tsx b/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_first-day-of-week.tsx index 43c04c46f..1b5c27dc2 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_first-day-of-week.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_first-day-of-week.tsx @@ -4,6 +4,7 @@ import { Button, Group, Radio, Stack } from "@mantine/core"; import type { DayOfWeek } from "@mantine/dates"; import dayjs from "dayjs"; import localeData from "dayjs/plugin/localeData"; +import type { z } from "zod"; import type { RouterOutputs } from "@homarr/api"; import { clientApi } from "@homarr/api/client"; @@ -11,7 +12,6 @@ import { revalidatePathActionAsync } from "@homarr/common/client"; import { useZodForm } from "@homarr/form"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useI18n } from "@homarr/translation/client"; -import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; dayjs.extend(localeData); diff --git a/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_ping-icons-enabled.tsx b/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_ping-icons-enabled.tsx index c2a975daf..ce34378e6 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_ping-icons-enabled.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_ping-icons-enabled.tsx @@ -1,6 +1,7 @@ "use client"; import { Button, Group, Stack, Switch } from "@mantine/core"; +import type { z } from "zod"; import type { RouterOutputs } from "@homarr/api"; import { clientApi } from "@homarr/api/client"; @@ -8,7 +9,6 @@ import { revalidatePathActionAsync } from "@homarr/common/client"; import { useZodForm } from "@homarr/form"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useI18n } from "@homarr/translation/client"; -import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; interface PingIconsEnabledProps { diff --git a/apps/nextjs/src/app/[locale]/manage/users/create/_components/create-user-stepper.tsx b/apps/nextjs/src/app/[locale]/manage/users/create/_components/create-user-stepper.tsx index 1f2960dbb..e848a8182 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/create/_components/create-user-stepper.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/create/_components/create-user-stepper.tsx @@ -17,6 +17,7 @@ import { } from "@mantine/core"; import { useListState } from "@mantine/hooks"; import { IconPlus, IconUserCheck } from "@tabler/icons-react"; +import { z } from "zod"; import { clientApi } from "@homarr/api/client"; import { everyoneGroup, groupPermissions } from "@homarr/definitions"; @@ -26,7 +27,7 @@ import { useModalAction } from "@homarr/modals"; import { showErrorNotification } from "@homarr/notifications"; import { useI18n, useScopedI18n } from "@homarr/translation/client"; import { CustomPasswordInput, UserAvatar } from "@homarr/ui"; -import { validation, z } from "@homarr/validation"; +import { validation } from "@homarr/validation"; import { createCustomErrorParams } from "@homarr/validation/form"; import { GroupSelectModal } from "~/components/access/group-select-modal"; diff --git a/apps/nextjs/src/app/[locale]/manage/users/groups/page.tsx b/apps/nextjs/src/app/[locale]/manage/users/groups/page.tsx index d1113bf4f..7fbbafc54 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/groups/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/groups/page.tsx @@ -1,6 +1,7 @@ import Link from "next/link"; import { notFound } from "next/navigation"; import { Anchor, Group, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Title } from "@mantine/core"; +import { z } from "zod"; import type { RouterOutputs } from "@homarr/api"; import { api } from "@homarr/api/server"; @@ -8,7 +9,6 @@ import { auth } from "@homarr/auth/next"; import type { inferSearchParamsFromSchema } from "@homarr/common/types"; import { getI18n } from "@homarr/translation/server"; import { SearchInput, TablePagination, UserAvatarGroup } from "@homarr/ui"; -import { z } from "@homarr/validation"; import { ManageContainer } from "~/components/manage/manage-container"; import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb"; diff --git a/apps/nextjs/src/components/board/items/item-move-modal.tsx b/apps/nextjs/src/components/board/items/item-move-modal.tsx index b04a80195..d93e4b26b 100644 --- a/apps/nextjs/src/components/board/items/item-move-modal.tsx +++ b/apps/nextjs/src/components/board/items/item-move-modal.tsx @@ -1,11 +1,11 @@ import { useCallback, useRef } from "react"; import { Button, Grid, Group, NumberInput, Stack } from "@mantine/core"; +import { z } from "zod"; import { useZodForm } from "@homarr/form"; import type { GridStack } from "@homarr/gridstack"; import { createModal } from "@homarr/modals"; import { useI18n, useScopedI18n } from "@homarr/translation/client"; -import { z } from "@homarr/validation"; import type { Item } from "~/app/[locale]/boards/_types"; diff --git a/apps/nextjs/src/components/board/modals/board-rename-modal.tsx b/apps/nextjs/src/components/board/modals/board-rename-modal.tsx index c627aab05..fafa334b0 100644 --- a/apps/nextjs/src/components/board/modals/board-rename-modal.tsx +++ b/apps/nextjs/src/components/board/modals/board-rename-modal.tsx @@ -1,12 +1,12 @@ "use client"; import { Button, Group, Stack, TextInput } from "@mantine/core"; +import type { z } from "zod"; import { clientApi } from "@homarr/api/client"; import { useZodForm } from "@homarr/form"; import { createModal } from "@homarr/modals"; import { useI18n } from "@homarr/translation/client"; -import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; interface InnerProps { diff --git a/apps/nextjs/src/components/board/sections/category/category-edit-modal.tsx b/apps/nextjs/src/components/board/sections/category/category-edit-modal.tsx index 16d25c4ce..56bbb57a1 100644 --- a/apps/nextjs/src/components/board/sections/category/category-edit-modal.tsx +++ b/apps/nextjs/src/components/board/sections/category/category-edit-modal.tsx @@ -1,9 +1,9 @@ import { Button, Group, Stack, TextInput } from "@mantine/core"; +import { z } from "zod"; import { useZodForm } from "@homarr/form"; import { createModal } from "@homarr/modals"; import { useI18n } from "@homarr/translation/client"; -import { z } from "@homarr/validation"; interface Category { id: string; diff --git a/packages/api/package.json b/packages/api/package.json index a49212a74..d025d004e 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -48,7 +48,8 @@ "react": "19.0.0", "react-dom": "19.0.0", "superjson": "2.2.2", - "trpc-to-openapi": "^2.1.2" + "trpc-to-openapi": "^2.1.2", + "zod": "^3.24.1" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/api/src/middlewares/integration.ts b/packages/api/src/middlewares/integration.ts index 51a90e046..adc0bc20f 100644 --- a/packages/api/src/middlewares/integration.ts +++ b/packages/api/src/middlewares/integration.ts @@ -1,4 +1,5 @@ import { TRPCError } from "@trpc/server"; +import { z } from "zod"; import type { Session } from "@homarr/auth"; import { hasQueryAccessToIntegrationsAsync } from "@homarr/auth/server"; @@ -9,7 +10,6 @@ import type { Database } from "@homarr/db"; import { and, eq, inArray } from "@homarr/db"; import { integrations } from "@homarr/db/schema"; import type { IntegrationKind } from "@homarr/definitions"; -import { z } from "@homarr/validation"; import { publicProcedure } from "../trpc"; diff --git a/packages/api/src/middlewares/item.ts b/packages/api/src/middlewares/item.ts index 79d93a463..173d6000f 100644 --- a/packages/api/src/middlewares/item.ts +++ b/packages/api/src/middlewares/item.ts @@ -1,9 +1,9 @@ import { TRPCError } from "@trpc/server"; +import { z } from "zod"; import { and, eq } from "@homarr/db"; import { items } from "@homarr/db/schema"; import type { WidgetKind } from "@homarr/definitions"; -import { z } from "@homarr/validation"; import { publicProcedure } from "../trpc"; diff --git a/packages/api/src/router/app.ts b/packages/api/src/router/app.ts index 3d651b6ca..84f712cd9 100644 --- a/packages/api/src/router/app.ts +++ b/packages/api/src/router/app.ts @@ -1,10 +1,11 @@ import { TRPCError } from "@trpc/server"; +import { z } from "zod"; import { asc, createId, eq, inArray, like } from "@homarr/db"; import { apps } from "@homarr/db/schema"; import { selectAppSchema } from "@homarr/db/validationSchemas"; import { getIconForName } from "@homarr/icons"; -import { validation, z } from "@homarr/validation"; +import { validation } from "@homarr/validation"; import { convertIntersectionToZodObject } from "../schema-merger"; import { createTRPCRouter, permissionRequiredProcedure, protectedProcedure, publicProcedure } from "../trpc"; diff --git a/packages/api/src/router/board.ts b/packages/api/src/router/board.ts index 72ae2bfd2..0fb254eca 100644 --- a/packages/api/src/router/board.ts +++ b/packages/api/src/router/board.ts @@ -1,5 +1,6 @@ import { TRPCError } from "@trpc/server"; import superjson from "superjson"; +import { z } from "zod"; import { constructBoardPermissions } from "@homarr/auth/shared"; import type { DeviceType } from "@homarr/common/server"; @@ -25,7 +26,7 @@ import { importOldmarrAsync } from "@homarr/old-import"; import { importJsonFileSchema } from "@homarr/old-import/shared"; import { oldmarrConfigSchema } from "@homarr/old-schema"; import type { BoardItemAdvancedOptions } from "@homarr/validation"; -import { createSectionSchema, sharedItemSchema, validation, z, zodUnionFromArray } from "@homarr/validation"; +import { createSectionSchema, sharedItemSchema, validation, zodUnionFromArray } from "@homarr/validation"; import { createTRPCRouter, permissionRequiredProcedure, protectedProcedure, publicProcedure } from "../trpc"; import { throwIfActionForbiddenAsync } from "./board/board-access"; diff --git a/packages/api/src/router/docker/docker-router.ts b/packages/api/src/router/docker/docker-router.ts index 299db0090..05841e577 100644 --- a/packages/api/src/router/docker/docker-router.ts +++ b/packages/api/src/router/docker/docker-router.ts @@ -1,4 +1,5 @@ import { TRPCError } from "@trpc/server"; +import { z } from "zod"; import { db, like, or } from "@homarr/db"; import { icons } from "@homarr/db/schema"; @@ -6,7 +7,6 @@ import { DockerSingleton } from "@homarr/docker"; import type { Container, ContainerInfo, ContainerState, Docker, Port } from "@homarr/docker"; import { logger } from "@homarr/log"; import { createCacheChannel } from "@homarr/redis"; -import { z } from "@homarr/validation"; import { createTRPCRouter, permissionRequiredProcedure } from "../../trpc"; diff --git a/packages/api/src/router/group.ts b/packages/api/src/router/group.ts index a10629802..86d289fd9 100644 --- a/packages/api/src/router/group.ts +++ b/packages/api/src/router/group.ts @@ -1,10 +1,11 @@ import { TRPCError } from "@trpc/server"; +import { z } from "zod"; import type { Database } from "@homarr/db"; import { and, createId, eq, like, not, sql } from "@homarr/db"; import { groupMembers, groupPermissions, groups } from "@homarr/db/schema"; import { everyoneGroup } from "@homarr/definitions"; -import { validation, z } from "@homarr/validation"; +import { validation } from "@homarr/validation"; import { createTRPCRouter, onboardingProcedure, permissionRequiredProcedure, protectedProcedure } from "../trpc"; import { throwIfCredentialsDisabled } from "./invite/checks"; diff --git a/packages/api/src/router/import/import-router.ts b/packages/api/src/router/import/import-router.ts index 7bcc453ec..4ffc5ca1a 100644 --- a/packages/api/src/router/import/import-router.ts +++ b/packages/api/src/router/import/import-router.ts @@ -1,10 +1,11 @@ +import { z } from "zod"; + import { analyseOldmarrImportForRouterAsync, analyseOldmarrImportInputSchema } from "@homarr/old-import/analyse"; import { ensureValidTokenOrThrow, importInitialOldmarrAsync, importInitialOldmarrInputSchema, } from "@homarr/old-import/import"; -import { z } from "@homarr/validation"; import { createTRPCRouter, onboardingProcedure } from "../../trpc"; import { nextOnboardingStepAsync } from "../onboard/onboard-queries"; diff --git a/packages/api/src/router/integration/integration-router.ts b/packages/api/src/router/integration/integration-router.ts index 4ad169bf8..d6b60912f 100644 --- a/packages/api/src/router/integration/integration-router.ts +++ b/packages/api/src/router/integration/integration-router.ts @@ -1,4 +1,5 @@ import { TRPCError } from "@trpc/server"; +import { z } from "zod"; import { objectEntries } from "@homarr/common"; import { decryptSecret, encryptSecret } from "@homarr/common/server"; @@ -23,7 +24,7 @@ import { integrationSecretKindObject, } from "@homarr/definitions"; import { integrationCreator } from "@homarr/integrations"; -import { validation, z } from "@homarr/validation"; +import { validation } from "@homarr/validation"; import { createOneIntegrationMiddleware } from "../../middlewares/integration"; import { createTRPCRouter, permissionRequiredProcedure, protectedProcedure, publicProcedure } from "../../trpc"; diff --git a/packages/api/src/router/invite.ts b/packages/api/src/router/invite.ts index 6cbcc2869..3be975b3d 100644 --- a/packages/api/src/router/invite.ts +++ b/packages/api/src/router/invite.ts @@ -1,10 +1,10 @@ import { randomBytes } from "crypto"; import { TRPCError } from "@trpc/server"; +import { z } from "zod"; import { asc, createId, eq } from "@homarr/db"; import { invites } from "@homarr/db/schema"; import { selectInviteSchema } from "@homarr/db/validationSchemas"; -import { z } from "@homarr/validation"; import { createTRPCRouter, permissionRequiredProcedure } from "../trpc"; import { throwIfCredentialsDisabled } from "./invite/checks"; diff --git a/packages/api/src/router/location.ts b/packages/api/src/router/location.ts index c2060314b..7d3f3d980 100644 --- a/packages/api/src/router/location.ts +++ b/packages/api/src/router/location.ts @@ -1,5 +1,6 @@ +import type { z } from "zod"; + import { fetchWithTimeout } from "@homarr/common"; -import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; import { createTRPCRouter, publicProcedure } from "../trpc"; diff --git a/packages/api/src/router/medias/media-router.ts b/packages/api/src/router/medias/media-router.ts index 8a1c3a71e..d6ed0223b 100644 --- a/packages/api/src/router/medias/media-router.ts +++ b/packages/api/src/router/medias/media-router.ts @@ -1,10 +1,11 @@ import { TRPCError } from "@trpc/server"; +import { z } from "zod"; import type { InferInsertModel } from "@homarr/db"; import { and, createId, desc, eq, like } from "@homarr/db"; import { iconRepositories, icons, medias } from "@homarr/db/schema"; import { createLocalImageUrl, LOCAL_ICON_REPOSITORY_SLUG, mapMediaToIcon } from "@homarr/icons/local"; -import { validation, z } from "@homarr/validation"; +import { validation } from "@homarr/validation"; import { createTRPCRouter, permissionRequiredProcedure, protectedProcedure } from "../../trpc"; diff --git a/packages/api/src/router/onboard/onboard-router.ts b/packages/api/src/router/onboard/onboard-router.ts index 89b6fb66f..a9a97d474 100644 --- a/packages/api/src/router/onboard/onboard-router.ts +++ b/packages/api/src/router/onboard/onboard-router.ts @@ -1,6 +1,8 @@ +import { z } from "zod"; + import { onboarding } from "@homarr/db/schema"; import { onboardingSteps } from "@homarr/definitions"; -import { z, zodEnumFromArray } from "@homarr/validation"; +import { zodEnumFromArray } from "@homarr/validation"; import { createTRPCRouter, publicProcedure } from "../../trpc"; import { getOnboardingOrFallbackAsync, nextOnboardingStepAsync } from "./onboard-queries"; 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 49aab777c..0191f9319 100644 --- a/packages/api/src/router/search-engine/search-engine-router.ts +++ b/packages/api/src/router/search-engine/search-engine-router.ts @@ -1,10 +1,11 @@ import { TRPCError } from "@trpc/server"; +import { z } from "zod"; import { asc, createId, eq, like, sql } from "@homarr/db"; import { getServerSettingByKeyAsync } from "@homarr/db/queries"; import { searchEngines, users } from "@homarr/db/schema"; import { integrationCreator } from "@homarr/integrations"; -import { validation, z } from "@homarr/validation"; +import { validation } from "@homarr/validation"; import { createOneIntegrationMiddleware } from "../../middlewares/integration"; import { createTRPCRouter, permissionRequiredProcedure, protectedProcedure, publicProcedure } from "../../trpc"; diff --git a/packages/api/src/router/serverSettings.ts b/packages/api/src/router/serverSettings.ts index 2fdb000f2..a4bb5eeca 100644 --- a/packages/api/src/router/serverSettings.ts +++ b/packages/api/src/router/serverSettings.ts @@ -1,7 +1,9 @@ +import { z } from "zod"; + import { getServerSettingByKeyAsync, getServerSettingsAsync, updateServerSettingByKeyAsync } from "@homarr/db/queries"; import type { ServerSettings } from "@homarr/server-settings"; import { defaultServerSettingsKeys } from "@homarr/server-settings"; -import { validation, z } from "@homarr/validation"; +import { validation } from "@homarr/validation"; import { createTRPCRouter, onboardingProcedure, permissionRequiredProcedure, publicProcedure } from "../trpc"; import { nextOnboardingStepAsync } from "./onboard/onboard-queries"; diff --git a/packages/api/src/router/user.ts b/packages/api/src/router/user.ts index 2b23f7256..14139b40c 100644 --- a/packages/api/src/router/user.ts +++ b/packages/api/src/router/user.ts @@ -1,4 +1,5 @@ import { TRPCError } from "@trpc/server"; +import { z } from "zod"; import { createSaltAsync, hashPasswordAsync } from "@homarr/auth"; import type { Database } from "@homarr/db"; @@ -8,7 +9,7 @@ import { selectUserSchema } from "@homarr/db/validationSchemas"; import { credentialsAdminGroup } from "@homarr/definitions"; import type { SupportedAuthProvider } from "@homarr/definitions"; import { logger } from "@homarr/log"; -import { validation, z } from "@homarr/validation"; +import { validation } from "@homarr/validation"; import { convertIntersectionToZodObject } from "../schema-merger"; import { diff --git a/packages/api/src/router/widgets/app.ts b/packages/api/src/router/widgets/app.ts index bfb6063f0..b3718e9de 100644 --- a/packages/api/src/router/widgets/app.ts +++ b/packages/api/src/router/widgets/app.ts @@ -1,8 +1,8 @@ import { observable } from "@trpc/server/observable"; +import { z } from "zod"; import { sendPingRequestAsync } from "@homarr/ping"; import { pingChannel, pingUrlChannel } from "@homarr/redis"; -import { z } from "@homarr/validation"; import { createTRPCRouter, publicProcedure } from "../../trpc"; diff --git a/packages/api/src/router/widgets/calendar.ts b/packages/api/src/router/widgets/calendar.ts index 6628cf81f..a11c69d40 100644 --- a/packages/api/src/router/widgets/calendar.ts +++ b/packages/api/src/router/widgets/calendar.ts @@ -1,7 +1,8 @@ +import { z } from "zod"; + import { getIntegrationKindsByCategory } from "@homarr/definitions"; import { radarrReleaseTypes } from "@homarr/integrations/types"; import { calendarMonthRequestHandler } from "@homarr/request-handler/calendar"; -import { z } from "@homarr/validation"; import { createManyIntegrationMiddleware } from "../../middlewares/integration"; import { createTRPCRouter, publicProcedure } from "../../trpc"; diff --git a/packages/api/src/router/widgets/downloads.ts b/packages/api/src/router/widgets/downloads.ts index db5fdd997..c0a72d577 100644 --- a/packages/api/src/router/widgets/downloads.ts +++ b/packages/api/src/router/widgets/downloads.ts @@ -1,4 +1,5 @@ import { observable } from "@trpc/server/observable"; +import { z } from "zod"; import type { Modify } from "@homarr/common/types"; import type { Integration } from "@homarr/db/schema"; @@ -7,7 +8,6 @@ import { getIntegrationKindsByCategory } from "@homarr/definitions"; import type { DownloadClientJobsAndStatus } from "@homarr/integrations"; import { downloadClientItemSchema, integrationCreator } from "@homarr/integrations"; import { downloadClientRequestHandler } from "@homarr/request-handler/downloads"; -import { z } from "@homarr/validation"; import type { IntegrationAction } from "../../middlewares/integration"; import { createManyIntegrationMiddleware } from "../../middlewares/integration"; diff --git a/packages/api/src/router/widgets/media-requests.ts b/packages/api/src/router/widgets/media-requests.ts index c1a237d03..8469b3b31 100644 --- a/packages/api/src/router/widgets/media-requests.ts +++ b/packages/api/src/router/widgets/media-requests.ts @@ -1,11 +1,11 @@ import { observable } from "@trpc/server/observable"; +import { z } from "zod"; import { getIntegrationKindsByCategory } from "@homarr/definitions"; import { integrationCreator, MediaRequestStatus } from "@homarr/integrations"; import type { MediaRequest } from "@homarr/integrations/types"; import { mediaRequestListRequestHandler } from "@homarr/request-handler/media-request-list"; import { mediaRequestStatsRequestHandler } from "@homarr/request-handler/media-request-stats"; -import { z } from "@homarr/validation"; import { createManyIntegrationMiddleware, createOneIntegrationMiddleware } from "../../middlewares/integration"; import { createTRPCRouter, protectedProcedure, publicProcedure } from "../../trpc"; diff --git a/packages/api/src/router/widgets/notebook.ts b/packages/api/src/router/widgets/notebook.ts index e9c3f5cff..994a15e4c 100644 --- a/packages/api/src/router/widgets/notebook.ts +++ b/packages/api/src/router/widgets/notebook.ts @@ -1,9 +1,9 @@ import { TRPCError } from "@trpc/server"; import SuperJSON from "superjson"; +import { z } from "zod"; import { eq } from "@homarr/db"; import { items } from "@homarr/db/schema"; -import { z } from "@homarr/validation"; import { createTRPCRouter, protectedProcedure } from "../../trpc"; diff --git a/packages/api/src/router/widgets/rssFeed.ts b/packages/api/src/router/widgets/rssFeed.ts index 448f1f576..415319318 100644 --- a/packages/api/src/router/widgets/rssFeed.ts +++ b/packages/api/src/router/widgets/rssFeed.ts @@ -1,5 +1,6 @@ +import { z } from "zod"; + import { rssFeedsRequestHandler } from "@homarr/request-handler/rss-feeds"; -import { z } from "@homarr/validation"; import { createTRPCRouter, publicProcedure } from "../../trpc"; diff --git a/packages/api/src/router/widgets/smart-home.ts b/packages/api/src/router/widgets/smart-home.ts index d1a1fde85..13979ad28 100644 --- a/packages/api/src/router/widgets/smart-home.ts +++ b/packages/api/src/router/widgets/smart-home.ts @@ -1,9 +1,9 @@ import { observable } from "@trpc/server/observable"; +import { z } from "zod"; import { getIntegrationKindsByCategory } from "@homarr/definitions"; import { integrationCreator } from "@homarr/integrations"; import { smartHomeEntityStateRequestHandler } from "@homarr/request-handler/smart-home-entity-state"; -import { z } from "@homarr/validation"; import type { IntegrationAction } from "../../middlewares/integration"; import { createOneIntegrationMiddleware } from "../../middlewares/integration"; diff --git a/packages/api/src/schema-merger.ts b/packages/api/src/schema-merger.ts index 7043e908a..eae12cf89 100644 --- a/packages/api/src/schema-merger.ts +++ b/packages/api/src/schema-merger.ts @@ -1,5 +1,5 @@ -import type { AnyZodObject, ZodIntersection, ZodObject } from "@homarr/validation"; -import { z } from "@homarr/validation"; +import { z } from "zod"; +import type { AnyZodObject, ZodIntersection, ZodObject } from "zod"; export function convertIntersectionToZodObject>( intersection: TIntersection, diff --git a/packages/api/src/trpc.ts b/packages/api/src/trpc.ts index 6f88a8cd2..93c2b57be 100644 --- a/packages/api/src/trpc.ts +++ b/packages/api/src/trpc.ts @@ -9,6 +9,7 @@ import { initTRPC, TRPCError } from "@trpc/server"; import superjson from "superjson"; import type { OpenApiMeta } from "trpc-to-openapi"; +import { ZodError } from "zod"; import type { Session } from "@homarr/auth"; import { FlattenError } from "@homarr/common"; @@ -16,7 +17,6 @@ import { userAgent } from "@homarr/common/server"; import { db } from "@homarr/db"; import type { GroupPermissionKey, OnboardingStep } from "@homarr/definitions"; import { logger } from "@homarr/log"; -import { ZodError } from "@homarr/validation"; import { getOnboardingOrFallbackAsync } from "./router/onboard/onboard-queries"; diff --git a/packages/auth/package.json b/packages/auth/package.json index 1afba2a8e..c47755150 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -38,7 +38,8 @@ "next-auth": "5.0.0-beta.25", "pretty-print-error": "^1.1.2", "react": "19.0.0", - "react-dom": "19.0.0" + "react-dom": "19.0.0", + "zod": "^3.24.1" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/auth/providers/credentials/authorization/basic-authorization.ts b/packages/auth/providers/credentials/authorization/basic-authorization.ts index cdce3fe9e..6cbd4d16a 100644 --- a/packages/auth/providers/credentials/authorization/basic-authorization.ts +++ b/packages/auth/providers/credentials/authorization/basic-authorization.ts @@ -1,10 +1,11 @@ import bcrypt from "bcrypt"; +import type { z } from "zod"; import type { Database } from "@homarr/db"; import { and, eq } from "@homarr/db"; import { users } from "@homarr/db/schema"; import { logger } from "@homarr/log"; -import type { validation, z } from "@homarr/validation"; +import type { validation } from "@homarr/validation"; export const authorizeWithBasicCredentialsAsync = async ( db: Database, diff --git a/packages/auth/providers/credentials/authorization/ldap-authorization.ts b/packages/auth/providers/credentials/authorization/ldap-authorization.ts index 84f59e989..84f7733ac 100644 --- a/packages/auth/providers/credentials/authorization/ldap-authorization.ts +++ b/packages/auth/providers/credentials/authorization/ldap-authorization.ts @@ -1,4 +1,5 @@ import { CredentialsSignin } from "@auth/core/errors"; +import { z } from "zod"; import { extractErrorMessage } from "@homarr/common"; import type { Database, InferInsertModel } from "@homarr/db"; @@ -6,7 +7,6 @@ import { and, createId, eq } from "@homarr/db"; import { users } from "@homarr/db/schema"; import { logger } from "@homarr/log"; import type { validation } from "@homarr/validation"; -import { z } from "@homarr/validation"; import { env } from "../../../env"; import { LdapClient } from "../ldap-client"; diff --git a/packages/auth/test/session.spec.ts b/packages/auth/test/session.spec.ts index 4f90f44a0..e15703ea4 100644 --- a/packages/auth/test/session.spec.ts +++ b/packages/auth/test/session.spec.ts @@ -1,6 +1,5 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; - -import { z } from "@homarr/validation"; +import { z } from "zod"; import { expireDateAfter, generateSessionToken } from "../session"; diff --git a/packages/form/package.json b/packages/form/package.json index a41143d70..4d265f4be 100644 --- a/packages/form/package.json +++ b/packages/form/package.json @@ -26,7 +26,8 @@ "@homarr/common": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/form": "^7.16.2" + "@mantine/form": "^7.16.2", + "zod": "^3.24.1" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/form/src/index.ts b/packages/form/src/index.ts index f46a2d1ed..328315b5b 100644 --- a/packages/form/src/index.ts +++ b/packages/form/src/index.ts @@ -1,8 +1,8 @@ import { useForm, zodResolver } from "@mantine/form"; +import { z } from "zod"; +import type { AnyZodObject, ZodDiscriminatedUnion, ZodEffects, ZodIntersection } from "zod"; import { useI18n } from "@homarr/translation/client"; -import { z } from "@homarr/validation"; -import type { AnyZodObject, ZodDiscriminatedUnion, ZodEffects, ZodIntersection } from "@homarr/validation"; import { zodErrorMap } from "@homarr/validation/form"; export const useZodForm = < diff --git a/packages/form/src/messages.ts b/packages/form/src/messages.ts index 51983fff1..bfbbc4c4f 100644 --- a/packages/form/src/messages.ts +++ b/packages/form/src/messages.ts @@ -1,6 +1,7 @@ +import type { ErrorMapCtx, z, ZodTooBigIssue, ZodTooSmallIssue } from "zod"; +import { ZodIssueCode } from "zod"; + import type { TranslationObject } from "@homarr/translation"; -import type { ErrorMapCtx, z, ZodTooBigIssue, ZodTooSmallIssue } from "@homarr/validation"; -import { ZodIssueCode } from "@homarr/validation"; const handleStringError = (issue: z.ZodInvalidStringIssue) => { if (typeof issue.validation === "object") { diff --git a/packages/integrations/package.json b/packages/integrations/package.json index 15cceb120..13d01a9ae 100644 --- a/packages/integrations/package.json +++ b/packages/integrations/package.json @@ -38,7 +38,8 @@ "@jellyfin/sdk": "^0.11.0", "proxmox-api": "1.1.1", "undici": "7.3.0", - "xml2js": "^0.6.2" + "xml2js": "^0.6.2", + "zod": "^3.24.1" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/integrations/src/adguard-home/adguard-home-types.ts b/packages/integrations/src/adguard-home/adguard-home-types.ts index adc56b4d9..bcd7abd29 100644 --- a/packages/integrations/src/adguard-home/adguard-home-types.ts +++ b/packages/integrations/src/adguard-home/adguard-home-types.ts @@ -1,4 +1,4 @@ -import { z } from "@homarr/validation"; +import { z } from "zod"; export const statsResponseSchema = z.object({ time_units: z.enum(["hours", "days"]), diff --git a/packages/integrations/src/base/integration.ts b/packages/integrations/src/base/integration.ts index dbfee6ccc..f11009a89 100644 --- a/packages/integrations/src/base/integration.ts +++ b/packages/integrations/src/base/integration.ts @@ -1,10 +1,10 @@ import type { Response } from "undici"; +import { z } from "zod"; import { extractErrorMessage, removeTrailingSlash } from "@homarr/common"; import type { IntegrationSecretKind } from "@homarr/definitions"; import { logger } from "@homarr/log"; import type { TranslationObject } from "@homarr/translation"; -import { z } from "@homarr/validation"; import { IntegrationTestConnectionError } from "./test-connection-error"; import type { IntegrationSecret } from "./types"; diff --git a/packages/integrations/src/base/test-connection-error.ts b/packages/integrations/src/base/test-connection-error.ts index 8a8067f0e..c0f7d97e0 100644 --- a/packages/integrations/src/base/test-connection-error.ts +++ b/packages/integrations/src/base/test-connection-error.ts @@ -1,5 +1,6 @@ +import { z } from "zod"; + import { FlattenError } from "@homarr/common"; -import { z } from "@homarr/validation"; import type { TestConnectionError } from "./integration"; diff --git a/packages/integrations/src/dashdot/dashdot-integration.ts b/packages/integrations/src/dashdot/dashdot-integration.ts index 315c46177..9df6720a9 100644 --- a/packages/integrations/src/dashdot/dashdot-integration.ts +++ b/packages/integrations/src/dashdot/dashdot-integration.ts @@ -3,9 +3,9 @@ import { humanFileSize } from "@homarr/common"; import "@homarr/redis"; import dayjs from "dayjs"; +import { z } from "zod"; import { fetchWithTrustedCertificatesAsync } from "@homarr/certificates/server"; -import { z } from "@homarr/validation"; import { createChannelEventHistory } from "../../../redis/src/lib/channel"; import { Integration } from "../base/integration"; diff --git a/packages/integrations/src/download-client/sabnzbd/sabnzbd-schema.ts b/packages/integrations/src/download-client/sabnzbd/sabnzbd-schema.ts index 35d5899c1..b1a327d09 100644 --- a/packages/integrations/src/download-client/sabnzbd/sabnzbd-schema.ts +++ b/packages/integrations/src/download-client/sabnzbd/sabnzbd-schema.ts @@ -1,4 +1,4 @@ -import { z } from "@homarr/validation"; +import { z } from "zod"; export const queueSchema = z.object({ queue: z.object({ diff --git a/packages/integrations/src/homeassistant/homeassistant-types.ts b/packages/integrations/src/homeassistant/homeassistant-types.ts index 7015b5e23..e4276159a 100644 --- a/packages/integrations/src/homeassistant/homeassistant-types.ts +++ b/packages/integrations/src/homeassistant/homeassistant-types.ts @@ -1,4 +1,4 @@ -import { z } from "@homarr/validation"; +import { z } from "zod"; export const entityStateSchema = z.object({ attributes: z.record( diff --git a/packages/integrations/src/interfaces/downloads/download-client-items.ts b/packages/integrations/src/interfaces/downloads/download-client-items.ts index 7137890d8..3d5195b4b 100644 --- a/packages/integrations/src/interfaces/downloads/download-client-items.ts +++ b/packages/integrations/src/interfaces/downloads/download-client-items.ts @@ -1,5 +1,6 @@ +import { z } from "zod"; + import type { Integration } from "@homarr/db/schema"; -import { z } from "@homarr/validation"; const usenetQueueState = ["downloading", "queued", "paused"] as const; const usenetHistoryState = ["completed", "failed", "processing"] as const; diff --git a/packages/integrations/src/media-organizer/lidarr/lidarr-integration.ts b/packages/integrations/src/media-organizer/lidarr/lidarr-integration.ts index f48eda43b..b71af7482 100644 --- a/packages/integrations/src/media-organizer/lidarr/lidarr-integration.ts +++ b/packages/integrations/src/media-organizer/lidarr/lidarr-integration.ts @@ -1,6 +1,7 @@ +import { z } from "zod"; + import { fetchWithTrustedCertificatesAsync } from "@homarr/certificates/server"; import { logger } from "@homarr/log"; -import { z } from "@homarr/validation"; import type { CalendarEvent } from "../../calendar-types"; import { MediaOrganizerIntegration } from "../media-organizer-integration"; diff --git a/packages/integrations/src/media-organizer/radarr/radarr-integration.ts b/packages/integrations/src/media-organizer/radarr/radarr-integration.ts index 0817fe9f6..330de8bc8 100644 --- a/packages/integrations/src/media-organizer/radarr/radarr-integration.ts +++ b/packages/integrations/src/media-organizer/radarr/radarr-integration.ts @@ -1,7 +1,8 @@ +import { z } from "zod"; + import { fetchWithTrustedCertificatesAsync } from "@homarr/certificates/server"; import type { AtLeastOneOf } from "@homarr/common/types"; import { logger } from "@homarr/log"; -import { z } from "@homarr/validation"; import type { CalendarEvent } from "../../calendar-types"; import { radarrReleaseTypes } from "../../calendar-types"; diff --git a/packages/integrations/src/media-organizer/readarr/readarr-integration.ts b/packages/integrations/src/media-organizer/readarr/readarr-integration.ts index 085677c74..e572c60e0 100644 --- a/packages/integrations/src/media-organizer/readarr/readarr-integration.ts +++ b/packages/integrations/src/media-organizer/readarr/readarr-integration.ts @@ -1,6 +1,7 @@ +import { z } from "zod"; + import { fetchWithTrustedCertificatesAsync } from "@homarr/certificates/server"; import { logger } from "@homarr/log"; -import { z } from "@homarr/validation"; import type { CalendarEvent } from "../../calendar-types"; import { MediaOrganizerIntegration } from "../media-organizer-integration"; diff --git a/packages/integrations/src/media-organizer/sonarr/sonarr-integration.ts b/packages/integrations/src/media-organizer/sonarr/sonarr-integration.ts index c9cb9393f..8f823e903 100644 --- a/packages/integrations/src/media-organizer/sonarr/sonarr-integration.ts +++ b/packages/integrations/src/media-organizer/sonarr/sonarr-integration.ts @@ -1,6 +1,7 @@ +import { z } from "zod"; + import { fetchWithTrustedCertificatesAsync } from "@homarr/certificates/server"; import { logger } from "@homarr/log"; -import { z } from "@homarr/validation"; import type { CalendarEvent } from "../../calendar-types"; import { MediaOrganizerIntegration } from "../media-organizer-integration"; diff --git a/packages/integrations/src/media-transcoding/tdarr-integration.ts b/packages/integrations/src/media-transcoding/tdarr-integration.ts index fad62b28d..4c79e0a09 100644 --- a/packages/integrations/src/media-transcoding/tdarr-integration.ts +++ b/packages/integrations/src/media-transcoding/tdarr-integration.ts @@ -1,5 +1,6 @@ +import { z } from "zod"; + import { fetchWithTrustedCertificatesAsync } from "@homarr/certificates/server"; -import { z } from "@homarr/validation"; import { Integration } from "../base/integration"; import type { TdarrQueue } from "../interfaces/media-transcoding/queue"; diff --git a/packages/integrations/src/media-transcoding/tdarr-validation-schemas.ts b/packages/integrations/src/media-transcoding/tdarr-validation-schemas.ts index aabb61cc7..a457ca627 100644 --- a/packages/integrations/src/media-transcoding/tdarr-validation-schemas.ts +++ b/packages/integrations/src/media-transcoding/tdarr-validation-schemas.ts @@ -1,4 +1,4 @@ -import { z } from "@homarr/validation"; +import { z } from "zod"; export const getStatisticsSchema = z.object({ totalFileCount: z.number(), diff --git a/packages/integrations/src/overseerr/overseerr-integration.ts b/packages/integrations/src/overseerr/overseerr-integration.ts index a11b050ea..55e08d084 100644 --- a/packages/integrations/src/overseerr/overseerr-integration.ts +++ b/packages/integrations/src/overseerr/overseerr-integration.ts @@ -1,6 +1,7 @@ +import { z } from "zod"; + import { fetchWithTrustedCertificatesAsync } from "@homarr/certificates/server"; import { logger } from "@homarr/log"; -import { z } from "@homarr/validation"; import { Integration } from "../base/integration"; import type { ISearchableIntegration } from "../base/searchable-integration"; diff --git a/packages/integrations/src/pi-hole/pi-hole-types.ts b/packages/integrations/src/pi-hole/pi-hole-types.ts index 234eb511c..7c9785d1b 100644 --- a/packages/integrations/src/pi-hole/pi-hole-types.ts +++ b/packages/integrations/src/pi-hole/pi-hole-types.ts @@ -1,4 +1,4 @@ -import { z } from "@homarr/validation"; +import { z } from "zod"; export const summaryResponseSchema = z.object({ status: z.enum(["enabled", "disabled"]), diff --git a/packages/integrations/src/prowlarr/prowlarr-types.ts b/packages/integrations/src/prowlarr/prowlarr-types.ts index 4f3288196..dc10feca8 100644 --- a/packages/integrations/src/prowlarr/prowlarr-types.ts +++ b/packages/integrations/src/prowlarr/prowlarr-types.ts @@ -1,4 +1,4 @@ -import { z } from "@homarr/validation"; +import { z } from "zod"; export const indexerResponseSchema = z.object({ id: z.number(), diff --git a/packages/modals-collection/package.json b/packages/modals-collection/package.json index ce2f55816..b71172130 100644 --- a/packages/modals-collection/package.json +++ b/packages/modals-collection/package.json @@ -37,7 +37,8 @@ "dayjs": "^1.11.13", "next": "15.1.6", "react": "19.0.0", - "react-dom": "19.0.0" + "react-dom": "19.0.0", + "zod": "^3.24.1" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/modals-collection/src/boards/import-board-modal.tsx b/packages/modals-collection/src/boards/import-board-modal.tsx index e507a29f1..71fdbcb26 100644 --- a/packages/modals-collection/src/boards/import-board-modal.tsx +++ b/packages/modals-collection/src/boards/import-board-modal.tsx @@ -1,6 +1,7 @@ import { useState } from "react"; import { Button, FileInput, Group, Radio, Stack, TextInput } from "@mantine/core"; import { IconFileUpload } from "@tabler/icons-react"; +import { z } from "zod"; import { clientApi } from "@homarr/api/client"; import { revalidatePathActionAsync } from "@homarr/common/client"; @@ -12,7 +13,6 @@ import type { OldmarrImportConfiguration } from "@homarr/old-import/shared"; import { oldmarrImportConfigurationSchema, superRefineJsonImportFile } from "@homarr/old-import/shared"; import { oldmarrConfigSchema } from "@homarr/old-schema"; import { useI18n, useScopedI18n } from "@homarr/translation/client"; -import { z } from "@homarr/validation"; import { useBoardNameStatus } from "./add-board-modal"; diff --git a/packages/modals-collection/src/docker/add-docker-app-to-homarr.tsx b/packages/modals-collection/src/docker/add-docker-app-to-homarr.tsx index 9a5f2d5fc..6b2d993df 100644 --- a/packages/modals-collection/src/docker/add-docker-app-to-homarr.tsx +++ b/packages/modals-collection/src/docker/add-docker-app-to-homarr.tsx @@ -1,4 +1,5 @@ import { Button, Group, Image, List, LoadingOverlay, Stack, Text, TextInput } from "@mantine/core"; +import { z } from "zod"; import type { RouterOutputs } from "@homarr/api"; import { clientApi } from "@homarr/api/client"; @@ -6,7 +7,6 @@ import { useZodForm } from "@homarr/form"; import { createModal } from "@homarr/modals"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useI18n } from "@homarr/translation/client"; -import { z } from "@homarr/validation"; interface AddDockerAppToHomarrProps { selectedContainers: RouterOutputs["docker"]["getContainers"]["containers"]; diff --git a/packages/validation/index.ts b/packages/validation/index.ts index 8c3fd3ff7..3bd16e178 100644 --- a/packages/validation/index.ts +++ b/packages/validation/index.ts @@ -1,2 +1 @@ export * from "./src"; -export * from "zod"; diff --git a/packages/widgets/package.json b/packages/widgets/package.json index d2f957ad4..74358eaa0 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -64,7 +64,8 @@ "next": "15.1.6", "react": "19.0.0", "react-dom": "19.0.0", - "video.js": "^8.21.0" + "video.js": "^8.21.0", + "zod": "^3.24.1" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/widgets/src/calendar/index.ts b/packages/widgets/src/calendar/index.ts index 6ce92f0a5..333d47a99 100644 --- a/packages/widgets/src/calendar/index.ts +++ b/packages/widgets/src/calendar/index.ts @@ -1,8 +1,8 @@ import { IconCalendar } from "@tabler/icons-react"; +import { z } from "zod"; import { getIntegrationKindsByCategory } from "@homarr/definitions"; import { radarrReleaseTypes } from "@homarr/integrations/types"; -import { z } from "@homarr/validation"; import { createWidgetDefinition } from "../definition"; import { optionsBuilder } from "../options"; diff --git a/packages/widgets/src/downloads/index.ts b/packages/widgets/src/downloads/index.ts index b6ea1ef6a..c5161463e 100644 --- a/packages/widgets/src/downloads/index.ts +++ b/packages/widgets/src/downloads/index.ts @@ -1,8 +1,8 @@ import { IconDownload } from "@tabler/icons-react"; +import { z } from "zod"; import { getIntegrationKindsByCategory } from "@homarr/definitions"; import type { ExtendedDownloadClientItem } from "@homarr/integrations"; -import { z } from "@homarr/validation"; import { createWidgetDefinition } from "../definition"; import { optionsBuilder } from "../options"; diff --git a/packages/widgets/src/media-transcoding/index.ts b/packages/widgets/src/media-transcoding/index.ts index c8c6b13fb..53e523645 100644 --- a/packages/widgets/src/media-transcoding/index.ts +++ b/packages/widgets/src/media-transcoding/index.ts @@ -1,6 +1,5 @@ import { IconTransform } from "@tabler/icons-react"; - -import { z } from "@homarr/validation"; +import { z } from "zod"; import { createWidgetDefinition } from "../definition"; import { optionsBuilder } from "../options"; diff --git a/packages/widgets/src/minecraft/server-status/index.ts b/packages/widgets/src/minecraft/server-status/index.ts index df4c0e2bc..d929f40da 100644 --- a/packages/widgets/src/minecraft/server-status/index.ts +++ b/packages/widgets/src/minecraft/server-status/index.ts @@ -1,6 +1,5 @@ import { IconBrandMinecraft } from "@tabler/icons-react"; - -import { z } from "@homarr/validation"; +import { z } from "zod"; import { createWidgetDefinition } from "../../definition"; import { optionsBuilder } from "../../options"; diff --git a/packages/widgets/src/modals/widget-edit-modal.tsx b/packages/widgets/src/modals/widget-edit-modal.tsx index 3618ab79e..f3d5f6f45 100644 --- a/packages/widgets/src/modals/widget-edit-modal.tsx +++ b/packages/widgets/src/modals/widget-edit-modal.tsx @@ -2,13 +2,13 @@ import { useState } from "react"; import { Button, Group, Stack } from "@mantine/core"; +import { z } from "zod"; import { objectEntries } from "@homarr/common"; import type { WidgetKind } from "@homarr/definitions"; import { zodResolver } from "@homarr/form"; import { createModal, useModalAction } from "@homarr/modals"; import { useI18n } from "@homarr/translation/client"; -import { z } from "@homarr/validation"; import { zodErrorMap } from "@homarr/validation/form"; import { widgetImports } from ".."; diff --git a/packages/widgets/src/options.ts b/packages/widgets/src/options.ts index 3314a121f..20a5330c2 100644 --- a/packages/widgets/src/options.ts +++ b/packages/widgets/src/options.ts @@ -1,10 +1,10 @@ import type React from "react"; import type { DraggableAttributes, UniqueIdentifier } from "@dnd-kit/core"; import type { ActionIconProps } from "@mantine/core"; +import { z } from "zod"; +import type { ZodType } from "zod"; import type { IntegrationKind } from "@homarr/definitions"; -import type { ZodType } from "@homarr/validation"; -import { z } from "@homarr/validation"; import type { inferSelectOptionValue, SelectOption } from "./_inputs/widget-select-input"; diff --git a/packages/widgets/src/rssFeed/index.ts b/packages/widgets/src/rssFeed/index.ts index 655193d12..267547631 100644 --- a/packages/widgets/src/rssFeed/index.ts +++ b/packages/widgets/src/rssFeed/index.ts @@ -1,6 +1,5 @@ import { IconRss } from "@tabler/icons-react"; - -import { z } from "@homarr/validation"; +import { z } from "zod"; import { createWidgetDefinition } from "../definition"; import { optionsBuilder } from "../options"; diff --git a/packages/widgets/src/weather/index.ts b/packages/widgets/src/weather/index.ts index 137bc9b4d..c20ef1e39 100644 --- a/packages/widgets/src/weather/index.ts +++ b/packages/widgets/src/weather/index.ts @@ -1,7 +1,6 @@ import { IconCloud } from "@tabler/icons-react"; import dayjs from "dayjs"; - -import { z } from "@homarr/validation"; +import { z } from "zod"; import { createWidgetDefinition } from "../definition"; import { optionsBuilder } from "../options"; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0c87614c7..c201ab5a9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -274,6 +274,9 @@ importers: use-deep-compare-effect: specifier: ^1.8.1 version: 1.8.1(react@19.0.0) + zod: + specifier: ^3.24.1 + version: 3.24.1 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -584,6 +587,9 @@ importers: trpc-to-openapi: specifier: ^2.1.2 version: 2.1.2(@trpc/server@11.0.0-rc.729(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1) + zod: + specifier: ^3.24.1 + version: 3.24.1 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -654,6 +660,9 @@ importers: react-dom: specifier: 19.0.0 version: 19.0.0(react@19.0.0) + zod: + specifier: ^3.24.1 + version: 3.24.1 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1067,6 +1076,9 @@ importers: '@mantine/form': specifier: ^7.16.2 version: 7.16.2(react@19.0.0) + zod: + specifier: ^3.24.1 + version: 3.24.1 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1159,6 +1171,9 @@ importers: xml2js: specifier: ^0.6.2 version: 0.6.2 + zod: + specifier: ^3.24.1 + version: 3.24.1 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1291,6 +1306,9 @@ importers: react-dom: specifier: 19.0.0 version: 19.0.0(react@19.0.0) + zod: + specifier: ^3.24.1 + version: 3.24.1 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1918,6 +1936,9 @@ importers: video.js: specifier: ^8.21.0 version: 8.21.0 + zod: + specifier: ^3.24.1 + version: 3.24.1 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0