diff --git a/ui/package-lock.json b/ui/package-lock.json index e1bbb340..43e91d13 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -9,34 +9,34 @@ "version": "0.0.0", "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": { @@ -46,22 +46,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", @@ -184,14 +184,14 @@ } }, "node_modules/@ant-design/pro-card": { - "version": "2.9.7", - "resolved": "https://registry.npmmirror.com/@ant-design/pro-card/-/pro-card-2.9.7.tgz", - "integrity": "sha512-uDDYowmYH1ldRfG8Mb4QOwcEEz6ptRBQDLO1tkVADCRkdOMwz82xlZneR4uVuFyKcuNmgHzarYNncozBKhFuaA==", + "version": "2.9.9", + "resolved": "https://registry.npmmirror.com/@ant-design/pro-card/-/pro-card-2.9.9.tgz", + "integrity": "sha512-n0evqAu8rmw/xCkVk7l/8Tk0HqeVPPHeieDCtFKoRIG/ajiadAVM3NfkndEjYKuWbw/dgaVOyc5wW0iBD6dKCA==", "dependencies": { "@ant-design/cssinjs": "^1.21.1", "@ant-design/icons": "^5.0.0", - "@ant-design/pro-provider": "2.15.4", - "@ant-design/pro-utils": "2.17.0", + "@ant-design/pro-provider": "2.16.1", + "@ant-design/pro-utils": "2.17.2", "@babel/runtime": "^7.18.0", "classnames": "^2.3.2", "rc-resize-observer": "^1.0.0", @@ -222,20 +222,20 @@ } }, "node_modules/@ant-design/pro-components": { - "version": "2.8.7", - "resolved": "https://registry.npmmirror.com/@ant-design/pro-components/-/pro-components-2.8.7.tgz", - "integrity": "sha512-QhibkPsUJryEjI1QmwUn+XCngGHidu0ekvricL6TIEvPgP+AUAca29XutN5+Mmn8Xfja1ca9HFTHTgFoV74Z7Q==", + "version": "2.8.9", + "resolved": "https://registry.npmmirror.com/@ant-design/pro-components/-/pro-components-2.8.9.tgz", + "integrity": "sha512-8qs4UxZOjsSoMl3goer0sGEKKlN51LxE55AkXeP924oq9ffi7tuVEE6y3qag96VwQIgbML1215qgnFoStXmF0w==", "dependencies": { - "@ant-design/pro-card": "2.9.7", - "@ant-design/pro-descriptions": "2.6.7", - "@ant-design/pro-field": "3.0.4", - "@ant-design/pro-form": "2.31.7", - "@ant-design/pro-layout": "7.22.4", - "@ant-design/pro-list": "2.6.7", - "@ant-design/pro-provider": "2.15.4", + "@ant-design/pro-card": "2.9.9", + "@ant-design/pro-descriptions": "2.6.9", + "@ant-design/pro-field": "3.0.6", + "@ant-design/pro-form": "2.31.9", + "@ant-design/pro-layout": "7.22.6", + "@ant-design/pro-list": "2.6.9", + "@ant-design/pro-provider": "2.16.1", "@ant-design/pro-skeleton": "2.2.1", - "@ant-design/pro-table": "3.19.0", - "@ant-design/pro-utils": "2.17.0", + "@ant-design/pro-table": "3.20.1", + "@ant-design/pro-utils": "2.17.2", "@babel/runtime": "^7.16.3" }, "peerDependencies": { @@ -245,15 +245,15 @@ } }, "node_modules/@ant-design/pro-descriptions": { - "version": "2.6.7", - "resolved": "https://registry.npmmirror.com/@ant-design/pro-descriptions/-/pro-descriptions-2.6.7.tgz", - "integrity": "sha512-fgn2d0kDWUODGDWKpgziZuuqPlmIoKxQFJY9Yg4nbaRp8GDDKZeSSqgvW+OxjpYM8dxq31fiz1dZlZnOPoYKpg==", + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/@ant-design/pro-descriptions/-/pro-descriptions-2.6.9.tgz", + "integrity": "sha512-UU1XIFoPCTLRUQM0aMStQ364MvCucEcVNOvgP75iGboajCWxwtwtWNqiCkHrtmoorgxpNYa0lS6Utho1fvXlQA==", "dependencies": { - "@ant-design/pro-field": "3.0.4", - "@ant-design/pro-form": "2.31.7", - "@ant-design/pro-provider": "2.15.4", + "@ant-design/pro-field": "3.0.6", + "@ant-design/pro-form": "2.31.9", + "@ant-design/pro-provider": "2.16.1", "@ant-design/pro-skeleton": "2.2.1", - "@ant-design/pro-utils": "2.17.0", + "@ant-design/pro-utils": "2.17.2", "@babel/runtime": "^7.18.0", "rc-resize-observer": "^0.2.3", "rc-util": "^5.0.6" @@ -279,13 +279,13 @@ } }, "node_modules/@ant-design/pro-field": { - "version": "3.0.4", - "resolved": "https://registry.npmmirror.com/@ant-design/pro-field/-/pro-field-3.0.4.tgz", - "integrity": "sha512-nJSng/6/pPZFdiFeTtZcBQLNrHg9tIeiKFR1+zzbnQbI3qBOFP9aBZS/+LwkQZcI2G71vrRgz2x5OhHb7AX0wQ==", + "version": "3.0.6", + "resolved": "https://registry.npmmirror.com/@ant-design/pro-field/-/pro-field-3.0.6.tgz", + "integrity": "sha512-zjJAMS5+lu7Zw95UzPY15DmEpHbT9UKPxWPiSQMAJGXUJRYm3ajDYomq7c0gWznpbxuOIiDojhbK5y4CHHcrAw==", "dependencies": { "@ant-design/icons": "^5.0.0", - "@ant-design/pro-provider": "2.15.4", - "@ant-design/pro-utils": "2.17.0", + "@ant-design/pro-provider": "2.16.1", + "@ant-design/pro-utils": "2.17.2", "@babel/runtime": "^7.18.0", "@chenshuai2144/sketch-color": "^1.0.8", "classnames": "^2.3.2", @@ -320,14 +320,14 @@ } }, "node_modules/@ant-design/pro-form": { - "version": "2.31.7", - "resolved": "https://registry.npmmirror.com/@ant-design/pro-form/-/pro-form-2.31.7.tgz", - "integrity": "sha512-0TCtIC/ynbLPoes8sLBFwFbi0tkeNmSU6the2EcyKIKDLfWHDbfkLM1OSFrzv3QD+H8OgFWMkTSOjhMOKSsOBg==", + "version": "2.31.9", + "resolved": "https://registry.npmmirror.com/@ant-design/pro-form/-/pro-form-2.31.9.tgz", + "integrity": "sha512-w8lKCWkpuf7tZnRSQAoGxlRuo2r+8sXMxo8Vba2fi7/wb4u75ECI8qQ9r5dUeN1muBxfWlqBOywEwi9jqXE23Q==", "dependencies": { "@ant-design/icons": "^5.0.0", - "@ant-design/pro-field": "3.0.4", - "@ant-design/pro-provider": "2.15.4", - "@ant-design/pro-utils": "2.17.0", + "@ant-design/pro-field": "3.0.6", + "@ant-design/pro-provider": "2.16.1", + "@ant-design/pro-utils": "2.17.2", "@babel/runtime": "^7.18.0", "@chenshuai2144/sketch-color": "^1.0.7", "@umijs/use-params": "^1.0.9", @@ -365,14 +365,14 @@ } }, "node_modules/@ant-design/pro-layout": { - "version": "7.22.4", - "resolved": "https://registry.npmmirror.com/@ant-design/pro-layout/-/pro-layout-7.22.4.tgz", - "integrity": "sha512-X2WO4L2itXemX4zhS+0NG+8kXQD5SX9sG+zjx/15BmIO3FvsUGqOHgoCg0vhd424EiyPj7WtdMZJ39G1xdgDwA==", + "version": "7.22.6", + "resolved": "https://registry.npmmirror.com/@ant-design/pro-layout/-/pro-layout-7.22.6.tgz", + "integrity": "sha512-4DGK9nZ7B0FGVpJkMCUDrksBhTHc/pg72BMOBguqMOZCdsuEuJAyIl12eYK8gasGcbYtHzjvdYCamR+TJR8Low==", "dependencies": { "@ant-design/cssinjs": "^1.21.1", "@ant-design/icons": "^5.0.0", - "@ant-design/pro-provider": "2.15.4", - "@ant-design/pro-utils": "2.17.0", + "@ant-design/pro-provider": "2.16.1", + "@ant-design/pro-utils": "2.17.2", "@babel/runtime": "^7.18.0", "@umijs/route-utils": "^4.0.0", "@umijs/use-params": "^1.0.9", @@ -411,16 +411,16 @@ } }, "node_modules/@ant-design/pro-list": { - "version": "2.6.7", - "resolved": "https://registry.npmmirror.com/@ant-design/pro-list/-/pro-list-2.6.7.tgz", - "integrity": "sha512-6k/En7pioMgepho/1HMf2DAnkSTZiat1lDg2ggCok2lhSgqXzir7x22ewJQRgPvEiVb6/qqaFQNd7a8dnrFj1w==", + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/@ant-design/pro-list/-/pro-list-2.6.9.tgz", + "integrity": "sha512-YKA/6yCjngQnwjMdAzgjMxOInfQf6Wk+gm0tZJzXs/9GYk0cMIOv5OdaSFW9IBsSmzJ97nBZECYCSOlsgz51uw==", "dependencies": { "@ant-design/cssinjs": "^1.21.1", "@ant-design/icons": "^5.0.0", - "@ant-design/pro-card": "2.9.7", - "@ant-design/pro-field": "3.0.4", - "@ant-design/pro-table": "3.19.0", - "@ant-design/pro-utils": "2.17.0", + "@ant-design/pro-card": "2.9.9", + "@ant-design/pro-field": "3.0.6", + "@ant-design/pro-table": "3.20.1", + "@ant-design/pro-utils": "2.17.2", "@babel/runtime": "^7.18.0", "classnames": "^2.3.2", "dayjs": "^1.11.10", @@ -483,9 +483,9 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/@ant-design/pro-provider": { - "version": "2.15.4", - "resolved": "https://registry.npmmirror.com/@ant-design/pro-provider/-/pro-provider-2.15.4.tgz", - "integrity": "sha512-DBX0JNUNOYXAucVqd/zTdqtXckCDqr2Lo85KIku2YzWdhptDPDZRTNqL04JShjGejDl8fzwQ8yREHgVUfzn6Gg==", + "version": "2.16.1", + "resolved": "https://registry.npmmirror.com/@ant-design/pro-provider/-/pro-provider-2.16.1.tgz", + "integrity": "sha512-9kSiptgoEybRleajA9KiMqnGqLTbIGdm7TDclBS4QGGrjkHfcXDw+GruiDwghOHvTwTkZT98Xttvw4w1XfrS+g==", "dependencies": { "@ant-design/cssinjs": "^1.21.1", "@babel/runtime": "^7.18.0", @@ -514,17 +514,17 @@ } }, "node_modules/@ant-design/pro-table": { - "version": "3.19.0", - "resolved": "https://registry.npmmirror.com/@ant-design/pro-table/-/pro-table-3.19.0.tgz", - "integrity": "sha512-nL25734d5q5oqtmG7Apn2TNJUnJE8m9dkopXMQdoNZnv8qeRQLBH+i5cZT1yh7FIO8z6QLXleg+KnR/cI7VRRw==", + "version": "3.20.1", + "resolved": "https://registry.npmmirror.com/@ant-design/pro-table/-/pro-table-3.20.1.tgz", + "integrity": "sha512-QsxKkHfkKnLIZsuznoNBVws0OGGTvOWAk+uWqgb7QBo8jxhofMUDQ/fs10wGSuX5Jm78DhVfMBGBhq8hcZaj7Q==", "dependencies": { "@ant-design/cssinjs": "^1.21.1", "@ant-design/icons": "^5.0.0", - "@ant-design/pro-card": "2.9.7", - "@ant-design/pro-field": "3.0.4", - "@ant-design/pro-form": "2.31.7", - "@ant-design/pro-provider": "2.15.4", - "@ant-design/pro-utils": "2.17.0", + "@ant-design/pro-card": "2.9.9", + "@ant-design/pro-field": "3.0.6", + "@ant-design/pro-form": "2.31.9", + "@ant-design/pro-provider": "2.16.1", + "@ant-design/pro-utils": "2.17.2", "@babel/runtime": "^7.18.0", "@dnd-kit/core": "^6.0.8", "@dnd-kit/modifiers": "^6.0.1", @@ -564,12 +564,12 @@ } }, "node_modules/@ant-design/pro-utils": { - "version": "2.17.0", - "resolved": "https://registry.npmmirror.com/@ant-design/pro-utils/-/pro-utils-2.17.0.tgz", - "integrity": "sha512-hHKUISjMEoS+E5ltJWyvNTrlEA3IimZNxtDrEhorRIbgVYAlmEN5Mj/ESSofzDM3+UlxiI5+A/Y6IHkByTfDEA==", + "version": "2.17.2", + "resolved": "https://registry.npmmirror.com/@ant-design/pro-utils/-/pro-utils-2.17.2.tgz", + "integrity": "sha512-DE7H14nfmdTyPwmJA1mgxHzcedOHSBYpTcqCvEAooK8fi8yXpcwpUs7XuUTeFHPj1gHYl/17X8Mzc3ngB8s63Q==", "dependencies": { "@ant-design/icons": "^5.0.0", - "@ant-design/pro-provider": "2.15.4", + "@ant-design/pro-provider": "2.16.1", "@babel/runtime": "^7.18.0", "classnames": "^2.3.2", "dayjs": "^1.11.10", @@ -620,44 +620,44 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", + "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.26.8", - "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.26.8.tgz", - "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", + "version": "7.27.5", + "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.27.5.tgz", + "integrity": "sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.26.10", - "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.26.10.tgz", - "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", + "version": "7.27.4", + "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.27.4.tgz", + "integrity": "sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.10", - "@babel/helper-compilation-targets": "^7.26.5", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.10", - "@babel/parser": "^7.26.10", - "@babel/template": "^7.26.9", - "@babel/traverse": "^7.26.10", - "@babel/types": "^7.26.10", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.27.3", + "@babel/helpers": "^7.27.4", + "@babel/parser": "^7.27.4", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.27.4", + "@babel/types": "^7.27.3", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -682,13 +682,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.27.0", - "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.27.0.tgz", - "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==", + "version": "7.27.5", + "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.27.5.tgz", + "integrity": "sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==", "dev": true, "dependencies": { - "@babel/parser": "^7.27.0", - "@babel/types": "^7.27.0", + "@babel/parser": "^7.27.5", + "@babel/types": "^7.27.3", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -710,13 +710,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.26.5", - "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", - "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", + "version": "7.27.2", + "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.26.5", - "@babel/helper-validator-option": "^7.25.9", + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -820,27 +820,27 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.25.9", - "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", - "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", "dev": true, "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.26.0", - "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", - "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "version": "7.27.3", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", + "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.3" }, "engines": { "node": ">=6.9.0" @@ -862,9 +862,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.26.5", - "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", - "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", "dev": true, "engines": { "node": ">=6.9.0" @@ -918,27 +918,27 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.25.9", - "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", - "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "dev": true, "engines": { "node": ">=6.9.0" @@ -959,25 +959,25 @@ } }, "node_modules/@babel/helpers": { - "version": "7.27.0", - "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.27.0.tgz", - "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==", + "version": "7.27.6", + "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.27.6.tgz", + "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==", "dev": true, "dependencies": { - "@babel/template": "^7.27.0", - "@babel/types": "^7.27.0" + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.27.0", - "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.27.0.tgz", - "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", + "version": "7.27.5", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.27.5.tgz", + "integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==", "dev": true, "dependencies": { - "@babel/types": "^7.27.0" + "@babel/types": "^7.27.3" }, "bin": { "parser": "bin/babel-parser.js" @@ -1725,12 +1725,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.25.9", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz", - "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==", + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1740,12 +1740,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.25.9", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz", - "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==", + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2047,38 +2047,38 @@ } }, "node_modules/@babel/runtime": { - "version": "7.27.1", - "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.27.1.tgz", - "integrity": "sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==", + "version": "7.27.6", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.27.6.tgz", + "integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.27.0", - "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.27.0.tgz", - "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", + "version": "7.27.2", + "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/parser": "^7.27.0", - "@babel/types": "^7.27.0" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.27.0", - "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.27.0.tgz", - "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==", + "version": "7.27.4", + "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.27.4.tgz", + "integrity": "sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.27.0", - "@babel/parser": "^7.27.0", - "@babel/template": "^7.27.0", - "@babel/types": "^7.27.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.3", + "@babel/parser": "^7.27.4", + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.3", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -2087,13 +2087,13 @@ } }, "node_modules/@babel/types": { - "version": "7.27.0", - "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.27.0.tgz", - "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", + "version": "7.27.6", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.27.6.tgz", + "integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2134,9 +2134,9 @@ } }, "node_modules/@codemirror/lang-json": { - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/@codemirror/lang-json/-/lang-json-6.0.1.tgz", - "integrity": "sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==", + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-json/-/lang-json-6.0.2.tgz", + "integrity": "sha512-x2OtO+AvwEHrEwR0FyyPtfDUiloG3rnVTSZV1W8UteaLL8/MajQd8DpvUb2YVzC+/T18aSDv0H9mu+xw0EStoQ==", "dependencies": { "@codemirror/language": "^6.0.0", "@lezer/json": "^1.0.0" @@ -2157,9 +2157,9 @@ } }, "node_modules/@codemirror/language": { - "version": "6.11.0", - "resolved": "https://registry.npmmirror.com/@codemirror/language/-/language-6.11.0.tgz", - "integrity": "sha512-A7+f++LodNNc1wGgoRDTt78cOwWm9KVezApgjOMp1W4hM0898nsqBXwF+sbePE7ZRcjN7Sa1Z5m2oN27XkmEjQ==", + "version": "6.11.1", + "resolved": "https://registry.npmmirror.com/@codemirror/language/-/language-6.11.1.tgz", + "integrity": "sha512-5kS1U7emOGV84vxC+ruBty5sUgcD0te6dyupyRVG2zaSjhTDM73LhVKUtVwiqSe6QwmEoA4SCiU8AKPFyumAWQ==", "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.23.0", @@ -3059,9 +3059,9 @@ } }, "node_modules/@pkgr/core": { - "version": "0.2.4", - "resolved": "https://registry.npmmirror.com/@pkgr/core/-/core-0.2.4.tgz", - "integrity": "sha512-ROFF39F6ZrnzSUEmQQZUar0Jt4xVoP9WnDRdWwF4NNcXs3xBTLgBUDoOwW141y1jP+S8nahIbdxbFC7IShw9Iw==", + "version": "0.2.7", + "resolved": "https://registry.npmmirror.com/@pkgr/core/-/core-0.2.7.tgz", + "integrity": "sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==", "dev": true, "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" @@ -3223,9 +3223,9 @@ } }, "node_modules/@rolldown/pluginutils": { - "version": "1.0.0-beta.9", - "resolved": "https://registry.npmmirror.com/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.9.tgz", - "integrity": "sha512-e9MeMtVWo186sgvFFJOPGy7/d2j2mZhLJIdVW0C/xDluuOvymEATqz6zKsP0ZmXGzQtqlyjz5sC1sYQUoJG98w==", + "version": "1.0.0-beta.19", + "resolved": "https://registry.npmmirror.com/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.19.tgz", + "integrity": "sha512-3FL3mnMbPu0muGOCaKAhhFEYmqv9eTfPSJRJmANrCwtgK8VuxpsZDGK+m0LYAGoyO8+0j5uRe4PeyPDK1yA/hA==", "dev": true }, "node_modules/@rollup/rollup-android-arm-eabi": { @@ -3616,16 +3616,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.32.1", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.32.1.tgz", - "integrity": "sha512-6u6Plg9nP/J1GRpe/vcjjabo6Uc5YQPAMxsgQyGC/I0RuukiG1wIe3+Vtg3IrSCVJDmqK3j8adrtzXSENRtFgg==", + "version": "8.34.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.34.1.tgz", + "integrity": "sha512-STXcN6ebF6li4PxwNeFnqF8/2BNDvBupf2OPx2yWNzr6mKNGF7q49VM00Pz5FaomJyqvbXpY6PhO+T9w139YEQ==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.32.1", - "@typescript-eslint/type-utils": "8.32.1", - "@typescript-eslint/utils": "8.32.1", - "@typescript-eslint/visitor-keys": "8.32.1", + "@typescript-eslint/scope-manager": "8.34.1", + "@typescript-eslint/type-utils": "8.34.1", + "@typescript-eslint/utils": "8.34.1", + "@typescript-eslint/visitor-keys": "8.34.1", "graphemer": "^1.4.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", @@ -3639,7 +3639,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "@typescript-eslint/parser": "^8.34.1", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } @@ -3654,15 +3654,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.32.1", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-8.32.1.tgz", - "integrity": "sha512-LKMrmwCPoLhM45Z00O1ulb6jwyVr2kr3XJp+G+tSEZcbauNnScewcQwtJqXDhXeYPDEjZ8C1SjXm015CirEmGg==", + "version": "8.34.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-8.34.1.tgz", + "integrity": "sha512-4O3idHxhyzjClSMJ0a29AcoK0+YwnEqzI6oz3vlRf3xw0zbzt15MzXwItOlnr5nIth6zlY2RENLsOPvhyrKAQA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "8.32.1", - "@typescript-eslint/types": "8.32.1", - "@typescript-eslint/typescript-estree": "8.32.1", - "@typescript-eslint/visitor-keys": "8.32.1", + "@typescript-eslint/scope-manager": "8.34.1", + "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/typescript-estree": "8.34.1", + "@typescript-eslint/visitor-keys": "8.34.1", "debug": "^4.3.4" }, "engines": { @@ -3677,14 +3677,35 @@ "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.32.1", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-8.32.1.tgz", - "integrity": "sha512-7IsIaIDeZn7kffk7qXC3o6Z4UblZJKV3UBpkvRNpr5NSyLji7tvTcvmnMNYuYLyh26mN8W723xpo3i4MlD33vA==", + "node_modules/@typescript-eslint/project-service": { + "version": "8.34.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/project-service/-/project-service-8.34.1.tgz", + "integrity": "sha512-nuHlOmFZfuRwLJKDGQOVc0xnQrAmuq1Mj/ISou5044y1ajGNp2BNliIqp7F2LPQ5sForz8lempMFCovfeS1XoA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.32.1", - "@typescript-eslint/visitor-keys": "8.32.1" + "@typescript-eslint/tsconfig-utils": "^8.34.1", + "@typescript-eslint/types": "^8.34.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.34.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-8.34.1.tgz", + "integrity": "sha512-beu6o6QY4hJAgL1E8RaXNC071G4Kso2MGmJskCFQhRhg8VOH/FDbC8soP8NHN7e/Hdphwp8G8cE6OBzC8o41ZA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/visitor-keys": "8.34.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3694,14 +3715,30 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.34.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.34.1.tgz", + "integrity": "sha512-K4Sjdo4/xF9NEeA2khOb7Y5nY6NSXBnod87uniVYW9kHP+hNlDV8trUSFeynA2uxWam4gIWgWoygPrv9VMWrYg==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.32.1", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-8.32.1.tgz", - "integrity": "sha512-mv9YpQGA8iIsl5KyUPi+FGLm7+bA4fgXaeRcFKRDRwDMu4iwrSHeDPipwueNXhdIIZltwCJv+NkxftECbIZWfA==", + "version": "8.34.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-8.34.1.tgz", + "integrity": "sha512-Tv7tCCr6e5m8hP4+xFugcrwTOucB8lshffJ6zf1mF1TbU67R+ntCc6DzLNKM+s/uzDyv8gLq7tufaAhIBYeV8g==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "8.32.1", - "@typescript-eslint/utils": "8.32.1", + "@typescript-eslint/typescript-estree": "8.34.1", + "@typescript-eslint/utils": "8.34.1", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, @@ -3718,9 +3755,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.32.1", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-8.32.1.tgz", - "integrity": "sha512-YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg==", + "version": "8.34.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-8.34.1.tgz", + "integrity": "sha512-rjLVbmE7HR18kDsjNIZQHxmv9RZwlgzavryL5Lnj2ujIRTeXlKtILHgRNmQ3j4daw7zd+mQgy+uyt6Zo6I0IGA==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3731,13 +3768,15 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.32.1", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.32.1.tgz", - "integrity": "sha512-Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg==", + "version": "8.34.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.34.1.tgz", + "integrity": "sha512-rjCNqqYPuMUF5ODD+hWBNmOitjBWghkGKJg6hiCHzUvXRy6rK22Jd3rwbP2Xi+R7oYVvIKhokHVhH41BxPV5mA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.32.1", - "@typescript-eslint/visitor-keys": "8.32.1", + "@typescript-eslint/project-service": "8.34.1", + "@typescript-eslint/tsconfig-utils": "8.34.1", + "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/visitor-keys": "8.34.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -3757,15 +3796,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.32.1", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-8.32.1.tgz", - "integrity": "sha512-DsSFNIgLSrc89gpq1LJB7Hm1YpuhK086DRDJSNrewcGvYloWW1vZLHBTIvarKZDcAORIy/uWNx8Gad+4oMpkSA==", + "version": "8.34.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-8.34.1.tgz", + "integrity": "sha512-mqOwUdZ3KjtGk7xJJnLbHxTuWVn3GO2WZZuM+Slhkun4+qthLdXx32C8xIXbO1kfCECb3jIs3eoxK3eryk7aoQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.32.1", - "@typescript-eslint/types": "8.32.1", - "@typescript-eslint/typescript-estree": "8.32.1" + "@typescript-eslint/scope-manager": "8.34.1", + "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/typescript-estree": "8.34.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3780,13 +3819,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.32.1", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.32.1.tgz", - "integrity": "sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==", + "version": "8.34.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.34.1.tgz", + "integrity": "sha512-xoh5rJ+tgsRKoXnkBPFRLZ7rjKM0AfVbC68UZ/ECXoDbfggb9RbEySN359acY1vS3qZ0jVTVWzbtfapwm5ztxw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.32.1", - "eslint-visitor-keys": "^4.2.0" + "@typescript-eslint/types": "8.34.1", + "eslint-visitor-keys": "^4.2.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3797,9 +3836,9 @@ } }, "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3809,9 +3848,9 @@ } }, "node_modules/@uiw/codemirror-extensions-basic-setup": { - "version": "4.23.12", - "resolved": "https://registry.npmmirror.com/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.23.12.tgz", - "integrity": "sha512-l9vuiXOTFDBetYrRLDmz3jDxQHDsrVAZ2Y6dVfmrqi2AsulsDu+y7csW0JsvaMqo79rYkaIZg8yeqmDgMb7VyQ==", + "version": "4.23.13", + "resolved": "https://registry.npmmirror.com/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.23.13.tgz", + "integrity": "sha512-U1CnDFpq6ydNqrRDS5Bdnvgso8ezwwbrmKvmAD3hmoVyRDsDU6HTtmcV+w0rZ3kElUCkKI5lY0DMvTTQ4+L3RQ==", "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/commands": "^6.0.0", @@ -3835,20 +3874,20 @@ } }, "node_modules/@uiw/codemirror-theme-vscode": { - "version": "4.23.12", - "resolved": "https://registry.npmmirror.com/@uiw/codemirror-theme-vscode/-/codemirror-theme-vscode-4.23.12.tgz", - "integrity": "sha512-ePBaUQiixrpmSoZJWCGXUStKmcM8G0VBv3UqwPR+kNGBjqDife76Gbhv77izSeEI3zRPzL+683BOdclkvWnsMg==", + "version": "4.23.13", + "resolved": "https://registry.npmmirror.com/@uiw/codemirror-theme-vscode/-/codemirror-theme-vscode-4.23.13.tgz", + "integrity": "sha512-Fn79r3NBMPP/hF9ui1e8VCyEjVbZ+rW2MIIGgq/LOkLXZSDXEZRa6NhRt991IuZ6e0R8bprrx3TGVQnkVfODbQ==", "dependencies": { - "@uiw/codemirror-themes": "4.23.12" + "@uiw/codemirror-themes": "4.23.13" }, "funding": { "url": "https://jaywcjlove.github.io/#/sponsor" } }, "node_modules/@uiw/codemirror-themes": { - "version": "4.23.12", - "resolved": "https://registry.npmmirror.com/@uiw/codemirror-themes/-/codemirror-themes-4.23.12.tgz", - "integrity": "sha512-8etEByfS9yttFZW0rcWhdZc7/JXJKRWlU5lHmJCI3GydZNGCzydNA+HtK9nWKpJUndVc58Q2sqSC5OIcwq8y6A==", + "version": "4.23.13", + "resolved": "https://registry.npmmirror.com/@uiw/codemirror-themes/-/codemirror-themes-4.23.13.tgz", + "integrity": "sha512-thk4X8VNl15XPoDiOXdkeMAIIHQOoc5lPfmgOvrhPXHzt4zvH5efLWBw3zgpwuOWF+Uk6sYrS0eumtsSO/kgcA==", "dependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", @@ -3864,15 +3903,15 @@ } }, "node_modules/@uiw/react-codemirror": { - "version": "4.23.12", - "resolved": "https://registry.npmmirror.com/@uiw/react-codemirror/-/react-codemirror-4.23.12.tgz", - "integrity": "sha512-yseqWdzoAAGAW7i/NiU8YrfSLVOEBjQvSx1KpDTFVV/nn0AlAZoDVTIPEBgdXrPlVUQoCrwgpEaj3uZCklk9QA==", + "version": "4.23.13", + "resolved": "https://registry.npmmirror.com/@uiw/react-codemirror/-/react-codemirror-4.23.13.tgz", + "integrity": "sha512-y65ULzxOAfpxrA/8epoAOeCfmJXu9z0P62BbGOkITJTtU7WI59KfPbbwj35npSsMAkAmDE841qZo2I8jst/THg==", "dependencies": { "@babel/runtime": "^7.18.6", "@codemirror/commands": "^6.1.0", "@codemirror/state": "^6.1.1", "@codemirror/theme-one-dark": "^6.0.0", - "@uiw/codemirror-extensions-basic-setup": "4.23.12", + "@uiw/codemirror-extensions-basic-setup": "4.23.13", "codemirror": "^6.0.0" }, "funding": { @@ -3934,15 +3973,15 @@ } }, "node_modules/@vitejs/plugin-react": { - "version": "4.5.0", - "resolved": "https://registry.npmmirror.com/@vitejs/plugin-react/-/plugin-react-4.5.0.tgz", - "integrity": "sha512-JuLWaEqypaJmOJPLWwO335Ig6jSgC1FTONCWAxnqcQthLTK/Yc9aH6hr9z/87xciejbQcnP3GnA1FWUSWeXaeg==", + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-react/-/plugin-react-4.6.0.tgz", + "integrity": "sha512-5Kgff+m8e2PB+9j51eGHEpn5kUzRKH2Ry0qGoe8ItJg7pqnkPrYPkDQZGgGmTa0EGarHrkjLvOdU3b1fzI8otQ==", "dev": true, "dependencies": { - "@babel/core": "^7.26.10", - "@babel/plugin-transform-react-jsx-self": "^7.25.9", - "@babel/plugin-transform-react-jsx-source": "^7.25.9", - "@rolldown/pluginutils": "1.0.0-beta.9", + "@babel/core": "^7.27.4", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.19", "@types/babel__core": "^7.20.5", "react-refresh": "^0.17.0" }, @@ -3950,7 +3989,7 @@ "node": "^14.18.0 || >=16.0.0" }, "peerDependencies": { - "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" } }, "node_modules/acorn": { @@ -4030,9 +4069,9 @@ } }, "node_modules/antd": { - "version": "5.25.3", - "resolved": "https://registry.npmmirror.com/antd/-/antd-5.25.3.tgz", - "integrity": "sha512-tBBcAFRjmWM3sitxrL/FEbQL+MTQntYY5bGa5c1ZZZHXWCynkhS3Ch/gy25mGMUY1M/9Uw3pH029v/RGht1x3w==", + "version": "5.26.1", + "resolved": "https://registry.npmmirror.com/antd/-/antd-5.26.1.tgz", + "integrity": "sha512-CiLGZ2Ftld+fuoj+U3OL8uouuqUppqFJnW4O/4bOgSWzM9XsJGibpNtUa9QArhrZ5ndfnzlPP/4RVXUK/xfSvQ==", "dependencies": { "@ant-design/colors": "^7.2.1", "@ant-design/cssinjs": "^1.23.0", @@ -4053,7 +4092,7 @@ "rc-checkbox": "~3.5.0", "rc-collapse": "~3.9.0", "rc-dialog": "~9.6.0", - "rc-drawer": "~7.2.0", + "rc-drawer": "~7.3.0", "rc-dropdown": "~4.2.1", "rc-field-form": "~2.7.0", "rc-image": "~7.12.0", @@ -4073,13 +4112,13 @@ "rc-slider": "~11.1.8", "rc-steps": "~6.0.1", "rc-switch": "~4.1.0", - "rc-table": "~7.50.5", + "rc-table": "~7.51.0", "rc-tabs": "~15.6.1", "rc-textarea": "~1.10.0", "rc-tooltip": "~6.4.0", "rc-tree": "~5.13.1", "rc-tree-select": "~5.27.0", - "rc-upload": "~4.9.0", + "rc-upload": "~4.9.2", "rc-util": "^5.44.4", "scroll-into-view-if-needed": "^3.1.0", "throttle-debounce": "^5.0.2" @@ -4094,15 +4133,15 @@ } }, "node_modules/antd-zod": { - "version": "6.1.0", - "resolved": "https://registry.npmmirror.com/antd-zod/-/antd-zod-6.1.0.tgz", - "integrity": "sha512-7gXf5NgZO9MRrn54dQVmSDujGuY9YgV6jmE4sOKw4MuFu+YgYPrk0oAEiRTZ9DveCyyZ1krurOwsXJJGuDJ3IQ==", + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/antd-zod/-/antd-zod-7.0.0.tgz", + "integrity": "sha512-1hsEiBC0WbbAJ6Z1W3lRQgaS1oGsxj9UX9eZ9jWpXh8A35OvHNovLRd/1BojrYfGvZaOX/zEJbl3X+9VgqnIcQ==", "dependencies": { "lodash.merge": "^4.6.2" }, "peerDependencies": { "antd": "^5.20.5", - "zod": ">=3.0.0" + "zod": ">=3.25.0" } }, "node_modules/antd/node_modules/@ant-design/icons": { @@ -4172,17 +4211,19 @@ } }, "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmmirror.com/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "version": "3.1.9", + "resolved": "https://registry.npmmirror.com/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -4192,17 +4233,18 @@ } }, "node_modules/array.prototype.findlastindex": { - "version": "1.2.5", - "resolved": "https://registry.npmmirror.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", - "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "version": "1.2.6", + "resolved": "https://registry.npmmirror.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", + "es-abstract": "^1.23.9", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -4483,9 +4525,9 @@ } }, "node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", - "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, "dependencies": { "es-errors": "^1.3.0", @@ -4496,13 +4538,13 @@ } }, "node_modules/call-bound": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/call-bound/-/call-bound-1.0.3.tgz", - "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "dev": true, "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -4684,9 +4726,9 @@ "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==" }, "node_modules/cron-parser": { - "version": "5.2.0", - "resolved": "https://registry.npmmirror.com/cron-parser/-/cron-parser-5.2.0.tgz", - "integrity": "sha512-ED2qJtcjelmUEuoV3btwxiOm3NI8H4/eCZNX3adUkrm+/b3Xq05+YoDXyjIN57VGhskuHx/KzC367GAklo1lRg==", + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/cron-parser/-/cron-parser-5.3.0.tgz", + "integrity": "sha512-IS4mnFu6n3CFgEmXjr+B2zzGHsjJmHEdN+BViKvYSiEn3KWss9ICRDETDX/VZldiW82B94OyAZm4LIT4vcKK0g==", "dependencies": { "luxon": "^3.6.1" }, @@ -4916,26 +4958,27 @@ } }, "node_modules/es-abstract": { - "version": "1.23.8", - "resolved": "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.23.8.tgz", - "integrity": "sha512-lfab8IzDn6EpI1ibZakcgS6WsfEBiB+43cuJo+wgylx1xKXf+Sp+YR3vFuQwC/u3sxYwV8Cxe3B0DpVUu/WiJQ==", + "version": "1.24.0", + "resolved": "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", - "call-bound": "^1.0.3", + "call-bound": "^1.0.4", "data-view-buffer": "^1.0.2", "data-view-byte-length": "^1.0.2", "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.2.6", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", @@ -4947,20 +4990,24 @@ "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", "is-regex": "^1.2.1", + "is-set": "^2.0.3", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.0", + "is-weakref": "^1.1.1", "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.3", + "object-inspect": "^1.13.4", "object-keys": "^1.1.1", "object.assign": "^4.1.7", - "own-keys": "^1.0.0", - "regexp.prototype.flags": "^1.5.3", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", @@ -4969,7 +5016,7 @@ "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.18" + "which-typed-array": "^1.1.19" }, "engines": { "node": ">= 0.4" @@ -4997,9 +5044,9 @@ } }, "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "dev": true, "dependencies": { "es-errors": "^1.3.0" @@ -5009,26 +5056,30 @@ } }, "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.4", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", "dev": true, "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/es-to-primitive": { @@ -5222,9 +5273,9 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.12.0", - "resolved": "https://registry.npmmirror.com/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", - "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", + "version": "2.12.1", + "resolved": "https://registry.npmmirror.com/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", "dev": true, "dependencies": { "debug": "^3.2.7" @@ -5248,29 +5299,29 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.31.0", - "resolved": "https://registry.npmmirror.com/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", - "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "version": "2.32.0", + "resolved": "https://registry.npmmirror.com/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "dependencies": { "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.8", - "array.prototype.findlastindex": "^1.2.5", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.0", + "eslint-module-utils": "^2.12.1", "hasown": "^2.0.2", - "is-core-module": "^2.15.1", + "is-core-module": "^2.16.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", "object.fromentries": "^2.0.8", "object.groupby": "^1.0.3", - "object.values": "^1.2.0", + "object.values": "^1.2.1", "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.8", + "string.prototype.trimend": "^1.0.9", "tsconfig-paths": "^3.15.0" }, "engines": { @@ -5333,13 +5384,13 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.4.0", - "resolved": "https://registry.npmmirror.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.4.0.tgz", - "integrity": "sha512-BvQOvUhkVQM1i63iMETK9Hjud9QhqBnbtT1Zc642p9ynzBuCe5pybkOnvqZIBypXmMlsGcnU4HZ8sCTPfpAexA==", + "version": "5.5.0", + "resolved": "https://registry.npmmirror.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.0.tgz", + "integrity": "sha512-8qsOYwkkGrahrgoUv76NZi23koqXOGiiEzXMrT8Q7VcYaUISR+5MorIUxfWqYXN0fN/31WbSrxCxFkVQ43wwrA==", "dev": true, "dependencies": { "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.11.0" + "synckit": "^0.11.7" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -5732,12 +5783,18 @@ "dev": true }, "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmmirror.com/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "version": "0.3.5", + "resolved": "https://registry.npmmirror.com/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "dev": true, "dependencies": { - "is-callable": "^1.1.3" + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/foreground-child": { @@ -5851,21 +5908,21 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.6", - "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.6.tgz", - "integrity": "sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==", + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "dunder-proto": "^1.0.0", + "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", + "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", - "math-intrinsics": "^1.0.0" + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -5874,6 +5931,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-symbol-description": { "version": "1.1.0", "resolved": "https://registry.npmmirror.com/get-symbol-description/-/get-symbol-description-1.1.0.tgz", @@ -6124,9 +6194,9 @@ } }, "node_modules/i18next-browser-languagedetector": { - "version": "8.1.0", - "resolved": "https://registry.npmmirror.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-8.1.0.tgz", - "integrity": "sha512-mHZxNx1Lq09xt5kCauZ/4bsXOEA2pfpwSoU11/QTJB+pD94iONFwp+ohqi///PwiFvjFOxe1akYCdHyFo1ng5Q==", + "version": "8.2.0", + "resolved": "https://registry.npmmirror.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-8.2.0.tgz", + "integrity": "sha512-P+3zEKLnOF0qmiesW383vsLdtQVyKtCNA9cjSoKCppTKPQVfKd2W8hbVo5ZhNJKDqeM7BOcvNoKJOjpHh4Js9g==", "dependencies": { "@babel/runtime": "^7.23.2" } @@ -6426,6 +6496,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", @@ -6566,12 +6648,12 @@ } }, "node_modules/is-weakref": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.1.0.tgz", - "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "dev": true, "dependencies": { - "call-bound": "^1.0.2" + "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -6810,9 +6892,9 @@ } }, "node_modules/lucide-react": { - "version": "0.511.0", - "resolved": "https://registry.npmmirror.com/lucide-react/-/lucide-react-0.511.0.tgz", - "integrity": "sha512-VK5a2ydJ7xm8GvBeKLS9mu1pVK6ucef9780JVUjw6bAjJL/QXnd4Y0p7SPeOUMC27YhzNCZvm5d/QX0Tp3rc0w==", + "version": "0.522.0", + "resolved": "https://registry.npmmirror.com/lucide-react/-/lucide-react-0.522.0.tgz", + "integrity": "sha512-jnJbw974yZ7rQHHEFKJOlWAefG3ATSCZHANZxIdx8Rk/16siuwjgA4fBULpXEAWx/RlTs3FzmKW/udWUuO0aRw==", "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } @@ -6992,9 +7074,9 @@ } }, "node_modules/object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "version": "1.13.4", + "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, "engines": { "node": ">= 0.4" @@ -7273,9 +7355,9 @@ } }, "node_modules/pocketbase": { - "version": "0.26.0", - "resolved": "https://registry.npmmirror.com/pocketbase/-/pocketbase-0.26.0.tgz", - "integrity": "sha512-WBBeOgz4Jnrd7a1KEzSBUJqpTortKKCcp16j5KoF+4tNIyQHsmynj+qRSvS56/RVacVMbAqO8Qkfj3N84fpzEw==" + "version": "0.26.1", + "resolved": "https://registry.npmmirror.com/pocketbase/-/pocketbase-0.26.1.tgz", + "integrity": "sha512-fjcPDpxyqTZCwqGUTPUV7vssIsNMqHxk9GxbhxYHPEf18RqX2d9cpSqbbHk7aas30jqkgptuKfG7aY/Mytjj3g==" }, "node_modules/possible-typed-array-names": { "version": "1.0.0", @@ -7287,9 +7369,9 @@ } }, "node_modules/postcss": { - "version": "8.5.3", - "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.3.tgz", - "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "version": "8.5.6", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "dev": true, "funding": [ { @@ -7306,7 +7388,7 @@ } ], "dependencies": { - "nanoid": "^3.3.8", + "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -7430,9 +7512,9 @@ "dev": true }, "node_modules/postcss/node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "version": "3.3.11", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "dev": true, "funding": [ { @@ -7457,9 +7539,9 @@ } }, "node_modules/prettier": { - "version": "3.5.3", - "resolved": "https://registry.npmmirror.com/prettier/-/prettier-3.5.3.tgz", - "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/prettier/-/prettier-3.6.0.tgz", + "integrity": "sha512-ujSB9uXHJKzM/2GBuE0hBOUgC77CN3Bnpqa+g80bkv3T3A93wL/xlzDATHhnhkzifz/UE2SNOvmbTz5hSkDlHw==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -7528,9 +7610,9 @@ ] }, "node_modules/radash": { - "version": "12.1.0", - "resolved": "https://registry.npmmirror.com/radash/-/radash-12.1.0.tgz", - "integrity": "sha512-b0Zcf09AhqKS83btmUeYBS8tFK7XL2e3RvLmZcm0sTdF1/UUlHSsjXdCcWNxe7yfmAlPve5ym0DmKGtTzP6kVQ==", + "version": "12.1.1", + "resolved": "https://registry.npmmirror.com/radash/-/radash-12.1.1.tgz", + "integrity": "sha512-h36JMxKRqrAxVD8201FrCpyeNuUY9Y5zZwujr20fFO77tpUtGa6EZzfKw/3WaiBX95fq7+MpsuMLNdSnORAwSA==", "engines": { "node": ">=14.18.0" } @@ -7597,9 +7679,9 @@ } }, "node_modules/rc-drawer": { - "version": "7.2.0", - "resolved": "https://registry.npmmirror.com/rc-drawer/-/rc-drawer-7.2.0.tgz", - "integrity": "sha512-9lOQ7kBekEJRdEpScHvtmEtXnAsy+NGDXiRWc2ZVC7QXAazNVbeT4EraQKYwCME8BJLa8Bxqxvs5swwyOepRwg==", + "version": "7.3.0", + "resolved": "https://registry.npmmirror.com/rc-drawer/-/rc-drawer-7.3.0.tgz", + "integrity": "sha512-DX6CIgiBWNpJIMGFO8BAISFkxiuKitoizooj4BDyee8/SnBn0zwO2FHrNDpqqepj0E/TFTDpmEBCyFuTgC7MOg==", "dependencies": { "@babel/runtime": "^7.23.9", "@rc-component/portal": "^1.1.1", @@ -7956,9 +8038,9 @@ } }, "node_modules/rc-table": { - "version": "7.50.5", - "resolved": "https://registry.npmmirror.com/rc-table/-/rc-table-7.50.5.tgz", - "integrity": "sha512-FDZu8aolhSYd3v9KOc3lZOVAU77wmRRu44R0Wfb8Oj1dXRUsloFaXMSl6f7yuWZUxArJTli7k8TEOX2mvhDl4A==", + "version": "7.51.1", + "resolved": "https://registry.npmmirror.com/rc-table/-/rc-table-7.51.1.tgz", + "integrity": "sha512-5iq15mTHhvC42TlBLRCoCBLoCmGlbRZAlyF21FonFnS/DIC8DeRqnmdyVREwt2CFbPceM0zSNdEeVfiGaqYsKw==", "dependencies": { "@babel/runtime": "^7.10.1", "@rc-component/context": "^1.4.0", @@ -8063,9 +8145,9 @@ } }, "node_modules/rc-upload": { - "version": "4.9.0", - "resolved": "https://registry.npmmirror.com/rc-upload/-/rc-upload-4.9.0.tgz", - "integrity": "sha512-pAzlPnyiFn1GCtEybEG2m9nXNzQyWXqWV2xFYCmDxjN9HzyjS5Pz2F+pbNdYw8mMJsixLEKLG0wVy9vOGxJMJA==", + "version": "4.9.2", + "resolved": "https://registry.npmmirror.com/rc-upload/-/rc-upload-4.9.2.tgz", + "integrity": "sha512-nHx+9rbd1FKMiMRYsqQ3NkXUv7COHPBo3X1Obwq9SWS6/diF/A0aJ5OHubvwUAIDs+4RMleljV0pcrNUc823GQ==", "dependencies": { "@babel/runtime": "^7.18.3", "classnames": "^2.2.5", @@ -8148,11 +8230,11 @@ "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" }, "node_modules/react-i18next": { - "version": "15.5.2", - "resolved": "https://registry.npmmirror.com/react-i18next/-/react-i18next-15.5.2.tgz", - "integrity": "sha512-ePODyXgmZQAOYTbZXQn5rRsSBu3Gszo69jxW6aKmlSgxKAI1fOhDwSu6bT4EKHciWPKQ7v7lPrjeiadR6Gi+1A==", + "version": "15.5.3", + "resolved": "https://registry.npmmirror.com/react-i18next/-/react-i18next-15.5.3.tgz", + "integrity": "sha512-ypYmOKOnjqPEJZO4m1BI0kS8kWqkBNsKYyhVUfij0gvjy9xJNoG/VcGkxq5dRlVwzmrmY1BQMAmpbbUBLwC4Kw==", "dependencies": { - "@babel/runtime": "^7.25.0", + "@babel/runtime": "^7.27.6", "html-parse-stringify": "^3.0.1" }, "peerDependencies": { @@ -8192,9 +8274,9 @@ } }, "node_modules/react-router": { - "version": "7.6.1", - "resolved": "https://registry.npmmirror.com/react-router/-/react-router-7.6.1.tgz", - "integrity": "sha512-hPJXXxHJZEsPFNVbtATH7+MMX43UDeOauz+EAU4cgqTn7ojdI9qQORqS8Z0qmDlL1TclO/6jLRYUEtbWidtdHQ==", + "version": "7.6.2", + "resolved": "https://registry.npmmirror.com/react-router/-/react-router-7.6.2.tgz", + "integrity": "sha512-U7Nv3y+bMimgWjhlT5CRdzHPu2/KVmqPwKUCChW8en5P3znxUqwlYFlbmyj8Rgp1SF6zs5X4+77kBVknkg6a0w==", "dependencies": { "cookie": "^1.0.1", "set-cookie-parser": "^2.6.0" @@ -8213,11 +8295,11 @@ } }, "node_modules/react-router-dom": { - "version": "7.6.1", - "resolved": "https://registry.npmmirror.com/react-router-dom/-/react-router-dom-7.6.1.tgz", - "integrity": "sha512-vxU7ei//UfPYQ3iZvHuO1D/5fX3/JOqhNTbRR+WjSBWxf9bIvpWK+ftjmdfJHzPOuMQKe2fiEdG+dZX6E8uUpA==", + "version": "7.6.2", + "resolved": "https://registry.npmmirror.com/react-router-dom/-/react-router-dom-7.6.2.tgz", + "integrity": "sha512-Q8zb6VlTbdYKK5JJBLQEN06oTUa/RAbG/oQS1auK1I0TbJOXktqm+QENEVJU6QvWynlXPRBXI3fiOQcSEA78rA==", "dependencies": { - "react-router": "7.6.1" + "react-router": "7.6.2" }, "engines": { "node": ">=20.0.0" @@ -8312,14 +8394,16 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.5.3", - "resolved": "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", - "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "version": "1.5.4", + "resolved": "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", "dev": true, "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", "set-function-name": "^2.0.2" }, "engines": { @@ -8652,6 +8736,20 @@ "node": ">= 0.4" } }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/shallowequal": { "version": "1.1.0", "resolved": "https://registry.npmmirror.com/shallowequal/-/shallowequal-1.1.0.tgz", @@ -8798,6 +8896,19 @@ "integrity": "sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==", "dev": true }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/string-convert": { "version": "0.2.1", "resolved": "https://registry.npmmirror.com/string-convert/-/string-convert-0.2.1.tgz", @@ -9047,13 +9158,12 @@ } }, "node_modules/synckit": { - "version": "0.11.4", - "resolved": "https://registry.npmmirror.com/synckit/-/synckit-0.11.4.tgz", - "integrity": "sha512-Q/XQKRaJiLiFIBNN+mndW7S/RHxvwzuZS6ZwmRzUBqJBv/5QIKCEwkBC8GBf8EQJKYnaFs0wOZbKTXBPj8L9oQ==", + "version": "0.11.8", + "resolved": "https://registry.npmmirror.com/synckit/-/synckit-0.11.8.tgz", + "integrity": "sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==", "dev": true, "dependencies": { - "@pkgr/core": "^0.2.3", - "tslib": "^2.8.1" + "@pkgr/core": "^0.2.4" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -9748,15 +9858,16 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.18", - "resolved": "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.18.tgz", - "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", + "version": "1.1.19", + "resolved": "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", "dev": true, "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "for-each": "^0.3.3", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" }, @@ -9940,9 +10051,9 @@ } }, "node_modules/zod": { - "version": "3.25.28", - "resolved": "https://registry.npmmirror.com/zod/-/zod-3.25.28.tgz", - "integrity": "sha512-/nt/67WYKnr5by3YS7LroZJbtcCBurDKKPBPWWzaxvVCGuG/NOsiKkrjoOhI8mJ+SQUXEbUzeB3S+6XDUEEj7Q==", + "version": "3.25.67", + "resolved": "https://registry.npmmirror.com/zod/-/zod-3.25.67.tgz", + "integrity": "sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==", "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/ui/package.json b/ui/package.json index b8383a99..019cb430 100644 --- a/ui/package.json +++ b/ui/package.json @@ -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", diff --git a/ui/src/components/access/AccessForm.tsx b/ui/src/components/access/AccessForm.tsx index 2d8bee1b..09553347 100644 --- a/ui/src/components/access/AccessForm.tsx +++ b/ui/src/components/access/AccessForm.tsx @@ -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(({ 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, { diff --git a/ui/src/components/access/AccessForm1PanelConfig.tsx b/ui/src/components/access/AccessForm1PanelConfig.tsx index 3af64e98..03086bf6 100644 --- a/ui/src/components/access/AccessForm1PanelConfig.tsx +++ b/ui/src/components/access/AccessForm1PanelConfig.tsx @@ -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() diff --git a/ui/src/components/access/AccessFormACMECAConfig.tsx b/ui/src/components/access/AccessFormACMECAConfig.tsx index fbba1c73..34765a36 100644 --- a/ui/src/components/access/AccessFormACMECAConfig.tsx +++ b/ui/src/components/access/AccessFormACMECAConfig.tsx @@ -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(), }); diff --git a/ui/src/components/access/AccessFormACMEHttpReqConfig.tsx b/ui/src/components/access/AccessFormACMEHttpReqConfig.tsx index 6cdd8e3c..86f9cf2c 100644 --- a/ui/src/components/access/AccessFormACMEHttpReqConfig.tsx +++ b/ui/src/components/access/AccessFormACMEHttpReqConfig.tsx @@ -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() diff --git a/ui/src/components/access/AccessFormAPISIXConfig.tsx b/ui/src/components/access/AccessFormAPISIXConfig.tsx index 71de8521..f3fcca60 100644 --- a/ui/src/components/access/AccessFormAPISIXConfig.tsx +++ b/ui/src/components/access/AccessFormAPISIXConfig.tsx @@ -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(), }); diff --git a/ui/src/components/access/AccessFormAWSConfig.tsx b/ui/src/components/access/AccessFormAWSConfig.tsx index 89500feb..b60d64fb 100644 --- a/ui/src/components/access/AccessFormAWSConfig.tsx +++ b/ui/src/components/access/AccessFormAWSConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormAliyunConfig.tsx b/ui/src/components/access/AccessFormAliyunConfig.tsx index f48c3297..882d2621 100644 --- a/ui/src/components/access/AccessFormAliyunConfig.tsx +++ b/ui/src/components/access/AccessFormAliyunConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormAzureConfig.tsx b/ui/src/components/access/AccessFormAzureConfig.tsx index 48be8aa5..faf3a6dc 100644 --- a/ui/src/components/access/AccessFormAzureConfig.tsx +++ b/ui/src/components/access/AccessFormAzureConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormBaiduCloudConfig.tsx b/ui/src/components/access/AccessFormBaiduCloudConfig.tsx index ab7abffc..4e4cbc09 100644 --- a/ui/src/components/access/AccessFormBaiduCloudConfig.tsx +++ b/ui/src/components/access/AccessFormBaiduCloudConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormBaishanConfig.tsx b/ui/src/components/access/AccessFormBaishanConfig.tsx index ab17c62b..1be47e5e 100644 --- a/ui/src/components/access/AccessFormBaishanConfig.tsx +++ b/ui/src/components/access/AccessFormBaishanConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormBaotaPanelConfig.tsx b/ui/src/components/access/AccessFormBaotaPanelConfig.tsx index 6acbc62c..a5633c29 100644 --- a/ui/src/components/access/AccessFormBaotaPanelConfig.tsx +++ b/ui/src/components/access/AccessFormBaotaPanelConfig.tsx @@ -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(), }); diff --git a/ui/src/components/access/AccessFormBaotaWAFConfig.tsx b/ui/src/components/access/AccessFormBaotaWAFConfig.tsx index 13e4a2c2..f4894088 100644 --- a/ui/src/components/access/AccessFormBaotaWAFConfig.tsx +++ b/ui/src/components/access/AccessFormBaotaWAFConfig.tsx @@ -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(), }); diff --git a/ui/src/components/access/AccessFormBunnyConfig.tsx b/ui/src/components/access/AccessFormBunnyConfig.tsx index 8ea052f7..fecb1b52 100644 --- a/ui/src/components/access/AccessFormBunnyConfig.tsx +++ b/ui/src/components/access/AccessFormBunnyConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormBytePlusConfig.tsx b/ui/src/components/access/AccessFormBytePlusConfig.tsx index 5902edb8..1108ad41 100644 --- a/ui/src/components/access/AccessFormBytePlusConfig.tsx +++ b/ui/src/components/access/AccessFormBytePlusConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormCMCCCloudConfig.tsx b/ui/src/components/access/AccessFormCMCCCloudConfig.tsx index 9ee88a07..da32fc43 100644 --- a/ui/src/components/access/AccessFormCMCCCloudConfig.tsx +++ b/ui/src/components/access/AccessFormCMCCCloudConfig.tsx @@ -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; diff --git a/ui/src/components/access/AccessFormCTCCCloudConfig.tsx b/ui/src/components/access/AccessFormCTCCCloudConfig.tsx index f0e9df39..3ef4b7cb 100644 --- a/ui/src/components/access/AccessFormCTCCCloudConfig.tsx +++ b/ui/src/components/access/AccessFormCTCCCloudConfig.tsx @@ -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; diff --git a/ui/src/components/access/AccessFormCacheFlyConfig.tsx b/ui/src/components/access/AccessFormCacheFlyConfig.tsx index 79ca197f..4d5d4862 100644 --- a/ui/src/components/access/AccessFormCacheFlyConfig.tsx +++ b/ui/src/components/access/AccessFormCacheFlyConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormCdnflyConfig.tsx b/ui/src/components/access/AccessFormCdnflyConfig.tsx index 6e06d0e7..37bee25e 100644 --- a/ui/src/components/access/AccessFormCdnflyConfig.tsx +++ b/ui/src/components/access/AccessFormCdnflyConfig.tsx @@ -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")) diff --git a/ui/src/components/access/AccessFormClouDNSConfig.tsx b/ui/src/components/access/AccessFormClouDNSConfig.tsx index 922a8e75..dd729513 100644 --- a/ui/src/components/access/AccessFormClouDNSConfig.tsx +++ b/ui/src/components/access/AccessFormClouDNSConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormCloudflareConfig.tsx b/ui/src/components/access/AccessFormCloudflareConfig.tsx index 6e9ba6c1..c67c0c34 100644 --- a/ui/src/components/access/AccessFormCloudflareConfig.tsx +++ b/ui/src/components/access/AccessFormCloudflareConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormConstellixConfig.tsx b/ui/src/components/access/AccessFormConstellixConfig.tsx index 8e028034..406f2d96 100644 --- a/ui/src/components/access/AccessFormConstellixConfig.tsx +++ b/ui/src/components/access/AccessFormConstellixConfig.tsx @@ -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; diff --git a/ui/src/components/access/AccessFormDNSLAConfig.tsx b/ui/src/components/access/AccessFormDNSLAConfig.tsx index ee5ac5e6..06b8fe41 100644 --- a/ui/src/components/access/AccessFormDNSLAConfig.tsx +++ b/ui/src/components/access/AccessFormDNSLAConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormDeSECConfig.tsx b/ui/src/components/access/AccessFormDeSECConfig.tsx index 10f5a101..5c570850 100644 --- a/ui/src/components/access/AccessFormDeSECConfig.tsx +++ b/ui/src/components/access/AccessFormDeSECConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormDigitalOceanConfig.tsx b/ui/src/components/access/AccessFormDigitalOceanConfig.tsx index 421ee9cc..c0d85d62 100644 --- a/ui/src/components/access/AccessFormDigitalOceanConfig.tsx +++ b/ui/src/components/access/AccessFormDigitalOceanConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormDingTalkBotConfig.tsx b/ui/src/components/access/AccessFormDingTalkBotConfig.tsx index 59904e18..914e4d2a 100644 --- a/ui/src/components/access/AccessFormDingTalkBotConfig.tsx +++ b/ui/src/components/access/AccessFormDingTalkBotConfig.tsx @@ -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); diff --git a/ui/src/components/access/AccessFormDiscordBotConfig.tsx b/ui/src/components/access/AccessFormDiscordBotConfig.tsx index 5f844ccc..4c1d345b 100644 --- a/ui/src/components/access/AccessFormDiscordBotConfig.tsx +++ b/ui/src/components/access/AccessFormDiscordBotConfig.tsx @@ -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(), diff --git a/ui/src/components/access/AccessFormDogeCloudConfig.tsx b/ui/src/components/access/AccessFormDogeCloudConfig.tsx index 3e61d75f..f38ee881 100644 --- a/ui/src/components/access/AccessFormDogeCloudConfig.tsx +++ b/ui/src/components/access/AccessFormDogeCloudConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormDuckDNSConfig.tsx b/ui/src/components/access/AccessFormDuckDNSConfig.tsx index 6b9c81b8..cb6f4c3a 100644 --- a/ui/src/components/access/AccessFormDuckDNSConfig.tsx +++ b/ui/src/components/access/AccessFormDuckDNSConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormDynv6Config.tsx b/ui/src/components/access/AccessFormDynv6Config.tsx index 87e16c1e..0d7a44fa 100644 --- a/ui/src/components/access/AccessFormDynv6Config.tsx +++ b/ui/src/components/access/AccessFormDynv6Config.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormEdgioConfig.tsx b/ui/src/components/access/AccessFormEdgioConfig.tsx index a91298c9..fe20158d 100644 --- a/ui/src/components/access/AccessFormEdgioConfig.tsx +++ b/ui/src/components/access/AccessFormEdgioConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormEmailConfig.tsx b/ui/src/components/access/AccessFormEmailConfig.tsx index ae3ac5c9..e36e4984 100644 --- a/ui/src/components/access/AccessFormEmailConfig.tsx +++ b/ui/src/components/access/AccessFormEmailConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormFlexCDNConfig.tsx b/ui/src/components/access/AccessFormFlexCDNConfig.tsx index f07b8359..f07cd416 100644 --- a/ui/src/components/access/AccessFormFlexCDNConfig.tsx +++ b/ui/src/components/access/AccessFormFlexCDNConfig.tsx @@ -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(), diff --git a/ui/src/components/access/AccessFormGcoreConfig.tsx b/ui/src/components/access/AccessFormGcoreConfig.tsx index f78d7309..fce3113e 100644 --- a/ui/src/components/access/AccessFormGcoreConfig.tsx +++ b/ui/src/components/access/AccessFormGcoreConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormGnameConfig.tsx b/ui/src/components/access/AccessFormGnameConfig.tsx index 990f01b6..e330cf9a 100644 --- a/ui/src/components/access/AccessFormGnameConfig.tsx +++ b/ui/src/components/access/AccessFormGnameConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormGoDaddyConfig.tsx b/ui/src/components/access/AccessFormGoDaddyConfig.tsx index c604a8b3..6398cff7 100644 --- a/ui/src/components/access/AccessFormGoDaddyConfig.tsx +++ b/ui/src/components/access/AccessFormGoDaddyConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormGoEdgeConfig.tsx b/ui/src/components/access/AccessFormGoEdgeConfig.tsx index 822c410b..9508660b 100644 --- a/ui/src/components/access/AccessFormGoEdgeConfig.tsx +++ b/ui/src/components/access/AccessFormGoEdgeConfig.tsx @@ -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(), diff --git a/ui/src/components/access/AccessFormGoogleTrustServicesConfig.tsx b/ui/src/components/access/AccessFormGoogleTrustServicesConfig.tsx index b30384f5..0fc93e32 100644 --- a/ui/src/components/access/AccessFormGoogleTrustServicesConfig.tsx +++ b/ui/src/components/access/AccessFormGoogleTrustServicesConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormHetznerConfig.tsx b/ui/src/components/access/AccessFormHetznerConfig.tsx index b596e997..9935a9fb 100644 --- a/ui/src/components/access/AccessFormHetznerConfig.tsx +++ b/ui/src/components/access/AccessFormHetznerConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormHuaweiCloudConfig.tsx b/ui/src/components/access/AccessFormHuaweiCloudConfig.tsx index fc56d558..662f4f4d 100644 --- a/ui/src/components/access/AccessFormHuaweiCloudConfig.tsx +++ b/ui/src/components/access/AccessFormHuaweiCloudConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormJDCloudConfig.tsx b/ui/src/components/access/AccessFormJDCloudConfig.tsx index 10fb4bad..5ca330fc 100644 --- a/ui/src/components/access/AccessFormJDCloudConfig.tsx +++ b/ui/src/components/access/AccessFormJDCloudConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormKubernetesConfig.tsx b/ui/src/components/access/AccessFormKubernetesConfig.tsx index ff2bd491..dad70229 100644 --- a/ui/src/components/access/AccessFormKubernetesConfig.tsx +++ b/ui/src/components/access/AccessFormKubernetesConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormLarkBotConfig.tsx b/ui/src/components/access/AccessFormLarkBotConfig.tsx index 2a07505e..92a732c3 100644 --- a/ui/src/components/access/AccessFormLarkBotConfig.tsx +++ b/ui/src/components/access/AccessFormLarkBotConfig.tsx @@ -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); diff --git a/ui/src/components/access/AccessFormLeCDNConfig.tsx b/ui/src/components/access/AccessFormLeCDNConfig.tsx index 1f9feabc..de3f1e47 100644 --- a/ui/src/components/access/AccessFormLeCDNConfig.tsx +++ b/ui/src/components/access/AccessFormLeCDNConfig.tsx @@ -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(), diff --git a/ui/src/components/access/AccessFormMattermostConfig.tsx b/ui/src/components/access/AccessFormMattermostConfig.tsx index a583cc19..5735d159 100644 --- a/ui/src/components/access/AccessFormMattermostConfig.tsx +++ b/ui/src/components/access/AccessFormMattermostConfig.tsx @@ -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(), diff --git a/ui/src/components/access/AccessFormNS1Config.tsx b/ui/src/components/access/AccessFormNS1Config.tsx index 4080b79b..82d8107e 100644 --- a/ui/src/components/access/AccessFormNS1Config.tsx +++ b/ui/src/components/access/AccessFormNS1Config.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormNameDotComConfig.tsx b/ui/src/components/access/AccessFormNameDotComConfig.tsx index e5a7a372..370f4a3c 100644 --- a/ui/src/components/access/AccessFormNameDotComConfig.tsx +++ b/ui/src/components/access/AccessFormNameDotComConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormNameSiloConfig.tsx b/ui/src/components/access/AccessFormNameSiloConfig.tsx index a9421ffe..ce5491e9 100644 --- a/ui/src/components/access/AccessFormNameSiloConfig.tsx +++ b/ui/src/components/access/AccessFormNameSiloConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormNamecheapConfig.tsx b/ui/src/components/access/AccessFormNamecheapConfig.tsx index 2ac81909..4d174212 100644 --- a/ui/src/components/access/AccessFormNamecheapConfig.tsx +++ b/ui/src/components/access/AccessFormNamecheapConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormNetcupConfig.tsx b/ui/src/components/access/AccessFormNetcupConfig.tsx index 02aa5272..0c1fbd8d 100644 --- a/ui/src/components/access/AccessFormNetcupConfig.tsx +++ b/ui/src/components/access/AccessFormNetcupConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormNetlifyConfig.tsx b/ui/src/components/access/AccessFormNetlifyConfig.tsx index 91d0c31e..44767bba 100644 --- a/ui/src/components/access/AccessFormNetlifyConfig.tsx +++ b/ui/src/components/access/AccessFormNetlifyConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormPorkbunConfig.tsx b/ui/src/components/access/AccessFormPorkbunConfig.tsx index 65193db7..ecd52e6b 100644 --- a/ui/src/components/access/AccessFormPorkbunConfig.tsx +++ b/ui/src/components/access/AccessFormPorkbunConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormPowerDNSConfig.tsx b/ui/src/components/access/AccessFormPowerDNSConfig.tsx index e9dc9756..1dad3b2c 100644 --- a/ui/src/components/access/AccessFormPowerDNSConfig.tsx +++ b/ui/src/components/access/AccessFormPowerDNSConfig.tsx @@ -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")) diff --git a/ui/src/components/access/AccessFormProxmoxVEConfig.tsx b/ui/src/components/access/AccessFormProxmoxVEConfig.tsx index b2d44011..6ba1c921 100644 --- a/ui/src/components/access/AccessFormProxmoxVEConfig.tsx +++ b/ui/src/components/access/AccessFormProxmoxVEConfig.tsx @@ -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(), diff --git a/ui/src/components/access/AccessFormQiniuConfig.tsx b/ui/src/components/access/AccessFormQiniuConfig.tsx index dcbebcd0..1fb53845 100644 --- a/ui/src/components/access/AccessFormQiniuConfig.tsx +++ b/ui/src/components/access/AccessFormQiniuConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormRainYunConfig.tsx b/ui/src/components/access/AccessFormRainYunConfig.tsx index b9b0b171..a07208f4 100644 --- a/ui/src/components/access/AccessFormRainYunConfig.tsx +++ b/ui/src/components/access/AccessFormRainYunConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormRatPanelConfig.tsx b/ui/src/components/access/AccessFormRatPanelConfig.tsx index 26448f46..4de0c878 100644 --- a/ui/src/components/access/AccessFormRatPanelConfig.tsx +++ b/ui/src/components/access/AccessFormRatPanelConfig.tsx @@ -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(), diff --git a/ui/src/components/access/AccessFormSSHConfig.tsx b/ui/src/components/access/AccessFormSSHConfig.tsx index 56532771..99120f14 100644 --- a/ui/src/components/access/AccessFormSSHConfig.tsx +++ b/ui/src/components/access/AccessFormSSHConfig.tsx @@ -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(), }); diff --git a/ui/src/components/access/AccessFormSSLComConfig.tsx b/ui/src/components/access/AccessFormSSLComConfig.tsx index 22b60ae4..9fcd71a5 100644 --- a/ui/src/components/access/AccessFormSSLComConfig.tsx +++ b/ui/src/components/access/AccessFormSSLComConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormSafeLineConfig.tsx b/ui/src/components/access/AccessFormSafeLineConfig.tsx index e3d3e75d..ad5e2c43 100644 --- a/ui/src/components/access/AccessFormSafeLineConfig.tsx +++ b/ui/src/components/access/AccessFormSafeLineConfig.tsx @@ -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")) diff --git a/ui/src/components/access/AccessFormSlackBotConfig.tsx b/ui/src/components/access/AccessFormSlackBotConfig.tsx index a0bdbad4..493d5a1d 100644 --- a/ui/src/components/access/AccessFormSlackBotConfig.tsx +++ b/ui/src/components/access/AccessFormSlackBotConfig.tsx @@ -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(), diff --git a/ui/src/components/access/AccessFormTelegramBotConfig.tsx b/ui/src/components/access/AccessFormTelegramBotConfig.tsx index a347610f..bafc36ca 100644 --- a/ui/src/components/access/AccessFormTelegramBotConfig.tsx +++ b/ui/src/components/access/AccessFormTelegramBotConfig.tsx @@ -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 diff --git a/ui/src/components/access/AccessFormTencentCloudConfig.tsx b/ui/src/components/access/AccessFormTencentCloudConfig.tsx index 540ebdd9..4af7b647 100644 --- a/ui/src/components/access/AccessFormTencentCloudConfig.tsx +++ b/ui/src/components/access/AccessFormTencentCloudConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormUCloudConfig.tsx b/ui/src/components/access/AccessFormUCloudConfig.tsx index 395d185e..462d5865 100644 --- a/ui/src/components/access/AccessFormUCloudConfig.tsx +++ b/ui/src/components/access/AccessFormUCloudConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormUniCloudConfig.tsx b/ui/src/components/access/AccessFormUniCloudConfig.tsx index 8b6d1346..b985c580 100644 --- a/ui/src/components/access/AccessFormUniCloudConfig.tsx +++ b/ui/src/components/access/AccessFormUniCloudConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormUpyunConfig.tsx b/ui/src/components/access/AccessFormUpyunConfig.tsx index 24feb9f8..83228f50 100644 --- a/ui/src/components/access/AccessFormUpyunConfig.tsx +++ b/ui/src/components/access/AccessFormUpyunConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormVercelConfig.tsx b/ui/src/components/access/AccessFormVercelConfig.tsx index a3a1954e..593066a5 100644 --- a/ui/src/components/access/AccessFormVercelConfig.tsx +++ b/ui/src/components/access/AccessFormVercelConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormVolcEngineConfig.tsx b/ui/src/components/access/AccessFormVolcEngineConfig.tsx index c9a302a2..54c77485 100644 --- a/ui/src/components/access/AccessFormVolcEngineConfig.tsx +++ b/ui/src/components/access/AccessFormVolcEngineConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormWangsuConfig.tsx b/ui/src/components/access/AccessFormWangsuConfig.tsx index fe2950c4..71fbe0a6 100644 --- a/ui/src/components/access/AccessFormWangsuConfig.tsx +++ b/ui/src/components/access/AccessFormWangsuConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormWeComBotConfig.tsx b/ui/src/components/access/AccessFormWeComBotConfig.tsx index 16a205f5..cb63e48b 100644 --- a/ui/src/components/access/AccessFormWeComBotConfig.tsx +++ b/ui/src/components/access/AccessFormWeComBotConfig.tsx @@ -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); diff --git a/ui/src/components/access/AccessFormWebhookConfig.tsx b/ui/src/components/access/AccessFormWebhookConfig.tsx index 7ceec29a..b0459469 100644 --- a/ui/src/components/access/AccessFormWebhookConfig.tsx +++ b/ui/src/components/access/AccessFormWebhookConfig.tsx @@ -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() diff --git a/ui/src/components/access/AccessFormWestcnConfig.tsx b/ui/src/components/access/AccessFormWestcnConfig.tsx index 34439316..35ce6b58 100644 --- a/ui/src/components/access/AccessFormWestcnConfig.tsx +++ b/ui/src/components/access/AccessFormWestcnConfig.tsx @@ -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"; diff --git a/ui/src/components/access/AccessFormZeroSSLConfig.tsx b/ui/src/components/access/AccessFormZeroSSLConfig.tsx index a1653667..6579dbc0 100644 --- a/ui/src/components/access/AccessFormZeroSSLConfig.tsx +++ b/ui/src/components/access/AccessFormZeroSSLConfig.tsx @@ -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"; diff --git a/ui/src/components/notification/NotifyChannelEditFormBarkFields.tsx b/ui/src/components/notification/NotifyChannelEditFormBarkFields.tsx index 154b870a..e10fea9f 100644 --- a/ui/src/components/notification/NotifyChannelEditFormBarkFields.tsx +++ b/ui/src/components/notification/NotifyChannelEditFormBarkFields.tsx @@ -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); diff --git a/ui/src/components/notification/NotifyChannelEditFormDingTalkFields.tsx b/ui/src/components/notification/NotifyChannelEditFormDingTalkFields.tsx index f7daa4bf..b6a959ae 100644 --- a/ui/src/components/notification/NotifyChannelEditFormDingTalkFields.tsx +++ b/ui/src/components/notification/NotifyChannelEditFormDingTalkFields.tsx @@ -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); diff --git a/ui/src/components/notification/NotifyChannelEditFormEmailFields.tsx b/ui/src/components/notification/NotifyChannelEditFormEmailFields.tsx index d7c08c4f..fd935b7c 100644 --- a/ui/src/components/notification/NotifyChannelEditFormEmailFields.tsx +++ b/ui/src/components/notification/NotifyChannelEditFormEmailFields.tsx @@ -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>(); diff --git a/ui/src/components/notification/NotifyChannelEditFormGotifyFields.tsx b/ui/src/components/notification/NotifyChannelEditFormGotifyFields.tsx index 69aa4b46..4e0fd6e1 100644 --- a/ui/src/components/notification/NotifyChannelEditFormGotifyFields.tsx +++ b/ui/src/components/notification/NotifyChannelEditFormGotifyFields.tsx @@ -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); diff --git a/ui/src/components/notification/NotifyChannelEditFormLarkFields.tsx b/ui/src/components/notification/NotifyChannelEditFormLarkFields.tsx index bd683824..058e731f 100644 --- a/ui/src/components/notification/NotifyChannelEditFormLarkFields.tsx +++ b/ui/src/components/notification/NotifyChannelEditFormLarkFields.tsx @@ -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); diff --git a/ui/src/components/notification/NotifyChannelEditFormMattermostFields.tsx b/ui/src/components/notification/NotifyChannelEditFormMattermostFields.tsx index 829a2a0d..93105810 100644 --- a/ui/src/components/notification/NotifyChannelEditFormMattermostFields.tsx +++ b/ui/src/components/notification/NotifyChannelEditFormMattermostFields.tsx @@ -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); diff --git a/ui/src/components/notification/NotifyChannelEditFormPushPlusFields.tsx b/ui/src/components/notification/NotifyChannelEditFormPushPlusFields.tsx index 36f6e21a..f106b918 100644 --- a/ui/src/components/notification/NotifyChannelEditFormPushPlusFields.tsx +++ b/ui/src/components/notification/NotifyChannelEditFormPushPlusFields.tsx @@ -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); diff --git a/ui/src/components/notification/NotifyChannelEditFormPushoverFields.tsx b/ui/src/components/notification/NotifyChannelEditFormPushoverFields.tsx index 449c98fa..51fdd7ff 100644 --- a/ui/src/components/notification/NotifyChannelEditFormPushoverFields.tsx +++ b/ui/src/components/notification/NotifyChannelEditFormPushoverFields.tsx @@ -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); diff --git a/ui/src/components/notification/NotifyChannelEditFormServerChanFields.tsx b/ui/src/components/notification/NotifyChannelEditFormServerChanFields.tsx index b820f925..2fd24a6a 100644 --- a/ui/src/components/notification/NotifyChannelEditFormServerChanFields.tsx +++ b/ui/src/components/notification/NotifyChannelEditFormServerChanFields.tsx @@ -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); diff --git a/ui/src/components/notification/NotifyChannelEditFormTelegramFields.tsx b/ui/src/components/notification/NotifyChannelEditFormTelegramFields.tsx index 4d6b31f4..5397df5c 100644 --- a/ui/src/components/notification/NotifyChannelEditFormTelegramFields.tsx +++ b/ui/src/components/notification/NotifyChannelEditFormTelegramFields.tsx @@ -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 })), }); diff --git a/ui/src/components/notification/NotifyChannelEditFormWeComFields.tsx b/ui/src/components/notification/NotifyChannelEditFormWeComFields.tsx index 645653a4..bc490b25 100644 --- a/ui/src/components/notification/NotifyChannelEditFormWeComFields.tsx +++ b/ui/src/components/notification/NotifyChannelEditFormWeComFields.tsx @@ -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); diff --git a/ui/src/components/notification/NotifyChannelEditFormWebhookFields.tsx b/ui/src/components/notification/NotifyChannelEditFormWebhookFields.tsx index abf935c2..09288be1 100644 --- a/ui/src/components/notification/NotifyChannelEditFormWebhookFields.tsx +++ b/ui/src/components/notification/NotifyChannelEditFormWebhookFields.tsx @@ -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); diff --git a/ui/src/components/notification/NotifyTemplate.tsx b/ui/src/components/notification/NotifyTemplate.tsx index 152596e7..28c34ae0 100644 --- a/ui/src/components/notification/NotifyTemplate.tsx +++ b/ui/src/components/notification/NotifyTemplate.tsx @@ -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"; diff --git a/ui/src/components/workflow/node/ApplyNodeConfigForm.tsx b/ui/src/components/workflow/node/ApplyNodeConfigForm.tsx index 402f6763..0edd6a4a 100644 --- a/ui/src/components/workflow/node/ApplyNodeConfigForm.tsx +++ b/ui/src/components/workflow/node/ApplyNodeConfigForm.tsx @@ -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 { + 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 { if (!v) return true; + return String(v) .split(MULTIPLE_INPUT_SEPARATOR) .every((e) => validIPv4Address(e) || validIPv6Address(e) || validDomainName(e)); diff --git a/ui/src/components/workflow/node/ApplyNodeConfigFormAWSRoute53Config.tsx b/ui/src/components/workflow/node/ApplyNodeConfigFormAWSRoute53Config.tsx index 03698cb1..02dae8f2 100644 --- a/ui/src/components/workflow/node/ApplyNodeConfigFormAWSRoute53Config.tsx +++ b/ui/src/components/workflow/node/ApplyNodeConfigFormAWSRoute53Config.tsx @@ -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); diff --git a/ui/src/components/workflow/node/ApplyNodeConfigFormAliyunESAConfig.tsx b/ui/src/components/workflow/node/ApplyNodeConfigFormAliyunESAConfig.tsx index 0ef39b22..32505de4 100644 --- a/ui/src/components/workflow/node/ApplyNodeConfigFormAliyunESAConfig.tsx +++ b/ui/src/components/workflow/node/ApplyNodeConfigFormAliyunESAConfig.tsx @@ -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); diff --git a/ui/src/components/workflow/node/ApplyNodeConfigFormHuaweiCloudDNSConfig.tsx b/ui/src/components/workflow/node/ApplyNodeConfigFormHuaweiCloudDNSConfig.tsx index e806dd64..8814d21c 100644 --- a/ui/src/components/workflow/node/ApplyNodeConfigFormHuaweiCloudDNSConfig.tsx +++ b/ui/src/components/workflow/node/ApplyNodeConfigFormHuaweiCloudDNSConfig.tsx @@ -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); diff --git a/ui/src/components/workflow/node/ApplyNodeConfigFormJDCloudDNSConfig.tsx b/ui/src/components/workflow/node/ApplyNodeConfigFormJDCloudDNSConfig.tsx index cca7efd5..92aca5fd 100644 --- a/ui/src/components/workflow/node/ApplyNodeConfigFormJDCloudDNSConfig.tsx +++ b/ui/src/components/workflow/node/ApplyNodeConfigFormJDCloudDNSConfig.tsx @@ -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); diff --git a/ui/src/components/workflow/node/ApplyNodeConfigFormTencentCloudEOConfig.tsx b/ui/src/components/workflow/node/ApplyNodeConfigFormTencentCloudEOConfig.tsx index f71e33e7..f76a0085 100644 --- a/ui/src/components/workflow/node/ApplyNodeConfigFormTencentCloudEOConfig.tsx +++ b/ui/src/components/workflow/node/ApplyNodeConfigFormTencentCloudEOConfig.tsx @@ -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); diff --git a/ui/src/components/workflow/node/ConditionNodeConfigForm.tsx b/ui/src/components/workflow/node/ConditionNodeConfigForm.tsx index 1a2794e7..4f5f78c8 100644 --- a/ui/src/components/workflow/node/ConditionNodeConfigForm.tsx +++ b/ui/src/components/workflow/node/ConditionNodeConfigForm.tsx @@ -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"; diff --git a/ui/src/components/workflow/node/DeployNodeConfigForm.tsx b/ui/src/components/workflow/node/DeployNodeConfigForm.tsx index 318e3c95..16e587ea 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigForm.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigForm.tsx @@ -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 { if (!fieldProvider) return true; diff --git a/ui/src/components/workflow/node/DeployNodeConfigForm1PanelConsoleConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigForm1PanelConsoleConfig.tsx index b17150d8..b8e19186 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigForm1PanelConsoleConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigForm1PanelConsoleConfig.tsx @@ -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; diff --git a/ui/src/components/workflow/node/DeployNodeConfigForm1PanelSiteConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigForm1PanelSiteConfig.tsx index 94a9bce2..e0e7e037 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigForm1PanelSiteConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigForm1PanelSiteConfig.tsx @@ -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() diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormAPISIXConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormAPISIXConfig.tsx index 0fd67674..6998c0fd 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormAPISIXConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormAPISIXConfig.tsx @@ -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() diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormAWSACMConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormAWSACMConfig.tsx index df7ba9b6..3d95b028 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormAWSACMConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormAWSACMConfig.tsx @@ -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); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormAWSCloudFrontConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormAWSCloudFrontConfig.tsx index 3a15eea0..5c3169fe 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormAWSCloudFrontConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormAWSCloudFrontConfig.tsx @@ -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; diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormAWSIAMConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormAWSIAMConfig.tsx index fa89d83b..d9e5365c 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormAWSIAMConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormAWSIAMConfig.tsx @@ -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 DeployNodeConfigFormAWSIAMConfigFieldValues = Nullish<{ region: string; @@ -26,9 +26,7 @@ const DeployNodeConfigFormAWSIAMConfig = ({ form: formInst, formName, disabled, const { t } = useTranslation(); const formSchema = z.object({ - region: z - .string({ message: t("workflow_node.deploy.form.aws_iam_region.placeholder") }) - .nonempty(t("workflow_node.deploy.form.aws_iam_region.placeholder")), + region: z.string(t("workflow_node.deploy.form.aws_iam_region.placeholder")).nonempty(t("workflow_node.deploy.form.aws_iam_region.placeholder")), certificatePath: z .string() .nullish() diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunALBConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunALBConfig.tsx index 5203130e..235d2a2a 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunALBConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunALBConfig.tsx @@ -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"; import { validDomainName } from "@/utils/validators"; @@ -41,12 +41,8 @@ const DeployNodeConfigFormAliyunALBConfig = ({ const { t } = useTranslation(); const formSchema = z.object({ - region: z - .string({ message: t("workflow_node.deploy.form.aliyun_alb_region.placeholder") }) - .nonempty(t("workflow_node.deploy.form.aliyun_alb_region.placeholder")), - resourceType: z.union([z.literal(RESOURCE_TYPE_LOADBALANCER), z.literal(RESOURCE_TYPE_LISTENER)], { - message: t("workflow_node.deploy.form.aliyun_alb_resource_type.placeholder"), - }), + region: z.string(t("workflow_node.deploy.form.aliyun_alb_region.placeholder")).nonempty(t("workflow_node.deploy.form.aliyun_alb_region.placeholder")), + resourceType: z.literal([RESOURCE_TYPE_LOADBALANCER, RESOURCE_TYPE_LISTENER], t("workflow_node.deploy.form.aliyun_alb_resource_type.placeholder")), loadbalancerId: z .string() .max(64, t("common.errmsg.string_max", { max: 64 })) diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunAPIGWConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunAPIGWConfig.tsx index c88c9e5a..3fb8f166 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunAPIGWConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunAPIGWConfig.tsx @@ -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"; import { validDomainName } from "@/utils/validators"; @@ -39,12 +39,8 @@ const DeployNodeConfigFormAliyunAPIGWConfig = ({ const { t } = useTranslation(); const formSchema = z.object({ - serviceType: z.union([z.literal(SERVICE_TYPE_CLOUDNATIVE), z.literal(SERVICE_TYPE_TRADITIONAL)], { - message: t("workflow_node.deploy.form.aliyun_apigw_service_type.placeholder"), - }), - region: z - .string({ message: t("workflow_node.deploy.form.aliyun_apigw_region.placeholder") }) - .nonempty(t("workflow_node.deploy.form.aliyun_apigw_region.placeholder")), + serviceType: z.literal([SERVICE_TYPE_CLOUDNATIVE, SERVICE_TYPE_TRADITIONAL], t("workflow_node.deploy.form.aliyun_apigw_service_type.placeholder")), + region: z.string(t("workflow_node.deploy.form.aliyun_apigw_region.placeholder")).nonempty(t("workflow_node.deploy.form.aliyun_apigw_region.placeholder")), gatewayId: z .string() .nullish() diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunCASConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunCASConfig.tsx index 1ea744fd..807dced6 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunCASConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunCASConfig.tsx @@ -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 DeployNodeConfigFormAliyunCASConfigFieldValues = Nullish<{ region: string; @@ -29,9 +29,7 @@ const DeployNodeConfigFormAliyunCASConfig = ({ const { t } = useTranslation(); const formSchema = z.object({ - region: z - .string({ message: t("workflow_node.deploy.form.aliyun_cas_region.placeholder") }) - .nonempty(t("workflow_node.deploy.form.aliyun_cas_region.placeholder")), + region: z.string(t("workflow_node.deploy.form.aliyun_cas_region.placeholder")).nonempty(t("workflow_node.deploy.form.aliyun_cas_region.placeholder")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunCASDeployConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunCASDeployConfig.tsx index d7e961ae..f16a0c79 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunCASDeployConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunCASDeployConfig.tsx @@ -1,7 +1,7 @@ import { useTranslation } from "react-i18next"; import { Alert, Form, type FormInstance, Input } from "antd"; import { createSchemaFieldRule } from "antd-zod"; -import { z } from "zod"; +import { z } from "zod/v4"; import MultipleSplitValueInput from "@/components/MultipleSplitValueInput"; @@ -36,16 +36,16 @@ const DeployNodeConfigFormAliyunCASDeployConfig = ({ const formSchema = z.object({ region: z - .string({ message: t("workflow_node.deploy.form.aliyun_cas_deploy_region.placeholder") }) + .string(t("workflow_node.deploy.form.aliyun_cas_deploy_region.placeholder")) .nonempty(t("workflow_node.deploy.form.aliyun_cas_deploy_region.placeholder")), - resourceIds: z.string({ message: t("workflow_node.deploy.form.aliyun_cas_deploy_resource_ids.placeholder") }).refine((v) => { + resourceIds: z.string(t("workflow_node.deploy.form.aliyun_cas_deploy_resource_ids.placeholder")).refine((v) => { if (!v) return false; return String(v) .split(MULTIPLE_INPUT_SEPARATOR) .every((e) => /^[1-9]\d*$/.test(e)); }, t("workflow_node.deploy.form.aliyun_cas_deploy_resource_ids.errmsg.invalid")), contactIds: z - .string({ message: t("workflow_node.deploy.form.aliyun_cas_deploy_contact_ids.placeholder") }) + .string(t("workflow_node.deploy.form.aliyun_cas_deploy_contact_ids.placeholder")) .nullish() .refine((v) => { if (!v) return true; diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunCDNConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunCDNConfig.tsx index 5efffd9f..ab9d7ec0 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunCDNConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunCDNConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -32,7 +32,7 @@ const DeployNodeConfigFormAliyunCDNConfig = ({ const formSchema = z.object({ domain: z - .string({ message: t("workflow_node.deploy.form.aliyun_cdn_domain.placeholder") }) + .string(t("workflow_node.deploy.form.aliyun_cdn_domain.placeholder")) .refine((v) => validDomainName(v, { allowWildcard: true }), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunCLBConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunCLBConfig.tsx index 43e843ad..c14fda82 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunCLBConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunCLBConfig.tsx @@ -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"; import { validDomainName, validPortNumber } from "@/utils/validators"; @@ -42,14 +42,10 @@ const DeployNodeConfigFormAliyunCLBConfig = ({ const { t } = useTranslation(); const formSchema = z.object({ - resourceType: z.union([z.literal(RESOURCE_TYPE_LOADBALANCER), z.literal(RESOURCE_TYPE_LISTENER)], { - message: t("workflow_node.deploy.form.aliyun_clb_resource_type.placeholder"), - }), - region: z - .string({ message: t("workflow_node.deploy.form.aliyun_clb_region.placeholder") }) - .nonempty(t("workflow_node.deploy.form.aliyun_clb_region.placeholder")), + resourceType: z.literal([RESOURCE_TYPE_LOADBALANCER, RESOURCE_TYPE_LISTENER], t("workflow_node.deploy.form.aliyun_clb_resource_type.placeholder")), + region: z.string(t("workflow_node.deploy.form.aliyun_clb_region.placeholder")).nonempty(t("workflow_node.deploy.form.aliyun_clb_region.placeholder")), loadbalancerId: z - .string({ message: t("workflow_node.deploy.form.aliyun_clb_loadbalancer_id.placeholder") }) + .string(t("workflow_node.deploy.form.aliyun_clb_loadbalancer_id.placeholder")) .min(1, t("workflow_node.deploy.form.aliyun_clb_loadbalancer_id.placeholder")) .max(64, t("common.errmsg.string_max", { max: 64 })), listenerPort: z.preprocess( diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunDCDNConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunDCDNConfig.tsx index 836bdca0..3ee69105 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunDCDNConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunDCDNConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -32,7 +32,7 @@ const DeployNodeConfigFormAliyunDCDNConfig = ({ const formSchema = z.object({ domain: z - .string({ message: t("workflow_node.deploy.form.aliyun_dcdn_domain.placeholder") }) + .string(t("workflow_node.deploy.form.aliyun_dcdn_domain.placeholder")) .refine((v) => validDomainName(v, { allowWildcard: true }), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunDDoSConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunDDoSConfig.tsx index 6081e0af..3ba56397 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunDDoSConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunDDoSConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -32,11 +32,9 @@ const DeployNodeConfigFormAliyunDDoSConfig = ({ const { t } = useTranslation(); const formSchema = z.object({ - region: z - .string({ message: t("workflow_node.deploy.form.aliyun_ddos_region.placeholder") }) - .nonempty(t("workflow_node.deploy.form.aliyun_ddos_region.placeholder")), + region: z.string(t("workflow_node.deploy.form.aliyun_ddos_region.placeholder")).nonempty(t("workflow_node.deploy.form.aliyun_ddos_region.placeholder")), domain: z - .string({ message: t("workflow_node.deploy.form.aliyun_ddos_domain.placeholder") }) + .string(t("workflow_node.deploy.form.aliyun_ddos_domain.placeholder")) .refine((v) => validDomainName(v, { allowWildcard: true }), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunESAConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunESAConfig.tsx index 91c34b08..484fc48c 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunESAConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunESAConfig.tsx @@ -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 DeployNodeConfigFormAliyunESAConfigFieldValues = Nullish<{ region: string; @@ -30,10 +30,8 @@ const DeployNodeConfigFormAliyunESAConfig = ({ const { t } = useTranslation(); const formSchema = z.object({ - region: z - .string({ message: t("workflow_node.deploy.form.aliyun_esa_region.placeholder") }) - .nonempty(t("workflow_node.deploy.form.aliyun_esa_region.placeholder")), - siteId: z.union([z.string(), z.number()]).refine((v) => { + region: z.string(t("workflow_node.deploy.form.aliyun_esa_region.placeholder")).nonempty(t("workflow_node.deploy.form.aliyun_esa_region.placeholder")), + siteId: z.union([z.string(), z.number().int()]).refine((v) => { return /^\d+$/.test(v + "") && +v > 0; }, t("workflow_node.deploy.form.aliyun_esa_site_id.placeholder")), }); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunFCConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunFCConfig.tsx index c20dc15a..69fbffe3 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunFCConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunFCConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -29,14 +29,10 @@ const DeployNodeConfigFormAliyunFCConfig = ({ form: formInst, formName, disabled const { t } = useTranslation(); const formSchema = z.object({ - serviceVersion: z.union([z.literal("2.0"), z.literal("3.0")], { - message: t("workflow_node.deploy.form.aliyun_fc_service_version.placeholder"), - }), - region: z - .string({ message: t("workflow_node.deploy.form.aliyun_fc_region.placeholder") }) - .nonempty(t("workflow_node.deploy.form.aliyun_fc_region.placeholder")), + serviceVersion: z.literal(["2.0", "3.0"], t("workflow_node.deploy.form.aliyun_fc_service_version.placeholder")), + region: z.string(t("workflow_node.deploy.form.aliyun_fc_region.placeholder")).nonempty(t("workflow_node.deploy.form.aliyun_fc_region.placeholder")), domain: z - .string({ message: t("workflow_node.deploy.form.aliyun_fc_domain.placeholder") }) + .string(t("workflow_node.deploy.form.aliyun_fc_domain.placeholder")) .refine((v) => validDomainName(v, { allowWildcard: true }), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunGAConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunGAConfig.tsx index 39991869..072567ae 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunGAConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunGAConfig.tsx @@ -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"; import { validDomainName } from "@/utils/validators"; @@ -34,9 +34,7 @@ const DeployNodeConfigFormAliyunGAConfig = ({ form: formInst, formName, disabled const { t } = useTranslation(); const formSchema = z.object({ - resourceType: z.union([z.literal(RESOURCE_TYPE_ACCELERATOR), z.literal(RESOURCE_TYPE_LISTENER)], { - message: t("workflow_node.deploy.form.aliyun_ga_resource_type.placeholder"), - }), + resourceType: z.literal([RESOURCE_TYPE_ACCELERATOR, RESOURCE_TYPE_LISTENER], t("workflow_node.deploy.form.aliyun_ga_resource_type.placeholder")), acceleratorId: z.string().max(64, t("common.errmsg.string_max", { max: 64 })), listenerId: z .string() diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunLiveConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunLiveConfig.tsx index 569b1469..e2e88b5c 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunLiveConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunLiveConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -32,11 +32,9 @@ const DeployNodeConfigFormAliyunLiveConfig = ({ const { t } = useTranslation(); const formSchema = z.object({ - region: z - .string({ message: t("workflow_node.deploy.form.aliyun_live_region.placeholder") }) - .nonempty(t("workflow_node.deploy.form.aliyun_live_region.placeholder")), + region: z.string(t("workflow_node.deploy.form.aliyun_live_region.placeholder")).nonempty(t("workflow_node.deploy.form.aliyun_live_region.placeholder")), domain: z - .string({ message: t("workflow_node.deploy.form.aliyun_live_domain.placeholder") }) + .string(t("workflow_node.deploy.form.aliyun_live_domain.placeholder")) .refine((v) => validDomainName(v, { allowWildcard: true }), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunNLBConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunNLBConfig.tsx index 25bd93a9..b6fe7af0 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunNLBConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunNLBConfig.tsx @@ -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"; @@ -39,12 +39,8 @@ const DeployNodeConfigFormAliyunNLBConfig = ({ const { t } = useTranslation(); const formSchema = z.object({ - region: z - .string({ message: t("workflow_node.deploy.form.aliyun_nlb_region.placeholder") }) - .nonempty(t("workflow_node.deploy.form.aliyun_nlb_region.placeholder")), - resourceType: z.union([z.literal(RESOURCE_TYPE_LOADBALANCER), z.literal(RESOURCE_TYPE_LISTENER)], { - message: t("workflow_node.deploy.form.aliyun_nlb_resource_type.placeholder"), - }), + region: z.string(t("workflow_node.deploy.form.aliyun_nlb_region.placeholder")).nonempty(t("workflow_node.deploy.form.aliyun_nlb_region.placeholder")), + resourceType: z.literal([RESOURCE_TYPE_LOADBALANCER, RESOURCE_TYPE_LISTENER], t("workflow_node.deploy.form.aliyun_nlb_resource_type.placeholder")), loadbalancerId: z .string() .max(64, t("common.errmsg.string_max", { max: 64 })) diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunOSSConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunOSSConfig.tsx index 5aefa851..6468b671 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunOSSConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunOSSConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -33,14 +33,10 @@ const DeployNodeConfigFormAliyunOSSConfig = ({ const { t } = useTranslation(); const formSchema = z.object({ - region: z - .string({ message: t("workflow_node.deploy.form.aliyun_oss_region.placeholder") }) - .nonempty(t("workflow_node.deploy.form.aliyun_oss_region.placeholder")), - bucket: z - .string({ message: t("workflow_node.deploy.form.aliyun_oss_bucket.placeholder") }) - .nonempty(t("workflow_node.deploy.form.aliyun_oss_bucket.placeholder")), + region: z.string(t("workflow_node.deploy.form.aliyun_oss_region.placeholder")).nonempty(t("workflow_node.deploy.form.aliyun_oss_region.placeholder")), + bucket: z.string(t("workflow_node.deploy.form.aliyun_oss_bucket.placeholder")).nonempty(t("workflow_node.deploy.form.aliyun_oss_bucket.placeholder")), domain: z - .string({ message: t("workflow_node.deploy.form.aliyun_oss_domain.placeholder") }) + .string(t("workflow_node.deploy.form.aliyun_oss_domain.placeholder")) .refine((v) => validDomainName(v, { allowWildcard: true }), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunVODConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunVODConfig.tsx index 752d28cd..ab70eb9c 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunVODConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunVODConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -32,12 +32,8 @@ const DeployNodeConfigFormAliyunVODConfig = ({ const { t } = useTranslation(); const formSchema = z.object({ - region: z - .string({ message: t("workflow_node.deploy.form.aliyun_vod_region.placeholder") }) - .nonempty(t("workflow_node.deploy.form.aliyun_vod_region.placeholder")), - domain: z - .string({ message: t("workflow_node.deploy.form.aliyun_vod_domain.placeholder") }) - .refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")), + region: z.string(t("workflow_node.deploy.form.aliyun_vod_region.placeholder")).nonempty(t("workflow_node.deploy.form.aliyun_vod_region.placeholder")), + domain: z.string(t("workflow_node.deploy.form.aliyun_vod_domain.placeholder")).refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunWAFConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunWAFConfig.tsx index f7044063..58681fa3 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormAliyunWAFConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormAliyunWAFConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -36,14 +36,10 @@ const DeployNodeConfigFormAliyunWAFConfig = ({ const { t } = useTranslation(); const formSchema = z.object({ - region: z - .string({ message: t("workflow_node.deploy.form.aliyun_waf_region.placeholder") }) - .nonempty(t("workflow_node.deploy.form.aliyun_waf_region.placeholder")), - serviceVersion: z.literal("3.0", { - message: t("workflow_node.deploy.form.aliyun_waf_service_version.placeholder"), - }), + region: z.string(t("workflow_node.deploy.form.aliyun_waf_region.placeholder")).nonempty(t("workflow_node.deploy.form.aliyun_waf_region.placeholder")), + serviceVersion: z.literal("3.0", t("workflow_node.deploy.form.aliyun_waf_service_version.placeholder")), instanceId: z - .string({ message: t("workflow_node.deploy.form.aliyun_waf_instance_id.placeholder") }) + .string(t("workflow_node.deploy.form.aliyun_waf_instance_id.placeholder")) .nonempty(t("workflow_node.deploy.form.aliyun_waf_instance_id.placeholder")) .max(64, t("common.errmsg.string_max", { max: 64 })), domain: z diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormAzureKeyVaultConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormAzureKeyVaultConfig.tsx index 952d3e23..1fab432b 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormAzureKeyVaultConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormAzureKeyVaultConfig.tsx @@ -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 DeployNodeConfigFormAzureKeyVaultConfigFieldValues = Nullish<{ keyvaultName: string; @@ -31,7 +31,7 @@ const DeployNodeConfigFormAzureKeyVaultConfig = ({ const formSchema = z.object({ keyvaultName: z - .string({ message: t("workflow_node.deploy.form.azure_keyvault_name.placeholder") }) + .string(t("workflow_node.deploy.form.azure_keyvault_name.placeholder")) .nonempty(t("workflow_node.deploy.form.azure_keyvault_name.placeholder")), certificateName: z .string() diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormBaiduCloudAppBLBConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormBaiduCloudAppBLBConfig.tsx index 0f9f45b7..894409a1 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormBaiduCloudAppBLBConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormBaiduCloudAppBLBConfig.tsx @@ -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"; import { validDomainName, validPortNumber } from "@/utils/validators"; @@ -43,13 +43,11 @@ const DeployNodeConfigFormBaiduCloudAppBLBConfig = ({ const formSchema = z.object({ region: z - .string({ message: t("workflow_node.deploy.form.baiducloud_appblb_region.placeholder") }) + .string(t("workflow_node.deploy.form.baiducloud_appblb_region.placeholder")) .nonempty(t("workflow_node.deploy.form.baiducloud_appblb_region.placeholder")), - resourceType: z.union([z.literal(RESOURCE_TYPE_LOADBALANCER), z.literal(RESOURCE_TYPE_LISTENER)], { - message: t("workflow_node.deploy.form.baiducloud_appblb_resource_type.placeholder"), - }), + resourceType: z.literal([RESOURCE_TYPE_LOADBALANCER, RESOURCE_TYPE_LISTENER], t("workflow_node.deploy.form.baiducloud_appblb_resource_type.placeholder")), loadbalancerId: z - .string({ message: t("workflow_node.deploy.form.baiducloud_appblb_loadbalancer_id.placeholder") }) + .string(t("workflow_node.deploy.form.baiducloud_appblb_loadbalancer_id.placeholder")) .min(1, t("workflow_node.deploy.form.baiducloud_appblb_loadbalancer_id.placeholder")) .max(64, t("common.errmsg.string_max", { max: 64 })), listenerPort: z.preprocess( diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormBaiduCloudBLBConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormBaiduCloudBLBConfig.tsx index c0a1593a..5f40e69d 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormBaiduCloudBLBConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormBaiduCloudBLBConfig.tsx @@ -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"; import { validDomainName, validPortNumber } from "@/utils/validators"; @@ -43,13 +43,11 @@ const DeployNodeConfigFormBaiduCloudBLBConfig = ({ const formSchema = z.object({ region: z - .string({ message: t("workflow_node.deploy.form.baiducloud_blb_region.placeholder") }) + .string(t("workflow_node.deploy.form.baiducloud_blb_region.placeholder")) .nonempty(t("workflow_node.deploy.form.baiducloud_blb_region.placeholder")), - resourceType: z.union([z.literal(RESOURCE_TYPE_LOADBALANCER), z.literal(RESOURCE_TYPE_LISTENER)], { - message: t("workflow_node.deploy.form.baiducloud_blb_resource_type.placeholder"), - }), + resourceType: z.literal([RESOURCE_TYPE_LOADBALANCER, RESOURCE_TYPE_LISTENER], t("workflow_node.deploy.form.baiducloud_blb_resource_type.placeholder")), loadbalancerId: z - .string({ message: t("workflow_node.deploy.form.baiducloud_blb_loadbalancer_id.placeholder") }) + .string(t("workflow_node.deploy.form.baiducloud_blb_loadbalancer_id.placeholder")) .min(1, t("workflow_node.deploy.form.baiducloud_blb_loadbalancer_id.placeholder")) .max(64, t("common.errmsg.string_max", { max: 64 })), listenerPort: z.preprocess( diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormBaiduCloudCDNConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormBaiduCloudCDNConfig.tsx index 3302e0e9..c17511e5 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormBaiduCloudCDNConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormBaiduCloudCDNConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -32,7 +32,7 @@ const DeployNodeConfigFormBaiduCloudCDNConfig = ({ const formSchema = z.object({ domain: z - .string({ message: t("workflow_node.deploy.form.baiducloud_cdn_domain.placeholder") }) + .string(t("workflow_node.deploy.form.baiducloud_cdn_domain.placeholder")) .refine((v) => validDomainName(v, { allowWildcard: true }), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormBaishanCDNConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormBaishanCDNConfig.tsx index 7d32bef5..b4346213 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormBaishanCDNConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormBaishanCDNConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -33,7 +33,7 @@ const DeployNodeConfigFormBaishanCDNConfig = ({ const formSchema = z.object({ domain: z - .string({ message: t("workflow_node.deploy.form.baishan_cdn_domain.placeholder") }) + .string(t("workflow_node.deploy.form.baishan_cdn_domain.placeholder")) .refine((v) => validDomainName(v, { allowWildcard: true }), t("common.errmsg.domain_invalid")), certificateId: z .union([z.string(), z.number().int()]) diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormBaotaPanelConsoleConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormBaotaPanelConsoleConfig.tsx index ca440a27..fd6701e6 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormBaotaPanelConsoleConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormBaotaPanelConsoleConfig.tsx @@ -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 DeployNodeConfigFormBaotaPanelConsoleConfigFieldValues = Nullish<{ autoRestart?: boolean; diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormBaotaPanelSiteConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormBaotaPanelSiteConfig.tsx index 079e4190..640e420f 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormBaotaPanelSiteConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormBaotaPanelSiteConfig.tsx @@ -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 MultipleSplitValueInput from "@/components/MultipleSplitValueInput"; import Show from "@/components/Show"; @@ -43,9 +43,7 @@ const DeployNodeConfigFormBaotaPanelSiteConfig = ({ const { t } = useTranslation(); const formSchema = z.object({ - siteType: z.union([z.literal(SITE_TYPE_PHP), z.literal(SITE_TYPE_OTHER)], { - message: t("workflow_node.deploy.form.baotapanel_site_type.placeholder"), - }), + siteType: z.literal([SITE_TYPE_PHP, SITE_TYPE_OTHER], t("workflow_node.deploy.form.baotapanel_site_type.placeholder")), siteName: z .string() .nullish() diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormBaotaWAFSiteConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormBaotaWAFSiteConfig.tsx index 7c0ae293..f50bb380 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormBaotaWAFSiteConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormBaotaWAFSiteConfig.tsx @@ -1,7 +1,7 @@ import { useTranslation } from "react-i18next"; import { Form, type FormInstance, Input, InputNumber } from "antd"; import { createSchemaFieldRule } from "antd-zod"; -import { z } from "zod"; +import { z } from "zod/v4"; import { validPortNumber } from "@/utils/validators"; diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormBunnyCDNConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormBunnyCDNConfig.tsx index d6a42f3b..b52d3c22 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormBunnyCDNConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormBunnyCDNConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; type DeployNodeConfigFormBunnyCDNConfigFieldValues = Nullish<{ @@ -29,7 +29,7 @@ const DeployNodeConfigFormBunnyCDNConfig = ({ form: formInst, formName, disabled return /^\d+$/.test(v + "") && +v! > 0; }, t("workflow_node.deploy.form.bunny_cdn_pull_zone_id.placeholder")), hostname: z - .string({ message: t("workflow_node.deploy.form.bunny_cdn_hostname.placeholder") }) + .string(t("workflow_node.deploy.form.bunny_cdn_hostname.placeholder")) .nonempty(t("workflow_node.deploy.form.bunny_cdn_hostname.placeholder")) .refine((v) => { return validDomainName(v!, { allowWildcard: true }); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormBytePlusCDNConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormBytePlusCDNConfig.tsx index 4cd93415..6ac7a953 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormBytePlusCDNConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormBytePlusCDNConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -32,7 +32,7 @@ const DeployNodeConfigFormBytePlusCDNConfig = ({ const formSchema = z.object({ domain: z - .string({ message: t("workflow_node.deploy.form.byteplus_cdn_domain.placeholder") }) + .string(t("workflow_node.deploy.form.byteplus_cdn_domain.placeholder")) .refine((v) => validDomainName(v, { allowWildcard: true }), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormCTCCCloudAOConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormCTCCCloudAOConfig.tsx index f46934cd..3f2d6441 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormCTCCCloudAOConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormCTCCCloudAOConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -32,7 +32,7 @@ const DeployNodeConfigFormCTCCCloudAOConfig = ({ const formSchema = z.object({ domain: z - .string({ message: t("workflow_node.deploy.form.ctcccloud_ao_domain.placeholder") }) + .string(t("workflow_node.deploy.form.ctcccloud_ao_domain.placeholder")) .refine((v) => validDomainName(v, { allowWildcard: true }), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormCTCCCloudCDNConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormCTCCCloudCDNConfig.tsx index b7f564e5..25df0b0f 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormCTCCCloudCDNConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormCTCCCloudCDNConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -32,7 +32,7 @@ const DeployNodeConfigFormCTCCCloudCDNConfig = ({ const formSchema = z.object({ domain: z - .string({ message: t("workflow_node.deploy.form.ctcccloud_cdn_domain.placeholder") }) + .string(t("workflow_node.deploy.form.ctcccloud_cdn_domain.placeholder")) .refine((v) => validDomainName(v, { allowWildcard: true }), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormCTCCCloudELBConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormCTCCCloudELBConfig.tsx index 02413ea9..2b969261 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormCTCCCloudELBConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormCTCCCloudELBConfig.tsx @@ -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"; @@ -40,11 +40,9 @@ const DeployNodeConfigFormCTCCCloudELBConfig = ({ const formSchema = z.object({ regionId: z - .string({ message: t("workflow_node.deploy.form.ctcccloud_elb_region_id.placeholder") }) + .string(t("workflow_node.deploy.form.ctcccloud_elb_region_id.placeholder")) .nonempty(t("workflow_node.deploy.form.ctcccloud_elb_region_id.placeholder")), - resourceType: z.union([z.literal(RESOURCE_TYPE_LOADBALANCER), z.literal(RESOURCE_TYPE_LISTENER)], { - message: t("workflow_node.deploy.form.ctcccloud_elb_resource_type.placeholder"), - }), + resourceType: z.literal([RESOURCE_TYPE_LOADBALANCER, RESOURCE_TYPE_LISTENER], t("workflow_node.deploy.form.ctcccloud_elb_resource_type.placeholder")), loadbalancerId: z .string() .max(64, t("common.errmsg.string_max", { max: 64 })) diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormCTCCCloudICDNConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormCTCCCloudICDNConfig.tsx index 0e94650b..350b6fe5 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormCTCCCloudICDNConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormCTCCCloudICDNConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -32,7 +32,7 @@ const DeployNodeConfigFormCTCCCloudICDNConfig = ({ const formSchema = z.object({ domain: z - .string({ message: t("workflow_node.deploy.form.ctcccloud_icdn_domain.placeholder") }) + .string(t("workflow_node.deploy.form.ctcccloud_icdn_domain.placeholder")) .refine((v) => validDomainName(v, { allowWildcard: true }), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormCTCCCloudLVDNConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormCTCCCloudLVDNConfig.tsx index 54f22907..0fc427f1 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormCTCCCloudLVDNConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormCTCCCloudLVDNConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -31,9 +31,7 @@ const DeployNodeConfigFormCTCCCloudLVDNConfig = ({ const { t } = useTranslation(); const formSchema = z.object({ - domain: z - .string({ message: t("workflow_node.deploy.form.ctcccloud_lvdn_domain.placeholder") }) - .refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")), + domain: z.string(t("workflow_node.deploy.form.ctcccloud_lvdn_domain.placeholder")).refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormCdnflyConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormCdnflyConfig.tsx index 4d6ae25c..8aa77a93 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormCdnflyConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormCdnflyConfig.tsx @@ -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"; @@ -32,9 +32,7 @@ const DeployNodeConfigFormCdnflyConfig = ({ form: formInst, formName, disabled, const { t } = useTranslation(); const formSchema = z.object({ - resourceType: z.union([z.literal(RESOURCE_TYPE_SITE), z.literal(RESOURCE_TYPE_CERTIFICATE)], { - message: t("workflow_node.deploy.form.cdnfly_resource_type.placeholder"), - }), + resourceType: z.literal([RESOURCE_TYPE_SITE, RESOURCE_TYPE_CERTIFICATE], t("workflow_node.deploy.form.cdnfly_resource_type.placeholder")), siteId: z .union([z.string(), z.number().int()]) .nullish() diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormDogeCloudCDNConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormDogeCloudCDNConfig.tsx index ebe832bc..2be2b7ab 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormDogeCloudCDNConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormDogeCloudCDNConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -31,9 +31,7 @@ const DeployNodeConfigFormDogeCloudCDNConfig = ({ const { t } = useTranslation(); const formSchema = z.object({ - domain: z - .string({ message: t("workflow_node.deploy.form.dogecloud_cdn_domain.placeholder") }) - .refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")), + domain: z.string(t("workflow_node.deploy.form.dogecloud_cdn_domain.placeholder")).refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormEdgioApplicationsConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormEdgioApplicationsConfig.tsx index 599e4ec4..bac348c8 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormEdgioApplicationsConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormEdgioApplicationsConfig.tsx @@ -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 DeployNodeConfigFormEdgioApplicationsConfigFieldValues = Nullish<{ environmentId: string; @@ -30,7 +30,7 @@ const DeployNodeConfigFormEdgioApplicationsConfig = ({ const formSchema = z.object({ environmentId: z - .string({ message: t("workflow_node.deploy.form.edgio_applications_environment_id.placeholder") }) + .string(t("workflow_node.deploy.form.edgio_applications_environment_id.placeholder")) .min(1, t("workflow_node.deploy.form.edgio_applications_environment_id.placeholder")) .max(64, t("common.errmsg.string_max", { max: 64 })), }); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormFlexCDNConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormFlexCDNConfig.tsx index e24652be..b44fefe2 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormFlexCDNConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormFlexCDNConfig.tsx @@ -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 DeployNodeConfigFormFlexCDNConfig = ({ form: formInst, formName, disabled, const { t } = useTranslation(); const formSchema = z.object({ - resourceType: z.literal(RESOURCE_TYPE_CERTIFICATE, { - message: t("workflow_node.deploy.form.flexcdn_resource_type.placeholder"), - }), + resourceType: z.literal(RESOURCE_TYPE_CERTIFICATE, t("workflow_node.deploy.form.flexcdn_resource_type.placeholder")), certificateId: z .union([z.string(), z.number().int()]) .nullish() diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormGcoreCDNConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormGcoreCDNConfig.tsx index f21a4bb9..1939a0b9 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormGcoreCDNConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormGcoreCDNConfig.tsx @@ -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 DeployNodeConfigFormGcoreCDNConfigFieldValues = Nullish<{ resourceId: string | number; @@ -26,7 +26,7 @@ const DeployNodeConfigFormGcoreCDNConfig = ({ form: formInst, formName, disabled const { t } = useTranslation(); const formSchema = z.object({ - resourceId: z.union([z.string(), z.number()]).refine((v) => { + resourceId: z.union([z.string(), z.number().int()]).refine((v) => { return /^\d+$/.test(v + "") && +v > 0; }, t("workflow_node.deploy.form.gcore_cdn_resource_id.placeholder")), certificateId: z diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormGoEdgeConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormGoEdgeConfig.tsx index 5e0f7f85..5288f64d 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormGoEdgeConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormGoEdgeConfig.tsx @@ -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 DeployNodeConfigFormGoEdgeConfig = ({ form: formInst, formName, disabled, const { t } = useTranslation(); const formSchema = z.object({ - resourceType: z.literal(RESOURCE_TYPE_CERTIFICATE, { - message: t("workflow_node.deploy.form.goedge_resource_type.placeholder"), - }), + resourceType: z.literal(RESOURCE_TYPE_CERTIFICATE, t("workflow_node.deploy.form.goedge_resource_type.placeholder")), certificateId: z .union([z.string(), z.number().int()]) .nullish() diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormHuaweiCloudCDNConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormHuaweiCloudCDNConfig.tsx index 93d0a300..9bdab801 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormHuaweiCloudCDNConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormHuaweiCloudCDNConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -33,11 +33,9 @@ const DeployNodeConfigFormHuaweiCloudCDNConfig = ({ const formSchema = z.object({ region: z - .string({ message: t("workflow_node.deploy.form.huaweicloud_cdn_region.placeholder") }) + .string(t("workflow_node.deploy.form.huaweicloud_cdn_region.placeholder")) .nonempty(t("workflow_node.deploy.form.huaweicloud_cdn_region.placeholder")), - domain: z - .string({ message: t("workflow_node.deploy.form.huaweicloud_cdn_domain.placeholder") }) - .refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")), + domain: z.string(t("workflow_node.deploy.form.huaweicloud_cdn_domain.placeholder")).refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormHuaweiCloudELBConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormHuaweiCloudELBConfig.tsx index bc0d4f58..caf8694b 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormHuaweiCloudELBConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormHuaweiCloudELBConfig.tsx @@ -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"; @@ -42,11 +42,12 @@ const DeployNodeConfigFormHuaweiCloudELBConfig = ({ const formSchema = z.object({ region: z - .string({ message: t("workflow_node.deploy.form.huaweicloud_elb_region.placeholder") }) + .string(t("workflow_node.deploy.form.huaweicloud_elb_region.placeholder")) .nonempty(t("workflow_node.deploy.form.huaweicloud_elb_region.placeholder")), - resourceType: z.union([z.literal(RESOURCE_TYPE_CERTIFICATE), z.literal(RESOURCE_TYPE_LOADBALANCER), z.literal(RESOURCE_TYPE_LISTENER)], { - message: t("workflow_node.deploy.form.huaweicloud_elb_resource_type.placeholder"), - }), + resourceType: z.literal( + [RESOURCE_TYPE_CERTIFICATE, RESOURCE_TYPE_LOADBALANCER, RESOURCE_TYPE_LISTENER], + t("workflow_node.deploy.form.huaweicloud_elb_resource_type.placeholder") + ), certificateId: z .string() .max(64, t("common.errmsg.string_max", { max: 64 })) diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormHuaweiCloudWAFConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormHuaweiCloudWAFConfig.tsx index 1ef64837..fb62480a 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormHuaweiCloudWAFConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormHuaweiCloudWAFConfig.tsx @@ -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"; import { validDomainName } from "@/utils/validators"; @@ -41,11 +41,12 @@ const DeployNodeConfigFormHuaweiCloudWAFConfig = ({ const formSchema = z.object({ region: z - .string({ message: t("workflow_node.deploy.form.huaweicloud_waf_region.placeholder") }) + .string(t("workflow_node.deploy.form.huaweicloud_waf_region.placeholder")) .nonempty(t("workflow_node.deploy.form.huaweicloud_waf_region.placeholder")), - resourceType: z.union([z.literal(RESOURCE_TYPE_CERTIFICATE), z.literal(RESOURCE_TYPE_CLOUDSERVER), z.literal(RESOURCE_TYPE_PREMIUMHOST)], { - message: t("workflow_node.deploy.form.huaweicloud_waf_resource_type.placeholder"), - }), + resourceType: z.literal( + [RESOURCE_TYPE_CERTIFICATE, RESOURCE_TYPE_CLOUDSERVER, RESOURCE_TYPE_PREMIUMHOST], + t("workflow_node.deploy.form.huaweicloud_waf_resource_type.placeholder") + ), certificateId: z .string() .max(64, t("common.errmsg.string_max", { max: 64 })) diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormJDCloudALBConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormJDCloudALBConfig.tsx index 5a1365e1..f6ed2e7f 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormJDCloudALBConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormJDCloudALBConfig.tsx @@ -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"; import { validDomainName } from "@/utils/validators"; @@ -42,11 +42,9 @@ const DeployNodeConfigFormJDCloudALBConfig = ({ const formSchema = z.object({ regionId: z - .string({ message: t("workflow_node.deploy.form.jdcloud_alb_region_id.placeholder") }) + .string(t("workflow_node.deploy.form.jdcloud_alb_region_id.placeholder")) .nonempty(t("workflow_node.deploy.form.jdcloud_alb_region_id.placeholder")), - resourceType: z.union([z.literal(RESOURCE_TYPE_LOADBALANCER), z.literal(RESOURCE_TYPE_LISTENER)], { - message: t("workflow_node.deploy.form.jdcloud_alb_resource_type.placeholder"), - }), + resourceType: z.literal([RESOURCE_TYPE_LOADBALANCER, RESOURCE_TYPE_LISTENER], t("workflow_node.deploy.form.jdcloud_alb_resource_type.placeholder")), loadbalancerId: z .string() .max(64, t("common.errmsg.string_max", { max: 64 })) diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormJDCloudCDNConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormJDCloudCDNConfig.tsx index 9d8af17e..ed5c4b88 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormJDCloudCDNConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormJDCloudCDNConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -32,7 +32,7 @@ const DeployNodeConfigFormJDCloudCDNConfig = ({ const formSchema = z.object({ domain: z - .string({ message: t("workflow_node.deploy.form.jdcloud_cdn_domain.placeholder") }) + .string(t("workflow_node.deploy.form.jdcloud_cdn_domain.placeholder")) .refine((v) => validDomainName(v, { allowWildcard: true }), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormJDCloudLiveConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormJDCloudLiveConfig.tsx index 5e13f5eb..44310413 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormJDCloudLiveConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormJDCloudLiveConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -31,9 +31,7 @@ const DeployNodeConfigFormJDCloudLiveConfig = ({ const { t } = useTranslation(); const formSchema = z.object({ - domain: z - .string({ message: t("workflow_node.deploy.form.jdcloud_live_domain.placeholder") }) - .refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")), + domain: z.string(t("workflow_node.deploy.form.jdcloud_live_domain.placeholder")).refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormJDCloudVODConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormJDCloudVODConfig.tsx index ad64a735..481a75a2 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormJDCloudVODConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormJDCloudVODConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -31,9 +31,7 @@ const DeployNodeConfigFormJDCloudVODConfig = ({ const { t } = useTranslation(); const formSchema = z.object({ - domain: z - .string({ message: t("workflow_node.deploy.form.jdcloud_vod_domain.placeholder") }) - .refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")), + domain: z.string(t("workflow_node.deploy.form.jdcloud_vod_domain.placeholder")).refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormKubernetesSecretConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormKubernetesSecretConfig.tsx index fcd67072..fa16c828 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormKubernetesSecretConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormKubernetesSecretConfig.tsx @@ -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 DeployNodeConfigFormKubernetesSecretConfigFieldValues = Nullish<{ namespace: string; @@ -39,23 +39,23 @@ const DeployNodeConfigFormKubernetesSecretConfig = ({ const formSchema = z.object({ namespace: z - .string({ message: t("workflow_node.deploy.form.k8s_namespace.placeholder") }) + .string(t("workflow_node.deploy.form.k8s_namespace.placeholder")) .nonempty(t("workflow_node.deploy.form.k8s_namespace.placeholder")) .max(256, t("common.errmsg.string_max", { max: 256 })), secretName: z - .string({ message: t("workflow_node.deploy.form.k8s_secret_name.placeholder") }) + .string(t("workflow_node.deploy.form.k8s_secret_name.placeholder")) .nonempty(t("workflow_node.deploy.form.k8s_secret_name.placeholder")) .max(256, t("common.errmsg.string_max", { max: 256 })), secretType: z - .string({ message: t("workflow_node.deploy.form.k8s_secret_type.placeholder") }) + .string(t("workflow_node.deploy.form.k8s_secret_type.placeholder")) .nonempty(t("workflow_node.deploy.form.k8s_secret_type.placeholder")) .max(256, t("common.errmsg.string_max", { max: 256 })), secretDataKeyForCrt: z - .string({ message: t("workflow_node.deploy.form.k8s_secret_data_key_for_crt.placeholder") }) + .string(t("workflow_node.deploy.form.k8s_secret_data_key_for_crt.placeholder")) .nonempty(t("workflow_node.deploy.form.k8s_secret_data_key_for_crt.placeholder")) .max(256, t("common.errmsg.string_max", { max: 256 })), secretDataKeyForKey: z - .string({ message: t("workflow_node.deploy.form.k8s_secret_data_key_for_key.placeholder") }) + .string(t("workflow_node.deploy.form.k8s_secret_data_key_for_key.placeholder")) .nonempty(t("workflow_node.deploy.form.k8s_secret_data_key_for_key.placeholder")) .max(256, t("common.errmsg.string_max", { max: 256 })), }); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormLeCDNConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormLeCDNConfig.tsx index 0636cedf..b1d769cc 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormLeCDNConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormLeCDNConfig.tsx @@ -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"; @@ -33,9 +33,7 @@ const DeployNodeConfigFormLeCDNConfig = ({ form: formInst, formName, disabled, i const { t } = useTranslation(); const formSchema = z.object({ - resourceType: z.literal(RESOURCE_TYPE_CERTIFICATE, { - message: t("workflow_node.deploy.form.lecdn_resource_type.placeholder"), - }), + resourceType: z.literal(RESOURCE_TYPE_CERTIFICATE, t("workflow_node.deploy.form.lecdn_resource_type.placeholder")), certificateId: z .union([z.string(), z.number().int()]) .nullish() diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormLocalConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormLocalConfig.tsx index 36d22a08..eddeb981 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormLocalConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormLocalConfig.tsx @@ -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 } 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"; @@ -160,9 +160,7 @@ const DeployNodeConfigFormLocalConfig = ({ form: formInst, formName, disabled, i const { t } = useTranslation(); const formSchema = z.object({ - format: z.union([z.literal(FORMAT_PEM), z.literal(FORMAT_PFX), z.literal(FORMAT_JKS)], { - message: t("workflow_node.deploy.form.local_format.placeholder"), - }), + format: z.literal([FORMAT_PEM, FORMAT_PFX, FORMAT_JKS], t("workflow_node.deploy.form.local_format.placeholder")), certPath: z .string() .min(1, t("workflow_node.deploy.form.local_cert_path.tooltip")) @@ -179,30 +177,28 @@ const DeployNodeConfigFormLocalConfig = ({ form: formInst, formName, disabled, i .string() .max(256, t("common.errmsg.string_max", { max: 256 })) .nullish() - .refine((v) => fieldFormat !== FORMAT_PEM || !!v?.trim(), { message: t("workflow_node.deploy.form.local_key_path.tooltip") }), + .refine((v) => fieldFormat !== FORMAT_PEM || !!v?.trim(), t("workflow_node.deploy.form.local_key_path.tooltip")), pfxPassword: z .string() .max(64, t("common.errmsg.string_max", { max: 256 })) .nullish() - .refine((v) => fieldFormat !== FORMAT_PFX || !!v?.trim(), { message: t("workflow_node.deploy.form.local_pfx_password.tooltip") }), + .refine((v) => fieldFormat !== FORMAT_PFX || !!v?.trim(), t("workflow_node.deploy.form.local_pfx_password.tooltip")), jksAlias: z .string() .max(64, t("common.errmsg.string_max", { max: 256 })) .nullish() - .refine((v) => fieldFormat !== FORMAT_JKS || !!v?.trim(), { message: t("workflow_node.deploy.form.local_jks_alias.tooltip") }), + .refine((v) => fieldFormat !== FORMAT_JKS || !!v?.trim(), t("workflow_node.deploy.form.local_jks_alias.tooltip")), jksKeypass: z .string() .max(64, t("common.errmsg.string_max", { max: 256 })) .nullish() - .refine((v) => fieldFormat !== FORMAT_JKS || !!v?.trim(), { message: t("workflow_node.deploy.form.local_jks_keypass.tooltip") }), + .refine((v) => fieldFormat !== FORMAT_JKS || !!v?.trim(), t("workflow_node.deploy.form.local_jks_keypass.tooltip")), jksStorepass: z .string() .max(64, t("common.errmsg.string_max", { max: 256 })) .nullish() - .refine((v) => fieldFormat !== FORMAT_JKS || !!v?.trim(), { message: t("workflow_node.deploy.form.local_jks_storepass.tooltip") }), - shellEnv: z.union([z.literal(SHELLENV_SH), z.literal(SHELLENV_CMD), z.literal(SHELLENV_POWERSHELL)], { - message: t("workflow_node.deploy.form.local_shell_env.placeholder"), - }), + .refine((v) => fieldFormat !== FORMAT_JKS || !!v?.trim(), t("workflow_node.deploy.form.local_jks_storepass.tooltip")), + shellEnv: z.literal([SHELLENV_SH, SHELLENV_CMD, SHELLENV_POWERSHELL], t("workflow_node.deploy.form.local_shell_env.placeholder")), preCommand: z .string() .max(20480, t("common.errmsg.string_max", { max: 20480 })) diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormNetlifySiteConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormNetlifySiteConfig.tsx index ffa38fae..1a6a29c4 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormNetlifySiteConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormNetlifySiteConfig.tsx @@ -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 DeployNodeConfigFormNetlifySiteConfigFieldValues = Nullish<{ siteId: string; diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormProxmoxVEConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormProxmoxVEConfig.tsx index 444b1082..4e761a47 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormProxmoxVEConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormProxmoxVEConfig.tsx @@ -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"; type DeployNodeConfigFormProxmoxVEConfigFieldValues = Nullish<{ nodeName: string; @@ -32,9 +32,7 @@ const DeployNodeConfigFormProxmoxVEConfig = ({ const { t } = useTranslation(); const formSchema = z.object({ - nodeName: z - .string({ message: t("workflow_node.deploy.form.proxmoxve_node_name.placeholder") }) - .nonempty(t("workflow_node.deploy.form.proxmoxve_node_name.placeholder")), + nodeName: z.string(t("workflow_node.deploy.form.proxmoxve_node_name.placeholder")).nonempty(t("workflow_node.deploy.form.proxmoxve_node_name.placeholder")), autoRestart: z.boolean().nullish(), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormQiniuCDNConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormQiniuCDNConfig.tsx index b2c4075f..08c613c3 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormQiniuCDNConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormQiniuCDNConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -26,7 +26,7 @@ const DeployNodeConfigFormQiniuCDNConfig = ({ form: formInst, formName, disabled const formSchema = z.object({ domain: z - .string({ message: t("workflow_node.deploy.form.qiniu_cdn_domain.placeholder") }) + .string(t("workflow_node.deploy.form.qiniu_cdn_domain.placeholder")) .refine((v) => validDomainName(v, { allowWildcard: true }), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormQiniuKodoConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormQiniuKodoConfig.tsx index e7a7dfb7..56822a69 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormQiniuKodoConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormQiniuKodoConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -31,9 +31,7 @@ const DeployNodeConfigFormQiniuKodoConfig = ({ const { t } = useTranslation(); const formSchema = z.object({ - domain: z - .string({ message: t("workflow_node.deploy.form.qiniu_kodo_domain.placeholder") }) - .refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")), + domain: z.string(t("workflow_node.deploy.form.qiniu_kodo_domain.placeholder")).refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormQiniuPiliConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormQiniuPiliConfig.tsx index 2cac6de7..b54eedf0 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormQiniuPiliConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormQiniuPiliConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -32,9 +32,9 @@ const DeployNodeConfigFormQiniuPiliConfig = ({ const { t } = useTranslation(); const formSchema = z.object({ - hub: z.string({ message: t("workflow_node.deploy.form.qiniu_pili_hub.placeholder") }).nonempty(t("workflow_node.deploy.form.qiniu_pili_hub.placeholder")), + hub: z.string(t("workflow_node.deploy.form.qiniu_pili_hub.placeholder")).nonempty(t("workflow_node.deploy.form.qiniu_pili_hub.placeholder")), domain: z - .string({ message: t("workflow_node.deploy.form.qiniu_pili_domain.placeholder") }) + .string(t("workflow_node.deploy.form.qiniu_pili_domain.placeholder")) .refine((v) => validDomainName(v, { allowWildcard: true }), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormRainYunRCDNConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormRainYunRCDNConfig.tsx index b13ad5cb..06753388 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormRainYunRCDNConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormRainYunRCDNConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -34,11 +34,11 @@ const DeployNodeConfigFormRainYunRCDNConfig = ({ const { t } = useTranslation(); const formSchema = z.object({ - instanceId: z.union([z.string(), z.number()]).refine((v) => { + instanceId: z.union([z.string(), z.number().int()]).refine((v) => { return /^\d+$/.test(v + "") && +v > 0; }, t("workflow_node.deploy.form.rainyun_rcdn_instance_id.placeholder")), domain: z - .string({ message: t("workflow_node.deploy.form.rainyun_rcdn_domain.placeholder") }) + .string(t("workflow_node.deploy.form.rainyun_rcdn_domain.placeholder")) .refine((v) => validDomainName(v, { allowWildcard: true }), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormRatPanelSiteConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormRatPanelSiteConfig.tsx index 03f86913..9aa2cf7e 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormRatPanelSiteConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormRatPanelSiteConfig.tsx @@ -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 DeployNodeConfigFormRatPanelSiteConfigFieldValues = Nullish<{ siteName: string; diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormSSHConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormSSHConfig.tsx index 304f638e..ebeb1cff 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormSSHConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormSSHConfig.tsx @@ -2,7 +2,7 @@ import { useTranslation } from "react-i18next"; import { DownOutlined as DownOutlinedIcon } from "@ant-design/icons"; import { 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"; @@ -192,9 +192,7 @@ const DeployNodeConfigFormSSHConfig = ({ form: formInst, formName, disabled, ini const { t } = useTranslation(); const formSchema = z.object({ - format: z.union([z.literal(FORMAT_PEM), z.literal(FORMAT_PFX), z.literal(FORMAT_JKS)], { - message: t("workflow_node.deploy.form.ssh_format.placeholder"), - }), + format: z.literal([FORMAT_PEM, FORMAT_PFX, FORMAT_JKS], t("workflow_node.deploy.form.ssh_format.placeholder")), certPath: z .string() .min(1, t("workflow_node.deploy.form.ssh_cert_path.tooltip")) @@ -203,7 +201,7 @@ const DeployNodeConfigFormSSHConfig = ({ form: formInst, formName, disabled, ini .string() .max(256, t("common.errmsg.string_max", { max: 256 })) .nullish() - .refine((v) => fieldFormat !== FORMAT_PEM || !!v?.trim(), { message: t("workflow_node.deploy.form.ssh_key_path.tooltip") }), + .refine((v) => fieldFormat !== FORMAT_PEM || !!v?.trim(), t("workflow_node.deploy.form.ssh_key_path.tooltip")), certPathForServerOnly: z .string() .max(256, t("common.errmsg.string_max", { max: 256 })) @@ -216,22 +214,22 @@ const DeployNodeConfigFormSSHConfig = ({ form: formInst, formName, disabled, ini .string() .max(64, t("common.errmsg.string_max", { max: 256 })) .nullish() - .refine((v) => fieldFormat !== FORMAT_PFX || !!v?.trim(), { message: t("workflow_node.deploy.form.ssh_pfx_password.tooltip") }), + .refine((v) => fieldFormat !== FORMAT_PFX || !!v?.trim(), t("workflow_node.deploy.form.ssh_pfx_password.tooltip")), jksAlias: z .string() .max(64, t("common.errmsg.string_max", { max: 256 })) .nullish() - .refine((v) => fieldFormat !== FORMAT_JKS || !!v?.trim(), { message: t("workflow_node.deploy.form.ssh_jks_alias.tooltip") }), + .refine((v) => fieldFormat !== FORMAT_JKS || !!v?.trim(), t("workflow_node.deploy.form.ssh_jks_alias.tooltip")), jksKeypass: z .string() .max(64, t("common.errmsg.string_max", { max: 256 })) .nullish() - .refine((v) => fieldFormat !== FORMAT_JKS || !!v?.trim(), { message: t("workflow_node.deploy.form.ssh_jks_keypass.tooltip") }), + .refine((v) => fieldFormat !== FORMAT_JKS || !!v?.trim(), t("workflow_node.deploy.form.ssh_jks_keypass.tooltip")), jksStorepass: z .string() .max(64, t("common.errmsg.string_max", { max: 256 })) .nullish() - .refine((v) => fieldFormat !== FORMAT_JKS || !!v?.trim(), { message: t("workflow_node.deploy.form.ssh_jks_storepass.tooltip") }), + .refine((v) => fieldFormat !== FORMAT_JKS || !!v?.trim(), t("workflow_node.deploy.form.ssh_jks_storepass.tooltip")), preCommand: z .string() .max(20480, t("common.errmsg.string_max", { max: 20480 })) diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormSafeLineConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormSafeLineConfig.tsx index c5905e14..49f350be 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormSafeLineConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormSafeLineConfig.tsx @@ -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 DeployNodeConfigFormSafeLineConfig = ({ form: formInst, formName, disabled const { t } = useTranslation(); const formSchema = z.object({ - resourceType: z.literal(RESOURCE_TYPE_CERTIFICATE, { - message: t("workflow_node.deploy.form.safeline_resource_type.placeholder"), - }), + resourceType: z.literal(RESOURCE_TYPE_CERTIFICATE, t("workflow_node.deploy.form.safeline_resource_type.placeholder")), certificateId: z .union([z.string(), z.number().int()]) .nullish() diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudCDNConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudCDNConfig.tsx index 5dd10dd6..bc9e938d 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudCDNConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudCDNConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -34,7 +34,7 @@ const DeployNodeConfigFormTencentCloudCDNConfig = ({ const formSchema = z.object({ endpoint: z.string().nullish(), domain: z - .string({ message: t("workflow_node.deploy.form.tencentcloud_cdn_domain.placeholder") }) + .string(t("workflow_node.deploy.form.tencentcloud_cdn_domain.placeholder")) .refine((v) => validDomainName(v, { allowWildcard: true }), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudCLBConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudCLBConfig.tsx index b21f3661..fdd945e1 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudCLBConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudCLBConfig.tsx @@ -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"; import { validDomainName } from "@/utils/validators"; @@ -23,10 +23,10 @@ export type DeployNodeConfigFormTencentCloudCLBConfigProps = { onValuesChange?: (values: DeployNodeConfigFormTencentCloudCLBConfigFieldValues) => void; }; -const RESOURCE_TYPE_VIA_SSLDEPLOY = "ssl-deploy" as const; const RESOURCE_TYPE_LOADBALANCER = "loadbalancer" as const; const RESOURCE_TYPE_LISTENER = "listener" as const; const RESOURCE_TYPE_RULEDOMAIN = "ruledomain" as const; +const RESOURCE_TYPE_VIA_SSLDEPLOY = "ssl-deploy" as const; const initFormModel = (): DeployNodeConfigFormTencentCloudCLBConfigFieldValues => { return { @@ -45,12 +45,12 @@ const DeployNodeConfigFormTencentCloudCLBConfig = ({ const formSchema = z.object({ endpoint: z.string().nullish(), - resourceType: z.union( - [z.literal(RESOURCE_TYPE_VIA_SSLDEPLOY), z.literal(RESOURCE_TYPE_LOADBALANCER), z.literal(RESOURCE_TYPE_LISTENER), z.literal(RESOURCE_TYPE_RULEDOMAIN)], - { message: t("workflow_node.deploy.form.tencentcloud_clb_resource_type.placeholder") } + resourceType: z.literal( + [RESOURCE_TYPE_LOADBALANCER, RESOURCE_TYPE_LISTENER, RESOURCE_TYPE_RULEDOMAIN, RESOURCE_TYPE_VIA_SSLDEPLOY], + t("workflow_node.deploy.form.tencentcloud_clb_resource_type.placeholder") ), region: z - .string({ message: t("workflow_node.deploy.form.tencentcloud_clb_region.placeholder") }) + .string(t("workflow_node.deploy.form.tencentcloud_clb_region.placeholder")) .nonempty(t("workflow_node.deploy.form.tencentcloud_clb_region.placeholder")), loadbalancerId: z .string() @@ -61,7 +61,7 @@ const DeployNodeConfigFormTencentCloudCLBConfig = ({ .max(64, t("common.errmsg.string_max", { max: 64 })) .nullish() .refine( - (v) => ![RESOURCE_TYPE_VIA_SSLDEPLOY, RESOURCE_TYPE_LISTENER, RESOURCE_TYPE_RULEDOMAIN].includes(fieldResourceType) || !!v?.trim(), + (v) => ![RESOURCE_TYPE_LISTENER, RESOURCE_TYPE_RULEDOMAIN, RESOURCE_TYPE_VIA_SSLDEPLOY].includes(fieldResourceType) || !!v?.trim(), t("workflow_node.deploy.form.tencentcloud_clb_listener_id.placeholder") ), domain: z @@ -106,9 +106,6 @@ const DeployNodeConfigFormTencentCloudCLBConfig = ({ diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudCOSConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudCOSConfig.tsx index 6192c9b9..5d05727c 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudCOSConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudCOSConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -34,14 +34,12 @@ const DeployNodeConfigFormTencentCloudCOSConfig = ({ const formSchema = z.object({ region: z - .string({ message: t("workflow_node.deploy.form.tencentcloud_cos_region.placeholder") }) + .string(t("workflow_node.deploy.form.tencentcloud_cos_region.placeholder")) .nonempty(t("workflow_node.deploy.form.tencentcloud_cos_region.placeholder")), bucket: z - .string({ message: t("workflow_node.deploy.form.tencentcloud_cos_bucket.placeholder") }) + .string(t("workflow_node.deploy.form.tencentcloud_cos_bucket.placeholder")) .nonempty(t("workflow_node.deploy.form.tencentcloud_cos_bucket.placeholder")), - domain: z - .string({ message: t("workflow_node.deploy.form.tencentcloud_cos_domain.placeholder") }) - .refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")), + domain: z.string(t("workflow_node.deploy.form.tencentcloud_cos_domain.placeholder")).refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudCSSConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudCSSConfig.tsx index b9de0c8d..b0118a98 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudCSSConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudCSSConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -34,7 +34,7 @@ const DeployNodeConfigFormTencentCloudCSSConfig = ({ const formSchema = z.object({ endpoint: z.string().nullish(), domain: z - .string({ message: t("workflow_node.deploy.form.tencentcloud_css_domain.placeholder") }) + .string(t("workflow_node.deploy.form.tencentcloud_css_domain.placeholder")) .refine((v) => validDomainName(v, { allowWildcard: true }), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudECDNConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudECDNConfig.tsx index 6484babc..034f8945 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudECDNConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudECDNConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -34,7 +34,7 @@ const DeployNodeConfigFormTencentCloudECDNConfig = ({ const formSchema = z.object({ endpoint: z.string().nullish(), domain: z - .string({ message: t("workflow_node.deploy.form.tencentcloud_ecdn_domain.placeholder") }) + .string(t("workflow_node.deploy.form.tencentcloud_ecdn_domain.placeholder")) .refine((v) => validDomainName(v, { allowWildcard: true }), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudEOConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudEOConfig.tsx index 7ad8c068..a69d8e38 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudEOConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudEOConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -35,10 +35,10 @@ const DeployNodeConfigFormTencentCloudEOConfig = ({ const formSchema = z.object({ endpoint: z.string().nullish(), zoneId: z - .string({ message: t("workflow_node.deploy.form.tencentcloud_eo_zone_id.placeholder") }) + .string(t("workflow_node.deploy.form.tencentcloud_eo_zone_id.placeholder")) .nonempty(t("workflow_node.deploy.form.tencentcloud_eo_zone_id.placeholder")), domain: z - .string({ message: t("workflow_node.deploy.form.tencentcloud_eo_domain.placeholder") }) + .string(t("workflow_node.deploy.form.tencentcloud_eo_domain.placeholder")) .refine((v) => validDomainName(v, { allowWildcard: true }), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudGAAPConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudGAAPConfig.tsx index ff6141f2..1cac40dc 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudGAAPConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudGAAPConfig.tsx @@ -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"; @@ -40,7 +40,7 @@ const DeployNodeConfigFormTencentCloudGAAPConfig = ({ const formSchema = z.object({ endpoint: z.string().nullish(), - resourceType: z.literal(RESOURCE_TYPE_LISTENER, { message: t("workflow_node.deploy.form.tencentcloud_gaap_resource_type.placeholder") }), + resourceType: z.literal(RESOURCE_TYPE_LISTENER, t("workflow_node.deploy.form.tencentcloud_gaap_resource_type.placeholder")), proxyId: z.string().nullish(), listenerId: z .string() diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudSCFConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudSCFConfig.tsx index c62f30ca..3128a41a 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudSCFConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudSCFConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -35,11 +35,9 @@ const DeployNodeConfigFormTencentCloudSCFConfig = ({ const formSchema = z.object({ endpoint: z.string().nullish(), region: z - .string({ message: t("workflow_node.deploy.form.tencentcloud_scf_region.placeholder") }) + .string(t("workflow_node.deploy.form.tencentcloud_scf_region.placeholder")) .nonempty(t("workflow_node.deploy.form.tencentcloud_scf_region.placeholder")), - domain: z - .string({ message: t("workflow_node.deploy.form.tencentcloud_scf_domain.placeholder") }) - .refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")), + domain: z.string(t("workflow_node.deploy.form.tencentcloud_scf_domain.placeholder")).refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudSSLConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudSSLConfig.tsx index c7f1f634..f079790d 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudSSLConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudSSLConfig.tsx @@ -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 DeployNodeConfigFormTencentCloudSSLConfigFieldValues = Nullish<{ endpoint?: string; diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudSSLDeployConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudSSLDeployConfig.tsx index b003876c..37c82584 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudSSLDeployConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudSSLDeployConfig.tsx @@ -1,7 +1,7 @@ import { useTranslation } from "react-i18next"; import { Alert, AutoComplete, Form, type FormInstance, Input } from "antd"; import { createSchemaFieldRule } from "antd-zod"; -import { z } from "zod"; +import { z } from "zod/v4"; import MultipleSplitValueInput from "@/components/MultipleSplitValueInput"; @@ -38,12 +38,12 @@ const DeployNodeConfigFormTencentCloudSSLDeployConfig = ({ const formSchema = z.object({ endpoint: z.string().nullish(), region: z - .string({ message: t("workflow_node.deploy.form.tencentcloud_ssl_deploy_region.placeholder") }) + .string(t("workflow_node.deploy.form.tencentcloud_ssl_deploy_region.placeholder")) .nonempty(t("workflow_node.deploy.form.tencentcloud_ssl_deploy_region.placeholder")), resourceType: z - .string({ message: t("workflow_node.deploy.form.tencentcloud_ssl_deploy_resource_type.placeholder") }) + .string(t("workflow_node.deploy.form.tencentcloud_ssl_deploy_resource_type.placeholder")) .nonempty(t("workflow_node.deploy.form.tencentcloud_ssl_deploy_resource_type.placeholder")), - resourceIds: z.string({ message: t("workflow_node.deploy.form.tencentcloud_ssl_deploy_resource_ids.placeholder") }).refine((v) => { + resourceIds: z.string(t("workflow_node.deploy.form.tencentcloud_ssl_deploy_resource_ids.placeholder")).refine((v) => { if (!v) return false; return String(v) .split(MULTIPLE_INPUT_SEPARATOR) diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudVODConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudVODConfig.tsx index 99136b9a..9a47a221 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudVODConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudVODConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -35,15 +35,13 @@ const DeployNodeConfigFormTencentCloudVODConfig = ({ const formSchema = z.object({ endpoint: z.string().nullish(), subAppId: z - .union([z.string(), z.number()]) + .union([z.string(), z.number().int()]) .nullish() .refine((v) => { if (v == null) return true; return /^\d+$/.test(v + "") && +v > 0; }, t("workflow_node.deploy.form.tencentcloud_vod_sub_app_id.placeholder")), - domain: z - .string({ message: t("workflow_node.deploy.form.tencentcloud_vod_domain.placeholder") }) - .refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")), + domain: z.string(t("workflow_node.deploy.form.tencentcloud_vod_domain.placeholder")).refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudWAFConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudWAFConfig.tsx index 6cf53c6f..c70195c7 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudWAFConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormTencentCloudWAFConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -37,16 +37,14 @@ const DeployNodeConfigFormTencentCloudWAFConfig = ({ const formSchema = z.object({ endpoint: z.string().nullish(), region: z - .string({ message: t("workflow_node.deploy.form.tencentcloud_waf_region.placeholder") }) + .string(t("workflow_node.deploy.form.tencentcloud_waf_region.placeholder")) .nonempty(t("workflow_node.deploy.form.tencentcloud_waf_region.placeholder")), - domain: z - .string({ message: t("workflow_node.deploy.form.tencentcloud_waf_domain.placeholder") }) - .refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")), + domain: z.string(t("workflow_node.deploy.form.tencentcloud_waf_domain.placeholder")).refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")), domainId: z - .string({ message: t("workflow_node.deploy.form.tencentcloud_waf_domain_id.placeholder") }) + .string(t("workflow_node.deploy.form.tencentcloud_waf_domain_id.placeholder")) .nonempty(t("workflow_node.deploy.form.tencentcloud_waf_domain_id.placeholder")), instanceId: z - .string({ message: t("workflow_node.deploy.form.tencentcloud_waf_instance_id.placeholder") }) + .string(t("workflow_node.deploy.form.tencentcloud_waf_instance_id.placeholder")) .nonempty(t("workflow_node.deploy.form.tencentcloud_waf_instance_id.placeholder")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormUCloudUCDNConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormUCloudUCDNConfig.tsx index 41c059fc..fd244161 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormUCloudUCDNConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormUCloudUCDNConfig.tsx @@ -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 DeployNodeConfigFormUCloudUCDNConfigFieldValues = Nullish<{ domainId: string; @@ -30,7 +30,7 @@ const DeployNodeConfigFormUCloudUCDNConfig = ({ const formSchema = z.object({ domainId: z - .string({ message: t("workflow_node.deploy.form.ucloud_ucdn_domain_id.placeholder") }) + .string(t("workflow_node.deploy.form.ucloud_ucdn_domain_id.placeholder")) .nonempty(t("workflow_node.deploy.form.ucloud_ucdn_domain_id.placeholder")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormUCloudUS3Config.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormUCloudUS3Config.tsx index a2ea684b..fe917e9f 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormUCloudUS3Config.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormUCloudUS3Config.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -33,15 +33,9 @@ const DeployNodeConfigFormUCloudUS3Config = ({ const { t } = useTranslation(); const formSchema = z.object({ - region: z - .string({ message: t("workflow_node.deploy.form.ucloud_us3_region.placeholder") }) - .nonempty(t("workflow_node.deploy.form.ucloud_us3_region.placeholder")), - bucket: z - .string({ message: t("workflow_node.deploy.form.ucloud_us3_bucket.placeholder") }) - .nonempty(t("workflow_node.deploy.form.ucloud_us3_bucket.placeholder")), - domain: z - .string({ message: t("workflow_node.deploy.form.ucloud_us3_domain.placeholder") }) - .refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")), + region: z.string(t("workflow_node.deploy.form.ucloud_us3_region.placeholder")).nonempty(t("workflow_node.deploy.form.ucloud_us3_region.placeholder")), + bucket: z.string(t("workflow_node.deploy.form.ucloud_us3_bucket.placeholder")).nonempty(t("workflow_node.deploy.form.ucloud_us3_bucket.placeholder")), + domain: z.string(t("workflow_node.deploy.form.ucloud_us3_domain.placeholder")).refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormUniCloudWebHostConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormUniCloudWebHostConfig.tsx index 21624c52..c0265173 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormUniCloudWebHostConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormUniCloudWebHostConfig.tsx @@ -1,7 +1,7 @@ import { useTranslation } from "react-i18next"; import { Alert, Form, type FormInstance, Input, Select } from "antd"; import { createSchemaFieldRule } from "antd-zod"; -import { z } from "zod"; +import { z } from "zod/v4"; import { validDomainName } from "@/utils/validators"; diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormUpyunCDNConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormUpyunCDNConfig.tsx index c18d570c..6cebec9a 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormUpyunCDNConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormUpyunCDNConfig.tsx @@ -1,7 +1,7 @@ import { useTranslation } from "react-i18next"; import { Alert, Form, type FormInstance, Input } from "antd"; import { createSchemaFieldRule } from "antd-zod"; -import { z } from "zod"; +import { z } from "zod/v4"; import { validDomainName } from "@/utils/validators"; @@ -26,7 +26,7 @@ const DeployNodeConfigFormUpyunCDNConfig = ({ form: formInst, formName, disabled const formSchema = z.object({ domain: z - .string({ message: t("workflow_node.deploy.form.upyun_cdn_domain.placeholder") }) + .string(t("workflow_node.deploy.form.upyun_cdn_domain.placeholder")) .refine((v) => validDomainName(v, { allowWildcard: true }), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormUpyunFileConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormUpyunFileConfig.tsx index 68ea3369..49faf0f9 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormUpyunFileConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormUpyunFileConfig.tsx @@ -1,7 +1,7 @@ import { useTranslation } from "react-i18next"; import { Alert, Form, type FormInstance, Input } from "antd"; import { createSchemaFieldRule } from "antd-zod"; -import { z } from "zod"; +import { z } from "zod/v4"; import { validDomainName } from "@/utils/validators"; @@ -31,9 +31,7 @@ const DeployNodeConfigFormUpyunFileConfig = ({ const { t } = useTranslation(); const formSchema = z.object({ - domain: z - .string({ message: t("workflow_node.deploy.form.upyun_file_domain.placeholder") }) - .refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")), + domain: z.string(t("workflow_node.deploy.form.upyun_file_domain.placeholder")).refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineALBConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineALBConfig.tsx index 68880421..8f062816 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineALBConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineALBConfig.tsx @@ -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"; import { validDomainName } from "@/utils/validators"; @@ -42,11 +42,9 @@ const DeployNodeConfigFormVolcEngineALBConfig = ({ const formSchema = z.object({ region: z - .string({ message: t("workflow_node.deploy.form.volcengine_alb_region.placeholder") }) + .string(t("workflow_node.deploy.form.volcengine_alb_region.placeholder")) .nonempty(t("workflow_node.deploy.form.volcengine_alb_region.placeholder")), - resourceType: z.union([z.literal(RESOURCE_TYPE_LOADBALANCER), z.literal(RESOURCE_TYPE_LISTENER)], { - message: t("workflow_node.deploy.form.volcengine_alb_resource_type.placeholder"), - }), + resourceType: z.literal([RESOURCE_TYPE_LOADBALANCER, RESOURCE_TYPE_LISTENER], t("workflow_node.deploy.form.volcengine_alb_resource_type.placeholder")), loadbalancerId: z .string() .max(64, t("common.errmsg.string_max", { max: 64 })) diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineCDNConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineCDNConfig.tsx index c420e96e..d86777dc 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineCDNConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineCDNConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -32,7 +32,7 @@ const DeployNodeConfigFormVolcEngineCDNConfig = ({ const formSchema = z.object({ domain: z - .string({ message: t("workflow_node.deploy.form.volcengine_cdn_domain.placeholder") }) + .string(t("workflow_node.deploy.form.volcengine_cdn_domain.placeholder")) .refine((v) => validDomainName(v, { allowWildcard: true }), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineCLBConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineCLBConfig.tsx index 80778e01..ec9c0925 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineCLBConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineCLBConfig.tsx @@ -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"; @@ -40,11 +40,9 @@ const DeployNodeConfigFormVolcEngineCLBConfig = ({ const formSchema = z.object({ region: z - .string({ message: t("workflow_node.deploy.form.volcengine_clb_region.placeholder") }) + .string(t("workflow_node.deploy.form.volcengine_clb_region.placeholder")) .nonempty(t("workflow_node.deploy.form.volcengine_clb_region.placeholder")), - resourceType: z.union([z.literal(RESOURCE_TYPE_LOADBALANCER), z.literal(RESOURCE_TYPE_LISTENER)], { - message: t("workflow_node.deploy.form.volcengine_clb_resource_type.placeholder"), - }), + resourceType: z.literal([RESOURCE_TYPE_LOADBALANCER, RESOURCE_TYPE_LISTENER], t("workflow_node.deploy.form.volcengine_clb_resource_type.placeholder")), loadbalancerId: z .string() .max(64, t("common.errmsg.string_max", { max: 64 })) diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineCertCenterConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineCertCenterConfig.tsx index 28fb16f6..2350aeec 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineCertCenterConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineCertCenterConfig.tsx @@ -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 DeployNodeConfigFormVolcEngineCertCenterConfigFieldValues = Nullish<{ region: string; @@ -30,7 +30,7 @@ const DeployNodeConfigFormVolcEngineCertCenterConfig = ({ const formSchema = z.object({ region: z - .string({ message: t("workflow_node.deploy.form.volcengine_certcenter_region.placeholder") }) + .string(t("workflow_node.deploy.form.volcengine_certcenter_region.placeholder")) .nonempty(t("workflow_node.deploy.form.volcengine_certcenter_region.placeholder")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineDCDNConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineDCDNConfig.tsx index 0d430e1e..ce254665 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineDCDNConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineDCDNConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -32,7 +32,7 @@ const DeployNodeConfigFormVolcEngineDCDNConfig = ({ const formSchema = z.object({ domain: z - .string({ message: t("workflow_node.deploy.form.volcengine_dcdn_domain.placeholder") }) + .string(t("workflow_node.deploy.form.volcengine_dcdn_domain.placeholder")) .refine((v) => validDomainName(v, { allowWildcard: true }), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineImageXConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineImageXConfig.tsx index 5ce81fd0..d1cb3fdb 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineImageXConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineImageXConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -32,14 +32,12 @@ const DeployNodeConfigFormVolcEngineImageXConfig = ({ const formSchema = z.object({ region: z - .string({ message: t("workflow_node.deploy.form.volcengine_imagex_region.placeholder") }) + .string(t("workflow_node.deploy.form.volcengine_imagex_region.placeholder")) .nonempty(t("workflow_node.deploy.form.volcengine_imagex_region.placeholder")), serviceId: z - .string({ message: t("workflow_node.deploy.form.volcengine_imagex_service_id.placeholder") }) + .string(t("workflow_node.deploy.form.volcengine_imagex_service_id.placeholder")) .nonempty(t("workflow_node.deploy.form.volcengine_imagex_service_id.placeholder")), - domain: z - .string({ message: t("workflow_node.deploy.form.volcengine_imagex_domain.placeholder") }) - .refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")), + domain: z.string(t("workflow_node.deploy.form.volcengine_imagex_domain.placeholder")).refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineLiveConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineLiveConfig.tsx index 3845c1ac..316cd017 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineLiveConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineLiveConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -32,7 +32,7 @@ const DeployNodeConfigFormVolcEngineLiveConfig = ({ const formSchema = z.object({ domain: z - .string({ message: t("workflow_node.deploy.form.volcengine_live_domain.placeholder") }) + .string(t("workflow_node.deploy.form.volcengine_live_domain.placeholder")) .refine((v) => validDomainName(v, { allowWildcard: true }), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineTOSConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineTOSConfig.tsx index 516dc123..29a39710 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineTOSConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormVolcEngineTOSConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -34,14 +34,12 @@ const DeployNodeConfigFormVolcEngineTOSConfig = ({ const formSchema = z.object({ region: z - .string({ message: t("workflow_node.deploy.form.volcengine_tos_region.placeholder") }) + .string(t("workflow_node.deploy.form.volcengine_tos_region.placeholder")) .nonempty(t("workflow_node.deploy.form.volcengine_tos_region.placeholder")), bucket: z - .string({ message: t("workflow_node.deploy.form.volcengine_tos_bucket.placeholder") }) + .string(t("workflow_node.deploy.form.volcengine_tos_bucket.placeholder")) .nonempty(t("workflow_node.deploy.form.volcengine_tos_bucket.placeholder")), - domain: z - .string({ message: t("workflow_node.deploy.form.volcengine_tos_domain.placeholder") }) - .refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")), + domain: z.string(t("workflow_node.deploy.form.volcengine_tos_domain.placeholder")).refine((v) => validDomainName(v), t("common.errmsg.domain_invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormWangsuCDNConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormWangsuCDNConfig.tsx index 7650894e..8dbc6115 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormWangsuCDNConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormWangsuCDNConfig.tsx @@ -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 MultipleSplitValueInput from "@/components/MultipleSplitValueInput"; import { validDomainName } from "@/utils/validators"; diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormWangsuCDNProConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormWangsuCDNProConfig.tsx index e89e1e8d..282283ca 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormWangsuCDNProConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormWangsuCDNProConfig.tsx @@ -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 { validDomainName } from "@/utils/validators"; @@ -39,11 +39,9 @@ const DeployNodeConfigFormWangsuCDNProConfig = ({ const { t } = useTranslation(); const formSchema = z.object({ - resourceType: z.union([z.literal(ENVIRONMENT_PRODUCTION), z.literal(ENVIRONMENT_STAGING)], { - message: t("workflow_node.deploy.form.wangsu_cdnpro_environment.placeholder"), - }), + resourceType: z.literal([ENVIRONMENT_PRODUCTION, ENVIRONMENT_STAGING], t("workflow_node.deploy.form.wangsu_cdnpro_environment.placeholder")), domain: z - .string({ message: t("workflow_node.deploy.form.wangsu_cdnpro_domain.placeholder") }) + .string(t("workflow_node.deploy.form.wangsu_cdnpro_domain.placeholder")) .refine((v) => validDomainName(v, { allowWildcard: true }), t("common.errmsg.domain_invalid")), certificateId: z.string().nullish(), webhookId: z.string().nullish(), diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormWangsuCertificateConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormWangsuCertificateConfig.tsx index 739e4b28..84ee2c3b 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormWangsuCertificateConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormWangsuCertificateConfig.tsx @@ -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 DeployNodeConfigFormWangsuCertificateConfigFieldValues = Nullish<{ certificateId?: string; diff --git a/ui/src/components/workflow/node/DeployNodeConfigFormWebhookConfig.tsx b/ui/src/components/workflow/node/DeployNodeConfigFormWebhookConfig.tsx index 5dae40e8..9c7f0318 100644 --- a/ui/src/components/workflow/node/DeployNodeConfigFormWebhookConfig.tsx +++ b/ui/src/components/workflow/node/DeployNodeConfigFormWebhookConfig.tsx @@ -1,7 +1,7 @@ import { useTranslation } from "react-i18next"; import { Alert, Form, type FormInstance } from "antd"; import { createSchemaFieldRule } from "antd-zod"; -import { z } from "zod"; +import { z } from "zod/v4"; import CodeInput from "@/components/CodeInput"; diff --git a/ui/src/components/workflow/node/MonitorNodeConfigForm.tsx b/ui/src/components/workflow/node/MonitorNodeConfigForm.tsx index 92eef42e..9a8f6bc4 100644 --- a/ui/src/components/workflow/node/MonitorNodeConfigForm.tsx +++ b/ui/src/components/workflow/node/MonitorNodeConfigForm.tsx @@ -2,7 +2,7 @@ import { forwardRef, memo, useImperativeHandle } from "react"; import { useTranslation } from "react-i18next"; import { Alert, Form, type FormInstance, Input, InputNumber } from "antd"; import { createSchemaFieldRule } from "antd-zod"; -import { z } from "zod"; +import { z } from "zod/v4"; import { type WorkflowNodeConfigForMonitor, defaultNodeConfigForMonitor } from "@/domain/workflow"; import { useAntdForm } from "@/hooks"; diff --git a/ui/src/components/workflow/node/NotifyNodeConfigForm.tsx b/ui/src/components/workflow/node/NotifyNodeConfigForm.tsx index 09c6e02e..5b90bbfd 100644 --- a/ui/src/components/workflow/node/NotifyNodeConfigForm.tsx +++ b/ui/src/components/workflow/node/NotifyNodeConfigForm.tsx @@ -4,7 +4,7 @@ import { Link } from "react-router"; import { PlusOutlined as PlusOutlinedIcon, RightOutlined as RightOutlinedIcon } from "@ant-design/icons"; import { Button, Divider, Flex, Form, type FormInstance, Input, Select, Switch, 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"; @@ -61,17 +61,17 @@ const NotifyNodeConfigForm = forwardRef { const { t } = useTranslation(); - const formSchema = z - .object({ - trigger: z.string({ message: t("workflow_node.start.form.trigger.placeholder") }).min(1, t("workflow_node.start.form.trigger.placeholder")), - triggerCron: z.string().nullish(), - }) - .superRefine((data, ctx) => { - if (data.trigger !== WORKFLOW_TRIGGERS.AUTO) { - return; - } - - if (!validCronExpression(data.triggerCron!)) { - ctx.addIssue({ - code: z.ZodIssueCode.custom, - message: t("workflow_node.start.form.trigger_cron.errmsg.invalid"), - path: ["triggerCron"], - }); - } - }); + const formSchema = z.object({ + trigger: z.string(t("workflow_node.start.form.trigger.placeholder")).min(1, t("workflow_node.start.form.trigger.placeholder")), + triggerCron: z + .string() + .nullish() + .refine((v) => { + if (fieldTrigger !== WORKFLOW_TRIGGERS.AUTO) return true; + return validCronExpression(v!); + }, t("workflow_node.start.form.trigger_cron.errmsg.invalid")), + }); const formRule = createSchemaFieldRule(formSchema); const { form: formInst, formProps } = useAntdForm({ name: "workflowNodeStartConfigForm", diff --git a/ui/src/components/workflow/node/UploadNodeConfigForm.tsx b/ui/src/components/workflow/node/UploadNodeConfigForm.tsx index 27898401..810391a6 100644 --- a/ui/src/components/workflow/node/UploadNodeConfigForm.tsx +++ b/ui/src/components/workflow/node/UploadNodeConfigForm.tsx @@ -2,7 +2,7 @@ import { forwardRef, memo, useImperativeHandle } 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 { validateCertificate, validatePrivateKey } from "@/api/certificates"; import TextFileInput from "@/components/TextFileInput"; @@ -37,11 +37,11 @@ const UploadNodeConfigForm = forwardRef { const [notificationApi, NotificationContextHolder] = notification.useNotification(); const formSchema = z.object({ - username: z.string().email(t("login.username.errmsg.invalid")), + username: z.email(t("login.username.errmsg.invalid")), password: z.string().min(10, t("login.password.errmsg.invalid")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/pages/settings/SettingsAccount.tsx b/ui/src/pages/settings/SettingsAccount.tsx index 734e8bce..fccacd25 100644 --- a/ui/src/pages/settings/SettingsAccount.tsx +++ b/ui/src/pages/settings/SettingsAccount.tsx @@ -3,7 +3,7 @@ import { useTranslation } from "react-i18next"; import { useNavigate } from "react-router-dom"; import { Button, Form, Input, message, notification } from "antd"; import { createSchemaFieldRule } from "antd-zod"; -import { z } from "zod"; +import { z } from "zod/v4"; import { useAntdForm } from "@/hooks"; import { getAuthStore, save as saveAdmin } from "@/repository/admin"; @@ -18,7 +18,7 @@ const SettingsAccount = () => { const [notificationApi, NotificationContextHolder] = notification.useNotification(); const formSchema = z.object({ - username: z.string({ message: t("settings.account.form.email.placeholder") }).email({ message: t("common.errmsg.email_invalid") }), + username: z.email(t("common.errmsg.email_invalid")), }); const formRule = createSchemaFieldRule(formSchema); const { diff --git a/ui/src/pages/settings/SettingsPassword.tsx b/ui/src/pages/settings/SettingsPassword.tsx index de1cb5ef..7d9d5abb 100644 --- a/ui/src/pages/settings/SettingsPassword.tsx +++ b/ui/src/pages/settings/SettingsPassword.tsx @@ -3,7 +3,7 @@ import { useTranslation } from "react-i18next"; import { useNavigate } from "react-router-dom"; import { Button, Form, Input, message, notification } from "antd"; import { createSchemaFieldRule } from "antd-zod"; -import { z } from "zod"; +import { z } from "zod/v4"; import { useAntdForm } from "@/hooks"; import { authWithPassword, getAuthStore, save as saveAdmin } from "@/repository/admin"; @@ -18,10 +18,10 @@ const SettingsPassword = () => { const [notificationApi, NotificationContextHolder] = notification.useNotification(); const formSchema = z.object({ - oldPassword: z.string({ message: t("settings.password.form.old_password.placeholder") }).min(10, t("settings.password.form.password.errmsg.invalid")), - newPassword: z.string({ message: t("settings.password.form.new_password.placeholder") }).min(10, t("settings.password.form.password.errmsg.invalid")), + oldPassword: z.string(t("settings.password.form.old_password.placeholder")).min(10, t("settings.password.form.password.errmsg.invalid")), + newPassword: z.string(t("settings.password.form.new_password.placeholder")).min(10, t("settings.password.form.password.errmsg.invalid")), confirmPassword: z - .string({ message: t("settings.password.form.confirm_password.placeholder") }) + .string(t("settings.password.form.confirm_password.placeholder")) .min(10, t("settings.password.form.password.errmsg.invalid")) .refine((v) => v === formInst.getFieldValue("newPassword"), t("settings.password.form.password.errmsg.not_matched")), }); diff --git a/ui/src/pages/settings/SettingsPersistence.tsx b/ui/src/pages/settings/SettingsPersistence.tsx index e75ed8a3..fa68ea50 100644 --- a/ui/src/pages/settings/SettingsPersistence.tsx +++ b/ui/src/pages/settings/SettingsPersistence.tsx @@ -3,7 +3,7 @@ import { useTranslation } from "react-i18next"; import { Button, Form, InputNumber, Skeleton, message, notification } from "antd"; import { createSchemaFieldRule } from "antd-zod"; import { produce } from "immer"; -import { z } from "zod"; +import { z } from "zod/v4"; import Show from "@/components/Show"; import { type PersistenceSettingsContent, SETTINGS_NAMES, type SettingsModel } from "@/domain/settings"; @@ -34,10 +34,10 @@ const SettingsPersistence = () => { const formSchema = z.object({ workflowRunsMaxDaysRetention: z - .number({ message: t("settings.persistence.form.workflow_runs_max_days.placeholder") }) + .number(t("settings.persistence.form.workflow_runs_max_days.placeholder")) .gte(0, t("settings.persistence.form.workflow_runs_max_days.placeholder")), expiredCertificatesMaxDaysRetention: z - .number({ message: t("settings.persistence.form.expired_certificates_max_days.placeholder") }) + .number(t("settings.persistence.form.expired_certificates_max_days.placeholder")) .gte(0, t("settings.persistence.form.expired_certificates_max_days.placeholder")), }); const formRule = createSchemaFieldRule(formSchema); diff --git a/ui/src/pages/settings/SettingsSSLProvider.tsx b/ui/src/pages/settings/SettingsSSLProvider.tsx index 2be6162f..02be893d 100644 --- a/ui/src/pages/settings/SettingsSSLProvider.tsx +++ b/ui/src/pages/settings/SettingsSSLProvider.tsx @@ -4,7 +4,7 @@ import { CheckCard } from "@ant-design/pro-components"; import { Alert, Button, Form, Input, Skeleton, message, notification } from "antd"; import { createSchemaFieldRule } from "antd-zod"; import { produce } from "immer"; -import { z } from "zod"; +import { z } from "zod/v4"; import Show from "@/components/Show"; import { type CAProviderType, CA_PROVIDERS } from "@/domain/provider"; @@ -155,11 +155,11 @@ const SSLProviderEditFormGoogleTrustServicesConfig = () => { const formSchema = z.object({ eabKid: z - .string({ message: t("settings.sslprovider.form.googletrustservices_eab_kid.placeholder") }) + .string(t("settings.sslprovider.form.googletrustservices_eab_kid.placeholder")) .min(1, t("settings.sslprovider.form.googletrustservices_eab_kid.placeholder")) .max(256, t("common.errmsg.string_max", { max: 256 })), eabHmacKey: z - .string({ message: t("settings.sslprovider.form.googletrustservices_eab_hmac_key.placeholder") }) + .string(t("settings.sslprovider.form.googletrustservices_eab_hmac_key.placeholder")) .min(1, t("settings.sslprovider.form.googletrustservices_eab_hmac_key.placeholder")) .max(256, t("common.errmsg.string_max", { max: 256 })), }); @@ -225,11 +225,11 @@ const SSLProviderEditFormSSLComConfig = () => { const formSchema = z.object({ eabKid: z - .string({ message: t("settings.sslprovider.form.sslcom_eab_kid.placeholder") }) + .string(t("settings.sslprovider.form.sslcom_eab_kid.placeholder")) .min(1, t("settings.sslprovider.form.sslcom_eab_kid.placeholder")) .max(256, t("common.errmsg.string_max", { max: 256 })), eabHmacKey: z - .string({ message: t("settings.sslprovider.form.sslcom_eab_hmac_key.placeholder") }) + .string(t("settings.sslprovider.form.sslcom_eab_hmac_key.placeholder")) .min(1, t("settings.sslprovider.form.sslcom_eab_hmac_key.placeholder")) .max(256, t("common.errmsg.string_max", { max: 256 })), }); @@ -295,11 +295,11 @@ const SSLProviderEditFormZeroSSLConfig = () => { const formSchema = z.object({ eabKid: z - .string({ message: t("settings.sslprovider.form.zerossl_eab_kid.placeholder") }) + .string(t("settings.sslprovider.form.zerossl_eab_kid.placeholder")) .min(1, t("settings.sslprovider.form.zerossl_eab_kid.placeholder")) .max(256, t("common.errmsg.string_max", { max: 256 })), eabHmacKey: z - .string({ message: t("settings.sslprovider.form.zerossl_eab_hmac_key.placeholder") }) + .string(t("settings.sslprovider.form.zerossl_eab_hmac_key.placeholder")) .min(1, t("settings.sslprovider.form.zerossl_eab_hmac_key.placeholder")) .max(256, t("common.errmsg.string_max", { max: 256 })), }); diff --git a/ui/src/pages/workflows/WorkflowDetail.tsx b/ui/src/pages/workflows/WorkflowDetail.tsx index 549bc311..1ca2d5a7 100644 --- a/ui/src/pages/workflows/WorkflowDetail.tsx +++ b/ui/src/pages/workflows/WorkflowDetail.tsx @@ -14,7 +14,7 @@ import { PageHeader } from "@ant-design/pro-components"; import { Alert, Button, Card, Dropdown, Form, Input, Modal, Space, Tabs, Typography, message, notification } from "antd"; import { createSchemaFieldRule } from "antd-zod"; import { isEqual } from "radash"; -import { z } from "zod"; +import { z } from "zod/v4"; import { startRun as startWorkflowRun } from "@/api/workflows"; import ModalForm from "@/components/ModalForm"; @@ -333,11 +333,11 @@ const WorkflowBaseInfoModal = ({ trigger }: { trigger?: React.ReactNode }) => { const formSchema = z.object({ name: z - .string({ message: t("workflow.detail.baseinfo.form.name.placeholder") }) + .string(t("workflow.detail.baseinfo.form.name.placeholder")) .min(1, t("workflow.detail.baseinfo.form.name.placeholder")) .max(64, t("common.errmsg.string_max", { max: 64 })), description: z - .string({ message: t("workflow.detail.baseinfo.form.description.placeholder") }) + .string(t("workflow.detail.baseinfo.form.description.placeholder")) .max(256, t("common.errmsg.string_max", { max: 256 })) .nullish(), }); diff --git a/ui/src/pages/workflows/WorkflowNew.tsx b/ui/src/pages/workflows/WorkflowNew.tsx index 1da27939..f0ec81ef 100644 --- a/ui/src/pages/workflows/WorkflowNew.tsx +++ b/ui/src/pages/workflows/WorkflowNew.tsx @@ -4,7 +4,7 @@ import { useNavigate } from "react-router-dom"; import { PageHeader } from "@ant-design/pro-components"; import { Card, Col, Form, Input, type InputRef, Row, Spin, Typography, notification } from "antd"; import { createSchemaFieldRule } from "antd-zod"; -import { z } from "zod"; +import { z } from "zod/v4"; import ModalForm from "@/components/ModalForm"; import { type WorkflowModel, initWorkflow } from "@/domain/workflow"; @@ -35,11 +35,11 @@ const WorkflowNew = () => { const formSchema = z.object({ name: z - .string({ message: t("workflow.new.modal.form.name.placeholder") }) + .string(t("workflow.new.modal.form.name.placeholder")) .min(1, t("workflow.new.modal.form.name.placeholder")) .max(64, t("common.errmsg.string_max", { max: 64 })), description: z - .string({ message: t("workflow.new.modal.form.description.placeholder") }) + .string(t("workflow.new.modal.form.description.placeholder")) .max(256, t("common.errmsg.string_max", { max: 256 })) .nullish(), }); diff --git a/ui/src/utils/validators.ts b/ui/src/utils/validators.ts index c170ce40..92aacbd4 100644 --- a/ui/src/utils/validators.ts +++ b/ui/src/utils/validators.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import { z } from "zod/v4"; import { validCronExpression as _validCronExpression } from "./cron"; @@ -13,7 +13,7 @@ export const validDomainName = (value: string, { allowWildcard = false }: { allo export const validEmailAddress = (value: string) => { try { - z.string().email().parse(value); + z.email().parse(value); return true; } catch (_) { return false; @@ -22,7 +22,7 @@ export const validEmailAddress = (value: string) => { export const validIPv4Address = (value: string) => { try { - z.string().ip({ version: "v4" }).parse(value); + z.ipv4().parse(value); return true; } catch (_) { return false; @@ -31,7 +31,7 @@ export const validIPv4Address = (value: string) => { export const validIPv6Address = (value: string) => { try { - z.string().ip({ version: "v6" }).parse(value); + z.ipv6().parse(value); return true; } catch (_) { return false;