@better-auth-ui/react 1.6.3 → 1.6.5

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 (355) hide show
  1. package/dist/components/auth/auth-provider.d.ts +23 -8
  2. package/dist/components/auth/auth-provider.js +35 -19
  3. package/dist/components/{email → auth/email}/email-changed.js +2 -2
  4. package/dist/components/{email → auth/email}/email-localization.js +1 -1
  5. package/dist/components/{email → auth/email}/email-styles.js +1 -1
  6. package/dist/components/{email → auth/email}/email-verification.js +2 -2
  7. package/dist/components/{email → auth/email}/magic-link.js +2 -2
  8. package/dist/components/{email → auth/email}/new-device.js +2 -2
  9. package/dist/components/{email → auth/email}/otp-email.js +2 -2
  10. package/dist/components/{email → auth/email}/password-changed.js +2 -2
  11. package/dist/components/{email → auth/email}/reset-password.js +2 -2
  12. package/dist/components/auth/fetch-options-provider.d.ts +19 -0
  13. package/dist/components/auth/fetch-options-provider.js +30 -0
  14. package/dist/email.d.ts +1 -0
  15. package/dist/email.js +11 -0
  16. package/dist/hooks/auth/use-authenticate.d.ts +5 -28
  17. package/dist/hooks/auth/use-authenticate.js +12 -12
  18. package/dist/hooks/auth/use-user.d.ts +19 -314
  19. package/dist/hooks/auth/use-user.js +5 -5
  20. package/dist/hooks/use-auth-mutation.d.ts +12 -7
  21. package/dist/hooks/use-auth-plugin.d.ts +31 -0
  22. package/dist/hooks/use-auth-plugin.js +10 -0
  23. package/dist/hooks/use-auth-query.d.ts +3 -3
  24. package/dist/index.d.ts +34 -32
  25. package/dist/index.js +75 -83
  26. package/dist/lib/auth-client.d.ts +23 -3687
  27. package/dist/lib/auth-plugin.d.ts +61 -0
  28. package/dist/lib/auth-server.d.ts +16 -0
  29. package/dist/mutations/auth/request-password-reset-mutation.d.ts +26 -0
  30. package/dist/mutations/auth/request-password-reset-mutation.js +24 -0
  31. package/dist/mutations/auth/reset-password-mutation.d.ts +25 -0
  32. package/dist/mutations/auth/reset-password-mutation.js +24 -0
  33. package/dist/mutations/auth/send-verification-email-mutation.d.ts +24 -0
  34. package/dist/mutations/auth/send-verification-email-mutation.js +24 -0
  35. package/dist/mutations/auth/sign-in-email-mutation.d.ts +71 -0
  36. package/dist/mutations/auth/sign-in-email-mutation.js +29 -0
  37. package/dist/mutations/auth/sign-in-social-mutation.d.ts +77 -0
  38. package/dist/mutations/auth/sign-in-social-mutation.js +24 -0
  39. package/dist/mutations/auth/sign-out-mutation.d.ts +25 -0
  40. package/dist/mutations/auth/sign-out-mutation.js +28 -0
  41. package/dist/mutations/auth/sign-up-email-mutation.d.ts +105 -0
  42. package/dist/mutations/auth/sign-up-email-mutation.js +29 -0
  43. package/dist/mutations/auth-mutation-options.d.ts +37 -20
  44. package/dist/mutations/auth-mutation-options.js +2 -2
  45. package/dist/mutations/magic-link/sign-in-magic-link-mutation.d.ts +24 -0
  46. package/dist/mutations/magic-link/sign-in-magic-link-mutation.js +24 -0
  47. package/dist/mutations/multi-session/revoke-multi-session-mutation.d.ts +25 -0
  48. package/dist/mutations/multi-session/revoke-multi-session-mutation.js +29 -0
  49. package/dist/mutations/multi-session/set-active-session-mutation.d.ts +62 -0
  50. package/dist/mutations/multi-session/set-active-session-mutation.js +31 -0
  51. package/dist/mutations/passkey/add-passkey-mutation.d.ts +71 -0
  52. package/dist/mutations/passkey/add-passkey-mutation.js +29 -0
  53. package/dist/mutations/passkey/delete-passkey-mutation.d.ts +25 -0
  54. package/dist/mutations/passkey/delete-passkey-mutation.js +29 -0
  55. package/dist/mutations/passkey/sign-in-passkey-mutation.d.ts +105 -0
  56. package/dist/mutations/passkey/sign-in-passkey-mutation.js +29 -0
  57. package/dist/mutations/settings/change-email-mutation.d.ts +25 -0
  58. package/dist/mutations/settings/change-email-mutation.js +29 -0
  59. package/dist/mutations/settings/change-password-mutation.d.ts +78 -0
  60. package/dist/mutations/settings/change-password-mutation.js +24 -0
  61. package/dist/mutations/settings/delete-user-mutation.d.ts +26 -0
  62. package/dist/mutations/settings/delete-user-mutation.js +24 -0
  63. package/dist/mutations/settings/link-social-mutation.d.ts +26 -0
  64. package/dist/mutations/settings/link-social-mutation.js +24 -0
  65. package/dist/mutations/settings/revoke-session-mutation.d.ts +25 -0
  66. package/dist/mutations/settings/revoke-session-mutation.js +29 -0
  67. package/dist/mutations/settings/unlink-account-mutation.d.ts +25 -0
  68. package/dist/mutations/settings/unlink-account-mutation.js +29 -0
  69. package/dist/mutations/settings/update-user-mutation.d.ts +25 -0
  70. package/dist/mutations/settings/update-user-mutation.js +35 -0
  71. package/dist/mutations/username/is-username-available-mutation.d.ts +27 -0
  72. package/dist/mutations/username/is-username-available-mutation.js +24 -0
  73. package/dist/mutations/username/sign-in-username-mutation.d.ts +75 -0
  74. package/dist/mutations/username/sign-in-username-mutation.js +29 -0
  75. package/dist/plugins/captcha-plugin.d.ts +29 -0
  76. package/dist/plugins/captcha-plugin.js +29 -0
  77. package/dist/plugins.d.ts +1 -0
  78. package/dist/plugins.js +3 -0
  79. package/dist/queries/auth/session-query.d.ts +71 -0
  80. package/dist/queries/auth/session-query.js +30 -0
  81. package/dist/queries/auth-query-options.d.ts +26 -15
  82. package/dist/queries/multi-session/list-device-sessions-query.d.ts +76 -0
  83. package/dist/queries/multi-session/list-device-sessions-query.js +31 -0
  84. package/dist/queries/passkey/list-passkeys-query.d.ts +74 -0
  85. package/dist/queries/passkey/list-passkeys-query.js +31 -0
  86. package/dist/queries/settings/account-info-query.d.ts +85 -0
  87. package/dist/queries/settings/account-info-query.js +31 -0
  88. package/dist/queries/settings/list-accounts-query.d.ts +76 -0
  89. package/dist/queries/settings/list-accounts-query.js +31 -0
  90. package/dist/queries/settings/list-sessions-query.d.ts +74 -0
  91. package/dist/queries/settings/list-sessions-query.js +31 -0
  92. package/dist/server/queries/auth/session-query.d.ts +57 -0
  93. package/dist/server/queries/auth/session-query.js +13 -0
  94. package/dist/server/queries/multi-session/list-device-sessions-query.d.ts +60 -0
  95. package/dist/server/queries/multi-session/list-device-sessions-query.js +12 -0
  96. package/dist/server/queries/passkey/list-passkeys-query.d.ts +60 -0
  97. package/dist/server/queries/passkey/list-passkeys-query.js +12 -0
  98. package/dist/server/queries/settings/account-info-query.d.ts +68 -0
  99. package/dist/server/queries/settings/account-info-query.js +12 -0
  100. package/dist/server/queries/settings/list-accounts-query.d.ts +60 -0
  101. package/dist/server/queries/settings/list-accounts-query.js +12 -0
  102. package/dist/server/queries/settings/list-sessions-query.d.ts +60 -0
  103. package/dist/server/queries/settings/list-sessions-query.js +12 -0
  104. package/dist/server.d.ts +7 -0
  105. package/dist/server.js +7 -0
  106. package/package.json +28 -22
  107. package/src/components/auth/auth-provider.tsx +88 -25
  108. package/src/components/{email → auth/email}/email-changed.tsx +1 -1
  109. package/src/components/{email → auth/email}/email-verification.tsx +1 -1
  110. package/src/components/{email → auth/email}/magic-link.tsx +1 -1
  111. package/src/components/{email → auth/email}/new-device.tsx +1 -1
  112. package/src/components/{email → auth/email}/otp-email.tsx +1 -1
  113. package/src/components/{email → auth/email}/password-changed.tsx +1 -1
  114. package/src/components/{email → auth/email}/reset-password.tsx +1 -1
  115. package/src/components/auth/fetch-options-provider.tsx +77 -0
  116. package/src/email.ts +1 -0
  117. package/src/hooks/auth/use-authenticate.ts +12 -6
  118. package/src/hooks/auth/use-user.ts +14 -9
  119. package/src/hooks/use-auth-mutation.ts +30 -12
  120. package/src/hooks/use-auth-plugin.ts +50 -0
  121. package/src/hooks/use-auth-query.ts +11 -7
  122. package/src/index.ts +34 -32
  123. package/src/lib/auth-client.ts +33 -31
  124. package/src/lib/auth-plugin.ts +77 -0
  125. package/src/lib/auth-server.ts +30 -0
  126. package/src/mutations/auth/request-password-reset-mutation.ts +58 -0
  127. package/src/mutations/auth/reset-password-mutation.ts +60 -0
  128. package/src/mutations/auth/send-verification-email-mutation.ts +58 -0
  129. package/src/mutations/auth/sign-in-email-mutation.ts +78 -0
  130. package/src/mutations/auth/sign-in-social-mutation.ts +64 -0
  131. package/src/mutations/auth/sign-out-mutation.ts +71 -0
  132. package/src/mutations/auth/sign-up-email-mutation.ts +74 -0
  133. package/src/mutations/auth-mutation-options.ts +83 -38
  134. package/src/mutations/magic-link/sign-in-magic-link-mutation.ts +59 -0
  135. package/src/mutations/multi-session/revoke-multi-session-mutation.ts +70 -0
  136. package/src/mutations/multi-session/set-active-session-mutation.ts +98 -0
  137. package/src/mutations/passkey/add-passkey-mutation.ts +66 -0
  138. package/src/mutations/passkey/delete-passkey-mutation.ts +66 -0
  139. package/src/mutations/passkey/sign-in-passkey-mutation.ts +74 -0
  140. package/src/mutations/settings/change-email-mutation.ts +67 -0
  141. package/src/mutations/settings/change-password-mutation.ts +59 -0
  142. package/src/mutations/settings/delete-user-mutation.ts +59 -0
  143. package/src/mutations/settings/link-social-mutation.ts +59 -0
  144. package/src/mutations/settings/revoke-session-mutation.ts +69 -0
  145. package/src/mutations/settings/unlink-account-mutation.ts +67 -0
  146. package/src/mutations/settings/update-user-mutation.ts +82 -0
  147. package/src/mutations/username/is-username-available-mutation.ts +62 -0
  148. package/src/mutations/username/sign-in-username-mutation.ts +74 -0
  149. package/src/plugins/captcha-plugin.tsx +75 -0
  150. package/src/plugins.ts +3 -0
  151. package/src/queries/auth/session-query.ts +135 -0
  152. package/src/queries/auth-query-options.ts +61 -12
  153. package/src/queries/multi-session/list-device-sessions-query.ts +177 -0
  154. package/src/queries/passkey/list-passkeys-query.ts +154 -0
  155. package/src/queries/settings/account-info-query.ts +158 -0
  156. package/src/queries/settings/list-accounts-query.ts +156 -0
  157. package/src/queries/settings/list-sessions-query.ts +154 -0
  158. package/src/server/queries/auth/session-query.ts +94 -0
  159. package/src/server/queries/multi-session/list-device-sessions-query.ts +102 -0
  160. package/src/server/queries/passkey/list-passkeys-query.ts +100 -0
  161. package/src/server/queries/settings/account-info-query.ts +101 -0
  162. package/src/server/queries/settings/list-accounts-query.ts +101 -0
  163. package/src/server/queries/settings/list-sessions-query.ts +101 -0
  164. package/src/server.ts +7 -0
  165. package/dist/core.d.ts +0 -1
  166. package/dist/core.js +0 -1
  167. package/dist/hooks/auth/use-is-username-available.d.ts +0 -20
  168. package/dist/hooks/auth/use-is-username-available.js +0 -13
  169. package/dist/hooks/auth/use-request-password-reset.d.ts +0 -21
  170. package/dist/hooks/auth/use-request-password-reset.js +0 -13
  171. package/dist/hooks/auth/use-reset-password.d.ts +0 -23
  172. package/dist/hooks/auth/use-reset-password.js +0 -13
  173. package/dist/hooks/auth/use-send-verification-email.d.ts +0 -19
  174. package/dist/hooks/auth/use-send-verification-email.js +0 -13
  175. package/dist/hooks/auth/use-session.d.ts +0 -35
  176. package/dist/hooks/auth/use-session.js +0 -16
  177. package/dist/hooks/auth/use-sign-in-email.d.ts +0 -26
  178. package/dist/hooks/auth/use-sign-in-email.js +0 -17
  179. package/dist/hooks/auth/use-sign-in-magic-link.d.ts +0 -27
  180. package/dist/hooks/auth/use-sign-in-magic-link.js +0 -13
  181. package/dist/hooks/auth/use-sign-in-passkey.d.ts +0 -21
  182. package/dist/hooks/auth/use-sign-in-passkey.js +0 -17
  183. package/dist/hooks/auth/use-sign-in-social.d.ts +0 -63
  184. package/dist/hooks/auth/use-sign-in-social.js +0 -13
  185. package/dist/hooks/auth/use-sign-in-username.d.ts +0 -25
  186. package/dist/hooks/auth/use-sign-in-username.js +0 -17
  187. package/dist/hooks/auth/use-sign-out.d.ts +0 -18
  188. package/dist/hooks/auth/use-sign-out.js +0 -16
  189. package/dist/hooks/auth/use-sign-up-email.d.ts +0 -1186
  190. package/dist/hooks/auth/use-sign-up-email.js +0 -17
  191. package/dist/hooks/settings/use-account-info.d.ts +0 -17
  192. package/dist/hooks/settings/use-account-info.js +0 -18
  193. package/dist/hooks/settings/use-add-passkey.d.ts +0 -21
  194. package/dist/hooks/settings/use-add-passkey.js +0 -17
  195. package/dist/hooks/settings/use-change-email.d.ts +0 -21
  196. package/dist/hooks/settings/use-change-email.js +0 -17
  197. package/dist/hooks/settings/use-change-password.d.ts +0 -21
  198. package/dist/hooks/settings/use-change-password.js +0 -13
  199. package/dist/hooks/settings/use-delete-passkey.d.ts +0 -19
  200. package/dist/hooks/settings/use-delete-passkey.js +0 -17
  201. package/dist/hooks/settings/use-delete-user.d.ts +0 -24
  202. package/dist/hooks/settings/use-delete-user.js +0 -13
  203. package/dist/hooks/settings/use-link-social.d.ts +0 -43
  204. package/dist/hooks/settings/use-link-social.js +0 -13
  205. package/dist/hooks/settings/use-list-accounts.d.ts +0 -22
  206. package/dist/hooks/settings/use-list-accounts.js +0 -15
  207. package/dist/hooks/settings/use-list-device-sessions.d.ts +0 -34
  208. package/dist/hooks/settings/use-list-device-sessions.js +0 -15
  209. package/dist/hooks/settings/use-list-sessions.d.ts +0 -23
  210. package/dist/hooks/settings/use-list-sessions.js +0 -15
  211. package/dist/hooks/settings/use-list-user-passkeys.d.ts +0 -14
  212. package/dist/hooks/settings/use-list-user-passkeys.js +0 -15
  213. package/dist/hooks/settings/use-revoke-multi-session.d.ts +0 -19
  214. package/dist/hooks/settings/use-revoke-multi-session.js +0 -17
  215. package/dist/hooks/settings/use-revoke-session.d.ts +0 -19
  216. package/dist/hooks/settings/use-revoke-session.js +0 -17
  217. package/dist/hooks/settings/use-set-active-session.d.ts +0 -20
  218. package/dist/hooks/settings/use-set-active-session.js +0 -20
  219. package/dist/hooks/settings/use-unlink-account.d.ts +0 -21
  220. package/dist/hooks/settings/use-unlink-account.js +0 -17
  221. package/dist/hooks/settings/use-update-user.d.ts +0 -1185
  222. package/dist/hooks/settings/use-update-user.js +0 -24
  223. package/dist/lib/auth-client.js +0 -11
  224. package/dist/lib/auth-config.d.ts +0 -43
  225. package/dist/lib/auth-context.d.ts +0 -2
  226. package/dist/lib/auth-context.js +0 -6
  227. package/dist/mutations/auth/is-username-available-options.d.ts +0 -19
  228. package/dist/mutations/auth/is-username-available-options.js +0 -7
  229. package/dist/mutations/auth/request-password-reset-options.d.ts +0 -15
  230. package/dist/mutations/auth/request-password-reset-options.js +0 -7
  231. package/dist/mutations/auth/reset-password-options.d.ts +0 -17
  232. package/dist/mutations/auth/reset-password-options.js +0 -7
  233. package/dist/mutations/auth/send-verification-email-options.d.ts +0 -15
  234. package/dist/mutations/auth/send-verification-email-options.js +0 -7
  235. package/dist/mutations/auth/sign-in-email-options.d.ts +0 -23
  236. package/dist/mutations/auth/sign-in-email-options.js +0 -11
  237. package/dist/mutations/auth/sign-in-magic-link-options.d.ts +0 -23
  238. package/dist/mutations/auth/sign-in-magic-link-options.js +0 -11
  239. package/dist/mutations/auth/sign-in-passkey-options.d.ts +0 -15
  240. package/dist/mutations/auth/sign-in-passkey-options.js +0 -11
  241. package/dist/mutations/auth/sign-in-social-options.d.ts +0 -61
  242. package/dist/mutations/auth/sign-in-social-options.js +0 -11
  243. package/dist/mutations/auth/sign-in-username-options.d.ts +0 -19
  244. package/dist/mutations/auth/sign-in-username-options.js +0 -11
  245. package/dist/mutations/auth/sign-out-options.d.ts +0 -12
  246. package/dist/mutations/auth/sign-out-options.js +0 -7
  247. package/dist/mutations/auth/sign-up-email-options.d.ts +0 -1180
  248. package/dist/mutations/auth/sign-up-email-options.js +0 -11
  249. package/dist/mutations/settings/add-passkey-options.d.ts +0 -15
  250. package/dist/mutations/settings/add-passkey-options.js +0 -11
  251. package/dist/mutations/settings/change-email-options.d.ts +0 -15
  252. package/dist/mutations/settings/change-email-options.js +0 -7
  253. package/dist/mutations/settings/change-password-options.d.ts +0 -17
  254. package/dist/mutations/settings/change-password-options.js +0 -7
  255. package/dist/mutations/settings/delete-passkey-options.d.ts +0 -13
  256. package/dist/mutations/settings/delete-passkey-options.js +0 -11
  257. package/dist/mutations/settings/delete-user-options.d.ts +0 -20
  258. package/dist/mutations/settings/delete-user-options.js +0 -7
  259. package/dist/mutations/settings/link-social-options.d.ts +0 -39
  260. package/dist/mutations/settings/link-social-options.js +0 -7
  261. package/dist/mutations/settings/revoke-multi-session-options.d.ts +0 -13
  262. package/dist/mutations/settings/revoke-multi-session-options.js +0 -11
  263. package/dist/mutations/settings/revoke-session-options.d.ts +0 -13
  264. package/dist/mutations/settings/revoke-session-options.js +0 -7
  265. package/dist/mutations/settings/set-active-session-options.d.ts +0 -13
  266. package/dist/mutations/settings/set-active-session-options.js +0 -11
  267. package/dist/mutations/settings/unlink-account-options.d.ts +0 -15
  268. package/dist/mutations/settings/unlink-account-options.js +0 -7
  269. package/dist/mutations/settings/update-user-options.d.ts +0 -1182
  270. package/dist/mutations/settings/update-user-options.js +0 -7
  271. package/dist/queries/auth/session-options.d.ts +0 -110
  272. package/dist/queries/auth/session-options.js +0 -7
  273. package/dist/queries/settings/account-info-options.d.ts +0 -32
  274. package/dist/queries/settings/account-info-options.js +0 -12
  275. package/dist/queries/settings/list-accounts-options.d.ts +0 -53
  276. package/dist/queries/settings/list-accounts-options.js +0 -12
  277. package/dist/queries/settings/list-device-sessions-options.d.ts +0 -99
  278. package/dist/queries/settings/list-device-sessions-options.js +0 -12
  279. package/dist/queries/settings/list-sessions-options.d.ts +0 -54
  280. package/dist/queries/settings/list-sessions-options.js +0 -12
  281. package/dist/queries/settings/list-user-passkeys-options.d.ts +0 -18
  282. package/dist/queries/settings/list-user-passkeys-options.js +0 -12
  283. package/src/core.ts +0 -1
  284. package/src/hooks/auth/use-is-username-available.ts +0 -31
  285. package/src/hooks/auth/use-request-password-reset.ts +0 -33
  286. package/src/hooks/auth/use-reset-password.ts +0 -31
  287. package/src/hooks/auth/use-send-verification-email.ts +0 -31
  288. package/src/hooks/auth/use-session.ts +0 -31
  289. package/src/hooks/auth/use-sign-in-email.ts +0 -41
  290. package/src/hooks/auth/use-sign-in-magic-link.ts +0 -29
  291. package/src/hooks/auth/use-sign-in-passkey.ts +0 -40
  292. package/src/hooks/auth/use-sign-in-social.ts +0 -31
  293. package/src/hooks/auth/use-sign-in-username.ts +0 -40
  294. package/src/hooks/auth/use-sign-out.ts +0 -34
  295. package/src/hooks/auth/use-sign-up-email.ts +0 -40
  296. package/src/hooks/settings/use-account-info.ts +0 -40
  297. package/src/hooks/settings/use-add-passkey.ts +0 -37
  298. package/src/hooks/settings/use-change-email.ts +0 -37
  299. package/src/hooks/settings/use-change-password.ts +0 -29
  300. package/src/hooks/settings/use-delete-passkey.ts +0 -37
  301. package/src/hooks/settings/use-delete-user.ts +0 -29
  302. package/src/hooks/settings/use-link-social.ts +0 -29
  303. package/src/hooks/settings/use-list-accounts.ts +0 -39
  304. package/src/hooks/settings/use-list-device-sessions.ts +0 -39
  305. package/src/hooks/settings/use-list-sessions.ts +0 -39
  306. package/src/hooks/settings/use-list-user-passkeys.ts +0 -39
  307. package/src/hooks/settings/use-revoke-multi-session.ts +0 -39
  308. package/src/hooks/settings/use-revoke-session.ts +0 -39
  309. package/src/hooks/settings/use-set-active-session.ts +0 -58
  310. package/src/hooks/settings/use-unlink-account.ts +0 -37
  311. package/src/hooks/settings/use-update-user.ts +0 -50
  312. package/src/lib/auth-config.ts +0 -48
  313. package/src/lib/auth-context.ts +0 -6
  314. package/src/mutations/auth/is-username-available-options.ts +0 -18
  315. package/src/mutations/auth/request-password-reset-options.ts +0 -14
  316. package/src/mutations/auth/reset-password-options.ts +0 -14
  317. package/src/mutations/auth/send-verification-email-options.ts +0 -14
  318. package/src/mutations/auth/sign-in-email-options.ts +0 -19
  319. package/src/mutations/auth/sign-in-magic-link-options.ts +0 -15
  320. package/src/mutations/auth/sign-in-passkey-options.ts +0 -15
  321. package/src/mutations/auth/sign-in-social-options.ts +0 -19
  322. package/src/mutations/auth/sign-in-username-options.ts +0 -15
  323. package/src/mutations/auth/sign-out-options.ts +0 -11
  324. package/src/mutations/auth/sign-up-email-options.ts +0 -15
  325. package/src/mutations/settings/add-passkey-options.ts +0 -15
  326. package/src/mutations/settings/change-email-options.ts +0 -11
  327. package/src/mutations/settings/change-password-options.ts +0 -14
  328. package/src/mutations/settings/delete-passkey-options.ts +0 -15
  329. package/src/mutations/settings/delete-user-options.ts +0 -11
  330. package/src/mutations/settings/link-social-options.ts +0 -11
  331. package/src/mutations/settings/revoke-multi-session-options.ts +0 -15
  332. package/src/mutations/settings/revoke-session-options.ts +0 -14
  333. package/src/mutations/settings/set-active-session-options.ts +0 -15
  334. package/src/mutations/settings/unlink-account-options.ts +0 -14
  335. package/src/mutations/settings/update-user-options.ts +0 -15
  336. package/src/queries/auth/session-options.ts +0 -18
  337. package/src/queries/settings/account-info-options.ts +0 -25
  338. package/src/queries/settings/list-accounts-options.ts +0 -26
  339. package/src/queries/settings/list-device-sessions-options.ts +0 -24
  340. package/src/queries/settings/list-sessions-options.ts +0 -23
  341. package/src/queries/settings/list-user-passkeys-options.ts +0 -23
  342. /package/dist/components/{email → auth/email}/email-changed.d.ts +0 -0
  343. /package/dist/components/{email → auth/email}/email-localization.d.ts +0 -0
  344. /package/dist/components/{email → auth/email}/email-styles.d.ts +0 -0
  345. /package/dist/components/{email → auth/email}/email-verification.d.ts +0 -0
  346. /package/dist/components/{email → auth/email}/index.d.ts +0 -0
  347. /package/dist/components/{email → auth/email}/index.js +0 -0
  348. /package/dist/components/{email → auth/email}/magic-link.d.ts +0 -0
  349. /package/dist/components/{email → auth/email}/new-device.d.ts +0 -0
  350. /package/dist/components/{email → auth/email}/otp-email.d.ts +0 -0
  351. /package/dist/components/{email → auth/email}/password-changed.d.ts +0 -0
  352. /package/dist/components/{email → auth/email}/reset-password.d.ts +0 -0
  353. /package/src/components/{email → auth/email}/email-localization.tsx +0 -0
  354. /package/src/components/{email → auth/email}/email-styles.tsx +0 -0
  355. /package/src/components/{email → auth/email}/index.ts +0 -0
@@ -0,0 +1,135 @@
1
+ import { authQueryKeys } from "@better-auth-ui/core"
2
+ import {
3
+ type DataTag,
4
+ type QueryClient,
5
+ queryOptions,
6
+ useQuery
7
+ } from "@tanstack/react-query"
8
+ import type { BetterFetchError } from "better-auth/react"
9
+
10
+ import type { AuthClient, InferData } from "../../lib/auth-client"
11
+
12
+ export type SessionData<TAuthClient extends AuthClient = AuthClient> =
13
+ InferData<TAuthClient["getSession"]>
14
+
15
+ export type Session<TAuthClient extends AuthClient = AuthClient> = NonNullable<
16
+ SessionData<TAuthClient>
17
+ >
18
+
19
+ export type SessionParams<TAuthClient extends AuthClient> = Parameters<
20
+ TAuthClient["getSession"]
21
+ >[0]
22
+
23
+ export type SessionOptions<TAuthClient extends AuthClient> = Omit<
24
+ ReturnType<typeof sessionOptions<TAuthClient>>,
25
+ "queryKey" | "queryFn"
26
+ >
27
+
28
+ /**
29
+ * Query options factory for the current session.
30
+ *
31
+ * Shares a query key with the server-side `sessionOptions` so that data
32
+ * prefetched during SSR hydrates seamlessly into the client cache.
33
+ *
34
+ * @param authClient - The Better Auth client.
35
+ * @param params - Parameters forwarded to `authClient.getSession`.
36
+ */
37
+ export function sessionOptions<TAuthClient extends AuthClient>(
38
+ authClient: TAuthClient,
39
+ params?: SessionParams<TAuthClient>
40
+ ) {
41
+ type TData = SessionData<TAuthClient>
42
+ const queryKey = authQueryKeys.session
43
+
44
+ const options = queryOptions<TData, BetterFetchError, TData, typeof queryKey>(
45
+ {
46
+ queryKey,
47
+ queryFn: ({ signal }) =>
48
+ authClient.getSession({
49
+ ...params,
50
+ fetchOptions: { ...params?.fetchOptions, signal, throw: true }
51
+ }) as Promise<TData>
52
+ }
53
+ )
54
+
55
+ return options as typeof options & {
56
+ queryKey: DataTag<typeof queryKey, TData, BetterFetchError>
57
+ }
58
+ }
59
+
60
+ /**
61
+ * Get the current session from the query cache, calling `fetchSession` under
62
+ * the hood if no cached entry exists. Resolves with the session data, making
63
+ * it ideal for loaders or `beforeLoad` guards.
64
+ *
65
+ * @param queryClient - The React Query client.
66
+ * @param authClient - The Better Auth client.
67
+ * @param params - Parameters forwarded to `authClient.getSession`.
68
+ */
69
+ export const ensureSession = <TAuthClient extends AuthClient>(
70
+ queryClient: QueryClient,
71
+ authClient: TAuthClient,
72
+ params?: SessionParams<TAuthClient>
73
+ ) => queryClient.ensureQueryData(sessionOptions(authClient, params))
74
+
75
+ /**
76
+ * Prefetch the current session into the query cache. Behaves like
77
+ * `fetchSession`, but does not throw on error and does not return the data —
78
+ * use this to warm the cache without blocking navigation.
79
+ *
80
+ * @param queryClient - The React Query client.
81
+ * @param authClient - The Better Auth client.
82
+ * @param params - Parameters forwarded to `authClient.getSession`.
83
+ */
84
+ export const prefetchSession = <TAuthClient extends AuthClient>(
85
+ queryClient: QueryClient,
86
+ authClient: TAuthClient,
87
+ params?: SessionParams<TAuthClient>
88
+ ) => queryClient.prefetchQuery(sessionOptions(authClient, params))
89
+
90
+ /**
91
+ * Fetch and cache the current session, resolving with the data or throwing
92
+ * on error. If a cached entry exists and is neither invalidated nor older
93
+ * than `staleTime`, the cached value is returned without a network call;
94
+ * otherwise the latest data is fetched.
95
+ *
96
+ * @param queryClient - The React Query client.
97
+ * @param authClient - The Better Auth client.
98
+ * @param params - Parameters forwarded to `authClient.getSession`.
99
+ */
100
+ export const fetchSession = <TAuthClient extends AuthClient>(
101
+ queryClient: QueryClient,
102
+ authClient: TAuthClient,
103
+ params?: SessionParams<TAuthClient>
104
+ ) => queryClient.fetchQuery(sessionOptions(authClient, params))
105
+
106
+ export type UseSessionOptions<TAuthClient extends AuthClient> =
107
+ SessionOptions<TAuthClient> & SessionParams<TAuthClient>
108
+
109
+ /**
110
+ * Subscribe to the current session via TanStack Query.
111
+ *
112
+ * Shares a query key with the server-side `sessionOptions`, so SSR-hydrated
113
+ * session data is reused from the cache without an immediate refetch.
114
+ *
115
+ * @param authClient - The Better Auth client.
116
+ * @param options - `getSession` params (`query`, `fetchOptions`) merged
117
+ * with `useQuery` options (e.g. `enabled`, `staleTime`, `select`).
118
+ * @param queryClient - Optional custom `QueryClient`. Defaults to the client
119
+ * from the nearest `QueryClientProvider`.
120
+ */
121
+ export function useSession<TAuthClient extends AuthClient>(
122
+ authClient: TAuthClient,
123
+ options: UseSessionOptions<TAuthClient> = {},
124
+ queryClient?: QueryClient
125
+ ) {
126
+ const { query, fetchOptions, ...queryOptions } = options
127
+
128
+ return useQuery(
129
+ {
130
+ ...sessionOptions(authClient, { query, fetchOptions }),
131
+ ...queryOptions
132
+ },
133
+ queryClient
134
+ )
135
+ }
@@ -1,34 +1,83 @@
1
- import { type QueryKey, queryOptions } from "@tanstack/react-query"
1
+ import {
2
+ type DataTag,
3
+ type QueryKey,
4
+ queryOptions,
5
+ type UseQueryOptions
6
+ } from "@tanstack/react-query"
2
7
  import type { BetterFetchError, BetterFetchOption } from "better-auth/client"
3
8
 
4
- export type AuthFn<TData = unknown> = (params: {
9
+ /**
10
+ * Read-style Better Auth client method (params shape `{ query?, fetchOptions? }`).
11
+ * Mutation-style endpoints use `AuthMutationFn` / `useAuthMutation` instead.
12
+ */
13
+ export type AuthQueryFn<TData = unknown> = (params: {
5
14
  query?: Record<string, unknown>
6
15
  fetchOptions?: BetterFetchOption
7
16
  }) => Promise<{ data: TData }>
8
17
 
9
- type AuthFnData<TFn> = TFn extends AuthFn<infer TData> ? TData : never
18
+ export type AuthQueryFnData<TFn> =
19
+ TFn extends AuthQueryFn<infer TData> ? TData : never
20
+
21
+ /**
22
+ * Final query key produced by {@link authQueryOptions}: the caller's prefix
23
+ * followed by `params.query ?? null`.
24
+ */
25
+ export type AuthQueryKey<
26
+ TFn extends AuthQueryFn = AuthQueryFn,
27
+ TPrefix extends QueryKey = QueryKey
28
+ > = readonly [...TPrefix, NonNullable<Parameters<TFn>[0]>["query"] | null]
29
+
30
+ /**
31
+ * Return type of {@link authQueryOptions}. Named so TypeScript emits
32
+ * `DataTag<…>` by reference in the `.d.ts`, instead of the raw
33
+ * `{ [dataTagSymbol]: … }` intersection — which triggers a declaration-emit
34
+ * bug where `dataTagSymbol` isn't re-imported at the use site and silently
35
+ * breaks `setQueryData`/`getQueryData` type inference at the consumer.
36
+ */
37
+ export type AuthQueryOptions<
38
+ TFn extends AuthQueryFn = AuthQueryFn,
39
+ TPrefix extends QueryKey = QueryKey
40
+ > = Omit<
41
+ UseQueryOptions<
42
+ AuthQueryFnData<TFn>,
43
+ BetterFetchError,
44
+ AuthQueryFnData<TFn>,
45
+ AuthQueryKey<TFn, TPrefix>
46
+ >,
47
+ "queryKey"
48
+ > & {
49
+ queryKey: DataTag<
50
+ AuthQueryKey<TFn, TPrefix>,
51
+ AuthQueryFnData<TFn>,
52
+ BetterFetchError
53
+ >
54
+ }
10
55
 
11
56
  /**
12
57
  * Build `queryOptions` for a Better Auth endpoint.
13
58
  *
14
- * Appends `params.query` (or `null`) to the supplied `queryKey` so cache
15
- * identity tracks endpoint inputs. Wires `throw: true` and the React Query
16
- * `AbortSignal` into `fetchOptions`.
59
+ * Injects React Query's `signal` and `throw: true` into `fetchOptions` so the
60
+ * request is cancelled on unmount and errors surface as `BetterFetchError`
61
+ * instead of `{ data, error }`.
17
62
  *
18
63
  * @param authFn - Better Auth client method (e.g. `authClient.getSession`).
19
64
  * @param queryKey - Scope prefix for the key. `params.query` is appended automatically.
20
65
  * @param params - Parameters forwarded to `authFn`.
21
66
  */
22
67
  export function authQueryOptions<
23
- TFn extends AuthFn,
24
- const TQueryKey extends QueryKey
25
- >(authFn: TFn, queryKey: TQueryKey, params?: Parameters<TFn>[0]) {
26
- return queryOptions<AuthFnData<TFn>, BetterFetchError>({
68
+ TFn extends AuthQueryFn,
69
+ const TPrefix extends QueryKey
70
+ >(
71
+ authFn: TFn,
72
+ queryKey: TPrefix,
73
+ params?: Parameters<TFn>[0]
74
+ ): AuthQueryOptions<TFn, TPrefix> {
75
+ return queryOptions<AuthQueryFnData<TFn>, BetterFetchError>({
27
76
  queryKey: [...queryKey, params?.query ?? null] as const,
28
77
  queryFn: ({ signal }) =>
29
78
  authFn({
30
79
  ...params,
31
80
  fetchOptions: { ...params?.fetchOptions, signal, throw: true }
32
- }) as Promise<AuthFnData<TFn>>
33
- })
81
+ }) as Promise<AuthQueryFnData<TFn>>
82
+ }) as AuthQueryOptions<TFn, TPrefix>
34
83
  }
@@ -0,0 +1,177 @@
1
+ import { authQueryKeys } from "@better-auth-ui/core"
2
+ import {
3
+ type DataTag,
4
+ type QueryClient,
5
+ queryOptions,
6
+ skipToken,
7
+ useQuery
8
+ } from "@tanstack/react-query"
9
+ import type { BetterFetchError } from "better-auth/react"
10
+
11
+ import type { InferData, MultiSessionAuthClient } from "../../lib/auth-client"
12
+ import { useSession } from "../auth/session-query"
13
+
14
+ export type ListDeviceSessionsData<
15
+ TAuthClient extends MultiSessionAuthClient = MultiSessionAuthClient
16
+ > = InferData<TAuthClient["multiSession"]["listDeviceSessions"]>
17
+
18
+ export type ListDeviceSession<
19
+ TAuthClient extends MultiSessionAuthClient = MultiSessionAuthClient
20
+ > = NonNullable<ListDeviceSessionsData<TAuthClient>>[number]
21
+
22
+ export type ListDeviceSessionsParams<
23
+ TAuthClient extends MultiSessionAuthClient
24
+ > = Parameters<TAuthClient["multiSession"]["listDeviceSessions"]>[0]
25
+
26
+ export type ListDeviceSessionsOptions<
27
+ TAuthClient extends MultiSessionAuthClient
28
+ > = Omit<
29
+ ReturnType<typeof listDeviceSessionsOptions<TAuthClient>>,
30
+ "queryKey" | "queryFn"
31
+ >
32
+
33
+ /**
34
+ * Query options factory for the current user's device sessions.
35
+ *
36
+ * @param authClient - The Better Auth client with the multi-session plugin.
37
+ * @param userId - The current signed-in user's ID. Used for cache partitioning.
38
+ * @param params - Parameters forwarded to `authClient.multiSession.listDeviceSessions`.
39
+ */
40
+ export function listDeviceSessionsOptions<
41
+ TAuthClient extends MultiSessionAuthClient
42
+ >(
43
+ authClient: TAuthClient,
44
+ userId: string | undefined,
45
+ params?: ListDeviceSessionsParams<TAuthClient>
46
+ ) {
47
+ type TData = ListDeviceSessionsData<TAuthClient>
48
+ const queryKey = authQueryKeys.listDeviceSessions(userId, params?.query)
49
+
50
+ const options = queryOptions<TData, BetterFetchError, TData, typeof queryKey>(
51
+ {
52
+ queryKey,
53
+ queryFn: ({ signal }) =>
54
+ authClient.multiSession.listDeviceSessions({
55
+ ...params,
56
+ fetchOptions: { ...params?.fetchOptions, signal, throw: true }
57
+ }) as Promise<TData>
58
+ }
59
+ )
60
+
61
+ return options as typeof options & {
62
+ queryKey: DataTag<typeof queryKey, TData, BetterFetchError>
63
+ }
64
+ }
65
+
66
+ /**
67
+ * Get the current user's device sessions from the query cache, calling
68
+ * `fetchListDeviceSessions` under the hood if no cached entry exists.
69
+ * Resolves with the device session list, making it ideal for loaders or
70
+ * `beforeLoad` guards.
71
+ *
72
+ * @param queryClient - The React Query client.
73
+ * @param authClient - The Better Auth client with the multi-session plugin.
74
+ * @param userId - The signed-in user's ID, used for cache partitioning.
75
+ * @param params - Parameters forwarded to `authClient.multiSession.listDeviceSessions`.
76
+ */
77
+ export const ensureListDeviceSessions = <
78
+ TAuthClient extends MultiSessionAuthClient
79
+ >(
80
+ queryClient: QueryClient,
81
+ authClient: TAuthClient,
82
+ userId: string,
83
+ params?: ListDeviceSessionsParams<TAuthClient>
84
+ ) =>
85
+ queryClient.ensureQueryData(
86
+ listDeviceSessionsOptions(authClient, userId, params)
87
+ )
88
+
89
+ /**
90
+ * Prefetch the current user's device sessions into the query cache. Behaves
91
+ * like `fetchListDeviceSessions`, but does not throw on error and does not
92
+ * return the data — use this to warm the cache without blocking navigation.
93
+ *
94
+ * @param queryClient - The React Query client.
95
+ * @param authClient - The Better Auth client with the multi-session plugin.
96
+ * @param userId - The signed-in user's ID, used for cache partitioning.
97
+ * @param params - Parameters forwarded to `authClient.multiSession.listDeviceSessions`.
98
+ */
99
+ export const prefetchListDeviceSessions = <
100
+ TAuthClient extends MultiSessionAuthClient
101
+ >(
102
+ queryClient: QueryClient,
103
+ authClient: TAuthClient,
104
+ userId: string,
105
+ params?: ListDeviceSessionsParams<TAuthClient>
106
+ ) =>
107
+ queryClient.prefetchQuery(
108
+ listDeviceSessionsOptions(authClient, userId, params)
109
+ )
110
+
111
+ /**
112
+ * Fetch and cache the current user's device sessions, resolving with the
113
+ * data or throwing on error. If a cached entry exists and is neither
114
+ * invalidated nor older than `staleTime`, the cached value is returned
115
+ * without a network call; otherwise the latest data is fetched.
116
+ *
117
+ * @param queryClient - The React Query client.
118
+ * @param authClient - The Better Auth client with the multi-session plugin.
119
+ * @param userId - The signed-in user's ID, used for cache partitioning.
120
+ * @param params - Parameters forwarded to `authClient.multiSession.listDeviceSessions`.
121
+ */
122
+ export const fetchListDeviceSessions = <
123
+ TAuthClient extends MultiSessionAuthClient
124
+ >(
125
+ queryClient: QueryClient,
126
+ authClient: TAuthClient,
127
+ userId: string,
128
+ params?: ListDeviceSessionsParams<TAuthClient>
129
+ ) =>
130
+ queryClient.fetchQuery(listDeviceSessionsOptions(authClient, userId, params))
131
+
132
+ export type UseListDeviceSessionsOptions<
133
+ TAuthClient extends MultiSessionAuthClient
134
+ > = ListDeviceSessionsOptions<TAuthClient> &
135
+ ListDeviceSessionsParams<TAuthClient>
136
+
137
+ /**
138
+ * Subscribe to the current user's device sessions (multi-session account
139
+ * switcher) via TanStack Query.
140
+ *
141
+ * Shares a query key with the server-side `listDeviceSessionsOptions`, so
142
+ * SSR-hydrated data is reused from the cache without an immediate refetch.
143
+ * The query is gated on a signed-in user; while the session is loading or
144
+ * absent, the underlying `queryFn` is replaced with `skipToken`.
145
+ *
146
+ * @param authClient - The Better Auth client with the multi-session plugin.
147
+ * @param options - `listDeviceSessions` params (`query`, `fetchOptions`)
148
+ * merged with `useQuery` options (e.g. `enabled`, `staleTime`, `select`).
149
+ * @param queryClient - Optional custom `QueryClient`. Defaults to the client
150
+ * from the nearest `QueryClientProvider`.
151
+ */
152
+ export function useListDeviceSessions<
153
+ TAuthClient extends MultiSessionAuthClient
154
+ >(
155
+ authClient: TAuthClient,
156
+ options: UseListDeviceSessionsOptions<TAuthClient> = {},
157
+ queryClient?: QueryClient
158
+ ) {
159
+ const { data: session } = useSession(authClient, undefined, queryClient)
160
+ const userId = session?.user.id
161
+
162
+ const { query, fetchOptions, ...queryOptions } = options
163
+
164
+ const baseOptions = listDeviceSessionsOptions(authClient, userId, {
165
+ query,
166
+ fetchOptions
167
+ })
168
+
169
+ return useQuery(
170
+ {
171
+ ...queryOptions,
172
+ ...baseOptions,
173
+ queryFn: userId ? baseOptions.queryFn : skipToken
174
+ },
175
+ queryClient
176
+ )
177
+ }
@@ -0,0 +1,154 @@
1
+ import { authQueryKeys } from "@better-auth-ui/core"
2
+ import {
3
+ type DataTag,
4
+ type QueryClient,
5
+ queryOptions,
6
+ skipToken,
7
+ useQuery
8
+ } from "@tanstack/react-query"
9
+ import type { BetterFetchError } from "better-auth/react"
10
+
11
+ import type { InferData, PasskeyAuthClient } from "../../lib/auth-client"
12
+ import { useSession } from "../auth/session-query"
13
+
14
+ export type ListPasskeysData<TAuthClient extends PasskeyAuthClient> = InferData<
15
+ TAuthClient["passkey"]["listUserPasskeys"]
16
+ >
17
+
18
+ export type ListPasskeysParams<TAuthClient extends PasskeyAuthClient> =
19
+ Parameters<TAuthClient["passkey"]["listUserPasskeys"]>[0]
20
+
21
+ export type ListPasskey<
22
+ TAuthClient extends PasskeyAuthClient = PasskeyAuthClient
23
+ > = NonNullable<ListPasskeysData<TAuthClient>>[number]
24
+
25
+ export type ListPasskeysOptions<TAuthClient extends PasskeyAuthClient> = Omit<
26
+ ReturnType<typeof listPasskeysOptions<TAuthClient>>,
27
+ "queryKey" | "queryFn"
28
+ >
29
+
30
+ /**
31
+ * Query options factory for the current user's passkeys.
32
+ *
33
+ * @param authClient - The Better Auth client with the passkey plugin.
34
+ * @param userId - The current signed-in user's ID. Used for cache partitioning.
35
+ * @param params - Parameters forwarded to `authClient.passkey.listUserPasskeys`.
36
+ */
37
+ export function listPasskeysOptions<TAuthClient extends PasskeyAuthClient>(
38
+ authClient: TAuthClient,
39
+ userId: string | undefined,
40
+ params?: ListPasskeysParams<TAuthClient>
41
+ ) {
42
+ type TData = ListPasskeysData<TAuthClient>
43
+ const queryKey = authQueryKeys.listPasskeys(userId, params?.query)
44
+
45
+ const options = queryOptions<TData, BetterFetchError, TData, typeof queryKey>(
46
+ {
47
+ queryKey,
48
+ queryFn: ({ signal }) =>
49
+ authClient.passkey.listUserPasskeys({
50
+ ...params,
51
+ fetchOptions: { ...params?.fetchOptions, signal, throw: true }
52
+ }) as Promise<TData>
53
+ }
54
+ )
55
+
56
+ return options as typeof options & {
57
+ queryKey: DataTag<typeof queryKey, TData, BetterFetchError>
58
+ }
59
+ }
60
+
61
+ /**
62
+ * Get the current user's passkeys from the query cache, calling
63
+ * `fetchListPasskeys` under the hood if no cached entry exists. Resolves
64
+ * with the passkey list, making it ideal for loaders or `beforeLoad` guards.
65
+ *
66
+ * @param queryClient - The React Query client.
67
+ * @param authClient - The Better Auth client with the passkey plugin.
68
+ * @param userId - The signed-in user's ID, used for cache partitioning.
69
+ * @param params - Parameters forwarded to `authClient.passkey.listUserPasskeys`.
70
+ */
71
+ export const ensureListPasskeys = <TAuthClient extends PasskeyAuthClient>(
72
+ queryClient: QueryClient,
73
+ authClient: TAuthClient,
74
+ userId: string,
75
+ params?: ListPasskeysParams<TAuthClient>
76
+ ) =>
77
+ queryClient.ensureQueryData(listPasskeysOptions(authClient, userId, params))
78
+
79
+ /**
80
+ * Prefetch the current user's passkeys into the query cache. Behaves like
81
+ * `fetchListPasskeys`, but does not throw on error and does not return
82
+ * the data — use this to warm the cache without blocking navigation.
83
+ *
84
+ * @param queryClient - The React Query client.
85
+ * @param authClient - The Better Auth client with the passkey plugin.
86
+ * @param userId - The signed-in user's ID, used for cache partitioning.
87
+ * @param params - Parameters forwarded to `authClient.passkey.listUserPasskeys`.
88
+ */
89
+ export const prefetchListPasskeys = <TAuthClient extends PasskeyAuthClient>(
90
+ queryClient: QueryClient,
91
+ authClient: TAuthClient,
92
+ userId: string,
93
+ params?: ListPasskeysParams<TAuthClient>
94
+ ) => queryClient.prefetchQuery(listPasskeysOptions(authClient, userId, params))
95
+
96
+ /**
97
+ * Fetch and cache the current user's passkeys, resolving with the data or
98
+ * throwing on error. If a cached entry exists and is neither invalidated
99
+ * nor older than `staleTime`, the cached value is returned without a
100
+ * network call; otherwise the latest data is fetched.
101
+ *
102
+ * @param queryClient - The React Query client.
103
+ * @param authClient - The Better Auth client with the passkey plugin.
104
+ * @param userId - The signed-in user's ID, used for cache partitioning.
105
+ * @param params - Parameters forwarded to `authClient.passkey.listUserPasskeys`.
106
+ */
107
+ export const fetchListPasskeys = <TAuthClient extends PasskeyAuthClient>(
108
+ queryClient: QueryClient,
109
+ authClient: TAuthClient,
110
+ userId: string,
111
+ params?: ListPasskeysParams<TAuthClient>
112
+ ) => queryClient.fetchQuery(listPasskeysOptions(authClient, userId, params))
113
+
114
+ export type UseListPasskeysOptions<TAuthClient extends PasskeyAuthClient> =
115
+ ListPasskeysOptions<TAuthClient> & ListPasskeysParams<TAuthClient>
116
+
117
+ /**
118
+ * Subscribe to the current user's passkeys via TanStack Query.
119
+ *
120
+ * Shares a query key with the server-side `listPasskeysOptions`, so
121
+ * SSR-hydrated data is reused from the cache without an immediate refetch.
122
+ * The query is gated on a signed-in user; while the session is loading or
123
+ * absent, the underlying `queryFn` is replaced with `skipToken`.
124
+ *
125
+ * @param authClient - The Better Auth client with the passkey plugin.
126
+ * @param options - `listPasskeys` params (`query`, `fetchOptions`) merged
127
+ * with `useQuery` options (e.g. `enabled`, `staleTime`, `select`).
128
+ * @param queryClient - Optional custom `QueryClient`. Defaults to the client
129
+ * from the nearest `QueryClientProvider`.
130
+ */
131
+ export function useListPasskeys<TAuthClient extends PasskeyAuthClient>(
132
+ authClient: TAuthClient,
133
+ options: UseListPasskeysOptions<TAuthClient> = {},
134
+ queryClient?: QueryClient
135
+ ) {
136
+ const { data: session } = useSession(authClient, undefined, queryClient)
137
+ const userId = session?.user.id
138
+
139
+ const { query, fetchOptions, ...queryOptions } = options
140
+
141
+ const baseOptions = listPasskeysOptions(authClient, userId, {
142
+ query,
143
+ fetchOptions
144
+ })
145
+
146
+ return useQuery(
147
+ {
148
+ ...queryOptions,
149
+ ...baseOptions,
150
+ queryFn: userId ? baseOptions.queryFn : skipToken
151
+ },
152
+ queryClient
153
+ )
154
+ }