@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.
Files changed (270) hide show
  1. package/dist/components/auth/email/email-changed.d.ts +59 -0
  2. package/dist/components/auth/email/email-changed.js +264 -0
  3. package/dist/components/auth/email/email-styles.d.ts +48 -0
  4. package/dist/components/auth/email/email-styles.js +107 -0
  5. package/dist/components/auth/email/email-verification.d.ts +51 -0
  6. package/dist/components/auth/email/email-verification.js +212 -0
  7. package/dist/components/auth/email/index.d.ts +9 -0
  8. package/dist/components/auth/email/magic-link.d.ts +53 -0
  9. package/dist/components/auth/email/magic-link.js +213 -0
  10. package/dist/components/auth/email/new-device.d.ts +77 -0
  11. package/dist/components/auth/email/new-device.js +326 -0
  12. package/dist/components/auth/email/organization-invitation.d.ts +70 -0
  13. package/dist/components/auth/email/organization-invitation.js +260 -0
  14. package/dist/components/auth/email/otp-email.d.ts +49 -0
  15. package/dist/components/auth/email/otp-email.js +191 -0
  16. package/dist/components/auth/email/password-changed.d.ts +56 -0
  17. package/dist/components/auth/email/password-changed.js +236 -0
  18. package/dist/components/auth/email/reset-password.d.ts +51 -0
  19. package/dist/components/auth/email/reset-password.js +212 -0
  20. package/dist/email.d.ts +18 -0
  21. package/dist/email.js +10 -0
  22. package/dist/hooks/auth/use-authenticate.d.ts +3 -0
  23. package/dist/hooks/auth/use-authenticate.js +18 -0
  24. package/dist/hooks/auth/use-sign-out.d.ts +2 -0
  25. package/dist/hooks/auth/use-sign-out.js +17 -0
  26. package/dist/hooks/auth/use-user.d.ts +213 -0
  27. package/dist/hooks/auth/use-user.js +13 -0
  28. package/dist/hooks/use-auth-mutation.d.ts +6 -0
  29. package/dist/hooks/use-auth-mutation.js +11 -0
  30. package/dist/hooks/use-auth-query.d.ts +5 -0
  31. package/dist/hooks/use-auth-query.js +17 -0
  32. package/dist/index.d.ts +48 -0
  33. package/dist/index.js +68 -0
  34. package/dist/lib/auth-client.d.ts +26 -0
  35. package/dist/lib/auth-config.d.ts +12 -0
  36. package/dist/lib/auth-config.js +21 -0
  37. package/dist/lib/auth-plugin.d.ts +16 -0
  38. package/dist/lib/auth-provider.d.ts +12 -0
  39. package/dist/lib/auth-provider.js +36 -0
  40. package/dist/lib/auth-server.d.ts +16 -0
  41. package/dist/lib/auth-utils.d.ts +3 -0
  42. package/dist/lib/auth-utils.js +12 -0
  43. package/dist/lib/fetch-options-provider.d.ts +23 -0
  44. package/dist/lib/fetch-options-provider.js +29 -0
  45. package/dist/lib/mutation-invalidator.d.ts +11 -0
  46. package/dist/lib/mutation-invalidator.js +20 -0
  47. package/dist/lib/provider-icons.d.ts +8 -0
  48. package/dist/lib/provider-icons.js +5 -0
  49. package/dist/mutations/api-key/create-api-key-mutation.d.ts +71 -0
  50. package/dist/mutations/api-key/create-api-key-mutation.js +12 -0
  51. package/dist/mutations/api-key/delete-api-key-mutation.d.ts +23 -0
  52. package/dist/mutations/api-key/delete-api-key-mutation.js +12 -0
  53. package/dist/mutations/auth/request-password-reset-mutation.d.ts +11 -0
  54. package/dist/mutations/auth/request-password-reset-mutation.js +8 -0
  55. package/dist/mutations/auth/reset-password-mutation.d.ts +13 -0
  56. package/dist/mutations/auth/reset-password-mutation.js +8 -0
  57. package/dist/mutations/auth/send-verification-email-mutation.d.ts +11 -0
  58. package/dist/mutations/auth/send-verification-email-mutation.js +8 -0
  59. package/dist/mutations/auth/sign-in-email-mutation.d.ts +15 -0
  60. package/dist/mutations/auth/sign-in-email-mutation.js +8 -0
  61. package/dist/mutations/auth/sign-in-social-mutation.d.ts +53 -0
  62. package/dist/mutations/auth/sign-in-social-mutation.js +8 -0
  63. package/dist/mutations/auth/sign-out-mutation.d.ts +6 -0
  64. package/dist/mutations/auth/sign-out-mutation.js +8 -0
  65. package/dist/mutations/auth/sign-up-email-mutation.d.ts +17 -0
  66. package/dist/mutations/auth/sign-up-email-mutation.js +8 -0
  67. package/dist/mutations/auth-mutation-options.d.ts +10 -0
  68. package/dist/mutations/auth-mutation-options.js +19 -0
  69. package/dist/mutations/create-auth-mutation.d.ts +10 -0
  70. package/dist/mutations/create-auth-mutation.js +20 -0
  71. package/dist/mutations/magic-link/sign-in-magic-link-mutation.d.ts +19 -0
  72. package/dist/mutations/magic-link/sign-in-magic-link-mutation.js +8 -0
  73. package/dist/mutations/multi-session/revoke-multi-session-mutation.d.ts +19 -0
  74. package/dist/mutations/multi-session/revoke-multi-session-mutation.js +12 -0
  75. package/dist/mutations/multi-session/set-active-session-mutation.d.ts +19 -0
  76. package/dist/mutations/multi-session/set-active-session-mutation.js +13 -0
  77. package/dist/mutations/organization/accept-invitation-mutation.d.ts +18 -0
  78. package/dist/mutations/organization/accept-invitation-mutation.js +12 -0
  79. package/dist/mutations/organization/cancel-invitation-mutation.d.ts +18 -0
  80. package/dist/mutations/organization/cancel-invitation-mutation.js +12 -0
  81. package/dist/mutations/organization/check-slug-mutation.d.ts +18 -0
  82. package/dist/mutations/organization/check-slug-mutation.js +15 -0
  83. package/dist/mutations/organization/create-organization-mutation.d.ts +38 -0
  84. package/dist/mutations/organization/create-organization-mutation.js +12 -0
  85. package/dist/mutations/organization/delete-organization-mutation.d.ts +18 -0
  86. package/dist/mutations/organization/delete-organization-mutation.js +12 -0
  87. package/dist/mutations/organization/index.d.ts +13 -0
  88. package/dist/mutations/organization/index.js +13 -0
  89. package/dist/mutations/organization/invite-member-mutation.d.ts +30 -0
  90. package/dist/mutations/organization/invite-member-mutation.js +12 -0
  91. package/dist/mutations/organization/leave-organization-mutation.d.ts +18 -0
  92. package/dist/mutations/organization/leave-organization-mutation.js +12 -0
  93. package/dist/mutations/organization/metadata.d.ts +13 -0
  94. package/dist/mutations/organization/metadata.js +27 -0
  95. package/dist/mutations/organization/reject-invitation-mutation.d.ts +18 -0
  96. package/dist/mutations/organization/reject-invitation-mutation.js +12 -0
  97. package/dist/mutations/organization/remove-member-mutation.d.ts +22 -0
  98. package/dist/mutations/organization/remove-member-mutation.js +12 -0
  99. package/dist/mutations/organization/set-active-organization-mutation.d.ts +24 -0
  100. package/dist/mutations/organization/set-active-organization-mutation.js +35 -0
  101. package/dist/mutations/organization/update-member-role-mutation.d.ts +26 -0
  102. package/dist/mutations/organization/update-member-role-mutation.js +12 -0
  103. package/dist/mutations/organization/update-organization-mutation.d.ts +42 -0
  104. package/dist/mutations/organization/update-organization-mutation.js +12 -0
  105. package/dist/mutations/organization/utils.d.ts +8 -0
  106. package/dist/mutations/organization/utils.js +17 -0
  107. package/dist/mutations/passkey/add-passkey-mutation.d.ts +73 -0
  108. package/dist/mutations/passkey/add-passkey-mutation.js +12 -0
  109. package/dist/mutations/passkey/delete-passkey-mutation.d.ts +19 -0
  110. package/dist/mutations/passkey/delete-passkey-mutation.js +12 -0
  111. package/dist/mutations/passkey/sign-in-passkey-mutation.d.ts +50 -0
  112. package/dist/mutations/passkey/sign-in-passkey-mutation.js +9 -0
  113. package/dist/mutations/settings/change-email-mutation.d.ts +11 -0
  114. package/dist/mutations/settings/change-email-mutation.js +8 -0
  115. package/dist/mutations/settings/change-password-mutation.d.ts +13 -0
  116. package/dist/mutations/settings/change-password-mutation.js +8 -0
  117. package/dist/mutations/settings/delete-user-mutation.d.ts +13 -0
  118. package/dist/mutations/settings/delete-user-mutation.js +8 -0
  119. package/dist/mutations/settings/link-social-mutation.d.ts +35 -0
  120. package/dist/mutations/settings/link-social-mutation.js +8 -0
  121. package/dist/mutations/settings/revoke-session-mutation.d.ts +19 -0
  122. package/dist/mutations/settings/revoke-session-mutation.js +12 -0
  123. package/dist/mutations/settings/unlink-account-mutation.d.ts +23 -0
  124. package/dist/mutations/settings/unlink-account-mutation.js +12 -0
  125. package/dist/mutations/settings/update-user-mutation.d.ts +6 -0
  126. package/dist/mutations/settings/update-user-mutation.js +8 -0
  127. package/dist/mutations/use-session-scoped-mutation.d.ts +17 -0
  128. package/dist/mutations/use-session-scoped-mutation.js +17 -0
  129. package/dist/mutations/username/is-username-available-mutation.d.ts +9 -0
  130. package/dist/mutations/username/is-username-available-mutation.js +8 -0
  131. package/dist/mutations/username/sign-in-username-mutation.d.ts +15 -0
  132. package/dist/mutations/username/sign-in-username-mutation.js +9 -0
  133. package/dist/plugins/captcha-plugin.d.ts +29 -0
  134. package/dist/plugins/captcha-plugin.js +26 -0
  135. package/dist/plugins.d.ts +2 -0
  136. package/dist/plugins.js +2 -0
  137. package/dist/queries/api-key/list-api-keys-query.d.ts +44 -0
  138. package/dist/queries/api-key/list-api-keys-query.js +17 -0
  139. package/dist/queries/auth/session-query.d.ts +22 -0
  140. package/dist/queries/auth/session-query.js +32 -0
  141. package/dist/queries/auth-query-options.d.ts +14 -0
  142. package/dist/queries/auth-query-options.js +17 -0
  143. package/dist/queries/create-user-scoped-query.d.ts +25 -0
  144. package/dist/queries/create-user-scoped-query.js +29 -0
  145. package/dist/queries/multi-session/list-device-sessions-query.d.ts +23 -0
  146. package/dist/queries/multi-session/list-device-sessions-query.js +17 -0
  147. package/dist/queries/organization/active-organization-query.d.ts +37 -0
  148. package/dist/queries/organization/active-organization-query.js +26 -0
  149. package/dist/queries/organization/full-organization-query.d.ts +35 -0
  150. package/dist/queries/organization/full-organization-query.js +25 -0
  151. package/dist/queries/organization/has-permission-query.d.ts +23 -0
  152. package/dist/queries/organization/has-permission-query.js +31 -0
  153. package/dist/queries/organization/index.d.ts +7 -0
  154. package/dist/queries/organization/index.js +7 -0
  155. package/dist/queries/organization/list-invitations-query.d.ts +29 -0
  156. package/dist/queries/organization/list-invitations-query.js +29 -0
  157. package/dist/queries/organization/list-members-query.d.ts +53 -0
  158. package/dist/queries/organization/list-members-query.js +29 -0
  159. package/dist/queries/organization/list-organizations-query.d.ts +23 -0
  160. package/dist/queries/organization/list-organizations-query.js +25 -0
  161. package/dist/queries/organization/list-user-invitations-query.d.ts +29 -0
  162. package/dist/queries/organization/list-user-invitations-query.js +25 -0
  163. package/dist/queries/organization/plugin.d.ts +1 -0
  164. package/dist/queries/organization/plugin.js +8 -0
  165. package/dist/queries/organization/utils.d.ts +16 -0
  166. package/dist/queries/organization/utils.js +18 -0
  167. package/dist/queries/passkey/list-passkeys-query.d.ts +23 -0
  168. package/dist/queries/passkey/list-passkeys-query.js +17 -0
  169. package/dist/queries/settings/account-info-query.d.ts +35 -0
  170. package/dist/queries/settings/account-info-query.js +17 -0
  171. package/dist/queries/settings/list-accounts-query.d.ts +23 -0
  172. package/dist/queries/settings/list-accounts-query.js +17 -0
  173. package/dist/queries/settings/list-sessions-query.d.ts +24 -0
  174. package/dist/queries/settings/list-sessions-query.js +17 -0
  175. package/dist/server/queries/auth/session-query.d.ts +19 -0
  176. package/dist/server/queries/auth/session-query.js +13 -0
  177. package/dist/server.d.ts +7 -0
  178. package/dist/server.js +7 -0
  179. package/package.json +63 -0
  180. package/src/components/auth/email/email-changed.tsx +305 -0
  181. package/src/components/auth/email/email-styles.tsx +139 -0
  182. package/src/components/auth/email/email-verification.tsx +249 -0
  183. package/src/components/auth/email/index.ts +9 -0
  184. package/src/components/auth/email/magic-link.tsx +254 -0
  185. package/src/components/auth/email/new-device.tsx +347 -0
  186. package/src/components/auth/email/organization-invitation.tsx +322 -0
  187. package/src/components/auth/email/otp-email.tsx +239 -0
  188. package/src/components/auth/email/password-changed.tsx +279 -0
  189. package/src/components/auth/email/reset-password.tsx +250 -0
  190. package/src/email.ts +49 -0
  191. package/src/hooks/auth/use-authenticate.ts +30 -0
  192. package/src/hooks/auth/use-sign-out.ts +23 -0
  193. package/src/hooks/auth/use-user.ts +19 -0
  194. package/src/hooks/use-auth-mutation.ts +35 -0
  195. package/src/hooks/use-auth-query.ts +33 -0
  196. package/src/index.ts +48 -0
  197. package/src/lib/auth-client.ts +43 -0
  198. package/src/lib/auth-config.ts +46 -0
  199. package/src/lib/auth-plugin.ts +20 -0
  200. package/src/lib/auth-provider.tsx +60 -0
  201. package/src/lib/auth-server.ts +25 -0
  202. package/src/lib/auth-utils.ts +25 -0
  203. package/src/lib/fetch-options-provider.tsx +77 -0
  204. package/src/lib/mutation-invalidator.tsx +82 -0
  205. package/src/lib/provider-icons.ts +10 -0
  206. package/src/mutations/api-key/create-api-key-mutation.ts +40 -0
  207. package/src/mutations/api-key/delete-api-key-mutation.ts +40 -0
  208. package/src/mutations/auth/request-password-reset-mutation.ts +15 -0
  209. package/src/mutations/auth/reset-password-mutation.ts +16 -0
  210. package/src/mutations/auth/send-verification-email-mutation.ts +15 -0
  211. package/src/mutations/auth/sign-in-email-mutation.ts +17 -0
  212. package/src/mutations/auth/sign-in-social-mutation.ts +16 -0
  213. package/src/mutations/auth/sign-out-mutation.ts +13 -0
  214. package/src/mutations/auth/sign-up-email-mutation.ts +17 -0
  215. package/src/mutations/auth-mutation-options.ts +62 -0
  216. package/src/mutations/create-auth-mutation.ts +44 -0
  217. package/src/mutations/magic-link/sign-in-magic-link-mutation.ts +15 -0
  218. package/src/mutations/multi-session/revoke-multi-session-mutation.ts +40 -0
  219. package/src/mutations/multi-session/set-active-session-mutation.ts +43 -0
  220. package/src/mutations/organization/accept-invitation-mutation.ts +38 -0
  221. package/src/mutations/organization/cancel-invitation-mutation.ts +38 -0
  222. package/src/mutations/organization/check-slug-mutation.ts +36 -0
  223. package/src/mutations/organization/create-organization-mutation.ts +37 -0
  224. package/src/mutations/organization/delete-organization-mutation.ts +37 -0
  225. package/src/mutations/organization/index.ts +13 -0
  226. package/src/mutations/organization/invite-member-mutation.ts +38 -0
  227. package/src/mutations/organization/leave-organization-mutation.ts +37 -0
  228. package/src/mutations/organization/metadata.ts +103 -0
  229. package/src/mutations/organization/reject-invitation-mutation.ts +38 -0
  230. package/src/mutations/organization/remove-member-mutation.ts +38 -0
  231. package/src/mutations/organization/set-active-organization-mutation.ts +110 -0
  232. package/src/mutations/organization/update-member-role-mutation.ts +38 -0
  233. package/src/mutations/organization/update-organization-mutation.ts +37 -0
  234. package/src/mutations/organization/utils.ts +51 -0
  235. package/src/mutations/passkey/add-passkey-mutation.ts +40 -0
  236. package/src/mutations/passkey/delete-passkey-mutation.ts +40 -0
  237. package/src/mutations/passkey/sign-in-passkey-mutation.ts +17 -0
  238. package/src/mutations/settings/change-email-mutation.ts +17 -0
  239. package/src/mutations/settings/change-password-mutation.ts +16 -0
  240. package/src/mutations/settings/delete-user-mutation.ts +16 -0
  241. package/src/mutations/settings/link-social-mutation.ts +16 -0
  242. package/src/mutations/settings/revoke-session-mutation.ts +38 -0
  243. package/src/mutations/settings/unlink-account-mutation.ts +38 -0
  244. package/src/mutations/settings/update-user-mutation.ts +17 -0
  245. package/src/mutations/use-session-scoped-mutation.ts +64 -0
  246. package/src/mutations/username/is-username-available-mutation.ts +15 -0
  247. package/src/mutations/username/sign-in-username-mutation.ts +17 -0
  248. package/src/plugins/captcha-plugin.tsx +64 -0
  249. package/src/plugins.ts +2 -0
  250. package/src/queries/api-key/list-api-keys-query.ts +93 -0
  251. package/src/queries/auth/session-query.ts +81 -0
  252. package/src/queries/auth-query-options.ts +57 -0
  253. package/src/queries/create-user-scoped-query.ts +107 -0
  254. package/src/queries/multi-session/list-device-sessions-query.ts +107 -0
  255. package/src/queries/organization/active-organization-query.ts +127 -0
  256. package/src/queries/organization/full-organization-query.ts +111 -0
  257. package/src/queries/organization/has-permission-query.ts +121 -0
  258. package/src/queries/organization/index.ts +7 -0
  259. package/src/queries/organization/list-invitations-query.ts +124 -0
  260. package/src/queries/organization/list-members-query.ts +124 -0
  261. package/src/queries/organization/list-organizations-query.ts +113 -0
  262. package/src/queries/organization/list-user-invitations-query.ts +114 -0
  263. package/src/queries/organization/plugin.ts +11 -0
  264. package/src/queries/organization/utils.ts +88 -0
  265. package/src/queries/passkey/list-passkeys-query.ts +93 -0
  266. package/src/queries/settings/account-info-query.ts +94 -0
  267. package/src/queries/settings/list-accounts-query.ts +94 -0
  268. package/src/queries/settings/list-sessions-query.ts +96 -0
  269. package/src/server/queries/auth/session-query.ts +56 -0
  270. 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
+ }