@better-auth-ui/react 1.6.2 → 1.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/dist/hooks/auth/use-authenticate.d.ts +30 -6
  2. package/dist/hooks/auth/use-is-username-available.d.ts +12 -11
  3. package/dist/hooks/auth/use-is-username-available.js +8 -7
  4. package/dist/hooks/auth/use-request-password-reset.d.ts +11 -15
  5. package/dist/hooks/auth/use-request-password-reset.js +8 -7
  6. package/dist/hooks/auth/use-reset-password.d.ts +13 -29
  7. package/dist/hooks/auth/use-reset-password.js +8 -7
  8. package/dist/hooks/auth/use-send-verification-email.d.ts +10 -14
  9. package/dist/hooks/auth/use-send-verification-email.js +8 -7
  10. package/dist/hooks/auth/use-session.d.ts +30 -4
  11. package/dist/hooks/auth/use-session.js +11 -10
  12. package/dist/hooks/auth/use-sign-in-email.d.ts +11 -37
  13. package/dist/hooks/auth/use-sign-in-email.js +11 -12
  14. package/dist/hooks/auth/use-sign-in-magic-link.d.ts +14 -18
  15. package/dist/hooks/auth/use-sign-in-magic-link.js +8 -7
  16. package/dist/hooks/auth/use-sign-in-passkey.d.ts +10 -47
  17. package/dist/hooks/auth/use-sign-in-passkey.js +11 -12
  18. package/dist/hooks/auth/use-sign-in-social.d.ts +30 -59
  19. package/dist/hooks/auth/use-sign-in-social.js +8 -7
  20. package/dist/hooks/auth/use-sign-in-username.d.ts +12 -40
  21. package/dist/hooks/auth/use-sign-in-username.js +11 -12
  22. package/dist/hooks/auth/use-sign-out.d.ts +10 -10
  23. package/dist/hooks/auth/use-sign-out.js +10 -12
  24. package/dist/hooks/auth/use-sign-up-email.d.ts +18 -101
  25. package/dist/hooks/auth/use-sign-up-email.js +11 -12
  26. package/dist/hooks/auth/use-user.d.ts +7 -5
  27. package/dist/hooks/settings/use-account-info.d.ts +9 -9
  28. package/dist/hooks/settings/use-account-info.js +13 -16
  29. package/dist/hooks/settings/use-add-passkey.d.ts +8 -30
  30. package/dist/hooks/settings/use-add-passkey.js +10 -11
  31. package/dist/hooks/settings/use-change-email.d.ts +11 -14
  32. package/dist/hooks/settings/use-change-email.js +11 -12
  33. package/dist/hooks/settings/use-change-password.d.ts +11 -43
  34. package/dist/hooks/settings/use-change-password.js +8 -7
  35. package/dist/hooks/settings/use-delete-passkey.d.ts +10 -12
  36. package/dist/hooks/settings/use-delete-passkey.js +11 -12
  37. package/dist/hooks/settings/use-delete-user.d.ts +13 -30
  38. package/dist/hooks/settings/use-delete-user.js +8 -7
  39. package/dist/hooks/settings/use-link-social.d.ts +22 -25
  40. package/dist/hooks/settings/use-link-social.js +8 -7
  41. package/dist/hooks/settings/use-list-accounts.d.ts +8 -6
  42. package/dist/hooks/settings/use-list-accounts.js +10 -16
  43. package/dist/hooks/settings/use-list-device-sessions.d.ts +29 -6
  44. package/dist/hooks/settings/use-list-device-sessions.js +10 -16
  45. package/dist/hooks/settings/use-list-sessions.d.ts +8 -5
  46. package/dist/hooks/settings/use-list-sessions.js +10 -16
  47. package/dist/hooks/settings/use-list-user-passkeys.d.ts +8 -5
  48. package/dist/hooks/settings/use-list-user-passkeys.js +10 -16
  49. package/dist/hooks/settings/use-revoke-multi-session.d.ts +11 -11
  50. package/dist/hooks/settings/use-revoke-multi-session.js +11 -12
  51. package/dist/hooks/settings/use-revoke-session.d.ts +11 -11
  52. package/dist/hooks/settings/use-revoke-session.js +11 -12
  53. package/dist/hooks/settings/use-set-active-session.d.ts +12 -29
  54. package/dist/hooks/settings/use-set-active-session.js +12 -13
  55. package/dist/hooks/settings/use-unlink-account.d.ts +12 -12
  56. package/dist/hooks/settings/use-unlink-account.js +11 -12
  57. package/dist/hooks/settings/use-update-user.d.ts +1178 -4
  58. package/dist/hooks/settings/use-update-user.js +17 -18
  59. package/dist/hooks/use-auth-mutation.d.ts +12 -0
  60. package/dist/hooks/use-auth-mutation.js +11 -0
  61. package/dist/hooks/use-auth-query.d.ts +14 -0
  62. package/dist/hooks/use-auth-query.js +15 -0
  63. package/dist/index.d.ts +2 -2
  64. package/dist/index.js +33 -33
  65. package/dist/mutations/auth/is-username-available-options.d.ts +19 -0
  66. package/dist/mutations/auth/is-username-available-options.js +7 -0
  67. package/dist/mutations/auth/request-password-reset-options.d.ts +15 -0
  68. package/dist/mutations/auth/request-password-reset-options.js +7 -0
  69. package/dist/mutations/auth/reset-password-options.d.ts +17 -0
  70. package/dist/mutations/auth/reset-password-options.js +7 -0
  71. package/dist/mutations/auth/send-verification-email-options.d.ts +15 -0
  72. package/dist/mutations/auth/send-verification-email-options.js +7 -0
  73. package/dist/mutations/auth/sign-in-email-options.d.ts +23 -0
  74. package/dist/mutations/auth/sign-in-email-options.js +11 -0
  75. package/dist/mutations/auth/sign-in-magic-link-options.d.ts +23 -0
  76. package/dist/mutations/auth/sign-in-magic-link-options.js +11 -0
  77. package/dist/mutations/auth/sign-in-passkey-options.d.ts +15 -0
  78. package/dist/mutations/auth/sign-in-passkey-options.js +11 -0
  79. package/dist/mutations/auth/sign-in-social-options.d.ts +61 -0
  80. package/dist/mutations/auth/sign-in-social-options.js +11 -0
  81. package/dist/mutations/auth/sign-in-username-options.d.ts +19 -0
  82. package/dist/mutations/auth/sign-in-username-options.js +11 -0
  83. package/dist/mutations/auth/sign-out-options.d.ts +12 -0
  84. package/dist/mutations/auth/sign-out-options.js +7 -0
  85. package/dist/mutations/auth/sign-up-email-options.d.ts +1180 -0
  86. package/dist/mutations/auth/sign-up-email-options.js +11 -0
  87. package/dist/mutations/auth-mutation-options.d.ts +25 -0
  88. package/dist/mutations/auth-mutation-options.js +19 -0
  89. package/dist/mutations/settings/add-passkey-options.d.ts +15 -0
  90. package/dist/mutations/settings/add-passkey-options.js +11 -0
  91. package/dist/mutations/settings/change-email-options.d.ts +15 -0
  92. package/dist/mutations/settings/change-email-options.js +7 -0
  93. package/dist/mutations/settings/change-password-options.d.ts +17 -0
  94. package/dist/mutations/settings/change-password-options.js +7 -0
  95. package/dist/mutations/settings/delete-passkey-options.d.ts +13 -0
  96. package/dist/mutations/settings/delete-passkey-options.js +11 -0
  97. package/dist/mutations/settings/delete-user-options.d.ts +20 -0
  98. package/dist/mutations/settings/delete-user-options.js +7 -0
  99. package/dist/mutations/settings/link-social-options.d.ts +39 -0
  100. package/dist/mutations/settings/link-social-options.js +7 -0
  101. package/dist/mutations/settings/revoke-multi-session-options.d.ts +13 -0
  102. package/dist/mutations/settings/revoke-multi-session-options.js +11 -0
  103. package/dist/mutations/settings/revoke-session-options.d.ts +13 -0
  104. package/dist/mutations/settings/revoke-session-options.js +7 -0
  105. package/dist/mutations/settings/set-active-session-options.d.ts +13 -0
  106. package/dist/mutations/settings/set-active-session-options.js +11 -0
  107. package/dist/mutations/settings/unlink-account-options.d.ts +15 -0
  108. package/dist/mutations/settings/unlink-account-options.js +7 -0
  109. package/dist/mutations/settings/update-user-options.d.ts +1182 -0
  110. package/dist/mutations/settings/update-user-options.js +7 -0
  111. package/dist/queries/auth/session-options.d.ts +110 -0
  112. package/dist/queries/auth/session-options.js +7 -0
  113. package/dist/queries/auth-query-options.d.ts +29 -0
  114. package/dist/queries/auth-query-options.js +17 -0
  115. package/dist/queries/settings/account-info-options.d.ts +32 -0
  116. package/dist/queries/settings/account-info-options.js +12 -0
  117. package/dist/queries/settings/list-accounts-options.d.ts +53 -0
  118. package/dist/queries/settings/list-accounts-options.js +12 -0
  119. package/dist/queries/settings/list-device-sessions-options.d.ts +99 -0
  120. package/dist/queries/settings/list-device-sessions-options.js +12 -0
  121. package/dist/queries/settings/list-sessions-options.d.ts +54 -0
  122. package/dist/queries/settings/list-sessions-options.js +12 -0
  123. package/dist/queries/settings/list-user-passkeys-options.d.ts +18 -0
  124. package/dist/queries/settings/list-user-passkeys-options.js +12 -0
  125. package/package.json +1 -1
  126. package/src/hooks/auth/use-authenticate.ts +7 -10
  127. package/src/hooks/auth/use-is-username-available.ts +17 -8
  128. package/src/hooks/auth/use-request-password-reset.ts +19 -8
  129. package/src/hooks/auth/use-reset-password.ts +19 -9
  130. package/src/hooks/auth/use-send-verification-email.ts +18 -8
  131. package/src/hooks/auth/use-session.ts +20 -16
  132. package/src/hooks/auth/use-sign-in-email.ts +23 -16
  133. package/src/hooks/auth/use-sign-in-magic-link.ts +18 -10
  134. package/src/hooks/auth/use-sign-in-passkey.ts +24 -18
  135. package/src/hooks/auth/use-sign-in-social.ts +18 -8
  136. package/src/hooks/auth/use-sign-in-username.ts +24 -18
  137. package/src/hooks/auth/use-sign-out.ts +18 -17
  138. package/src/hooks/auth/use-sign-up-email.ts +24 -18
  139. package/src/hooks/auth/use-user.ts +7 -8
  140. package/src/hooks/settings/use-account-info.ts +29 -20
  141. package/src/hooks/settings/use-add-passkey.ts +22 -17
  142. package/src/hooks/settings/use-change-email.ts +21 -17
  143. package/src/hooks/settings/use-change-password.ts +18 -8
  144. package/src/hooks/settings/use-delete-passkey.ts +21 -16
  145. package/src/hooks/settings/use-delete-user.ts +18 -8
  146. package/src/hooks/settings/use-link-social.ts +18 -8
  147. package/src/hooks/settings/use-list-accounts.ts +25 -15
  148. package/src/hooks/settings/use-list-device-sessions.ts +26 -21
  149. package/src/hooks/settings/use-list-sessions.ts +25 -14
  150. package/src/hooks/settings/use-list-user-passkeys.ts +25 -16
  151. package/src/hooks/settings/use-revoke-multi-session.ts +25 -16
  152. package/src/hooks/settings/use-revoke-session.ts +25 -16
  153. package/src/hooks/settings/use-set-active-session.ts +35 -24
  154. package/src/hooks/settings/use-unlink-account.ts +22 -15
  155. package/src/hooks/settings/use-update-user.ts +29 -22
  156. package/src/hooks/use-auth-mutation.ts +29 -0
  157. package/src/hooks/use-auth-query.ts +36 -0
  158. package/src/index.ts +2 -2
  159. package/src/mutations/auth/is-username-available-options.ts +18 -0
  160. package/src/mutations/auth/request-password-reset-options.ts +14 -0
  161. package/src/mutations/auth/reset-password-options.ts +14 -0
  162. package/src/mutations/auth/send-verification-email-options.ts +14 -0
  163. package/src/mutations/auth/sign-in-email-options.ts +19 -0
  164. package/src/mutations/auth/sign-in-magic-link-options.ts +15 -0
  165. package/src/mutations/auth/sign-in-passkey-options.ts +15 -0
  166. package/src/mutations/auth/sign-in-social-options.ts +19 -0
  167. package/src/mutations/auth/sign-in-username-options.ts +15 -0
  168. package/src/mutations/auth/sign-out-options.ts +11 -0
  169. package/src/mutations/auth/sign-up-email-options.ts +15 -0
  170. package/src/mutations/auth-mutation-options.ts +49 -0
  171. package/src/mutations/settings/add-passkey-options.ts +15 -0
  172. package/src/mutations/settings/change-email-options.ts +11 -0
  173. package/src/mutations/settings/change-password-options.ts +14 -0
  174. package/src/mutations/settings/delete-passkey-options.ts +15 -0
  175. package/src/mutations/settings/delete-user-options.ts +11 -0
  176. package/src/mutations/settings/link-social-options.ts +11 -0
  177. package/src/mutations/settings/revoke-multi-session-options.ts +15 -0
  178. package/src/mutations/settings/revoke-session-options.ts +14 -0
  179. package/src/mutations/settings/set-active-session-options.ts +15 -0
  180. package/src/mutations/settings/unlink-account-options.ts +14 -0
  181. package/src/mutations/settings/update-user-options.ts +15 -0
  182. package/src/queries/auth/session-options.ts +18 -0
  183. package/src/queries/auth-query-options.ts +34 -0
  184. package/src/queries/settings/account-info-options.ts +25 -0
  185. package/src/queries/settings/list-accounts-options.ts +26 -0
  186. package/src/queries/settings/list-device-sessions-options.ts +24 -0
  187. package/src/queries/settings/list-sessions-options.ts +23 -0
  188. package/src/queries/settings/list-user-passkeys-options.ts +23 -0
  189. package/dist/hooks/auth/use-auth-mutation.d.ts +0 -18
  190. package/dist/hooks/auth/use-auth-mutation.js +0 -13
  191. package/dist/hooks/auth/use-auth-query.d.ts +0 -24
  192. package/dist/hooks/auth/use-auth-query.js +0 -13
  193. package/src/hooks/auth/use-auth-mutation.ts +0 -56
  194. package/src/hooks/auth/use-auth-query.ts +0 -50
@@ -0,0 +1,26 @@
1
+ import type { AuthClient } from "../../lib/auth-client"
2
+ import { authQueryOptions } from "../auth-query-options"
3
+
4
+ /**
5
+ * Query options factory for a user's linked social accounts.
6
+ *
7
+ * Keyed per-user (enables offline account switching with a persister).
8
+ * `userId` is optional so the factory can build stable options before the
9
+ * active session resolves — the consumer swaps `queryFn` for `skipToken`
10
+ * until ready.
11
+ *
12
+ * @param authClient - The Better Auth client.
13
+ * @param userId - The current signed in user's ID.
14
+ * @param params - Parameters forwarded to `authClient.listAccounts`.
15
+ */
16
+ export function listAccountsOptions(
17
+ authClient: AuthClient,
18
+ userId?: string,
19
+ params?: Parameters<AuthClient["listAccounts"]>[0]
20
+ ) {
21
+ return authQueryOptions(
22
+ authClient.listAccounts,
23
+ ["auth", "user", userId, "listAccounts"],
24
+ params
25
+ )
26
+ }
@@ -0,0 +1,24 @@
1
+ import type { AuthClient } from "../../lib/auth-client"
2
+ import { authQueryOptions } from "../auth-query-options"
3
+
4
+ /**
5
+ * Query options factory for the current user's device sessions
6
+ * (multi-session account switcher).
7
+ *
8
+ * Keyed per-user (enables offline account switching with a persister).
9
+ *
10
+ * @param authClient - The Better Auth client.
11
+ * @param userId - The current signed in user's ID.
12
+ * @param params - Parameters forwarded to `authClient.multiSession.listDeviceSessions`.
13
+ */
14
+ export function listDeviceSessionsOptions(
15
+ authClient: AuthClient,
16
+ userId?: string,
17
+ params?: Parameters<AuthClient["multiSession"]["listDeviceSessions"]>[0]
18
+ ) {
19
+ return authQueryOptions(
20
+ authClient.multiSession.listDeviceSessions,
21
+ ["auth", "user", userId, "listDeviceSessions"],
22
+ params
23
+ )
24
+ }
@@ -0,0 +1,23 @@
1
+ import type { AuthClient } from "../../lib/auth-client"
2
+ import { authQueryOptions } from "../auth-query-options"
3
+
4
+ /**
5
+ * Query options factory for the current user's active sessions.
6
+ *
7
+ * Keyed per-user (enables offline account switching with a persister).
8
+ *
9
+ * @param authClient - The Better Auth client.
10
+ * @param userId - The current signed in user's ID.
11
+ * @param params - Parameters forwarded to `authClient.listSessions`.
12
+ */
13
+ export function listSessionsOptions(
14
+ authClient: AuthClient,
15
+ userId?: string,
16
+ params?: Parameters<AuthClient["listSessions"]>[0]
17
+ ) {
18
+ return authQueryOptions(
19
+ authClient.listSessions,
20
+ ["auth", "user", userId, "listSessions"],
21
+ params
22
+ )
23
+ }
@@ -0,0 +1,23 @@
1
+ import type { AuthClient } from "../../lib/auth-client"
2
+ import { authQueryOptions } from "../auth-query-options"
3
+
4
+ /**
5
+ * Query options factory for the current user's passkeys.
6
+ *
7
+ * Keyed per-user (enables offline account switching with a persister).
8
+ *
9
+ * @param authClient - The Better Auth client.
10
+ * @param userId - The current signed in user's ID.
11
+ * @param params - Parameters forwarded to `authClient.passkey.listUserPasskeys`.
12
+ */
13
+ export function listUserPasskeysOptions(
14
+ authClient: AuthClient,
15
+ userId?: string,
16
+ params?: Parameters<AuthClient["passkey"]["listUserPasskeys"]>[0]
17
+ ) {
18
+ return authQueryOptions(
19
+ authClient.passkey.listUserPasskeys,
20
+ ["auth", "user", userId, "listUserPasskeys"],
21
+ params
22
+ )
23
+ }
@@ -1,18 +0,0 @@
1
- import { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';
2
- import { BetterFetchError } from 'better-auth/react';
3
- type AuthFn = (...args: any) => Promise<any>;
4
- type MutationParams<TFn extends AuthFn> = undefined extends Parameters<TFn>[0] ? // biome-ignore lint/suspicious/noConfusingVoidType: void is needed for mutations with optional params
5
- void | Omit<NonNullable<Parameters<TFn>[0]>, "fetchOptions"> : Omit<Parameters<TFn>[0], "fetchOptions">;
6
- type InferMutationData<TFn extends AuthFn> = TFn extends (...args: infer _A) => infer R ? Extract<Awaited<R>, {
7
- error: null;
8
- }> extends {
9
- data: infer D;
10
- } ? D : Awaited<R> : Awaited<ReturnType<TFn>>;
11
- export type UseAuthMutationOptions<TFn extends AuthFn> = Omit<UseMutationOptions<InferMutationData<TFn>, BetterFetchError, MutationParams<TFn>>, "mutationFn">;
12
- export type UseAuthMutationResult<TFn extends AuthFn> = UseMutationResult<InferMutationData<TFn>, BetterFetchError, MutationParams<TFn>>;
13
- type UseAuthMutationProps<TFn extends AuthFn> = {
14
- authFn: TFn;
15
- options?: UseAuthMutationOptions<TFn>;
16
- };
17
- export declare function useAuthMutation<TFn extends AuthFn>({ authFn, options }: UseAuthMutationProps<TFn>): UseAuthMutationResult<TFn>;
18
- export {};
@@ -1,13 +0,0 @@
1
- import { useMutation as e } from "@tanstack/react-query";
2
- //#region src/hooks/auth/use-auth-mutation.ts
3
- function t({ authFn: t, options: n }) {
4
- return e({
5
- mutationFn: (e) => t({
6
- ...e,
7
- fetchOptions: { throw: !0 }
8
- }),
9
- ...n
10
- });
11
- }
12
- //#endregion
13
- export { t as useAuthMutation };
@@ -1,24 +0,0 @@
1
- import { UseQueryOptions, UseQueryResult } from '@tanstack/react-query';
2
- import { BetterFetchError, BetterFetchOption } from 'better-auth/react';
3
- type BetterFetchFn = (options: {
4
- fetchOptions?: BetterFetchOption;
5
- }) => Promise<{
6
- data: unknown;
7
- }>;
8
- type InferData<TFn> = TFn extends (options: {
9
- fetchOptions?: BetterFetchOption;
10
- }) => Promise<{
11
- data: infer TData;
12
- }> ? TData : never;
13
- type OmitFetchOptions<T> = {
14
- [K in keyof T as K extends "fetchOptions" ? never : K]: T[K];
15
- };
16
- export type UseAuthQueryOptions<TFn extends BetterFetchFn> = Omit<UseQueryOptions<InferData<TFn>, BetterFetchError>, "queryFn">;
17
- export type UseAuthQueryResult<TFn extends BetterFetchFn> = UseQueryResult<InferData<TFn>, BetterFetchError>;
18
- type UseAuthQueryProps<TFn extends BetterFetchFn> = {
19
- authFn: TFn;
20
- params?: OmitFetchOptions<Parameters<TFn>[0]>;
21
- options: UseAuthQueryOptions<TFn>;
22
- };
23
- export declare function useAuthQuery<TFn extends BetterFetchFn>({ authFn, params, options }: UseAuthQueryProps<TFn>): UseQueryResult<import('@tanstack/react-query').NoInfer<InferData<TFn>>, BetterFetchError>;
24
- export {};
@@ -1,13 +0,0 @@
1
- import { useQuery as e } from "@tanstack/react-query";
2
- //#region src/hooks/auth/use-auth-query.ts
3
- function t({ authFn: t, params: n, options: r }) {
4
- return e({
5
- queryFn: async () => await t({
6
- ...n,
7
- fetchOptions: { throw: !0 }
8
- }),
9
- ...r
10
- });
11
- }
12
- //#endregion
13
- export { t as useAuthQuery };
@@ -1,56 +0,0 @@
1
- import {
2
- type UseMutationOptions,
3
- type UseMutationResult,
4
- useMutation
5
- } from "@tanstack/react-query"
6
- import type { BetterFetchError } from "better-auth/react"
7
-
8
- // biome-ignore lint/suspicious/noExplicitAny: any
9
- type AuthFn = (...args: any) => Promise<any>
10
-
11
- type MutationParams<TFn extends AuthFn> = undefined extends Parameters<TFn>[0]
12
- ? // biome-ignore lint/suspicious/noConfusingVoidType: void is needed for mutations with optional params
13
- void | Omit<NonNullable<Parameters<TFn>[0]>, "fetchOptions">
14
- : Omit<Parameters<TFn>[0], "fetchOptions">
15
-
16
- type InferMutationData<TFn extends AuthFn> = TFn extends (
17
- ...args: infer _A
18
- ) => infer R
19
- ? Extract<Awaited<R>, { error: null }> extends { data: infer D }
20
- ? D
21
- : Awaited<R>
22
- : Awaited<ReturnType<TFn>>
23
-
24
- export type UseAuthMutationOptions<TFn extends AuthFn> = Omit<
25
- UseMutationOptions<
26
- InferMutationData<TFn>,
27
- BetterFetchError,
28
- MutationParams<TFn>
29
- >,
30
- "mutationFn"
31
- >
32
-
33
- export type UseAuthMutationResult<TFn extends AuthFn> = UseMutationResult<
34
- InferMutationData<TFn>,
35
- BetterFetchError,
36
- MutationParams<TFn>
37
- >
38
-
39
- type UseAuthMutationProps<TFn extends AuthFn> = {
40
- authFn: TFn
41
- options?: UseAuthMutationOptions<TFn>
42
- }
43
-
44
- export function useAuthMutation<TFn extends AuthFn>({
45
- authFn,
46
- options
47
- }: UseAuthMutationProps<TFn>): UseAuthMutationResult<TFn> {
48
- return useMutation({
49
- mutationFn: (params) =>
50
- authFn({
51
- ...params,
52
- fetchOptions: { throw: true }
53
- }),
54
- ...options
55
- })
56
- }
@@ -1,50 +0,0 @@
1
- import {
2
- type UseQueryOptions,
3
- type UseQueryResult,
4
- useQuery
5
- } from "@tanstack/react-query"
6
- import type { BetterFetchError, BetterFetchOption } from "better-auth/react"
7
-
8
- type BetterFetchFn = (options: {
9
- fetchOptions?: BetterFetchOption
10
- }) => Promise<{ data: unknown }>
11
-
12
- type InferData<TFn> = TFn extends (options: {
13
- fetchOptions?: BetterFetchOption
14
- }) => Promise<{ data: infer TData }>
15
- ? TData
16
- : never
17
-
18
- type OmitFetchOptions<T> = {
19
- [K in keyof T as K extends "fetchOptions" ? never : K]: T[K]
20
- }
21
-
22
- export type UseAuthQueryOptions<TFn extends BetterFetchFn> = Omit<
23
- UseQueryOptions<InferData<TFn>, BetterFetchError>,
24
- "queryFn"
25
- >
26
-
27
- export type UseAuthQueryResult<TFn extends BetterFetchFn> = UseQueryResult<
28
- InferData<TFn>,
29
- BetterFetchError
30
- >
31
-
32
- type UseAuthQueryProps<TFn extends BetterFetchFn> = {
33
- authFn: TFn
34
- params?: OmitFetchOptions<Parameters<TFn>[0]>
35
- options: UseAuthQueryOptions<TFn>
36
- }
37
-
38
- export function useAuthQuery<TFn extends BetterFetchFn>({
39
- authFn,
40
- params,
41
- options
42
- }: UseAuthQueryProps<TFn>) {
43
- return useQuery<InferData<TFn>, BetterFetchError>({
44
- queryFn: async () => {
45
- const result = await authFn({ ...params, fetchOptions: { throw: true } })
46
- return result as InferData<TFn>
47
- },
48
- ...options
49
- })
50
- }