chore(deps): upgrade npm dependencies

This commit is contained in:
Fu Diwei 2025-06-23 17:08:06 +08:00 committed by RHQYZ
parent d7d18d932a
commit cfee0e2b4a
204 changed files with 1023 additions and 1060 deletions

939
ui/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -11,34 +11,34 @@
},
"dependencies": {
"@ant-design/icons": "^6.0.0",
"@ant-design/pro-components": "^2.8.7",
"@codemirror/lang-json": "^6.0.1",
"@ant-design/pro-components": "^2.8.9",
"@codemirror/lang-json": "^6.0.2",
"@codemirror/lang-yaml": "^6.1.2",
"@codemirror/language": "^6.11.0",
"@codemirror/language": "^6.11.1",
"@codemirror/legacy-modes": "^6.5.1",
"@uiw/codemirror-extensions-basic-setup": "^4.23.12",
"@uiw/codemirror-theme-vscode": "^4.23.12",
"@uiw/react-codemirror": "^4.23.12",
"@uiw/codemirror-extensions-basic-setup": "^4.23.13",
"@uiw/codemirror-theme-vscode": "^4.23.13",
"@uiw/react-codemirror": "^4.23.13",
"ahooks": "^3.8.5",
"antd": "^5.25.3",
"antd-zod": "^6.1.0",
"antd": "^5.26.1",
"antd-zod": "^7.0.0",
"clsx": "^2.1.1",
"cron-parser": "^5.2.0",
"cron-parser": "^5.3.0",
"file-saver": "^2.0.5",
"i18next": "^25.2.1",
"i18next-browser-languagedetector": "^8.1.0",
"i18next-browser-languagedetector": "^8.2.0",
"immer": "^10.1.1",
"lucide-react": "^0.511.0",
"lucide-react": "^0.522.0",
"nanoid": "^5.1.5",
"pocketbase": "^0.26.0",
"radash": "^12.1.0",
"pocketbase": "^0.26.1",
"radash": "^12.1.1",
"react": "^18.3.1",
"react-copy-to-clipboard": "^5.1.0",
"react-dom": "^18.3.1",
"react-i18next": "^15.5.2",
"react-router-dom": "^7.6.1",
"react-i18next": "^15.5.3",
"react-router-dom": "^7.6.2",
"tailwind-merge": "^2.6.0",
"zod": "^3.25.28",
"zod": "^3.25.67",
"zustand": "^5.0.5"
},
"devDependencies": {
@ -48,22 +48,22 @@
"@types/react": "^18.3.12",
"@types/react-copy-to-clipboard": "^5.0.7",
"@types/react-dom": "^18.3.1",
"@typescript-eslint/eslint-plugin": "^8.32.1",
"@typescript-eslint/parser": "^8.32.1",
"@typescript-eslint/eslint-plugin": "^8.34.1",
"@typescript-eslint/parser": "^8.34.1",
"@vitejs/plugin-legacy": "^6.1.1",
"@vitejs/plugin-react": "^4.5.0",
"@vitejs/plugin-react": "^4.6.0",
"autoprefixer": "^10.4.21",
"eslint": "^8.57.0",
"eslint-config-prettier": "^10.1.5",
"eslint-import-resolver-typescript": "^3.8.3",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-prettier": "^5.4.0",
"eslint-plugin-import": "^2.32.0",
"eslint-plugin-prettier": "^5.5.0",
"eslint-plugin-react-hooks": "^5.2.0",
"eslint-plugin-react-refresh": "^0.4.20",
"eslint-plugin-tailwindcss": "^3.18.0",
"fs-extra": "^11.3.0",
"postcss": "^8.5.3",
"prettier": "^3.5.3",
"postcss": "^8.5.6",
"prettier": "^3.6.0",
"tailwindcss": "^3.4.17",
"tailwindcss-animate": "^1.0.7",
"typescript": "^5.8.3",

View File

@ -2,7 +2,7 @@ import { forwardRef, useImperativeHandle, useMemo, useState } from "react";
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import AccessProviderPicker from "@/components/provider/AccessProviderPicker";
import AccessProviderSelect from "@/components/provider/AccessProviderSelect";
@ -108,7 +108,7 @@ const AccessForm = forwardRef<AccessFormInstance, AccessFormProps>(({ className,
const formSchema = z.object({
name: z
.string({ message: t("access.form.name.placeholder") })
.string(t("access.form.name.placeholder"))
.min(1, t("access.form.name.placeholder"))
.max(64, t("common.errmsg.string_max", { max: 64 })),
provider: z.nativeEnum(ACCESS_PROVIDERS, {

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input, Select, Switch } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigFor1Panel } from "@/domain/access";
@ -27,7 +27,7 @@ const AccessForm1PanelConfig = ({ form: formInst, formName, disabled, initialVal
const { t } = useTranslation();
const formSchema = z.object({
serverUrl: z.string().url(t("common.errmsg.url_invalid")),
serverUrl: z.url(t("common.errmsg.url_invalid")),
apiVersion: z.string().nonempty(t("access.form.1panel_api_version.placeholder")),
apiKey: z
.string()

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForACMECA } from "@/domain/access";
@ -25,7 +25,7 @@ const AccessFormACMECAConfig = ({ form: formInst, formName, disabled, initialVal
const { t } = useTranslation();
const formSchema = z.object({
endpoint: z.string().url(t("common.errmsg.url_invalid")),
endpoint: z.url(t("common.errmsg.url_invalid")),
eabKid: z.string().nullish(),
eabHmacKey: z.string().nullish(),
});

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input, Select } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForACMEHttpReq } from "@/domain/access";
@ -26,7 +26,7 @@ const AccessFormACMEHttpReqConfig = ({ form: formInst, formName, disabled, initi
const { t } = useTranslation();
const formSchema = z.object({
endpoint: z.string().url(t("common.errmsg.url_invalid")),
endpoint: z.url(t("common.errmsg.url_invalid")),
mode: z.string().nullish(),
username: z
.string()

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input, Switch } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForAPISIX } from "@/domain/access";
@ -26,7 +26,7 @@ const AccessFormAPISIXConfig = ({ form: formInst, formName, disabled, initialVal
const { t } = useTranslation();
const formSchema = z.object({
serverUrl: z.string().url(t("common.errmsg.url_invalid")),
serverUrl: z.url(t("common.errmsg.url_invalid")),
apiKey: z.string().nonempty(t("access.form.apisix_api_key.placeholder")),
allowInsecureConnections: z.boolean().nullish(),
});

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForAWS } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForAliyun } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { AutoComplete, Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForAzure } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForBaiduCloud } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForBaishan } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input, Switch } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForBaotaPanel } from "@/domain/access";
@ -26,7 +26,7 @@ const AccessFormBaotaPanelConfig = ({ form: formInst, formName, disabled, initia
const { t } = useTranslation();
const formSchema = z.object({
serverUrl: z.string().url(t("common.errmsg.url_invalid")),
serverUrl: z.url(t("common.errmsg.url_invalid")),
apiKey: z.string().nonempty(t("access.form.baotapanel_api_key.placeholder")),
allowInsecureConnections: z.boolean().nullish(),
});

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input, Switch } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForBaotaWAF } from "@/domain/access";
@ -26,7 +26,7 @@ const AccessFormBaotaWAFConfig = ({ form: formInst, formName, disabled, initialV
const { t } = useTranslation();
const formSchema = z.object({
serverUrl: z.string().url(t("common.errmsg.url_invalid")),
serverUrl: z.url(t("common.errmsg.url_invalid")),
apiKey: z.string().nonempty(t("access.form.baotawaf_api_key.placeholder")),
allowInsecureConnections: z.boolean().nullish(),
});

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForBunny } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForBytePlus } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForCMCCCloud } from "@/domain/access";
type AccessFormCMCCCloudConfigFieldValues = Nullish<AccessConfigForCMCCCloud>;

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForCTCCCloud } from "@/domain/access";
type AccessFormCTCCCloudConfigFieldValues = Nullish<AccessConfigForCTCCCloud>;

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForCacheFly } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input, Switch } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForCdnfly } from "@/domain/access";
@ -27,7 +27,7 @@ const AccessFormCdnflyConfig = ({ form: formInst, formName, disabled, initialVal
const { t } = useTranslation();
const formSchema = z.object({
serverUrl: z.string().url(t("common.errmsg.url_invalid")),
serverUrl: z.url(t("common.errmsg.url_invalid")),
apiKey: z
.string()
.min(1, t("access.form.cdnfly_api_key.placeholder"))

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForClouDNS } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForCloudflare } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForConstellix } from "@/domain/access";
type AccessFormConstellixConfigFieldValues = Nullish<AccessConfigForConstellix>;

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForDNSLA } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForDeSEC } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForDigitalOcean } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForDingTalkBot } from "@/domain/access";
@ -26,7 +26,7 @@ const AccessFormDingTalkBotConfig = ({ form: formInst, formName, disabled, initi
const { t } = useTranslation();
const formSchema = z.object({
webhookUrl: z.string().url(t("common.errmsg.url_invalid")),
webhookUrl: z.url(t("common.errmsg.url_invalid")),
secret: z.string().nonempty(t("access.form.dingtalkbot_secret.placeholder")),
});
const formRule = createSchemaFieldRule(formSchema);

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForDiscordBot } from "@/domain/access";
@ -26,7 +26,7 @@ const AccessFormDiscordBotConfig = ({ form: formInst, formName, disabled, initia
const formSchema = z.object({
botToken: z
.string({ message: t("access.form.discordbot_token.placeholder") })
.string(t("access.form.discordbot_token.placeholder"))
.min(1, t("access.form.discordbot_token.placeholder"))
.max(256, t("common.errmsg.string_max", { max: 256 })),
defaultChannelId: z.string().nullish(),

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForDogeCloud } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForDuckDNS } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForDynv6 } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForEdgio } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input, InputNumber, Switch } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForEmail } from "@/domain/access";
import { validEmailAddress, validPortNumber } from "@/utils/validators";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input, Radio, Switch } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForFlexCDN } from "@/domain/access";
@ -28,10 +28,8 @@ const AccessFormFlexCDNConfig = ({ form: formInst, formName, disabled, initialVa
const { t } = useTranslation();
const formSchema = z.object({
serverUrl: z.string().url(t("common.errmsg.url_invalid")),
role: z.union([z.literal("user"), z.literal("admin")], {
message: t("access.form.flexcdn_api_role.placeholder"),
}),
serverUrl: z.url(t("common.errmsg.url_invalid")),
role: z.literal(["user", "admin"], t("access.form.flexcdn_api_role.placeholder")),
accessKeyId: z.string().nonempty(t("access.form.flexcdn_access_key_id.placeholder")),
accessKey: z.string().nonempty(t("access.form.flexcdn_access_key.placeholder")),
allowInsecureConnections: z.boolean().nullish(),

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForGcore } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForGname } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForGoDaddy } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input, Radio, Switch } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForGoEdge } from "@/domain/access";
@ -28,10 +28,8 @@ const AccessFormGoEdgeConfig = ({ form: formInst, formName, disabled, initialVal
const { t } = useTranslation();
const formSchema = z.object({
serverUrl: z.string().url(t("common.errmsg.url_invalid")),
role: z.union([z.literal("user"), z.literal("admin")], {
message: t("access.form.goedge_api_role.placeholder"),
}),
serverUrl: z.url(t("common.errmsg.url_invalid")),
role: z.literal(["user", "admin"], t("access.form.goedge_api_role.placeholder")),
accessKeyId: z.string().nonempty(t("access.form.goedge_access_key_id.placeholder")),
accessKey: z.string().nonempty(t("access.form.goedge_access_key.placeholder")),
allowInsecureConnections: z.boolean().nullish(),

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForGoogleTrustServices } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForHetzner } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForHuaweiCloud } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForJDCloud } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import TextFileInput from "@/components/TextFileInput";
import { type AccessConfigForKubernetes } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForLarkBot } from "@/domain/access";
@ -25,7 +25,7 @@ const AccessFormLarkBotConfig = ({ form: formInst, formName, disabled, initialVa
const { t } = useTranslation();
const formSchema = z.object({
webhookUrl: z.string().url(t("common.errmsg.url_invalid")),
webhookUrl: z.url(t("common.errmsg.url_invalid")),
});
const formRule = createSchemaFieldRule(formSchema);

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input, Radio, Select, Switch } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForLeCDN } from "@/domain/access";
@ -29,10 +29,8 @@ const AccessFormLeCDNConfig = ({ form: formInst, formName, disabled, initialValu
const { t } = useTranslation();
const formSchema = z.object({
serverUrl: z.string().url(t("common.errmsg.url_invalid")),
role: z.union([z.literal("client"), z.literal("master")], {
message: t("access.form.lecdn_api_role.placeholder"),
}),
serverUrl: z.url(t("common.errmsg.url_invalid")),
role: z.literal(["client", "master"], t("access.form.lecdn_api_role.placeholder")),
username: z.string().nonempty(t("access.form.lecdn_username.placeholder")),
password: z.string().nonempty(t("access.form.lecdn_password.placeholder")),
allowInsecureConnections: z.boolean().nullish(),

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForMattermost } from "@/domain/access";
@ -27,7 +27,7 @@ const AccessFormMattermostConfig = ({ form: formInst, formName, disabled, initia
const { t } = useTranslation();
const formSchema = z.object({
serverUrl: z.string().url(t("common.errmsg.url_invalid")),
serverUrl: z.url(t("common.errmsg.url_invalid")),
username: z.string().nonempty(t("access.form.mattermost_username.placeholder")),
password: z.string().nonempty(t("access.form.mattermost_password.placeholder")),
defaultChannelId: z.string().nullish(),

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForNS1 } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForNameDotCom } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForNameSilo } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForNamecheap } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForNetcup } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForNetlify } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForPorkbun } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input, Switch } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForPowerDNS } from "@/domain/access";
@ -26,7 +26,7 @@ const AccessFormPowerDNSConfig = ({ form: formInst, formName, disabled, initialV
const { t } = useTranslation();
const formSchema = z.object({
serverUrl: z.string().url(t("common.errmsg.url_invalid")),
serverUrl: z.url(t("common.errmsg.url_invalid")),
apiKey: z
.string()
.min(1, t("access.form.powerdns_api_key.placeholder"))

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input, Switch } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForProxmoxVE } from "@/domain/access";
@ -26,7 +26,7 @@ const AccessFormProxmoxVEConfig = ({ form: formInst, formName, disabled, initial
const { t } = useTranslation();
const formSchema = z.object({
serverUrl: z.string().url(t("common.errmsg.url_invalid")),
serverUrl: z.url(t("common.errmsg.url_invalid")),
apiToken: z.string().nonempty(t("access.form.proxmoxve_api_token.placeholder")),
apiTokenSecret: z.string().nullish(),
allowInsecureConnections: z.boolean().nullish(),

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForQiniu } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForRainYun } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input, Switch } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForRatPanel } from "@/domain/access";
@ -27,7 +27,7 @@ const AccessFormRatPanelConfig = ({ form: formInst, formName, disabled, initialV
const { t } = useTranslation();
const formSchema = z.object({
serverUrl: z.string().url(t("common.errmsg.url_invalid")),
serverUrl: z.url(t("common.errmsg.url_invalid")),
accessTokenId: z.preprocess((v) => Number(v), z.number().positive(t("access.form.ratpanel_access_token_id.placeholder"))),
accessToken: z.string().nonempty(t("access.form.ratpanel_access_token.placeholder")),
allowInsecureConnections: z.boolean().nullish(),

View File

@ -2,7 +2,7 @@ import { useTranslation } from "react-i18next";
import { ArrowDownOutlined, ArrowUpOutlined, CloseOutlined, PlusOutlined } from "@ant-design/icons";
import { Button, Collapse, Form, type FormInstance, Input, InputNumber, Select, Space } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import Show from "@/components/Show";
import TextFileInput from "@/components/TextFileInput";
@ -44,9 +44,7 @@ const AccessFormSSHConfig = ({ form: formInst, formName, disabled, initialValues
.int(t("access.form.ssh_port.placeholder"))
.refine((v) => validPortNumber(v), t("common.errmsg.port_invalid"))
),
authMethod: z.union([z.literal(AUTH_METHOD_NONE), z.literal(AUTH_METHOD_PASSWORD), z.literal(AUTH_METHOD_KEY)], {
message: t("access.form.ssh_auth_method.placeholder"),
}),
authMethod: z.literal([AUTH_METHOD_NONE, AUTH_METHOD_PASSWORD, AUTH_METHOD_KEY], t("access.form.ssh_auth_method.placeholder")),
username: z
.string()
.min(1, t("access.form.ssh_username.placeholder"))
@ -55,12 +53,18 @@ const AccessFormSSHConfig = ({ form: formInst, formName, disabled, initialValues
.string()
.max(64, t("common.errmsg.string_max", { max: 64 }))
.nullish()
.refine((v) => fieldAuthMethod !== AUTH_METHOD_PASSWORD || !!v?.trim(), t("access.form.ssh_password.placeholder")),
.refine((v) => {
if (fieldAuthMethod !== AUTH_METHOD_PASSWORD) return true;
return !!v?.trim();
}, t("access.form.ssh_password.placeholder")),
key: z
.string()
.max(20480, t("common.errmsg.string_max", { max: 20480 }))
.nullish()
.refine((v) => fieldAuthMethod !== AUTH_METHOD_KEY || !!v?.trim(), t("access.form.ssh_key.placeholder")),
.refine((v) => {
if (fieldAuthMethod !== AUTH_METHOD_KEY) return true;
return !!v?.trim();
}, t("access.form.ssh_key.placeholder")),
keyPassphrase: z
.string()
.max(20480, t("common.errmsg.string_max", { max: 20480 }))
@ -77,9 +81,7 @@ const AccessFormSSHConfig = ({ form: formInst, formName, disabled, initialValues
.int(t("access.form.ssh_port.placeholder"))
.refine((v) => validPortNumber(v), t("common.errmsg.port_invalid"))
),
authMethod: z.union([z.literal(AUTH_METHOD_NONE), z.literal(AUTH_METHOD_PASSWORD), z.literal(AUTH_METHOD_KEY)], {
message: t("access.form.ssh_auth_method.placeholder"),
}),
authMethod: z.literal([AUTH_METHOD_NONE, AUTH_METHOD_PASSWORD, AUTH_METHOD_KEY], t("access.form.ssh_auth_method.placeholder")),
username: z
.string()
.min(1, t("access.form.ssh_username.placeholder"))
@ -97,7 +99,7 @@ const AccessFormSSHConfig = ({ form: formInst, formName, disabled, initialValues
.max(20480, t("common.errmsg.string_max", { max: 20480 }))
.nullish(),
}),
{ message: t("access.form.ssh_jump_servers.errmsg.invalid") }
{ error: t("access.form.ssh_jump_servers.errmsg.invalid") }
)
.nullish(),
});

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForSSLCom } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input, Switch } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForSafeLine } from "@/domain/access";
@ -26,7 +26,7 @@ const AccessFormSafeLineConfig = ({ form: formInst, formName, disabled, initialV
const { t } = useTranslation();
const formSchema = z.object({
serverUrl: z.string().url(t("common.errmsg.url_invalid")),
serverUrl: z.url(t("common.errmsg.url_invalid")),
apiToken: z
.string()
.min(1, t("access.form.safeline_api_token.placeholder"))

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForSlackBot } from "@/domain/access";
@ -26,7 +26,7 @@ const AccessFormSlackBotConfig = ({ form: formInst, formName, disabled, initialV
const formSchema = z.object({
botToken: z
.string({ message: t("access.form.slackbot_token.placeholder") })
.string(t("access.form.slackbot_token.placeholder"))
.min(1, t("access.form.slackbot_token.placeholder"))
.max(256, t("common.errmsg.string_max", { max: 256 })),
defaultChannelId: z.string().nullish(),

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForTelegramBot } from "@/domain/access";
@ -26,7 +26,7 @@ const AccessFormTelegramBotConfig = ({ form: formInst, formName, disabled, initi
const formSchema = z.object({
botToken: z
.string({ message: t("access.form.telegrambot_token.placeholder") })
.string(t("access.form.telegrambot_token.placeholder"))
.min(1, t("access.form.telegrambot_token.placeholder"))
.max(256, t("common.errmsg.string_max", { max: 256 })),
defaultChatId: z

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForTencentCloud } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForUCloud } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForUniCloud } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForUpyun } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForVercel } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForVolcEngine } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForWangsu } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForWeComBot } from "@/domain/access";
@ -25,7 +25,7 @@ const AccessFormWeComBotConfig = ({ form: formInst, formName, disabled, initialV
const { t } = useTranslation();
const formSchema = z.object({
webhookUrl: z.string().url(t("common.errmsg.url_invalid")),
webhookUrl: z.url(t("common.errmsg.url_invalid")),
});
const formRule = createSchemaFieldRule(formSchema);

View File

@ -2,7 +2,7 @@ import { useTranslation } from "react-i18next";
import { DownOutlined as DownOutlinedIcon } from "@ant-design/icons";
import { Alert, Button, Dropdown, Form, type FormInstance, Input, Select, Switch } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import CodeInput from "@/components/CodeInput";
import Show from "@/components/Show";
@ -49,10 +49,8 @@ const AccessFormWebhookConfig = ({ form: formInst, formName, disabled, initialVa
const { t } = useTranslation();
const formSchema = z.object({
url: z.string().url(t("common.errmsg.url_invalid")),
method: z.union([z.literal("GET"), z.literal("POST"), z.literal("PUT"), z.literal("PATCH"), z.literal("DELETE")], {
message: t("access.form.webhook_method.placeholder"),
}),
url: z.url(t("common.errmsg.url_invalid")),
method: z.literal(["GET", "POST", "PUT", "PATCH", "DELETE"], t("access.form.webhook_method.placeholder")),
headers: z
.string()
.nullish()

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForWestcn } from "@/domain/access";

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type AccessConfigForZeroSSL } from "@/domain/access";

View File

@ -1,18 +1,15 @@
import { useTranslation } from "react-i18next";
import { Form, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
const NotifyChannelEditFormBarkFields = () => {
const { t } = useTranslation();
const formSchema = z.object({
serverUrl: z
.string({ message: t("settings.notification.channel.form.bark_server_url.placeholder") })
.url(t("common.errmsg.url_invalid"))
.nullish(),
serverUrl: z.url(t("common.errmsg.url_invalid")).nullish(),
deviceKey: z
.string({ message: t("settings.notification.channel.form.bark_device_key.placeholder") })
.string(t("settings.notification.channel.form.bark_device_key.placeholder"))
.nonempty(t("settings.notification.channel.form.bark_device_key.placeholder")),
});
const formRule = createSchemaFieldRule(formSchema);

View File

@ -1,17 +1,17 @@
import { useTranslation } from "react-i18next";
import { Form, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
const NotifyChannelEditFormDingTalkFields = () => {
const { t } = useTranslation();
const formSchema = z.object({
accessToken: z
.string({ message: t("settings.notification.channel.form.dingtalk_access_token.placeholder") })
.string(t("settings.notification.channel.form.dingtalk_access_token.placeholder"))
.nonempty(t("settings.notification.channel.form.dingtalk_access_token.placeholder")),
secret: z
.string({ message: t("settings.notification.channel.form.dingtalk_secret.placeholder") })
.string(t("settings.notification.channel.form.dingtalk_secret.placeholder"))
.nonempty(t("settings.notification.channel.form.dingtalk_secret.placeholder")),
});
const formRule = createSchemaFieldRule(formSchema);

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, Input, InputNumber, Switch } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { validPortNumber } from "@/utils/validators";
@ -10,27 +10,24 @@ const NotifyChannelEditFormEmailFields = () => {
const formSchema = z.object({
smtpHost: z
.string({ message: t("settings.notification.channel.form.email_smtp_host.placeholder") })
.string(t("settings.notification.channel.form.email_smtp_host.placeholder"))
.min(1, t("settings.notification.channel.form.email_smtp_host.placeholder"))
.max(256, t("common.errmsg.string_max", { max: 256 })),
smtpPort: z.preprocess(
(v) => Number(v),
z
.number({ message: t("settings.notification.channel.form.email_smtp_port.placeholder") })
.int(t("settings.notification.channel.form.email_smtp_port.placeholder"))
.refine((v) => validPortNumber(v), t("common.errmsg.port_invalid"))
z.number().refine((v) => validPortNumber(v), t("common.errmsg.port_invalid"))
),
smtpTLS: z.boolean().nullish(),
username: z
.string({ message: t("settings.notification.channel.form.email_username.placeholder") })
.string(t("settings.notification.channel.form.email_username.placeholder"))
.min(1, t("settings.notification.channel.form.email_username.placeholder"))
.max(256, t("common.errmsg.string_max", { max: 256 })),
password: z
.string({ message: t("settings.notification.channel.form.email_password.placeholder") })
.string(t("settings.notification.channel.form.email_password.placeholder"))
.min(1, t("settings.notification.channel.form.email_password.placeholder"))
.max(256, t("common.errmsg.string_max", { max: 256 })),
senderAddress: z.string({ message: t("settings.notification.channel.form.email_sender_address.placeholder") }).email(t("common.errmsg.email_invalid")),
receiverAddress: z.string({ message: t("settings.notification.channel.form.email_receiver_address.placeholder") }).email(t("common.errmsg.email_invalid")),
senderAddress: z.email(t("common.errmsg.email_invalid")),
receiverAddress: z.email(t("common.errmsg.email_invalid")),
});
const formRule = createSchemaFieldRule(formSchema);
const formInst = Form.useFormInstance<z.infer<typeof formSchema>>();

View File

@ -1,20 +1,15 @@
import { useTranslation } from "react-i18next";
import { Form, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
const NotifyChannelEditFormGotifyFields = () => {
const { t } = useTranslation();
const formSchema = z.object({
url: z.string({ message: t("settings.notification.channel.form.gotify_url.placeholder") }).url({ message: t("common.errmsg.url_invalid") }),
token: z.string({ message: t("settings.notification.channel.form.gotify_token.placeholder") }),
priority: z.preprocess(
(val) => Number(val),
z
.number({ message: t("settings.notification.channel.form.gotify_priority.placeholder") })
.gte(0, { message: t("settings.notification.channel.form.gotify_priority.error.gte0") })
),
url: z.url(t("common.errmsg.url_invalid")),
token: z.string(t("settings.notification.channel.form.gotify_token.placeholder")),
priority: z.preprocess((val) => Number(val), z.number().gte(0, t("settings.notification.channel.form.gotify_priority.error.gte0"))),
});
const formRule = createSchemaFieldRule(formSchema);

View File

@ -1,13 +1,13 @@
import { useTranslation } from "react-i18next";
import { Form, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
const NotifyChannelEditFormLarkFields = () => {
const { t } = useTranslation();
const formSchema = z.object({
webhookUrl: z.string({ message: t("settings.notification.channel.form.lark_webhook_url.placeholder") }).url(t("common.errmsg.url_invalid")),
webhookUrl: z.url(t("common.errmsg.url_invalid")),
});
const formRule = createSchemaFieldRule(formSchema);

View File

@ -1,21 +1,21 @@
import { useTranslation } from "react-i18next";
import { Form, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
const NotifyChannelEditFormMattermostFields = () => {
const { t } = useTranslation();
const formSchema = z.object({
serverUrl: z.string({ message: t("settings.notification.channel.form.mattermost_server_url.placeholder") }).url(t("common.errmsg.url_invalid")),
serverUrl: z.url(t("common.errmsg.url_invalid")),
channelId: z
.string({ message: t("settings.notification.channel.form.mattermost_channel_id.placeholder") })
.string(t("settings.notification.channel.form.mattermost_channel_id.placeholder"))
.nonempty(t("settings.notification.channel.form.mattermost_channel_id.placeholder")),
username: z
.string({ message: t("settings.notification.channel.form.mattermost_username.placeholder") })
.string(t("settings.notification.channel.form.mattermost_username.placeholder"))
.nonempty(t("settings.notification.channel.form.mattermost_username.placeholder")),
password: z
.string({ message: t("settings.notification.channel.form.mattermost_password.placeholder") })
.string(t("settings.notification.channel.form.mattermost_password.placeholder"))
.nonempty(t("settings.notification.channel.form.mattermost_password.placeholder")),
});
const formRule = createSchemaFieldRule(formSchema);

View File

@ -1,13 +1,13 @@
import { useTranslation } from "react-i18next";
import { Form, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
const NotifyChannelEditFormPushPlusFields = () => {
const { t } = useTranslation();
const formSchema = z.object({
token: z.string({ message: t("settings.notification.channel.form.pushplus_token.placeholder") }),
token: z.string(t("settings.notification.channel.form.pushplus_token.placeholder")),
});
const formRule = createSchemaFieldRule(formSchema);

View File

@ -1,17 +1,17 @@
import { useTranslation } from "react-i18next";
import { Form, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
const NotifyChannelEditFormPushoverFields = () => {
const { t } = useTranslation();
const formSchema = z.object({
token: z
.string({ message: t("settings.notification.channel.form.pushover_token.placeholder") })
.string(t("settings.notification.channel.form.pushover_token.placeholder"))
.nonempty(t("settings.notification.channel.form.pushover_token.placeholder")),
user: z
.string({ message: t("settings.notification.channel.form.pushover_user.placeholder") })
.string(t("settings.notification.channel.form.pushover_user.placeholder"))
.nonempty(t("settings.notification.channel.form.pushover_user.placeholder")),
});
const formRule = createSchemaFieldRule(formSchema);

View File

@ -1,13 +1,13 @@
import { useTranslation } from "react-i18next";
import { Form, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
const NotifyChannelEditFormServerChanFields = () => {
const { t } = useTranslation();
const formSchema = z.object({
url: z.string({ message: t("settings.notification.channel.form.serverchan_url.placeholder") }).url(t("common.errmsg.url_invalid")),
url: z.url(t("common.errmsg.url_invalid")),
});
const formRule = createSchemaFieldRule(formSchema);

View File

@ -1,18 +1,18 @@
import { useTranslation } from "react-i18next";
import { Form, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
const NotifyChannelEditFormTelegramFields = () => {
const { t } = useTranslation();
const formSchema = z.object({
apiToken: z
.string({ message: t("settings.notification.channel.form.telegram_api_token.placeholder") })
.string(t("settings.notification.channel.form.telegram_api_token.placeholder"))
.min(1, t("settings.notification.channel.form.telegram_api_token.placeholder"))
.max(256, t("common.errmsg.string_max", { max: 256 })),
chatId: z
.string({ message: t("settings.notification.channel.form.telegram_chat_id.placeholder") })
.string(t("settings.notification.channel.form.telegram_chat_id.placeholder"))
.min(1, t("settings.notification.channel.form.telegram_chat_id.placeholder"))
.max(64, t("common.errmsg.string_max", { max: 64 })),
});

View File

@ -1,13 +1,13 @@
import { useTranslation } from "react-i18next";
import { Form, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
const NotifyChannelEditFormWeComFields = () => {
const { t } = useTranslation();
const formSchema = z.object({
webhookUrl: z.string({ message: t("settings.notification.channel.form.wecom_webhook_url.placeholder") }).url({ message: t("common.errmsg.url_invalid") }),
webhookUrl: z.url(t("common.errmsg.url_invalid")),
});
const formRule = createSchemaFieldRule(formSchema);

View File

@ -1,13 +1,13 @@
import { useTranslation } from "react-i18next";
import { Form, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
const NotifyChannelEditFormWebhookFields = () => {
const { t } = useTranslation();
const formSchema = z.object({
url: z.string({ message: t("settings.notification.channel.form.webhook_url.placeholder") }).url(t("common.errmsg.url_invalid")),
url: z.url(t("common.errmsg.url_invalid")),
});
const formRule = createSchemaFieldRule(formSchema);

View File

@ -4,7 +4,7 @@ import { useRequest } from "ahooks";
import { Button, Form, Input, Skeleton, message, notification } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { ClientResponseError } from "pocketbase";
import { z } from "zod";
import { z } from "zod/v4";
import Show from "@/components/Show";
import { type NotifyTemplatesSettingsContent, SETTINGS_NAMES, defaultNotifyTemplate } from "@/domain/settings";

View File

@ -10,7 +10,7 @@ import {
import { useControllableValue } from "ahooks";
import { AutoComplete, Button, Divider, Flex, Form, type FormInstance, Input, InputNumber, Select, Switch, Tooltip, Typography } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import AccessEditModal from "@/components/access/AccessEditModal";
import AccessSelect from "@/components/access/AccessSelect";
@ -60,22 +60,20 @@ const ApplyNodeConfigForm = forwardRef<ApplyNodeConfigFormInstance, ApplyNodeCon
const { accesses } = useAccessesStore(useZustandShallowSelector("accesses"));
const formSchema = z.object({
domains: z.string({ message: t("workflow_node.apply.form.domains.placeholder") }).refine((v) => {
domains: z.string(t("workflow_node.apply.form.domains.placeholder")).refine((v) => {
if (!v) return false;
return String(v)
.split(MULTIPLE_INPUT_SEPARATOR)
.every((e) => validDomainName(e, { allowWildcard: true }));
}, t("common.errmsg.domain_invalid")),
contactEmail: z.string({ message: t("workflow_node.apply.form.contact_email.placeholder") }).email(t("common.errmsg.email_invalid")),
contactEmail: z.email(t("common.errmsg.email_invalid")),
challengeType: z.string().nullish(),
provider: z.string({ message: t("workflow_node.apply.form.provider.placeholder") }).nonempty(t("workflow_node.apply.form.provider.placeholder")),
providerAccessId: z
.string({ message: t("workflow_node.apply.form.provider_access.placeholder") })
.min(1, t("workflow_node.apply.form.provider_access.placeholder")),
provider: z.string(t("workflow_node.apply.form.provider.placeholder")).nonempty(t("workflow_node.apply.form.provider.placeholder")),
providerAccessId: z.string(t("workflow_node.apply.form.provider_access.placeholder")).min(1, t("workflow_node.apply.form.provider_access.placeholder")),
providerConfig: z.any().nullish(),
caProvider: z.string({ message: t("workflow_node.apply.form.ca_provider.placeholder") }).nullish(),
caProvider: z.string(t("workflow_node.apply.form.ca_provider.placeholder")).nullish(),
caProviderAccessId: z
.string({ message: t("workflow_node.apply.form.ca_provider_access.placeholder") })
.string(t("workflow_node.apply.form.ca_provider_access.placeholder"))
.nullish()
.refine((v) => {
if (!fieldCAProvider) return true;
@ -84,14 +82,13 @@ const ApplyNodeConfigForm = forwardRef<ApplyNodeConfigFormInstance, ApplyNodeCon
return !!provider?.builtin || !!v;
}, t("workflow_node.apply.form.ca_provider_access.placeholder")),
caProviderConfig: z.any().nullish(),
keyAlgorithm: z
.string({ message: t("workflow_node.apply.form.key_algorithm.placeholder") })
.nonempty(t("workflow_node.apply.form.key_algorithm.placeholder")),
keyAlgorithm: z.string(t("workflow_node.apply.form.key_algorithm.placeholder")).nonempty(t("workflow_node.apply.form.key_algorithm.placeholder")),
nameservers: z
.string()
.nullish()
.refine((v) => {
if (!v) return true;
return String(v)
.split(MULTIPLE_INPUT_SEPARATOR)
.every((e) => validIPv4Address(e) || validIPv6Address(e) || validDomainName(e));

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
type ApplyNodeConfigFormAWSRoute53ConfigFieldValues = Nullish<{
region: string;
@ -33,11 +33,9 @@ const ApplyNodeConfigFormAWSRoute53Config = ({
const { t } = useTranslation();
const formSchema = z.object({
region: z
.string({ message: t("workflow_node.apply.form.aws_route53_region.placeholder") })
.nonempty(t("workflow_node.apply.form.aws_route53_region.placeholder")),
region: z.string(t("workflow_node.apply.form.aws_route53_region.placeholder")).nonempty(t("workflow_node.apply.form.aws_route53_region.placeholder")),
hostedZoneId: z
.string({ message: t("workflow_node.apply.form.aws_route53_hosted_zone_id.placeholder") })
.string(t("workflow_node.apply.form.aws_route53_hosted_zone_id.placeholder"))
.nonempty(t("workflow_node.apply.form.aws_route53_hosted_zone_id.placeholder")),
});
const formRule = createSchemaFieldRule(formSchema);

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
type ApplyNodeConfigFormAliyunESAConfigFieldValues = Nullish<{
region: string;
@ -23,9 +23,7 @@ const ApplyNodeConfigFormAliyunESAConfig = ({ form: formInst, formName, disabled
const { t } = useTranslation();
const formSchema = z.object({
region: z
.string({ message: t("workflow_node.apply.form.aliyun_esa_region.placeholder") })
.nonempty(t("workflow_node.apply.form.aliyun_esa_region.placeholder")),
region: z.string(t("workflow_node.apply.form.aliyun_esa_region.placeholder")).nonempty(t("workflow_node.apply.form.aliyun_esa_region.placeholder")),
});
const formRule = createSchemaFieldRule(formSchema);

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
type ApplyNodeConfigFormHuaweiCloudDNSConfigFieldValues = Nullish<{
region: string;
@ -32,7 +32,7 @@ const ApplyNodeConfigFormHuaweiCloudDNSConfig = ({
const formSchema = z.object({
region: z
.string({ message: t("workflow_node.apply.form.huaweicloud_dns_region.placeholder") })
.string(t("workflow_node.apply.form.huaweicloud_dns_region.placeholder"))
.nonempty(t("workflow_node.apply.form.huaweicloud_dns_region.placeholder")),
});
const formRule = createSchemaFieldRule(formSchema);

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
type ApplyNodeConfigFormJDCloudDNSConfigFieldValues = Nullish<{
regionId: string;
@ -32,7 +32,7 @@ const ApplyNodeConfigFormJDCloudDNSConfig = ({
const formSchema = z.object({
regionId: z
.string({ message: t("workflow_node.apply.form.jdcloud_dns_region_id.placeholder") })
.string(t("workflow_node.apply.form.jdcloud_dns_region_id.placeholder"))
.nonempty(t("workflow_node.apply.form.jdcloud_dns_region_id.placeholder")),
});
const formRule = createSchemaFieldRule(formSchema);

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
type ApplyNodeConfigFormTencentCloudEOConfigFieldValues = Nullish<{
zoneId: string;
@ -30,7 +30,7 @@ const ApplyNodeConfigFormTencentCloudEOConfig = ({
const formSchema = z.object({
zoneId: z
.string({ message: t("workflow_node.apply.form.tencentcloud_eo_zone_id.placeholder") })
.string(t("workflow_node.apply.form.tencentcloud_eo_zone_id.placeholder"))
.nonempty(t("workflow_node.apply.form.tencentcloud_eo_zone_id.placeholder")),
});
const formRule = createSchemaFieldRule(formSchema);

View File

@ -2,7 +2,7 @@ import { forwardRef, memo, useImperativeHandle, useRef } from "react";
import { useTranslation } from "react-i18next";
import { Form, type FormInstance } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import { type Expr, type WorkflowNodeConfigForCondition, defaultNodeConfigForCondition } from "@/domain/workflow";
import { useAntdForm } from "@/hooks";

View File

@ -3,7 +3,7 @@ import { useTranslation } from "react-i18next";
import { PlusOutlined as PlusOutlinedIcon, QuestionCircleOutlined as QuestionCircleOutlinedIcon } from "@ant-design/icons";
import { Button, Divider, Flex, Form, type FormInstance, Select, Switch, Tooltip, Typography, theme } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import AccessEditModal from "@/components/access/AccessEditModal";
import AccessSelect from "@/components/access/AccessSelect";
@ -137,12 +137,10 @@ const DeployNodeConfigForm = forwardRef<DeployNodeConfigFormInstance, DeployNode
const { getWorkflowOuptutBeforeId } = useWorkflowStore(useZustandShallowSelector(["updateNode", "getWorkflowOuptutBeforeId"]));
const formSchema = z.object({
certificate: z
.string({ message: t("workflow_node.deploy.form.certificate.placeholder") })
.nonempty(t("workflow_node.deploy.form.certificate.placeholder")),
provider: z.string({ message: t("workflow_node.deploy.form.provider.placeholder") }).nonempty(t("workflow_node.deploy.form.provider.placeholder")),
certificate: z.string(t("workflow_node.deploy.form.certificate.placeholder")).nonempty(t("workflow_node.deploy.form.certificate.placeholder")),
provider: z.string(t("workflow_node.deploy.form.provider.placeholder")).nonempty(t("workflow_node.deploy.form.provider.placeholder")),
providerAccessId: z
.string({ message: t("workflow_node.deploy.form.provider_access.placeholder") })
.string(t("workflow_node.deploy.form.provider_access.placeholder"))
.nullish()
.refine((v) => {
if (!fieldProvider) return true;

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Switch } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
type DeployNodeConfigForm1PanelConsoleConfigFieldValues = Nullish<{
autoRestart?: boolean;

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input, Select } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import Show from "@/components/Show";
@ -38,9 +38,7 @@ const DeployNodeConfigForm1PanelSiteConfig = ({
const { t } = useTranslation();
const formSchema = z.object({
resourceType: z.union([z.literal(RESOURCE_TYPE_WEBSITE), z.literal(RESOURCE_TYPE_CERTIFICATE)], {
message: t("workflow_node.deploy.form.1panel_site_resource_type.placeholder"),
}),
resourceType: z.literal([RESOURCE_TYPE_WEBSITE, RESOURCE_TYPE_CERTIFICATE], t("workflow_node.deploy.form.1panel_site_resource_type.placeholder")),
websiteId: z
.union([z.string(), z.number().int()])
.nullish()

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input, Select } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
import Show from "@/components/Show";
@ -31,9 +31,7 @@ const DeployNodeConfigFormAPISIXConfig = ({ form: formInst, formName, disabled,
const { t } = useTranslation();
const formSchema = z.object({
resourceType: z.literal(RESOURCE_TYPE_CERTIFICATE, {
message: t("workflow_node.deploy.form.apisix_resource_type.placeholder"),
}),
resourceType: z.literal(RESOURCE_TYPE_CERTIFICATE, t("workflow_node.deploy.form.apisix_resource_type.placeholder")),
certificateId: z
.string()
.nullish()

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
type DeployNodeConfigFormAWSACMConfigFieldValues = Nullish<{
region: string;
@ -24,9 +24,7 @@ const DeployNodeConfigFormAWSACMConfig = ({ form: formInst, formName, disabled,
const { t } = useTranslation();
const formSchema = z.object({
region: z
.string({ message: t("workflow_node.deploy.form.aws_acm_region.placeholder") })
.nonempty(t("workflow_node.deploy.form.aws_acm_region.placeholder")),
region: z.string(t("workflow_node.deploy.form.aws_acm_region.placeholder")).nonempty(t("workflow_node.deploy.form.aws_acm_region.placeholder")),
certificateArn: z.string().nullish(),
});
const formRule = createSchemaFieldRule(formSchema);

View File

@ -1,7 +1,7 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input, Select } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
import { z } from "zod/v4";
type DeployNodeConfigFormAWSCloudFrontConfigFieldValues = Nullish<{
region: string;

Some files were not shown because too many files have changed in this diff Show More