@robelest/convex-auth 0.0.4-preview.0 → 0.0.4-preview.10

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 (238) hide show
  1. package/README.md +33 -2
  2. package/dist/client/index.d.ts +30 -28
  3. package/dist/client/index.d.ts.map +1 -1
  4. package/dist/client/index.js +410 -150
  5. package/dist/client/index.js.map +1 -1
  6. package/dist/component/_generated/api.d.ts +2 -0
  7. package/dist/component/_generated/api.d.ts.map +1 -1
  8. package/dist/component/_generated/api.js.map +1 -1
  9. package/dist/component/_generated/component.d.ts +534 -81
  10. package/dist/component/_generated/component.d.ts.map +1 -1
  11. package/dist/component/convex.config.d.ts +2 -2
  12. package/dist/component/convex.config.d.ts.map +1 -1
  13. package/dist/component/functions.d.ts +25 -0
  14. package/dist/component/functions.d.ts.map +1 -0
  15. package/dist/component/functions.js +32 -0
  16. package/dist/component/functions.js.map +1 -0
  17. package/dist/component/providers/credentials.d.ts +2 -2
  18. package/dist/component/providers/credentials.d.ts.map +1 -1
  19. package/dist/component/providers/email.js +21 -7
  20. package/dist/component/providers/email.js.map +1 -1
  21. package/dist/component/public.d.ts +92 -837
  22. package/dist/component/public.d.ts.map +1 -1
  23. package/dist/component/public.js +610 -192
  24. package/dist/component/public.js.map +1 -1
  25. package/dist/component/schema.d.ts +116 -116
  26. package/dist/component/schema.js +48 -48
  27. package/dist/component/schema.js.map +1 -1
  28. package/dist/component/server/auth.d.ts +76 -67
  29. package/dist/component/server/auth.d.ts.map +1 -1
  30. package/dist/component/server/auth.js +3 -2
  31. package/dist/component/server/auth.js.map +1 -1
  32. package/dist/component/server/errors.js +5 -0
  33. package/dist/component/server/errors.js.map +1 -1
  34. package/dist/component/server/implementation/index.d.ts +49 -33
  35. package/dist/component/server/implementation/index.d.ts.map +1 -1
  36. package/dist/component/server/implementation/index.js +50 -18
  37. package/dist/component/server/implementation/index.js.map +1 -1
  38. package/dist/component/server/implementation/mutations/account.js.map +1 -1
  39. package/dist/component/server/implementation/mutations/code.js.map +1 -1
  40. package/dist/component/server/implementation/mutations/index.js +2 -2
  41. package/dist/component/server/implementation/mutations/index.js.map +1 -1
  42. package/dist/component/server/implementation/mutations/invalidate.js.map +1 -1
  43. package/dist/component/server/implementation/mutations/oauth.js.map +1 -1
  44. package/dist/component/server/implementation/mutations/refresh.js.map +1 -1
  45. package/dist/component/server/implementation/mutations/register.js +9 -3
  46. package/dist/component/server/implementation/mutations/register.js.map +1 -1
  47. package/dist/component/server/implementation/mutations/retrieve.js +8 -3
  48. package/dist/component/server/implementation/mutations/retrieve.js.map +1 -1
  49. package/dist/component/server/implementation/mutations/signature.js.map +1 -1
  50. package/dist/component/server/implementation/mutations/signin.js.map +1 -1
  51. package/dist/component/server/implementation/mutations/signout.js.map +1 -1
  52. package/dist/component/server/implementation/mutations/store.js +1 -1
  53. package/dist/component/server/implementation/mutations/store.js.map +1 -1
  54. package/dist/component/server/implementation/mutations/verifier.js.map +1 -1
  55. package/dist/component/server/implementation/mutations/verify.js.map +1 -1
  56. package/dist/component/server/implementation/ratelimit.js +9 -9
  57. package/dist/component/server/implementation/ratelimit.js.map +1 -1
  58. package/dist/component/server/implementation/refresh.js +7 -2
  59. package/dist/component/server/implementation/refresh.js.map +1 -1
  60. package/dist/component/server/implementation/sessions.js.map +1 -1
  61. package/dist/component/server/implementation/signin.js.map +1 -1
  62. package/dist/component/server/implementation/tokens.js +4 -2
  63. package/dist/component/server/implementation/tokens.js.map +1 -1
  64. package/dist/component/server/implementation/types.d.ts +1 -1
  65. package/dist/component/server/implementation/types.js.map +1 -1
  66. package/dist/component/server/implementation/users.js.map +1 -1
  67. package/dist/component/server/oauth.js +1 -0
  68. package/dist/component/server/oauth.js.map +1 -1
  69. package/dist/component/server/types.d.ts +36 -32
  70. package/dist/component/server/types.d.ts.map +1 -1
  71. package/dist/component/server/utils.js +7 -1
  72. package/dist/component/server/utils.js.map +1 -1
  73. package/dist/providers/anonymous.d.ts +2 -6
  74. package/dist/providers/anonymous.d.ts.map +1 -1
  75. package/dist/providers/anonymous.js +1 -7
  76. package/dist/providers/anonymous.js.map +1 -1
  77. package/dist/providers/credentials.d.ts +3 -5
  78. package/dist/providers/credentials.d.ts.map +1 -1
  79. package/dist/providers/credentials.js +1 -5
  80. package/dist/providers/credentials.js.map +1 -1
  81. package/dist/providers/device.d.ts +1 -5
  82. package/dist/providers/device.d.ts.map +1 -1
  83. package/dist/providers/device.js +1 -7
  84. package/dist/providers/device.js.map +1 -1
  85. package/dist/providers/email.d.ts +16 -6
  86. package/dist/providers/email.d.ts.map +1 -1
  87. package/dist/providers/email.js +21 -7
  88. package/dist/providers/email.js.map +1 -1
  89. package/dist/providers/passkey.d.ts +1 -5
  90. package/dist/providers/passkey.d.ts.map +1 -1
  91. package/dist/providers/passkey.js +1 -7
  92. package/dist/providers/passkey.js.map +1 -1
  93. package/dist/providers/password.d.ts +4 -8
  94. package/dist/providers/password.d.ts.map +1 -1
  95. package/dist/providers/password.js +6 -10
  96. package/dist/providers/password.js.map +1 -1
  97. package/dist/providers/phone.d.ts +1 -1
  98. package/dist/providers/phone.d.ts.map +1 -1
  99. package/dist/providers/phone.js +1 -1
  100. package/dist/providers/phone.js.map +1 -1
  101. package/dist/providers/totp.d.ts +1 -5
  102. package/dist/providers/totp.d.ts.map +1 -1
  103. package/dist/providers/totp.js +1 -7
  104. package/dist/providers/totp.js.map +1 -1
  105. package/dist/server/auth.d.ts +75 -67
  106. package/dist/server/auth.d.ts.map +1 -1
  107. package/dist/server/auth.js +3 -2
  108. package/dist/server/auth.js.map +1 -1
  109. package/dist/server/errors.d.ts +5 -0
  110. package/dist/server/errors.d.ts.map +1 -1
  111. package/dist/server/errors.js +5 -0
  112. package/dist/server/errors.js.map +1 -1
  113. package/dist/server/implementation/index.d.ts +63 -47
  114. package/dist/server/implementation/index.d.ts.map +1 -1
  115. package/dist/server/implementation/index.js +50 -18
  116. package/dist/server/implementation/index.js.map +1 -1
  117. package/dist/server/implementation/mutations/account.d.ts +9 -8
  118. package/dist/server/implementation/mutations/account.d.ts.map +1 -1
  119. package/dist/server/implementation/mutations/account.js.map +1 -1
  120. package/dist/server/implementation/mutations/code.d.ts +15 -14
  121. package/dist/server/implementation/mutations/code.d.ts.map +1 -1
  122. package/dist/server/implementation/mutations/code.js.map +1 -1
  123. package/dist/server/implementation/mutations/index.d.ts +114 -114
  124. package/dist/server/implementation/mutations/index.d.ts.map +1 -1
  125. package/dist/server/implementation/mutations/index.js +3 -3
  126. package/dist/server/implementation/mutations/index.js.map +1 -1
  127. package/dist/server/implementation/mutations/invalidate.d.ts +7 -6
  128. package/dist/server/implementation/mutations/invalidate.d.ts.map +1 -1
  129. package/dist/server/implementation/mutations/invalidate.js.map +1 -1
  130. package/dist/server/implementation/mutations/oauth.d.ts +9 -8
  131. package/dist/server/implementation/mutations/oauth.d.ts.map +1 -1
  132. package/dist/server/implementation/mutations/oauth.js.map +1 -1
  133. package/dist/server/implementation/mutations/refresh.d.ts +6 -5
  134. package/dist/server/implementation/mutations/refresh.d.ts.map +1 -1
  135. package/dist/server/implementation/mutations/refresh.js.map +1 -1
  136. package/dist/server/implementation/mutations/register.d.ts +16 -15
  137. package/dist/server/implementation/mutations/register.d.ts.map +1 -1
  138. package/dist/server/implementation/mutations/register.js +9 -3
  139. package/dist/server/implementation/mutations/register.js.map +1 -1
  140. package/dist/server/implementation/mutations/retrieve.d.ts +8 -5
  141. package/dist/server/implementation/mutations/retrieve.d.ts.map +1 -1
  142. package/dist/server/implementation/mutations/retrieve.js +10 -3
  143. package/dist/server/implementation/mutations/retrieve.js.map +1 -1
  144. package/dist/server/implementation/mutations/signature.d.ts +9 -8
  145. package/dist/server/implementation/mutations/signature.d.ts.map +1 -1
  146. package/dist/server/implementation/mutations/signature.js.map +1 -1
  147. package/dist/server/implementation/mutations/signin.d.ts +8 -7
  148. package/dist/server/implementation/mutations/signin.d.ts.map +1 -1
  149. package/dist/server/implementation/mutations/signin.js.map +1 -1
  150. package/dist/server/implementation/mutations/signout.d.ts +5 -4
  151. package/dist/server/implementation/mutations/signout.d.ts.map +1 -1
  152. package/dist/server/implementation/mutations/signout.js.map +1 -1
  153. package/dist/server/implementation/mutations/store.js +1 -1
  154. package/dist/server/implementation/mutations/store.js.map +1 -1
  155. package/dist/server/implementation/mutations/verifier.d.ts +4 -3
  156. package/dist/server/implementation/mutations/verifier.d.ts.map +1 -1
  157. package/dist/server/implementation/mutations/verifier.js.map +1 -1
  158. package/dist/server/implementation/mutations/verify.d.ts +6 -5
  159. package/dist/server/implementation/mutations/verify.d.ts.map +1 -1
  160. package/dist/server/implementation/mutations/verify.js.map +1 -1
  161. package/dist/server/implementation/ratelimit.js +9 -9
  162. package/dist/server/implementation/ratelimit.js.map +1 -1
  163. package/dist/server/implementation/refresh.d.ts +9 -9
  164. package/dist/server/implementation/refresh.d.ts.map +1 -1
  165. package/dist/server/implementation/refresh.js +7 -2
  166. package/dist/server/implementation/refresh.js.map +1 -1
  167. package/dist/server/implementation/sessions.d.ts +8 -8
  168. package/dist/server/implementation/sessions.js.map +1 -1
  169. package/dist/server/implementation/signin.d.ts +1 -1
  170. package/dist/server/implementation/signin.js.map +1 -1
  171. package/dist/server/implementation/tokens.d.ts +2 -2
  172. package/dist/server/implementation/tokens.d.ts.map +1 -1
  173. package/dist/server/implementation/tokens.js +4 -2
  174. package/dist/server/implementation/tokens.js.map +1 -1
  175. package/dist/server/implementation/types.d.ts +4 -4
  176. package/dist/server/implementation/types.js.map +1 -1
  177. package/dist/server/implementation/users.d.ts +5 -5
  178. package/dist/server/implementation/users.js.map +1 -1
  179. package/dist/server/index.d.ts +32 -15
  180. package/dist/server/index.d.ts.map +1 -1
  181. package/dist/server/index.js +275 -85
  182. package/dist/server/index.js.map +1 -1
  183. package/dist/server/oauth.js +1 -0
  184. package/dist/server/oauth.js.map +1 -1
  185. package/dist/server/providers.d.ts +9 -8
  186. package/dist/server/providers.d.ts.map +1 -1
  187. package/dist/server/types.d.ts +36 -32
  188. package/dist/server/types.d.ts.map +1 -1
  189. package/dist/server/utils.js +7 -1
  190. package/dist/server/utils.js.map +1 -1
  191. package/dist/server/version.d.ts +1 -1
  192. package/dist/server/version.js +1 -1
  193. package/dist/server/version.js.map +1 -1
  194. package/package.json +4 -3
  195. package/src/cli/index.ts +5 -5
  196. package/src/client/index.ts +600 -183
  197. package/src/component/_generated/api.ts +2 -0
  198. package/src/component/_generated/component.ts +499 -81
  199. package/src/component/functions.ts +115 -0
  200. package/src/component/public.ts +738 -251
  201. package/src/component/schema.ts +61 -61
  202. package/src/providers/anonymous.ts +1 -14
  203. package/src/providers/credentials.ts +2 -12
  204. package/src/providers/device.ts +0 -13
  205. package/src/providers/email.ts +28 -9
  206. package/src/providers/passkey.ts +0 -13
  207. package/src/providers/password.ts +12 -21
  208. package/src/providers/phone.ts +1 -1
  209. package/src/providers/totp.ts +0 -13
  210. package/src/server/auth.ts +6 -5
  211. package/src/server/errors.ts +12 -0
  212. package/src/server/implementation/index.ts +110 -45
  213. package/src/server/implementation/mutations/account.ts +4 -3
  214. package/src/server/implementation/mutations/code.ts +8 -5
  215. package/src/server/implementation/mutations/index.ts +5 -2
  216. package/src/server/implementation/mutations/invalidate.ts +5 -4
  217. package/src/server/implementation/mutations/oauth.ts +4 -3
  218. package/src/server/implementation/mutations/refresh.ts +5 -4
  219. package/src/server/implementation/mutations/register.ts +33 -9
  220. package/src/server/implementation/mutations/retrieve.ts +24 -7
  221. package/src/server/implementation/mutations/signature.ts +5 -4
  222. package/src/server/implementation/mutations/signin.ts +6 -5
  223. package/src/server/implementation/mutations/signout.ts +7 -4
  224. package/src/server/implementation/mutations/store.ts +1 -1
  225. package/src/server/implementation/mutations/verifier.ts +6 -3
  226. package/src/server/implementation/mutations/verify.ts +7 -4
  227. package/src/server/implementation/ratelimit.ts +13 -12
  228. package/src/server/implementation/refresh.ts +31 -24
  229. package/src/server/implementation/sessions.ts +11 -11
  230. package/src/server/implementation/signin.ts +2 -2
  231. package/src/server/implementation/tokens.ts +7 -3
  232. package/src/server/implementation/types.ts +4 -4
  233. package/src/server/implementation/users.ts +13 -13
  234. package/src/server/index.ts +448 -93
  235. package/src/server/oauth.ts +7 -4
  236. package/src/server/types.ts +37 -32
  237. package/src/server/utils.ts +14 -3
  238. package/src/server/version.ts +1 -1
package/README.md CHANGED
@@ -6,6 +6,7 @@ Component-first authentication for [Convex](https://convex.dev). One component,
6
6
 
7
7
  - **Class-based API** — `new Auth(components.auth, { providers })` gives you everything.
8
8
  - **OAuth via Arctic** — 50+ providers through [Arctic](https://arcticjs.dev), zero-dependency OAuth 2.0.
9
+ - **Fluent Convex builders (recommended)** — cleaner auth-aware API handling with middleware and explicit `.public()` / `.internal()` exports.
9
10
  - **Password, passkeys, TOTP, magic links, OTP, phone, anonymous** — all built in.
10
11
  - **Device Authorization (RFC 8628)** — authenticate CLIs, smart TVs, and IoT devices.
11
12
  - **API keys** — scoped permissions, SHA-256 hashed storage, optional rate limiting.
@@ -16,13 +17,16 @@ Component-first authentication for [Convex](https://convex.dev). One component,
16
17
  ## Install
17
18
 
18
19
  ```bash
19
- npm install @robelest/convex-auth
20
+ bun add @robelest/convex-auth
20
21
  ```
21
22
 
23
+ > Renamed package: if you are migrating from earlier previews, replace
24
+ > `@convex-dev/auth` with `@robelest/convex-auth` in imports and CLI commands.
25
+
22
26
  ## Quick Start
23
27
 
24
28
  ```bash
25
- npx @robelest/convex-auth
29
+ bunx @robelest/convex-auth
26
30
  ```
27
31
 
28
32
  The interactive CLI sets up your Convex component, auth config, and HTTP routes in under a minute.
@@ -66,6 +70,33 @@ auth.http.add(http);
66
70
  export default http;
67
71
  ```
68
72
 
73
+ ## Recommended Convex API Handling (`fluent-convex`)
74
+
75
+ For new projects, we recommend `fluent-convex` for auth middleware composition and cleaner API exports.
76
+
77
+ ```ts
78
+ // convex/functions.ts
79
+ import { createBuilder } from "fluent-convex";
80
+ import { WithZod } from "fluent-convex/zod";
81
+ import type { DataModel } from "./_generated/dataModel";
82
+ import { auth } from "./auth";
83
+
84
+ const convex = createBuilder<DataModel>();
85
+
86
+ const withRequiredAuth = convex.createMiddleware<any, { auth: any }>(
87
+ async (ctx, next) => {
88
+ const userId = await auth.user.require(ctx);
89
+ const user = await auth.user.get(ctx, userId);
90
+ return next({ ...ctx, auth: { ...ctx.auth, userId, user } });
91
+ },
92
+ );
93
+
94
+ export const query = convex.query().use(withRequiredAuth).extend(WithZod);
95
+ export const mutation = convex.mutation().use(withRequiredAuth).extend(WithZod);
96
+ ```
97
+
98
+ `AuthCtx` from `@robelest/convex-auth/component` remains supported if your project already uses `convex-helpers`.
99
+
69
100
  ## Providers
70
101
 
71
102
  | Provider | Import |
@@ -27,19 +27,19 @@ interface Storage {
27
27
  /**
28
28
  * Device code response returned when signing in with the `"device"` provider.
29
29
  *
30
- * The device displays the `userCode` (or `verificationUriComplete`) and
30
+ * The device displays the `userCode` (or `verification_uri_complete`) and
31
31
  * polls via `auth.device.poll()` until the user authorizes.
32
32
  */
33
33
  type DeviceCodeResult = {
34
34
  /** High-entropy device code used for polling (keep secret). */deviceCode: string; /** Short human-readable code the user enters (e.g. "WDJB-MJHT"). */
35
35
  userCode: string; /** Base verification URL (e.g. "https://myapp.com/device"). */
36
- verificationUri: string; /** Verification URL with user code pre-filled as `?code=XXXX-XXXX`. */
37
- verificationUriComplete: string; /** Lifetime of the codes in seconds. */
36
+ verification_uri: string; /** Verification URL with user code pre-filled as `?code=XXXX-XXXX`. */
37
+ verification_uri_complete: string; /** Lifetime of the codes in seconds. */
38
38
  expiresIn: number; /** Minimum polling interval in seconds. */
39
39
  interval: number;
40
40
  };
41
41
  /**
42
- * Result of a `signIn` call.
42
+ * Result of a `sign_in` call.
43
43
  *
44
44
  * - `signingIn: true` — credentials were accepted and the user is authenticated.
45
45
  * - `redirect` — OAuth flow initiated; redirect the user to `redirect.toString()`.
@@ -54,9 +54,10 @@ type SignInResult = {
54
54
  deviceCode?: DeviceCodeResult; /** Opaque verifier for multi-step flows (pass to `totp.verify` or passkey phase 2). */
55
55
  verifier?: string;
56
56
  };
57
- /** Reactive auth state snapshot returned by `auth.state` and `auth.onChange`. */
57
+ /** Reactive auth state snapshot returned by `auth.state` and `auth.on_change`. */
58
58
  type AuthState = {
59
- /** `true` during initial hydration before the first token is resolved. */isLoading: boolean; /** `true` when a valid JWT exists (user is signed in). */
59
+ /** High-level auth phase for deterministic UI state handling. */phase: "loading" | "handshake" | "authenticated" | "unauthenticated"; /** `true` during initial hydration before the first token is resolved. */
60
+ isLoading: boolean; /** `true` only after Convex confirms authentication with the backend. */
60
61
  isAuthenticated: boolean; /** The raw JWT string, or `null` when not authenticated. */
61
62
  token: string | null;
62
63
  };
@@ -72,21 +73,21 @@ type ClientOptions = {
72
73
  * Key-value storage for persisting tokens.
73
74
  *
74
75
  * - Defaults to `localStorage` in SPA mode.
75
- * - Defaults to `null` (in-memory only) when `proxy` is set,
76
+ * - Defaults to `null` (in-memory only) when `proxy_path` is set,
76
77
  * since httpOnly cookies handle persistence.
77
78
  */
78
79
  storage?: Storage | null; /** Override how the URL bar is updated after OAuth code exchange. */
79
- replaceURL?: (relativeUrl: string) => void | Promise<void>;
80
+ replace_url?: (relative_url: string) => void | Promise<void>;
80
81
  /**
81
82
  * SSR proxy endpoint (e.g. `"/api/auth"`).
82
83
  *
83
- * When set, `signIn`/`signOut`/token refresh POST to this URL
84
+ * When set, `sign_in`/`sign_out`/token refresh POST to this URL
84
85
  * (with `credentials: "include"`) instead of calling Convex directly.
85
86
  * The server handles httpOnly cookies for token persistence.
86
87
  *
87
- * Pair with {@link ClientOptions.token} for flash-free SSR hydration.
88
+ * Pair with {@link ClientOptions.token_seed} for flash-free SSR hydration.
88
89
  */
89
- proxy?: string;
90
+ proxy_path?: string;
90
91
  /**
91
92
  * JWT from server-side hydration.
92
93
  *
@@ -94,12 +95,12 @@ type ClientOptions = {
94
95
  * and passes it to the client during SSR. This avoids a loading
95
96
  * flash on first render — the client is immediately authenticated.
96
97
  */
97
- token?: string | null;
98
+ token_seed?: string | null;
98
99
  };
99
100
  /**
100
101
  * Create a framework-agnostic auth client.
101
102
  *
102
- * Returns an object with `signIn`, `signOut`, `onChange`, `state`,
103
+ * Returns an object with `sign_in`, `sign_out`, `on_change`, `state`,
103
104
  * `passkey`, and `totp` — everything needed for client-side auth.
104
105
  *
105
106
  * ### SPA mode (default)
@@ -117,8 +118,8 @@ type ClientOptions = {
117
118
  * ```ts
118
119
  * const auth = client({
119
120
  * convex,
120
- * proxy: '/api/auth',
121
- * token: tokenFromServer, // JWT read from httpOnly cookie during SSR
121
+ * proxy_path: '/api/auth',
122
+ * token_seed: tokenFromServer, // JWT read from httpOnly cookie during SSR
122
123
  * });
123
124
  * ```
124
125
  *
@@ -127,13 +128,13 @@ type ClientOptions = {
127
128
  * holds the JWT in memory only.
128
129
  *
129
130
  * @param options - Client configuration. See {@link ClientOptions}.
130
- * @returns Auth client with `signIn`, `signOut`, `onChange`, `state`, `passkey`, and `totp`.
131
+ * @returns Auth client with `sign_in`, `sign_out`, `on_change`, `state`, `passkey`, and `totp`.
131
132
  */
132
133
  declare function client(options: ClientOptions): {
133
134
  /** Current auth state snapshot. */readonly state: AuthState; /** Sign in with a provider. See {@link SignInResult} for return shape. */
134
- signIn: (provider?: string, args?: FormData | Record<string, Value>) => Promise<SignInResult>; /** Sign out and clear all token state. */
135
- signOut: () => Promise<void>; /** Subscribe to auth state changes. Returns an unsubscribe function. */
136
- onChange: (cb: (state: AuthState) => void) => (() => void); /** Passkey (WebAuthn) authentication helpers. */
135
+ sign_in: (provider?: string, args?: FormData | Record<string, Value>) => Promise<SignInResult>; /** Sign out and clear all token state. */
136
+ sign_out: () => Promise<void>; /** Subscribe to auth state changes. Returns an unsubscribe function. */
137
+ on_change: (cb: (state: AuthState) => void) => (() => void); /** Passkey (WebAuthn) authentication helpers. */
137
138
  passkey: {
138
139
  /**
139
140
  * Check if WebAuthn passkeys are supported in the current environment.
@@ -245,8 +246,8 @@ declare function client(options: ClientOptions): {
245
246
  *
246
247
  * Called after a credentials sign-in returns `totpRequired: true`.
247
248
  *
248
- * ```ts
249
- * const result = await auth.signIn("password", { email, password });
249
+ * ```ts
250
+ * const result = await auth.sign_in("password", { email, password });
250
251
  * if (result.totpRequired) {
251
252
  * await auth.totp.verify({ code: "123456", verifier: result.verifier! });
252
253
  * }
@@ -261,19 +262,19 @@ declare function client(options: ClientOptions): {
261
262
  /**
262
263
  * Poll for device authorization status.
263
264
  *
264
- * The device calls this repeatedly (respecting `interval`) after
265
- * initiating a device flow via `signIn("device")`. Returns when
265
+ * The device calls this repeatedly (respecting `interval`) after
266
+ * initiating a device flow via `sign_in("device")`. Returns when
266
267
  * the user authorizes, or throws on timeout/denial.
267
268
  *
268
- * ```ts
269
- * const result = await auth.signIn("device");
269
+ * ```ts
270
+ * const result = await auth.sign_in("device");
270
271
  * const { deviceCode } = result;
271
272
  * // Display deviceCode.userCode to the user, then poll:
272
273
  * await auth.device.poll(deviceCode);
273
274
  * // User is now signed in
274
275
  * ```
275
- *
276
- * @param code - The {@link DeviceCodeResult} from `signIn("device")`.
276
+ *
277
+ * @param code - The {@link DeviceCodeResult} from `sign_in("device")`.
277
278
  * @returns Resolves when the device is authorized and tokens are stored.
278
279
  * @throws When the code expires, is denied, or polling encounters an error.
279
280
  */
@@ -292,7 +293,8 @@ declare function client(options: ClientOptions): {
292
293
  * @param userCode - The user code entered by the user (e.g. "WDJB-MJHT").
293
294
  */
294
295
  verify: (userCode: string) => Promise<void>;
295
- };
296
+ }; /** Remove global listeners when disposing this client instance. */
297
+ destroy: () => void;
296
298
  };
297
299
  //#endregion
298
300
  export { AUTH_ERRORS, type AuthErrorCode, AuthState, ClientOptions, DeviceCodeResult, SignInResult, Storage, client, isAuthError, parseAuthError };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/client/index.ts"],"mappings":";;;;;;AAS0B;;;;;;;UAWhB,eAAA;EACR,MAAA,CAAO,MAAA,OAAa,IAAA,QAAY,OAAA;EAChC,OAAA,CACE,UAAA,GAAa,IAAA;IACX,iBAAA;EAAA,MACI,OAAA,6BACN,QAAA,IAAY,eAAA;EAEd,SAAA;AAAA;;UAIe,OAAA;EACf,OAAA,CACE,GAAA,uCAC6B,OAAA;EAC/B,OAAA,CAAQ,GAAA,UAAa,KAAA,kBAAuB,OAAA;EAC5C,UAAA,CAAW,GAAA,kBAAqB,OAAA;AAAA;;;;;;;KActB,gBAAA;EAjBR,+DAmBF,UAAA,UAjBA;EAmBA,QAAA,UAnBqB;EAqBrB,eAAA,UApBA;EAsBA,uBAAA,UAtBgC;EAwBhC,SAAA,UAxBuC;EA0BvC,QAAA;AAAA;;;;;;;;;;KAYU,YAAA;EAAA,mEAEV,SAAA;EAEA,QAAA,GAAW,GAAA,EAFX;EAIA,YAAA,YAFW;EAIX,UAAA,GAAa,gBAAA,EAAb;EAEA,QAAA;AAAA;;KAIU,SAAA;EAAA,0EAEV,SAAA;EAEA,eAAA,WAFA;EAIA,KAAA;AAAA;;KAIU,aAAA;EAAA,iEAEV,MAAA,EAAQ,eAAA;;;;;EAKR,GAAA;EAUoD;;;;;;;EAFpD,OAAA,GAAU,OAAA,SAEmC;EAA7C,UAAA,IAAc,WAAA,oBAA+B,OAAA;EAkB7C;;;AA2DF;;;;;;EAnEE,KAAA;EAmSoB;;;;;;;EA3RpB,KAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA2Dc,MAAA,CAAO,OAAA,EAAS,aAAA;EAkkBxB,mDAqfS,SAAA;8BAx1BI,IAAA,GACV,QAAA,GAAW,MAAA,SAAe,KAAA,MAChC,OAAA,CAAQ,YAAA,GAoWE;gCAkJA;kBAlSU,KAAA,EAAO,SAAA;;IAmSjB;;;;IAoHe;;;;;;;;;+BAlTK,OAAA;IAiV7B;;;;;;;;;;;;;;;;;;;;;;MA3SE,IAAA;MACA,KAAA;MACA,QAAA;MACA,eAAA;IAAA,MAED,OAAA,CAAQ,YAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAkJA,KAAA;MAAgB,QAAA;IAAA,MACxB,OAAA,CAAQ,YAAA;EAAA;;;;;;;;;;;;;;MAoHA,IAAA;MAAe,WAAA;IAAA,MACvB,OAAA;MAAU,GAAA;MAAa,MAAA;MAAgB,QAAA;MAAkB,MAAA;IAAA;;;;;;;;;MA4B1D,IAAA;MACA,QAAA;MACA,MAAA;IAAA,MACE,OAAA;;;;;;;;;;;;;;MA8CmB,IAAA;MAAc,QAAA;IAAA,MAAqB,OAAA;EAAA;;;;;;;;;;;;;;;;;;;;;iBAsDvC,gBAAA,KAAmB,OAAA;;;;;;;;;;;;;;kCAiFJ,OAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/client/index.ts"],"mappings":";;;;;;AAU0B;;;;;;;UAWhB,eAAA;EACR,MAAA,CAAO,MAAA,OAAa,IAAA,QAAY,OAAA;EAChC,OAAA,CACE,UAAA,GAAa,IAAA;IACX,iBAAA;EAAA,MACI,OAAA,6BACN,QAAA,IAAY,eAAA;EAEd,SAAA;AAAA;;UAIe,OAAA;EACf,OAAA,CACE,GAAA,uCAC6B,OAAA;EAC/B,OAAA,CAAQ,GAAA,UAAa,KAAA,kBAAuB,OAAA;EAC5C,UAAA,CAAW,GAAA,kBAAqB,OAAA;AAAA;;;;;;;KActB,gBAAA;EAjBR,+DAmBF,UAAA,UAjBA;EAmBA,QAAA,UAnBqB;EAqBrB,gBAAA,UApBA;EAsBA,yBAAA,UAtBgC;EAwBhC,SAAA,UAxBuC;EA0BvC,QAAA;AAAA;;;;;;;;;;KAYU,YAAA;EAAA,mEAEV,SAAA;EAEA,QAAA,GAAW,GAAA,EAFX;EAIA,YAAA,YAFW;EAIX,UAAA,GAAa,gBAAA,EAAb;EAEA,QAAA;AAAA;;KAIU,SAAA;EAAA,iEAEV,KAAA;EAEA,SAAA,WAFA;EAIA,eAAA;EAEA,KAAA;AAAA;;KAIU,aAAA;EAAa,iEAEvB,MAAA,EAAQ,eAAA;EAAA;;;;EAKR,GAAA;EALA;;;;;;;EAaA,OAAA,GAAU,OAAA,SAYV;EAVA,WAAA,IAAe,YAAA,oBAAgC,OAAA;EAkBrC;;AAoGZ;;;;;;;EA5GE,UAAA;EAmnBW;;;;;;;EA3mBX,UAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAoGc,MAAA,CAAO,OAAA,EAAS,aAAA;EAi7BxB,mDAwgBS,SAAA,EAtgBV;+BA9ac,IAAA,GACV,QAAA,GAAW,MAAA,SAAe,KAAA,MAChC,OAAA,CAAQ,YAAA;iCAkkBkB;mBAzTL,KAAA,EAAO,SAAA,4BA0T1B;;;;;;;;;;;;;;;+BAlM4B,OAAA;;;;;;;;;;;;;;;;;;;;;;;MAsC3B,IAAA;MACA,KAAA;MACA,QAAA;MACA,eAAA;IAAA,MAED,OAAA,CAAQ,YAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAsJA,KAAA;MAAgB,QAAA;IAAA,MACxB,OAAA,CAAQ,YAAA;EAAA;;;;;;;;;;;;;;MAwHA,IAAA;MAAe,WAAA;IAAA,MACvB,OAAA;MAAU,GAAA;MAAa,MAAA;MAAgB,QAAA;MAAkB,MAAA;IAAA;;;;;;;;;MA4B1D,IAAA;MACA,QAAA;MACA,MAAA;IAAA,MACE,OAAA;;;;;;;;;;;;;;MAkDmB,IAAA;MAAc,QAAA;IAAA,MAAqB,OAAA;EAAA;;;;;;;;;;;;;;;;;;;;;iBA0DvC,gBAAA,KAAmB,OAAA;;;;;;;;;;;;;;kCAqFJ,OAAA;EAAA"}