@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,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 ListOrganizationMembersData<
15
+ TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
16
+ > = Awaited<ReturnType<TAuthClient["organization"]["listMembers"]>>
17
+
18
+ export type ListOrganizationMembersParams<
19
+ TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
20
+ > = Parameters<TAuthClient["organization"]["listMembers"]>[0]
21
+
22
+ export type ListOrganizationMembersOptions<
23
+ TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
24
+ > = Omit<
25
+ ReturnType<typeof listOrganizationMembersOptions<TAuthClient>>,
26
+ "queryKey" | "queryFn"
27
+ >
28
+
29
+ export function listOrganizationMembersOptions<
30
+ TAuthClient extends OrganizationAuthClient
31
+ >(
32
+ authClient: TAuthClient,
33
+ userId: string | undefined,
34
+ params?: ListOrganizationMembersParams<TAuthClient>
35
+ ) {
36
+ return createOrganizationQueryOptions(
37
+ organizationQueryKeys.members.list(userId, params?.query),
38
+ authClient.organization.listMembers,
39
+ params
40
+ )
41
+ }
42
+
43
+ export const ensureListOrganizationMembers = <
44
+ TAuthClient extends OrganizationAuthClient
45
+ >(
46
+ queryClient: QueryClient,
47
+ authClient: TAuthClient,
48
+ userId: string | undefined,
49
+ params?: ListOrganizationMembersParams<TAuthClient>
50
+ ) =>
51
+ ensureOrganizationQuery(
52
+ queryClient,
53
+ organizationQueryKeys.members.list(userId, params?.query),
54
+ authClient.organization.listMembers,
55
+ params
56
+ )
57
+
58
+ export const prefetchListOrganizationMembers = <
59
+ TAuthClient extends OrganizationAuthClient
60
+ >(
61
+ queryClient: QueryClient,
62
+ authClient: TAuthClient,
63
+ userId: string | undefined,
64
+ params?: ListOrganizationMembersParams<TAuthClient>
65
+ ) =>
66
+ prefetchOrganizationQuery(
67
+ queryClient,
68
+ organizationQueryKeys.members.list(userId, params?.query),
69
+ authClient.organization.listMembers,
70
+ params
71
+ )
72
+
73
+ export const fetchListOrganizationMembers = <
74
+ TAuthClient extends OrganizationAuthClient
75
+ >(
76
+ queryClient: QueryClient,
77
+ authClient: TAuthClient,
78
+ userId: string | undefined,
79
+ params?: ListOrganizationMembersParams<TAuthClient>
80
+ ) =>
81
+ fetchOrganizationQuery(
82
+ queryClient,
83
+ organizationQueryKeys.members.list(userId, params?.query),
84
+ authClient.organization.listMembers,
85
+ params
86
+ )
87
+
88
+ export type UseListOrganizationMembersOptions<
89
+ TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
90
+ > = ListOrganizationMembersOptions<TAuthClient> &
91
+ ListOrganizationMembersParams<TAuthClient>
92
+
93
+ export function useListOrganizationMembers<
94
+ TAuthClient extends OrganizationAuthClient
95
+ >(
96
+ authClient: TAuthClient,
97
+ options: UseListOrganizationMembersOptions<TAuthClient> = {}
98
+ ) {
99
+ const session = useSession(authClient)
100
+ const activeOrganization = useActiveOrganization(authClient, {
101
+ enabled: !options.query?.organizationId
102
+ } as never)
103
+
104
+ return createQuery(() => {
105
+ const { query, fetchOptions, ...queryOptionsRest } = options
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 ListOrganizationMembersParams<TAuthClient>
112
+ const baseOptions = listOrganizationMembersOptions(
113
+ authClient,
114
+ userId,
115
+ params
116
+ )
117
+
118
+ return {
119
+ ...queryOptionsRest,
120
+ ...baseOptions,
121
+ queryFn: userId && organizationId ? baseOptions.queryFn : skipToken
122
+ }
123
+ })
124
+ }
@@ -0,0 +1,113 @@
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 ListOrganizationsData<
14
+ TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
15
+ > = Awaited<ReturnType<TAuthClient["organization"]["list"]>>
16
+
17
+ export type ListOrganizationsParams<
18
+ TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
19
+ > = Parameters<TAuthClient["organization"]["list"]>[0]
20
+
21
+ export type ListOrganizationsOptions<
22
+ TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
23
+ > = Omit<
24
+ ReturnType<typeof listOrganizationsOptions<TAuthClient>>,
25
+ "queryKey" | "queryFn"
26
+ >
27
+
28
+ export function listOrganizationsOptions<
29
+ TAuthClient extends OrganizationAuthClient
30
+ >(
31
+ authClient: TAuthClient,
32
+ userId: string | undefined,
33
+ params?: ListOrganizationsParams<TAuthClient>
34
+ ) {
35
+ return createOrganizationQueryOptions(
36
+ organizationQueryKeys.list(userId, params?.query),
37
+ authClient.organization.list,
38
+ params
39
+ )
40
+ }
41
+
42
+ export const ensureListOrganizations = <
43
+ TAuthClient extends OrganizationAuthClient
44
+ >(
45
+ queryClient: QueryClient,
46
+ authClient: TAuthClient,
47
+ userId: string | undefined,
48
+ params?: ListOrganizationsParams<TAuthClient>
49
+ ) =>
50
+ ensureOrganizationQuery(
51
+ queryClient,
52
+ organizationQueryKeys.list(userId, params?.query),
53
+ authClient.organization.list,
54
+ params
55
+ )
56
+
57
+ export const prefetchListOrganizations = <
58
+ TAuthClient extends OrganizationAuthClient
59
+ >(
60
+ queryClient: QueryClient,
61
+ authClient: TAuthClient,
62
+ userId: string | undefined,
63
+ params?: ListOrganizationsParams<TAuthClient>
64
+ ) =>
65
+ prefetchOrganizationQuery(
66
+ queryClient,
67
+ organizationQueryKeys.list(userId, params?.query),
68
+ authClient.organization.list,
69
+ params
70
+ )
71
+
72
+ export const fetchListOrganizations = <
73
+ TAuthClient extends OrganizationAuthClient
74
+ >(
75
+ queryClient: QueryClient,
76
+ authClient: TAuthClient,
77
+ userId: string | undefined,
78
+ params?: ListOrganizationsParams<TAuthClient>
79
+ ) =>
80
+ fetchOrganizationQuery(
81
+ queryClient,
82
+ organizationQueryKeys.list(userId, params?.query),
83
+ authClient.organization.list,
84
+ params
85
+ )
86
+
87
+ export type UseListOrganizationsOptions<
88
+ TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
89
+ > = ListOrganizationsOptions<TAuthClient> & ListOrganizationsParams<TAuthClient>
90
+
91
+ export function useListOrganizations<
92
+ TAuthClient extends OrganizationAuthClient
93
+ >(
94
+ authClient: TAuthClient,
95
+ options: UseListOrganizationsOptions<TAuthClient> = {}
96
+ ) {
97
+ const session = useSession(authClient)
98
+
99
+ return createQuery(() => {
100
+ const { query, fetchOptions, ...queryOptionsRest } = options
101
+ const userId = session.data?.user.id
102
+ const baseOptions = listOrganizationsOptions(authClient, userId, {
103
+ query,
104
+ fetchOptions
105
+ } as ListOrganizationsParams<TAuthClient>)
106
+
107
+ return {
108
+ ...queryOptionsRest,
109
+ ...baseOptions,
110
+ queryFn: userId ? baseOptions.queryFn : skipToken
111
+ }
112
+ })
113
+ }
@@ -0,0 +1,114 @@
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 ListUserInvitationsData<
14
+ TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
15
+ > = Awaited<ReturnType<TAuthClient["organization"]["listUserInvitations"]>>
16
+
17
+ export type ListUserInvitationsParams<
18
+ TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
19
+ > = Parameters<TAuthClient["organization"]["listUserInvitations"]>[0]
20
+
21
+ export type ListUserInvitationsOptions<
22
+ TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
23
+ > = Omit<
24
+ ReturnType<typeof listUserInvitationsOptions<TAuthClient>>,
25
+ "queryKey" | "queryFn"
26
+ >
27
+
28
+ export function listUserInvitationsOptions<
29
+ TAuthClient extends OrganizationAuthClient
30
+ >(
31
+ authClient: TAuthClient,
32
+ userId: string | undefined,
33
+ params?: ListUserInvitationsParams<TAuthClient>
34
+ ) {
35
+ return createOrganizationQueryOptions(
36
+ organizationQueryKeys.userInvitations.list(userId, params?.query),
37
+ authClient.organization.listUserInvitations,
38
+ params
39
+ )
40
+ }
41
+
42
+ export const ensureListUserInvitations = <
43
+ TAuthClient extends OrganizationAuthClient
44
+ >(
45
+ queryClient: QueryClient,
46
+ authClient: TAuthClient,
47
+ userId: string | undefined,
48
+ params?: ListUserInvitationsParams<TAuthClient>
49
+ ) =>
50
+ ensureOrganizationQuery(
51
+ queryClient,
52
+ organizationQueryKeys.userInvitations.list(userId, params?.query),
53
+ authClient.organization.listUserInvitations,
54
+ params
55
+ )
56
+
57
+ export const prefetchListUserInvitations = <
58
+ TAuthClient extends OrganizationAuthClient
59
+ >(
60
+ queryClient: QueryClient,
61
+ authClient: TAuthClient,
62
+ userId: string | undefined,
63
+ params?: ListUserInvitationsParams<TAuthClient>
64
+ ) =>
65
+ prefetchOrganizationQuery(
66
+ queryClient,
67
+ organizationQueryKeys.userInvitations.list(userId, params?.query),
68
+ authClient.organization.listUserInvitations,
69
+ params
70
+ )
71
+
72
+ export const fetchListUserInvitations = <
73
+ TAuthClient extends OrganizationAuthClient
74
+ >(
75
+ queryClient: QueryClient,
76
+ authClient: TAuthClient,
77
+ userId: string | undefined,
78
+ params?: ListUserInvitationsParams<TAuthClient>
79
+ ) =>
80
+ fetchOrganizationQuery(
81
+ queryClient,
82
+ organizationQueryKeys.userInvitations.list(userId, params?.query),
83
+ authClient.organization.listUserInvitations,
84
+ params
85
+ )
86
+
87
+ export type UseListUserInvitationsOptions<
88
+ TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
89
+ > = ListUserInvitationsOptions<TAuthClient> &
90
+ ListUserInvitationsParams<TAuthClient>
91
+
92
+ export function useListUserInvitations<
93
+ TAuthClient extends OrganizationAuthClient
94
+ >(
95
+ authClient: TAuthClient,
96
+ options: UseListUserInvitationsOptions<TAuthClient> = {}
97
+ ) {
98
+ const session = useSession(authClient)
99
+ const { query, fetchOptions, ...queryOptionsRest } = options
100
+
101
+ return createQuery(() => {
102
+ const userId = session.data?.user.id
103
+ const baseOptions = listUserInvitationsOptions(authClient, userId, {
104
+ query,
105
+ fetchOptions
106
+ } as ListUserInvitationsParams<TAuthClient>)
107
+
108
+ return {
109
+ ...queryOptionsRest,
110
+ ...baseOptions,
111
+ queryFn: userId ? baseOptions.queryFn : skipToken
112
+ }
113
+ })
114
+ }
@@ -0,0 +1,11 @@
1
+ import { organizationPlugin } from "@better-auth-ui/core/plugins"
2
+ import { useAuth } from "../../lib/auth-provider"
3
+
4
+ export function useOrganizationSlug() {
5
+ const auth = useAuth()
6
+ const plugin = auth.plugins?.find(
7
+ (candidate) => candidate.id === organizationPlugin.id
8
+ )
9
+
10
+ return (plugin as { slug?: string | null } | undefined)?.slug
11
+ }
@@ -0,0 +1,88 @@
1
+ import {
2
+ type DataTag,
3
+ type QueryClient,
4
+ type QueryKey,
5
+ queryOptions,
6
+ skipToken
7
+ } from "@tanstack/solid-query"
8
+ import type { BetterFetchError } from "better-auth/client"
9
+
10
+ export type OrganizationQueryMethod<TData = unknown> = (
11
+ // biome-ignore lint/suspicious/noExplicitAny: Better Auth generated methods use plugin-specific params.
12
+ params?: any
13
+ ) => Promise<TData>
14
+
15
+ export type OrganizationQueryParams<TMethod extends OrganizationQueryMethod> =
16
+ Parameters<TMethod>[0]
17
+ export type OrganizationQueryData<TMethod extends OrganizationQueryMethod> =
18
+ Awaited<ReturnType<TMethod>>
19
+
20
+ export function createOrganizationQueryOptions<
21
+ TMethod extends OrganizationQueryMethod,
22
+ const TQueryKey extends QueryKey
23
+ >(
24
+ queryKey: TQueryKey,
25
+ authFn: TMethod,
26
+ params?: OrganizationQueryParams<TMethod>
27
+ ) {
28
+ type TData = OrganizationQueryData<TMethod>
29
+
30
+ const options = queryOptions<TData, BetterFetchError, TData, TQueryKey>({
31
+ queryKey,
32
+ queryFn: ({ signal }) =>
33
+ authFn({
34
+ ...(params ?? {}),
35
+ fetchOptions: {
36
+ ...(params as { fetchOptions?: Record<string, unknown> } | undefined)
37
+ ?.fetchOptions,
38
+ signal,
39
+ throw: true
40
+ }
41
+ } as OrganizationQueryParams<TMethod>) as Promise<TData>
42
+ })
43
+
44
+ return options as typeof options & {
45
+ queryKey: DataTag<TQueryKey, TData, BetterFetchError>
46
+ }
47
+ }
48
+
49
+ export const ensureOrganizationQuery = <
50
+ TMethod extends OrganizationQueryMethod,
51
+ const TQueryKey extends QueryKey
52
+ >(
53
+ queryClient: QueryClient,
54
+ queryKey: TQueryKey,
55
+ authFn: TMethod,
56
+ params?: OrganizationQueryParams<TMethod>
57
+ ) =>
58
+ queryClient.ensureQueryData(
59
+ createOrganizationQueryOptions(queryKey, authFn, params) as never
60
+ )
61
+
62
+ export const prefetchOrganizationQuery = <
63
+ TMethod extends OrganizationQueryMethod,
64
+ const TQueryKey extends QueryKey
65
+ >(
66
+ queryClient: QueryClient,
67
+ queryKey: TQueryKey,
68
+ authFn: TMethod,
69
+ params?: OrganizationQueryParams<TMethod>
70
+ ) =>
71
+ queryClient.prefetchQuery(
72
+ createOrganizationQueryOptions(queryKey, authFn, params) as never
73
+ )
74
+
75
+ export const fetchOrganizationQuery = <
76
+ TMethod extends OrganizationQueryMethod,
77
+ const TQueryKey extends QueryKey
78
+ >(
79
+ queryClient: QueryClient,
80
+ queryKey: TQueryKey,
81
+ authFn: TMethod,
82
+ params?: OrganizationQueryParams<TMethod>
83
+ ) =>
84
+ queryClient.fetchQuery(
85
+ createOrganizationQueryOptions(queryKey, authFn, params) as never
86
+ )
87
+
88
+ export { skipToken }
@@ -0,0 +1,93 @@
1
+ import { passkeyQueryKeys } from "@better-auth-ui/core/plugins"
2
+ import type { QueryClient } from "@tanstack/solid-query"
3
+ import type { InferData, PasskeyAuthClient } 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 ListPasskeysData<TAuthClient extends PasskeyAuthClient> = InferData<
15
+ TAuthClient["passkey"]["listUserPasskeys"]
16
+ >
17
+ export type ListPasskeysParams<TAuthClient extends PasskeyAuthClient> =
18
+ Parameters<TAuthClient["passkey"]["listUserPasskeys"]>[0]
19
+ export type ListPasskeysOptions<TAuthClient extends PasskeyAuthClient> = Omit<
20
+ ReturnType<typeof listPasskeysOptions<TAuthClient>>,
21
+ "queryKey" | "queryFn"
22
+ >
23
+
24
+ export function listPasskeysOptions<TAuthClient extends PasskeyAuthClient>(
25
+ authClient: TAuthClient,
26
+ userId: string | undefined,
27
+ params?: ListPasskeysParams<TAuthClient>
28
+ ) {
29
+ return createUserScopedOptions(
30
+ passkeyQueryKeys.list(userId, params?.query),
31
+ authClient.passkey.listUserPasskeys,
32
+ params
33
+ )
34
+ }
35
+
36
+ export const ensureListPasskeys = <TAuthClient extends PasskeyAuthClient>(
37
+ queryClient: QueryClient,
38
+ authClient: TAuthClient,
39
+ userId: string,
40
+ params?: ListPasskeysParams<TAuthClient>
41
+ ) =>
42
+ ensureUserScopedQuery(
43
+ queryClient,
44
+ passkeyQueryKeys.list(userId, params?.query),
45
+ authClient.passkey.listUserPasskeys,
46
+ params
47
+ )
48
+
49
+ export const prefetchListPasskeys = <TAuthClient extends PasskeyAuthClient>(
50
+ queryClient: QueryClient,
51
+ authClient: TAuthClient,
52
+ userId: string,
53
+ params?: ListPasskeysParams<TAuthClient>
54
+ ) =>
55
+ prefetchUserScopedQuery(
56
+ queryClient,
57
+ passkeyQueryKeys.list(userId, params?.query),
58
+ authClient.passkey.listUserPasskeys,
59
+ params
60
+ )
61
+
62
+ export const fetchListPasskeys = <TAuthClient extends PasskeyAuthClient>(
63
+ queryClient: QueryClient,
64
+ authClient: TAuthClient,
65
+ userId: string,
66
+ params?: ListPasskeysParams<TAuthClient>
67
+ ) =>
68
+ fetchUserScopedQuery(
69
+ queryClient,
70
+ passkeyQueryKeys.list(userId, params?.query),
71
+ authClient.passkey.listUserPasskeys,
72
+ params
73
+ )
74
+
75
+ export type UseListPasskeysOptions<TAuthClient extends PasskeyAuthClient> =
76
+ ListPasskeysOptions<TAuthClient> & ListPasskeysParams<TAuthClient>
77
+
78
+ export function useListPasskeys<TAuthClient extends PasskeyAuthClient>(
79
+ authClient: TAuthClient,
80
+ options: UseListPasskeysOptions<TAuthClient> = {}
81
+ ) {
82
+ const session = useSession(authClient)
83
+ const userId = () => getSessionUserId(session)
84
+ const { query, fetchOptions, ...queryOptionsRest } = options
85
+
86
+ return createUserScopedQuery(
87
+ () => passkeyQueryKeys.list(userId(), query),
88
+ authClient.passkey.listUserPasskeys,
89
+ () => ({ query, fetchOptions }) as ListPasskeysParams<TAuthClient>,
90
+ () => Boolean(userId()),
91
+ () => queryOptionsRest
92
+ )
93
+ }
@@ -0,0 +1,94 @@
1
+ import { authQueryKeys } from "@better-auth-ui/core"
2
+ import type { QueryClient } from "@tanstack/solid-query"
3
+ import type { AuthClient, InferData } 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 AccountInfoData<TAuthClient extends AuthClient> = InferData<
15
+ TAuthClient["accountInfo"]
16
+ >
17
+ export type AccountInfoParams<TAuthClient extends AuthClient> = Parameters<
18
+ TAuthClient["accountInfo"]
19
+ >[0]
20
+ export type AccountInfoOptions<TAuthClient extends AuthClient> = Omit<
21
+ ReturnType<typeof accountInfoOptions<TAuthClient>>,
22
+ "queryKey" | "queryFn"
23
+ >
24
+
25
+ export function accountInfoOptions<TAuthClient extends AuthClient>(
26
+ authClient: TAuthClient,
27
+ userId: string | undefined,
28
+ params?: AccountInfoParams<TAuthClient>
29
+ ) {
30
+ return createUserScopedOptions(
31
+ authQueryKeys.accountInfo(userId, params?.query),
32
+ authClient.accountInfo,
33
+ params
34
+ )
35
+ }
36
+
37
+ export const ensureAccountInfo = <TAuthClient extends AuthClient>(
38
+ queryClient: QueryClient,
39
+ authClient: TAuthClient,
40
+ userId: string,
41
+ params?: AccountInfoParams<TAuthClient>
42
+ ) =>
43
+ ensureUserScopedQuery(
44
+ queryClient,
45
+ authQueryKeys.accountInfo(userId, params?.query),
46
+ authClient.accountInfo,
47
+ params
48
+ )
49
+
50
+ export const prefetchAccountInfo = <TAuthClient extends AuthClient>(
51
+ queryClient: QueryClient,
52
+ authClient: TAuthClient,
53
+ userId: string,
54
+ params?: AccountInfoParams<TAuthClient>
55
+ ) =>
56
+ prefetchUserScopedQuery(
57
+ queryClient,
58
+ authQueryKeys.accountInfo(userId, params?.query),
59
+ authClient.accountInfo,
60
+ params
61
+ )
62
+
63
+ export const fetchAccountInfo = <TAuthClient extends AuthClient>(
64
+ queryClient: QueryClient,
65
+ authClient: TAuthClient,
66
+ userId: string,
67
+ params?: AccountInfoParams<TAuthClient>
68
+ ) =>
69
+ fetchUserScopedQuery(
70
+ queryClient,
71
+ authQueryKeys.accountInfo(userId, params?.query),
72
+ authClient.accountInfo,
73
+ params
74
+ )
75
+
76
+ export type UseAccountInfoOptions<TAuthClient extends AuthClient> =
77
+ AccountInfoOptions<TAuthClient> & AccountInfoParams<TAuthClient>
78
+
79
+ export function useAccountInfo<TAuthClient extends AuthClient>(
80
+ authClient: TAuthClient,
81
+ options: UseAccountInfoOptions<TAuthClient> = {}
82
+ ) {
83
+ const session = useSession(authClient)
84
+ const userId = () => getSessionUserId(session)
85
+ const { query, fetchOptions, ...queryOptionsRest } = options
86
+
87
+ return createUserScopedQuery(
88
+ () => authQueryKeys.accountInfo(userId(), query),
89
+ authClient.accountInfo,
90
+ () => ({ query, fetchOptions }) as AccountInfoParams<TAuthClient>,
91
+ () => Boolean(userId() && query?.accountId),
92
+ () => queryOptionsRest
93
+ )
94
+ }