diff --git a/apps/api/v2/package.json b/apps/api/v2/package.json index 1745247e8f..a126f0898b 100644 --- a/apps/api/v2/package.json +++ b/apps/api/v2/package.json @@ -32,7 +32,7 @@ "@axiomhq/winston": "^1.2.0", "@calcom/platform-constants": "*", "@calcom/platform-enums": "*", - "@calcom/platform-libraries": "npm:@calcom/platform-libraries@0.0.140", + "@calcom/platform-libraries": "npm:@calcom/platform-libraries@0.0.141", "@calcom/platform-libraries-0.0.2": "npm:@calcom/platform-libraries@0.0.2", "@calcom/platform-types": "*", "@calcom/platform-utils": "*", diff --git a/apps/api/v2/src/ee/bookings/2024-08-13/services/input.service.ts b/apps/api/v2/src/ee/bookings/2024-08-13/services/input.service.ts index 1f9a99b9c8..84368076d5 100644 --- a/apps/api/v2/src/ee/bookings/2024-08-13/services/input.service.ts +++ b/apps/api/v2/src/ee/bookings/2024-08-13/services/input.service.ts @@ -19,7 +19,7 @@ import { NextApiRequest } from "next/types"; import { v4 as uuidv4 } from "uuid"; import { z } from "zod"; -import { EventTypeMetaDataSchema } from "@calcom/platform-libraries"; +import { EventTypeMetaDataSchema } from "@calcom/platform-libraries/event-types"; import { CancelBookingInput, CancelBookingInput_2024_08_13, diff --git a/apps/api/v2/src/ee/calendars/outputs/connected-calendars.output.ts b/apps/api/v2/src/ee/calendars/outputs/connected-calendars.output.ts index 30b291ce9d..c66106371a 100644 --- a/apps/api/v2/src/ee/calendars/outputs/connected-calendars.output.ts +++ b/apps/api/v2/src/ee/calendars/outputs/connected-calendars.output.ts @@ -208,7 +208,7 @@ export class ConnectedCalendar { class DestinationCalendar { @IsInt() @ApiProperty() - id!: number; + id!: number | string; @IsString() @ApiProperty() diff --git a/apps/api/v2/src/ee/event-types/event-types_2024_04_15/controllers/event-types.controller.e2e-spec.ts b/apps/api/v2/src/ee/event-types/event-types_2024_04_15/controllers/event-types.controller.e2e-spec.ts index cd3deb317e..099526766b 100644 --- a/apps/api/v2/src/ee/event-types/event-types_2024_04_15/controllers/event-types.controller.e2e-spec.ts +++ b/apps/api/v2/src/ee/event-types/event-types_2024_04_15/controllers/event-types.controller.e2e-spec.ts @@ -33,10 +33,10 @@ import { } from "@calcom/platform-constants"; import { EventTypesByViewer, - EventTypesPublic, eventTypeBookingFields, eventTypeLocations, -} from "@calcom/platform-libraries"; + EventTypesPublic, +} from "@calcom/platform-libraries/event-types"; import { ApiSuccessResponse } from "@calcom/platform-types"; describe("Event types Endpoints", () => { diff --git a/apps/api/v2/src/ee/event-types/event-types_2024_04_15/event-types.repository.ts b/apps/api/v2/src/ee/event-types/event-types_2024_04_15/event-types.repository.ts index 4fbde6d2c1..84488df660 100644 --- a/apps/api/v2/src/ee/event-types/event-types_2024_04_15/event-types.repository.ts +++ b/apps/api/v2/src/ee/event-types/event-types_2024_04_15/event-types.repository.ts @@ -5,7 +5,7 @@ import { UsersService } from "@/modules/users/services/users.service"; import { UserWithProfile } from "@/modules/users/users.repository"; import { Injectable } from "@nestjs/common"; -import { getEventTypeById } from "@calcom/platform-libraries"; +import { getEventTypeById } from "@calcom/platform-libraries/event-types"; import type { PrismaClient } from "@calcom/prisma"; @Injectable() diff --git a/apps/api/v2/src/ee/event-types/event-types_2024_04_15/services/event-types.service.ts b/apps/api/v2/src/ee/event-types/event-types_2024_04_15/services/event-types.service.ts index 2c6ac159fc..bbf00275b1 100644 --- a/apps/api/v2/src/ee/event-types/event-types_2024_04_15/services/event-types.service.ts +++ b/apps/api/v2/src/ee/event-types/event-types_2024_04_15/services/event-types.service.ts @@ -1,6 +1,8 @@ import { DEFAULT_EVENT_TYPES } from "@/ee/event-types/event-types_2024_04_15/constants/constants"; import { EventTypesRepository_2024_04_15 } from "@/ee/event-types/event-types_2024_04_15/event-types.repository"; import { CreateEventTypeInput_2024_04_15 } from "@/ee/event-types/event-types_2024_04_15/inputs/create-event-type.input"; +import { Editable } from "@/ee/event-types/event-types_2024_04_15/inputs/enums/editable"; +import { BaseField } from "@/ee/event-types/event-types_2024_04_15/inputs/enums/field-type"; import { UpdateEventTypeInput_2024_04_15 } from "@/ee/event-types/event-types_2024_04_15/inputs/update-event-type.input"; import { EventTypeOutput } from "@/ee/event-types/event-types_2024_04_15/outputs/event-type.output"; import { MembershipsRepository } from "@/modules/memberships/memberships.repository"; @@ -16,7 +18,7 @@ import { EventTypesPublic, getEventTypesPublic, systemBeforeFieldEmail, -} from "@calcom/platform-libraries"; +} from "@calcom/platform-libraries/event-types"; import { EventType } from "@calcom/prisma/client"; @Injectable() @@ -68,6 +70,7 @@ export class EventTypesService_2024_04_15 { organization: { isOrgAdmin }, profile: { id: profileId }, metadata: user.metadata, + email: user.email, }; } @@ -134,7 +137,7 @@ export class EventTypesService_2024_04_15 { !bookingFields.find((field) => field.type === "email") && !bookingFields.find((field) => field.type === "phone") ) { - bookingFields.push(systemBeforeFieldEmail); + bookingFields.push({ ...systemBeforeFieldEmail, type: BaseField.email, editable: Editable.system }); } await updateEventType({ @@ -167,7 +170,15 @@ export class EventTypesService_2024_04_15 { async getUserToUpdateEvent(user: UserWithProfile) { const profileId = this.usersService.getUserMainProfile(user)?.id || null; const selectedCalendars = await this.selectedCalendarsRepository.getUserSelectedCalendars(user.id); - return { ...user, profile: { id: profileId }, selectedCalendars }; + const eventTypeSelectedCalendars = + await this.selectedCalendarsRepository.getUserEventTypeSelectedCalendar(user.id); + return { + ...user, + locale: user.locale ?? "en", + profile: { id: profileId }, + userLevelSelectedCalendars: selectedCalendars, + allSelectedCalendars: [...eventTypeSelectedCalendars, ...selectedCalendars], + }; } async deleteEventType(eventTypeId: number, userId: number) { diff --git a/apps/api/v2/src/ee/event-types/event-types_2024_06_14/services/event-types.service.ts b/apps/api/v2/src/ee/event-types/event-types_2024_06_14/services/event-types.service.ts index 1c95e251eb..68c7a2d41f 100644 --- a/apps/api/v2/src/ee/event-types/event-types_2024_06_14/services/event-types.service.ts +++ b/apps/api/v2/src/ee/event-types/event-types_2024_06_14/services/event-types.service.ts @@ -8,9 +8,13 @@ import { UsersService } from "@/modules/users/services/users.service"; import { UserWithProfile, UsersRepository } from "@/modules/users/users.repository"; import { BadRequestException, ForbiddenException, Injectable, NotFoundException } from "@nestjs/common"; -import { createEventType, updateEventType } from "@calcom/platform-libraries"; -import { getEventTypesPublic, EventTypesPublic } from "@calcom/platform-libraries"; import { dynamicEvent } from "@calcom/platform-libraries"; +import { + createEventType, + updateEventType, + getEventTypesPublic, + EventTypesPublic, +} from "@calcom/platform-libraries/event-types"; import { GetEventTypesQuery_2024_06_14, InputEventTransformed_2024_06_14 } from "@calcom/platform-types"; import { EventType } from "@calcom/prisma/client"; @@ -112,8 +116,11 @@ export class EventTypesService_2024_06_14 { : false; const profileId = this.usersService.getUserMainProfile(user)?.id || null; const selectedCalendars = await this.selectedCalendarsRepository.getUserSelectedCalendars(user.id); + const eventTypeSelectedCalendars = + await this.selectedCalendarsRepository.getUserEventTypeSelectedCalendar(user.id); return { id: user.id, + locale: user.locale ?? "en", role: user.role, username: user.username, organizationId: user.organizationId, @@ -122,6 +129,8 @@ export class EventTypesService_2024_06_14 { metadata: user.metadata, selectedCalendars, email: user.email, + userLevelSelectedCalendars: selectedCalendars, + allSelectedCalendars: [...eventTypeSelectedCalendars, ...selectedCalendars], }; } @@ -205,7 +214,11 @@ export class EventTypesService_2024_06_14 { return defaultEventTypes; } - async updateEventType(eventTypeId: number, body: InputEventTransformed_2024_06_14, user: UserWithProfile) { + async updateEventType( + eventTypeId: number, + body: Partial, + user: UserWithProfile + ) { await this.checkCanUpdateEventType(user.id, eventTypeId, body.scheduleId); const eventTypeUser = await this.getUserToUpdateEvent(user); @@ -231,7 +244,7 @@ export class EventTypesService_2024_06_14 { }; } - async checkCanUpdateEventType(userId: number, eventTypeId: number, scheduleId: number | undefined) { + async checkCanUpdateEventType(userId: number, eventTypeId: number, scheduleId: number | undefined | null) { const existingEventType = await this.getUserEventType(userId, eventTypeId); if (!existingEventType) { throw new NotFoundException(`Event type with id ${eventTypeId} not found`); @@ -243,7 +256,15 @@ export class EventTypesService_2024_06_14 { async getUserToUpdateEvent(user: UserWithProfile) { const profileId = this.usersService.getUserMainProfile(user)?.id || null; const selectedCalendars = await this.selectedCalendarsRepository.getUserSelectedCalendars(user.id); - return { ...user, profile: { id: profileId }, selectedCalendars }; + const eventTypeSelectedCalendars = + await this.selectedCalendarsRepository.getUserEventTypeSelectedCalendar(user.id); + return { + ...user, + locale: user.locale ?? "en", + profile: { id: profileId }, + userLevelSelectedCalendars: selectedCalendars, + allSelectedCalendars: [...eventTypeSelectedCalendars, ...selectedCalendars], + }; } async deleteEventType(eventTypeId: number, userId: number) { diff --git a/apps/api/v2/src/ee/event-types/event-types_2024_06_14/services/input-event-types.service.ts b/apps/api/v2/src/ee/event-types/event-types_2024_06_14/services/input-event-types.service.ts index cd60e4f15d..7acd9586be 100644 --- a/apps/api/v2/src/ee/event-types/event-types_2024_06_14/services/input-event-types.service.ts +++ b/apps/api/v2/src/ee/event-types/event-types_2024_06_14/services/input-event-types.service.ts @@ -25,13 +25,17 @@ import { transformSeatsApiToInternal, SystemField, CustomField, -} from "@calcom/platform-libraries"; + InternalLocation, + InternalLocationSchema, +} from "@calcom/platform-libraries/event-types"; import { CreateEventTypeInput_2024_06_14, DestinationCalendar_2024_06_14, InputEventTransformed_2024_06_14, + OutputUnknownLocation_2024_06_14, UpdateEventTypeInput_2024_06_14, } from "@calcom/platform-types"; +import { BookerLayouts } from "@calcom/prisma/zod-utils"; import { OutputEventTypesService_2024_06_14 } from "./output-event-types.service"; @@ -58,7 +62,7 @@ export class InputEventTypesService_2024_06_14 { const transformedBody = this.transformInputCreateEventType(inputEventType); await this.validateEventTypeInputs({ - seatsPerTimeSlot: transformedBody.seatsPerTimeSlot, + seatsPerTimeSlot: transformedBody?.seatsPerTimeSlot || null, locations: transformedBody.locations, requiresConfirmation: transformedBody.requiresConfirmation, eventName: transformedBody.eventName, @@ -272,7 +276,12 @@ export class InputEventTypesService_2024_06_14 { } transformInputBookerLayouts(inputBookerLayouts: CreateEventTypeInput_2024_06_14["bookerLayouts"]) { - return transformBookerLayoutsApiToInternal(inputBookerLayouts); + const layouts = transformBookerLayoutsApiToInternal(inputBookerLayouts); + if (!layouts) return undefined; + return { + defaultLayout: layouts.defaultLayout as unknown as BookerLayouts, + enabledLayouts: layouts.enabledLayouts as unknown as BookerLayouts[], + }; } transformInputConfirmationPolicy( @@ -303,23 +312,22 @@ export class InputEventTypesService_2024_06_14 { eventName, }: ValidationContext) { let seatsPerTimeSlotDb: number | null = null; - let locationsDb: ReturnType = []; + let locationsDb: ReturnType = []; let requiresConfirmationDb = false; if (eventTypeId != null) { const eventTypeDb = await this.eventTypesRepository.getEventTypeWithSeats(eventTypeId); seatsPerTimeSlotDb = eventTypeDb?.seatsPerTimeSlot ?? null; - locationsDb = this.outputEventTypesService.transformLocations(eventTypeDb?.locations) ?? []; + locationsDb = this.transformLocations(eventTypeDb?.locations) ?? []; requiresConfirmationDb = eventTypeDb?.requiresConfirmation ?? false; } - const seatsPerTimeSlotFinal = seatsPerTimeSlot !== undefined ? seatsPerTimeSlot : seatsPerTimeSlotDb; - const seatsEnabledFinal = seatsPerTimeSlotFinal != null && seatsPerTimeSlotFinal > 0; + const seatsPerTimeSlotFinal = !!seatsPerTimeSlot ? seatsPerTimeSlot : seatsPerTimeSlotDb; + const seatsEnabledFinal = !!seatsPerTimeSlotFinal && seatsPerTimeSlotFinal > 0; const locationsFinal = locations !== undefined ? locations : locationsDb; const requiresConfirmationFinal = requiresConfirmation !== undefined ? requiresConfirmation : requiresConfirmationDb; - this.validateSeatsSingleLocationRule(seatsEnabledFinal, locationsFinal); this.validateSeatsRequiresConfirmationFalseRule(seatsEnabledFinal, requiresConfirmationFinal); this.validateMultipleLocationsSeatsDisabledRule(locationsFinal, seatsEnabledFinal); @@ -331,7 +339,7 @@ export class InputEventTypesService_2024_06_14 { } validateSeatsSingleLocationRule( seatsEnabled: boolean, - locations: ReturnType + locations: ReturnType ) { if (seatsEnabled && locations.length > 1) { throw new BadRequestException( @@ -339,6 +347,22 @@ export class InputEventTypesService_2024_06_14 { ); } } + transformLocations(locations: any) { + if (!locations) return []; + + const knownLocations: InternalLocation[] = []; + const unknownLocations: OutputUnknownLocation_2024_06_14[] = []; + + for (const location of locations) { + const result = InternalLocationSchema.safeParse(location); + if (result.success) { + knownLocations.push(result.data); + } else { + unknownLocations.push({ type: "unknown", location: JSON.stringify(location) }); + } + } + return [...knownLocations]; + } validateSeatsRequiresConfirmationFalseRule(seatsEnabled: boolean, requiresConfirmation: boolean) { if (seatsEnabled && requiresConfirmation) { @@ -349,7 +373,7 @@ export class InputEventTypesService_2024_06_14 { } validateMultipleLocationsSeatsDisabledRule( - locations: ReturnType, + locations: ReturnType, seatsEnabled: boolean ) { if (locations.length > 1 && seatsEnabled) { diff --git a/apps/api/v2/src/ee/event-types/event-types_2024_06_14/services/output-event-types.service.ts b/apps/api/v2/src/ee/event-types/event-types_2024_06_14/services/output-event-types.service.ts index 2c85608a79..c191bc3fac 100644 --- a/apps/api/v2/src/ee/event-types/event-types_2024_06_14/services/output-event-types.service.ts +++ b/apps/api/v2/src/ee/event-types/event-types_2024_06_14/services/output-event-types.service.ts @@ -2,15 +2,18 @@ import { Injectable } from "@nestjs/common"; import type { EventType, User, Schedule, DestinationCalendar } from "@prisma/client"; import { - EventTypeMetaDataSchema, userMetadata, + parseBookingLimit, + parseRecurringEvent, + getBookingFieldsWithSystemFields, +} from "@calcom/platform-libraries"; +import { + EventTypeMetaDataSchema, transformLocationsInternalToApi, transformBookingFieldsInternalToApi, - parseRecurringEvent, InternalLocationSchema, SystemField, CustomField, - parseBookingLimit, transformIntervalLimitsInternalToApi, transformFutureBookingLimitsInternalToApi, transformRecurrenceInternalToApi, @@ -21,8 +24,7 @@ import { transformSeatsInternalToApi, InternalLocation, BookingFieldSchema, - getBookingFieldsWithSystemFields, -} from "@calcom/platform-libraries"; +} from "@calcom/platform-libraries/event-types"; import { TransformFutureBookingsLimitSchema_2024_06_14, BookerLayoutsTransformedSchema, @@ -198,13 +200,13 @@ export class OutputEventTypesService_2024_06_14 { }; } - transformLocations(locations: any) { - if (!locations) return []; + transformLocations(locationDb: any) { + if (!locationDb) return []; const knownLocations: InternalLocation[] = []; const unknownLocations: OutputUnknownLocation_2024_06_14[] = []; - for (const location of locations) { + for (const location of locationDb) { const result = InternalLocationSchema.safeParse(location); if (result.success) { knownLocations.push(result.data); @@ -315,6 +317,7 @@ export class OutputEventTypesService_2024_06_14 { transformEventTypeColor(eventTypeColor: any) { if (!eventTypeColor) return undefined; const parsedeventTypeColor = parseEventTypeColor(eventTypeColor); + if (!parsedeventTypeColor) return undefined; return transformEventTypeColorsInternalToApi(parsedeventTypeColor); } diff --git a/apps/api/v2/src/modules/atoms/controllers/atoms.controller.ts b/apps/api/v2/src/modules/atoms/controllers/atoms.controller.ts index 5452415077..86dc39111a 100644 --- a/apps/api/v2/src/modules/atoms/controllers/atoms.controller.ts +++ b/apps/api/v2/src/modules/atoms/controllers/atoms.controller.ts @@ -23,8 +23,8 @@ import { import { ApiTags as DocsTags, ApiExcludeController as DocsExcludeController } from "@nestjs/swagger"; import { ERROR_STATUS, SUCCESS_STATUS } from "@calcom/platform-constants"; -import type { UpdateEventTypeReturn } from "@calcom/platform-libraries"; import { ConnectedApps } from "@calcom/platform-libraries"; +import type { UpdateEventTypeReturn } from "@calcom/platform-libraries/event-types"; import { ApiResponse } from "@calcom/platform-types"; /* @@ -81,7 +81,7 @@ export class AtomsController { ): Promise> { const { teamId } = queryParams; - const app = await this.eventTypesService.getEventTypesAppIntegration(appSlug, user.id, user.name, teamId); + const app = await this.eventTypesService.getEventTypesAppIntegration(appSlug, user, teamId); return { status: SUCCESS_STATUS, @@ -124,7 +124,11 @@ export class AtomsController { @Param("eventTypeId", ParseIntPipe) eventTypeId: number, @Body() body: UpdateEventTypeReturn ): Promise> { - const eventType = await this.eventTypesService.updateEventType(eventTypeId, body, user); + const eventType = await this.eventTypesService.updateEventType( + eventTypeId, + { ...body, id: eventTypeId }, + user + ); return { status: SUCCESS_STATUS, data: eventType, @@ -140,7 +144,12 @@ export class AtomsController { @Param("teamId", ParseIntPipe) teamId: number, @Body() body: UpdateEventTypeReturn ): Promise> { - const eventType = await this.eventTypesService.updateTeamEventType(eventTypeId, body, user, teamId); + const eventType = await this.eventTypesService.updateTeamEventType( + eventTypeId, + { ...body, id: eventTypeId }, + user, + teamId + ); return { status: SUCCESS_STATUS, data: eventType, diff --git a/apps/api/v2/src/modules/atoms/services/event-types-atom.service.ts b/apps/api/v2/src/modules/atoms/services/event-types-atom.service.ts index 4665b5c512..857ab21456 100644 --- a/apps/api/v2/src/modules/atoms/services/event-types-atom.service.ts +++ b/apps/api/v2/src/modules/atoms/services/event-types-atom.service.ts @@ -10,17 +10,11 @@ import { UserWithProfile } from "@/modules/users/users.repository"; import { Injectable, NotFoundException, ForbiddenException } from "@nestjs/common"; import { - updateEventType, - TUpdateEventTypeInputSchema, - systemBeforeFieldEmail, - getEventTypeById, getEnabledAppsFromCredentials, getAppFromSlug, MembershipRole, - EventTypeMetaDataSchema, getClientSecretFromPayment, - getBulkEventTypes, - bulkUpdateEventsToDefaultLocation, + enrichUserWithDelegationConferencingCredentialsWithoutOrgId, } from "@calcom/platform-libraries"; import type { App, @@ -31,6 +25,17 @@ import type { TDependencyData, CredentialPayload, } from "@calcom/platform-libraries"; +import { + getBulkEventTypes, + getEventTypeById, + bulkUpdateEventsToDefaultLocation, +} from "@calcom/platform-libraries/event-types"; +import { + updateEventType, + TUpdateEventTypeInputSchema, + systemBeforeFieldEmail, + EventTypeMetaDataSchema, +} from "@calcom/platform-libraries/event-types"; import { PrismaClient } from "@calcom/prisma"; type EnabledAppType = App & { @@ -104,7 +109,7 @@ export class EventTypesAtomService { } const eventType = await updateEventType({ - input: { id: eventTypeId, ...body, bookingFields }, + input: { ...body, id: eventTypeId, bookingFields }, ctx: { user: eventTypeUser, // eslint-disable-next-line @typescript-eslint/ban-ts-comment @@ -117,7 +122,7 @@ export class EventTypesAtomService { throw new NotFoundException(`Event type with id ${eventTypeId} not found`); } - return eventType.eventType; + return eventType; } async updateEventType(eventTypeId: number, body: TUpdateEventTypeInputSchema, user: UserWithProfile) { @@ -134,7 +139,7 @@ export class EventTypesAtomService { } const eventType = await updateEventType({ - input: { id: eventTypeId, ...body, bookingFields }, + input: { ...body, id: eventTypeId, bookingFields }, ctx: { user: eventTypeUser, // eslint-disable-next-line @typescript-eslint/ban-ts-comment @@ -147,10 +152,15 @@ export class EventTypesAtomService { throw new NotFoundException(`Event type with id ${eventTypeId} not found`); } - return eventType.eventType; + return eventType; } - async checkCanUpdateTeamEventType(userId: number, eventTypeId: number, teamId: number, scheduleId: number) { + async checkCanUpdateTeamEventType( + userId: number, + eventTypeId: number, + teamId: number, + scheduleId: number | null | undefined + ) { await this.checkTeamOwnsEventType(userId, eventTypeId, teamId); await this.teamEventTypeService.validateEventTypeExists(teamId, eventTypeId); await this.eventTypeService.checkUserOwnsSchedule(userId, scheduleId); @@ -179,11 +189,11 @@ export class EventTypesAtomService { } } - async getEventTypesAppIntegration(slug: string, userId: number, userName: string | null, teamId?: number) { - let credentials = await this.credentialsRepository.getAllUserCredentialsById(userId); + async getEventTypesAppIntegration(slug: string, user: UserWithProfile, teamId?: number) { + let credentials = await this.credentialsRepository.getAllUserCredentialsById(user.id); let userTeams: TeamQuery[] = []; if (teamId) { - const teamsQuery = await this.atomsRepository.getUserTeams(userId); + const teamsQuery = await this.atomsRepository.getUserTeams(user.id); // If a team is a part of an org then include those apps // Don't want to iterate over these parent teams const filteredTeams: TeamQuery[] = []; @@ -211,8 +221,17 @@ export class EventTypesAtomService { credentials = credentials.concat(teamAppCredentials); } } - //TODO: enrich credentials for DelegationCredential - const enabledApps = await getEnabledAppsFromCredentials(credentials, { + // We only add delegationCredentials if the request for location options is for a user because DelegationCredential Credential is applicable to Users only. + const { credentials: allCredentials } = await enrichUserWithDelegationConferencingCredentialsWithoutOrgId( + { + user: { + ...user, + credentials, + }, + } + ); + credentials = allCredentials; + const enabledApps = await getEnabledAppsFromCredentials(allCredentials, { where: { slug }, }); const apps = await Promise.all( @@ -265,7 +284,7 @@ export class EventTypesAtomService { }); } const credentialOwner: CredentialOwner = { - name: userName, + name: user.name, teamId, }; return { diff --git a/apps/api/v2/src/modules/organizations/event-types/services/input.service.ts b/apps/api/v2/src/modules/organizations/event-types/services/input.service.ts index 1db829df9e..67cbd7c34d 100644 --- a/apps/api/v2/src/modules/organizations/event-types/services/input.service.ts +++ b/apps/api/v2/src/modules/organizations/event-types/services/input.service.ts @@ -4,7 +4,7 @@ import { TeamsRepository } from "@/modules/teams/teams/teams.repository"; import { UsersRepository } from "@/modules/users/users.repository"; import { BadRequestException, Injectable, NotFoundException } from "@nestjs/common"; -import { transformTeamLocationsApiToInternal } from "@calcom/platform-libraries"; +import { transformTeamLocationsApiToInternal } from "@calcom/platform-libraries/event-types"; import { CreateTeamEventTypeInput_2024_06_14, UpdateTeamEventTypeInput_2024_06_14, @@ -12,6 +12,13 @@ import { } from "@calcom/platform-types"; import { SchedulingType } from "@calcom/prisma/client"; +export type TransformedCreateTeamEventTypeInput = Awaited< + ReturnType["transformInputCreateTeamEventType"]> +>; + +export type TransformedUpdateTeamEventTypeInput = Awaited< + ReturnType["transformInputUpdateTeamEventType"]> +>; @Injectable() export class InputOrganizationsEventTypesService { constructor( diff --git a/apps/api/v2/src/modules/organizations/event-types/services/organizations-event-types.service.ts b/apps/api/v2/src/modules/organizations/event-types/services/organizations-event-types.service.ts index ac8e0cc384..586aa718cf 100644 --- a/apps/api/v2/src/modules/organizations/event-types/services/organizations-event-types.service.ts +++ b/apps/api/v2/src/modules/organizations/event-types/services/organizations-event-types.service.ts @@ -1,5 +1,9 @@ import { MembershipsRepository } from "@/modules/memberships/memberships.repository"; import { OrganizationsEventTypesRepository } from "@/modules/organizations/event-types/organizations-event-types.repository"; +import { + TransformedCreateTeamEventTypeInput, + TransformedUpdateTeamEventTypeInput, +} from "@/modules/organizations/event-types/services/input.service"; import { DatabaseTeamEventType } from "@/modules/organizations/event-types/services/output.service"; import { PrismaWriteService } from "@/modules/prisma/prisma-write.service"; import { TeamsEventTypesService } from "@/modules/teams/event-types/services/teams-event-types.service"; @@ -7,8 +11,8 @@ import { UsersService } from "@/modules/users/services/users.service"; import { UserWithProfile } from "@/modules/users/users.repository"; import { Injectable, Logger } from "@nestjs/common"; -import { createEventType } from "@calcom/platform-libraries"; -import { InputTeamEventTransformed_2024_06_14 } from "@calcom/platform-types"; +// eslint-disable-next-line @typescript-eslint/no-var-requires +import { createEventType } from "@calcom/platform-libraries/event-types"; @Injectable() export class OrganizationsEventTypesService { @@ -26,14 +30,16 @@ export class OrganizationsEventTypesService { user: UserWithProfile, teamId: number, orgId: number, - body: InputTeamEventTransformed_2024_06_14 + body: TransformedCreateTeamEventTypeInput ): Promise { const eventTypeUser = await this.getUserToCreateTeamEvent(user, orgId); // eslint-disable-next-line @typescript-eslint/no-unused-vars const { hosts, children, destinationCalendar, ...rest } = body; - const { eventType: eventTypeCreated } = await createEventType({ - input: { teamId: teamId, ...rest }, + input: { + teamId: teamId, + ...rest, + }, ctx: { user: eventTypeUser, // eslint-disable-next-line @typescript-eslint/ban-ts-comment @@ -57,6 +63,7 @@ export class OrganizationsEventTypesService { organization: { isOrgAdmin }, profile: { id: profileId || null }, metadata: user.metadata, + email: user.email, }; } @@ -87,7 +94,7 @@ export class OrganizationsEventTypesService { async updateTeamEventType( eventTypeId: number, teamId: number, - body: InputTeamEventTransformed_2024_06_14, + body: TransformedUpdateTeamEventTypeInput, user: UserWithProfile ): Promise { return this.teamsEventTypesService.updateTeamEventType(eventTypeId, teamId, body, user); diff --git a/apps/api/v2/src/modules/organizations/teams/memberships/organizations-teams-memberships.controller.ts b/apps/api/v2/src/modules/organizations/teams/memberships/organizations-teams-memberships.controller.ts index 50c40eead7..ecca8145e8 100644 --- a/apps/api/v2/src/modules/organizations/teams/memberships/organizations-teams-memberships.controller.ts +++ b/apps/api/v2/src/modules/organizations/teams/memberships/organizations-teams-memberships.controller.ts @@ -37,7 +37,7 @@ import { ApiOperation, ApiTags as DocsTags } from "@nestjs/swagger"; import { plainToClass } from "class-transformer"; import { SUCCESS_STATUS } from "@calcom/platform-constants"; -import { updateNewTeamMemberEventTypes } from "@calcom/platform-libraries"; +import { updateNewTeamMemberEventTypes } from "@calcom/platform-libraries/event-types"; import { SkipTakePagination } from "@calcom/platform-types"; @Controller({ diff --git a/apps/api/v2/src/modules/selected-calendars/selected-calendars.repository.ts b/apps/api/v2/src/modules/selected-calendars/selected-calendars.repository.ts index 5dd45ea19b..2082aeaad9 100644 --- a/apps/api/v2/src/modules/selected-calendars/selected-calendars.repository.ts +++ b/apps/api/v2/src/modules/selected-calendars/selected-calendars.repository.ts @@ -62,6 +62,15 @@ export class SelectedCalendarsRepository { }); } + getUserEventTypeSelectedCalendar(userId: number) { + return this.dbRead.prisma.selectedCalendar.findMany({ + where: { + userId, + eventTypeId: { not: null }, + }, + }); + } + async addUserSelectedCalendar( userId: number, integration: string, diff --git a/apps/api/v2/src/modules/teams/event-types/services/teams-event-types.service.ts b/apps/api/v2/src/modules/teams/event-types/services/teams-event-types.service.ts index bb9c5992c0..cd692c1aad 100644 --- a/apps/api/v2/src/modules/teams/event-types/services/teams-event-types.service.ts +++ b/apps/api/v2/src/modules/teams/event-types/services/teams-event-types.service.ts @@ -1,5 +1,9 @@ import { EventTypesRepository_2024_06_14 } from "@/ee/event-types/event-types_2024_06_14/event-types.repository"; import { EventTypesService_2024_06_14 } from "@/ee/event-types/event-types_2024_06_14/services/event-types.service"; +import { + TransformedCreateTeamEventTypeInput, + TransformedUpdateTeamEventTypeInput, +} from "@/modules/organizations/event-types/services/input.service"; import { DatabaseTeamEventType } from "@/modules/organizations/event-types/services/output.service"; import { PrismaWriteService } from "@/modules/prisma/prisma-write.service"; import { TeamsEventTypesRepository } from "@/modules/teams/event-types/teams-event-types.repository"; @@ -7,8 +11,7 @@ import { UsersService } from "@/modules/users/services/users.service"; import { UserWithProfile } from "@/modules/users/users.repository"; import { Injectable, NotFoundException, Logger } from "@nestjs/common"; -import { createEventType, updateEventType } from "@calcom/platform-libraries"; -import { InputTeamEventTransformed_2024_06_14 } from "@calcom/platform-types"; +import { createEventType, updateEventType } from "@calcom/platform-libraries/event-types"; @Injectable() export class TeamsEventTypesService { @@ -25,7 +28,7 @@ export class TeamsEventTypesService { async createTeamEventType( user: UserWithProfile, teamId: number, - body: InputTeamEventTransformed_2024_06_14 + body: TransformedCreateTeamEventTypeInput ): Promise { const eventTypeUser = await this.getUserToCreateTeamEvent(user); // eslint-disable-next-line @typescript-eslint/no-unused-vars @@ -62,6 +65,7 @@ export class TeamsEventTypesService { organization: { id: null, isOrgAdmin: false, metadata: {}, requestedSlug: null }, profile: { id: profileId || null }, metadata: user.metadata, + email: user.email, }; } @@ -100,14 +104,16 @@ export class TeamsEventTypesService { async updateTeamEventType( eventTypeId: number, teamId: number, - body: InputTeamEventTransformed_2024_06_14, + body: TransformedUpdateTeamEventTypeInput, user: UserWithProfile ): Promise { await this.validateEventTypeExists(teamId, eventTypeId); const eventTypeUser = await this.eventTypesService.getUserToUpdateEvent(user); - await updateEventType({ - input: { id: eventTypeId, ...body }, + input: { + id: eventTypeId, + ...body, + }, ctx: { user: eventTypeUser, // eslint-disable-next-line @typescript-eslint/ban-ts-comment diff --git a/apps/api/v2/src/modules/teams/memberships/controllers/teams-memberships.controller.ts b/apps/api/v2/src/modules/teams/memberships/controllers/teams-memberships.controller.ts index 2d1ed36504..bb62333b96 100644 --- a/apps/api/v2/src/modules/teams/memberships/controllers/teams-memberships.controller.ts +++ b/apps/api/v2/src/modules/teams/memberships/controllers/teams-memberships.controller.ts @@ -31,7 +31,7 @@ import { ApiOperation, ApiTags as DocsTags } from "@nestjs/swagger"; import { plainToClass } from "class-transformer"; import { SUCCESS_STATUS } from "@calcom/platform-constants"; -import { updateNewTeamMemberEventTypes } from "@calcom/platform-libraries"; +import { updateNewTeamMemberEventTypes } from "@calcom/platform-libraries/event-types"; import { SkipTakePagination } from "@calcom/platform-types"; @Controller({ diff --git a/apps/api/v2/swagger/documentation.json b/apps/api/v2/swagger/documentation.json index c224b0f67b..9e98514509 100644 --- a/apps/api/v2/swagger/documentation.json +++ b/apps/api/v2/swagger/documentation.json @@ -15999,7 +15999,7 @@ "type": "object", "properties": { "id": { - "type": "number" + "type": "object" }, "integration": { "type": "string" diff --git a/apps/api/v2/tsconfig.json b/apps/api/v2/tsconfig.json index 41fb06ff41..5d375c798c 100644 --- a/apps/api/v2/tsconfig.json +++ b/apps/api/v2/tsconfig.json @@ -19,6 +19,7 @@ "@calcom/platform-types": ["../../../packages/platform/types/index.ts"], "@calcom/platform-utils": ["../../../packages/platform/utils/index.ts"], "@calcom/platform-enums": ["../../../packages/platform/enums/index.ts"], + "@calcom/platform-libraries/event-types": ["../../../packages/platform/libraries/event-types.ts"], "@calcom/platform-libraries/slots": ["../../../packages/platform/libraries/slots.ts"] }, "incremental": true, diff --git a/docs/api-reference/v2/openapi.json b/docs/api-reference/v2/openapi.json index 2449600829..47456fc619 100644 --- a/docs/api-reference/v2/openapi.json +++ b/docs/api-reference/v2/openapi.json @@ -14408,7 +14408,7 @@ "type": "object", "properties": { "id": { - "type": "number" + "type": "object" }, "integration": { "type": "string" @@ -16511,7 +16511,7 @@ "externalId": { "type": "string", "example": "https://caldav.icloud.com/26962146906/calendars/1644422A-1945-4438-BBC0-4F0Q23A57R7S/", - "description": "Unique identifier used to represent the specfic calendar, as returned by the /calendars endpoint" + "description": "Unique identifier used to represent the specific calendar, as returned by the /calendars endpoint" }, "delegationCredentialId": { "type": "string" diff --git a/packages/lib/event-types/transformers/api-to-internal/seats.ts b/packages/lib/event-types/transformers/api-to-internal/seats.ts index b6783b3a90..a14ccbc59c 100644 --- a/packages/lib/event-types/transformers/api-to-internal/seats.ts +++ b/packages/lib/event-types/transformers/api-to-internal/seats.ts @@ -6,10 +6,8 @@ import type { export function transformSeatsApiToInternal( inputSeats: CreateEventTypeInput_2024_06_14["seats"] -): SeatOptionsTransformedSchema | SeatOptionsDisabledSchema | undefined { - if (!inputSeats) return undefined; - - if (inputSeats.disabled) +): SeatOptionsTransformedSchema | SeatOptionsDisabledSchema { + if (!inputSeats || inputSeats.disabled) return { seatsPerTimeSlot: null, }; diff --git a/packages/lib/event-types/transformers/internal-to-api/seats.ts b/packages/lib/event-types/transformers/internal-to-api/seats.ts index 5987c0747f..07f17504e0 100644 --- a/packages/lib/event-types/transformers/internal-to-api/seats.ts +++ b/packages/lib/event-types/transformers/internal-to-api/seats.ts @@ -1,20 +1,21 @@ import type { SeatOptionsTransformedSchema, SeatOptionsDisabledSchema, - CreateEventTypeInput_2024_06_14, + Seats_2024_06_14, + Disabled_2024_06_14, } from "@calcom/platform-types"; export function transformSeatsInternalToApi( transformedSeats: SeatOptionsTransformedSchema | SeatOptionsDisabledSchema -): CreateEventTypeInput_2024_06_14["seats"] { +): Seats_2024_06_14 | Disabled_2024_06_14 { if (transformedSeats.seatsPerTimeSlot == null) { return { disabled: true, - }; + } satisfies Disabled_2024_06_14; } return { seatsPerTimeSlot: transformedSeats.seatsPerTimeSlot, showAttendeeInfo: transformedSeats.seatsShowAttendees, showAvailabilityCount: transformedSeats.seatsShowAvailabilityCount, - }; + } satisfies Seats_2024_06_14; } diff --git a/packages/platform/libraries/event-types.ts b/packages/platform/libraries/event-types.ts new file mode 100644 index 0000000000..fb87bd0c74 --- /dev/null +++ b/packages/platform/libraries/event-types.ts @@ -0,0 +1,72 @@ +import { getPublicEvent } from "@calcom/features/eventtypes/lib/getPublicEvent"; +import getBulkEventTypes from "@calcom/lib/event-types/getBulkEventTypes"; + +export { createHandler as createEventType } from "@calcom/trpc/server/routers/viewer/eventTypes/create.handler"; +export { updateHandler as updateEventType } from "@calcom/trpc/server/routers/viewer/eventTypes/update.handler"; + +export type { TUpdateInputSchema as TUpdateEventTypeInputSchema } from "@calcom/trpc/server/routers/viewer/eventTypes/update.schema"; +export type { EventTypesPublic } from "@calcom/lib/event-types/getEventTypesPublic"; +export { getEventTypesPublic } from "@calcom/lib/event-types/getEventTypesPublic"; +export { parseEventTypeColor } from "@calcom/lib/isEventTypeColor"; +export { + // note(Lauris): Api to internal + transformBookingFieldsApiToInternal, + transformLocationsApiToInternal, + transformTeamLocationsApiToInternal, + transformIntervalLimitsApiToInternal, + transformFutureBookingLimitsApiToInternal, + transformRecurrenceApiToInternal, + transformBookerLayoutsApiToInternal, + transformConfirmationPolicyApiToInternal, + transformEventColorsApiToInternal, + transformSeatsApiToInternal, + // note(Lauris): Internal to api + transformBookingFieldsInternalToApi, + transformLocationsInternalToApi, + transformIntervalLimitsInternalToApi, + transformFutureBookingLimitsInternalToApi, + transformRecurrenceInternalToApi, + transformBookerLayoutsInternalToApi, + transformRequiresConfirmationInternalToApi, + transformEventTypeColorsInternalToApi, + transformSeatsInternalToApi, + // note(Lauris): schemas + InternalLocationsSchema, + InternalLocationSchema, + BookingFieldsSchema, + BookingFieldSchema, + // note(Lauris): constants + systemBeforeFieldName, + systemBeforeFieldEmail, + systemBeforeFieldLocation, + systemAfterFieldRescheduleReason, + systemAfterFieldTitle, + systemAfterFieldNotes, + systemAfterFieldGuests, +} from "@calcom/lib/event-types/transformers"; + +export type { + SystemField, + CustomField, + NameSystemField, + EmailSystemField, + InternalLocation, +} from "@calcom/lib/event-types/transformers"; + +export { EventTypeMetaDataSchema } from "@calcom/prisma/zod-utils"; + +export { validateCustomEventName } from "@calcom/lib/event"; + +export { getEventTypeById } from "@calcom/lib/event-types/getEventTypeById"; +export { getEventTypesByViewer } from "@calcom/lib/event-types/getEventTypesByViewer"; +export type { EventType } from "@calcom/lib/event-types/getEventTypeById"; +export type { EventTypesByViewer } from "@calcom/lib/event-types/getEventTypesByViewer"; +export type { UpdateEventTypeReturn } from "@calcom/trpc/server/routers/viewer/eventTypes/update.handler"; +export { eventTypeBookingFields, eventTypeLocations } from "@calcom/prisma/zod-utils"; +export { updateNewTeamMemberEventTypes } from "@calcom/lib/server/queries"; + +export { getBulkEventTypes }; + +export type PublicEventType = Awaited>; +export { bulkUpdateEventsToDefaultLocation } from "@calcom/lib/bulkUpdateEventsToDefaultLocation"; +export { getPublicEvent }; diff --git a/packages/platform/libraries/index.ts b/packages/platform/libraries/index.ts index 590e11b81a..83358d8cc7 100644 --- a/packages/platform/libraries/index.ts +++ b/packages/platform/libraries/index.ts @@ -24,7 +24,6 @@ import handleCancelBooking from "@calcom/features/bookings/lib/handleCancelBooki import * as newBookingMethods from "@calcom/features/bookings/lib/handleNewBooking"; import handleDeleteCredential from "@calcom/features/credentials/handleDeleteCredential"; import { getClientSecretFromPayment } from "@calcom/features/ee/payments/pages/getClientSecretFromPayment"; -import { getPublicEvent } from "@calcom/features/eventtypes/lib/getPublicEvent"; import { handleCreatePhoneCall } from "@calcom/features/handleCreatePhoneCall"; import handleMarkNoShow from "@calcom/features/handleMarkNoShow"; import * as instantMeetingMethods from "@calcom/features/instant-meeting/handleInstantMeeting"; @@ -45,7 +44,6 @@ import { getAllDelegationCredentialsForUserByAppType, checkIfSuccessfullyConfiguredInWorkspace, } from "@calcom/lib/delegationCredential/server"; -import getBulkEventTypes from "@calcom/lib/event-types/getBulkEventTypes"; import { getRoutedUrl } from "@calcom/lib/server/getRoutedUrl"; import { getTeamMemberEmailForResponseOrContactUsingUrlQuery } from "@calcom/lib/server/getTeamMemberEmailFromCrm"; import { getTranslation } from "@calcom/lib/server/i18n"; @@ -90,21 +88,8 @@ export type UpdateScheduleOutputType = Awaited< > >; -export { getEventTypeById } from "@calcom/lib/event-types/getEventTypeById"; -export { getEventTypesByViewer } from "@calcom/lib/event-types/getEventTypesByViewer"; -export { getEventTypesPublic } from "@calcom/lib/event-types/getEventTypesPublic"; -export { createHandler as createEventType } from "@calcom/trpc/server/routers/viewer/eventTypes/create.handler"; -export { updateHandler as updateEventType } from "@calcom/trpc/server/routers/viewer/eventTypes/update.handler"; - export { SchedulingType, PeriodType } from "@calcom/prisma/enums"; -export type { EventType } from "@calcom/lib/event-types/getEventTypeById"; -export type { EventTypesByViewer } from "@calcom/lib/event-types/getEventTypesByViewer"; -export type { EventTypesPublic } from "@calcom/lib/event-types/getEventTypesPublic"; -export type { UpdateEventTypeReturn } from "@calcom/trpc/server/routers/viewer/eventTypes/update.handler"; - -export type PublicEventType = Awaited>; -export { getPublicEvent }; export { getUsernameList } from "@calcom/lib/defaultEvents"; const handleNewBooking = newBookingMethods.default; @@ -121,7 +106,7 @@ export { getConnectedDestinationCalendarsAndEnsureDefaultsInDb } from "@calcom/l export type { ConnectedDestinationCalendars } from "@calcom/lib/getConnectedDestinationCalendars"; export { getConnectedApps } from "@calcom/lib/getConnectedApps"; -export { bulkUpdateEventsToDefaultLocation } from "@calcom/lib/bulkUpdateEventsToDefaultLocation"; + export type { ConnectedApps } from "@calcom/lib/getConnectedApps"; export { getBusyCalendarTimes } from "@calcom/lib/CalendarManager"; @@ -148,63 +133,14 @@ export type { CityTimezones } from "@calcom/features/cityTimezones/cityTimezones export { TRPCError } from "@trpc/server"; export type { TUpdateInputSchema } from "@calcom/trpc/server/routers/viewer/availability/schedule/update.schema"; -export type { TUpdateInputSchema as TUpdateEventTypeInputSchema } from "@calcom/trpc/server/routers/viewer/eventTypes/update.schema"; export { createNewUsersConnectToOrgIfExists, sendSignupToOrganizationEmail }; export { getAllUserBookings }; export { getBookingInfo }; export { handleCancelBooking }; -export { eventTypeBookingFields, eventTypeLocations } from "@calcom/prisma/zod-utils"; +export { userMetadata, bookingMetadataSchema } from "@calcom/prisma/zod-utils"; -export { EventTypeMetaDataSchema, userMetadata, bookingMetadataSchema } from "@calcom/prisma/zod-utils"; - -export { - // note(Lauris): Api to internal - transformBookingFieldsApiToInternal, - transformLocationsApiToInternal, - transformTeamLocationsApiToInternal, - transformIntervalLimitsApiToInternal, - transformFutureBookingLimitsApiToInternal, - transformRecurrenceApiToInternal, - transformBookerLayoutsApiToInternal, - transformConfirmationPolicyApiToInternal, - transformEventColorsApiToInternal, - transformSeatsApiToInternal, - // note(Lauris): Internal to api - transformBookingFieldsInternalToApi, - transformLocationsInternalToApi, - transformIntervalLimitsInternalToApi, - transformFutureBookingLimitsInternalToApi, - transformRecurrenceInternalToApi, - transformBookerLayoutsInternalToApi, - transformRequiresConfirmationInternalToApi, - transformEventTypeColorsInternalToApi, - transformSeatsInternalToApi, - // note(Lauris): schemas - InternalLocationsSchema, - InternalLocationSchema, - BookingFieldsSchema, - BookingFieldSchema, - // note(Lauris): constants - systemBeforeFieldName, - systemBeforeFieldEmail, - systemBeforeFieldLocation, - systemAfterFieldRescheduleReason, - systemAfterFieldTitle, - systemAfterFieldNotes, - systemAfterFieldGuests, -} from "@calcom/lib/event-types/transformers"; - -export type { - SystemField, - CustomField, - NameSystemField, - EmailSystemField, - InternalLocation, -} from "@calcom/lib/event-types/transformers"; - -export { parseEventTypeColor } from "@calcom/lib"; export { parseBookingLimit } from "@calcom/lib/intervalLimits/isBookingLimits"; export { parseRecurringEvent } from "@calcom/lib/isRecurringEvent"; @@ -217,8 +153,6 @@ export { getCalendar }; export { getTranslation }; -export { updateNewTeamMemberEventTypes } from "@calcom/lib/server/queries"; - export { roundRobinReassignment } from "@calcom/features/ee/round-robin/roundRobinReassignment"; export { roundRobinManualReassignment } from "@calcom/features/ee/round-robin/roundRobinManualReassignment"; @@ -266,7 +200,6 @@ export { OrganizerRequestEmail }; export { AttendeeRequestEmail }; export { handleDeleteCredential }; -export { getBulkEventTypes }; export { getBookingFieldsWithSystemFields }; diff --git a/packages/platform/libraries/package.json b/packages/platform/libraries/package.json index ffae8384fb..17c5d66443 100644 --- a/packages/platform/libraries/package.json +++ b/packages/platform/libraries/package.json @@ -29,6 +29,11 @@ "vite-plugin-environment": "^1.1.3" }, "exports": { + "./event-types": { + "import": "./dist/event-types.js", + "require": "./dist/event-types.cjs", + "types": "./dist/event-types.d.ts" + }, ".": { "import": "./dist/index.js", "require": "./dist/index.cjs", @@ -42,6 +47,9 @@ }, "typesVersions": { "*": { + "event-types": [ + "dist/event-types.d.ts" + ], "slots": [ "dist/slots.d.ts" ] diff --git a/packages/platform/libraries/vite.config.js b/packages/platform/libraries/vite.config.js index 3636010b69..2fa8a96c3c 100644 --- a/packages/platform/libraries/vite.config.js +++ b/packages/platform/libraries/vite.config.js @@ -18,6 +18,7 @@ export default defineConfig({ lib: { entry: { index: resolve(__dirname, "./index.ts"), + "event-types": resolve(__dirname, "./event-types.ts"), slots: resolve(__dirname, "./slots.ts"), }, name: "calcom-lib", diff --git a/packages/platform/types/event-types/event-types_2024_06_14/outputs/event-type.output.ts b/packages/platform/types/event-types/event-types_2024_06_14/outputs/event-type.output.ts index 5f5f69e536..8c1b2f0752 100644 --- a/packages/platform/types/event-types/event-types_2024_06_14/outputs/event-type.output.ts +++ b/packages/platform/types/event-types/event-types_2024_06_14/outputs/event-type.output.ts @@ -33,6 +33,7 @@ import { BookerLayouts_2024_06_14 } from "../inputs/booker-layouts.input"; import type { BookingLimitsCount_2024_06_14 } from "../inputs/booking-limits-count.input"; import type { ConfirmationPolicy_2024_06_14 } from "../inputs/confirmation-policy.input"; import { DestinationCalendar_2024_06_14 } from "../inputs/destination-calendar.input"; +import type { Disabled_2024_06_14 } from "../inputs/disabled.input"; import { EmailDefaultFieldOutput_2024_06_14, NameDefaultFieldOutput_2024_06_14, @@ -401,7 +402,7 @@ class BaseEventTypeOutput_2024_06_14 { @IsOptional() @Type(() => Seats_2024_06_14) @ApiPropertyOptional({ type: Seats_2024_06_14 }) - seats?: Seats_2024_06_14; + seats?: Seats_2024_06_14 | Disabled_2024_06_14; @IsOptional() @IsInt()