[GH-ISSUE #923] Endpoints<c> / ZodIssue type issues with several plugins (org, twoFactor) #8501

Closed
opened 2026-04-13 03:35:22 -05:00 by GiteaMirror · 4 comments
Owner

Originally created by @darr1s on GitHub (Dec 17, 2024).
Original GitHub issue: https://github.com/better-auth/better-auth/issues/923

Is this suited for github?

  • Yes, this is suited for github

To Reproduce

  1. Use turborepo (t3 default)
  2. Replace auth pkg with latest better-auth

Current vs. Expected behavior

The following plugins will report ZodIssues errors:

  • organization
  • twoFactor
  • passkey()
  • admin()
  • multiSession()
  • oneTap()
  • oAuthProxy()

The following will not:

  • openapi
  • bearer

What version of Better Auth are you using?

1.0.22

Provide environment information

{
  "name": "@turbo/auth",
  "version": "0.1.0",
  "dependencies": {
    "@better-fetch/fetch": "^1.1.12",
    "@t3-oss/env-nextjs": "^0.11.1",
    "@turbo/db": "0.1.0",
    "@turbo/email": "0.1.0",
    "@turbo/logger": "0.1.0",
    "better-auth": "^1.0.14",
    "better-call": "0.3.3-beta.4",
    "next": "^15.1.0",
    "react": "19.0.0",
    "react-dom": "19.0.0",
    "sonner": "^1.7.1",
    "zod": "^3.24.1"
  },
  "devDependencies": {
    "@better-auth/cli": "^1.0.14",
    "@biomejs/biome": "^1.9.4",
    "@types/bun": "^1.1.14",
    "@turbo/tsconfig": "0.1.0",
    "bun-types": "^1.1.38",
    "typescript": "^5.7.2"
  },
  "exports": {
    ".": {
      "default": "./src/index.ts",
      "react-server": "./src/index.rsc.ts"
    },
    "./middleware": "./src/middleware.ts",
    "./auth-client": "./src/auth-client.ts",
    "./env": "./env.ts"
  },
  "private": true,
  "scripts": {
    "build": "tsc",
    "dev": "tsc",
    "clean": "git clean -xdf .cache .turbo dist node_modules",
    "format": "biome format .",
    "lint": "biome lint .",
    "typecheck": "tsc --noEmit --emitDeclarationOnly false"
  },
  "type": "module"
}
OS: Arch Linux (on the Windows Subsystem for Linux)
Kernel: x86_64 Linux 5.15.167.4-microsoft-standard-WSL2
Uptime: 7d 18h 24m
Packages: 297
Shell: zsh 5.9
Resolution: No X Server
WM: Not Found
GTK Theme:  [GTK3]
Disk: 2.7T / 5.7T (48%)
CPU: AMD Ryzen 9 5900X 12-Core @ 24x 3.693GHz
RAM: 5249MiB / 15945MiB


### Which area(s) are affected? (Select all that apply)

Types, Package

### Auth config (if applicable)

```typescript
import { db, schema } from "@turbo/db/client";
import { betterAuth } from "better-auth";
import { drizzleAdapter } from "better-auth/adapters/drizzle";
import { nextCookies } from "better-auth/next-js";
import { organization } from "better-auth/plugins";

const from = "delivered@resend.dev";
const to = process.env.TEST_EMAIL || "";

export const auth = betterAuth({
  database: drizzleAdapter(db, {
    provider: "pg", // or "pg" or "mysql"
    // schema: schema,
    schema: {
      ...schema,
      user: schema.users,
      account: schema.accounts,
      session: schema.sessions,
      organization: schema.tenants,
      member: schema.members,
      invitation: schema.invitations,
    },
    usePlural: true,
  }),
  emailAndPassword: {
    enabled: true,
    minPasswordLength: 6,
    requireEmailVerification: false,
    // async sendResetPassword({ user, url }) {
    //   await resend.emails.send({
    //     from,
    //     to: user.email,
    //     subject: "Reset your password",
    //     react: reactResetPasswordEmail({
    //       username: user.email,
    //       resetLink: url,
    //     }),
    //   });
    // },
  },
  plugins: [
    organization(),
    nextCookies(),
    // twoFactor({
    //   schema: {
    //     user: {
    //       modelName: "users",
    //       fields: {
    //         twoFactorEnabled: "twoFactorEnabled",
    //         secret: "secret",
    //         backupCodes: "backupCodes",
    //         userId: "userId",
    //       },
    //     },
    //   },
    //   otpOptions: {
    //     async sendOTP({ user, otp }) {
    //       await resend.emails.send({
    //         from,
    //         to: user.email,
    //         subject: "Your OTP",
    //         html: `Your OTP is ${otp}`,
    //       });
    //     },
    //   },
    // }),
    // organization({
    //   schema: {
    //     organization: {
    //       modelName: "tenants",
    //       fields: {
    //         name: "name",
    //         slug: "code",
    //         logo: "logoUrl",
    //         metadata: "metadata",
    //         createdAt: "createdAt",
    //       },
    //     },
    //     member: {
    //       modelName: "members",
    //       fields: {
    //         createdAt: "createdAt",
    //         userId: "userId",
    //         role: "role",
    //         organizationId: "tenantId",
    //       },
    //     },
    //     invitation: {
    //       modelName: "invitations",
    //       fields: {
    //         status: "status",
    //         email: "email",
    //         role: "role",
    //         organizationId: "tenantId",
    //         expiresAt: "expiresAt",
    //         inviterId: "inviterId",
    //       },
    //     },
    //     session: {
    //       modelName: "sessions",
    //       fields: {
    //         activeOrganizationId: "activeTenantId",
    //       },
    //     },
    //   },
    //   async sendInvitationEmail(data) {
    //     const res = await resend.emails.send({
    //       from,
    //       to: data.email,
    //       subject: "You've been invited to join an organization",
    //       react: reactInvitationEmail({
    //         username: data.email,
    //         invitedByUsername: data.inviter.user.name,
    //         invitedByEmail: data.inviter.user.email,
    //         teamName: data.organization.name,
    //         inviteLink:
    //           env.NODE_ENV === "development"
    //             ? `http://localhost:3000/accept-invitation/${data.id}`
    //             : `${
    //                 env.BETTER_AUTH_URL || "https://demo.better-auth.com"
    //               }/accept-invitation/${data.id}`,
    //       }),
    //     });
    //   },
    // }),
    // passkey(),
    // admin(),
    // multiSession(),
    // oneTap(),
    // oAuthProxy(),
    // addAccountToSession,
  ],
});

export type Session = typeof auth.$Infer.Session;

Additional context

I tested on 1.0.14 and 1.0.22,

Type '{ id: "organization"; endpoints: { hasPermission: { <C extends [Context<"/organization/has-permission", { method: "POST"; requireHeaders: true; body: ZodObject<{ permission: ZodObject<{ readonly organization: ZodOptional<ZodArray<ZodLiteral<"update" | "delete">, "many">>; readonly member: ZodOptional<...>; readonly ...' is not assignable to type 'BetterAuthPlugin'.
  Types of property 'endpoints' are incompatible.
    Type '{ hasPermission: { <C extends [Context<"/organization/has-permission", { method: "POST"; requireHeaders: true; body: ZodObject<{ permission: ZodObject<{ readonly organization: ZodOptional<ZodArray<ZodLiteral<"update" | "delete">, "many">>; readonly member: ZodOptional<...>; readonly invitation: ZodOptional<...>; }, ...' is not assignable to type '{ [key: string]: AuthEndpoint; }'.
      Property 'hasPermission' is incompatible with index signature.
        Type '{ <C extends [Context<"/organization/has-permission", { method: "POST"; requireHeaders: true; body: ZodObject<{ permission: ZodObject<{ readonly organization: ZodOptional<ZodArray<ZodLiteral<"update" | "delete">, "many">>; readonly member: ZodOptional<...>; readonly invitation: ZodOptional<...>; }, UnknownKeysParam,...' is not assignable to type 'AuthEndpoint'.
          Type '{ <C extends [Context<"/organization/has-permission", { method: "POST"; requireHeaders: true; body: ZodObject<{ permission: ZodObject<{ readonly organization: ZodOptional<ZodArray<ZodLiteral<"update" | "delete">, "many">>; readonly member: ZodOptional<...>; readonly invitation: ZodOptional<...>; }, UnknownKeysParam,...' is not assignable to type '{ path: string; options: EndpointOptions; headers?: Headers | undefined; }'.
            The types of 'options.body._def.errorMap' are incompatible between these types.
              Type 'Zod.ZodErrorMap | undefined' is not assignable to type 'import("/home/darris/devel/projects/x/turbo/node_modules/better-call/node_modules/zod/lib/ZodError").ZodErrorMap | undefined'.
                Type 'Zod.ZodErrorMap' is not assignable to type 'import("/home/darris/devel/projects/x/turbo/node_modules/better-call/node_modules/zod/lib/ZodError").ZodErrorMap'.
                  Types of parameters 'issue' and 'issue' are incompatible.
                    Type 'import("/home/darris/devel/projects/x/turbo/node_modules/better-call/node_modules/zod/lib/ZodError").ZodIssueOptionalMessage' is not assignable to type 'Zod.ZodIssueOptionalMessage'.
                      Type 'ZodInvalidUnionIssue' is not assignable to type 'ZodIssueOptionalMessage'.
                        Type 'import("/home/darris/devel/projects/x/turbo/node_modules/better-call/node_modules/zod/lib/ZodError").ZodInvalidUnionIssue' is not assignable to type 'Zod.ZodInvalidUnionIssue'.
                          Types of property 'unionErrors' are incompatible.
                            Type 'import("/home/darris/devel/projects/x/turbo/node_modules/better-call/node_modules/zod/lib/ZodError").ZodError<any>[]' is not assignable to type 'Zod.ZodError<any>[]'.
                              Type 'import("/home/darris/devel/projects/x/turbo/node_modules/better-call/node_modules/zod/lib/ZodError").ZodError<any>' is not assignable to type 'Zod.ZodError<any>'.
                                Types of property 'issues' are incompatible.
                                  Type 'import("/home/darris/devel/projects/x/turbo/node_modules/better-call/node_modules/zod/lib/ZodError").ZodIssue[]' is not assignable to type 'Zod.ZodIssue[]'.
                                    Type 'import("/home/darris/devel/projects/x/turbo/node_modules/better-call/node_modules/zod/lib/ZodError").ZodIssue' is not assignable to type 'Zod.ZodIssue'.
                                      Type 'ZodInvalidUnionIssue & { fatal?: boolean | undefined; message: string; }' is not assignable to type 'ZodIssue'.ts(2322)
Originally created by @darr1s on GitHub (Dec 17, 2024). Original GitHub issue: https://github.com/better-auth/better-auth/issues/923 ### Is this suited for github? - [X] Yes, this is suited for github ### To Reproduce 1. Use turborepo (t3 default) 2. Replace auth pkg with latest better-auth ### Current vs. Expected behavior The following plugins will report ZodIssues errors: - organization - twoFactor - passkey() - admin() - multiSession() - oneTap() - oAuthProxy() The following will not: - openapi - bearer ### What version of Better Auth are you using? 1.0.22 ### Provide environment information ```bash { "name": "@turbo/auth", "version": "0.1.0", "dependencies": { "@better-fetch/fetch": "^1.1.12", "@t3-oss/env-nextjs": "^0.11.1", "@turbo/db": "0.1.0", "@turbo/email": "0.1.0", "@turbo/logger": "0.1.0", "better-auth": "^1.0.14", "better-call": "0.3.3-beta.4", "next": "^15.1.0", "react": "19.0.0", "react-dom": "19.0.0", "sonner": "^1.7.1", "zod": "^3.24.1" }, "devDependencies": { "@better-auth/cli": "^1.0.14", "@biomejs/biome": "^1.9.4", "@types/bun": "^1.1.14", "@turbo/tsconfig": "0.1.0", "bun-types": "^1.1.38", "typescript": "^5.7.2" }, "exports": { ".": { "default": "./src/index.ts", "react-server": "./src/index.rsc.ts" }, "./middleware": "./src/middleware.ts", "./auth-client": "./src/auth-client.ts", "./env": "./env.ts" }, "private": true, "scripts": { "build": "tsc", "dev": "tsc", "clean": "git clean -xdf .cache .turbo dist node_modules", "format": "biome format .", "lint": "biome lint .", "typecheck": "tsc --noEmit --emitDeclarationOnly false" }, "type": "module" } ``` ``` OS: Arch Linux (on the Windows Subsystem for Linux) Kernel: x86_64 Linux 5.15.167.4-microsoft-standard-WSL2 Uptime: 7d 18h 24m Packages: 297 Shell: zsh 5.9 Resolution: No X Server WM: Not Found GTK Theme: [GTK3] Disk: 2.7T / 5.7T (48%) CPU: AMD Ryzen 9 5900X 12-Core @ 24x 3.693GHz RAM: 5249MiB / 15945MiB ``` ``` ### Which area(s) are affected? (Select all that apply) Types, Package ### Auth config (if applicable) ```typescript import { db, schema } from "@turbo/db/client"; import { betterAuth } from "better-auth"; import { drizzleAdapter } from "better-auth/adapters/drizzle"; import { nextCookies } from "better-auth/next-js"; import { organization } from "better-auth/plugins"; const from = "delivered@resend.dev"; const to = process.env.TEST_EMAIL || ""; export const auth = betterAuth({ database: drizzleAdapter(db, { provider: "pg", // or "pg" or "mysql" // schema: schema, schema: { ...schema, user: schema.users, account: schema.accounts, session: schema.sessions, organization: schema.tenants, member: schema.members, invitation: schema.invitations, }, usePlural: true, }), emailAndPassword: { enabled: true, minPasswordLength: 6, requireEmailVerification: false, // async sendResetPassword({ user, url }) { // await resend.emails.send({ // from, // to: user.email, // subject: "Reset your password", // react: reactResetPasswordEmail({ // username: user.email, // resetLink: url, // }), // }); // }, }, plugins: [ organization(), nextCookies(), // twoFactor({ // schema: { // user: { // modelName: "users", // fields: { // twoFactorEnabled: "twoFactorEnabled", // secret: "secret", // backupCodes: "backupCodes", // userId: "userId", // }, // }, // }, // otpOptions: { // async sendOTP({ user, otp }) { // await resend.emails.send({ // from, // to: user.email, // subject: "Your OTP", // html: `Your OTP is ${otp}`, // }); // }, // }, // }), // organization({ // schema: { // organization: { // modelName: "tenants", // fields: { // name: "name", // slug: "code", // logo: "logoUrl", // metadata: "metadata", // createdAt: "createdAt", // }, // }, // member: { // modelName: "members", // fields: { // createdAt: "createdAt", // userId: "userId", // role: "role", // organizationId: "tenantId", // }, // }, // invitation: { // modelName: "invitations", // fields: { // status: "status", // email: "email", // role: "role", // organizationId: "tenantId", // expiresAt: "expiresAt", // inviterId: "inviterId", // }, // }, // session: { // modelName: "sessions", // fields: { // activeOrganizationId: "activeTenantId", // }, // }, // }, // async sendInvitationEmail(data) { // const res = await resend.emails.send({ // from, // to: data.email, // subject: "You've been invited to join an organization", // react: reactInvitationEmail({ // username: data.email, // invitedByUsername: data.inviter.user.name, // invitedByEmail: data.inviter.user.email, // teamName: data.organization.name, // inviteLink: // env.NODE_ENV === "development" // ? `http://localhost:3000/accept-invitation/${data.id}` // : `${ // env.BETTER_AUTH_URL || "https://demo.better-auth.com" // }/accept-invitation/${data.id}`, // }), // }); // }, // }), // passkey(), // admin(), // multiSession(), // oneTap(), // oAuthProxy(), // addAccountToSession, ], }); export type Session = typeof auth.$Infer.Session; ``` ### Additional context I tested on 1.0.14 and 1.0.22, ``` Type '{ id: "organization"; endpoints: { hasPermission: { <C extends [Context<"/organization/has-permission", { method: "POST"; requireHeaders: true; body: ZodObject<{ permission: ZodObject<{ readonly organization: ZodOptional<ZodArray<ZodLiteral<"update" | "delete">, "many">>; readonly member: ZodOptional<...>; readonly ...' is not assignable to type 'BetterAuthPlugin'. Types of property 'endpoints' are incompatible. Type '{ hasPermission: { <C extends [Context<"/organization/has-permission", { method: "POST"; requireHeaders: true; body: ZodObject<{ permission: ZodObject<{ readonly organization: ZodOptional<ZodArray<ZodLiteral<"update" | "delete">, "many">>; readonly member: ZodOptional<...>; readonly invitation: ZodOptional<...>; }, ...' is not assignable to type '{ [key: string]: AuthEndpoint; }'. Property 'hasPermission' is incompatible with index signature. Type '{ <C extends [Context<"/organization/has-permission", { method: "POST"; requireHeaders: true; body: ZodObject<{ permission: ZodObject<{ readonly organization: ZodOptional<ZodArray<ZodLiteral<"update" | "delete">, "many">>; readonly member: ZodOptional<...>; readonly invitation: ZodOptional<...>; }, UnknownKeysParam,...' is not assignable to type 'AuthEndpoint'. Type '{ <C extends [Context<"/organization/has-permission", { method: "POST"; requireHeaders: true; body: ZodObject<{ permission: ZodObject<{ readonly organization: ZodOptional<ZodArray<ZodLiteral<"update" | "delete">, "many">>; readonly member: ZodOptional<...>; readonly invitation: ZodOptional<...>; }, UnknownKeysParam,...' is not assignable to type '{ path: string; options: EndpointOptions; headers?: Headers | undefined; }'. The types of 'options.body._def.errorMap' are incompatible between these types. Type 'Zod.ZodErrorMap | undefined' is not assignable to type 'import("/home/darris/devel/projects/x/turbo/node_modules/better-call/node_modules/zod/lib/ZodError").ZodErrorMap | undefined'. Type 'Zod.ZodErrorMap' is not assignable to type 'import("/home/darris/devel/projects/x/turbo/node_modules/better-call/node_modules/zod/lib/ZodError").ZodErrorMap'. Types of parameters 'issue' and 'issue' are incompatible. Type 'import("/home/darris/devel/projects/x/turbo/node_modules/better-call/node_modules/zod/lib/ZodError").ZodIssueOptionalMessage' is not assignable to type 'Zod.ZodIssueOptionalMessage'. Type 'ZodInvalidUnionIssue' is not assignable to type 'ZodIssueOptionalMessage'. Type 'import("/home/darris/devel/projects/x/turbo/node_modules/better-call/node_modules/zod/lib/ZodError").ZodInvalidUnionIssue' is not assignable to type 'Zod.ZodInvalidUnionIssue'. Types of property 'unionErrors' are incompatible. Type 'import("/home/darris/devel/projects/x/turbo/node_modules/better-call/node_modules/zod/lib/ZodError").ZodError<any>[]' is not assignable to type 'Zod.ZodError<any>[]'. Type 'import("/home/darris/devel/projects/x/turbo/node_modules/better-call/node_modules/zod/lib/ZodError").ZodError<any>' is not assignable to type 'Zod.ZodError<any>'. Types of property 'issues' are incompatible. Type 'import("/home/darris/devel/projects/x/turbo/node_modules/better-call/node_modules/zod/lib/ZodError").ZodIssue[]' is not assignable to type 'Zod.ZodIssue[]'. Type 'import("/home/darris/devel/projects/x/turbo/node_modules/better-call/node_modules/zod/lib/ZodError").ZodIssue' is not assignable to type 'Zod.ZodIssue'. Type 'ZodInvalidUnionIssue & { fatal?: boolean | undefined; message: string; }' is not assignable to type 'ZodIssue'.ts(2322) ```
GiteaMirror added the lockedbug labels 2026-04-13 03:35:22 -05:00
Author
Owner

@Bekacru commented on GitHub (Dec 19, 2024):

could you please share your tsconfig

<!-- gh-comment-id:2552960245 --> @Bekacru commented on GitHub (Dec 19, 2024): could you please share your tsconfig
Author
Owner

@darr1s commented on GitHub (Dec 21, 2024):

base.json

{
  "$schema": "https://json.schemastore.org/tsconfig",
  "display": "Strictest",
  "compilerOptions": {
    "esModuleInterop": true,
    "skipLibCheck": true,
    "target": "esnext",
    "lib": ["es2022"],
    "allowJs": true,
    "resolveJsonModule": true,
    "moduleDetection": "force",
    "isolatedModules": true,
    
    "incremental": true,
    "disableSourceOfProjectReferenceRedirect": true,
    "tsBuildInfoFile": "${configDir}/.cache/tsbuildinfo.json",
    
    "strict": true,
    "noUncheckedIndexedAccess": true,
    "checkJs": true,

    "module": "Preserve",
    "moduleResolution": "bundler",
    "noEmit": true,
  },
  "exclude": ["node_modules", "build", "dist", ".next", ".expo"]
}

/apps/dashboard

{
  "extends": "@x3api/tsconfig/base.json",
  "compilerOptions": {
    "baseUrl": ".",
    "module": "esnext",
    "lib": ["ES2022", "dom", "dom.iterable"],
    "paths": {
      "~/*": ["./src/*"]
    },
    "jsx": "preserve",
    "plugins": [
      {
        "name": "next"
      }
    ]
  },
  "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
  "exclude": ["node_modules"]
}

/packages/auth

{
  "$schema": "https://json.schemastore.org/tsconfig",
  "extends": "@x3api/tsconfig/base.json",
  "compilerOptions": {
    "types": ["bun-types"]
  },
  "include": ["src", "env.ts", "*.ts"],
  "exclude": ["dist", "build", "node_modules"]
}

<!-- gh-comment-id:2558003468 --> @darr1s commented on GitHub (Dec 21, 2024): base.json ``` { "$schema": "https://json.schemastore.org/tsconfig", "display": "Strictest", "compilerOptions": { "esModuleInterop": true, "skipLibCheck": true, "target": "esnext", "lib": ["es2022"], "allowJs": true, "resolveJsonModule": true, "moduleDetection": "force", "isolatedModules": true, "incremental": true, "disableSourceOfProjectReferenceRedirect": true, "tsBuildInfoFile": "${configDir}/.cache/tsbuildinfo.json", "strict": true, "noUncheckedIndexedAccess": true, "checkJs": true, "module": "Preserve", "moduleResolution": "bundler", "noEmit": true, }, "exclude": ["node_modules", "build", "dist", ".next", ".expo"] } ``` /apps/dashboard ``` { "extends": "@x3api/tsconfig/base.json", "compilerOptions": { "baseUrl": ".", "module": "esnext", "lib": ["ES2022", "dom", "dom.iterable"], "paths": { "~/*": ["./src/*"] }, "jsx": "preserve", "plugins": [ { "name": "next" } ] }, "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], "exclude": ["node_modules"] } ``` /packages/auth ``` { "$schema": "https://json.schemastore.org/tsconfig", "extends": "@x3api/tsconfig/base.json", "compilerOptions": { "types": ["bun-types"] }, "include": ["src", "env.ts", "*.ts"], "exclude": ["dist", "build", "node_modules"] } ```
Author
Owner

@iamEvanYT commented on GitHub (Dec 24, 2024):

Happening to me too.

tsconfig.json:

{
  "compilerOptions": {
    "target": "es2020",
    "module": "NodeNext",
    "lib": ["es2020"],
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true,
    "sourceMap": true,
    "outDir": "./dist",
    "rootDir": "./src",
    "baseUrl": "./src",
    "paths": {
      "@/*": ["./*"]
    },
    "strict": true,
    "strictNullChecks": true,
    "noEmit": true
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules", "dist"]
}

<!-- gh-comment-id:2561273121 --> @iamEvanYT commented on GitHub (Dec 24, 2024): Happening to me too. tsconfig.json: ```json { "compilerOptions": { "target": "es2020", "module": "NodeNext", "lib": ["es2020"], "esModuleInterop": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true, "sourceMap": true, "outDir": "./dist", "rootDir": "./src", "baseUrl": "./src", "paths": { "@/*": ["./*"] }, "strict": true, "strictNullChecks": true, "noEmit": true }, "include": ["src/**/*"], "exclude": ["node_modules", "dist"] } ```
Author
Owner

@nahtnam commented on GitHub (Dec 29, 2024):

Same here

{
  "compilerOptions": {
    "target": "ES2017",
    "lib": ["dom", "dom.iterable", "esnext"],
    "allowJs": true,
    "skipLibCheck": true,
    "strict": true,
    "noEmit": true,
    "esModuleInterop": true,
    "noUncheckedIndexedAccess": true,
    "module": "esnext",
    "moduleResolution": "bundler",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "jsx": "preserve",
    "incremental": true,
    "plugins": [
      {
        "name": "next"
      }
    ],
    "paths": {
      "@/*": ["./src/*"]
    }
  },
  "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
  "exclude": ["node_modules"]
}
<!-- gh-comment-id:2564868888 --> @nahtnam commented on GitHub (Dec 29, 2024): Same here ```json { "compilerOptions": { "target": "ES2017", "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, "strict": true, "noEmit": true, "esModuleInterop": true, "noUncheckedIndexedAccess": true, "module": "esnext", "moduleResolution": "bundler", "resolveJsonModule": true, "isolatedModules": true, "jsx": "preserve", "incremental": true, "plugins": [ { "name": "next" } ], "paths": { "@/*": ["./src/*"] } }, "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], "exclude": ["node_modules"] } ```
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/better-auth#8501