@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
@@ -35,10 +35,11 @@ import { queryGeneric, mutationGeneric, internalMutationGeneric, httpActionGener
35
35
  import { v } from "convex/values";
36
36
  import { Auth as AuthFactory } from "./implementation/index.js";
37
37
  import { registerStaticRoutes } from "@convex-dev/self-hosting";
38
- import { portalMagicLinkEmail } from "./portal-email.js";
39
- import { defaultMagicLinkEmail } from "./email-templates.js";
38
+ import { portalMagicLinkEmail } from "./templates.js";
39
+ import { defaultMagicLinkEmail } from "./templates.js";
40
40
  import emailProvider from "../providers/email.js";
41
41
  import { AUTH_VERSION } from "./version.js";
42
+ import { throwAuthError } from "./errors.js";
42
43
  // ============================================================================
43
44
  // Helpers
44
45
  // ============================================================================
@@ -54,7 +55,7 @@ async function requirePortalAdmin(ctx, authComponent, userId) {
54
55
  });
55
56
  const isAdmin = invites.some((invite) => invite.role === "portalAdmin" && invite.acceptedByUserId === userId);
56
57
  if (!isAdmin) {
57
- throw new Error("Not authorized: portal admin access required");
58
+ throwAuthError("PORTAL_NOT_AUTHORIZED");
58
59
  }
59
60
  }
60
61
  // ============================================================================
@@ -90,24 +91,28 @@ export class Auth {
90
91
  /** @internal */
91
92
  portalUrl;
92
93
  // ---- Proxied auth helper sub-objects ----
93
- /** User helpers: `.current(ctx)`, `.require(ctx)`, `.get(ctx, userId)`, `.viewer(ctx)` */
94
+ /** User helpers: `.current(ctx)`, `.require(ctx)`, `.get(ctx, userId)`, `.patch(ctx, userId, data)`, `.viewer(ctx)`, `.group.list(ctx, ...)`, `.group.get(ctx, ...)` */
94
95
  get user() { return this._auth.user; }
95
- /** Session helpers */
96
+ /** Session helpers: `.current(ctx)`, `.invalidate(ctx, { userId, except? })` */
96
97
  get session() { return this._auth.session; }
97
- /** Provider helpers */
98
+ /** Provider helpers: `.signIn(ctx, provider, args)` */
98
99
  get provider() { return this._auth.provider; }
99
- /** Account helpers */
100
+ /** Account helpers: `.create(ctx, args)`, `.get(ctx, args)`, `.updateCredentials(ctx, args)` */
100
101
  get account() { return this._auth.account; }
101
- /** Group helpers */
102
+ /** Group helpers: `.create(ctx, ...)`, `.get(ctx, id)`, `.list(ctx, ...)`, `.update(ctx, ...)`, `.delete(ctx, id)`, `.member.*` */
102
103
  get group() { return this._auth.group; }
103
- /** Invite helpers */
104
+ /** Invite helpers: `.create(ctx, ...)`, `.get(ctx, id)`, `.getByTokenHash(ctx, hash)`, `.list(ctx, ...)`, `.accept(ctx, ...)`, `.revoke(ctx, id)` */
104
105
  get invite() { return this._auth.invite; }
105
- /** Passkey helpers */
106
+ /** Passkey helpers: `.list(ctx, { userId })`, `.rename(ctx, id, name)`, `.remove(ctx, id)` */
106
107
  get passkey() { return this._auth.passkey; }
107
- /** TOTP helpers */
108
+ /** TOTP helpers: `.list(ctx, { userId })`, `.remove(ctx, id)` */
108
109
  get totp() { return this._auth.totp; }
109
- /** API key helpers: `.create(ctx, ...)`, `.verify(ctx, ...)`, `.list(ctx, ...)`, `.revoke(ctx, ...)` */
110
+ /** API key helpers: `.create(ctx, ...)`, `.verify(ctx, rawKey)`, `.list(ctx, ...)`, `.get(ctx, id)`, `.update(ctx, ...)`, `.revoke(ctx, id)`, `.remove(ctx, id)` */
110
111
  get key() { return this._auth.key; }
112
+ /**
113
+ * @param component - The auth component reference from `components.auth`.
114
+ * @param config - Auth configuration (providers, email transport, session, JWT, callbacks).
115
+ */
111
116
  constructor(component, config) {
112
117
  this.component = component;
113
118
  // Derive portal URL from CONVEX_SITE_URL
@@ -126,7 +131,7 @@ export class Auth {
126
131
  authorize: undefined, // Magic link — no OTP email check needed
127
132
  async sendVerificationRequest({ identifier, url }, ctx) {
128
133
  if (!ctx) {
129
- throw new Error("Action context is required for email delivery");
134
+ throwAuthError("MISSING_ACTION_CONTEXT");
130
135
  }
131
136
  const { host } = new URL(url);
132
137
  await emailTransport.send(ctx, {
@@ -146,19 +151,31 @@ export class Auth {
146
151
  authorize: undefined, // Magic link — no OTP email check needed
147
152
  async sendVerificationRequest({ identifier, url, expires }, ctx) {
148
153
  if (!emailTransport) {
149
- throw new Error("Auth email config is required for the portal. " +
150
- "Configure email: { from, send } in your Auth constructor.");
154
+ throwAuthError("EMAIL_CONFIG_REQUIRED");
151
155
  }
152
156
  if (!ctx) {
153
- throw new Error("Action context is required for email delivery");
157
+ throwAuthError("MISSING_ACTION_CONTEXT");
154
158
  }
155
- const hours = Math.max(1, Math.floor((+expires - Date.now()) / (60 * 60 * 1000)));
156
- await emailTransport.send(ctx, {
157
- from: emailTransport.from,
158
- to: identifier,
159
- subject: "Sign in to Auth Portal",
160
- html: portalMagicLinkEmail(url, hours),
159
+ // Check authorization BEFORE sending only portal-authorized emails
160
+ const invites = await ctx.runQuery(component.public.inviteList, {
161
+ status: "accepted",
161
162
  });
163
+ const hasAccess = invites.some((invite) => invite.role === "portalAdmin" && invite.email === identifier);
164
+ if (!hasAccess) {
165
+ throwAuthError("PORTAL_NOT_AUTHORIZED");
166
+ }
167
+ const hours = Math.max(1, Math.floor((+expires - Date.now()) / (60 * 60 * 1000)));
168
+ try {
169
+ await emailTransport.send(ctx, {
170
+ from: emailTransport.from,
171
+ to: identifier,
172
+ subject: "Sign in to Auth Portal",
173
+ html: portalMagicLinkEmail(url, hours),
174
+ });
175
+ }
176
+ catch (e) {
177
+ throwAuthError("EMAIL_SEND_FAILED", "Failed to send portal sign-in email.", { detail: e instanceof Error ? e.message : String(e) });
178
+ }
162
179
  },
163
180
  }));
164
181
  // Initialize the core AuthFactory()
@@ -173,8 +190,8 @@ export class Auth {
173
190
  this.store = authResult.store;
174
191
  }
175
192
  /**
176
- * Register HTTP routes for OAuth, JWT well-known endpoints, and portal
177
- * static file serving.
193
+ * HTTP namespace route registration, Bearer-authenticated endpoints,
194
+ * and portal static file serving.
178
195
  *
179
196
  * ```ts
180
197
  * // convex/http.ts
@@ -182,70 +199,88 @@ export class Auth {
182
199
  * import { auth } from "./auth";
183
200
  *
184
201
  * const http = httpRouter();
185
- * auth.addHttpRoutes(http);
202
+ * auth.http.add(http);
186
203
  * export default http;
187
204
  * ```
188
205
  */
189
- addHttpRoutes(http, opts) {
190
- // Core auth routes (OAuth, JWKS, etc.)
191
- this._auth.addHttpRoutes(http);
192
- const prefix = opts?.pathPrefix ?? "/auth";
193
- // Portal configuration endpoint — serves Convex URLs + version info.
194
- // The portal SPA fetches this at startup to discover its Convex backend,
195
- // which is critical for custom domain deployments where the hostname
196
- // alone doesn't reveal the Convex cloud URL.
197
- // Registered as an exact path match before the static file prefix catch-all.
198
- http.route({
199
- path: `${prefix}/.well-known/portal-config`,
200
- method: "GET",
201
- handler: httpActionGeneric(async () => {
202
- return new Response(JSON.stringify({
203
- convexUrl: process.env.CONVEX_CLOUD_URL,
204
- siteUrl: process.env.CONVEX_SITE_URL,
205
- version: AUTH_VERSION,
206
- }), {
207
- status: 200,
208
- headers: {
209
- "Content-Type": "application/json",
210
- "Cache-Control": "public, max-age=60, stale-while-revalidate=60",
211
- "Access-Control-Allow-Origin": "*",
206
+ get http() {
207
+ // Cache the object so repeated access returns the same reference
208
+ const inner = this._auth.http;
209
+ const component = this.component;
210
+ return {
211
+ ...inner,
212
+ /**
213
+ * Register core HTTP routes (OAuth, JWKS) **and** portal static file
214
+ * serving in one call.
215
+ *
216
+ * @param http - The Convex HTTP router to register routes on.
217
+ * @param opts.pathPrefix - URL prefix for portal static files. Defaults to `"/auth"`.
218
+ * @param opts.spaFallback - Serve `index.html` for unmatched sub-paths. Defaults to `true`.
219
+ */
220
+ add(http, opts) {
221
+ // Core auth routes (OAuth, JWKS, etc.)
222
+ inner.add(http);
223
+ const prefix = opts?.pathPrefix ?? "/auth";
224
+ // Portal configuration endpoint — serves Convex URLs + version info.
225
+ // The portal SPA fetches this at startup to discover its Convex backend,
226
+ // which is critical for custom domain deployments where the hostname
227
+ // alone doesn't reveal the Convex cloud URL.
228
+ // Registered as an exact path match before the static file prefix catch-all.
229
+ http.route({
230
+ path: `${prefix}/.well-known/portal-config`,
231
+ method: "GET",
232
+ handler: httpActionGeneric(async () => {
233
+ return new Response(JSON.stringify({
234
+ convexUrl: process.env.CONVEX_CLOUD_URL,
235
+ siteUrl: process.env.CONVEX_SITE_URL,
236
+ version: AUTH_VERSION,
237
+ }), {
238
+ status: 200,
239
+ headers: {
240
+ "Content-Type": "application/json",
241
+ "Cache-Control": "public, max-age=60, stale-while-revalidate=60",
242
+ "Access-Control-Allow-Origin": "*",
243
+ },
244
+ });
245
+ }),
246
+ });
247
+ // Create a shim that maps the self-hosting ComponentApi shape
248
+ // to the auth component's bridge functions
249
+ const selfHostingShim = {
250
+ lib: {
251
+ getByPath: component.bridge.getByPath,
252
+ getCurrentDeployment: component.bridge.getCurrentDeployment,
253
+ listAssets: component.bridge.listAssets,
254
+ recordAsset: component.bridge.recordAsset,
255
+ gcOldAssets: component.bridge.gcOldAssets,
256
+ setCurrentDeployment: component.bridge.setCurrentDeployment,
257
+ // generateUploadUrl is not needed — we use app storage directly
258
+ generateUploadUrl: undefined,
212
259
  },
260
+ };
261
+ registerStaticRoutes(http, selfHostingShim, {
262
+ pathPrefix: prefix,
263
+ spaFallback: opts?.spaFallback ?? true,
213
264
  });
214
- }),
215
- });
216
- // Create a shim that maps the self-hosting ComponentApi shape
217
- // to the auth component's portalBridge functions
218
- const selfHostingShim = {
219
- lib: {
220
- getByPath: this.component.portalBridge.getByPath,
221
- getCurrentDeployment: this.component.portalBridge.getCurrentDeployment,
222
- listAssets: this.component.portalBridge.listAssets,
223
- recordAsset: this.component.portalBridge.recordAsset,
224
- gcOldAssets: this.component.portalBridge.gcOldAssets,
225
- setCurrentDeployment: this.component.portalBridge.setCurrentDeployment,
226
- // generateUploadUrl is not needed — we use app storage directly
227
- generateUploadUrl: undefined,
228
265
  },
229
266
  };
230
- registerStaticRoutes(http, selfHostingShim, {
231
- pathPrefix: prefix,
232
- spaFallback: opts?.spaFallback ?? true,
233
- });
234
267
  }
235
268
  }
236
269
  // ============================================================================
237
270
  // Portal exports (standalone function)
238
271
  // ============================================================================
239
272
  /**
240
- * Create portal function definitions from a ConvexAuth instance.
273
+ * Create portal function definitions from an `Auth` instance.
241
274
  *
242
- * This is a standalone function (not a class method) because Convex's
243
- * bundler can trace through `export const { x } = fn(instance)` but
244
- * cannot trace through `instance.method()`.
275
+ * Standalone function (not a class method) because Convex's bundler
276
+ * can trace `export const { x } = fn(instance)` but not `instance.method()`.
245
277
  *
246
278
  * ```ts
247
279
  * export const { portalQuery, portalMutation, portalInternal } = Portal(auth);
248
280
  * ```
281
+ *
282
+ * @param auth - The `Auth` class instance from your `convex/auth.ts`.
283
+ * @returns `{ portalQuery, portalMutation, portalInternal }` — export all three.
249
284
  */
250
285
  export function Portal(auth) {
251
286
  const authComponent = auth.component;
@@ -255,8 +290,13 @@ export function Portal(auth) {
255
290
  args: {
256
291
  action: v.string(),
257
292
  userId: v.optional(v.string()),
293
+ // Group query params
294
+ groupId: v.optional(v.string()),
295
+ groupType: v.optional(v.string()),
296
+ groupParentId: v.optional(v.string()),
258
297
  },
259
- handler: async (ctx, { action, userId }) => {
298
+ handler: async (ctx, args) => {
299
+ const { action, userId } = args;
260
300
  const currentUserId = await authHelper.user.require(ctx);
261
301
  // Allow isAdmin check without admin requirement
262
302
  if (action === "isAdmin") {
@@ -270,14 +310,18 @@ export function Portal(auth) {
270
310
  }
271
311
  await requirePortalAdmin(ctx, authComponent, currentUserId);
272
312
  switch (action) {
313
+ // ---- Admin-only bulk listing (no public API) ----
273
314
  case "listUsers":
274
315
  return await ctx.runQuery(authComponent.public.userList);
275
316
  case "listSessions":
276
317
  return await ctx.runQuery(authComponent.public.sessionList);
318
+ case "listKeys":
319
+ return await ctx.runQuery(authComponent.public.keyList);
320
+ case "getCurrentDeployment":
321
+ return await ctx.runQuery(authComponent.bridge.getCurrentDeployment);
322
+ // ---- User queries (public auth API) ----
277
323
  case "getUser":
278
- return await ctx.runQuery(authComponent.public.userGetById, {
279
- userId: userId,
280
- });
324
+ return await authHelper.user.get(ctx, userId);
281
325
  case "getUserSessions":
282
326
  return await ctx.runQuery(authComponent.public.sessionListByUser, {
283
327
  userId: userId,
@@ -287,13 +331,39 @@ export function Portal(auth) {
287
331
  // Strip secrets — never send password hashes to the frontend
288
332
  return accounts.map(({ secret: _, ...rest }) => rest);
289
333
  }
290
- // Invite validation (public within portal context)
334
+ case "getUserKeys":
335
+ return await authHelper.key.list(ctx, { userId: userId });
336
+ case "getUserGroups": {
337
+ const memberships = await authHelper.user.group.list(ctx, { userId: userId });
338
+ // Resolve group details for each membership
339
+ const groups = await Promise.all(memberships.map(async (m) => {
340
+ const group = await authHelper.group.get(ctx, m.groupId);
341
+ return { ...m, group: group ?? null };
342
+ }));
343
+ return groups;
344
+ }
345
+ // ---- Key queries (public auth API) ----
346
+ case "getKey":
347
+ return await authHelper.key.get(ctx, userId); // userId param repurposed as keyId
348
+ // ---- Group queries (public auth API) ----
349
+ case "listGroups":
350
+ return await authHelper.group.list(ctx, {
351
+ type: args.groupType,
352
+ parentGroupId: args.groupParentId,
353
+ });
354
+ case "getGroup":
355
+ return await authHelper.group.get(ctx, args.groupId);
356
+ case "getGroupMembers":
357
+ return await authHelper.group.member.list(ctx, { groupId: args.groupId });
358
+ case "getGroupInvites":
359
+ return await authHelper.invite.list(ctx, { groupId: args.groupId });
360
+ // ---- Invite validation (portal context) ----
291
361
  case "validateInvite": {
292
362
  // userId param repurposed as tokenHash for this action
293
363
  const tokenHash = userId;
294
364
  if (!tokenHash)
295
- throw new Error("tokenHash required");
296
- const invite = await ctx.runQuery(authComponent.public.inviteGetByTokenHash, { tokenHash });
365
+ throwAuthError("INVITE_TOKEN_REQUIRED");
366
+ const invite = await authHelper.invite.getByTokenHash(ctx, tokenHash);
297
367
  if (!invite || invite.status !== "pending") {
298
368
  return null;
299
369
  }
@@ -302,21 +372,8 @@ export function Portal(auth) {
302
372
  }
303
373
  return { _id: invite._id, role: invite.role };
304
374
  }
305
- case "getCurrentDeployment":
306
- return await ctx.runQuery(authComponent.portalBridge.getCurrentDeployment);
307
- // ---- API Keys (portal admin) ----
308
- case "listKeys":
309
- return await ctx.runQuery(authComponent.public.keyList);
310
- case "getUserKeys":
311
- return await ctx.runQuery(authComponent.public.keyListByUserId, {
312
- userId: userId,
313
- });
314
- case "getKey":
315
- return await ctx.runQuery(authComponent.public.keyGetById, {
316
- keyId: userId, // userId param repurposed as keyId
317
- });
318
375
  default:
319
- throw new Error(`Unknown portal query action: ${action}`);
376
+ throwAuthError("PORTAL_UNKNOWN_ACTION", `Unknown portal query action: ${action}`);
320
377
  }
321
378
  },
322
379
  });
@@ -338,28 +395,37 @@ export function Portal(auth) {
338
395
  windowMs: v.number(),
339
396
  })),
340
397
  keyExpiresAt: v.optional(v.number()),
398
+ // Group mutation fields
399
+ groupId: v.optional(v.string()),
400
+ groupName: v.optional(v.string()),
401
+ groupSlug: v.optional(v.string()),
402
+ groupType: v.optional(v.string()),
403
+ groupParentId: v.optional(v.string()),
404
+ groupExtend: v.optional(v.any()),
405
+ memberId: v.optional(v.string()),
406
+ memberUserId: v.optional(v.string()),
407
+ memberRole: v.optional(v.string()),
408
+ memberStatus: v.optional(v.string()),
341
409
  },
342
410
  handler: async (ctx, args) => {
343
411
  const currentUserId = await authHelper.user.require(ctx);
344
412
  switch (args.action) {
345
413
  case "acceptInvite": {
346
414
  if (!args.tokenHash)
347
- throw new Error("tokenHash required");
348
- const invite = await ctx.runQuery(authComponent.public.inviteGetByTokenHash, { tokenHash: args.tokenHash });
415
+ throwAuthError("INVITE_TOKEN_REQUIRED");
416
+ const invite = await authHelper.invite.getByTokenHash(ctx, args.tokenHash);
349
417
  if (!invite)
350
- throw new Error("Invalid invite token");
418
+ throwAuthError("INVALID_INVITE");
351
419
  if (invite.status !== "pending") {
352
- throw new Error(`Invite already ${invite.status}`);
420
+ throwAuthError("INVITE_ALREADY_USED", `Invite already ${invite.status}`);
353
421
  }
354
422
  if (invite.expiresTime && invite.expiresTime < Date.now()) {
355
- throw new Error("Invite has expired");
423
+ throwAuthError("INVITE_EXPIRED");
356
424
  }
357
- await ctx.runMutation(authComponent.public.inviteAccept, {
358
- inviteId: invite._id,
359
- acceptedByUserId: currentUserId,
360
- });
425
+ await authHelper.invite.accept(ctx, invite._id, currentUserId);
361
426
  return;
362
427
  }
428
+ // ---- Admin-only (no public API for session delete) ----
363
429
  case "revokeSession": {
364
430
  await requirePortalAdmin(ctx, authComponent, currentUserId);
365
431
  await ctx.runMutation(authComponent.public.sessionDelete, {
@@ -367,18 +433,16 @@ export function Portal(auth) {
367
433
  });
368
434
  return;
369
435
  }
370
- // ---- API Keys (portal admin) ----
436
+ // ---- API Keys (public auth API) ----
371
437
  case "createKey": {
372
438
  await requirePortalAdmin(ctx, authComponent, currentUserId);
373
- const result = await authHelper.key.create(ctx, {
439
+ return await authHelper.key.create(ctx, {
374
440
  userId: args.keyUserId,
375
441
  name: args.keyName,
376
442
  scopes: args.keyScopes ?? [],
377
443
  rateLimit: args.keyRateLimit,
378
444
  expiresAt: args.keyExpiresAt,
379
445
  });
380
- // Return the raw key — portal will show it once
381
- return result;
382
446
  }
383
447
  case "revokeKey": {
384
448
  await requirePortalAdmin(ctx, authComponent, currentUserId);
@@ -402,8 +466,63 @@ export function Portal(auth) {
402
466
  await authHelper.key.update(ctx, args.keyId, data);
403
467
  return;
404
468
  }
469
+ // ---- Groups (public auth API) ----
470
+ case "createGroup": {
471
+ await requirePortalAdmin(ctx, authComponent, currentUserId);
472
+ const groupData = { name: args.groupName };
473
+ if (args.groupSlug)
474
+ groupData.slug = args.groupSlug;
475
+ if (args.groupType)
476
+ groupData.type = args.groupType;
477
+ if (args.groupParentId)
478
+ groupData.parentGroupId = args.groupParentId;
479
+ if (args.groupExtend)
480
+ groupData.extend = args.groupExtend;
481
+ return await authHelper.group.create(ctx, groupData);
482
+ }
483
+ case "updateGroup": {
484
+ await requirePortalAdmin(ctx, authComponent, currentUserId);
485
+ const updateData = {};
486
+ if (args.groupName)
487
+ updateData.name = args.groupName;
488
+ if (args.groupSlug !== undefined)
489
+ updateData.slug = args.groupSlug;
490
+ if (args.groupType !== undefined)
491
+ updateData.type = args.groupType;
492
+ await authHelper.group.update(ctx, args.groupId, updateData);
493
+ return;
494
+ }
495
+ case "deleteGroup": {
496
+ await requirePortalAdmin(ctx, authComponent, currentUserId);
497
+ await authHelper.group.delete(ctx, args.groupId);
498
+ return;
499
+ }
500
+ case "addGroupMember": {
501
+ await requirePortalAdmin(ctx, authComponent, currentUserId);
502
+ return await authHelper.group.member.add(ctx, {
503
+ groupId: args.groupId,
504
+ userId: args.memberUserId,
505
+ role: args.memberRole,
506
+ status: args.memberStatus,
507
+ });
508
+ }
509
+ case "removeGroupMember": {
510
+ await requirePortalAdmin(ctx, authComponent, currentUserId);
511
+ await authHelper.group.member.remove(ctx, args.memberId);
512
+ return;
513
+ }
514
+ case "updateGroupMember": {
515
+ await requirePortalAdmin(ctx, authComponent, currentUserId);
516
+ const memberData = {};
517
+ if (args.memberRole !== undefined)
518
+ memberData.role = args.memberRole;
519
+ if (args.memberStatus !== undefined)
520
+ memberData.status = args.memberStatus;
521
+ await authHelper.group.member.update(ctx, args.memberId, memberData);
522
+ return;
523
+ }
405
524
  default:
406
- throw new Error(`Unknown portal mutation action: ${args.action}`);
525
+ throwAuthError("PORTAL_UNKNOWN_ACTION", `Unknown portal mutation action: ${args.action}`);
407
526
  }
408
527
  },
409
528
  });
@@ -435,7 +554,7 @@ export function Portal(auth) {
435
554
  return await ctx.storage.generateUploadUrl();
436
555
  }
437
556
  case "recordAsset": {
438
- const { oldStorageId, oldBlobId } = await ctx.runMutation(authComponent.portalBridge.recordAsset, {
557
+ const { oldStorageId, oldBlobId } = await ctx.runMutation(authComponent.bridge.recordAsset, {
439
558
  path: args.path,
440
559
  ...(args.storageId ? { storageId: args.storageId } : {}),
441
560
  ...(args.blobId ? { blobId: args.blobId } : {}),
@@ -453,7 +572,7 @@ export function Portal(auth) {
453
572
  return oldBlobId ?? null;
454
573
  }
455
574
  case "gcOldAssets": {
456
- const { storageIds, blobIds } = await ctx.runMutation(authComponent.portalBridge.gcOldAssets, { currentDeploymentId: args.currentDeploymentId });
575
+ const { storageIds, blobIds } = await ctx.runMutation(authComponent.bridge.gcOldAssets, { currentDeploymentId: args.currentDeploymentId });
457
576
  for (const storageId of storageIds) {
458
577
  try {
459
578
  await ctx.storage.delete(storageId);
@@ -462,19 +581,76 @@ export function Portal(auth) {
462
581
  // Ignore
463
582
  }
464
583
  }
465
- await ctx.runMutation(authComponent.portalBridge.setCurrentDeployment, { deploymentId: args.currentDeploymentId });
584
+ await ctx.runMutation(authComponent.bridge.setCurrentDeployment, { deploymentId: args.currentDeploymentId });
466
585
  return { deleted: storageIds.length, blobIds };
467
586
  }
468
587
  case "listAssets": {
469
- return await ctx.runQuery(authComponent.portalBridge.listAssets, {
588
+ return await ctx.runQuery(authComponent.bridge.listAssets, {
470
589
  limit: args.limit,
471
590
  });
472
591
  }
473
592
  default:
474
- throw new Error(`Unknown portalInternal action: ${args.action}`);
593
+ throwAuthError("PORTAL_UNKNOWN_ACTION", `Unknown portalInternal action: ${args.action}`);
475
594
  }
476
595
  },
477
596
  });
478
597
  return { portalQuery, portalMutation, portalInternal };
479
598
  }
480
- //# sourceMappingURL=convex-auth.js.map
599
+ // Implementation
600
+ export function AuthCtx(auth, config) {
601
+ const authHelper = auth._auth;
602
+ return {
603
+ args: {},
604
+ input: async (ctx, _args, _extra) => {
605
+ const nativeAuth = ctx.auth;
606
+ if (config?.optional) {
607
+ const userId = await authHelper.user.current(ctx);
608
+ if (!userId) {
609
+ return {
610
+ ctx: {
611
+ auth: {
612
+ getUserIdentity: nativeAuth.getUserIdentity.bind(nativeAuth),
613
+ userId: null,
614
+ user: null,
615
+ },
616
+ },
617
+ args: {},
618
+ };
619
+ }
620
+ const user = await authHelper.user.get(ctx, userId);
621
+ const extra = config.resolve
622
+ ? await config.resolve(ctx, user)
623
+ : {};
624
+ return {
625
+ ctx: {
626
+ auth: {
627
+ getUserIdentity: nativeAuth.getUserIdentity.bind(nativeAuth),
628
+ userId,
629
+ user,
630
+ ...extra,
631
+ },
632
+ },
633
+ args: {},
634
+ };
635
+ }
636
+ // Required mode (default): throws NOT_SIGNED_IN
637
+ const userId = await authHelper.user.require(ctx);
638
+ const user = await authHelper.user.get(ctx, userId);
639
+ const extra = config?.resolve
640
+ ? await config.resolve(ctx, user)
641
+ : {};
642
+ return {
643
+ ctx: {
644
+ auth: {
645
+ getUserIdentity: nativeAuth.getUserIdentity.bind(nativeAuth),
646
+ userId,
647
+ user,
648
+ ...extra,
649
+ },
650
+ },
651
+ args: {},
652
+ };
653
+ },
654
+ };
655
+ }
656
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/server/auth.ts"],"names":[],"mappings":"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"}