refactor: Remove intervalLimits from @calcom/lib and export directly (#19710)
* refactor: Remove intervalLimits from @calcom/lib and export directly * Tackle other places that use parseBookingLimit/parseDurationLimit * More type fixups that were hidden by previous fails * Fixed up booking-limits file * Remove server-only
This commit is contained in:
1 parent
34cff214dd
commit
0565e23818
33 files changed
+114
-86
No files matched your search
@@ -6,11 +6,11 @@ import { expect } from "@playwright/test";
|
||||
|
||||
import type { Dayjs } from "@calcom/dayjs";
|
||||
import dayjs from "@calcom/dayjs";
|
||||
import { intervalLimitKeyToUnit } from "@calcom/lib/intervalLimit";
|
||||
import { intervalLimitKeyToUnit } from "@calcom/lib/intervalLimits/intervalLimit";
|
||||
import type { IntervalLimit } from "@calcom/lib/intervalLimits/intervalLimitSchema";
|
||||
import prisma from "@calcom/prisma";
|
||||
import { BookingStatus } from "@calcom/prisma/client";
|
||||
import { entries } from "@calcom/prisma/zod-utils";
|
||||
import type { IntervalLimit } from "@calcom/types/Calendar";
|
||||
|
||||
import { test } from "./lib/fixtures";
|
||||
import {
|
||||
|
||||
@@ -8,9 +8,9 @@ import { createServer } from "http";
|
||||
import type { Messages } from "mailhog";
|
||||
import { totp } from "otplib";
|
||||
|
||||
import type { IntervalLimit } from "@calcom/lib/intervalLimits/intervalLimitSchema";
|
||||
import type { Prisma } from "@calcom/prisma/client";
|
||||
import { BookingStatus, SchedulingType } from "@calcom/prisma/enums";
|
||||
import type { IntervalLimit } from "@calcom/types/Calendar";
|
||||
|
||||
import type { createEmailsFixture } from "../fixtures/emails";
|
||||
import type { Fixtures } from "./fixtures";
|
||||
|
||||
@@ -3,9 +3,9 @@ import prismaMock from "../../../../tests/libs/__mocks__/prismaMock";
|
||||
import { describe, expect, it } from "vitest";
|
||||
|
||||
import dayjs from "@calcom/dayjs";
|
||||
import { validateIntervalLimitOrder } from "@calcom/lib";
|
||||
import { checkBookingLimits, checkBookingLimit } from "@calcom/lib/server/checkBookingLimits";
|
||||
import type { IntervalLimit } from "@calcom/types/Calendar";
|
||||
import type { IntervalLimit } from "@calcom/lib/intervalLimits/intervalLimitSchema";
|
||||
import { checkBookingLimits, checkBookingLimit } from "@calcom/lib/intervalLimits/server/checkBookingLimits";
|
||||
import { validateIntervalLimitOrder } from "@calcom/lib/intervalLimits/validateIntervalLimitOrder";
|
||||
|
||||
type Mockdata = {
|
||||
id: number;
|
||||
|
||||
@@ -3,8 +3,11 @@ import prismaMock from "../../../../tests/libs/__mocks__/prismaMock";
|
||||
import { describe, expect, it } from "vitest";
|
||||
|
||||
import dayjs from "@calcom/dayjs";
|
||||
import { validateIntervalLimitOrder } from "@calcom/lib";
|
||||
import { checkDurationLimit, checkDurationLimits } from "@calcom/lib/server/checkDurationLimits";
|
||||
import {
|
||||
checkDurationLimit,
|
||||
checkDurationLimits,
|
||||
} from "@calcom/lib/intervalLimits/server/checkDurationLimits";
|
||||
import { validateIntervalLimitOrder } from "@calcom/lib/intervalLimits/validateIntervalLimitOrder";
|
||||
|
||||
type MockData = {
|
||||
id: number;
|
||||
|
||||
@@ -15,6 +15,7 @@ import { appStoreMetadata } from "@calcom/app-store/appStoreMetaData";
|
||||
import { handleStripePaymentSuccess } from "@calcom/features/ee/payments/api/webhook";
|
||||
import { weekdayToWeekIndex, type WeekDays } from "@calcom/lib/date-fns";
|
||||
import type { HttpError } from "@calcom/lib/http-error";
|
||||
import type { IntervalLimit } from "@calcom/lib/intervalLimits/intervalLimitSchema";
|
||||
import logger from "@calcom/lib/logger";
|
||||
import { safeStringify } from "@calcom/lib/safeStringify";
|
||||
import { ProfileRepository } from "@calcom/lib/server/repository/profile";
|
||||
@@ -30,9 +31,12 @@ import type { teamMetadataSchema } from "@calcom/prisma/zod-utils";
|
||||
import type { userMetadataType } from "@calcom/prisma/zod-utils";
|
||||
import type { eventTypeBookingFields } from "@calcom/prisma/zod-utils";
|
||||
import type { AppMeta } from "@calcom/types/App";
|
||||
import type { CalendarEvent, IntegrationCalendar } from "@calcom/types/Calendar";
|
||||
import type { NewCalendarEventType } from "@calcom/types/Calendar";
|
||||
import type { EventBusyDate, IntervalLimit } from "@calcom/types/Calendar";
|
||||
import type {
|
||||
CalendarEvent,
|
||||
IntegrationCalendar,
|
||||
NewCalendarEventType,
|
||||
EventBusyDate,
|
||||
} from "@calcom/types/Calendar";
|
||||
import type { CredentialForCalendarService } from "@calcom/types/Credential";
|
||||
|
||||
import { getMockPaymentService } from "./MockPaymentService";
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import dayjs from "@calcom/dayjs";
|
||||
import { checkBookingLimits } from "@calcom/lib/server/checkBookingLimits";
|
||||
import { checkDurationLimits } from "@calcom/lib/server/checkDurationLimits";
|
||||
import type { IntervalLimit } from "@calcom/types/Calendar";
|
||||
import type { IntervalLimit } from "@calcom/lib/intervalLimits/intervalLimitSchema";
|
||||
import { checkBookingLimits } from "@calcom/lib/intervalLimits/server/checkBookingLimits";
|
||||
import { checkDurationLimits } from "@calcom/lib/intervalLimits/server/checkDurationLimits";
|
||||
|
||||
import type { NewBookingEventType } from "./types";
|
||||
|
||||
|
||||
@@ -3,10 +3,11 @@ 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 { parseBookingLimit, parseDurationLimit } from "@calcom/lib";
|
||||
import { ErrorCode } from "@calcom/lib/errorCodes";
|
||||
import { getBusyTimesForLimitChecks } from "@calcom/lib/getBusyTimes";
|
||||
import { getUsersAvailability } from "@calcom/lib/getUserAvailability";
|
||||
import { parseBookingLimit } from "@calcom/lib/intervalLimits/isBookingLimits";
|
||||
import { parseDurationLimit } from "@calcom/lib/intervalLimits/isDurationLimits";
|
||||
import { getPiiFreeUser } from "@calcom/lib/piiFreeData";
|
||||
import { safeStringify } from "@calcom/lib/safeStringify";
|
||||
|
||||
|
||||
@@ -7,13 +7,13 @@ import { useForm, Controller } from "react-hook-form";
|
||||
import { AppearanceSkeletonLoader } from "@calcom/features/ee/components/CommonSkeletonLoaders";
|
||||
import { IntervalLimitsManager } from "@calcom/features/eventtypes/components/tabs/limits/EventLimitsTab";
|
||||
import SectionBottomActions from "@calcom/features/settings/SectionBottomActions";
|
||||
import { validateIntervalLimitOrder } from "@calcom/lib";
|
||||
import { useLocale } from "@calcom/lib/hooks/useLocale";
|
||||
import { useParamsWithFallback } from "@calcom/lib/hooks/useParamsWithFallback";
|
||||
import type { IntervalLimit } from "@calcom/lib/intervalLimits/intervalLimitSchema";
|
||||
import { validateIntervalLimitOrder } from "@calcom/lib/intervalLimits/validateIntervalLimitOrder";
|
||||
import { MembershipRole } from "@calcom/prisma/enums";
|
||||
import { trpc } from "@calcom/trpc/react";
|
||||
import type { RouterOutputs } from "@calcom/trpc/react";
|
||||
import type { IntervalLimit } from "@calcom/types/Calendar";
|
||||
import { Button, CheckboxField, Form, SettingsToggle, showToast } from "@calcom/ui";
|
||||
import classNames from "@calcom/ui/classNames";
|
||||
|
||||
|
||||
@@ -16,9 +16,9 @@ import type { DurationType } from "@calcom/lib/convertToNewDurationType";
|
||||
import convertToNewDurationType from "@calcom/lib/convertToNewDurationType";
|
||||
import findDurationType from "@calcom/lib/findDurationType";
|
||||
import { useLocale } from "@calcom/lib/hooks/useLocale";
|
||||
import { ascendingLimitKeys, intervalLimitKeyToUnit } from "@calcom/lib/intervalLimit";
|
||||
import { ascendingLimitKeys, intervalLimitKeyToUnit } from "@calcom/lib/intervalLimits/intervalLimit";
|
||||
import type { IntervalLimit } from "@calcom/lib/intervalLimits/intervalLimitSchema";
|
||||
import { PeriodType } from "@calcom/prisma/enums";
|
||||
import type { IntervalLimit } from "@calcom/types/Calendar";
|
||||
import { Button, DateRangePicker, InputField, Label, Select, SettingsToggle, TextField } from "@calcom/ui";
|
||||
import classNames from "@calcom/ui/classNames";
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import type { z } from "zod";
|
||||
|
||||
import type { ChildrenEventType } from "@calcom/features/eventtypes/components/ChildrenEventTypeSelect";
|
||||
import type { IntervalLimit } from "@calcom/lib/intervalLimits/intervalLimitSchema";
|
||||
import type { EventLocationType } from "@calcom/lib/location";
|
||||
import type { AttributesQueryValue } from "@calcom/lib/raqb/types";
|
||||
import type { EventTypeTranslation } from "@calcom/prisma/client";
|
||||
@@ -10,7 +11,7 @@ import type { customInputSchema } from "@calcom/prisma/zod-utils";
|
||||
import type { eventTypeBookingFields } from "@calcom/prisma/zod-utils";
|
||||
import type { eventTypeColor } from "@calcom/prisma/zod-utils";
|
||||
import type { RouterOutputs, RouterInputs } from "@calcom/trpc/react";
|
||||
import type { IntervalLimit, RecurringEvent } from "@calcom/types/Calendar";
|
||||
import type { RecurringEvent } from "@calcom/types/Calendar";
|
||||
|
||||
export type CustomInputParsed = typeof customInputSchema._output;
|
||||
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
import { Prisma } from "@prisma/client";
|
||||
import "server-only";
|
||||
|
||||
import { getLocationGroupedOptions } from "@calcom/app-store/server";
|
||||
import { getEventTypeAppData } from "@calcom/app-store/utils";
|
||||
import { getBookingFieldsWithSystemFields } from "@calcom/features/bookings/lib/getBookingFields";
|
||||
import { parseBookingLimit, parseDurationLimit, parseRecurringEvent, parseEventTypeColor } from "@calcom/lib";
|
||||
import { parseRecurringEvent, parseEventTypeColor } from "@calcom/lib";
|
||||
import { getUserAvatarUrl } from "@calcom/lib/getAvatarUrl";
|
||||
import { parseBookingLimit } from "@calcom/lib/intervalLimits/isBookingLimits";
|
||||
import { parseDurationLimit } from "@calcom/lib/intervalLimits/isDurationLimits";
|
||||
import type { LocationObject } from "@calcom/lib/location";
|
||||
import { getTranslation } from "@calcom/lib/server/i18n";
|
||||
import { EventTypeRepository } from "@calcom/lib/server/repository/eventType";
|
||||
|
||||
@@ -5,7 +5,8 @@ import * as Sentry from "@sentry/nextjs";
|
||||
import dayjs from "@calcom/dayjs";
|
||||
import { getBusyCalendarTimes } from "@calcom/lib/CalendarManager";
|
||||
import { subtract } from "@calcom/lib/date-ranges";
|
||||
import { intervalLimitKeyToUnit } from "@calcom/lib/intervalLimit";
|
||||
import { intervalLimitKeyToUnit } from "@calcom/lib/intervalLimits/intervalLimit";
|
||||
import type { IntervalLimit } from "@calcom/lib/intervalLimits/intervalLimitSchema";
|
||||
import logger from "@calcom/lib/logger";
|
||||
import { getPiiFreeBooking } from "@calcom/lib/piiFreeData";
|
||||
import { performance } from "@calcom/lib/server/perfObserver";
|
||||
@@ -13,7 +14,7 @@ import prisma from "@calcom/prisma";
|
||||
import type { SelectedCalendar } from "@calcom/prisma/client";
|
||||
import { BookingStatus } from "@calcom/prisma/enums";
|
||||
import { stringToDayjs } from "@calcom/prisma/zod-utils";
|
||||
import type { EventBusyDetails, IntervalLimit } from "@calcom/types/Calendar";
|
||||
import type { EventBusyDetails } from "@calcom/types/Calendar";
|
||||
import type { CredentialForCalendarService } from "@calcom/types/Credential";
|
||||
|
||||
import { getDefinedBufferTimes } from "../features/eventtypes/lib/getDefinedBufferTimes";
|
||||
|
||||
@@ -11,12 +11,17 @@ import { z } from "zod";
|
||||
|
||||
import type { Dayjs } from "@calcom/dayjs";
|
||||
import dayjs from "@calcom/dayjs";
|
||||
import { parseBookingLimit, parseDurationLimit } from "@calcom/lib";
|
||||
import { getWorkingHours } from "@calcom/lib/availability";
|
||||
import type { DateOverride, WorkingHours } from "@calcom/lib/date-ranges";
|
||||
import { buildDateRanges, subtract } from "@calcom/lib/date-ranges";
|
||||
import { ErrorCode } from "@calcom/lib/errorCodes";
|
||||
import { HttpError } from "@calcom/lib/http-error";
|
||||
import { parseBookingLimit } from "@calcom/lib/intervalLimits/isBookingLimits";
|
||||
import { parseDurationLimit } from "@calcom/lib/intervalLimits/isDurationLimits";
|
||||
import {
|
||||
getBusyTimesFromLimits,
|
||||
getBusyTimesFromTeamLimits,
|
||||
} from "@calcom/lib/intervalLimits/server/getBusyTimesFromLimits";
|
||||
import logger from "@calcom/lib/logger";
|
||||
import { safeStringify } from "@calcom/lib/safeStringify";
|
||||
import { findUsersForAvailabilityCheck } from "@calcom/lib/server/findUsersForAvailabilityCheck";
|
||||
@@ -28,7 +33,6 @@ import { EventTypeMetaDataSchema, stringToDayjsZod } from "@calcom/prisma/zod-ut
|
||||
import type { EventBusyDetails, IntervalLimitUnit } from "@calcom/types/Calendar";
|
||||
import type { TimeRange } from "@calcom/types/schedule";
|
||||
|
||||
import { getBusyTimesFromLimits, getBusyTimesFromTeamLimits } from "./bookingLimits/getBusyTimesFromLimits";
|
||||
import { getBusyTimes } from "./getBusyTimes";
|
||||
import monitorCallbackAsync, { monitorCallbackSync } from "./sentryWrapper";
|
||||
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
export { default as isPrismaObj, isPrismaObjOrUndefined } from "./isPrismaObj";
|
||||
export * from "./isRecurringEvent";
|
||||
export * from "./isBookingLimits";
|
||||
export * from "./isDurationLimits";
|
||||
export * from "./isEventTypeColor";
|
||||
export * from "./validateIntervalLimitOrder";
|
||||
export * from "./schedules";
|
||||
export * from "./event-types";
|
||||
@@ -1,12 +0,0 @@
|
||||
import type { IntervalLimit, IntervalLimitUnit } from "@calcom/types/Calendar";
|
||||
|
||||
export const ascendingLimitKeys: (keyof IntervalLimit)[] = ["PER_DAY", "PER_WEEK", "PER_MONTH", "PER_YEAR"];
|
||||
|
||||
export const descendingLimitKeys = [...ascendingLimitKeys].reverse();
|
||||
|
||||
/**
|
||||
* Turns `PER_DAY` into `day`, `PER_WEEK` into `week` etc.
|
||||
*/
|
||||
export function intervalLimitKeyToUnit(key: keyof IntervalLimit) {
|
||||
return key.split("_")[1].toLowerCase() as IntervalLimitUnit;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
import type { IntervalLimitUnit, IntervalLimitKey } from "./intervalLimitSchema";
|
||||
|
||||
export const ascendingLimitKeys: IntervalLimitKey[] = ["PER_DAY", "PER_WEEK", "PER_MONTH", "PER_YEAR"];
|
||||
|
||||
export const descendingLimitKeys = [...ascendingLimitKeys].reverse();
|
||||
|
||||
function isIntervalLimitUnit(value: string): value is IntervalLimitUnit {
|
||||
return ["day", "week", "month", "year"].includes(value); // Replace with actual values
|
||||
}
|
||||
/**
|
||||
* Turns `PER_DAY` into `day`, `PER_WEEK` into `week` etc.
|
||||
*/
|
||||
export function intervalLimitKeyToUnit(key: IntervalLimitKey): IntervalLimitUnit {
|
||||
const extracted = key.split("_")[1].toLowerCase();
|
||||
if (isIntervalLimitUnit(extracted)) return extracted;
|
||||
throw new Error(`Invalid interval limit key: ${key}`);
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
import { z } from "zod";
|
||||
|
||||
export type IntervalLimitUnit = "day" | "week" | "month" | "year";
|
||||
export type IntervalLimit = Partial<Record<`PER_${Uppercase<IntervalLimitUnit>}`, number | undefined>>;
|
||||
export type IntervalLimitKey = keyof IntervalLimit;
|
||||
|
||||
export const intervalLimitsType: z.Schema<IntervalLimit | null> = z
|
||||
.object({
|
||||
PER_DAY: z.number().optional(),
|
||||
PER_WEEK: z.number().optional(),
|
||||
PER_MONTH: z.number().optional(),
|
||||
PER_YEAR: z.number().optional(),
|
||||
})
|
||||
.nullable();
|
||||
@@ -1,5 +1,5 @@
|
||||
import { intervalLimitsType } from "@calcom/prisma/zod-utils";
|
||||
import type { IntervalLimit } from "@calcom/types/Calendar";
|
||||
import { intervalLimitsType } from "./intervalLimitSchema";
|
||||
import type { IntervalLimit } from "./intervalLimitSchema";
|
||||
|
||||
export function isBookingLimit(obj: unknown): obj is IntervalLimit {
|
||||
return intervalLimitsType.safeParse(obj).success;
|
||||
@@ -1,5 +1,5 @@
|
||||
import { intervalLimitsType } from "@calcom/prisma/zod-utils";
|
||||
import type { IntervalLimit } from "@calcom/types/Calendar";
|
||||
import type { IntervalLimit } from "./intervalLimitSchema";
|
||||
import { intervalLimitsType } from "./intervalLimitSchema";
|
||||
|
||||
export function isDurationLimit(obj: unknown): obj is IntervalLimit {
|
||||
return intervalLimitsType.safeParse(obj).success;
|
||||
+3
-1
@@ -1,5 +1,7 @@
|
||||
import type { Dayjs } from "@calcom/dayjs";
|
||||
import type { EventBusyDate, IntervalLimitUnit } from "@calcom/types/Calendar";
|
||||
import type { EventBusyDate } from "@calcom/types/Calendar";
|
||||
|
||||
import type { IntervalLimitUnit } from "./intervalLimitSchema";
|
||||
|
||||
type BusyMapKey = `${IntervalLimitUnit}-${ReturnType<Dayjs["toISOString"]>}`;
|
||||
|
||||
+5
-5
@@ -1,13 +1,13 @@
|
||||
import dayjs from "@calcom/dayjs";
|
||||
import { getErrorFromUnknown } from "@calcom/lib/errors";
|
||||
import { HttpError } from "@calcom/lib/http-error";
|
||||
import { BookingRepository } from "@calcom/lib/server/repository/booking";
|
||||
import prisma from "@calcom/prisma";
|
||||
import { BookingStatus } from "@calcom/prisma/enums";
|
||||
import type { IntervalLimit } from "@calcom/types/Calendar";
|
||||
|
||||
import { getErrorFromUnknown } from "../errors";
|
||||
import { HttpError } from "../http-error";
|
||||
import { ascendingLimitKeys, intervalLimitKeyToUnit } from "../intervalLimit";
|
||||
import type { IntervalLimit, IntervalLimitKey } from "../intervalLimitSchema";
|
||||
import { parseBookingLimit } from "../isBookingLimits";
|
||||
import { BookingRepository } from "./repository/booking";
|
||||
|
||||
export async function checkBookingLimits(
|
||||
bookingLimits: IntervalLimit,
|
||||
@@ -53,7 +53,7 @@ export async function checkBookingLimit({
|
||||
}: {
|
||||
eventStartDate: Date;
|
||||
eventId?: number;
|
||||
key: keyof IntervalLimit;
|
||||
key: IntervalLimitKey;
|
||||
limitingNumber: number | undefined;
|
||||
rescheduleUid?: string | undefined;
|
||||
timeZone?: string | null;
|
||||
+5
-5
@@ -1,11 +1,11 @@
|
||||
import dayjs from "@calcom/dayjs";
|
||||
import type { IntervalLimit } from "@calcom/types/Calendar";
|
||||
import { getErrorFromUnknown } from "@calcom/lib/errors";
|
||||
import { HttpError } from "@calcom/lib/http-error";
|
||||
import { getTotalBookingDuration } from "@calcom/lib/server/queries";
|
||||
|
||||
import { getErrorFromUnknown } from "../errors";
|
||||
import { HttpError } from "../http-error";
|
||||
import { ascendingLimitKeys, intervalLimitKeyToUnit } from "../intervalLimit";
|
||||
import type { IntervalLimit, IntervalLimitKey } from "../intervalLimitSchema";
|
||||
import { parseDurationLimit } from "../isDurationLimits";
|
||||
import { getTotalBookingDuration } from "./queries";
|
||||
|
||||
export async function checkDurationLimits(
|
||||
durationLimits: IntervalLimit,
|
||||
@@ -43,7 +43,7 @@ export async function checkDurationLimit({
|
||||
}: {
|
||||
eventStartDate: Date;
|
||||
eventId: number;
|
||||
key: keyof IntervalLimit;
|
||||
key: IntervalLimitKey;
|
||||
limitingNumber: number | undefined;
|
||||
rescheduleUid?: string;
|
||||
}) {
|
||||
+9
-8
@@ -1,17 +1,18 @@
|
||||
import type { Dayjs } from "@calcom/dayjs";
|
||||
import dayjs from "@calcom/dayjs";
|
||||
import { descendingLimitKeys, intervalLimitKeyToUnit } from "@calcom/lib/intervalLimit";
|
||||
import { checkBookingLimit } from "@calcom/lib/server/checkBookingLimits";
|
||||
import { getStartEndDateforLimitCheck } from "@calcom/lib/getBusyTimes";
|
||||
import type { EventType } from "@calcom/lib/getUserAvailability";
|
||||
import { getPeriodStartDatesBetween } from "@calcom/lib/getUserAvailability";
|
||||
import monitorCallbackAsync from "@calcom/lib/sentryWrapper";
|
||||
import { performance } from "@calcom/lib/server/perfObserver";
|
||||
import { getTotalBookingDuration } from "@calcom/lib/server/queries";
|
||||
import { BookingRepository } from "@calcom/lib/server/repository/booking";
|
||||
import type { EventBusyDetails, IntervalLimit } from "@calcom/types/Calendar";
|
||||
import type { EventBusyDetails } from "@calcom/types/Calendar";
|
||||
|
||||
import { getStartEndDateforLimitCheck } from "../getBusyTimes";
|
||||
import type { EventType } from "../getUserAvailability";
|
||||
import { getPeriodStartDatesBetween } from "../getUserAvailability";
|
||||
import monitorCallbackAsync from "../sentryWrapper";
|
||||
import LimitManager from "./limitManager";
|
||||
import { descendingLimitKeys, intervalLimitKeyToUnit } from "../intervalLimit";
|
||||
import type { IntervalLimit } from "../intervalLimitSchema";
|
||||
import LimitManager from "../limitManager";
|
||||
import { checkBookingLimit } from "./checkBookingLimits";
|
||||
|
||||
export const getBusyTimesFromLimits = async (
|
||||
...args: Parameters<typeof _getBusyTimesFromLimits>
|
||||
+1
-2
@@ -1,6 +1,5 @@
|
||||
import type { IntervalLimit } from "@calcom/types/Calendar";
|
||||
|
||||
import { ascendingLimitKeys } from "./intervalLimit";
|
||||
import type { IntervalLimit } from "./intervalLimitSchema";
|
||||
|
||||
export const validateIntervalLimitOrder = (input: IntervalLimit) => {
|
||||
// Sort limits by validationOrder
|
||||
@@ -1,5 +1,3 @@
|
||||
export { checkBookingLimits, checkBookingLimit } from "./checkBookingLimits";
|
||||
export { checkDurationLimits, checkDurationLimit } from "./checkDurationLimits";
|
||||
export { defaultHandler } from "./defaultHandler";
|
||||
export { defaultResponder } from "./defaultResponder";
|
||||
export { getLuckyUser } from "./getLuckyUser";
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { Prisma } from "@prisma/client";
|
||||
|
||||
import { getAppFromSlug } from "@calcom/app-store/utils";
|
||||
import { parseBookingLimit } from "@calcom/lib";
|
||||
import { parseBookingLimit } from "@calcom/lib/intervalLimits/isBookingLimits";
|
||||
import prisma, { baseEventTypeSelect } from "@calcom/prisma";
|
||||
import type { Team } from "@calcom/prisma/client";
|
||||
import { SchedulingType } from "@calcom/prisma/enums";
|
||||
|
||||
@@ -15,10 +15,10 @@ import type {
|
||||
EventTypeSetupProps,
|
||||
EventTypeUpdateInput,
|
||||
} from "@calcom/features/eventtypes/lib/types";
|
||||
import { validateIntervalLimitOrder } from "@calcom/lib";
|
||||
import { validateCustomEventName } from "@calcom/lib/event";
|
||||
import { locationsResolver } from "@calcom/lib/event-types/utils/locationsResolver";
|
||||
import { useLocale } from "@calcom/lib/hooks/useLocale";
|
||||
import { validateIntervalLimitOrder } from "@calcom/lib/intervalLimits/validateIntervalLimitOrder";
|
||||
import { validateBookerLayouts } from "@calcom/lib/validateBookerLayouts";
|
||||
import { eventTypeBookingFields as eventTypeBookingFieldsSchema } from "@calcom/prisma/zod-utils";
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ import type { FieldType as FormBuilderFieldType } from "@calcom/features/form-bu
|
||||
import { fieldsSchema as formBuilderFieldsSchema } from "@calcom/features/form-builder/schema";
|
||||
import { isSupportedTimeZone } from "@calcom/lib/date-fns";
|
||||
import { emailSchema as emailRegexSchema, emailRegex } from "@calcom/lib/emailSchema";
|
||||
import type { IntervalLimit } from "@calcom/lib/intervalLimits/intervalLimitSchema";
|
||||
import { zodAttributesQueryValue } from "@calcom/lib/raqb/zod";
|
||||
import { slugify } from "@calcom/lib/slugify";
|
||||
import { EventTypeCustomInputType } from "@calcom/prisma/enums";
|
||||
@@ -212,14 +213,9 @@ export const eventTypeColor = z
|
||||
})
|
||||
.nullable();
|
||||
|
||||
export const intervalLimitsType = z
|
||||
.object({
|
||||
PER_DAY: z.number().optional(),
|
||||
PER_WEEK: z.number().optional(),
|
||||
PER_MONTH: z.number().optional(),
|
||||
PER_YEAR: z.number().optional(),
|
||||
})
|
||||
.nullable();
|
||||
export type IntervalLimitsType = IntervalLimit | null;
|
||||
|
||||
export { intervalLimitsType } from "@calcom/lib/intervalLimits/intervalLimitSchema";
|
||||
|
||||
export const eventTypeSlug = z.string().transform((val) => slugify(val.trim()));
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import {
|
||||
allowDisablingHostConfirmationEmails,
|
||||
} from "@calcom/features/ee/workflows/lib/allowDisablingStandardEmails";
|
||||
import tasker from "@calcom/features/tasker";
|
||||
import { validateIntervalLimitOrder } from "@calcom/lib";
|
||||
import { validateIntervalLimitOrder } from "@calcom/lib/intervalLimits/validateIntervalLimitOrder";
|
||||
import logger from "@calcom/lib/logger";
|
||||
import { getTranslation } from "@calcom/lib/server/i18n";
|
||||
import { validateBookerLayouts } from "@calcom/lib/validateBookerLayouts";
|
||||
|
||||
@@ -9,7 +9,6 @@ import { getSlugOrRequestedSlug, orgDomainConfig } from "@calcom/ee/organization
|
||||
import { checkForConflicts } from "@calcom/features/bookings/lib/conflictChecker/checkForConflicts";
|
||||
import { isEventTypeLoggingEnabled } from "@calcom/features/bookings/lib/isEventTypeLoggingEnabled";
|
||||
import { getShouldServeCache } from "@calcom/features/calendar-cache/lib/getShouldServeCache";
|
||||
import { parseBookingLimit, parseDurationLimit } from "@calcom/lib";
|
||||
import { findQualifiedHostsWithDelegationCredentials } from "@calcom/lib/bookings/findQualifiedHostsWithDelegationCredentials";
|
||||
import { shouldIgnoreContactOwner } from "@calcom/lib/bookings/routing/utils";
|
||||
import { RESERVED_SUBDOMAINS } from "@calcom/lib/constants";
|
||||
@@ -19,6 +18,8 @@ import { getAggregatedAvailability } from "@calcom/lib/getAggregatedAvailability
|
||||
import { getBusyTimesForLimitChecks } from "@calcom/lib/getBusyTimes";
|
||||
import type { CurrentSeats, GetAvailabilityUser, IFromUser, IToUser } from "@calcom/lib/getUserAvailability";
|
||||
import { getUsersAvailability } from "@calcom/lib/getUserAvailability";
|
||||
import { parseBookingLimit } from "@calcom/lib/intervalLimits/isBookingLimits";
|
||||
import { parseDurationLimit } from "@calcom/lib/intervalLimits/isDurationLimits";
|
||||
import {
|
||||
calculatePeriodLimits,
|
||||
isTimeOutOfBounds,
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
import type { Prisma } from "@prisma/client";
|
||||
|
||||
import { getOrgFullOrigin } from "@calcom/ee/organizations/lib/orgDomains";
|
||||
import { validateIntervalLimitOrder } from "@calcom/lib";
|
||||
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 { isTeamAdmin } from "@calcom/lib/server/queries/teams";
|
||||
import { prisma } from "@calcom/prisma";
|
||||
import { RedirectType } from "@calcom/prisma/enums";
|
||||
import { teamMetadataSchema } from "@calcom/prisma/zod-utils";
|
||||
import type { IntervalLimit } from "@calcom/types/Calendar";
|
||||
|
||||
import { TRPCError } from "@trpc/server";
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { z } from "zod";
|
||||
|
||||
import { intervalLimitsType } from "@calcom/lib/intervalLimits/intervalLimitSchema";
|
||||
import { resizeBase64Image } from "@calcom/lib/server/resizeBase64Image";
|
||||
import slugify from "@calcom/lib/slugify";
|
||||
import { intervalLimitsType } from "@calcom/prisma/zod-utils";
|
||||
|
||||
export const ZUpdateInputSchema = z.object({
|
||||
id: z.number(),
|
||||
|
||||
Vendored
+2
-4
@@ -8,13 +8,13 @@ import type {
|
||||
import type { Dayjs } from "dayjs";
|
||||
import type { Time } from "ical.js";
|
||||
import type { TFunction } from "next-i18next";
|
||||
import type { Frequency } from "rrule";
|
||||
import type z from "zod";
|
||||
|
||||
import type { bookingResponse } from "@calcom/features/bookings/lib/getBookingResponsesSchema";
|
||||
import type { Calendar } from "@calcom/features/calendars/weeklyview";
|
||||
import type { TimeFormat } from "@calcom/lib/timeFormat";
|
||||
import type { SchedulingType } from "@calcom/prisma/enums";
|
||||
import type { Frequency } from "@calcom/prisma/zod-utils";
|
||||
import type { CredentialForCalendarService } from "@calcom/types/Credential";
|
||||
|
||||
import type { Ensure } from "./utils";
|
||||
@@ -135,9 +135,7 @@ export interface RecurringEvent {
|
||||
tzid?: string | undefined;
|
||||
}
|
||||
|
||||
export type IntervalLimitUnit = "day" | "week" | "month" | "year";
|
||||
|
||||
export type IntervalLimit = Partial<Record<`PER_${Uppercase<IntervalLimitUnit>}`, number | undefined>>;
|
||||
export type { IntervalLimit, IntervalLimitUnit } from "@calcom/lib/intervalLimits/intervalLimitSchema";
|
||||
|
||||
export type AppsStatus = {
|
||||
appName: string;
|
||||
|
||||
Reference in new issue
Block a user