From ff38d6c7db87707f1bf520fc1ec801e67576ebc4 Mon Sep 17 00:00:00 2001 From: Benny Joo Date: Mon, 13 Oct 2025 11:01:02 -0400 Subject: [PATCH] refactor: Remove circular deps between @calcom/lib and @calcom/features [1] (#24399) * add eslint config * migrate autoLock to features * migrate teamService to features * migrate userCreationService * migrate insights services to features * migrate ProfileRepository * update imports * migrate filter segmen tests * migrate filter segment repository * migrate getBusyTimes * migrate getLocaleFromRequest * refactor csvUtils * make filename clearer * migrate getLuckyUser integration test * migrate autoLock test to features * wip * refactors * migrate useBookerUrl * migrate more * wip * Migrate eventTypeRepository * membership repository * update imports * update imports * migrate * move organization repository * update imports * update imports * wip * wip * wip * wip * wip * wip * wip * wip * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix tests * fix type checks * fix * fix * migrate * update imports * fix tests * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix --- .../v1/lib/helpers/rateLimitApiKey.test.ts | 4 +- apps/api/v1/lib/helpers/rateLimitApiKey.ts | 2 +- apps/api/v1/lib/validations/user.ts | 2 +- .../v1/pages/api/connected-calendars/_get.ts | 2 +- .../v1/pages/api/users/[userId]/_delete.ts | 2 +- apps/api/v1/pages/api/users/_post.ts | 2 +- apps/api/v1/test/lib/bookings/_post.test.ts | 4 +- .../team/[slug]/[type]/pageWithCachedData.tsx | 2 +- .../team/[slug]/[type]/queries.ts | 2 +- .../(main-nav)/availability/page.tsx | 2 +- .../(main-nav)/teams/server-page.tsx | 2 +- .../apps/(homepage)/page.tsx | 2 +- .../getting-started/[[...step]]/page.tsx | 2 +- .../admin/organizations/[id]/edit/page.tsx | 2 +- .../admin/users/[id]/edit/page.tsx | 2 +- .../developer/webhooks/[id]/page.tsx | 5 +- .../teams/other/(main-page)/page.tsx | 2 +- .../video/meeting-not-started/[uid]/page.tsx | 2 +- .../app/(use-page-wrapper)/workflows/page.tsx | 2 +- .../app/api/availability/calendar/route.ts | 2 +- .../api/cron/calendar-subscriptions/route.ts | 2 +- .../web/app/api/support/conversation/route.ts | 4 +- apps/web/app/api/username/route.ts | 2 +- .../calendar-subscription/[provider]/route.ts | 2 +- apps/web/app/cache/membership.ts | 2 +- .../apps/alby/AlbyPaymentComponent.tsx | 2 +- .../btcpayserver/BtcpayPaymentComponent.tsx | 2 +- apps/web/components/dialog/RerouteDialog.tsx | 2 +- .../[[...step]]/getServerSideProps.ts | 2 +- .../getServerSidePropsRoutingLink.ts | 2 +- .../getServerSidePropsSingleForm.ts | 4 +- .../d/[link]/[slug]/getServerSideProps.tsx | 9 +- .../team/[slug]/[type]/getServerSideProps.ts | 4 +- apps/web/lib/pages/auth/verify-email.test.ts | 2 +- apps/web/lib/pages/auth/verify-email.ts | 2 +- .../reschedule/[uid]/getServerSideProps.ts | 2 +- .../team/[slug]/[type]/getServerSideProps.tsx | 2 +- .../lib/team/[slug]/getServerSideProps.tsx | 2 +- .../web/lib/video/[uid]/getServerSideProps.ts | 8 +- .../meeting-ended/[uid]/getServerSideProps.ts | 2 +- .../[uid]/getServerSideProps.ts | 2 +- ...ookings-single-view.getServerSideProps.tsx | 4 +- .../bookings/views/bookings-single-view.tsx | 6 +- apps/web/modules/test-setup.ts | 2 +- apps/web/pages/api/book/event.ts | 2 +- apps/web/playwright/fixtures/users.ts | 2 +- apps/web/playwright/lib/orgMigration.ts | 2 +- .../lib/[user]/[type]/getServerSideProps.ts | 6 +- .../server/lib/[user]/getServerSideProps.ts | 2 +- .../sso/[provider]/getServerSideProps.tsx | 2 +- apps/web/test/lib/checkBookingLimits.test.ts | 2 +- apps/web/test/lib/checkDurationLimits.test.ts | 4 +- apps/web/test/lib/generateCsv.test.ts | 5 +- .../utils/bookingScenario/bookingScenario.ts | 2 +- packages/app-store/_appRegistry.ts | 2 +- .../_utils/oauth/updateProfilePhotoGoogle.ts | 2 +- .../_utils/throwIfNotHaveAdminAccessToTeam.ts | 2 +- .../app-store/delegationCredential.test.ts | 4 +- packages/app-store/delegationCredential.ts | 2 +- packages/app-store/hubspot/lib/CrmService.ts | 2 +- .../routerGetCrmContactOwnerEmail.ts | 2 +- .../app-store/salesforce/lib/CrmService.ts | 2 +- .../__tests__/CrmService.integration.test.ts | 2 +- .../stripepayment/lib/PaymentService.ts | 2 +- .../src/components/UserFieldsResponses.tsx | 2 +- packages/features/apps/components/AllApps.tsx | 2 +- packages/features/apps/components/AppCard.tsx | 2 +- .../auth}/lib/getLocaleFromRequest.ts | 0 .../features/auth/lib/getServerSession.ts | 2 +- .../features/auth/lib/next-auth-options.ts | 6 +- .../auth/signup/handlers/calcomHandler.ts | 2 +- .../signup/utils/createOrUpdateMemberships.ts | 2 +- .../auth/signup/utils/organization.ts | 2 +- .../availability/lib/getUserAvailability.ts | 12 +- .../BookEventForm/BookingFields.tsx | 3 +- .../Booker/components/hooks/useBookings.ts | 2 +- .../components/event-meta/Members.tsx | 4 +- .../bookings}/hooks/useBookerUrl.ts | 0 .../features/bookings/lib/EventManager.ts | 2 +- .../lib/bookingSuccessRedirect.test.ts | 0 .../bookings}/lib/bookingSuccessRedirect.ts | 3 +- .../bookings/lib}/checkBookingLimits.ts | 9 +- .../bookings/lib}/checkDurationLimits.ts | 9 +- .../getAllCredentials.test.ts | 4 +- .../getAllCredentials.ts | 2 +- .../features/bookings/lib/getBookingFields.ts | 2 +- .../bookings/lib/getCalEventResponses.ts | 2 +- .../lib/getLabelValueMapFromResponses.ts | 2 +- .../lib}/getLuckyUser.integration-test.ts | 0 .../features/bookings/lib/getLuckyUser.ts | 4 +- .../bookings/lib/handleCancelBooking.ts | 4 +- .../bookings/lib/handleConfirmation.ts | 2 +- .../features/bookings/lib/handleNewBooking.ts | 10 +- .../checkBookingAndDurationLimits.ts | 4 +- .../handleNewBooking/getEventTypesFromDB.ts | 2 +- .../getRequiresConfirmationFlags.ts | 2 +- .../handleNewBooking/loadAndValidateUsers.ts | 2 +- .../lib/handleNewBooking/loadUsers.ts | 2 +- .../originalRescheduledBookingUtils.ts | 2 +- .../handleSeats/cancel/cancelAttendeeSeat.ts | 8 +- .../filterHostsBySameRoundRobinHost.test.ts | 2 +- .../filterHostsBySameRoundRobinHost.ts | 2 +- ...QualifiedHostsWithDelegationCredentials.ts | 2 +- .../bookings/lib/payment/getBooking.ts | 2 +- .../lib/payment/handleNoShowFee.test.ts | 6 +- .../bookings/lib/payment/handleNoShowFee.ts | 2 +- .../processNoShowFeeOnCancellation.test.ts | 4 +- .../payment/processNoShowFeeOnCancellation.ts | 2 +- .../repositories/BookingRepository.test.ts} | 2 +- .../repositories/BookingRepository.ts} | 3 +- .../bot-detection/BotDetectionService.test.ts | 2 +- .../bot-detection/BotDetectionService.ts | 2 +- .../busyTimes/lib}/getBusyTimesFromLimits.ts | 11 +- .../busyTimes/services}/getBusyTimes.test.ts | 0 .../busyTimes/services}/getBusyTimes.ts | 5 +- .../lib/sync/CalendarSyncService.ts | 2 +- .../lib/getConnectedDestinationCalendars.ts | 2 +- .../credentials/deleteCredential.test.ts | 4 +- .../crmManager}/crmScheduler.ts | 0 .../__tests__/filterSegments/create.test.ts | 6 +- .../__tests__/filterSegments/delete.test.ts | 6 +- .../__tests__/filterSegments/get.test.ts | 6 +- .../__tests__/filterSegments/update.test.ts | 6 +- .../data-table/repositories}/filterSegment.ts | 0 .../repositories}/filterSegment.type.ts | 0 .../features/di/containers/BookingLimits.ts | 2 +- packages/features/di/containers/BusyTimes.ts | 2 +- .../features/di/containers/InsightsBooking.ts | 4 +- .../features/di/containers/InsightsRouting.ts | 4 +- packages/features/di/modules/Booking.ts | 2 +- packages/features/di/modules/BusyTimes.ts | 5 +- .../features/di/modules/CheckBookingLimits.ts | 2 +- packages/features/di/modules/EventType.ts | 2 +- .../features/di/modules/InsightsBooking.ts | 4 +- .../features/di/modules/InsightsRouting.ts | 4 +- packages/features/di/modules/Membership.ts | 2 +- packages/features/di/modules/User.ts | 2 +- .../ee/api-keys/lib}/autoLock.test.ts | 2 +- .../ee/api-keys}/lib/autoLock.ts | 4 +- .../ee/billing/credit-service.test.ts | 4 +- .../features/ee/billing/credit-service.ts | 2 +- .../ee/dsync/lib/handleGroupEvents.ts | 2 +- .../features/ee/dsync/lib/handleUserEvents.ts | 2 +- .../ee/dsync/lib/inviteExistingUserToOrg.ts | 2 +- .../ee/dsync/lib/removeUserFromOrg.ts | 2 +- .../lib/users/createUsersAndConnectToOrg.ts | 4 +- .../lib/users/inviteExistingUserToOrg.ts | 2 +- .../lib/ImpersonationProvider.ts | 2 +- .../lib/OrganizationPaymentService.ts | 2 +- .../lib/OrganizationPermissionService.ts | 2 +- .../lib/ensureOrganizationIsReviewed.ts | 2 +- .../lib}/getBookerBaseUrlSync.ts | 0 .../organizations/lib/getBookerUrlServer.ts} | 4 +- .../ee/organizations/lib}/getBrand.ts | 0 .../organizations/lib/getTeamUrlSync.test.ts} | 7 +- .../ee/organizations/lib/getTeamUrlSync.ts} | 3 +- .../createOrganizationFromOnboarding.ts | 4 +- .../lib/server/orgCreationUtils.ts | 2 +- .../pages/components/OtherTeamList.tsx | 2 +- .../pages/components/OtherTeamsListing.tsx | 2 +- .../OrganizationRepository.test.ts} | 7 +- .../repositories/OrganizationRepository.ts} | 7 +- .../ee/payments/components/Payment.tsx | 2 +- .../features/ee/payments/pages/payment.tsx | 2 +- .../roundRobinManualReassignment.test.ts | 2 +- .../roundRobinManualReassignment.ts | 2 +- .../roundRobinReassignment.test.ts | 2 +- packages/features/ee/sso/lib/sso.ts | 2 +- .../ee/teams/components/TeamListItem.tsx | 2 +- .../deleteWorkflowRemindersOfRemovedMember.ts | 2 +- packages/features/ee/teams/lib/queries.ts | 4 +- .../ee/teams/pages/team-profile-view.tsx | 2 +- .../services}/teamService.alternative.test.ts | 0 .../services}/teamService.integration-test.ts | 2 +- .../ee/teams/services}/teamService.test.ts | 6 +- .../ee/teams/services}/teamService.ts | 4 +- .../workflows/api/scheduleEmailReminders.ts | 2 +- .../ee/workflows/api/scheduleSMSReminders.ts | 2 +- .../lib/reminders/aiPhoneCallManager.ts | 2 +- .../lib/reminders/reminderScheduler.ts | 2 +- .../features/ee/workflows/pages/index.tsx | 2 +- .../features/ee/workflows/pages/workflow.tsx | 2 +- .../repositories/WorkflowRepository.test.ts} | 4 +- .../repositories/WorkflowRepository.ts} | 3 +- packages/features/embed/lib/EmbedTabs.tsx | 2 +- packages/features/embed/lib/hooks/index.tsx | 2 +- .../components/ChildrenEventTypeSelect.tsx | 2 +- .../eventtypes/lib/getEventTypeById.ts | 6 +- .../eventtypes/lib/getEventTypesByViewer.ts | 12 +- .../features/eventtypes/lib/getPublicEvent.ts | 4 +- .../repositories/EventRepository.ts} | 0 .../repositories}/eventTypeRepository.ts | 13 +- packages/features/handleMarkNoShow.ts | 4 +- .../insights/server/routing-events.ts | 2 +- .../services}/InsightsBookingBaseService.ts | 11 +- .../services}/InsightsBookingDIService.ts | 0 ...InsightsBookingService.integration-test.ts | 2 +- .../services}/InsightsRoutingBaseService.ts | 3 +- .../services}/InsightsRoutingDIService.ts | 0 ...InsightsRoutingService.integration-test.ts | 2 +- .../repositories/MembershipRepository.ts} | 13 +- .../permission-check.service.test.ts | 4 +- .../pbac/services/permission-check.service.ts | 2 +- .../profile/lib}/checkRegularUsername.ts | 5 +- .../profile/lib}/checkUsername.ts | 2 +- .../lib/createAProfileForAnExistingUser.ts | 11 +- .../profile}/lib/hideBranding.ts | 9 +- .../repositories/ProfileRepository.ts} | 5 +- .../routing-forms/lib/getRoutedUrl.test.ts | 4 +- .../routing-forms/lib/getRoutedUrl.ts | 2 +- packages/features/shell/SideBar.tsx | 2 +- .../tasker/tasks/scanWorkflowBody.test.ts | 6 +- .../components/UserTable/UserListTable.tsx | 6 +- .../features/users/lib/UserListTableUtils.ts | 93 +++++++++ .../{userDeletionService.ts => deleteUser.ts} | 0 .../repositories/UserRepository.test.ts} | 3 +- .../users/repositories/UserRepository.ts} | 11 +- .../services}/userCreationService.test.ts | 4 +- .../users/services}/userCreationService.ts | 5 +- .../lib}/checkIfFreeEmailDomain.test.ts | 0 .../watchlist/lib}/checkIfFreeEmailDomain.ts | 0 packages/features/webhooks/lib/dto/types.ts | 2 +- .../lib/factory/FormPayloadBuilder.ts | 2 +- .../webhooks/lib/interface/repository.ts | 45 +++- .../lib/repository/WebhookRepository.ts | 195 +++++++++++++++++- .../lib/service/FormWebhookService.ts | 2 +- .../features/webhooks/pages/webhooks-view.tsx | 2 +- packages/lib/CalEventParser.ts | 2 +- .../bookings => }/lib/SystemField.ts | 0 .../bookings/buildEventUrlFromBooking.test.ts | 4 +- .../lib/bookings/buildEventUrlFromBooking.ts | 2 +- packages/lib/csvUtils.ts | 93 --------- packages/lib/eslint.config.mjs | 5 + .../repository/__mocks__/organization.ts | 4 +- .../__tests__/delegationCredential.test.ts | 4 +- .../server/repository/delegationCredential.ts | 3 +- packages/lib/server/repository/webhook.ts | 194 ----------------- .../lib/server/service/membershipService.ts | 3 +- packages/lib/server/service/workflows.test.ts | 6 +- packages/lib/server/service/workflows.ts | 4 +- .../attribute/server/assignValueToUser.ts | 2 +- .../service/attribute/server/getAttributes.ts | 2 +- packages/platform/libraries/bookings.ts | 2 +- packages/platform/libraries/index.ts | 2 +- packages/platform/libraries/repositories.ts | 8 +- packages/platform/libraries/slots.ts | 2 +- .../server/middlewares/sessionMiddleware.ts | 4 +- .../getAttributesForTeam.handler.ts | 2 +- .../getResponseWithFormFields.handler.ts | 2 +- .../routers/publicViewer/event.handler.ts | 2 +- .../admin/whitelistUserWorkflows.handler.ts | 2 +- .../viewer/aiVoiceAgent/listCalls.handler.ts | 2 +- .../apps/appCredentialsByType.handler.ts | 2 +- ...amMembersMatchingAttributeLogic.handler.ts | 2 +- .../team/listTeamAvailability.handler.ts | 2 +- .../viewer/bookings/confirm.handler.ts | 2 +- .../viewer/bookings/editLocation.handler.ts | 4 +- .../bookings/requestReschedule.handler.ts | 4 +- .../viewer/credits/buyCredits.handler.ts | 4 +- .../credits/downloadExpenseLog.handler.ts | 2 +- .../viewer/credits/getAllCredits.handler.ts | 4 +- .../getAffectedMembersForDisable.handler.ts | 2 +- .../__tests__/getUserEventGroups.test.ts | 64 +++--- .../eventTypes/getActiveOnOptions.handler.ts | 6 +- .../getEventTypesFromGroup.handler.ts | 2 +- .../eventTypes/getUserEventGroups.handler.ts | 4 +- .../viewer/eventTypes/heavy/create.handler.ts | 2 +- .../heavy/duplicate.handler.test.ts | 6 +- .../eventTypes/heavy/duplicate.handler.ts | 2 +- .../viewer/eventTypes/heavy/update.handler.ts | 2 +- .../eventTypes/usecases/EventGroupBuilder.ts | 4 +- .../server/routers/viewer/eventTypes/util.ts | 4 +- .../viewer/eventTypes/utils/transformUtils.ts | 4 +- .../routers/viewer/filterSegments/_router.tsx | 2 +- .../viewer/filterSegments/create.handler.ts | 4 +- .../viewer/filterSegments/delete.handler.ts | 4 +- .../viewer/filterSegments/list.handler.ts | 4 +- .../filterSegments/preference.handler.ts | 4 +- .../viewer/filterSegments/update.handler.ts | 4 +- .../routers/viewer/me/deleteMe.handler.ts | 2 +- .../server/routers/viewer/me/get.handler.ts | 4 +- .../routers/viewer/me/myStats.handler.ts | 2 +- .../routers/viewer/me/platformMe.handler.ts | 2 +- .../viewer/me/updateProfile.handler.ts | 2 +- .../viewer/organizations/adminGet.handler.ts | 2 +- .../organizations/adminVerify.handler.ts | 2 +- .../organizations/bulkDeleteUsers.handler.ts | 2 +- .../viewer/organizations/create.handler.ts | 4 +- .../organizations/createTeams.handler.ts | 2 +- .../viewer/organizations/getBrand.handler.ts | 2 +- .../viewer/organizations/list.handler.ts | 2 +- .../organizations/listMembers.handler.test.ts | 2 +- .../organizations/listMembers.handler.ts | 2 +- .../listOtherTeamMembers.handler.ts | 4 +- .../organizations/listOtherTeams.handler.ts | 2 +- .../organizations/updateUser.handler.ts | 2 +- .../viewer/payments/chargeCard.handler.ts | 2 +- ...rsMatchingAttributeLogicOfRoute.handler.ts | 4 +- .../slots/handleNotificationWhenNoSlots.ts | 2 +- .../viewer/slots/isAvailable.handler.ts | 2 +- .../trpc/server/routers/viewer/slots/util.ts | 12 +- .../viewer/teams/acceptOrLeave.handler.ts | 2 +- .../routers/viewer/teams/create.handler.ts | 2 +- .../viewer/teams/createInvite.handler.ts | 2 +- .../routers/viewer/teams/delete.handler.ts | 2 +- .../routers/viewer/teams/get.handler.test.ts | 4 +- .../routers/viewer/teams/get.handler.ts | 2 +- .../teams/getMemberAvailability.handler.ts | 2 +- .../viewer/teams/hasActiveTeamPlan.handler.ts | 2 +- .../viewer/teams/hasTeamPlan.handler.ts | 2 +- .../inviteMember/inviteMember.handler.ts | 2 +- .../viewer/teams/inviteMember/utils.ts | 6 +- .../teams/inviteMemberByToken.handler.ts | 2 +- .../viewer/teams/legacyListMembers.handler.ts | 2 +- .../viewer/teams/listMembers.handler.ts | 4 +- .../routers/viewer/teams/publish.handler.ts | 2 +- .../removeMember/BaseRemoveMemberService.ts | 2 +- .../LegacyRemoveMemberService.test.ts | 6 +- .../__tests__/PBACRemoveMemberService.test.ts | 4 +- .../getRoundRobinHostsToReasign.handler.ts | 2 +- .../roundRobinManualReassign.handler.ts | 2 +- .../roundRobin/roundRobinReassign.handler.ts | 2 +- .../viewer/teams/skipTeamTrials.handler.ts | 2 +- .../viewer/teams/skipTeamTrials.test.ts | 4 +- .../routers/viewer/webhook/get.handler.ts | 5 +- .../viewer/webhook/getByViewer.handler.ts | 8 +- .../workflows/activateEventType.handler.ts | 4 +- .../viewer/workflows/delete.handler.test.ts | 4 +- .../viewer/workflows/delete.handler.ts | 2 +- .../viewer/workflows/filteredList.handler.tsx | 2 +- .../routers/viewer/workflows/get.handler.ts | 2 +- .../routers/viewer/workflows/get.schema.ts | 4 +- .../workflows/getVerifiedEmails.handler.ts | 2 +- .../workflows/getVerifiedNumbers.handler.ts | 2 +- .../routers/viewer/workflows/list.handler.ts | 2 +- .../viewer/workflows/update.handler.ts | 4 +- .../server/routers/viewer/workflows/util.ts | 6 +- .../ui/components/avatar/UserAvatarGroup.tsx | 2 +- .../avatar/UserAvatarGroupWithOrg.tsx | 2 +- 339 files changed, 876 insertions(+), 833 deletions(-) rename packages/{ => features/auth}/lib/getLocaleFromRequest.ts (100%) rename packages/{lib => features/bookings}/hooks/useBookerUrl.ts (100%) rename packages/{ => features/bookings}/lib/bookingSuccessRedirect.test.ts (100%) rename packages/{ => features/bookings}/lib/bookingSuccessRedirect.ts (99%) rename packages/{lib/intervalLimits/server => features/bookings/lib}/checkBookingLimits.ts (88%) rename packages/{lib/intervalLimits/server => features/bookings/lib}/checkDurationLimits.ts (81%) rename packages/{ => features/bookings}/lib/getLabelValueMapFromResponses.ts (97%) rename packages/{lib/server => features/bookings/lib}/getLuckyUser.integration-test.ts (100%) rename packages/{lib/server/repository/booking.test.ts => features/bookings/repositories/BookingRepository.test.ts} (99%) rename packages/{lib/server/repository/booking.ts => features/bookings/repositories/BookingRepository.ts} (99%) rename packages/{lib/intervalLimits/server => features/busyTimes/lib}/getBusyTimesFromLimits.ts (95%) rename packages/{lib => features/busyTimes/services}/getBusyTimes.test.ts (100%) rename packages/{lib => features/busyTimes/services}/getBusyTimes.ts (98%) rename packages/{lib/crmManager/tasker => features/crmManager}/crmScheduler.ts (100%) rename packages/{lib/server/repository => features/data-table}/__tests__/filterSegments/create.test.ts (93%) rename packages/{lib/server/repository => features/data-table}/__tests__/filterSegments/delete.test.ts (94%) rename packages/{lib/server/repository => features/data-table}/__tests__/filterSegments/get.test.ts (97%) rename packages/{lib/server/repository => features/data-table}/__tests__/filterSegments/update.test.ts (96%) rename packages/{lib/server/repository => features/data-table/repositories}/filterSegment.ts (100%) rename packages/{lib/server/repository => features/data-table/repositories}/filterSegment.type.ts (100%) rename packages/{lib/__tests__ => features/ee/api-keys/lib}/autoLock.test.ts (99%) rename packages/{ => features/ee/api-keys}/lib/autoLock.ts (98%) rename packages/{lib/getBookerUrl => features/ee/organizations/lib}/getBookerBaseUrlSync.ts (100%) rename packages/{lib/getBookerUrl/server.ts => features/ee/organizations/lib/getBookerUrlServer.ts} (74%) rename packages/{lib/server => features/ee/organizations/lib}/getBrand.ts (100%) rename packages/{lib/getBookerUrl/client.test.ts => features/ee/organizations/lib/getTeamUrlSync.test.ts} (80%) rename packages/{lib/getBookerUrl/client.ts => features/ee/organizations/lib/getTeamUrlSync.ts} (74%) rename packages/{lib/server/repository/organization.test.ts => features/ee/organizations/repositories/OrganizationRepository.test.ts} (94%) rename packages/{lib/server/repository/organization.ts => features/ee/organizations/repositories/OrganizationRepository.ts} (97%) rename packages/{lib/server/service => features/ee/teams/services}/teamService.alternative.test.ts (100%) rename packages/{lib/server/service/__tests__ => features/ee/teams/services}/teamService.integration-test.ts (99%) rename packages/{lib/server/service => features/ee/teams/services}/teamService.test.ts (98%) rename packages/{lib/server/service => features/ee/teams/services}/teamService.ts (98%) rename packages/{lib/server/repository/workflow.test.ts => features/ee/workflows/repositories/WorkflowRepository.test.ts} (94%) rename packages/{lib/server/repository/workflow.ts => features/ee/workflows/repositories/WorkflowRepository.ts} (99%) rename packages/{lib/server/repository/event.ts => features/eventtypes/repositories/EventRepository.ts} (100%) rename packages/{lib/server/repository => features/eventtypes/repositories}/eventTypeRepository.ts (98%) rename packages/{lib/server/service => features/insights/services}/InsightsBookingBaseService.ts (99%) rename packages/{lib/server/service => features/insights/services}/InsightsBookingDIService.ts (100%) rename packages/{lib/server/service/__tests__ => features/insights/services}/InsightsBookingService.integration-test.ts (99%) rename packages/{lib/server/service => features/insights/services}/InsightsRoutingBaseService.ts (99%) rename packages/{lib/server/service => features/insights/services}/InsightsRoutingDIService.ts (100%) rename packages/{lib/server/service/__tests__ => features/insights/services}/InsightsRoutingService.integration-test.ts (99%) rename packages/{lib/server/repository/membership.ts => features/membership/repositories/MembershipRepository.ts} (96%) rename packages/{lib/server => features/profile/lib}/checkRegularUsername.ts (84%) rename packages/{lib/server => features/profile/lib}/checkUsername.ts (83%) rename packages/{ => features/profile}/lib/createAProfileForAnExistingUser.ts (87%) rename packages/{ => features/profile}/lib/hideBranding.ts (93%) rename packages/{lib/server/repository/profile.ts => features/profile/repositories/ProfileRepository.ts} (99%) create mode 100644 packages/features/users/lib/UserListTableUtils.ts rename packages/features/users/lib/{userDeletionService.ts => deleteUser.ts} (100%) rename packages/{lib/server/repository/user.test.ts => features/users/repositories/UserRepository.test.ts} (96%) rename packages/{lib/server/repository/user.ts => features/users/repositories/UserRepository.ts} (98%) rename packages/{lib/server/service => features/users/services}/userCreationService.test.ts (96%) rename packages/{lib/server/service => features/users/services}/userCreationService.ts (92%) rename packages/{lib/freeEmailDomainCheck => features/watchlist/lib}/checkIfFreeEmailDomain.test.ts (100%) rename packages/{lib/freeEmailDomainCheck => features/watchlist/lib}/checkIfFreeEmailDomain.ts (100%) rename packages/{features/bookings => }/lib/SystemField.ts (100%) delete mode 100644 packages/lib/server/repository/webhook.ts diff --git a/apps/api/v1/lib/helpers/rateLimitApiKey.test.ts b/apps/api/v1/lib/helpers/rateLimitApiKey.test.ts index 86dfc51d05..cad5fcf633 100644 --- a/apps/api/v1/lib/helpers/rateLimitApiKey.test.ts +++ b/apps/api/v1/lib/helpers/rateLimitApiKey.test.ts @@ -4,7 +4,7 @@ import type { NextApiResponse, NextApiRequest } from "next"; import { createMocks } from "node-mocks-http"; import { describe, it, expect, vi } from "vitest"; -import { handleAutoLock } from "@calcom/lib/autoLock"; +import { handleAutoLock } from "@calcom/features/ee/api-keys/lib/autoLock"; import { checkRateLimitAndThrowError } from "@calcom/lib/checkRateLimitAndThrowError"; import { HttpError } from "@calcom/lib/http-error"; @@ -19,7 +19,7 @@ vi.mock("@calcom/lib/checkRateLimitAndThrowError", () => ({ checkRateLimitAndThrowError: vi.fn(), })); -vi.mock("@calcom/lib/autoLock", () => ({ +vi.mock("@calcom/features/ee/api-keys/lib/autoLock", () => ({ handleAutoLock: vi.fn(), })); diff --git a/apps/api/v1/lib/helpers/rateLimitApiKey.ts b/apps/api/v1/lib/helpers/rateLimitApiKey.ts index b490c011bc..444f0f6261 100644 --- a/apps/api/v1/lib/helpers/rateLimitApiKey.ts +++ b/apps/api/v1/lib/helpers/rateLimitApiKey.ts @@ -1,6 +1,6 @@ import type { NextMiddleware } from "next-api-middleware"; -import { handleAutoLock } from "@calcom/lib/autoLock"; +import { handleAutoLock } from "@calcom/features/ee/api-keys/lib/autoLock"; import { checkRateLimitAndThrowError } from "@calcom/lib/checkRateLimitAndThrowError"; import { HttpError } from "@calcom/lib/http-error"; diff --git a/apps/api/v1/lib/validations/user.ts b/apps/api/v1/lib/validations/user.ts index efbf120757..c205e1e05e 100644 --- a/apps/api/v1/lib/validations/user.ts +++ b/apps/api/v1/lib/validations/user.ts @@ -1,7 +1,7 @@ import { z } from "zod"; +import { checkUsername } from "@calcom/features/profile/lib/checkUsername"; import { emailSchema } from "@calcom/lib/emailSchema"; -import { checkUsername } from "@calcom/lib/server/checkUsername"; import { iso8601 } from "@calcom/prisma/zod-utils"; import { UserSchema } from "@calcom/prisma/zod/modelSchema/UserSchema"; diff --git a/apps/api/v1/pages/api/connected-calendars/_get.ts b/apps/api/v1/pages/api/connected-calendars/_get.ts index 9329281a27..fa4a8bd5c9 100644 --- a/apps/api/v1/pages/api/connected-calendars/_get.ts +++ b/apps/api/v1/pages/api/connected-calendars/_get.ts @@ -2,9 +2,9 @@ import type { NextApiRequest } from "next"; import type { UserWithCalendars } from "@calcom/features/calendars/lib/getConnectedDestinationCalendars"; import { getConnectedDestinationCalendarsAndEnsureDefaultsInDb } from "@calcom/features/calendars/lib/getConnectedDestinationCalendars"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { HttpError } from "@calcom/lib/http-error"; import { defaultResponder } from "@calcom/lib/server/defaultResponder"; -import { UserRepository } from "@calcom/lib/server/repository/user"; import prisma from "@calcom/prisma"; import { extractUserIdsFromQuery } from "~/lib/utils/extractUserIdsFromQuery"; diff --git a/apps/api/v1/pages/api/users/[userId]/_delete.ts b/apps/api/v1/pages/api/users/[userId]/_delete.ts index 8ed534c49d..27c465ea07 100644 --- a/apps/api/v1/pages/api/users/[userId]/_delete.ts +++ b/apps/api/v1/pages/api/users/[userId]/_delete.ts @@ -1,6 +1,6 @@ import type { NextApiRequest } from "next"; -import { deleteUser } from "@calcom/features/users/lib/userDeletionService"; +import { deleteUser } from "@calcom/features/users/lib/deleteUser"; import { HttpError } from "@calcom/lib/http-error"; import { defaultResponder } from "@calcom/lib/server/defaultResponder"; import prisma from "@calcom/prisma"; diff --git a/apps/api/v1/pages/api/users/_post.ts b/apps/api/v1/pages/api/users/_post.ts index 001de340d5..3d79edde38 100644 --- a/apps/api/v1/pages/api/users/_post.ts +++ b/apps/api/v1/pages/api/users/_post.ts @@ -1,8 +1,8 @@ import type { NextApiRequest } from "next"; +import { UserCreationService } from "@calcom/features/users/services/userCreationService"; import { HttpError } from "@calcom/lib/http-error"; import { defaultResponder } from "@calcom/lib/server/defaultResponder"; -import { UserCreationService } from "@calcom/lib/server/service/userCreationService"; import { CreationSource } from "@calcom/prisma/enums"; import { schemaUserCreateBodyParams } from "~/lib/validations/user"; diff --git a/apps/api/v1/test/lib/bookings/_post.test.ts b/apps/api/v1/test/lib/bookings/_post.test.ts index 5f74118274..da25f3a596 100644 --- a/apps/api/v1/test/lib/bookings/_post.test.ts +++ b/apps/api/v1/test/lib/bookings/_post.test.ts @@ -66,7 +66,7 @@ vi.mock("@calcom/features/webhooks/lib/sendOrSchedulePayload", () => ({ })); const mockFindOriginalRescheduledBooking = vi.fn(); -vi.mock("@calcom/lib/server/repository/booking", () => ({ +vi.mock("@calcom/features/bookings/repositories/BookingRepository", () => ({ BookingRepository: vi.fn().mockImplementation(() => ({ findOriginalRescheduledBooking: mockFindOriginalRescheduledBooking, })), @@ -133,7 +133,7 @@ vi.mock("@calcom/features/bookings/lib/handleNewBooking/ensureAvailableUsers", ( }), })); -vi.mock("@calcom/lib/server/repository/profile", () => ({ +vi.mock("@calcom/features/profile/repositories/ProfileRepository", () => ({ ProfileRepository: { findManyForUser: vi.fn().mockResolvedValue([]), buildPersonalProfileFromUser: vi.fn().mockReturnValue({ diff --git a/apps/web/app/(booking-page-wrapper)/team/[slug]/[type]/pageWithCachedData.tsx b/apps/web/app/(booking-page-wrapper)/team/[slug]/[type]/pageWithCachedData.tsx index 1594ec72f7..73655d5c83 100644 --- a/apps/web/app/(booking-page-wrapper)/team/[slug]/[type]/pageWithCachedData.tsx +++ b/apps/web/app/(booking-page-wrapper)/team/[slug]/[type]/pageWithCachedData.tsx @@ -10,7 +10,7 @@ import { getBookingForReschedule, type GetBookingType } from "@calcom/features/b import { getOrgFullOrigin, orgDomainConfig } from "@calcom/features/ee/organizations/lib/orgDomains"; import { getOrganizationSEOSettings } from "@calcom/features/ee/organizations/lib/orgSettings"; import type { TeamData } from "@calcom/features/ee/teams/lib/getTeamData"; -import { shouldHideBrandingForTeamEvent } from "@calcom/lib/hideBranding"; +import { shouldHideBrandingForTeamEvent } from "@calcom/features/profile/lib/hideBranding"; import { loadTranslations } from "@calcom/lib/server/i18n"; import slugify from "@calcom/lib/slugify"; import { BookingStatus, RedirectType } from "@calcom/prisma/enums"; diff --git a/apps/web/app/(booking-page-wrapper)/team/[slug]/[type]/queries.ts b/apps/web/app/(booking-page-wrapper)/team/[slug]/[type]/queries.ts index 759b76de20..7821e16c2e 100644 --- a/apps/web/app/(booking-page-wrapper)/team/[slug]/[type]/queries.ts +++ b/apps/web/app/(booking-page-wrapper)/team/[slug]/[type]/queries.ts @@ -14,7 +14,7 @@ import { FeaturesRepository } from "@calcom/features/flags/features.repository"; import { NEXTJS_CACHE_TTL } from "@calcom/lib/constants"; import { getPlaceholderAvatar } from "@calcom/lib/defaultAvatarImage"; import { TeamRepository } from "@calcom/lib/server/repository/team"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { prisma } from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; import type { SchedulingType } from "@calcom/prisma/enums"; diff --git a/apps/web/app/(use-page-wrapper)/(main-nav)/availability/page.tsx b/apps/web/app/(use-page-wrapper)/(main-nav)/availability/page.tsx index 3e20456820..5ca5e9f438 100644 --- a/apps/web/app/(use-page-wrapper)/(main-nav)/availability/page.tsx +++ b/apps/web/app/(use-page-wrapper)/(main-nav)/availability/page.tsx @@ -6,9 +6,9 @@ import { cookies, headers } from "next/headers"; import { redirect } from "next/navigation"; import { getServerSession } from "@calcom/features/auth/lib/getServerSession"; +import { OrganizationRepository } from "@calcom/features/ee/organizations/repositories/OrganizationRepository"; import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; import { AvailabilitySliderTable } from "@calcom/features/timezone-buddy/components/AvailabilitySliderTable"; -import { OrganizationRepository } from "@calcom/lib/server/repository/organization"; import { MembershipRole } from "@calcom/prisma/enums"; import { availabilityRouter } from "@calcom/trpc/server/routers/viewer/availability/_router"; diff --git a/apps/web/app/(use-page-wrapper)/(main-nav)/teams/server-page.tsx b/apps/web/app/(use-page-wrapper)/(main-nav)/teams/server-page.tsx index d17fa76c1f..8a8ae334b9 100644 --- a/apps/web/app/(use-page-wrapper)/(main-nav)/teams/server-page.tsx +++ b/apps/web/app/(use-page-wrapper)/(main-nav)/teams/server-page.tsx @@ -5,7 +5,7 @@ import { unstable_cache } from "next/cache"; import { TeamsListing } from "@calcom/features/ee/teams/components/TeamsListing"; import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; import { TeamRepository } from "@calcom/lib/server/repository/team"; -import { TeamService } from "@calcom/lib/server/service/teamService"; +import { TeamService } from "@calcom/features/ee/teams/services/teamService"; import prisma from "@calcom/prisma"; import { MembershipRole } from "@calcom/prisma/enums"; diff --git a/apps/web/app/(use-page-wrapper)/apps/(homepage)/page.tsx b/apps/web/app/(use-page-wrapper)/apps/(homepage)/page.tsx index bd18bbbdbb..4eaa198fb4 100644 --- a/apps/web/app/(use-page-wrapper)/apps/(homepage)/page.tsx +++ b/apps/web/app/(use-page-wrapper)/apps/(homepage)/page.tsx @@ -3,7 +3,7 @@ import { cookies, headers } from "next/headers"; import { getAppRegistry, getAppRegistryWithCredentials } from "@calcom/app-store/_appRegistry"; import { getServerSession } from "@calcom/features/auth/lib/getServerSession"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import prisma from "@calcom/prisma"; import type { AppCategories } from "@calcom/prisma/enums"; diff --git a/apps/web/app/(use-page-wrapper)/getting-started/[[...step]]/page.tsx b/apps/web/app/(use-page-wrapper)/getting-started/[[...step]]/page.tsx index 8f00834918..24667ec843 100644 --- a/apps/web/app/(use-page-wrapper)/getting-started/[[...step]]/page.tsx +++ b/apps/web/app/(use-page-wrapper)/getting-started/[[...step]]/page.tsx @@ -6,7 +6,7 @@ import { redirect } from "next/navigation"; import { getServerSession } from "@calcom/features/auth/lib/getServerSession"; import { APP_NAME } from "@calcom/lib/constants"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import prisma from "@calcom/prisma"; import { meRouter } from "@calcom/trpc/server/routers/viewer/me/_router"; diff --git a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/organizations/[id]/edit/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/organizations/[id]/edit/page.tsx index b8c4ee8a05..fb9f4cd6c9 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/organizations/[id]/edit/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/organizations/[id]/edit/page.tsx @@ -5,7 +5,7 @@ import { z } from "zod"; import LicenseRequired from "@calcom/features/ee/common/components/LicenseRequired"; import { OrgForm } from "@calcom/features/ee/organizations/pages/settings/admin/AdminOrgEditPage"; import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; -import { OrganizationRepository } from "@calcom/lib/server/repository/organization"; +import { OrganizationRepository } from "@calcom/features/ee/organizations/repositories/OrganizationRepository"; const orgIdSchema = z.object({ id: z.coerce.number() }); diff --git a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/users/[id]/edit/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/users/[id]/edit/page.tsx index 4114e904cf..b28763d847 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/users/[id]/edit/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/users/[id]/edit/page.tsx @@ -5,7 +5,7 @@ import { z } from "zod"; import LicenseRequired from "@calcom/features/ee/common/components/LicenseRequired"; import { UsersEditView } from "@calcom/features/ee/users/pages/users-edit-view"; import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import prisma from "@calcom/prisma"; const userIdSchema = z.object({ id: z.coerce.number() }); diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/developer/webhooks/[id]/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/developer/webhooks/[id]/page.tsx index 173de93ab2..c161793e88 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/developer/webhooks/[id]/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/developer/webhooks/[id]/page.tsx @@ -4,7 +4,7 @@ import { getTranslate, _generateMetadata } from "app/_utils"; import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; import { EditWebhookView } from "@calcom/features/webhooks/pages/webhook-edit-view"; import { APP_NAME } from "@calcom/lib/constants"; -import { WebhookRepository } from "@calcom/lib/server/repository/webhook"; +import { WebhookRepository } from "@calcom/features/webhooks/lib/repository/WebhookRepository"; export const generateMetadata = async ({ params }: { params: Promise<{ id: string }> }) => await _generateMetadata( @@ -20,7 +20,8 @@ const Page = async ({ params: _params }: PageProps) => { const params = await _params; const id = typeof params?.id === "string" ? params.id : undefined; - const webhook = await WebhookRepository.findByWebhookId(id); + const webhookRepository = WebhookRepository.getInstance(); + const webhook = await webhookRepository.findByWebhookId(id); return ( { diff --git a/apps/web/app/api/availability/calendar/route.ts b/apps/web/app/api/availability/calendar/route.ts index e0a6bdca53..2ac9b534e0 100644 --- a/apps/web/app/api/availability/calendar/route.ts +++ b/apps/web/app/api/availability/calendar/route.ts @@ -10,7 +10,7 @@ import { getCalendarCredentials, getConnectedCalendars } from "@calcom/features/ import { HttpError } from "@calcom/lib/http-error"; import notEmpty from "@calcom/lib/notEmpty"; import { SelectedCalendarRepository } from "@calcom/lib/server/repository/selectedCalendar"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import prisma from "@calcom/prisma"; import { buildLegacyRequest } from "@lib/buildLegacyCtx"; diff --git a/apps/web/app/api/cron/calendar-subscriptions/route.ts b/apps/web/app/api/cron/calendar-subscriptions/route.ts index 9de6a7353a..bd3e07fda6 100644 --- a/apps/web/app/api/cron/calendar-subscriptions/route.ts +++ b/apps/web/app/api/cron/calendar-subscriptions/route.ts @@ -8,7 +8,7 @@ import { CalendarCacheEventService } from "@calcom/features/calendar-subscriptio import { CalendarSyncService } from "@calcom/features/calendar-subscription/lib/sync/CalendarSyncService"; import { FeaturesRepository } from "@calcom/features/flags/features.repository"; import { SelectedCalendarRepository } from "@calcom/lib/server/repository/SelectedCalendarRepository"; -import { BookingRepository } from "@calcom/lib/server/repository/booking"; +import { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; import { prisma } from "@calcom/prisma"; import { defaultResponderForAppDir } from "@calcom/web/app/api/defaultResponderForAppDir"; diff --git a/apps/web/app/api/support/conversation/route.ts b/apps/web/app/api/support/conversation/route.ts index 671bd39b27..5df9f5fe3d 100644 --- a/apps/web/app/api/support/conversation/route.ts +++ b/apps/web/app/api/support/conversation/route.ts @@ -9,8 +9,8 @@ import { intercom } from "@calcom/features/ee/support/lib/intercom/intercom"; import { WEBAPP_URL, WEBSITE_URL } from "@calcom/lib/constants"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; -import { MembershipRepository } from "@calcom/lib/server/repository/membership"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { prisma } from "@calcom/prisma"; import { buildLegacyRequest } from "@lib/buildLegacyCtx"; diff --git a/apps/web/app/api/username/route.ts b/apps/web/app/api/username/route.ts index 26e399e692..a4be17f811 100644 --- a/apps/web/app/api/username/route.ts +++ b/apps/web/app/api/username/route.ts @@ -5,7 +5,7 @@ import { NextResponse } from "next/server"; import { z } from "zod"; import { orgDomainConfig } from "@calcom/features/ee/organizations/lib/orgDomains"; -import { checkUsername } from "@calcom/lib/server/checkUsername"; +import { checkUsername } from "@calcom/features/profile/lib/checkUsername"; import { buildLegacyRequest } from "@lib/buildLegacyCtx"; diff --git a/apps/web/app/api/webhooks/calendar-subscription/[provider]/route.ts b/apps/web/app/api/webhooks/calendar-subscription/[provider]/route.ts index 3cd6fc53ba..60abe54140 100644 --- a/apps/web/app/api/webhooks/calendar-subscription/[provider]/route.ts +++ b/apps/web/app/api/webhooks/calendar-subscription/[provider]/route.ts @@ -11,7 +11,7 @@ import { CalendarSyncService } from "@calcom/features/calendar-subscription/lib/ import { FeaturesRepository } from "@calcom/features/flags/features.repository"; import logger from "@calcom/lib/logger"; import { SelectedCalendarRepository } from "@calcom/lib/server/repository/SelectedCalendarRepository"; -import { BookingRepository } from "@calcom/lib/server/repository/booking"; +import { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; import { prisma } from "@calcom/prisma"; import { defaultResponderForAppDir } from "@calcom/web/app/api/defaultResponderForAppDir"; diff --git a/apps/web/app/cache/membership.ts b/apps/web/app/cache/membership.ts index ef40178d43..9af484adde 100644 --- a/apps/web/app/cache/membership.ts +++ b/apps/web/app/cache/membership.ts @@ -3,7 +3,7 @@ import { revalidateTag, unstable_cache } from "next/cache"; import { NEXTJS_CACHE_TTL } from "@calcom/lib/constants"; -import { MembershipRepository } from "@calcom/lib/server/repository/membership"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; const CACHE_TAGS = { HAS_TEAM_PLAN: "MembershipRepository.findFirstAcceptedMembershipByUserId", diff --git a/apps/web/components/apps/alby/AlbyPaymentComponent.tsx b/apps/web/components/apps/alby/AlbyPaymentComponent.tsx index e65d71e657..0e2e8f8392 100644 --- a/apps/web/components/apps/alby/AlbyPaymentComponent.tsx +++ b/apps/web/components/apps/alby/AlbyPaymentComponent.tsx @@ -5,8 +5,8 @@ import { useEffect, useState } from "react"; import QRCode from "react-qr-code"; import z from "zod"; +import { useBookingSuccessRedirect } from "@calcom/features/bookings/lib/bookingSuccessRedirect"; import type { PaymentPageProps } from "@calcom/features/ee/payments/pages/payment"; -import { useBookingSuccessRedirect } from "@calcom/lib/bookingSuccessRedirect"; import { useCompatSearchParams } from "@calcom/lib/hooks/useCompatSearchParams"; import { useCopy } from "@calcom/lib/hooks/useCopy"; import { useLocale } from "@calcom/lib/hooks/useLocale"; diff --git a/apps/web/components/apps/btcpayserver/BtcpayPaymentComponent.tsx b/apps/web/components/apps/btcpayserver/BtcpayPaymentComponent.tsx index 1a07443012..870c5e8c0b 100644 --- a/apps/web/components/apps/btcpayserver/BtcpayPaymentComponent.tsx +++ b/apps/web/components/apps/btcpayserver/BtcpayPaymentComponent.tsx @@ -4,7 +4,7 @@ import { useEffect, useState } from "react"; import z from "zod"; import type { PaymentPageProps } from "@calcom/features/ee/payments/pages/payment"; -import { useBookingSuccessRedirect } from "@calcom/lib/bookingSuccessRedirect"; +import { useBookingSuccessRedirect } from "@calcom/features/bookings/lib/bookingSuccessRedirect"; import { useCompatSearchParams } from "@calcom/lib/hooks/useCompatSearchParams"; import { useCopy } from "@calcom/lib/hooks/useCopy"; import { useLocale } from "@calcom/lib/hooks/useLocale"; diff --git a/apps/web/components/dialog/RerouteDialog.tsx b/apps/web/components/dialog/RerouteDialog.tsx index d4b48835d5..6b0d39dd07 100644 --- a/apps/web/components/dialog/RerouteDialog.tsx +++ b/apps/web/components/dialog/RerouteDialog.tsx @@ -15,10 +15,10 @@ import { substituteVariables } from "@calcom/app-store/routing-forms/lib/substit import type { FormResponse, LocalRoute } from "@calcom/app-store/routing-forms/types/types"; import { RouteActionType } from "@calcom/app-store/routing-forms/zod"; import dayjs from "@calcom/dayjs"; +import { useBookerUrl } from "@calcom/features/bookings/hooks/useBookerUrl"; import { createBooking } from "@calcom/features/bookings/lib/create-booking"; import { Dialog } from "@calcom/features/components/controlled-dialog"; import { getUrlSearchParamsToForwardForReroute } from "@calcom/features/routing-forms/lib/getUrlSearchParamsToForward"; -import { useBookerUrl } from "@calcom/lib/hooks/useBookerUrl"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import type { EventType, User, Team, Attendee, Booking as PrismaBooking } from "@calcom/prisma/client"; import { SchedulingType } from "@calcom/prisma/enums"; diff --git a/apps/web/lib/apps/installation/[[...step]]/getServerSideProps.ts b/apps/web/lib/apps/installation/[[...step]]/getServerSideProps.ts index f168705014..18630b9af8 100644 --- a/apps/web/lib/apps/installation/[[...step]]/getServerSideProps.ts +++ b/apps/web/lib/apps/installation/[[...step]]/getServerSideProps.ts @@ -9,7 +9,7 @@ import { getServerSession } from "@calcom/features/auth/lib/getServerSession"; import { AppOnboardingSteps } from "@calcom/lib/apps/appOnboardingSteps"; import { CAL_URL } from "@calcom/lib/constants"; import { getPlaceholderAvatar } from "@calcom/lib/defaultAvatarImage"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import prisma from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; import { eventTypeBookingFields } from "@calcom/prisma/zod-utils"; diff --git a/apps/web/lib/apps/routing-forms/[...pages]/getServerSidePropsRoutingLink.ts b/apps/web/lib/apps/routing-forms/[...pages]/getServerSidePropsRoutingLink.ts index 69c36692f2..533c289366 100644 --- a/apps/web/lib/apps/routing-forms/[...pages]/getServerSidePropsRoutingLink.ts +++ b/apps/web/lib/apps/routing-forms/[...pages]/getServerSidePropsRoutingLink.ts @@ -65,7 +65,7 @@ export const getServerSideProps = async function getServerSideProps( }; } - const { UserRepository } = await import("@calcom/lib/server/repository/user"); + const { UserRepository } = await import("@calcom/features/users/repositories/UserRepository"); const userRepo = new UserRepository(prisma); const formWithUserProfile = { ...form, diff --git a/apps/web/lib/apps/routing-forms/[...pages]/getServerSidePropsSingleForm.ts b/apps/web/lib/apps/routing-forms/[...pages]/getServerSidePropsSingleForm.ts index 3203fbb905..49a5c60fdb 100644 --- a/apps/web/lib/apps/routing-forms/[...pages]/getServerSidePropsSingleForm.ts +++ b/apps/web/lib/apps/routing-forms/[...pages]/getServerSidePropsSingleForm.ts @@ -2,7 +2,7 @@ import { enrichFormWithMigrationData } from "@calcom/app-store/routing-forms/enr import { getSerializableForm } from "@calcom/app-store/routing-forms/lib/getSerializableForm"; import { Resource } from "@calcom/features/pbac/domain/types/permission-registry"; import { getResourcePermissions } from "@calcom/features/pbac/lib/resource-permissions"; -import { MembershipRepository } from "@calcom/lib/server/repository/membership"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; import { MembershipRole } from "@calcom/prisma/enums"; import type { AppGetServerSidePropsContext, AppPrisma, AppUser } from "@calcom/types/AppGetServerSideProps"; @@ -90,7 +90,7 @@ export const getServerSidePropsForSingleFormView = async function getServerSideP : null, }; - const { UserRepository } = await import("@calcom/lib/server/repository/user"); + const { UserRepository } = await import("@calcom/features/users/repositories/UserRepository"); const userRepo = new UserRepository(prisma); const formWithUserInfoProfile = { diff --git a/apps/web/lib/d/[link]/[slug]/getServerSideProps.tsx b/apps/web/lib/d/[link]/[slug]/getServerSideProps.tsx index 16c05ffffc..1eef2d3c00 100644 --- a/apps/web/lib/d/[link]/[slug]/getServerSideProps.tsx +++ b/apps/web/lib/d/[link]/[slug]/getServerSideProps.tsx @@ -6,10 +6,13 @@ import { getServerSession } from "@calcom/features/auth/lib/getServerSession"; import { getBookingForReschedule, getMultipleDurationValue } from "@calcom/features/bookings/lib/get-booking"; import type { GetBookingType } from "@calcom/features/bookings/lib/get-booking"; import { orgDomainConfig } from "@calcom/features/ee/organizations/lib/orgDomains"; +import { EventRepository } from "@calcom/features/eventtypes/repositories/EventRepository"; import { FeaturesRepository } from "@calcom/features/flags/features.repository"; -import { shouldHideBrandingForTeamEvent, shouldHideBrandingForUserEvent } from "@calcom/lib/hideBranding"; -import { EventRepository } from "@calcom/lib/server/repository/event"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { + shouldHideBrandingForTeamEvent, + shouldHideBrandingForUserEvent, +} from "@calcom/features/profile/lib/hideBranding"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { HashedLinkService } from "@calcom/lib/server/service/hashedLinkService"; import slugify from "@calcom/lib/slugify"; import prisma from "@calcom/prisma"; diff --git a/apps/web/lib/org/[orgSlug]/instant-meeting/team/[slug]/[type]/getServerSideProps.ts b/apps/web/lib/org/[orgSlug]/instant-meeting/team/[slug]/[type]/getServerSideProps.ts index a7d8c256aa..52836d898d 100644 --- a/apps/web/lib/org/[orgSlug]/instant-meeting/team/[slug]/[type]/getServerSideProps.ts +++ b/apps/web/lib/org/[orgSlug]/instant-meeting/team/[slug]/[type]/getServerSideProps.ts @@ -5,8 +5,8 @@ import { getServerSession } from "@calcom/features/auth/lib/getServerSession"; import { getMultipleDurationValue } from "@calcom/features/bookings/lib/get-booking"; import { getSlugOrRequestedSlug } from "@calcom/features/ee/organizations/lib/orgDomains"; import { orgDomainConfig } from "@calcom/features/ee/organizations/lib/orgDomains"; -import { shouldHideBrandingForTeamEvent } from "@calcom/lib/hideBranding"; -import { EventRepository } from "@calcom/lib/server/repository/event"; +import { shouldHideBrandingForTeamEvent } from "@calcom/features/profile/lib/hideBranding"; +import { EventRepository } from "@calcom/features/eventtypes/repositories/EventRepository"; import slugify from "@calcom/lib/slugify"; import prisma from "@calcom/prisma"; diff --git a/apps/web/lib/pages/auth/verify-email.test.ts b/apps/web/lib/pages/auth/verify-email.test.ts index 14d3304712..244bb50f5f 100644 --- a/apps/web/lib/pages/auth/verify-email.test.ts +++ b/apps/web/lib/pages/auth/verify-email.test.ts @@ -10,7 +10,7 @@ import { moveUserToMatchingOrg } from "./verify-email"; // TODO: This test passes but coverage is very low. vi.mock("@calcom/trpc/server/routers/viewer/teams/inviteMember/inviteMember.handler"); -vi.mock("@calcom/lib/server/repository/organization"); +vi.mock("@calcom/features/ee/organizations/repositories/OrganizationRepository"); vi.mock("@calcom/prisma", () => { return { prisma: vi.fn(), diff --git a/apps/web/lib/pages/auth/verify-email.ts b/apps/web/lib/pages/auth/verify-email.ts index 1df92535ec..f4b5920372 100644 --- a/apps/web/lib/pages/auth/verify-email.ts +++ b/apps/web/lib/pages/auth/verify-email.ts @@ -5,7 +5,7 @@ import dayjs from "@calcom/dayjs"; import { StripeBillingService } from "@calcom/features/ee/billing/stripe-billling-service"; import { WEBAPP_URL } from "@calcom/lib/constants"; import { IS_STRIPE_ENABLED } from "@calcom/lib/constants"; -import { OrganizationRepository } from "@calcom/lib/server/repository/organization"; +import { OrganizationRepository } from "@calcom/features/ee/organizations/repositories/OrganizationRepository"; import { prisma } from "@calcom/prisma"; import { MembershipRole } from "@calcom/prisma/enums"; import { CreationSource } from "@calcom/prisma/enums"; diff --git a/apps/web/lib/reschedule/[uid]/getServerSideProps.ts b/apps/web/lib/reschedule/[uid]/getServerSideProps.ts index 88d7a26dfb..65d40b6233 100644 --- a/apps/web/lib/reschedule/[uid]/getServerSideProps.ts +++ b/apps/web/lib/reschedule/[uid]/getServerSideProps.ts @@ -8,7 +8,7 @@ import { determineReschedulePreventionRedirect } from "@calcom/features/bookings import { getDefaultEvent } from "@calcom/features/eventtypes/lib/defaultEvents"; import { buildEventUrlFromBooking } from "@calcom/lib/bookings/buildEventUrlFromBooking"; import { maybeGetBookingUidFromSeat } from "@calcom/lib/server/maybeGetBookingUidFromSeat"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import prisma, { bookingMinimalSelect } from "@calcom/prisma"; const querySchema = z.object({ diff --git a/apps/web/lib/team/[slug]/[type]/getServerSideProps.tsx b/apps/web/lib/team/[slug]/[type]/getServerSideProps.tsx index 4923562ece..2d820eebae 100644 --- a/apps/web/lib/team/[slug]/[type]/getServerSideProps.tsx +++ b/apps/web/lib/team/[slug]/[type]/getServerSideProps.tsx @@ -8,7 +8,7 @@ import { getSlugOrRequestedSlug, orgDomainConfig } from "@calcom/features/ee/org import { getOrganizationSEOSettings } from "@calcom/features/ee/organizations/lib/orgSettings"; import { FeaturesRepository } from "@calcom/features/flags/features.repository"; import { getPlaceholderAvatar } from "@calcom/lib/defaultAvatarImage"; -import { shouldHideBrandingForTeamEvent } from "@calcom/lib/hideBranding"; +import { shouldHideBrandingForTeamEvent } from "@calcom/features/profile/lib/hideBranding"; import slugify from "@calcom/lib/slugify"; import { prisma } from "@calcom/prisma"; import type { User } from "@calcom/prisma/client"; diff --git a/apps/web/lib/team/[slug]/getServerSideProps.tsx b/apps/web/lib/team/[slug]/getServerSideProps.tsx index 07bed34c24..96ca6d30f0 100644 --- a/apps/web/lib/team/[slug]/getServerSideProps.tsx +++ b/apps/web/lib/team/[slug]/getServerSideProps.tsx @@ -9,7 +9,7 @@ import { getTeamWithMembers } from "@calcom/features/ee/teams/lib/queries"; import { FeaturesRepository } from "@calcom/features/flags/features.repository"; import { IS_CALCOM } from "@calcom/lib/constants"; import { getUserAvatarUrl } from "@calcom/lib/getAvatarUrl"; -import { getBookerBaseUrlSync } from "@calcom/lib/getBookerUrl/client"; +import { getBookerBaseUrlSync } from "@calcom/features/ee/organizations/lib/getBookerBaseUrlSync"; import logger from "@calcom/lib/logger"; import { markdownToSafeHTML } from "@calcom/lib/markdownToSafeHTML"; import slugify from "@calcom/lib/slugify"; diff --git a/apps/web/lib/video/[uid]/getServerSideProps.ts b/apps/web/lib/video/[uid]/getServerSideProps.ts index f448eeb4d7..4fdcc2caf3 100644 --- a/apps/web/lib/video/[uid]/getServerSideProps.ts +++ b/apps/web/lib/video/[uid]/getServerSideProps.ts @@ -7,14 +7,14 @@ import { updateMeetingTokenIfExpired, } from "@calcom/app-store/dailyvideo/lib/VideoApiAdapter"; import { getServerSession } from "@calcom/features/auth/lib/getServerSession"; +import { EventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository"; import { FeaturesRepository } from "@calcom/features/flags/features.repository"; import { getCalVideoReference } from "@calcom/features/get-cal-video-reference"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { CAL_VIDEO_MEETING_LINK_FOR_TESTING } from "@calcom/lib/constants"; import { isENVDev } from "@calcom/lib/env"; -import { BookingRepository } from "@calcom/lib/server/repository/booking"; -import { EventTypeRepository } from "@calcom/lib/server/repository/eventTypeRepository"; -import { OrganizationRepository } from "@calcom/lib/server/repository/organization"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; +import { OrganizationRepository } from "@calcom/features/ee/organizations/repositories/OrganizationRepository"; import prisma from "@calcom/prisma"; const md = new MarkdownIt("default", { html: true, breaks: true, linkify: true }); diff --git a/apps/web/lib/video/meeting-ended/[uid]/getServerSideProps.ts b/apps/web/lib/video/meeting-ended/[uid]/getServerSideProps.ts index bcdfeb3b6d..98112fe5b4 100644 --- a/apps/web/lib/video/meeting-ended/[uid]/getServerSideProps.ts +++ b/apps/web/lib/video/meeting-ended/[uid]/getServerSideProps.ts @@ -1,6 +1,6 @@ import type { GetServerSidePropsContext } from "next"; -import { BookingRepository } from "@calcom/lib/server/repository/booking"; +import { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; import { prisma } from "@calcom/prisma"; import { type inferSSRProps } from "@lib/types/inferSSRProps"; diff --git a/apps/web/lib/video/meeting-not-started/[uid]/getServerSideProps.ts b/apps/web/lib/video/meeting-not-started/[uid]/getServerSideProps.ts index aa66d8be6d..da76d42d3c 100644 --- a/apps/web/lib/video/meeting-not-started/[uid]/getServerSideProps.ts +++ b/apps/web/lib/video/meeting-not-started/[uid]/getServerSideProps.ts @@ -1,6 +1,6 @@ import type { GetServerSidePropsContext } from "next"; -import { BookingRepository } from "@calcom/lib/server/repository/booking"; +import { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; import { prisma } from "@calcom/prisma"; // change the type diff --git a/apps/web/modules/bookings/views/bookings-single-view.getServerSideProps.tsx b/apps/web/modules/bookings/views/bookings-single-view.getServerSideProps.tsx index b7ecab1ae5..64e6a6fdba 100644 --- a/apps/web/modules/bookings/views/bookings-single-view.getServerSideProps.tsx +++ b/apps/web/modules/bookings/views/bookings-single-view.getServerSideProps.tsx @@ -7,11 +7,11 @@ import { orgDomainConfig } from "@calcom/ee/organizations/lib/orgDomains"; import { getServerSession } from "@calcom/features/auth/lib/getServerSession"; import getBookingInfo from "@calcom/features/bookings/lib/getBookingInfo"; import { getDefaultEvent } from "@calcom/features/eventtypes/lib/defaultEvents"; -import { shouldHideBrandingForEvent } from "@calcom/lib/hideBranding"; +import { shouldHideBrandingForEvent } from "@calcom/features/profile/lib/hideBranding"; import { parseRecurringEvent } from "@calcom/lib/isRecurringEvent"; import { markdownToSafeHTML } from "@calcom/lib/markdownToSafeHTML"; import { maybeGetBookingUidFromSeat } from "@calcom/lib/server/maybeGetBookingUidFromSeat"; -import { BookingRepository } from "@calcom/lib/server/repository/booking"; +import { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; import prisma from "@calcom/prisma"; import { customInputSchema } from "@calcom/prisma/zod-utils"; import { meRouter } from "@calcom/trpc/server/routers/viewer/me/_router"; diff --git a/apps/web/modules/bookings/views/bookings-single-view.tsx b/apps/web/modules/bookings/views/bookings-single-view.tsx index d65dbec89d..d38b995866 100644 --- a/apps/web/modules/bookings/views/bookings-single-view.tsx +++ b/apps/web/modules/bookings/views/bookings-single-view.tsx @@ -22,15 +22,11 @@ import { useIsEmbed, } from "@calcom/embed-core/embed-iframe"; import { Price } from "@calcom/features/bookings/components/event-meta/Price"; -import { - SMS_REMINDER_NUMBER_FIELD, - SystemField, - TITLE_FIELD, -} from "@calcom/features/bookings/lib/SystemField"; import { getCalendarLinks, CalendarLinkType } from "@calcom/features/bookings/lib/getCalendarLinks"; import { RATING_OPTIONS, validateRating } from "@calcom/features/bookings/lib/rating"; import type { nameObjectSchema } from "@calcom/features/eventtypes/lib/eventNaming"; import { getEventName } from "@calcom/features/eventtypes/lib/eventNaming"; +import { SMS_REMINDER_NUMBER_FIELD, SystemField, TITLE_FIELD } from "@calcom/lib/SystemField"; import { APP_NAME } from "@calcom/lib/constants"; import { formatToLocalizedDate, formatToLocalizedTime, formatToLocalizedTimezone } from "@calcom/lib/dayjs"; import useGetBrandingColours from "@calcom/lib/getBrandColours"; diff --git a/apps/web/modules/test-setup.ts b/apps/web/modules/test-setup.ts index 25148028b1..76546ef66b 100644 --- a/apps/web/modules/test-setup.ts +++ b/apps/web/modules/test-setup.ts @@ -60,7 +60,7 @@ vi.mock("@calcom/features/bookings/components/event-meta/Price", () => { return {}; }); -vi.mock("@calcom/features/bookings/lib/SystemField", () => { +vi.mock("@calcom/lib/SystemField", () => { return {}; }); diff --git a/apps/web/pages/api/book/event.ts b/apps/web/pages/api/book/event.ts index ec4202214e..85a7480771 100644 --- a/apps/web/pages/api/book/event.ts +++ b/apps/web/pages/api/book/event.ts @@ -9,7 +9,7 @@ import getIP from "@calcom/lib/getIP"; import { piiHasher } from "@calcom/lib/server/PiiHasher"; import { checkCfTurnstileToken } from "@calcom/lib/server/checkCfTurnstileToken"; import { defaultResponder } from "@calcom/lib/server/defaultResponder"; -import { EventTypeRepository } from "@calcom/lib/server/repository/eventTypeRepository"; +import { EventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository"; import prisma from "@calcom/prisma"; import { CreationSource } from "@calcom/prisma/enums"; diff --git a/apps/web/playwright/fixtures/users.ts b/apps/web/playwright/fixtures/users.ts index 604528d419..67584a7cb5 100644 --- a/apps/web/playwright/fixtures/users.ts +++ b/apps/web/playwright/fixtures/users.ts @@ -8,7 +8,7 @@ import updateChildrenEventTypes from "@calcom/features/ee/managed-event-types/li import stripe from "@calcom/features/ee/payments/server/stripe"; import { DEFAULT_SCHEDULE, getAvailabilityFromSchedule } from "@calcom/lib/availability"; import { WEBAPP_URL } from "@calcom/lib/constants"; -import { ProfileRepository } from "@calcom/lib/server/repository/profile"; +import { ProfileRepository } from "@calcom/features/profile/repositories/ProfileRepository"; import { prisma } from "@calcom/prisma"; import type Prisma from "@calcom/prisma/client"; import type { Team } from "@calcom/prisma/client"; diff --git a/apps/web/playwright/lib/orgMigration.ts b/apps/web/playwright/lib/orgMigration.ts index 92663bd65a..3427adcadb 100644 --- a/apps/web/playwright/lib/orgMigration.ts +++ b/apps/web/playwright/lib/orgMigration.ts @@ -1,9 +1,9 @@ import { getOrgUsernameFromEmail } from "@calcom/features/auth/signup/utils/getOrgUsernameFromEmail"; import { getOrgFullOrigin } from "@calcom/features/ee/organizations/lib/orgDomains"; +import { ProfileRepository } from "@calcom/features/profile/repositories/ProfileRepository"; import { HttpError } from "@calcom/lib/http-error"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; -import { ProfileRepository } from "@calcom/lib/server/repository/profile"; import prisma from "@calcom/prisma"; import type { Team, User } from "@calcom/prisma/client"; import { Prisma } from "@calcom/prisma/client"; diff --git a/apps/web/server/lib/[user]/[type]/getServerSideProps.ts b/apps/web/server/lib/[user]/[type]/getServerSideProps.ts index a48bd543af..ac3a14eeb6 100644 --- a/apps/web/server/lib/[user]/[type]/getServerSideProps.ts +++ b/apps/web/server/lib/[user]/[type]/getServerSideProps.ts @@ -8,9 +8,9 @@ import { getBookingForReschedule, getBookingForSeatedEvent } from "@calcom/featu import { orgDomainConfig } from "@calcom/features/ee/organizations/lib/orgDomains"; import type { getPublicEvent } from "@calcom/features/eventtypes/lib/getPublicEvent"; import { getUsernameList } from "@calcom/features/eventtypes/lib/defaultEvents"; -import { shouldHideBrandingForUserEvent } from "@calcom/lib/hideBranding"; -import { EventRepository } from "@calcom/lib/server/repository/event"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { shouldHideBrandingForUserEvent } from "@calcom/features/profile/lib/hideBranding"; +import { EventRepository } from "@calcom/features/eventtypes/repositories/EventRepository"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import slugify from "@calcom/lib/slugify"; import { prisma } from "@calcom/prisma"; import { BookingStatus, RedirectType } from "@calcom/prisma/enums"; diff --git a/apps/web/server/lib/[user]/getServerSideProps.ts b/apps/web/server/lib/[user]/getServerSideProps.ts index 5e8cecaaad..31650f5c13 100644 --- a/apps/web/server/lib/[user]/getServerSideProps.ts +++ b/apps/web/server/lib/[user]/getServerSideProps.ts @@ -11,7 +11,7 @@ import { getUserAvatarUrl } from "@calcom/lib/getAvatarUrl"; import logger from "@calcom/lib/logger"; import { markdownToSafeHTML } from "@calcom/lib/markdownToSafeHTML"; import { safeStringify } from "@calcom/lib/safeStringify"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { stripMarkdown } from "@calcom/lib/stripMarkdown"; import { prisma } from "@calcom/prisma"; import type { EventType, User } from "@calcom/prisma/client"; diff --git a/apps/web/server/lib/auth/sso/[provider]/getServerSideProps.tsx b/apps/web/server/lib/auth/sso/[provider]/getServerSideProps.tsx index d8738df100..857bbd69f1 100644 --- a/apps/web/server/lib/auth/sso/[provider]/getServerSideProps.tsx +++ b/apps/web/server/lib/auth/sso/[provider]/getServerSideProps.tsx @@ -7,7 +7,7 @@ import stripe from "@calcom/features/ee/payments/server/stripe"; import { hostedCal, isSAMLLoginEnabled, samlProductID, samlTenantID } from "@calcom/features/ee/sso/lib/saml"; import { ssoTenantProduct } from "@calcom/features/ee/sso/lib/sso"; import { IS_PREMIUM_USERNAME_ENABLED } from "@calcom/lib/constants"; -import { checkUsername } from "@calcom/lib/server/checkUsername"; +import { checkUsername } from "@calcom/features/profile/lib/checkUsername"; import prisma from "@calcom/prisma"; import { asStringOrNull } from "@lib/asStringOrNull"; diff --git a/apps/web/test/lib/checkBookingLimits.test.ts b/apps/web/test/lib/checkBookingLimits.test.ts index eb856ef17c..563fa66d89 100644 --- a/apps/web/test/lib/checkBookingLimits.test.ts +++ b/apps/web/test/lib/checkBookingLimits.test.ts @@ -6,7 +6,7 @@ import type { IntervalLimit } from "@calcom/lib/intervalLimits/intervalLimitSche import { validateIntervalLimitOrder } from "@calcom/lib/intervalLimits/validateIntervalLimitOrder"; const mockCountBookingsByEventTypeAndDateRange = vi.fn(); -vi.mock("@calcom/lib/server/repository/booking", () => ({ +vi.mock("@calcom/features/bookings/repositories/BookingRepository", () => ({ BookingRepository: vi.fn().mockImplementation(() => ({ countBookingsByEventTypeAndDateRange: mockCountBookingsByEventTypeAndDateRange, })), diff --git a/apps/web/test/lib/checkDurationLimits.test.ts b/apps/web/test/lib/checkDurationLimits.test.ts index f90254791b..f55f32bec1 100644 --- a/apps/web/test/lib/checkDurationLimits.test.ts +++ b/apps/web/test/lib/checkDurationLimits.test.ts @@ -4,11 +4,11 @@ import dayjs from "@calcom/dayjs"; import { checkDurationLimit, checkDurationLimits, -} from "@calcom/lib/intervalLimits/server/checkDurationLimits"; +} from "@calcom/features/bookings/lib/checkDurationLimits"; import { validateIntervalLimitOrder } from "@calcom/lib/intervalLimits/validateIntervalLimitOrder"; const mockGetTotalBookingDuration = vi.fn(); -vi.mock("@calcom/lib/server/repository/booking", () => ({ +vi.mock("@calcom/features/bookings/repositories/BookingRepository", () => ({ BookingRepository: vi.fn().mockImplementation(() => ({ getTotalBookingDuration: mockGetTotalBookingDuration, })), diff --git a/apps/web/test/lib/generateCsv.test.ts b/apps/web/test/lib/generateCsv.test.ts index 3e758991ea..5b259d24ad 100644 --- a/apps/web/test/lib/generateCsv.test.ts +++ b/apps/web/test/lib/generateCsv.test.ts @@ -2,7 +2,10 @@ import type { Table } from "@tanstack/react-table"; import { describe, it, expect, vi } from "vitest"; import type { UserTableUser } from "@calcom/features/users/components/UserTable/types"; -import { generateCsvRawForMembersTable, generateHeaderFromReactTable } from "@calcom/lib/csvUtils"; +import { + generateCsvRawForMembersTable, + generateHeaderFromReactTable, +} from "@calcom/features/users/lib/UserListTableUtils"; import { MembershipRole } from "@calcom/prisma/enums"; function createMockTable(data: UserTableUser[]): Table { diff --git a/apps/web/test/utils/bookingScenario/bookingScenario.ts b/apps/web/test/utils/bookingScenario/bookingScenario.ts index 4c07a7112a..d261c3bc63 100644 --- a/apps/web/test/utils/bookingScenario/bookingScenario.ts +++ b/apps/web/test/utils/bookingScenario/bookingScenario.ts @@ -14,7 +14,7 @@ import type { HttpError } from "@calcom/lib/http-error"; import type { IntervalLimit } from "@calcom/lib/intervalLimits/intervalLimitSchema"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; -import { ProfileRepository } from "@calcom/lib/server/repository/profile"; +import { ProfileRepository } from "@calcom/features/profile/repositories/ProfileRepository"; import type { BookingReference, Attendee, Booking, Membership } from "@calcom/prisma/client"; import type { Prisma } from "@calcom/prisma/client"; import type { WebhookTriggerEvents } from "@calcom/prisma/client"; diff --git a/packages/app-store/_appRegistry.ts b/packages/app-store/_appRegistry.ts index 439b69e736..314f80f448 100644 --- a/packages/app-store/_appRegistry.ts +++ b/packages/app-store/_appRegistry.ts @@ -2,7 +2,7 @@ import { appStoreMetadata } from "@calcom/app-store/appStoreMetaData"; import { getAppFromSlug } from "@calcom/app-store/utils"; import { getAllDelegationCredentialsForUser } from "@calcom/app-store/delegationCredential"; import getInstallCountPerApp from "@calcom/lib/apps/getInstallCountPerApp"; -import type { UserAdminTeams } from "@calcom/lib/server/repository/user"; +import type { UserAdminTeams } from "@calcom/features/users/repositories/UserRepository"; import prisma, { safeAppSelect, safeCredentialSelect } from "@calcom/prisma"; import { userMetadata } from "@calcom/prisma/zod-utils"; import type { AppFrontendPayload as App } from "@calcom/types/App"; diff --git a/packages/app-store/_utils/oauth/updateProfilePhotoGoogle.ts b/packages/app-store/_utils/oauth/updateProfilePhotoGoogle.ts index 5526343d87..7a70232c82 100644 --- a/packages/app-store/_utils/oauth/updateProfilePhotoGoogle.ts +++ b/packages/app-store/_utils/oauth/updateProfilePhotoGoogle.ts @@ -3,7 +3,7 @@ import type { OAuth2Client } from "googleapis-common"; import logger from "@calcom/lib/logger"; import { uploadAvatar } from "@calcom/lib/server/avatar"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { resizeBase64Image } from "@calcom/lib/server/resizeBase64Image"; import prisma from "@calcom/prisma"; diff --git a/packages/app-store/_utils/throwIfNotHaveAdminAccessToTeam.ts b/packages/app-store/_utils/throwIfNotHaveAdminAccessToTeam.ts index b70e005023..3313029e17 100644 --- a/packages/app-store/_utils/throwIfNotHaveAdminAccessToTeam.ts +++ b/packages/app-store/_utils/throwIfNotHaveAdminAccessToTeam.ts @@ -1,5 +1,5 @@ import { HttpError } from "@calcom/lib/http-error"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import prisma from "@calcom/prisma"; export const throwIfNotHaveAdminAccessToTeam = async ({ diff --git a/packages/app-store/delegationCredential.test.ts b/packages/app-store/delegationCredential.test.ts index 26ecbb1b21..7fde091e8d 100644 --- a/packages/app-store/delegationCredential.test.ts +++ b/packages/app-store/delegationCredential.test.ts @@ -6,7 +6,7 @@ import { metadata as googleCalendarMetadata } from "@calcom/app-store/googlecale import { metadata as googleMeetMetadata } from "@calcom/app-store/googlevideo/_metadata"; import type { ServiceAccountKey } from "@calcom/lib/server/repository/delegationCredential"; import { DelegationCredentialRepository } from "@calcom/lib/server/repository/delegationCredential"; -import { OrganizationRepository } from "@calcom/lib/server/repository/organization"; +import { OrganizationRepository } from "@calcom/features/ee/organizations/repositories/OrganizationRepository"; import { SMSLockState, RRTimestampBasis } from "@calcom/prisma/enums"; import type { CredentialForCalendarService, CredentialPayload } from "@calcom/types/Credential"; @@ -21,7 +21,7 @@ import { } from "./delegationCredential"; // Mock OrganizationRepository -vi.mock("@calcom/lib/server/repository/organization", () => ({ +vi.mock("@calcom/features/ee/organizations/repositories/OrganizationRepository", () => ({ OrganizationRepository: { findByMemberEmail: vi.fn(), }, diff --git a/packages/app-store/delegationCredential.ts b/packages/app-store/delegationCredential.ts index 94e89568ac..3642c6afa8 100644 --- a/packages/app-store/delegationCredential.ts +++ b/packages/app-store/delegationCredential.ts @@ -13,7 +13,7 @@ import { safeStringify } from "@calcom/lib/safeStringify"; import { CredentialRepository } from "@calcom/lib/server/repository/credential"; import type { ServiceAccountKey } from "@calcom/lib/server/repository/delegationCredential"; import { DelegationCredentialRepository } from "@calcom/lib/server/repository/delegationCredential"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { prisma } from "@calcom/prisma"; import type { SelectedCalendar } from "@calcom/prisma/client"; import { credentialForCalendarServiceSelect } from "@calcom/prisma/selects/credential"; diff --git a/packages/app-store/hubspot/lib/CrmService.ts b/packages/app-store/hubspot/lib/CrmService.ts index 33d7713f4d..92b1168271 100644 --- a/packages/app-store/hubspot/lib/CrmService.ts +++ b/packages/app-store/hubspot/lib/CrmService.ts @@ -7,9 +7,9 @@ import type { SimplePublicObjectInput, } from "@hubspot/api-client/lib/codegen/crm/objects/meetings"; +import getLabelValueMapFromResponses from "@calcom/features/bookings/lib/getLabelValueMapFromResponses"; import { getLocation } from "@calcom/lib/CalEventParser"; import { WEBAPP_URL } from "@calcom/lib/constants"; -import getLabelValueMapFromResponses from "@calcom/lib/getLabelValueMapFromResponses"; import { HttpError } from "@calcom/lib/http-error"; import logger from "@calcom/lib/logger"; import prisma from "@calcom/prisma"; diff --git a/packages/app-store/routing-forms/lib/crmRouting/routerGetCrmContactOwnerEmail.ts b/packages/app-store/routing-forms/lib/crmRouting/routerGetCrmContactOwnerEmail.ts index f58580c379..863edb3d7c 100644 --- a/packages/app-store/routing-forms/lib/crmRouting/routerGetCrmContactOwnerEmail.ts +++ b/packages/app-store/routing-forms/lib/crmRouting/routerGetCrmContactOwnerEmail.ts @@ -1,5 +1,5 @@ import { getCRMContactOwnerForRRLeadSkip } from "@calcom/app-store/_utils/CRMRoundRobinSkip"; -import { EventTypeRepository } from "@calcom/lib/server/repository/eventTypeRepository"; +import { EventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository"; import { prisma } from "@calcom/prisma"; import { SchedulingType } from "@calcom/prisma/enums"; diff --git a/packages/app-store/salesforce/lib/CrmService.ts b/packages/app-store/salesforce/lib/CrmService.ts index ce241bed40..06f9230af8 100644 --- a/packages/app-store/salesforce/lib/CrmService.ts +++ b/packages/app-store/salesforce/lib/CrmService.ts @@ -4,10 +4,10 @@ import { RRule } from "rrule"; import { z } from "zod"; import { RoutingFormResponseDataFactory } from "@calcom/app-store/routing-forms/lib/RoutingFormResponseDataFactory"; +import { checkIfFreeEmailDomain } from "@calcom/features/watchlist/lib/checkIfFreeEmailDomain"; import { getLocation } from "@calcom/lib/CalEventParser"; import { WEBAPP_URL } from "@calcom/lib/constants"; import { RetryableError } from "@calcom/lib/crmManager/errors"; -import { checkIfFreeEmailDomain } from "@calcom/lib/freeEmailDomainCheck/checkIfFreeEmailDomain"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import { PrismaAssignmentReasonRepository } from "@calcom/lib/server/repository/PrismaAssignmentReasonRepository"; diff --git a/packages/app-store/salesforce/lib/__tests__/CrmService.integration.test.ts b/packages/app-store/salesforce/lib/__tests__/CrmService.integration.test.ts index 968dd42ca9..fd6fbb092d 100644 --- a/packages/app-store/salesforce/lib/__tests__/CrmService.integration.test.ts +++ b/packages/app-store/salesforce/lib/__tests__/CrmService.integration.test.ts @@ -46,7 +46,7 @@ vi.mock("@jsforce/jsforce-node", () => { }; }); -vi.mock("@calcom/lib/freeEmailDomainCheck/checkIfFreeEmailDomain", () => ({ +vi.mock("@calcom/features/watchlist/lib/checkIfFreeEmailDomain", () => ({ checkIfFreeEmailDomain: vi.fn().mockResolvedValue(false), })); diff --git a/packages/app-store/stripepayment/lib/PaymentService.ts b/packages/app-store/stripepayment/lib/PaymentService.ts index 5dd16cb879..676dc0195f 100644 --- a/packages/app-store/stripepayment/lib/PaymentService.ts +++ b/packages/app-store/stripepayment/lib/PaymentService.ts @@ -8,7 +8,7 @@ import { getErrorFromUnknown } from "@calcom/lib/errors"; import { ErrorWithCode } from "@calcom/lib/errors"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; -import { BookingRepository } from "@calcom/lib/server/repository/booking"; +import { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; import prisma from "@calcom/prisma"; import type { Booking, Payment, PaymentOption, Prisma } from "@calcom/prisma/client"; import type { EventTypeMetadata } from "@calcom/prisma/zod-utils"; diff --git a/packages/emails/src/components/UserFieldsResponses.tsx b/packages/emails/src/components/UserFieldsResponses.tsx index 6d3fd92281..8312b6441c 100644 --- a/packages/emails/src/components/UserFieldsResponses.tsx +++ b/packages/emails/src/components/UserFieldsResponses.tsx @@ -1,6 +1,6 @@ import type { TFunction } from "i18next"; -import getLabelValueMapFromResponses from "@calcom/lib/getLabelValueMapFromResponses"; +import getLabelValueMapFromResponses from "@calcom/features/bookings/lib/getLabelValueMapFromResponses"; import type { CalendarEvent } from "@calcom/types/Calendar"; import { Info } from "./Info"; diff --git a/packages/features/apps/components/AllApps.tsx b/packages/features/apps/components/AllApps.tsx index 5acd9e64b2..ff3c579d4e 100644 --- a/packages/features/apps/components/AllApps.tsx +++ b/packages/features/apps/components/AllApps.tsx @@ -5,7 +5,7 @@ import type { UIEvent } from "react"; import { useEffect, useRef, useState } from "react"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import type { UserAdminTeams } from "@calcom/lib/server/repository/user"; +import type { UserAdminTeams } from "@calcom/features/users/repositories/UserRepository"; import type { AppCategories } from "@calcom/prisma/client"; import type { AppFrontendPayload as App } from "@calcom/types/App"; import type { CredentialFrontendPayload as Credential } from "@calcom/types/Credential"; diff --git a/packages/features/apps/components/AppCard.tsx b/packages/features/apps/components/AppCard.tsx index 06715cba2c..7c0351626c 100644 --- a/packages/features/apps/components/AppCard.tsx +++ b/packages/features/apps/components/AppCard.tsx @@ -11,7 +11,7 @@ import { AppOnboardingSteps } from "@calcom/lib/apps/appOnboardingSteps"; import { getAppOnboardingUrl } from "@calcom/lib/apps/getAppOnboardingUrl"; import { WEBAPP_URL } from "@calcom/lib/constants"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import type { UserAdminTeams } from "@calcom/lib/server/repository/user"; +import type { UserAdminTeams } from "@calcom/features/users/repositories/UserRepository"; import type { AppFrontendPayload as App } from "@calcom/types/App"; import type { CredentialFrontendPayload as Credential } from "@calcom/types/Credential"; import classNames from "@calcom/ui/classNames"; diff --git a/packages/lib/getLocaleFromRequest.ts b/packages/features/auth/lib/getLocaleFromRequest.ts similarity index 100% rename from packages/lib/getLocaleFromRequest.ts rename to packages/features/auth/lib/getLocaleFromRequest.ts diff --git a/packages/features/auth/lib/getServerSession.ts b/packages/features/auth/lib/getServerSession.ts index 3512da13d9..168860c962 100644 --- a/packages/features/auth/lib/getServerSession.ts +++ b/packages/features/auth/lib/getServerSession.ts @@ -8,7 +8,7 @@ import { getUserAvatarUrl } from "@calcom/lib/getAvatarUrl"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import { DeploymentRepository } from "@calcom/lib/server/repository/deployment"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import prisma from "@calcom/prisma"; const log = logger.getSubLogger({ prefix: ["getServerSession"] }); diff --git a/packages/features/auth/lib/next-auth-options.ts b/packages/features/auth/lib/next-auth-options.ts index 4874f77b7d..867ffd42df 100644 --- a/packages/features/auth/lib/next-auth-options.ts +++ b/packages/features/auth/lib/next-auth-options.ts @@ -34,9 +34,9 @@ import { safeStringify } from "@calcom/lib/safeStringify"; import { hashEmail } from "@calcom/lib/server/PiiHasher"; import { CredentialRepository } from "@calcom/lib/server/repository/credential"; import { DeploymentRepository } from "@calcom/lib/server/repository/deployment"; -import { OrganizationRepository } from "@calcom/lib/server/repository/organization"; -import { ProfileRepository } from "@calcom/lib/server/repository/profile"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { OrganizationRepository } from "@calcom/features/ee/organizations/repositories/OrganizationRepository"; +import { ProfileRepository } from "@calcom/features/profile/repositories/ProfileRepository"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import slugify from "@calcom/lib/slugify"; import prisma from "@calcom/prisma"; import type { Membership, Team } from "@calcom/prisma/client"; diff --git a/packages/features/auth/signup/handlers/calcomHandler.ts b/packages/features/auth/signup/handlers/calcomHandler.ts index adecb8e14e..a70896dde0 100644 --- a/packages/features/auth/signup/handlers/calcomHandler.ts +++ b/packages/features/auth/signup/handlers/calcomHandler.ts @@ -2,6 +2,7 @@ import { cookies, headers } from "next/headers"; import { NextResponse } from "next/server"; import { getPremiumMonthlyPlanPriceId } from "@calcom/app-store/stripepayment/lib/utils"; +import { getLocaleFromRequest } from "@calcom/features/auth/lib/getLocaleFromRequest"; import { sendEmailVerification } from "@calcom/features/auth/lib/verifyEmail"; import { createOrUpdateMemberships } from "@calcom/features/auth/signup/utils/createOrUpdateMemberships"; import { prefillAvatar } from "@calcom/features/auth/signup/utils/prefillAvatar"; @@ -9,7 +10,6 @@ import { StripeBillingService } from "@calcom/features/ee/billing/stripe-billlin import { checkIfEmailIsBlockedInWatchlistController } from "@calcom/features/watchlist/operations/check-if-email-in-watchlist.controller"; import { hashPassword } from "@calcom/lib/auth/hashPassword"; import { WEBAPP_URL } from "@calcom/lib/constants"; -import { getLocaleFromRequest } from "@calcom/lib/getLocaleFromRequest"; import { HttpError } from "@calcom/lib/http-error"; import logger from "@calcom/lib/logger"; import type { CustomNextApiHandler } from "@calcom/lib/server/username"; diff --git a/packages/features/auth/signup/utils/createOrUpdateMemberships.ts b/packages/features/auth/signup/utils/createOrUpdateMemberships.ts index 0df016f7e7..da58171a8d 100644 --- a/packages/features/auth/signup/utils/createOrUpdateMemberships.ts +++ b/packages/features/auth/signup/utils/createOrUpdateMemberships.ts @@ -1,5 +1,5 @@ import { updateNewTeamMemberEventTypes } from "@calcom/features/ee/teams/lib/queries"; -import { ProfileRepository } from "@calcom/lib/server/repository/profile"; +import { ProfileRepository } from "@calcom/features/profile/repositories/ProfileRepository"; import { prisma } from "@calcom/prisma"; import type { Team, User, OrganizationSettings } from "@calcom/prisma/client"; import { MembershipRole } from "@calcom/prisma/enums"; diff --git a/packages/features/auth/signup/utils/organization.ts b/packages/features/auth/signup/utils/organization.ts index 5b5e27c926..1aac93e419 100644 --- a/packages/features/auth/signup/utils/organization.ts +++ b/packages/features/auth/signup/utils/organization.ts @@ -1,5 +1,5 @@ import { updateNewTeamMemberEventTypes } from "@calcom/features/ee/teams/lib/queries"; -import { ProfileRepository } from "@calcom/lib/server/repository/profile"; +import { ProfileRepository } from "@calcom/features/profile/repositories/ProfileRepository"; import { prisma } from "@calcom/prisma"; import type { Team, OrganizationSettings } from "@calcom/prisma/client"; diff --git a/packages/features/availability/lib/getUserAvailability.ts b/packages/features/availability/lib/getUserAvailability.ts index d897a2e7be..8d97a1540d 100644 --- a/packages/features/availability/lib/getUserAvailability.ts +++ b/packages/features/availability/lib/getUserAvailability.ts @@ -4,7 +4,13 @@ import { z } from "zod"; import { getCalendar } from "@calcom/app-store/_utils/getCalendar"; import type { Dayjs } from "@calcom/dayjs"; import dayjs from "@calcom/dayjs"; +import type { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; +import { + getBusyTimesFromLimits, + getBusyTimesFromTeamLimits, +} from "@calcom/features/busyTimes/lib/getBusyTimesFromLimits"; import { getBusyTimesService } from "@calcom/features/di/containers/BusyTimes"; +import { EventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository"; import type { IRedisService } from "@calcom/features/redis/IRedisService"; import { getWorkingHours } from "@calcom/lib/availability"; import type { DateOverride, WorkingHours } from "@calcom/lib/date-ranges"; @@ -14,16 +20,10 @@ import { ErrorCode } from "@calcom/lib/errorCodes"; import { HttpError } from "@calcom/lib/http-error"; import { parseBookingLimit } from "@calcom/lib/intervalLimits/isBookingLimits"; import { parseDurationLimit } from "@calcom/lib/intervalLimits/isDurationLimits"; -import { - getBusyTimesFromLimits, - getBusyTimesFromTeamLimits, -} from "@calcom/lib/intervalLimits/server/getBusyTimesFromLimits"; import { getPeriodStartDatesBetween as getPeriodStartDatesBetweenUtil } from "@calcom/lib/intervalLimits/utils/getPeriodStartDatesBetween"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import { withReporting } from "@calcom/lib/sentryWrapper"; -import type { BookingRepository } from "@calcom/lib/server/repository/booking"; -import { EventTypeRepository } from "@calcom/lib/server/repository/eventTypeRepository"; import type { PrismaOOORepository } from "@calcom/lib/server/repository/ooo"; import type { Booking, diff --git a/packages/features/bookings/Booker/components/BookEventForm/BookingFields.tsx b/packages/features/bookings/Booker/components/BookEventForm/BookingFields.tsx index 6197e948af..4712b0bfb6 100644 --- a/packages/features/bookings/Booker/components/BookEventForm/BookingFields.tsx +++ b/packages/features/bookings/Booker/components/BookEventForm/BookingFields.tsx @@ -8,12 +8,11 @@ import getLocationOptionsForSelect from "@calcom/features/bookings/lib/getLocati import { FormBuilderField } from "@calcom/features/form-builder/FormBuilderField"; import { fieldTypesConfigMap } from "@calcom/features/form-builder/fieldTypes"; import { fieldsThatSupportLabelAsSafeHtml } from "@calcom/features/form-builder/fieldsThatSupportLabelAsSafeHtml"; +import { SystemField } from "@calcom/lib/SystemField"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { markdownToSafeHTML } from "@calcom/lib/markdownToSafeHTML"; import type { RouterOutputs } from "@calcom/trpc/react"; -import { SystemField } from "../../../lib/SystemField"; - type Fields = NonNullable["bookingFields"]; export const BookingFields = ({ fields, diff --git a/packages/features/bookings/Booker/components/hooks/useBookings.ts b/packages/features/bookings/Booker/components/hooks/useBookings.ts index e5a2c8ecb7..3069ff5a11 100644 --- a/packages/features/bookings/Booker/components/hooks/useBookings.ts +++ b/packages/features/bookings/Booker/components/hooks/useBookings.ts @@ -15,7 +15,7 @@ import { createBooking, createRecurringBooking, createInstantBooking } from "@ca import type { GetBookingType } from "@calcom/features/bookings/lib/get-booking"; import type { BookerEvent } from "@calcom/features/bookings/types"; import { getFullName } from "@calcom/features/form-builder/utils"; -import { useBookingSuccessRedirect } from "@calcom/lib/bookingSuccessRedirect"; +import { useBookingSuccessRedirect } from "@calcom/features/bookings/lib/bookingSuccessRedirect"; import { ErrorCode } from "@calcom/lib/errorCodes"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { localStorage } from "@calcom/lib/webstorage"; diff --git a/packages/features/bookings/components/event-meta/Members.tsx b/packages/features/bookings/components/event-meta/Members.tsx index cf001f4d2b..096d53d996 100644 --- a/packages/features/bookings/components/event-meta/Members.tsx +++ b/packages/features/bookings/components/event-meta/Members.tsx @@ -2,9 +2,9 @@ import { useIsPlatform } from "@calcom/atoms/hooks/useIsPlatform"; import { useIsEmbed } from "@calcom/embed-core/embed-iframe"; import { useBookerStore } from "@calcom/features/bookings/Booker/store"; import type { BookerEvent } from "@calcom/features/bookings/types"; +import { getBookerBaseUrlSync } from "@calcom/features/ee/organizations/lib/getBookerBaseUrlSync"; +import { getTeamUrlSync } from "@calcom/features/ee/organizations/lib/getTeamUrlSync"; import { getUserAvatarUrl } from "@calcom/lib/getAvatarUrl"; -import { getBookerBaseUrlSync } from "@calcom/lib/getBookerUrl/client"; -import { getTeamUrlSync } from "@calcom/lib/getBookerUrl/client"; import { SchedulingType } from "@calcom/prisma/enums"; import { AvatarGroup } from "@calcom/ui/components/avatar"; diff --git a/packages/lib/hooks/useBookerUrl.ts b/packages/features/bookings/hooks/useBookerUrl.ts similarity index 100% rename from packages/lib/hooks/useBookerUrl.ts rename to packages/features/bookings/hooks/useBookerUrl.ts diff --git a/packages/features/bookings/lib/EventManager.ts b/packages/features/bookings/lib/EventManager.ts index ca37a206da..f0819ec771 100644 --- a/packages/features/bookings/lib/EventManager.ts +++ b/packages/features/bookings/lib/EventManager.ts @@ -11,9 +11,9 @@ import getApps from "@calcom/app-store/utils"; import { createEvent, updateEvent, deleteEvent } from "@calcom/features/calendars/lib/CalendarManager"; import { createMeeting, updateMeeting, deleteMeeting } from "@calcom/features/conferencing/lib/videoClient"; import CrmManager from "@calcom/features/crmManager/crmManager"; +import CRMScheduler from "@calcom/features/crmManager/crmScheduler"; import { FeaturesRepository } from "@calcom/features/flags/features.repository"; import { getUid } from "@calcom/lib/CalEventParser"; -import CRMScheduler from "@calcom/lib/crmManager/tasker/crmScheduler"; import { symmetricDecrypt } from "@calcom/lib/crypto"; import { isDelegationCredential } from "@calcom/lib/delegationCredential"; import logger from "@calcom/lib/logger"; diff --git a/packages/lib/bookingSuccessRedirect.test.ts b/packages/features/bookings/lib/bookingSuccessRedirect.test.ts similarity index 100% rename from packages/lib/bookingSuccessRedirect.test.ts rename to packages/features/bookings/lib/bookingSuccessRedirect.test.ts diff --git a/packages/lib/bookingSuccessRedirect.ts b/packages/features/bookings/lib/bookingSuccessRedirect.ts similarity index 99% rename from packages/lib/bookingSuccessRedirect.ts rename to packages/features/bookings/lib/bookingSuccessRedirect.ts index 870f50792b..55fc7d1c91 100644 --- a/packages/lib/bookingSuccessRedirect.ts +++ b/packages/features/bookings/lib/bookingSuccessRedirect.ts @@ -4,12 +4,11 @@ import dayjs from "@calcom/dayjs"; import type { PaymentPageProps } from "@calcom/ee/payments/pages/payment"; import { useIsEmbed } from "@calcom/embed-core/embed-iframe"; import type { BookingResponse } from "@calcom/features/bookings/types"; +import { getSafe } from "@calcom/lib/getSafe"; import { useCompatSearchParams } from "@calcom/lib/hooks/useCompatSearchParams"; import { navigateInTopWindow } from "@calcom/lib/navigateInTopWindow"; import type { EventType } from "@calcom/prisma/client"; -import { getSafe } from "./getSafe"; - export function getNewSearchParams(args: { query: Record; searchParams?: URLSearchParams; diff --git a/packages/lib/intervalLimits/server/checkBookingLimits.ts b/packages/features/bookings/lib/checkBookingLimits.ts similarity index 88% rename from packages/lib/intervalLimits/server/checkBookingLimits.ts rename to packages/features/bookings/lib/checkBookingLimits.ts index 5b8ca77781..bf354b9beb 100644 --- a/packages/lib/intervalLimits/server/checkBookingLimits.ts +++ b/packages/features/bookings/lib/checkBookingLimits.ts @@ -1,12 +1,11 @@ import dayjs from "@calcom/dayjs"; +import type { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; import { getErrorFromUnknown } from "@calcom/lib/errors"; import { HttpError } from "@calcom/lib/http-error"; +import { ascendingLimitKeys, intervalLimitKeyToUnit } from "@calcom/lib/intervalLimits/intervalLimit"; +import type { IntervalLimit, IntervalLimitKey } from "@calcom/lib/intervalLimits/intervalLimitSchema"; +import { parseBookingLimit } from "@calcom/lib/intervalLimits/isBookingLimits"; import { withReporting } from "@calcom/lib/sentryWrapper"; -import type { BookingRepository } from "@calcom/lib/server/repository/booking"; - -import { ascendingLimitKeys, intervalLimitKeyToUnit } from "../intervalLimit"; -import type { IntervalLimit, IntervalLimitKey } from "../intervalLimitSchema"; -import { parseBookingLimit } from "../isBookingLimits"; export interface ICheckBookingLimitsService { bookingRepo: BookingRepository; diff --git a/packages/lib/intervalLimits/server/checkDurationLimits.ts b/packages/features/bookings/lib/checkDurationLimits.ts similarity index 81% rename from packages/lib/intervalLimits/server/checkDurationLimits.ts rename to packages/features/bookings/lib/checkDurationLimits.ts index 4fd7572419..aad3986933 100644 --- a/packages/lib/intervalLimits/server/checkDurationLimits.ts +++ b/packages/features/bookings/lib/checkDurationLimits.ts @@ -1,13 +1,12 @@ import dayjs from "@calcom/dayjs"; +import { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; import { getErrorFromUnknown } from "@calcom/lib/errors"; import { HttpError } from "@calcom/lib/http-error"; -import { BookingRepository } from "@calcom/lib/server/repository/booking"; +import { ascendingLimitKeys, intervalLimitKeyToUnit } from "@calcom/lib/intervalLimits/intervalLimit"; +import type { IntervalLimit, IntervalLimitKey } from "@calcom/lib/intervalLimits/intervalLimitSchema"; +import { parseDurationLimit } from "@calcom/lib/intervalLimits/isDurationLimits"; import prisma from "@calcom/prisma"; -import { ascendingLimitKeys, intervalLimitKeyToUnit } from "../intervalLimit"; -import type { IntervalLimit, IntervalLimitKey } from "../intervalLimitSchema"; -import { parseDurationLimit } from "../isDurationLimits"; - export async function checkDurationLimits( durationLimits: IntervalLimit, eventStartDate: Date, diff --git a/packages/features/bookings/lib/getAllCredentialsForUsersOnEvent/getAllCredentials.test.ts b/packages/features/bookings/lib/getAllCredentialsForUsersOnEvent/getAllCredentials.test.ts index c9c60997d8..25daaf47a1 100644 --- a/packages/features/bookings/lib/getAllCredentialsForUsersOnEvent/getAllCredentials.test.ts +++ b/packages/features/bookings/lib/getAllCredentialsForUsersOnEvent/getAllCredentials.test.ts @@ -7,9 +7,9 @@ import { import { describe, test, expect, vi } from "vitest"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; -vi.mock("@calcom/lib/server/repository/user", () => { +vi.mock("@calcom/features/users/repositories/UserRepository", () => { return { UserRepository: vi.fn().mockImplementation(() => ({ enrichUserWithItsProfile: vi.fn(), diff --git a/packages/features/bookings/lib/getAllCredentialsForUsersOnEvent/getAllCredentials.ts b/packages/features/bookings/lib/getAllCredentialsForUsersOnEvent/getAllCredentials.ts index 385d485281..90cc769326 100644 --- a/packages/features/bookings/lib/getAllCredentialsForUsersOnEvent/getAllCredentials.ts +++ b/packages/features/bookings/lib/getAllCredentialsForUsersOnEvent/getAllCredentials.ts @@ -2,7 +2,7 @@ import type { z } from "zod"; import { eventTypeAppMetadataOptionalSchema } from "@calcom/app-store/zod-utils"; import { enrichUserWithDelegationCredentialsIncludeServiceAccountKey } from "@calcom/app-store/delegationCredential"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import prisma from "@calcom/prisma"; import { credentialForCalendarServiceSelect } from "@calcom/prisma/selects/credential"; import type { EventTypeMetaDataSchema } from "@calcom/prisma/zod-utils"; diff --git a/packages/features/bookings/lib/getBookingFields.ts b/packages/features/bookings/lib/getBookingFields.ts index 150d5cd4d2..6897f69922 100644 --- a/packages/features/bookings/lib/getBookingFields.ts +++ b/packages/features/bookings/lib/getBookingFields.ts @@ -3,7 +3,7 @@ import type { z } from "zod"; import { SMS_REMINDER_NUMBER_FIELD, CAL_AI_AGENT_PHONE_NUMBER_FIELD, -} from "@calcom/features/bookings/lib/SystemField"; +} from "@calcom/lib/SystemField"; import type { Workflow } from "@calcom/features/ee/workflows/lib/types"; import { fieldsThatSupportLabelAsSafeHtml } from "@calcom/features/form-builder/fieldsThatSupportLabelAsSafeHtml"; import { getFieldIdentifier } from "@calcom/features/form-builder/utils/getFieldIdentifier"; diff --git a/packages/features/bookings/lib/getCalEventResponses.ts b/packages/features/bookings/lib/getCalEventResponses.ts index bda5267440..912286a83a 100644 --- a/packages/features/bookings/lib/getCalEventResponses.ts +++ b/packages/features/bookings/lib/getCalEventResponses.ts @@ -1,6 +1,6 @@ import type z from "zod"; -import { SystemField } from "@calcom/features/bookings/lib/SystemField"; +import { SystemField } from "@calcom/lib/SystemField"; import type { bookingResponsesDbSchema } from "@calcom/features/bookings/lib/getBookingResponsesSchema"; import { contructEmailFromPhoneNumber } from "@calcom/lib/contructEmailFromPhoneNumber"; import { getBookingWithResponses } from "@calcom/lib/getBooking"; diff --git a/packages/lib/getLabelValueMapFromResponses.ts b/packages/features/bookings/lib/getLabelValueMapFromResponses.ts similarity index 97% rename from packages/lib/getLabelValueMapFromResponses.ts rename to packages/features/bookings/lib/getLabelValueMapFromResponses.ts index 5779b17327..1909c604fb 100644 --- a/packages/lib/getLabelValueMapFromResponses.ts +++ b/packages/features/bookings/lib/getLabelValueMapFromResponses.ts @@ -1,6 +1,6 @@ import type z from "zod"; -import { TITLE_FIELD, SMS_REMINDER_NUMBER_FIELD } from "@calcom/features/bookings/lib/SystemField"; +import { TITLE_FIELD, SMS_REMINDER_NUMBER_FIELD } from "@calcom/lib/SystemField"; import type { bookingResponse } from "@calcom/features/bookings/lib/getBookingResponsesSchema"; import type { CalendarEvent } from "@calcom/types/Calendar"; diff --git a/packages/lib/server/getLuckyUser.integration-test.ts b/packages/features/bookings/lib/getLuckyUser.integration-test.ts similarity index 100% rename from packages/lib/server/getLuckyUser.integration-test.ts rename to packages/features/bookings/lib/getLuckyUser.integration-test.ts diff --git a/packages/features/bookings/lib/getLuckyUser.ts b/packages/features/bookings/lib/getLuckyUser.ts index 6571645b98..c355affa9f 100644 --- a/packages/features/bookings/lib/getLuckyUser.ts +++ b/packages/features/bookings/lib/getLuckyUser.ts @@ -8,10 +8,10 @@ import logger from "@calcom/lib/logger"; import { raqbQueryValueSchema } from "@calcom/lib/raqb/zod"; import { safeStringify } from "@calcom/lib/safeStringify"; import type { PrismaAttributeRepository } from "@calcom/lib/server/repository/PrismaAttributeRepository"; -import type { BookingRepository } from "@calcom/lib/server/repository/booking"; +import type { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; import type { HostRepository } from "@calcom/lib/server/repository/host"; import type { PrismaOOORepository } from "@calcom/lib/server/repository/ooo"; -import type { UserRepository } from "@calcom/lib/server/repository/user"; +import type { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import type { Prisma } from "@calcom/prisma/client"; import type { User, Booking, SelectedCalendar } from "@calcom/prisma/client"; import type { AttributeType } from "@calcom/prisma/enums"; diff --git a/packages/features/bookings/lib/handleCancelBooking.ts b/packages/features/bookings/lib/handleCancelBooking.ts index 12f6b60c85..02fc09ec4f 100644 --- a/packages/features/bookings/lib/handleCancelBooking.ts +++ b/packages/features/bookings/lib/handleCancelBooking.ts @@ -18,7 +18,7 @@ import { import sendPayload from "@calcom/features/webhooks/lib/sendOrSchedulePayload"; import type { EventTypeInfo } from "@calcom/features/webhooks/lib/sendPayload"; import EventManager from "@calcom/features/bookings/lib/EventManager"; -import { getBookerBaseUrl } from "@calcom/lib/getBookerUrl/server"; +import { getBookerBaseUrl } from "@calcom/features/ee/organizations/lib/getBookerUrlServer"; import getOrgIdFromMemberOrTeamId from "@calcom/lib/getOrgIdFromMemberOrTeamId"; import { getTeamIdFromEventType } from "@calcom/lib/getTeamIdFromEventType"; import { HttpError } from "@calcom/lib/http-error"; @@ -27,7 +27,7 @@ import { parseRecurringEvent } from "@calcom/lib/isRecurringEvent"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import { getTranslation } from "@calcom/lib/server/i18n"; -import { WorkflowRepository } from "@calcom/lib/server/repository/workflow"; +import { WorkflowRepository } from "@calcom/features/ee/workflows/repositories/WorkflowRepository"; import { getTimeFormatStringFromUserTimeFormat } from "@calcom/lib/timeFormat"; import prisma from "@calcom/prisma"; import type { Prisma, WorkflowReminder } from "@calcom/prisma/client"; diff --git a/packages/features/bookings/lib/handleConfirmation.ts b/packages/features/bookings/lib/handleConfirmation.ts index b85fde8951..bf259d9576 100644 --- a/packages/features/bookings/lib/handleConfirmation.ts +++ b/packages/features/bookings/lib/handleConfirmation.ts @@ -13,7 +13,7 @@ import type { EventPayloadType, EventTypeInfo } from "@calcom/features/webhooks/ import { getVideoCallUrlFromCalEvent } from "@calcom/lib/CalEventParser"; import type { EventManagerUser } from "@calcom/features/bookings/lib/EventManager"; import EventManager, { placeholderCreatedEvent } from "@calcom/features/bookings/lib/EventManager"; -import { getBookerBaseUrl } from "@calcom/lib/getBookerUrl/server"; +import { getBookerBaseUrl } from "@calcom/features/ee/organizations/lib/getBookerUrlServer"; import getOrgIdFromMemberOrTeamId from "@calcom/lib/getOrgIdFromMemberOrTeamId"; import { getTeamIdFromEventType } from "@calcom/lib/getTeamIdFromEventType"; import logger from "@calcom/lib/logger"; diff --git a/packages/features/bookings/lib/handleNewBooking.ts b/packages/features/bookings/lib/handleNewBooking.ts index 9f7605f2e8..4a436f1914 100644 --- a/packages/features/bookings/lib/handleNewBooking.ts +++ b/packages/features/bookings/lib/handleNewBooking.ts @@ -23,6 +23,7 @@ import { scheduleMandatoryReminder } from "@calcom/ee/workflows/lib/reminders/sc import getICalUID from "@calcom/emails/lib/getICalUID"; import { CalendarEventBuilder } from "@calcom/features/CalendarEventBuilder"; import EventManager, { placeholderCreatedEvent } from "@calcom/features/bookings/lib/EventManager"; +import type { CheckBookingLimitsService } from "@calcom/features/bookings/lib/checkBookingLimits"; import type { BookingDataSchemaGetter } from "@calcom/features/bookings/lib/dto/types"; import type { CreateRegularBookingData, @@ -33,13 +34,16 @@ import type { CheckBookingAndDurationLimitsService } from "@calcom/features/book import { handlePayment } from "@calcom/features/bookings/lib/handlePayment"; import { handleWebhookTrigger } from "@calcom/features/bookings/lib/handleWebhookTrigger"; import { isEventTypeLoggingEnabled } from "@calcom/features/bookings/lib/isEventTypeLoggingEnabled"; +import type { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; import type { CacheService } from "@calcom/features/calendar-cache/lib/getShouldServeCache"; import AssignmentReasonRecorder from "@calcom/features/ee/round-robin/assignmentReason/AssignmentReasonRecorder"; +import { WorkflowRepository } from "@calcom/features/ee/workflows/repositories/WorkflowRepository"; import { getUsernameList } from "@calcom/features/eventtypes/lib/defaultEvents"; import { getEventName, updateHostInEventName } from "@calcom/features/eventtypes/lib/eventNaming"; import type { FeaturesRepository } from "@calcom/features/flags/features.repository"; import { getFullName } from "@calcom/features/form-builder/utils"; import { handleAnalyticsEvents } from "@calcom/features/tasker/tasks/analytics/handleAnalyticsEvents"; +import type { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { UsersRepository } from "@calcom/features/users/users.repository"; import type { GetSubscriberOptions } from "@calcom/features/webhooks/lib/getWebhooks"; import getWebhooks from "@calcom/features/webhooks/lib/getWebhooks"; @@ -55,21 +59,17 @@ import { DEFAULT_GROUP_ID } from "@calcom/lib/constants"; import { ErrorCode } from "@calcom/lib/errorCodes"; import { getErrorFromUnknown } from "@calcom/lib/errors"; import { extractBaseEmail } from "@calcom/lib/extract-base-email"; -import { getBookerBaseUrl } from "@calcom/lib/getBookerUrl/server"; +import { getBookerBaseUrl } from "@calcom/features/ee/organizations/lib/getBookerUrlServer"; import getOrgIdFromMemberOrTeamId from "@calcom/lib/getOrgIdFromMemberOrTeamId"; import { getTeamIdFromEventType } from "@calcom/lib/getTeamIdFromEventType"; import { HttpError } from "@calcom/lib/http-error"; -import type { CheckBookingLimitsService } from "@calcom/lib/intervalLimits/server/checkBookingLimits"; import logger from "@calcom/lib/logger"; import { getPiiFreeCalendarEvent, getPiiFreeEventType } from "@calcom/lib/piiFreeData"; import { safeStringify } from "@calcom/lib/safeStringify"; import { getTranslation } from "@calcom/lib/server/i18n"; import type { PrismaAttributeRepository as AttributeRepository } from "@calcom/lib/server/repository/PrismaAttributeRepository"; -import type { BookingRepository } from "@calcom/lib/server/repository/booking"; import type { HostRepository } from "@calcom/lib/server/repository/host"; import type { PrismaOOORepository as OooRepository } from "@calcom/lib/server/repository/ooo"; -import type { UserRepository } from "@calcom/lib/server/repository/user"; -import { WorkflowRepository } from "@calcom/lib/server/repository/workflow"; import { HashedLinkService } from "@calcom/lib/server/service/hashedLinkService"; import { WorkflowService } from "@calcom/lib/server/service/workflows"; import { getTimeFormatStringFromUserTimeFormat } from "@calcom/lib/timeFormat"; diff --git a/packages/features/bookings/lib/handleNewBooking/checkBookingAndDurationLimits.ts b/packages/features/bookings/lib/handleNewBooking/checkBookingAndDurationLimits.ts index fc7775d1be..504d962466 100644 --- a/packages/features/bookings/lib/handleNewBooking/checkBookingAndDurationLimits.ts +++ b/packages/features/bookings/lib/handleNewBooking/checkBookingAndDurationLimits.ts @@ -1,7 +1,7 @@ import dayjs from "@calcom/dayjs"; import type { IntervalLimit } from "@calcom/lib/intervalLimits/intervalLimitSchema"; -import type { CheckBookingLimitsService } from "@calcom/lib/intervalLimits/server/checkBookingLimits"; -import { checkDurationLimits } from "@calcom/lib/intervalLimits/server/checkDurationLimits"; +import type { CheckBookingLimitsService } from "@calcom/features/bookings/lib/checkBookingLimits"; +import { checkDurationLimits } from "@calcom/features/bookings/lib/checkDurationLimits"; import { withReporting } from "@calcom/lib/sentryWrapper"; import type { NewBookingEventType } from "./getEventTypesFromDB"; diff --git a/packages/features/bookings/lib/handleNewBooking/getEventTypesFromDB.ts b/packages/features/bookings/lib/handleNewBooking/getEventTypesFromDB.ts index 7e60482df2..5c3507ce1d 100644 --- a/packages/features/bookings/lib/handleNewBooking/getEventTypesFromDB.ts +++ b/packages/features/bookings/lib/handleNewBooking/getEventTypesFromDB.ts @@ -4,7 +4,7 @@ import { getBookingFieldsWithSystemFields } from "@calcom/features/bookings/lib/ import type { DefaultEvent } from "@calcom/features/eventtypes/lib/defaultEvents"; import { ErrorCode } from "@calcom/lib/errorCodes"; import { parseRecurringEvent } from "@calcom/lib/isRecurringEvent"; -import { withSelectedCalendars } from "@calcom/lib/server/repository/user"; +import { withSelectedCalendars } from "@calcom/features/users/repositories/UserRepository"; import { prisma } from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; import { credentialForCalendarServiceSelect } from "@calcom/prisma/selects/credential"; diff --git a/packages/features/bookings/lib/handleNewBooking/getRequiresConfirmationFlags.ts b/packages/features/bookings/lib/handleNewBooking/getRequiresConfirmationFlags.ts index 98421db271..426dcfe2b2 100644 --- a/packages/features/bookings/lib/handleNewBooking/getRequiresConfirmationFlags.ts +++ b/packages/features/bookings/lib/handleNewBooking/getRequiresConfirmationFlags.ts @@ -1,5 +1,5 @@ import dayjs from "@calcom/dayjs"; -import { checkIfFreeEmailDomain } from "@calcom/lib/freeEmailDomainCheck/checkIfFreeEmailDomain"; +import { checkIfFreeEmailDomain } from "@calcom/features/watchlist/lib/checkIfFreeEmailDomain"; import { withReporting } from "@calcom/lib/sentryWrapper"; import type { getEventTypeResponse } from "./getEventTypesFromDB"; diff --git a/packages/features/bookings/lib/handleNewBooking/loadAndValidateUsers.ts b/packages/features/bookings/lib/handleNewBooking/loadAndValidateUsers.ts index d7f6afce7a..c57bfc17dc 100644 --- a/packages/features/bookings/lib/handleNewBooking/loadAndValidateUsers.ts +++ b/packages/features/bookings/lib/handleNewBooking/loadAndValidateUsers.ts @@ -9,7 +9,7 @@ import { HttpError } from "@calcom/lib/http-error"; import { getPiiFreeUser } from "@calcom/lib/piiFreeData"; import { safeStringify } from "@calcom/lib/safeStringify"; import { withReporting } from "@calcom/lib/sentryWrapper"; -import { withSelectedCalendars } from "@calcom/lib/server/repository/user"; +import { withSelectedCalendars } from "@calcom/features/users/repositories/UserRepository"; import { userSelect } from "@calcom/prisma"; import prisma from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; diff --git a/packages/features/bookings/lib/handleNewBooking/loadUsers.ts b/packages/features/bookings/lib/handleNewBooking/loadUsers.ts index 048ef5b2d4..d52794c67f 100644 --- a/packages/features/bookings/lib/handleNewBooking/loadUsers.ts +++ b/packages/features/bookings/lib/handleNewBooking/loadUsers.ts @@ -7,7 +7,7 @@ import { import { HttpError } from "@calcom/lib/http-error"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; -import { withSelectedCalendars, UserRepository } from "@calcom/lib/server/repository/user"; +import { withSelectedCalendars, UserRepository } from "@calcom/features/users/repositories/UserRepository"; import prisma, { userSelect } from "@calcom/prisma"; import { Prisma } from "@calcom/prisma/client"; import { credentialForCalendarServiceSelect } from "@calcom/prisma/selects/credential"; diff --git a/packages/features/bookings/lib/handleNewBooking/originalRescheduledBookingUtils.ts b/packages/features/bookings/lib/handleNewBooking/originalRescheduledBookingUtils.ts index 356a471977..96efeebe6a 100644 --- a/packages/features/bookings/lib/handleNewBooking/originalRescheduledBookingUtils.ts +++ b/packages/features/bookings/lib/handleNewBooking/originalRescheduledBookingUtils.ts @@ -1,6 +1,6 @@ import { ErrorCode } from "@calcom/lib/errorCodes"; import { HttpError } from "@calcom/lib/http-error"; -import { BookingRepository } from "@calcom/lib/server/repository/booking"; +import { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; import type { Prisma } from "@calcom/prisma/client"; import { BookingStatus } from "@calcom/prisma/enums"; import prisma from "@calcom/prisma"; diff --git a/packages/features/bookings/lib/handleSeats/cancel/cancelAttendeeSeat.ts b/packages/features/bookings/lib/handleSeats/cancel/cancelAttendeeSeat.ts index 3e4b872f50..e3e2acc7a9 100644 --- a/packages/features/bookings/lib/handleSeats/cancel/cancelAttendeeSeat.ts +++ b/packages/features/bookings/lib/handleSeats/cancel/cancelAttendeeSeat.ts @@ -1,16 +1,16 @@ import { getCalendar } from "@calcom/app-store/_utils/getCalendar"; +import { getAllDelegationCredentialsForUserIncludeServiceAccountKey } from "@calcom/app-store/delegationCredential"; +import { getDelegationCredentialOrFindRegularCredential } from "@calcom/app-store/delegationCredential"; import { sendCancelledSeatEmailsAndSMS } from "@calcom/emails"; +import { updateMeeting } from "@calcom/features/conferencing/lib/videoClient"; +import { WorkflowRepository } from "@calcom/features/ee/workflows/repositories/WorkflowRepository"; import sendPayload from "@calcom/features/webhooks/lib/sendOrSchedulePayload"; import type { EventPayloadType, EventTypeInfo } from "@calcom/features/webhooks/lib/sendPayload"; import { getRichDescription } from "@calcom/lib/CalEventParser"; -import { getAllDelegationCredentialsForUserIncludeServiceAccountKey } from "@calcom/app-store/delegationCredential"; -import { getDelegationCredentialOrFindRegularCredential } from "@calcom/app-store/delegationCredential"; import { HttpError } from "@calcom/lib/http-error"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import { getTranslation } from "@calcom/lib/server/i18n"; -import { WorkflowRepository } from "@calcom/lib/server/repository/workflow"; -import { updateMeeting } from "@calcom/features/conferencing/lib/videoClient"; import prisma from "@calcom/prisma"; import { WebhookTriggerEvents } from "@calcom/prisma/enums"; import { bookingCancelAttendeeSeatSchema } from "@calcom/prisma/zod-utils"; diff --git a/packages/features/bookings/lib/host-filtering/filterHostsBySameRoundRobinHost.test.ts b/packages/features/bookings/lib/host-filtering/filterHostsBySameRoundRobinHost.test.ts index db914bea67..cf4a00d3e5 100644 --- a/packages/features/bookings/lib/host-filtering/filterHostsBySameRoundRobinHost.test.ts +++ b/packages/features/bookings/lib/host-filtering/filterHostsBySameRoundRobinHost.test.ts @@ -1,7 +1,7 @@ import type { Mock } from "vitest"; import { describe, expect, it, vi, afterEach } from "vitest"; -import type { BookingRepository } from "@calcom/lib/server/repository/booking"; +import type { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; import { FilterHostsService } from "./filterHostsBySameRoundRobinHost"; diff --git a/packages/features/bookings/lib/host-filtering/filterHostsBySameRoundRobinHost.ts b/packages/features/bookings/lib/host-filtering/filterHostsBySameRoundRobinHost.ts index b34f7c46a1..587c37836d 100644 --- a/packages/features/bookings/lib/host-filtering/filterHostsBySameRoundRobinHost.ts +++ b/packages/features/bookings/lib/host-filtering/filterHostsBySameRoundRobinHost.ts @@ -1,5 +1,5 @@ import { isRerouting } from "@calcom/lib/bookings/routing/utils"; -import type { BookingRepository } from "@calcom/lib/server/repository/booking"; +import type { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; export interface IFilterHostsService { bookingRepo: BookingRepository; diff --git a/packages/features/bookings/lib/host-filtering/findQualifiedHostsWithDelegationCredentials.ts b/packages/features/bookings/lib/host-filtering/findQualifiedHostsWithDelegationCredentials.ts index 611a3c48af..27483c327c 100644 --- a/packages/features/bookings/lib/host-filtering/findQualifiedHostsWithDelegationCredentials.ts +++ b/packages/features/bookings/lib/host-filtering/findQualifiedHostsWithDelegationCredentials.ts @@ -5,7 +5,7 @@ import { import type { EventType } from "@calcom/features/users/lib/getRoutedUsers"; import { withReporting } from "@calcom/lib/sentryWrapper"; import type { RoutingFormResponse } from "@calcom/features/bookings/lib/getLuckyUser"; -import type { BookingRepository } from "@calcom/lib/server/repository/booking"; +import type { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; import type { SelectedCalendar } from "@calcom/prisma/client"; import type { SchedulingType } from "@calcom/prisma/enums"; import type { CredentialForCalendarService, CredentialPayload } from "@calcom/types/Credential"; diff --git a/packages/features/bookings/lib/payment/getBooking.ts b/packages/features/bookings/lib/payment/getBooking.ts index 2d33d57d3b..004f57d484 100644 --- a/packages/features/bookings/lib/payment/getBooking.ts +++ b/packages/features/bookings/lib/payment/getBooking.ts @@ -1,7 +1,7 @@ import { workflowSelect } from "@calcom/ee/workflows/lib/getAllWorkflows"; import { getCalEventResponses } from "@calcom/features/bookings/lib/getCalEventResponses"; import { enrichUserWithDelegationCredentials } from "@calcom/app-store/delegationCredential"; -import { getBookerBaseUrl } from "@calcom/lib/getBookerUrl/server"; +import { getBookerBaseUrl } from "@calcom/features/ee/organizations/lib/getBookerUrlServer"; import { HttpError as HttpCode } from "@calcom/lib/http-error"; import { isPrismaObjOrUndefined } from "@calcom/lib/isPrismaObj"; import { parseRecurringEvent } from "@calcom/lib/isRecurringEvent"; diff --git a/packages/features/bookings/lib/payment/handleNoShowFee.test.ts b/packages/features/bookings/lib/payment/handleNoShowFee.test.ts index 735126e8f4..ba51ac2384 100644 --- a/packages/features/bookings/lib/payment/handleNoShowFee.test.ts +++ b/packages/features/bookings/lib/payment/handleNoShowFee.test.ts @@ -1,13 +1,13 @@ import { describe, expect, it, vi, beforeEach } from "vitest"; -// eslint-disable-next-line no-restricted-imports + import { PaymentServiceMap } from "@calcom/app-store/payment.services.generated"; import { sendNoShowFeeChargedEmail } from "@calcom/emails"; import { ErrorCode } from "@calcom/lib/errorCodes"; import { ErrorWithCode } from "@calcom/lib/errors"; import { getTranslation } from "@calcom/lib/server/i18n"; import { CredentialRepository } from "@calcom/lib/server/repository/credential"; -import { MembershipRepository } from "@calcom/lib/server/repository/membership"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; import { TeamRepository } from "@calcom/lib/server/repository/team"; import { handleNoShowFee } from "./handleNoShowFee"; @@ -37,7 +37,7 @@ vi.mock("@calcom/lib/server/repository/credential", () => ({ }, })); -vi.mock("@calcom/lib/server/repository/membership", () => ({ +vi.mock("@calcom/features/membership/repositories/MembershipRepository", () => ({ MembershipRepository: { findUniqueByUserIdAndTeamId: vi.fn(), }, diff --git a/packages/features/bookings/lib/payment/handleNoShowFee.ts b/packages/features/bookings/lib/payment/handleNoShowFee.ts index b5f102366f..2a3b78e48d 100644 --- a/packages/features/bookings/lib/payment/handleNoShowFee.ts +++ b/packages/features/bookings/lib/payment/handleNoShowFee.ts @@ -8,7 +8,7 @@ import { ErrorWithCode } from "@calcom/lib/errors"; import logger from "@calcom/lib/logger"; import { getTranslation } from "@calcom/lib/server/i18n"; import { CredentialRepository } from "@calcom/lib/server/repository/credential"; -import { MembershipRepository } from "@calcom/lib/server/repository/membership"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; import { TeamRepository } from "@calcom/lib/server/repository/team"; import prisma from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; diff --git a/packages/features/bookings/lib/payment/processNoShowFeeOnCancellation.test.ts b/packages/features/bookings/lib/payment/processNoShowFeeOnCancellation.test.ts index 4971fd41a3..d18078b111 100644 --- a/packages/features/bookings/lib/payment/processNoShowFeeOnCancellation.test.ts +++ b/packages/features/bookings/lib/payment/processNoShowFeeOnCancellation.test.ts @@ -1,13 +1,13 @@ import { describe, expect, it, vi, beforeEach } from "vitest"; -import { MembershipRepository } from "@calcom/lib/server/repository/membership"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; import type { Payment } from "@calcom/prisma/client"; import { handleNoShowFee } from "./handleNoShowFee"; import { processNoShowFeeOnCancellation } from "./processNoShowFeeOnCancellation"; import { shouldChargeNoShowCancellationFee } from "./shouldChargeNoShowCancellationFee"; -vi.mock("@calcom/lib/server/repository/membership", () => ({ +vi.mock("@calcom/features/membership/repositories/MembershipRepository", () => ({ MembershipRepository: { findUniqueByUserIdAndTeamId: vi.fn(), }, diff --git a/packages/features/bookings/lib/payment/processNoShowFeeOnCancellation.ts b/packages/features/bookings/lib/payment/processNoShowFeeOnCancellation.ts index 4d8a82188f..9015d72af5 100644 --- a/packages/features/bookings/lib/payment/processNoShowFeeOnCancellation.ts +++ b/packages/features/bookings/lib/payment/processNoShowFeeOnCancellation.ts @@ -1,6 +1,6 @@ import { eventTypeMetaDataSchemaWithTypedApps } from "@calcom/app-store/zod-utils"; import logger from "@calcom/lib/logger"; -import { MembershipRepository } from "@calcom/lib/server/repository/membership"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; import type { Payment } from "@calcom/prisma/client"; import { MembershipRole } from "@calcom/prisma/enums"; diff --git a/packages/lib/server/repository/booking.test.ts b/packages/features/bookings/repositories/BookingRepository.test.ts similarity index 99% rename from packages/lib/server/repository/booking.test.ts rename to packages/features/bookings/repositories/BookingRepository.test.ts index 4ca0f192f2..1638f899f9 100644 --- a/packages/lib/server/repository/booking.test.ts +++ b/packages/features/bookings/repositories/BookingRepository.test.ts @@ -4,7 +4,7 @@ import { describe, it, expect, beforeEach, vi } from "vitest"; import { BookingStatus, RRTimestampBasis } from "@calcom/prisma/enums"; -import { BookingRepository } from "./booking"; +import { BookingRepository } from "./BookingRepository"; const createAttendeeNoShowTestBookings = async () => { await Promise.all([ diff --git a/packages/lib/server/repository/booking.ts b/packages/features/bookings/repositories/BookingRepository.ts similarity index 99% rename from packages/lib/server/repository/booking.ts rename to packages/features/bookings/repositories/BookingRepository.ts index 67e18e8d36..4aaf5c641b 100644 --- a/packages/lib/server/repository/booking.ts +++ b/packages/features/bookings/repositories/BookingRepository.ts @@ -1,3 +1,4 @@ +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { withReporting } from "@calcom/lib/sentryWrapper"; import type { PrismaClient } from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; @@ -6,8 +7,6 @@ import { RRTimestampBasis, BookingStatus } from "@calcom/prisma/enums"; import { bookingMinimalSelect } from "@calcom/prisma/selects/booking"; import { credentialForCalendarServiceSelect } from "@calcom/prisma/selects/credential"; -import { UserRepository } from "./user"; - export type FormResponse = Record< // Field ID string, diff --git a/packages/features/bot-detection/BotDetectionService.test.ts b/packages/features/bot-detection/BotDetectionService.test.ts index fb02356255..fc164d8bdb 100644 --- a/packages/features/bot-detection/BotDetectionService.test.ts +++ b/packages/features/bot-detection/BotDetectionService.test.ts @@ -3,7 +3,7 @@ import { beforeEach, describe, expect, it, vi } from "vitest"; import type { FeaturesRepository } from "@calcom/features/flags/features.repository"; import { HttpError } from "@calcom/lib/http-error"; -import type { EventTypeRepository } from "@calcom/lib/server/repository/eventTypeRepository"; +import type { EventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository"; import { BotDetectionService } from "./BotDetectionService"; diff --git a/packages/features/bot-detection/BotDetectionService.ts b/packages/features/bot-detection/BotDetectionService.ts index e80d8d1135..33e4716859 100644 --- a/packages/features/bot-detection/BotDetectionService.ts +++ b/packages/features/bot-detection/BotDetectionService.ts @@ -4,7 +4,7 @@ import type { IncomingHttpHeaders } from "http"; import type { FeaturesRepository } from "@calcom/features/flags/features.repository"; import { HttpError } from "@calcom/lib/http-error"; import logger from "@calcom/lib/logger"; -import type { EventTypeRepository } from "@calcom/lib/server/repository/eventTypeRepository"; +import type { EventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository"; interface BotDetectionConfig { eventTypeId?: number; diff --git a/packages/lib/intervalLimits/server/getBusyTimesFromLimits.ts b/packages/features/busyTimes/lib/getBusyTimesFromLimits.ts similarity index 95% rename from packages/lib/intervalLimits/server/getBusyTimesFromLimits.ts rename to packages/features/busyTimes/lib/getBusyTimesFromLimits.ts index 50aee6ee26..d0b16d783e 100644 --- a/packages/lib/intervalLimits/server/getBusyTimesFromLimits.ts +++ b/packages/features/busyTimes/lib/getBusyTimesFromLimits.ts @@ -1,20 +1,19 @@ import type { Dayjs } from "@calcom/dayjs"; import dayjs from "@calcom/dayjs"; import type { EventType } from "@calcom/features/availability/lib/getUserAvailability"; +import { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; import { getCheckBookingLimitsService } from "@calcom/features/di/containers/BookingLimits"; import { getBusyTimesService } from "@calcom/features/di/containers/BusyTimes"; +import { descendingLimitKeys, intervalLimitKeyToUnit } from "@calcom/lib/intervalLimits/intervalLimit"; +import type { IntervalLimit } from "@calcom/lib/intervalLimits/intervalLimitSchema"; +import LimitManager from "@calcom/lib/intervalLimits/limitManager"; +import { isBookingWithinPeriod } from "@calcom/lib/intervalLimits/utils"; import { getPeriodStartDatesBetween } from "@calcom/lib/intervalLimits/utils/getPeriodStartDatesBetween"; import { withReporting } from "@calcom/lib/sentryWrapper"; import { performance } from "@calcom/lib/server/perfObserver"; -import { BookingRepository } from "@calcom/lib/server/repository/booking"; import prisma from "@calcom/prisma"; import type { EventBusyDetails } from "@calcom/types/Calendar"; -import { descendingLimitKeys, intervalLimitKeyToUnit } from "../intervalLimit"; -import type { IntervalLimit } from "../intervalLimitSchema"; -import LimitManager from "../limitManager"; -import { isBookingWithinPeriod } from "../utils"; - const _getBusyTimesFromLimits = async ( bookingLimits: IntervalLimit | null, durationLimits: IntervalLimit | null, diff --git a/packages/lib/getBusyTimes.test.ts b/packages/features/busyTimes/services/getBusyTimes.test.ts similarity index 100% rename from packages/lib/getBusyTimes.test.ts rename to packages/features/busyTimes/services/getBusyTimes.test.ts diff --git a/packages/lib/getBusyTimes.ts b/packages/features/busyTimes/services/getBusyTimes.ts similarity index 98% rename from packages/lib/getBusyTimes.ts rename to packages/features/busyTimes/services/getBusyTimes.ts index 4932cc36c4..9962d7db94 100644 --- a/packages/lib/getBusyTimes.ts +++ b/packages/features/busyTimes/services/getBusyTimes.ts @@ -1,5 +1,6 @@ import dayjs from "@calcom/dayjs"; import { getBusyCalendarTimes } from "@calcom/features/calendars/lib/CalendarManager"; +import { getDefinedBufferTimes } from "@calcom/features/eventtypes/lib/getDefinedBufferTimes"; import { subtract } from "@calcom/lib/date-ranges"; import { stringToDayjs } from "@calcom/lib/dayjs"; import { intervalLimitKeyToUnit } from "@calcom/lib/intervalLimits/intervalLimit"; @@ -8,7 +9,7 @@ import logger from "@calcom/lib/logger"; import { getPiiFreeBooking } from "@calcom/lib/piiFreeData"; import { withReporting } from "@calcom/lib/sentryWrapper"; import { performance } from "@calcom/lib/server/perfObserver"; -import type { BookingRepository } from "@calcom/lib/server/repository/booking"; +import type { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; import prisma from "@calcom/prisma"; import type { Booking, EventType } from "@calcom/prisma/client"; import type { Prisma } from "@calcom/prisma/client"; @@ -17,8 +18,6 @@ import { BookingStatus } from "@calcom/prisma/enums"; import type { EventBusyDetails } from "@calcom/types/Calendar"; import type { CredentialForCalendarService } from "@calcom/types/Credential"; -import { getDefinedBufferTimes } from "../features/eventtypes/lib/getDefinedBufferTimes"; - export interface IBusyTimesService { bookingRepo: BookingRepository; } diff --git a/packages/features/calendar-subscription/lib/sync/CalendarSyncService.ts b/packages/features/calendar-subscription/lib/sync/CalendarSyncService.ts index 0f4e425e99..e283cc403f 100644 --- a/packages/features/calendar-subscription/lib/sync/CalendarSyncService.ts +++ b/packages/features/calendar-subscription/lib/sync/CalendarSyncService.ts @@ -1,6 +1,6 @@ import type { CalendarSubscriptionEventItem } from "@calcom/features/calendar-subscription/lib/CalendarSubscriptionPort.interface"; import logger from "@calcom/lib/logger"; -import { BookingRepository } from "@calcom/lib/server/repository/booking"; +import { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; import type { SelectedCalendar } from "@calcom/prisma/client"; const log = logger.getSubLogger({ prefix: ["CalendarSyncService"] }); diff --git a/packages/features/calendars/lib/getConnectedDestinationCalendars.ts b/packages/features/calendars/lib/getConnectedDestinationCalendars.ts index fdcbafadbe..518e8e6a7a 100644 --- a/packages/features/calendars/lib/getConnectedDestinationCalendars.ts +++ b/packages/features/calendars/lib/getConnectedDestinationCalendars.ts @@ -6,7 +6,7 @@ import { import { isDelegationCredential } from "@calcom/lib/delegationCredential"; import logger from "@calcom/lib/logger"; import { DestinationCalendarRepository } from "@calcom/lib/server/repository/destinationCalendar"; -import { EventTypeRepository } from "@calcom/lib/server/repository/eventTypeRepository"; +import { EventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository"; import { SelectedCalendarRepository } from "@calcom/lib/server/repository/selectedCalendar"; import type { PrismaClient } from "@calcom/prisma"; import prisma from "@calcom/prisma"; diff --git a/packages/features/credentials/deleteCredential.test.ts b/packages/features/credentials/deleteCredential.test.ts index ebe279d33e..33762d0d8c 100644 --- a/packages/features/credentials/deleteCredential.test.ts +++ b/packages/features/credentials/deleteCredential.test.ts @@ -8,8 +8,8 @@ import { describe, test, expect, beforeEach } from "vitest"; import { PrismaAppRepository } from "@calcom/features/apps/repository/PrismaAppRepository"; import { CredentialRepository } from "@calcom/lib/server/repository/credential"; import { DestinationCalendarRepository } from "@calcom/lib/server/repository/destinationCalendar"; -import { EventTypeRepository } from "@calcom/lib/server/repository/eventTypeRepository"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { EventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import prisma from "@calcom/prisma"; const testUser = { diff --git a/packages/lib/crmManager/tasker/crmScheduler.ts b/packages/features/crmManager/crmScheduler.ts similarity index 100% rename from packages/lib/crmManager/tasker/crmScheduler.ts rename to packages/features/crmManager/crmScheduler.ts diff --git a/packages/lib/server/repository/__tests__/filterSegments/create.test.ts b/packages/features/data-table/__tests__/filterSegments/create.test.ts similarity index 93% rename from packages/lib/server/repository/__tests__/filterSegments/create.test.ts rename to packages/features/data-table/__tests__/filterSegments/create.test.ts index ff3d2b1236..6f197f607e 100644 --- a/packages/lib/server/repository/__tests__/filterSegments/create.test.ts +++ b/packages/features/data-table/__tests__/filterSegments/create.test.ts @@ -1,4 +1,4 @@ -import prismock from "../../../../../../tests/libs/__mocks__/prisma"; +import prismock from "../../../../../tests/libs/__mocks__/prisma"; import { describe, expect, it } from "vitest"; @@ -6,8 +6,8 @@ import { ColumnFilterType } from "@calcom/features/data-table/lib/types"; import { MembershipRole } from "@calcom/prisma/enums"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; -import { FilterSegmentRepository } from "../../filterSegment"; -import type { TCreateFilterSegmentInputSchema } from "../../filterSegment.type"; +import { FilterSegmentRepository } from "../../repositories/filterSegment"; +import type { TCreateFilterSegmentInputSchema } from "../../repositories/filterSegment.type"; const repository = new FilterSegmentRepository(); diff --git a/packages/lib/server/repository/__tests__/filterSegments/delete.test.ts b/packages/features/data-table/__tests__/filterSegments/delete.test.ts similarity index 94% rename from packages/lib/server/repository/__tests__/filterSegments/delete.test.ts rename to packages/features/data-table/__tests__/filterSegments/delete.test.ts index 9e1100b4fd..8b9e464136 100644 --- a/packages/lib/server/repository/__tests__/filterSegments/delete.test.ts +++ b/packages/features/data-table/__tests__/filterSegments/delete.test.ts @@ -1,12 +1,12 @@ -import prismock from "../../../../../../tests/libs/__mocks__/prisma"; +import prismock from "../../../../../tests/libs/__mocks__/prisma"; import { describe, expect, it } from "vitest"; import { MembershipRole } from "@calcom/prisma/enums"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; -import { FilterSegmentRepository } from "../../filterSegment"; -import { type TDeleteFilterSegmentInputSchema } from "../../filterSegment.type"; +import { FilterSegmentRepository } from "../../repositories/filterSegment"; +import { type TDeleteFilterSegmentInputSchema } from "../../repositories/filterSegment.type"; const repository = new FilterSegmentRepository(); diff --git a/packages/lib/server/repository/__tests__/filterSegments/get.test.ts b/packages/features/data-table/__tests__/filterSegments/get.test.ts similarity index 97% rename from packages/lib/server/repository/__tests__/filterSegments/get.test.ts rename to packages/features/data-table/__tests__/filterSegments/get.test.ts index 202d370b99..6b4d42fc22 100644 --- a/packages/lib/server/repository/__tests__/filterSegments/get.test.ts +++ b/packages/features/data-table/__tests__/filterSegments/get.test.ts @@ -1,12 +1,12 @@ -import prismock from "../../../../../../tests/libs/__mocks__/prisma"; +import prismock from "../../../../../tests/libs/__mocks__/prisma"; import { describe, expect, it } from "vitest"; import { MembershipRole } from "@calcom/prisma/enums"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; -import { FilterSegmentRepository } from "../../filterSegment"; -import { type TListFilterSegmentsInputSchema } from "../../filterSegment.type"; +import { FilterSegmentRepository } from "../../repositories/filterSegment"; +import { type TListFilterSegmentsInputSchema } from "../../repositories/filterSegment.type"; const repository = new FilterSegmentRepository(); diff --git a/packages/lib/server/repository/__tests__/filterSegments/update.test.ts b/packages/features/data-table/__tests__/filterSegments/update.test.ts similarity index 96% rename from packages/lib/server/repository/__tests__/filterSegments/update.test.ts rename to packages/features/data-table/__tests__/filterSegments/update.test.ts index 2b676b5a17..8cc3743aee 100644 --- a/packages/lib/server/repository/__tests__/filterSegments/update.test.ts +++ b/packages/features/data-table/__tests__/filterSegments/update.test.ts @@ -1,4 +1,4 @@ -import prismock from "../../../../../../tests/libs/__mocks__/prisma"; +import prismock from "../../../../../tests/libs/__mocks__/prisma"; import { describe, expect, it } from "vitest"; @@ -6,8 +6,8 @@ import { ColumnFilterType } from "@calcom/features/data-table/lib/types"; import { MembershipRole } from "@calcom/prisma/enums"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; -import { FilterSegmentRepository } from "../../filterSegment"; -import { type TUpdateFilterSegmentInputSchema } from "../../filterSegment.type"; +import { FilterSegmentRepository } from "../../repositories/filterSegment"; +import { type TUpdateFilterSegmentInputSchema } from "../../repositories/filterSegment.type"; const repository = new FilterSegmentRepository(); diff --git a/packages/lib/server/repository/filterSegment.ts b/packages/features/data-table/repositories/filterSegment.ts similarity index 100% rename from packages/lib/server/repository/filterSegment.ts rename to packages/features/data-table/repositories/filterSegment.ts diff --git a/packages/lib/server/repository/filterSegment.type.ts b/packages/features/data-table/repositories/filterSegment.type.ts similarity index 100% rename from packages/lib/server/repository/filterSegment.type.ts rename to packages/features/data-table/repositories/filterSegment.type.ts diff --git a/packages/features/di/containers/BookingLimits.ts b/packages/features/di/containers/BookingLimits.ts index 614346ca14..9aafc5e4df 100644 --- a/packages/features/di/containers/BookingLimits.ts +++ b/packages/features/di/containers/BookingLimits.ts @@ -1,5 +1,5 @@ import { DI_TOKENS } from "@calcom/features/di/tokens"; -import type { CheckBookingLimitsService } from "@calcom/lib/intervalLimits/server/checkBookingLimits"; +import type { CheckBookingLimitsService } from "@calcom/features/bookings/lib/checkBookingLimits"; import { prismaModule } from "@calcom/prisma/prisma.module"; import type { CheckBookingAndDurationLimitsService } from "../../bookings/lib/handleNewBooking/checkBookingAndDurationLimits"; diff --git a/packages/features/di/containers/BusyTimes.ts b/packages/features/di/containers/BusyTimes.ts index 153793d2de..0c14211087 100644 --- a/packages/features/di/containers/BusyTimes.ts +++ b/packages/features/di/containers/BusyTimes.ts @@ -1,7 +1,7 @@ +import type { BusyTimesService } from "@calcom/features/busyTimes/services/getBusyTimes"; import { DI_TOKENS } from "@calcom/features/di/tokens"; import { prismaModule } from "@calcom/prisma/prisma.module"; -import type { BusyTimesService } from "@calcom/lib/getBusyTimes"; import { createContainer } from "../di"; import { bookingRepositoryModule } from "../modules/Booking"; import { busyTimesModule } from "../modules/BusyTimes"; diff --git a/packages/features/di/containers/InsightsBooking.ts b/packages/features/di/containers/InsightsBooking.ts index 822ecb0b8b..189b321367 100644 --- a/packages/features/di/containers/InsightsBooking.ts +++ b/packages/features/di/containers/InsightsBooking.ts @@ -3,8 +3,8 @@ import type { InsightsBookingServicePublicOptions, InsightsBookingServiceFilterOptions, InsightsBookingBaseService, -} from "@calcom/lib/server/service/InsightsBookingBaseService"; -import type { InsightsBookingService } from "@calcom/lib/server/service/InsightsBookingDIService"; +} from "@calcom/features/insights/services/InsightsBookingBaseService"; +import type { InsightsBookingService } from "@calcom/features/insights/services/InsightsBookingDIService"; import { prismaModule } from "@calcom/prisma/prisma.module"; import { createContainer } from "../di"; diff --git a/packages/features/di/containers/InsightsRouting.ts b/packages/features/di/containers/InsightsRouting.ts index 4178f4ecc6..1a018a9b20 100644 --- a/packages/features/di/containers/InsightsRouting.ts +++ b/packages/features/di/containers/InsightsRouting.ts @@ -3,8 +3,8 @@ import type { InsightsRoutingServicePublicOptions, InsightsRoutingServiceFilterOptions, InsightsRoutingBaseService, -} from "@calcom/lib/server/service/InsightsRoutingBaseService"; -import type { InsightsRoutingService } from "@calcom/lib/server/service/InsightsRoutingDIService"; +} from "@calcom/features/insights/services/InsightsRoutingBaseService"; +import type { InsightsRoutingService } from "@calcom/features/insights/services/InsightsRoutingDIService"; import { prismaModule } from "@calcom/prisma/prisma.module"; import { createContainer } from "../di"; diff --git a/packages/features/di/modules/Booking.ts b/packages/features/di/modules/Booking.ts index f2d973687f..a1033f48a5 100644 --- a/packages/features/di/modules/Booking.ts +++ b/packages/features/di/modules/Booking.ts @@ -1,5 +1,5 @@ import { DI_TOKENS } from "@calcom/features/di/tokens"; -import { BookingRepository } from "@calcom/lib/server/repository/booking"; +import { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; import { type Container, createModule } from "../di"; diff --git a/packages/features/di/modules/BusyTimes.ts b/packages/features/di/modules/BusyTimes.ts index 2bf3ce2ebf..95fb960eb5 100644 --- a/packages/features/di/modules/BusyTimes.ts +++ b/packages/features/di/modules/BusyTimes.ts @@ -1,5 +1,6 @@ -import type { IBusyTimesService } from "@calcom/lib/getBusyTimes"; -import { BusyTimesService } from "@calcom/lib/getBusyTimes"; +import type { IBusyTimesService } from "@calcom/features/busyTimes/services/getBusyTimes"; +import { BusyTimesService } from "@calcom/features/busyTimes/services/getBusyTimes"; + import { createModule } from "../di"; import { DI_TOKENS } from "../tokens"; diff --git a/packages/features/di/modules/CheckBookingLimits.ts b/packages/features/di/modules/CheckBookingLimits.ts index e6f72e8b30..1dc5ae2731 100644 --- a/packages/features/di/modules/CheckBookingLimits.ts +++ b/packages/features/di/modules/CheckBookingLimits.ts @@ -1,5 +1,5 @@ import { DI_TOKENS } from "@calcom/features/di/tokens"; -import { CheckBookingLimitsService } from "@calcom/lib/intervalLimits/server/checkBookingLimits"; +import { CheckBookingLimitsService } from "@calcom/features/bookings/lib/checkBookingLimits"; import { type Container, createModule } from "../di"; diff --git a/packages/features/di/modules/EventType.ts b/packages/features/di/modules/EventType.ts index 153c3f0a72..4cc4f2a75e 100644 --- a/packages/features/di/modules/EventType.ts +++ b/packages/features/di/modules/EventType.ts @@ -1,5 +1,5 @@ import { DI_TOKENS } from "@calcom/features/di/tokens"; -import { EventTypeRepository } from "@calcom/lib/server/repository/eventTypeRepository"; +import { EventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository"; import { createModule } from "../di"; diff --git a/packages/features/di/modules/InsightsBooking.ts b/packages/features/di/modules/InsightsBooking.ts index 13d2d50433..478f7d6f29 100644 --- a/packages/features/di/modules/InsightsBooking.ts +++ b/packages/features/di/modules/InsightsBooking.ts @@ -1,5 +1,5 @@ -import type { IInsightsBookingService } from "@calcom/lib/server/service/InsightsBookingDIService"; -import { InsightsBookingService } from "@calcom/lib/server/service/InsightsBookingDIService"; +import type { IInsightsBookingService } from "@calcom/features/insights/services/InsightsBookingDIService"; +import { InsightsBookingService } from "@calcom/features/insights/services/InsightsBookingDIService"; import { createModule } from "../di"; import { DI_TOKENS } from "../tokens"; diff --git a/packages/features/di/modules/InsightsRouting.ts b/packages/features/di/modules/InsightsRouting.ts index 29ed52b75c..c75ec59757 100644 --- a/packages/features/di/modules/InsightsRouting.ts +++ b/packages/features/di/modules/InsightsRouting.ts @@ -1,5 +1,5 @@ -import type { IInsightsRoutingService } from "@calcom/lib/server/service/InsightsRoutingDIService"; -import { InsightsRoutingService } from "@calcom/lib/server/service/InsightsRoutingDIService"; +import type { IInsightsRoutingService } from "@calcom/features/insights/services/InsightsRoutingDIService"; +import { InsightsRoutingService } from "@calcom/features/insights/services/InsightsRoutingDIService"; import { createModule } from "../di"; import { DI_TOKENS } from "../tokens"; diff --git a/packages/features/di/modules/Membership.ts b/packages/features/di/modules/Membership.ts index fac1faa6cf..c63f8f465e 100644 --- a/packages/features/di/modules/Membership.ts +++ b/packages/features/di/modules/Membership.ts @@ -1,5 +1,5 @@ import { DI_TOKENS } from "@calcom/features/di/tokens"; -import { MembershipRepository } from "@calcom/lib/server/repository/membership"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; import { createModule } from "../di"; diff --git a/packages/features/di/modules/User.ts b/packages/features/di/modules/User.ts index ba154e6ab9..e2eaf74eb5 100644 --- a/packages/features/di/modules/User.ts +++ b/packages/features/di/modules/User.ts @@ -1,5 +1,5 @@ import { DI_TOKENS } from "@calcom/features/di/tokens"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { moduleLoader as prismaModuleLoader } from "@calcom/prisma/prisma.module"; import { createModule, bindModuleToClassOnToken, type ModuleLoader } from "../di"; diff --git a/packages/lib/__tests__/autoLock.test.ts b/packages/features/ee/api-keys/lib/autoLock.test.ts similarity index 99% rename from packages/lib/__tests__/autoLock.test.ts rename to packages/features/ee/api-keys/lib/autoLock.test.ts index b92847a84d..97ec4c9b9b 100644 --- a/packages/lib/__tests__/autoLock.test.ts +++ b/packages/features/ee/api-keys/lib/autoLock.test.ts @@ -5,7 +5,7 @@ import { hashAPIKey } from "@calcom/features/ee/api-keys/lib/apiKeys"; import { RedisService } from "@calcom/features/redis/RedisService"; import prisma from "@calcom/prisma"; -import { handleAutoLock } from "../autoLock"; +import { handleAutoLock } from "./autoLock"; // Mock the dependencies vi.mock("@calcom/features/redis/RedisService"); diff --git a/packages/lib/autoLock.ts b/packages/features/ee/api-keys/lib/autoLock.ts similarity index 98% rename from packages/lib/autoLock.ts rename to packages/features/ee/api-keys/lib/autoLock.ts index b22c247454..3334c61654 100644 --- a/packages/lib/autoLock.ts +++ b/packages/features/ee/api-keys/lib/autoLock.ts @@ -1,10 +1,10 @@ import type { RatelimitResponse } from "@unkey/ratelimit"; -import { hashAPIKey } from "@calcom/features/ee/api-keys/lib/apiKeys"; import { RedisService } from "@calcom/features/redis/RedisService"; +import logger from "@calcom/lib/logger"; import prisma from "@calcom/prisma"; -import logger from "./logger"; +import { hashAPIKey } from "./apiKeys"; // This is the number of times a user can exceed the rate limit before being locked const DEFAULT_AUTOLOCK_THRESHOLD = 5; diff --git a/packages/features/ee/billing/credit-service.test.ts b/packages/features/ee/billing/credit-service.test.ts index 1e61fae92e..8f85624a8c 100644 --- a/packages/features/ee/billing/credit-service.test.ts +++ b/packages/features/ee/billing/credit-service.test.ts @@ -4,7 +4,7 @@ import { describe, it, expect, beforeEach, vi } from "vitest"; import dayjs from "@calcom/dayjs"; import * as EmailManager from "@calcom/emails/email-manager"; import { CreditsRepository } from "@calcom/lib/server/repository/credits"; -import { MembershipRepository } from "@calcom/lib/server/repository/membership"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; import { TeamRepository } from "@calcom/lib/server/repository/team"; import { CreditType } from "@calcom/prisma/enums"; @@ -60,7 +60,7 @@ vi.mock("@calcom/prisma/enums", async (importOriginal) => { }); vi.mock("@calcom/lib/server/repository/credits"); -vi.mock("@calcom/lib/server/repository/membership"); +vi.mock("@calcom/features/membership/repositories/MembershipRepository"); vi.mock("@calcom/lib/server/repository/team"); vi.mock("@calcom/emails/email-manager"); vi.mock("../workflows/lib/reminders/reminderScheduler", () => ({ diff --git a/packages/features/ee/billing/credit-service.ts b/packages/features/ee/billing/credit-service.ts index d0b9e95bc6..4ae683abd7 100644 --- a/packages/features/ee/billing/credit-service.ts +++ b/packages/features/ee/billing/credit-service.ts @@ -12,7 +12,7 @@ import { IS_SMS_CREDITS_ENABLED } from "@calcom/lib/constants"; import logger from "@calcom/lib/logger"; import { getTranslation } from "@calcom/lib/server/i18n"; import { CreditsRepository } from "@calcom/lib/server/repository/credits"; -import { MembershipRepository } from "@calcom/lib/server/repository/membership"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; import { TeamRepository } from "@calcom/lib/server/repository/team"; import prisma, { type PrismaTransaction } from "@calcom/prisma"; import type { CreditUsageType } from "@calcom/prisma/enums"; diff --git a/packages/features/ee/dsync/lib/handleGroupEvents.ts b/packages/features/ee/dsync/lib/handleGroupEvents.ts index f067d7e206..27cca705a1 100644 --- a/packages/features/ee/dsync/lib/handleGroupEvents.ts +++ b/packages/features/ee/dsync/lib/handleGroupEvents.ts @@ -4,7 +4,7 @@ import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import { getTranslation } from "@calcom/lib/server/i18n"; import { addNewMembersToEventTypes } from "@calcom/features/ee/teams/lib/queries"; -import { ProfileRepository } from "@calcom/lib/server/repository/profile"; +import { ProfileRepository } from "@calcom/features/profile/repositories/ProfileRepository"; import prisma from "@calcom/prisma"; import { IdentityProvider, MembershipRole } from "@calcom/prisma/enums"; import { diff --git a/packages/features/ee/dsync/lib/handleUserEvents.ts b/packages/features/ee/dsync/lib/handleUserEvents.ts index 6aad0be17b..cae30c5ed8 100644 --- a/packages/features/ee/dsync/lib/handleUserEvents.ts +++ b/packages/features/ee/dsync/lib/handleUserEvents.ts @@ -4,7 +4,7 @@ import removeUserFromOrg from "@calcom/features/ee/dsync/lib/removeUserFromOrg"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import { getTranslation } from "@calcom/lib/server/i18n"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { assignValueToUserInOrgBulk } from "@calcom/lib/service/attribute/server/assignValueToUser"; import prisma from "@calcom/prisma"; import { IdentityProvider } from "@calcom/prisma/enums"; diff --git a/packages/features/ee/dsync/lib/inviteExistingUserToOrg.ts b/packages/features/ee/dsync/lib/inviteExistingUserToOrg.ts index c2b8733e55..2ca346f8f3 100644 --- a/packages/features/ee/dsync/lib/inviteExistingUserToOrg.ts +++ b/packages/features/ee/dsync/lib/inviteExistingUserToOrg.ts @@ -1,6 +1,6 @@ import type { TFunction } from "i18next"; -import { createAProfileForAnExistingUser } from "@calcom/lib/createAProfileForAnExistingUser"; +import { createAProfileForAnExistingUser } from "@calcom/features/profile/lib/createAProfileForAnExistingUser"; import prisma from "@calcom/prisma"; import { sendExistingUserTeamInviteEmails } from "@calcom/trpc/server/routers/viewer/teams/inviteMember/utils"; import type { UserWithMembership } from "@calcom/trpc/server/routers/viewer/teams/inviteMember/utils"; diff --git a/packages/features/ee/dsync/lib/removeUserFromOrg.ts b/packages/features/ee/dsync/lib/removeUserFromOrg.ts index cc26ee8869..e7fe108b5f 100644 --- a/packages/features/ee/dsync/lib/removeUserFromOrg.ts +++ b/packages/features/ee/dsync/lib/removeUserFromOrg.ts @@ -1,4 +1,4 @@ -import { TeamService } from "@calcom/lib/server/service/teamService"; +import { TeamService } from "@calcom/features/ee/teams/services/teamService"; const removeUserFromOrg = async ({ userId, orgId }: { userId: number; orgId: number }) => { return TeamService.removeMembers({ teamIds: [orgId], userIds: [userId], isOrg: true }); diff --git a/packages/features/ee/dsync/lib/users/createUsersAndConnectToOrg.ts b/packages/features/ee/dsync/lib/users/createUsersAndConnectToOrg.ts index 6676a8fdb8..51e2cfbb99 100644 --- a/packages/features/ee/dsync/lib/users/createUsersAndConnectToOrg.ts +++ b/packages/features/ee/dsync/lib/users/createUsersAndConnectToOrg.ts @@ -1,5 +1,5 @@ -import { MembershipRepository } from "@calcom/lib/server/repository/membership"; -import { ProfileRepository } from "@calcom/lib/server/repository/profile"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; +import { ProfileRepository } from "@calcom/features/profile/repositories/ProfileRepository"; import prisma from "@calcom/prisma"; import type { IdentityProvider } from "@calcom/prisma/enums"; import { CreationSource, MembershipRole } from "@calcom/prisma/enums"; diff --git a/packages/features/ee/dsync/lib/users/inviteExistingUserToOrg.ts b/packages/features/ee/dsync/lib/users/inviteExistingUserToOrg.ts index a382b7f1c9..fdcd8facc1 100644 --- a/packages/features/ee/dsync/lib/users/inviteExistingUserToOrg.ts +++ b/packages/features/ee/dsync/lib/users/inviteExistingUserToOrg.ts @@ -1,6 +1,6 @@ import type { TFunction } from "i18next"; -import { createAProfileForAnExistingUser } from "@calcom/lib/createAProfileForAnExistingUser"; +import { createAProfileForAnExistingUser } from "@calcom/features/profile/lib/createAProfileForAnExistingUser"; import prisma from "@calcom/prisma"; import type { UserWithMembership } from "@calcom/trpc/server/routers/viewer/teams/inviteMember/utils"; diff --git a/packages/features/ee/impersonation/lib/ImpersonationProvider.ts b/packages/features/ee/impersonation/lib/ImpersonationProvider.ts index 05009cc9f9..7ba23bcaa7 100644 --- a/packages/features/ee/impersonation/lib/ImpersonationProvider.ts +++ b/packages/features/ee/impersonation/lib/ImpersonationProvider.ts @@ -6,7 +6,7 @@ import { ensureOrganizationIsReviewed } from "@calcom/ee/organizations/lib/ensur import { getOrgFullOrigin, subdomainSuffix } from "@calcom/ee/organizations/lib/orgDomains"; import { getSession } from "@calcom/features/auth/lib/getSession"; import { getSpecificPermissions } from "@calcom/features/pbac/lib/resource-permissions"; -import { ProfileRepository } from "@calcom/lib/server/repository/profile"; +import { ProfileRepository } from "@calcom/features/profile/repositories/ProfileRepository"; import prisma from "@calcom/prisma"; import type { User } from "@calcom/prisma/client"; import type { Prisma } from "@calcom/prisma/client"; diff --git a/packages/features/ee/organizations/lib/OrganizationPaymentService.ts b/packages/features/ee/organizations/lib/OrganizationPaymentService.ts index 62f6b18453..9fea7eda3a 100644 --- a/packages/features/ee/organizations/lib/OrganizationPaymentService.ts +++ b/packages/features/ee/organizations/lib/OrganizationPaymentService.ts @@ -7,7 +7,7 @@ import { import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import { OrganizationOnboardingRepository } from "@calcom/lib/server/repository/organizationOnboarding"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { prisma } from "@calcom/prisma"; import type { OrganizationOnboarding } from "@calcom/prisma/client"; import { UserPermissionRole, type BillingPeriod } from "@calcom/prisma/enums"; diff --git a/packages/features/ee/organizations/lib/OrganizationPermissionService.ts b/packages/features/ee/organizations/lib/OrganizationPermissionService.ts index 8fd469db50..a324b8b575 100644 --- a/packages/features/ee/organizations/lib/OrganizationPermissionService.ts +++ b/packages/features/ee/organizations/lib/OrganizationPermissionService.ts @@ -2,7 +2,7 @@ import { UserPermissionRole } from "@calcom/kysely/types"; import { ORGANIZATION_SELF_SERVE_MIN_SEATS, ORGANIZATION_SELF_SERVE_PRICE } from "@calcom/lib/constants"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; -import { OrganizationRepository } from "@calcom/lib/server/repository/organization"; +import { OrganizationRepository } from "@calcom/features/ee/organizations/repositories/OrganizationRepository"; import { prisma } from "@calcom/prisma"; import { MembershipRole } from "@calcom/prisma/enums"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; diff --git a/packages/features/ee/organizations/lib/ensureOrganizationIsReviewed.ts b/packages/features/ee/organizations/lib/ensureOrganizationIsReviewed.ts index dc1eca04c7..14f34cc556 100644 --- a/packages/features/ee/organizations/lib/ensureOrganizationIsReviewed.ts +++ b/packages/features/ee/organizations/lib/ensureOrganizationIsReviewed.ts @@ -1,4 +1,4 @@ -import { OrganizationRepository } from "@calcom/lib/server/repository/organization"; +import { OrganizationRepository } from "@calcom/features/ee/organizations/repositories/OrganizationRepository"; /** * It assumes that a user can only impersonate the members of the organization he is logged in to. diff --git a/packages/lib/getBookerUrl/getBookerBaseUrlSync.ts b/packages/features/ee/organizations/lib/getBookerBaseUrlSync.ts similarity index 100% rename from packages/lib/getBookerUrl/getBookerBaseUrlSync.ts rename to packages/features/ee/organizations/lib/getBookerBaseUrlSync.ts diff --git a/packages/lib/getBookerUrl/server.ts b/packages/features/ee/organizations/lib/getBookerUrlServer.ts similarity index 74% rename from packages/lib/getBookerUrl/server.ts rename to packages/features/ee/organizations/lib/getBookerUrlServer.ts index a5c27bc4ec..d31fe7ba58 100644 --- a/packages/lib/getBookerUrl/server.ts +++ b/packages/features/ee/organizations/lib/getBookerUrlServer.ts @@ -1,5 +1,5 @@ -import { WEBSITE_URL } from "../constants"; -import { getBrand } from "../server/getBrand"; +import { getBrand } from "@calcom/features/ee/organizations/lib/getBrand"; +import { WEBSITE_URL } from "@calcom/lib/constants"; export const getBookerBaseUrl = async (organizationId: number | null) => { const orgBrand = await getBrand(organizationId); diff --git a/packages/lib/server/getBrand.ts b/packages/features/ee/organizations/lib/getBrand.ts similarity index 100% rename from packages/lib/server/getBrand.ts rename to packages/features/ee/organizations/lib/getBrand.ts diff --git a/packages/lib/getBookerUrl/client.test.ts b/packages/features/ee/organizations/lib/getTeamUrlSync.test.ts similarity index 80% rename from packages/lib/getBookerUrl/client.test.ts rename to packages/features/ee/organizations/lib/getTeamUrlSync.test.ts index 4a57c545ce..aaf8ceafd0 100644 --- a/packages/lib/getBookerUrl/client.test.ts +++ b/packages/features/ee/organizations/lib/getTeamUrlSync.test.ts @@ -1,9 +1,10 @@ import { describe, it, vi, expect } from "vitest"; -import { getTeamUrlSync } from "./client"; -import * as getBookerBaseUrlSyncExport from "./getBookerBaseUrlSync"; +import * as getBookerBaseUrlSyncExport from "@calcom/features/ee/organizations/lib/getBookerBaseUrlSync"; -vi.mock("./getBookerBaseUrlSync", async () => { +import { getTeamUrlSync } from "./getTeamUrlSync"; + +vi.mock("@calcom/features/ee/organizations/lib/getBookerBaseUrlSync", async () => { return { getBookerBaseUrlSync: vi.fn(), }; diff --git a/packages/lib/getBookerUrl/client.ts b/packages/features/ee/organizations/lib/getTeamUrlSync.ts similarity index 74% rename from packages/lib/getBookerUrl/client.ts rename to packages/features/ee/organizations/lib/getTeamUrlSync.ts index c018d51f13..14824ec9f8 100644 --- a/packages/lib/getBookerUrl/client.ts +++ b/packages/features/ee/organizations/lib/getTeamUrlSync.ts @@ -1,6 +1,5 @@ -import { getBookerBaseUrlSync } from "./getBookerBaseUrlSync"; +import { getBookerBaseUrlSync } from "@calcom/features/ee/organizations/lib/getBookerBaseUrlSync"; -export { getBookerBaseUrlSync } from "./getBookerBaseUrlSync"; export const getTeamUrlSync = ( { orgSlug, diff --git a/packages/features/ee/organizations/lib/server/createOrganizationFromOnboarding.ts b/packages/features/ee/organizations/lib/server/createOrganizationFromOnboarding.ts index d6dec3481b..bb5573d041 100644 --- a/packages/features/ee/organizations/lib/server/createOrganizationFromOnboarding.ts +++ b/packages/features/ee/organizations/lib/server/createOrganizationFromOnboarding.ts @@ -16,9 +16,9 @@ import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import { getTranslation } from "@calcom/lib/server/i18n"; import { DeploymentRepository } from "@calcom/lib/server/repository/deployment"; -import { OrganizationRepository } from "@calcom/lib/server/repository/organization"; +import { OrganizationRepository } from "@calcom/features/ee/organizations/repositories/OrganizationRepository"; import { OrganizationOnboardingRepository } from "@calcom/lib/server/repository/organizationOnboarding"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import slugify from "@calcom/lib/slugify"; import { prisma } from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; diff --git a/packages/features/ee/organizations/lib/server/orgCreationUtils.ts b/packages/features/ee/organizations/lib/server/orgCreationUtils.ts index 525a2e8255..d96e6763fc 100644 --- a/packages/features/ee/organizations/lib/server/orgCreationUtils.ts +++ b/packages/features/ee/organizations/lib/server/orgCreationUtils.ts @@ -11,7 +11,7 @@ import { import { createDomain } from "@calcom/lib/domainManager/organization"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { prisma } from "@calcom/prisma"; import { UserPermissionRole } from "@calcom/prisma/enums"; diff --git a/packages/features/ee/organizations/pages/components/OtherTeamList.tsx b/packages/features/ee/organizations/pages/components/OtherTeamList.tsx index 90ea73deac..8e501f1abf 100644 --- a/packages/features/ee/organizations/pages/components/OtherTeamList.tsx +++ b/packages/features/ee/organizations/pages/components/OtherTeamList.tsx @@ -3,7 +3,7 @@ import { useState } from "react"; import { trackFormbricksAction } from "@calcom/lib/formbricks-client"; -import type { OrganizationRepository } from "@calcom/lib/server/repository/organization"; +import type { OrganizationRepository } from "@calcom/features/ee/organizations/repositories/OrganizationRepository"; import { trpc } from "@calcom/trpc/react"; import { showToast } from "@calcom/ui/components/toast"; diff --git a/packages/features/ee/organizations/pages/components/OtherTeamsListing.tsx b/packages/features/ee/organizations/pages/components/OtherTeamsListing.tsx index 7cf77ac23c..e76929207c 100644 --- a/packages/features/ee/organizations/pages/components/OtherTeamsListing.tsx +++ b/packages/features/ee/organizations/pages/components/OtherTeamsListing.tsx @@ -1,7 +1,7 @@ "use client"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import type { OrganizationRepository } from "@calcom/lib/server/repository/organization"; +import type { OrganizationRepository } from "@calcom/features/ee/organizations/repositories/OrganizationRepository"; import { EmptyScreen } from "@calcom/ui/components/empty-screen"; import OtherTeamList from "./OtherTeamList"; diff --git a/packages/lib/server/repository/organization.test.ts b/packages/features/ee/organizations/repositories/OrganizationRepository.test.ts similarity index 94% rename from packages/lib/server/repository/organization.test.ts rename to packages/features/ee/organizations/repositories/OrganizationRepository.test.ts index e23ffda402..a30b679110 100644 --- a/packages/lib/server/repository/organization.test.ts +++ b/packages/features/ee/organizations/repositories/OrganizationRepository.test.ts @@ -1,12 +1,11 @@ -import prismock from "../../../../tests/libs/__mocks__/prisma"; +import prismock from "../../../../../tests/libs/__mocks__/prisma"; import { describe, it, expect, beforeEach, vi } from "vitest"; +import { OrganizationRepository } from "@calcom/features/ee/organizations/repositories/OrganizationRepository"; import type { Prisma } from "@calcom/prisma/client"; -import { OrganizationRepository } from "./organization"; - -vi.mock("./teamUtils", () => ({ +vi.mock("@calcom/lib/server/repository/teamUtils", () => ({ getParsedTeam: (org: any) => org, })); diff --git a/packages/lib/server/repository/organization.ts b/packages/features/ee/organizations/repositories/OrganizationRepository.ts similarity index 97% rename from packages/lib/server/repository/organization.ts rename to packages/features/ee/organizations/repositories/OrganizationRepository.ts index fb6dceaf7e..a0990df4b7 100644 --- a/packages/lib/server/repository/organization.ts +++ b/packages/features/ee/organizations/repositories/OrganizationRepository.ts @@ -1,18 +1,17 @@ import type { z } from "zod"; import { getOrgUsernameFromEmail } from "@calcom/features/auth/signup/utils/getOrgUsernameFromEmail"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; +import { createAProfileForAnExistingUser } from "@calcom/features/profile/lib/createAProfileForAnExistingUser"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; +import { getParsedTeam } from "@calcom/lib/server/repository/teamUtils"; import { prisma } from "@calcom/prisma"; import { MembershipRole } from "@calcom/prisma/enums"; import type { CreationSource } from "@calcom/prisma/enums"; import type { teamMetadataStrictSchema } from "@calcom/prisma/zod-utils"; import { teamMetadataSchema } from "@calcom/prisma/zod-utils"; -import { createAProfileForAnExistingUser } from "../../createAProfileForAnExistingUser"; -import { getParsedTeam } from "./teamUtils"; -import { UserRepository } from "./user"; - const orgSelect = { id: true, name: true, diff --git a/packages/features/ee/payments/components/Payment.tsx b/packages/features/ee/payments/components/Payment.tsx index ae49c0a5d0..bb07084262 100644 --- a/packages/features/ee/payments/components/Payment.tsx +++ b/packages/features/ee/payments/components/Payment.tsx @@ -7,7 +7,7 @@ import type { SyntheticEvent } from "react"; import { useEffect, useState } from "react"; import getStripe from "@calcom/app-store/stripepayment/lib/client"; -import { useBookingSuccessRedirect } from "@calcom/lib/bookingSuccessRedirect"; +import { useBookingSuccessRedirect } from "@calcom/features/bookings/lib/bookingSuccessRedirect"; import { WEBAPP_URL } from "@calcom/lib/constants"; import { useCompatSearchParams } from "@calcom/lib/hooks/useCompatSearchParams"; import { useLocale } from "@calcom/lib/hooks/useLocale"; diff --git a/packages/features/ee/payments/pages/payment.tsx b/packages/features/ee/payments/pages/payment.tsx index 23f55557d4..c3ee0b906c 100644 --- a/packages/features/ee/payments/pages/payment.tsx +++ b/packages/features/ee/payments/pages/payment.tsx @@ -3,7 +3,7 @@ import { z } from "zod"; import { getServerSession } from "@calcom/features/auth/lib/getServerSession"; import { getClientSecretFromPayment } from "@calcom/features/ee/payments/pages/getClientSecretFromPayment"; -import { shouldHideBrandingForEvent } from "@calcom/lib/hideBranding"; +import { shouldHideBrandingForEvent } from "@calcom/features/profile/lib/hideBranding"; import prisma from "@calcom/prisma"; import { BookingStatus } from "@calcom/prisma/enums"; import { paymentDataSelect } from "@calcom/prisma/selects/payment"; diff --git a/packages/features/ee/round-robin/roundRobinManualReassignment.test.ts b/packages/features/ee/round-robin/roundRobinManualReassignment.test.ts index 1a9a50efda..b31d2d8e90 100644 --- a/packages/features/ee/round-robin/roundRobinManualReassignment.test.ts +++ b/packages/features/ee/round-robin/roundRobinManualReassignment.test.ts @@ -18,7 +18,7 @@ import { setupAndTeardown } from "@calcom/web/test/utils/bookingScenario/setupAn import { describe, vi, expect } from "vitest"; import { OrganizerDefaultConferencingAppType } from "@calcom/app-store/locations"; -import { BookingRepository } from "@calcom/lib/server/repository/booking"; +import { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; import { SchedulingType, BookingStatus, WorkflowMethods } from "@calcom/prisma/enums"; import { test } from "@calcom/web/test/fixtures/fixtures"; diff --git a/packages/features/ee/round-robin/roundRobinManualReassignment.ts b/packages/features/ee/round-robin/roundRobinManualReassignment.ts index e197f0d7e6..4502552324 100644 --- a/packages/features/ee/round-robin/roundRobinManualReassignment.ts +++ b/packages/features/ee/round-robin/roundRobinManualReassignment.ts @@ -26,7 +26,7 @@ import { scheduleWorkflowReminders } from "@calcom/features/ee/workflows/lib/rem import { getEventName } from "@calcom/features/eventtypes/lib/eventNaming"; import { getVideoCallUrlFromCalEvent } from "@calcom/lib/CalEventParser"; import { SENDER_NAME } from "@calcom/lib/constants"; -import { getBookerBaseUrl } from "@calcom/lib/getBookerUrl/server"; +import { getBookerBaseUrl } from "@calcom/features/ee/organizations/lib/getBookerUrlServer"; import { IdempotencyKeyService } from "@calcom/lib/idempotencyKey/idempotencyKeyService"; import { isPrismaObjOrUndefined } from "@calcom/lib/isPrismaObj"; import logger from "@calcom/lib/logger"; diff --git a/packages/features/ee/round-robin/roundRobinReassignment.test.ts b/packages/features/ee/round-robin/roundRobinReassignment.test.ts index 375c1384e5..04165a8177 100644 --- a/packages/features/ee/round-robin/roundRobinReassignment.test.ts +++ b/packages/features/ee/round-robin/roundRobinReassignment.test.ts @@ -17,7 +17,7 @@ import { setupAndTeardown } from "@calcom/web/test/utils/bookingScenario/setupAn import { describe, vi, expect } from "vitest"; -import { BookingRepository } from "@calcom/lib/server/repository/booking"; +import { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; import { SchedulingType, BookingStatus, WorkflowMethods } from "@calcom/prisma/enums"; import { test } from "@calcom/web/test/fixtures/fixtures"; diff --git a/packages/features/ee/sso/lib/sso.ts b/packages/features/ee/sso/lib/sso.ts index 1201f3c602..4915ee5dbc 100644 --- a/packages/features/ee/sso/lib/sso.ts +++ b/packages/features/ee/sso/lib/sso.ts @@ -1,6 +1,6 @@ import createUsersAndConnectToOrg from "@calcom/features/ee/dsync/lib/users/createUsersAndConnectToOrg"; import { HOSTED_CAL_FEATURES } from "@calcom/lib/constants"; -import { OrganizationRepository } from "@calcom/lib/server/repository/organization"; +import { OrganizationRepository } from "@calcom/features/ee/organizations/repositories/OrganizationRepository"; import type { PrismaClient } from "@calcom/prisma"; import { IdentityProvider } from "@calcom/prisma/enums"; diff --git a/packages/features/ee/teams/components/TeamListItem.tsx b/packages/features/ee/teams/components/TeamListItem.tsx index d027c06659..251b782867 100644 --- a/packages/features/ee/teams/components/TeamListItem.tsx +++ b/packages/features/ee/teams/components/TeamListItem.tsx @@ -6,8 +6,8 @@ import InviteLinkSettingsModal from "@calcom/ee/teams/components/InviteLinkSetti import { MemberInvitationModalWithoutMembers } from "@calcom/ee/teams/components/MemberInvitationModal"; import { checkAdminOrOwner } from "@calcom/features/auth/lib/checkAdminOrOwner"; import { Dialog } from "@calcom/features/components/controlled-dialog"; +import { getTeamUrlSync } from "@calcom/features/ee/organizations/lib/getTeamUrlSync"; import { getPlaceholderAvatar } from "@calcom/lib/defaultAvatarImage"; -import { getTeamUrlSync } from "@calcom/lib/getBookerUrl/client"; import { useCompatSearchParams } from "@calcom/lib/hooks/useCompatSearchParams"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { useRefreshData } from "@calcom/lib/hooks/useRefreshData"; diff --git a/packages/features/ee/teams/lib/deleteWorkflowRemindersOfRemovedMember.ts b/packages/features/ee/teams/lib/deleteWorkflowRemindersOfRemovedMember.ts index 1861df56c1..18c6a35f3a 100644 --- a/packages/features/ee/teams/lib/deleteWorkflowRemindersOfRemovedMember.ts +++ b/packages/features/ee/teams/lib/deleteWorkflowRemindersOfRemovedMember.ts @@ -1,4 +1,4 @@ -import { WorkflowRepository } from "@calcom/lib/server/repository/workflow"; +import { WorkflowRepository } from "@calcom/features/ee/workflows/repositories/WorkflowRepository"; import prisma from "@calcom/prisma"; // cancel/delete all workflowReminders of the removed member that come from that team (org teams only) diff --git a/packages/features/ee/teams/lib/queries.ts b/packages/features/ee/teams/lib/queries.ts index a90f4a1d50..30750e5a04 100644 --- a/packages/features/ee/teams/lib/queries.ts +++ b/packages/features/ee/teams/lib/queries.ts @@ -2,12 +2,12 @@ import { z } from "zod"; import { getAppFromSlug } from "@calcom/app-store/utils"; import { DATABASE_CHUNK_SIZE } from "@calcom/lib/constants"; -import { getBookerBaseUrlSync } from "@calcom/lib/getBookerUrl/client"; +import { getBookerBaseUrlSync } from "@calcom/features/ee/organizations/lib/getBookerBaseUrlSync"; import { parseBookingLimit } from "@calcom/lib/intervalLimits/isBookingLimits"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import { getTeam, getOrg } from "@calcom/lib/server/repository/team"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import prisma from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; import type { Team } from "@calcom/prisma/client"; diff --git a/packages/features/ee/teams/pages/team-profile-view.tsx b/packages/features/ee/teams/pages/team-profile-view.tsx index 5fe579cf62..5d8827fe60 100644 --- a/packages/features/ee/teams/pages/team-profile-view.tsx +++ b/packages/features/ee/teams/pages/team-profile-view.tsx @@ -10,11 +10,11 @@ import { z } from "zod"; import { checkAdminOrOwner } from "@calcom/features/auth/lib/checkAdminOrOwner"; import { Dialog } from "@calcom/features/components/controlled-dialog"; +import { getTeamUrlSync } from "@calcom/features/ee/organizations/lib/getTeamUrlSync"; import SectionBottomActions from "@calcom/features/settings/SectionBottomActions"; import { IS_TEAM_BILLING_ENABLED, WEBAPP_URL } from "@calcom/lib/constants"; import { getPlaceholderAvatar } from "@calcom/lib/defaultAvatarImage"; import { trackFormbricksAction } from "@calcom/lib/formbricks-client"; -import { getTeamUrlSync } from "@calcom/lib/getBookerUrl/client"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { useParamsWithFallback } from "@calcom/lib/hooks/useParamsWithFallback"; import { md } from "@calcom/lib/markdownIt"; diff --git a/packages/lib/server/service/teamService.alternative.test.ts b/packages/features/ee/teams/services/teamService.alternative.test.ts similarity index 100% rename from packages/lib/server/service/teamService.alternative.test.ts rename to packages/features/ee/teams/services/teamService.alternative.test.ts diff --git a/packages/lib/server/service/__tests__/teamService.integration-test.ts b/packages/features/ee/teams/services/teamService.integration-test.ts similarity index 99% rename from packages/lib/server/service/__tests__/teamService.integration-test.ts rename to packages/features/ee/teams/services/teamService.integration-test.ts index 78e6634f58..434ccdb4b5 100644 --- a/packages/lib/server/service/__tests__/teamService.integration-test.ts +++ b/packages/features/ee/teams/services/teamService.integration-test.ts @@ -4,7 +4,7 @@ import prisma from "@calcom/prisma"; import type { Team, User } from "@calcom/prisma/client"; import { MembershipRole } from "@calcom/prisma/enums"; -import { TeamService } from "../teamService"; +import { TeamService } from "./teamService"; vi.mock("@calcom/features/ee/billing/teams", () => { const mockUpdateQuantity = vi.fn().mockResolvedValue(undefined); diff --git a/packages/lib/server/service/teamService.test.ts b/packages/features/ee/teams/services/teamService.test.ts similarity index 98% rename from packages/lib/server/service/teamService.test.ts rename to packages/features/ee/teams/services/teamService.test.ts index f1adf3f682..c8855a5e1a 100644 --- a/packages/lib/server/service/teamService.test.ts +++ b/packages/features/ee/teams/services/teamService.test.ts @@ -1,10 +1,10 @@ -import prismaMock from "../../../../tests/libs/__mocks__/prismaMock"; +import prismaMock from "../../../../../tests/libs/__mocks__/prismaMock"; import { describe, it, expect, vi, beforeEach, afterEach } from "vitest"; import { TeamBilling } from "@calcom/features/ee/billing/teams"; import { updateNewTeamMemberEventTypes } from "@calcom/features/ee/teams/lib/queries"; -import { createAProfileForAnExistingUser } from "@calcom/lib/createAProfileForAnExistingUser"; +import { createAProfileForAnExistingUser } from "@calcom/features/profile/lib/createAProfileForAnExistingUser"; import { deleteDomain } from "@calcom/lib/domainManager/organization"; import { TeamRepository } from "@calcom/lib/server/repository/team"; import { WorkflowService } from "@calcom/lib/server/service/workflows"; @@ -20,7 +20,7 @@ vi.mock("@calcom/lib/server/repository/team"); vi.mock("@calcom/lib/server/service/workflows"); vi.mock("@calcom/lib/domainManager/organization"); vi.mock("@calcom/features/ee/teams/lib/removeMember"); -vi.mock("@calcom/lib/createAProfileForAnExistingUser"); +vi.mock("@calcom/features/profile/lib/createAProfileForAnExistingUser"); vi.mock("@calcom/features/ee/teams/lib/queries"); const mockTeamBilling = { diff --git a/packages/lib/server/service/teamService.ts b/packages/features/ee/teams/services/teamService.ts similarity index 98% rename from packages/lib/server/service/teamService.ts rename to packages/features/ee/teams/services/teamService.ts index 3f0a333393..14835593e7 100644 --- a/packages/lib/server/service/teamService.ts +++ b/packages/features/ee/teams/services/teamService.ts @@ -4,10 +4,10 @@ import { TeamBilling } from "@calcom/features/ee/billing/teams"; import { deleteWorkfowRemindersOfRemovedMember } from "@calcom/features/ee/teams/lib/deleteWorkflowRemindersOfRemovedMember"; import { updateNewTeamMemberEventTypes } from "@calcom/features/ee/teams/lib/queries"; import { WEBAPP_URL } from "@calcom/lib/constants"; -import { createAProfileForAnExistingUser } from "@calcom/lib/createAProfileForAnExistingUser"; +import { createAProfileForAnExistingUser } from "@calcom/features/profile/lib/createAProfileForAnExistingUser"; import { deleteDomain } from "@calcom/lib/domainManager/organization"; import logger from "@calcom/lib/logger"; -import { ProfileRepository } from "@calcom/lib/server/repository/profile"; +import { ProfileRepository } from "@calcom/features/profile/repositories/ProfileRepository"; import { TeamRepository } from "@calcom/lib/server/repository/team"; import { WorkflowService } from "@calcom/lib/server/service/workflows"; import { prisma } from "@calcom/prisma"; diff --git a/packages/features/ee/workflows/api/scheduleEmailReminders.ts b/packages/features/ee/workflows/api/scheduleEmailReminders.ts index e689dd195b..646837f87b 100644 --- a/packages/features/ee/workflows/api/scheduleEmailReminders.ts +++ b/packages/features/ee/workflows/api/scheduleEmailReminders.ts @@ -8,7 +8,7 @@ import { v4 as uuidv4 } from "uuid"; import dayjs from "@calcom/dayjs"; import generateIcsString from "@calcom/emails/lib/generateIcsString"; import { getCalEventResponses } from "@calcom/features/bookings/lib/getCalEventResponses"; -import { getBookerBaseUrl } from "@calcom/lib/getBookerUrl/server"; +import { getBookerBaseUrl } from "@calcom/features/ee/organizations/lib/getBookerUrlServer"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import { getTranslation } from "@calcom/lib/server/i18n"; diff --git a/packages/features/ee/workflows/api/scheduleSMSReminders.ts b/packages/features/ee/workflows/api/scheduleSMSReminders.ts index d3ed23d6a1..96e4c5b223 100644 --- a/packages/features/ee/workflows/api/scheduleSMSReminders.ts +++ b/packages/features/ee/workflows/api/scheduleSMSReminders.ts @@ -7,7 +7,7 @@ import { bulkShortenLinks } from "@calcom/ee/workflows/lib/reminders/utils"; import { getCalEventResponses } from "@calcom/features/bookings/lib/getCalEventResponses"; import { isAttendeeAction } from "@calcom/features/ee/workflows/lib/actionHelperFunctions"; import { scheduleSmsOrFallbackEmail } from "@calcom/features/ee/workflows/lib/reminders/messageDispatcher"; -import { getBookerBaseUrl } from "@calcom/lib/getBookerUrl/server"; +import { getBookerBaseUrl } from "@calcom/features/ee/organizations/lib/getBookerUrlServer"; import { getTranslation } from "@calcom/lib/server/i18n"; import { getTimeFormatStringFromUserTimeFormat } from "@calcom/lib/timeFormat"; import prisma from "@calcom/prisma"; diff --git a/packages/features/ee/workflows/lib/reminders/aiPhoneCallManager.ts b/packages/features/ee/workflows/lib/reminders/aiPhoneCallManager.ts index aa3ffaa513..d5660d3271 100644 --- a/packages/features/ee/workflows/lib/reminders/aiPhoneCallManager.ts +++ b/packages/features/ee/workflows/lib/reminders/aiPhoneCallManager.ts @@ -1,7 +1,7 @@ import { v4 as uuidv4 } from "uuid"; import dayjs from "@calcom/dayjs"; -import { CAL_AI_AGENT_PHONE_NUMBER_FIELD } from "@calcom/features/bookings/lib/SystemField"; +import { CAL_AI_AGENT_PHONE_NUMBER_FIELD } from "@calcom/lib/SystemField"; import { FeaturesRepository } from "@calcom/features/flags/features.repository"; import tasker from "@calcom/features/tasker"; import { checkRateLimitAndThrowError } from "@calcom/lib/checkRateLimitAndThrowError"; diff --git a/packages/features/ee/workflows/lib/reminders/reminderScheduler.ts b/packages/features/ee/workflows/lib/reminders/reminderScheduler.ts index 1c162dfa92..0762cb64eb 100644 --- a/packages/features/ee/workflows/lib/reminders/reminderScheduler.ts +++ b/packages/features/ee/workflows/lib/reminders/reminderScheduler.ts @@ -10,12 +10,12 @@ import { sendOrScheduleWorkflowEmails } from "@calcom/features/ee/workflows/lib/ import * as twilio from "@calcom/features/ee/workflows/lib/reminders/providers/twilioProvider"; import type { Workflow, WorkflowStep } from "@calcom/features/ee/workflows/lib/types"; import { getSubmitterEmail } from "@calcom/features/tasker/tasks/triggerFormSubmittedNoEvent/triggerFormSubmittedNoEventWebhook"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { checkSMSRateLimit } from "@calcom/lib/checkRateLimitAndThrowError"; import { SENDER_NAME } from "@calcom/lib/constants"; import { formatCalEventExtended } from "@calcom/lib/formatCalendarEvent"; import { withReporting } from "@calcom/lib/sentryWrapper"; import { getTranslation } from "@calcom/lib/server/i18n"; -import { UserRepository } from "@calcom/lib/server/repository/user"; import prisma from "@calcom/prisma"; import { SchedulingType } from "@calcom/prisma/enums"; import { WorkflowActions, WorkflowMethods, WorkflowTriggerEvents } from "@calcom/prisma/enums"; diff --git a/packages/features/ee/workflows/pages/index.tsx b/packages/features/ee/workflows/pages/index.tsx index a18ca7a098..fceaf53303 100644 --- a/packages/features/ee/workflows/pages/index.tsx +++ b/packages/features/ee/workflows/pages/index.tsx @@ -10,7 +10,7 @@ import Shell, { ShellMain } from "@calcom/features/shell/Shell"; import { WEBAPP_URL } from "@calcom/lib/constants"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { useRouterQuery } from "@calcom/lib/hooks/useRouterQuery"; -import type { WorkflowRepository } from "@calcom/lib/server/repository/workflow"; +import type { WorkflowRepository } from "@calcom/features/ee/workflows/repositories/WorkflowRepository"; import { trpc } from "@calcom/trpc/react"; import classNames from "@calcom/ui/classNames"; import { Avatar } from "@calcom/ui/components/avatar"; diff --git a/packages/features/ee/workflows/pages/workflow.tsx b/packages/features/ee/workflows/pages/workflow.tsx index 01f0c42627..9293f2411c 100644 --- a/packages/features/ee/workflows/pages/workflow.tsx +++ b/packages/features/ee/workflows/pages/workflow.tsx @@ -10,7 +10,7 @@ import { Toaster } from "sonner"; import { SENDER_ID } from "@calcom/lib/constants"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { HttpError } from "@calcom/lib/http-error"; -import type { WorkflowRepository } from "@calcom/lib/server/repository/workflow"; +import type { WorkflowRepository } from "@calcom/features/ee/workflows/repositories/WorkflowRepository"; import type { WorkflowPermissions } from "@calcom/lib/server/repository/workflow-permissions"; import type { WorkflowStep } from "@calcom/prisma/client"; import type { TimeUnit, WorkflowTriggerEvents } from "@calcom/prisma/enums"; diff --git a/packages/lib/server/repository/workflow.test.ts b/packages/features/ee/workflows/repositories/WorkflowRepository.test.ts similarity index 94% rename from packages/lib/server/repository/workflow.test.ts rename to packages/features/ee/workflows/repositories/WorkflowRepository.test.ts index 1d7ae2af1a..a7ca7679e6 100644 --- a/packages/lib/server/repository/workflow.test.ts +++ b/packages/features/ee/workflows/repositories/WorkflowRepository.test.ts @@ -1,9 +1,9 @@ // eslint-disable-next-line @typescript-eslint/no-unused-vars -import prismaMock from "../../../../tests/libs/__mocks__/prismaMock"; +import prismaMock from "../../../../../tests/libs/__mocks__/prismaMock"; import { describe, it, expect } from "vitest"; -import { WorkflowRepository } from "./workflow"; +import { WorkflowRepository } from "./WorkflowRepository"; describe("WorkflowRepository", () => { describe("getVerifiedEmails", () => { diff --git a/packages/lib/server/repository/workflow.ts b/packages/features/ee/workflows/repositories/WorkflowRepository.ts similarity index 99% rename from packages/lib/server/repository/workflow.ts rename to packages/features/ee/workflows/repositories/WorkflowRepository.ts index a92e077d87..9c19912000 100644 --- a/packages/lib/server/repository/workflow.ts +++ b/packages/features/ee/workflows/repositories/WorkflowRepository.ts @@ -8,6 +8,7 @@ import { deleteScheduledSMSReminder } from "@calcom/ee/workflows/lib/reminders/s import type { WorkflowStep } from "@calcom/ee/workflows/lib/types"; import { hasFilter } from "@calcom/features/filters/lib/hasFilter"; import { HttpError } from "@calcom/lib/http-error"; +import logger from "@calcom/lib/logger"; import prisma from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; import { @@ -21,8 +22,6 @@ import type { TFilteredListInputSchema } from "@calcom/trpc/server/routers/viewe import type { TGetVerifiedEmailsInputSchema } from "@calcom/trpc/server/routers/viewer/workflows/getVerifiedEmails.schema"; import type { TGetVerifiedNumbersInputSchema } from "@calcom/trpc/server/routers/viewer/workflows/getVerifiedNumbers.schema"; -import logger from "../../logger"; - export const ZGetInputSchema = z.object({ id: z.number(), }); diff --git a/packages/features/embed/lib/EmbedTabs.tsx b/packages/features/embed/lib/EmbedTabs.tsx index 6bda5cf3fb..147d37cd19 100644 --- a/packages/features/embed/lib/EmbedTabs.tsx +++ b/packages/features/embed/lib/EmbedTabs.tsx @@ -2,8 +2,8 @@ import type { MutableRefObject } from "react"; import { forwardRef } from "react"; import type { BookerLayout } from "@calcom/features/bookings/Booker/types"; +import { useEmbedBookerUrl } from "@calcom/features/bookings/hooks/useBookerUrl"; import { APP_NAME } from "@calcom/lib/constants"; -import { useEmbedBookerUrl } from "@calcom/lib/hooks/useBookerUrl"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { TextArea } from "@calcom/ui/components/form"; diff --git a/packages/features/embed/lib/hooks/index.tsx b/packages/features/embed/lib/hooks/index.tsx index 1ac426ed72..d8a3145362 100644 --- a/packages/features/embed/lib/hooks/index.tsx +++ b/packages/features/embed/lib/hooks/index.tsx @@ -1,4 +1,4 @@ -import { useEmbedBookerUrl } from "@calcom/lib/hooks/useBookerUrl"; +import { useEmbedBookerUrl } from "@calcom/features/bookings/hooks/useBookerUrl"; import { useLocale } from "@calcom/lib/hooks/useLocale"; export const useEmbedTypes = () => { diff --git a/packages/features/eventtypes/components/ChildrenEventTypeSelect.tsx b/packages/features/eventtypes/components/ChildrenEventTypeSelect.tsx index 60944219b9..2feb8a33fe 100644 --- a/packages/features/eventtypes/components/ChildrenEventTypeSelect.tsx +++ b/packages/features/eventtypes/components/ChildrenEventTypeSelect.tsx @@ -2,7 +2,7 @@ import { useAutoAnimate } from "@formkit/auto-animate/react"; import type { Props } from "react-select"; import type { SelectClassNames } from "@calcom/features/eventtypes/lib/types"; -import { getBookerBaseUrlSync } from "@calcom/lib/getBookerUrl/client"; +import { getBookerBaseUrlSync } from "@calcom/features/ee/organizations/lib/getBookerBaseUrlSync"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { MembershipRole } from "@calcom/prisma/enums"; import type { UserProfile } from "@calcom/types/UserProfile"; diff --git a/packages/features/eventtypes/lib/getEventTypeById.ts b/packages/features/eventtypes/lib/getEventTypeById.ts index 4c92c8b7fb..d2e38f4fe3 100644 --- a/packages/features/eventtypes/lib/getEventTypeById.ts +++ b/packages/features/eventtypes/lib/getEventTypeById.ts @@ -6,14 +6,14 @@ import { eventTypeMetaDataSchemaWithTypedApps } from "@calcom/app-store/zod-util import { getBookingFieldsWithSystemFields } from "@calcom/features/bookings/lib/getBookingFields"; import { WEBSITE_URL } from "@calcom/lib/constants"; import { getUserAvatarUrl } from "@calcom/lib/getAvatarUrl"; -import { getBookerBaseUrl } from "@calcom/lib/getBookerUrl/server"; +import { getBookerBaseUrl } from "@calcom/features/ee/organizations/lib/getBookerUrlServer"; import { parseBookingLimit } from "@calcom/lib/intervalLimits/isBookingLimits"; import { parseDurationLimit } from "@calcom/lib/intervalLimits/isDurationLimits"; import { parseEventTypeColor } from "@calcom/lib/isEventTypeColor"; import { parseRecurringEvent } from "@calcom/lib/isRecurringEvent"; import { getTranslation } from "@calcom/lib/server/i18n"; -import { EventTypeRepository } from "@calcom/lib/server/repository/eventTypeRepository"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { EventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import type { PrismaClient } from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; import { SchedulingType, MembershipRole } from "@calcom/prisma/enums"; diff --git a/packages/features/eventtypes/lib/getEventTypesByViewer.ts b/packages/features/eventtypes/lib/getEventTypesByViewer.ts index 40a592ae0f..e064e24d34 100644 --- a/packages/features/eventtypes/lib/getEventTypesByViewer.ts +++ b/packages/features/eventtypes/lib/getEventTypesByViewer.ts @@ -5,15 +5,15 @@ import { hasFilter } from "@calcom/features/filters/lib/hasFilter"; import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; import { getPlaceholderAvatar } from "@calcom/lib/defaultAvatarImage"; import { getUserAvatarUrl } from "@calcom/lib/getAvatarUrl"; -import { getBookerBaseUrlSync } from "@calcom/lib/getBookerUrl/client"; -import { getBookerBaseUrl } from "@calcom/lib/getBookerUrl/server"; +import { getBookerBaseUrlSync } from "@calcom/features/ee/organizations/lib/getBookerBaseUrlSync"; +import { getBookerBaseUrl } from "@calcom/features/ee/organizations/lib/getBookerUrlServer"; import logger from "@calcom/lib/logger"; import { markdownToSafeHTML } from "@calcom/lib/markdownToSafeHTML"; import { safeStringify } from "@calcom/lib/safeStringify"; -import { EventTypeRepository } from "@calcom/lib/server/repository/eventTypeRepository"; -import { MembershipRepository } from "@calcom/lib/server/repository/membership"; -import { ProfileRepository } from "@calcom/lib/server/repository/profile"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { EventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; +import { ProfileRepository } from "@calcom/features/profile/repositories/ProfileRepository"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import prisma from "@calcom/prisma"; import { MembershipRole, SchedulingType } from "@calcom/prisma/enums"; import { teamMetadataSchema } from "@calcom/prisma/zod-utils"; diff --git a/packages/features/eventtypes/lib/getPublicEvent.ts b/packages/features/eventtypes/lib/getPublicEvent.ts index eb579ae791..17c516dabe 100644 --- a/packages/features/eventtypes/lib/getPublicEvent.ts +++ b/packages/features/eventtypes/lib/getPublicEvent.ts @@ -9,10 +9,10 @@ import { getOrgOrTeamAvatar } from "@calcom/lib/defaultAvatarImage"; import { getPlaceholderAvatar } from "@calcom/lib/defaultAvatarImage"; import { getDefaultEvent, getUsernameList } from "@calcom/features/eventtypes/lib/defaultEvents"; import { getUserAvatarUrl } from "@calcom/lib/getAvatarUrl"; -import { getBookerBaseUrlSync } from "@calcom/lib/getBookerUrl/client"; +import { getBookerBaseUrlSync } from "@calcom/features/ee/organizations/lib/getBookerBaseUrlSync"; import { isRecurringEvent, parseRecurringEvent } from "@calcom/lib/isRecurringEvent"; import { markdownToSafeHTML } from "@calcom/lib/markdownToSafeHTML"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import type { PrismaClient } from "@calcom/prisma"; import type { User as UserType } from "@calcom/prisma/client"; import type { Prisma } from "@calcom/prisma/client"; diff --git a/packages/lib/server/repository/event.ts b/packages/features/eventtypes/repositories/EventRepository.ts similarity index 100% rename from packages/lib/server/repository/event.ts rename to packages/features/eventtypes/repositories/EventRepository.ts diff --git a/packages/lib/server/repository/eventTypeRepository.ts b/packages/features/eventtypes/repositories/eventTypeRepository.ts similarity index 98% rename from packages/lib/server/repository/eventTypeRepository.ts rename to packages/features/eventtypes/repositories/eventTypeRepository.ts index 10e0cff7ce..bb6cfebc84 100644 --- a/packages/lib/server/repository/eventTypeRepository.ts +++ b/packages/features/eventtypes/repositories/eventTypeRepository.ts @@ -1,4 +1,10 @@ +import { LookupTarget, ProfileRepository } from "@calcom/features/profile/repositories/ProfileRepository"; +import type { UserWithLegacySelectedCalendars } from "@calcom/features/users/repositories/UserRepository"; +import { withSelectedCalendars } from "@calcom/features/users/repositories/UserRepository"; import logger from "@calcom/lib/logger"; +import { safeStringify } from "@calcom/lib/safeStringify"; +import { eventTypeSelect } from "@calcom/lib/server/eventTypeSelect"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; import type { PrismaClient } from "@calcom/prisma"; import { prisma, availabilityUserSelect } from "@calcom/prisma"; import type { EventType as PrismaEventType } from "@calcom/prisma/client"; @@ -10,13 +16,6 @@ import type { Ensure } from "@calcom/types/utils"; import { TRPCError } from "@trpc/server"; -import { safeStringify } from "../../safeStringify"; -import { eventTypeSelect } from "../eventTypeSelect"; -import { MembershipRepository } from "./membership"; -import { LookupTarget, ProfileRepository } from "./profile"; -import type { UserWithLegacySelectedCalendars } from "./user"; -import { withSelectedCalendars } from "./user"; - const log = logger.getSubLogger({ prefix: ["repository/eventType"] }); const hashedLinkSelect = { diff --git a/packages/features/handleMarkNoShow.ts b/packages/features/handleMarkNoShow.ts index 44f541f951..aaf64f3ebd 100644 --- a/packages/features/handleMarkNoShow.ts +++ b/packages/features/handleMarkNoShow.ts @@ -1,14 +1,14 @@ import { type TFunction } from "i18next"; +import { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; +import { getBookerBaseUrl } from "@calcom/features/ee/organizations/lib/getBookerUrlServer"; import { workflowSelect } from "@calcom/features/ee/workflows/lib/getAllWorkflows"; import type { ExtendedCalendarEvent } from "@calcom/features/ee/workflows/lib/reminders/reminderScheduler"; import { WebhookService } from "@calcom/features/webhooks/lib/WebhookService"; -import { getBookerBaseUrl } from "@calcom/lib/getBookerUrl/server"; import getOrgIdFromMemberOrTeamId from "@calcom/lib/getOrgIdFromMemberOrTeamId"; import { HttpError } from "@calcom/lib/http-error"; import logger from "@calcom/lib/logger"; import { getTranslation } from "@calcom/lib/server/i18n"; -import { BookingRepository } from "@calcom/lib/server/repository/booking"; import { WorkflowService } from "@calcom/lib/server/service/workflows"; import { getTimeFormatStringFromUserTimeFormat } from "@calcom/lib/timeFormat"; import { prisma } from "@calcom/prisma"; diff --git a/packages/features/insights/server/routing-events.ts b/packages/features/insights/server/routing-events.ts index aa56f0ef00..35725af575 100644 --- a/packages/features/insights/server/routing-events.ts +++ b/packages/features/insights/server/routing-events.ts @@ -9,8 +9,8 @@ import { } from "@calcom/app-store/routing-forms/lib/FieldTypes"; import { zodFields as routingFormFieldsSchema } from "@calcom/app-store/routing-forms/zod"; import dayjs from "@calcom/dayjs"; +import type { InsightsRoutingBaseService } from "@calcom/features/insights/services/InsightsRoutingBaseService"; import { WEBAPP_URL } from "@calcom/lib/constants"; -import type { InsightsRoutingBaseService } from "@calcom/lib/server/service/InsightsRoutingBaseService"; import { readonlyPrisma as prisma } from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; diff --git a/packages/lib/server/service/InsightsBookingBaseService.ts b/packages/features/insights/services/InsightsBookingBaseService.ts similarity index 99% rename from packages/lib/server/service/InsightsBookingBaseService.ts rename to packages/features/insights/services/InsightsBookingBaseService.ts index 183f9af07a..f89f910ccd 100644 --- a/packages/lib/server/service/InsightsBookingBaseService.ts +++ b/packages/features/insights/services/InsightsBookingBaseService.ts @@ -4,7 +4,6 @@ import { z } from "zod"; import dayjs from "@calcom/dayjs"; import { makeSqlCondition } from "@calcom/features/data-table/lib/server"; import { ZColumnFilter } from "@calcom/features/data-table/lib/types"; -import { ColumnFilterType } from "@calcom/features/data-table/lib/types"; import { type ColumnFilter } from "@calcom/features/data-table/lib/types"; import { isSingleSelectFilterValue, @@ -13,19 +12,15 @@ import { isNumberFilterValue, isDateRangeFilterValue, } from "@calcom/features/data-table/lib/utils"; -import { - extractDateRangeFromColumnFilters, - replaceDateRangeColumnFilter, -} from "@calcom/features/insights/lib/bookingUtils"; +import { extractDateRangeFromColumnFilters } from "@calcom/features/insights/lib/bookingUtils"; import type { DateRange } from "@calcom/features/insights/server/insightsDateUtils"; import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; +import { TeamRepository } from "@calcom/lib/server/repository/team"; import type { PrismaClient } from "@calcom/prisma"; import { Prisma } from "@calcom/prisma/client"; import { MembershipRole } from "@calcom/prisma/enums"; -import { MembershipRepository } from "../repository/membership"; -import { TeamRepository } from "../repository/team"; - // Utility function to build user hash map with avatar URL fallback export const buildHashMapForUsers = < T extends { avatarUrl: string | null; id: number; username: string | null; [key: string]: unknown } diff --git a/packages/lib/server/service/InsightsBookingDIService.ts b/packages/features/insights/services/InsightsBookingDIService.ts similarity index 100% rename from packages/lib/server/service/InsightsBookingDIService.ts rename to packages/features/insights/services/InsightsBookingDIService.ts diff --git a/packages/lib/server/service/__tests__/InsightsBookingService.integration-test.ts b/packages/features/insights/services/InsightsBookingService.integration-test.ts similarity index 99% rename from packages/lib/server/service/__tests__/InsightsBookingService.integration-test.ts rename to packages/features/insights/services/InsightsBookingService.integration-test.ts index e1059a47e1..c0d0456601 100644 --- a/packages/lib/server/service/__tests__/InsightsBookingService.integration-test.ts +++ b/packages/features/insights/services/InsightsBookingService.integration-test.ts @@ -9,7 +9,7 @@ import { BookingStatus, MembershipRole } from "@calcom/prisma/enums"; import { InsightsBookingBaseService as InsightsBookingService, type InsightsBookingServicePublicOptions, -} from "../InsightsBookingBaseService"; +} from "./InsightsBookingBaseService"; const NOTHING_CONDITION = Prisma.sql`1=0`; diff --git a/packages/lib/server/service/InsightsRoutingBaseService.ts b/packages/features/insights/services/InsightsRoutingBaseService.ts similarity index 99% rename from packages/lib/server/service/InsightsRoutingBaseService.ts rename to packages/features/insights/services/InsightsRoutingBaseService.ts index fa46d0b588..5af80c8497 100644 --- a/packages/lib/server/service/InsightsRoutingBaseService.ts +++ b/packages/features/insights/services/InsightsRoutingBaseService.ts @@ -12,13 +12,12 @@ import { } from "@calcom/features/data-table/lib/utils"; import type { DateRange } from "@calcom/features/insights/server/insightsDateUtils"; import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; +import { TeamRepository } from "@calcom/lib/server/repository/team"; import type { PrismaClient } from "@calcom/prisma"; import { Prisma } from "@calcom/prisma/client"; import type { BookingStatus } from "@calcom/prisma/enums"; import { MembershipRole } from "@calcom/prisma/enums"; -import { TeamRepository } from "../repository/team"; - export const insightsRoutingServiceOptionsSchema = z.discriminatedUnion("scope", [ z.object({ scope: z.literal("user"), diff --git a/packages/lib/server/service/InsightsRoutingDIService.ts b/packages/features/insights/services/InsightsRoutingDIService.ts similarity index 100% rename from packages/lib/server/service/InsightsRoutingDIService.ts rename to packages/features/insights/services/InsightsRoutingDIService.ts diff --git a/packages/lib/server/service/__tests__/InsightsRoutingService.integration-test.ts b/packages/features/insights/services/InsightsRoutingService.integration-test.ts similarity index 99% rename from packages/lib/server/service/__tests__/InsightsRoutingService.integration-test.ts rename to packages/features/insights/services/InsightsRoutingService.integration-test.ts index a1f320307d..a00ecade30 100644 --- a/packages/lib/server/service/__tests__/InsightsRoutingService.integration-test.ts +++ b/packages/features/insights/services/InsightsRoutingService.integration-test.ts @@ -11,7 +11,7 @@ import { BookingStatus, MembershipRole } from "@calcom/prisma/enums"; import { InsightsRoutingBaseService as InsightsRoutingService, type InsightsRoutingServicePublicOptions, -} from "../../service/InsightsRoutingBaseService"; +} from "./InsightsRoutingBaseService"; // SQL condition constants for testing const NOTHING_CONDITION = Prisma.sql`1=0`; diff --git a/packages/lib/server/repository/membership.ts b/packages/features/membership/repositories/MembershipRepository.ts similarity index 96% rename from packages/lib/server/repository/membership.ts rename to packages/features/membership/repositories/MembershipRepository.ts index aad4979c60..c9bd073e32 100644 --- a/packages/lib/server/repository/membership.ts +++ b/packages/features/membership/repositories/MembershipRepository.ts @@ -1,15 +1,14 @@ +import { LookupTarget, ProfileRepository } from "@calcom/features/profile/repositories/ProfileRepository"; +import { withSelectedCalendars } from "@calcom/features/users/repositories/UserRepository"; +import logger from "@calcom/lib/logger"; +import { safeStringify } from "@calcom/lib/safeStringify"; +import { eventTypeSelect } from "@calcom/lib/server/eventTypeSelect"; import { availabilityUserSelect, prisma, type PrismaTransaction } from "@calcom/prisma"; import type { Prisma, Membership, PrismaClient } from "@calcom/prisma/client"; import { MembershipRole } from "@calcom/prisma/enums"; import { credentialForCalendarServiceSelect } from "@calcom/prisma/selects/credential"; -import logger from "../../logger"; -import { safeStringify } from "../../safeStringify"; -import { eventTypeSelect } from "../eventTypeSelect"; -import { LookupTarget, ProfileRepository } from "./profile"; -import { withSelectedCalendars } from "./user"; - -const log = logger.getSubLogger({ prefix: ["repository/membership"] }); +const log = logger.getSubLogger({ prefix: ["features/membership/repositories/MembershipRepository"] }); type IMembership = { teamId: number; userId: number; diff --git a/packages/features/pbac/services/__tests__/permission-check.service.test.ts b/packages/features/pbac/services/__tests__/permission-check.service.test.ts index 9e9fe4bb73..79a503f1c4 100644 --- a/packages/features/pbac/services/__tests__/permission-check.service.test.ts +++ b/packages/features/pbac/services/__tests__/permission-check.service.test.ts @@ -3,7 +3,7 @@ import { prisma } from "@calcom/prisma/__mocks__/prisma"; import { vi, type Mock, describe, it, expect, beforeEach } from "vitest"; import type { FeaturesRepository } from "@calcom/features/flags/features.repository"; -import { MembershipRepository } from "@calcom/lib/server/repository/membership"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; import type { MembershipRole } from "@calcom/prisma/enums"; import type { IPermissionRepository } from "../../domain/repositories/IPermissionRepository"; @@ -14,7 +14,7 @@ import type { PermissionService } from "../permission.service"; vi.mock("../../infrastructure/repositories/PermissionRepository"); vi.mock("@calcom/features/flags/features.repository"); -vi.mock("@calcom/lib/server/repository/membership"); +vi.mock("@calcom/features/membership/repositories/MembershipRepository"); vi.mock("../permission.service"); vi.mock("@calcom/prisma", () => ({ diff --git a/packages/features/pbac/services/permission-check.service.ts b/packages/features/pbac/services/permission-check.service.ts index 2a09b5d356..56398690bf 100644 --- a/packages/features/pbac/services/permission-check.service.ts +++ b/packages/features/pbac/services/permission-check.service.ts @@ -1,6 +1,6 @@ import { FeaturesRepository } from "@calcom/features/flags/features.repository"; import logger from "@calcom/lib/logger"; -import { MembershipRepository } from "@calcom/lib/server/repository/membership"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; import prisma from "@calcom/prisma"; import type { MembershipRole } from "@calcom/prisma/enums"; diff --git a/packages/lib/server/checkRegularUsername.ts b/packages/features/profile/lib/checkRegularUsername.ts similarity index 84% rename from packages/lib/server/checkRegularUsername.ts rename to packages/features/profile/lib/checkRegularUsername.ts index 964c8c43bf..ff72e62aed 100644 --- a/packages/lib/server/checkRegularUsername.ts +++ b/packages/features/profile/lib/checkRegularUsername.ts @@ -1,8 +1,7 @@ +import { ProfileRepository } from "@calcom/features/profile/repositories/ProfileRepository"; +import { isUsernameReservedDueToMigration } from "@calcom/lib/server/username"; import slugify from "@calcom/lib/slugify"; -import { ProfileRepository } from "./repository/profile"; -import { isUsernameReservedDueToMigration } from "./username"; - export async function checkRegularUsername(_username: string, currentOrgDomain?: string | null) { const isCheckingUsernameInGlobalNamespace = !currentOrgDomain; const username = slugify(_username); diff --git a/packages/lib/server/checkUsername.ts b/packages/features/profile/lib/checkUsername.ts similarity index 83% rename from packages/lib/server/checkUsername.ts rename to packages/features/profile/lib/checkUsername.ts index 1d57927f1e..0ab21d278e 100644 --- a/packages/lib/server/checkUsername.ts +++ b/packages/features/profile/lib/checkUsername.ts @@ -1,7 +1,7 @@ import { IS_PREMIUM_USERNAME_ENABLED } from "@calcom/lib/constants"; +import { usernameCheck as checkPremiumUsername } from "@calcom/lib/server/username"; import { checkRegularUsername } from "./checkRegularUsername"; -import { usernameCheck as checkPremiumUsername } from "./username"; // TODO: Replace `lib/checkPremiumUsername` with `usernameCheck` and then import checkPremiumUsername directly here. // We want to remove dependency on website for signup stuff as signup is now part of app. diff --git a/packages/lib/createAProfileForAnExistingUser.ts b/packages/features/profile/lib/createAProfileForAnExistingUser.ts similarity index 87% rename from packages/lib/createAProfileForAnExistingUser.ts rename to packages/features/profile/lib/createAProfileForAnExistingUser.ts index a84eeb437c..8d6b3c5f14 100644 --- a/packages/lib/createAProfileForAnExistingUser.ts +++ b/packages/features/profile/lib/createAProfileForAnExistingUser.ts @@ -1,14 +1,13 @@ import { getOrgFullOrigin } from "@calcom/ee/organizations/lib/orgDomains"; -import { ProfileRepository } from "@calcom/lib/server/repository/profile"; +import { getOrgUsernameFromEmail } from "@calcom/features/auth/signup/utils/getOrgUsernameFromEmail"; +import { ProfileRepository } from "@calcom/features/profile/repositories/ProfileRepository"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; +import logger from "@calcom/lib/logger"; +import { safeStringify } from "@calcom/lib/safeStringify"; import { TeamRepository } from "@calcom/lib/server/repository/team"; -import { UserRepository } from "@calcom/lib/server/repository/user"; import prisma from "@calcom/prisma"; import { RedirectType } from "@calcom/prisma/enums"; -import { getOrgUsernameFromEmail } from "../features/auth/signup/utils/getOrgUsernameFromEmail"; -import logger from "./logger"; -import { safeStringify } from "./safeStringify"; - const log = logger.getSubLogger({ prefix: ["lib", "createAProfileForAnExistingUser"] }); export const createAProfileForAnExistingUser = async ({ user, diff --git a/packages/lib/hideBranding.ts b/packages/features/profile/lib/hideBranding.ts similarity index 93% rename from packages/lib/hideBranding.ts rename to packages/features/profile/lib/hideBranding.ts index 5e30213d65..c951a69695 100644 --- a/packages/lib/hideBranding.ts +++ b/packages/features/profile/lib/hideBranding.ts @@ -1,10 +1,9 @@ +import { ProfileRepository } from "@calcom/features/profile/repositories/ProfileRepository"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; +import logger from "@calcom/lib/logger"; +import { TeamRepository } from "@calcom/lib/server/repository/team"; import { prisma } from "@calcom/prisma"; -import logger from "./logger"; -import { ProfileRepository } from "./server/repository/profile"; -import { TeamRepository } from "./server/repository/team"; -import { UserRepository } from "./server/repository/user"; - const log = logger.getSubLogger({ name: "hideBranding" }); const teamRepository = new TeamRepository(prisma); const userRepository = new UserRepository(prisma); diff --git a/packages/lib/server/repository/profile.ts b/packages/features/profile/repositories/ProfileRepository.ts similarity index 99% rename from packages/lib/server/repository/profile.ts rename to packages/features/profile/repositories/ProfileRepository.ts index 461326a202..9d12052399 100644 --- a/packages/lib/server/repository/profile.ts +++ b/packages/features/profile/repositories/ProfileRepository.ts @@ -3,7 +3,9 @@ import { v4 as uuidv4 } from "uuid"; import { whereClauseForOrgWithSlugOrRequestedSlug } from "@calcom/ee/organizations/lib/orgDomains"; import { getOrgUsernameFromEmail } from "@calcom/features/auth/signup/utils/getOrgUsernameFromEmail"; import { DATABASE_CHUNK_SIZE } from "@calcom/lib/constants"; +import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; +import { getParsedTeam } from "@calcom/lib/server/repository/teamUtils"; import prisma from "@calcom/prisma"; import type { User as PrismaUser } from "@calcom/prisma/client"; import type { Prisma } from "@calcom/prisma/client"; @@ -11,9 +13,6 @@ import type { Team } from "@calcom/prisma/client"; import { userMetadata } from "@calcom/prisma/zod-utils"; import type { UpId, UserAsPersonalProfile, UserProfile } from "@calcom/types/UserProfile"; -import logger from "../../logger"; -import { getParsedTeam } from "./teamUtils"; - const userSelect = { name: true, avatarUrl: true, diff --git a/packages/features/routing-forms/lib/getRoutedUrl.test.ts b/packages/features/routing-forms/lib/getRoutedUrl.test.ts index 5c6bcb23cc..25b0bf4d5b 100644 --- a/packages/features/routing-forms/lib/getRoutedUrl.test.ts +++ b/packages/features/routing-forms/lib/getRoutedUrl.test.ts @@ -14,7 +14,7 @@ import { orgDomainConfig } from "@calcom/features/ee/organizations/lib/orgDomain import { isAuthorizedToViewFormOnOrgDomain } from "@calcom/features/routing-forms/lib/isAuthorizedToViewForm"; import { checkRateLimitAndThrowError } from "@calcom/lib/checkRateLimitAndThrowError"; import { PrismaRoutingFormRepository } from "@calcom/lib/server/repository/PrismaRoutingFormRepository"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { getRoutedUrl } from "./getRoutedUrl"; import { getUrlSearchParamsToForward } from "./getUrlSearchParamsToForward"; @@ -24,7 +24,7 @@ vi.mock("./getUrlSearchParamsToForward"); vi.mock("@calcom/lib/checkRateLimitAndThrowError"); vi.mock("@calcom/app-store/routing-forms/lib/handleResponse"); vi.mock("@calcom/lib/server/repository/PrismaRoutingFormRepository"); -vi.mock("@calcom/lib/server/repository/user", () => { +vi.mock("@calcom/features/users/repositories/UserRepository", () => { return { UserRepository: vi.fn().mockImplementation(() => ({ enrichUserWithItsProfile: vi.fn(), diff --git a/packages/features/routing-forms/lib/getRoutedUrl.ts b/packages/features/routing-forms/lib/getRoutedUrl.ts index a357011f75..cb58c40f84 100644 --- a/packages/features/routing-forms/lib/getRoutedUrl.ts +++ b/packages/features/routing-forms/lib/getRoutedUrl.ts @@ -21,7 +21,7 @@ import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import { withReporting } from "@calcom/lib/sentryWrapper"; import { PrismaRoutingFormRepository } from "@calcom/lib/server/repository/PrismaRoutingFormRepository"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import prisma from "@calcom/prisma"; import { TRPCError } from "@trpc/server"; diff --git a/packages/features/shell/SideBar.tsx b/packages/features/shell/SideBar.tsx index 46eb75661d..98fefdcedf 100644 --- a/packages/features/shell/SideBar.tsx +++ b/packages/features/shell/SideBar.tsx @@ -6,7 +6,7 @@ import { usePathname } from "next/navigation"; import { IS_VISUAL_REGRESSION_TESTING, ENABLE_PROFILE_SWITCHER } from "@calcom/lib/constants"; import { getPlaceholderAvatar } from "@calcom/lib/defaultAvatarImage"; -import { getBookerBaseUrlSync } from "@calcom/lib/getBookerUrl/client"; +import { getBookerBaseUrlSync } from "@calcom/features/ee/organizations/lib/getBookerBaseUrlSync"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { UserPermissionRole } from "@calcom/prisma/enums"; import classNames from "@calcom/ui/classNames"; diff --git a/packages/features/tasker/tasks/scanWorkflowBody.test.ts b/packages/features/tasker/tasks/scanWorkflowBody.test.ts index d3ea6699e8..2456dd5d02 100644 --- a/packages/features/tasker/tasks/scanWorkflowBody.test.ts +++ b/packages/features/tasker/tasks/scanWorkflowBody.test.ts @@ -2,13 +2,13 @@ import prismaMock from "../../../../tests/libs/__mocks__/prismaMock"; import { describe, expect, it, vi, beforeEach } from "vitest"; -import { lockUser, LockReason } from "@calcom/lib/autoLock"; +import { lockUser, LockReason } from "@calcom/features/ee/api-keys/lib/autoLock"; import { scheduleWorkflowNotifications } from "@calcom/trpc/server/routers/viewer/workflows/util"; import { scanWorkflowBody, iffyScanBody } from "./scanWorkflowBody"; -vi.mock("@calcom/lib/autoLock", async (importActual) => { - const actual = await importActual(); +vi.mock("@calcom/features/ee/api-keys/lib/autoLock", async (importActual) => { + const actual = await importActual(); return { ...actual, // Keep all original exports lockUser: vi.fn(), // Override just the lockUser function diff --git a/packages/features/users/components/UserTable/UserListTable.tsx b/packages/features/users/components/UserTable/UserListTable.tsx index 4460d1c7c4..b6356e06c5 100644 --- a/packages/features/users/components/UserTable/UserListTable.tsx +++ b/packages/features/users/components/UserTable/UserListTable.tsx @@ -22,12 +22,12 @@ import { } from "@calcom/features/data-table"; import { useSegments } from "@calcom/features/data-table/hooks/useSegments"; import { useOrgBranding } from "@calcom/features/ee/organizations/context/provider"; -import { WEBAPP_URL } from "@calcom/lib/constants"; import { - downloadAsCsv, generateCsvRawForMembersTable, generateHeaderFromReactTable, -} from "@calcom/lib/csvUtils"; +} from "@calcom/features/users/lib/UserListTableUtils"; +import { WEBAPP_URL } from "@calcom/lib/constants"; +import { downloadAsCsv } from "@calcom/lib/csvUtils"; import { getUserAvatarUrl } from "@calcom/lib/getAvatarUrl"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc"; diff --git a/packages/features/users/lib/UserListTableUtils.ts b/packages/features/users/lib/UserListTableUtils.ts new file mode 100644 index 0000000000..3fed627466 --- /dev/null +++ b/packages/features/users/lib/UserListTableUtils.ts @@ -0,0 +1,93 @@ +import type { Table } from "@tanstack/react-table"; + +import type { UserTableUser } from "@calcom/features/users/components/UserTable/types"; +import { sanitizeValue } from "@calcom/lib/csvUtils"; + +export const generateHeaderFromReactTable = (table: Table): string[] | null => { + const headerGroups = table.getHeaderGroups(); + if (!headerGroups.length) { + return null; + } + + const { headers } = headerGroups[0]; + const HEADER_IDS_TO_EXCLUDE = ["select", "actions"]; // these columns only make sense in web page + const filteredHeaders = headers.filter((header) => !HEADER_IDS_TO_EXCLUDE.includes(header.id)); + const headerNames = filteredHeaders.map((header) => { + const h = header.column.columnDef.header; + if (typeof h === "string") { + return sanitizeValue(h); + } + if (typeof h === "function") { + return sanitizeValue(h(header.getContext())); + } + return "Unknown"; + }); + + // Add "Link" column (member's public page) + const MEMBERS_COLUMN = "Members"; + const LINK_COLUMN = "Link"; + const memberIndex = headerNames.findIndex((name) => name === MEMBERS_COLUMN); + if (memberIndex > -1) { + headerNames.splice(memberIndex + 1, 0, LINK_COLUMN); + } + + return headerNames; +}; + +export const generateCsvRawForMembersTable = ( + headers: string[], + rows: UserTableUser[], + ATTRIBUTE_IDS: string[], + orgDomain: string +): string => { + if (!headers.length) { + throw new Error("The header is empty."); + } + + const REQUIRED_HEADERS = ["Members", "Link", "Role", "Teams"] as const; + // Validate required headers are present and in correct order + const firstFourHeaders = headers.slice(0, REQUIRED_HEADERS.length); + if (!REQUIRED_HEADERS.every((header, index) => header === firstFourHeaders[index])) { + throw new Error( + `Invalid headers structure. Expected headers to start with: ${JSON.stringify(REQUIRED_HEADERS)}` + ); + } + + // Body formation + const csvRows = rows.map((row) => { + const { email, role, teams, username, attributes } = row; + + // Create a map of attributeId to array of values + const attributeMap = (attributes ?? []).reduce((acc, attr) => { + if (!acc[attr.attributeId]) { + acc[attr.attributeId] = []; + } + acc[attr.attributeId].push({ + value: attr.value, + weight: attr.weight ?? undefined, + }); + return acc; + }, {} as Record); + + const requiredColumns = [ + email, // Members column + `${orgDomain}/${username}`, // Link column + role, // Role column + sanitizeValue(teams.map((team) => team.name).join(",")), // Teams column + ]; + + // Add attribute columns + const attributeColumns = ATTRIBUTE_IDS.map((attrId) => { + const attributes = attributeMap[attrId]; + if (!attributes?.length) return ""; + + return sanitizeValue( + attributes.map((attr) => (attr.weight ? `${attr.value} (${attr.weight}%)` : attr.value)).join(",") + ); + }); + + return [...requiredColumns, ...attributeColumns]; + }); + + return [headers.join(","), ...csvRows.map((row) => row.join(","))].join("\n"); +}; diff --git a/packages/features/users/lib/userDeletionService.ts b/packages/features/users/lib/deleteUser.ts similarity index 100% rename from packages/features/users/lib/userDeletionService.ts rename to packages/features/users/lib/deleteUser.ts diff --git a/packages/lib/server/repository/user.test.ts b/packages/features/users/repositories/UserRepository.test.ts similarity index 96% rename from packages/lib/server/repository/user.test.ts rename to packages/features/users/repositories/UserRepository.test.ts index 87c19764ce..fbe2b30fca 100644 --- a/packages/lib/server/repository/user.test.ts +++ b/packages/features/users/repositories/UserRepository.test.ts @@ -3,10 +3,9 @@ import prismock from "../../../../tests/libs/__mocks__/prisma"; import { describe, test, vi, expect, beforeEach } from "vitest"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { CreationSource } from "@calcom/prisma/enums"; -import { UserRepository } from "./user"; - vi.mock("@calcom/lib/server/i18n", () => { return { getTranslation: async (locale: string, namespace: string) => { diff --git a/packages/lib/server/repository/user.ts b/packages/features/users/repositories/UserRepository.ts similarity index 98% rename from packages/lib/server/repository/user.ts rename to packages/features/users/repositories/UserRepository.ts index 6180511ed7..e61f99cf8f 100644 --- a/packages/lib/server/repository/user.ts +++ b/packages/features/users/repositories/UserRepository.ts @@ -1,10 +1,14 @@ import type { z } from "zod"; import { whereClauseForOrgWithSlugOrRequestedSlug } from "@calcom/ee/organizations/lib/orgDomains"; +import { ProfileRepository } from "@calcom/features/profile/repositories/ProfileRepository"; +import { DEFAULT_SCHEDULE, getAvailabilityFromSchedule } from "@calcom/lib/availability"; import { buildNonDelegationCredentials } from "@calcom/lib/delegationCredential"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import { getTranslation } from "@calcom/lib/server/i18n"; +import { getParsedTeam } from "@calcom/lib/server/repository/teamUtils"; +import { withSelectedCalendars } from "@calcom/lib/server/withSelectedCalendars"; import type { PrismaClient } from "@calcom/prisma"; import { availabilityUserSelect } from "@calcom/prisma"; import type { User as UserType } from "@calcom/prisma/client"; @@ -15,12 +19,7 @@ import { credentialForCalendarServiceSelect } from "@calcom/prisma/selects/crede import { userMetadata } from "@calcom/prisma/zod-utils"; import type { UpId, UserProfile } from "@calcom/types/UserProfile"; -import { DEFAULT_SCHEDULE, getAvailabilityFromSchedule } from "../../availability"; -import { withSelectedCalendars } from "../withSelectedCalendars"; -import { ProfileRepository } from "./profile"; -import { getParsedTeam } from "./teamUtils"; - -export type { UserWithLegacySelectedCalendars } from "../withSelectedCalendars"; +export type { UserWithLegacySelectedCalendars } from "@calcom/lib/server/withSelectedCalendars"; export { withSelectedCalendars }; export type UserAdminTeams = number[]; diff --git a/packages/lib/server/service/userCreationService.test.ts b/packages/features/users/services/userCreationService.test.ts similarity index 96% rename from packages/lib/server/service/userCreationService.test.ts rename to packages/features/users/services/userCreationService.test.ts index 9f32c9c3e8..3cdb18bcd4 100644 --- a/packages/lib/server/service/userCreationService.test.ts +++ b/packages/features/users/services/userCreationService.test.ts @@ -2,11 +2,11 @@ import prismock from "../../../../tests/libs/__mocks__/prisma"; import { describe, test, expect, vi, beforeEach } from "vitest"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { checkIfEmailIsBlockedInWatchlistController } from "@calcom/features/watchlist/operations/check-if-email-in-watchlist.controller"; import { hashPassword } from "@calcom/lib/auth/hashPassword"; import { CreationSource } from "@calcom/prisma/enums"; -import { UserRepository } from "../repository/user"; import { UserCreationService } from "./userCreationService"; vi.mock("@calcom/lib/server/i18n", () => { @@ -24,7 +24,7 @@ vi.mock("@calcom/lib/auth/hashPassword", () => ({ hashPassword: vi.fn().mockResolvedValue("hashed-password"), })); -vi.mock("../repository/user", () => { +vi.mock("@calcom/features/users/repositories/UserRepository", () => { return { UserRepository: vi.fn().mockImplementation(() => ({ create: vi.fn(), diff --git a/packages/lib/server/service/userCreationService.ts b/packages/features/users/services/userCreationService.ts similarity index 92% rename from packages/lib/server/service/userCreationService.ts rename to packages/features/users/services/userCreationService.ts index 20d6ecd071..b4955a08d3 100644 --- a/packages/lib/server/service/userCreationService.ts +++ b/packages/features/users/services/userCreationService.ts @@ -1,12 +1,11 @@ import { checkIfEmailIsBlockedInWatchlistController } from "@calcom/features/watchlist/operations/check-if-email-in-watchlist.controller"; import { hashPassword } from "@calcom/lib/auth/hashPassword"; import logger from "@calcom/lib/logger"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; +import slugify from "@calcom/lib/slugify"; import prisma from "@calcom/prisma"; import type { CreationSource, UserPermissionRole, IdentityProvider } from "@calcom/prisma/enums"; -import slugify from "../../slugify"; -import { UserRepository } from "../repository/user"; - interface CreateUserInput { email: string; username: string; diff --git a/packages/lib/freeEmailDomainCheck/checkIfFreeEmailDomain.test.ts b/packages/features/watchlist/lib/checkIfFreeEmailDomain.test.ts similarity index 100% rename from packages/lib/freeEmailDomainCheck/checkIfFreeEmailDomain.test.ts rename to packages/features/watchlist/lib/checkIfFreeEmailDomain.test.ts diff --git a/packages/lib/freeEmailDomainCheck/checkIfFreeEmailDomain.ts b/packages/features/watchlist/lib/checkIfFreeEmailDomain.ts similarity index 100% rename from packages/lib/freeEmailDomainCheck/checkIfFreeEmailDomain.ts rename to packages/features/watchlist/lib/checkIfFreeEmailDomain.ts diff --git a/packages/features/webhooks/lib/dto/types.ts b/packages/features/webhooks/lib/dto/types.ts index 34dcbfce39..ba849372c3 100644 --- a/packages/features/webhooks/lib/dto/types.ts +++ b/packages/features/webhooks/lib/dto/types.ts @@ -1,5 +1,5 @@ import type { TGetTranscriptAccessLink } from "@calcom/app-store/dailyvideo/zod"; -import type { FORM_SUBMITTED_WEBHOOK_RESPONSES } from "@calcom/app-store/routing-forms/trpc/utils"; +import type { FORM_SUBMITTED_WEBHOOK_RESPONSES } from "@calcom/app-store/routing-forms/lib/formSubmissionUtils"; import type { TimeUnit, WebhookTriggerEvents } from "@calcom/prisma/enums"; import type { CalendarEvent, Person } from "@calcom/types/Calendar"; diff --git a/packages/features/webhooks/lib/factory/FormPayloadBuilder.ts b/packages/features/webhooks/lib/factory/FormPayloadBuilder.ts index 86a4a4dd5b..d1dae27bd7 100644 --- a/packages/features/webhooks/lib/factory/FormPayloadBuilder.ts +++ b/packages/features/webhooks/lib/factory/FormPayloadBuilder.ts @@ -1,4 +1,4 @@ -import type { FORM_SUBMITTED_WEBHOOK_RESPONSES } from "@calcom/app-store/routing-forms/trpc/utils"; +import type { FORM_SUBMITTED_WEBHOOK_RESPONSES } from "@calcom/app-store/routing-forms/lib/formSubmissionUtils"; import { WebhookTriggerEvents } from "@calcom/prisma/enums"; import type { FormSubmittedDTO, FormSubmittedNoEventDTO } from "../dto/types"; diff --git a/packages/features/webhooks/lib/interface/repository.ts b/packages/features/webhooks/lib/interface/repository.ts index 5431372bbf..3e89392210 100644 --- a/packages/features/webhooks/lib/interface/repository.ts +++ b/packages/features/webhooks/lib/interface/repository.ts @@ -1,4 +1,5 @@ -import type { WebhookTriggerEvents } from "@calcom/prisma/enums"; +import type { WebhookTriggerEvents, UserPermissionRole } from "@calcom/prisma/enums"; +import type { Webhook } from "@calcom/prisma/client"; import type { WebhookSubscriber } from "../dto/types"; @@ -11,6 +12,48 @@ export interface GetSubscribersOptions { oAuthClientId?: string | null; } +type WebhookGroup = { + teamId?: number | null; + profile: { + slug: string | null; + name: string | null; + image?: string; + }; + metadata?: { + canModify: boolean; + canDelete: boolean; + }; + webhooks: Webhook[]; +}; + export interface IWebhookRepository { getSubscribers(options: GetSubscribersOptions): Promise; + getWebhookById(id: string): Promise; + findByWebhookId(webhookId?: string): Promise<{ + id: string; + subscriberUrl: string; + payloadTemplate: string | null; + active: boolean; + eventTriggers: WebhookTriggerEvents[]; + secret: string | null; + teamId: number | null; + userId: number | null; + platform: boolean; + time: number | null; + timeUnit: string | null; + }>; + getFilteredWebhooksForUser(options: { + userId: number; + userRole?: UserPermissionRole; + }): Promise<{ + webhookGroups: WebhookGroup[]; + profiles: { + teamId: number | null | undefined; + slug: string | null; + name: string | null; + image?: string | undefined; + canModify?: boolean; + canDelete?: boolean; + }[]; + }>; } diff --git a/packages/features/webhooks/lib/repository/WebhookRepository.ts b/packages/features/webhooks/lib/repository/WebhookRepository.ts index 8bfba518dd..a777cc3fa2 100644 --- a/packages/features/webhooks/lib/repository/WebhookRepository.ts +++ b/packages/features/webhooks/lib/repository/WebhookRepository.ts @@ -1,7 +1,12 @@ +import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; +import { getPlaceholderAvatar } from "@calcom/lib/defaultAvatarImage"; +import { getUserAvatarUrl } from "@calcom/lib/getAvatarUrl"; import { withReporting } from "@calcom/lib/sentryWrapper"; import { prisma as defaultPrisma } from "@calcom/prisma"; import type { PrismaClient } from "@calcom/prisma"; +import type { Webhook } from "@calcom/prisma/client"; import type { TimeUnit, WebhookTriggerEvents } from "@calcom/prisma/enums"; +import { UserPermissionRole, MembershipRole } from "@calcom/prisma/enums"; import type { WebhookSubscriber } from "../dto/types"; import type { IWebhookRepository } from "../interface/repository"; @@ -20,9 +25,42 @@ interface WebhookQueryResult { priority: number; // This field is added by the query and removed before returning } +type WebhookGroup = { + teamId?: number | null; + profile: { + slug: string | null; + name: string | null; + image?: string; + }; + metadata?: { + canModify: boolean; + canDelete: boolean; + }; + webhooks: Webhook[]; +}; + +const filterWebhooks = (webhook: Webhook) => { + const appIds = [ + "zapier", + "make", + // Add more if needed + ]; + + return !appIds.some((appId: string) => webhook.appId == appId); +}; + export class WebhookRepository implements IWebhookRepository { constructor(private prisma: PrismaClient = defaultPrisma) {} + private static _instance: WebhookRepository; + + static getInstance(): WebhookRepository { + if (!WebhookRepository._instance) { + WebhookRepository._instance = new WebhookRepository(); + } + return WebhookRepository._instance; + } + async getSubscribers(options: GetSubscribersOptions): Promise { const teamId = options.teamId; const userId = options.userId; @@ -201,9 +239,164 @@ export class WebhookRepository implements IWebhookRepository { eventTriggers: webhook.eventTriggers, }; } + + async findByWebhookId(webhookId?: string) { + return await this.prisma.webhook.findUniqueOrThrow({ + where: { + id: webhookId, + }, + select: { + id: true, + subscriberUrl: true, + payloadTemplate: true, + active: true, + eventTriggers: true, + secret: true, + teamId: true, + userId: true, + platform: true, + time: true, + timeUnit: true, + }, + }); + } + + async getFilteredWebhooksForUser({ userId, userRole }: { userId: number; userRole?: UserPermissionRole }) { + const user = await this.prisma.user.findUnique({ + where: { id: userId }, + select: { + id: true, + username: true, + name: true, + avatarUrl: true, + webhooks: true, + teams: { + where: { + accepted: true, + }, + select: { + role: true, + team: { + select: { + id: true, + name: true, + slug: true, + logoUrl: true, + webhooks: true, + }, + }, + }, + }, + }, + }); + + if (!user) { + throw new Error("User not found"); + } + + // Use permission service which handles both PBAC and role-based fallbacks + const permissionService = new PermissionCheckService(); + + // Build webhook groups with proper permissions + const webhookGroups: WebhookGroup[] = []; + + // Add user's personal webhooks + webhookGroups.push({ + teamId: null, + profile: { + slug: user.username, + name: user.name, + image: getUserAvatarUrl({ avatarUrl: user.avatarUrl }), + }, + webhooks: user.webhooks.filter(filterWebhooks), + metadata: { + canModify: true, + canDelete: true, + }, + }); + + // Check permissions for each team + // The permission service handles PBAC when enabled and falls back to role-based permissions + for (const membership of user.teams) { + const teamId = membership.team.id; + + // Check read permission (fallback: MEMBER, ADMIN, OWNER can read) + const canRead = await permissionService.checkPermission({ + userId, + teamId, + permission: "webhook.read", + fallbackRoles: [MembershipRole.MEMBER, MembershipRole.ADMIN, MembershipRole.OWNER], + }); + + if (!canRead) { + // User doesn't have permission to view this team's webhooks + continue; + } + + // Check update/delete permissions in parallel (fallback: only ADMIN, OWNER can modify) + const [canUpdate, canDelete] = await Promise.all([ + permissionService.checkPermission({ + userId, + teamId, + permission: "webhook.update", + fallbackRoles: [MembershipRole.ADMIN, MembershipRole.OWNER], + }), + permissionService.checkPermission({ + userId, + teamId, + permission: "webhook.delete", + fallbackRoles: [MembershipRole.ADMIN, MembershipRole.OWNER], + }), + ]); + + webhookGroups.push({ + teamId: membership.team.id, + profile: { + name: membership.team.name, + slug: membership.team.slug || null, + image: getPlaceholderAvatar(membership.team.logoUrl, membership.team.name), + }, + webhooks: membership.team.webhooks.filter(filterWebhooks), + metadata: { + canModify: canUpdate, + canDelete, + }, + }); + } + + // Add platform webhooks for admins + if (userRole === UserPermissionRole.ADMIN) { + const platformWebhooks = await this.prisma.webhook.findMany({ + where: { platform: true }, + }); + + webhookGroups.push({ + teamId: null, + profile: { + slug: "Platform", + name: "Platform", + image: getPlaceholderAvatar(null, "Platform"), + }, + webhooks: platformWebhooks, + metadata: { + canDelete: true, + canModify: true, + }, + }); + } + + return { + webhookGroups: webhookGroups.filter((group) => group.webhooks.length > 0), + profiles: webhookGroups.map((group) => ({ + teamId: group.teamId, + ...group.profile, + ...group.metadata, + })), + }; + } } export const webhookRepository = withReporting( - (options: GetSubscribersOptions) => new WebhookRepository().getSubscribers(options), + (options: GetSubscribersOptions) => WebhookRepository.getInstance().getSubscribers(options), "WebhookRepository.getSubscribers" ); diff --git a/packages/features/webhooks/lib/service/FormWebhookService.ts b/packages/features/webhooks/lib/service/FormWebhookService.ts index 82ac1e1948..cd26f1eafc 100644 --- a/packages/features/webhooks/lib/service/FormWebhookService.ts +++ b/packages/features/webhooks/lib/service/FormWebhookService.ts @@ -1,4 +1,4 @@ -import type { FORM_SUBMITTED_WEBHOOK_RESPONSES } from "@calcom/app-store/routing-forms/trpc/utils"; +import type { FORM_SUBMITTED_WEBHOOK_RESPONSES } from "@calcom/app-store/routing-forms/lib/formSubmissionUtils"; import dayjs from "@calcom/dayjs"; import { WebhookTriggerEvents } from "@calcom/prisma/enums"; diff --git a/packages/features/webhooks/pages/webhooks-view.tsx b/packages/features/webhooks/pages/webhooks-view.tsx index edfa2350e5..5905d1e834 100644 --- a/packages/features/webhooks/pages/webhooks-view.tsx +++ b/packages/features/webhooks/pages/webhooks-view.tsx @@ -2,9 +2,9 @@ import { useRouter } from "next/navigation"; +import { useBookerUrl } from "@calcom/features/bookings/hooks/useBookerUrl"; import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; import { APP_NAME, WEBAPP_URL } from "@calcom/lib/constants"; -import { useBookerUrl } from "@calcom/lib/hooks/useBookerUrl"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import type { RouterOutputs } from "@calcom/trpc/react"; import classNames from "@calcom/ui/classNames"; diff --git a/packages/lib/CalEventParser.ts b/packages/lib/CalEventParser.ts index 454cebcc4f..3a052c973c 100644 --- a/packages/lib/CalEventParser.ts +++ b/packages/lib/CalEventParser.ts @@ -2,10 +2,10 @@ import type { TFunction } from "i18next"; import short from "short-uuid"; import { v5 as uuidv5 } from "uuid"; +import getLabelValueMapFromResponses from "@calcom/features/bookings/lib/getLabelValueMapFromResponses"; import type { CalendarEvent, Person } from "@calcom/types/Calendar"; import { WEBAPP_URL } from "./constants"; -import getLabelValueMapFromResponses from "./getLabelValueMapFromResponses"; import isSmsCalEmail from "./isSmsCalEmail"; const translator = short(); diff --git a/packages/features/bookings/lib/SystemField.ts b/packages/lib/SystemField.ts similarity index 100% rename from packages/features/bookings/lib/SystemField.ts rename to packages/lib/SystemField.ts diff --git a/packages/lib/bookings/buildEventUrlFromBooking.test.ts b/packages/lib/bookings/buildEventUrlFromBooking.test.ts index 2e5a59ce2d..a2091c51db 100644 --- a/packages/lib/bookings/buildEventUrlFromBooking.test.ts +++ b/packages/lib/bookings/buildEventUrlFromBooking.test.ts @@ -2,11 +2,11 @@ import { constantsScenarios } from "@calcom/lib/__mocks__/constants"; import { describe, it, vi, expect, beforeEach } from "vitest"; -import { getBrand } from "@calcom/lib/server/getBrand"; +import { getBrand } from "@calcom/features/ee/organizations/lib/getBrand"; import { buildEventUrlFromBooking } from "./buildEventUrlFromBooking"; -vi.mock("@calcom/lib/server/getBrand", () => ({ +vi.mock("@calcom/features/ee/organizations/lib/getBrand", () => ({ getBrand: vi.fn(), })); diff --git a/packages/lib/bookings/buildEventUrlFromBooking.ts b/packages/lib/bookings/buildEventUrlFromBooking.ts index 127b838cc1..c7c722910f 100644 --- a/packages/lib/bookings/buildEventUrlFromBooking.ts +++ b/packages/lib/bookings/buildEventUrlFromBooking.ts @@ -1,4 +1,4 @@ -import { getBookerBaseUrl } from "@calcom/lib/getBookerUrl/server"; +import { getBookerBaseUrl } from "@calcom/features/ee/organizations/lib/getBookerUrlServer"; import { safeStringify } from "@calcom/lib/safeStringify"; import logger from "../logger"; diff --git a/packages/lib/csvUtils.ts b/packages/lib/csvUtils.ts index 2238bb4674..a99c3daeb9 100644 --- a/packages/lib/csvUtils.ts +++ b/packages/lib/csvUtils.ts @@ -1,7 +1,3 @@ -import type { Table } from "@tanstack/react-table"; - -import type { UserTableUser } from "@calcom/features/users/components/UserTable/types"; - export const downloadAsCsv = (data: string | Record[], filename: string) => { // If data is an array of objects, convert it to CSV string const csvString = typeof data === "string" ? data : objectsToCsv(data); @@ -61,92 +57,3 @@ export const sanitizeValue = (value: string) => { } return value; }; - -export const generateHeaderFromReactTable = (table: Table): string[] | null => { - const headerGroups = table.getHeaderGroups(); - if (!headerGroups.length) { - return null; - } - - const { headers } = headerGroups[0]; - const HEADER_IDS_TO_EXCLUDE = ["select", "actions"]; // these columns only make sense in web page - const filteredHeaders = headers.filter((header) => !HEADER_IDS_TO_EXCLUDE.includes(header.id)); - const headerNames = filteredHeaders.map((header) => { - const h = header.column.columnDef.header; - if (typeof h === "string") { - return sanitizeValue(h); - } - if (typeof h === "function") { - return sanitizeValue(h(header.getContext())); - } - return "Unknown"; - }); - - // Add "Link" column (member's public page) - const MEMBERS_COLUMN = "Members"; - const LINK_COLUMN = "Link"; - const memberIndex = headerNames.findIndex((name) => name === MEMBERS_COLUMN); - if (memberIndex > -1) { - headerNames.splice(memberIndex + 1, 0, LINK_COLUMN); - } - - return headerNames; -}; - -export const generateCsvRawForMembersTable = ( - headers: string[], - rows: UserTableUser[], - ATTRIBUTE_IDS: string[], - orgDomain: string -): string => { - if (!headers.length) { - throw new Error("The header is empty."); - } - - const REQUIRED_HEADERS = ["Members", "Link", "Role", "Teams"] as const; - // Validate required headers are present and in correct order - const firstFourHeaders = headers.slice(0, REQUIRED_HEADERS.length); - if (!REQUIRED_HEADERS.every((header, index) => header === firstFourHeaders[index])) { - throw new Error( - `Invalid headers structure. Expected headers to start with: ${JSON.stringify(REQUIRED_HEADERS)}` - ); - } - - // Body formation - const csvRows = rows.map((row) => { - const { email, role, teams, username, attributes } = row; - - // Create a map of attributeId to array of values - const attributeMap = (attributes ?? []).reduce((acc, attr) => { - if (!acc[attr.attributeId]) { - acc[attr.attributeId] = []; - } - acc[attr.attributeId].push({ - value: attr.value, - weight: attr.weight ?? undefined, - }); - return acc; - }, {} as Record); - - const requiredColumns = [ - email, // Members column - `${orgDomain}/${username}`, // Link column - role, // Role column - sanitizeValue(teams.map((team) => team.name).join(",")), // Teams column - ]; - - // Add attribute columns - const attributeColumns = ATTRIBUTE_IDS.map((attrId) => { - const attributes = attributeMap[attrId]; - if (!attributes?.length) return ""; - - return sanitizeValue( - attributes.map((attr) => (attr.weight ? `${attr.value} (${attr.weight}%)` : attr.value)).join(",") - ); - }); - - return [...requiredColumns, ...attributeColumns]; - }); - - return [headers.join(","), ...csvRows.map((row) => row.join(","))].join("\n"); -}; diff --git a/packages/lib/eslint.config.mjs b/packages/lib/eslint.config.mjs index cac9f72e6a..c47ff3ffed 100644 --- a/packages/lib/eslint.config.mjs +++ b/packages/lib/eslint.config.mjs @@ -8,4 +8,9 @@ export default [ target: ".", message: "lib package should not import from app-store to avoid circular dependencies.", }), + forbid({ + from: "../features/**", + target: ".", + message: "lib package should not import from features to avoid circular dependencies.", + }), ]; diff --git a/packages/lib/server/repository/__mocks__/organization.ts b/packages/lib/server/repository/__mocks__/organization.ts index 3ac1c60cbd..0c7e23d9ae 100644 --- a/packages/lib/server/repository/__mocks__/organization.ts +++ b/packages/lib/server/repository/__mocks__/organization.ts @@ -1,9 +1,9 @@ import { vi, beforeEach } from "vitest"; import { mockReset, mockDeep } from "vitest-mock-extended"; -import type * as organization from "@calcom/lib/server/repository/organization"; +import type * as organization from "@calcom/features/ee/organizations/repositories/OrganizationRepository"; -vi.mock("@calcom/lib/server/repository/organization", () => organizationMock); +vi.mock("@calcom/features/ee/organizations/repositories/OrganizationRepository", () => organizationMock); type OrganizationModule = typeof organization; beforeEach(() => { mockReset(organizationMock); diff --git a/packages/lib/server/repository/__tests__/delegationCredential.test.ts b/packages/lib/server/repository/__tests__/delegationCredential.test.ts index 3c63a077be..cfb35220ee 100644 --- a/packages/lib/server/repository/__tests__/delegationCredential.test.ts +++ b/packages/lib/server/repository/__tests__/delegationCredential.test.ts @@ -2,12 +2,12 @@ import prismock from "../../../../../tests/libs/__mocks__/prisma"; import { describe, expect, it, beforeEach, vi } from "vitest"; +import { OrganizationRepository } from "@calcom/features/ee/organizations/repositories/OrganizationRepository"; import { encryptServiceAccountKey } from "@calcom/lib/server/serviceAccountKey"; import { DelegationCredentialRepository } from "../delegationCredential"; -import { OrganizationRepository } from "../organization"; -vi.mock("../organization", () => ({ +vi.mock("@calcom/features/ee/organizations/repositories/OrganizationRepository", () => ({ OrganizationRepository: { findByMemberEmail: vi.fn(), }, diff --git a/packages/lib/server/repository/delegationCredential.ts b/packages/lib/server/repository/delegationCredential.ts index 8a137568bb..2cf8522b50 100644 --- a/packages/lib/server/repository/delegationCredential.ts +++ b/packages/lib/server/repository/delegationCredential.ts @@ -1,3 +1,4 @@ +import { OrganizationRepository } from "@calcom/features/ee/organizations/repositories/OrganizationRepository"; import logger from "@calcom/lib/logger"; import { serviceAccountKeySchema, @@ -9,8 +10,6 @@ import { import { prisma } from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; -import { OrganizationRepository } from "./organization"; - export type { ServiceAccountKey }; const repositoryLogger = logger.getSubLogger({ prefix: ["DelegationCredentialRepository"] }); const delegationCredentialSafeSelect = { diff --git a/packages/lib/server/repository/webhook.ts b/packages/lib/server/repository/webhook.ts deleted file mode 100644 index 362de82fcf..0000000000 --- a/packages/lib/server/repository/webhook.ts +++ /dev/null @@ -1,194 +0,0 @@ -import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; -import { getPlaceholderAvatar } from "@calcom/lib/defaultAvatarImage"; -import { getUserAvatarUrl } from "@calcom/lib/getAvatarUrl"; -import { prisma } from "@calcom/prisma"; -import type { Webhook } from "@calcom/prisma/client"; -import { UserPermissionRole } from "@calcom/prisma/enums"; -import { MembershipRole } from "@calcom/prisma/enums"; - -type WebhookGroup = { - teamId?: number | null; - profile: { - slug: string | null; - name: string | null; - image?: string; - }; - metadata?: { - canModify: boolean; - canDelete: boolean; - }; - webhooks: Webhook[]; -}; - -const filterWebhooks = (webhook: Webhook) => { - const appIds = [ - "zapier", - "make", - // Add more if needed - ]; - - return !appIds.some((appId: string) => webhook.appId == appId); -}; - -export class WebhookRepository { - static async findByWebhookId(webhookId?: string) { - return await prisma.webhook.findUniqueOrThrow({ - where: { - id: webhookId, - }, - select: { - id: true, - subscriberUrl: true, - payloadTemplate: true, - active: true, - eventTriggers: true, - secret: true, - teamId: true, - userId: true, - platform: true, - time: true, - timeUnit: true, - }, - }); - } - - static async getFilteredWebhooksForUser({ - userId, - userRole, - }: { - userId: number; - userRole?: UserPermissionRole; - }) { - const user = await prisma.user.findUnique({ - where: { id: userId }, - select: { - id: true, - username: true, - name: true, - avatarUrl: true, - webhooks: true, - teams: { - where: { - accepted: true, - }, - select: { - role: true, - team: { - select: { - id: true, - name: true, - slug: true, - logoUrl: true, - webhooks: true, - }, - }, - }, - }, - }, - }); - - if (!user) { - throw new Error("User not found"); - } - - // Use permission service which handles both PBAC and role-based fallbacks - const permissionService = new PermissionCheckService(); - - // Build webhook groups with proper permissions - const webhookGroups: WebhookGroup[] = []; - - // Add user's personal webhooks - webhookGroups.push({ - teamId: null, - profile: { - slug: user.username, - name: user.name, - image: getUserAvatarUrl({ avatarUrl: user.avatarUrl }), - }, - webhooks: user.webhooks.filter(filterWebhooks), - metadata: { - canModify: true, - canDelete: true, - }, - }); - - // Check permissions for each team - // The permission service handles PBAC when enabled and falls back to role-based permissions - for (const membership of user.teams) { - const teamId = membership.team.id; - - // Check read permission (fallback: MEMBER, ADMIN, OWNER can read) - const canRead = await permissionService.checkPermission({ - userId, - teamId, - permission: "webhook.read", - fallbackRoles: [MembershipRole.MEMBER, MembershipRole.ADMIN, MembershipRole.OWNER], - }); - - if (!canRead) { - // User doesn't have permission to view this team's webhooks - continue; - } - - // Check update/delete permissions in parallel (fallback: only ADMIN, OWNER can modify) - const [canUpdate, canDelete] = await Promise.all([ - permissionService.checkPermission({ - userId, - teamId, - permission: "webhook.update", - fallbackRoles: [MembershipRole.ADMIN, MembershipRole.OWNER], - }), - permissionService.checkPermission({ - userId, - teamId, - permission: "webhook.delete", - fallbackRoles: [MembershipRole.ADMIN, MembershipRole.OWNER], - }), - ]); - - webhookGroups.push({ - teamId: membership.team.id, - profile: { - name: membership.team.name, - slug: membership.team.slug || null, - image: getPlaceholderAvatar(membership.team.logoUrl, membership.team.name), - }, - webhooks: membership.team.webhooks.filter(filterWebhooks), - metadata: { - canModify: canUpdate, - canDelete, - }, - }); - } - - // Add platform webhooks for admins - if (userRole === UserPermissionRole.ADMIN) { - const platformWebhooks = await prisma.webhook.findMany({ - where: { platform: true }, - }); - - webhookGroups.push({ - teamId: null, - profile: { - slug: "Platform", - name: "Platform", - image: getPlaceholderAvatar(null, "Platform"), - }, - webhooks: platformWebhooks, - metadata: { - canDelete: true, - canModify: true, - }, - }); - } - - return { - webhookGroups: webhookGroups.filter((group) => group.webhooks.length > 0), - profiles: webhookGroups.map((group) => ({ - teamId: group.teamId, - ...group.profile, - ...group.metadata, - })), - }; - } -} diff --git a/packages/lib/server/service/membershipService.ts b/packages/lib/server/service/membershipService.ts index 99a24ca64d..20ecd6a5d3 100644 --- a/packages/lib/server/service/membershipService.ts +++ b/packages/lib/server/service/membershipService.ts @@ -1,7 +1,6 @@ +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; import { MembershipRole } from "@calcom/prisma/enums"; -import { MembershipRepository } from "../repository/membership"; - export type MembershipCheckResult = { isMember: boolean; isAdmin: boolean; diff --git a/packages/lib/server/service/workflows.test.ts b/packages/lib/server/service/workflows.test.ts index 07f098c8b6..55ca7bd504 100644 --- a/packages/lib/server/service/workflows.test.ts +++ b/packages/lib/server/service/workflows.test.ts @@ -1,20 +1,20 @@ import { describe, expect, vi, beforeEach } from "vitest"; +import { scheduleWorkflowReminders } from "@calcom/features/ee/workflows/lib/reminders/reminderScheduler"; import { tasker } from "@calcom/features/tasker"; import { WorkflowTriggerEvents, WorkflowActions, WorkflowTemplates } from "@calcom/prisma/enums"; import { test } from "@calcom/web/test/fixtures/fixtures"; -import { scheduleWorkflowReminders } from "../../../features/ee/workflows/lib/reminders/reminderScheduler"; import { WorkflowService } from "./workflows"; -vi.mock("../../../features/ee/workflows/lib/reminders/reminderScheduler"); +vi.mock("@calcom/features/ee/workflows/lib/reminders/reminderScheduler"); vi.mock("@calcom/features/tasker"); const mockScheduleWorkflowReminders = vi.mocked(scheduleWorkflowReminders); const mockTasker = vi.mocked(tasker); // Mock the getHideBranding function to return false -vi.mock("../../hideBranding", () => ({ +vi.mock("@calcom/features/profile/lib/hideBranding", () => ({ getHideBranding: vi.fn().mockResolvedValue(false), })); diff --git a/packages/lib/server/service/workflows.ts b/packages/lib/server/service/workflows.ts index 33cba1b5e2..4c41a6e223 100644 --- a/packages/lib/server/service/workflows.ts +++ b/packages/lib/server/service/workflows.ts @@ -2,14 +2,14 @@ import { getAllWorkflows } from "@calcom/ee/workflows/lib/getAllWorkflows"; import type { ScheduleWorkflowRemindersArgs } from "@calcom/ee/workflows/lib/reminders/reminderScheduler"; import { scheduleWorkflowReminders } from "@calcom/ee/workflows/lib/reminders/reminderScheduler"; import type { Workflow } from "@calcom/ee/workflows/lib/types"; +import { WorkflowRepository } from "@calcom/features/ee/workflows/repositories/WorkflowRepository"; +import { getHideBranding } from "@calcom/features/profile/lib/hideBranding"; import getOrgIdFromMemberOrTeamId from "@calcom/lib/getOrgIdFromMemberOrTeamId"; import { prisma } from "@calcom/prisma"; import { WorkflowTriggerEvents, WorkflowType } from "@calcom/prisma/enums"; import type { FORM_SUBMITTED_WEBHOOK_RESPONSES } from "@calcom/routing-forms/lib/formSubmissionUtils"; -import { getHideBranding } from "../../hideBranding"; import { TeamRepository } from "../repository/team"; -import { WorkflowRepository } from "../repository/workflow"; // TODO (Sean): Move most of the logic migrated in 16861 to this service export class WorkflowService { diff --git a/packages/lib/service/attribute/server/assignValueToUser.ts b/packages/lib/service/attribute/server/assignValueToUser.ts index b26933bee1..12d92245a2 100644 --- a/packages/lib/service/attribute/server/assignValueToUser.ts +++ b/packages/lib/service/attribute/server/assignValueToUser.ts @@ -1,10 +1,10 @@ +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import prisma from "@calcom/prisma"; import { PrismaAttributeOptionRepository } from "../../../server/repository/PrismaAttributeOptionRepository"; import { PrismaAttributeRepository } from "../../../server/repository/PrismaAttributeRepository"; -import { MembershipRepository } from "../../../server/repository/membership"; import type { AttributeId, AttributeName, BulkAttributeAssigner, AttributeOptionAssignment } from "../types"; import { doesSupportMultipleValues, diff --git a/packages/lib/service/attribute/server/getAttributes.ts b/packages/lib/service/attribute/server/getAttributes.ts index 4a721bcc96..be7378fe36 100644 --- a/packages/lib/service/attribute/server/getAttributes.ts +++ b/packages/lib/service/attribute/server/getAttributes.ts @@ -1,4 +1,5 @@ // TODO: Queries in this file are not optimized. Need to optimize them. +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import prisma from "@calcom/prisma"; @@ -7,7 +8,6 @@ import type { AttributeType } from "@calcom/prisma/enums"; import { PrismaAttributeRepository } from "../../../server/repository/PrismaAttributeRepository"; import { PrismaAttributeToUserRepository } from "../../../server/repository/PrismaAttributeToUserRepository"; -import { MembershipRepository } from "../../../server/repository/membership"; import type { AttributeId } from "../types"; type UserId = number; diff --git a/packages/platform/libraries/bookings.ts b/packages/platform/libraries/bookings.ts index 61a251e2fc..75b7b23163 100644 --- a/packages/platform/libraries/bookings.ts +++ b/packages/platform/libraries/bookings.ts @@ -1,5 +1,5 @@ export { LuckyUserService } from "@calcom/features/bookings/lib/getLuckyUser"; -export { CheckBookingLimitsService } from "@calcom/lib/intervalLimits/server/checkBookingLimits"; +export { CheckBookingLimitsService } from "@calcom/features/bookings/lib/checkBookingLimits"; export { CheckBookingAndDurationLimitsService } from "@calcom/features/bookings/lib/handleNewBooking/checkBookingAndDurationLimits"; export { RegularBookingService } from "@calcom/features/bookings/lib/handleNewBooking"; export { RecurringBookingService } from "@calcom/features/bookings/lib/handleNewRecurringBooking"; diff --git a/packages/platform/libraries/index.ts b/packages/platform/libraries/index.ts index b512dc9e76..891977dc89 100644 --- a/packages/platform/libraries/index.ts +++ b/packages/platform/libraries/index.ts @@ -127,5 +127,5 @@ export { sendEmailVerificationByCode } from "@calcom/features/auth/lib/verifyEma export { checkEmailVerificationRequired } from "@calcom/trpc/server/routers/publicViewer/checkIfUserEmailVerificationRequired.handler"; -export { TeamService } from "@calcom/lib/server/service/teamService"; +export { TeamService } from "@calcom/features/ee/teams/services/teamService"; export { CacheService } from "@calcom/features/calendar-cache/lib/getShouldServeCache"; diff --git a/packages/platform/libraries/repositories.ts b/packages/platform/libraries/repositories.ts index 50d550f270..91e5270e17 100644 --- a/packages/platform/libraries/repositories.ts +++ b/packages/platform/libraries/repositories.ts @@ -1,12 +1,12 @@ export { PrismaAttributeRepository } from "@calcom/lib/server/repository/PrismaAttributeRepository"; export { PrismaOOORepository } from "@calcom/lib/server/repository/ooo"; export { ScheduleRepository as PrismaScheduleRepository } from "@calcom/lib/server/repository/schedule"; -export { BookingRepository as PrismaBookingRepository } from "@calcom/lib/server/repository/booking"; -export { EventTypeRepository as PrismaEventTypeRepository } from "@calcom/lib/server/repository/eventTypeRepository"; +export { BookingRepository as PrismaBookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; +export { EventTypeRepository as PrismaEventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository"; export { RoutingFormResponseRepository as PrismaRoutingFormResponseRepository } from "@calcom/lib/server/repository/formResponse"; export { PrismaSelectedSlotRepository } from "@calcom/lib/server/repository/PrismaSelectedSlotRepository"; export { TeamRepository as PrismaTeamRepository } from "@calcom/lib/server/repository/team"; -export { UserRepository as PrismaUserRepository } from "@calcom/lib/server/repository/user"; +export { UserRepository as PrismaUserRepository } from "@calcom/features/users/repositories/UserRepository"; export { FeaturesRepository as PrismaFeaturesRepository } from "@calcom/features/flags/features.repository"; -export { MembershipRepository as PrismaMembershipRepository } from "@calcom/lib/server/repository/membership"; +export { MembershipRepository as PrismaMembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; export { HostRepository as PrismaHostRepository } from "@calcom/lib/server/repository/host"; diff --git a/packages/platform/libraries/slots.ts b/packages/platform/libraries/slots.ts index dc79d4873e..e4679c1e53 100644 --- a/packages/platform/libraries/slots.ts +++ b/packages/platform/libraries/slots.ts @@ -1,7 +1,7 @@ import { validateRoundRobinSlotAvailability } from "@calcom/features/ee/round-robin/utils/validateRoundRobinSlotAvailability"; import { FilterHostsService } from "@calcom/features/bookings/lib/host-filtering/filterHostsBySameRoundRobinHost"; import { QualifiedHostsService } from "@calcom/features/bookings/lib/host-filtering/findQualifiedHostsWithDelegationCredentials"; -import { BusyTimesService } from "@calcom/lib/getBusyTimes"; +import { BusyTimesService } from "@calcom/features/busyTimes/services/getBusyTimes"; import { NoSlotsNotificationService } from "@calcom/trpc/server/routers/viewer/slots/handleNotificationWhenNoSlots"; import { AvailableSlotsService } from "@calcom/trpc/server/routers/viewer/slots/util"; diff --git a/packages/trpc/server/middlewares/sessionMiddleware.ts b/packages/trpc/server/middlewares/sessionMiddleware.ts index 98ec403af9..d6589366e6 100644 --- a/packages/trpc/server/middlewares/sessionMiddleware.ts +++ b/packages/trpc/server/middlewares/sessionMiddleware.ts @@ -4,8 +4,8 @@ import type { Session } from "next-auth"; import { WEBAPP_URL } from "@calcom/lib/constants"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; -import { ProfileRepository } from "@calcom/lib/server/repository/profile"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { ProfileRepository } from "@calcom/features/profile/repositories/ProfileRepository"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import prisma from "@calcom/prisma"; import { teamMetadataSchema, userMetadata } from "@calcom/prisma/zod-utils"; diff --git a/packages/trpc/server/routers/apps/routing-forms/getAttributesForTeam.handler.ts b/packages/trpc/server/routers/apps/routing-forms/getAttributesForTeam.handler.ts index 9d06163d0b..2bf921432f 100644 --- a/packages/trpc/server/routers/apps/routing-forms/getAttributesForTeam.handler.ts +++ b/packages/trpc/server/routers/apps/routing-forms/getAttributesForTeam.handler.ts @@ -1,4 +1,4 @@ -import { MembershipRepository } from "@calcom/lib/server/repository/membership"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; import { getAttributesForTeam } from "@calcom/lib/service/attribute/server/getAttributes"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; diff --git a/packages/trpc/server/routers/apps/routing-forms/getResponseWithFormFields.handler.ts b/packages/trpc/server/routers/apps/routing-forms/getResponseWithFormFields.handler.ts index 4c71003351..cc42660251 100644 --- a/packages/trpc/server/routers/apps/routing-forms/getResponseWithFormFields.handler.ts +++ b/packages/trpc/server/routers/apps/routing-forms/getResponseWithFormFields.handler.ts @@ -82,7 +82,7 @@ async function getResponseWithFormFieldsHandler({ ctx, input }: GetResponseWithF }); } - const { UserRepository } = await import("@calcom/lib/server/repository/user"); + const { UserRepository } = await import("@calcom/features/users/repositories/UserRepository"); const userRepo = new UserRepository(prisma); const formWithUserProfile = { ...form, diff --git a/packages/trpc/server/routers/publicViewer/event.handler.ts b/packages/trpc/server/routers/publicViewer/event.handler.ts index 1902468fec..20d7944429 100644 --- a/packages/trpc/server/routers/publicViewer/event.handler.ts +++ b/packages/trpc/server/routers/publicViewer/event.handler.ts @@ -1,4 +1,4 @@ -import { EventRepository } from "@calcom/lib/server/repository/event"; +import { EventRepository } from "@calcom/features/eventtypes/repositories/EventRepository"; import type { TEventInputSchema } from "./event.schema"; diff --git a/packages/trpc/server/routers/viewer/admin/whitelistUserWorkflows.handler.ts b/packages/trpc/server/routers/viewer/admin/whitelistUserWorkflows.handler.ts index 0d92a279b5..8e1ff88e45 100644 --- a/packages/trpc/server/routers/viewer/admin/whitelistUserWorkflows.handler.ts +++ b/packages/trpc/server/routers/viewer/admin/whitelistUserWorkflows.handler.ts @@ -1,4 +1,4 @@ -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import prisma from "@calcom/prisma"; import type { TrpcSessionUser } from "../../../types"; diff --git a/packages/trpc/server/routers/viewer/aiVoiceAgent/listCalls.handler.ts b/packages/trpc/server/routers/viewer/aiVoiceAgent/listCalls.handler.ts index 305ca30870..e66ce00aea 100644 --- a/packages/trpc/server/routers/viewer/aiVoiceAgent/listCalls.handler.ts +++ b/packages/trpc/server/routers/viewer/aiVoiceAgent/listCalls.handler.ts @@ -1,7 +1,7 @@ import { createDefaultAIPhoneServiceProvider } from "@calcom/features/calAIPhone"; import logger from "@calcom/lib/logger"; import { CalAiPhoneNumberRepository } from "@calcom/lib/server/repository/calAiPhoneNumber"; -import { MembershipRepository } from "@calcom/lib/server/repository/membership"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; import { MembershipRole } from "@calcom/prisma/enums"; import { TRPCError } from "@trpc/server"; diff --git a/packages/trpc/server/routers/viewer/apps/appCredentialsByType.handler.ts b/packages/trpc/server/routers/viewer/apps/appCredentialsByType.handler.ts index 31463bd8c1..0d1a260356 100644 --- a/packages/trpc/server/routers/viewer/apps/appCredentialsByType.handler.ts +++ b/packages/trpc/server/routers/viewer/apps/appCredentialsByType.handler.ts @@ -1,5 +1,5 @@ import { getAllDelegationCredentialsForUserByAppType } from "@calcom/app-store/delegationCredential"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { prisma } from "@calcom/prisma"; import { safeCredentialSelect } from "@calcom/prisma/selects/credential"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; diff --git a/packages/trpc/server/routers/viewer/attributes/findTeamMembersMatchingAttributeLogic.handler.ts b/packages/trpc/server/routers/viewer/attributes/findTeamMembersMatchingAttributeLogic.handler.ts index 887509fe1e..026dd06f4a 100644 --- a/packages/trpc/server/routers/viewer/attributes/findTeamMembersMatchingAttributeLogic.handler.ts +++ b/packages/trpc/server/routers/viewer/attributes/findTeamMembersMatchingAttributeLogic.handler.ts @@ -2,7 +2,7 @@ import type { ServerResponse } from "http"; import type { NextApiResponse } from "next"; import { findTeamMembersMatchingAttributeLogic } from "@calcom/app-store/_utils/raqb/findTeamMembersMatchingAttributeLogic"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import type { PrismaClient } from "@calcom/prisma"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; diff --git a/packages/trpc/server/routers/viewer/availability/team/listTeamAvailability.handler.ts b/packages/trpc/server/routers/viewer/availability/team/listTeamAvailability.handler.ts index f9af41c7e1..4923c8d6d8 100644 --- a/packages/trpc/server/routers/viewer/availability/team/listTeamAvailability.handler.ts +++ b/packages/trpc/server/routers/viewer/availability/team/listTeamAvailability.handler.ts @@ -2,7 +2,7 @@ import type { Dayjs } from "@calcom/dayjs"; import dayjs from "@calcom/dayjs"; import type { DateRange } from "@calcom/lib/date-ranges"; import { buildDateRanges } from "@calcom/lib/date-ranges"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { prisma } from "@calcom/prisma"; import { Prisma } from "@calcom/prisma/client"; diff --git a/packages/trpc/server/routers/viewer/bookings/confirm.handler.ts b/packages/trpc/server/routers/viewer/bookings/confirm.handler.ts index 428b0961ea..ca0d5f827d 100644 --- a/packages/trpc/server/routers/viewer/bookings/confirm.handler.ts +++ b/packages/trpc/server/routers/viewer/bookings/confirm.handler.ts @@ -10,7 +10,7 @@ import { processPaymentRefund } from "@calcom/features/bookings/lib/payment/proc import { workflowSelect } from "@calcom/features/ee/workflows/lib/getAllWorkflows"; import type { GetSubscriberOptions } from "@calcom/features/webhooks/lib/getWebhooks"; import type { EventPayloadType, EventTypeInfo } from "@calcom/features/webhooks/lib/sendPayload"; -import { getBookerBaseUrl } from "@calcom/lib/getBookerUrl/server"; +import { getBookerBaseUrl } from "@calcom/features/ee/organizations/lib/getBookerUrlServer"; import getOrgIdFromMemberOrTeamId from "@calcom/lib/getOrgIdFromMemberOrTeamId"; import { getTeamIdFromEventType } from "@calcom/lib/getTeamIdFromEventType"; import { isPrismaObjOrUndefined } from "@calcom/lib/isPrismaObj"; diff --git a/packages/trpc/server/routers/viewer/bookings/editLocation.handler.ts b/packages/trpc/server/routers/viewer/bookings/editLocation.handler.ts index 35f561ac7f..7ddc414d15 100644 --- a/packages/trpc/server/routers/viewer/bookings/editLocation.handler.ts +++ b/packages/trpc/server/routers/viewer/bookings/editLocation.handler.ts @@ -10,9 +10,9 @@ import { buildCalEventFromBooking } from "@calcom/lib/buildCalEventFromBooking"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import { getTranslation } from "@calcom/lib/server/i18n"; -import { BookingRepository } from "@calcom/lib/server/repository/booking"; +import { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; import { CredentialRepository } from "@calcom/lib/server/repository/credential"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { prisma } from "@calcom/prisma"; import type { Booking, BookingReference } from "@calcom/prisma/client"; import type { userMetadata } from "@calcom/prisma/zod-utils"; diff --git a/packages/trpc/server/routers/viewer/bookings/requestReschedule.handler.ts b/packages/trpc/server/routers/viewer/bookings/requestReschedule.handler.ts index 19566ceed7..a41f304843 100644 --- a/packages/trpc/server/routers/viewer/bookings/requestReschedule.handler.ts +++ b/packages/trpc/server/routers/viewer/bookings/requestReschedule.handler.ts @@ -15,13 +15,13 @@ import { import sendPayload from "@calcom/features/webhooks/lib/sendOrSchedulePayload"; import { CalendarEventBuilder } from "@calcom/lib/builders/CalendarEvent/builder"; import { CalendarEventDirector } from "@calcom/lib/builders/CalendarEvent/director"; -import { getBookerBaseUrl } from "@calcom/lib/getBookerUrl/server"; +import { getBookerBaseUrl } from "@calcom/features/ee/organizations/lib/getBookerUrlServer"; import getOrgIdFromMemberOrTeamId from "@calcom/lib/getOrgIdFromMemberOrTeamId"; import { getTeamIdFromEventType } from "@calcom/lib/getTeamIdFromEventType"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import { getTranslation } from "@calcom/lib/server/i18n"; -import { WorkflowRepository } from "@calcom/lib/server/repository/workflow"; +import { WorkflowRepository } from "@calcom/features/ee/workflows/repositories/WorkflowRepository"; import { BookingWebhookFactory } from "@calcom/lib/server/service/BookingWebhookFactory"; import { prisma } from "@calcom/prisma"; import type { BookingReference, EventType } from "@calcom/prisma/client"; diff --git a/packages/trpc/server/routers/viewer/credits/buyCredits.handler.ts b/packages/trpc/server/routers/viewer/credits/buyCredits.handler.ts index 739081aaa3..5d578dced6 100644 --- a/packages/trpc/server/routers/viewer/credits/buyCredits.handler.ts +++ b/packages/trpc/server/routers/viewer/credits/buyCredits.handler.ts @@ -1,9 +1,9 @@ import { StripeBillingService } from "@calcom/features/ee/billing/stripe-billling-service"; import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; import { WEBAPP_URL } from "@calcom/lib/constants"; -import { MembershipRepository } from "@calcom/lib/server/repository/membership"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; import { TeamRepository } from "@calcom/lib/server/repository/team"; -import { TeamService } from "@calcom/lib/server/service/teamService"; +import { TeamService } from "@calcom/features/ee/teams/services/teamService"; import prisma from "@calcom/prisma"; import { MembershipRole } from "@calcom/prisma/enums"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; diff --git a/packages/trpc/server/routers/viewer/credits/downloadExpenseLog.handler.ts b/packages/trpc/server/routers/viewer/credits/downloadExpenseLog.handler.ts index c88e62e6f4..2a50b81f10 100644 --- a/packages/trpc/server/routers/viewer/credits/downloadExpenseLog.handler.ts +++ b/packages/trpc/server/routers/viewer/credits/downloadExpenseLog.handler.ts @@ -1,6 +1,6 @@ import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; import { CreditsRepository } from "@calcom/lib/server/repository/credits"; -import { TeamService } from "@calcom/lib/server/service/teamService"; +import { TeamService } from "@calcom/features/ee/teams/services/teamService"; import { MembershipRole } from "@calcom/prisma/enums"; import { TRPCError } from "@trpc/server"; diff --git a/packages/trpc/server/routers/viewer/credits/getAllCredits.handler.ts b/packages/trpc/server/routers/viewer/credits/getAllCredits.handler.ts index 5f12ac598b..a65d56bf3b 100644 --- a/packages/trpc/server/routers/viewer/credits/getAllCredits.handler.ts +++ b/packages/trpc/server/routers/viewer/credits/getAllCredits.handler.ts @@ -1,6 +1,6 @@ import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; -import { MembershipRepository } from "@calcom/lib/server/repository/membership"; -import { TeamService } from "@calcom/lib/server/service/teamService"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; +import { TeamService } from "@calcom/features/ee/teams/services/teamService"; import { MembershipRole } from "@calcom/prisma/enums"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; diff --git a/packages/trpc/server/routers/viewer/delegationCredential/getAffectedMembersForDisable.handler.ts b/packages/trpc/server/routers/viewer/delegationCredential/getAffectedMembersForDisable.handler.ts index 5dcdbf086e..25ac9ced68 100644 --- a/packages/trpc/server/routers/viewer/delegationCredential/getAffectedMembersForDisable.handler.ts +++ b/packages/trpc/server/routers/viewer/delegationCredential/getAffectedMembersForDisable.handler.ts @@ -1,6 +1,6 @@ import logger from "@calcom/lib/logger"; import { DelegationCredentialRepository } from "@calcom/lib/server/repository/delegationCredential"; -import { MembershipRepository } from "@calcom/lib/server/repository/membership"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; import type { TDelegationCredentialGetAffectedMembersForDisableSchema } from "./schema"; diff --git a/packages/trpc/server/routers/viewer/eventTypes/__tests__/getUserEventGroups.test.ts b/packages/trpc/server/routers/viewer/eventTypes/__tests__/getUserEventGroups.test.ts index 375e304f92..4ca612ab3e 100644 --- a/packages/trpc/server/routers/viewer/eventTypes/__tests__/getUserEventGroups.test.ts +++ b/packages/trpc/server/routers/viewer/eventTypes/__tests__/getUserEventGroups.test.ts @@ -12,13 +12,13 @@ vi.mock("@calcom/lib/checkRateLimitAndThrowError", () => ({ checkRateLimitAndThrowError: vi.fn(), })); -vi.mock("@calcom/lib/server/repository/membership", () => ({ +vi.mock("@calcom/features/membership/repositories/MembershipRepository", () => ({ MembershipRepository: { findAllByUpIdIncludeTeam: vi.fn(), }, })); -vi.mock("@calcom/lib/server/repository/profile", () => ({ +vi.mock("@calcom/features/profile/repositories/ProfileRepository", () => ({ ProfileRepository: { findByUpId: vi.fn(), }, @@ -32,11 +32,11 @@ vi.mock("../teamAccessUseCase", () => ({ })), })); -vi.mock("@calcom/lib/getBookerUrl/server", () => ({ +vi.mock("@calcom/features/ee/organizations/lib/getBookerUrlServer", () => ({ getBookerBaseUrl: vi.fn().mockResolvedValue("https://cal.com"), })); -vi.mock("@calcom/lib/getBookerUrl/client", () => ({ +vi.mock("@calcom/features/ee/organizations/lib/getBookerBaseUrlSync", () => ({ getBookerBaseUrlSync: vi.fn().mockReturnValue("https://cal.com"), })); @@ -68,7 +68,11 @@ describe("getUserEventGroups", () => { organizationId: null, organization: null, } as unknown as NonNullable< - Awaited> + Awaited< + ReturnType< + typeof import("@calcom/features/profile/repositories/ProfileRepository").ProfileRepository.findByUpId + > + > >; const mockCtx = { @@ -82,7 +86,7 @@ describe("getUserEventGroups", () => { describe("Basic functionality", () => { it("should throw TRPCError when profile is not found", async () => { - const { ProfileRepository } = await import("@calcom/lib/server/repository/profile"); + const { ProfileRepository } = await import("@calcom/features/profile/repositories/ProfileRepository"); vi.mocked(ProfileRepository.findByUpId).mockResolvedValue(null); await expect( @@ -94,8 +98,10 @@ describe("getUserEventGroups", () => { }); it("should return user event groups when no filters are applied", async () => { - const { ProfileRepository } = await import("@calcom/lib/server/repository/profile"); - const { MembershipRepository } = await import("@calcom/lib/server/repository/membership"); + const { ProfileRepository } = await import("@calcom/features/profile/repositories/ProfileRepository"); + const { MembershipRepository } = await import( + "@calcom/features/membership/repositories/MembershipRepository" + ); vi.mocked(ProfileRepository.findByUpId).mockResolvedValue(mockProfile); vi.mocked(MembershipRepository.findAllByUpIdIncludeTeam).mockResolvedValue([]); @@ -122,8 +128,10 @@ describe("getUserEventGroups", () => { describe("Team memberships", () => { it("should include team events when team memberships exist", async () => { - const { ProfileRepository } = await import("@calcom/lib/server/repository/profile"); - const { MembershipRepository } = await import("@calcom/lib/server/repository/membership"); + const { ProfileRepository } = await import("@calcom/features/profile/repositories/ProfileRepository"); + const { MembershipRepository } = await import( + "@calcom/features/membership/repositories/MembershipRepository" + ); const { getResourcePermissions } = await import("@calcom/features/pbac/lib/resource-permissions"); const mockTeamMembership = { @@ -148,7 +156,7 @@ describe("getUserEventGroups", () => { } as unknown as NonNullable< Awaited< ReturnType< - typeof import("@calcom/lib/server/repository/membership").MembershipRepository.findAllByUpIdIncludeTeam + typeof import("@calcom/features/membership/repositories/MembershipRepository").MembershipRepository.findAllByUpIdIncludeTeam > > >[0]; @@ -182,8 +190,10 @@ describe("getUserEventGroups", () => { describe("Permissions", () => { it("should handle PBAC permissions correctly", async () => { - const { ProfileRepository } = await import("@calcom/lib/server/repository/profile"); - const { MembershipRepository } = await import("@calcom/lib/server/repository/membership"); + const { ProfileRepository } = await import("@calcom/features/profile/repositories/ProfileRepository"); + const { MembershipRepository } = await import( + "@calcom/features/membership/repositories/MembershipRepository" + ); const { getResourcePermissions } = await import("@calcom/features/pbac/lib/resource-permissions"); const mockTeamMembership = { @@ -208,7 +218,7 @@ describe("getUserEventGroups", () => { } as unknown as NonNullable< Awaited< ReturnType< - typeof import("@calcom/lib/server/repository/membership").MembershipRepository.findAllByUpIdIncludeTeam + typeof import("@calcom/features/membership/repositories/MembershipRepository").MembershipRepository.findAllByUpIdIncludeTeam > > >[0]; @@ -236,8 +246,10 @@ describe("getUserEventGroups", () => { }); it("should fallback to role-based permissions when PBAC fails", async () => { - const { ProfileRepository } = await import("@calcom/lib/server/repository/profile"); - const { MembershipRepository } = await import("@calcom/lib/server/repository/membership"); + const { ProfileRepository } = await import("@calcom/features/profile/repositories/ProfileRepository"); + const { MembershipRepository } = await import( + "@calcom/features/membership/repositories/MembershipRepository" + ); const { getResourcePermissions } = await import("@calcom/features/pbac/lib/resource-permissions"); const mockTeamMembership = { @@ -262,7 +274,7 @@ describe("getUserEventGroups", () => { } as unknown as NonNullable< Awaited< ReturnType< - typeof import("@calcom/lib/server/repository/membership").MembershipRepository.findAllByUpIdIncludeTeam + typeof import("@calcom/features/membership/repositories/MembershipRepository").MembershipRepository.findAllByUpIdIncludeTeam > > >[0]; @@ -288,8 +300,10 @@ describe("getUserEventGroups", () => { describe("Organization handling", () => { it("should handle organization locked event types", async () => { - const { ProfileRepository } = await import("@calcom/lib/server/repository/profile"); - const { MembershipRepository } = await import("@calcom/lib/server/repository/membership"); + const { ProfileRepository } = await import("@calcom/features/profile/repositories/ProfileRepository"); + const { MembershipRepository } = await import( + "@calcom/features/membership/repositories/MembershipRepository" + ); const mockProfileWithOrg = { ...mockProfile, @@ -300,7 +314,9 @@ describe("getUserEventGroups", () => { }, } as unknown as NonNullable< Awaited< - ReturnType + ReturnType< + typeof import("@calcom/features/profile/repositories/ProfileRepository").ProfileRepository.findByUpId + > > >; @@ -319,8 +335,10 @@ describe("getUserEventGroups", () => { describe("Routing forms", () => { it("should handle routing forms slug format", async () => { - const { ProfileRepository } = await import("@calcom/lib/server/repository/profile"); - const { MembershipRepository } = await import("@calcom/lib/server/repository/membership"); + const { ProfileRepository } = await import("@calcom/features/profile/repositories/ProfileRepository"); + const { MembershipRepository } = await import( + "@calcom/features/membership/repositories/MembershipRepository" + ); const { getResourcePermissions } = await import("@calcom/features/pbac/lib/resource-permissions"); const mockTeamMembership = { @@ -345,7 +363,7 @@ describe("getUserEventGroups", () => { } as unknown as NonNullable< Awaited< ReturnType< - typeof import("@calcom/lib/server/repository/membership").MembershipRepository.findAllByUpIdIncludeTeam + typeof import("@calcom/features/membership/repositories/MembershipRepository").MembershipRepository.findAllByUpIdIncludeTeam > > >[0]; diff --git a/packages/trpc/server/routers/viewer/eventTypes/getActiveOnOptions.handler.ts b/packages/trpc/server/routers/viewer/eventTypes/getActiveOnOptions.handler.ts index b6f3f1321f..2ca02a0a20 100644 --- a/packages/trpc/server/routers/viewer/eventTypes/getActiveOnOptions.handler.ts +++ b/packages/trpc/server/routers/viewer/eventTypes/getActiveOnOptions.handler.ts @@ -1,8 +1,8 @@ +import { EventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; +import { ProfileRepository } from "@calcom/features/profile/repositories/ProfileRepository"; import { checkRateLimitAndThrowError } from "@calcom/lib/checkRateLimitAndThrowError"; import { PrismaRoutingFormRepository } from "@calcom/lib/server/repository/PrismaRoutingFormRepository"; -import { EventTypeRepository } from "@calcom/lib/server/repository/eventTypeRepository"; -import { MembershipRepository } from "@calcom/lib/server/repository/membership"; -import { ProfileRepository } from "@calcom/lib/server/repository/profile"; import type { PrismaClient } from "@calcom/prisma"; import { MembershipRole, SchedulingType } from "@calcom/prisma/enums"; import { teamMetadataSchema } from "@calcom/prisma/zod-utils"; diff --git a/packages/trpc/server/routers/viewer/eventTypes/getEventTypesFromGroup.handler.ts b/packages/trpc/server/routers/viewer/eventTypes/getEventTypesFromGroup.handler.ts index 853f3edd39..9c92be1b29 100644 --- a/packages/trpc/server/routers/viewer/eventTypes/getEventTypesFromGroup.handler.ts +++ b/packages/trpc/server/routers/viewer/eventTypes/getEventTypesFromGroup.handler.ts @@ -1,7 +1,7 @@ import { hasFilter } from "@calcom/features/filters/lib/hasFilter"; import { checkRateLimitAndThrowError } from "@calcom/lib/checkRateLimitAndThrowError"; import logger from "@calcom/lib/logger"; -import { EventTypeRepository } from "@calcom/lib/server/repository/eventTypeRepository"; +import { EventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository"; import { prisma } from "@calcom/prisma"; import type { PrismaClient } from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; diff --git a/packages/trpc/server/routers/viewer/eventTypes/getUserEventGroups.handler.ts b/packages/trpc/server/routers/viewer/eventTypes/getUserEventGroups.handler.ts index 26acbfc3fc..1d2a82c7b1 100644 --- a/packages/trpc/server/routers/viewer/eventTypes/getUserEventGroups.handler.ts +++ b/packages/trpc/server/routers/viewer/eventTypes/getUserEventGroups.handler.ts @@ -1,7 +1,7 @@ import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; import { checkRateLimitAndThrowError } from "@calcom/lib/checkRateLimitAndThrowError"; -import { MembershipRepository } from "@calcom/lib/server/repository/membership"; -import { ProfileRepository } from "@calcom/lib/server/repository/profile"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; +import { ProfileRepository } from "@calcom/features/profile/repositories/ProfileRepository"; import type { PrismaClient } from "@calcom/prisma"; import { MembershipRole } from "@calcom/prisma/enums"; diff --git a/packages/trpc/server/routers/viewer/eventTypes/heavy/create.handler.ts b/packages/trpc/server/routers/viewer/eventTypes/heavy/create.handler.ts index d1ab682fc2..509e7dfa2d 100644 --- a/packages/trpc/server/routers/viewer/eventTypes/heavy/create.handler.ts +++ b/packages/trpc/server/routers/viewer/eventTypes/heavy/create.handler.ts @@ -3,7 +3,7 @@ import type { z } from "zod"; import { getDefaultLocations } from "@calcom/app-store/_utils/getDefaultLocations"; import { DailyLocationType } from "@calcom/app-store/constants"; import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; -import { EventTypeRepository } from "@calcom/lib/server/repository/eventTypeRepository"; +import { EventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository"; import type { PrismaClient } from "@calcom/prisma"; import { Prisma } from "@calcom/prisma/client"; import { MembershipRole, SchedulingType } from "@calcom/prisma/enums"; diff --git a/packages/trpc/server/routers/viewer/eventTypes/heavy/duplicate.handler.test.ts b/packages/trpc/server/routers/viewer/eventTypes/heavy/duplicate.handler.test.ts index c6b05becd5..d99004bf01 100644 --- a/packages/trpc/server/routers/viewer/eventTypes/heavy/duplicate.handler.test.ts +++ b/packages/trpc/server/routers/viewer/eventTypes/heavy/duplicate.handler.test.ts @@ -10,7 +10,7 @@ import { duplicateHandler } from "./duplicate.handler"; vi.mock("@calcom/prisma", () => ({ default: prismaMock, })); -vi.mock("@calcom/lib/server/repository/eventTypeRepository"); +vi.mock("@calcom/features/eventtypes/repositories/eventTypeRepository"); describe("duplicateHandler", () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -24,7 +24,9 @@ describe("duplicateHandler", () => { }); it("should throw BAD_REQUEST in case of unique constraint violation", async () => { - const { EventTypeRepository } = await import("@calcom/lib/server/repository/eventTypeRepository"); + const { EventTypeRepository } = await import( + "@calcom/features/eventtypes/repositories/eventTypeRepository" + ); vi.mocked(EventTypeRepository).mockImplementation( () => ({ diff --git a/packages/trpc/server/routers/viewer/eventTypes/heavy/duplicate.handler.ts b/packages/trpc/server/routers/viewer/eventTypes/heavy/duplicate.handler.ts index 8a1af0bd0e..bf26c9c6c2 100644 --- a/packages/trpc/server/routers/viewer/eventTypes/heavy/duplicate.handler.ts +++ b/packages/trpc/server/routers/viewer/eventTypes/heavy/duplicate.handler.ts @@ -1,6 +1,6 @@ import { generateHashedLink } from "@calcom/lib/generateHashedLink"; import { CalVideoSettingsRepository } from "@calcom/lib/server/repository/calVideoSettings"; -import { EventTypeRepository } from "@calcom/lib/server/repository/eventTypeRepository"; +import { EventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository"; import { prisma } from "@calcom/prisma"; import { Prisma } from "@calcom/prisma/client"; diff --git a/packages/trpc/server/routers/viewer/eventTypes/heavy/update.handler.ts b/packages/trpc/server/routers/viewer/eventTypes/heavy/update.handler.ts index 2868f017ae..a019e9cb27 100644 --- a/packages/trpc/server/routers/viewer/eventTypes/heavy/update.handler.ts +++ b/packages/trpc/server/routers/viewer/eventTypes/heavy/update.handler.ts @@ -14,7 +14,7 @@ import logger from "@calcom/lib/logger"; import { getTranslation } from "@calcom/lib/server/i18n"; import { CalVideoSettingsRepository } from "@calcom/lib/server/repository/calVideoSettings"; import { HashedLinkRepository } from "@calcom/lib/server/repository/hashedLinkRepository"; -import { MembershipRepository } from "@calcom/lib/server/repository/membership"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; import { ScheduleRepository } from "@calcom/lib/server/repository/schedule"; import { HashedLinkService } from "@calcom/lib/server/service/hashedLinkService"; import { validateBookerLayouts } from "@calcom/lib/validateBookerLayouts"; diff --git a/packages/trpc/server/routers/viewer/eventTypes/usecases/EventGroupBuilder.ts b/packages/trpc/server/routers/viewer/eventTypes/usecases/EventGroupBuilder.ts index 0f8c47a3d5..4d4fcf34c4 100644 --- a/packages/trpc/server/routers/viewer/eventTypes/usecases/EventGroupBuilder.ts +++ b/packages/trpc/server/routers/viewer/eventTypes/usecases/EventGroupBuilder.ts @@ -1,5 +1,5 @@ -import type { MembershipRepository } from "@calcom/lib/server/repository/membership"; -import type { ProfileRepository } from "@calcom/lib/server/repository/profile"; +import type { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; +import type { ProfileRepository } from "@calcom/features/profile/repositories/ProfileRepository"; import { teamMetadataSchema } from "@calcom/prisma/zod-utils"; import type { TeamAccessUseCase } from "../teamAccessUseCase"; diff --git a/packages/trpc/server/routers/viewer/eventTypes/util.ts b/packages/trpc/server/routers/viewer/eventTypes/util.ts index db92c61e50..9f459128e7 100644 --- a/packages/trpc/server/routers/viewer/eventTypes/util.ts +++ b/packages/trpc/server/routers/viewer/eventTypes/util.ts @@ -3,8 +3,8 @@ import { z } from "zod"; import type { PermissionString } from "@calcom/features/pbac/domain/types/permission-registry"; import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; import { markdownToSafeHTML } from "@calcom/lib/markdownToSafeHTML"; -import type { EventTypeRepository } from "@calcom/lib/server/repository/eventTypeRepository"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import type { EventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import prisma from "@calcom/prisma"; import type { MembershipRole } from "@calcom/prisma/enums"; import { PeriodType } from "@calcom/prisma/enums"; diff --git a/packages/trpc/server/routers/viewer/eventTypes/utils/transformUtils.ts b/packages/trpc/server/routers/viewer/eventTypes/utils/transformUtils.ts index f4dc094037..fc7b32415f 100644 --- a/packages/trpc/server/routers/viewer/eventTypes/utils/transformUtils.ts +++ b/packages/trpc/server/routers/viewer/eventTypes/utils/transformUtils.ts @@ -1,7 +1,7 @@ import { getPlaceholderAvatar } from "@calcom/lib/defaultAvatarImage"; import { getUserAvatarUrl } from "@calcom/lib/getAvatarUrl"; -import { getBookerBaseUrlSync } from "@calcom/lib/getBookerUrl/client"; -import { getBookerBaseUrl } from "@calcom/lib/getBookerUrl/server"; +import { getBookerBaseUrlSync } from "@calcom/features/ee/organizations/lib/getBookerBaseUrlSync"; +import { getBookerBaseUrl } from "@calcom/features/ee/organizations/lib/getBookerUrlServer"; import type { MembershipRole } from "@calcom/prisma/enums"; import { teamMetadataSchema } from "@calcom/prisma/zod-utils"; diff --git a/packages/trpc/server/routers/viewer/filterSegments/_router.tsx b/packages/trpc/server/routers/viewer/filterSegments/_router.tsx index 8d5a4fdb0a..53a6fefa19 100644 --- a/packages/trpc/server/routers/viewer/filterSegments/_router.tsx +++ b/packages/trpc/server/routers/viewer/filterSegments/_router.tsx @@ -4,7 +4,7 @@ import { ZListFilterSegmentsInputSchema, ZSetFilterSegmentPreferenceInputSchema, ZUpdateFilterSegmentInputSchema, -} from "@calcom/lib/server/repository/filterSegment.type"; +} from "@calcom/features/data-table/repositories/filterSegment.type"; import authedProcedure from "../../../procedures/authedProcedure"; import { router } from "../../../trpc"; diff --git a/packages/trpc/server/routers/viewer/filterSegments/create.handler.ts b/packages/trpc/server/routers/viewer/filterSegments/create.handler.ts index 2fe0fda168..376efd8776 100644 --- a/packages/trpc/server/routers/viewer/filterSegments/create.handler.ts +++ b/packages/trpc/server/routers/viewer/filterSegments/create.handler.ts @@ -1,5 +1,5 @@ -import { FilterSegmentRepository } from "@calcom/lib/server/repository/filterSegment"; -import type { TCreateFilterSegmentInputSchema } from "@calcom/lib/server/repository/filterSegment.type"; +import { FilterSegmentRepository } from "@calcom/features/data-table/repositories/filterSegment"; +import type { TCreateFilterSegmentInputSchema } from "@calcom/features/data-table/repositories/filterSegment.type"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; export const createFilterSegmentHandler = async ({ diff --git a/packages/trpc/server/routers/viewer/filterSegments/delete.handler.ts b/packages/trpc/server/routers/viewer/filterSegments/delete.handler.ts index e0bfa97ca9..be76c93d25 100644 --- a/packages/trpc/server/routers/viewer/filterSegments/delete.handler.ts +++ b/packages/trpc/server/routers/viewer/filterSegments/delete.handler.ts @@ -1,5 +1,5 @@ -import { FilterSegmentRepository } from "@calcom/lib/server/repository/filterSegment"; -import type { TDeleteFilterSegmentInputSchema } from "@calcom/lib/server/repository/filterSegment.type"; +import { FilterSegmentRepository } from "@calcom/features/data-table/repositories/filterSegment"; +import type { TDeleteFilterSegmentInputSchema } from "@calcom/features/data-table/repositories/filterSegment.type"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; export const deleteFilterSegmentHandler = async ({ diff --git a/packages/trpc/server/routers/viewer/filterSegments/list.handler.ts b/packages/trpc/server/routers/viewer/filterSegments/list.handler.ts index a70aa1af2a..fa1c76c163 100644 --- a/packages/trpc/server/routers/viewer/filterSegments/list.handler.ts +++ b/packages/trpc/server/routers/viewer/filterSegments/list.handler.ts @@ -1,5 +1,5 @@ -import { FilterSegmentRepository } from "@calcom/lib/server/repository/filterSegment"; -import type { TListFilterSegmentsInputSchema } from "@calcom/lib/server/repository/filterSegment.type"; +import { FilterSegmentRepository } from "@calcom/features/data-table/repositories/filterSegment"; +import type { TListFilterSegmentsInputSchema } from "@calcom/features/data-table/repositories/filterSegment.type"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; export const listHandler = async ({ diff --git a/packages/trpc/server/routers/viewer/filterSegments/preference.handler.ts b/packages/trpc/server/routers/viewer/filterSegments/preference.handler.ts index 5da5763d2c..0791bd8899 100644 --- a/packages/trpc/server/routers/viewer/filterSegments/preference.handler.ts +++ b/packages/trpc/server/routers/viewer/filterSegments/preference.handler.ts @@ -1,5 +1,5 @@ -import { FilterSegmentRepository } from "@calcom/lib/server/repository/filterSegment"; -import type { TSetFilterSegmentPreferenceInputSchema } from "@calcom/lib/server/repository/filterSegment.type"; +import { FilterSegmentRepository } from "@calcom/features/data-table/repositories/filterSegment"; +import type { TSetFilterSegmentPreferenceInputSchema } from "@calcom/features/data-table/repositories/filterSegment.type"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; export const setFilterSegmentPreferenceHandler = async ({ diff --git a/packages/trpc/server/routers/viewer/filterSegments/update.handler.ts b/packages/trpc/server/routers/viewer/filterSegments/update.handler.ts index 970ccac748..a4dab51f78 100644 --- a/packages/trpc/server/routers/viewer/filterSegments/update.handler.ts +++ b/packages/trpc/server/routers/viewer/filterSegments/update.handler.ts @@ -1,5 +1,5 @@ -import { FilterSegmentRepository } from "@calcom/lib/server/repository/filterSegment"; -import type { TUpdateFilterSegmentInputSchema } from "@calcom/lib/server/repository/filterSegment.type"; +import { FilterSegmentRepository } from "@calcom/features/data-table/repositories/filterSegment"; +import type { TUpdateFilterSegmentInputSchema } from "@calcom/features/data-table/repositories/filterSegment.type"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; export const updateFilterSegmentHandler = async ({ diff --git a/packages/trpc/server/routers/viewer/me/deleteMe.handler.ts b/packages/trpc/server/routers/viewer/me/deleteMe.handler.ts index b3f2c88162..170ca94cdb 100644 --- a/packages/trpc/server/routers/viewer/me/deleteMe.handler.ts +++ b/packages/trpc/server/routers/viewer/me/deleteMe.handler.ts @@ -1,6 +1,6 @@ import { ErrorCode } from "@calcom/features/auth/lib/ErrorCode"; import { verifyPassword } from "@calcom/features/auth/lib/verifyPassword"; -import { deleteUser } from "@calcom/features/users/lib/userDeletionService"; +import { deleteUser } from "@calcom/features/users/lib/deleteUser"; import { symmetricDecrypt } from "@calcom/lib/crypto"; import { HttpError } from "@calcom/lib/http-error"; import { totpAuthenticatorCheck } from "@calcom/lib/totp"; diff --git a/packages/trpc/server/routers/viewer/me/get.handler.ts b/packages/trpc/server/routers/viewer/me/get.handler.ts index b25f9228a7..7fcd011bc5 100644 --- a/packages/trpc/server/routers/viewer/me/get.handler.ts +++ b/packages/trpc/server/routers/viewer/me/get.handler.ts @@ -1,8 +1,8 @@ import type { Session } from "next-auth"; import { getUserAvatarUrl } from "@calcom/lib/getAvatarUrl"; -import { ProfileRepository } from "@calcom/lib/server/repository/profile"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { ProfileRepository } from "@calcom/features/profile/repositories/ProfileRepository"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import prisma from "@calcom/prisma"; import { IdentityProvider, MembershipRole } from "@calcom/prisma/enums"; import { userMetadata } from "@calcom/prisma/zod-utils"; diff --git a/packages/trpc/server/routers/viewer/me/myStats.handler.ts b/packages/trpc/server/routers/viewer/me/myStats.handler.ts index 40c8ba6dea..4238c85989 100644 --- a/packages/trpc/server/routers/viewer/me/myStats.handler.ts +++ b/packages/trpc/server/routers/viewer/me/myStats.handler.ts @@ -1,6 +1,6 @@ import type { Session } from "next-auth"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import prisma from "@calcom/prisma"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; diff --git a/packages/trpc/server/routers/viewer/me/platformMe.handler.ts b/packages/trpc/server/routers/viewer/me/platformMe.handler.ts index ea771010ac..15436e296c 100644 --- a/packages/trpc/server/routers/viewer/me/platformMe.handler.ts +++ b/packages/trpc/server/routers/viewer/me/platformMe.handler.ts @@ -1,6 +1,6 @@ import type { Session } from "next-auth"; -import { ProfileRepository } from "@calcom/lib/server/repository/profile"; +import { ProfileRepository } from "@calcom/features/profile/repositories/ProfileRepository"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; type MeOptions = { diff --git a/packages/trpc/server/routers/viewer/me/updateProfile.handler.ts b/packages/trpc/server/routers/viewer/me/updateProfile.handler.ts index b6ba852f8f..b7340e4366 100644 --- a/packages/trpc/server/routers/viewer/me/updateProfile.handler.ts +++ b/packages/trpc/server/routers/viewer/me/updateProfile.handler.ts @@ -10,7 +10,7 @@ import hasKeyInMetadata from "@calcom/lib/hasKeyInMetadata"; import { HttpError } from "@calcom/lib/http-error"; import logger from "@calcom/lib/logger"; import { uploadAvatar } from "@calcom/lib/server/avatar"; -import { checkUsername } from "@calcom/lib/server/checkUsername"; +import { checkUsername } from "@calcom/features/profile/lib/checkUsername"; import { getTranslation } from "@calcom/lib/server/i18n"; import { updateNewTeamMemberEventTypes } from "@calcom/features/ee/teams/lib/queries"; import { resizeBase64Image } from "@calcom/lib/server/resizeBase64Image"; diff --git a/packages/trpc/server/routers/viewer/organizations/adminGet.handler.ts b/packages/trpc/server/routers/viewer/organizations/adminGet.handler.ts index 7f23ab6b04..9fb740b782 100644 --- a/packages/trpc/server/routers/viewer/organizations/adminGet.handler.ts +++ b/packages/trpc/server/routers/viewer/organizations/adminGet.handler.ts @@ -1,4 +1,4 @@ -import { OrganizationRepository } from "@calcom/lib/server/repository/organization"; +import { OrganizationRepository } from "@calcom/features/ee/organizations/repositories/OrganizationRepository"; import type { TrpcSessionUser } from "../../../types"; import type { TAdminGet } from "./adminGet.schema"; diff --git a/packages/trpc/server/routers/viewer/organizations/adminVerify.handler.ts b/packages/trpc/server/routers/viewer/organizations/adminVerify.handler.ts index d6ed73327c..8444e4d5e7 100644 --- a/packages/trpc/server/routers/viewer/organizations/adminVerify.handler.ts +++ b/packages/trpc/server/routers/viewer/organizations/adminVerify.handler.ts @@ -1,4 +1,4 @@ -import { ProfileRepository } from "@calcom/lib/server/repository/profile"; +import { ProfileRepository } from "@calcom/features/profile/repositories/ProfileRepository"; import { prisma } from "@calcom/prisma"; import { TRPCError } from "@trpc/server"; diff --git a/packages/trpc/server/routers/viewer/organizations/bulkDeleteUsers.handler.ts b/packages/trpc/server/routers/viewer/organizations/bulkDeleteUsers.handler.ts index 694cede6bc..79010b0ab9 100644 --- a/packages/trpc/server/routers/viewer/organizations/bulkDeleteUsers.handler.ts +++ b/packages/trpc/server/routers/viewer/organizations/bulkDeleteUsers.handler.ts @@ -1,7 +1,7 @@ import { TeamBilling } from "@calcom/ee/billing/teams"; import { Resource, CustomAction } from "@calcom/features/pbac/domain/types/permission-registry"; import { getSpecificPermissions } from "@calcom/features/pbac/lib/resource-permissions"; -import { ProfileRepository } from "@calcom/lib/server/repository/profile"; +import { ProfileRepository } from "@calcom/features/profile/repositories/ProfileRepository"; import { prisma } from "@calcom/prisma"; import { MembershipRole } from "@calcom/prisma/enums"; diff --git a/packages/trpc/server/routers/viewer/organizations/create.handler.ts b/packages/trpc/server/routers/viewer/organizations/create.handler.ts index b4bb25507c..ff6e98fe15 100644 --- a/packages/trpc/server/routers/viewer/organizations/create.handler.ts +++ b/packages/trpc/server/routers/viewer/organizations/create.handler.ts @@ -12,8 +12,8 @@ import { } from "@calcom/lib/constants"; import { createDomain } from "@calcom/lib/domainManager/organization"; import { getTranslation } from "@calcom/lib/server/i18n"; -import { OrganizationRepository } from "@calcom/lib/server/repository/organization"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { OrganizationRepository } from "@calcom/features/ee/organizations/repositories/OrganizationRepository"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { prisma } from "@calcom/prisma"; import { UserPermissionRole } from "@calcom/prisma/enums"; diff --git a/packages/trpc/server/routers/viewer/organizations/createTeams.handler.ts b/packages/trpc/server/routers/viewer/organizations/createTeams.handler.ts index 99b57622ef..b008162c38 100644 --- a/packages/trpc/server/routers/viewer/organizations/createTeams.handler.ts +++ b/packages/trpc/server/routers/viewer/organizations/createTeams.handler.ts @@ -4,7 +4,7 @@ import stripe from "@calcom/features/ee/payments/server/stripe"; import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import slugify from "@calcom/lib/slugify"; import { prisma } from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; diff --git a/packages/trpc/server/routers/viewer/organizations/getBrand.handler.ts b/packages/trpc/server/routers/viewer/organizations/getBrand.handler.ts index f1828cd99c..4c62f9f30c 100644 --- a/packages/trpc/server/routers/viewer/organizations/getBrand.handler.ts +++ b/packages/trpc/server/routers/viewer/organizations/getBrand.handler.ts @@ -1,4 +1,4 @@ -import { getBrand } from "@calcom/lib/server/getBrand"; +import { getBrand } from "@calcom/features/ee/organizations/lib/getBrand"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; type VerifyCodeOptions = { diff --git a/packages/trpc/server/routers/viewer/organizations/list.handler.ts b/packages/trpc/server/routers/viewer/organizations/list.handler.ts index b6e64b0e69..924adc517b 100644 --- a/packages/trpc/server/routers/viewer/organizations/list.handler.ts +++ b/packages/trpc/server/routers/viewer/organizations/list.handler.ts @@ -1,5 +1,5 @@ import { FeaturesRepository } from "@calcom/features/flags/features.repository"; -import { OrganizationRepository } from "@calcom/lib/server/repository/organization"; +import { OrganizationRepository } from "@calcom/features/ee/organizations/repositories/OrganizationRepository"; import prisma from "@calcom/prisma"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; diff --git a/packages/trpc/server/routers/viewer/organizations/listMembers.handler.test.ts b/packages/trpc/server/routers/viewer/organizations/listMembers.handler.test.ts index 1b09e367ec..75604a1cba 100644 --- a/packages/trpc/server/routers/viewer/organizations/listMembers.handler.test.ts +++ b/packages/trpc/server/routers/viewer/organizations/listMembers.handler.test.ts @@ -36,7 +36,7 @@ vi.mock("@calcom/features/pbac/services/permission-check.service", () => ({ })); // Mock UserRepository -vi.mock("@calcom/lib/server/repository/user", () => ({ +vi.mock("@calcom/features/users/repositories/UserRepository", () => ({ UserRepository: vi.fn().mockImplementation(() => ({ enrichUserWithItsProfile: vi.fn().mockImplementation(({ user }) => user), })), diff --git a/packages/trpc/server/routers/viewer/organizations/listMembers.handler.ts b/packages/trpc/server/routers/viewer/organizations/listMembers.handler.ts index dea80c632c..e158a017d5 100644 --- a/packages/trpc/server/routers/viewer/organizations/listMembers.handler.ts +++ b/packages/trpc/server/routers/viewer/organizations/listMembers.handler.ts @@ -4,7 +4,7 @@ import { FeaturesRepository } from "@calcom/features/flags/features.repository"; import { Resource, CustomAction } from "@calcom/features/pbac/domain/types/permission-registry"; import { getSpecificPermissions } from "@calcom/features/pbac/lib/resource-permissions"; import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { prisma } from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; import { MembershipRole } from "@calcom/prisma/enums"; diff --git a/packages/trpc/server/routers/viewer/organizations/listOtherTeamMembers.handler.ts b/packages/trpc/server/routers/viewer/organizations/listOtherTeamMembers.handler.ts index f465fa8f1b..4a46250455 100644 --- a/packages/trpc/server/routers/viewer/organizations/listOtherTeamMembers.handler.ts +++ b/packages/trpc/server/routers/viewer/organizations/listOtherTeamMembers.handler.ts @@ -1,7 +1,7 @@ import z from "zod"; -import { getBookerBaseUrlSync } from "@calcom/lib/getBookerUrl/client"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { getBookerBaseUrlSync } from "@calcom/features/ee/organizations/lib/getBookerBaseUrlSync"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { prisma } from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; diff --git a/packages/trpc/server/routers/viewer/organizations/listOtherTeams.handler.ts b/packages/trpc/server/routers/viewer/organizations/listOtherTeams.handler.ts index 48722d00e2..e45d51a308 100644 --- a/packages/trpc/server/routers/viewer/organizations/listOtherTeams.handler.ts +++ b/packages/trpc/server/routers/viewer/organizations/listOtherTeams.handler.ts @@ -1,4 +1,4 @@ -import { OrganizationRepository } from "@calcom/lib/server/repository/organization"; +import { OrganizationRepository } from "@calcom/features/ee/organizations/repositories/OrganizationRepository"; import type { TrpcSessionUser } from "../../../types"; diff --git a/packages/trpc/server/routers/viewer/organizations/updateUser.handler.ts b/packages/trpc/server/routers/viewer/organizations/updateUser.handler.ts index f699486bfc..3cc26caac7 100644 --- a/packages/trpc/server/routers/viewer/organizations/updateUser.handler.ts +++ b/packages/trpc/server/routers/viewer/organizations/updateUser.handler.ts @@ -2,8 +2,8 @@ import { ensureOrganizationIsReviewed } from "@calcom/ee/organizations/lib/ensur import { checkAdminOrOwner } from "@calcom/features/auth/lib/checkAdminOrOwner"; import { RoleManagementError } from "@calcom/features/pbac/domain/errors/role-management.error"; import { RoleManagementFactory } from "@calcom/features/pbac/services/role-management.factory"; +import { checkRegularUsername } from "@calcom/features/profile/lib/checkRegularUsername"; import { uploadAvatar } from "@calcom/lib/server/avatar"; -import { checkRegularUsername } from "@calcom/lib/server/checkRegularUsername"; import { resizeBase64Image } from "@calcom/lib/server/resizeBase64Image"; import { prisma } from "@calcom/prisma"; import type { Prisma, PrismaPromise, User, Membership, Profile } from "@calcom/prisma/client"; diff --git a/packages/trpc/server/routers/viewer/payments/chargeCard.handler.ts b/packages/trpc/server/routers/viewer/payments/chargeCard.handler.ts index f221cd0d9a..359ef8355d 100644 --- a/packages/trpc/server/routers/viewer/payments/chargeCard.handler.ts +++ b/packages/trpc/server/routers/viewer/payments/chargeCard.handler.ts @@ -1,5 +1,5 @@ import { handleNoShowFee } from "@calcom/features/bookings/lib/payment/handleNoShowFee"; -import { BookingRepository } from "@calcom/lib/server/repository/booking"; +import { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; import type { PrismaClient } from "@calcom/prisma"; import { TRPCError } from "@trpc/server"; diff --git a/packages/trpc/server/routers/viewer/routing-forms/findTeamMembersMatchingAttributeLogicOfRoute.handler.ts b/packages/trpc/server/routers/viewer/routing-forms/findTeamMembersMatchingAttributeLogicOfRoute.handler.ts index a39b2df7ed..abf719542a 100644 --- a/packages/trpc/server/routers/viewer/routing-forms/findTeamMembersMatchingAttributeLogicOfRoute.handler.ts +++ b/packages/trpc/server/routers/viewer/routing-forms/findTeamMembersMatchingAttributeLogicOfRoute.handler.ts @@ -13,8 +13,8 @@ import { getUrlSearchParamsToForwardForTestPreview } from "@calcom/features/rout import { entityPrismaWhereClause } from "@calcom/lib/entityPermissionUtils.server"; import { fromEntriesWithDuplicateKeys } from "@calcom/lib/fromEntriesWithDuplicateKeys"; import { findTeamMembersMatchingAttributeLogic } from "@calcom/app-store/_utils/raqb/findTeamMembersMatchingAttributeLogic"; -import { EventTypeRepository } from "@calcom/lib/server/repository/eventTypeRepository"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { EventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import type { PrismaClient } from "@calcom/prisma"; import type { App_RoutingForms_Form } from "@calcom/prisma/client"; import { getAbsoluteEventTypeRedirectUrl } from "@calcom/routing-forms/getEventTypeRedirectUrl"; diff --git a/packages/trpc/server/routers/viewer/slots/handleNotificationWhenNoSlots.ts b/packages/trpc/server/routers/viewer/slots/handleNotificationWhenNoSlots.ts index abadbba087..c761f1af9b 100644 --- a/packages/trpc/server/routers/viewer/slots/handleNotificationWhenNoSlots.ts +++ b/packages/trpc/server/routers/viewer/slots/handleNotificationWhenNoSlots.ts @@ -3,7 +3,7 @@ import { sendOrganizationAdminNoSlotsNotification } from "@calcom/emails"; import type { IRedisService } from "@calcom/features/redis/IRedisService"; import { IS_PRODUCTION, WEBAPP_URL } from "@calcom/lib/constants"; import { getTranslation } from "@calcom/lib/server/i18n"; -import type { MembershipRepository } from "@calcom/lib/server/repository/membership"; +import type { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; import type { TeamRepository } from "@calcom/lib/server/repository/team"; type EventDetails = { diff --git a/packages/trpc/server/routers/viewer/slots/isAvailable.handler.ts b/packages/trpc/server/routers/viewer/slots/isAvailable.handler.ts index d970dbc2eb..1be3c06711 100644 --- a/packages/trpc/server/routers/viewer/slots/isAvailable.handler.ts +++ b/packages/trpc/server/routers/viewer/slots/isAvailable.handler.ts @@ -3,7 +3,7 @@ import type { NextApiRequest } from "next"; import { HttpError } from "@calcom/lib/http-error"; import { getPastTimeAndMinimumBookingNoticeBoundsStatus } from "@calcom/lib/isOutOfBounds"; import { PrismaSelectedSlotRepository } from "@calcom/lib/server/repository/PrismaSelectedSlotRepository"; -import { EventTypeRepository } from "@calcom/lib/server/repository/eventTypeRepository"; +import { EventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository"; import type { PrismaClient } from "@calcom/prisma"; import type { TIsAvailableInputSchema, TIsAvailableOutputSchema } from "./isAvailable.schema"; diff --git a/packages/trpc/server/routers/viewer/slots/util.ts b/packages/trpc/server/routers/viewer/slots/util.ts index 9023a40d4a..570181247a 100644 --- a/packages/trpc/server/routers/viewer/slots/util.ts +++ b/packages/trpc/server/routers/viewer/slots/util.ts @@ -16,6 +16,7 @@ import type { import { checkForConflicts } from "@calcom/features/bookings/lib/conflictChecker/checkForConflicts"; import type { QualifiedHostsService } from "@calcom/features/bookings/lib/host-filtering/findQualifiedHostsWithDelegationCredentials"; import { isEventTypeLoggingEnabled } from "@calcom/features/bookings/lib/isEventTypeLoggingEnabled"; +import type { BusyTimesService } from "@calcom/features/busyTimes/services/getBusyTimes"; import type { CacheService } from "@calcom/features/calendar-cache/lib/getShouldServeCache"; import type { getBusyTimesService } from "@calcom/features/di/containers/BusyTimes"; import { getDefaultEvent } from "@calcom/features/eventtypes/lib/defaultEvents"; @@ -26,13 +27,12 @@ import { RESERVED_SUBDOMAINS } from "@calcom/lib/constants"; import { buildDateRanges } from "@calcom/lib/date-ranges"; import { getUTCOffsetByTimezone } from "@calcom/lib/dayjs"; import { getAggregatedAvailability } from "@calcom/lib/getAggregatedAvailability"; -import type { BusyTimesService } from "@calcom/lib/getBusyTimes"; import { descendingLimitKeys, intervalLimitKeyToUnit } from "@calcom/lib/intervalLimits/intervalLimit"; import type { IntervalLimit } from "@calcom/lib/intervalLimits/intervalLimitSchema"; import { parseBookingLimit } from "@calcom/lib/intervalLimits/isBookingLimits"; import { parseDurationLimit } from "@calcom/lib/intervalLimits/isDurationLimits"; import LimitManager from "@calcom/lib/intervalLimits/limitManager"; -import type { CheckBookingLimitsService } from "@calcom/lib/intervalLimits/server/checkBookingLimits"; +import type { CheckBookingLimitsService } from "@calcom/features/bookings/lib/checkBookingLimits"; import { isBookingWithinPeriod } from "@calcom/lib/intervalLimits/utils"; import { calculatePeriodLimits, @@ -44,14 +44,14 @@ import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import { withReporting } from "@calcom/lib/sentryWrapper"; import type { ISelectedSlotRepository } from "@calcom/lib/server/repository/ISelectedSlotRepository"; -import type { BookingRepository } from "@calcom/lib/server/repository/booking"; -import type { EventTypeRepository } from "@calcom/lib/server/repository/eventTypeRepository"; +import type { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; +import type { EventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository"; import type { RoutingFormResponseRepository } from "@calcom/lib/server/repository/formResponse"; import type { PrismaOOORepository } from "@calcom/lib/server/repository/ooo"; import type { ScheduleRepository } from "@calcom/lib/server/repository/schedule"; import type { TeamRepository } from "@calcom/lib/server/repository/team"; -import type { UserRepository } from "@calcom/lib/server/repository/user"; -import { withSelectedCalendars } from "@calcom/lib/server/repository/user"; +import type { UserRepository } from "@calcom/features/users/repositories/UserRepository"; +import { withSelectedCalendars } from "@calcom/features/users/repositories/UserRepository"; import getSlots from "@calcom/lib/slots"; import { SchedulingType, PeriodType } from "@calcom/prisma/enums"; import type { EventBusyDate, EventBusyDetails } from "@calcom/types/Calendar"; diff --git a/packages/trpc/server/routers/viewer/teams/acceptOrLeave.handler.ts b/packages/trpc/server/routers/viewer/teams/acceptOrLeave.handler.ts index a8f7678cc2..7c6fcfec26 100644 --- a/packages/trpc/server/routers/viewer/teams/acceptOrLeave.handler.ts +++ b/packages/trpc/server/routers/viewer/teams/acceptOrLeave.handler.ts @@ -1,4 +1,4 @@ -import { TeamService } from "@calcom/lib/server/service/teamService"; +import { TeamService } from "@calcom/features/ee/teams/services/teamService"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; import type { TAcceptOrLeaveInputSchema } from "./acceptOrLeave.schema"; diff --git a/packages/trpc/server/routers/viewer/teams/create.handler.ts b/packages/trpc/server/routers/viewer/teams/create.handler.ts index 96f0e551cc..e5cc55ce13 100644 --- a/packages/trpc/server/routers/viewer/teams/create.handler.ts +++ b/packages/trpc/server/routers/viewer/teams/create.handler.ts @@ -1,7 +1,7 @@ import { generateTeamCheckoutSession } from "@calcom/features/ee/teams/lib/payments"; import { IS_TEAM_BILLING_ENABLED, WEBAPP_URL } from "@calcom/lib/constants"; import { uploadLogo } from "@calcom/lib/server/avatar"; -import { ProfileRepository } from "@calcom/lib/server/repository/profile"; +import { ProfileRepository } from "@calcom/features/profile/repositories/ProfileRepository"; import { resizeBase64Image } from "@calcom/lib/server/resizeBase64Image"; import { prisma } from "@calcom/prisma"; import { MembershipRole } from "@calcom/prisma/enums"; diff --git a/packages/trpc/server/routers/viewer/teams/createInvite.handler.ts b/packages/trpc/server/routers/viewer/teams/createInvite.handler.ts index 8bd7feec72..03a68a8c56 100644 --- a/packages/trpc/server/routers/viewer/teams/createInvite.handler.ts +++ b/packages/trpc/server/routers/viewer/teams/createInvite.handler.ts @@ -1,5 +1,5 @@ import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; -import { TeamService } from "@calcom/lib/server/service/teamService"; +import { TeamService } from "@calcom/features/ee/teams/services/teamService"; import { prisma } from "@calcom/prisma"; import { MembershipRole } from "@calcom/prisma/enums"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; diff --git a/packages/trpc/server/routers/viewer/teams/delete.handler.ts b/packages/trpc/server/routers/viewer/teams/delete.handler.ts index b3ea0c3174..9d460b4beb 100644 --- a/packages/trpc/server/routers/viewer/teams/delete.handler.ts +++ b/packages/trpc/server/routers/viewer/teams/delete.handler.ts @@ -1,5 +1,5 @@ import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; -import { TeamService } from "@calcom/lib/server/service/teamService"; +import { TeamService } from "@calcom/features/ee/teams/services/teamService"; import { prisma } from "@calcom/prisma"; import { MembershipRole } from "@calcom/prisma/enums"; diff --git a/packages/trpc/server/routers/viewer/teams/get.handler.test.ts b/packages/trpc/server/routers/viewer/teams/get.handler.test.ts index 76ff6b87a5..282007fb6d 100644 --- a/packages/trpc/server/routers/viewer/teams/get.handler.test.ts +++ b/packages/trpc/server/routers/viewer/teams/get.handler.test.ts @@ -1,12 +1,12 @@ import { describe, it, beforeEach, vi, expect } from "vitest"; import { getTeamWithoutMembers } from "@calcom/features/ee/teams/lib/queries"; -import { MembershipRepository } from "@calcom/lib/server/repository/membership"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; import type { TrpcSessionUser } from "../../../types"; import getTeam from "./get.handler"; -vi.mock("@calcom/lib/server/repository/membership", () => ({ +vi.mock("@calcom/features/membership/repositories/MembershipRepository", () => ({ MembershipRepository: { findUniqueByUserIdAndTeamId: vi.fn(), }, diff --git a/packages/trpc/server/routers/viewer/teams/get.handler.ts b/packages/trpc/server/routers/viewer/teams/get.handler.ts index 9590d107ef..615fbd6cea 100644 --- a/packages/trpc/server/routers/viewer/teams/get.handler.ts +++ b/packages/trpc/server/routers/viewer/teams/get.handler.ts @@ -1,5 +1,5 @@ import { getTeamWithoutMembers } from "@calcom/features/ee/teams/lib/queries"; -import { MembershipRepository } from "@calcom/lib/server/repository/membership"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; import { TRPCError } from "@trpc/server"; diff --git a/packages/trpc/server/routers/viewer/teams/getMemberAvailability.handler.ts b/packages/trpc/server/routers/viewer/teams/getMemberAvailability.handler.ts index dbdbb0839a..6252c6c203 100644 --- a/packages/trpc/server/routers/viewer/teams/getMemberAvailability.handler.ts +++ b/packages/trpc/server/routers/viewer/teams/getMemberAvailability.handler.ts @@ -1,7 +1,7 @@ import { enrichUserWithDelegationCredentialsIncludeServiceAccountKey } from "@calcom/app-store/delegationCredential"; import { getUserAvailabilityService } from "@calcom/features/di/containers/GetUserAvailability"; import { isTeamMember } from "@calcom/features/ee/teams/lib/queries"; -import { MembershipRepository } from "@calcom/lib/server/repository/membership"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; import { TRPCError } from "@trpc/server"; diff --git a/packages/trpc/server/routers/viewer/teams/hasActiveTeamPlan.handler.ts b/packages/trpc/server/routers/viewer/teams/hasActiveTeamPlan.handler.ts index a1ecfaa31f..69db80c7c8 100644 --- a/packages/trpc/server/routers/viewer/teams/hasActiveTeamPlan.handler.ts +++ b/packages/trpc/server/routers/viewer/teams/hasActiveTeamPlan.handler.ts @@ -1,6 +1,6 @@ import { InternalTeamBilling } from "@calcom/ee/billing/teams/internal-team-billing"; import { IS_SELF_HOSTED } from "@calcom/lib/constants"; -import { MembershipRepository } from "@calcom/lib/server/repository/membership"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; import { prisma } from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; diff --git a/packages/trpc/server/routers/viewer/teams/hasTeamPlan.handler.ts b/packages/trpc/server/routers/viewer/teams/hasTeamPlan.handler.ts index ac5e2be89d..e705285d93 100644 --- a/packages/trpc/server/routers/viewer/teams/hasTeamPlan.handler.ts +++ b/packages/trpc/server/routers/viewer/teams/hasTeamPlan.handler.ts @@ -1,5 +1,5 @@ import { BillingPlanService } from "@calcom/features/ee/billing/domain/billing-plans"; -import { MembershipRepository } from "@calcom/lib/server/repository/membership"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; import { prisma } from "@calcom/prisma"; type HasTeamPlanOptions = { diff --git a/packages/trpc/server/routers/viewer/teams/inviteMember/inviteMember.handler.ts b/packages/trpc/server/routers/viewer/teams/inviteMember/inviteMember.handler.ts index f210d63ae4..554aa56d58 100644 --- a/packages/trpc/server/routers/viewer/teams/inviteMember/inviteMember.handler.ts +++ b/packages/trpc/server/routers/viewer/teams/inviteMember/inviteMember.handler.ts @@ -6,7 +6,7 @@ import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import { getTranslation } from "@calcom/lib/server/i18n"; import { isOrganisationOwner } from "@calcom/lib/server/queries/organisations"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import prisma from "@calcom/prisma"; import { MembershipRole } from "@calcom/prisma/enums"; import type { CreationSource } from "@calcom/prisma/enums"; diff --git a/packages/trpc/server/routers/viewer/teams/inviteMember/utils.ts b/packages/trpc/server/routers/viewer/teams/inviteMember/utils.ts index 4ced2955c9..f9b78a438b 100644 --- a/packages/trpc/server/routers/viewer/teams/inviteMember/utils.ts +++ b/packages/trpc/server/routers/viewer/teams/inviteMember/utils.ts @@ -8,13 +8,13 @@ import { updateNewTeamMemberEventTypes } from "@calcom/features/ee/teams/lib/que import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; import { DEFAULT_SCHEDULE, getAvailabilityFromSchedule } from "@calcom/lib/availability"; import { ENABLE_PROFILE_SWITCHER, WEBAPP_URL } from "@calcom/lib/constants"; -import { createAProfileForAnExistingUser } from "@calcom/lib/createAProfileForAnExistingUser"; +import { createAProfileForAnExistingUser } from "@calcom/features/profile/lib/createAProfileForAnExistingUser"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import { getTranslation } from "@calcom/lib/server/i18n"; -import { ProfileRepository } from "@calcom/lib/server/repository/profile"; +import { ProfileRepository } from "@calcom/features/profile/repositories/ProfileRepository"; import { getParsedTeam } from "@calcom/lib/server/repository/teamUtils"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import slugify from "@calcom/lib/slugify"; import { prisma } from "@calcom/prisma"; import type { Membership, OrganizationSettings, Team } from "@calcom/prisma/client"; diff --git a/packages/trpc/server/routers/viewer/teams/inviteMemberByToken.handler.ts b/packages/trpc/server/routers/viewer/teams/inviteMemberByToken.handler.ts index e9f4efd4e5..7648b18d85 100644 --- a/packages/trpc/server/routers/viewer/teams/inviteMemberByToken.handler.ts +++ b/packages/trpc/server/routers/viewer/teams/inviteMemberByToken.handler.ts @@ -1,4 +1,4 @@ -import { TeamService } from "@calcom/lib/server/service/teamService"; +import { TeamService } from "@calcom/features/ee/teams/services/teamService"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; import type { TInviteMemberByTokenSchemaInputSchema } from "./inviteMemberByToken.schema"; diff --git a/packages/trpc/server/routers/viewer/teams/legacyListMembers.handler.ts b/packages/trpc/server/routers/viewer/teams/legacyListMembers.handler.ts index 24df19a53f..f64589a5de 100644 --- a/packages/trpc/server/routers/viewer/teams/legacyListMembers.handler.ts +++ b/packages/trpc/server/routers/viewer/teams/legacyListMembers.handler.ts @@ -1,7 +1,7 @@ import { Resource, CustomAction } from "@calcom/features/pbac/domain/types/permission-registry"; import { getSpecificPermissions } from "@calcom/features/pbac/lib/resource-permissions"; import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import type { PrismaClient } from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; import { MembershipRole } from "@calcom/prisma/enums"; diff --git a/packages/trpc/server/routers/viewer/teams/listMembers.handler.ts b/packages/trpc/server/routers/viewer/teams/listMembers.handler.ts index dbcb26670b..600a7e8d07 100644 --- a/packages/trpc/server/routers/viewer/teams/listMembers.handler.ts +++ b/packages/trpc/server/routers/viewer/teams/listMembers.handler.ts @@ -6,9 +6,9 @@ import { import { getSpecificPermissions } from "@calcom/features/pbac/lib/resource-permissions"; import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; import { RoleManagementFactory } from "@calcom/features/pbac/services/role-management.factory"; -import { getBookerBaseUrlSync } from "@calcom/lib/getBookerUrl/client"; +import { getBookerBaseUrlSync } from "@calcom/features/ee/organizations/lib/getBookerBaseUrlSync"; import { TeamRepository } from "@calcom/lib/server/repository/team"; -import { UserRepository } from "@calcom/lib/server/repository/user"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { prisma } from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; import { MembershipRole } from "@calcom/prisma/enums"; diff --git a/packages/trpc/server/routers/viewer/teams/publish.handler.ts b/packages/trpc/server/routers/viewer/teams/publish.handler.ts index 5b353e6902..5d7a12daa5 100644 --- a/packages/trpc/server/routers/viewer/teams/publish.handler.ts +++ b/packages/trpc/server/routers/viewer/teams/publish.handler.ts @@ -2,7 +2,7 @@ import { purchaseTeamOrOrgSubscription } from "@calcom/features/ee/teams/lib/pay import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; import { IS_TEAM_BILLING_ENABLED, WEBAPP_URL } from "@calcom/lib/constants"; import { Redirect } from "@calcom/lib/redirect"; -import { TeamService } from "@calcom/lib/server/service/teamService"; +import { TeamService } from "@calcom/features/ee/teams/services/teamService"; import type { Prisma } from "@calcom/prisma/client"; import { MembershipRole } from "@calcom/prisma/enums"; import { teamMetadataSchema } from "@calcom/prisma/zod-utils"; diff --git a/packages/trpc/server/routers/viewer/teams/removeMember/BaseRemoveMemberService.ts b/packages/trpc/server/routers/viewer/teams/removeMember/BaseRemoveMemberService.ts index a814d01e1b..8e7a2a2941 100644 --- a/packages/trpc/server/routers/viewer/teams/removeMember/BaseRemoveMemberService.ts +++ b/packages/trpc/server/routers/viewer/teams/removeMember/BaseRemoveMemberService.ts @@ -1,4 +1,4 @@ -import { TeamService } from "@calcom/lib/server/service/teamService"; +import { TeamService } from "@calcom/features/ee/teams/services/teamService"; import type { IRemoveMemberService, diff --git a/packages/trpc/server/routers/viewer/teams/removeMember/__tests__/LegacyRemoveMemberService.test.ts b/packages/trpc/server/routers/viewer/teams/removeMember/__tests__/LegacyRemoveMemberService.test.ts index e22f4b2b50..d35d6d74ce 100644 --- a/packages/trpc/server/routers/viewer/teams/removeMember/__tests__/LegacyRemoveMemberService.test.ts +++ b/packages/trpc/server/routers/viewer/teams/removeMember/__tests__/LegacyRemoveMemberService.test.ts @@ -1,12 +1,10 @@ import { describe, expect, it, vi, beforeEach } from "vitest"; import * as teamQueries from "@calcom/features/ee/teams/lib/queries"; -import { TeamService } from "@calcom/lib/server/service/teamService"; +import { TeamService } from "@calcom/features/ee/teams/services/teamService"; import { prisma } from "@calcom/prisma"; import { MembershipRole } from "@calcom/prisma/enums"; -import { TRPCError } from "@trpc/server"; - import { LegacyRemoveMemberService } from "../LegacyRemoveMemberService"; vi.mock("@calcom/prisma", () => ({ @@ -17,7 +15,7 @@ vi.mock("@calcom/prisma", () => ({ }, })); -vi.mock("@calcom/lib/server/service/teamService"); +vi.mock("@calcom/features/ee/teams/services/teamService"); vi.mock("@calcom/features/ee/teams/lib/queries"); describe("LegacyRemoveMemberService", () => { diff --git a/packages/trpc/server/routers/viewer/teams/removeMember/__tests__/PBACRemoveMemberService.test.ts b/packages/trpc/server/routers/viewer/teams/removeMember/__tests__/PBACRemoveMemberService.test.ts index a030fdbef7..b0b2302340 100644 --- a/packages/trpc/server/routers/viewer/teams/removeMember/__tests__/PBACRemoveMemberService.test.ts +++ b/packages/trpc/server/routers/viewer/teams/removeMember/__tests__/PBACRemoveMemberService.test.ts @@ -4,7 +4,7 @@ import * as teamQueries from "@calcom/features/ee/teams/lib/queries"; import { PermissionMapper } from "@calcom/features/pbac/domain/mappers/PermissionMapper"; import { Resource, CustomAction } from "@calcom/features/pbac/domain/types/permission-registry"; import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; -import { TeamService } from "@calcom/lib/server/service/teamService"; +import { TeamService } from "@calcom/features/ee/teams/services/teamService"; import { prisma } from "@calcom/prisma"; import { MembershipRole } from "@calcom/prisma/enums"; @@ -18,7 +18,7 @@ vi.mock("@calcom/prisma", () => ({ }, })); -vi.mock("@calcom/lib/server/service/teamService"); +vi.mock("@calcom/features/ee/teams/services/teamService"); vi.mock("@calcom/features/ee/teams/lib/queries"); vi.mock("@calcom/features/pbac/services/permission-check.service"); vi.mock("@calcom/features/pbac/domain/mappers/PermissionMapper"); diff --git a/packages/trpc/server/routers/viewer/teams/roundRobin/getRoundRobinHostsToReasign.handler.ts b/packages/trpc/server/routers/viewer/teams/roundRobin/getRoundRobinHostsToReasign.handler.ts index 534b954528..3e51fa5e9b 100644 --- a/packages/trpc/server/routers/viewer/teams/roundRobin/getRoundRobinHostsToReasign.handler.ts +++ b/packages/trpc/server/routers/viewer/teams/roundRobin/getRoundRobinHostsToReasign.handler.ts @@ -4,7 +4,7 @@ import type { IsFixedAwareUser } from "@calcom/features/bookings/lib/handleNewBo import { enrichUsersWithDelegationCredentials } from "@calcom/app-store/delegationCredential"; import { ErrorCode } from "@calcom/lib/errorCodes"; import logger from "@calcom/lib/logger"; -import { withSelectedCalendars } from "@calcom/lib/server/repository/user"; +import { withSelectedCalendars } from "@calcom/features/users/repositories/UserRepository"; import type { PrismaClient } from "@calcom/prisma"; import { userSelect } from "@calcom/prisma"; import { credentialForCalendarServiceSelect } from "@calcom/prisma/selects/credential"; diff --git a/packages/trpc/server/routers/viewer/teams/roundRobin/roundRobinManualReassign.handler.ts b/packages/trpc/server/routers/viewer/teams/roundRobin/roundRobinManualReassign.handler.ts index f1f26b48fe..587c45a0ed 100644 --- a/packages/trpc/server/routers/viewer/teams/roundRobin/roundRobinManualReassign.handler.ts +++ b/packages/trpc/server/routers/viewer/teams/roundRobin/roundRobinManualReassign.handler.ts @@ -1,5 +1,5 @@ import { roundRobinManualReassignment } from "@calcom/features/ee/round-robin/roundRobinManualReassignment"; -import { BookingRepository } from "@calcom/lib/server/repository/booking"; +import { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; import { prisma } from "@calcom/prisma"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; diff --git a/packages/trpc/server/routers/viewer/teams/roundRobin/roundRobinReassign.handler.ts b/packages/trpc/server/routers/viewer/teams/roundRobin/roundRobinReassign.handler.ts index 4e49dbc385..f0d8c2fed3 100644 --- a/packages/trpc/server/routers/viewer/teams/roundRobin/roundRobinReassign.handler.ts +++ b/packages/trpc/server/routers/viewer/teams/roundRobin/roundRobinReassign.handler.ts @@ -1,5 +1,5 @@ import { roundRobinReassignment } from "@calcom/features/ee/round-robin/roundRobinReassignment"; -import { BookingRepository } from "@calcom/lib/server/repository/booking"; +import { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; import { prisma } from "@calcom/prisma"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; diff --git a/packages/trpc/server/routers/viewer/teams/skipTeamTrials.handler.ts b/packages/trpc/server/routers/viewer/teams/skipTeamTrials.handler.ts index 6ac8b7372b..fae063d4c4 100644 --- a/packages/trpc/server/routers/viewer/teams/skipTeamTrials.handler.ts +++ b/packages/trpc/server/routers/viewer/teams/skipTeamTrials.handler.ts @@ -1,7 +1,7 @@ import { InternalTeamBilling } from "@calcom/ee/billing/teams/internal-team-billing"; import { IS_SELF_HOSTED } from "@calcom/lib/constants"; import logger from "@calcom/lib/logger"; -import { MembershipRepository } from "@calcom/lib/server/repository/membership"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; import { prisma } from "@calcom/prisma"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; diff --git a/packages/trpc/server/routers/viewer/teams/skipTeamTrials.test.ts b/packages/trpc/server/routers/viewer/teams/skipTeamTrials.test.ts index dd56a9549e..b9b25d0b80 100644 --- a/packages/trpc/server/routers/viewer/teams/skipTeamTrials.test.ts +++ b/packages/trpc/server/routers/viewer/teams/skipTeamTrials.test.ts @@ -1,7 +1,7 @@ import { describe, expect, it, vi, beforeEach } from "vitest"; import { InternalTeamBilling } from "@calcom/ee/billing/teams/internal-team-billing"; -import { MembershipRepository } from "@calcom/lib/server/repository/membership"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; import { prisma } from "@calcom/prisma"; import { skipTeamTrialsHandler } from "./skipTeamTrials.handler"; @@ -44,7 +44,7 @@ vi.mock("@calcom/lib/logger", () => ({ }, })); -vi.mock("@calcom/lib/server/repository/membership", () => ({ +vi.mock("@calcom/features/membership/repositories/MembershipRepository", () => ({ MembershipRepository: { findAllAcceptedTeamMemberships: vi.fn(), }, diff --git a/packages/trpc/server/routers/viewer/webhook/get.handler.ts b/packages/trpc/server/routers/viewer/webhook/get.handler.ts index b8f49728f5..a1275fcc2a 100644 --- a/packages/trpc/server/routers/viewer/webhook/get.handler.ts +++ b/packages/trpc/server/routers/viewer/webhook/get.handler.ts @@ -1,4 +1,4 @@ -import { WebhookRepository } from "@calcom/lib/server/repository/webhook"; +import { WebhookRepository } from "@calcom/features/webhooks/lib/repository/WebhookRepository"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; import type { TGetInputSchema } from "./get.schema"; @@ -11,5 +11,6 @@ type GetOptions = { }; export const getHandler = async ({ ctx: _ctx, input }: GetOptions) => { - return await WebhookRepository.findByWebhookId(input.webhookId); + const webhookRepository = WebhookRepository.getInstance(); + return await webhookRepository.findByWebhookId(input.webhookId); }; diff --git a/packages/trpc/server/routers/viewer/webhook/getByViewer.handler.ts b/packages/trpc/server/routers/viewer/webhook/getByViewer.handler.ts index 785abbde4f..0d78f55f4d 100644 --- a/packages/trpc/server/routers/viewer/webhook/getByViewer.handler.ts +++ b/packages/trpc/server/routers/viewer/webhook/getByViewer.handler.ts @@ -1,4 +1,4 @@ -import { WebhookRepository } from "@calcom/lib/server/repository/webhook"; +import { WebhookRepository } from "@calcom/features/webhooks/lib/repository/WebhookRepository"; import type { Webhook } from "@calcom/prisma/client"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; @@ -33,9 +33,9 @@ export type WebhooksByViewer = { }; export const getByViewerHandler = async ({ ctx }: GetByViewerOptions) => { - // Use the new PBAC-aware method for fetching webhooks - - return await WebhookRepository.getFilteredWebhooksForUser({ + // Use the singleton instance to avoid creating new instances repeatedly + const webhookRepository = WebhookRepository.getInstance(); + return await webhookRepository.getFilteredWebhooksForUser({ userId: ctx.user.id, userRole: ctx.user.role, }); diff --git a/packages/trpc/server/routers/viewer/workflows/activateEventType.handler.ts b/packages/trpc/server/routers/viewer/workflows/activateEventType.handler.ts index 6e6f32988f..52ee9bce61 100644 --- a/packages/trpc/server/routers/viewer/workflows/activateEventType.handler.ts +++ b/packages/trpc/server/routers/viewer/workflows/activateEventType.handler.ts @@ -2,8 +2,8 @@ import { scheduleEmailReminder } from "@calcom/features/ee/workflows/lib/reminde import { scheduleSMSReminder } from "@calcom/features/ee/workflows/lib/reminders/smsReminderManager"; import { scheduleWhatsappReminder } from "@calcom/features/ee/workflows/lib/reminders/whatsappReminderManager"; import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; -import { getBookerBaseUrl } from "@calcom/lib/getBookerUrl/server"; -import { WorkflowRepository } from "@calcom/lib/server/repository/workflow"; +import { getBookerBaseUrl } from "@calcom/features/ee/organizations/lib/getBookerUrlServer"; +import { WorkflowRepository } from "@calcom/features/ee/workflows/repositories/WorkflowRepository"; import { getTimeFormatStringFromUserTimeFormat } from "@calcom/lib/timeFormat"; import { prisma } from "@calcom/prisma"; import { BookingStatus } from "@calcom/prisma/enums"; diff --git a/packages/trpc/server/routers/viewer/workflows/delete.handler.test.ts b/packages/trpc/server/routers/viewer/workflows/delete.handler.test.ts index febd4d72ef..955f63c2dc 100644 --- a/packages/trpc/server/routers/viewer/workflows/delete.handler.test.ts +++ b/packages/trpc/server/routers/viewer/workflows/delete.handler.test.ts @@ -3,7 +3,7 @@ import { prisma } from "@calcom/prisma/__mocks__/prisma"; import { describe, it, expect, vi, beforeEach } from "vitest"; import { createDefaultAIPhoneServiceProvider } from "@calcom/features/calAIPhone"; -import { WorkflowRepository } from "@calcom/lib/server/repository/workflow"; +import { WorkflowRepository } from "@calcom/features/ee/workflows/repositories/WorkflowRepository"; import { WorkflowActions } from "@calcom/prisma/enums"; import { TRPCError } from "@trpc/server"; @@ -23,7 +23,7 @@ vi.mock("@calcom/features/calAIPhone", () => ({ createDefaultAIPhoneServiceProvider: vi.fn(), })); -vi.mock("@calcom/lib/server/repository/workflow", () => ({ +vi.mock("@calcom/features/ee/workflows/repositories/WorkflowRepository", () => ({ WorkflowRepository: { deleteAllWorkflowReminders: vi.fn(), }, diff --git a/packages/trpc/server/routers/viewer/workflows/delete.handler.ts b/packages/trpc/server/routers/viewer/workflows/delete.handler.ts index 94e727cbde..1d8e6e89df 100644 --- a/packages/trpc/server/routers/viewer/workflows/delete.handler.ts +++ b/packages/trpc/server/routers/viewer/workflows/delete.handler.ts @@ -1,5 +1,5 @@ import { createDefaultAIPhoneServiceProvider } from "@calcom/features/calAIPhone"; -import { WorkflowRepository } from "@calcom/lib/server/repository/workflow"; +import { WorkflowRepository } from "@calcom/features/ee/workflows/repositories/WorkflowRepository"; import { prisma } from "@calcom/prisma"; import { WorkflowActions } from "@calcom/prisma/enums"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; diff --git a/packages/trpc/server/routers/viewer/workflows/filteredList.handler.tsx b/packages/trpc/server/routers/viewer/workflows/filteredList.handler.tsx index 85076a2ca5..32eb0de8bc 100644 --- a/packages/trpc/server/routers/viewer/workflows/filteredList.handler.tsx +++ b/packages/trpc/server/routers/viewer/workflows/filteredList.handler.tsx @@ -1,4 +1,4 @@ -import { WorkflowRepository } from "@calcom/lib/server/repository/workflow"; +import { WorkflowRepository } from "@calcom/features/ee/workflows/repositories/WorkflowRepository"; import { addPermissionsToWorkflows } from "@calcom/lib/server/repository/workflow-permissions"; import type { PrismaClient } from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; diff --git a/packages/trpc/server/routers/viewer/workflows/get.handler.ts b/packages/trpc/server/routers/viewer/workflows/get.handler.ts index f9f794f5c6..73a004cede 100644 --- a/packages/trpc/server/routers/viewer/workflows/get.handler.ts +++ b/packages/trpc/server/routers/viewer/workflows/get.handler.ts @@ -1,4 +1,4 @@ -import { WorkflowRepository } from "@calcom/lib/server/repository/workflow"; +import { WorkflowRepository } from "@calcom/features/ee/workflows/repositories/WorkflowRepository"; import { addPermissionsToWorkflow } from "@calcom/lib/server/repository/workflow-permissions"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; diff --git a/packages/trpc/server/routers/viewer/workflows/get.schema.ts b/packages/trpc/server/routers/viewer/workflows/get.schema.ts index 6141ec4a6f..9f8500f578 100644 --- a/packages/trpc/server/routers/viewer/workflows/get.schema.ts +++ b/packages/trpc/server/routers/viewer/workflows/get.schema.ts @@ -1,2 +1,2 @@ -export { ZGetInputSchema } from "@calcom/lib/server/repository/workflow"; -export type { TGetInputSchema } from "@calcom/lib/server/repository/workflow"; +export { ZGetInputSchema } from "@calcom/features/ee/workflows/repositories/WorkflowRepository"; +export type { TGetInputSchema } from "@calcom/features/ee/workflows/repositories/WorkflowRepository"; diff --git a/packages/trpc/server/routers/viewer/workflows/getVerifiedEmails.handler.ts b/packages/trpc/server/routers/viewer/workflows/getVerifiedEmails.handler.ts index 0abfc47e3d..67abc21a79 100644 --- a/packages/trpc/server/routers/viewer/workflows/getVerifiedEmails.handler.ts +++ b/packages/trpc/server/routers/viewer/workflows/getVerifiedEmails.handler.ts @@ -1,4 +1,4 @@ -import { WorkflowRepository } from "@calcom/lib/server/repository/workflow"; +import { WorkflowRepository } from "@calcom/features/ee/workflows/repositories/WorkflowRepository"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; import type { TGetVerifiedEmailsInputSchema } from "./getVerifiedEmails.schema"; diff --git a/packages/trpc/server/routers/viewer/workflows/getVerifiedNumbers.handler.ts b/packages/trpc/server/routers/viewer/workflows/getVerifiedNumbers.handler.ts index b0e98882c0..967266e78e 100644 --- a/packages/trpc/server/routers/viewer/workflows/getVerifiedNumbers.handler.ts +++ b/packages/trpc/server/routers/viewer/workflows/getVerifiedNumbers.handler.ts @@ -1,4 +1,4 @@ -import { WorkflowRepository } from "@calcom/lib/server/repository/workflow"; +import { WorkflowRepository } from "@calcom/features/ee/workflows/repositories/WorkflowRepository"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; import type { TGetVerifiedNumbersInputSchema } from "./getVerifiedNumbers.schema"; diff --git a/packages/trpc/server/routers/viewer/workflows/list.handler.ts b/packages/trpc/server/routers/viewer/workflows/list.handler.ts index 1308c8376f..85fcc49bd4 100644 --- a/packages/trpc/server/routers/viewer/workflows/list.handler.ts +++ b/packages/trpc/server/routers/viewer/workflows/list.handler.ts @@ -1,6 +1,6 @@ import type { WorkflowType } from "@calcom/features/ee/workflows/components/WorkflowListPage"; +import { WorkflowRepository } from "@calcom/features/ee/workflows/repositories/WorkflowRepository"; import { TeamRepository } from "@calcom/lib/server/repository/team"; -import { WorkflowRepository } from "@calcom/lib/server/repository/workflow"; // import dayjs from "@calcom/dayjs"; // import { getErrorFromUnknown } from "@calcom/lib/errors"; import { addPermissionsToWorkflows } from "@calcom/lib/server/repository/workflow-permissions"; diff --git a/packages/trpc/server/routers/viewer/workflows/update.handler.ts b/packages/trpc/server/routers/viewer/workflows/update.handler.ts index fba082b90e..ae4ce4d716 100755 --- a/packages/trpc/server/routers/viewer/workflows/update.handler.ts +++ b/packages/trpc/server/routers/viewer/workflows/update.handler.ts @@ -1,14 +1,14 @@ import { createDefaultAIPhoneServiceProvider } from "@calcom/features/calAIPhone"; import { isEmailAction, isFormTrigger } from "@calcom/features/ee/workflows/lib/actionHelperFunctions"; import { WorkflowReminderRepository } from "@calcom/features/ee/workflows/lib/repository/workflowReminder"; +import { WorkflowRepository } from "@calcom/features/ee/workflows/repositories/WorkflowRepository"; +import { EventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository"; import tasker from "@calcom/features/tasker"; import { IS_SELF_HOSTED, SCANNING_WORKFLOW_STEPS } from "@calcom/lib/constants"; import hasKeyInMetadata from "@calcom/lib/hasKeyInMetadata"; import logger from "@calcom/lib/logger"; import { PrismaAgentRepository } from "@calcom/lib/server/repository/PrismaAgentRepository"; -import { EventTypeRepository } from "@calcom/lib/server/repository/eventTypeRepository"; import { TeamRepository } from "@calcom/lib/server/repository/team"; -import { WorkflowRepository } from "@calcom/lib/server/repository/workflow"; import { addPermissionsToWorkflow } from "@calcom/lib/server/repository/workflow-permissions"; import { WorkflowRelationsRepository } from "@calcom/lib/server/repository/workflowRelations"; import { WorkflowStepRepository } from "@calcom/lib/server/repository/workflowStep"; diff --git a/packages/trpc/server/routers/viewer/workflows/util.ts b/packages/trpc/server/routers/viewer/workflows/util.ts index 32ad288b65..7ca0c66dbd 100644 --- a/packages/trpc/server/routers/viewer/workflows/util.ts +++ b/packages/trpc/server/routers/viewer/workflows/util.ts @@ -12,7 +12,7 @@ import type { Workflow as WorkflowType } from "@calcom/ee/workflows/lib/types"; import { SMS_REMINDER_NUMBER_FIELD, CAL_AI_AGENT_PHONE_NUMBER_FIELD, -} from "@calcom/features/bookings/lib/SystemField"; +} from "@calcom/lib/SystemField"; import { getSmsReminderNumberField, getSmsReminderNumberSource, @@ -23,11 +23,11 @@ import { removeBookingField, upsertBookingField } from "@calcom/features/eventty import type { PermissionString } from "@calcom/features/pbac/domain/types/permission-registry"; import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; import { SENDER_ID, SENDER_NAME } from "@calcom/lib/constants"; -import { getBookerBaseUrl } from "@calcom/lib/getBookerUrl/server"; +import { getBookerBaseUrl } from "@calcom/features/ee/organizations/lib/getBookerUrlServer"; import getOrgIdFromMemberOrTeamId from "@calcom/lib/getOrgIdFromMemberOrTeamId"; import { getTeamIdFromEventType } from "@calcom/lib/getTeamIdFromEventType"; import { getTranslation } from "@calcom/lib/server/i18n"; -import { WorkflowRepository } from "@calcom/lib/server/repository/workflow"; +import { WorkflowRepository } from "@calcom/features/ee/workflows/repositories/WorkflowRepository"; import { getTimeFormatStringFromUserTimeFormat } from "@calcom/lib/timeFormat"; import prisma from "@calcom/prisma"; import { WorkflowType as PrismaWorkflowType, type Workflow } from "@calcom/prisma/client"; diff --git a/packages/ui/components/avatar/UserAvatarGroup.tsx b/packages/ui/components/avatar/UserAvatarGroup.tsx index fa30a6a27c..27cbd6b5f0 100644 --- a/packages/ui/components/avatar/UserAvatarGroup.tsx +++ b/packages/ui/components/avatar/UserAvatarGroup.tsx @@ -1,7 +1,7 @@ import { useEffect, useState } from "react"; import { getUserAvatarUrl } from "@calcom/lib/getAvatarUrl"; -import { getBookerBaseUrlSync } from "@calcom/lib/getBookerUrl/client"; +import { getBookerBaseUrlSync } from "@calcom/features/ee/organizations/lib/getBookerBaseUrlSync"; import type { User } from "@calcom/prisma/client"; import type { UserProfile } from "@calcom/types/UserProfile"; diff --git a/packages/ui/components/avatar/UserAvatarGroupWithOrg.tsx b/packages/ui/components/avatar/UserAvatarGroupWithOrg.tsx index 8319465b23..be1db5b8b8 100644 --- a/packages/ui/components/avatar/UserAvatarGroupWithOrg.tsx +++ b/packages/ui/components/avatar/UserAvatarGroupWithOrg.tsx @@ -1,7 +1,7 @@ import { useIsEmbed } from "@calcom/embed-core/embed-iframe"; import { getPlaceholderAvatar } from "@calcom/lib/defaultAvatarImage"; import { getUserAvatarUrl } from "@calcom/lib/getAvatarUrl"; -import { getBookerBaseUrlSync } from "@calcom/lib/getBookerUrl/client"; +import { getBookerBaseUrlSync } from "@calcom/features/ee/organizations/lib/getBookerBaseUrlSync"; import type { Team, User } from "@calcom/prisma/client"; import { AvatarGroup } from "./AvatarGroup";