@robelest/convex-auth 0.0.3-preview → 0.0.3-preview.3

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 (304) hide show
  1. package/dist/bin.cjs +15 -15
  2. package/dist/client/index.d.ts +40 -12
  3. package/dist/client/index.d.ts.map +1 -1
  4. package/dist/client/index.js +73 -12
  5. package/dist/client/index.js.map +1 -1
  6. package/dist/component/_generated/api.d.ts +2 -2
  7. package/dist/component/_generated/api.d.ts.map +1 -1
  8. package/dist/component/_generated/component.d.ts +1 -1
  9. package/dist/component/_generated/component.d.ts.map +1 -1
  10. package/dist/component/{portalBridge.d.ts → bridge.d.ts} +2 -2
  11. package/dist/component/bridge.d.ts.map +1 -0
  12. package/dist/component/{portalBridge.js → bridge.js} +2 -2
  13. package/dist/component/bridge.js.map +1 -0
  14. package/dist/component/index.d.ts +11 -4
  15. package/dist/component/index.d.ts.map +1 -1
  16. package/dist/component/index.js +8 -2
  17. package/dist/component/index.js.map +1 -1
  18. package/dist/component/public.d.ts +24 -17
  19. package/dist/component/public.d.ts.map +1 -1
  20. package/dist/component/public.js +23 -4
  21. package/dist/component/public.js.map +1 -1
  22. package/dist/component/schema.d.ts +11 -7
  23. package/dist/component/schema.d.ts.map +1 -1
  24. package/dist/component/schema.js +4 -1
  25. package/dist/component/schema.js.map +1 -1
  26. package/dist/providers/anonymous.d.ts +3 -0
  27. package/dist/providers/anonymous.d.ts.map +1 -1
  28. package/dist/providers/anonymous.js +3 -0
  29. package/dist/providers/anonymous.js.map +1 -1
  30. package/dist/providers/credentials.d.ts +3 -0
  31. package/dist/providers/credentials.d.ts.map +1 -1
  32. package/dist/providers/credentials.js +3 -0
  33. package/dist/providers/credentials.js.map +1 -1
  34. package/dist/providers/email.d.ts +3 -0
  35. package/dist/providers/email.d.ts.map +1 -1
  36. package/dist/providers/email.js +3 -0
  37. package/dist/providers/email.js.map +1 -1
  38. package/dist/providers/passkey.d.ts +7 -1
  39. package/dist/providers/passkey.d.ts.map +1 -1
  40. package/dist/providers/passkey.js +7 -1
  41. package/dist/providers/passkey.js.map +1 -1
  42. package/dist/providers/password.d.ts +3 -0
  43. package/dist/providers/password.d.ts.map +1 -1
  44. package/dist/providers/password.js +3 -0
  45. package/dist/providers/password.js.map +1 -1
  46. package/dist/providers/phone.d.ts +3 -0
  47. package/dist/providers/phone.d.ts.map +1 -1
  48. package/dist/providers/phone.js +3 -0
  49. package/dist/providers/phone.js.map +1 -1
  50. package/dist/providers/totp.d.ts +8 -0
  51. package/dist/providers/totp.d.ts.map +1 -1
  52. package/dist/providers/totp.js +8 -0
  53. package/dist/providers/totp.js.map +1 -1
  54. package/dist/server/{convex-auth.d.ts → auth.d.ts} +226 -36
  55. package/dist/server/auth.d.ts.map +1 -0
  56. package/dist/server/{convex-auth.js → auth.js} +287 -111
  57. package/dist/server/auth.js.map +1 -0
  58. package/dist/server/errors.d.ts +148 -0
  59. package/dist/server/errors.d.ts.map +1 -0
  60. package/dist/server/errors.js +179 -0
  61. package/dist/server/errors.js.map +1 -0
  62. package/dist/server/implementation/index.d.ts +170 -48
  63. package/dist/server/implementation/index.d.ts.map +1 -1
  64. package/dist/server/implementation/index.js +383 -167
  65. package/dist/server/implementation/index.js.map +1 -1
  66. package/dist/server/implementation/{apiKey.d.ts → keys.d.ts} +1 -1
  67. package/dist/server/implementation/keys.d.ts.map +1 -0
  68. package/dist/server/implementation/{apiKey.js → keys.js} +4 -5
  69. package/dist/server/implementation/keys.js.map +1 -0
  70. package/dist/server/implementation/mutations/{modifyAccount.d.ts → account.d.ts} +3 -3
  71. package/dist/server/implementation/mutations/account.d.ts.map +1 -0
  72. package/dist/server/implementation/mutations/{modifyAccount.js → account.js} +4 -3
  73. package/dist/server/implementation/mutations/account.js.map +1 -0
  74. package/dist/server/implementation/mutations/{createVerificationCode.d.ts → code.d.ts} +1 -1
  75. package/dist/server/implementation/mutations/code.d.ts.map +1 -0
  76. package/dist/server/implementation/mutations/{createVerificationCode.js → code.js} +2 -2
  77. package/dist/server/implementation/mutations/code.js.map +1 -0
  78. package/dist/server/implementation/mutations/index.d.ts +33 -33
  79. package/dist/server/implementation/mutations/index.d.ts.map +1 -1
  80. package/dist/server/implementation/mutations/index.js +22 -22
  81. package/dist/server/implementation/mutations/index.js.map +1 -1
  82. package/dist/server/implementation/mutations/{invalidateSessions.d.ts → invalidate.d.ts} +1 -1
  83. package/dist/server/implementation/mutations/invalidate.d.ts.map +1 -0
  84. package/dist/server/implementation/mutations/{invalidateSessions.js → invalidate.js} +2 -2
  85. package/dist/server/implementation/mutations/invalidate.js.map +1 -0
  86. package/dist/server/implementation/mutations/{userOAuth.d.ts → oauth.d.ts} +3 -3
  87. package/dist/server/implementation/mutations/oauth.d.ts.map +1 -0
  88. package/dist/server/implementation/mutations/{userOAuth.js → oauth.js} +4 -3
  89. package/dist/server/implementation/mutations/oauth.js.map +1 -0
  90. package/dist/server/implementation/mutations/{refreshSession.d.ts → refresh.d.ts} +1 -1
  91. package/dist/server/implementation/mutations/refresh.d.ts.map +1 -0
  92. package/dist/server/implementation/mutations/{refreshSession.js → refresh.js} +3 -3
  93. package/dist/server/implementation/mutations/refresh.js.map +1 -0
  94. package/dist/server/implementation/mutations/{createAccountFromCredentials.d.ts → register.d.ts} +4 -4
  95. package/dist/server/implementation/mutations/register.d.ts.map +1 -0
  96. package/dist/server/implementation/mutations/{createAccountFromCredentials.js → register.js} +4 -3
  97. package/dist/server/implementation/mutations/register.js.map +1 -0
  98. package/dist/server/implementation/mutations/{retrieveAccountWithCredentials.d.ts → retrieve.d.ts} +3 -3
  99. package/dist/server/implementation/mutations/retrieve.d.ts.map +1 -0
  100. package/dist/server/implementation/mutations/{retrieveAccountWithCredentials.js → retrieve.js} +3 -3
  101. package/dist/server/implementation/mutations/retrieve.js.map +1 -0
  102. package/dist/server/implementation/mutations/{verifierSignature.d.ts → signature.d.ts} +1 -1
  103. package/dist/server/implementation/mutations/signature.d.ts.map +1 -0
  104. package/dist/server/implementation/mutations/{verifierSignature.js → signature.js} +4 -3
  105. package/dist/server/implementation/mutations/signature.js.map +1 -0
  106. package/dist/server/implementation/mutations/{signIn.d.ts → signin.d.ts} +1 -1
  107. package/dist/server/implementation/mutations/{signIn.d.ts.map → signin.d.ts.map} +1 -1
  108. package/dist/server/implementation/mutations/{signIn.js → signin.js} +2 -2
  109. package/dist/server/implementation/mutations/{signIn.js.map → signin.js.map} +1 -1
  110. package/dist/server/implementation/mutations/{signOut.d.ts → signout.d.ts} +1 -1
  111. package/dist/server/implementation/mutations/{signOut.d.ts.map → signout.d.ts.map} +1 -1
  112. package/dist/server/implementation/mutations/{signOut.js → signout.js} +2 -2
  113. package/dist/server/implementation/mutations/{signOut.js.map → signout.js.map} +1 -1
  114. package/dist/server/implementation/mutations/{storeRef.d.ts → store.d.ts} +1 -1
  115. package/dist/server/implementation/mutations/store.d.ts.map +1 -0
  116. package/dist/server/implementation/mutations/{storeRef.js → store.js} +1 -1
  117. package/dist/server/implementation/mutations/store.js.map +1 -0
  118. package/dist/server/implementation/mutations/verifier.js +1 -1
  119. package/dist/server/implementation/mutations/verifier.js.map +1 -1
  120. package/dist/server/implementation/mutations/{verifyCodeAndSignIn.d.ts → verify.d.ts} +1 -1
  121. package/dist/server/implementation/mutations/verify.d.ts.map +1 -0
  122. package/dist/server/implementation/mutations/{verifyCodeAndSignIn.js → verify.js} +3 -3
  123. package/dist/server/implementation/mutations/verify.js.map +1 -0
  124. package/dist/server/implementation/passkey.d.ts.map +1 -1
  125. package/dist/server/implementation/passkey.js +47 -55
  126. package/dist/server/implementation/passkey.js.map +1 -1
  127. package/dist/server/implementation/provider.d.ts.map +1 -1
  128. package/dist/server/implementation/provider.js +5 -4
  129. package/dist/server/implementation/provider.js.map +1 -1
  130. package/dist/server/implementation/{rateLimit.d.ts → ratelimit.d.ts} +1 -1
  131. package/dist/server/implementation/{rateLimit.d.ts.map → ratelimit.d.ts.map} +1 -1
  132. package/dist/server/implementation/{rateLimit.js → ratelimit.js} +1 -1
  133. package/dist/server/implementation/{rateLimit.js.map → ratelimit.js.map} +1 -1
  134. package/dist/server/implementation/redirects.d.ts.map +1 -1
  135. package/dist/server/implementation/redirects.js +2 -1
  136. package/dist/server/implementation/redirects.js.map +1 -1
  137. package/dist/server/implementation/{refreshTokens.d.ts → refresh.d.ts} +1 -1
  138. package/dist/server/implementation/refresh.d.ts.map +1 -0
  139. package/dist/server/implementation/{refreshTokens.js → refresh.js} +3 -2
  140. package/dist/server/implementation/refresh.js.map +1 -0
  141. package/dist/server/implementation/sessions.js +1 -1
  142. package/dist/server/implementation/sessions.js.map +1 -1
  143. package/dist/server/implementation/{signIn.d.ts → signin.d.ts} +1 -1
  144. package/dist/server/implementation/{signIn.d.ts.map → signin.d.ts.map} +1 -1
  145. package/dist/server/implementation/{signIn.js → signin.js} +12 -8
  146. package/dist/server/implementation/signin.js.map +1 -0
  147. package/dist/server/implementation/totp.d.ts.map +1 -1
  148. package/dist/server/implementation/totp.js +29 -29
  149. package/dist/server/implementation/totp.js.map +1 -1
  150. package/dist/server/implementation/types.d.ts +131 -1
  151. package/dist/server/implementation/types.d.ts.map +1 -1
  152. package/dist/server/implementation/types.js +65 -1
  153. package/dist/server/implementation/types.js.map +1 -1
  154. package/dist/server/implementation/users.d.ts.map +1 -1
  155. package/dist/server/implementation/users.js +3 -2
  156. package/dist/server/implementation/users.js.map +1 -1
  157. package/dist/server/index.d.ts +131 -1
  158. package/dist/server/index.d.ts.map +1 -1
  159. package/dist/server/index.js +117 -1
  160. package/dist/server/index.js.map +1 -1
  161. package/dist/server/oauth/{authorizationUrl.d.ts → authorization.d.ts} +1 -1
  162. package/dist/server/oauth/authorization.d.ts.map +1 -0
  163. package/dist/server/oauth/{authorizationUrl.js → authorization.js} +4 -3
  164. package/dist/server/oauth/authorization.js.map +1 -0
  165. package/dist/server/oauth/callback.d.ts.map +1 -1
  166. package/dist/server/oauth/callback.js +7 -6
  167. package/dist/server/oauth/callback.js.map +1 -1
  168. package/dist/server/oauth/checks.d.ts.map +1 -1
  169. package/dist/server/oauth/checks.js +2 -1
  170. package/dist/server/oauth/checks.js.map +1 -1
  171. package/dist/server/oauth/{convexAuth.d.ts → helpers.d.ts} +1 -1
  172. package/dist/server/oauth/helpers.d.ts.map +1 -0
  173. package/dist/server/oauth/{convexAuth.js → helpers.js} +6 -5
  174. package/dist/server/oauth/helpers.js.map +1 -0
  175. package/dist/server/oauth/lib/utils/{customFetch.d.ts → fetch.d.ts} +1 -1
  176. package/dist/server/oauth/lib/utils/fetch.d.ts.map +1 -0
  177. package/dist/server/oauth/lib/utils/{customFetch.js → fetch.js} +1 -1
  178. package/dist/server/oauth/lib/utils/fetch.js.map +1 -0
  179. package/dist/server/{provider_utils.d.ts → providers.d.ts} +1 -1
  180. package/dist/server/providers.d.ts.map +1 -0
  181. package/dist/server/{provider_utils.js → providers.js} +1 -1
  182. package/dist/server/providers.js.map +1 -0
  183. package/dist/server/{email-templates.d.ts → templates.d.ts} +8 -1
  184. package/dist/server/templates.d.ts.map +1 -0
  185. package/dist/server/{portal-email.js → templates.js} +74 -3
  186. package/dist/server/templates.js.map +1 -0
  187. package/dist/server/types.d.ts +88 -5
  188. package/dist/server/types.d.ts.map +1 -1
  189. package/dist/server/utils.d.ts.map +1 -1
  190. package/dist/server/utils.js +2 -1
  191. package/dist/server/utils.js.map +1 -1
  192. package/dist/server/version.d.ts +1 -1
  193. package/dist/server/version.d.ts.map +1 -1
  194. package/dist/server/version.js +1 -1
  195. package/dist/server/version.js.map +1 -1
  196. package/package.json +5 -1
  197. package/src/cli/index.ts +5 -5
  198. package/src/cli/{portal-link.ts → link.ts} +1 -1
  199. package/src/cli/utils.ts +1 -1
  200. package/src/client/index.ts +102 -17
  201. package/src/component/_generated/api.ts +2 -2
  202. package/src/component/_generated/component.ts +1 -1
  203. package/src/component/{portalBridge.ts → bridge.ts} +2 -2
  204. package/src/component/index.ts +10 -2
  205. package/src/component/public.ts +25 -4
  206. package/src/component/schema.ts +4 -1
  207. package/src/providers/anonymous.ts +3 -0
  208. package/src/providers/credentials.ts +3 -0
  209. package/src/providers/email.ts +3 -0
  210. package/src/providers/passkey.ts +8 -1
  211. package/src/providers/password.ts +3 -0
  212. package/src/providers/phone.ts +3 -0
  213. package/src/providers/totp.ts +9 -0
  214. package/src/server/auth.ts +969 -0
  215. package/src/server/errors.ts +275 -0
  216. package/src/server/implementation/index.ts +370 -88
  217. package/src/server/implementation/{apiKey.ts → keys.ts} +7 -6
  218. package/src/server/implementation/mutations/{modifyAccount.ts → account.ts} +3 -4
  219. package/src/server/implementation/mutations/{createVerificationCode.ts → code.ts} +1 -1
  220. package/src/server/implementation/mutations/index.ts +22 -22
  221. package/src/server/implementation/mutations/{invalidateSessions.ts → invalidate.ts} +1 -1
  222. package/src/server/implementation/mutations/{userOAuth.ts → oauth.ts} +3 -2
  223. package/src/server/implementation/mutations/{refreshSession.ts → refresh.ts} +2 -2
  224. package/src/server/implementation/mutations/{createAccountFromCredentials.ts → register.ts} +3 -2
  225. package/src/server/implementation/mutations/{retrieveAccountWithCredentials.ts → retrieve.ts} +2 -2
  226. package/src/server/implementation/mutations/{verifierSignature.ts → signature.ts} +3 -2
  227. package/src/server/implementation/mutations/{signIn.ts → signin.ts} +1 -1
  228. package/src/server/implementation/mutations/{signOut.ts → signout.ts} +1 -1
  229. package/src/server/implementation/mutations/verifier.ts +1 -1
  230. package/src/server/implementation/mutations/{verifyCodeAndSignIn.ts → verify.ts} +2 -2
  231. package/src/server/implementation/passkey.ts +86 -116
  232. package/src/server/implementation/provider.ts +5 -8
  233. package/src/server/implementation/redirects.ts +2 -3
  234. package/src/server/implementation/{refreshTokens.ts → refresh.ts} +2 -1
  235. package/src/server/implementation/sessions.ts +1 -1
  236. package/src/server/implementation/{signIn.ts → signin.ts} +13 -11
  237. package/src/server/implementation/totp.ts +60 -84
  238. package/src/server/implementation/types.ts +316 -1
  239. package/src/server/implementation/users.ts +4 -7
  240. package/src/server/index.ts +142 -3
  241. package/src/server/oauth/{authorizationUrl.ts → authorization.ts} +3 -2
  242. package/src/server/oauth/callback.ts +7 -6
  243. package/src/server/oauth/checks.ts +3 -1
  244. package/src/server/oauth/{convexAuth.ts → helpers.ts} +8 -5
  245. package/src/server/{portal-email.ts → templates.ts} +78 -2
  246. package/src/server/types.ts +133 -4
  247. package/src/server/utils.ts +3 -1
  248. package/src/server/version.ts +1 -1
  249. package/dist/component/portalBridge.d.ts.map +0 -1
  250. package/dist/component/portalBridge.js.map +0 -1
  251. package/dist/server/convex-auth.d.ts.map +0 -1
  252. package/dist/server/convex-auth.js.map +0 -1
  253. package/dist/server/convex_types.d.ts +0 -17
  254. package/dist/server/convex_types.d.ts.map +0 -1
  255. package/dist/server/convex_types.js +0 -2
  256. package/dist/server/convex_types.js.map +0 -1
  257. package/dist/server/email-templates.d.ts.map +0 -1
  258. package/dist/server/email-templates.js +0 -74
  259. package/dist/server/email-templates.js.map +0 -1
  260. package/dist/server/implementation/apiKey.d.ts.map +0 -1
  261. package/dist/server/implementation/apiKey.js.map +0 -1
  262. package/dist/server/implementation/mutations/createAccountFromCredentials.d.ts.map +0 -1
  263. package/dist/server/implementation/mutations/createAccountFromCredentials.js.map +0 -1
  264. package/dist/server/implementation/mutations/createVerificationCode.d.ts.map +0 -1
  265. package/dist/server/implementation/mutations/createVerificationCode.js.map +0 -1
  266. package/dist/server/implementation/mutations/invalidateSessions.d.ts.map +0 -1
  267. package/dist/server/implementation/mutations/invalidateSessions.js.map +0 -1
  268. package/dist/server/implementation/mutations/modifyAccount.d.ts.map +0 -1
  269. package/dist/server/implementation/mutations/modifyAccount.js.map +0 -1
  270. package/dist/server/implementation/mutations/refreshSession.d.ts.map +0 -1
  271. package/dist/server/implementation/mutations/refreshSession.js.map +0 -1
  272. package/dist/server/implementation/mutations/retrieveAccountWithCredentials.d.ts.map +0 -1
  273. package/dist/server/implementation/mutations/retrieveAccountWithCredentials.js.map +0 -1
  274. package/dist/server/implementation/mutations/storeRef.d.ts.map +0 -1
  275. package/dist/server/implementation/mutations/storeRef.js.map +0 -1
  276. package/dist/server/implementation/mutations/userOAuth.d.ts.map +0 -1
  277. package/dist/server/implementation/mutations/userOAuth.js.map +0 -1
  278. package/dist/server/implementation/mutations/verifierSignature.d.ts.map +0 -1
  279. package/dist/server/implementation/mutations/verifierSignature.js.map +0 -1
  280. package/dist/server/implementation/mutations/verifyCodeAndSignIn.d.ts.map +0 -1
  281. package/dist/server/implementation/mutations/verifyCodeAndSignIn.js.map +0 -1
  282. package/dist/server/implementation/refreshTokens.d.ts.map +0 -1
  283. package/dist/server/implementation/refreshTokens.js.map +0 -1
  284. package/dist/server/implementation/signIn.js.map +0 -1
  285. package/dist/server/oauth/authorizationUrl.d.ts.map +0 -1
  286. package/dist/server/oauth/authorizationUrl.js.map +0 -1
  287. package/dist/server/oauth/convexAuth.d.ts.map +0 -1
  288. package/dist/server/oauth/convexAuth.js.map +0 -1
  289. package/dist/server/oauth/lib/utils/customFetch.d.ts.map +0 -1
  290. package/dist/server/oauth/lib/utils/customFetch.js.map +0 -1
  291. package/dist/server/portal-email.d.ts +0 -19
  292. package/dist/server/portal-email.d.ts.map +0 -1
  293. package/dist/server/portal-email.js.map +0 -1
  294. package/dist/server/provider_utils.d.ts.map +0 -1
  295. package/dist/server/provider_utils.js.map +0 -1
  296. package/src/server/convex-auth.ts +0 -602
  297. package/src/server/convex_types.ts +0 -55
  298. package/src/server/email-templates.ts +0 -77
  299. /package/src/cli/{generateKeys.ts → keys.ts} +0 -0
  300. /package/src/cli/{portal-upload.ts → upload.ts} +0 -0
  301. /package/src/server/implementation/mutations/{storeRef.ts → store.ts} +0 -0
  302. /package/src/server/implementation/{rateLimit.ts → ratelimit.ts} +0 -0
  303. /package/src/server/oauth/lib/utils/{customFetch.ts → fetch.ts} +0 -0
  304. /package/src/server/{provider_utils.ts → providers.ts} +0 -0
@@ -31,7 +31,9 @@
31
31
  *
32
32
  * @module
33
33
  */
34
- import type { HttpRouter } from "convex/server";
34
+ import type { HttpRouter, UserIdentity } from "convex/server";
35
+ import type { GenericId } from "convex/values";
36
+ import type { Doc } from "./implementation/types.js";
35
37
  import type { ComponentApi as AuthComponentApi } from "../component/_generated/component.js";
36
38
  import { Auth as AuthFactory } from "./implementation/index.js";
37
39
  import type { ConvexAuthConfig } from "./types.js";
@@ -78,18 +80,19 @@ export declare class Auth {
78
80
  readonly component: AuthComponentApi;
79
81
  /** @internal */
80
82
  readonly portalUrl: string;
81
- /** User helpers: `.current(ctx)`, `.require(ctx)`, `.get(ctx, userId)`, `.viewer(ctx)` */
83
+ /** User helpers: `.current(ctx)`, `.require(ctx)`, `.get(ctx, userId)`, `.patch(ctx, userId, data)`, `.viewer(ctx)`, `.group.list(ctx, ...)`, `.group.get(ctx, ...)` */
82
84
  get user(): {
83
85
  current: (ctx: {
84
86
  auth: import("convex/server").Auth;
85
- }) => Promise<import("convex/values").GenericId<"user"> | null>;
87
+ }) => Promise<GenericId<"user"> | null>;
86
88
  require: (ctx: {
87
89
  auth: import("convex/server").Auth;
88
- }) => Promise<import("convex/values").GenericId<"user">>;
90
+ }) => Promise<GenericId<"user">>;
89
91
  get: (ctx: Pick<import("convex/server").GenericActionCtx<import("convex/server").GenericDataModel>, "runQuery">, userId: string) => Promise<any>;
90
92
  viewer: (ctx: Pick<import("convex/server").GenericActionCtx<import("convex/server").GenericDataModel>, "runQuery"> & {
91
93
  auth: import("convex/server").Auth;
92
94
  }) => Promise<any>;
95
+ patch: (ctx: Pick<import("convex/server").GenericActionCtx<import("convex/server").GenericDataModel>, "runQuery" | "runMutation">, userId: string, data: Record<string, unknown>) => Promise<void>;
93
96
  group: {
94
97
  list: (ctx: Pick<import("convex/server").GenericActionCtx<import("convex/server").GenericDataModel>, "runQuery">, opts: {
95
98
  userId: string;
@@ -100,27 +103,27 @@ export declare class Auth {
100
103
  }) => Promise<any>;
101
104
  };
102
105
  };
103
- /** Session helpers */
106
+ /** Session helpers: `.current(ctx)`, `.invalidate(ctx, { userId, except? })` */
104
107
  get session(): {
105
108
  current: (ctx: {
106
109
  auth: import("convex/server").Auth;
107
- }) => Promise<import("convex/values").GenericId<"session"> | null>;
110
+ }) => Promise<GenericId<"session"> | null>;
108
111
  invalidate: <DataModel extends import("convex/server").GenericDataModel>(ctx: import("convex/server").GenericActionCtx<DataModel>, args: {
109
- userId: import("convex/values").GenericId<"user">;
110
- except?: import("convex/values").GenericId<"session">[];
112
+ userId: GenericId<"user">;
113
+ except?: GenericId<"session">[];
111
114
  }) => Promise<void>;
112
115
  };
113
- /** Provider helpers */
116
+ /** Provider helpers: `.signIn(ctx, provider, args)` */
114
117
  get provider(): {
115
118
  signIn: <DataModel extends import("convex/server").GenericDataModel>(ctx: import("convex/server").GenericActionCtx<DataModel>, provider: import("./types.js").AuthProviderConfig, args: {
116
- accountId?: import("convex/values").GenericId<"account">;
119
+ accountId?: GenericId<"account">;
117
120
  params?: Record<string, unknown>;
118
121
  }) => Promise<{
119
- userId: import("convex/values").GenericId<"user">;
120
- sessionId: import("convex/values").GenericId<"session">;
122
+ userId: GenericId<"user">;
123
+ sessionId: GenericId<"session">;
121
124
  } | null>;
122
125
  };
123
- /** Account helpers */
126
+ /** Account helpers: `.create(ctx, args)`, `.get(ctx, args)`, `.updateCredentials(ctx, args)` */
124
127
  get account(): {
125
128
  create: <DataModel extends import("convex/server").GenericDataModel>(ctx: import("convex/server").GenericActionCtx<DataModel>, args: {
126
129
  provider: string;
@@ -132,8 +135,8 @@ export declare class Auth {
132
135
  shouldLinkViaEmail?: boolean;
133
136
  shouldLinkViaPhone?: boolean;
134
137
  }) => Promise<{
135
- account: import("./implementation/types.js").Doc<"account">;
136
- user: import("./implementation/types.js").Doc<"user">;
138
+ account: Doc<"account">;
139
+ user: Doc<"user">;
137
140
  }>;
138
141
  get: <DataModel extends import("convex/server").GenericDataModel>(ctx: import("convex/server").GenericActionCtx<DataModel>, args: {
139
142
  provider: string;
@@ -142,8 +145,8 @@ export declare class Auth {
142
145
  secret?: string;
143
146
  };
144
147
  }) => Promise<{
145
- account: import("./implementation/types.js").Doc<"account">;
146
- user: import("./implementation/types.js").Doc<"user">;
148
+ account: Doc<"account">;
149
+ user: Doc<"user">;
147
150
  }>;
148
151
  updateCredentials: <DataModel extends import("convex/server").GenericDataModel>(ctx: import("convex/server").GenericActionCtx<DataModel>, args: {
149
152
  provider: string;
@@ -153,16 +156,18 @@ export declare class Auth {
153
156
  };
154
157
  }) => Promise<void>;
155
158
  };
156
- /** Group helpers */
159
+ /** Group helpers: `.create(ctx, ...)`, `.get(ctx, id)`, `.list(ctx, ...)`, `.update(ctx, ...)`, `.delete(ctx, id)`, `.member.*` */
157
160
  get group(): {
158
161
  create: (ctx: Pick<import("convex/server").GenericActionCtx<import("convex/server").GenericDataModel>, "runQuery" | "runMutation">, data: {
159
162
  name: string;
160
163
  slug?: string;
164
+ type?: string;
161
165
  parentGroupId?: string;
162
166
  extend?: Record<string, unknown>;
163
167
  }) => Promise<string>;
164
168
  get: (ctx: Pick<import("convex/server").GenericActionCtx<import("convex/server").GenericDataModel>, "runQuery">, groupId: string) => Promise<any>;
165
169
  list: (ctx: Pick<import("convex/server").GenericActionCtx<import("convex/server").GenericDataModel>, "runQuery">, opts?: {
170
+ type?: string;
166
171
  parentGroupId?: string;
167
172
  }) => Promise<any>;
168
173
  update: (ctx: Pick<import("convex/server").GenericActionCtx<import("convex/server").GenericDataModel>, "runQuery" | "runMutation">, groupId: string, data: Record<string, unknown>) => Promise<void>;
@@ -183,7 +188,7 @@ export declare class Auth {
183
188
  update: (ctx: Pick<import("convex/server").GenericActionCtx<import("convex/server").GenericDataModel>, "runQuery" | "runMutation">, memberId: string, data: Record<string, unknown>) => Promise<void>;
184
189
  };
185
190
  };
186
- /** Invite helpers */
191
+ /** Invite helpers: `.create(ctx, ...)`, `.get(ctx, id)`, `.getByTokenHash(ctx, hash)`, `.list(ctx, ...)`, `.accept(ctx, ...)`, `.revoke(ctx, id)` */
187
192
  get invite(): {
188
193
  create: (ctx: Pick<import("convex/server").GenericActionCtx<import("convex/server").GenericDataModel>, "runQuery" | "runMutation">, data: {
189
194
  groupId?: string;
@@ -204,7 +209,7 @@ export declare class Auth {
204
209
  accept: (ctx: Pick<import("convex/server").GenericActionCtx<import("convex/server").GenericDataModel>, "runQuery" | "runMutation">, inviteId: string, acceptedByUserId?: string) => Promise<void>;
205
210
  revoke: (ctx: Pick<import("convex/server").GenericActionCtx<import("convex/server").GenericDataModel>, "runQuery" | "runMutation">, inviteId: string) => Promise<void>;
206
211
  };
207
- /** Passkey helpers */
212
+ /** Passkey helpers: `.list(ctx, { userId })`, `.rename(ctx, id, name)`, `.remove(ctx, id)` */
208
213
  get passkey(): {
209
214
  list: (ctx: Pick<import("convex/server").GenericActionCtx<import("convex/server").GenericDataModel>, "runQuery">, opts: {
210
215
  userId: string;
@@ -212,14 +217,14 @@ export declare class Auth {
212
217
  rename: (ctx: Pick<import("convex/server").GenericActionCtx<import("convex/server").GenericDataModel>, "runQuery" | "runMutation">, passkeyId: string, name: string) => Promise<void>;
213
218
  remove: (ctx: Pick<import("convex/server").GenericActionCtx<import("convex/server").GenericDataModel>, "runQuery" | "runMutation">, passkeyId: string) => Promise<void>;
214
219
  };
215
- /** TOTP helpers */
220
+ /** TOTP helpers: `.list(ctx, { userId })`, `.remove(ctx, id)` */
216
221
  get totp(): {
217
222
  list: (ctx: Pick<import("convex/server").GenericActionCtx<import("convex/server").GenericDataModel>, "runQuery">, opts: {
218
223
  userId: string;
219
224
  }) => Promise<any>;
220
225
  remove: (ctx: Pick<import("convex/server").GenericActionCtx<import("convex/server").GenericDataModel>, "runQuery" | "runMutation">, totpId: string) => Promise<void>;
221
226
  };
222
- /** API key helpers: `.create(ctx, ...)`, `.verify(ctx, ...)`, `.list(ctx, ...)`, `.revoke(ctx, ...)` */
227
+ /** API key helpers: `.create(ctx, ...)`, `.verify(ctx, rawKey)`, `.list(ctx, ...)`, `.get(ctx, id)`, `.update(ctx, ...)`, `.revoke(ctx, id)`, `.remove(ctx, id)` */
223
228
  get key(): {
224
229
  create: (ctx: Pick<import("convex/server").GenericActionCtx<import("convex/server").GenericDataModel>, "runQuery" | "runMutation">, opts: {
225
230
  userId: string;
@@ -241,8 +246,8 @@ export declare class Auth {
241
246
  }>;
242
247
  list: (ctx: Pick<import("convex/server").GenericActionCtx<import("convex/server").GenericDataModel>, "runQuery">, opts: {
243
248
  userId: string;
244
- }) => Promise<any>;
245
- get: (ctx: Pick<import("convex/server").GenericActionCtx<import("convex/server").GenericDataModel>, "runQuery">, keyId: string) => Promise<any>;
249
+ }) => Promise<import("./implementation/types.js").KeyDoc[]>;
250
+ get: (ctx: Pick<import("convex/server").GenericActionCtx<import("convex/server").GenericDataModel>, "runQuery">, keyId: string) => Promise<import("./implementation/types.js").KeyDoc | null>;
246
251
  update: (ctx: Pick<import("convex/server").GenericActionCtx<import("convex/server").GenericDataModel>, "runQuery" | "runMutation">, keyId: string, data: {
247
252
  name?: string;
248
253
  scopes?: import("./types.js").KeyScope[];
@@ -254,10 +259,14 @@ export declare class Auth {
254
259
  revoke: (ctx: Pick<import("convex/server").GenericActionCtx<import("convex/server").GenericDataModel>, "runQuery" | "runMutation">, keyId: string) => Promise<void>;
255
260
  remove: (ctx: Pick<import("convex/server").GenericActionCtx<import("convex/server").GenericDataModel>, "runQuery" | "runMutation">, keyId: string) => Promise<void>;
256
261
  };
262
+ /**
263
+ * @param component - The auth component reference from `components.auth`.
264
+ * @param config - Auth configuration (providers, email transport, session, JWT, callbacks).
265
+ */
257
266
  constructor(component: AuthComponentApi, config: AuthClassConfig);
258
267
  /**
259
- * Register HTTP routes for OAuth, JWT well-known endpoints, and portal
260
- * static file serving.
268
+ * HTTP namespace route registration, Bearer-authenticated endpoints,
269
+ * and portal static file serving.
261
270
  *
262
271
  * ```ts
263
272
  * // convex/http.ts
@@ -265,32 +274,213 @@ export declare class Auth {
265
274
  * import { auth } from "./auth";
266
275
  *
267
276
  * const http = httpRouter();
268
- * auth.addHttpRoutes(http);
277
+ * auth.http.add(http);
269
278
  * export default http;
270
279
  * ```
271
280
  */
272
- addHttpRoutes(http: HttpRouter, opts?: {
273
- pathPrefix?: string;
274
- spaFallback?: boolean;
275
- }): void;
281
+ get http(): {
282
+ /**
283
+ * Register core HTTP routes (OAuth, JWKS) **and** portal static file
284
+ * serving in one call.
285
+ *
286
+ * @param http - The Convex HTTP router to register routes on.
287
+ * @param opts.pathPrefix - URL prefix for portal static files. Defaults to `"/auth"`.
288
+ * @param opts.spaFallback - Serve `index.html` for unmatched sub-paths. Defaults to `true`.
289
+ */
290
+ add(http: HttpRouter, opts?: {
291
+ pathPrefix?: string;
292
+ spaFallback?: boolean;
293
+ }): void;
294
+ action: (handler: (ctx: import("convex/server").GenericActionCtx<import("convex/server").GenericDataModel> & import("./types.js").HttpKeyContext, request: Request) => Promise<Response | Record<string, unknown>>, options?: {
295
+ scope?: {
296
+ resource: string;
297
+ action: string;
298
+ };
299
+ cors?: import("./types.js").CorsConfig;
300
+ }) => import("convex/server").PublicHttpAction;
301
+ route: (http: HttpRouter, routeConfig: {
302
+ path: string;
303
+ method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
304
+ handler: (ctx: import("convex/server").GenericActionCtx<import("convex/server").GenericDataModel> & import("./types.js").HttpKeyContext, request: Request) => Promise<Response | Record<string, unknown>>;
305
+ scope?: {
306
+ resource: string;
307
+ action: string;
308
+ };
309
+ cors?: import("./types.js").CorsConfig;
310
+ }) => void;
311
+ };
276
312
  }
277
313
  /**
278
- * Create portal function definitions from a ConvexAuth instance.
314
+ * Create portal function definitions from an `Auth` instance.
279
315
  *
280
- * This is a standalone function (not a class method) because Convex's
281
- * bundler can trace through `export const { x } = fn(instance)` but
282
- * cannot trace through `instance.method()`.
316
+ * Standalone function (not a class method) because Convex's bundler
317
+ * can trace `export const { x } = fn(instance)` but not `instance.method()`.
283
318
  *
284
319
  * ```ts
285
320
  * export const { portalQuery, portalMutation, portalInternal } = Portal(auth);
286
321
  * ```
322
+ *
323
+ * @param auth - The `Auth` class instance from your `convex/auth.ts`.
324
+ * @returns `{ portalQuery, portalMutation, portalInternal }` — export all three.
287
325
  */
288
326
  export declare function Portal(auth: Auth): {
289
327
  portalQuery: import("convex/server").RegisteredQuery<"public", {
290
328
  action: string;
291
329
  userId?: string;
330
+ groupId?: string;
331
+ groupType?: string;
332
+ groupParentId?: string;
292
333
  }, Promise<any>>;
293
334
  portalMutation: import("convex/server").RegisteredMutation<"public", any, Promise<any>>;
294
335
  portalInternal: import("convex/server").RegisteredMutation<"internal", any, Promise<any>>;
295
336
  };
296
- //# sourceMappingURL=convex-auth.d.ts.map
337
+ /**
338
+ * The shape of a user document from the auth component's `user` table.
339
+ *
340
+ * Includes system fields (`_id`, `_creationTime`) plus the schema fields
341
+ * (`name`, `email`, `image`, `extend`, etc.).
342
+ */
343
+ export type UserDoc = Doc<"user">;
344
+ /**
345
+ * Configuration for auth context enrichment.
346
+ *
347
+ * @typeParam TResolve - The shape returned by the `resolve` callback.
348
+ * Inferred automatically — you usually don't need to supply this manually.
349
+ */
350
+ export type AuthCtxConfig<TResolve extends Record<string, unknown> = Record<string, never>> = {
351
+ /**
352
+ * When `true`, unauthenticated requests set `ctx.auth.userId` and
353
+ * `ctx.auth.user` to `null` instead of throwing.
354
+ *
355
+ * @default false
356
+ */
357
+ optional?: boolean;
358
+ /**
359
+ * Resolve additional context after authentication succeeds (e.g.
360
+ * group/role for multi-tenant apps). The returned object is spread
361
+ * into `ctx.auth`.
362
+ */
363
+ resolve?: (ctx: any, user: UserDoc) => Promise<TResolve> | TResolve;
364
+ };
365
+ /**
366
+ * Create a `convex-helpers`–compatible customization object that
367
+ * enriches `ctx.auth` with the authenticated user's data.
368
+ *
369
+ * Standalone function (not a class method) because Convex's bundler
370
+ * can trace `export const x = fn(instance)` but not `instance.method()`.
371
+ *
372
+ * ### Basic usage (with `convex-helpers`)
373
+ *
374
+ * ```ts
375
+ * // convex/functions.ts
376
+ * import { customQuery, customMutation } from "convex-helpers/server/customFunctions";
377
+ * import { query as rawQuery, mutation as rawMutation } from "./_generated/server";
378
+ * import { AuthCtx } from "\@robelest/convex-auth/component";
379
+ * import { auth } from "./auth";
380
+ *
381
+ * const authCtx = AuthCtx(auth);
382
+ *
383
+ * export const query = customQuery(rawQuery, authCtx);
384
+ * export const mutation = customMutation(rawMutation, authCtx);
385
+ * ```
386
+ *
387
+ * Then in any function file:
388
+ *
389
+ * ```ts
390
+ * // convex/messages.ts
391
+ * import { query, mutation } from "./functions";
392
+ *
393
+ * export const list = query({
394
+ * args: {},
395
+ * handler: async (ctx) => {
396
+ * // ctx.auth.userId and ctx.auth.user are already resolved
397
+ * return ctx.db.query("messages").collect();
398
+ * },
399
+ * });
400
+ * ```
401
+ *
402
+ * ### Optional auth (public routes)
403
+ *
404
+ * ```ts
405
+ * export const publicQuery = customQuery(rawQuery, AuthCtx(auth, { optional: true }));
406
+ * // ctx.auth.userId is null when unauthenticated
407
+ * ```
408
+ *
409
+ * ### Multi-tenant with group resolution
410
+ *
411
+ * ```ts
412
+ * const authCtx = AuthCtx(auth, {
413
+ * resolve: async (ctx, user) => {
414
+ * const groupId = user?.extend?.lastActiveGroup;
415
+ * const membership = await auth.user.group.get(ctx, {
416
+ * userId: user._id,
417
+ * groupId,
418
+ * });
419
+ * return { groupId, role: membership?.role ?? "member" };
420
+ * },
421
+ * });
422
+ * // ctx.auth.groupId and ctx.auth.role available in handlers
423
+ * ```
424
+ *
425
+ * @param auth - The `Auth` class instance from your `convex/auth.ts`.
426
+ * @param config - Optional configuration for optional auth and group resolution.
427
+ * @returns A `{ args, input }` customization object compatible with
428
+ * `customQuery` / `customMutation` from `convex-helpers`.
429
+ */
430
+ /**
431
+ * Overload: optional auth — `userId` and `user` may be `null`.
432
+ */
433
+ export declare function AuthCtx<TResolve extends Record<string, unknown> = Record<string, never>>(auth: Auth, config: AuthCtxConfig<TResolve> & {
434
+ optional: true;
435
+ }): {
436
+ args: {};
437
+ input: (ctx: any, _args: any, _extra?: any) => Promise<{
438
+ ctx: {
439
+ auth: {
440
+ getUserIdentity: () => Promise<UserIdentity | null>;
441
+ userId: GenericId<"user"> | null;
442
+ user: UserDoc | null;
443
+ } & TResolve;
444
+ };
445
+ args: {};
446
+ }>;
447
+ };
448
+ /**
449
+ * Overload: required auth (default) — `userId` and `user` are never `null`.
450
+ */
451
+ export declare function AuthCtx<TResolve extends Record<string, unknown> = Record<string, never>>(auth: Auth, config?: AuthCtxConfig<TResolve>): {
452
+ args: {};
453
+ input: (ctx: any, _args: any, _extra?: any) => Promise<{
454
+ ctx: {
455
+ auth: {
456
+ getUserIdentity: () => Promise<UserIdentity | null>;
457
+ userId: GenericId<"user">;
458
+ user: UserDoc;
459
+ } & TResolve;
460
+ };
461
+ args: {};
462
+ }>;
463
+ };
464
+ /**
465
+ * Extract the `ctx.auth` shape from an {@link AuthCtx} result.
466
+ *
467
+ * Follows the same pattern as `Infer<typeof validator>` in Convex
468
+ * and `z.infer<typeof schema>` in Zod.
469
+ *
470
+ * @example
471
+ * ```ts
472
+ * const authCtx = AuthCtx(auth, {
473
+ * resolve: async (ctx, user) => ({ groupId: "abc", role: "admin" }),
474
+ * });
475
+ * type MyAuth = InferAuth<typeof authCtx>;
476
+ * // { getUserIdentity, userId, user, groupId: string, role: string }
477
+ * ```
478
+ */
479
+ export type InferAuth<T extends {
480
+ input: (...args: any[]) => Promise<{
481
+ ctx: {
482
+ auth: any;
483
+ };
484
+ }>;
485
+ }> = Awaited<ReturnType<T["input"]>>["ctx"]["auth"];
486
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/server/auth.ts"],"names":[],"mappings":"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"}