@robelest/convex-auth 0.0.4-preview.2 → 0.0.4-preview.21

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 (798) hide show
  1. package/README.md +67 -26
  2. package/dist/authorization/index.d.ts +63 -0
  3. package/dist/authorization/index.d.ts.map +1 -0
  4. package/dist/authorization/index.js +63 -0
  5. package/dist/authorization/index.js.map +1 -0
  6. package/dist/bin.js +6185 -0
  7. package/dist/client/core/types.d.ts +20 -0
  8. package/dist/client/core/types.d.ts.map +1 -0
  9. package/dist/client/index.d.ts +2 -299
  10. package/dist/client/index.d.ts.map +1 -1
  11. package/dist/client/index.js +407 -534
  12. package/dist/client/index.js.map +1 -1
  13. package/dist/component/_generated/api.d.ts +42 -0
  14. package/dist/component/_generated/api.d.ts.map +1 -1
  15. package/dist/component/_generated/api.js.map +1 -1
  16. package/dist/component/_generated/component.d.ts +2546 -90
  17. package/dist/component/_generated/component.d.ts.map +1 -1
  18. package/dist/component/client/core/types.d.ts +2 -0
  19. package/dist/component/client/index.d.ts +2 -0
  20. package/dist/component/convex.config.d.ts +2 -2
  21. package/dist/component/functions.d.ts +11 -9
  22. package/dist/component/functions.d.ts.map +1 -1
  23. package/dist/component/functions.js.map +1 -1
  24. package/dist/component/index.d.ts +7 -11
  25. package/dist/component/index.js +2 -3
  26. package/dist/component/model.d.ts +153 -0
  27. package/dist/component/model.d.ts.map +1 -0
  28. package/dist/component/model.js +349 -0
  29. package/dist/component/model.js.map +1 -0
  30. package/dist/component/providers/anonymous.d.ts +54 -0
  31. package/dist/component/providers/anonymous.d.ts.map +1 -0
  32. package/dist/component/providers/credentials.d.ts +5 -5
  33. package/dist/component/providers/credentials.d.ts.map +1 -1
  34. package/dist/component/providers/device.d.ts +67 -0
  35. package/dist/component/providers/device.d.ts.map +1 -0
  36. package/dist/component/providers/email.d.ts +62 -0
  37. package/dist/component/providers/email.d.ts.map +1 -0
  38. package/dist/component/providers/oauth.d.ts.map +1 -1
  39. package/dist/component/providers/oauth.js.map +1 -1
  40. package/dist/component/providers/passkey.d.ts +57 -0
  41. package/dist/component/providers/passkey.d.ts.map +1 -0
  42. package/dist/component/providers/password.d.ts +88 -0
  43. package/dist/component/providers/password.d.ts.map +1 -0
  44. package/dist/component/providers/phone.d.ts +48 -0
  45. package/dist/component/providers/phone.d.ts.map +1 -0
  46. package/dist/component/providers/sso.d.ts +50 -0
  47. package/dist/component/providers/sso.d.ts.map +1 -0
  48. package/dist/component/providers/totp.d.ts +45 -0
  49. package/dist/component/providers/totp.d.ts.map +1 -0
  50. package/dist/component/public/enterprise/audit.d.ts +73 -0
  51. package/dist/component/public/enterprise/audit.d.ts.map +1 -0
  52. package/dist/component/public/enterprise/audit.js +108 -0
  53. package/dist/component/public/enterprise/audit.js.map +1 -0
  54. package/dist/component/public/enterprise/core.d.ts +176 -0
  55. package/dist/component/public/enterprise/core.d.ts.map +1 -0
  56. package/dist/component/public/enterprise/core.js +292 -0
  57. package/dist/component/public/enterprise/core.js.map +1 -0
  58. package/dist/component/public/enterprise/domains.d.ts +174 -0
  59. package/dist/component/public/enterprise/domains.d.ts.map +1 -0
  60. package/dist/component/public/enterprise/domains.js +271 -0
  61. package/dist/component/public/enterprise/domains.js.map +1 -0
  62. package/dist/component/public/enterprise/scim.d.ts +245 -0
  63. package/dist/component/public/enterprise/scim.d.ts.map +1 -0
  64. package/dist/component/public/enterprise/scim.js +344 -0
  65. package/dist/component/public/enterprise/scim.js.map +1 -0
  66. package/dist/component/public/enterprise/secrets.d.ts +78 -0
  67. package/dist/component/public/enterprise/secrets.d.ts.map +1 -0
  68. package/dist/component/public/enterprise/secrets.js +118 -0
  69. package/dist/component/public/enterprise/secrets.js.map +1 -0
  70. package/dist/component/public/enterprise/webhooks.d.ts +211 -0
  71. package/dist/component/public/enterprise/webhooks.d.ts.map +1 -0
  72. package/dist/component/public/enterprise/webhooks.js +300 -0
  73. package/dist/component/public/enterprise/webhooks.js.map +1 -0
  74. package/dist/component/public/factors/devices.d.ts +157 -0
  75. package/dist/component/public/factors/devices.d.ts.map +1 -0
  76. package/dist/component/public/factors/devices.js +216 -0
  77. package/dist/component/public/factors/devices.js.map +1 -0
  78. package/dist/component/public/factors/passkeys.d.ts +175 -0
  79. package/dist/component/public/factors/passkeys.d.ts.map +1 -0
  80. package/dist/component/public/factors/passkeys.js +238 -0
  81. package/dist/component/public/factors/passkeys.js.map +1 -0
  82. package/dist/component/public/factors/totp.d.ts +189 -0
  83. package/dist/component/public/factors/totp.d.ts.map +1 -0
  84. package/dist/component/public/factors/totp.js +254 -0
  85. package/dist/component/public/factors/totp.js.map +1 -0
  86. package/dist/component/public/groups/core.d.ts +137 -0
  87. package/dist/component/public/groups/core.d.ts.map +1 -0
  88. package/dist/component/public/groups/core.js +321 -0
  89. package/dist/component/public/groups/core.js.map +1 -0
  90. package/dist/component/public/groups/invites.d.ts +217 -0
  91. package/dist/component/public/groups/invites.d.ts.map +1 -0
  92. package/dist/component/public/groups/invites.js +457 -0
  93. package/dist/component/public/groups/invites.js.map +1 -0
  94. package/dist/component/public/groups/members.d.ts +204 -0
  95. package/dist/component/public/groups/members.d.ts.map +1 -0
  96. package/dist/component/public/groups/members.js +355 -0
  97. package/dist/component/public/groups/members.js.map +1 -0
  98. package/dist/component/public/identity/accounts.d.ts +147 -0
  99. package/dist/component/public/identity/accounts.d.ts.map +1 -0
  100. package/dist/component/public/identity/accounts.js +200 -0
  101. package/dist/component/public/identity/accounts.js.map +1 -0
  102. package/dist/component/public/identity/codes.d.ts +104 -0
  103. package/dist/component/public/identity/codes.d.ts.map +1 -0
  104. package/dist/component/public/identity/codes.js +140 -0
  105. package/dist/component/public/identity/codes.js.map +1 -0
  106. package/dist/component/public/identity/sessions.d.ts +128 -0
  107. package/dist/component/public/identity/sessions.d.ts.map +1 -0
  108. package/dist/component/public/identity/sessions.js +192 -0
  109. package/dist/component/public/identity/sessions.js.map +1 -0
  110. package/dist/component/public/identity/tokens.d.ts +169 -0
  111. package/dist/component/public/identity/tokens.d.ts.map +1 -0
  112. package/dist/component/public/identity/tokens.js +227 -0
  113. package/dist/component/public/identity/tokens.js.map +1 -0
  114. package/dist/component/public/identity/users.d.ts +212 -0
  115. package/dist/component/public/identity/users.d.ts.map +1 -0
  116. package/dist/component/public/identity/users.js +311 -0
  117. package/dist/component/public/identity/users.js.map +1 -0
  118. package/dist/component/public/identity/verifiers.d.ts +116 -0
  119. package/dist/component/public/identity/verifiers.d.ts.map +1 -0
  120. package/dist/component/public/identity/verifiers.js +154 -0
  121. package/dist/component/public/identity/verifiers.js.map +1 -0
  122. package/dist/component/public/security/keys.d.ts +209 -0
  123. package/dist/component/public/security/keys.d.ts.map +1 -0
  124. package/dist/component/public/security/keys.js +319 -0
  125. package/dist/component/public/security/keys.js.map +1 -0
  126. package/dist/component/public/security/limits.d.ts +114 -0
  127. package/dist/component/public/security/limits.d.ts.map +1 -0
  128. package/dist/component/public/security/limits.js +169 -0
  129. package/dist/component/public/security/limits.js.map +1 -0
  130. package/dist/component/public.d.ts +24 -271
  131. package/dist/component/public.d.ts.map +1 -1
  132. package/dist/component/public.js +21 -1229
  133. package/dist/component/schema.d.ts +473 -110
  134. package/dist/component/schema.js +162 -73
  135. package/dist/component/schema.js.map +1 -1
  136. package/dist/component/server/auth.d.ts +318 -373
  137. package/dist/component/server/auth.d.ts.map +1 -1
  138. package/dist/component/server/auth.js +204 -123
  139. package/dist/component/server/auth.js.map +1 -1
  140. package/dist/component/server/authError.js +34 -0
  141. package/dist/component/server/authError.js.map +1 -0
  142. package/dist/component/server/{providers.js → config.js} +43 -12
  143. package/dist/component/server/config.js.map +1 -0
  144. package/dist/component/server/cookies.js +3 -0
  145. package/dist/component/server/cookies.js.map +1 -1
  146. package/dist/component/server/core.js +713 -0
  147. package/dist/component/server/core.js.map +1 -0
  148. package/dist/component/server/crypto.js +38 -0
  149. package/dist/component/server/crypto.js.map +1 -0
  150. package/dist/component/server/{implementation/db.js → db.js} +2 -1
  151. package/dist/component/server/db.js.map +1 -0
  152. package/dist/component/server/device.js +109 -0
  153. package/dist/component/server/device.js.map +1 -0
  154. package/dist/component/server/enterprise/config.js +46 -0
  155. package/dist/component/server/enterprise/config.js.map +1 -0
  156. package/dist/component/server/enterprise/domain.js +885 -0
  157. package/dist/component/server/enterprise/domain.js.map +1 -0
  158. package/dist/component/server/enterprise/http.js +766 -0
  159. package/dist/component/server/enterprise/http.js.map +1 -0
  160. package/dist/component/server/enterprise/oidc.js +248 -0
  161. package/dist/component/server/enterprise/oidc.js.map +1 -0
  162. package/dist/component/server/enterprise/policy.js +85 -0
  163. package/dist/component/server/enterprise/policy.js.map +1 -0
  164. package/dist/component/server/enterprise/saml.js +338 -0
  165. package/dist/component/server/enterprise/saml.js.map +1 -0
  166. package/dist/component/server/enterprise/scim.js +97 -0
  167. package/dist/component/server/enterprise/scim.js.map +1 -0
  168. package/dist/component/server/enterprise/shared.js +51 -0
  169. package/dist/component/server/enterprise/shared.js.map +1 -0
  170. package/dist/component/server/errors.d.ts +1 -0
  171. package/dist/component/server/errors.js +24 -16
  172. package/dist/component/server/errors.js.map +1 -1
  173. package/dist/component/server/http.js +288 -0
  174. package/dist/component/server/http.js.map +1 -0
  175. package/dist/component/server/identity.js +13 -0
  176. package/dist/component/server/identity.js.map +1 -0
  177. package/dist/{server/implementation → component/server}/keys.js +9 -31
  178. package/dist/component/server/keys.js.map +1 -0
  179. package/dist/component/server/limits.js +61 -0
  180. package/dist/component/server/limits.js.map +1 -0
  181. package/dist/component/server/mutations/account.js +44 -0
  182. package/dist/component/server/mutations/account.js.map +1 -0
  183. package/dist/component/server/{implementation/mutations → mutations}/code.js +7 -4
  184. package/dist/component/server/mutations/code.js.map +1 -0
  185. package/dist/component/server/mutations/invalidate.js +32 -0
  186. package/dist/component/server/mutations/invalidate.js.map +1 -0
  187. package/dist/component/server/mutations/oauth.js +110 -0
  188. package/dist/component/server/mutations/oauth.js.map +1 -0
  189. package/dist/component/server/mutations/refresh.js +119 -0
  190. package/dist/component/server/mutations/refresh.js.map +1 -0
  191. package/dist/component/server/mutations/register.js +83 -0
  192. package/dist/component/server/mutations/register.js.map +1 -0
  193. package/dist/component/server/mutations/retrieve.js +65 -0
  194. package/dist/component/server/mutations/retrieve.js.map +1 -0
  195. package/dist/component/server/mutations/signature.js +32 -0
  196. package/dist/component/server/mutations/signature.js.map +1 -0
  197. package/dist/component/server/{implementation/mutations → mutations}/signin.js +2 -2
  198. package/dist/component/server/mutations/signin.js.map +1 -0
  199. package/dist/component/server/mutations/signout.js +27 -0
  200. package/dist/component/server/mutations/signout.js.map +1 -0
  201. package/dist/component/server/mutations/store/refs.js +15 -0
  202. package/dist/component/server/mutations/store/refs.js.map +1 -0
  203. package/dist/component/server/mutations/store.js +85 -0
  204. package/dist/component/server/mutations/store.js.map +1 -0
  205. package/dist/component/server/mutations/verifier.js +18 -0
  206. package/dist/component/server/mutations/verifier.js.map +1 -0
  207. package/dist/component/server/mutations/verify.js +98 -0
  208. package/dist/component/server/mutations/verify.js.map +1 -0
  209. package/dist/component/server/oauth.js +106 -60
  210. package/dist/component/server/oauth.js.map +1 -1
  211. package/dist/component/server/passkey.js +328 -0
  212. package/dist/component/server/passkey.js.map +1 -0
  213. package/dist/{server/implementation → component/server}/redirects.js +13 -11
  214. package/dist/component/server/redirects.js.map +1 -0
  215. package/dist/component/server/refresh.js +96 -0
  216. package/dist/component/server/refresh.js.map +1 -0
  217. package/dist/component/server/runtime.d.ts +136 -0
  218. package/dist/component/server/runtime.d.ts.map +1 -0
  219. package/dist/component/server/runtime.js +413 -0
  220. package/dist/component/server/runtime.js.map +1 -0
  221. package/dist/{server/implementation → component/server}/sessions.js +14 -8
  222. package/dist/component/server/sessions.js.map +1 -0
  223. package/dist/component/server/signin.js +201 -0
  224. package/dist/component/server/signin.js.map +1 -0
  225. package/dist/component/server/tokens.js +17 -0
  226. package/dist/component/server/tokens.js.map +1 -0
  227. package/dist/component/server/totp.js +148 -0
  228. package/dist/component/server/totp.js.map +1 -0
  229. package/dist/component/server/types.d.ts +387 -298
  230. package/dist/component/server/types.d.ts.map +1 -1
  231. package/dist/component/server/{implementation/types.js → types.js} +1 -1
  232. package/dist/component/server/types.js.map +1 -0
  233. package/dist/component/server/{implementation/users.js → users.js} +54 -35
  234. package/dist/component/server/users.js.map +1 -0
  235. package/dist/component/server/utils.js +110 -4
  236. package/dist/component/server/utils.js.map +1 -1
  237. package/dist/core/types.d.ts +369 -0
  238. package/dist/core/types.d.ts.map +1 -0
  239. package/dist/factors/device.js +105 -0
  240. package/dist/factors/device.js.map +1 -0
  241. package/dist/factors/passkey.js +181 -0
  242. package/dist/factors/passkey.js.map +1 -0
  243. package/dist/factors/totp.js +122 -0
  244. package/dist/factors/totp.js.map +1 -0
  245. package/dist/providers/anonymous.d.ts +3 -9
  246. package/dist/providers/anonymous.d.ts.map +1 -1
  247. package/dist/providers/anonymous.js +1 -18
  248. package/dist/providers/anonymous.js.map +1 -1
  249. package/dist/providers/credentials.d.ts +8 -10
  250. package/dist/providers/credentials.d.ts.map +1 -1
  251. package/dist/providers/credentials.js +3 -5
  252. package/dist/providers/credentials.js.map +1 -1
  253. package/dist/providers/device.d.ts +18 -10
  254. package/dist/providers/device.d.ts.map +1 -1
  255. package/dist/providers/device.js +4 -8
  256. package/dist/providers/device.js.map +1 -1
  257. package/dist/providers/email.d.ts +50 -23
  258. package/dist/providers/email.d.ts.map +1 -1
  259. package/dist/providers/email.js +58 -34
  260. package/dist/providers/email.js.map +1 -1
  261. package/dist/providers/index.d.ts +7 -3
  262. package/dist/providers/index.js +4 -1
  263. package/dist/providers/oauth.d.ts.map +1 -1
  264. package/dist/providers/oauth.js.map +1 -1
  265. package/dist/providers/passkey.d.ts +12 -9
  266. package/dist/providers/passkey.d.ts.map +1 -1
  267. package/dist/providers/passkey.js +1 -7
  268. package/dist/providers/passkey.js.map +1 -1
  269. package/dist/providers/password.d.ts +6 -12
  270. package/dist/providers/password.d.ts.map +1 -1
  271. package/dist/providers/password.js +189 -89
  272. package/dist/providers/password.js.map +1 -1
  273. package/dist/providers/phone.d.ts +40 -11
  274. package/dist/providers/phone.d.ts.map +1 -1
  275. package/dist/providers/phone.js +52 -21
  276. package/dist/providers/phone.js.map +1 -1
  277. package/dist/providers/sso.d.ts +50 -0
  278. package/dist/providers/sso.d.ts.map +1 -0
  279. package/dist/providers/sso.js +34 -0
  280. package/dist/providers/sso.js.map +1 -0
  281. package/dist/providers/totp.d.ts +12 -9
  282. package/dist/providers/totp.d.ts.map +1 -1
  283. package/dist/providers/totp.js +1 -7
  284. package/dist/providers/totp.js.map +1 -1
  285. package/dist/runtime/browser.js +68 -0
  286. package/dist/runtime/browser.js.map +1 -0
  287. package/dist/runtime/invite.js +51 -0
  288. package/dist/runtime/invite.js.map +1 -0
  289. package/dist/runtime/proxy.js +70 -0
  290. package/dist/runtime/proxy.js.map +1 -0
  291. package/dist/runtime/storage.js +37 -0
  292. package/dist/runtime/storage.js.map +1 -0
  293. package/dist/server/auth.d.ts +335 -370
  294. package/dist/server/auth.d.ts.map +1 -1
  295. package/dist/server/auth.js +204 -123
  296. package/dist/server/auth.js.map +1 -1
  297. package/dist/server/authError.d.ts +46 -0
  298. package/dist/server/authError.d.ts.map +1 -0
  299. package/dist/server/authError.js +34 -0
  300. package/dist/server/authError.js.map +1 -0
  301. package/dist/server/config.d.ts +1 -0
  302. package/dist/server/{providers.js → config.js} +43 -12
  303. package/dist/server/config.js.map +1 -0
  304. package/dist/server/cookies.d.ts +1 -38
  305. package/dist/server/cookies.js +3 -0
  306. package/dist/server/cookies.js.map +1 -1
  307. package/dist/server/core.d.ts +1436 -0
  308. package/dist/server/core.d.ts.map +1 -0
  309. package/dist/server/core.js +713 -0
  310. package/dist/server/core.js.map +1 -0
  311. package/dist/server/crypto.d.ts +8 -0
  312. package/dist/server/crypto.d.ts.map +1 -0
  313. package/dist/server/crypto.js +38 -0
  314. package/dist/server/crypto.js.map +1 -0
  315. package/dist/server/db.d.ts +1 -0
  316. package/dist/server/{implementation/db.js → db.js} +2 -1
  317. package/dist/server/db.js.map +1 -0
  318. package/dist/server/device.d.ts +1 -0
  319. package/dist/server/device.js +109 -0
  320. package/dist/server/device.js.map +1 -0
  321. package/dist/server/enterprise/config.d.ts +1 -0
  322. package/dist/server/enterprise/config.js +46 -0
  323. package/dist/server/enterprise/config.js.map +1 -0
  324. package/dist/server/enterprise/domain.d.ts +409 -0
  325. package/dist/server/enterprise/domain.d.ts.map +1 -0
  326. package/dist/server/enterprise/domain.js +885 -0
  327. package/dist/server/enterprise/domain.js.map +1 -0
  328. package/dist/server/enterprise/http.d.ts +26 -0
  329. package/dist/server/enterprise/http.d.ts.map +1 -0
  330. package/dist/server/enterprise/http.js +766 -0
  331. package/dist/server/enterprise/http.js.map +1 -0
  332. package/dist/server/enterprise/oidc.d.ts +1 -0
  333. package/dist/server/enterprise/oidc.js +248 -0
  334. package/dist/server/enterprise/oidc.js.map +1 -0
  335. package/dist/server/enterprise/policy.d.ts +1 -0
  336. package/dist/server/enterprise/policy.js +85 -0
  337. package/dist/server/enterprise/policy.js.map +1 -0
  338. package/dist/server/enterprise/saml.d.ts +1 -0
  339. package/dist/server/enterprise/saml.js +338 -0
  340. package/dist/server/enterprise/saml.js.map +1 -0
  341. package/dist/server/enterprise/scim.d.ts +1 -0
  342. package/dist/server/enterprise/scim.js +97 -0
  343. package/dist/server/enterprise/scim.js.map +1 -0
  344. package/dist/server/enterprise/shared.d.ts +5 -0
  345. package/dist/server/enterprise/shared.d.ts.map +1 -0
  346. package/dist/server/enterprise/shared.js +51 -0
  347. package/dist/server/enterprise/shared.js.map +1 -0
  348. package/dist/server/enterprise/validators.d.ts +1 -0
  349. package/dist/server/enterprise/validators.js +60 -0
  350. package/dist/server/enterprise/validators.js.map +1 -0
  351. package/dist/server/errors.d.ts +33 -1
  352. package/dist/server/errors.d.ts.map +1 -1
  353. package/dist/server/errors.js +44 -1
  354. package/dist/server/errors.js.map +1 -1
  355. package/dist/server/http.d.ts +59 -0
  356. package/dist/server/http.d.ts.map +1 -0
  357. package/dist/server/http.js +288 -0
  358. package/dist/server/http.js.map +1 -0
  359. package/dist/server/identity.d.ts +1 -0
  360. package/dist/server/identity.js +13 -0
  361. package/dist/server/identity.js.map +1 -0
  362. package/dist/server/index.d.ts +4 -182
  363. package/dist/server/index.js +4 -376
  364. package/dist/server/keys.d.ts +1 -0
  365. package/dist/{component/server/implementation → server}/keys.js +9 -31
  366. package/dist/server/keys.js.map +1 -0
  367. package/dist/server/limits.d.ts +1 -0
  368. package/dist/server/limits.js +61 -0
  369. package/dist/server/limits.js.map +1 -0
  370. package/dist/server/mounts.d.ts +647 -0
  371. package/dist/server/mounts.d.ts.map +1 -0
  372. package/dist/server/mounts.js +643 -0
  373. package/dist/server/mounts.js.map +1 -0
  374. package/dist/server/mutations/account.d.ts +30 -0
  375. package/dist/server/mutations/account.d.ts.map +1 -0
  376. package/dist/server/mutations/account.js +44 -0
  377. package/dist/server/mutations/account.js.map +1 -0
  378. package/dist/server/mutations/code.d.ts +30 -0
  379. package/dist/server/mutations/code.d.ts.map +1 -0
  380. package/dist/server/{implementation/mutations → mutations}/code.js +7 -4
  381. package/dist/server/mutations/code.js.map +1 -0
  382. package/dist/server/mutations/index.d.ts +14 -0
  383. package/dist/server/mutations/index.js +15 -0
  384. package/dist/server/mutations/invalidate.d.ts +20 -0
  385. package/dist/server/mutations/invalidate.d.ts.map +1 -0
  386. package/dist/server/mutations/invalidate.js +32 -0
  387. package/dist/server/mutations/invalidate.js.map +1 -0
  388. package/dist/server/mutations/oauth.d.ts +28 -0
  389. package/dist/server/mutations/oauth.d.ts.map +1 -0
  390. package/dist/server/mutations/oauth.js +110 -0
  391. package/dist/server/mutations/oauth.js.map +1 -0
  392. package/dist/server/mutations/refresh.d.ts +21 -0
  393. package/dist/server/mutations/refresh.d.ts.map +1 -0
  394. package/dist/server/mutations/refresh.js +119 -0
  395. package/dist/server/mutations/refresh.js.map +1 -0
  396. package/dist/server/mutations/register.d.ts +38 -0
  397. package/dist/server/mutations/register.d.ts.map +1 -0
  398. package/dist/server/mutations/register.js +83 -0
  399. package/dist/server/mutations/register.js.map +1 -0
  400. package/dist/server/mutations/retrieve.d.ts +33 -0
  401. package/dist/server/mutations/retrieve.d.ts.map +1 -0
  402. package/dist/server/mutations/retrieve.js +65 -0
  403. package/dist/server/mutations/retrieve.js.map +1 -0
  404. package/dist/server/mutations/signature.d.ts +22 -0
  405. package/dist/server/mutations/signature.d.ts.map +1 -0
  406. package/dist/server/mutations/signature.js +32 -0
  407. package/dist/server/mutations/signature.js.map +1 -0
  408. package/dist/server/mutations/signin.d.ts +22 -0
  409. package/dist/server/mutations/signin.d.ts.map +1 -0
  410. package/dist/server/{implementation/mutations → mutations}/signin.js +2 -2
  411. package/dist/server/mutations/signin.js.map +1 -0
  412. package/dist/server/mutations/signout.d.ts +16 -0
  413. package/dist/server/mutations/signout.d.ts.map +1 -0
  414. package/dist/server/mutations/signout.js +27 -0
  415. package/dist/server/mutations/signout.js.map +1 -0
  416. package/dist/server/mutations/store/refs.d.ts +12 -0
  417. package/dist/server/mutations/store/refs.d.ts.map +1 -0
  418. package/dist/server/mutations/store/refs.js +15 -0
  419. package/dist/server/mutations/store/refs.js.map +1 -0
  420. package/dist/server/mutations/store.d.ts +306 -0
  421. package/dist/server/mutations/store.d.ts.map +1 -0
  422. package/dist/server/mutations/store.js +85 -0
  423. package/dist/server/mutations/store.js.map +1 -0
  424. package/dist/server/mutations/verifier.d.ts +13 -0
  425. package/dist/server/mutations/verifier.d.ts.map +1 -0
  426. package/dist/server/mutations/verifier.js +18 -0
  427. package/dist/server/mutations/verifier.js.map +1 -0
  428. package/dist/server/mutations/verify.d.ts +26 -0
  429. package/dist/server/mutations/verify.d.ts.map +1 -0
  430. package/dist/server/mutations/verify.js +98 -0
  431. package/dist/server/mutations/verify.js.map +1 -0
  432. package/dist/server/oauth.d.ts +1 -48
  433. package/dist/server/oauth.js +107 -64
  434. package/dist/server/oauth.js.map +1 -1
  435. package/dist/server/passkey.d.ts +27 -0
  436. package/dist/server/passkey.d.ts.map +1 -0
  437. package/dist/server/passkey.js +328 -0
  438. package/dist/server/passkey.js.map +1 -0
  439. package/dist/server/redirects.d.ts +1 -0
  440. package/dist/{component/server/implementation → server}/redirects.js +13 -11
  441. package/dist/server/redirects.js.map +1 -0
  442. package/dist/server/refresh.d.ts +1 -0
  443. package/dist/server/refresh.js +96 -0
  444. package/dist/server/refresh.js.map +1 -0
  445. package/dist/server/runtime.d.ts +136 -0
  446. package/dist/server/runtime.d.ts.map +1 -0
  447. package/dist/server/runtime.js +413 -0
  448. package/dist/server/runtime.js.map +1 -0
  449. package/dist/server/sessions.d.ts +1 -0
  450. package/dist/{component/server/implementation → server}/sessions.js +14 -8
  451. package/dist/server/sessions.js.map +1 -0
  452. package/dist/server/signin.d.ts +1 -0
  453. package/dist/server/signin.js +201 -0
  454. package/dist/server/signin.js.map +1 -0
  455. package/dist/server/ssr.d.ts +226 -0
  456. package/dist/server/ssr.d.ts.map +1 -0
  457. package/dist/server/ssr.js +786 -0
  458. package/dist/server/ssr.js.map +1 -0
  459. package/dist/server/templates.d.ts +1 -21
  460. package/dist/server/templates.js +2 -1
  461. package/dist/server/templates.js.map +1 -1
  462. package/dist/server/tokens.d.ts +1 -0
  463. package/dist/server/tokens.js +17 -0
  464. package/dist/server/tokens.js.map +1 -0
  465. package/dist/server/totp.d.ts +1 -0
  466. package/dist/server/totp.js +148 -0
  467. package/dist/server/totp.js.map +1 -0
  468. package/dist/server/types.d.ts +498 -306
  469. package/dist/server/types.d.ts.map +1 -1
  470. package/dist/server/types.js +108 -1
  471. package/dist/server/types.js.map +1 -0
  472. package/dist/server/users.d.ts +1 -0
  473. package/dist/server/{implementation/users.js → users.js} +54 -35
  474. package/dist/server/users.js.map +1 -0
  475. package/dist/server/utils.d.ts +1 -6
  476. package/dist/server/utils.js +110 -4
  477. package/dist/server/utils.js.map +1 -1
  478. package/package.json +49 -46
  479. package/src/authorization/index.ts +83 -0
  480. package/src/cli/bin.ts +5 -0
  481. package/src/cli/command.ts +6 -5
  482. package/src/cli/index.ts +456 -248
  483. package/src/cli/keys.ts +3 -0
  484. package/src/client/core/types.ts +437 -0
  485. package/src/client/factors/device.ts +160 -0
  486. package/src/client/factors/passkey.ts +282 -0
  487. package/src/client/factors/totp.ts +150 -0
  488. package/src/client/index.ts +745 -989
  489. package/src/client/runtime/browser.ts +112 -0
  490. package/src/client/runtime/invite.ts +65 -0
  491. package/src/client/runtime/proxy.ts +111 -0
  492. package/src/client/runtime/storage.ts +79 -0
  493. package/src/component/_generated/api.ts +42 -0
  494. package/src/component/_generated/component.ts +3123 -102
  495. package/src/component/functions.ts +38 -22
  496. package/src/component/index.ts +10 -20
  497. package/src/component/model.ts +449 -0
  498. package/src/component/public/enterprise/audit.ts +120 -0
  499. package/src/component/public/enterprise/core.ts +354 -0
  500. package/src/component/public/enterprise/domains.ts +323 -0
  501. package/src/component/public/enterprise/scim.ts +396 -0
  502. package/src/component/public/enterprise/secrets.ts +132 -0
  503. package/src/component/public/enterprise/webhooks.ts +306 -0
  504. package/src/component/public/factors/devices.ts +223 -0
  505. package/src/component/public/factors/passkeys.ts +242 -0
  506. package/src/component/public/factors/totp.ts +258 -0
  507. package/src/component/public/groups/core.ts +481 -0
  508. package/src/component/public/groups/invites.ts +602 -0
  509. package/src/component/public/groups/members.ts +409 -0
  510. package/src/component/public/identity/accounts.ts +206 -0
  511. package/src/component/public/identity/codes.ts +148 -0
  512. package/src/component/public/identity/sessions.ts +209 -0
  513. package/src/component/public/identity/tokens.ts +250 -0
  514. package/src/component/public/identity/users.ts +354 -0
  515. package/src/component/public/identity/verifiers.ts +157 -0
  516. package/src/component/public/security/keys.ts +365 -0
  517. package/src/component/public/security/limits.ts +173 -0
  518. package/src/component/public.ts +26 -1766
  519. package/src/component/schema.ts +273 -100
  520. package/src/providers/anonymous.ts +10 -20
  521. package/src/providers/credentials.ts +14 -22
  522. package/src/providers/device.ts +3 -14
  523. package/src/providers/email.ts +83 -47
  524. package/src/providers/index.ts +7 -0
  525. package/src/providers/oauth.ts +5 -3
  526. package/src/providers/passkey.ts +0 -13
  527. package/src/providers/password.ts +307 -130
  528. package/src/providers/phone.ts +81 -37
  529. package/src/providers/sso.ts +54 -0
  530. package/src/providers/totp.ts +0 -13
  531. package/src/samlify.d.ts +53 -0
  532. package/src/server/auth.ts +701 -247
  533. package/src/server/authError.ts +44 -0
  534. package/src/server/{providers.ts → config.ts} +84 -15
  535. package/src/server/cookies.ts +8 -1
  536. package/src/server/core.ts +2095 -0
  537. package/src/server/crypto.ts +88 -0
  538. package/src/server/{implementation/db.ts → db.ts} +90 -15
  539. package/src/server/device.ts +221 -0
  540. package/src/server/enterprise/config.ts +51 -0
  541. package/src/server/enterprise/domain.ts +1751 -0
  542. package/src/server/enterprise/http.ts +1324 -0
  543. package/src/server/enterprise/oidc.ts +500 -0
  544. package/src/server/enterprise/policy.ts +128 -0
  545. package/src/server/enterprise/saml.ts +578 -0
  546. package/src/server/enterprise/scim.ts +135 -0
  547. package/src/server/enterprise/shared.ts +134 -0
  548. package/src/server/enterprise/validators.ts +93 -0
  549. package/src/server/errors.ts +130 -119
  550. package/src/server/http.ts +531 -0
  551. package/src/server/identity.ts +18 -0
  552. package/src/server/index.ts +32 -650
  553. package/src/server/{implementation/keys.ts → keys.ts} +16 -44
  554. package/src/server/limits.ts +134 -0
  555. package/src/server/mounts.ts +948 -0
  556. package/src/server/mutations/account.ts +76 -0
  557. package/src/server/{implementation/mutations → mutations}/code.ts +22 -11
  558. package/src/server/mutations/index.ts +13 -0
  559. package/src/server/mutations/invalidate.ts +50 -0
  560. package/src/server/mutations/oauth.ts +237 -0
  561. package/src/server/mutations/refresh.ts +298 -0
  562. package/src/server/mutations/register.ts +200 -0
  563. package/src/server/mutations/retrieve.ts +109 -0
  564. package/src/server/mutations/signature.ts +50 -0
  565. package/src/server/{implementation/mutations → mutations}/signin.ts +9 -7
  566. package/src/server/mutations/signout.ts +43 -0
  567. package/src/server/mutations/store/refs.ts +10 -0
  568. package/src/server/mutations/store.ts +138 -0
  569. package/src/server/mutations/verifier.ts +34 -0
  570. package/src/server/mutations/verify.ts +202 -0
  571. package/src/server/oauth.ts +243 -131
  572. package/src/server/passkey.ts +784 -0
  573. package/src/server/{implementation/redirects.ts → redirects.ts} +21 -16
  574. package/src/server/refresh.ts +222 -0
  575. package/src/server/runtime.ts +880 -0
  576. package/src/server/{implementation/sessions.ts → sessions.ts} +33 -25
  577. package/src/server/signin.ts +438 -0
  578. package/src/server/ssr.ts +1764 -0
  579. package/src/server/templates.ts +8 -3
  580. package/src/server/{implementation/tokens.ts → tokens.ts} +11 -5
  581. package/src/server/totp.ts +349 -0
  582. package/src/server/types.ts +972 -207
  583. package/src/server/{implementation/users.ts → users.ts} +129 -75
  584. package/src/server/utils.ts +192 -5
  585. package/src/test.ts +28 -4
  586. package/dist/bin.cjs +0 -27757
  587. package/dist/component/providers/email.js +0 -47
  588. package/dist/component/providers/email.js.map +0 -1
  589. package/dist/component/public.js.map +0 -1
  590. package/dist/component/server/implementation/db.js.map +0 -1
  591. package/dist/component/server/implementation/device.js +0 -135
  592. package/dist/component/server/implementation/device.js.map +0 -1
  593. package/dist/component/server/implementation/index.d.ts +0 -870
  594. package/dist/component/server/implementation/index.d.ts.map +0 -1
  595. package/dist/component/server/implementation/index.js +0 -610
  596. package/dist/component/server/implementation/index.js.map +0 -1
  597. package/dist/component/server/implementation/keys.js.map +0 -1
  598. package/dist/component/server/implementation/mutations/account.js +0 -39
  599. package/dist/component/server/implementation/mutations/account.js.map +0 -1
  600. package/dist/component/server/implementation/mutations/code.js.map +0 -1
  601. package/dist/component/server/implementation/mutations/index.js +0 -70
  602. package/dist/component/server/implementation/mutations/index.js.map +0 -1
  603. package/dist/component/server/implementation/mutations/invalidate.js +0 -29
  604. package/dist/component/server/implementation/mutations/invalidate.js.map +0 -1
  605. package/dist/component/server/implementation/mutations/oauth.js +0 -51
  606. package/dist/component/server/implementation/mutations/oauth.js.map +0 -1
  607. package/dist/component/server/implementation/mutations/refresh.js +0 -85
  608. package/dist/component/server/implementation/mutations/refresh.js.map +0 -1
  609. package/dist/component/server/implementation/mutations/register.js +0 -65
  610. package/dist/component/server/implementation/mutations/register.js.map +0 -1
  611. package/dist/component/server/implementation/mutations/retrieve.js +0 -50
  612. package/dist/component/server/implementation/mutations/retrieve.js.map +0 -1
  613. package/dist/component/server/implementation/mutations/signature.js +0 -27
  614. package/dist/component/server/implementation/mutations/signature.js.map +0 -1
  615. package/dist/component/server/implementation/mutations/signin.js.map +0 -1
  616. package/dist/component/server/implementation/mutations/signout.js +0 -27
  617. package/dist/component/server/implementation/mutations/signout.js.map +0 -1
  618. package/dist/component/server/implementation/mutations/store.js +0 -12
  619. package/dist/component/server/implementation/mutations/store.js.map +0 -1
  620. package/dist/component/server/implementation/mutations/verifier.js +0 -16
  621. package/dist/component/server/implementation/mutations/verifier.js.map +0 -1
  622. package/dist/component/server/implementation/mutations/verify.js +0 -105
  623. package/dist/component/server/implementation/mutations/verify.js.map +0 -1
  624. package/dist/component/server/implementation/passkey.js +0 -307
  625. package/dist/component/server/implementation/passkey.js.map +0 -1
  626. package/dist/component/server/implementation/provider.js +0 -19
  627. package/dist/component/server/implementation/provider.js.map +0 -1
  628. package/dist/component/server/implementation/ratelimit.js +0 -48
  629. package/dist/component/server/implementation/ratelimit.js.map +0 -1
  630. package/dist/component/server/implementation/redirects.js.map +0 -1
  631. package/dist/component/server/implementation/refresh.js +0 -109
  632. package/dist/component/server/implementation/refresh.js.map +0 -1
  633. package/dist/component/server/implementation/sessions.js.map +0 -1
  634. package/dist/component/server/implementation/signin.js +0 -148
  635. package/dist/component/server/implementation/signin.js.map +0 -1
  636. package/dist/component/server/implementation/tokens.js +0 -15
  637. package/dist/component/server/implementation/tokens.js.map +0 -1
  638. package/dist/component/server/implementation/totp.js +0 -142
  639. package/dist/component/server/implementation/totp.js.map +0 -1
  640. package/dist/component/server/implementation/types.d.ts +0 -42
  641. package/dist/component/server/implementation/types.d.ts.map +0 -1
  642. package/dist/component/server/implementation/types.js.map +0 -1
  643. package/dist/component/server/implementation/users.js.map +0 -1
  644. package/dist/component/server/implementation/utils.js +0 -56
  645. package/dist/component/server/implementation/utils.js.map +0 -1
  646. package/dist/component/server/providers.js.map +0 -1
  647. package/dist/component/server/templates.js +0 -84
  648. package/dist/component/server/templates.js.map +0 -1
  649. package/dist/server/cookies.d.ts.map +0 -1
  650. package/dist/server/implementation/db.d.ts +0 -86
  651. package/dist/server/implementation/db.d.ts.map +0 -1
  652. package/dist/server/implementation/db.js.map +0 -1
  653. package/dist/server/implementation/device.d.ts +0 -30
  654. package/dist/server/implementation/device.d.ts.map +0 -1
  655. package/dist/server/implementation/device.js +0 -135
  656. package/dist/server/implementation/device.js.map +0 -1
  657. package/dist/server/implementation/index.d.ts +0 -870
  658. package/dist/server/implementation/index.d.ts.map +0 -1
  659. package/dist/server/implementation/index.js +0 -610
  660. package/dist/server/implementation/index.js.map +0 -1
  661. package/dist/server/implementation/keys.d.ts +0 -66
  662. package/dist/server/implementation/keys.d.ts.map +0 -1
  663. package/dist/server/implementation/keys.js.map +0 -1
  664. package/dist/server/implementation/mutations/account.d.ts +0 -27
  665. package/dist/server/implementation/mutations/account.d.ts.map +0 -1
  666. package/dist/server/implementation/mutations/account.js +0 -39
  667. package/dist/server/implementation/mutations/account.js.map +0 -1
  668. package/dist/server/implementation/mutations/code.d.ts +0 -29
  669. package/dist/server/implementation/mutations/code.d.ts.map +0 -1
  670. package/dist/server/implementation/mutations/code.js.map +0 -1
  671. package/dist/server/implementation/mutations/index.d.ts +0 -310
  672. package/dist/server/implementation/mutations/index.d.ts.map +0 -1
  673. package/dist/server/implementation/mutations/index.js +0 -70
  674. package/dist/server/implementation/mutations/index.js.map +0 -1
  675. package/dist/server/implementation/mutations/invalidate.d.ts +0 -18
  676. package/dist/server/implementation/mutations/invalidate.d.ts.map +0 -1
  677. package/dist/server/implementation/mutations/invalidate.js +0 -29
  678. package/dist/server/implementation/mutations/invalidate.js.map +0 -1
  679. package/dist/server/implementation/mutations/oauth.d.ts +0 -23
  680. package/dist/server/implementation/mutations/oauth.d.ts.map +0 -1
  681. package/dist/server/implementation/mutations/oauth.js +0 -51
  682. package/dist/server/implementation/mutations/oauth.js.map +0 -1
  683. package/dist/server/implementation/mutations/refresh.d.ts +0 -20
  684. package/dist/server/implementation/mutations/refresh.d.ts.map +0 -1
  685. package/dist/server/implementation/mutations/refresh.js +0 -85
  686. package/dist/server/implementation/mutations/refresh.js.map +0 -1
  687. package/dist/server/implementation/mutations/register.d.ts +0 -37
  688. package/dist/server/implementation/mutations/register.d.ts.map +0 -1
  689. package/dist/server/implementation/mutations/register.js +0 -65
  690. package/dist/server/implementation/mutations/register.js.map +0 -1
  691. package/dist/server/implementation/mutations/retrieve.d.ts +0 -31
  692. package/dist/server/implementation/mutations/retrieve.d.ts.map +0 -1
  693. package/dist/server/implementation/mutations/retrieve.js +0 -50
  694. package/dist/server/implementation/mutations/retrieve.js.map +0 -1
  695. package/dist/server/implementation/mutations/signature.d.ts +0 -19
  696. package/dist/server/implementation/mutations/signature.d.ts.map +0 -1
  697. package/dist/server/implementation/mutations/signature.js +0 -27
  698. package/dist/server/implementation/mutations/signature.js.map +0 -1
  699. package/dist/server/implementation/mutations/signin.d.ts +0 -21
  700. package/dist/server/implementation/mutations/signin.d.ts.map +0 -1
  701. package/dist/server/implementation/mutations/signin.js.map +0 -1
  702. package/dist/server/implementation/mutations/signout.d.ts +0 -14
  703. package/dist/server/implementation/mutations/signout.d.ts.map +0 -1
  704. package/dist/server/implementation/mutations/signout.js +0 -27
  705. package/dist/server/implementation/mutations/signout.js.map +0 -1
  706. package/dist/server/implementation/mutations/store.d.ts +0 -11
  707. package/dist/server/implementation/mutations/store.d.ts.map +0 -1
  708. package/dist/server/implementation/mutations/store.js +0 -12
  709. package/dist/server/implementation/mutations/store.js.map +0 -1
  710. package/dist/server/implementation/mutations/verifier.d.ts +0 -11
  711. package/dist/server/implementation/mutations/verifier.d.ts.map +0 -1
  712. package/dist/server/implementation/mutations/verifier.js +0 -16
  713. package/dist/server/implementation/mutations/verifier.js.map +0 -1
  714. package/dist/server/implementation/mutations/verify.d.ts +0 -25
  715. package/dist/server/implementation/mutations/verify.d.ts.map +0 -1
  716. package/dist/server/implementation/mutations/verify.js +0 -105
  717. package/dist/server/implementation/mutations/verify.js.map +0 -1
  718. package/dist/server/implementation/passkey.d.ts +0 -24
  719. package/dist/server/implementation/passkey.d.ts.map +0 -1
  720. package/dist/server/implementation/passkey.js +0 -307
  721. package/dist/server/implementation/passkey.js.map +0 -1
  722. package/dist/server/implementation/provider.d.ts +0 -10
  723. package/dist/server/implementation/provider.d.ts.map +0 -1
  724. package/dist/server/implementation/provider.js +0 -19
  725. package/dist/server/implementation/provider.js.map +0 -1
  726. package/dist/server/implementation/ratelimit.d.ts +0 -10
  727. package/dist/server/implementation/ratelimit.d.ts.map +0 -1
  728. package/dist/server/implementation/ratelimit.js +0 -48
  729. package/dist/server/implementation/ratelimit.js.map +0 -1
  730. package/dist/server/implementation/redirects.d.ts +0 -10
  731. package/dist/server/implementation/redirects.d.ts.map +0 -1
  732. package/dist/server/implementation/redirects.js.map +0 -1
  733. package/dist/server/implementation/refresh.d.ts +0 -37
  734. package/dist/server/implementation/refresh.d.ts.map +0 -1
  735. package/dist/server/implementation/refresh.js +0 -109
  736. package/dist/server/implementation/refresh.js.map +0 -1
  737. package/dist/server/implementation/sessions.d.ts +0 -29
  738. package/dist/server/implementation/sessions.d.ts.map +0 -1
  739. package/dist/server/implementation/sessions.js.map +0 -1
  740. package/dist/server/implementation/signin.d.ts +0 -55
  741. package/dist/server/implementation/signin.d.ts.map +0 -1
  742. package/dist/server/implementation/signin.js +0 -148
  743. package/dist/server/implementation/signin.js.map +0 -1
  744. package/dist/server/implementation/tokens.d.ts +0 -11
  745. package/dist/server/implementation/tokens.d.ts.map +0 -1
  746. package/dist/server/implementation/tokens.js +0 -15
  747. package/dist/server/implementation/tokens.js.map +0 -1
  748. package/dist/server/implementation/totp.d.ts +0 -31
  749. package/dist/server/implementation/totp.d.ts.map +0 -1
  750. package/dist/server/implementation/totp.js +0 -142
  751. package/dist/server/implementation/totp.js.map +0 -1
  752. package/dist/server/implementation/types.d.ts +0 -189
  753. package/dist/server/implementation/types.d.ts.map +0 -1
  754. package/dist/server/implementation/types.js +0 -97
  755. package/dist/server/implementation/types.js.map +0 -1
  756. package/dist/server/implementation/users.d.ts +0 -30
  757. package/dist/server/implementation/users.d.ts.map +0 -1
  758. package/dist/server/implementation/users.js.map +0 -1
  759. package/dist/server/implementation/utils.d.ts +0 -19
  760. package/dist/server/implementation/utils.d.ts.map +0 -1
  761. package/dist/server/implementation/utils.js +0 -56
  762. package/dist/server/implementation/utils.js.map +0 -1
  763. package/dist/server/index.d.ts.map +0 -1
  764. package/dist/server/index.js.map +0 -1
  765. package/dist/server/oauth.d.ts.map +0 -1
  766. package/dist/server/providers.d.ts +0 -72
  767. package/dist/server/providers.d.ts.map +0 -1
  768. package/dist/server/providers.js.map +0 -1
  769. package/dist/server/templates.d.ts.map +0 -1
  770. package/dist/server/utils.d.ts.map +0 -1
  771. package/dist/server/version.d.ts +0 -5
  772. package/dist/server/version.d.ts.map +0 -1
  773. package/dist/server/version.js +0 -6
  774. package/dist/server/version.js.map +0 -1
  775. package/src/cli/utils.ts +0 -248
  776. package/src/server/implementation/device.ts +0 -307
  777. package/src/server/implementation/index.ts +0 -1583
  778. package/src/server/implementation/mutations/account.ts +0 -50
  779. package/src/server/implementation/mutations/index.ts +0 -157
  780. package/src/server/implementation/mutations/invalidate.ts +0 -42
  781. package/src/server/implementation/mutations/oauth.ts +0 -73
  782. package/src/server/implementation/mutations/refresh.ts +0 -175
  783. package/src/server/implementation/mutations/register.ts +0 -100
  784. package/src/server/implementation/mutations/retrieve.ts +0 -79
  785. package/src/server/implementation/mutations/signature.ts +0 -39
  786. package/src/server/implementation/mutations/signout.ts +0 -35
  787. package/src/server/implementation/mutations/store.ts +0 -7
  788. package/src/server/implementation/mutations/verifier.ts +0 -24
  789. package/src/server/implementation/mutations/verify.ts +0 -194
  790. package/src/server/implementation/passkey.ts +0 -620
  791. package/src/server/implementation/provider.ts +0 -36
  792. package/src/server/implementation/ratelimit.ts +0 -79
  793. package/src/server/implementation/refresh.ts +0 -172
  794. package/src/server/implementation/signin.ts +0 -296
  795. package/src/server/implementation/totp.ts +0 -342
  796. package/src/server/implementation/types.ts +0 -444
  797. package/src/server/implementation/utils.ts +0 -91
  798. package/src/server/version.ts +0 -2
@@ -1,10 +0,0 @@
1
- import { ConvexAuthMaterializedConfig } from "../types.js";
2
-
3
- //#region src/server/implementation/redirects.d.ts
4
- declare function redirectAbsoluteUrl(config: ConvexAuthMaterializedConfig, params: {
5
- redirectTo: unknown;
6
- }): Promise<string>;
7
- declare function setURLSearchParam(absoluteUrl: string, param: string, value: string): string;
8
- //#endregion
9
- export { redirectAbsoluteUrl, setURLSearchParam };
10
- //# sourceMappingURL=redirects.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"redirects.d.ts","names":[],"sources":["../../../src/server/implementation/redirects.ts"],"mappings":";;;iBAIsB,mBAAA,CACpB,MAAA,EAAQ,4BAAA,EACR,MAAA;EAAU,UAAA;AAAA,IAAqB,OAAA;AAAA,iBAwBjB,iBAAA,CACd,WAAA,UACA,KAAA,UACA,KAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"redirects.js","names":[],"sources":["../../../src/server/implementation/redirects.ts"],"sourcesContent":["import { ConvexAuthMaterializedConfig } from \"../types\";\nimport { requireEnv } from \"../utils\";\nimport { throwAuthError } from \"../errors\";\n\nexport async function redirectAbsoluteUrl(\n config: ConvexAuthMaterializedConfig,\n params: { redirectTo: unknown },\n) {\n if (params.redirectTo !== undefined) {\n if (typeof params.redirectTo !== \"string\") {\n throwAuthError(\"INVALID_REDIRECT\", `Expected \\`redirectTo\\` to be a string, got ${params.redirectTo as any}`);\n }\n const redirectCallback =\n config.callbacks?.redirect ?? defaultRedirectCallback;\n return await redirectCallback(params as { redirectTo: string });\n }\n return siteUrl();\n}\n\nasync function defaultRedirectCallback({ redirectTo }: { redirectTo: string }) {\n // Resolve relative paths against SITE_URL; absolute URLs are passed through\n // as-is. The developer is trusted to provide valid redirect targets.\n if (redirectTo.startsWith(\"?\") || redirectTo.startsWith(\"/\")) {\n return `${siteUrl()}${redirectTo}`;\n }\n return redirectTo;\n}\n\n// Temporary work-around because Convex doesn't support\n// schemes other than http and https.\nexport function setURLSearchParam(\n absoluteUrl: string,\n param: string,\n value: string,\n) {\n const pattern = /([^:]+):(.*)/;\n const [, scheme, rest] = absoluteUrl.match(pattern)!;\n const hasNoDomain = /^\\/\\/(?:\\/|$|\\?)/.test(rest);\n const startsWithPath = hasNoDomain && rest.startsWith(\"///\");\n const url = new URL(\n `http:${hasNoDomain ? \"//googblibok\" + rest.slice(2) : rest}`,\n );\n url.searchParams.set(param, value);\n const [, , withParam] = url.toString().match(pattern)!;\n return `${scheme}:${hasNoDomain ? (startsWithPath ? \"/\" : \"\") + \"//\" + withParam.slice(13) : withParam}`;\n}\n\nfunction siteUrl() {\n return requireEnv(\"SITE_URL\").replace(/\\/$/, \"\");\n}\n"],"mappings":";;;;AAIA,eAAsB,oBACpB,QACA,QACA;AACA,KAAI,OAAO,eAAe,QAAW;AACnC,MAAI,OAAO,OAAO,eAAe,SAC/B,gBAAe,oBAAoB,+CAA+C,OAAO,aAAoB;AAI/G,SAAO,OADL,OAAO,WAAW,YAAY,yBACF,OAAiC;;AAEjE,QAAO,SAAS;;AAGlB,eAAe,wBAAwB,EAAE,cAAsC;AAG7E,KAAI,WAAW,WAAW,IAAI,IAAI,WAAW,WAAW,IAAI,CAC1D,QAAO,GAAG,SAAS,GAAG;AAExB,QAAO;;AAKT,SAAgB,kBACd,aACA,OACA,OACA;CACA,MAAM,UAAU;CAChB,MAAM,GAAG,QAAQ,QAAQ,YAAY,MAAM,QAAQ;CACnD,MAAM,cAAc,mBAAmB,KAAK,KAAK;CACjD,MAAM,iBAAiB,eAAe,KAAK,WAAW,MAAM;CAC5D,MAAM,MAAM,IAAI,IACd,QAAQ,cAAc,iBAAiB,KAAK,MAAM,EAAE,GAAG,OACxD;AACD,KAAI,aAAa,IAAI,OAAO,MAAM;CAClC,MAAM,KAAK,aAAa,IAAI,UAAU,CAAC,MAAM,QAAQ;AACrD,QAAO,GAAG,OAAO,GAAG,eAAe,iBAAiB,MAAM,MAAM,OAAO,UAAU,MAAM,GAAG,GAAG;;AAG/F,SAAS,UAAU;AACjB,QAAO,WAAW,WAAW,CAAC,QAAQ,OAAO,GAAG"}
@@ -1,37 +0,0 @@
1
- import { Doc, MutationCtx } from "./types.js";
2
- import { ConvexAuthConfig } from "../types.js";
3
- import { GenericId } from "convex/values";
4
-
5
- //#region src/server/implementation/refresh.d.ts
6
- declare const REFRESH_TOKEN_REUSE_WINDOW_MS: number;
7
- declare function createRefreshToken(ctx: MutationCtx, config: ConvexAuthConfig, sessionId: GenericId<"session">, parentRefreshTokenId: GenericId<"token"> | null): Promise<GenericId<"token">>;
8
- declare const formatRefreshToken: (refreshTokenId: GenericId<"token">, sessionId: GenericId<"session">) => string;
9
- declare const parseRefreshToken: (refreshToken: string) => {
10
- refreshTokenId: GenericId<"token">;
11
- sessionId: GenericId<"session">;
12
- };
13
- /**
14
- * Mark all refresh tokens descending from the given refresh token as invalid immediately.
15
- * This is used when we detect an invalid use of a refresh token, and want to revoke
16
- * the entire tree.
17
- *
18
- * @param ctx
19
- * @param refreshToken
20
- */
21
- declare function invalidateRefreshTokensInSubtree(ctx: MutationCtx, refreshToken: Doc<"token">, config: ConvexAuthConfig): Promise<Doc<"token">[]>;
22
- declare function deleteAllRefreshTokens(ctx: MutationCtx, sessionId: GenericId<"session">, config: ConvexAuthConfig): Promise<void>;
23
- declare function refreshTokenIfValid(ctx: MutationCtx, refreshTokenId: string, tokenSessionId: string, config: ConvexAuthConfig): Promise<{
24
- session: Doc<"session">;
25
- refreshTokenDoc: Doc<"token">;
26
- } | null>;
27
- /**
28
- * The active refresh token is the most recently created refresh token that has
29
- * never been used.
30
- *
31
- * @param ctx
32
- * @param sessionId
33
- */
34
- declare function loadActiveRefreshToken(ctx: MutationCtx, sessionId: GenericId<"session">, config: ConvexAuthConfig): Promise<Doc<"token"> | null>;
35
- //#endregion
36
- export { REFRESH_TOKEN_REUSE_WINDOW_MS, createRefreshToken, deleteAllRefreshTokens, formatRefreshToken, invalidateRefreshTokensInSubtree, loadActiveRefreshToken, parseRefreshToken, refreshTokenIfValid };
37
- //# sourceMappingURL=refresh.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"refresh.d.ts","names":[],"sources":["../../../src/server/implementation/refresh.ts"],"mappings":";;;;;cAca,6BAAA;AAAA,iBACS,kBAAA,CACpB,GAAA,EAAK,WAAA,EACL,MAAA,EAAQ,gBAAA,EACR,SAAA,EAAW,SAAA,aACX,oBAAA,EAAsB,SAAA,mBACrB,OAAA,CAAQ,SAAA;AAAA,cAeE,kBAAA,GACX,cAAA,EAAgB,SAAA,WAChB,SAAA,EAAW,SAAA;AAAA,cAKA,iBAAA,GACX,YAAA;EAEA,cAAA,EAAgB,SAAA;EAChB,SAAA,EAAW,SAAA;AAAA;AA/Bb;;;;;;;;AAAA,iBAmDsB,gCAAA,CACpB,GAAA,EAAK,WAAA,EACL,YAAA,EAAc,GAAA,WACd,MAAA,EAAQ,gBAAA,GAAgB,OAAA,CAAA,GAAA;AAAA,iBA+BJ,sBAAA,CACpB,GAAA,EAAK,WAAA,EACL,SAAA,EAAW,SAAA,aACX,MAAA,EAAQ,gBAAA,GAAgB,OAAA;AAAA,iBAKJ,mBAAA,CACpB,GAAA,EAAK,WAAA,EACL,cAAA,UACA,cAAA,UACA,MAAA,EAAQ,gBAAA,GAAgB,OAAA;;;;;;;;;;;iBAmDJ,sBAAA,CACpB,GAAA,EAAK,WAAA,EACL,SAAA,EAAW,SAAA,aACX,MAAA,EAAQ,gBAAA,GAAgB,OAAA,CAAA,GAAA"}
@@ -1,109 +0,0 @@
1
- import { throwAuthError } from "../errors.js";
2
- import { LOG_LEVELS, REFRESH_TOKEN_DIVIDER, logWithLevel, maybeRedact, stringToNumber } from "./utils.js";
3
- import { authDb } from "./db.js";
4
-
5
- //#region src/server/implementation/refresh.ts
6
- const DEFAULT_SESSION_INACTIVE_DURATION_MS = 1e3 * 60 * 60 * 24 * 30;
7
- const REFRESH_TOKEN_REUSE_WINDOW_MS = 10 * 1e3;
8
- async function createRefreshToken(ctx, config, sessionId, parentRefreshTokenId) {
9
- const db = authDb(ctx, config);
10
- const expirationTime = Date.now() + (config.session?.inactiveDurationMs ?? stringToNumber(process.env.AUTH_SESSION_INACTIVE_DURATION_MS) ?? DEFAULT_SESSION_INACTIVE_DURATION_MS);
11
- return await db.refreshTokens.create({
12
- sessionId,
13
- expirationTime,
14
- parentRefreshTokenId: parentRefreshTokenId ?? void 0
15
- });
16
- }
17
- const formatRefreshToken = (refreshTokenId, sessionId) => {
18
- return `${refreshTokenId}${REFRESH_TOKEN_DIVIDER}${sessionId}`;
19
- };
20
- const parseRefreshToken = (refreshToken) => {
21
- const [refreshTokenId, sessionId] = refreshToken.split(REFRESH_TOKEN_DIVIDER);
22
- if (!refreshTokenId || !sessionId) throwAuthError("INVALID_REFRESH_TOKEN", `Can't parse refresh token: ${maybeRedact(refreshToken)}`);
23
- return {
24
- refreshTokenId,
25
- sessionId
26
- };
27
- };
28
- /**
29
- * Mark all refresh tokens descending from the given refresh token as invalid immediately.
30
- * This is used when we detect an invalid use of a refresh token, and want to revoke
31
- * the entire tree.
32
- *
33
- * @param ctx
34
- * @param refreshToken
35
- */
36
- async function invalidateRefreshTokensInSubtree(ctx, refreshToken, config) {
37
- const db = authDb(ctx, config);
38
- const tokensToInvalidate = [refreshToken];
39
- let frontier = [refreshToken._id];
40
- while (frontier.length > 0) {
41
- const nextFrontier = [];
42
- for (const currentTokenId of frontier) {
43
- const children = await db.refreshTokens.getChildren(refreshToken.sessionId, currentTokenId);
44
- tokensToInvalidate.push(...children);
45
- nextFrontier.push(...children.map((child) => child._id));
46
- }
47
- frontier = nextFrontier;
48
- }
49
- for (const token of tokensToInvalidate) if (token.firstUsedTime === void 0 || token.firstUsedTime > Date.now() - REFRESH_TOKEN_REUSE_WINDOW_MS) await db.refreshTokens.patch(token._id, { firstUsedTime: Date.now() - REFRESH_TOKEN_REUSE_WINDOW_MS });
50
- return tokensToInvalidate;
51
- }
52
- async function deleteAllRefreshTokens(ctx, sessionId, config) {
53
- await authDb(ctx, config).refreshTokens.deleteAll(sessionId);
54
- }
55
- async function refreshTokenIfValid(ctx, refreshTokenId, tokenSessionId, config) {
56
- const db = authDb(ctx, config);
57
- let refreshTokenDoc;
58
- try {
59
- refreshTokenDoc = await db.refreshTokens.getById(refreshTokenId);
60
- } catch {
61
- logWithLevel(LOG_LEVELS.ERROR, "Invalid refresh token format");
62
- return null;
63
- }
64
- if (refreshTokenDoc === null) {
65
- logWithLevel(LOG_LEVELS.ERROR, "Invalid refresh token");
66
- return null;
67
- }
68
- if (refreshTokenDoc.expirationTime < Date.now()) {
69
- logWithLevel(LOG_LEVELS.ERROR, "Expired refresh token");
70
- return null;
71
- }
72
- if (refreshTokenDoc.sessionId !== tokenSessionId) {
73
- logWithLevel(LOG_LEVELS.ERROR, "Invalid refresh token session ID");
74
- return null;
75
- }
76
- let session;
77
- try {
78
- session = await db.sessions.getById(refreshTokenDoc.sessionId);
79
- } catch {
80
- logWithLevel(LOG_LEVELS.ERROR, "Invalid refresh token session format");
81
- return null;
82
- }
83
- if (session === null) {
84
- logWithLevel(LOG_LEVELS.ERROR, "Invalid refresh token session");
85
- return null;
86
- }
87
- if (session.expirationTime < Date.now()) {
88
- logWithLevel(LOG_LEVELS.ERROR, "Expired refresh token session");
89
- return null;
90
- }
91
- return {
92
- session,
93
- refreshTokenDoc
94
- };
95
- }
96
- /**
97
- * The active refresh token is the most recently created refresh token that has
98
- * never been used.
99
- *
100
- * @param ctx
101
- * @param sessionId
102
- */
103
- async function loadActiveRefreshToken(ctx, sessionId, config) {
104
- return await authDb(ctx, config).refreshTokens.getActive(sessionId);
105
- }
106
-
107
- //#endregion
108
- export { REFRESH_TOKEN_REUSE_WINDOW_MS, createRefreshToken, deleteAllRefreshTokens, formatRefreshToken, invalidateRefreshTokensInSubtree, loadActiveRefreshToken, parseRefreshToken, refreshTokenIfValid };
109
- //# sourceMappingURL=refresh.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"refresh.js","names":[],"sources":["../../../src/server/implementation/refresh.ts"],"sourcesContent":["import { GenericId } from \"convex/values\";\nimport { ConvexAuthConfig } from \"../types\";\nimport { throwAuthError } from \"../errors\";\nimport { Doc, MutationCtx } from \"./types\";\nimport {\n LOG_LEVELS,\n REFRESH_TOKEN_DIVIDER,\n logWithLevel,\n maybeRedact,\n stringToNumber,\n} from \"./utils\";\nimport { authDb } from \"./db\";\n\nconst DEFAULT_SESSION_INACTIVE_DURATION_MS = 1000 * 60 * 60 * 24 * 30; // 30 days\nexport const REFRESH_TOKEN_REUSE_WINDOW_MS = 10 * 1000; // 10 seconds\nexport async function createRefreshToken(\n ctx: MutationCtx,\n config: ConvexAuthConfig,\n sessionId: GenericId<\"session\">,\n parentRefreshTokenId: GenericId<\"token\"> | null,\n): Promise<GenericId<\"token\">> {\n const db = authDb(ctx, config);\n const expirationTime =\n Date.now() +\n (config.session?.inactiveDurationMs ??\n stringToNumber(process.env.AUTH_SESSION_INACTIVE_DURATION_MS) ??\n DEFAULT_SESSION_INACTIVE_DURATION_MS);\n const newRefreshTokenId = (await db.refreshTokens.create({\n sessionId,\n expirationTime,\n parentRefreshTokenId: parentRefreshTokenId ?? undefined,\n })) as GenericId<\"token\">;\n return newRefreshTokenId;\n}\n\nexport const formatRefreshToken = (\n refreshTokenId: GenericId<\"token\">,\n sessionId: GenericId<\"session\">,\n) => {\n return `${refreshTokenId}${REFRESH_TOKEN_DIVIDER}${sessionId}`;\n};\n\nexport const parseRefreshToken = (\n refreshToken: string,\n): {\n refreshTokenId: GenericId<\"token\">;\n sessionId: GenericId<\"session\">;\n} => {\n const [refreshTokenId, sessionId] = refreshToken.split(REFRESH_TOKEN_DIVIDER);\n if (!refreshTokenId || !sessionId) {\n throwAuthError(\"INVALID_REFRESH_TOKEN\", `Can't parse refresh token: ${maybeRedact(refreshToken)}`);\n }\n return {\n refreshTokenId: refreshTokenId as GenericId<\"token\">,\n sessionId: sessionId as GenericId<\"session\">,\n };\n};\n\n/**\n * Mark all refresh tokens descending from the given refresh token as invalid immediately.\n * This is used when we detect an invalid use of a refresh token, and want to revoke\n * the entire tree.\n *\n * @param ctx\n * @param refreshToken\n */\nexport async function invalidateRefreshTokensInSubtree(\n ctx: MutationCtx,\n refreshToken: Doc<\"token\">,\n config: ConvexAuthConfig,\n) {\n const db = authDb(ctx, config);\n const tokensToInvalidate = [refreshToken];\n let frontier: GenericId<\"token\">[] = [refreshToken._id];\n while (frontier.length > 0) {\n const nextFrontier: GenericId<\"token\">[] = [];\n for (const currentTokenId of frontier) {\n const children = (await db.refreshTokens.getChildren(\n refreshToken.sessionId,\n currentTokenId,\n )) as Doc<\"token\">[];\n tokensToInvalidate.push(...children);\n nextFrontier.push(...children.map((child) => child._id));\n }\n frontier = nextFrontier;\n }\n for (const token of tokensToInvalidate) {\n // Mark these as used so they can't be used again (even within the reuse window)\n if (\n token.firstUsedTime === undefined ||\n token.firstUsedTime > Date.now() - REFRESH_TOKEN_REUSE_WINDOW_MS\n ) {\n await db.refreshTokens.patch(token._id, {\n firstUsedTime: Date.now() - REFRESH_TOKEN_REUSE_WINDOW_MS,\n });\n }\n }\n return tokensToInvalidate;\n}\n\nexport async function deleteAllRefreshTokens(\n ctx: MutationCtx,\n sessionId: GenericId<\"session\">,\n config: ConvexAuthConfig,\n) {\n await authDb(ctx, config).refreshTokens.deleteAll(sessionId);\n}\n\nexport async function refreshTokenIfValid(\n ctx: MutationCtx,\n refreshTokenId: string,\n tokenSessionId: string,\n config: ConvexAuthConfig,\n) {\n const db = authDb(ctx, config);\n let refreshTokenDoc: Doc<\"token\"> | null;\n try {\n refreshTokenDoc = (await db.refreshTokens.getById(\n refreshTokenId as GenericId<\"token\">,\n )) as Doc<\"token\"> | null;\n } catch {\n logWithLevel(LOG_LEVELS.ERROR, \"Invalid refresh token format\");\n return null;\n }\n\n if (refreshTokenDoc === null) {\n logWithLevel(LOG_LEVELS.ERROR, \"Invalid refresh token\");\n return null;\n }\n if (refreshTokenDoc.expirationTime < Date.now()) {\n logWithLevel(LOG_LEVELS.ERROR, \"Expired refresh token\");\n return null;\n }\n if (refreshTokenDoc.sessionId !== tokenSessionId) {\n logWithLevel(LOG_LEVELS.ERROR, \"Invalid refresh token session ID\");\n return null;\n }\n let session: Doc<\"session\"> | null;\n try {\n session = (await db.sessions.getById(refreshTokenDoc.sessionId)) as\n | Doc<\"session\">\n | null;\n } catch {\n logWithLevel(LOG_LEVELS.ERROR, \"Invalid refresh token session format\");\n return null;\n }\n if (session === null) {\n logWithLevel(LOG_LEVELS.ERROR, \"Invalid refresh token session\");\n return null;\n }\n if (session.expirationTime < Date.now()) {\n logWithLevel(LOG_LEVELS.ERROR, \"Expired refresh token session\");\n return null;\n }\n return { session, refreshTokenDoc };\n}\n/**\n * The active refresh token is the most recently created refresh token that has\n * never been used.\n *\n * @param ctx\n * @param sessionId\n */\nexport async function loadActiveRefreshToken(\n ctx: MutationCtx,\n sessionId: GenericId<\"session\">,\n config: ConvexAuthConfig,\n) {\n return (await authDb(ctx, config).refreshTokens.getActive(sessionId)) as\n | Doc<\"token\">\n | null;\n}\n"],"mappings":";;;;;AAaA,MAAM,uCAAuC,MAAO,KAAK,KAAK,KAAK;AACnE,MAAa,gCAAgC,KAAK;AAClD,eAAsB,mBACpB,KACA,QACA,WACA,sBAC6B;CAC7B,MAAM,KAAK,OAAO,KAAK,OAAO;CAC9B,MAAM,iBACJ,KAAK,KAAK,IACT,OAAO,SAAS,sBACf,eAAe,QAAQ,IAAI,kCAAkC,IAC7D;AAMJ,QAL2B,MAAM,GAAG,cAAc,OAAO;EACvD;EACA;EACA,sBAAsB,wBAAwB;EAC/C,CAAC;;AAIJ,MAAa,sBACX,gBACA,cACG;AACH,QAAO,GAAG,iBAAiB,wBAAwB;;AAGrD,MAAa,qBACX,iBAIG;CACH,MAAM,CAAC,gBAAgB,aAAa,aAAa,MAAM,sBAAsB;AAC7E,KAAI,CAAC,kBAAkB,CAAC,UACtB,gBAAe,yBAAyB,8BAA8B,YAAY,aAAa,GAAG;AAEpG,QAAO;EACW;EACL;EACZ;;;;;;;;;;AAWH,eAAsB,iCACpB,KACA,cACA,QACA;CACA,MAAM,KAAK,OAAO,KAAK,OAAO;CAC9B,MAAM,qBAAqB,CAAC,aAAa;CACzC,IAAI,WAAiC,CAAC,aAAa,IAAI;AACvD,QAAO,SAAS,SAAS,GAAG;EAC1B,MAAM,eAAqC,EAAE;AAC7C,OAAK,MAAM,kBAAkB,UAAU;GACrC,MAAM,WAAY,MAAM,GAAG,cAAc,YACvC,aAAa,WACb,eACD;AACD,sBAAmB,KAAK,GAAG,SAAS;AACpC,gBAAa,KAAK,GAAG,SAAS,KAAK,UAAU,MAAM,IAAI,CAAC;;AAE1D,aAAW;;AAEb,MAAK,MAAM,SAAS,mBAElB,KACE,MAAM,kBAAkB,UACxB,MAAM,gBAAgB,KAAK,KAAK,GAAG,8BAEnC,OAAM,GAAG,cAAc,MAAM,MAAM,KAAK,EACtC,eAAe,KAAK,KAAK,GAAG,+BAC7B,CAAC;AAGN,QAAO;;AAGT,eAAsB,uBACpB,KACA,WACA,QACA;AACA,OAAM,OAAO,KAAK,OAAO,CAAC,cAAc,UAAU,UAAU;;AAG9D,eAAsB,oBACpB,KACA,gBACA,gBACA,QACA;CACA,MAAM,KAAK,OAAO,KAAK,OAAO;CAC9B,IAAI;AACJ,KAAI;AACF,oBAAmB,MAAM,GAAG,cAAc,QACxC,eACD;SACK;AACN,eAAa,WAAW,OAAO,+BAA+B;AAC9D,SAAO;;AAGT,KAAI,oBAAoB,MAAM;AAC5B,eAAa,WAAW,OAAO,wBAAwB;AACvD,SAAO;;AAET,KAAI,gBAAgB,iBAAiB,KAAK,KAAK,EAAE;AAC/C,eAAa,WAAW,OAAO,wBAAwB;AACvD,SAAO;;AAET,KAAI,gBAAgB,cAAc,gBAAgB;AAChD,eAAa,WAAW,OAAO,mCAAmC;AAClE,SAAO;;CAET,IAAI;AACJ,KAAI;AACF,YAAW,MAAM,GAAG,SAAS,QAAQ,gBAAgB,UAAU;SAGzD;AACN,eAAa,WAAW,OAAO,uCAAuC;AACtE,SAAO;;AAET,KAAI,YAAY,MAAM;AACpB,eAAa,WAAW,OAAO,gCAAgC;AAC/D,SAAO;;AAET,KAAI,QAAQ,iBAAiB,KAAK,KAAK,EAAE;AACvC,eAAa,WAAW,OAAO,gCAAgC;AAC/D,SAAO;;AAET,QAAO;EAAE;EAAS;EAAiB;;;;;;;;;AASrC,eAAsB,uBACpB,KACA,WACA,QACA;AACA,QAAQ,MAAM,OAAO,KAAK,OAAO,CAAC,cAAc,UAAU,UAAU"}
@@ -1,29 +0,0 @@
1
- import { Doc, MutationCtx, SessionInfo } from "./types.js";
2
- import { ConvexAuthConfig } from "../types.js";
3
- import { Auth } from "convex/server";
4
- import { GenericId } from "convex/values";
5
-
6
- //#region src/server/implementation/sessions.d.ts
7
- declare function maybeGenerateTokensForSession(ctx: MutationCtx, config: ConvexAuthConfig, userId: GenericId<"user">, sessionId: GenericId<"session">, generateTokens: boolean): Promise<SessionInfo>;
8
- declare function createNewAndDeleteExistingSession(ctx: MutationCtx, config: ConvexAuthConfig, userId: GenericId<"user">): Promise<GenericId<"session">>;
9
- declare function generateTokensForSession(ctx: MutationCtx, config: ConvexAuthConfig, args: {
10
- userId: GenericId<"user">;
11
- sessionId: GenericId<"session">;
12
- issuedRefreshTokenId: GenericId<"token"> | null;
13
- parentRefreshTokenId: GenericId<"token"> | null;
14
- }): Promise<{
15
- token: string;
16
- refreshToken: string;
17
- }>;
18
- declare function deleteSession(ctx: MutationCtx, session: Doc<"session">, config: ConvexAuthConfig): Promise<void>;
19
- /**
20
- * Return the current session ID from the auth identity subject.
21
- *
22
- * Internal helper used by auth runtime internals and `auth.session.current`.
23
- */
24
- declare function getAuthSessionId(ctx: {
25
- auth: Auth;
26
- }): Promise<GenericId<"session"> | null>;
27
- //#endregion
28
- export { createNewAndDeleteExistingSession, deleteSession, generateTokensForSession, getAuthSessionId, maybeGenerateTokensForSession };
29
- //# sourceMappingURL=sessions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sessions.d.ts","names":[],"sources":["../../../src/server/implementation/sessions.ts"],"mappings":";;;;;;iBAqBsB,6BAAA,CACpB,GAAA,EAAK,WAAA,EACL,MAAA,EAAQ,gBAAA,EACR,MAAA,EAAQ,SAAA,UACR,SAAA,EAAW,SAAA,aACX,cAAA,YACC,OAAA,CAAQ,WAAA;AAAA,iBAeW,iCAAA,CACpB,GAAA,EAAK,WAAA,EACL,MAAA,EAAQ,gBAAA,EACR,MAAA,EAAQ,SAAA,WAAiB,OAAA,CAAA,SAAA;AAAA,iBAaL,wBAAA,CACpB,GAAA,EAAK,WAAA,EACL,MAAA,EAAQ,gBAAA,EACR,IAAA;EACE,MAAA,EAAQ,SAAA;EACR,SAAA,EAAW,SAAA;EACX,oBAAA,EAAsB,SAAA;EACtB,oBAAA,EAAsB,SAAA;AAAA,IACvB,OAAA;;;;iBAoCmB,aAAA,CACpB,GAAA,EAAK,WAAA,EACL,OAAA,EAAS,GAAA,aACT,MAAA,EAAQ,gBAAA,GAAgB,OAAA;;;;;;iBAWJ,gBAAA,CAAiB,GAAA;EAAO,IAAA,EAAM,IAAA;AAAA,IAAM,OAAA,CAAA,SAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sessions.js","names":[],"sources":["../../../src/server/implementation/sessions.ts"],"sourcesContent":["import { GenericId } from \"convex/values\";\nimport { ConvexAuthConfig } from \"../types\";\nimport { Doc, MutationCtx, SessionInfo } from \"./types\";\nimport { Auth } from \"convex/server\";\nimport {\n LOG_LEVELS,\n TOKEN_SUB_CLAIM_DIVIDER,\n logWithLevel,\n maybeRedact,\n stringToNumber,\n} from \"./utils\";\nimport { generateToken } from \"./tokens\";\nimport {\n createRefreshToken,\n formatRefreshToken,\n deleteAllRefreshTokens,\n} from \"./refresh\";\nimport { authDb } from \"./db\";\n\nconst DEFAULT_SESSION_TOTAL_DURATION_MS = 1000 * 60 * 60 * 24 * 30; // 30 days\n\nexport async function maybeGenerateTokensForSession(\n ctx: MutationCtx,\n config: ConvexAuthConfig,\n userId: GenericId<\"user\">,\n sessionId: GenericId<\"session\">,\n generateTokens: boolean,\n): Promise<SessionInfo> {\n return {\n userId,\n sessionId,\n tokens: generateTokens\n ? await generateTokensForSession(ctx, config, {\n userId,\n sessionId,\n issuedRefreshTokenId: null,\n parentRefreshTokenId: null,\n })\n : null,\n };\n}\n\nexport async function createNewAndDeleteExistingSession(\n ctx: MutationCtx,\n config: ConvexAuthConfig,\n userId: GenericId<\"user\">,\n) {\n const db = authDb(ctx, config);\n const existingSessionId = await getAuthSessionId(ctx);\n if (existingSessionId !== null) {\n const existingSession = await db.sessions.getById(existingSessionId);\n if (existingSession !== null) {\n await deleteSession(ctx, existingSession, config);\n }\n }\n return await createSession(ctx, userId, config);\n}\n\nexport async function generateTokensForSession(\n ctx: MutationCtx,\n config: ConvexAuthConfig,\n args: {\n userId: GenericId<\"user\">;\n sessionId: GenericId<\"session\">;\n issuedRefreshTokenId: GenericId<\"token\"> | null;\n parentRefreshTokenId: GenericId<\"token\"> | null;\n },\n) {\n const ids = { userId: args.userId, sessionId: args.sessionId };\n const refreshTokenId =\n args.issuedRefreshTokenId ??\n (await createRefreshToken(\n ctx,\n config,\n args.sessionId,\n args.parentRefreshTokenId,\n ));\n const result = {\n token: await generateToken(ids, config),\n refreshToken: formatRefreshToken(refreshTokenId, args.sessionId),\n };\n logWithLevel(\n LOG_LEVELS.DEBUG,\n `Generated token ${maybeRedact(result.token)} and refresh token ${maybeRedact(refreshTokenId)} for session ${maybeRedact(args.sessionId)}`,\n );\n return result;\n}\n\nasync function createSession(\n ctx: MutationCtx,\n userId: GenericId<\"user\">,\n config: ConvexAuthConfig,\n) {\n const db = authDb(ctx, config);\n const expirationTime =\n Date.now() +\n (config.session?.totalDurationMs ??\n stringToNumber(process.env.AUTH_SESSION_TOTAL_DURATION_MS) ??\n DEFAULT_SESSION_TOTAL_DURATION_MS);\n return (await db.sessions.create(userId, expirationTime)) as GenericId<\"session\">;\n}\n\nexport async function deleteSession(\n ctx: MutationCtx,\n session: Doc<\"session\">,\n config: ConvexAuthConfig,\n) {\n await authDb(ctx, config).sessions.delete(session._id);\n await deleteAllRefreshTokens(ctx, session._id, config);\n}\n\n/**\n * Return the current session ID from the auth identity subject.\n *\n * Internal helper used by auth runtime internals and `auth.session.current`.\n */\nexport async function getAuthSessionId(ctx: { auth: Auth }) {\n const identity = await ctx.auth.getUserIdentity();\n if (identity === null) {\n return null;\n }\n const [, sessionId] = identity.subject.split(TOKEN_SUB_CLAIM_DIVIDER);\n return sessionId as GenericId<\"session\">;\n}\n"],"mappings":";;;;;;AAmBA,MAAM,oCAAoC,MAAO,KAAK,KAAK,KAAK;AAEhE,eAAsB,8BACpB,KACA,QACA,QACA,WACA,gBACsB;AACtB,QAAO;EACL;EACA;EACA,QAAQ,iBACJ,MAAM,yBAAyB,KAAK,QAAQ;GAC1C;GACA;GACA,sBAAsB;GACtB,sBAAsB;GACvB,CAAC,GACF;EACL;;AAGH,eAAsB,kCACpB,KACA,QACA,QACA;CACA,MAAM,KAAK,OAAO,KAAK,OAAO;CAC9B,MAAM,oBAAoB,MAAM,iBAAiB,IAAI;AACrD,KAAI,sBAAsB,MAAM;EAC9B,MAAM,kBAAkB,MAAM,GAAG,SAAS,QAAQ,kBAAkB;AACpE,MAAI,oBAAoB,KACtB,OAAM,cAAc,KAAK,iBAAiB,OAAO;;AAGrD,QAAO,MAAM,cAAc,KAAK,QAAQ,OAAO;;AAGjD,eAAsB,yBACpB,KACA,QACA,MAMA;CACA,MAAM,MAAM;EAAE,QAAQ,KAAK;EAAQ,WAAW,KAAK;EAAW;CAC9D,MAAM,iBACJ,KAAK,wBACJ,MAAM,mBACL,KACA,QACA,KAAK,WACL,KAAK,qBACN;CACH,MAAM,SAAS;EACb,OAAO,MAAM,cAAc,KAAK,OAAO;EACvC,cAAc,mBAAmB,gBAAgB,KAAK,UAAU;EACjE;AACD,cACE,WAAW,OACX,mBAAmB,YAAY,OAAO,MAAM,CAAC,qBAAqB,YAAY,eAAe,CAAC,eAAe,YAAY,KAAK,UAAU,GACzI;AACD,QAAO;;AAGT,eAAe,cACb,KACA,QACA,QACA;CACA,MAAM,KAAK,OAAO,KAAK,OAAO;CAC9B,MAAM,iBACJ,KAAK,KAAK,IACT,OAAO,SAAS,mBACf,eAAe,QAAQ,IAAI,+BAA+B,IAC1D;AACJ,QAAQ,MAAM,GAAG,SAAS,OAAO,QAAQ,eAAe;;AAG1D,eAAsB,cACpB,KACA,SACA,QACA;AACA,OAAM,OAAO,KAAK,OAAO,CAAC,SAAS,OAAO,QAAQ,IAAI;AACtD,OAAM,uBAAuB,KAAK,QAAQ,KAAK,OAAO;;;;;;;AAQxD,eAAsB,iBAAiB,KAAqB;CAC1D,MAAM,WAAW,MAAM,IAAI,KAAK,iBAAiB;AACjD,KAAI,aAAa,KACf,QAAO;CAET,MAAM,GAAG,aAAa,SAAS,QAAQ,MAAM,wBAAwB;AACrE,QAAO"}
@@ -1,55 +0,0 @@
1
- import { AuthDataModel, SessionInfo, Tokens } from "./types.js";
2
- import { AuthProviderMaterializedConfig, GenericActionCtxWithAuthConfig } from "../types.js";
3
- import { GenericId } from "convex/values";
4
-
5
- //#region src/server/implementation/signin.d.ts
6
- type EnrichedActionCtx = GenericActionCtxWithAuthConfig<AuthDataModel>;
7
- declare function signInImpl(ctx: EnrichedActionCtx, provider: AuthProviderMaterializedConfig | null, args: {
8
- accountId?: GenericId<"account">;
9
- params?: Record<string, any>;
10
- verifier?: string;
11
- refreshToken?: string;
12
- calledBy?: string;
13
- }, options: {
14
- generateTokens: boolean;
15
- allowExtraProviders: boolean;
16
- }): Promise<{
17
- kind: "signedIn";
18
- signedIn: SessionInfo | null;
19
- } | {
20
- kind: "refreshTokens";
21
- signedIn: {
22
- tokens: Tokens;
23
- };
24
- } | {
25
- kind: "started";
26
- started: true;
27
- } | {
28
- kind: "redirect";
29
- redirect: string;
30
- verifier: string;
31
- } | {
32
- kind: "passkeyOptions";
33
- options: Record<string, any>;
34
- verifier: string;
35
- } | {
36
- kind: "totpRequired";
37
- verifier: string;
38
- } | {
39
- kind: "totpSetup";
40
- uri: string;
41
- secret: string;
42
- verifier: string;
43
- totpId: string;
44
- } | {
45
- kind: "deviceCode";
46
- deviceCode: string;
47
- userCode: string;
48
- verificationUri: string;
49
- verificationUriComplete: string;
50
- expiresIn: number;
51
- interval: number;
52
- }>;
53
- //#endregion
54
- export { signInImpl };
55
- //# sourceMappingURL=signin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"signin.d.ts","names":[],"sources":["../../../src/server/implementation/signin.ts"],"mappings":";;;;;KAiCK,iBAAA,GAAoB,8BAAA,CAA+B,aAAA;AAAA,iBAElC,UAAA,CACpB,GAAA,EAAK,iBAAA,EACL,QAAA,EAAU,8BAAA,SACV,IAAA;EACE,SAAA,GAAY,SAAA;EACZ,MAAA,GAAS,MAAA;EACT,QAAA;EACA,YAAA;EACA,QAAA;AAAA,GAEF,OAAA;EACE,cAAA;EACA,mBAAA;AAAA,IAED,OAAA;EACG,IAAA;EAAkB,QAAA,EAAU,WAAA;AAAA;EAE5B,IAAA;EAAuB,QAAA;IAAY,MAAA,EAAQ,MAAA;EAAA;AAAA;EAE3C,IAAA;EAAiB,OAAA;AAAA;EAEjB,IAAA;EAAkB,QAAA;EAAkB,QAAA;AAAA;EAEpC,IAAA;EAAwB,OAAA,EAAS,MAAA;EAAqB,QAAA;AAAA;EAEtD,IAAA;EAAsB,QAAA;AAAA;EAEtB,IAAA;EAAmB,GAAA;EAAa,MAAA;EAAgB,QAAA;EAAkB,MAAA;AAAA;EAGlE,IAAA;EACA,UAAA;EACA,QAAA;EACA,eAAA;EACA,uBAAA;EACA,SAAA;EACA,QAAA;AAAA"}
@@ -1,148 +0,0 @@
1
- import { throwAuthError } from "../errors.js";
2
- import { requireEnv } from "../utils.js";
3
- import { generateRandomString } from "./utils.js";
4
- import { callSignIn } from "./mutations/signin.js";
5
- import { callRefreshSession } from "./mutations/refresh.js";
6
- import { callVerifyCodeAndSignIn } from "./mutations/verify.js";
7
- import { callVerifierSignature } from "./mutations/signature.js";
8
- import { callCreateVerificationCode } from "./mutations/code.js";
9
- import { callVerifier } from "./mutations/verifier.js";
10
- import { redirectAbsoluteUrl, setURLSearchParam } from "./redirects.js";
11
- import { handlePasskey } from "./passkey.js";
12
- import { checkTotpRequired, handleTotp } from "./totp.js";
13
- import { handleDevice } from "./device.js";
14
-
15
- //#region src/server/implementation/signin.ts
16
- const DEFAULT_EMAIL_VERIFICATION_CODE_DURATION_S = 3600 * 24;
17
- async function signInImpl(ctx, provider, args, options) {
18
- if (provider === null && args.refreshToken) {
19
- const tokens = await callRefreshSession(ctx, { refreshToken: args.refreshToken });
20
- if (tokens === null) return {
21
- kind: "signedIn",
22
- signedIn: null
23
- };
24
- return {
25
- kind: "refreshTokens",
26
- signedIn: { tokens }
27
- };
28
- }
29
- if (provider === null && args.params?.code !== void 0) return {
30
- kind: "signedIn",
31
- signedIn: await callVerifyCodeAndSignIn(ctx, {
32
- params: args.params,
33
- verifier: args.verifier,
34
- generateTokens: true,
35
- allowExtraProviders: options.allowExtraProviders
36
- })
37
- };
38
- if (provider === null) throwAuthError("SIGN_IN_MISSING_PARAMS");
39
- if (provider.type === "email" || provider.type === "phone") return handleEmailAndPhoneProvider(ctx, provider, args, options);
40
- if (provider.type === "credentials") return handleCredentials(ctx, provider, args, options);
41
- if (provider.type === "oauth") return handleOAuthProvider(ctx, provider, args, options);
42
- if (provider.type === "passkey") return handlePasskey(ctx, provider, args);
43
- if (provider.type === "totp") return handleTotp(ctx, provider, args);
44
- if (provider.type === "device") return handleDevice(ctx, provider, args);
45
- throwAuthError("UNSUPPORTED_PROVIDER_TYPE", `Provider type ${provider.type} is not supported yet`);
46
- }
47
- async function handleEmailAndPhoneProvider(ctx, provider, args, options) {
48
- if (args.params?.code !== void 0) {
49
- const result = await callVerifyCodeAndSignIn(ctx, {
50
- params: args.params,
51
- provider: provider.id,
52
- generateTokens: options.generateTokens,
53
- allowExtraProviders: options.allowExtraProviders
54
- });
55
- if (result === null) throwAuthError("INVALID_VERIFICATION_CODE");
56
- return {
57
- kind: "signedIn",
58
- signedIn: result
59
- };
60
- }
61
- const code = provider.generateVerificationToken ? await provider.generateVerificationToken() : generateRandomString(32, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
62
- const expirationTime = Date.now() + (provider.maxAge ?? DEFAULT_EMAIL_VERIFICATION_CODE_DURATION_S) * 1e3;
63
- const verificationArgs = {
64
- identifier: await callCreateVerificationCode(ctx, {
65
- provider: provider.id,
66
- accountId: args.accountId,
67
- email: args.params?.email,
68
- phone: args.params?.phone,
69
- code,
70
- expirationTime,
71
- allowExtraProviders: options.allowExtraProviders
72
- }),
73
- url: setURLSearchParam(await redirectAbsoluteUrl(ctx.auth.config, args.params ?? {}), "code", code),
74
- token: code,
75
- expires: new Date(expirationTime)
76
- };
77
- if (provider.type === "email") await provider.sendVerificationRequest({
78
- ...verificationArgs,
79
- provider,
80
- request: new Request("http://localhost")
81
- }, ctx);
82
- else if (provider.type === "phone") await provider.sendVerificationRequest({
83
- ...verificationArgs,
84
- provider
85
- }, ctx);
86
- return {
87
- kind: "started",
88
- started: true
89
- };
90
- }
91
- async function handleCredentials(ctx, provider, args, options) {
92
- const result = await provider.authorize(args.params ?? {}, ctx);
93
- if (result === null) return {
94
- kind: "signedIn",
95
- signedIn: null
96
- };
97
- if (await checkTotpRequired(ctx, result.userId)) {
98
- await callSignIn(ctx, {
99
- userId: result.userId,
100
- sessionId: result.sessionId,
101
- generateTokens: false
102
- });
103
- const verifier = await callVerifier(ctx);
104
- await callVerifierSignature(ctx, {
105
- verifier,
106
- signature: JSON.stringify({ userId: result.userId })
107
- });
108
- return {
109
- kind: "totpRequired",
110
- verifier
111
- };
112
- }
113
- return {
114
- kind: "signedIn",
115
- signedIn: await callSignIn(ctx, {
116
- userId: result.userId,
117
- sessionId: result.sessionId,
118
- generateTokens: options.generateTokens
119
- })
120
- };
121
- }
122
- async function handleOAuthProvider(ctx, provider, args, options) {
123
- if (args.params?.code !== void 0) return {
124
- kind: "signedIn",
125
- signedIn: await callVerifyCodeAndSignIn(ctx, {
126
- params: args.params,
127
- verifier: args.verifier,
128
- generateTokens: true,
129
- allowExtraProviders: options.allowExtraProviders
130
- })
131
- };
132
- const redirect = new URL((process.env.CUSTOM_AUTH_SITE_URL ?? requireEnv("CONVEX_SITE_URL")) + `/api/auth/signin/${provider.id}`);
133
- const verifier = await callVerifier(ctx);
134
- redirect.searchParams.set("code", verifier);
135
- if (args.params?.redirectTo !== void 0) {
136
- if (typeof args.params.redirectTo !== "string") throwAuthError("INVALID_REDIRECT", `Expected \`redirectTo\` to be a string, got ${args.params.redirectTo}`);
137
- redirect.searchParams.set("redirectTo", args.params.redirectTo);
138
- }
139
- return {
140
- kind: "redirect",
141
- redirect: redirect.toString(),
142
- verifier
143
- };
144
- }
145
-
146
- //#endregion
147
- export { signInImpl };
148
- //# sourceMappingURL=signin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"signin.js","names":[],"sources":["../../../src/server/implementation/signin.ts"],"sourcesContent":["import { GenericId } from \"convex/values\";\nimport {\n AuthProviderMaterializedConfig,\n ConvexCredentialsConfig,\n EmailConfig,\n GenericActionCtxWithAuthConfig,\n PhoneConfig,\n} from \"../types\";\nimport {\n AuthDataModel,\n SessionInfo,\n SessionInfoWithTokens,\n Tokens,\n} from \"./types\";\nimport {\n callCreateVerificationCode,\n callRefreshSession,\n callSignIn,\n callVerifier,\n callVerifierSignature,\n callVerifyCodeAndSignIn,\n} from \"./mutations/index\";\nimport { redirectAbsoluteUrl, setURLSearchParam } from \"./redirects\";\nimport { requireEnv } from \"../utils\";\nimport type { OAuthMaterializedConfig } from \"../types\";\nimport { generateRandomString } from \"./utils\";\nimport { handlePasskey } from \"./passkey\";\nimport { handleTotp, checkTotpRequired } from \"./totp\";\nimport { handleDevice } from \"./device\";\nimport { throwAuthError } from \"../errors\";\n\nconst DEFAULT_EMAIL_VERIFICATION_CODE_DURATION_S = 60 * 60 * 24; // 24 hours\n\ntype EnrichedActionCtx = GenericActionCtxWithAuthConfig<AuthDataModel>;\n\nexport async function signInImpl(\n ctx: EnrichedActionCtx,\n provider: AuthProviderMaterializedConfig | null,\n args: {\n accountId?: GenericId<\"account\">;\n params?: Record<string, any>;\n verifier?: string;\n refreshToken?: string;\n calledBy?: string;\n },\n options: {\n generateTokens: boolean;\n allowExtraProviders: boolean;\n },\n): Promise<\n | { kind: \"signedIn\"; signedIn: SessionInfo | null }\n // refresh tokens\n | { kind: \"refreshTokens\"; signedIn: { tokens: Tokens } }\n // Multi-step flows like magic link + OTP\n | { kind: \"started\"; started: true }\n // OAuth flows\n | { kind: \"redirect\"; redirect: string; verifier: string }\n // Passkey options (challenge + credential options)\n | { kind: \"passkeyOptions\"; options: Record<string, any>; verifier: string }\n // TOTP 2FA required after credentials sign-in\n | { kind: \"totpRequired\"; verifier: string }\n // TOTP setup response (enrollment)\n | { kind: \"totpSetup\"; uri: string; secret: string; verifier: string; totpId: string }\n // Device authorization (RFC 8628) — codes for the device to display\n | {\n kind: \"deviceCode\";\n deviceCode: string;\n userCode: string;\n verificationUri: string;\n verificationUriComplete: string;\n expiresIn: number;\n interval: number;\n }\n> {\n if (provider === null && args.refreshToken) {\n const tokens = await callRefreshSession(ctx, {\n refreshToken: args.refreshToken,\n });\n if (tokens === null) {\n return { kind: \"signedIn\", signedIn: null };\n }\n return { kind: \"refreshTokens\", signedIn: { tokens } };\n }\n if (provider === null && args.params?.code !== undefined) {\n const result = await callVerifyCodeAndSignIn(ctx, {\n params: args.params,\n verifier: args.verifier,\n generateTokens: true,\n allowExtraProviders: options.allowExtraProviders,\n });\n return {\n kind: \"signedIn\",\n signedIn: result,\n };\n }\n\n if (provider === null) {\n throwAuthError(\"SIGN_IN_MISSING_PARAMS\");\n }\n if (provider.type === \"email\" || provider.type === \"phone\") {\n return handleEmailAndPhoneProvider(ctx, provider, args, options);\n }\n if (provider.type === \"credentials\") {\n return handleCredentials(ctx, provider, args, options);\n }\n if (provider.type === \"oauth\") {\n return handleOAuthProvider(ctx, provider, args, options);\n }\n if (provider.type === \"passkey\") {\n return handlePasskey(ctx, provider, args);\n }\n if (provider.type === \"totp\") {\n return handleTotp(ctx, provider, args);\n }\n if (provider.type === \"device\") {\n return handleDevice(ctx, provider, args);\n }\n const _typecheck: never = provider;\n throwAuthError(\n \"UNSUPPORTED_PROVIDER_TYPE\",\n `Provider type ${(provider as any).type} is not supported yet`,\n );\n}\n\nasync function handleEmailAndPhoneProvider(\n ctx: EnrichedActionCtx,\n provider: EmailConfig | PhoneConfig,\n args: {\n params?: Record<string, any>;\n accountId?: GenericId<\"account\">;\n },\n options: {\n generateTokens: boolean;\n allowExtraProviders: boolean;\n },\n): Promise<\n | { kind: \"started\"; started: true }\n | { kind: \"signedIn\"; signedIn: SessionInfoWithTokens }\n> {\n if (args.params?.code !== undefined) {\n const result = await callVerifyCodeAndSignIn(ctx, {\n params: args.params,\n provider: provider.id,\n generateTokens: options.generateTokens,\n allowExtraProviders: options.allowExtraProviders,\n });\n if (result === null) {\n throwAuthError(\"INVALID_VERIFICATION_CODE\");\n }\n return {\n kind: \"signedIn\",\n signedIn: result as SessionInfoWithTokens,\n };\n }\n\n const alphabet =\n \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\n const code = provider.generateVerificationToken\n ? await provider.generateVerificationToken()\n : generateRandomString(32, alphabet);\n const expirationTime =\n Date.now() +\n (provider.maxAge ?? DEFAULT_EMAIL_VERIFICATION_CODE_DURATION_S) * 1000;\n\n const identifier = await callCreateVerificationCode(ctx, {\n provider: provider.id,\n accountId: args.accountId,\n email: args.params?.email,\n phone: args.params?.phone,\n code,\n expirationTime,\n allowExtraProviders: options.allowExtraProviders,\n });\n const destination = await redirectAbsoluteUrl(\n ctx.auth.config,\n (args.params ?? {}) as { redirectTo: unknown },\n );\n const verificationArgs = {\n identifier,\n url: setURLSearchParam(destination, \"code\", code),\n token: code,\n expires: new Date(expirationTime),\n };\n if (provider.type === \"email\") {\n await provider.sendVerificationRequest(\n {\n ...verificationArgs,\n provider,\n request: new Request(\"http://localhost\"),\n },\n ctx,\n );\n } else if (provider.type === \"phone\") {\n await provider.sendVerificationRequest(\n { ...verificationArgs, provider },\n ctx,\n );\n }\n return { kind: \"started\", started: true };\n}\n\nasync function handleCredentials(\n ctx: EnrichedActionCtx,\n provider: ConvexCredentialsConfig,\n args: {\n params?: Record<string, any>;\n },\n options: {\n generateTokens: boolean;\n },\n): Promise<\n | { kind: \"signedIn\"; signedIn: SessionInfo | null }\n | { kind: \"totpRequired\"; verifier: string }\n> {\n const result = await provider.authorize(args.params ?? {}, ctx);\n if (result === null) {\n return { kind: \"signedIn\", signedIn: null };\n }\n // Check if user has TOTP 2FA enrolled before issuing tokens\n const hasTotpEnrolled = await checkTotpRequired(ctx, result.userId);\n if (hasTotpEnrolled) {\n // Create session but withhold tokens — TOTP verification needed\n await callSignIn(ctx, {\n userId: result.userId,\n sessionId: result.sessionId,\n generateTokens: false,\n });\n // Store userId in verifier so the TOTP verify flow can complete sign-in\n const verifier = await callVerifier(ctx);\n await callVerifierSignature(ctx, {\n verifier,\n signature: JSON.stringify({ userId: result.userId }),\n });\n return { kind: \"totpRequired\", verifier };\n }\n\n const idsAndTokens = await callSignIn(ctx, {\n userId: result.userId,\n sessionId: result.sessionId,\n generateTokens: options.generateTokens,\n });\n return {\n kind: \"signedIn\",\n signedIn: idsAndTokens,\n };\n}\n\nasync function handleOAuthProvider(\n ctx: EnrichedActionCtx,\n provider: OAuthMaterializedConfig,\n args: {\n params?: Record<string, any>;\n verifier?: string;\n },\n options: {\n allowExtraProviders: boolean;\n },\n): Promise<\n | { kind: \"signedIn\"; signedIn: SessionInfoWithTokens | null }\n | { kind: \"redirect\"; redirect: string; verifier: string }\n> {\n // We have this action because:\n // 1. We remember the current sessionId if any, so we can link accounts\n // 2. The client doesn't need to know the HTTP Actions URL\n // of the backend (this simplifies using local backend)\n // 3. The client doesn't need to know which provider is of which type,\n // and hence which provider requires client-side redirect\n // 4. On mobile the client can complete the flow manually\n if (args.params?.code !== undefined) {\n const result = await callVerifyCodeAndSignIn(ctx, {\n params: args.params,\n verifier: args.verifier,\n generateTokens: true,\n allowExtraProviders: options.allowExtraProviders,\n });\n return {\n kind: \"signedIn\",\n signedIn: result as SessionInfoWithTokens | null,\n };\n }\n const redirect = new URL(\n (process.env.CUSTOM_AUTH_SITE_URL ?? requireEnv(\"CONVEX_SITE_URL\")) + `/api/auth/signin/${provider.id}`,\n );\n const verifier = await callVerifier(ctx);\n redirect.searchParams.set(\"code\", verifier);\n if (args.params?.redirectTo !== undefined) {\n if (typeof args.params.redirectTo !== \"string\") {\n throwAuthError(\n \"INVALID_REDIRECT\",\n `Expected \\`redirectTo\\` to be a string, got ${args.params.redirectTo}`,\n );\n }\n redirect.searchParams.set(\"redirectTo\", args.params.redirectTo);\n }\n return { kind: \"redirect\", redirect: redirect.toString(), verifier };\n}\n"],"mappings":";;;;;;;;;;;;;;;AA+BA,MAAM,6CAA6C,OAAU;AAI7D,eAAsB,WACpB,KACA,UACA,MAOA,SA4BA;AACA,KAAI,aAAa,QAAQ,KAAK,cAAc;EAC1C,MAAM,SAAS,MAAM,mBAAmB,KAAK,EAC3C,cAAc,KAAK,cACpB,CAAC;AACF,MAAI,WAAW,KACb,QAAO;GAAE,MAAM;GAAY,UAAU;GAAM;AAE7C,SAAO;GAAE,MAAM;GAAiB,UAAU,EAAE,QAAQ;GAAE;;AAExD,KAAI,aAAa,QAAQ,KAAK,QAAQ,SAAS,OAO7C,QAAO;EACL,MAAM;EACN,UARa,MAAM,wBAAwB,KAAK;GAChD,QAAQ,KAAK;GACb,UAAU,KAAK;GACf,gBAAgB;GAChB,qBAAqB,QAAQ;GAC9B,CAAC;EAID;AAGH,KAAI,aAAa,KACf,gBAAe,yBAAyB;AAE1C,KAAI,SAAS,SAAS,WAAW,SAAS,SAAS,QACjD,QAAO,4BAA4B,KAAK,UAAU,MAAM,QAAQ;AAElE,KAAI,SAAS,SAAS,cACpB,QAAO,kBAAkB,KAAK,UAAU,MAAM,QAAQ;AAExD,KAAI,SAAS,SAAS,QACpB,QAAO,oBAAoB,KAAK,UAAU,MAAM,QAAQ;AAE1D,KAAI,SAAS,SAAS,UACpB,QAAO,cAAc,KAAK,UAAU,KAAK;AAE3C,KAAI,SAAS,SAAS,OACpB,QAAO,WAAW,KAAK,UAAU,KAAK;AAExC,KAAI,SAAS,SAAS,SACpB,QAAO,aAAa,KAAK,UAAU,KAAK;AAG1C,gBACE,6BACA,iBAAkB,SAAiB,KAAK,uBACzC;;AAGH,eAAe,4BACb,KACA,UACA,MAIA,SAOA;AACA,KAAI,KAAK,QAAQ,SAAS,QAAW;EACnC,MAAM,SAAS,MAAM,wBAAwB,KAAK;GAChD,QAAQ,KAAK;GACb,UAAU,SAAS;GACnB,gBAAgB,QAAQ;GACxB,qBAAqB,QAAQ;GAC9B,CAAC;AACF,MAAI,WAAW,KACb,gBAAe,4BAA4B;AAE7C,SAAO;GACL,MAAM;GACN,UAAU;GACX;;CAKH,MAAM,OAAO,SAAS,4BAClB,MAAM,SAAS,2BAA2B,GAC1C,qBAAqB,IAHvB,iEAGoC;CACtC,MAAM,iBACJ,KAAK,KAAK,IACT,SAAS,UAAU,8CAA8C;CAepE,MAAM,mBAAmB;EACvB,YAdiB,MAAM,2BAA2B,KAAK;GACvD,UAAU,SAAS;GACnB,WAAW,KAAK;GAChB,OAAO,KAAK,QAAQ;GACpB,OAAO,KAAK,QAAQ;GACpB;GACA;GACA,qBAAqB,QAAQ;GAC9B,CAAC;EAOA,KAAK,kBANa,MAAM,oBACxB,IAAI,KAAK,QACR,KAAK,UAAU,EAAE,CACnB,EAGqC,QAAQ,KAAK;EACjD,OAAO;EACP,SAAS,IAAI,KAAK,eAAe;EAClC;AACD,KAAI,SAAS,SAAS,QACpB,OAAM,SAAS,wBACb;EACE,GAAG;EACH;EACA,SAAS,IAAI,QAAQ,mBAAmB;EACzC,EACD,IACD;UACQ,SAAS,SAAS,QAC3B,OAAM,SAAS,wBACb;EAAE,GAAG;EAAkB;EAAU,EACjC,IACD;AAEH,QAAO;EAAE,MAAM;EAAW,SAAS;EAAM;;AAG3C,eAAe,kBACb,KACA,UACA,MAGA,SAMA;CACA,MAAM,SAAS,MAAM,SAAS,UAAU,KAAK,UAAU,EAAE,EAAE,IAAI;AAC/D,KAAI,WAAW,KACb,QAAO;EAAE,MAAM;EAAY,UAAU;EAAM;AAI7C,KADwB,MAAM,kBAAkB,KAAK,OAAO,OAAO,EAC9C;AAEnB,QAAM,WAAW,KAAK;GACpB,QAAQ,OAAO;GACf,WAAW,OAAO;GAClB,gBAAgB;GACjB,CAAC;EAEF,MAAM,WAAW,MAAM,aAAa,IAAI;AACxC,QAAM,sBAAsB,KAAK;GAC/B;GACA,WAAW,KAAK,UAAU,EAAE,QAAQ,OAAO,QAAQ,CAAC;GACrD,CAAC;AACF,SAAO;GAAE,MAAM;GAAgB;GAAU;;AAQ3C,QAAO;EACL,MAAM;EACN,UAPmB,MAAM,WAAW,KAAK;GACzC,QAAQ,OAAO;GACf,WAAW,OAAO;GAClB,gBAAgB,QAAQ;GACzB,CAAC;EAID;;AAGH,eAAe,oBACb,KACA,UACA,MAIA,SAMA;AAQA,KAAI,KAAK,QAAQ,SAAS,OAOxB,QAAO;EACL,MAAM;EACN,UARa,MAAM,wBAAwB,KAAK;GAChD,QAAQ,KAAK;GACb,UAAU,KAAK;GACf,gBAAgB;GAChB,qBAAqB,QAAQ;GAC9B,CAAC;EAID;CAEH,MAAM,WAAW,IAAI,KAClB,QAAQ,IAAI,wBAAwB,WAAW,kBAAkB,IAAI,oBAAoB,SAAS,KACpG;CACD,MAAM,WAAW,MAAM,aAAa,IAAI;AACxC,UAAS,aAAa,IAAI,QAAQ,SAAS;AAC3C,KAAI,KAAK,QAAQ,eAAe,QAAW;AACzC,MAAI,OAAO,KAAK,OAAO,eAAe,SACpC,gBACE,oBACA,+CAA+C,KAAK,OAAO,aAC5D;AAEH,WAAS,aAAa,IAAI,cAAc,KAAK,OAAO,WAAW;;AAEjE,QAAO;EAAE,MAAM;EAAY,UAAU,SAAS,UAAU;EAAE;EAAU"}
@@ -1,11 +0,0 @@
1
- import { ConvexAuthConfig } from "../types.js";
2
- import { GenericId } from "convex/values";
3
-
4
- //#region src/server/implementation/tokens.d.ts
5
- declare function generateToken(args: {
6
- userId: GenericId<"user">;
7
- sessionId: GenericId<"session">;
8
- }, config: ConvexAuthConfig): Promise<string>;
9
- //#endregion
10
- export { generateToken };
11
- //# sourceMappingURL=tokens.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tokens.d.ts","names":[],"sources":["../../../src/server/implementation/tokens.ts"],"mappings":";;;;iBAQsB,aAAA,CACpB,IAAA;EACE,MAAA,EAAQ,SAAA;EACR,SAAA,EAAW,SAAA;AAAA,GAEb,MAAA,EAAQ,gBAAA,GAAgB,OAAA"}
@@ -1,15 +0,0 @@
1
- import { requireEnv } from "../utils.js";
2
- import { TOKEN_SUB_CLAIM_DIVIDER } from "./utils.js";
3
- import { SignJWT, importPKCS8 } from "jose";
4
-
5
- //#region src/server/implementation/tokens.ts
6
- const DEFAULT_JWT_DURATION_MS = 1e3 * 60 * 60;
7
- async function generateToken(args, config) {
8
- const privateKey = await importPKCS8(requireEnv("JWT_PRIVATE_KEY"), "RS256");
9
- const expirationTime = new Date(Date.now() + (config.jwt?.durationMs ?? DEFAULT_JWT_DURATION_MS));
10
- return await new SignJWT({ sub: args.userId + TOKEN_SUB_CLAIM_DIVIDER + args.sessionId }).setProtectedHeader({ alg: "RS256" }).setIssuedAt().setIssuer(requireEnv("CONVEX_SITE_URL")).setAudience("convex").setExpirationTime(expirationTime).sign(privateKey);
11
- }
12
-
13
- //#endregion
14
- export { generateToken };
15
- //# sourceMappingURL=tokens.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tokens.js","names":[],"sources":["../../../src/server/implementation/tokens.ts"],"sourcesContent":["import { GenericId } from \"convex/values\";\nimport { ConvexAuthConfig } from \"../types\";\nimport { SignJWT, importPKCS8 } from \"jose\";\nimport { requireEnv } from \"../utils\";\nimport { TOKEN_SUB_CLAIM_DIVIDER } from \"./utils\";\n\nconst DEFAULT_JWT_DURATION_MS = 1000 * 60 * 60; // 1 hour\n\nexport async function generateToken(\n args: {\n userId: GenericId<\"user\">;\n sessionId: GenericId<\"session\">;\n },\n config: ConvexAuthConfig,\n) {\n const privateKey = await importPKCS8(requireEnv(\"JWT_PRIVATE_KEY\"), \"RS256\");\n const expirationTime = new Date(\n Date.now() + (config.jwt?.durationMs ?? DEFAULT_JWT_DURATION_MS),\n );\n return await new SignJWT({\n sub: args.userId + TOKEN_SUB_CLAIM_DIVIDER + args.sessionId,\n })\n .setProtectedHeader({ alg: \"RS256\" })\n .setIssuedAt()\n .setIssuer(requireEnv(\"CONVEX_SITE_URL\"))\n .setAudience(\"convex\")\n .setExpirationTime(expirationTime)\n .sign(privateKey);\n}\n"],"mappings":";;;;;AAMA,MAAM,0BAA0B,MAAO,KAAK;AAE5C,eAAsB,cACpB,MAIA,QACA;CACA,MAAM,aAAa,MAAM,YAAY,WAAW,kBAAkB,EAAE,QAAQ;CAC5E,MAAM,iBAAiB,IAAI,KACzB,KAAK,KAAK,IAAI,OAAO,KAAK,cAAc,yBACzC;AACD,QAAO,MAAM,IAAI,QAAQ,EACvB,KAAK,KAAK,SAAS,0BAA0B,KAAK,WACnD,CAAC,CACC,mBAAmB,EAAE,KAAK,SAAS,CAAC,CACpC,aAAa,CACb,UAAU,WAAW,kBAAkB,CAAC,CACxC,YAAY,SAAS,CACrB,kBAAkB,eAAe,CACjC,KAAK,WAAW"}
@@ -1,31 +0,0 @@
1
- import { AuthDataModel, SessionInfo } from "./types.js";
2
- import { GenericActionCtxWithAuthConfig, TotpProviderConfig } from "../types.js";
3
-
4
- //#region src/server/implementation/totp.d.ts
5
- type EnrichedActionCtx = GenericActionCtxWithAuthConfig<AuthDataModel>;
6
- /**
7
- * Main TOTP handler dispatched from signIn.ts.
8
- *
9
- * Routes to the appropriate phase based on `params.flow`.
10
- */
11
- declare function handleTotp(ctx: EnrichedActionCtx, provider: TotpProviderConfig, args: {
12
- params?: Record<string, any>;
13
- verifier?: string;
14
- }): Promise<{
15
- kind: "signedIn";
16
- signedIn: SessionInfo | null;
17
- } | {
18
- kind: "totpSetup";
19
- uri: string;
20
- secret: string;
21
- verifier: string;
22
- totpId: string;
23
- }>;
24
- /**
25
- * Check if a user has a verified TOTP enrollment.
26
- * Called after credentials sign-in to determine if 2FA is needed.
27
- */
28
- declare function checkTotpRequired(ctx: EnrichedActionCtx, userId: string): Promise<boolean>;
29
- //#endregion
30
- export { checkTotpRequired, handleTotp };
31
- //# sourceMappingURL=totp.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"totp.d.ts","names":[],"sources":["../../../src/server/implementation/totp.ts"],"mappings":";;;;KAsCK,iBAAA,GAAoB,8BAAA,CAA+B,aAAA;;;;;;iBA+OlC,UAAA,CACpB,GAAA,EAAK,iBAAA,EACL,QAAA,EAAU,kBAAA,EACV,IAAA;EACE,MAAA,GAAS,MAAA;EACT,QAAA;AAAA,IAED,OAAA;EACG,IAAA;EAAkB,QAAA,EAAU,WAAA;AAAA;EAE5B,IAAA;EACA,GAAA;EACA,MAAA;EACA,QAAA;EACA,MAAA;AAAA;;;;;iBA4CgB,iBAAA,CACpB,GAAA,EAAK,iBAAA,EACL,MAAA,WACC,OAAA"}