diff --git a/packages/better-auth/src/plugins/access/types.ts b/packages/better-auth/src/plugins/access/types.ts index 74b485aa72..8fbea66668 100644 --- a/packages/better-auth/src/plugins/access/types.ts +++ b/packages/better-auth/src/plugins/access/types.ts @@ -1,6 +1,8 @@ import type { LiteralString } from "@better-auth/core"; import type { AuthorizeResponse, createAccessControl } from "./access"; +export type ArrayElement = T extends readonly (infer E)[] ? E : never; + export type SubArray = | T[number][] | ReadonlyArray; diff --git a/packages/better-auth/src/plugins/admin/client.ts b/packages/better-auth/src/plugins/admin/client.ts index bf88c0f078..1163d4ff7f 100644 --- a/packages/better-auth/src/plugins/admin/client.ts +++ b/packages/better-auth/src/plugins/admin/client.ts @@ -1,5 +1,5 @@ import type { BetterAuthClientPlugin } from "@better-auth/core"; -import type { AccessControl, Role } from "../access"; +import type { AccessControl, ArrayElement, Role } from "../access"; import type { defaultStatements } from "./access"; import { adminAc, userAc } from "./access"; import type { admin } from "./admin"; @@ -26,7 +26,7 @@ export const adminClient = ( type PermissionType = { [key in keyof Statements]?: Array< Statements[key] extends readonly unknown[] - ? Statements[key][number] + ? ArrayElement : never >; }; diff --git a/packages/better-auth/src/plugins/admin/routes.ts b/packages/better-auth/src/plugins/admin/routes.ts index 72b4742428..62a30944af 100644 --- a/packages/better-auth/src/plugins/admin/routes.ts +++ b/packages/better-auth/src/plugins/admin/routes.ts @@ -15,7 +15,7 @@ import { } from "../../cookies"; import { parseSessionOutput, parseUserOutput } from "../../db/schema"; import { getDate } from "../../utils/date"; -import type { AccessControl } from "../access"; +import type { AccessControl, ArrayElement } from "../access"; import type { defaultStatements } from "./access"; import { ADMIN_ERROR_CODES } from "./error-codes"; import { hasPermission } from "./has-permission"; @@ -1603,7 +1603,7 @@ export const userHasPermission = (opts: O) => { type PermissionType = { [key in keyof Statements]?: Array< Statements[key] extends readonly unknown[] - ? Statements[key][number] + ? ArrayElement : never >; }; diff --git a/packages/better-auth/src/plugins/organization/client.ts b/packages/better-auth/src/plugins/organization/client.ts index 94ca136b34..fcd0e03b4e 100644 --- a/packages/better-auth/src/plugins/organization/client.ts +++ b/packages/better-auth/src/plugins/organization/client.ts @@ -11,7 +11,7 @@ import type { } from "../../plugins/organization/schema"; import type { BetterAuthOptions, BetterAuthPlugin } from "../../types"; import type { Prettify } from "../../types/helper"; -import type { AccessControl, Role } from "../access"; +import type { AccessControl, ArrayElement, Role } from "../access"; import type { defaultStatements } from "./access"; import { adminAc, defaultRoles, memberAc, ownerAc } from "./access"; import { ORGANIZATION_ERROR_CODES } from "./error-codes"; @@ -95,7 +95,7 @@ export const organizationClient = ( type PermissionType = { [key in keyof Statements]?: Array< Statements[key] extends readonly unknown[] - ? Statements[key][number] + ? ArrayElement : never >; }; diff --git a/packages/better-auth/src/plugins/organization/organization.ts b/packages/better-auth/src/plugins/organization/organization.ts index 28592a8dab..ac3d94ef52 100644 --- a/packages/better-auth/src/plugins/organization/organization.ts +++ b/packages/better-auth/src/plugins/organization/organization.ts @@ -5,7 +5,7 @@ import { APIError } from "@better-auth/core/error"; import * as z from "zod"; import { getSessionFromCtx } from "../../api"; import { shimContext } from "../../utils/shim"; -import type { AccessControl } from "../access"; +import type { AccessControl, ArrayElement } from "../access"; import type { defaultStatements } from "./access"; import { defaultRoles } from "./access"; import { getOrgAdapter } from "./adapter"; @@ -183,7 +183,7 @@ const createHasPermission = (options: O) => { type PermissionType = { [key in keyof Statements]?: Array< Statements[key] extends readonly unknown[] - ? Statements[key][number] + ? ArrayElement : never >; };