@better-auth-ui/react 1.6.8 → 1.6.10
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.
- package/dist/components/auth/auth-context.d.ts +3 -0
- package/dist/components/auth/email/email-localization.d.ts +11 -3
- package/dist/components/auth/email/index.d.ts +1 -0
- package/dist/components/auth/email/organization-invitation.d.ts +121 -0
- package/dist/components/mutation-invalidator.d.ts +1 -0
- package/dist/email.js +1348 -11
- package/dist/hooks/auth/use-authenticate.d.ts +1 -1
- package/dist/hooks/auth/use-user.d.ts +12 -12
- package/dist/hooks/use-auth-query.d.ts +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.js +2469 -79
- package/dist/lib/auth-client.d.ts +4 -1
- package/dist/lib/auth-plugin.d.ts +16 -0
- package/dist/lib/auth-server.d.ts +8 -1
- package/dist/lib/settings-tab.d.ts +19 -0
- package/dist/mutations/api-key/create-api-key-mutation.d.ts +6 -4
- package/dist/mutations/api-key/delete-api-key-mutation.d.ts +7 -3
- package/dist/mutations/auth/sign-in-email-mutation.d.ts +5 -5
- package/dist/mutations/auth/sign-out-mutation.d.ts +6 -4
- package/dist/mutations/auth/sign-up-email-mutation.d.ts +5 -5
- package/dist/mutations/multi-session/revoke-multi-session-mutation.d.ts +5 -5
- package/dist/mutations/multi-session/set-active-session-mutation.d.ts +5 -6
- package/dist/mutations/organization/accept-invitation-mutation.d.ts +43 -0
- package/dist/mutations/organization/cancel-invitation-mutation.d.ts +25 -0
- package/dist/mutations/organization/check-slug-mutation.d.ts +21 -0
- package/dist/mutations/organization/create-organization-mutation.d.ts +39 -0
- package/dist/mutations/organization/delete-organization-mutation.d.ts +21 -0
- package/dist/mutations/organization/index.d.ts +12 -0
- package/dist/mutations/organization/invite-member-mutation.d.ts +43 -0
- package/dist/mutations/organization/leave-organization-mutation.d.ts +65 -0
- package/dist/mutations/organization/reject-invitation-mutation.d.ts +31 -0
- package/dist/mutations/organization/remove-member-mutation.d.ts +35 -0
- package/dist/mutations/organization/set-active-organization-mutation.d.ts +71 -0
- package/dist/mutations/organization/update-member-role-mutation.d.ts +31 -0
- package/dist/mutations/organization/update-organization-mutation.d.ts +21 -0
- package/dist/mutations/passkey/add-passkey-mutation.d.ts +5 -5
- package/dist/mutations/passkey/delete-passkey-mutation.d.ts +5 -5
- package/dist/mutations/passkey/sign-in-passkey-mutation.d.ts +5 -5
- package/dist/mutations/settings/change-email-mutation.d.ts +6 -5
- package/dist/mutations/settings/revoke-session-mutation.d.ts +5 -5
- package/dist/mutations/settings/unlink-account-mutation.d.ts +5 -5
- package/dist/mutations/settings/update-user-mutation.d.ts +5 -5
- package/dist/mutations/username/sign-in-username-mutation.d.ts +5 -5
- package/dist/plugins/captcha-plugin.d.ts +2 -2
- package/dist/plugins.js +27 -2
- package/dist/queries/api-key/list-api-keys-query.d.ts +17 -8
- package/dist/queries/auth/session-query.d.ts +1 -1
- package/dist/queries/multi-session/list-device-sessions-query.d.ts +5 -5
- package/dist/queries/organization/active-organization-query.d.ts +39 -0
- package/dist/queries/organization/full-organization-query.d.ts +37 -0
- package/dist/queries/organization/has-permission-query.d.ts +21 -0
- package/dist/queries/organization/index.d.ts +7 -0
- package/dist/queries/organization/list-invitations-query.d.ts +29 -0
- package/dist/queries/organization/list-members-query.d.ts +61 -0
- package/dist/queries/organization/list-organizations-query.d.ts +22 -0
- package/dist/queries/organization/list-user-invitations-query.d.ts +29 -0
- package/dist/queries/passkey/list-passkeys-query.d.ts +5 -5
- package/dist/queries/settings/account-info-query.d.ts +1 -1
- package/dist/queries/settings/list-accounts-query.d.ts +1 -1
- package/dist/queries/settings/list-sessions-query.d.ts +1 -1
- package/dist/server/queries/api-key/list-api-keys-query.d.ts +83 -0
- package/dist/server/queries/multi-session/list-device-sessions-query.d.ts +4 -4
- package/dist/server/queries/organization/active-organization-query.d.ts +61 -0
- package/dist/server/queries/organization/full-organization-query.d.ts +42 -0
- package/dist/server/queries/organization/has-permission-query.d.ts +66 -0
- package/dist/server/queries/organization/list-invitations-query.d.ts +34 -0
- package/dist/server/queries/organization/list-members-query.d.ts +66 -0
- package/dist/server/queries/organization/list-organizations-query.d.ts +27 -0
- package/dist/server/queries/organization/list-user-invitations-query.d.ts +34 -0
- package/dist/server/queries/passkey/list-passkeys-query.d.ts +4 -4
- package/dist/server.d.ts +8 -0
- package/dist/server.js +131 -7
- package/dist/use-auth-plugin-ClcP84Uz.js +80 -0
- package/package.json +19 -16
- package/src/components/auth/auth-context.tsx +7 -0
- package/src/components/auth/auth-provider.tsx +19 -31
- package/src/components/auth/email/email-localization.tsx +5 -3
- package/src/components/auth/email/index.ts +1 -0
- package/src/components/auth/email/organization-invitation.tsx +454 -0
- package/src/components/mutation-invalidator.tsx +67 -0
- package/src/index.ts +3 -0
- package/src/lib/auth-client.ts +7 -0
- package/src/lib/auth-plugin.ts +17 -0
- package/src/lib/auth-server.ts +17 -1
- package/src/lib/settings-tab.ts +21 -0
- package/src/mutations/api-key/create-api-key-mutation.ts +34 -19
- package/src/mutations/api-key/delete-api-key-mutation.ts +36 -19
- package/src/mutations/auth/sign-in-email-mutation.ts +18 -22
- package/src/mutations/auth/sign-out-mutation.ts +19 -13
- package/src/mutations/auth/sign-up-email-mutation.ts +18 -22
- package/src/mutations/multi-session/revoke-multi-session-mutation.ts +31 -20
- package/src/mutations/multi-session/set-active-session-mutation.ts +25 -44
- package/src/mutations/organization/accept-invitation-mutation.ts +71 -0
- package/src/mutations/organization/cancel-invitation-mutation.ts +67 -0
- package/src/mutations/organization/check-slug-mutation.ts +55 -0
- package/src/mutations/organization/create-organization-mutation.ts +71 -0
- package/src/mutations/organization/delete-organization-mutation.ts +71 -0
- package/src/mutations/organization/index.ts +12 -0
- package/src/mutations/organization/invite-member-mutation.ts +81 -0
- package/src/mutations/organization/leave-organization-mutation.ts +74 -0
- package/src/mutations/organization/reject-invitation-mutation.ts +64 -0
- package/src/mutations/organization/remove-member-mutation.ts +67 -0
- package/src/mutations/organization/set-active-organization-mutation.ts +142 -0
- package/src/mutations/organization/update-member-role-mutation.ts +81 -0
- package/src/mutations/organization/update-organization-mutation.ts +84 -0
- package/src/mutations/passkey/add-passkey-mutation.ts +28 -17
- package/src/mutations/passkey/delete-passkey-mutation.ts +27 -17
- package/src/mutations/passkey/sign-in-passkey-mutation.ts +18 -21
- package/src/mutations/settings/change-email-mutation.ts +22 -18
- package/src/mutations/settings/delete-user-mutation.ts +2 -2
- package/src/mutations/settings/revoke-session-mutation.ts +24 -19
- package/src/mutations/settings/unlink-account-mutation.ts +24 -17
- package/src/mutations/settings/update-user-mutation.ts +18 -30
- package/src/mutations/username/is-username-available-mutation.ts +2 -2
- package/src/mutations/username/sign-in-username-mutation.ts +20 -23
- package/src/queries/api-key/list-api-keys-query.ts +20 -8
- package/src/queries/multi-session/list-device-sessions-query.ts +2 -2
- package/src/queries/organization/active-organization-query.ts +140 -0
- package/src/queries/organization/full-organization-query.ts +113 -0
- package/src/queries/organization/has-permission-query.ts +124 -0
- package/src/queries/organization/index.ts +7 -0
- package/src/queries/organization/list-invitations-query.ts +133 -0
- package/src/queries/organization/list-members-query.ts +133 -0
- package/src/queries/organization/list-organizations-query.ts +122 -0
- package/src/queries/organization/list-user-invitations-query.ts +122 -0
- package/src/queries/passkey/list-passkeys-query.ts +2 -2
- package/src/server/queries/api-key/list-api-keys-query.ts +94 -0
- package/src/server/queries/multi-session/list-device-sessions-query.ts +2 -2
- package/src/server/queries/organization/active-organization-query.ts +92 -0
- package/src/server/queries/organization/full-organization-query.ts +64 -0
- package/src/server/queries/organization/has-permission-query.ts +66 -0
- package/src/server/queries/organization/list-invitations-query.ts +81 -0
- package/src/server/queries/organization/list-members-query.ts +75 -0
- package/src/server/queries/organization/list-organizations-query.ts +67 -0
- package/src/server/queries/organization/list-user-invitations-query.ts +68 -0
- package/src/server/queries/passkey/list-passkeys-query.ts +2 -2
- package/src/server.ts +8 -0
- package/dist/components/auth/auth-provider.js +0 -44
- package/dist/components/auth/email/email-changed.js +0 -156
- package/dist/components/auth/email/email-localization.js +0 -19
- package/dist/components/auth/email/email-styles.js +0 -104
- package/dist/components/auth/email/email-verification.js +0 -140
- package/dist/components/auth/email/index.js +0 -9
- package/dist/components/auth/email/magic-link.js +0 -141
- package/dist/components/auth/email/new-device.js +0 -223
- package/dist/components/auth/email/otp-email.js +0 -129
- package/dist/components/auth/email/password-changed.js +0 -159
- package/dist/components/auth/email/reset-password.js +0 -140
- package/dist/components/auth/fetch-options-provider.js +0 -30
- package/dist/components/icons/apple.js +0 -17
- package/dist/components/icons/atlassian.js +0 -39
- package/dist/components/icons/cognito.js +0 -20
- package/dist/components/icons/discord.js +0 -17
- package/dist/components/icons/dropbox.js +0 -17
- package/dist/components/icons/facebook.js +0 -20
- package/dist/components/icons/figma.js +0 -35
- package/dist/components/icons/github.js +0 -17
- package/dist/components/icons/gitlab.js +0 -31
- package/dist/components/icons/google.js +0 -40
- package/dist/components/icons/huggingface.js +0 -39
- package/dist/components/icons/index.js +0 -35
- package/dist/components/icons/kakao.js +0 -17
- package/dist/components/icons/kick.js +0 -21
- package/dist/components/icons/line.js +0 -17
- package/dist/components/icons/linear.js +0 -17
- package/dist/components/icons/linkedin.js +0 -34
- package/dist/components/icons/microsoft.js +0 -31
- package/dist/components/icons/naver.js +0 -17
- package/dist/components/icons/notion.js +0 -17
- package/dist/components/icons/paybin.js +0 -33
- package/dist/components/icons/paypal.js +0 -31
- package/dist/components/icons/polar.js +0 -25
- package/dist/components/icons/railway.js +0 -17
- package/dist/components/icons/reddit.js +0 -22
- package/dist/components/icons/roblox.js +0 -18
- package/dist/components/icons/salesforce.js +0 -17
- package/dist/components/icons/slack.js +0 -31
- package/dist/components/icons/spotify.js +0 -17
- package/dist/components/icons/tiktok.js +0 -24
- package/dist/components/icons/twitch.js +0 -44
- package/dist/components/icons/vercel.js +0 -17
- package/dist/components/icons/vk.js +0 -17
- package/dist/components/icons/wechat.js +0 -17
- package/dist/components/icons/x.js +0 -17
- package/dist/components/icons/zoom.js +0 -70
- package/dist/components/settings/account/theme-preview.js +0 -289
- package/dist/hooks/auth/use-authenticate.js +0 -23
- package/dist/hooks/auth/use-user.js +0 -11
- package/dist/hooks/use-auth-mutation.js +0 -11
- package/dist/hooks/use-auth-plugin.js +0 -10
- package/dist/hooks/use-auth-query.js +0 -15
- package/dist/lib/provider-icons.js +0 -76
- package/dist/lib/utils.js +0 -8
- package/dist/mutations/api-key/create-api-key-mutation.js +0 -29
- package/dist/mutations/api-key/delete-api-key-mutation.js +0 -29
- package/dist/mutations/auth/request-password-reset-mutation.js +0 -24
- package/dist/mutations/auth/reset-password-mutation.js +0 -24
- package/dist/mutations/auth/send-verification-email-mutation.js +0 -24
- package/dist/mutations/auth/sign-in-email-mutation.js +0 -29
- package/dist/mutations/auth/sign-in-social-mutation.js +0 -24
- package/dist/mutations/auth/sign-out-mutation.js +0 -28
- package/dist/mutations/auth/sign-up-email-mutation.js +0 -29
- package/dist/mutations/auth-mutation-options.js +0 -19
- package/dist/mutations/magic-link/sign-in-magic-link-mutation.js +0 -24
- package/dist/mutations/multi-session/revoke-multi-session-mutation.js +0 -29
- package/dist/mutations/multi-session/set-active-session-mutation.js +0 -31
- package/dist/mutations/passkey/add-passkey-mutation.js +0 -29
- package/dist/mutations/passkey/delete-passkey-mutation.js +0 -29
- package/dist/mutations/passkey/sign-in-passkey-mutation.js +0 -29
- package/dist/mutations/settings/change-email-mutation.js +0 -29
- package/dist/mutations/settings/change-password-mutation.js +0 -24
- package/dist/mutations/settings/delete-user-mutation.js +0 -24
- package/dist/mutations/settings/link-social-mutation.js +0 -24
- package/dist/mutations/settings/revoke-session-mutation.js +0 -29
- package/dist/mutations/settings/unlink-account-mutation.js +0 -29
- package/dist/mutations/settings/update-user-mutation.js +0 -35
- package/dist/mutations/username/is-username-available-mutation.js +0 -24
- package/dist/mutations/username/sign-in-username-mutation.js +0 -29
- package/dist/plugins/captcha-plugin.js +0 -29
- package/dist/queries/api-key/list-api-keys-query.js +0 -31
- package/dist/queries/auth/session-query.js +0 -30
- package/dist/queries/auth-query-options.js +0 -17
- package/dist/queries/multi-session/list-device-sessions-query.js +0 -31
- package/dist/queries/passkey/list-passkeys-query.js +0 -31
- package/dist/queries/settings/account-info-query.js +0 -31
- package/dist/queries/settings/list-accounts-query.js +0 -31
- package/dist/queries/settings/list-sessions-query.js +0 -31
- package/dist/server/queries/auth/session-query.js +0 -13
- package/dist/server/queries/multi-session/list-device-sessions-query.js +0 -12
- package/dist/server/queries/passkey/list-passkeys-query.js +0 -12
- package/dist/server/queries/settings/account-info-query.js +0 -12
- package/dist/server/queries/settings/list-accounts-query.js +0 -12
- package/dist/server/queries/settings/list-sessions-query.js +0 -12
|
@@ -1,16 +1,26 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
apiKeyMutationKeys,
|
|
3
|
+
apiKeyQueryKeys
|
|
4
|
+
} from "@better-auth-ui/core/plugins"
|
|
5
|
+
import {
|
|
6
|
+
mutationOptions,
|
|
7
|
+
type QueryClient,
|
|
8
|
+
useMutation
|
|
9
|
+
} from "@tanstack/react-query"
|
|
3
10
|
import type { BetterFetchError } from "better-auth/react"
|
|
4
11
|
|
|
5
12
|
import type { ApiKeyAuthClient } from "../../lib/auth-client"
|
|
6
|
-
import {
|
|
13
|
+
import { useSession } from "../../queries/auth/session-query"
|
|
7
14
|
|
|
8
|
-
export type CreateApiKeyParams<
|
|
9
|
-
|
|
15
|
+
export type CreateApiKeyParams<
|
|
16
|
+
TAuthClient extends ApiKeyAuthClient = ApiKeyAuthClient
|
|
17
|
+
> = Parameters<TAuthClient["apiKey"]["create"]>[0]
|
|
10
18
|
|
|
11
|
-
export type CreateApiKeyOptions<
|
|
19
|
+
export type CreateApiKeyOptions<
|
|
20
|
+
TAuthClient extends ApiKeyAuthClient = ApiKeyAuthClient
|
|
21
|
+
> = Omit<
|
|
12
22
|
ReturnType<typeof createApiKeyOptions<TAuthClient>>,
|
|
13
|
-
"mutationKey" | "mutationFn"
|
|
23
|
+
"mutationKey" | "mutationFn" | "meta"
|
|
14
24
|
>
|
|
15
25
|
|
|
16
26
|
/**
|
|
@@ -21,7 +31,7 @@ export type CreateApiKeyOptions<TAuthClient extends ApiKeyAuthClient> = Omit<
|
|
|
21
31
|
export function createApiKeyOptions<TAuthClient extends ApiKeyAuthClient>(
|
|
22
32
|
authClient: TAuthClient
|
|
23
33
|
) {
|
|
24
|
-
const mutationKey = apiKeyMutationKeys.
|
|
34
|
+
const mutationKey = apiKeyMutationKeys.create
|
|
25
35
|
|
|
26
36
|
const mutationFn = (params: CreateApiKeyParams<TAuthClient>) =>
|
|
27
37
|
authClient.apiKey.create({
|
|
@@ -42,23 +52,28 @@ export function createApiKeyOptions<TAuthClient extends ApiKeyAuthClient>(
|
|
|
42
52
|
/**
|
|
43
53
|
* Create a mutation for creating an API key.
|
|
44
54
|
*
|
|
45
|
-
*
|
|
55
|
+
* On success, `MutationInvalidator` awaits invalidation of the user's API key
|
|
56
|
+
* list queries (see `meta.awaits`).
|
|
46
57
|
*
|
|
47
58
|
* @param authClient - The Better Auth client with the API key plugin.
|
|
48
59
|
* @param options - React Query options forwarded to `useMutation`.
|
|
49
60
|
*/
|
|
50
61
|
export function useCreateApiKey<TAuthClient extends ApiKeyAuthClient>(
|
|
51
62
|
authClient: TAuthClient,
|
|
52
|
-
options?: CreateApiKeyOptions<TAuthClient
|
|
63
|
+
options?: CreateApiKeyOptions<TAuthClient>,
|
|
64
|
+
queryClient?: QueryClient
|
|
53
65
|
) {
|
|
54
|
-
const {
|
|
66
|
+
const { data: session } = useSession(authClient, undefined, queryClient)
|
|
67
|
+
const userId = session?.user.id
|
|
55
68
|
|
|
56
|
-
return useMutation(
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
69
|
+
return useMutation(
|
|
70
|
+
{
|
|
71
|
+
...createApiKeyOptions(authClient),
|
|
72
|
+
...options,
|
|
73
|
+
meta: {
|
|
74
|
+
awaits: [apiKeyQueryKeys.lists(userId)]
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
queryClient
|
|
78
|
+
)
|
|
64
79
|
}
|
|
@@ -1,16 +1,26 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
apiKeyMutationKeys,
|
|
3
|
+
apiKeyQueryKeys
|
|
4
|
+
} from "@better-auth-ui/core/plugins"
|
|
5
|
+
import {
|
|
6
|
+
mutationOptions,
|
|
7
|
+
type QueryClient,
|
|
8
|
+
useMutation
|
|
9
|
+
} from "@tanstack/react-query"
|
|
3
10
|
import type { BetterFetchError } from "better-auth/react"
|
|
4
11
|
|
|
5
12
|
import type { ApiKeyAuthClient } from "../../lib/auth-client"
|
|
6
|
-
import {
|
|
13
|
+
import { useSession } from "../../queries/auth/session-query"
|
|
7
14
|
|
|
8
|
-
export type DeleteApiKeyParams<
|
|
9
|
-
|
|
15
|
+
export type DeleteApiKeyParams<
|
|
16
|
+
TAuthClient extends ApiKeyAuthClient = ApiKeyAuthClient
|
|
17
|
+
> = Parameters<TAuthClient["apiKey"]["delete"]>[0]
|
|
10
18
|
|
|
11
|
-
export type DeleteApiKeyOptions<
|
|
19
|
+
export type DeleteApiKeyOptions<
|
|
20
|
+
TAuthClient extends ApiKeyAuthClient = ApiKeyAuthClient
|
|
21
|
+
> = Omit<
|
|
12
22
|
ReturnType<typeof deleteApiKeyOptions<TAuthClient>>,
|
|
13
|
-
"mutationKey" | "mutationFn"
|
|
23
|
+
"mutationKey" | "mutationFn" | "meta"
|
|
14
24
|
>
|
|
15
25
|
|
|
16
26
|
/**
|
|
@@ -21,7 +31,7 @@ export type DeleteApiKeyOptions<TAuthClient extends ApiKeyAuthClient> = Omit<
|
|
|
21
31
|
export function deleteApiKeyOptions<TAuthClient extends ApiKeyAuthClient>(
|
|
22
32
|
authClient: TAuthClient
|
|
23
33
|
) {
|
|
24
|
-
const mutationKey = apiKeyMutationKeys.
|
|
34
|
+
const mutationKey = apiKeyMutationKeys.delete
|
|
25
35
|
|
|
26
36
|
const mutationFn = (params: DeleteApiKeyParams<TAuthClient>) =>
|
|
27
37
|
authClient.apiKey.delete({
|
|
@@ -42,21 +52,28 @@ export function deleteApiKeyOptions<TAuthClient extends ApiKeyAuthClient>(
|
|
|
42
52
|
/**
|
|
43
53
|
* Create a mutation for deleting an API key.
|
|
44
54
|
*
|
|
55
|
+
* On success, `MutationInvalidator` awaits invalidation of the user's API key
|
|
56
|
+
* list queries (see `meta.awaits`).
|
|
57
|
+
*
|
|
45
58
|
* @param authClient - The Better Auth client with the API key plugin.
|
|
46
59
|
* @param options - React Query options forwarded to `useMutation`.
|
|
47
60
|
*/
|
|
48
61
|
export function useDeleteApiKey<TAuthClient extends ApiKeyAuthClient>(
|
|
49
62
|
authClient: TAuthClient,
|
|
50
|
-
options?: DeleteApiKeyOptions<TAuthClient
|
|
63
|
+
options?: DeleteApiKeyOptions<TAuthClient>,
|
|
64
|
+
queryClient?: QueryClient
|
|
51
65
|
) {
|
|
52
|
-
const {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
66
|
+
const { data: session } = useSession(authClient, undefined, queryClient)
|
|
67
|
+
const userId = session?.user.id
|
|
68
|
+
|
|
69
|
+
return useMutation(
|
|
70
|
+
{
|
|
71
|
+
...deleteApiKeyOptions(authClient),
|
|
72
|
+
...options,
|
|
73
|
+
meta: {
|
|
74
|
+
awaits: [apiKeyQueryKeys.lists(userId)]
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
queryClient
|
|
78
|
+
)
|
|
62
79
|
}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import { authMutationKeys } from "@better-auth-ui/core"
|
|
1
|
+
import { authMutationKeys, authQueryKeys } from "@better-auth-ui/core"
|
|
2
2
|
import {
|
|
3
3
|
mutationOptions,
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
type QueryClient,
|
|
5
|
+
useMutation
|
|
6
6
|
} from "@tanstack/react-query"
|
|
7
7
|
import type { BetterFetchError } from "better-auth/react"
|
|
8
8
|
|
|
9
9
|
import type { AuthClient } from "../../lib/auth-client"
|
|
10
|
-
import { sessionOptions } from "../../queries/auth/session-query"
|
|
11
10
|
|
|
12
11
|
export type SignInEmailParams<TAuthClient extends AuthClient> = Parameters<
|
|
13
12
|
TAuthClient["signIn"]["email"]
|
|
@@ -15,7 +14,7 @@ export type SignInEmailParams<TAuthClient extends AuthClient> = Parameters<
|
|
|
15
14
|
|
|
16
15
|
export type SignInEmailOptions<TAuthClient extends AuthClient> = Omit<
|
|
17
16
|
ReturnType<typeof signInEmailOptions<TAuthClient>>,
|
|
18
|
-
"mutationKey" | "mutationFn"
|
|
17
|
+
"mutationKey" | "mutationFn" | "meta"
|
|
19
18
|
>
|
|
20
19
|
|
|
21
20
|
/**
|
|
@@ -51,28 +50,25 @@ export function signInEmailOptions<TAuthClient extends AuthClient>(
|
|
|
51
50
|
/**
|
|
52
51
|
* Create a mutation for email/password sign-in.
|
|
53
52
|
*
|
|
54
|
-
*
|
|
55
|
-
* the new session is refetched
|
|
56
|
-
* such as `onSuccess`, `onError`, and `retry`.
|
|
53
|
+
* On success, `MutationInvalidator` awaits invalidation of the session
|
|
54
|
+
* query so the new session is refetched (see `meta.awaits`).
|
|
57
55
|
*
|
|
58
56
|
* @param authClient - The Better Auth client.
|
|
59
57
|
* @param options - React Query options forwarded to `useMutation`.
|
|
60
58
|
*/
|
|
61
59
|
export function useSignInEmail<TAuthClient extends AuthClient>(
|
|
62
60
|
authClient: TAuthClient,
|
|
63
|
-
options?: SignInEmailOptions<TAuthClient
|
|
61
|
+
options?: SignInEmailOptions<TAuthClient>,
|
|
62
|
+
queryClient?: QueryClient
|
|
64
63
|
) {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
await options?.onSuccess?.(...args)
|
|
76
|
-
}
|
|
77
|
-
})
|
|
64
|
+
return useMutation(
|
|
65
|
+
{
|
|
66
|
+
...signInEmailOptions(authClient),
|
|
67
|
+
...options,
|
|
68
|
+
meta: {
|
|
69
|
+
awaits: [authQueryKeys.session]
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
queryClient
|
|
73
|
+
)
|
|
78
74
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { authMutationKeys, authQueryKeys } from "@better-auth-ui/core"
|
|
2
2
|
import {
|
|
3
3
|
mutationOptions,
|
|
4
|
+
type QueryClient,
|
|
4
5
|
useMutation,
|
|
5
6
|
useQueryClient
|
|
6
7
|
} from "@tanstack/react-query"
|
|
@@ -47,25 +48,30 @@ export function signOutOptions<TAuthClient extends AuthClient>(
|
|
|
47
48
|
/**
|
|
48
49
|
* Create a mutation for signing the current user out.
|
|
49
50
|
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
51
|
+
* On success, removes every cached auth query so no stale data leaks across
|
|
52
|
+
* accounts. Sign-out uses a direct `removeQueries` call (rather than the
|
|
53
|
+
* `meta.awaits` / `meta.invalidates` pattern) because the goal is to drop
|
|
54
|
+
* cache entries entirely, not to refetch them.
|
|
53
55
|
*
|
|
54
56
|
* @param authClient - The Better Auth client.
|
|
55
57
|
* @param options - React Query options forwarded to `useMutation`.
|
|
56
58
|
*/
|
|
57
59
|
export function useSignOut<TAuthClient extends AuthClient>(
|
|
58
60
|
authClient: TAuthClient,
|
|
59
|
-
options?: SignOutOptions<TAuthClient
|
|
61
|
+
options?: SignOutOptions<TAuthClient>,
|
|
62
|
+
queryClient?: QueryClient
|
|
60
63
|
) {
|
|
61
|
-
const
|
|
64
|
+
const defaultQueryClient = useQueryClient(queryClient)
|
|
62
65
|
|
|
63
|
-
return useMutation(
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
66
|
+
return useMutation(
|
|
67
|
+
{
|
|
68
|
+
...signOutOptions(authClient),
|
|
69
|
+
...options,
|
|
70
|
+
onSuccess: async (...args) => {
|
|
71
|
+
defaultQueryClient.removeQueries({ queryKey: authQueryKeys.all })
|
|
72
|
+
await options?.onSuccess?.(...args)
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
queryClient
|
|
76
|
+
)
|
|
71
77
|
}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import { authMutationKeys } from "@better-auth-ui/core"
|
|
1
|
+
import { authMutationKeys, authQueryKeys } from "@better-auth-ui/core"
|
|
2
2
|
import {
|
|
3
3
|
mutationOptions,
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
type QueryClient,
|
|
5
|
+
useMutation
|
|
6
6
|
} from "@tanstack/react-query"
|
|
7
7
|
import type { BetterFetchError } from "better-auth/react"
|
|
8
8
|
|
|
9
9
|
import type { AuthClient } from "../../lib/auth-client"
|
|
10
|
-
import { sessionOptions } from "../../queries/auth/session-query"
|
|
11
10
|
|
|
12
11
|
export type SignUpEmailParams<TAuthClient extends AuthClient> = Parameters<
|
|
13
12
|
TAuthClient["signUp"]["email"]
|
|
@@ -15,7 +14,7 @@ export type SignUpEmailParams<TAuthClient extends AuthClient> = Parameters<
|
|
|
15
14
|
|
|
16
15
|
export type SignUpEmailOptions<TAuthClient extends AuthClient> = Omit<
|
|
17
16
|
ReturnType<typeof signUpEmailOptions<TAuthClient>>,
|
|
18
|
-
"mutationKey" | "mutationFn"
|
|
17
|
+
"mutationKey" | "mutationFn" | "meta"
|
|
19
18
|
>
|
|
20
19
|
|
|
21
20
|
/**
|
|
@@ -47,28 +46,25 @@ export function signUpEmailOptions<TAuthClient extends AuthClient>(
|
|
|
47
46
|
/**
|
|
48
47
|
* Create a mutation for email/password sign-up.
|
|
49
48
|
*
|
|
50
|
-
*
|
|
51
|
-
* the new session is refetched
|
|
52
|
-
* such as `onSuccess`, `onError`, and `retry`.
|
|
49
|
+
* On success, `MutationInvalidator` awaits invalidation of the session
|
|
50
|
+
* query so the new session is refetched (see `meta.awaits`).
|
|
53
51
|
*
|
|
54
52
|
* @param authClient - The Better Auth client.
|
|
55
53
|
* @param options - React Query options forwarded to `useMutation`.
|
|
56
54
|
*/
|
|
57
55
|
export function useSignUpEmail<TAuthClient extends AuthClient>(
|
|
58
56
|
authClient: TAuthClient,
|
|
59
|
-
options?: SignUpEmailOptions<TAuthClient
|
|
57
|
+
options?: SignUpEmailOptions<TAuthClient>,
|
|
58
|
+
queryClient?: QueryClient
|
|
60
59
|
) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
await options?.onSuccess?.(...args)
|
|
72
|
-
}
|
|
73
|
-
})
|
|
60
|
+
return useMutation(
|
|
61
|
+
{
|
|
62
|
+
...signUpEmailOptions(authClient),
|
|
63
|
+
...options,
|
|
64
|
+
meta: {
|
|
65
|
+
awaits: [authQueryKeys.session]
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
queryClient
|
|
69
|
+
)
|
|
74
70
|
}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
multiSessionMutationKeys,
|
|
3
|
+
multiSessionQueryKeys
|
|
4
|
+
} from "@better-auth-ui/core/plugins"
|
|
5
|
+
import {
|
|
6
|
+
mutationOptions,
|
|
7
|
+
type QueryClient,
|
|
8
|
+
useMutation
|
|
9
|
+
} from "@tanstack/react-query"
|
|
3
10
|
import type { BetterFetchError } from "better-auth/react"
|
|
4
11
|
|
|
5
12
|
import type { MultiSessionAuthClient } from "../../lib/auth-client"
|
|
6
|
-
import {
|
|
13
|
+
import { useSession } from "../../queries/auth/session-query"
|
|
7
14
|
|
|
8
15
|
export type RevokeMultiSessionParams<
|
|
9
16
|
TAuthClient extends MultiSessionAuthClient
|
|
@@ -13,7 +20,7 @@ export type RevokeMultiSessionOptions<
|
|
|
13
20
|
TAuthClient extends MultiSessionAuthClient
|
|
14
21
|
> = Omit<
|
|
15
22
|
ReturnType<typeof revokeMultiSessionOptions<TAuthClient>>,
|
|
16
|
-
"mutationKey" | "mutationFn"
|
|
23
|
+
"mutationKey" | "mutationFn" | "meta"
|
|
17
24
|
>
|
|
18
25
|
|
|
19
26
|
/**
|
|
@@ -24,7 +31,7 @@ export type RevokeMultiSessionOptions<
|
|
|
24
31
|
export function revokeMultiSessionOptions<
|
|
25
32
|
TAuthClient extends MultiSessionAuthClient
|
|
26
33
|
>(authClient: TAuthClient) {
|
|
27
|
-
const mutationKey =
|
|
34
|
+
const mutationKey = multiSessionMutationKeys.revoke
|
|
28
35
|
|
|
29
36
|
const mutationFn = (params: RevokeMultiSessionParams<TAuthClient>) =>
|
|
30
37
|
authClient.multiSession.revoke({
|
|
@@ -45,26 +52,30 @@ export function revokeMultiSessionOptions<
|
|
|
45
52
|
/**
|
|
46
53
|
* Create a mutation for revoking a device session in multi-session mode.
|
|
47
54
|
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* `onError`, and `retry`.
|
|
55
|
+
* On success, `MutationInvalidator` awaits invalidation of the device
|
|
56
|
+
* sessions list (see `meta.awaits`).
|
|
51
57
|
*
|
|
52
58
|
* @param authClient - The Better Auth client with the multi-session plugin.
|
|
53
59
|
* @param options - React Query options forwarded to `useMutation`.
|
|
54
60
|
*/
|
|
55
61
|
export function useRevokeMultiSession<
|
|
56
62
|
TAuthClient extends MultiSessionAuthClient
|
|
57
|
-
>(
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
63
|
+
>(
|
|
64
|
+
authClient: TAuthClient,
|
|
65
|
+
options?: RevokeMultiSessionOptions<TAuthClient>,
|
|
66
|
+
queryClient?: QueryClient
|
|
67
|
+
) {
|
|
68
|
+
const { data: session } = useSession(authClient, undefined, queryClient)
|
|
69
|
+
const userId = session?.user.id
|
|
61
70
|
|
|
62
|
-
return useMutation(
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
71
|
+
return useMutation(
|
|
72
|
+
{
|
|
73
|
+
...revokeMultiSessionOptions(authClient),
|
|
74
|
+
...options,
|
|
75
|
+
meta: {
|
|
76
|
+
awaits: [multiSessionQueryKeys.lists(userId)]
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
queryClient
|
|
80
|
+
)
|
|
70
81
|
}
|
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { authQueryKeys } from "@better-auth-ui/core"
|
|
2
|
+
import {
|
|
3
|
+
multiSessionMutationKeys,
|
|
4
|
+
multiSessionQueryKeys
|
|
5
|
+
} from "@better-auth-ui/core/plugins"
|
|
2
6
|
import {
|
|
3
7
|
mutationOptions,
|
|
4
|
-
|
|
5
|
-
|
|
8
|
+
type QueryClient,
|
|
9
|
+
useMutation
|
|
6
10
|
} from "@tanstack/react-query"
|
|
7
11
|
import type { BetterFetchError } from "better-auth/react"
|
|
8
12
|
|
|
9
13
|
import type { MultiSessionAuthClient } from "../../lib/auth-client"
|
|
10
|
-
import {
|
|
11
|
-
type SessionData,
|
|
12
|
-
sessionOptions,
|
|
13
|
-
useSession
|
|
14
|
-
} from "../../queries/auth/session-query"
|
|
15
|
-
import { useListDeviceSessions } from "../../queries/multi-session/list-device-sessions-query"
|
|
14
|
+
import { useSession } from "../../queries/auth/session-query"
|
|
16
15
|
|
|
17
16
|
export type SetActiveSessionParams<TAuthClient extends MultiSessionAuthClient> =
|
|
18
17
|
Parameters<TAuthClient["multiSession"]["setActive"]>[0]
|
|
@@ -21,7 +20,7 @@ export type SetActiveSessionOptions<
|
|
|
21
20
|
TAuthClient extends MultiSessionAuthClient
|
|
22
21
|
> = Omit<
|
|
23
22
|
ReturnType<typeof setActiveSessionOptions<TAuthClient>>,
|
|
24
|
-
"mutationKey" | "mutationFn"
|
|
23
|
+
"mutationKey" | "mutationFn" | "meta"
|
|
25
24
|
>
|
|
26
25
|
|
|
27
26
|
/**
|
|
@@ -32,7 +31,7 @@ export type SetActiveSessionOptions<
|
|
|
32
31
|
export function setActiveSessionOptions<
|
|
33
32
|
TAuthClient extends MultiSessionAuthClient
|
|
34
33
|
>(authClient: TAuthClient) {
|
|
35
|
-
const mutationKey =
|
|
34
|
+
const mutationKey = multiSessionMutationKeys.setActive
|
|
36
35
|
|
|
37
36
|
const mutationFn = (params: SetActiveSessionParams<TAuthClient>) =>
|
|
38
37
|
authClient.multiSession.setActive({
|
|
@@ -53,46 +52,28 @@ export function setActiveSessionOptions<
|
|
|
53
52
|
/**
|
|
54
53
|
* Create a mutation for switching the active device session.
|
|
55
54
|
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
* device-session queries, and forwards React Query mutation options such as
|
|
59
|
-
* `onSuccess`, `onError`, and `retry`.
|
|
55
|
+
* On success, `MutationInvalidator` awaits invalidation of the session
|
|
56
|
+
* and device sessions queries (see `meta.awaits`).
|
|
60
57
|
*
|
|
61
58
|
* @param authClient - The Better Auth client with the multi-session plugin.
|
|
62
59
|
* @param options - React Query options forwarded to `useMutation`.
|
|
63
60
|
*/
|
|
64
61
|
export function useSetActiveSession<TAuthClient extends MultiSessionAuthClient>(
|
|
65
62
|
authClient: TAuthClient,
|
|
66
|
-
options?: SetActiveSessionOptions<TAuthClient
|
|
63
|
+
options?: SetActiveSessionOptions<TAuthClient>,
|
|
64
|
+
queryClient?: QueryClient
|
|
67
65
|
) {
|
|
68
|
-
const
|
|
69
|
-
const
|
|
70
|
-
refetchOnMount: false
|
|
71
|
-
})
|
|
72
|
-
const { data: deviceSessions, refetch: refetchDeviceSessions } =
|
|
73
|
-
useListDeviceSessions(authClient, {
|
|
74
|
-
refetchOnMount: false
|
|
75
|
-
})
|
|
66
|
+
const { data: session } = useSession(authClient, undefined, queryClient)
|
|
67
|
+
const userId = session?.user.id
|
|
76
68
|
|
|
77
|
-
return useMutation(
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
({ session: { token } }) => token === sessionToken
|
|
84
|
-
)
|
|
85
|
-
|
|
86
|
-
if (deviceSession) {
|
|
87
|
-
queryClient.setQueryData(
|
|
88
|
-
sessionOptions(authClient).queryKey,
|
|
89
|
-
deviceSession as SessionData<TAuthClient>
|
|
90
|
-
)
|
|
69
|
+
return useMutation(
|
|
70
|
+
{
|
|
71
|
+
...setActiveSessionOptions(authClient),
|
|
72
|
+
...options,
|
|
73
|
+
meta: {
|
|
74
|
+
awaits: [authQueryKeys.session, multiSessionQueryKeys.lists(userId)]
|
|
91
75
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
await options?.onSuccess?.(data, variables, ...rest)
|
|
96
|
-
}
|
|
97
|
-
})
|
|
76
|
+
},
|
|
77
|
+
queryClient
|
|
78
|
+
)
|
|
98
79
|
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import {
|
|
2
|
+
organizationMutationKeys,
|
|
3
|
+
organizationQueryKeys
|
|
4
|
+
} from "@better-auth-ui/core/plugins"
|
|
5
|
+
import {
|
|
6
|
+
mutationOptions,
|
|
7
|
+
type QueryClient,
|
|
8
|
+
useMutation
|
|
9
|
+
} from "@tanstack/react-query"
|
|
10
|
+
import type { BetterFetchError } from "better-auth/react"
|
|
11
|
+
|
|
12
|
+
import type { OrganizationAuthClient } from "../../lib/auth-client"
|
|
13
|
+
import { useSession } from "../../queries/auth/session-query"
|
|
14
|
+
|
|
15
|
+
export type AcceptInvitationParams<TAuthClient extends OrganizationAuthClient> =
|
|
16
|
+
Parameters<TAuthClient["organization"]["acceptInvitation"]>[0]
|
|
17
|
+
|
|
18
|
+
export type AcceptInvitationOptions<
|
|
19
|
+
TAuthClient extends OrganizationAuthClient
|
|
20
|
+
> = Omit<
|
|
21
|
+
ReturnType<typeof acceptInvitationOptions<TAuthClient>>,
|
|
22
|
+
"mutationKey" | "mutationFn" | "meta"
|
|
23
|
+
>
|
|
24
|
+
|
|
25
|
+
export function acceptInvitationOptions<
|
|
26
|
+
TAuthClient extends OrganizationAuthClient
|
|
27
|
+
>(authClient: TAuthClient) {
|
|
28
|
+
const mutationKey = organizationMutationKeys.acceptInvitation
|
|
29
|
+
|
|
30
|
+
const mutationFn = (params: AcceptInvitationParams<TAuthClient>) =>
|
|
31
|
+
authClient.organization.acceptInvitation({
|
|
32
|
+
...params,
|
|
33
|
+
fetchOptions: { ...params?.fetchOptions, throw: true }
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
return mutationOptions<
|
|
37
|
+
Awaited<ReturnType<typeof mutationFn>>,
|
|
38
|
+
BetterFetchError,
|
|
39
|
+
Parameters<typeof mutationFn>[0]
|
|
40
|
+
>({
|
|
41
|
+
mutationKey,
|
|
42
|
+
mutationFn
|
|
43
|
+
})
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export function useAcceptInvitation<TAuthClient extends OrganizationAuthClient>(
|
|
47
|
+
authClient: TAuthClient,
|
|
48
|
+
options?: AcceptInvitationOptions<TAuthClient>,
|
|
49
|
+
queryClient?: QueryClient
|
|
50
|
+
) {
|
|
51
|
+
const { data: session } = useSession(authClient, undefined, queryClient)
|
|
52
|
+
const userId = session?.user.id
|
|
53
|
+
|
|
54
|
+
return useMutation(
|
|
55
|
+
{
|
|
56
|
+
...acceptInvitationOptions(authClient),
|
|
57
|
+
...options,
|
|
58
|
+
meta: {
|
|
59
|
+
awaits: [
|
|
60
|
+
organizationQueryKeys.userInvitations.all(userId),
|
|
61
|
+
organizationQueryKeys.lists(userId)
|
|
62
|
+
],
|
|
63
|
+
invalidates: [
|
|
64
|
+
organizationQueryKeys.fullDetails(userId),
|
|
65
|
+
organizationQueryKeys.activeOrganizations(userId)
|
|
66
|
+
]
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
queryClient
|
|
70
|
+
)
|
|
71
|
+
}
|