Skip to content

Type issue in 4.24.8 Adapter #11916

Open
Open
@tacomanator

Description

@tacomanator

Environment

  System:
    OS: macOS 14.6.1
    CPU: (10) arm64 Apple M1 Max
    Memory: 259.67 MB / 32.00 GB
    Shell: 5.9 - /bin/zsh
  Binaries:
    Node: 20.16.0 - ~/.nvm/versions/node/v20.16.0/bin/node
    npm: 10.8.1 - ~/.nvm/versions/node/v20.16.0/bin/npm
    pnpm: 9.11.0 - ~/Library/pnpm/pnpm
    bun: 1.0.2 - ~/.bun/bin/bun
  Browsers:
    Chrome: 129.0.6668.70
    Safari: 17.6
  npmPackages:
    next: 14.2.13 => 14.2.13 
    next-auth: ^4.24.8 => 4.24.8 
    react: ^18 => 18.3.1 

Reproduction URL

https://github.com/tacomanator/next-auth-adapter-4.24.8

Describe the issue

In upgrading from 4.24.7 to 4.24.8, the parameter types for the following Adapter methods are missing (i.e. becoming implicit any):

  • createUser
  • linkAccount
  • unlinkAccount

How to reproduce

try to build typescript project with custom Adapter. For example, the reproduction repository uses the following:

import { Adapter, AdapterSession, AdapterUser } from "next-auth/adapters";

const data: { user: AdapterUser; session: AdapterSession } = {
  user: { id: "test", name: "test", email: "test", emailVerified: new Date() },
  session: { sessionToken: "test", userId: "test", expires: new Date() },
};

export default function MyAdapter(): Adapter {
  return {
    async createUser(user) {
      console.log(user);
      return;
    },
    async getUser(id) {
      console.log(id);
      return null;
    },
    async getUserByEmail(email) {
      console.log(email);
      return null;
    },
    async getUserByAccount({ providerAccountId, provider }) {
      console.log(providerAccountId, provider);
      return null;
    },
    async updateUser(user) {
      console.log(user);
      return data.user;
    },
    async deleteUser(userId) {
      console.log(userId);
      return;
    },
    async linkAccount(account) {
      console.log(account);
      return null;
    },
    async unlinkAccount({ providerAccountId, provider }) {
      console.log(providerAccountId, provider);
      return null;
    },
    async createSession({ sessionToken, userId, expires }) {
      console.log(sessionToken, userId, expires);
      return data.session;
    },
    async getSessionAndUser(sessionToken) {
      console.log(sessionToken);
      return null;
    },
    async updateSession({ sessionToken }) {
      console.log(sessionToken);
      return null;
    },
    async deleteSession(sessionToken) {
      console.log(sessionToken);
      return null;
    },
    async createVerificationToken({ identifier, expires, token }) {
      console.log(identifier, expires, token);
      return null;
    },
    async useVerificationToken({ identifier, token }) {
      console.log(identifier, token);
      return null;
    },
  };
}

Expected behavior

Types are present for parameters and can build.

Metadata

Metadata

Assignees

No one assigned

    Labels

    TypeScriptIssues relating to TypeScriptbugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions