Skip to content

Commit d23d68b

Browse files
fix: add explicit type annotation to CalComAdapter function (calcom#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 <me@alexvanandel.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 <me@alexvanandel.com> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: alex@cal.com <me@alexvanandel.com>
1 parent d04c7f5 commit d23d68b

1 file changed

Lines changed: 22 additions & 1 deletion

File tree

packages/features/auth/lib/next-auth-custom-adapter.ts

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,33 @@
11
import type { Account, IdentityProvider, Prisma, User, VerificationToken } from "@prisma/client";
22
import { PrismaClientKnownRequestError } from "@prisma/client/runtime/library";
3+
import type { Awaitable } from "next-auth";
34

45
import type { PrismaClient } from "@calcom/prisma";
56

67
import { identityProviderNameMap } from "./identityProviderNameMap";
78

9+
type CalComAdapter = {
10+
createUser: (data: Prisma.UserCreateInput) => Awaitable<User>;
11+
getUser: (id: string | number) => Awaitable<User | null>;
12+
getUserByEmail: (email: User["email"]) => Awaitable<User | null>;
13+
getUserByAccount: (provider_providerAccountId: {
14+
providerAccountId: Account["providerAccountId"];
15+
provider: User["identityProvider"];
16+
}) => Awaitable<User | null>;
17+
updateUser: (data: Prisma.UserUncheckedCreateInput) => Awaitable<User>;
18+
deleteUser: (id: User["id"]) => Awaitable<User>;
19+
createVerificationToken: (data: VerificationToken) => Awaitable<Omit<VerificationToken, "id">>;
20+
useVerificationToken: (
21+
identifier_token: Prisma.VerificationTokenIdentifierTokenCompoundUniqueInput
22+
) => Awaitable<Omit<VerificationToken, "id"> | null>;
23+
linkAccount: (data: Prisma.AccountCreateInput) => Awaitable<Account>;
24+
unlinkAccount: (
25+
provider_providerAccountId: Prisma.AccountProviderProviderAccountIdCompoundUniqueInput
26+
) => Awaitable<Account>;
27+
};
28+
829
/** @return { import("next-auth/adapters").Adapter } */
9-
export default function CalComAdapter(prismaClient: PrismaClient) {
30+
export default function CalComAdapter(prismaClient: PrismaClient): CalComAdapter {
1031
return {
1132
createUser: (data: Prisma.UserCreateInput) => prismaClient.user.create({ data }),
1233
getUser: (id: string | number) =>

0 commit comments

Comments
 (0)