From 89fd7193ac01563b1d354a62d183d100511d0ffb Mon Sep 17 00:00:00 2001 From: javayhu Date: Sun, 3 Aug 2025 00:32:44 +0800 Subject: [PATCH] feat: upgrade to zod v4 & fix z.url() and z.email() https://zod.dev/v4/changelog?id=zstring-updates --- src/actions/check-newsletter-status.ts | 2 +- src/actions/send-message.ts | 2 +- src/actions/subscribe-newsletter.ts | 2 +- src/actions/unsubscribe-newsletter.ts | 2 +- src/ai/text/components/url-input-form.tsx | 2 +- src/components/auth/forgot-password-form.tsx | 2 +- src/components/auth/login-form.tsx | 2 +- src/components/auth/register-form.tsx | 2 +- src/components/contact/contact-form-card.tsx | 2 +- src/components/newsletter/newsletter-form.tsx | 2 +- src/components/waitlist/waitlist-form-card.tsx | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/actions/check-newsletter-status.ts b/src/actions/check-newsletter-status.ts index 2daca00..249e4e1 100644 --- a/src/actions/check-newsletter-status.ts +++ b/src/actions/check-newsletter-status.ts @@ -9,7 +9,7 @@ const actionClient = createSafeActionClient(); // Newsletter schema for validation const newsletterSchema = z.object({ - email: z.string().email({ message: 'Please enter a valid email address' }), + email: z.email({ message: 'Please enter a valid email address' }), }); // Create a safe action to check if a user is subscribed to the newsletter diff --git a/src/actions/send-message.ts b/src/actions/send-message.ts index dc9bf46..5bc5e79 100644 --- a/src/actions/send-message.ts +++ b/src/actions/send-message.ts @@ -19,7 +19,7 @@ const contactFormSchema = z.object({ .string() .min(3, { message: 'Name must be at least 3 characters' }) .max(30, { message: 'Name must not exceed 30 characters' }), - email: z.string().email({ message: 'Please enter a valid email address' }), + email: z.email({ message: 'Please enter a valid email address' }), message: z .string() .min(10, { message: 'Message must be at least 10 characters' }) diff --git a/src/actions/subscribe-newsletter.ts b/src/actions/subscribe-newsletter.ts index 3d7018a..eb88022 100644 --- a/src/actions/subscribe-newsletter.ts +++ b/src/actions/subscribe-newsletter.ts @@ -11,7 +11,7 @@ const actionClient = createSafeActionClient(); // Newsletter schema for validation const newsletterSchema = z.object({ - email: z.string().email({ message: 'Please enter a valid email address' }), + email: z.email({ message: 'Please enter a valid email address' }), }); // Create a safe action for newsletter subscription diff --git a/src/actions/unsubscribe-newsletter.ts b/src/actions/unsubscribe-newsletter.ts index 332623a..d0759a9 100644 --- a/src/actions/unsubscribe-newsletter.ts +++ b/src/actions/unsubscribe-newsletter.ts @@ -10,7 +10,7 @@ const actionClient = createSafeActionClient(); // Newsletter schema for validation const newsletterSchema = z.object({ - email: z.string().email({ message: 'Please enter a valid email address' }), + email: z.email({ message: 'Please enter a valid email address' }), }); // Create a safe action for newsletter unsubscription diff --git a/src/ai/text/components/url-input-form.tsx b/src/ai/text/components/url-input-form.tsx index 4592d5d..208b436 100644 --- a/src/ai/text/components/url-input-form.tsx +++ b/src/ai/text/components/url-input-form.tsx @@ -40,7 +40,7 @@ import { useDebounce } from '../utils/performance'; // Form schema for URL input const urlFormSchema = z.object({ - url: z.string().url().optional(), // Allow empty string for initial state + url: z.url().optional(), // Allow empty string for initial state }); type UrlFormData = z.infer; diff --git a/src/components/auth/forgot-password-form.tsx b/src/components/auth/forgot-password-form.tsx index ed4c93f..66f6758 100644 --- a/src/components/auth/forgot-password-form.tsx +++ b/src/components/auth/forgot-password-form.tsx @@ -32,7 +32,7 @@ export const ForgotPasswordForm = ({ className }: { className?: string }) => { const searchParams = useSearchParams(); const ForgotPasswordSchema = z.object({ - email: z.string().email({ + email: z.email({ message: t('emailRequired'), }), }); diff --git a/src/components/auth/login-form.tsx b/src/components/auth/login-form.tsx index 4f29a7c..60145a0 100644 --- a/src/components/auth/login-form.tsx +++ b/src/components/auth/login-form.tsx @@ -69,7 +69,7 @@ export const LoginForm = ({ : z.string().optional(); const LoginSchema = z.object({ - email: z.string().email({ + email: z.email({ message: t('emailRequired'), }), password: z.string().min(1, { diff --git a/src/components/auth/register-form.tsx b/src/components/auth/register-form.tsx index 9ed63b7..ea0dbba 100644 --- a/src/components/auth/register-form.tsx +++ b/src/components/auth/register-form.tsx @@ -64,7 +64,7 @@ export const RegisterForm = ({ : z.string().optional(); const RegisterSchema = z.object({ - email: z.string().email({ + email: z.email({ message: t('emailRequired'), }), password: z.string().min(1, { diff --git a/src/components/contact/contact-form-card.tsx b/src/components/contact/contact-form-card.tsx index b084d62..2914884 100644 --- a/src/components/contact/contact-form-card.tsx +++ b/src/components/contact/contact-form-card.tsx @@ -40,7 +40,7 @@ export function ContactFormCard() { // Create a schema for contact form validation const formSchema = z.object({ name: z.string().min(3, t('nameMinLength')).max(30, t('nameMaxLength')), - email: z.string().email(t('emailValidation')), + email: z.email(t('emailValidation')), message: z .string() .min(10, t('messageMinLength')) diff --git a/src/components/newsletter/newsletter-form.tsx b/src/components/newsletter/newsletter-form.tsx index 489cf8c..0dbc6fe 100644 --- a/src/components/newsletter/newsletter-form.tsx +++ b/src/components/newsletter/newsletter-form.tsx @@ -29,7 +29,7 @@ export function NewsletterForm() { // newsletter schema const NewsletterFormSchema = z.object({ - email: z.string().email({ + email: z.email({ message: t('emailValidation'), }), }); diff --git a/src/components/waitlist/waitlist-form-card.tsx b/src/components/waitlist/waitlist-form-card.tsx index 36fd911..ea0d1b9 100644 --- a/src/components/waitlist/waitlist-form-card.tsx +++ b/src/components/waitlist/waitlist-form-card.tsx @@ -38,7 +38,7 @@ export function WaitlistFormCard() { // Create a schema for waitlist form validation const formSchema = z.object({ - email: z.string().email({ message: t('emailValidation') }), + email: z.email({ message: t('emailValidation') }), }); // Initialize the form