From d23d68bf2d7afb32c4d7b0dd0a8bdbe28085576a Mon Sep 17 00:00:00 2001 From: "devin-ai-integration[bot]" <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Thu, 3 Jul 2025 11:37:15 +0100 Subject: [PATCH] fix: add explicit type annotation to CalComAdapter function (#22230) * fix: add explicit type annotation to CalComAdapter function Resolves TS7056 error where inferred type exceeded maximum length the compiler will serialize. Added custom CalComAdapterType type annotation to provide explicit typing while preserving existing functionality of the authentication adapter. The custom type annotation matches the actual implementation structure and resolves the TypeScript compilation error without breaking the existing NextAuth adapter functionality. Co-Authored-By: alex@cal.com * fix: replace any types with proper NextAuth Adapter typing - Import Awaitable type from next-auth for proper async typing - Define CalComAdapter type using Cal.com's actual Prisma types - Remove all any types following TypeScript best practices - Maintain compatibility with NextAuth's expected interface - Resolves TS7056 compilation error with explicit typing Co-Authored-By: alex@cal.com --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: alex@cal.com --- .../auth/lib/next-auth-custom-adapter.ts | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/packages/features/auth/lib/next-auth-custom-adapter.ts b/packages/features/auth/lib/next-auth-custom-adapter.ts index a3aff5e12a..bb6b61b497 100644 --- a/packages/features/auth/lib/next-auth-custom-adapter.ts +++ b/packages/features/auth/lib/next-auth-custom-adapter.ts @@ -1,12 +1,33 @@ import type { Account, IdentityProvider, Prisma, User, VerificationToken } from "@prisma/client"; import { PrismaClientKnownRequestError } from "@prisma/client/runtime/library"; +import type { Awaitable } from "next-auth"; import type { PrismaClient } from "@calcom/prisma"; import { identityProviderNameMap } from "./identityProviderNameMap"; +type CalComAdapter = { + createUser: (data: Prisma.UserCreateInput) => Awaitable; + getUser: (id: string | number) => Awaitable; + getUserByEmail: (email: User["email"]) => Awaitable; + getUserByAccount: (provider_providerAccountId: { + providerAccountId: Account["providerAccountId"]; + provider: User["identityProvider"]; + }) => Awaitable; + updateUser: (data: Prisma.UserUncheckedCreateInput) => Awaitable; + deleteUser: (id: User["id"]) => Awaitable; + createVerificationToken: (data: VerificationToken) => Awaitable>; + useVerificationToken: ( + identifier_token: Prisma.VerificationTokenIdentifierTokenCompoundUniqueInput + ) => Awaitable | null>; + linkAccount: (data: Prisma.AccountCreateInput) => Awaitable; + unlinkAccount: ( + provider_providerAccountId: Prisma.AccountProviderProviderAccountIdCompoundUniqueInput + ) => Awaitable; +}; + /** @return { import("next-auth/adapters").Adapter } */ -export default function CalComAdapter(prismaClient: PrismaClient) { +export default function CalComAdapter(prismaClient: PrismaClient): CalComAdapter { return { createUser: (data: Prisma.UserCreateInput) => prismaClient.user.create({ data }), getUser: (id: string | number) =>