@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,107 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createQuery,
|
|
3
|
+
type DataTag,
|
|
4
|
+
type QueryClient,
|
|
5
|
+
type QueryKey,
|
|
6
|
+
queryOptions,
|
|
7
|
+
skipToken
|
|
8
|
+
} from "@tanstack/solid-query"
|
|
9
|
+
import type { BetterFetchError } from "better-auth/client"
|
|
10
|
+
|
|
11
|
+
// biome-ignore lint/suspicious/noExplicitAny: Better Auth client methods have intentionally variable generated params.
|
|
12
|
+
export type QueryMethod<TData = unknown> = (params?: any) => Promise<TData>
|
|
13
|
+
|
|
14
|
+
export type QueryParams<TMethod extends QueryMethod> = Parameters<TMethod>[0]
|
|
15
|
+
export type QueryData<TMethod extends QueryMethod> = Awaited<
|
|
16
|
+
ReturnType<TMethod>
|
|
17
|
+
>
|
|
18
|
+
|
|
19
|
+
export function createUserScopedOptions<
|
|
20
|
+
TMethod extends QueryMethod,
|
|
21
|
+
const TQueryKey extends QueryKey
|
|
22
|
+
>(queryKey: TQueryKey, authFn: TMethod, params?: QueryParams<TMethod>) {
|
|
23
|
+
type TData = QueryData<TMethod>
|
|
24
|
+
|
|
25
|
+
const options = queryOptions<TData, BetterFetchError, TData, TQueryKey>({
|
|
26
|
+
queryKey,
|
|
27
|
+
queryFn: ({ signal }) =>
|
|
28
|
+
authFn({
|
|
29
|
+
...(params ?? {}),
|
|
30
|
+
fetchOptions: {
|
|
31
|
+
...(params as { fetchOptions?: Record<string, unknown> } | undefined)
|
|
32
|
+
?.fetchOptions,
|
|
33
|
+
signal,
|
|
34
|
+
throw: true
|
|
35
|
+
}
|
|
36
|
+
} as QueryParams<TMethod>) as Promise<TData>
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
return options as typeof options & {
|
|
40
|
+
queryKey: DataTag<TQueryKey, TData, BetterFetchError>
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export const ensureUserScopedQuery = <
|
|
45
|
+
TMethod extends QueryMethod,
|
|
46
|
+
const TQueryKey extends QueryKey
|
|
47
|
+
>(
|
|
48
|
+
queryClient: QueryClient,
|
|
49
|
+
queryKey: TQueryKey,
|
|
50
|
+
authFn: TMethod,
|
|
51
|
+
params?: QueryParams<TMethod>
|
|
52
|
+
) =>
|
|
53
|
+
queryClient.ensureQueryData(
|
|
54
|
+
createUserScopedOptions(queryKey, authFn, params) as never
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
export const prefetchUserScopedQuery = <
|
|
58
|
+
TMethod extends QueryMethod,
|
|
59
|
+
const TQueryKey extends QueryKey
|
|
60
|
+
>(
|
|
61
|
+
queryClient: QueryClient,
|
|
62
|
+
queryKey: TQueryKey,
|
|
63
|
+
authFn: TMethod,
|
|
64
|
+
params?: QueryParams<TMethod>
|
|
65
|
+
) =>
|
|
66
|
+
queryClient.prefetchQuery(
|
|
67
|
+
createUserScopedOptions(queryKey, authFn, params) as never
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
export const fetchUserScopedQuery = <
|
|
71
|
+
TMethod extends QueryMethod,
|
|
72
|
+
const TQueryKey extends QueryKey
|
|
73
|
+
>(
|
|
74
|
+
queryClient: QueryClient,
|
|
75
|
+
queryKey: TQueryKey,
|
|
76
|
+
authFn: TMethod,
|
|
77
|
+
params?: QueryParams<TMethod>
|
|
78
|
+
) =>
|
|
79
|
+
queryClient.fetchQuery(
|
|
80
|
+
createUserScopedOptions(queryKey, authFn, params) as never
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
export function createUserScopedQuery<
|
|
84
|
+
TMethod extends QueryMethod,
|
|
85
|
+
const TQueryKey extends QueryKey
|
|
86
|
+
>(
|
|
87
|
+
queryKey: () => TQueryKey,
|
|
88
|
+
authFn: TMethod,
|
|
89
|
+
params: () => QueryParams<TMethod> | undefined,
|
|
90
|
+
canFetch: () => boolean,
|
|
91
|
+
queryOptionsRest: () => Record<string, unknown>
|
|
92
|
+
) {
|
|
93
|
+
return createQuery(() => {
|
|
94
|
+
const baseOptions = createUserScopedOptions(queryKey(), authFn, params())
|
|
95
|
+
|
|
96
|
+
return {
|
|
97
|
+
...queryOptionsRest(),
|
|
98
|
+
...baseOptions,
|
|
99
|
+
queryFn: canFetch() ? baseOptions.queryFn : skipToken
|
|
100
|
+
}
|
|
101
|
+
})
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export const getSessionUserId = (session: { data?: SessionLike }) =>
|
|
105
|
+
session.data?.user?.id
|
|
106
|
+
|
|
107
|
+
type SessionLike = { user?: { id?: string } } | null | undefined
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { multiSessionQueryKeys } from "@better-auth-ui/core/plugins"
|
|
2
|
+
import type { QueryClient } from "@tanstack/solid-query"
|
|
3
|
+
import type { InferData, MultiSessionAuthClient } from "../../lib/auth-client"
|
|
4
|
+
import { useSession } from "../auth/session-query"
|
|
5
|
+
import {
|
|
6
|
+
createUserScopedOptions,
|
|
7
|
+
createUserScopedQuery,
|
|
8
|
+
ensureUserScopedQuery,
|
|
9
|
+
fetchUserScopedQuery,
|
|
10
|
+
getSessionUserId,
|
|
11
|
+
prefetchUserScopedQuery
|
|
12
|
+
} from "../create-user-scoped-query"
|
|
13
|
+
|
|
14
|
+
export type ListDeviceSessionsData<TAuthClient extends MultiSessionAuthClient> =
|
|
15
|
+
InferData<TAuthClient["multiSession"]["listDeviceSessions"]>
|
|
16
|
+
export type ListDeviceSessionsParams<
|
|
17
|
+
TAuthClient extends MultiSessionAuthClient
|
|
18
|
+
> = Parameters<TAuthClient["multiSession"]["listDeviceSessions"]>[0]
|
|
19
|
+
export type ListDeviceSessionsOptions<
|
|
20
|
+
TAuthClient extends MultiSessionAuthClient
|
|
21
|
+
> = Omit<
|
|
22
|
+
ReturnType<typeof listDeviceSessionsOptions<TAuthClient>>,
|
|
23
|
+
"queryKey" | "queryFn"
|
|
24
|
+
>
|
|
25
|
+
|
|
26
|
+
export function listDeviceSessionsOptions<
|
|
27
|
+
TAuthClient extends MultiSessionAuthClient
|
|
28
|
+
>(
|
|
29
|
+
authClient: TAuthClient,
|
|
30
|
+
userId: string | undefined,
|
|
31
|
+
params?: ListDeviceSessionsParams<TAuthClient>
|
|
32
|
+
) {
|
|
33
|
+
return createUserScopedOptions(
|
|
34
|
+
multiSessionQueryKeys.list(userId, params?.query),
|
|
35
|
+
authClient.multiSession.listDeviceSessions,
|
|
36
|
+
params
|
|
37
|
+
)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export const ensureListDeviceSessions = <
|
|
41
|
+
TAuthClient extends MultiSessionAuthClient
|
|
42
|
+
>(
|
|
43
|
+
queryClient: QueryClient,
|
|
44
|
+
authClient: TAuthClient,
|
|
45
|
+
userId: string,
|
|
46
|
+
params?: ListDeviceSessionsParams<TAuthClient>
|
|
47
|
+
) =>
|
|
48
|
+
ensureUserScopedQuery(
|
|
49
|
+
queryClient,
|
|
50
|
+
multiSessionQueryKeys.list(userId, params?.query),
|
|
51
|
+
authClient.multiSession.listDeviceSessions,
|
|
52
|
+
params
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
export const prefetchListDeviceSessions = <
|
|
56
|
+
TAuthClient extends MultiSessionAuthClient
|
|
57
|
+
>(
|
|
58
|
+
queryClient: QueryClient,
|
|
59
|
+
authClient: TAuthClient,
|
|
60
|
+
userId: string,
|
|
61
|
+
params?: ListDeviceSessionsParams<TAuthClient>
|
|
62
|
+
) =>
|
|
63
|
+
prefetchUserScopedQuery(
|
|
64
|
+
queryClient,
|
|
65
|
+
multiSessionQueryKeys.list(userId, params?.query),
|
|
66
|
+
authClient.multiSession.listDeviceSessions,
|
|
67
|
+
params
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
export const fetchListDeviceSessions = <
|
|
71
|
+
TAuthClient extends MultiSessionAuthClient
|
|
72
|
+
>(
|
|
73
|
+
queryClient: QueryClient,
|
|
74
|
+
authClient: TAuthClient,
|
|
75
|
+
userId: string,
|
|
76
|
+
params?: ListDeviceSessionsParams<TAuthClient>
|
|
77
|
+
) =>
|
|
78
|
+
fetchUserScopedQuery(
|
|
79
|
+
queryClient,
|
|
80
|
+
multiSessionQueryKeys.list(userId, params?.query),
|
|
81
|
+
authClient.multiSession.listDeviceSessions,
|
|
82
|
+
params
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
export type UseListDeviceSessionsOptions<
|
|
86
|
+
TAuthClient extends MultiSessionAuthClient
|
|
87
|
+
> = ListDeviceSessionsOptions<TAuthClient> &
|
|
88
|
+
ListDeviceSessionsParams<TAuthClient>
|
|
89
|
+
|
|
90
|
+
export function useListDeviceSessions<
|
|
91
|
+
TAuthClient extends MultiSessionAuthClient
|
|
92
|
+
>(
|
|
93
|
+
authClient: TAuthClient,
|
|
94
|
+
options: UseListDeviceSessionsOptions<TAuthClient> = {}
|
|
95
|
+
) {
|
|
96
|
+
const session = useSession(authClient)
|
|
97
|
+
const userId = () => getSessionUserId(session)
|
|
98
|
+
const { query, fetchOptions, ...queryOptionsRest } = options
|
|
99
|
+
|
|
100
|
+
return createUserScopedQuery(
|
|
101
|
+
() => multiSessionQueryKeys.list(userId(), query),
|
|
102
|
+
authClient.multiSession.listDeviceSessions,
|
|
103
|
+
() => ({ query, fetchOptions }) as ListDeviceSessionsParams<TAuthClient>,
|
|
104
|
+
() => Boolean(userId()),
|
|
105
|
+
() => queryOptionsRest
|
|
106
|
+
)
|
|
107
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { organizationQueryKeys } from "@better-auth-ui/core/plugins"
|
|
2
|
+
import { createQuery, type QueryClient } from "@tanstack/solid-query"
|
|
3
|
+
import type { OrganizationAuthClient } from "../../lib/auth-client"
|
|
4
|
+
import { useSession } from "../auth/session-query"
|
|
5
|
+
import type { FullOrganizationParams } from "./full-organization-query"
|
|
6
|
+
import type { ListOrganizationsData } from "./list-organizations-query"
|
|
7
|
+
import { useOrganizationSlug } from "./plugin"
|
|
8
|
+
import {
|
|
9
|
+
createOrganizationQueryOptions,
|
|
10
|
+
ensureOrganizationQuery,
|
|
11
|
+
fetchOrganizationQuery,
|
|
12
|
+
prefetchOrganizationQuery,
|
|
13
|
+
skipToken
|
|
14
|
+
} from "./utils"
|
|
15
|
+
|
|
16
|
+
export type ActiveOrganizationData<
|
|
17
|
+
TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
|
|
18
|
+
> =
|
|
19
|
+
NonNullable<ListOrganizationsData<TAuthClient>> extends Array<infer TOrg>
|
|
20
|
+
? TOrg | null
|
|
21
|
+
: unknown
|
|
22
|
+
|
|
23
|
+
export type ActiveOrganizationParams<
|
|
24
|
+
TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
|
|
25
|
+
> = FullOrganizationParams<TAuthClient>
|
|
26
|
+
|
|
27
|
+
export type ActiveOrganizationOptions<
|
|
28
|
+
TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
|
|
29
|
+
> = Omit<
|
|
30
|
+
ReturnType<typeof activeOrganizationOptions<TAuthClient>>,
|
|
31
|
+
"queryKey" | "queryFn"
|
|
32
|
+
>
|
|
33
|
+
|
|
34
|
+
export function activeOrganizationOptions<
|
|
35
|
+
TAuthClient extends OrganizationAuthClient
|
|
36
|
+
>(
|
|
37
|
+
authClient: TAuthClient,
|
|
38
|
+
userId: string | undefined,
|
|
39
|
+
params?: ActiveOrganizationParams<TAuthClient>
|
|
40
|
+
) {
|
|
41
|
+
return createOrganizationQueryOptions(
|
|
42
|
+
organizationQueryKeys.activeOrganization(userId, params?.query),
|
|
43
|
+
authClient.organization.getFullOrganization,
|
|
44
|
+
params
|
|
45
|
+
)
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export const ensureActiveOrganization = <
|
|
49
|
+
TAuthClient extends OrganizationAuthClient
|
|
50
|
+
>(
|
|
51
|
+
queryClient: QueryClient,
|
|
52
|
+
authClient: TAuthClient,
|
|
53
|
+
userId: string | undefined,
|
|
54
|
+
params?: ActiveOrganizationParams<TAuthClient>
|
|
55
|
+
) =>
|
|
56
|
+
ensureOrganizationQuery(
|
|
57
|
+
queryClient,
|
|
58
|
+
organizationQueryKeys.activeOrganization(userId, params?.query),
|
|
59
|
+
authClient.organization.getFullOrganization,
|
|
60
|
+
params
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
export const prefetchActiveOrganization = <
|
|
64
|
+
TAuthClient extends OrganizationAuthClient
|
|
65
|
+
>(
|
|
66
|
+
queryClient: QueryClient,
|
|
67
|
+
authClient: TAuthClient,
|
|
68
|
+
userId: string | undefined,
|
|
69
|
+
params?: ActiveOrganizationParams<TAuthClient>
|
|
70
|
+
) =>
|
|
71
|
+
prefetchOrganizationQuery(
|
|
72
|
+
queryClient,
|
|
73
|
+
organizationQueryKeys.activeOrganization(userId, params?.query),
|
|
74
|
+
authClient.organization.getFullOrganization,
|
|
75
|
+
params
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
export const fetchActiveOrganization = <
|
|
79
|
+
TAuthClient extends OrganizationAuthClient
|
|
80
|
+
>(
|
|
81
|
+
queryClient: QueryClient,
|
|
82
|
+
authClient: TAuthClient,
|
|
83
|
+
userId: string | undefined,
|
|
84
|
+
params?: ActiveOrganizationParams<TAuthClient>
|
|
85
|
+
) =>
|
|
86
|
+
fetchOrganizationQuery(
|
|
87
|
+
queryClient,
|
|
88
|
+
organizationQueryKeys.activeOrganization(userId, params?.query),
|
|
89
|
+
authClient.organization.getFullOrganization,
|
|
90
|
+
params
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
export type UseActiveOrganizationOptions<
|
|
94
|
+
TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
|
|
95
|
+
> = ActiveOrganizationOptions<TAuthClient> &
|
|
96
|
+
ActiveOrganizationParams<TAuthClient>
|
|
97
|
+
|
|
98
|
+
export function useActiveOrganization<
|
|
99
|
+
TAuthClient extends OrganizationAuthClient
|
|
100
|
+
>(
|
|
101
|
+
authClient: TAuthClient,
|
|
102
|
+
options: UseActiveOrganizationOptions<TAuthClient> = {}
|
|
103
|
+
) {
|
|
104
|
+
const session = useSession(authClient)
|
|
105
|
+
const slug = useOrganizationSlug()
|
|
106
|
+
|
|
107
|
+
return createQuery(() => {
|
|
108
|
+
const { query, fetchOptions, ...queryOptionsRest } = options
|
|
109
|
+
const userId = session.data?.user.id
|
|
110
|
+
const effectiveQuery = slug ? { organizationSlug: slug } : query
|
|
111
|
+
const baseOptions = activeOrganizationOptions(authClient, userId, {
|
|
112
|
+
query: effectiveQuery,
|
|
113
|
+
fetchOptions
|
|
114
|
+
} as ActiveOrganizationParams<TAuthClient>)
|
|
115
|
+
|
|
116
|
+
return {
|
|
117
|
+
...queryOptionsRest,
|
|
118
|
+
...baseOptions,
|
|
119
|
+
queryFn:
|
|
120
|
+
slug === null
|
|
121
|
+
? async () => null
|
|
122
|
+
: userId
|
|
123
|
+
? baseOptions.queryFn
|
|
124
|
+
: skipToken
|
|
125
|
+
}
|
|
126
|
+
})
|
|
127
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { organizationQueryKeys } from "@better-auth-ui/core/plugins"
|
|
2
|
+
import { createQuery, type QueryClient } from "@tanstack/solid-query"
|
|
3
|
+
import type { OrganizationAuthClient } from "../../lib/auth-client"
|
|
4
|
+
import { useSession } from "../auth/session-query"
|
|
5
|
+
import {
|
|
6
|
+
createOrganizationQueryOptions,
|
|
7
|
+
ensureOrganizationQuery,
|
|
8
|
+
fetchOrganizationQuery,
|
|
9
|
+
prefetchOrganizationQuery,
|
|
10
|
+
skipToken
|
|
11
|
+
} from "./utils"
|
|
12
|
+
|
|
13
|
+
export type FullOrganizationData<
|
|
14
|
+
TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
|
|
15
|
+
> = Awaited<ReturnType<TAuthClient["organization"]["getFullOrganization"]>>
|
|
16
|
+
|
|
17
|
+
export type FullOrganizationParams<
|
|
18
|
+
TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
|
|
19
|
+
> = Parameters<TAuthClient["organization"]["getFullOrganization"]>[0]
|
|
20
|
+
|
|
21
|
+
export type FullOrganizationOptions<
|
|
22
|
+
TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
|
|
23
|
+
> = Omit<
|
|
24
|
+
ReturnType<typeof fullOrganizationOptions<TAuthClient>>,
|
|
25
|
+
"queryKey" | "queryFn"
|
|
26
|
+
>
|
|
27
|
+
|
|
28
|
+
export function fullOrganizationOptions<
|
|
29
|
+
TAuthClient extends OrganizationAuthClient
|
|
30
|
+
>(
|
|
31
|
+
authClient: TAuthClient,
|
|
32
|
+
userId: string | undefined,
|
|
33
|
+
params?: FullOrganizationParams<TAuthClient>
|
|
34
|
+
) {
|
|
35
|
+
return createOrganizationQueryOptions(
|
|
36
|
+
organizationQueryKeys.fullDetail(userId, params?.query),
|
|
37
|
+
authClient.organization.getFullOrganization,
|
|
38
|
+
params
|
|
39
|
+
)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export const ensureFullOrganization = <
|
|
43
|
+
TAuthClient extends OrganizationAuthClient
|
|
44
|
+
>(
|
|
45
|
+
queryClient: QueryClient,
|
|
46
|
+
authClient: TAuthClient,
|
|
47
|
+
userId: string | undefined,
|
|
48
|
+
params?: FullOrganizationParams<TAuthClient>
|
|
49
|
+
) =>
|
|
50
|
+
ensureOrganizationQuery(
|
|
51
|
+
queryClient,
|
|
52
|
+
organizationQueryKeys.fullDetail(userId, params?.query),
|
|
53
|
+
authClient.organization.getFullOrganization,
|
|
54
|
+
params
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
export const prefetchFullOrganization = <
|
|
58
|
+
TAuthClient extends OrganizationAuthClient
|
|
59
|
+
>(
|
|
60
|
+
queryClient: QueryClient,
|
|
61
|
+
authClient: TAuthClient,
|
|
62
|
+
userId: string | undefined,
|
|
63
|
+
params?: FullOrganizationParams<TAuthClient>
|
|
64
|
+
) =>
|
|
65
|
+
prefetchOrganizationQuery(
|
|
66
|
+
queryClient,
|
|
67
|
+
organizationQueryKeys.fullDetail(userId, params?.query),
|
|
68
|
+
authClient.organization.getFullOrganization,
|
|
69
|
+
params
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
export const fetchFullOrganization = <
|
|
73
|
+
TAuthClient extends OrganizationAuthClient
|
|
74
|
+
>(
|
|
75
|
+
queryClient: QueryClient,
|
|
76
|
+
authClient: TAuthClient,
|
|
77
|
+
userId: string | undefined,
|
|
78
|
+
params?: FullOrganizationParams<TAuthClient>
|
|
79
|
+
) =>
|
|
80
|
+
fetchOrganizationQuery(
|
|
81
|
+
queryClient,
|
|
82
|
+
organizationQueryKeys.fullDetail(userId, params?.query),
|
|
83
|
+
authClient.organization.getFullOrganization,
|
|
84
|
+
params
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
export type UseFullOrganizationOptions<
|
|
88
|
+
TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
|
|
89
|
+
> = FullOrganizationOptions<TAuthClient> & FullOrganizationParams<TAuthClient>
|
|
90
|
+
|
|
91
|
+
export function useFullOrganization<TAuthClient extends OrganizationAuthClient>(
|
|
92
|
+
authClient: TAuthClient,
|
|
93
|
+
options: UseFullOrganizationOptions<TAuthClient> = {}
|
|
94
|
+
) {
|
|
95
|
+
const session = useSession(authClient)
|
|
96
|
+
|
|
97
|
+
return createQuery(() => {
|
|
98
|
+
const { query, fetchOptions, ...queryOptionsRest } = options
|
|
99
|
+
const userId = session.data?.user.id
|
|
100
|
+
const baseOptions = fullOrganizationOptions(authClient, userId, {
|
|
101
|
+
query,
|
|
102
|
+
fetchOptions
|
|
103
|
+
} as FullOrganizationParams<TAuthClient>)
|
|
104
|
+
|
|
105
|
+
return {
|
|
106
|
+
...queryOptionsRest,
|
|
107
|
+
...baseOptions,
|
|
108
|
+
queryFn: userId ? baseOptions.queryFn : skipToken
|
|
109
|
+
}
|
|
110
|
+
})
|
|
111
|
+
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { organizationQueryKeys } from "@better-auth-ui/core/plugins"
|
|
2
|
+
import { createQuery, type QueryClient } from "@tanstack/solid-query"
|
|
3
|
+
import type { OrganizationAuthClient } from "../../lib/auth-client"
|
|
4
|
+
import { useSession } from "../auth/session-query"
|
|
5
|
+
import { useActiveOrganization } from "./active-organization-query"
|
|
6
|
+
import {
|
|
7
|
+
createOrganizationQueryOptions,
|
|
8
|
+
ensureOrganizationQuery,
|
|
9
|
+
fetchOrganizationQuery,
|
|
10
|
+
prefetchOrganizationQuery,
|
|
11
|
+
skipToken
|
|
12
|
+
} from "./utils"
|
|
13
|
+
|
|
14
|
+
export type HasPermissionData<
|
|
15
|
+
TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
|
|
16
|
+
> = Awaited<ReturnType<TAuthClient["organization"]["hasPermission"]>>
|
|
17
|
+
|
|
18
|
+
export type HasPermissionParams<
|
|
19
|
+
TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
|
|
20
|
+
> = Parameters<TAuthClient["organization"]["hasPermission"]>[0]
|
|
21
|
+
|
|
22
|
+
export type HasPermissionOptions<
|
|
23
|
+
TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
|
|
24
|
+
> = Omit<
|
|
25
|
+
ReturnType<typeof hasPermissionOptions<TAuthClient>>,
|
|
26
|
+
"queryKey" | "queryFn"
|
|
27
|
+
>
|
|
28
|
+
|
|
29
|
+
export function hasPermissionOptions<
|
|
30
|
+
TAuthClient extends OrganizationAuthClient
|
|
31
|
+
>(
|
|
32
|
+
authClient: TAuthClient,
|
|
33
|
+
userId: string | undefined,
|
|
34
|
+
params: HasPermissionParams<TAuthClient>
|
|
35
|
+
) {
|
|
36
|
+
const { fetchOptions, ...query } = params
|
|
37
|
+
|
|
38
|
+
return createOrganizationQueryOptions(
|
|
39
|
+
organizationQueryKeys.permissions.has(userId, query),
|
|
40
|
+
authClient.organization.hasPermission,
|
|
41
|
+
{ ...query, fetchOptions } as HasPermissionParams<TAuthClient>
|
|
42
|
+
)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export const ensureHasPermission = <TAuthClient extends OrganizationAuthClient>(
|
|
46
|
+
queryClient: QueryClient,
|
|
47
|
+
authClient: TAuthClient,
|
|
48
|
+
userId: string | undefined,
|
|
49
|
+
params: HasPermissionParams<TAuthClient>
|
|
50
|
+
) =>
|
|
51
|
+
ensureOrganizationQuery(
|
|
52
|
+
queryClient,
|
|
53
|
+
hasPermissionOptions(authClient, userId, params).queryKey,
|
|
54
|
+
authClient.organization.hasPermission,
|
|
55
|
+
params
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
export const prefetchHasPermission = <
|
|
59
|
+
TAuthClient extends OrganizationAuthClient
|
|
60
|
+
>(
|
|
61
|
+
queryClient: QueryClient,
|
|
62
|
+
authClient: TAuthClient,
|
|
63
|
+
userId: string | undefined,
|
|
64
|
+
params: HasPermissionParams<TAuthClient>
|
|
65
|
+
) =>
|
|
66
|
+
prefetchOrganizationQuery(
|
|
67
|
+
queryClient,
|
|
68
|
+
hasPermissionOptions(authClient, userId, params).queryKey,
|
|
69
|
+
authClient.organization.hasPermission,
|
|
70
|
+
params
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
export const fetchHasPermission = <TAuthClient extends OrganizationAuthClient>(
|
|
74
|
+
queryClient: QueryClient,
|
|
75
|
+
authClient: TAuthClient,
|
|
76
|
+
userId: string | undefined,
|
|
77
|
+
params: HasPermissionParams<TAuthClient>
|
|
78
|
+
) =>
|
|
79
|
+
fetchOrganizationQuery(
|
|
80
|
+
queryClient,
|
|
81
|
+
hasPermissionOptions(authClient, userId, params).queryKey,
|
|
82
|
+
authClient.organization.hasPermission,
|
|
83
|
+
params
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
export type UseHasPermissionOptions<
|
|
87
|
+
TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
|
|
88
|
+
> = HasPermissionOptions<TAuthClient> & HasPermissionParams<TAuthClient>
|
|
89
|
+
|
|
90
|
+
export function useHasPermission<TAuthClient extends OrganizationAuthClient>(
|
|
91
|
+
authClient: TAuthClient,
|
|
92
|
+
options: UseHasPermissionOptions<TAuthClient>
|
|
93
|
+
) {
|
|
94
|
+
const session = useSession(authClient)
|
|
95
|
+
const activeOrganization = useActiveOrganization(authClient, {
|
|
96
|
+
enabled: !options.organizationId
|
|
97
|
+
} as never)
|
|
98
|
+
|
|
99
|
+
return createQuery(() => {
|
|
100
|
+
const {
|
|
101
|
+
fetchOptions,
|
|
102
|
+
permissions,
|
|
103
|
+
organizationId: optionsOrganizationId,
|
|
104
|
+
...queryOptionsRest
|
|
105
|
+
} = options
|
|
106
|
+
const userId = session.data?.user.id
|
|
107
|
+
const organizationId = optionsOrganizationId ?? activeOrganization.data?.id
|
|
108
|
+
const params = {
|
|
109
|
+
fetchOptions,
|
|
110
|
+
organizationId,
|
|
111
|
+
permissions
|
|
112
|
+
} as HasPermissionParams<TAuthClient>
|
|
113
|
+
const baseOptions = hasPermissionOptions(authClient, userId, params)
|
|
114
|
+
|
|
115
|
+
return {
|
|
116
|
+
...queryOptionsRest,
|
|
117
|
+
...baseOptions,
|
|
118
|
+
queryFn: userId && organizationId ? baseOptions.queryFn : skipToken
|
|
119
|
+
}
|
|
120
|
+
})
|
|
121
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from "./active-organization-query"
|
|
2
|
+
export * from "./full-organization-query"
|
|
3
|
+
export * from "./has-permission-query"
|
|
4
|
+
export * from "./list-invitations-query"
|
|
5
|
+
export * from "./list-members-query"
|
|
6
|
+
export * from "./list-organizations-query"
|
|
7
|
+
export * from "./list-user-invitations-query"
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { organizationQueryKeys } from "@better-auth-ui/core/plugins"
|
|
2
|
+
import { createQuery, type QueryClient } from "@tanstack/solid-query"
|
|
3
|
+
import type { OrganizationAuthClient } from "../../lib/auth-client"
|
|
4
|
+
import { useSession } from "../auth/session-query"
|
|
5
|
+
import { useActiveOrganization } from "./active-organization-query"
|
|
6
|
+
import {
|
|
7
|
+
createOrganizationQueryOptions,
|
|
8
|
+
ensureOrganizationQuery,
|
|
9
|
+
fetchOrganizationQuery,
|
|
10
|
+
prefetchOrganizationQuery,
|
|
11
|
+
skipToken
|
|
12
|
+
} from "./utils"
|
|
13
|
+
|
|
14
|
+
export type ListOrganizationInvitationsData<
|
|
15
|
+
TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
|
|
16
|
+
> = Awaited<ReturnType<TAuthClient["organization"]["listInvitations"]>>
|
|
17
|
+
|
|
18
|
+
export type ListOrganizationInvitationsParams<
|
|
19
|
+
TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
|
|
20
|
+
> = Parameters<TAuthClient["organization"]["listInvitations"]>[0]
|
|
21
|
+
|
|
22
|
+
export type ListOrganizationInvitationsOptions<
|
|
23
|
+
TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
|
|
24
|
+
> = Omit<
|
|
25
|
+
ReturnType<typeof listOrganizationInvitationsOptions<TAuthClient>>,
|
|
26
|
+
"queryKey" | "queryFn"
|
|
27
|
+
>
|
|
28
|
+
|
|
29
|
+
export function listOrganizationInvitationsOptions<
|
|
30
|
+
TAuthClient extends OrganizationAuthClient
|
|
31
|
+
>(
|
|
32
|
+
authClient: TAuthClient,
|
|
33
|
+
userId: string | undefined,
|
|
34
|
+
params?: ListOrganizationInvitationsParams<TAuthClient>
|
|
35
|
+
) {
|
|
36
|
+
return createOrganizationQueryOptions(
|
|
37
|
+
organizationQueryKeys.invitations.list(userId, params?.query),
|
|
38
|
+
authClient.organization.listInvitations,
|
|
39
|
+
params
|
|
40
|
+
)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export const ensureListOrganizationInvitations = <
|
|
44
|
+
TAuthClient extends OrganizationAuthClient
|
|
45
|
+
>(
|
|
46
|
+
queryClient: QueryClient,
|
|
47
|
+
authClient: TAuthClient,
|
|
48
|
+
userId: string | undefined,
|
|
49
|
+
params?: ListOrganizationInvitationsParams<TAuthClient>
|
|
50
|
+
) =>
|
|
51
|
+
ensureOrganizationQuery(
|
|
52
|
+
queryClient,
|
|
53
|
+
organizationQueryKeys.invitations.list(userId, params?.query),
|
|
54
|
+
authClient.organization.listInvitations,
|
|
55
|
+
params
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
export const prefetchListOrganizationInvitations = <
|
|
59
|
+
TAuthClient extends OrganizationAuthClient
|
|
60
|
+
>(
|
|
61
|
+
queryClient: QueryClient,
|
|
62
|
+
authClient: TAuthClient,
|
|
63
|
+
userId: string | undefined,
|
|
64
|
+
params?: ListOrganizationInvitationsParams<TAuthClient>
|
|
65
|
+
) =>
|
|
66
|
+
prefetchOrganizationQuery(
|
|
67
|
+
queryClient,
|
|
68
|
+
organizationQueryKeys.invitations.list(userId, params?.query),
|
|
69
|
+
authClient.organization.listInvitations,
|
|
70
|
+
params
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
export const fetchListOrganizationInvitations = <
|
|
74
|
+
TAuthClient extends OrganizationAuthClient
|
|
75
|
+
>(
|
|
76
|
+
queryClient: QueryClient,
|
|
77
|
+
authClient: TAuthClient,
|
|
78
|
+
userId: string | undefined,
|
|
79
|
+
params?: ListOrganizationInvitationsParams<TAuthClient>
|
|
80
|
+
) =>
|
|
81
|
+
fetchOrganizationQuery(
|
|
82
|
+
queryClient,
|
|
83
|
+
organizationQueryKeys.invitations.list(userId, params?.query),
|
|
84
|
+
authClient.organization.listInvitations,
|
|
85
|
+
params
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
export type UseListOrganizationInvitationsOptions<
|
|
89
|
+
TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
|
|
90
|
+
> = ListOrganizationInvitationsOptions<TAuthClient> &
|
|
91
|
+
ListOrganizationInvitationsParams<TAuthClient>
|
|
92
|
+
|
|
93
|
+
export function useListOrganizationInvitations<
|
|
94
|
+
TAuthClient extends OrganizationAuthClient
|
|
95
|
+
>(
|
|
96
|
+
authClient: TAuthClient,
|
|
97
|
+
options: UseListOrganizationInvitationsOptions<TAuthClient> = {}
|
|
98
|
+
) {
|
|
99
|
+
const session = useSession(authClient)
|
|
100
|
+
const { query, fetchOptions, ...queryOptionsRest } = options
|
|
101
|
+
const activeOrganization = useActiveOrganization(authClient, {
|
|
102
|
+
enabled: !query?.organizationId
|
|
103
|
+
} as never)
|
|
104
|
+
|
|
105
|
+
return createQuery(() => {
|
|
106
|
+
const userId = session.data?.user.id
|
|
107
|
+
const organizationId = query?.organizationId ?? activeOrganization.data?.id
|
|
108
|
+
const params = {
|
|
109
|
+
query: { ...query, organizationId },
|
|
110
|
+
fetchOptions
|
|
111
|
+
} as ListOrganizationInvitationsParams<TAuthClient>
|
|
112
|
+
const baseOptions = listOrganizationInvitationsOptions(
|
|
113
|
+
authClient,
|
|
114
|
+
userId,
|
|
115
|
+
params
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
return {
|
|
119
|
+
...queryOptionsRest,
|
|
120
|
+
...baseOptions,
|
|
121
|
+
queryFn: userId && organizationId ? baseOptions.queryFn : skipToken
|
|
122
|
+
}
|
|
123
|
+
})
|
|
124
|
+
}
|