diff --git a/lib/validations/availability.ts b/lib/validations/availability.ts index b9ecf2fe20..d5fc7bbc25 100644 --- a/lib/validations/availability.ts +++ b/lib/validations/availability.ts @@ -55,7 +55,7 @@ const schemaAvailability = z // metadata: z.object({}).optional(), // verified: z.boolean().default(false), }) - .strict(); // Adding strict so that we can disallow passing in extra fields + .strict(); const withValidAvailability = withValidation({ schema: schemaAvailability, type: "Zod", diff --git a/lib/validations/booking-reference.ts b/lib/validations/booking-reference.ts index fb50c9c9ad..3a7298b9ac 100644 --- a/lib/validations/booking-reference.ts +++ b/lib/validations/booking-reference.ts @@ -1,65 +1,13 @@ import { withValidation } from "next-validations"; import { z } from "zod"; -const schemaBooking = z - .object({ - uid: z.string().min(3), - title: z.string().min(3), - description: z.string().min(3).optional(), - startTime: z.date().or(z.string()), - endTime: z.date(), - location: z.string().min(3).optional(), - createdAt: z.date().or(z.string()), - updatedAt: z.date(), - confirmed: z.boolean().default(true), - rejected: z.boolean().default(false), - paid: z.boolean().default(false), - - // bufferTime: z.number().default(0), - // // attendees: z.array((schemaSchedule)).optional(), - - // startTime: z.string().min(3), - // endTime: z.string().min(3), - // email: z.string().email(), // max is a full day. - // emailVerified: z.date().optional(), - // password: z.string().optional(), - // bio: z.string().min(3).optional(), - // avatar: z.string().optional(), - // timeZone: z.string().default("Europe/London"), - // weekStart: z.string().default("Sunday"), - // bufferTime: z.number().default(0), - // theme: z.string().optional(), - // trialEndsAt: z.date().optional(), - // eventTypes: z.array((schemaEventType)).optional(), - // // credentials: z.array((schemaCredentials)).optional(), - // // teams: z.array((schemaMembership)).optional(), - // // bookings: z.array((schemaBooking)).optional(), - // // schedules: z.array((schemaSchedule)).optional(), - // defaultScheduleId: z.number().optional(), - // // selectedCalendars: z.array((schemaSelectedCalendar)).optional(), - // completedOnboarding: z.boolean().default(false), - // locale: z.string().optional(), - // timeFormat: z.number().optional().default(12), - // twoFactorEnabled: z.boolean().default(false), - // twoFactorSecret: z.string().optional(), - // identityProvider: z.enum(["CAL", "SAML", "GOOGLE"]).optional().default("CAL"), - // identityProviderId: z.string().optional(), - // // availavility: z.array((schemaAvailavility)).optional(), - // invitedTo: z.number().optional(), - // plan: z.enum(['FREE', 'TRIAL', 'PRO']).default("TRIAL"), - // // webhooks: z.array((schemaWebhook)).optional(), - // brandColor: z.string().default("#292929"), - // darkBrandColor: z.string().default("#fafafa"), - // // destinationCalendar: z.instanceof(schemaEventType).optional(), // FIXME: instanceof doesnt work here - // away: z.boolean().default(false), - // metadata: z.object({}).optional(), - // verified: z.boolean().default(false), - }) - .strict(); // Adding strict so that we can disallow passing in extra fields -const withValidBooking = withValidation({ - schema: schemaBooking, +const schemaBookingReference = z + .object({}) + .strict(); +const withValidBookingReference = withValidation({ + schema: schemaBookingReference, type: "Zod", mode: "body", }); -export { schemaBooking, withValidBooking }; +export { schemaBookingReference, withValidBookingReference }; diff --git a/lib/validations/booking.ts b/lib/validations/booking.ts index fb50c9c9ad..3959ad9b24 100644 --- a/lib/validations/booking.ts +++ b/lib/validations/booking.ts @@ -14,48 +14,8 @@ const schemaBooking = z confirmed: z.boolean().default(true), rejected: z.boolean().default(false), paid: z.boolean().default(false), - - // bufferTime: z.number().default(0), - // // attendees: z.array((schemaSchedule)).optional(), - - // startTime: z.string().min(3), - // endTime: z.string().min(3), - // email: z.string().email(), // max is a full day. - // emailVerified: z.date().optional(), - // password: z.string().optional(), - // bio: z.string().min(3).optional(), - // avatar: z.string().optional(), - // timeZone: z.string().default("Europe/London"), - // weekStart: z.string().default("Sunday"), - // bufferTime: z.number().default(0), - // theme: z.string().optional(), - // trialEndsAt: z.date().optional(), - // eventTypes: z.array((schemaEventType)).optional(), - // // credentials: z.array((schemaCredentials)).optional(), - // // teams: z.array((schemaMembership)).optional(), - // // bookings: z.array((schemaBooking)).optional(), - // // schedules: z.array((schemaSchedule)).optional(), - // defaultScheduleId: z.number().optional(), - // // selectedCalendars: z.array((schemaSelectedCalendar)).optional(), - // completedOnboarding: z.boolean().default(false), - // locale: z.string().optional(), - // timeFormat: z.number().optional().default(12), - // twoFactorEnabled: z.boolean().default(false), - // twoFactorSecret: z.string().optional(), - // identityProvider: z.enum(["CAL", "SAML", "GOOGLE"]).optional().default("CAL"), - // identityProviderId: z.string().optional(), - // // availavility: z.array((schemaAvailavility)).optional(), - // invitedTo: z.number().optional(), - // plan: z.enum(['FREE', 'TRIAL', 'PRO']).default("TRIAL"), - // // webhooks: z.array((schemaWebhook)).optional(), - // brandColor: z.string().default("#292929"), - // darkBrandColor: z.string().default("#fafafa"), - // // destinationCalendar: z.instanceof(schemaEventType).optional(), // FIXME: instanceof doesnt work here - // away: z.boolean().default(false), - // metadata: z.object({}).optional(), - // verified: z.boolean().default(false), }) - .strict(); // Adding strict so that we can disallow passing in extra fields + .strict(); const withValidBooking = withValidation({ schema: schemaBooking, type: "Zod", diff --git a/lib/validations/credential.ts b/lib/validations/credential.ts index fb50c9c9ad..b0b142bfd3 100644 --- a/lib/validations/credential.ts +++ b/lib/validations/credential.ts @@ -1,65 +1,13 @@ import { withValidation } from "next-validations"; import { z } from "zod"; -const schemaBooking = z - .object({ - uid: z.string().min(3), - title: z.string().min(3), - description: z.string().min(3).optional(), - startTime: z.date().or(z.string()), - endTime: z.date(), - location: z.string().min(3).optional(), - createdAt: z.date().or(z.string()), - updatedAt: z.date(), - confirmed: z.boolean().default(true), - rejected: z.boolean().default(false), - paid: z.boolean().default(false), - - // bufferTime: z.number().default(0), - // // attendees: z.array((schemaSchedule)).optional(), - - // startTime: z.string().min(3), - // endTime: z.string().min(3), - // email: z.string().email(), // max is a full day. - // emailVerified: z.date().optional(), - // password: z.string().optional(), - // bio: z.string().min(3).optional(), - // avatar: z.string().optional(), - // timeZone: z.string().default("Europe/London"), - // weekStart: z.string().default("Sunday"), - // bufferTime: z.number().default(0), - // theme: z.string().optional(), - // trialEndsAt: z.date().optional(), - // eventTypes: z.array((schemaEventType)).optional(), - // // credentials: z.array((schemaCredentials)).optional(), - // // teams: z.array((schemaMembership)).optional(), - // // bookings: z.array((schemaBooking)).optional(), - // // schedules: z.array((schemaSchedule)).optional(), - // defaultScheduleId: z.number().optional(), - // // selectedCalendars: z.array((schemaSelectedCalendar)).optional(), - // completedOnboarding: z.boolean().default(false), - // locale: z.string().optional(), - // timeFormat: z.number().optional().default(12), - // twoFactorEnabled: z.boolean().default(false), - // twoFactorSecret: z.string().optional(), - // identityProvider: z.enum(["CAL", "SAML", "GOOGLE"]).optional().default("CAL"), - // identityProviderId: z.string().optional(), - // // availavility: z.array((schemaAvailavility)).optional(), - // invitedTo: z.number().optional(), - // plan: z.enum(['FREE', 'TRIAL', 'PRO']).default("TRIAL"), - // // webhooks: z.array((schemaWebhook)).optional(), - // brandColor: z.string().default("#292929"), - // darkBrandColor: z.string().default("#fafafa"), - // // destinationCalendar: z.instanceof(schemaEventType).optional(), // FIXME: instanceof doesnt work here - // away: z.boolean().default(false), - // metadata: z.object({}).optional(), - // verified: z.boolean().default(false), - }) - .strict(); // Adding strict so that we can disallow passing in extra fields -const withValidBooking = withValidation({ - schema: schemaBooking, +const schemaCredential = z + .object({}) + .strict(); +const withValidCredential = withValidation({ + schema: schemaCredential, type: "Zod", mode: "body", }); -export { schemaBooking, withValidBooking }; +export { schemaCredential, withValidCredential }; diff --git a/lib/validations/daily-event-reference.ts b/lib/validations/daily-event-reference.ts index fb50c9c9ad..48a8a93e62 100644 --- a/lib/validations/daily-event-reference.ts +++ b/lib/validations/daily-event-reference.ts @@ -1,65 +1,13 @@ import { withValidation } from "next-validations"; import { z } from "zod"; -const schemaBooking = z - .object({ - uid: z.string().min(3), - title: z.string().min(3), - description: z.string().min(3).optional(), - startTime: z.date().or(z.string()), - endTime: z.date(), - location: z.string().min(3).optional(), - createdAt: z.date().or(z.string()), - updatedAt: z.date(), - confirmed: z.boolean().default(true), - rejected: z.boolean().default(false), - paid: z.boolean().default(false), - - // bufferTime: z.number().default(0), - // // attendees: z.array((schemaSchedule)).optional(), - - // startTime: z.string().min(3), - // endTime: z.string().min(3), - // email: z.string().email(), // max is a full day. - // emailVerified: z.date().optional(), - // password: z.string().optional(), - // bio: z.string().min(3).optional(), - // avatar: z.string().optional(), - // timeZone: z.string().default("Europe/London"), - // weekStart: z.string().default("Sunday"), - // bufferTime: z.number().default(0), - // theme: z.string().optional(), - // trialEndsAt: z.date().optional(), - // eventTypes: z.array((schemaEventType)).optional(), - // // credentials: z.array((schemaCredentials)).optional(), - // // teams: z.array((schemaMembership)).optional(), - // // bookings: z.array((schemaBooking)).optional(), - // // schedules: z.array((schemaSchedule)).optional(), - // defaultScheduleId: z.number().optional(), - // // selectedCalendars: z.array((schemaSelectedCalendar)).optional(), - // completedOnboarding: z.boolean().default(false), - // locale: z.string().optional(), - // timeFormat: z.number().optional().default(12), - // twoFactorEnabled: z.boolean().default(false), - // twoFactorSecret: z.string().optional(), - // identityProvider: z.enum(["CAL", "SAML", "GOOGLE"]).optional().default("CAL"), - // identityProviderId: z.string().optional(), - // // availavility: z.array((schemaAvailavility)).optional(), - // invitedTo: z.number().optional(), - // plan: z.enum(['FREE', 'TRIAL', 'PRO']).default("TRIAL"), - // // webhooks: z.array((schemaWebhook)).optional(), - // brandColor: z.string().default("#292929"), - // darkBrandColor: z.string().default("#fafafa"), - // // destinationCalendar: z.instanceof(schemaEventType).optional(), // FIXME: instanceof doesnt work here - // away: z.boolean().default(false), - // metadata: z.object({}).optional(), - // verified: z.boolean().default(false), - }) - .strict(); // Adding strict so that we can disallow passing in extra fields -const withValidBooking = withValidation({ - schema: schemaBooking, +const schemaDailyEventReference = z + .object({}) + .strict(); +const withValidDailyEventReference = withValidation({ + schema: schemaDailyEventReference, type: "Zod", mode: "body", }); -export { schemaBooking, withValidBooking }; +export { schemaDailyEventReference, withValidDailyEventReference }; diff --git a/lib/validations/destination-calendar.ts b/lib/validations/destination-calendar.ts index fb50c9c9ad..34fa856897 100644 --- a/lib/validations/destination-calendar.ts +++ b/lib/validations/destination-calendar.ts @@ -1,65 +1,13 @@ import { withValidation } from "next-validations"; import { z } from "zod"; -const schemaBooking = z - .object({ - uid: z.string().min(3), - title: z.string().min(3), - description: z.string().min(3).optional(), - startTime: z.date().or(z.string()), - endTime: z.date(), - location: z.string().min(3).optional(), - createdAt: z.date().or(z.string()), - updatedAt: z.date(), - confirmed: z.boolean().default(true), - rejected: z.boolean().default(false), - paid: z.boolean().default(false), - - // bufferTime: z.number().default(0), - // // attendees: z.array((schemaSchedule)).optional(), - - // startTime: z.string().min(3), - // endTime: z.string().min(3), - // email: z.string().email(), // max is a full day. - // emailVerified: z.date().optional(), - // password: z.string().optional(), - // bio: z.string().min(3).optional(), - // avatar: z.string().optional(), - // timeZone: z.string().default("Europe/London"), - // weekStart: z.string().default("Sunday"), - // bufferTime: z.number().default(0), - // theme: z.string().optional(), - // trialEndsAt: z.date().optional(), - // eventTypes: z.array((schemaEventType)).optional(), - // // credentials: z.array((schemaCredentials)).optional(), - // // teams: z.array((schemaMembership)).optional(), - // // bookings: z.array((schemaBooking)).optional(), - // // schedules: z.array((schemaSchedule)).optional(), - // defaultScheduleId: z.number().optional(), - // // selectedCalendars: z.array((schemaSelectedCalendar)).optional(), - // completedOnboarding: z.boolean().default(false), - // locale: z.string().optional(), - // timeFormat: z.number().optional().default(12), - // twoFactorEnabled: z.boolean().default(false), - // twoFactorSecret: z.string().optional(), - // identityProvider: z.enum(["CAL", "SAML", "GOOGLE"]).optional().default("CAL"), - // identityProviderId: z.string().optional(), - // // availavility: z.array((schemaAvailavility)).optional(), - // invitedTo: z.number().optional(), - // plan: z.enum(['FREE', 'TRIAL', 'PRO']).default("TRIAL"), - // // webhooks: z.array((schemaWebhook)).optional(), - // brandColor: z.string().default("#292929"), - // darkBrandColor: z.string().default("#fafafa"), - // // destinationCalendar: z.instanceof(schemaEventType).optional(), // FIXME: instanceof doesnt work here - // away: z.boolean().default(false), - // metadata: z.object({}).optional(), - // verified: z.boolean().default(false), - }) - .strict(); // Adding strict so that we can disallow passing in extra fields -const withValidBooking = withValidation({ - schema: schemaBooking, +const schemaDestinationCalendar = z + .object({}) + .strict(); +const withValidDestinationCalendar = withValidation({ + schema: schemaDestinationCalendar, type: "Zod", mode: "body", }); -export { schemaBooking, withValidBooking }; +export { schemaDestinationCalendar, withValidDestinationCalendar }; diff --git a/lib/validations/eventType.ts b/lib/validations/eventType.ts index d9be43a1e2..34764a21ee 100644 --- a/lib/validations/eventType.ts +++ b/lib/validations/eventType.ts @@ -8,7 +8,7 @@ const schemaEventType = z length: z.number().min(1).max(1440), // max is a full day. description: z.string().min(3).optional(), }) - .strict(); // Adding strict so that we can disallow passing in extra fields + .strict(); const withValidEventType = withValidation({ schema: schemaEventType, type: "Zod", diff --git a/lib/validations/membership.ts b/lib/validations/membership.ts index fb50c9c9ad..4959dafb8a 100644 --- a/lib/validations/membership.ts +++ b/lib/validations/membership.ts @@ -1,65 +1,13 @@ import { withValidation } from "next-validations"; import { z } from "zod"; -const schemaBooking = z - .object({ - uid: z.string().min(3), - title: z.string().min(3), - description: z.string().min(3).optional(), - startTime: z.date().or(z.string()), - endTime: z.date(), - location: z.string().min(3).optional(), - createdAt: z.date().or(z.string()), - updatedAt: z.date(), - confirmed: z.boolean().default(true), - rejected: z.boolean().default(false), - paid: z.boolean().default(false), - - // bufferTime: z.number().default(0), - // // attendees: z.array((schemaSchedule)).optional(), - - // startTime: z.string().min(3), - // endTime: z.string().min(3), - // email: z.string().email(), // max is a full day. - // emailVerified: z.date().optional(), - // password: z.string().optional(), - // bio: z.string().min(3).optional(), - // avatar: z.string().optional(), - // timeZone: z.string().default("Europe/London"), - // weekStart: z.string().default("Sunday"), - // bufferTime: z.number().default(0), - // theme: z.string().optional(), - // trialEndsAt: z.date().optional(), - // eventTypes: z.array((schemaEventType)).optional(), - // // credentials: z.array((schemaCredentials)).optional(), - // // teams: z.array((schemaMembership)).optional(), - // // bookings: z.array((schemaBooking)).optional(), - // // schedules: z.array((schemaSchedule)).optional(), - // defaultScheduleId: z.number().optional(), - // // selectedCalendars: z.array((schemaSelectedCalendar)).optional(), - // completedOnboarding: z.boolean().default(false), - // locale: z.string().optional(), - // timeFormat: z.number().optional().default(12), - // twoFactorEnabled: z.boolean().default(false), - // twoFactorSecret: z.string().optional(), - // identityProvider: z.enum(["CAL", "SAML", "GOOGLE"]).optional().default("CAL"), - // identityProviderId: z.string().optional(), - // // availavility: z.array((schemaAvailavility)).optional(), - // invitedTo: z.number().optional(), - // plan: z.enum(['FREE', 'TRIAL', 'PRO']).default("TRIAL"), - // // webhooks: z.array((schemaWebhook)).optional(), - // brandColor: z.string().default("#292929"), - // darkBrandColor: z.string().default("#fafafa"), - // // destinationCalendar: z.instanceof(schemaEventType).optional(), // FIXME: instanceof doesnt work here - // away: z.boolean().default(false), - // metadata: z.object({}).optional(), - // verified: z.boolean().default(false), - }) +const schemaMembership = z + .object({}) .strict(); // Adding strict so that we can disallow passing in extra fields -const withValidBooking = withValidation({ - schema: schemaBooking, +const withValidMembership = withValidation({ + schema: schemaMembership, type: "Zod", mode: "body", }); -export { schemaBooking, withValidBooking }; +export { schemaMembership, withValidMembership }; diff --git a/lib/validations/payment.ts b/lib/validations/payment.ts index fb50c9c9ad..b9f019fe0d 100644 --- a/lib/validations/payment.ts +++ b/lib/validations/payment.ts @@ -1,65 +1,13 @@ import { withValidation } from "next-validations"; import { z } from "zod"; -const schemaBooking = z - .object({ - uid: z.string().min(3), - title: z.string().min(3), - description: z.string().min(3).optional(), - startTime: z.date().or(z.string()), - endTime: z.date(), - location: z.string().min(3).optional(), - createdAt: z.date().or(z.string()), - updatedAt: z.date(), - confirmed: z.boolean().default(true), - rejected: z.boolean().default(false), - paid: z.boolean().default(false), - - // bufferTime: z.number().default(0), - // // attendees: z.array((schemaSchedule)).optional(), - - // startTime: z.string().min(3), - // endTime: z.string().min(3), - // email: z.string().email(), // max is a full day. - // emailVerified: z.date().optional(), - // password: z.string().optional(), - // bio: z.string().min(3).optional(), - // avatar: z.string().optional(), - // timeZone: z.string().default("Europe/London"), - // weekStart: z.string().default("Sunday"), - // bufferTime: z.number().default(0), - // theme: z.string().optional(), - // trialEndsAt: z.date().optional(), - // eventTypes: z.array((schemaEventType)).optional(), - // // credentials: z.array((schemaCredentials)).optional(), - // // teams: z.array((schemaMembership)).optional(), - // // bookings: z.array((schemaBooking)).optional(), - // // schedules: z.array((schemaSchedule)).optional(), - // defaultScheduleId: z.number().optional(), - // // selectedCalendars: z.array((schemaSelectedCalendar)).optional(), - // completedOnboarding: z.boolean().default(false), - // locale: z.string().optional(), - // timeFormat: z.number().optional().default(12), - // twoFactorEnabled: z.boolean().default(false), - // twoFactorSecret: z.string().optional(), - // identityProvider: z.enum(["CAL", "SAML", "GOOGLE"]).optional().default("CAL"), - // identityProviderId: z.string().optional(), - // // availavility: z.array((schemaAvailavility)).optional(), - // invitedTo: z.number().optional(), - // plan: z.enum(['FREE', 'TRIAL', 'PRO']).default("TRIAL"), - // // webhooks: z.array((schemaWebhook)).optional(), - // brandColor: z.string().default("#292929"), - // darkBrandColor: z.string().default("#fafafa"), - // // destinationCalendar: z.instanceof(schemaEventType).optional(), // FIXME: instanceof doesnt work here - // away: z.boolean().default(false), - // metadata: z.object({}).optional(), - // verified: z.boolean().default(false), - }) - .strict(); // Adding strict so that we can disallow passing in extra fields -const withValidBooking = withValidation({ - schema: schemaBooking, +const schemaPayment = z + .object({}) + .strict(); +const withValidPayment = withValidation({ + schema: schemaPayment, type: "Zod", mode: "body", }); -export { schemaBooking, withValidBooking }; +export { schemaPayment, withValidPayment }; diff --git a/lib/validations/schedule.ts b/lib/validations/schedule.ts index fb50c9c9ad..9a0b0f286f 100644 --- a/lib/validations/schedule.ts +++ b/lib/validations/schedule.ts @@ -1,65 +1,13 @@ import { withValidation } from "next-validations"; import { z } from "zod"; -const schemaBooking = z - .object({ - uid: z.string().min(3), - title: z.string().min(3), - description: z.string().min(3).optional(), - startTime: z.date().or(z.string()), - endTime: z.date(), - location: z.string().min(3).optional(), - createdAt: z.date().or(z.string()), - updatedAt: z.date(), - confirmed: z.boolean().default(true), - rejected: z.boolean().default(false), - paid: z.boolean().default(false), - - // bufferTime: z.number().default(0), - // // attendees: z.array((schemaSchedule)).optional(), - - // startTime: z.string().min(3), - // endTime: z.string().min(3), - // email: z.string().email(), // max is a full day. - // emailVerified: z.date().optional(), - // password: z.string().optional(), - // bio: z.string().min(3).optional(), - // avatar: z.string().optional(), - // timeZone: z.string().default("Europe/London"), - // weekStart: z.string().default("Sunday"), - // bufferTime: z.number().default(0), - // theme: z.string().optional(), - // trialEndsAt: z.date().optional(), - // eventTypes: z.array((schemaEventType)).optional(), - // // credentials: z.array((schemaCredentials)).optional(), - // // teams: z.array((schemaMembership)).optional(), - // // bookings: z.array((schemaBooking)).optional(), - // // schedules: z.array((schemaSchedule)).optional(), - // defaultScheduleId: z.number().optional(), - // // selectedCalendars: z.array((schemaSelectedCalendar)).optional(), - // completedOnboarding: z.boolean().default(false), - // locale: z.string().optional(), - // timeFormat: z.number().optional().default(12), - // twoFactorEnabled: z.boolean().default(false), - // twoFactorSecret: z.string().optional(), - // identityProvider: z.enum(["CAL", "SAML", "GOOGLE"]).optional().default("CAL"), - // identityProviderId: z.string().optional(), - // // availavility: z.array((schemaAvailavility)).optional(), - // invitedTo: z.number().optional(), - // plan: z.enum(['FREE', 'TRIAL', 'PRO']).default("TRIAL"), - // // webhooks: z.array((schemaWebhook)).optional(), - // brandColor: z.string().default("#292929"), - // darkBrandColor: z.string().default("#fafafa"), - // // destinationCalendar: z.instanceof(schemaEventType).optional(), // FIXME: instanceof doesnt work here - // away: z.boolean().default(false), - // metadata: z.object({}).optional(), - // verified: z.boolean().default(false), - }) - .strict(); // Adding strict so that we can disallow passing in extra fields -const withValidBooking = withValidation({ - schema: schemaBooking, +const schemaSchedule = z + .object({}) + .strict(); +const withValidSchedule = withValidation({ + schema: schemaSchedule, type: "Zod", mode: "body", }); -export { schemaBooking, withValidBooking }; +export { schemaSchedule, withValidSchedule }; diff --git a/lib/validations/selected-calendar.ts b/lib/validations/selected-calendar.ts index fb50c9c9ad..b1646e1047 100644 --- a/lib/validations/selected-calendar.ts +++ b/lib/validations/selected-calendar.ts @@ -1,65 +1,13 @@ import { withValidation } from "next-validations"; import { z } from "zod"; -const schemaBooking = z - .object({ - uid: z.string().min(3), - title: z.string().min(3), - description: z.string().min(3).optional(), - startTime: z.date().or(z.string()), - endTime: z.date(), - location: z.string().min(3).optional(), - createdAt: z.date().or(z.string()), - updatedAt: z.date(), - confirmed: z.boolean().default(true), - rejected: z.boolean().default(false), - paid: z.boolean().default(false), - - // bufferTime: z.number().default(0), - // // attendees: z.array((schemaSchedule)).optional(), - - // startTime: z.string().min(3), - // endTime: z.string().min(3), - // email: z.string().email(), // max is a full day. - // emailVerified: z.date().optional(), - // password: z.string().optional(), - // bio: z.string().min(3).optional(), - // avatar: z.string().optional(), - // timeZone: z.string().default("Europe/London"), - // weekStart: z.string().default("Sunday"), - // bufferTime: z.number().default(0), - // theme: z.string().optional(), - // trialEndsAt: z.date().optional(), - // eventTypes: z.array((schemaEventType)).optional(), - // // credentials: z.array((schemaCredentials)).optional(), - // // teams: z.array((schemaMembership)).optional(), - // // bookings: z.array((schemaBooking)).optional(), - // // schedules: z.array((schemaSchedule)).optional(), - // defaultScheduleId: z.number().optional(), - // // selectedCalendars: z.array((schemaSelectedCalendar)).optional(), - // completedOnboarding: z.boolean().default(false), - // locale: z.string().optional(), - // timeFormat: z.number().optional().default(12), - // twoFactorEnabled: z.boolean().default(false), - // twoFactorSecret: z.string().optional(), - // identityProvider: z.enum(["CAL", "SAML", "GOOGLE"]).optional().default("CAL"), - // identityProviderId: z.string().optional(), - // // availavility: z.array((schemaAvailavility)).optional(), - // invitedTo: z.number().optional(), - // plan: z.enum(['FREE', 'TRIAL', 'PRO']).default("TRIAL"), - // // webhooks: z.array((schemaWebhook)).optional(), - // brandColor: z.string().default("#292929"), - // darkBrandColor: z.string().default("#fafafa"), - // // destinationCalendar: z.instanceof(schemaEventType).optional(), // FIXME: instanceof doesnt work here - // away: z.boolean().default(false), - // metadata: z.object({}).optional(), - // verified: z.boolean().default(false), - }) - .strict(); // Adding strict so that we can disallow passing in extra fields -const withValidBooking = withValidation({ - schema: schemaBooking, +const schemaSelectedCalendar = z + .object({}) + .strict(); +const withValidSelectedCalendar = withValidation({ + schema: schemaSelectedCalendar, type: "Zod", mode: "body", }); -export { schemaBooking, withValidBooking }; +export { schemaSelectedCalendar, withValidSelectedCalendar }; diff --git a/lib/validations/team.ts b/lib/validations/team.ts index 9ed08f90d5..935f49ac1e 100644 --- a/lib/validations/team.ts +++ b/lib/validations/team.ts @@ -9,7 +9,7 @@ const schemaTeam = z bio: z.string().min(3).optional(), logo: z.string().optional(), }) - .strict(); // Adding strict so that we can disallow passing in extra fields + .strict(); const withValidTeam = withValidation({ schema: schemaTeam, type: "Zod", diff --git a/lib/validations/user.ts b/lib/validations/user.ts index 4b24b168af..b0fd00848c 100644 --- a/lib/validations/user.ts +++ b/lib/validations/user.ts @@ -1,15 +1,16 @@ import { withValidation } from "next-validations"; -import { schemaEventType } from "./eventType"; -// import { schemaCredential } from "./credential"; -// import { schemaMembership } from "./membership"; -// import { schemaBooking } from "./booking"; -// import { schemaSchedule } from "./schedule"; -// import { schemaSelectedCalendar } from "./selectedCalendar"; -// import { schemaAvailability } from "./availability"; -// import { schemaWebhook } from "./webhook"; - import { z } from "zod"; + +import { schemaEventType } from "./eventType"; import { schemaApiKey } from "./apiKey"; +import { schemaDestinationCalendar } from "./destination-calendar"; +import { schemaWebhook } from "./webhook"; +import { schemaAvailability } from "./availability"; +import { schemaSelectedCalendar } from "./selected-calendar"; +import { schemaBooking } from "./booking"; +import { schemaMembership } from "./membership"; +import { schemaSchedule } from "./schedule"; +import { schemaCredential } from "./credential"; const schemaUser = z .object({ @@ -27,12 +28,12 @@ const schemaUser = z theme: z.string().optional(), trialEndsAt: z.date().optional(), eventTypes: z.array((schemaEventType)).optional(), - // credentials: z.array((schemaCredentials)).optional(), - // teams: z.array((schemaMembership)).optional(), - // bookings: z.array((schemaBooking)).optional(), - // schedules: z.array((schemaSchedule)).optional(), + credentials: z.array((schemaCredential)).optional(), + teams: z.array((schemaMembership)).optional(), + bookings: z.array((schemaBooking)).optional(), + schedules: z.array((schemaSchedule)).optional(), defaultScheduleId: z.number().optional(), - // selectedCalendars: z.array((schemaSelectedCalendar)).optional(), + selectedCalendars: z.array((schemaSelectedCalendar)).optional(), completedOnboarding: z.boolean().default(false), locale: z.string().optional(), timeFormat: z.number().optional().default(12), @@ -40,19 +41,19 @@ const schemaUser = z twoFactorSecret: z.string().optional(), identityProvider: z.enum(["CAL", "SAML", "GOOGLE"]).optional().default("CAL"), identityProviderId: z.string().optional(), - // availavility: z.array((schemaAvailavility)).optional(), + availability: z.array((schemaAvailability)).optional(), invitedTo: z.number().optional(), plan: z.enum(['FREE', 'TRIAL', 'PRO']).default("TRIAL"), - // webhooks: z.array((schemaWebhook)).optional(), + webhooks: z.array((schemaWebhook)).optional(), brandColor: z.string().default("#292929"), darkBrandColor: z.string().default("#fafafa"), - // destinationCalendar: z.instanceof(schemaEventType).optional(), // FIXME: instanceof doesnt work here + destinationCalendar: z.array(schemaDestinationCalendar).optional(), // FIXME: instanceof doesnt work here away: z.boolean().default(false), metadata: z.object({}).optional(), verified: z.boolean().default(false), apiKeys: z.array((schemaApiKey)).optional(), }) - .strict(); // Adding strict so that we can disallow passing in extra fields + .strict(); const withValidUser = withValidation({ schema: schemaUser, type: "Zod", diff --git a/lib/validations/webhook.ts b/lib/validations/webhook.ts index fb50c9c9ad..1b1a35a2da 100644 --- a/lib/validations/webhook.ts +++ b/lib/validations/webhook.ts @@ -1,65 +1,14 @@ import { withValidation } from "next-validations"; import { z } from "zod"; -const schemaBooking = z - .object({ - uid: z.string().min(3), - title: z.string().min(3), - description: z.string().min(3).optional(), - startTime: z.date().or(z.string()), - endTime: z.date(), - location: z.string().min(3).optional(), - createdAt: z.date().or(z.string()), - updatedAt: z.date(), - confirmed: z.boolean().default(true), - rejected: z.boolean().default(false), - paid: z.boolean().default(false), +const schemaWebhook = z + .object({}) + .strict(); - // bufferTime: z.number().default(0), - // // attendees: z.array((schemaSchedule)).optional(), - - // startTime: z.string().min(3), - // endTime: z.string().min(3), - // email: z.string().email(), // max is a full day. - // emailVerified: z.date().optional(), - // password: z.string().optional(), - // bio: z.string().min(3).optional(), - // avatar: z.string().optional(), - // timeZone: z.string().default("Europe/London"), - // weekStart: z.string().default("Sunday"), - // bufferTime: z.number().default(0), - // theme: z.string().optional(), - // trialEndsAt: z.date().optional(), - // eventTypes: z.array((schemaEventType)).optional(), - // // credentials: z.array((schemaCredentials)).optional(), - // // teams: z.array((schemaMembership)).optional(), - // // bookings: z.array((schemaBooking)).optional(), - // // schedules: z.array((schemaSchedule)).optional(), - // defaultScheduleId: z.number().optional(), - // // selectedCalendars: z.array((schemaSelectedCalendar)).optional(), - // completedOnboarding: z.boolean().default(false), - // locale: z.string().optional(), - // timeFormat: z.number().optional().default(12), - // twoFactorEnabled: z.boolean().default(false), - // twoFactorSecret: z.string().optional(), - // identityProvider: z.enum(["CAL", "SAML", "GOOGLE"]).optional().default("CAL"), - // identityProviderId: z.string().optional(), - // // availavility: z.array((schemaAvailavility)).optional(), - // invitedTo: z.number().optional(), - // plan: z.enum(['FREE', 'TRIAL', 'PRO']).default("TRIAL"), - // // webhooks: z.array((schemaWebhook)).optional(), - // brandColor: z.string().default("#292929"), - // darkBrandColor: z.string().default("#fafafa"), - // // destinationCalendar: z.instanceof(schemaEventType).optional(), // FIXME: instanceof doesnt work here - // away: z.boolean().default(false), - // metadata: z.object({}).optional(), - // verified: z.boolean().default(false), - }) - .strict(); // Adding strict so that we can disallow passing in extra fields -const withValidBooking = withValidation({ - schema: schemaBooking, +const withValidWebhook = withValidation({ + schema: schemaWebhook, type: "Zod", mode: "body", }); -export { schemaBooking, withValidBooking }; +export { schemaWebhook, withValidWebhook };