@better-auth-ui/solid 1.6.19
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/email/email-changed.d.ts +59 -0
- package/dist/components/auth/email/email-changed.js +264 -0
- package/dist/components/auth/email/email-styles.d.ts +48 -0
- package/dist/components/auth/email/email-styles.js +107 -0
- package/dist/components/auth/email/email-verification.d.ts +51 -0
- package/dist/components/auth/email/email-verification.js +212 -0
- package/dist/components/auth/email/index.d.ts +9 -0
- package/dist/components/auth/email/magic-link.d.ts +53 -0
- package/dist/components/auth/email/magic-link.js +213 -0
- package/dist/components/auth/email/new-device.d.ts +77 -0
- package/dist/components/auth/email/new-device.js +326 -0
- package/dist/components/auth/email/organization-invitation.d.ts +70 -0
- package/dist/components/auth/email/organization-invitation.js +260 -0
- package/dist/components/auth/email/otp-email.d.ts +49 -0
- package/dist/components/auth/email/otp-email.js +191 -0
- package/dist/components/auth/email/password-changed.d.ts +56 -0
- package/dist/components/auth/email/password-changed.js +236 -0
- package/dist/components/auth/email/reset-password.d.ts +51 -0
- package/dist/components/auth/email/reset-password.js +212 -0
- package/dist/email.d.ts +18 -0
- package/dist/email.js +10 -0
- package/dist/hooks/auth/use-authenticate.d.ts +3 -0
- package/dist/hooks/auth/use-authenticate.js +18 -0
- package/dist/hooks/auth/use-sign-out.d.ts +2 -0
- package/dist/hooks/auth/use-sign-out.js +17 -0
- package/dist/hooks/auth/use-user.d.ts +213 -0
- package/dist/hooks/auth/use-user.js +13 -0
- package/dist/hooks/use-auth-mutation.d.ts +6 -0
- package/dist/hooks/use-auth-mutation.js +11 -0
- package/dist/hooks/use-auth-query.d.ts +5 -0
- package/dist/hooks/use-auth-query.js +17 -0
- package/dist/index.d.ts +48 -0
- package/dist/index.js +68 -0
- package/dist/lib/auth-client.d.ts +26 -0
- package/dist/lib/auth-config.d.ts +12 -0
- package/dist/lib/auth-config.js +21 -0
- package/dist/lib/auth-plugin.d.ts +16 -0
- package/dist/lib/auth-provider.d.ts +12 -0
- package/dist/lib/auth-provider.js +36 -0
- package/dist/lib/auth-server.d.ts +16 -0
- package/dist/lib/auth-utils.d.ts +3 -0
- package/dist/lib/auth-utils.js +12 -0
- package/dist/lib/fetch-options-provider.d.ts +23 -0
- package/dist/lib/fetch-options-provider.js +29 -0
- package/dist/lib/mutation-invalidator.d.ts +11 -0
- package/dist/lib/mutation-invalidator.js +20 -0
- package/dist/lib/provider-icons.d.ts +8 -0
- package/dist/lib/provider-icons.js +5 -0
- package/dist/mutations/api-key/create-api-key-mutation.d.ts +71 -0
- package/dist/mutations/api-key/create-api-key-mutation.js +12 -0
- package/dist/mutations/api-key/delete-api-key-mutation.d.ts +23 -0
- package/dist/mutations/api-key/delete-api-key-mutation.js +12 -0
- package/dist/mutations/auth/request-password-reset-mutation.d.ts +11 -0
- package/dist/mutations/auth/request-password-reset-mutation.js +8 -0
- package/dist/mutations/auth/reset-password-mutation.d.ts +13 -0
- package/dist/mutations/auth/reset-password-mutation.js +8 -0
- package/dist/mutations/auth/send-verification-email-mutation.d.ts +11 -0
- package/dist/mutations/auth/send-verification-email-mutation.js +8 -0
- package/dist/mutations/auth/sign-in-email-mutation.d.ts +15 -0
- package/dist/mutations/auth/sign-in-email-mutation.js +8 -0
- package/dist/mutations/auth/sign-in-social-mutation.d.ts +53 -0
- package/dist/mutations/auth/sign-in-social-mutation.js +8 -0
- package/dist/mutations/auth/sign-out-mutation.d.ts +6 -0
- package/dist/mutations/auth/sign-out-mutation.js +8 -0
- package/dist/mutations/auth/sign-up-email-mutation.d.ts +17 -0
- package/dist/mutations/auth/sign-up-email-mutation.js +8 -0
- package/dist/mutations/auth-mutation-options.d.ts +10 -0
- package/dist/mutations/auth-mutation-options.js +19 -0
- package/dist/mutations/create-auth-mutation.d.ts +10 -0
- package/dist/mutations/create-auth-mutation.js +20 -0
- package/dist/mutations/magic-link/sign-in-magic-link-mutation.d.ts +19 -0
- package/dist/mutations/magic-link/sign-in-magic-link-mutation.js +8 -0
- package/dist/mutations/multi-session/revoke-multi-session-mutation.d.ts +19 -0
- package/dist/mutations/multi-session/revoke-multi-session-mutation.js +12 -0
- package/dist/mutations/multi-session/set-active-session-mutation.d.ts +19 -0
- package/dist/mutations/multi-session/set-active-session-mutation.js +13 -0
- package/dist/mutations/organization/accept-invitation-mutation.d.ts +18 -0
- package/dist/mutations/organization/accept-invitation-mutation.js +12 -0
- package/dist/mutations/organization/cancel-invitation-mutation.d.ts +18 -0
- package/dist/mutations/organization/cancel-invitation-mutation.js +12 -0
- package/dist/mutations/organization/check-slug-mutation.d.ts +18 -0
- package/dist/mutations/organization/check-slug-mutation.js +15 -0
- package/dist/mutations/organization/create-organization-mutation.d.ts +38 -0
- package/dist/mutations/organization/create-organization-mutation.js +12 -0
- package/dist/mutations/organization/delete-organization-mutation.d.ts +18 -0
- package/dist/mutations/organization/delete-organization-mutation.js +12 -0
- package/dist/mutations/organization/index.d.ts +13 -0
- package/dist/mutations/organization/index.js +13 -0
- package/dist/mutations/organization/invite-member-mutation.d.ts +30 -0
- package/dist/mutations/organization/invite-member-mutation.js +12 -0
- package/dist/mutations/organization/leave-organization-mutation.d.ts +18 -0
- package/dist/mutations/organization/leave-organization-mutation.js +12 -0
- package/dist/mutations/organization/metadata.d.ts +13 -0
- package/dist/mutations/organization/metadata.js +27 -0
- package/dist/mutations/organization/reject-invitation-mutation.d.ts +18 -0
- package/dist/mutations/organization/reject-invitation-mutation.js +12 -0
- package/dist/mutations/organization/remove-member-mutation.d.ts +22 -0
- package/dist/mutations/organization/remove-member-mutation.js +12 -0
- package/dist/mutations/organization/set-active-organization-mutation.d.ts +24 -0
- package/dist/mutations/organization/set-active-organization-mutation.js +35 -0
- package/dist/mutations/organization/update-member-role-mutation.d.ts +26 -0
- package/dist/mutations/organization/update-member-role-mutation.js +12 -0
- package/dist/mutations/organization/update-organization-mutation.d.ts +42 -0
- package/dist/mutations/organization/update-organization-mutation.js +12 -0
- package/dist/mutations/organization/utils.d.ts +8 -0
- package/dist/mutations/organization/utils.js +17 -0
- package/dist/mutations/passkey/add-passkey-mutation.d.ts +73 -0
- package/dist/mutations/passkey/add-passkey-mutation.js +12 -0
- package/dist/mutations/passkey/delete-passkey-mutation.d.ts +19 -0
- package/dist/mutations/passkey/delete-passkey-mutation.js +12 -0
- package/dist/mutations/passkey/sign-in-passkey-mutation.d.ts +50 -0
- package/dist/mutations/passkey/sign-in-passkey-mutation.js +9 -0
- package/dist/mutations/settings/change-email-mutation.d.ts +11 -0
- package/dist/mutations/settings/change-email-mutation.js +8 -0
- package/dist/mutations/settings/change-password-mutation.d.ts +13 -0
- package/dist/mutations/settings/change-password-mutation.js +8 -0
- package/dist/mutations/settings/delete-user-mutation.d.ts +13 -0
- package/dist/mutations/settings/delete-user-mutation.js +8 -0
- package/dist/mutations/settings/link-social-mutation.d.ts +35 -0
- package/dist/mutations/settings/link-social-mutation.js +8 -0
- package/dist/mutations/settings/revoke-session-mutation.d.ts +19 -0
- package/dist/mutations/settings/revoke-session-mutation.js +12 -0
- package/dist/mutations/settings/unlink-account-mutation.d.ts +23 -0
- package/dist/mutations/settings/unlink-account-mutation.js +12 -0
- package/dist/mutations/settings/update-user-mutation.d.ts +6 -0
- package/dist/mutations/settings/update-user-mutation.js +8 -0
- package/dist/mutations/use-session-scoped-mutation.d.ts +17 -0
- package/dist/mutations/use-session-scoped-mutation.js +17 -0
- package/dist/mutations/username/is-username-available-mutation.d.ts +9 -0
- package/dist/mutations/username/is-username-available-mutation.js +8 -0
- package/dist/mutations/username/sign-in-username-mutation.d.ts +15 -0
- package/dist/mutations/username/sign-in-username-mutation.js +9 -0
- package/dist/plugins/captcha-plugin.d.ts +29 -0
- package/dist/plugins/captcha-plugin.js +26 -0
- package/dist/plugins.d.ts +2 -0
- package/dist/plugins.js +2 -0
- package/dist/queries/api-key/list-api-keys-query.d.ts +44 -0
- package/dist/queries/api-key/list-api-keys-query.js +17 -0
- package/dist/queries/auth/session-query.d.ts +22 -0
- package/dist/queries/auth/session-query.js +32 -0
- package/dist/queries/auth-query-options.d.ts +14 -0
- package/dist/queries/auth-query-options.js +17 -0
- package/dist/queries/create-user-scoped-query.d.ts +25 -0
- package/dist/queries/create-user-scoped-query.js +29 -0
- package/dist/queries/multi-session/list-device-sessions-query.d.ts +23 -0
- package/dist/queries/multi-session/list-device-sessions-query.js +17 -0
- package/dist/queries/organization/active-organization-query.d.ts +37 -0
- package/dist/queries/organization/active-organization-query.js +26 -0
- package/dist/queries/organization/full-organization-query.d.ts +35 -0
- package/dist/queries/organization/full-organization-query.js +25 -0
- package/dist/queries/organization/has-permission-query.d.ts +23 -0
- package/dist/queries/organization/has-permission-query.js +31 -0
- package/dist/queries/organization/index.d.ts +7 -0
- package/dist/queries/organization/index.js +7 -0
- package/dist/queries/organization/list-invitations-query.d.ts +29 -0
- package/dist/queries/organization/list-invitations-query.js +29 -0
- package/dist/queries/organization/list-members-query.d.ts +53 -0
- package/dist/queries/organization/list-members-query.js +29 -0
- package/dist/queries/organization/list-organizations-query.d.ts +23 -0
- package/dist/queries/organization/list-organizations-query.js +25 -0
- package/dist/queries/organization/list-user-invitations-query.d.ts +29 -0
- package/dist/queries/organization/list-user-invitations-query.js +25 -0
- package/dist/queries/organization/plugin.d.ts +1 -0
- package/dist/queries/organization/plugin.js +8 -0
- package/dist/queries/organization/utils.d.ts +16 -0
- package/dist/queries/organization/utils.js +18 -0
- package/dist/queries/passkey/list-passkeys-query.d.ts +23 -0
- package/dist/queries/passkey/list-passkeys-query.js +17 -0
- package/dist/queries/settings/account-info-query.d.ts +35 -0
- package/dist/queries/settings/account-info-query.js +17 -0
- package/dist/queries/settings/list-accounts-query.d.ts +23 -0
- package/dist/queries/settings/list-accounts-query.js +17 -0
- package/dist/queries/settings/list-sessions-query.d.ts +24 -0
- package/dist/queries/settings/list-sessions-query.js +17 -0
- package/dist/server/queries/auth/session-query.d.ts +19 -0
- package/dist/server/queries/auth/session-query.js +13 -0
- package/dist/server.d.ts +7 -0
- package/dist/server.js +7 -0
- package/package.json +63 -0
- package/src/components/auth/email/email-changed.tsx +305 -0
- package/src/components/auth/email/email-styles.tsx +139 -0
- package/src/components/auth/email/email-verification.tsx +249 -0
- package/src/components/auth/email/index.ts +9 -0
- package/src/components/auth/email/magic-link.tsx +254 -0
- package/src/components/auth/email/new-device.tsx +347 -0
- package/src/components/auth/email/organization-invitation.tsx +322 -0
- package/src/components/auth/email/otp-email.tsx +239 -0
- package/src/components/auth/email/password-changed.tsx +279 -0
- package/src/components/auth/email/reset-password.tsx +250 -0
- package/src/email.ts +49 -0
- package/src/hooks/auth/use-authenticate.ts +30 -0
- package/src/hooks/auth/use-sign-out.ts +23 -0
- package/src/hooks/auth/use-user.ts +19 -0
- package/src/hooks/use-auth-mutation.ts +35 -0
- package/src/hooks/use-auth-query.ts +33 -0
- package/src/index.ts +48 -0
- package/src/lib/auth-client.ts +43 -0
- package/src/lib/auth-config.ts +46 -0
- package/src/lib/auth-plugin.ts +20 -0
- package/src/lib/auth-provider.tsx +60 -0
- package/src/lib/auth-server.ts +25 -0
- package/src/lib/auth-utils.ts +25 -0
- package/src/lib/fetch-options-provider.tsx +77 -0
- package/src/lib/mutation-invalidator.tsx +82 -0
- package/src/lib/provider-icons.ts +10 -0
- package/src/mutations/api-key/create-api-key-mutation.ts +40 -0
- package/src/mutations/api-key/delete-api-key-mutation.ts +40 -0
- package/src/mutations/auth/request-password-reset-mutation.ts +15 -0
- package/src/mutations/auth/reset-password-mutation.ts +16 -0
- package/src/mutations/auth/send-verification-email-mutation.ts +15 -0
- package/src/mutations/auth/sign-in-email-mutation.ts +17 -0
- package/src/mutations/auth/sign-in-social-mutation.ts +16 -0
- package/src/mutations/auth/sign-out-mutation.ts +13 -0
- package/src/mutations/auth/sign-up-email-mutation.ts +17 -0
- package/src/mutations/auth-mutation-options.ts +62 -0
- package/src/mutations/create-auth-mutation.ts +44 -0
- package/src/mutations/magic-link/sign-in-magic-link-mutation.ts +15 -0
- package/src/mutations/multi-session/revoke-multi-session-mutation.ts +40 -0
- package/src/mutations/multi-session/set-active-session-mutation.ts +43 -0
- package/src/mutations/organization/accept-invitation-mutation.ts +38 -0
- package/src/mutations/organization/cancel-invitation-mutation.ts +38 -0
- package/src/mutations/organization/check-slug-mutation.ts +36 -0
- package/src/mutations/organization/create-organization-mutation.ts +37 -0
- package/src/mutations/organization/delete-organization-mutation.ts +37 -0
- package/src/mutations/organization/index.ts +13 -0
- package/src/mutations/organization/invite-member-mutation.ts +38 -0
- package/src/mutations/organization/leave-organization-mutation.ts +37 -0
- package/src/mutations/organization/metadata.ts +103 -0
- package/src/mutations/organization/reject-invitation-mutation.ts +38 -0
- package/src/mutations/organization/remove-member-mutation.ts +38 -0
- package/src/mutations/organization/set-active-organization-mutation.ts +110 -0
- package/src/mutations/organization/update-member-role-mutation.ts +38 -0
- package/src/mutations/organization/update-organization-mutation.ts +37 -0
- package/src/mutations/organization/utils.ts +51 -0
- package/src/mutations/passkey/add-passkey-mutation.ts +40 -0
- package/src/mutations/passkey/delete-passkey-mutation.ts +40 -0
- package/src/mutations/passkey/sign-in-passkey-mutation.ts +17 -0
- package/src/mutations/settings/change-email-mutation.ts +17 -0
- package/src/mutations/settings/change-password-mutation.ts +16 -0
- package/src/mutations/settings/delete-user-mutation.ts +16 -0
- package/src/mutations/settings/link-social-mutation.ts +16 -0
- package/src/mutations/settings/revoke-session-mutation.ts +38 -0
- package/src/mutations/settings/unlink-account-mutation.ts +38 -0
- package/src/mutations/settings/update-user-mutation.ts +17 -0
- package/src/mutations/use-session-scoped-mutation.ts +64 -0
- package/src/mutations/username/is-username-available-mutation.ts +15 -0
- package/src/mutations/username/sign-in-username-mutation.ts +17 -0
- package/src/plugins/captcha-plugin.tsx +64 -0
- package/src/plugins.ts +2 -0
- package/src/queries/api-key/list-api-keys-query.ts +93 -0
- package/src/queries/auth/session-query.ts +81 -0
- package/src/queries/auth-query-options.ts +57 -0
- package/src/queries/create-user-scoped-query.ts +107 -0
- package/src/queries/multi-session/list-device-sessions-query.ts +107 -0
- package/src/queries/organization/active-organization-query.ts +127 -0
- package/src/queries/organization/full-organization-query.ts +111 -0
- package/src/queries/organization/has-permission-query.ts +121 -0
- package/src/queries/organization/index.ts +7 -0
- package/src/queries/organization/list-invitations-query.ts +124 -0
- package/src/queries/organization/list-members-query.ts +124 -0
- package/src/queries/organization/list-organizations-query.ts +113 -0
- package/src/queries/organization/list-user-invitations-query.ts +114 -0
- package/src/queries/organization/plugin.ts +11 -0
- package/src/queries/organization/utils.ts +88 -0
- package/src/queries/passkey/list-passkeys-query.ts +93 -0
- package/src/queries/settings/account-info-query.ts +94 -0
- package/src/queries/settings/list-accounts-query.ts +94 -0
- package/src/queries/settings/list-sessions-query.ts +96 -0
- package/src/server/queries/auth/session-query.ts +56 -0
- package/src/server.ts +7 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { passkey } from "@better-auth/passkey"
|
|
2
|
+
import type { Auth } from "better-auth"
|
|
3
|
+
import type { magicLink, multiSession, username } from "better-auth/plugins"
|
|
4
|
+
|
|
5
|
+
export type AuthServer = Pick<Auth, "api">
|
|
6
|
+
|
|
7
|
+
export type MagicLinkAuthServer = Pick<
|
|
8
|
+
Auth<{ plugins: [ReturnType<typeof magicLink>] }>,
|
|
9
|
+
"api"
|
|
10
|
+
>
|
|
11
|
+
|
|
12
|
+
export type MultiSessionAuthServer = Pick<
|
|
13
|
+
Auth<{ plugins: [ReturnType<typeof multiSession>] }>,
|
|
14
|
+
"api"
|
|
15
|
+
>
|
|
16
|
+
|
|
17
|
+
export type PasskeyAuthServer = Pick<
|
|
18
|
+
Auth<{ plugins: [ReturnType<typeof passkey>] }>,
|
|
19
|
+
"api"
|
|
20
|
+
>
|
|
21
|
+
|
|
22
|
+
export type UsernameAuthServer = Pick<
|
|
23
|
+
Auth<{ plugins: [ReturnType<typeof username>] }>,
|
|
24
|
+
"api"
|
|
25
|
+
>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { AdditionalField } from "@better-auth-ui/core"
|
|
2
|
+
|
|
3
|
+
export function resolveRedirectTo(fallback: string): string {
|
|
4
|
+
return (
|
|
5
|
+
(typeof window !== "undefined" &&
|
|
6
|
+
new URLSearchParams(window.location.search).get("redirectTo")?.trim()) ||
|
|
7
|
+
fallback
|
|
8
|
+
)
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export function mergeAdditionalFields(
|
|
12
|
+
pluginFields: readonly AdditionalField[] = [],
|
|
13
|
+
userFields: readonly AdditionalField[] = []
|
|
14
|
+
): AdditionalField[] {
|
|
15
|
+
const fieldsByName = new Map<string, AdditionalField>()
|
|
16
|
+
|
|
17
|
+
for (const field of pluginFields) {
|
|
18
|
+
fieldsByName.set(field.name, field)
|
|
19
|
+
}
|
|
20
|
+
for (const field of userFields) {
|
|
21
|
+
fieldsByName.set(field.name, field)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return Array.from(fieldsByName.values())
|
|
25
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type Accessor,
|
|
3
|
+
createContext,
|
|
4
|
+
createSignal,
|
|
5
|
+
type JSX,
|
|
6
|
+
useContext
|
|
7
|
+
} from "solid-js"
|
|
8
|
+
|
|
9
|
+
/** Subset of Better Auth fetch options used by auth flows. Add fields as use-cases arise. */
|
|
10
|
+
export type FetchOptions = {
|
|
11
|
+
headers?: Record<string, string>
|
|
12
|
+
body?: Record<string, unknown>
|
|
13
|
+
credentials?: RequestCredentials
|
|
14
|
+
signal?: AbortSignal
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export type FetchOptionsContextValue = {
|
|
18
|
+
/** Current fetchOptions, or `undefined` when none are set. */
|
|
19
|
+
fetchOptions: Accessor<FetchOptions | undefined>
|
|
20
|
+
/** Overrides the entire fetchOptions object. Pass `undefined` to clear. */
|
|
21
|
+
setFetchOptions: (fetchOptions: FetchOptions | undefined) => void
|
|
22
|
+
/** Clears fetchOptions and runs the registered reset callback. */
|
|
23
|
+
resetFetchOptions: () => void
|
|
24
|
+
/** Register a reset handler. Used by `captchaPlugin`. Pass `null` to clear. */
|
|
25
|
+
registerReset: (reset: (() => void) | null) => void
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const FetchOptionsContext = createContext<FetchOptionsContextValue>()
|
|
29
|
+
|
|
30
|
+
export type FetchOptionsProviderProps = {
|
|
31
|
+
children?: JSX.Element | (() => JSX.Element)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const resolveProviderChildren = (
|
|
35
|
+
children: FetchOptionsProviderProps["children"]
|
|
36
|
+
) => (typeof children === "function" ? children() : children)
|
|
37
|
+
|
|
38
|
+
export function FetchOptionsProvider(props: FetchOptionsProviderProps) {
|
|
39
|
+
const [fetchOptions, setFetchOptions] = createSignal<
|
|
40
|
+
FetchOptions | undefined
|
|
41
|
+
>()
|
|
42
|
+
let reset: (() => void) | null = null
|
|
43
|
+
|
|
44
|
+
const registerReset = (nextReset: (() => void) | null) => {
|
|
45
|
+
reset = nextReset
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const resetFetchOptions = () => {
|
|
49
|
+
setFetchOptions(undefined)
|
|
50
|
+
reset?.()
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return (
|
|
54
|
+
<FetchOptionsContext.Provider
|
|
55
|
+
value={{
|
|
56
|
+
fetchOptions,
|
|
57
|
+
setFetchOptions,
|
|
58
|
+
resetFetchOptions,
|
|
59
|
+
registerReset
|
|
60
|
+
}}
|
|
61
|
+
>
|
|
62
|
+
{resolveProviderChildren(props.children)}
|
|
63
|
+
</FetchOptionsContext.Provider>
|
|
64
|
+
)
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export function useFetchOptions(): FetchOptionsContextValue {
|
|
68
|
+
const context = useContext(FetchOptionsContext)
|
|
69
|
+
|
|
70
|
+
if (!context) {
|
|
71
|
+
throw new Error(
|
|
72
|
+
"[Better Auth UI] useFetchOptions must be used within FetchOptionsProvider"
|
|
73
|
+
)
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return context
|
|
77
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { authMutationKeys } from "@better-auth-ui/core"
|
|
2
|
+
import type { QueryClient, QueryKey } from "@tanstack/solid-query"
|
|
3
|
+
import { onCleanup } from "solid-js"
|
|
4
|
+
import type { AuthMutationMeta } from "../mutations/create-auth-mutation"
|
|
5
|
+
|
|
6
|
+
const keyStartsWith = (
|
|
7
|
+
queryKey: readonly unknown[],
|
|
8
|
+
prefix: readonly unknown[]
|
|
9
|
+
) => prefix.every((part, index) => Object.is(queryKey[index], part))
|
|
10
|
+
|
|
11
|
+
const matchesAnyPrefix = (
|
|
12
|
+
queryKey: readonly unknown[] | undefined,
|
|
13
|
+
prefixes: Array<QueryKey> | undefined
|
|
14
|
+
) =>
|
|
15
|
+
Boolean(
|
|
16
|
+
queryKey &&
|
|
17
|
+
prefixes?.some((prefix) =>
|
|
18
|
+
keyStartsWith(queryKey, prefix as readonly unknown[])
|
|
19
|
+
)
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
export async function invalidateAuthMutationMeta(
|
|
23
|
+
queryClient: QueryClient,
|
|
24
|
+
mutation: {
|
|
25
|
+
options?: { mutationKey?: QueryKey; meta?: unknown }
|
|
26
|
+
meta?: unknown
|
|
27
|
+
}
|
|
28
|
+
) {
|
|
29
|
+
const mutationKey = mutation.options?.mutationKey
|
|
30
|
+
|
|
31
|
+
if (!keyStartsWith(mutationKey ?? [], authMutationKeys.all)) {
|
|
32
|
+
return
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const meta = (mutation.options?.meta ??
|
|
36
|
+
mutation.meta ??
|
|
37
|
+
{}) as AuthMutationMeta
|
|
38
|
+
const { invalidates, awaits } = meta
|
|
39
|
+
|
|
40
|
+
if (invalidates?.length) {
|
|
41
|
+
queryClient.invalidateQueries({
|
|
42
|
+
predicate: (query) => matchesAnyPrefix(query.queryKey, invalidates)
|
|
43
|
+
})
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (awaits?.length) {
|
|
47
|
+
await queryClient.invalidateQueries(
|
|
48
|
+
{
|
|
49
|
+
predicate: (query) => matchesAnyPrefix(query.queryKey, awaits)
|
|
50
|
+
},
|
|
51
|
+
{ cancelRefetch: false }
|
|
52
|
+
)
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export function MutationInvalidator(props: { queryClient: QueryClient }) {
|
|
57
|
+
const mutationCache = props.queryClient.getMutationCache()
|
|
58
|
+
const previousOnSuccess = mutationCache.config.onSuccess
|
|
59
|
+
|
|
60
|
+
mutationCache.config.onSuccess = async (
|
|
61
|
+
data,
|
|
62
|
+
variables,
|
|
63
|
+
onMutateResult,
|
|
64
|
+
mutation,
|
|
65
|
+
context
|
|
66
|
+
) => {
|
|
67
|
+
await previousOnSuccess?.(
|
|
68
|
+
data,
|
|
69
|
+
variables,
|
|
70
|
+
onMutateResult,
|
|
71
|
+
mutation,
|
|
72
|
+
context
|
|
73
|
+
)
|
|
74
|
+
await invalidateAuthMutationMeta(props.queryClient, mutation)
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
onCleanup(() => {
|
|
78
|
+
mutationCache.config.onSuccess = previousOnSuccess
|
|
79
|
+
})
|
|
80
|
+
|
|
81
|
+
return null
|
|
82
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { providerNames } from "@better-auth-ui/core"
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Stable list of provider icon keys supported by core.
|
|
5
|
+
*
|
|
6
|
+
* Solid component icons are intentionally deferred to the Zaidan registry slice;
|
|
7
|
+
* this helper lets consumers and registry tooling align on the same provider
|
|
8
|
+
* namespace without shipping React icon components from this package.
|
|
9
|
+
*/
|
|
10
|
+
export const providerIconNames = Object.keys(providerNames).sort()
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import {
|
|
2
|
+
apiKeyMutationKeys,
|
|
3
|
+
apiKeyQueryKeys
|
|
4
|
+
} from "@better-auth-ui/core/plugins"
|
|
5
|
+
import type { ApiKeyAuthClient } from "../../lib/auth-client"
|
|
6
|
+
import { createAuthMutationOptions } from "../create-auth-mutation"
|
|
7
|
+
import { useSessionScopedMutation } from "../use-session-scoped-mutation"
|
|
8
|
+
|
|
9
|
+
export type CreateApiKeyParams<TAuthClient extends ApiKeyAuthClient> =
|
|
10
|
+
Parameters<TAuthClient["apiKey"]["create"]>[0]
|
|
11
|
+
|
|
12
|
+
export type CreateApiKeyOptions = Parameters<
|
|
13
|
+
typeof useSessionScopedMutation<
|
|
14
|
+
ApiKeyAuthClient,
|
|
15
|
+
ApiKeyAuthClient["apiKey"]["create"],
|
|
16
|
+
typeof apiKeyMutationKeys.create
|
|
17
|
+
>
|
|
18
|
+
>[4]
|
|
19
|
+
|
|
20
|
+
export function createApiKeyOptions<TAuthClient extends ApiKeyAuthClient>(
|
|
21
|
+
authClient: TAuthClient
|
|
22
|
+
) {
|
|
23
|
+
return createAuthMutationOptions(
|
|
24
|
+
authClient.apiKey.create,
|
|
25
|
+
apiKeyMutationKeys.create
|
|
26
|
+
)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function useCreateApiKey<TAuthClient extends ApiKeyAuthClient>(
|
|
30
|
+
authClient: TAuthClient,
|
|
31
|
+
options?: CreateApiKeyOptions
|
|
32
|
+
) {
|
|
33
|
+
return useSessionScopedMutation(
|
|
34
|
+
authClient,
|
|
35
|
+
authClient.apiKey.create,
|
|
36
|
+
apiKeyMutationKeys.create,
|
|
37
|
+
(userId) => ({ awaits: [apiKeyQueryKeys.lists(userId)] }),
|
|
38
|
+
options
|
|
39
|
+
)
|
|
40
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import {
|
|
2
|
+
apiKeyMutationKeys,
|
|
3
|
+
apiKeyQueryKeys
|
|
4
|
+
} from "@better-auth-ui/core/plugins"
|
|
5
|
+
import type { ApiKeyAuthClient } from "../../lib/auth-client"
|
|
6
|
+
import { createAuthMutationOptions } from "../create-auth-mutation"
|
|
7
|
+
import { useSessionScopedMutation } from "../use-session-scoped-mutation"
|
|
8
|
+
|
|
9
|
+
export type DeleteApiKeyParams<TAuthClient extends ApiKeyAuthClient> =
|
|
10
|
+
Parameters<TAuthClient["apiKey"]["delete"]>[0]
|
|
11
|
+
|
|
12
|
+
export type DeleteApiKeyOptions = Parameters<
|
|
13
|
+
typeof useSessionScopedMutation<
|
|
14
|
+
ApiKeyAuthClient,
|
|
15
|
+
ApiKeyAuthClient["apiKey"]["delete"],
|
|
16
|
+
typeof apiKeyMutationKeys.delete
|
|
17
|
+
>
|
|
18
|
+
>[4]
|
|
19
|
+
|
|
20
|
+
export function deleteApiKeyOptions<TAuthClient extends ApiKeyAuthClient>(
|
|
21
|
+
authClient: TAuthClient
|
|
22
|
+
) {
|
|
23
|
+
return createAuthMutationOptions(
|
|
24
|
+
authClient.apiKey.delete,
|
|
25
|
+
apiKeyMutationKeys.delete
|
|
26
|
+
)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function useDeleteApiKey<TAuthClient extends ApiKeyAuthClient>(
|
|
30
|
+
authClient: TAuthClient,
|
|
31
|
+
options?: DeleteApiKeyOptions
|
|
32
|
+
) {
|
|
33
|
+
return useSessionScopedMutation(
|
|
34
|
+
authClient,
|
|
35
|
+
authClient.apiKey.delete,
|
|
36
|
+
apiKeyMutationKeys.delete,
|
|
37
|
+
(userId) => ({ awaits: [apiKeyQueryKeys.lists(userId)] }),
|
|
38
|
+
options
|
|
39
|
+
)
|
|
40
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { authMutationKeys } from "@better-auth-ui/core"
|
|
2
|
+
import type { AuthClient } from "../../lib/auth-client"
|
|
3
|
+
import { createAuthMutationOptions } from "../create-auth-mutation"
|
|
4
|
+
|
|
5
|
+
export type RequestPasswordResetParams<TAuthClient extends AuthClient> =
|
|
6
|
+
Parameters<TAuthClient["requestPasswordReset"]>[0]
|
|
7
|
+
|
|
8
|
+
export function requestPasswordResetOptions<TAuthClient extends AuthClient>(
|
|
9
|
+
authClient: TAuthClient
|
|
10
|
+
) {
|
|
11
|
+
return createAuthMutationOptions(
|
|
12
|
+
authClient.requestPasswordReset,
|
|
13
|
+
authMutationKeys.requestPasswordReset
|
|
14
|
+
)
|
|
15
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { authMutationKeys } from "@better-auth-ui/core"
|
|
2
|
+
import type { AuthClient } from "../../lib/auth-client"
|
|
3
|
+
import { createAuthMutationOptions } from "../create-auth-mutation"
|
|
4
|
+
|
|
5
|
+
export type ResetPasswordParams<TAuthClient extends AuthClient> = Parameters<
|
|
6
|
+
TAuthClient["resetPassword"]
|
|
7
|
+
>[0]
|
|
8
|
+
|
|
9
|
+
export function resetPasswordOptions<TAuthClient extends AuthClient>(
|
|
10
|
+
authClient: TAuthClient
|
|
11
|
+
) {
|
|
12
|
+
return createAuthMutationOptions(
|
|
13
|
+
authClient.resetPassword,
|
|
14
|
+
authMutationKeys.resetPassword
|
|
15
|
+
)
|
|
16
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { authMutationKeys } from "@better-auth-ui/core"
|
|
2
|
+
import type { AuthClient } from "../../lib/auth-client"
|
|
3
|
+
import { createAuthMutationOptions } from "../create-auth-mutation"
|
|
4
|
+
|
|
5
|
+
export type SendVerificationEmailParams<TAuthClient extends AuthClient> =
|
|
6
|
+
Parameters<TAuthClient["sendVerificationEmail"]>[0]
|
|
7
|
+
|
|
8
|
+
export function sendVerificationEmailOptions<TAuthClient extends AuthClient>(
|
|
9
|
+
authClient: TAuthClient
|
|
10
|
+
) {
|
|
11
|
+
return createAuthMutationOptions(
|
|
12
|
+
authClient.sendVerificationEmail,
|
|
13
|
+
authMutationKeys.sendVerificationEmail
|
|
14
|
+
)
|
|
15
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { authMutationKeys, authQueryKeys } from "@better-auth-ui/core"
|
|
2
|
+
import type { AuthClient } from "../../lib/auth-client"
|
|
3
|
+
import { createAuthMutationOptions } from "../create-auth-mutation"
|
|
4
|
+
|
|
5
|
+
export type SignInEmailParams<TAuthClient extends AuthClient> = Parameters<
|
|
6
|
+
TAuthClient["signIn"]["email"]
|
|
7
|
+
>[0]
|
|
8
|
+
|
|
9
|
+
export function signInEmailOptions<TAuthClient extends AuthClient>(
|
|
10
|
+
authClient: TAuthClient
|
|
11
|
+
) {
|
|
12
|
+
return createAuthMutationOptions(
|
|
13
|
+
authClient.signIn.email,
|
|
14
|
+
authMutationKeys.signIn.email,
|
|
15
|
+
{ awaits: [authQueryKeys.session] }
|
|
16
|
+
)
|
|
17
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { authMutationKeys } from "@better-auth-ui/core"
|
|
2
|
+
import type { AuthClient } from "../../lib/auth-client"
|
|
3
|
+
import { createAuthMutationOptions } from "../create-auth-mutation"
|
|
4
|
+
|
|
5
|
+
export type SignInSocialParams<TAuthClient extends AuthClient> = Parameters<
|
|
6
|
+
TAuthClient["signIn"]["social"]
|
|
7
|
+
>[0]
|
|
8
|
+
|
|
9
|
+
export function signInSocialOptions<TAuthClient extends AuthClient>(
|
|
10
|
+
authClient: TAuthClient
|
|
11
|
+
) {
|
|
12
|
+
return createAuthMutationOptions(
|
|
13
|
+
authClient.signIn.social,
|
|
14
|
+
authMutationKeys.signIn.social
|
|
15
|
+
)
|
|
16
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { authMutationKeys } from "@better-auth-ui/core"
|
|
2
|
+
import type { AuthClient } from "../../lib/auth-client"
|
|
3
|
+
import { createAuthMutationOptions } from "../create-auth-mutation"
|
|
4
|
+
|
|
5
|
+
export type SignOutParams<TAuthClient extends AuthClient> = Parameters<
|
|
6
|
+
TAuthClient["signOut"]
|
|
7
|
+
>[0]
|
|
8
|
+
|
|
9
|
+
export function signOutOptions<TAuthClient extends AuthClient>(
|
|
10
|
+
authClient: TAuthClient
|
|
11
|
+
) {
|
|
12
|
+
return createAuthMutationOptions(authClient.signOut, authMutationKeys.signOut)
|
|
13
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { authMutationKeys, authQueryKeys } from "@better-auth-ui/core"
|
|
2
|
+
import type { AuthClient } from "../../lib/auth-client"
|
|
3
|
+
import { createAuthMutationOptions } from "../create-auth-mutation"
|
|
4
|
+
|
|
5
|
+
export type SignUpEmailParams<TAuthClient extends AuthClient> = Parameters<
|
|
6
|
+
TAuthClient["signUp"]["email"]
|
|
7
|
+
>[0]
|
|
8
|
+
|
|
9
|
+
export function signUpEmailOptions<TAuthClient extends AuthClient>(
|
|
10
|
+
authClient: TAuthClient
|
|
11
|
+
) {
|
|
12
|
+
return createAuthMutationOptions(
|
|
13
|
+
authClient.signUp.email,
|
|
14
|
+
authMutationKeys.signUp.email,
|
|
15
|
+
{ awaits: [authQueryKeys.session] }
|
|
16
|
+
)
|
|
17
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type CreateMutationOptions,
|
|
3
|
+
type MutationKey,
|
|
4
|
+
mutationOptions
|
|
5
|
+
} from "@tanstack/solid-query"
|
|
6
|
+
import type { BetterFetchError, BetterFetchOption } from "better-auth/client"
|
|
7
|
+
|
|
8
|
+
export type AuthMutationFn = (
|
|
9
|
+
// biome-ignore lint/suspicious/noExplicitAny: variance bridge for arbitrary Better Auth client methods
|
|
10
|
+
variables: any
|
|
11
|
+
) => Promise<unknown>
|
|
12
|
+
|
|
13
|
+
export type AuthMutationFnData<TFn extends AuthMutationFn> = Awaited<
|
|
14
|
+
ReturnType<TFn>
|
|
15
|
+
>
|
|
16
|
+
|
|
17
|
+
export type AuthMutationFnVariables<TFn extends AuthMutationFn> =
|
|
18
|
+
Parameters<TFn>[0] extends infer P
|
|
19
|
+
? undefined extends P
|
|
20
|
+
? // biome-ignore lint/suspicious/noConfusingVoidType: void allows no-arg mutate
|
|
21
|
+
NonNullable<P> | void
|
|
22
|
+
: P
|
|
23
|
+
: never
|
|
24
|
+
|
|
25
|
+
export type AuthMutationOptions<
|
|
26
|
+
TFn extends AuthMutationFn,
|
|
27
|
+
TMutationKey extends MutationKey = MutationKey
|
|
28
|
+
> = Omit<
|
|
29
|
+
CreateMutationOptions<
|
|
30
|
+
AuthMutationFnData<TFn>,
|
|
31
|
+
BetterFetchError,
|
|
32
|
+
AuthMutationFnVariables<TFn>
|
|
33
|
+
>,
|
|
34
|
+
"mutationKey"
|
|
35
|
+
> & {
|
|
36
|
+
mutationKey: TMutationKey
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export function authMutationOptions<
|
|
40
|
+
TFn extends AuthMutationFn,
|
|
41
|
+
const TMutationKey extends MutationKey
|
|
42
|
+
>(
|
|
43
|
+
authFn: TFn,
|
|
44
|
+
mutationKey: TMutationKey
|
|
45
|
+
): AuthMutationOptions<TFn, TMutationKey> {
|
|
46
|
+
const mutationFn = (variables: AuthMutationFnVariables<TFn>) => {
|
|
47
|
+
const vars = (variables ?? {}) as { fetchOptions?: BetterFetchOption }
|
|
48
|
+
return authFn({
|
|
49
|
+
...vars,
|
|
50
|
+
fetchOptions: { ...vars.fetchOptions, throw: true }
|
|
51
|
+
}) as Promise<AuthMutationFnData<TFn>>
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return mutationOptions<
|
|
55
|
+
AuthMutationFnData<TFn>,
|
|
56
|
+
BetterFetchError,
|
|
57
|
+
AuthMutationFnVariables<TFn>
|
|
58
|
+
>({
|
|
59
|
+
mutationKey,
|
|
60
|
+
mutationFn
|
|
61
|
+
}) as AuthMutationOptions<TFn, TMutationKey>
|
|
62
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type MutationKey,
|
|
3
|
+
mutationOptions,
|
|
4
|
+
type QueryKey
|
|
5
|
+
} from "@tanstack/solid-query"
|
|
6
|
+
import type { BetterFetchError, BetterFetchOption } from "better-auth/client"
|
|
7
|
+
|
|
8
|
+
// biome-ignore lint/suspicious/noExplicitAny: Better Auth client methods have intentionally variable generated params.
|
|
9
|
+
export type MutationMethod<TData = unknown> = (params?: any) => Promise<TData>
|
|
10
|
+
|
|
11
|
+
export type MutationParams<TMethod extends MutationMethod> =
|
|
12
|
+
Parameters<TMethod>[0]
|
|
13
|
+
export type MutationData<TMethod extends MutationMethod> = Awaited<
|
|
14
|
+
ReturnType<TMethod>
|
|
15
|
+
>
|
|
16
|
+
|
|
17
|
+
export type AuthMutationMeta = {
|
|
18
|
+
invalidates?: Array<QueryKey>
|
|
19
|
+
awaits?: Array<QueryKey>
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function createAuthMutationOptions<
|
|
23
|
+
TMethod extends MutationMethod,
|
|
24
|
+
const TMutationKey extends MutationKey
|
|
25
|
+
>(authFn: TMethod, mutationKey: TMutationKey, meta?: AuthMutationMeta) {
|
|
26
|
+
const mutationFn = (params: MutationParams<TMethod>) => {
|
|
27
|
+
const input = (params ?? {}) as { fetchOptions?: BetterFetchOption }
|
|
28
|
+
|
|
29
|
+
return authFn({
|
|
30
|
+
...input,
|
|
31
|
+
fetchOptions: { ...input.fetchOptions, throw: true }
|
|
32
|
+
} as MutationParams<TMethod>) as Promise<MutationData<TMethod>>
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return mutationOptions<
|
|
36
|
+
MutationData<TMethod>,
|
|
37
|
+
BetterFetchError,
|
|
38
|
+
MutationParams<TMethod>
|
|
39
|
+
>({
|
|
40
|
+
mutationKey,
|
|
41
|
+
mutationFn,
|
|
42
|
+
...(meta ? { meta } : {})
|
|
43
|
+
})
|
|
44
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { magicLinkMutationKeys } from "@better-auth-ui/core/plugins"
|
|
2
|
+
import type { MagicLinkAuthClient } from "../../lib/auth-client"
|
|
3
|
+
import { createAuthMutationOptions } from "../create-auth-mutation"
|
|
4
|
+
|
|
5
|
+
export type SignInMagicLinkParams<TAuthClient extends MagicLinkAuthClient> =
|
|
6
|
+
Parameters<TAuthClient["signIn"]["magicLink"]>[0]
|
|
7
|
+
|
|
8
|
+
export function signInMagicLinkOptions<TAuthClient extends MagicLinkAuthClient>(
|
|
9
|
+
authClient: TAuthClient
|
|
10
|
+
) {
|
|
11
|
+
return createAuthMutationOptions(
|
|
12
|
+
authClient.signIn.magicLink,
|
|
13
|
+
magicLinkMutationKeys.signIn
|
|
14
|
+
)
|
|
15
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import {
|
|
2
|
+
multiSessionMutationKeys,
|
|
3
|
+
multiSessionQueryKeys
|
|
4
|
+
} from "@better-auth-ui/core/plugins"
|
|
5
|
+
import type { MultiSessionAuthClient } from "../../lib/auth-client"
|
|
6
|
+
import { createAuthMutationOptions } from "../create-auth-mutation"
|
|
7
|
+
import { useSessionScopedMutation } from "../use-session-scoped-mutation"
|
|
8
|
+
|
|
9
|
+
export type RevokeMultiSessionParams<
|
|
10
|
+
TAuthClient extends MultiSessionAuthClient
|
|
11
|
+
> = Parameters<TAuthClient["multiSession"]["revoke"]>[0]
|
|
12
|
+
|
|
13
|
+
export type RevokeMultiSessionOptions = Parameters<
|
|
14
|
+
typeof useSessionScopedMutation<
|
|
15
|
+
MultiSessionAuthClient,
|
|
16
|
+
MultiSessionAuthClient["multiSession"]["revoke"],
|
|
17
|
+
typeof multiSessionMutationKeys.revoke
|
|
18
|
+
>
|
|
19
|
+
>[4]
|
|
20
|
+
|
|
21
|
+
export function revokeMultiSessionOptions<
|
|
22
|
+
TAuthClient extends MultiSessionAuthClient
|
|
23
|
+
>(authClient: TAuthClient) {
|
|
24
|
+
return createAuthMutationOptions(
|
|
25
|
+
authClient.multiSession.revoke,
|
|
26
|
+
multiSessionMutationKeys.revoke
|
|
27
|
+
)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function useRevokeMultiSession<
|
|
31
|
+
TAuthClient extends MultiSessionAuthClient
|
|
32
|
+
>(authClient: TAuthClient, options?: RevokeMultiSessionOptions) {
|
|
33
|
+
return useSessionScopedMutation(
|
|
34
|
+
authClient,
|
|
35
|
+
authClient.multiSession.revoke,
|
|
36
|
+
multiSessionMutationKeys.revoke,
|
|
37
|
+
(userId) => ({ awaits: [multiSessionQueryKeys.lists(userId)] }),
|
|
38
|
+
options
|
|
39
|
+
)
|
|
40
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { authQueryKeys } from "@better-auth-ui/core"
|
|
2
|
+
import {
|
|
3
|
+
multiSessionMutationKeys,
|
|
4
|
+
multiSessionQueryKeys
|
|
5
|
+
} from "@better-auth-ui/core/plugins"
|
|
6
|
+
import type { MultiSessionAuthClient } from "../../lib/auth-client"
|
|
7
|
+
import { createAuthMutationOptions } from "../create-auth-mutation"
|
|
8
|
+
import { useSessionScopedMutation } from "../use-session-scoped-mutation"
|
|
9
|
+
|
|
10
|
+
export type SetActiveSessionParams<TAuthClient extends MultiSessionAuthClient> =
|
|
11
|
+
Parameters<TAuthClient["multiSession"]["setActive"]>[0]
|
|
12
|
+
|
|
13
|
+
export type SetActiveSessionOptions = Parameters<
|
|
14
|
+
typeof useSessionScopedMutation<
|
|
15
|
+
MultiSessionAuthClient,
|
|
16
|
+
MultiSessionAuthClient["multiSession"]["setActive"],
|
|
17
|
+
typeof multiSessionMutationKeys.setActive
|
|
18
|
+
>
|
|
19
|
+
>[4]
|
|
20
|
+
|
|
21
|
+
export function setActiveSessionOptions<
|
|
22
|
+
TAuthClient extends MultiSessionAuthClient
|
|
23
|
+
>(authClient: TAuthClient) {
|
|
24
|
+
return createAuthMutationOptions(
|
|
25
|
+
authClient.multiSession.setActive,
|
|
26
|
+
multiSessionMutationKeys.setActive
|
|
27
|
+
)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function useSetActiveSession<TAuthClient extends MultiSessionAuthClient>(
|
|
31
|
+
authClient: TAuthClient,
|
|
32
|
+
options?: SetActiveSessionOptions
|
|
33
|
+
) {
|
|
34
|
+
return useSessionScopedMutation(
|
|
35
|
+
authClient,
|
|
36
|
+
authClient.multiSession.setActive,
|
|
37
|
+
multiSessionMutationKeys.setActive,
|
|
38
|
+
(userId) => ({
|
|
39
|
+
awaits: [authQueryKeys.session, multiSessionQueryKeys.lists(userId)]
|
|
40
|
+
}),
|
|
41
|
+
options
|
|
42
|
+
)
|
|
43
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { organizationMutationKeys } from "@better-auth-ui/core/plugins"
|
|
2
|
+
import type { OrganizationAuthClient } from "../../lib/auth-client"
|
|
3
|
+
import { acceptInvitationMeta } from "./metadata"
|
|
4
|
+
import {
|
|
5
|
+
createOrganizationMutationOptions,
|
|
6
|
+
type OrganizationMutationOptions,
|
|
7
|
+
useOrganizationMutation
|
|
8
|
+
} from "./utils"
|
|
9
|
+
|
|
10
|
+
export type AcceptInvitationParams<
|
|
11
|
+
TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
|
|
12
|
+
> = Parameters<TAuthClient["organization"]["acceptInvitation"]>[0]
|
|
13
|
+
|
|
14
|
+
export type AcceptInvitationOptions<
|
|
15
|
+
TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
|
|
16
|
+
> = OrganizationMutationOptions<TAuthClient["organization"]["acceptInvitation"]>
|
|
17
|
+
|
|
18
|
+
export function acceptInvitationOptions<
|
|
19
|
+
TAuthClient extends OrganizationAuthClient
|
|
20
|
+
>(authClient: TAuthClient) {
|
|
21
|
+
return createOrganizationMutationOptions(
|
|
22
|
+
authClient.organization.acceptInvitation,
|
|
23
|
+
organizationMutationKeys.acceptInvitation
|
|
24
|
+
)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function useAcceptInvitation<TAuthClient extends OrganizationAuthClient>(
|
|
28
|
+
authClient: TAuthClient,
|
|
29
|
+
options?: AcceptInvitationOptions<TAuthClient>
|
|
30
|
+
) {
|
|
31
|
+
return useOrganizationMutation(
|
|
32
|
+
authClient,
|
|
33
|
+
authClient.organization.acceptInvitation,
|
|
34
|
+
organizationMutationKeys.acceptInvitation,
|
|
35
|
+
acceptInvitationMeta,
|
|
36
|
+
options
|
|
37
|
+
)
|
|
38
|
+
}
|