diff --git a/packages/better-auth/src/client/path-to-object.ts b/packages/better-auth/src/client/path-to-object.ts index 9c84c50c0d..206cb4bf93 100644 --- a/packages/better-auth/src/client/path-to-object.ts +++ b/packages/better-auth/src/client/path-to-object.ts @@ -16,7 +16,7 @@ import type { InferUserFromClient, } from "./types"; -type CamelCase = +export type CamelCase = S extends `${infer P1}-${infer P2}${infer P3}` ? `${Lowercase}${Uppercase}${CamelCase}` : Lowercase; @@ -30,7 +30,7 @@ export type PathToObject< ? { [K in CamelCase]: Fn } : never; -type InferSignUpEmailCtx< +export type InferSignUpEmailCtx< ClientOpts extends ClientOptions, FetchOptions extends BetterFetchOption, > = { @@ -42,7 +42,7 @@ type InferSignUpEmailCtx< fetchOptions?: FetchOptions; } & UnionToIntersection>; -type InferUserUpdateCtx< +export type InferUserUpdateCtx< ClientOpts extends ClientOptions, FetchOptions extends BetterFetchOption, > = { @@ -53,7 +53,7 @@ type InferUserUpdateCtx< UnionToIntersection> >; -type InferCtx< +export type InferCtx< C extends Context, FetchOptions extends BetterFetchOption, > = C["body"] extends Record @@ -74,9 +74,12 @@ type InferCtx< fetchOptions?: FetchOptions; }; -type MergeRoutes = UnionToIntersection; +export type MergeRoutes = UnionToIntersection; -type InferReturn = R extends Record +export type InferReturn = R extends Record< + string, + any +> ? StripEmptyObjects< { user: R extends { user: any } ? InferUserFromClient : never; diff --git a/packages/better-auth/src/client/react/index.ts b/packages/better-auth/src/client/react/index.ts index 018f713532..291edb8814 100644 --- a/packages/better-auth/src/client/react/index.ts +++ b/packages/better-auth/src/client/react/index.ts @@ -4,8 +4,6 @@ import type { ClientOptions, InferActions, InferClientAPI, - InferSessionFromClient, - InferUserFromClient, IsSignal, } from "../types"; import { createDynamicPathProxy } from "../proxy"; @@ -24,23 +22,22 @@ export function capitalizeFirstLetter(str: string) { return str.charAt(0).toUpperCase() + str.slice(1); } -type InferResolvedHooks = O["plugins"] extends Array< - infer Plugin -> - ? Plugin extends BetterAuthClientPlugin - ? Plugin["getAtoms"] extends (fetch: any) => infer Atoms - ? Atoms extends Record - ? { - [key in keyof Atoms as IsSignal extends true - ? never - : key extends string - ? `use${Capitalize}` - : never]: () => ReturnType; - } +export type InferResolvedHooks = + O["plugins"] extends Array + ? Plugin extends BetterAuthClientPlugin + ? Plugin["getAtoms"] extends (fetch: any) => infer Atoms + ? Atoms extends Record + ? { + [key in keyof Atoms as IsSignal extends true + ? never + : key extends string + ? `use${Capitalize}` + : never]: () => ReturnType; + } + : {} : {} : {} - : {} - : {}; + : {}; export function createAuthClient