diff --git a/packages/features/apps/components/AppListCard.tsx b/packages/features/apps/components/AppListCard.tsx index 7f9147ca99..db8ec9f6cf 100644 --- a/packages/features/apps/components/AppListCard.tsx +++ b/packages/features/apps/components/AppListCard.tsx @@ -54,7 +54,7 @@ function AppListCardWebWrapper(props: AppListCardProps) { useEffect(() => { if (shouldHighlight && highlight && searchParams !== null && pathname !== null) { timeoutRef.current = setTimeout(() => { - const _searchParams = new URLSearchParams(searchParams); + const _searchParams = new URLSearchParams(searchParams.toString()); _searchParams.delete("hl"); _searchParams.delete("category"); // this comes from params, not from search params diff --git a/packages/features/bookings/Booker/utils/isBookingDryRun.ts b/packages/features/bookings/Booker/utils/isBookingDryRun.ts index e5c4341639..d20c4cb14f 100644 --- a/packages/features/bookings/Booker/utils/isBookingDryRun.ts +++ b/packages/features/bookings/Booker/utils/isBookingDryRun.ts @@ -1,3 +1,5 @@ -export const isBookingDryRun = (searchParams: URLSearchParams) => { +import type { ReadonlyURLSearchParams } from "next/navigation"; + +export const isBookingDryRun = (searchParams: URLSearchParams | ReadonlyURLSearchParams) => { return searchParams.get("cal.isBookingDryRun") === "true"; }; diff --git a/packages/features/bookings/lib/handleNewBooking/getEventTypesFromDB.ts b/packages/features/bookings/lib/handleNewBooking/getEventTypesFromDB.ts index 56ba713459..8404b11b27 100644 --- a/packages/features/bookings/lib/handleNewBooking/getEventTypesFromDB.ts +++ b/packages/features/bookings/lib/handleNewBooking/getEventTypesFromDB.ts @@ -183,7 +183,7 @@ export const getEventTypesFromDB = async (eventTypeId: number) => { recurringEvent: parseRecurringEvent(eventType?.recurringEvent), customInputs: customInputSchema.array().parse(eventType?.customInputs || []), locations: (eventType?.locations ?? []) as LocationObject[], - bookingFields: getBookingFieldsWithSystemFields({ ...restEventType, isOrgTeamEvent } || {}), + bookingFields: getBookingFieldsWithSystemFields({ ...restEventType, isOrgTeamEvent }), rrSegmentQueryValue: rrSegmentQueryValueSchema.parse(eventType.rrSegmentQueryValue) ?? null, isDynamic: false, }; diff --git a/packages/features/ee/organizations/lib/orgDomains.ts b/packages/features/ee/organizations/lib/orgDomains.ts index 3d38ffb74f..3ee1d66a26 100644 --- a/packages/features/ee/organizations/lib/orgDomains.ts +++ b/packages/features/ee/organizations/lib/orgDomains.ts @@ -43,7 +43,7 @@ export function getOrgSlug(hostname: string, forcedSlug?: string) { return null; } // Define which is the current domain/subdomain - const slug = hostname.replace(`.${currentHostname}` ?? "", ""); + const slug = hostname.replace(currentHostname ? `.${currentHostname}` : "", ""); const hasNoDotInSlug = slug.indexOf(".") === -1; if (hasNoDotInSlug) { return slug; diff --git a/packages/features/embed/Embed.tsx b/packages/features/embed/Embed.tsx index 57c18b1dde..851ee92a8d 100644 --- a/packages/features/embed/Embed.tsx +++ b/packages/features/embed/Embed.tsx @@ -98,7 +98,7 @@ function useRouterHelpers() { const pathname = usePathname(); const goto = (newSearchParams: Record) => { - const newQuery = new URLSearchParams(searchParams ?? undefined); + const newQuery = new URLSearchParams(searchParams.toString()); newQuery.delete("slug"); newQuery.delete("pages"); Object.keys(newSearchParams).forEach((key) => { @@ -109,7 +109,7 @@ function useRouterHelpers() { }; const removeQueryParams = (queryParams: string[]) => { - const params = new URLSearchParams(searchParams ?? undefined); + const params = new URLSearchParams(searchParams.toString()); queryParams.forEach((param) => { params.delete(param); @@ -703,7 +703,7 @@ const EmbedTypeCodeAndPreviewDialogContent = ({ const teamSlug = !!eventTypeData?.team ? eventTypeData.team.slug : null; const s = (href: string) => { - const _searchParams = new URLSearchParams(searchParams ?? undefined); + const _searchParams = new URLSearchParams(searchParams.toString()); const [a, b] = href.split("="); _searchParams.set(a, b); return `${pathname?.split("?")[0] ?? ""}?${_searchParams.toString()}`; diff --git a/packages/features/eventtypes/components/tabs/limits/EventLimitsTab.tsx b/packages/features/eventtypes/components/tabs/limits/EventLimitsTab.tsx index aaa805c4fb..3e208e65f9 100644 --- a/packages/features/eventtypes/components/tabs/limits/EventLimitsTab.tsx +++ b/packages/features/eventtypes/components/tabs/limits/EventLimitsTab.tsx @@ -917,7 +917,9 @@ export const IntervalLimitsManager = path == "/insights" ?? false, + isCurrent: ({ pathname: path }) => path === "/insights", }, { name: "routing", diff --git a/packages/lib/bookingSuccessRedirect.ts b/packages/lib/bookingSuccessRedirect.ts index fbc479052d..9dc57a5e85 100644 --- a/packages/lib/bookingSuccessRedirect.ts +++ b/packages/lib/bookingSuccessRedirect.ts @@ -190,7 +190,7 @@ export const useBookingSuccessRedirect = () => { ...query, ...bookingExtraParams, }, - searchParams: searchParams ?? undefined, + searchParams: new URLSearchParams(searchParams.toString()), }); newSearchParams.forEach((value, key) => { diff --git a/packages/lib/crypto.ts b/packages/lib/crypto.ts index f1efba93b6..37545b2954 100644 --- a/packages/lib/crypto.ts +++ b/packages/lib/crypto.ts @@ -15,7 +15,6 @@ const IV_LENGTH = 16; // AES blocksize export const symmetricEncrypt = function (text: string, key: string) { const _key = Buffer.from(key, "latin1"); const iv = crypto.randomBytes(IV_LENGTH); - const cipher = crypto.createCipheriv(ALGORITHM, _key, iv); let ciphered = cipher.update(text, INPUT_ENCODING, OUTPUT_ENCODING); ciphered += cipher.final(OUTPUT_ENCODING); diff --git a/packages/lib/slugify.ts b/packages/lib/slugify.ts index 0d6a742c04..2409856a3a 100644 --- a/packages/lib/slugify.ts +++ b/packages/lib/slugify.ts @@ -10,7 +10,11 @@ export const slugify = (str: string, forDisplayingInput?: boolean) => { .toLowerCase() // Convert to lowercase .trim() // Remove whitespace from both sides .normalize("NFD") // Normalize to decomposed form for handling accents + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore .replace(/\p{Diacritic}/gu, "") // Remove any diacritics (accents) from characters + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore .replace(/[^.\p{L}\p{N}\p{Zs}\p{Emoji}]+/gu, "-") // Replace any non-alphanumeric characters (including Unicode and except "." period) with a dash .replace(/[\s_#]+/g, "-") // Replace whitespace, # and underscores with a single dash .replace(/^-+/, "") // Remove dashes from start diff --git a/packages/trpc/package.json b/packages/trpc/package.json index c0cc2ae8cc..d94a9472a8 100644 --- a/packages/trpc/package.json +++ b/packages/trpc/package.json @@ -22,6 +22,6 @@ "zod": "^3.22.4" }, "devDependencies": { - "typescript": "^5.3.3" + "typescript": "^5.8.2" } } diff --git a/packages/trpc/server/routers/viewer/organizations/adminUpdate.handler.ts b/packages/trpc/server/routers/viewer/organizations/adminUpdate.handler.ts index 0291130579..fe87182792 100644 --- a/packages/trpc/server/routers/viewer/organizations/adminUpdate.handler.ts +++ b/packages/trpc/server/routers/viewer/organizations/adminUpdate.handler.ts @@ -74,9 +74,9 @@ export const adminUpdateHandler = async ({ input }: AdminUpdateOptions) => { isAdminReviewed: organizationSettings?.isAdminReviewed, orgAutoAcceptEmail: organizationSettings?.orgAutoAcceptEmail || existingOrg.organizationSettings?.orgAutoAcceptEmail, - isAdminAPIEnabled: - !!organizationSettings?.isAdminAPIEnabled ?? - !!existingOrg.organizationSettings?.isAdminAPIEnabled, + isAdminAPIEnabled: !!( + organizationSettings?.isAdminAPIEnabled ?? existingOrg.organizationSettings?.isAdminAPIEnabled + ), }, }); } diff --git a/packages/trpc/tsconfig.json b/packages/trpc/tsconfig.json index 678f634bc0..4a192b93e4 100644 --- a/packages/trpc/tsconfig.json +++ b/packages/trpc/tsconfig.json @@ -10,10 +10,6 @@ "@calcom/features/*": ["../features/*"], "@calcom/lib": ["../lib"], "@calcom/lib/*": ["../lib/*"], - "@calcom/platform-constants": ["../platform/constants/index.ts"], - "@calcom/platform-enums": ["../platform/enums/index.ts"], - "@calcom/platform-types": ["../platform/types/index.ts"], - "@calcom/platform-utils": ["../platform/utils/index.ts"], "@calcom/prisma": ["../prisma"], "@calcom/prisma/*": ["../prisma/*"], "@calcom/repository/*": ["../lib/server/repository/*"] diff --git a/packages/ui/components/createButton/CreateButton.tsx b/packages/ui/components/createButton/CreateButton.tsx index 21d37c6298..e1c05e49c8 100644 --- a/packages/ui/components/createButton/CreateButton.tsx +++ b/packages/ui/components/createButton/CreateButton.tsx @@ -62,7 +62,7 @@ export function CreateButton(props: CreateBtnProps) { // inject selection data into url for correct router history const openModal = (option: Option) => { - const _searchParams = new URLSearchParams(searchParams ?? undefined); + const _searchParams = new URLSearchParams(searchParams.toString()); function setParamsIfDefined(key: string, value: string | number | boolean | null | undefined) { if (value !== undefined && value !== null) _searchParams.set(key, value.toString()); } diff --git a/packages/ui/components/dialog/Dialog.tsx b/packages/ui/components/dialog/Dialog.tsx index 035731f270..a6fcf0b08e 100644 --- a/packages/ui/components/dialog/Dialog.tsx +++ b/packages/ui/components/dialog/Dialog.tsx @@ -57,7 +57,7 @@ function WebDialog(props: DialogProps) { const router = useRouter(); const pathname = usePathname(); const searchParams = useCompatSearchParams(); - const newSearchParams = new URLSearchParams(searchParams ?? undefined); + const newSearchParams = new URLSearchParams(searchParams.toString()); const { children, name, ...dialogProps } = props; // only used if name is set diff --git a/yarn.lock b/yarn.lock index d9798f781f..7d7074840f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3666,7 +3666,7 @@ __metadata: "@trpc/react-query": 11.0.0-next-beta.222 "@trpc/server": 11.0.0-next-beta.222 superjson: 1.9.1 - typescript: ^5.3.3 + typescript: ^5.8.2 zod: ^3.22.4 languageName: unknown linkType: soft