diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 693c2f6845..525c155e22 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -24,10 +24,10 @@ /packages/embeds/**/* @calcom/Foundation /packages/features/auth/lib/next-auth-options.ts @calcom/Foundation /packages/features/bookings/lib/**/* @calcom/Foundation -/packages/lib/getAggregatedAvailability.ts @calcom/Foundation -/packages/lib/getUserAvailability.ts @calcom/Foundation -/packages/lib/server/getLuckyUser.ts @calcom/Foundation -/packages/lib/slots.ts @calcom/Foundation +/packages/features/availability/lib/getAggregatedAvailability/getAggregatedAvailability.ts @calcom/Foundation +/packages/features/availability/lib/getUserAvailability.ts @calcom/Foundation +/packages/features/bookings/lib/getLuckyUser.ts @calcom/Foundation +/packages/features/schedules/lib/slots.ts @calcom/Foundation /packages/platform/atoms/**/*WebWrapper.tsx @calcom/Consumer /packages/platform/**/* @calcom/Platform @calcom/Foundation /packages/prisma/**/* @calcom/Foundation diff --git a/apps/api/v1/pages/api/teams/[teamId]/_patch.ts b/apps/api/v1/pages/api/teams/[teamId]/_patch.ts index d7fe9e33e2..b588c0147a 100644 --- a/apps/api/v1/pages/api/teams/[teamId]/_patch.ts +++ b/apps/api/v1/pages/api/teams/[teamId]/_patch.ts @@ -1,10 +1,10 @@ import type { NextApiRequest } from "next"; import { purchaseTeamOrOrgSubscription } from "@calcom/features/ee/teams/lib/payments"; +import { TeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository"; import { IS_TEAM_BILLING_ENABLED } from "@calcom/lib/constants"; import { HttpError } from "@calcom/lib/http-error"; import { defaultResponder } from "@calcom/lib/server/defaultResponder"; -import { TeamRepository } from "@calcom/lib/server/repository/team"; import prisma from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; 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 7821e16c2e..fb608f3867 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 @@ -13,7 +13,7 @@ import { getTeamEventType } from "@calcom/features/eventtypes/lib/getTeamEventTy 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 { TeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository"; import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { prisma } from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; 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 8a8ae334b9..bca38f4981 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 @@ -4,7 +4,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 { TeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository"; 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/api/cron/credentials/route.ts b/apps/web/app/api/cron/credentials/route.ts index c771e4ec81..1ce4dc1ef8 100644 --- a/apps/web/app/api/cron/credentials/route.ts +++ b/apps/web/app/api/cron/credentials/route.ts @@ -6,11 +6,11 @@ import type { NextRequest } from "next/server"; import { NextResponse } from "next/server"; +import { CredentialRepository } from "@calcom/features/credentials/repositories/CredentialRepository"; +import { DelegationCredentialRepository } from "@calcom/features/delegation-credentials/repositories/DelegationCredentialRepository"; import { HttpError } from "@calcom/lib/http-error"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; -import { CredentialRepository } from "@calcom/lib/server/repository/credential"; -import { DelegationCredentialRepository } from "@calcom/lib/server/repository/delegationCredential"; import { defaultResponderForAppDir } from "../../defaultResponderForAppDir"; diff --git a/apps/web/app/api/cron/selected-calendars/route.ts b/apps/web/app/api/cron/selected-calendars/route.ts index b311a63dbe..22a91932c4 100644 --- a/apps/web/app/api/cron/selected-calendars/route.ts +++ b/apps/web/app/api/cron/selected-calendars/route.ts @@ -12,7 +12,7 @@ import { findUniqueDelegationCalendarCredential } from "@calcom/app-store/delega import { HttpError } from "@calcom/lib/http-error"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; -import { CredentialRepository } from "@calcom/lib/server/repository/credential"; +import { CredentialRepository } from "@calcom/features/credentials/repositories/CredentialRepository"; import { SelectedCalendarRepository } from "@calcom/lib/server/repository/selectedCalendar"; import type { CredentialForCalendarServiceWithEmail } from "@calcom/types/Credential"; import type { Ensure } from "@calcom/types/utils"; diff --git a/apps/web/lib/d/[link]/[slug]/getServerSideProps.tsx b/apps/web/lib/d/[link]/[slug]/getServerSideProps.tsx index 1eef2d3c00..7ea04380bd 100644 --- a/apps/web/lib/d/[link]/[slug]/getServerSideProps.tsx +++ b/apps/web/lib/d/[link]/[slug]/getServerSideProps.tsx @@ -8,12 +8,12 @@ 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 { HashedLinkService } from "@calcom/features/hashedLink/services/hashedLinkService"; 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"; import { RedirectType } from "@calcom/prisma/enums"; diff --git a/apps/web/lib/pages/auth/verify-email.test.ts b/apps/web/lib/pages/auth/verify-email.test.ts index ddd21bd9a6..d11e370cdd 100644 --- a/apps/web/lib/pages/auth/verify-email.test.ts +++ b/apps/web/lib/pages/auth/verify-email.test.ts @@ -1,4 +1,4 @@ -import { organizationScenarios } from "@calcom/lib/server/repository/__mocks__/organization"; +import { organizationScenarios } from "@calcom/features/ee/organizations/__mocks__/organizationMock"; import { describe, it, expect, beforeEach, vi } from "vitest"; diff --git a/apps/web/lib/reschedule/[uid]/getServerSideProps.ts b/apps/web/lib/reschedule/[uid]/getServerSideProps.ts index 65d40b6233..5c69b8a7c7 100644 --- a/apps/web/lib/reschedule/[uid]/getServerSideProps.ts +++ b/apps/web/lib/reschedule/[uid]/getServerSideProps.ts @@ -4,11 +4,11 @@ import { URLSearchParams } from "url"; import { z } from "zod"; import { getServerSession } from "@calcom/features/auth/lib/getServerSession"; +import { buildEventUrlFromBooking } from "@calcom/features/bookings/lib/buildEventUrlFromBooking"; import { determineReschedulePreventionRedirect } from "@calcom/features/bookings/lib/reschedule/determineReschedulePreventionRedirect"; 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/features/users/repositories/UserRepository"; +import { maybeGetBookingUidFromSeat } from "@calcom/lib/server/maybeGetBookingUidFromSeat"; import prisma, { bookingMinimalSelect } from "@calcom/prisma"; const querySchema = z.object({ diff --git a/apps/web/modules/bookings/views/bookings-single-view.tsx b/apps/web/modules/bookings/views/bookings-single-view.tsx index 3317f24999..6eb21c2e23 100644 --- a/apps/web/modules/bookings/views/bookings-single-view.tsx +++ b/apps/web/modules/bookings/views/bookings-single-view.tsx @@ -24,9 +24,13 @@ import { import { Price } from "@calcom/features/bookings/components/event-meta/Price"; import { getCalendarLinks, CalendarLinkType } from "@calcom/features/bookings/lib/getCalendarLinks"; import { RATING_OPTIONS, validateRating } from "@calcom/features/bookings/lib/rating"; +import { + SMS_REMINDER_NUMBER_FIELD, + SystemField, + TITLE_FIELD, +} from "@calcom/lib/bookings/SystemField"; 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"; @@ -767,7 +771,7 @@ export default function Success(props: PageProps) {
+ href="https://cal.com/blog/google-s-new-spam-policy-may-be-affecting-your-invitations" rel="noreferrer"> {t("resolve")} diff --git a/apps/web/modules/settings/teams/[id]/event-types-view.tsx b/apps/web/modules/settings/teams/[id]/event-types-view.tsx index f030184230..c06a3afbcc 100644 --- a/apps/web/modules/settings/teams/[id]/event-types-view.tsx +++ b/apps/web/modules/settings/teams/[id]/event-types-view.tsx @@ -4,8 +4,8 @@ import { useRouter } from "next/navigation"; import { useOrgBranding } from "@calcom/features/ee/organizations/context/provider"; import { TeamEventTypeForm } from "@calcom/features/ee/teams/components/TeamEventTypeForm"; +import { useCreateEventType } from "@calcom/features/eventtypes/hooks/useCreateEventType"; import { useCompatSearchParams } from "@calcom/lib/hooks/useCompatSearchParams"; -import { useCreateEventType } from "@calcom/lib/hooks/useCreateEventType"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; import { Button } from "@calcom/ui/components/button"; diff --git a/apps/web/modules/test-setup.ts b/apps/web/modules/test-setup.ts index 76546ef66b..8b05766057 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/lib/SystemField", () => { +vi.mock("@calcom/lib/bookings/SystemField", () => { return {}; }); diff --git a/packages/app-store/_utils/installation.ts b/packages/app-store/_utils/installation.ts index 4d77769d77..611155c637 100644 --- a/packages/app-store/_utils/installation.ts +++ b/packages/app-store/_utils/installation.ts @@ -1,5 +1,5 @@ import { HttpError } from "@calcom/lib/http-error"; -import { CredentialRepository } from "@calcom/lib/server/repository/credential"; +import { CredentialRepository } from "@calcom/features/credentials/repositories/CredentialRepository"; import prisma from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; import type { UserProfile } from "@calcom/types/UserProfile"; diff --git a/packages/app-store/_utils/oauth/getCurrentTokenObject.ts b/packages/app-store/_utils/oauth/getCurrentTokenObject.ts index 1e6110bf36..a19095f64d 100644 --- a/packages/app-store/_utils/oauth/getCurrentTokenObject.ts +++ b/packages/app-store/_utils/oauth/getCurrentTokenObject.ts @@ -1,6 +1,6 @@ import { isInMemoryDelegationCredential } from "@calcom/lib/delegationCredential"; import logger from "@calcom/lib/logger"; -import { CredentialRepository } from "@calcom/lib/server/repository/credential"; +import { CredentialRepository } from "@calcom/features/credentials/repositories/CredentialRepository"; import type { CredentialForCalendarService } from "@calcom/types/Credential"; import { getTokenObjectFromCredential } from "./getTokenObjectFromCredential"; diff --git a/packages/app-store/_utils/oauth/updateTokenObject.ts b/packages/app-store/_utils/oauth/updateTokenObject.ts index d7ba4ef603..2ca29cd597 100644 --- a/packages/app-store/_utils/oauth/updateTokenObject.ts +++ b/packages/app-store/_utils/oauth/updateTokenObject.ts @@ -1,7 +1,7 @@ import type z from "zod"; import logger from "@calcom/lib/logger"; -import { CredentialRepository } from "@calcom/lib/server/repository/credential"; +import { CredentialRepository } from "@calcom/features/credentials/repositories/CredentialRepository"; import { prisma } from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; diff --git a/packages/app-store/btcpayserver/pages/setup/_getServerSideProps.tsx b/packages/app-store/btcpayserver/pages/setup/_getServerSideProps.tsx index 5e79d6945b..800c595065 100644 --- a/packages/app-store/btcpayserver/pages/setup/_getServerSideProps.tsx +++ b/packages/app-store/btcpayserver/pages/setup/_getServerSideProps.tsx @@ -2,7 +2,7 @@ import type { GetServerSidePropsContext } from "next"; import { z } from "zod"; import { getServerSession } from "@calcom/features/auth/lib/getServerSession"; -import { CredentialRepository } from "@calcom/lib/server/repository/credential"; +import { CredentialRepository } from "@calcom/features/credentials/repositories/CredentialRepository"; import { btcpayCredentialKeysSchema } from "../../lib/btcpayCredentialKeysSchema"; diff --git a/packages/app-store/delegationCredential.test.ts b/packages/app-store/delegationCredential.test.ts index 7fde091e8d..37f09eece3 100644 --- a/packages/app-store/delegationCredential.test.ts +++ b/packages/app-store/delegationCredential.test.ts @@ -4,8 +4,8 @@ import { describe, it, expect, beforeEach, vi } from "vitest"; import { metadata as googleCalendarMetadata } from "@calcom/app-store/googlecalendar/_metadata"; 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 type { ServiceAccountKey } from "@calcom/features/delegation-credentials/repositories/DelegationCredentialRepository"; +import { DelegationCredentialRepository } from "@calcom/features/delegation-credentials/repositories/DelegationCredentialRepository"; import { OrganizationRepository } from "@calcom/features/ee/organizations/repositories/OrganizationRepository"; import { SMSLockState, RRTimestampBasis } from "@calcom/prisma/enums"; import type { CredentialForCalendarService, CredentialPayload } from "@calcom/types/Credential"; @@ -28,7 +28,7 @@ vi.mock("@calcom/features/ee/organizations/repositories/OrganizationRepository", })); // Mock DelegationCredentialRepository -vi.mock("@calcom/lib/server/repository/delegationCredential", () => ({ +vi.mock("@calcom/features/delegation-credentials/repositories/DelegationCredentialRepository", () => ({ DelegationCredentialRepository: { findUniqueByOrgMemberEmailIncludeSensitiveServiceAccountKey: vi.fn(), findUniqueByOrganizationIdAndDomainIncludeSensitiveServiceAccountKey: vi.fn(), diff --git a/packages/app-store/delegationCredential.ts b/packages/app-store/delegationCredential.ts index 3642c6afa8..b0bdefb1bf 100644 --- a/packages/app-store/delegationCredential.ts +++ b/packages/app-store/delegationCredential.ts @@ -10,9 +10,9 @@ import { } from "@calcom/lib/delegationCredential"; import logger from "@calcom/lib/logger"; 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 { CredentialRepository } from "@calcom/features/credentials/repositories/CredentialRepository"; +import type { ServiceAccountKey } from "@calcom/features/delegation-credentials/repositories/DelegationCredentialRepository"; +import { DelegationCredentialRepository } from "@calcom/features/delegation-credentials/repositories/DelegationCredentialRepository"; import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { prisma } from "@calcom/prisma"; import type { SelectedCalendar } from "@calcom/prisma/client"; diff --git a/packages/app-store/dub/lib/AnalyticsService.ts b/packages/app-store/dub/lib/AnalyticsService.ts index 14af8e6b50..71fd037a8b 100644 --- a/packages/app-store/dub/lib/AnalyticsService.ts +++ b/packages/app-store/dub/lib/AnalyticsService.ts @@ -1,7 +1,7 @@ import { Dub } from "dub-package"; import logger from "@calcom/lib/logger"; -import { CredentialRepository } from "@calcom/lib/server/repository/credential"; +import { CredentialRepository } from "@calcom/features/credentials/repositories/CredentialRepository"; import type { AnalyticsService, SendEventProps } from "@calcom/types/AnalyticsService"; import type { CredentialPayload } from "@calcom/types/Credential"; diff --git a/packages/app-store/googlecalendar/api/callback.ts b/packages/app-store/googlecalendar/api/callback.ts index 85c3ba0be6..283841c6b5 100644 --- a/packages/app-store/googlecalendar/api/callback.ts +++ b/packages/app-store/googlecalendar/api/callback.ts @@ -14,7 +14,7 @@ import { getSafeRedirectUrl } from "@calcom/lib/getSafeRedirectUrl"; import { HttpError } from "@calcom/lib/http-error"; import { defaultHandler } from "@calcom/lib/server/defaultHandler"; import { defaultResponder } from "@calcom/lib/server/defaultResponder"; -import { CredentialRepository } from "@calcom/lib/server/repository/credential"; +import { CredentialRepository } from "@calcom/features/credentials/repositories/CredentialRepository"; import { Prisma } from "@calcom/prisma/client"; import getInstalledAppPath from "../../_utils/getInstalledAppPath"; diff --git a/packages/app-store/hubspot/lib/CrmService.ts b/packages/app-store/hubspot/lib/CrmService.ts index e94849f34d..4c75cde940 100644 --- a/packages/app-store/hubspot/lib/CrmService.ts +++ b/packages/app-store/hubspot/lib/CrmService.ts @@ -7,8 +7,8 @@ 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 getLabelValueMapFromResponses from "@calcom/lib/bookings/getLabelValueMapFromResponses"; import { WEBAPP_URL } from "@calcom/lib/constants"; import { HttpError } from "@calcom/lib/http-error"; import logger from "@calcom/lib/logger"; diff --git a/packages/app-store/routing-forms/api/responses/[formId].ts b/packages/app-store/routing-forms/api/responses/[formId].ts index 8bfb73d675..0d07bdce73 100644 --- a/packages/app-store/routing-forms/api/responses/[formId].ts +++ b/packages/app-store/routing-forms/api/responses/[formId].ts @@ -1,8 +1,11 @@ import type { NextApiRequest, NextApiResponse } from "next"; import { getSession } from "next-auth/react"; +import { + entityPrismaWhereClause, + canEditEntity, +} from "@calcom/features/pbac/lib/entityPermissionUtils.server"; import { sanitizeValue } from "@calcom/lib/csvUtils"; -import { entityPrismaWhereClause, canEditEntity } from "@calcom/lib/entityPermissionUtils.server"; import prisma from "@calcom/prisma"; import type { App_RoutingForms_Form } from "@calcom/prisma/client"; diff --git a/packages/app-store/routing-forms/lib/formSubmissionUtils.test.ts b/packages/app-store/routing-forms/lib/formSubmissionUtils.test.ts index 03adbcd2a8..b2b77bb137 100644 --- a/packages/app-store/routing-forms/lib/formSubmissionUtils.test.ts +++ b/packages/app-store/routing-forms/lib/formSubmissionUtils.test.ts @@ -3,9 +3,9 @@ import { prisma } from "@calcom/prisma/__mocks__/prisma"; import { describe, it, vi, expect, beforeEach, afterEach } from "vitest"; +import { WorkflowService } from "@calcom/features/ee/workflows/lib/service/WorkflowService"; import getWebhooks from "@calcom/features/webhooks/lib/getWebhooks"; import { sendGenericWebhookPayload } from "@calcom/features/webhooks/lib/sendPayload"; -import { WorkflowService } from "@calcom/lib/server/service/workflows"; import { WebhookTriggerEvents, WorkflowTriggerEvents, @@ -37,7 +37,7 @@ vi.mock("@calcom/features/tasker", () => { }); // Mock workflow dependencies -vi.mock("@calcom/lib/server/service/workflows", () => ({ +vi.mock("@calcom/features/ee/workflows/lib/service/WorkflowService", () => ({ WorkflowService: { getAllWorkflowsFromRoutingForm: vi.fn(() => Promise.resolve([])), scheduleFormWorkflows: vi.fn(() => Promise.resolve()), diff --git a/packages/app-store/routing-forms/lib/formSubmissionUtils.ts b/packages/app-store/routing-forms/lib/formSubmissionUtils.ts index 8c24ece10c..b05b86816c 100644 --- a/packages/app-store/routing-forms/lib/formSubmissionUtils.ts +++ b/packages/app-store/routing-forms/lib/formSubmissionUtils.ts @@ -6,7 +6,7 @@ import getOrgIdFromMemberOrTeamId from "@calcom/lib/getOrgIdFromMemberOrTeamId"; import { HttpError } from "@calcom/lib/http-error"; import logger from "@calcom/lib/logger"; import { withReporting } from "@calcom/lib/sentryWrapper"; -import { WorkflowService } from "@calcom/lib/server/service/workflows"; +import { WorkflowService } from "@calcom/features/ee/workflows/lib/service/WorkflowService"; import { prisma } from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; import type { App_RoutingForms_Form, User } from "@calcom/prisma/client"; diff --git a/packages/app-store/routing-forms/lib/getSerializableForm.ts b/packages/app-store/routing-forms/lib/getSerializableForm.ts index 7c146a6b4a..b9846a41a5 100644 --- a/packages/app-store/routing-forms/lib/getSerializableForm.ts +++ b/packages/app-store/routing-forms/lib/getSerializableForm.ts @@ -1,6 +1,6 @@ import type { z } from "zod"; -import { entityPrismaWhereClause } from "@calcom/lib/entityPermissionUtils.server"; +import { entityPrismaWhereClause } from "@calcom/features/pbac/lib/entityPermissionUtils.server"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import type { App_RoutingForms_Form } from "@calcom/prisma/client"; diff --git a/packages/app-store/routing-forms/lib/isFormCreateEditAllowed.ts b/packages/app-store/routing-forms/lib/isFormCreateEditAllowed.ts index 7460c92040..3d687b57ec 100644 --- a/packages/app-store/routing-forms/lib/isFormCreateEditAllowed.ts +++ b/packages/app-store/routing-forms/lib/isFormCreateEditAllowed.ts @@ -1,4 +1,4 @@ -import { canCreateEntity, canEditEntity } from "@calcom/lib/entityPermissionUtils.server"; +import { canCreateEntity, canEditEntity } from "@calcom/features/pbac/lib/entityPermissionUtils.server"; import prisma from "@calcom/prisma"; import type { App_RoutingForms_Form, User } from "@calcom/prisma/client"; diff --git a/packages/app-store/salesforce/lib/routingForm/incompleteBookingAction.ts b/packages/app-store/salesforce/lib/routingForm/incompleteBookingAction.ts index ae440c5578..e08a2f28ff 100644 --- a/packages/app-store/salesforce/lib/routingForm/incompleteBookingAction.ts +++ b/packages/app-store/salesforce/lib/routingForm/incompleteBookingAction.ts @@ -1,4 +1,4 @@ -import { CredentialRepository } from "@calcom/lib/server/repository/credential"; +import { CredentialRepository } from "@calcom/features/credentials/repositories/CredentialRepository"; import logger from "@calcom/lib/logger"; import { routingFormIncompleteBookingDataSchema } from "../../zod"; diff --git a/packages/app-store/salesforce/lib/routingFormBookingFormHandler.ts b/packages/app-store/salesforce/lib/routingFormBookingFormHandler.ts index 01cc317aa3..53c4ed052b 100644 --- a/packages/app-store/salesforce/lib/routingFormBookingFormHandler.ts +++ b/packages/app-store/salesforce/lib/routingFormBookingFormHandler.ts @@ -1,4 +1,4 @@ -import { CredentialRepository } from "@calcom/lib/server/repository/credential"; +import { CredentialRepository } from "@calcom/features/credentials/repositories/CredentialRepository"; import type { AttributeRoutingConfig } from "../../routing-forms/types/types"; import SalesforceCRMService from "./CrmService"; diff --git a/packages/app-store/stripepayment/api/__tests__/portal.test.ts b/packages/app-store/stripepayment/api/__tests__/portal.test.ts index 8c13dc3c14..5d9880ce12 100644 --- a/packages/app-store/stripepayment/api/__tests__/portal.test.ts +++ b/packages/app-store/stripepayment/api/__tests__/portal.test.ts @@ -4,7 +4,7 @@ import { describe, it, expect, vi, beforeEach } from "vitest"; import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; import { WEBAPP_URL } from "@calcom/lib/constants"; -import { TeamRepository } from "@calcom/lib/server/repository/team"; +import { TeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository"; import { MembershipRole } from "@calcom/prisma/enums"; import { @@ -18,7 +18,7 @@ import { validateAuthentication, buildReturnUrl } from "../portal"; // Mock dependencies vi.mock("@calcom/features/pbac/services/permission-check.service"); -vi.mock("@calcom/lib/server/repository/team"); +vi.mock("@calcom/features/ee/teams/repositories/TeamRepository"); vi.mock("../../lib/customer"); vi.mock("../../lib/server"); vi.mock("../../lib/subscriptions"); diff --git a/packages/app-store/stripepayment/lib/services/base/BillingPortalService.ts b/packages/app-store/stripepayment/lib/services/base/BillingPortalService.ts index d89afcc68d..4b92f57697 100644 --- a/packages/app-store/stripepayment/lib/services/base/BillingPortalService.ts +++ b/packages/app-store/stripepayment/lib/services/base/BillingPortalService.ts @@ -4,7 +4,7 @@ import { PermissionCheckService } from "@calcom/features/pbac/services/permissio import { WEBAPP_URL } from "@calcom/lib/constants"; import { getSafeRedirectUrl } from "@calcom/lib/getSafeRedirectUrl"; import logger from "@calcom/lib/logger"; -import { TeamRepository } from "@calcom/lib/server/repository/team"; +import { TeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository"; import prisma from "@calcom/prisma"; import stripe from "../../server"; diff --git a/packages/app-store/stripepayment/lib/services/factory/BillingPortalServiceFactory.ts b/packages/app-store/stripepayment/lib/services/factory/BillingPortalServiceFactory.ts index ece4731ebd..4611c74cad 100644 --- a/packages/app-store/stripepayment/lib/services/factory/BillingPortalServiceFactory.ts +++ b/packages/app-store/stripepayment/lib/services/factory/BillingPortalServiceFactory.ts @@ -1,4 +1,4 @@ -import { TeamRepository } from "@calcom/lib/server/repository/team"; +import { TeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository"; import prisma from "@calcom/prisma"; import type { BillingPortalService } from "../base/BillingPortalService"; diff --git a/packages/emails/src/components/UserFieldsResponses.tsx b/packages/emails/src/components/UserFieldsResponses.tsx index 8312b6441c..f656c3ec3e 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/features/bookings/lib/getLabelValueMapFromResponses"; +import getLabelValueMapFromResponses from "@calcom/lib/bookings/getLabelValueMapFromResponses"; import type { CalendarEvent } from "@calcom/types/Calendar"; import { Info } from "./Info"; diff --git a/packages/features/auth/lib/next-auth-options.ts b/packages/features/auth/lib/next-auth-options.ts index 867ffd42df..bd27b53b3e 100644 --- a/packages/features/auth/lib/next-auth-options.ts +++ b/packages/features/auth/lib/next-auth-options.ts @@ -32,7 +32,7 @@ import logger from "@calcom/lib/logger"; import { randomString } from "@calcom/lib/random"; import { safeStringify } from "@calcom/lib/safeStringify"; import { hashEmail } from "@calcom/lib/server/PiiHasher"; -import { CredentialRepository } from "@calcom/lib/server/repository/credential"; +import { CredentialRepository } from "@calcom/features/credentials/repositories/CredentialRepository"; import { DeploymentRepository } from "@calcom/lib/server/repository/deployment"; import { OrganizationRepository } from "@calcom/features/ee/organizations/repositories/OrganizationRepository"; import { ProfileRepository } from "@calcom/features/profile/repositories/ProfileRepository"; diff --git a/packages/features/auth/signup/handlers/calcomHandler.ts b/packages/features/auth/signup/handlers/calcomHandler.ts index c6c87c965e..76a95feb71 100644 --- a/packages/features/auth/signup/handlers/calcomHandler.ts +++ b/packages/features/auth/signup/handlers/calcomHandler.ts @@ -6,6 +6,7 @@ import { getLocaleFromRequest } from "@calcom/features/auth/lib/getLocaleFromReq 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"; +import { validateAndGetCorrectedUsernameAndEmail } from "@calcom/features/auth/signup/utils/validateUsername"; import { StripeBillingService } from "@calcom/features/ee/billing/stripe-billing-service"; import { sentrySpan } from "@calcom/features/watchlist/lib/telemetry"; import { checkIfEmailIsBlockedInWatchlistController } from "@calcom/features/watchlist/operations/check-if-email-in-watchlist.controller"; @@ -15,7 +16,6 @@ import { HttpError } from "@calcom/lib/http-error"; import logger from "@calcom/lib/logger"; import type { CustomNextApiHandler } from "@calcom/lib/server/username"; import { usernameHandler } from "@calcom/lib/server/username"; -import { validateAndGetCorrectedUsernameAndEmail } from "@calcom/lib/validateUsername"; import { prisma } from "@calcom/prisma"; import { CreationSource } from "@calcom/prisma/enums"; import { IdentityProvider } from "@calcom/prisma/enums"; diff --git a/packages/features/auth/signup/handlers/selfHostedHandler.ts b/packages/features/auth/signup/handlers/selfHostedHandler.ts index 6b2028b2e8..5bfc23335c 100644 --- a/packages/features/auth/signup/handlers/selfHostedHandler.ts +++ b/packages/features/auth/signup/handlers/selfHostedHandler.ts @@ -3,12 +3,12 @@ import { NextResponse } from "next/server"; import { checkPremiumUsername } from "@calcom/ee/common/lib/checkPremiumUsername"; import { sendEmailVerification } from "@calcom/features/auth/lib/verifyEmail"; import { createOrUpdateMemberships } from "@calcom/features/auth/signup/utils/createOrUpdateMemberships"; +import { validateAndGetCorrectedUsernameAndEmail } from "@calcom/features/auth/signup/utils/validateUsername"; import { hashPassword } from "@calcom/lib/auth/hashPassword"; import { IS_PREMIUM_USERNAME_ENABLED } from "@calcom/lib/constants"; import logger from "@calcom/lib/logger"; import { isUsernameReservedDueToMigration } from "@calcom/lib/server/username"; import slugify from "@calcom/lib/slugify"; -import { validateAndGetCorrectedUsernameAndEmail } from "@calcom/lib/validateUsername"; import prisma from "@calcom/prisma"; import { IdentityProvider } from "@calcom/prisma/enums"; import { signupSchema } from "@calcom/prisma/zod-utils"; diff --git a/packages/features/auth/signup/utils/token.ts b/packages/features/auth/signup/utils/token.ts index 88c23c34e8..843a5d6e87 100644 --- a/packages/features/auth/signup/utils/token.ts +++ b/packages/features/auth/signup/utils/token.ts @@ -1,6 +1,6 @@ import dayjs from "@calcom/dayjs"; +import { validateAndGetCorrectedUsernameInTeam } from "@calcom/features/auth/signup/utils/validateUsername"; import { HttpError } from "@calcom/lib/http-error"; -import { validateAndGetCorrectedUsernameInTeam } from "@calcom/lib/validateUsername"; import { prisma } from "@calcom/prisma"; export async function findTokenByToken({ token }: { token: string }) { diff --git a/packages/lib/validateUsername.ts b/packages/features/auth/signup/utils/validateUsername.ts similarity index 100% rename from packages/lib/validateUsername.ts rename to packages/features/auth/signup/utils/validateUsername.ts diff --git a/packages/lib/getAggregatedAvailability/date-range-utils/filterRedundantDateRanges.test.ts b/packages/features/availability/lib/getAggregatedAvailability/date-range-utils/filterRedundantDateRanges.test.ts similarity index 100% rename from packages/lib/getAggregatedAvailability/date-range-utils/filterRedundantDateRanges.test.ts rename to packages/features/availability/lib/getAggregatedAvailability/date-range-utils/filterRedundantDateRanges.test.ts diff --git a/packages/lib/getAggregatedAvailability/date-range-utils/filterRedundantDateRanges.ts b/packages/features/availability/lib/getAggregatedAvailability/date-range-utils/filterRedundantDateRanges.ts similarity index 95% rename from packages/lib/getAggregatedAvailability/date-range-utils/filterRedundantDateRanges.ts rename to packages/features/availability/lib/getAggregatedAvailability/date-range-utils/filterRedundantDateRanges.ts index 7bde5594f2..f1706f7dec 100644 --- a/packages/lib/getAggregatedAvailability/date-range-utils/filterRedundantDateRanges.ts +++ b/packages/features/availability/lib/getAggregatedAvailability/date-range-utils/filterRedundantDateRanges.ts @@ -1,4 +1,4 @@ -import type { DateRange } from "@calcom/lib/date-ranges"; +import type { DateRange } from "@calcom/features/schedules/lib/date-ranges"; import { IntervalTree, ContainmentSearchAlgorithm, createIntervalNodes } from "@calcom/lib/intervalTree"; /** diff --git a/packages/lib/getAggregatedAvailability/date-range-utils/mergeOverlappingDateRanges.test.ts b/packages/features/availability/lib/getAggregatedAvailability/date-range-utils/mergeOverlappingDateRanges.test.ts similarity index 97% rename from packages/lib/getAggregatedAvailability/date-range-utils/mergeOverlappingDateRanges.test.ts rename to packages/features/availability/lib/getAggregatedAvailability/date-range-utils/mergeOverlappingDateRanges.test.ts index 2aa8cc6809..1fe980f1c7 100644 --- a/packages/lib/getAggregatedAvailability/date-range-utils/mergeOverlappingDateRanges.test.ts +++ b/packages/features/availability/lib/getAggregatedAvailability/date-range-utils/mergeOverlappingDateRanges.test.ts @@ -1,7 +1,7 @@ import { describe, it, expect } from "vitest"; import dayjs from "@calcom/dayjs"; -import type { DateRange } from "@calcom/lib/date-ranges"; +import type { DateRange } from "@calcom/features/schedules/lib/date-ranges"; import { mergeOverlappingDateRanges } from "./mergeOverlappingDateRanges"; diff --git a/packages/lib/getAggregatedAvailability/date-range-utils/mergeOverlappingDateRanges.ts b/packages/features/availability/lib/getAggregatedAvailability/date-range-utils/mergeOverlappingDateRanges.ts similarity index 92% rename from packages/lib/getAggregatedAvailability/date-range-utils/mergeOverlappingDateRanges.ts rename to packages/features/availability/lib/getAggregatedAvailability/date-range-utils/mergeOverlappingDateRanges.ts index 21199be158..7f2411d33c 100644 --- a/packages/lib/getAggregatedAvailability/date-range-utils/mergeOverlappingDateRanges.ts +++ b/packages/features/availability/lib/getAggregatedAvailability/date-range-utils/mergeOverlappingDateRanges.ts @@ -1,4 +1,4 @@ -import type { DateRange } from "@calcom/lib/date-ranges"; +import type { DateRange } from "@calcom/features/schedules/lib/date-ranges"; export function mergeOverlappingDateRanges(dateRanges: DateRange[]) { dateRanges.sort((a, b) => a.start.valueOf() - b.start.valueOf()); diff --git a/packages/lib/getAggregatedAvailability.test.ts b/packages/features/availability/lib/getAggregatedAvailability/getAggregatedAvailability.test.ts similarity index 100% rename from packages/lib/getAggregatedAvailability.test.ts rename to packages/features/availability/lib/getAggregatedAvailability/getAggregatedAvailability.test.ts diff --git a/packages/lib/getAggregatedAvailability.ts b/packages/features/availability/lib/getAggregatedAvailability/getAggregatedAvailability.ts similarity index 87% rename from packages/lib/getAggregatedAvailability.ts rename to packages/features/availability/lib/getAggregatedAvailability/getAggregatedAvailability.ts index e78f5d1982..ad3afaa1e2 100644 --- a/packages/lib/getAggregatedAvailability.ts +++ b/packages/features/availability/lib/getAggregatedAvailability/getAggregatedAvailability.ts @@ -1,10 +1,10 @@ +import type { DateRange } from "@calcom/features/schedules/lib/date-ranges"; +import { intersect } from "@calcom/features/schedules/lib/date-ranges"; import { DEFAULT_GROUP_ID } from "@calcom/lib/constants"; -import type { DateRange } from "@calcom/lib/date-ranges"; -import { intersect } from "@calcom/lib/date-ranges"; import { SchedulingType } from "@calcom/prisma/enums"; -import { filterRedundantDateRanges } from "./getAggregatedAvailability/date-range-utils/filterRedundantDateRanges"; -import { mergeOverlappingDateRanges } from "./getAggregatedAvailability/date-range-utils/mergeOverlappingDateRanges"; +import { filterRedundantDateRanges } from "./date-range-utils/filterRedundantDateRanges"; +import { mergeOverlappingDateRanges } from "./date-range-utils/mergeOverlappingDateRanges"; function uniqueAndSortedDateRanges(ranges: DateRange[]): DateRange[] { const seen = new Set(); diff --git a/packages/features/availability/lib/getUserAvailability.ts b/packages/features/availability/lib/getUserAvailability.ts index 8d97a1540d..f135e61159 100644 --- a/packages/features/availability/lib/getUserAvailability.ts +++ b/packages/features/availability/lib/getUserAvailability.ts @@ -12,9 +12,9 @@ import { 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 type { DateOverride, WorkingHours } from "@calcom/features/schedules/lib/date-ranges"; +import { buildDateRanges, subtract } from "@calcom/features/schedules/lib/date-ranges"; import { getWorkingHours } from "@calcom/lib/availability"; -import type { DateOverride, WorkingHours } from "@calcom/lib/date-ranges"; -import { buildDateRanges, subtract } from "@calcom/lib/date-ranges"; import { stringToDayjsZod } from "@calcom/lib/dayjs"; import { ErrorCode } from "@calcom/lib/errorCodes"; import { HttpError } from "@calcom/lib/http-error"; @@ -641,9 +641,9 @@ export class UserAvailabilityService { // you can obtain that from user availability defined outside of here fromUser: { id: user.id, displayName: user.name }, // optional chaining destructuring toUser - toUser: !!toUser ? { id: toUser.id, displayName: toUser.name, username: toUser.username } : null, - reason: !!reason ? reason.reason : null, - emoji: !!reason ? reason.emoji : null, + toUser: toUser ? { id: toUser.id, displayName: toUser.name, username: toUser.username } : null, + reason: reason ? reason.reason : null, + emoji: reason ? reason.emoji : null, }; } diff --git a/packages/features/bookings/Booker/components/BookEventForm/BookingFields.tsx b/packages/features/bookings/Booker/components/BookEventForm/BookingFields.tsx index 4712b0bfb6..3b7195ef78 100644 --- a/packages/features/bookings/Booker/components/BookEventForm/BookingFields.tsx +++ b/packages/features/bookings/Booker/components/BookEventForm/BookingFields.tsx @@ -8,7 +8,7 @@ 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 { SystemField } from "@calcom/lib/bookings/SystemField"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { markdownToSafeHTML } from "@calcom/lib/markdownToSafeHTML"; import type { RouterOutputs } from "@calcom/trpc/react"; diff --git a/packages/features/bookings/lib/EventManager.ts b/packages/features/bookings/lib/EventManager.ts index f0819ec771..fe254500a2 100644 --- a/packages/features/bookings/lib/EventManager.ts +++ b/packages/features/bookings/lib/EventManager.ts @@ -24,7 +24,7 @@ import { getPiiFreeCalendarEvent, } from "@calcom/lib/piiFreeData"; import { safeStringify } from "@calcom/lib/safeStringify"; -import { CredentialRepository } from "@calcom/lib/server/repository/credential"; +import { CredentialRepository } from "@calcom/features/credentials/repositories/CredentialRepository"; import { prisma } from "@calcom/prisma"; import type { DestinationCalendar, BookingReference } from "@calcom/prisma/client"; import { createdEventSchema } from "@calcom/prisma/zod-utils"; diff --git a/packages/lib/bookings/buildEventUrlFromBooking.test.ts b/packages/features/bookings/lib/buildEventUrlFromBooking.test.ts similarity index 100% rename from packages/lib/bookings/buildEventUrlFromBooking.test.ts rename to packages/features/bookings/lib/buildEventUrlFromBooking.test.ts diff --git a/packages/lib/bookings/buildEventUrlFromBooking.ts b/packages/features/bookings/lib/buildEventUrlFromBooking.ts similarity index 97% rename from packages/lib/bookings/buildEventUrlFromBooking.ts rename to packages/features/bookings/lib/buildEventUrlFromBooking.ts index c7c722910f..cf5e375485 100644 --- a/packages/lib/bookings/buildEventUrlFromBooking.ts +++ b/packages/features/bookings/lib/buildEventUrlFromBooking.ts @@ -1,8 +1,7 @@ import { getBookerBaseUrl } from "@calcom/features/ee/organizations/lib/getBookerUrlServer"; +import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; -import logger from "../logger"; - type BookingEventType = { slug: string; team: { diff --git a/packages/lib/bookings/getAllUserBookings.ts b/packages/features/bookings/lib/getAllUserBookings.ts similarity index 100% rename from packages/lib/bookings/getAllUserBookings.ts rename to packages/features/bookings/lib/getAllUserBookings.ts diff --git a/packages/features/bookings/lib/getBookingFields.ts b/packages/features/bookings/lib/getBookingFields.ts index 6897f69922..d3639ecda0 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/lib/SystemField"; +} from "@calcom/lib/bookings/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/getBookingResponsesSchema.ts b/packages/features/bookings/lib/getBookingResponsesSchema.ts index d726922455..249806982a 100644 --- a/packages/features/bookings/lib/getBookingResponsesSchema.ts +++ b/packages/features/bookings/lib/getBookingResponsesSchema.ts @@ -2,7 +2,8 @@ import { isValidPhoneNumber } from "libphonenumber-js"; import z from "zod"; import type { ALL_VIEWS } from "@calcom/features/form-builder/schema"; -import { dbReadResponseSchema, fieldTypesSchemaMap } from "@calcom/features/form-builder/schema"; +import { fieldTypesSchemaMap } from "@calcom/features/form-builder/schema"; +import { dbReadResponseSchema } from "@calcom/lib/dbReadResponseSchema"; import type { eventTypeBookingFields } from "@calcom/prisma/zod-utils"; import { bookingResponses, emailSchemaRefinement } from "@calcom/prisma/zod-utils"; diff --git a/packages/features/bookings/lib/getCalEventResponses.ts b/packages/features/bookings/lib/getCalEventResponses.ts index 912286a83a..14fe2a7665 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/lib/SystemField"; +import { SystemField } from "@calcom/lib/bookings/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/features/bookings/lib/getLuckyUser.ts b/packages/features/bookings/lib/getLuckyUser.ts index c355affa9f..ceb7a27540 100644 --- a/packages/features/bookings/lib/getLuckyUser.ts +++ b/packages/features/bookings/lib/getLuckyUser.ts @@ -3,7 +3,7 @@ import type { FormResponse, Fields } from "@calcom/app-store/routing-forms/types import { zodRoutes } from "@calcom/app-store/routing-forms/zod"; import dayjs from "@calcom/dayjs"; import { getBusyCalendarTimes } from "@calcom/features/calendars/lib/CalendarManager"; -import { mergeOverlappingRanges } from "@calcom/lib/date-ranges"; +import { mergeOverlappingRanges } from "@calcom/features/schedules/lib/date-ranges"; import logger from "@calcom/lib/logger"; import { raqbQueryValueSchema } from "@calcom/lib/raqb/zod"; import { safeStringify } from "@calcom/lib/safeStringify"; diff --git a/packages/features/bookings/lib/handleBookingRequested.ts b/packages/features/bookings/lib/handleBookingRequested.ts index a09629a7e1..d9813ce6f9 100644 --- a/packages/features/bookings/lib/handleBookingRequested.ts +++ b/packages/features/bookings/lib/handleBookingRequested.ts @@ -6,7 +6,7 @@ import sendPayload from "@calcom/features/webhooks/lib/sendOrSchedulePayload"; import getOrgIdFromMemberOrTeamId from "@calcom/lib/getOrgIdFromMemberOrTeamId"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; -import { WorkflowService } from "@calcom/lib/server/service/workflows"; +import { WorkflowService } from "@calcom/features/ee/workflows/lib/service/WorkflowService"; import type { Prisma } from "@calcom/prisma/client"; import { WebhookTriggerEvents, WorkflowTriggerEvents } from "@calcom/prisma/enums"; import type { EventTypeMetadata } from "@calcom/prisma/zod-utils"; diff --git a/packages/features/bookings/lib/handleConfirmation.ts b/packages/features/bookings/lib/handleConfirmation.ts index bf259d9576..91a59dd71f 100644 --- a/packages/features/bookings/lib/handleConfirmation.ts +++ b/packages/features/bookings/lib/handleConfirmation.ts @@ -18,7 +18,7 @@ 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 { WorkflowService } from "@calcom/lib/server/service/workflows"; +import { WorkflowService } from "@calcom/features/ee/workflows/lib/service/WorkflowService"; import type { PrismaClient } from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; import type { SchedulingType } from "@calcom/prisma/enums"; diff --git a/packages/features/bookings/lib/handleNewBooking.ts b/packages/features/bookings/lib/handleNewBooking.ts index 1dc8b4a2be..ffec09d50f 100644 --- a/packages/features/bookings/lib/handleNewBooking.ts +++ b/packages/features/bookings/lib/handleNewBooking.ts @@ -70,8 +70,8 @@ import { getTranslation } from "@calcom/lib/server/i18n"; import type { PrismaAttributeRepository as AttributeRepository } from "@calcom/lib/server/repository/PrismaAttributeRepository"; import type { HostRepository } from "@calcom/lib/server/repository/host"; import type { PrismaOOORepository as OooRepository } from "@calcom/lib/server/repository/ooo"; -import { HashedLinkService } from "@calcom/lib/server/service/hashedLinkService"; -import { WorkflowService } from "@calcom/lib/server/service/workflows"; +import { HashedLinkService } from "@calcom/features/hashedLink/services/hashedLinkService"; +import { WorkflowService } from "@calcom/features/ee/workflows/lib/service/WorkflowService"; import { getTimeFormatStringFromUserTimeFormat } from "@calcom/lib/timeFormat"; import type { PrismaClient } from "@calcom/prisma"; import type { DestinationCalendar, Prisma, User, AssignmentReasonEnum } from "@calcom/prisma/client"; diff --git a/packages/features/bookings/lib/handleNewBooking/ensureAvailableUsers.ts b/packages/features/bookings/lib/handleNewBooking/ensureAvailableUsers.ts index 8280d73709..57f6fe6090 100644 --- a/packages/features/bookings/lib/handleNewBooking/ensureAvailableUsers.ts +++ b/packages/features/bookings/lib/handleNewBooking/ensureAvailableUsers.ts @@ -3,7 +3,7 @@ import type { Logger } from "tslog"; import dayjs from "@calcom/dayjs"; import type { Dayjs } from "@calcom/dayjs"; import { checkForConflicts } from "@calcom/features/bookings/lib/conflictChecker/checkForConflicts"; -import { buildDateRanges } from "@calcom/lib/date-ranges"; +import { buildDateRanges } from "@calcom/features/schedules/lib/date-ranges"; import { getBusyTimesService } from "@calcom/features/di/containers/BusyTimes"; import { getUserAvailabilityService } from "@calcom/features/di/containers/GetUserAvailability"; import { ErrorCode } from "@calcom/lib/errorCodes"; diff --git a/packages/features/bookings/lib/handleSeats/handleSeats.ts b/packages/features/bookings/lib/handleSeats/handleSeats.ts index be2c592392..3473da579c 100644 --- a/packages/features/bookings/lib/handleSeats/handleSeats.ts +++ b/packages/features/bookings/lib/handleSeats/handleSeats.ts @@ -4,7 +4,7 @@ import { handleWebhookTrigger } from "@calcom/features/bookings/lib/handleWebhoo import type { EventPayloadType } from "@calcom/features/webhooks/lib/sendPayload"; import { ErrorCode } from "@calcom/lib/errorCodes"; import { HttpError } from "@calcom/lib/http-error"; -import { WorkflowService } from "@calcom/lib/server/service/workflows"; +import { WorkflowService } from "@calcom/features/ee/workflows/lib/service/WorkflowService"; import prisma from "@calcom/prisma"; import { BookingStatus } from "@calcom/prisma/enums"; diff --git a/packages/features/bookings/lib/payment/handleNoShowFee.test.ts b/packages/features/bookings/lib/payment/handleNoShowFee.test.ts index ba51ac2384..e2a9537a3c 100644 --- a/packages/features/bookings/lib/payment/handleNoShowFee.test.ts +++ b/packages/features/bookings/lib/payment/handleNoShowFee.test.ts @@ -6,9 +6,9 @@ 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 { CredentialRepository } from "@calcom/features/credentials/repositories/CredentialRepository"; import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; -import { TeamRepository } from "@calcom/lib/server/repository/team"; +import { TeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository"; import { handleNoShowFee } from "./handleNoShowFee"; @@ -30,7 +30,7 @@ vi.mock("@calcom/lib/server/i18n", () => ({ getTranslation: vi.fn().mockResolvedValue((key: string) => key), })); -vi.mock("@calcom/lib/server/repository/credential", () => ({ +vi.mock("@calcom/features/credentials/repositories/CredentialRepository", () => ({ CredentialRepository: { findPaymentCredentialByAppIdAndUserIdOrTeamId: vi.fn(), findPaymentCredentialByAppIdAndTeamId: vi.fn(), @@ -43,7 +43,7 @@ vi.mock("@calcom/features/membership/repositories/MembershipRepository", () => ( }, })); -vi.mock("@calcom/lib/server/repository/team", () => ({ +vi.mock("@calcom/features/ee/teams/repositories/TeamRepository", () => ({ TeamRepository: vi.fn().mockImplementation(() => ({ findParentOrganizationByTeamId: vi.fn(), })), diff --git a/packages/features/bookings/lib/payment/handleNoShowFee.ts b/packages/features/bookings/lib/payment/handleNoShowFee.ts index 2a3b78e48d..3725ba224b 100644 --- a/packages/features/bookings/lib/payment/handleNoShowFee.ts +++ b/packages/features/bookings/lib/payment/handleNoShowFee.ts @@ -7,9 +7,9 @@ import { ErrorCode } from "@calcom/lib/errorCodes"; 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 { CredentialRepository } from "@calcom/features/credentials/repositories/CredentialRepository"; import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; -import { TeamRepository } from "@calcom/lib/server/repository/team"; +import { TeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository"; import prisma from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; import type { CalendarEvent } from "@calcom/types/Calendar"; diff --git a/packages/features/busyTimes/services/getBusyTimes.ts b/packages/features/busyTimes/services/getBusyTimes.ts index 9962d7db94..27fc99985f 100644 --- a/packages/features/busyTimes/services/getBusyTimes.ts +++ b/packages/features/busyTimes/services/getBusyTimes.ts @@ -1,7 +1,7 @@ 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 { subtract } from "@calcom/features/schedules/lib/date-ranges"; import { stringToDayjs } from "@calcom/lib/dayjs"; import { intervalLimitKeyToUnit } from "@calcom/lib/intervalLimits/intervalLimit"; import type { IntervalLimit } from "@calcom/lib/intervalLimits/intervalLimitSchema"; diff --git a/packages/features/credentials/deleteCredential.test.ts b/packages/features/credentials/deleteCredential.test.ts index 33762d0d8c..d2618056ef 100644 --- a/packages/features/credentials/deleteCredential.test.ts +++ b/packages/features/credentials/deleteCredential.test.ts @@ -6,7 +6,7 @@ import { import { describe, test, expect, beforeEach } from "vitest"; import { PrismaAppRepository } from "@calcom/features/apps/repository/PrismaAppRepository"; -import { CredentialRepository } from "@calcom/lib/server/repository/credential"; +import { CredentialRepository } from "@calcom/features/credentials/repositories/CredentialRepository"; import { DestinationCalendarRepository } from "@calcom/lib/server/repository/destinationCalendar"; import { EventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository"; import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; diff --git a/packages/lib/server/repository/credential.ts b/packages/features/credentials/repositories/CredentialRepository.ts similarity index 98% rename from packages/lib/server/repository/credential.ts rename to packages/features/credentials/repositories/CredentialRepository.ts index e5ae810cda..d685a469c5 100644 --- a/packages/lib/server/repository/credential.ts +++ b/packages/features/credentials/repositories/CredentialRepository.ts @@ -1,11 +1,10 @@ +import { buildNonDelegationCredential } from "@calcom/lib/delegationCredential"; import logger from "@calcom/lib/logger"; import { prisma } from "@calcom/prisma"; import type { Prisma, PrismaClient } from "@calcom/prisma/client"; import { safeCredentialSelect } from "@calcom/prisma/selects/credential"; import { credentialForCalendarServiceSelect } from "@calcom/prisma/selects/credential"; -import { buildNonDelegationCredential } from "../../delegationCredential"; - const log = logger.getSubLogger({ prefix: ["CredentialRepository"] }); type CredentialCreateInput = { diff --git a/packages/lib/server/repository/__tests__/delegationCredential.test.ts b/packages/features/delegation-credentials/repositories/DelegationCredentialRepository.test.ts similarity index 98% rename from packages/lib/server/repository/__tests__/delegationCredential.test.ts rename to packages/features/delegation-credentials/repositories/DelegationCredentialRepository.test.ts index cfb35220ee..a6e3ffc602 100644 --- a/packages/lib/server/repository/__tests__/delegationCredential.test.ts +++ b/packages/features/delegation-credentials/repositories/DelegationCredentialRepository.test.ts @@ -1,11 +1,11 @@ -import prismock from "../../../../../tests/libs/__mocks__/prisma"; +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 { DelegationCredentialRepository } from "./DelegationCredentialRepository"; vi.mock("@calcom/features/ee/organizations/repositories/OrganizationRepository", () => ({ OrganizationRepository: { diff --git a/packages/lib/server/repository/delegationCredential.ts b/packages/features/delegation-credentials/repositories/DelegationCredentialRepository.ts similarity index 100% rename from packages/lib/server/repository/delegationCredential.ts rename to packages/features/delegation-credentials/repositories/DelegationCredentialRepository.ts diff --git a/packages/features/di/modules/Team.ts b/packages/features/di/modules/Team.ts index 2052c536a5..2e0b5f1526 100644 --- a/packages/features/di/modules/Team.ts +++ b/packages/features/di/modules/Team.ts @@ -1,5 +1,5 @@ import { DI_TOKENS } from "@calcom/features/di/tokens"; -import { TeamRepository } from "@calcom/lib/server/repository/team"; +import { TeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository"; import { createModule } from "../di"; diff --git a/packages/features/ee/billing/credit-service.test.ts b/packages/features/ee/billing/credit-service.test.ts index 607bc286f4..b0bfa99cee 100644 --- a/packages/features/ee/billing/credit-service.test.ts +++ b/packages/features/ee/billing/credit-service.test.ts @@ -5,7 +5,7 @@ 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/features/membership/repositories/MembershipRepository"; -import { TeamRepository } from "@calcom/lib/server/repository/team"; +import { TeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository"; import { CreditType } from "@calcom/prisma/enums"; import { CreditService } from "./credit-service"; @@ -61,7 +61,7 @@ vi.mock("@calcom/prisma/enums", async (importOriginal) => { vi.mock("@calcom/lib/server/repository/credits"); vi.mock("@calcom/features/membership/repositories/MembershipRepository"); -vi.mock("@calcom/lib/server/repository/team"); +vi.mock("@calcom/features/ee/teams/repositories/TeamRepository"); vi.mock("@calcom/emails/email-manager"); vi.mock("../workflows/lib/reminders/reminderScheduler", () => ({ cancelScheduledMessagesAndScheduleEmails: vi.fn().mockResolvedValue(undefined), diff --git a/packages/features/ee/billing/credit-service.ts b/packages/features/ee/billing/credit-service.ts index bc850d0a30..2ea4332acb 100644 --- a/packages/features/ee/billing/credit-service.ts +++ b/packages/features/ee/billing/credit-service.ts @@ -13,7 +13,7 @@ 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/features/membership/repositories/MembershipRepository"; -import { TeamRepository } from "@calcom/lib/server/repository/team"; +import { TeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository"; import prisma, { type PrismaTransaction } from "@calcom/prisma"; import type { CreditUsageType } from "@calcom/prisma/enums"; import { CreditType } from "@calcom/prisma/enums"; diff --git a/packages/lib/service/attribute/server/assignValueToUser.test.ts b/packages/features/ee/dsync/lib/assignValueToUser.test.ts similarity index 99% rename from packages/lib/service/attribute/server/assignValueToUser.test.ts rename to packages/features/ee/dsync/lib/assignValueToUser.test.ts index 0ebaf2e5fe..955daf9833 100644 --- a/packages/lib/service/attribute/server/assignValueToUser.test.ts +++ b/packages/features/ee/dsync/lib/assignValueToUser.test.ts @@ -801,7 +801,6 @@ describe("addValueForMember", () => { membershipId: membership.id, // Engineering attributeOptionId: "101", - //@ts-expect-error - prismock can't handle string ids it seems dsyncId: dsync.id, }); diff --git a/packages/lib/service/attribute/server/assignValueToUser.ts b/packages/features/ee/dsync/lib/assignValueToUser.ts similarity index 97% rename from packages/lib/service/attribute/server/assignValueToUser.ts rename to packages/features/ee/dsync/lib/assignValueToUser.ts index 12d92245a2..53b6563f6e 100644 --- a/packages/lib/service/attribute/server/assignValueToUser.ts +++ b/packages/features/ee/dsync/lib/assignValueToUser.ts @@ -1,11 +1,15 @@ 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 type { AttributeId, AttributeName, BulkAttributeAssigner, AttributeOptionAssignment } from "../types"; +import { PrismaAttributeOptionRepository } from "@calcom/lib/server/repository/PrismaAttributeOptionRepository"; +import { PrismaAttributeRepository } from "@calcom/lib/server/repository/PrismaAttributeRepository"; +import { findAssignmentsForMember } from "@calcom/lib/service/attribute/server/utils"; +import type { + AttributeId, + AttributeName, + BulkAttributeAssigner, + AttributeOptionAssignment, +} from "@calcom/lib/service/attribute/types"; import { doesSupportMultipleValues, isAssignmentForLockedAttribute, @@ -13,8 +17,8 @@ import { isAssignmentSame, buildSlugFromValue, canSetValueBeyondOptions, -} from "../utils"; -import { findAssignmentsForMember } from "./utils"; +} from "@calcom/lib/service/attribute/utils"; +import prisma from "@calcom/prisma"; const log = logger.getSubLogger({ prefix: ["entity/attribute"] }); diff --git a/packages/features/ee/dsync/lib/handleUserEvents.ts b/packages/features/ee/dsync/lib/handleUserEvents.ts index cae30c5ed8..bee2c1fe67 100644 --- a/packages/features/ee/dsync/lib/handleUserEvents.ts +++ b/packages/features/ee/dsync/lib/handleUserEvents.ts @@ -1,11 +1,10 @@ import type { DirectorySyncEvent, User } from "@boxyhq/saml-jackson"; import removeUserFromOrg from "@calcom/features/ee/dsync/lib/removeUserFromOrg"; +import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import { getTranslation } from "@calcom/lib/server/i18n"; -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"; import { getTeamOrThrow } from "@calcom/trpc/server/routers/viewer/teams/inviteMember/utils"; @@ -13,6 +12,7 @@ import type { UserWithMembership } from "@calcom/trpc/server/routers/viewer/team import { sendExistingUserTeamInviteEmails } from "@calcom/trpc/server/routers/viewer/teams/inviteMember/utils"; import { sendSignupToOrganizationEmail } from "@calcom/trpc/server/routers/viewer/teams/inviteMember/utils"; +import { assignValueToUserInOrgBulk } from "./assignValueToUser"; import getAttributesFromScimPayload from "./getAttributesFromScimPayload"; import createUsersAndConnectToOrg from "./users/createUsersAndConnectToOrg"; import dSyncUserSelect from "./users/dSyncUserSelect"; diff --git a/packages/lib/server/repository/__mocks__/organization.ts b/packages/features/ee/organizations/__mocks__/organizationMock.ts similarity index 100% rename from packages/lib/server/repository/__mocks__/organization.ts rename to packages/features/ee/organizations/__mocks__/organizationMock.ts diff --git a/packages/features/ee/teams/components/TeamAvailabilityTimes.tsx b/packages/features/ee/teams/components/TeamAvailabilityTimes.tsx index 7478ef5f13..8b829b7ff4 100644 --- a/packages/features/ee/teams/components/TeamAvailabilityTimes.tsx +++ b/packages/features/ee/teams/components/TeamAvailabilityTimes.tsx @@ -9,8 +9,8 @@ import React from "react"; import type { ITimezone } from "react-timezone-select"; import type { Dayjs } from "@calcom/dayjs"; +import getSlots from "@calcom/features/schedules/lib/slots"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import getSlots from "@calcom/lib/slots"; import { trpc } from "@calcom/trpc/react"; import SkeletonLoader from "./SkeletonLoaderAvailabilityTimes"; diff --git a/packages/features/ee/teams/components/TeamEventTypeForm.tsx b/packages/features/ee/teams/components/TeamEventTypeForm.tsx index 8928daf657..a05365fab9 100644 --- a/packages/features/ee/teams/components/TeamEventTypeForm.tsx +++ b/packages/features/ee/teams/components/TeamEventTypeForm.tsx @@ -2,7 +2,7 @@ import type { ReactNode } from "react"; import type { UseFormReturn } from "react-hook-form"; import { useIsPlatform } from "@calcom/atoms/hooks/useIsPlatform"; -import type { CreateEventTypeFormValues } from "@calcom/lib/hooks/useCreateEventType"; +import type { CreateEventTypeFormValues } from "@calcom/features/eventtypes/hooks/useCreateEventType"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import slugify from "@calcom/lib/slugify"; import { SchedulingType } from "@calcom/prisma/enums"; diff --git a/packages/features/ee/teams/lib/queries.ts b/packages/features/ee/teams/lib/queries.ts index 30750e5a04..5a5b660338 100644 --- a/packages/features/ee/teams/lib/queries.ts +++ b/packages/features/ee/teams/lib/queries.ts @@ -6,7 +6,7 @@ import { getBookerBaseUrlSync } from "@calcom/features/ee/organizations/lib/getB 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 { getTeam, getOrg } from "@calcom/features/ee/teams/repositories/TeamRepository"; import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import prisma from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; diff --git a/packages/lib/server/repository/team.test.ts b/packages/features/ee/teams/repositories/TeamRepository.test.ts similarity index 57% rename from packages/lib/server/repository/team.test.ts rename to packages/features/ee/teams/repositories/TeamRepository.test.ts index 8e2e71885d..9d56ec29f1 100644 --- a/packages/lib/server/repository/team.test.ts +++ b/packages/features/ee/teams/repositories/TeamRepository.test.ts @@ -1,18 +1,23 @@ -import prismaMock from "../../../../tests/libs/__mocks__/prismaMock"; +import prismaMock from "../../../../../tests/libs/__mocks__/prismaMock"; -import { it, describe, expect } from "vitest"; +import { describe, it, expect, vi, beforeEach, afterEach } from "vitest"; -import { getTeam, getOrg } from "./team"; +import type { Team } from "@calcom/prisma/client"; + +import { getTeam, getOrg, TeamRepository } from "./TeamRepository"; const sampleTeamProps = { logo: null, + logoUrl: null, + calVideoLogo: null, appLogo: null, + appIconLogo: null, bio: null, description: null, hideBranding: false, isPrivate: false, - appIconLogo: null, hideBookATeamMember: false, + hideTeamProfileLink: false, createdAt: new Date(), theme: null, brandColor: "", @@ -21,8 +26,159 @@ const sampleTeamProps = { timeZone: "", weekStart: "", parentId: null, + metadata: null, + isOrganization: false, + organizationSettings: null, + isPlatform: false, + bannerUrl: null, + rrResetInterval: 0, + rrResetOccurrence: 0, + rrResetLimitOn: null, + rrResetLimitOccurrences: null, + rrResetLimitDate: null, + includeManagedEventsInLimits: false, + rrTimestampBasis: null, + pendingPayment: false, + createdByOAuthClientId: null, + smsLockState: null, + smsLockReviewedByAdmin: false, + bookingLimits: null, }; +describe("TeamRepository", () => { + let teamRepository: TeamRepository; + + beforeEach(() => { + vi.resetAllMocks(); + teamRepository = new TeamRepository(prismaMock); + }); + + afterEach(() => { + vi.clearAllMocks(); + }); + + describe("findById", () => { + it("should return null if team is not found", async () => { + prismaMock.team.findUnique.mockResolvedValue(null); + const result = await teamRepository.findById({ id: 1 }); + expect(result).toBeNull(); + }); + + it("should return parsed team if found", async () => { + const mockTeam = { + id: 1, + name: "Test Team", + slug: "test-team", + logoUrl: "test-logo-url", + parentId: 1, + metadata: { + requestedSlug: null, + }, + isOrganization: true, + organizationSettings: {}, + isPlatform: true, + requestedSlug: null, + }; + prismaMock.team.findUnique.mockResolvedValue(mockTeam as unknown as Team); + const result = await teamRepository.findById({ id: 1 }); + expect(result).toEqual(mockTeam); + }); + }); + + describe("deleteById", () => { + it("should delete team and related data", async () => { + const mockDeletedTeam = { id: 1, name: "Deleted Team" }; + const deleteManyEventTypeMock = vi.fn(); + const deleteManyMembershipMock = vi.fn(); + const deleteTeamMock = vi.fn().mockResolvedValue(mockDeletedTeam as unknown as Team); + prismaMock.$transaction.mockImplementation(async (callback) => { + const mockTx = { + ...prismaMock, + eventType: { + ...prismaMock.eventType, + deleteMany: deleteManyEventTypeMock, + }, + membership: { + ...prismaMock.membership, + deleteMany: deleteManyMembershipMock, + }, + team: { + ...prismaMock.team, + delete: deleteTeamMock, + }, + }; + return callback(mockTx); + }); + + const result = await teamRepository.deleteById({ id: 1 }); + + expect(deleteManyEventTypeMock).toHaveBeenCalledWith({ + where: { + teamId: 1, + schedulingType: "MANAGED", + }, + }); + expect(deleteManyMembershipMock).toHaveBeenCalledWith({ + where: { + teamId: 1, + }, + }); + expect(deleteTeamMock).toHaveBeenCalledWith({ + where: { + id: 1, + }, + }); + expect(result).toEqual(mockDeletedTeam); + }); + }); + + describe("findAllByParentId", () => { + it("should return all teams with given parentId", async () => { + const mockTeams = [{ id: 1 }, { id: 2 }]; + prismaMock.team.findMany.mockResolvedValue(mockTeams as unknown as Team[]); + const result = await teamRepository.findAllByParentId({ parentId: 1 }); + expect(prismaMock.team.findMany).toHaveBeenCalledWith({ + where: { parentId: 1 }, + select: { + id: true, + name: true, + slug: true, + logoUrl: true, + parentId: true, + metadata: true, + isOrganization: true, + organizationSettings: true, + isPlatform: true, + }, + }); + expect(result).toEqual(mockTeams); + }); + }); + + describe("findTeamWithMembers", () => { + it("should return team with its members", async () => { + const mockTeam = { id: 1, members: [] }; + prismaMock.team.findUnique.mockResolvedValue(mockTeam as unknown as Team & { members: [] }); + const result = await teamRepository.findTeamWithMembers(1); + expect(prismaMock.team.findUnique).toHaveBeenCalledWith({ + where: { id: 1 }, + select: { + members: { + select: { + accepted: true, + }, + }, + id: true, + metadata: true, + parentId: true, + isOrganization: true, + }, + }); + expect(result).toEqual(mockTeam); + }); + }); +}); + describe("getOrg", () => { it("should return an Organization correctly by slug even if there is a team with the same slug", async () => { prismaMock.team.findMany.mockResolvedValue([ @@ -31,7 +187,7 @@ describe("getOrg", () => { name: "Test Team", slug: "test-slug", isOrganization: true, - }, + } as Team, ]); const org = await getOrg({ @@ -70,7 +226,7 @@ describe("getOrg", () => { name: "Test Team", slug: "test-slug", metadata: {}, - }, + } as Team, ]); const org = await getOrg({ @@ -109,7 +265,7 @@ describe("getOrg", () => { name: "Test Team", slug: "test-slug", metadata: [], - }, + } as Team, ]); await expect(() => @@ -139,7 +295,7 @@ describe("getTeam", () => { anything: "here", paymentId: "1", }, - }, + } as Team, ]); const team = await getTeam({ @@ -181,7 +337,7 @@ describe("getTeam", () => { name: "Test Team", slug: "test-slug", isOrganization: true, - }, + } as Team, ]); const team = await getTeam({ @@ -222,7 +378,7 @@ describe("getTeam", () => { slug: "test-slug", parentId: 100, metadata: null, - }, + } as Team, ]); await getTeam({ diff --git a/packages/lib/server/repository/team.ts b/packages/features/ee/teams/repositories/TeamRepository.ts similarity index 99% rename from packages/lib/server/repository/team.ts rename to packages/features/ee/teams/repositories/TeamRepository.ts index 3ffee199e1..09fccc603c 100644 --- a/packages/lib/server/repository/team.ts +++ b/packages/features/ee/teams/repositories/TeamRepository.ts @@ -2,14 +2,13 @@ import type { z } from "zod"; import { whereClauseForOrgWithSlugOrRequestedSlug } from "@calcom/ee/organizations/lib/orgDomains"; import logger from "@calcom/lib/logger"; +import { getParsedTeam } from "@calcom/lib/server/repository/teamUtils"; import type { PrismaClient } from "@calcom/prisma"; import { prisma } from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; import { MembershipRole } from "@calcom/prisma/enums"; import { teamMetadataSchema } from "@calcom/prisma/zod-utils"; -import { getParsedTeam } from "./teamUtils"; - type TeamGetPayloadWithParsedMetadata = | (Omit, "metadata" | "isOrganization"> & { metadata: z.infer; diff --git a/packages/features/ee/teams/services/teamService.alternative.test.ts b/packages/features/ee/teams/services/teamService.alternative.test.ts index 9b4809a640..2d15dbcfaa 100644 --- a/packages/features/ee/teams/services/teamService.alternative.test.ts +++ b/packages/features/ee/teams/services/teamService.alternative.test.ts @@ -4,8 +4,8 @@ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest"; import { TeamBilling } from "@calcom/features/ee/billing/teams"; import { deleteDomain } from "@calcom/lib/domainManager/organization"; -import { TeamRepository } from "@calcom/lib/server/repository/team"; -import { WorkflowService } from "@calcom/lib/server/service/workflows"; +import { TeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository"; +import { WorkflowService } from "@calcom/features/ee/workflows/lib/service/WorkflowService"; import { TeamService } from "./teamService"; @@ -14,8 +14,8 @@ vi.mock("@calcom/prisma", () => ({ })); vi.mock("@calcom/features/ee/billing/teams"); -vi.mock("@calcom/lib/server/repository/team"); -vi.mock("@calcom/lib/server/service/workflows"); +vi.mock("@calcom/features/ee/teams/repositories/TeamRepository"); +vi.mock("@calcom/features/ee/workflows/lib/service/WorkflowService"); vi.mock("@calcom/lib/domainManager/organization"); vi.mock("@calcom/features/ee/teams/lib/removeMember"); class Database { diff --git a/packages/features/ee/teams/services/teamService.test.ts b/packages/features/ee/teams/services/teamService.test.ts index c8855a5e1a..657bb5f4ca 100644 --- a/packages/features/ee/teams/services/teamService.test.ts +++ b/packages/features/ee/teams/services/teamService.test.ts @@ -6,8 +6,8 @@ import { TeamBilling } from "@calcom/features/ee/billing/teams"; import { updateNewTeamMemberEventTypes } from "@calcom/features/ee/teams/lib/queries"; 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"; +import { TeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository"; +import { WorkflowService } from "@calcom/features/ee/workflows/lib/service/WorkflowService"; import type { Membership, Team, User, VerificationToken, Profile } from "@calcom/prisma/client"; import { MembershipRole } from "@calcom/prisma/enums"; @@ -16,8 +16,8 @@ import { TRPCError } from "@trpc/server"; import { TeamService } from "./teamService"; vi.mock("@calcom/features/ee/billing/teams"); -vi.mock("@calcom/lib/server/repository/team"); -vi.mock("@calcom/lib/server/service/workflows"); +vi.mock("@calcom/features/ee/teams/repositories/TeamRepository"); +vi.mock("@calcom/features/ee/workflows/lib/service/WorkflowService"); vi.mock("@calcom/lib/domainManager/organization"); vi.mock("@calcom/features/ee/teams/lib/removeMember"); vi.mock("@calcom/features/profile/lib/createAProfileForAnExistingUser"); diff --git a/packages/features/ee/teams/services/teamService.ts b/packages/features/ee/teams/services/teamService.ts index 14835593e7..66256e2e83 100644 --- a/packages/features/ee/teams/services/teamService.ts +++ b/packages/features/ee/teams/services/teamService.ts @@ -8,8 +8,8 @@ import { createAProfileForAnExistingUser } from "@calcom/features/profile/lib/cr import { deleteDomain } from "@calcom/lib/domainManager/organization"; import logger from "@calcom/lib/logger"; 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 { TeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository"; +import { WorkflowService } from "@calcom/features/ee/workflows/lib/service/WorkflowService"; import { prisma } from "@calcom/prisma"; import { Prisma } from "@calcom/prisma/client"; import type { Membership } from "@calcom/prisma/client"; diff --git a/packages/features/ee/workflows/lib/reminders/aiPhoneCallManager.ts b/packages/features/ee/workflows/lib/reminders/aiPhoneCallManager.ts index d5660d3271..9dc8b09bab 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/lib/SystemField"; +import { CAL_AI_AGENT_PHONE_NUMBER_FIELD } from "@calcom/lib/bookings/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/lib/server/service/workflows.test.ts b/packages/features/ee/workflows/lib/service/WorkflowService.test.ts similarity index 99% rename from packages/lib/server/service/workflows.test.ts rename to packages/features/ee/workflows/lib/service/WorkflowService.test.ts index fa08775593..04c6a03bd6 100644 --- a/packages/lib/server/service/workflows.test.ts +++ b/packages/features/ee/workflows/lib/service/WorkflowService.test.ts @@ -5,7 +5,7 @@ import { tasker } from "@calcom/features/tasker"; import { WorkflowTriggerEvents, WorkflowActions, WorkflowTemplates, TimeUnit } from "@calcom/prisma/enums"; import { test } from "@calcom/web/test/fixtures/fixtures"; -import { WorkflowService } from "./workflows"; +import { WorkflowService } from "./WorkflowService"; vi.mock("@calcom/features/ee/workflows/lib/reminders/reminderScheduler"); vi.mock("@calcom/features/tasker"); diff --git a/packages/lib/server/service/workflows.ts b/packages/features/ee/workflows/lib/service/WorkflowService.ts similarity index 98% rename from packages/lib/server/service/workflows.ts rename to packages/features/ee/workflows/lib/service/WorkflowService.ts index d55b937206..c57529e907 100644 --- a/packages/lib/server/service/workflows.ts +++ b/packages/features/ee/workflows/lib/service/WorkflowService.ts @@ -4,16 +4,15 @@ import type { ScheduleWorkflowRemindersArgs } from "@calcom/ee/workflows/lib/rem import { scheduleWorkflowReminders } from "@calcom/ee/workflows/lib/reminders/reminderScheduler"; import type { timeUnitLowerCase } from "@calcom/ee/workflows/lib/reminders/smsReminderManager"; import type { Workflow } from "@calcom/ee/workflows/lib/types"; -import { tasker } from "@calcom/features/tasker"; +import { TeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository"; import { WorkflowRepository } from "@calcom/features/ee/workflows/repositories/WorkflowRepository"; import { getHideBranding } from "@calcom/features/profile/lib/hideBranding"; +import { tasker } from "@calcom/features/tasker"; 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 { TeamRepository } from "../repository/team"; - // TODO (Sean): Move most of the logic migrated in 16861 to this service export class WorkflowService { static _beforeAfterEventTriggers: WorkflowTriggerEvents[] = [ diff --git a/packages/features/eventtypes/components/CreateEventTypeDialog.tsx b/packages/features/eventtypes/components/CreateEventTypeDialog.tsx index cae2fc70af..ad9ba941cd 100644 --- a/packages/features/eventtypes/components/CreateEventTypeDialog.tsx +++ b/packages/features/eventtypes/components/CreateEventTypeDialog.tsx @@ -5,7 +5,7 @@ import { z } from "zod"; import { Dialog } from "@calcom/features/components/controlled-dialog"; import { useOrgBranding } from "@calcom/features/ee/organizations/context/provider"; import { TeamEventTypeForm } from "@calcom/features/ee/teams/components/TeamEventTypeForm"; -import { useCreateEventType } from "@calcom/lib/hooks/useCreateEventType"; +import { useCreateEventType } from "@calcom/features/eventtypes/hooks/useCreateEventType"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { useTypedQuery } from "@calcom/lib/hooks/useTypedQuery"; import type { EventType } from "@calcom/prisma/client"; diff --git a/packages/features/eventtypes/components/CreateEventTypeForm.tsx b/packages/features/eventtypes/components/CreateEventTypeForm.tsx index 01070f280a..c780117e0f 100644 --- a/packages/features/eventtypes/components/CreateEventTypeForm.tsx +++ b/packages/features/eventtypes/components/CreateEventTypeForm.tsx @@ -4,7 +4,7 @@ import type { UseFormReturn } from "react-hook-form"; import { useIsPlatform } from "@calcom/atoms/hooks/useIsPlatform"; import { MAX_EVENT_DURATION_MINUTES, MIN_EVENT_DURATION_MINUTES } from "@calcom/lib/constants"; -import type { CreateEventTypeFormValues } from "@calcom/lib/hooks/useCreateEventType"; +import type { CreateEventTypeFormValues } from "@calcom/features/eventtypes/hooks/useCreateEventType"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { md } from "@calcom/lib/markdownIt"; import slugify from "@calcom/lib/slugify"; diff --git a/packages/lib/hooks/useCreateEventType.ts b/packages/features/eventtypes/hooks/useCreateEventType.ts similarity index 100% rename from packages/lib/hooks/useCreateEventType.ts rename to packages/features/eventtypes/hooks/useCreateEventType.ts diff --git a/packages/features/form-builder/schema.ts b/packages/features/form-builder/schema.ts index fb4e881524..9f248075df 100644 --- a/packages/features/form-builder/schema.ts +++ b/packages/features/form-builder/schema.ts @@ -257,20 +257,3 @@ export const fieldTypesSchemaMap: Partial< }, }, }; - -/** - * DB Read schema has no field type based validation because user might change the type of a field from Type1 to Type2 after some data has been collected with Type1. - * Parsing that type1 data with type2 schema will fail. - * So, we just validate that the response conforms to one of the field types' schema. - */ -export const dbReadResponseSchema = z.union([ - z.string(), - z.boolean(), - z.string().array(), - z.object({ - optionValue: z.string(), - value: z.string(), - }), - // For variantsConfig case - z.record(z.string()), -]); diff --git a/packages/features/handleMarkNoShow.ts b/packages/features/handleMarkNoShow.ts index aaf64f3ebd..b33cd78b68 100644 --- a/packages/features/handleMarkNoShow.ts +++ b/packages/features/handleMarkNoShow.ts @@ -9,7 +9,7 @@ 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 { WorkflowService } from "@calcom/lib/server/service/workflows"; +import { WorkflowService } from "@calcom/features/ee/workflows/lib/service/WorkflowService"; import { getTimeFormatStringFromUserTimeFormat } from "@calcom/lib/timeFormat"; import { prisma } from "@calcom/prisma"; import { WebhookTriggerEvents, WorkflowTriggerEvents } from "@calcom/prisma/enums"; diff --git a/packages/lib/server/repository/hashedLinkRepository.ts b/packages/features/hashedLink/repositories/hashedLinkRepository.ts similarity index 100% rename from packages/lib/server/repository/hashedLinkRepository.ts rename to packages/features/hashedLink/repositories/hashedLinkRepository.ts diff --git a/packages/lib/server/service/hashedLinkService.ts b/packages/features/hashedLink/services/hashedLinkService.ts similarity index 96% rename from packages/lib/server/service/hashedLinkService.ts rename to packages/features/hashedLink/services/hashedLinkService.ts index bbe4d29b7c..9d7fb178ed 100644 --- a/packages/lib/server/service/hashedLinkService.ts +++ b/packages/features/hashedLink/services/hashedLinkService.ts @@ -1,9 +1,11 @@ +import { + HashedLinkRepository, + type HashedLinkInputType, +} from "@calcom/features/hashedLink/repositories/hashedLinkRepository"; +import { MembershipService } from "@calcom/features/membership/services/membershipService"; import { ErrorCode } from "@calcom/lib/errorCodes"; import { validateHashedLinkData } from "@calcom/lib/hashedLinksUtils"; -import { HashedLinkRepository, type HashedLinkInputType } from "../repository/hashedLinkRepository"; -import { MembershipService } from "./membershipService"; - type NormalizedLink = { link: string; expiresAt: Date | null; diff --git a/packages/features/insights/services/InsightsBookingBaseService.ts b/packages/features/insights/services/InsightsBookingBaseService.ts index f89f910ccd..6272aa0c94 100644 --- a/packages/features/insights/services/InsightsBookingBaseService.ts +++ b/packages/features/insights/services/InsightsBookingBaseService.ts @@ -16,7 +16,7 @@ import { extractDateRangeFromColumnFilters } from "@calcom/features/insights/lib 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 { TeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository"; import type { PrismaClient } from "@calcom/prisma"; import { Prisma } from "@calcom/prisma/client"; import { MembershipRole } from "@calcom/prisma/enums"; diff --git a/packages/features/insights/services/InsightsRoutingBaseService.ts b/packages/features/insights/services/InsightsRoutingBaseService.ts index 5af80c8497..7c19cfb788 100644 --- a/packages/features/insights/services/InsightsRoutingBaseService.ts +++ b/packages/features/insights/services/InsightsRoutingBaseService.ts @@ -12,7 +12,7 @@ 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 { TeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository"; import type { PrismaClient } from "@calcom/prisma"; import { Prisma } from "@calcom/prisma/client"; import type { BookingStatus } from "@calcom/prisma/enums"; diff --git a/packages/features/membership/repositories/MembershipRepository.ts b/packages/features/membership/repositories/MembershipRepository.ts index c9bd073e32..b016ea5bec 100644 --- a/packages/features/membership/repositories/MembershipRepository.ts +++ b/packages/features/membership/repositories/MembershipRepository.ts @@ -373,35 +373,6 @@ export class MembershipRepository { return membershipsWithSelectedCalendars; } - static async findMembershipsForBothOrgAndTeam({ orgId, teamId }: { orgId: number; teamId: number }) { - const memberships = await prisma.membership.findMany({ - where: { - teamId: { - in: [orgId, teamId], - }, - }, - }); - - type Membership = (typeof memberships)[number]; - - const { teamMemberships, orgMemberships } = memberships.reduce( - (acc, membership) => { - if (membership.teamId === teamId) { - acc.teamMemberships.push(membership); - } else if (membership.teamId === orgId) { - acc.orgMemberships.push(membership); - } - return acc; - }, - { teamMemberships: [] as Membership[], orgMemberships: [] as Membership[] } - ); - - return { - teamMemberships, - orgMemberships, - }; - } - static async getAdminOrOwnerMembership(userId: number, teamId: number) { return prisma.membership.findFirst({ where: { diff --git a/packages/lib/server/service/membershipService.ts b/packages/features/membership/services/membershipService.ts similarity index 100% rename from packages/lib/server/service/membershipService.ts rename to packages/features/membership/services/membershipService.ts diff --git a/packages/lib/entityPermissionUtils.server.ts b/packages/features/pbac/lib/entityPermissionUtils.server.ts similarity index 100% rename from packages/lib/entityPermissionUtils.server.ts rename to packages/features/pbac/lib/entityPermissionUtils.server.ts diff --git a/packages/features/profile/lib/createAProfileForAnExistingUser.ts b/packages/features/profile/lib/createAProfileForAnExistingUser.ts index 8d6b3c5f14..860e675fcc 100644 --- a/packages/features/profile/lib/createAProfileForAnExistingUser.ts +++ b/packages/features/profile/lib/createAProfileForAnExistingUser.ts @@ -4,7 +4,7 @@ import { ProfileRepository } from "@calcom/features/profile/repositories/Profile 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 { TeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository"; import prisma from "@calcom/prisma"; import { RedirectType } from "@calcom/prisma/enums"; diff --git a/packages/features/profile/lib/hideBranding.ts b/packages/features/profile/lib/hideBranding.ts index c951a69695..e82c2ecf4d 100644 --- a/packages/features/profile/lib/hideBranding.ts +++ b/packages/features/profile/lib/hideBranding.ts @@ -1,7 +1,7 @@ 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 { TeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository"; import { prisma } from "@calcom/prisma"; const log = logger.getSubLogger({ name: "hideBranding" }); diff --git a/packages/lib/date-ranges.test.ts b/packages/features/schedules/lib/date-ranges.test.ts similarity index 100% rename from packages/lib/date-ranges.test.ts rename to packages/features/schedules/lib/date-ranges.test.ts diff --git a/packages/lib/date-ranges.ts b/packages/features/schedules/lib/date-ranges.ts similarity index 100% rename from packages/lib/date-ranges.ts rename to packages/features/schedules/lib/date-ranges.ts diff --git a/packages/lib/slots.test.ts b/packages/features/schedules/lib/slots.test.ts similarity index 99% rename from packages/lib/slots.test.ts rename to packages/features/schedules/lib/slots.test.ts index 1a1f1527a3..35a32a6a1c 100644 --- a/packages/lib/slots.test.ts +++ b/packages/features/schedules/lib/slots.test.ts @@ -1,8 +1,8 @@ import { describe, expect, it, beforeAll, vi } from "vitest"; import dayjs from "@calcom/dayjs"; +import type { DateRange } from "@calcom/features/schedules/lib/date-ranges"; -import type { DateRange } from "./date-ranges"; import getSlots from "./slots"; let dateRangesNextDay: DateRange[]; diff --git a/packages/lib/slots.ts b/packages/features/schedules/lib/slots.ts similarity index 98% rename from packages/lib/slots.ts rename to packages/features/schedules/lib/slots.ts index fdd9557569..22c1c1c7df 100644 --- a/packages/lib/slots.ts +++ b/packages/features/schedules/lib/slots.ts @@ -5,11 +5,10 @@ import type { IOutOfOfficeData, IToUser, } from "@calcom/features/availability/lib/getUserAvailability"; +import type { DateRange } from "@calcom/features/schedules/lib/date-ranges"; +import { getTimeZone } from "@calcom/lib/dayjs"; import { withReporting } from "@calcom/lib/sentryWrapper"; -import type { DateRange } from "./date-ranges"; -import { getTimeZone } from "./dayjs"; - export type GetSlots = { inviteeDate: Dayjs; frequency: number; @@ -131,7 +130,7 @@ function buildSlotsWithDateRanges({ // For current day bookings, normalizing the seconds to zero to avoid issues with time calculations slotStartTime = slotStartTime.set("second", 0).set("millisecond", 0); - + // Convert to target timezone BEFORE checking if rounding is needed // This ensures we check minute alignment in the local timezone, not UTC // This prevents issues with half-hour offset timezones like Asia/Kolkata (GMT+5:30) diff --git a/packages/features/tasker/tasks/analytics/sendAnalyticsEvent.ts b/packages/features/tasker/tasks/analytics/sendAnalyticsEvent.ts index 17864c78ce..410e7576a7 100644 --- a/packages/features/tasker/tasks/analytics/sendAnalyticsEvent.ts +++ b/packages/features/tasker/tasks/analytics/sendAnalyticsEvent.ts @@ -1,6 +1,6 @@ import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; -import { CredentialRepository } from "@calcom/lib/server/repository/credential"; +import { CredentialRepository } from "@calcom/features/credentials/repositories/CredentialRepository"; import AnalyticsManager from "./analyticsManager"; import { sendAnalyticsEventSchema } from "./schema"; diff --git a/packages/features/timezone-buddy/components/AvailabilitySliderTable.tsx b/packages/features/timezone-buddy/components/AvailabilitySliderTable.tsx index 31dc02d01d..75a12ce69e 100644 --- a/packages/features/timezone-buddy/components/AvailabilitySliderTable.tsx +++ b/packages/features/timezone-buddy/components/AvailabilitySliderTable.tsx @@ -10,7 +10,7 @@ import { DataTableProvider } from "@calcom/features/data-table/DataTableProvider import { DataTable, DataTableToolbar } from "@calcom/features/data-table/components"; import { useDataTable } from "@calcom/features/data-table/hooks"; import { APP_NAME, WEBAPP_URL } from "@calcom/lib/constants"; -import type { DateRange } from "@calcom/lib/date-ranges"; +import type { DateRange } from "@calcom/features/schedules/lib/date-ranges"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { CURRENT_TIMEZONE } from "@calcom/lib/timezoneConstants"; import type { MembershipRole } from "@calcom/prisma/enums"; diff --git a/packages/features/timezone-buddy/components/TimeDial.tsx b/packages/features/timezone-buddy/components/TimeDial.tsx index b8810522e9..e9f26d1073 100644 --- a/packages/features/timezone-buddy/components/TimeDial.tsx +++ b/packages/features/timezone-buddy/components/TimeDial.tsx @@ -4,7 +4,7 @@ import { useStore } from "zustand"; import type { Dayjs } from "@calcom/dayjs"; import dayjs from "@calcom/dayjs"; -import type { DateRange } from "@calcom/lib/date-ranges"; +import type { DateRange } from "@calcom/features/schedules/lib/date-ranges"; import classNames from "@calcom/ui/classNames"; import { DAY_CELL_WIDTH } from "../constants"; diff --git a/packages/lib/CalEventParser.ts b/packages/lib/CalEventParser.ts index 3a052c973c..03e1b6ac6f 100644 --- a/packages/lib/CalEventParser.ts +++ b/packages/lib/CalEventParser.ts @@ -2,7 +2,7 @@ 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 getLabelValueMapFromResponses from "@calcom/lib/bookings/getLabelValueMapFromResponses"; import type { CalendarEvent, Person } from "@calcom/types/Calendar"; import { WEBAPP_URL } from "./constants"; diff --git a/packages/lib/SystemField.ts b/packages/lib/bookings/SystemField.ts similarity index 100% rename from packages/lib/SystemField.ts rename to packages/lib/bookings/SystemField.ts diff --git a/packages/features/bookings/lib/getLabelValueMapFromResponses.ts b/packages/lib/bookings/getLabelValueMapFromResponses.ts similarity index 90% rename from packages/features/bookings/lib/getLabelValueMapFromResponses.ts rename to packages/lib/bookings/getLabelValueMapFromResponses.ts index 1909c604fb..d72eb52afa 100644 --- a/packages/features/bookings/lib/getLabelValueMapFromResponses.ts +++ b/packages/lib/bookings/getLabelValueMapFromResponses.ts @@ -1,7 +1,7 @@ import type z from "zod"; -import { TITLE_FIELD, SMS_REMINDER_NUMBER_FIELD } from "@calcom/lib/SystemField"; -import type { bookingResponse } from "@calcom/features/bookings/lib/getBookingResponsesSchema"; +import { TITLE_FIELD, SMS_REMINDER_NUMBER_FIELD } from "@calcom/lib/bookings/SystemField"; +import type { dbReadResponseSchema as bookingResponse } from "@calcom/lib/dbReadResponseSchema"; import type { CalendarEvent } from "@calcom/types/Calendar"; export default function getLabelValueMapFromResponses( diff --git a/packages/lib/dbReadResponseSchema.ts b/packages/lib/dbReadResponseSchema.ts new file mode 100644 index 0000000000..973fde4691 --- /dev/null +++ b/packages/lib/dbReadResponseSchema.ts @@ -0,0 +1,18 @@ +import { z } from "zod"; + +/** + * DB Read schema has no field type based validation because user might change the type of a field from Type1 to Type2 after some data has been collected with Type1. + * Parsing that type1 data with type2 schema will fail. + * So, we just validate that the response conforms to one of the field types' schema. + */ +export const dbReadResponseSchema = z.union([ + z.string(), + z.boolean(), + z.string().array(), + z.object({ + optionValue: z.string(), + value: z.string(), + }), + // For variantsConfig case + z.record(z.string()), +]); diff --git a/packages/lib/restrictionSchedule.ts b/packages/lib/restrictionSchedule.ts deleted file mode 100644 index 306ea5c033..0000000000 --- a/packages/lib/restrictionSchedule.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { FeaturesRepository } from "@calcom/features/flags/features.repository"; -import prisma from "@calcom/prisma"; - -/** - * Checks if the restriction schedule feature is enabled for a team - * @param teamId - The team ID to check - * @returns Promise - True if the feature is enabled, false otherwise - */ -export async function isRestrictionScheduleEnabled(teamId?: number): Promise { - if (!teamId) { - return false; // Personal events don't have restriction schedules - } - - const featureRepo = new FeaturesRepository(prisma); - return await featureRepo.checkIfTeamHasFeature(teamId, "restriction-schedule"); -} diff --git a/packages/lib/server/repository/TeamRepository.test.ts b/packages/lib/server/repository/TeamRepository.test.ts deleted file mode 100644 index dd20357574..0000000000 --- a/packages/lib/server/repository/TeamRepository.test.ts +++ /dev/null @@ -1,141 +0,0 @@ -import prismaMock from "../../../../tests/libs/__mocks__/prismaMock"; - -import { describe, it, expect, vi, beforeEach, afterEach } from "vitest"; - -import type { Team } from "@calcom/prisma/client"; - -import { TeamRepository } from "./team"; - -describe("TeamRepository", () => { - let teamRepository: TeamRepository; - - beforeEach(() => { - vi.resetAllMocks(); - teamRepository = new TeamRepository(prismaMock); - }); - - afterEach(() => { - vi.clearAllMocks(); - }); - - describe("findById", () => { - it("should return null if team is not found", async () => { - prismaMock.team.findUnique.mockResolvedValue(null); - const result = await teamRepository.findById({ id: 1 }); - expect(result).toBeNull(); - }); - - it("should return parsed team if found", async () => { - const mockTeam = { - id: 1, - name: "Test Team", - slug: "test-team", - logoUrl: "test-logo-url", - parentId: 1, - metadata: { - requestedSlug: null, - }, - isOrganization: true, - organizationSettings: {}, - isPlatform: true, - requestedSlug: null, - }; - prismaMock.team.findUnique.mockResolvedValue(mockTeam as unknown as Team); - const result = await teamRepository.findById({ id: 1 }); - expect(result).toEqual(mockTeam); - }); - }); - - describe("deleteById", () => { - it("should delete team and related data", async () => { - const mockDeletedTeam = { id: 1, name: "Deleted Team" }; - const deleteManyEventTypeMock = vi.fn(); - const deleteManyMembershipMock = vi.fn(); - const deleteTeamMock = vi.fn().mockResolvedValue(mockDeletedTeam as unknown as Team); - prismaMock.$transaction.mockImplementation(async (callback) => { - const mockTx = { - ...prismaMock, - eventType: { - ...prismaMock.eventType, - deleteMany: deleteManyEventTypeMock, - }, - membership: { - ...prismaMock.membership, - deleteMany: deleteManyMembershipMock, - }, - team: { - ...prismaMock.team, - delete: deleteTeamMock, - }, - }; - return callback(mockTx); - }); - - const result = await teamRepository.deleteById({ id: 1 }); - - expect(deleteManyEventTypeMock).toHaveBeenCalledWith({ - where: { - teamId: 1, - schedulingType: "MANAGED", - }, - }); - expect(deleteManyMembershipMock).toHaveBeenCalledWith({ - where: { - teamId: 1, - }, - }); - expect(deleteTeamMock).toHaveBeenCalledWith({ - where: { - id: 1, - }, - }); - expect(result).toEqual(mockDeletedTeam); - }); - }); - - describe("findAllByParentId", () => { - it("should return all teams with given parentId", async () => { - const mockTeams = [{ id: 1 }, { id: 2 }]; - prismaMock.team.findMany.mockResolvedValue(mockTeams as unknown as Team[]); - const result = await teamRepository.findAllByParentId({ parentId: 1 }); - expect(prismaMock.team.findMany).toHaveBeenCalledWith({ - where: { parentId: 1 }, - select: { - id: true, - name: true, - slug: true, - logoUrl: true, - parentId: true, - metadata: true, - isOrganization: true, - organizationSettings: true, - isPlatform: true, - }, - }); - expect(result).toEqual(mockTeams); - }); - }); - - describe("findTeamWithMembers", () => { - it("should return team with its members", async () => { - const mockTeam = { id: 1, members: [] }; - prismaMock.team.findUnique.mockResolvedValue(mockTeam as unknown as Team & { members: [] }); - const result = await teamRepository.findTeamWithMembers(1); - expect(prismaMock.team.findUnique).toHaveBeenCalledWith({ - where: { id: 1 }, - select: { - members: { - select: { - accepted: true, - }, - }, - id: true, - metadata: true, - parentId: true, - isOrganization: true, - }, - }); - expect(result).toEqual(mockTeam); - }); - }); -}); diff --git a/packages/lib/service/attribute/server/getAttributes.ts b/packages/lib/service/attribute/server/getAttributes.ts index be7378fe36..58d9a29c6f 100644 --- a/packages/lib/service/attribute/server/getAttributes.ts +++ b/packages/lib/service/attribute/server/getAttributes.ts @@ -1,5 +1,4 @@ // 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"; @@ -70,6 +69,35 @@ export type AttributeOptionValueWithType = { attributeOption: AttributeOptionValue | AttributeOptionValue[]; }; +async function _findMembershipsForBothOrgAndTeam({ orgId, teamId }: { orgId: number; teamId: number }) { + const memberships = await prisma.membership.findMany({ + where: { + teamId: { + in: [orgId, teamId], + }, + }, + }); + + type Membership = (typeof memberships)[number]; + + const { teamMemberships, orgMemberships } = memberships.reduce( + (acc, membership) => { + if (membership.teamId === teamId) { + acc.teamMemberships.push(membership); + } else if (membership.teamId === orgId) { + acc.orgMemberships.push(membership); + } + return acc; + }, + { teamMemberships: [] as Membership[], orgMemberships: [] as Membership[] } + ); + + return { + teamMemberships, + orgMemberships, + }; +} + function _prepareAssignmentData({ assignmentsForTheTeam, attributesOfTheOrg, @@ -184,7 +212,7 @@ function _getAttributeOptionFromAttributeOption({ } async function _getOrgMembershipToUserIdForTeam({ orgId, teamId }: { orgId: number; teamId: number }) { - const { orgMemberships, teamMemberships } = await MembershipRepository.findMembershipsForBothOrgAndTeam({ + const { orgMemberships, teamMemberships } = await _findMembershipsForBothOrgAndTeam({ orgId, teamId, }); diff --git a/packages/platform/atoms/event-types/wrappers/CreateEventTypePlatformWrapper.tsx b/packages/platform/atoms/event-types/wrappers/CreateEventTypePlatformWrapper.tsx index 2fca4b7232..2dcd2f6376 100644 --- a/packages/platform/atoms/event-types/wrappers/CreateEventTypePlatformWrapper.tsx +++ b/packages/platform/atoms/event-types/wrappers/CreateEventTypePlatformWrapper.tsx @@ -2,7 +2,7 @@ import { AtomsWrapper } from "@/components/atoms-wrapper"; import { TeamEventTypeForm } from "@calcom/features/ee/teams/components/TeamEventTypeForm"; import CreateEventTypeForm from "@calcom/features/eventtypes/components/CreateEventTypeForm"; -import { useCreateEventTypeForm } from "@calcom/lib/hooks/useCreateEventType"; +import { useCreateEventTypeForm } from "@calcom/features/eventtypes/hooks/useCreateEventType"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import type { EventType } from "@calcom/prisma/client"; import { Button } from "@calcom/ui/components/button"; diff --git a/packages/platform/libraries/app-store.ts b/packages/platform/libraries/app-store.ts index f1fbbcc37f..2b86dcf42a 100644 --- a/packages/platform/libraries/app-store.ts +++ b/packages/platform/libraries/app-store.ts @@ -43,7 +43,7 @@ export { CalendarAppDelegationCredentialNotSetupError, } from "@calcom/lib/CalendarAppError"; -export { DelegationCredentialRepository } from "@calcom/lib/server/repository/delegationCredential"; +export { DelegationCredentialRepository } from "@calcom/features/delegation-credentials/repositories/DelegationCredentialRepository"; export { OAuth2UniversalSchema } from "@calcom/app-store/_utils/oauth/universalSchema"; export { getUsersCredentialsIncludeServiceAccountKey } from "@calcom/app-store/delegationCredential"; diff --git a/packages/platform/libraries/index.ts b/packages/platform/libraries/index.ts index 891977dc89..d120258809 100644 --- a/packages/platform/libraries/index.ts +++ b/packages/platform/libraries/index.ts @@ -1,4 +1,5 @@ import { getBookingForReschedule } from "@calcom/features/bookings/lib/get-booking"; +import getAllUserBookings from "@calcom/features/bookings/lib/getAllUserBookings"; import { getBookingFieldsWithSystemFields } from "@calcom/features/bookings/lib/getBookingFields"; import getBookingInfo from "@calcom/features/bookings/lib/getBookingInfo"; import handleCancelBooking from "@calcom/features/bookings/lib/handleCancelBooking"; @@ -11,7 +12,6 @@ import { import { handleCreatePhoneCall } from "@calcom/features/handleCreatePhoneCall"; import handleMarkNoShow from "@calcom/features/handleMarkNoShow"; import { getRoutedUrl } from "@calcom/features/routing-forms/lib/getRoutedUrl"; -import getAllUserBookings from "@calcom/lib/bookings/getAllUserBookings"; import { symmetricEncrypt, symmetricDecrypt } from "@calcom/lib/crypto"; import { getTranslation } from "@calcom/lib/server/i18n"; import type { Prisma } from "@calcom/prisma/client"; diff --git a/packages/platform/libraries/repositories.ts b/packages/platform/libraries/repositories.ts index 91e5270e17..efc39f817f 100644 --- a/packages/platform/libraries/repositories.ts +++ b/packages/platform/libraries/repositories.ts @@ -5,7 +5,7 @@ export { BookingRepository as PrismaBookingRepository } from "@calcom/features/b 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 { TeamRepository as PrismaTeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository"; 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/features/membership/repositories/MembershipRepository"; diff --git a/packages/trpc/server/routers/apps/routing-forms/deleteForm.handler.ts b/packages/trpc/server/routers/apps/routing-forms/deleteForm.handler.ts index 07db89f09f..29fe2057bc 100644 --- a/packages/trpc/server/routers/apps/routing-forms/deleteForm.handler.ts +++ b/packages/trpc/server/routers/apps/routing-forms/deleteForm.handler.ts @@ -1,5 +1,5 @@ import getConnectedForms from "@calcom/app-store/routing-forms/lib/getConnectedForms"; -import { entityPrismaWhereClause } from "@calcom/lib/entityPermissionUtils.server"; +import { entityPrismaWhereClause } from "@calcom/features/pbac/lib/entityPermissionUtils.server"; import type { PrismaClient } from "@calcom/prisma"; import { MembershipRole } from "@calcom/prisma/enums"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; diff --git a/packages/trpc/server/routers/apps/routing-forms/formMutation.handler.ts b/packages/trpc/server/routers/apps/routing-forms/formMutation.handler.ts index 9668c75023..36d66ce286 100644 --- a/packages/trpc/server/routers/apps/routing-forms/formMutation.handler.ts +++ b/packages/trpc/server/routers/apps/routing-forms/formMutation.handler.ts @@ -9,7 +9,7 @@ import isRouterLinkedField from "@calcom/app-store/routing-forms/lib/isRouterLin import type { SerializableForm } from "@calcom/app-store/routing-forms/types/types"; import { zodFields, zodRouterRoute, zodRoutes } from "@calcom/app-store/routing-forms/zod"; import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; -import { entityPrismaWhereClause, canEditEntity } from "@calcom/lib/entityPermissionUtils.server"; +import { entityPrismaWhereClause, canEditEntity } from "@calcom/features/pbac/lib/entityPermissionUtils.server"; import type { PrismaClient } from "@calcom/prisma"; import { MembershipRole } from "@calcom/prisma/enums"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; diff --git a/packages/trpc/server/routers/apps/routing-forms/formQuery.handler.ts b/packages/trpc/server/routers/apps/routing-forms/formQuery.handler.ts index 05a0b9c418..7e332bde76 100644 --- a/packages/trpc/server/routers/apps/routing-forms/formQuery.handler.ts +++ b/packages/trpc/server/routers/apps/routing-forms/formQuery.handler.ts @@ -1,5 +1,5 @@ import { getSerializableForm } from "@calcom/app-store/routing-forms/lib/getSerializableForm"; -import { entityPrismaWhereClause } from "@calcom/lib/entityPermissionUtils.server"; +import { entityPrismaWhereClause } from "@calcom/features/pbac/lib/entityPermissionUtils.server"; import type { PrismaClient } from "@calcom/prisma"; import { MembershipRole } from "@calcom/prisma/enums"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; diff --git a/packages/trpc/server/routers/apps/routing-forms/forms.handler.ts b/packages/trpc/server/routers/apps/routing-forms/forms.handler.ts index d29e291d49..8501f83a63 100644 --- a/packages/trpc/server/routers/apps/routing-forms/forms.handler.ts +++ b/packages/trpc/server/routers/apps/routing-forms/forms.handler.ts @@ -3,7 +3,7 @@ import type { z } from "zod"; import { getSerializableForm } from "@calcom/app-store/routing-forms/lib/getSerializableForm"; import type { zodFields, zodRoutes } from "@calcom/app-store/routing-forms/zod"; import { hasFilter } from "@calcom/features/filters/lib/hasFilter"; -import { entityPrismaWhereClause, canEditEntity } from "@calcom/lib/entityPermissionUtils.server"; +import { entityPrismaWhereClause, canEditEntity } from "@calcom/features/pbac/lib/entityPermissionUtils.server"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import type { PrismaClient } from "@calcom/prisma"; 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 cc42660251..0359b2a2e5 100644 --- a/packages/trpc/server/routers/apps/routing-forms/getResponseWithFormFields.handler.ts +++ b/packages/trpc/server/routers/apps/routing-forms/getResponseWithFormFields.handler.ts @@ -3,7 +3,7 @@ import type { z } from "zod"; import { enrichFormWithMigrationData } from "@calcom/app-store/routing-forms/enrichFormWithMigrationData"; import { getSerializableForm } from "@calcom/app-store/routing-forms/lib/getSerializableForm"; import type { FormResponse } from "@calcom/app-store/routing-forms/types/types"; -import { canAccessEntity } from "@calcom/lib/entityPermissionUtils.server"; +import { canAccessEntity } from "@calcom/features/pbac/lib/entityPermissionUtils.server"; import { getTranslation } from "@calcom/lib/server/i18n"; import { prisma } 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 4923c8d6d8..d8bc42e112 100644 --- a/packages/trpc/server/routers/viewer/availability/team/listTeamAvailability.handler.ts +++ b/packages/trpc/server/routers/viewer/availability/team/listTeamAvailability.handler.ts @@ -1,7 +1,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 type { DateRange } from "@calcom/features/schedules/lib/date-ranges"; +import { buildDateRanges } from "@calcom/features/schedules/lib/date-ranges"; 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 ca0d5f827d..f975a7f8d3 100644 --- a/packages/trpc/server/routers/viewer/bookings/confirm.handler.ts +++ b/packages/trpc/server/routers/viewer/bookings/confirm.handler.ts @@ -16,7 +16,7 @@ import { getTeamIdFromEventType } from "@calcom/lib/getTeamIdFromEventType"; import { isPrismaObjOrUndefined } from "@calcom/lib/isPrismaObj"; import { parseRecurringEvent } from "@calcom/lib/isRecurringEvent"; import { getTranslation } from "@calcom/lib/server/i18n"; -import { WorkflowService } from "@calcom/lib/server/service/workflows"; +import { WorkflowService } from "@calcom/features/ee/workflows/lib/service/WorkflowService"; import { getTimeFormatStringFromUserTimeFormat } from "@calcom/lib/timeFormat"; import { prisma } from "@calcom/prisma"; import { Prisma } from "@calcom/prisma/client"; diff --git a/packages/trpc/server/routers/viewer/bookings/editLocation.handler.ts b/packages/trpc/server/routers/viewer/bookings/editLocation.handler.ts index 7ddc414d15..48ab05b92a 100644 --- a/packages/trpc/server/routers/viewer/bookings/editLocation.handler.ts +++ b/packages/trpc/server/routers/viewer/bookings/editLocation.handler.ts @@ -11,7 +11,7 @@ import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import { getTranslation } from "@calcom/lib/server/i18n"; import { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; -import { CredentialRepository } from "@calcom/lib/server/repository/credential"; +import { CredentialRepository } from "@calcom/features/credentials/repositories/CredentialRepository"; import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { prisma } from "@calcom/prisma"; import type { Booking, BookingReference } from "@calcom/prisma/client"; diff --git a/packages/trpc/server/routers/viewer/bookings/get.handler.ts b/packages/trpc/server/routers/viewer/bookings/get.handler.ts index 19d99cff91..b52de1681e 100644 --- a/packages/trpc/server/routers/viewer/bookings/get.handler.ts +++ b/packages/trpc/server/routers/viewer/bookings/get.handler.ts @@ -3,10 +3,10 @@ import { type SelectQueryBuilder } from "kysely"; import { jsonObjectFrom, jsonArrayFrom } from "kysely/helpers/postgres"; import dayjs from "@calcom/dayjs"; +import getAllUserBookings from "@calcom/features/bookings/lib/getAllUserBookings"; import { isTextFilterValue } from "@calcom/features/data-table/lib/utils"; import type { DB } from "@calcom/kysely"; import kysely from "@calcom/kysely"; -import getAllUserBookings from "@calcom/lib/bookings/getAllUserBookings"; import { parseEventTypeColor } from "@calcom/lib/isEventTypeColor"; import { parseRecurringEvent } from "@calcom/lib/isRecurringEvent"; import logger from "@calcom/lib/logger"; diff --git a/packages/trpc/server/routers/viewer/credits/buyCredits.handler.ts b/packages/trpc/server/routers/viewer/credits/buyCredits.handler.ts index c2c4f9522c..e3a61baff2 100644 --- a/packages/trpc/server/routers/viewer/credits/buyCredits.handler.ts +++ b/packages/trpc/server/routers/viewer/credits/buyCredits.handler.ts @@ -2,7 +2,7 @@ import { StripeBillingService } from "@calcom/features/ee/billing/stripe-billing import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; import { WEBAPP_URL } from "@calcom/lib/constants"; import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; -import { TeamRepository } from "@calcom/lib/server/repository/team"; +import { TeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository"; 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/delegationCredential/add.handler.ts b/packages/trpc/server/routers/viewer/delegationCredential/add.handler.ts index 189dda593a..6d0979db48 100644 --- a/packages/trpc/server/routers/viewer/delegationCredential/add.handler.ts +++ b/packages/trpc/server/routers/viewer/delegationCredential/add.handler.ts @@ -1,6 +1,6 @@ import type { z } from "zod"; -import { DelegationCredentialRepository } from "@calcom/lib/server/repository/delegationCredential"; +import { DelegationCredentialRepository } from "@calcom/features/delegation-credentials/repositories/DelegationCredentialRepository"; import { WorkspacePlatformRepository } from "@calcom/lib/server/repository/workspacePlatform"; import { TRPCError } from "@trpc/server"; diff --git a/packages/trpc/server/routers/viewer/delegationCredential/delete.handler.ts b/packages/trpc/server/routers/viewer/delegationCredential/delete.handler.ts index b8d7db6beb..dba3b5ec51 100644 --- a/packages/trpc/server/routers/viewer/delegationCredential/delete.handler.ts +++ b/packages/trpc/server/routers/viewer/delegationCredential/delete.handler.ts @@ -1,6 +1,6 @@ import type z from "zod"; -import { DelegationCredentialRepository } from "@calcom/lib/server/repository/delegationCredential"; +import { DelegationCredentialRepository } from "@calcom/features/delegation-credentials/repositories/DelegationCredentialRepository"; import { TRPCError } from "@trpc/server"; diff --git a/packages/trpc/server/routers/viewer/delegationCredential/getAffectedMembersForDisable.handler.ts b/packages/trpc/server/routers/viewer/delegationCredential/getAffectedMembersForDisable.handler.ts index 25ac9ced68..e821fc8f03 100644 --- a/packages/trpc/server/routers/viewer/delegationCredential/getAffectedMembersForDisable.handler.ts +++ b/packages/trpc/server/routers/viewer/delegationCredential/getAffectedMembersForDisable.handler.ts @@ -1,5 +1,5 @@ import logger from "@calcom/lib/logger"; -import { DelegationCredentialRepository } from "@calcom/lib/server/repository/delegationCredential"; +import { DelegationCredentialRepository } from "@calcom/features/delegation-credentials/repositories/DelegationCredentialRepository"; import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; import type { TDelegationCredentialGetAffectedMembersForDisableSchema } from "./schema"; diff --git a/packages/trpc/server/routers/viewer/delegationCredential/list.handler.ts b/packages/trpc/server/routers/viewer/delegationCredential/list.handler.ts index e604e8f238..66ed7e72f9 100644 --- a/packages/trpc/server/routers/viewer/delegationCredential/list.handler.ts +++ b/packages/trpc/server/routers/viewer/delegationCredential/list.handler.ts @@ -1,4 +1,4 @@ -import { DelegationCredentialRepository } from "@calcom/lib/server/repository/delegationCredential"; +import { DelegationCredentialRepository } from "@calcom/features/delegation-credentials/repositories/DelegationCredentialRepository"; import { encryptedServiceAccountKeySchema } from "@calcom/lib/server/serviceAccountKey"; import type { PrismaClient } from "@calcom/prisma"; diff --git a/packages/trpc/server/routers/viewer/delegationCredential/toggleEnabled.handler.ts b/packages/trpc/server/routers/viewer/delegationCredential/toggleEnabled.handler.ts index e9b9efec21..44f68fa2c1 100644 --- a/packages/trpc/server/routers/viewer/delegationCredential/toggleEnabled.handler.ts +++ b/packages/trpc/server/routers/viewer/delegationCredential/toggleEnabled.handler.ts @@ -4,8 +4,8 @@ import { sendDelegationCredentialDisabledEmail } from "@calcom/emails/email-mana import { checkIfSuccessfullyConfiguredInWorkspace } from "@calcom/app-store/delegationCredential"; import logger from "@calcom/lib/logger"; import { getTranslation } from "@calcom/lib/server/i18n"; -import { DelegationCredentialRepository } from "@calcom/lib/server/repository/delegationCredential"; -import type { ServiceAccountKey } from "@calcom/lib/server/repository/delegationCredential"; +import { DelegationCredentialRepository } from "@calcom/features/delegation-credentials/repositories/DelegationCredentialRepository"; +import type { ServiceAccountKey } from "@calcom/features/delegation-credentials/repositories/DelegationCredentialRepository"; import { getAffectedMembersForDisable } from "./getAffectedMembersForDisable.handler"; import type { DelegationCredentialToggleEnabledSchema } from "./schema"; diff --git a/packages/trpc/server/routers/viewer/delegationCredential/update.handler.ts b/packages/trpc/server/routers/viewer/delegationCredential/update.handler.ts index 0ba2194779..fc79bf3798 100644 --- a/packages/trpc/server/routers/viewer/delegationCredential/update.handler.ts +++ b/packages/trpc/server/routers/viewer/delegationCredential/update.handler.ts @@ -1,6 +1,6 @@ import type { z } from "zod"; -import { DelegationCredentialRepository } from "@calcom/lib/server/repository/delegationCredential"; +import { DelegationCredentialRepository } from "@calcom/features/delegation-credentials/repositories/DelegationCredentialRepository"; import { WorkspacePlatformRepository } from "@calcom/lib/server/repository/workspacePlatform"; import { TRPCError } from "@trpc/server"; diff --git a/packages/trpc/server/routers/viewer/delegationCredential/utils.ts b/packages/trpc/server/routers/viewer/delegationCredential/utils.ts index 475bc249c8..a237225cb0 100644 --- a/packages/trpc/server/routers/viewer/delegationCredential/utils.ts +++ b/packages/trpc/server/routers/viewer/delegationCredential/utils.ts @@ -2,7 +2,7 @@ import { z } from "zod"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; -import { DelegationCredentialRepository } from "@calcom/lib/server/repository/delegationCredential"; +import { DelegationCredentialRepository } from "@calcom/features/delegation-credentials/repositories/DelegationCredentialRepository"; import type { Prisma } from "@calcom/prisma/client"; import { TRPCError } from "@trpc/server"; diff --git a/packages/trpc/server/routers/viewer/eventTypes/getHashedLink.handler.ts b/packages/trpc/server/routers/viewer/eventTypes/getHashedLink.handler.ts index c81374fd11..25544d25a4 100644 --- a/packages/trpc/server/routers/viewer/eventTypes/getHashedLink.handler.ts +++ b/packages/trpc/server/routers/viewer/eventTypes/getHashedLink.handler.ts @@ -1,5 +1,5 @@ -import { HashedLinkRepository } from "@calcom/lib/server/repository/hashedLinkRepository"; -import { HashedLinkService } from "@calcom/lib/server/service/hashedLinkService"; +import { HashedLinkRepository } from "@calcom/features/hashedLink/repositories/hashedLinkRepository"; +import { HashedLinkService } from "@calcom/features/hashedLink/services/hashedLinkService"; import type { PrismaClient } from "@calcom/prisma"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; diff --git a/packages/trpc/server/routers/viewer/eventTypes/getHashedLinks.handler.ts b/packages/trpc/server/routers/viewer/eventTypes/getHashedLinks.handler.ts index 53996fa30a..7c783b4773 100644 --- a/packages/trpc/server/routers/viewer/eventTypes/getHashedLinks.handler.ts +++ b/packages/trpc/server/routers/viewer/eventTypes/getHashedLinks.handler.ts @@ -1,5 +1,5 @@ -import { HashedLinkRepository } from "@calcom/lib/server/repository/hashedLinkRepository"; -import { HashedLinkService } from "@calcom/lib/server/service/hashedLinkService"; +import { HashedLinkRepository } from "@calcom/features/hashedLink/repositories/hashedLinkRepository"; +import { HashedLinkService } from "@calcom/features/hashedLink/services/hashedLinkService"; import type { PrismaClient } from "@calcom/prisma"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; 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 a019e9cb27..ec23c4e1d0 100644 --- a/packages/trpc/server/routers/viewer/eventTypes/heavy/update.handler.ts +++ b/packages/trpc/server/routers/viewer/eventTypes/heavy/update.handler.ts @@ -8,15 +8,15 @@ import { allowDisablingAttendeeConfirmationEmails, allowDisablingHostConfirmationEmails, } from "@calcom/features/ee/workflows/lib/allowDisablingStandardEmails"; +import { HashedLinkRepository } from "@calcom/features/hashedLink/repositories/hashedLinkRepository"; +import { HashedLinkService } from "@calcom/features/hashedLink/services/hashedLinkService"; +import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository"; import tasker from "@calcom/features/tasker"; import { validateIntervalLimitOrder } from "@calcom/lib/intervalLimits/validateIntervalLimitOrder"; 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/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"; import type { PrismaClient } from "@calcom/prisma"; import { Prisma } from "@calcom/prisma/client"; 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 abf719542a..e71d5950eb 100644 --- a/packages/trpc/server/routers/viewer/routing-forms/findTeamMembersMatchingAttributeLogicOfRoute.handler.ts +++ b/packages/trpc/server/routers/viewer/routing-forms/findTeamMembersMatchingAttributeLogicOfRoute.handler.ts @@ -10,7 +10,7 @@ import { enrichHostsWithDelegationCredentials } from "@calcom/app-store/delegati import { enrichFormWithMigrationData } from "@calcom/app-store/routing-forms/enrichFormWithMigrationData"; import { getLuckyUserService } from "@calcom/features/di/containers/LuckyUser"; import { getUrlSearchParamsToForwardForTestPreview } from "@calcom/features/routing-forms/lib/getUrlSearchParamsToForward"; -import { entityPrismaWhereClause } from "@calcom/lib/entityPermissionUtils.server"; +import { entityPrismaWhereClause } from "@calcom/features/pbac/lib/entityPermissionUtils.server"; import { fromEntriesWithDuplicateKeys } from "@calcom/lib/fromEntriesWithDuplicateKeys"; import { findTeamMembersMatchingAttributeLogic } from "@calcom/app-store/_utils/raqb/findTeamMembersMatchingAttributeLogic"; import { EventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository"; diff --git a/packages/trpc/server/routers/viewer/slots/handleNotificationWhenNoSlots.ts b/packages/trpc/server/routers/viewer/slots/handleNotificationWhenNoSlots.ts index c761f1af9b..e0027751b1 100644 --- a/packages/trpc/server/routers/viewer/slots/handleNotificationWhenNoSlots.ts +++ b/packages/trpc/server/routers/viewer/slots/handleNotificationWhenNoSlots.ts @@ -4,7 +4,7 @@ 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/features/membership/repositories/MembershipRepository"; -import type { TeamRepository } from "@calcom/lib/server/repository/team"; +import type { TeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository"; type EventDetails = { username: string; diff --git a/packages/trpc/server/routers/viewer/slots/util.ts b/packages/trpc/server/routers/viewer/slots/util.ts index 570181247a..5f5e369ece 100644 --- a/packages/trpc/server/routers/viewer/slots/util.ts +++ b/packages/trpc/server/routers/viewer/slots/util.ts @@ -5,6 +5,7 @@ import { v4 as uuid } from "uuid"; import type { Dayjs } from "@calcom/dayjs"; import dayjs from "@calcom/dayjs"; import { orgDomainConfig } from "@calcom/ee/organizations/lib/orgDomains"; +import { getAggregatedAvailability } from "@calcom/features/availability/lib/getAggregatedAvailability/getAggregatedAvailability"; import type { CurrentSeats, EventType, @@ -13,26 +14,31 @@ import type { IFromUser, IToUser, } from "@calcom/features/availability/lib/getUserAvailability"; +import type { CheckBookingLimitsService } from "@calcom/features/bookings/lib/checkBookingLimits"; 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 { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; 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 type { TeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository"; import { getDefaultEvent } from "@calcom/features/eventtypes/lib/defaultEvents"; +import type { EventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository"; import type { FeaturesRepository } from "@calcom/features/flags/features.repository"; import type { IRedisService } from "@calcom/features/redis/IRedisService"; +import { buildDateRanges } from "@calcom/features/schedules/lib/date-ranges"; +import getSlots from "@calcom/features/schedules/lib/slots"; +import type { UserRepository } from "@calcom/features/users/repositories/UserRepository"; +import { withSelectedCalendars } from "@calcom/features/users/repositories/UserRepository"; import { shouldIgnoreContactOwner } from "@calcom/lib/bookings/routing/utils"; 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 { 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/features/bookings/lib/checkBookingLimits"; import { isBookingWithinPeriod } from "@calcom/lib/intervalLimits/utils"; import { calculatePeriodLimits, @@ -44,15 +50,9 @@ 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/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/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"; import type { CredentialForCalendarService } from "@calcom/types/Credential"; diff --git a/packages/trpc/server/routers/viewer/teams/changeMemberRole.handler.ts b/packages/trpc/server/routers/viewer/teams/changeMemberRole.handler.ts index 4c04ab20f1..850b652993 100644 --- a/packages/trpc/server/routers/viewer/teams/changeMemberRole.handler.ts +++ b/packages/trpc/server/routers/viewer/teams/changeMemberRole.handler.ts @@ -1,5 +1,5 @@ import { RoleManagementFactory } from "@calcom/features/pbac/services/role-management.factory"; -import { TeamRepository } from "@calcom/lib/server/repository/team"; +import { TeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository"; import { prisma } from "@calcom/prisma"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; diff --git a/packages/trpc/server/routers/viewer/teams/list.handler.ts b/packages/trpc/server/routers/viewer/teams/list.handler.ts index de41749d3e..c1e6b4e925 100644 --- a/packages/trpc/server/routers/viewer/teams/list.handler.ts +++ b/packages/trpc/server/routers/viewer/teams/list.handler.ts @@ -1,4 +1,4 @@ -import { TeamRepository } from "@calcom/lib/server/repository/team"; +import { TeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository"; import prisma from "@calcom/prisma"; import type { TrpcSessionUser } from "../../../types"; diff --git a/packages/trpc/server/routers/viewer/teams/listMembers.handler.ts b/packages/trpc/server/routers/viewer/teams/listMembers.handler.ts index 600a7e8d07..5ae0aef261 100644 --- a/packages/trpc/server/routers/viewer/teams/listMembers.handler.ts +++ b/packages/trpc/server/routers/viewer/teams/listMembers.handler.ts @@ -7,7 +7,7 @@ import { getSpecificPermissions } from "@calcom/features/pbac/lib/resource-permi import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; import { RoleManagementFactory } from "@calcom/features/pbac/services/role-management.factory"; import { getBookerBaseUrlSync } from "@calcom/features/ee/organizations/lib/getBookerBaseUrlSync"; -import { TeamRepository } from "@calcom/lib/server/repository/team"; +import { TeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository"; 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/teams/update.handler.ts b/packages/trpc/server/routers/viewer/teams/update.handler.ts index 7096e52617..9d3cec5adc 100644 --- a/packages/trpc/server/routers/viewer/teams/update.handler.ts +++ b/packages/trpc/server/routers/viewer/teams/update.handler.ts @@ -4,7 +4,7 @@ import { IS_TEAM_BILLING_ENABLED } from "@calcom/lib/constants"; import type { IntervalLimit } from "@calcom/lib/intervalLimits/intervalLimitSchema"; import { validateIntervalLimitOrder } from "@calcom/lib/intervalLimits/validateIntervalLimitOrder"; import { uploadLogo } from "@calcom/lib/server/avatar"; -import { TeamRepository } from "@calcom/lib/server/repository/team"; +import { TeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository"; import { prisma } from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; import { MembershipRole, RedirectType, RRTimestampBasis } from "@calcom/prisma/enums"; diff --git a/packages/trpc/server/routers/viewer/workflows/list.handler.ts b/packages/trpc/server/routers/viewer/workflows/list.handler.ts index 85fcc49bd4..82118b0d88 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 { TeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository"; // 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 ae4ce4d716..935bf7259e 100755 --- a/packages/trpc/server/routers/viewer/workflows/update.handler.ts +++ b/packages/trpc/server/routers/viewer/workflows/update.handler.ts @@ -8,7 +8,7 @@ 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 { TeamRepository } from "@calcom/lib/server/repository/team"; +import { TeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository"; 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 7ca0c66dbd..4d3e8c1ab8 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/lib/SystemField"; +} from "@calcom/lib/bookings/SystemField"; import { getSmsReminderNumberField, getSmsReminderNumberSource,