@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
@@ -0,0 +1,409 @@
1
+ import { ConvexError, v } from "convex/values";
2
+ import type { Id } from "../../_generated/dataModel";
3
+ import { mutation, query } from "../../functions";
4
+ import { vGroupMemberDoc, vPaginated } from "../../model";
5
+
6
+ /**
7
+ * Add a user as a member of a group.
8
+ *
9
+ * The `roleIds` field stores application-defined role identifiers. The auth
10
+ * component stores assignments but does not enforce access control — your
11
+ * application defines what each role means.
12
+ *
13
+ * Throws `ConvexError` with code `DUPLICATE_MEMBERSHIP` when the user is
14
+ * already a member of the target group. The duplicate check uses the
15
+ * `group_id_user_id` compound index for an exact match.
16
+ *
17
+ * @param args.groupId - The `Id<"Group">` of the group to add the user to.
18
+ * @param args.userId - The `Id<"User">` of the user to add as a member.
19
+ * @param args.roleIds - Optional array of application-defined role identifiers (e.g. `["admin", "editor"]`).
20
+ * @param args.status - Optional membership status string (e.g. `"active"`, `"suspended"`). Defaults to whatever your application convention is.
21
+ * @param args.extend - Optional arbitrary payload for application-specific metadata on the membership.
22
+ * @returns The `Id<"GroupMember">` of the newly created member document.
23
+ * @throws `ConvexError` with code `DUPLICATE_MEMBERSHIP` if the user is already a member of this group.
24
+ *
25
+ * @example
26
+ * ```ts
27
+ * const memberId = await ctx.runMutation(
28
+ * components.auth.groups.memberAdd,
29
+ * {
30
+ * groupId: teamGroupId,
31
+ * userId: newUserId,
32
+ * roleIds: ["viewer"],
33
+ * status: "active",
34
+ * },
35
+ * );
36
+ * ```
37
+ */
38
+ export const memberAdd = mutation({
39
+ args: {
40
+ groupId: v.id("Group"),
41
+ userId: v.id("User"),
42
+ roleIds: v.optional(v.array(v.string())),
43
+ status: v.optional(v.string()),
44
+ extend: v.optional(v.any()),
45
+ },
46
+ returns: v.id("GroupMember"),
47
+ handler: async (ctx, args) => {
48
+ const existingMembership = await ctx.db
49
+ .query("GroupMember")
50
+ .withIndex("group_id_user_id", (q) =>
51
+ q.eq("groupId", args.groupId).eq("userId", args.userId),
52
+ )
53
+ .unique();
54
+ if (existingMembership !== null) {
55
+ throw new ConvexError({
56
+ code: "DUPLICATE_MEMBERSHIP",
57
+ message: "User is already a member of this group",
58
+ groupId: args.groupId,
59
+ userId: args.userId,
60
+ existingMemberId: existingMembership._id,
61
+ });
62
+ }
63
+ return await ctx.db.insert("GroupMember", args);
64
+ },
65
+ });
66
+
67
+ /**
68
+ * Retrieve a member record by its document ID.
69
+ *
70
+ * Performs a direct lookup in the `GroupMember` table and returns the full
71
+ * member document, or `null` if no member exists with the given ID.
72
+ *
73
+ * @param args.memberId - The `Id<"GroupMember">` of the member record to retrieve.
74
+ * @returns The member document (including `groupId`, `userId`, `roleIds`, `status`, etc.) or `null` if not found.
75
+ *
76
+ * @example
77
+ * ```ts
78
+ * const member = await ctx.runQuery(components.auth.groups.memberGet, {
79
+ * memberId: existingMemberId,
80
+ * });
81
+ * if (member !== null) {
82
+ * console.log(member.userId, member.roleIds);
83
+ * }
84
+ * ```
85
+ */
86
+ export const memberGet = query({
87
+ args: { memberId: v.id("GroupMember") },
88
+ returns: v.union(vGroupMemberDoc, v.null()),
89
+ handler: async (ctx, { memberId }) => {
90
+ return await ctx.db.get("GroupMember", memberId);
91
+ },
92
+ });
93
+
94
+ /**
95
+ * List members with optional filtering, sorting, and pagination.
96
+ *
97
+ * Returns `{ items, nextCursor }`. Supports filtering by `groupId`,
98
+ * `userId`, `roleId`, and `status`. The query engine automatically selects
99
+ * the best compound index based on the combination of filter fields
100
+ * provided. The `roleId` filter is applied in-memory after the index scan
101
+ * because role IDs are stored as an array.
102
+ *
103
+ * @param args.where - Optional filter criteria for narrowing results.
104
+ * @param args.where.groupId - Match members belonging to this group.
105
+ * @param args.where.userId - Match members for this specific user.
106
+ * @param args.where.roleId - Match members whose `roleIds` array includes this role identifier.
107
+ * @param args.where.status - Match members with this exact status string (e.g. `"active"`).
108
+ * @param args.limit - Maximum number of items per page (clamped to 1..100, defaults to 50).
109
+ * @param args.cursor - An opaque cursor string from a previous response's `nextCursor` to fetch the next page, or `null` to start from the beginning.
110
+ * @param args.orderBy - The field to sort by: `"_creationTime"` or `"status"`.
111
+ * @param args.order - Sort direction: `"asc"` or `"desc"` (defaults to `"desc"`).
112
+ * @returns An object `{ items, nextCursor }` where `items` is an array of member documents and `nextCursor` is `null` when there are no more pages.
113
+ *
114
+ * @example
115
+ * ```ts
116
+ * const { items, nextCursor } = await ctx.runQuery(
117
+ * components.auth.groups.memberList,
118
+ * {
119
+ * where: { groupId: teamGroupId, status: "active" },
120
+ * limit: 30,
121
+ * order: "asc",
122
+ * },
123
+ * );
124
+ * ```
125
+ */
126
+ export const memberList = query({
127
+ args: {
128
+ where: v.optional(
129
+ v.object({
130
+ groupId: v.optional(v.id("Group")),
131
+ userId: v.optional(v.id("User")),
132
+ roleId: v.optional(v.string()),
133
+ status: v.optional(v.string()),
134
+ }),
135
+ ),
136
+ limit: v.optional(v.number()),
137
+ cursor: v.optional(v.union(v.string(), v.null())),
138
+ orderBy: v.optional(
139
+ v.union(v.literal("_creationTime"), v.literal("status")),
140
+ ),
141
+ order: v.optional(v.union(v.literal("asc"), v.literal("desc"))),
142
+ },
143
+ returns: vPaginated(vGroupMemberDoc),
144
+ handler: async (ctx, args) => {
145
+ const where = args.where ?? {};
146
+ const limit = Math.min(Math.max(args.limit ?? 50, 1), 100);
147
+ const order = args.order ?? "desc";
148
+
149
+ let q;
150
+ if (where.groupId !== undefined && where.userId !== undefined) {
151
+ q = ctx.db
152
+ .query("GroupMember")
153
+ .withIndex("group_id_user_id", (idx) =>
154
+ idx.eq("groupId", where.groupId!).eq("userId", where.userId!),
155
+ );
156
+ if (where.status !== undefined) {
157
+ q = q.filter((f) => f.eq(f.field("status"), where.status!));
158
+ }
159
+ } else if (where.groupId !== undefined && where.status !== undefined) {
160
+ q = ctx.db
161
+ .query("GroupMember")
162
+ .withIndex("group_id_status", (idx) =>
163
+ idx.eq("groupId", where.groupId!).eq("status", where.status!),
164
+ );
165
+ } else if (where.groupId !== undefined) {
166
+ q = ctx.db
167
+ .query("GroupMember")
168
+ .withIndex("group_id", (idx) => idx.eq("groupId", where.groupId!));
169
+ } else if (where.userId !== undefined) {
170
+ q = ctx.db
171
+ .query("GroupMember")
172
+ .withIndex("user_id", (idx) => idx.eq("userId", where.userId!));
173
+ if (where.status !== undefined) {
174
+ q = q.filter((f) => f.eq(f.field("status"), where.status!));
175
+ }
176
+ } else {
177
+ q = ctx.db.query("GroupMember");
178
+ if (where.status !== undefined) {
179
+ q = q.filter((f) => f.eq(f.field("status"), where.status!));
180
+ }
181
+ }
182
+
183
+ q = q.order(order);
184
+
185
+ let all = await q.collect();
186
+ if (where.roleId !== undefined) {
187
+ all = all.filter((doc) => (doc.roleIds ?? []).includes(where.roleId!));
188
+ }
189
+ let startIdx = 0;
190
+ if (args.cursor) {
191
+ const cursorIdx = all.findIndex((doc) => doc._id === args.cursor);
192
+ if (cursorIdx !== -1) {
193
+ startIdx = cursorIdx + 1;
194
+ }
195
+ }
196
+ const page = all.slice(startIdx, startIdx + limit + 1);
197
+ const hasMore = page.length > limit;
198
+ const items = hasMore ? page.slice(0, limit) : page;
199
+ const nextCursor = hasMore ? items[items.length - 1]._id : null;
200
+ return { items, nextCursor };
201
+ },
202
+ });
203
+
204
+ /**
205
+ * Look up a specific user's membership in a specific group.
206
+ *
207
+ * Uses the `group_id_user_id` compound index for an efficient exact-match
208
+ * lookup. Returns `null` if the user is not a member of the group. Unlike
209
+ * {@link memberResolve}, this does **not** walk the group hierarchy — it
210
+ * checks only the specified group.
211
+ *
212
+ * @param args.groupId - The `Id<"Group">` of the group to check.
213
+ * @param args.userId - The `Id<"User">` of the user whose membership to look up.
214
+ * @returns The member document or `null` if the user is not a direct member of the group.
215
+ *
216
+ * @example
217
+ * ```ts
218
+ * const member = await ctx.runQuery(
219
+ * components.auth.groups.memberGetByGroupAndUser,
220
+ * { groupId: teamGroupId, userId: currentUserId },
221
+ * );
222
+ * if (member !== null) {
223
+ * console.log("User has roles:", member.roleIds);
224
+ * }
225
+ * ```
226
+ */
227
+ export const memberGetByGroupAndUser = query({
228
+ args: { groupId: v.id("Group"), userId: v.id("User") },
229
+ returns: v.union(vGroupMemberDoc, v.null()),
230
+ handler: async (ctx, { groupId, userId }) => {
231
+ return await ctx.db
232
+ .query("GroupMember")
233
+ .withIndex("group_id_user_id", (q) =>
234
+ q.eq("groupId", groupId).eq("userId", userId),
235
+ )
236
+ .unique();
237
+ },
238
+ });
239
+
240
+ /**
241
+ * Resolve a user's membership by walking the group hierarchy from the
242
+ * requested group up to the root. Returns the first matching membership
243
+ * found, enabling inherited (ancestor-level) access checks.
244
+ *
245
+ * The traversal walks from `groupId` to its `parentGroupId`, then to the
246
+ * parent's parent, and so on, up to `maxDepth` levels (default 32). It
247
+ * stops at the first group where the user has a membership record. Cycle
248
+ * detection prevents infinite loops if the hierarchy is malformed.
249
+ *
250
+ * When `ancestry` is `true`, the response includes a `traversedGroupIds`
251
+ * array showing the full path that was walked (useful for debugging or
252
+ * audit trails).
253
+ *
254
+ * This runs entirely inside the component (no cross-component RPCs per level).
255
+ *
256
+ * @param args.userId - The `Id<"User">` of the user whose membership to resolve.
257
+ * @param args.groupId - The `Id<"Group">` to start the upward traversal from.
258
+ * @param args.maxDepth - Optional maximum number of parent levels to traverse (defaults to 32). Set to `0` to check only the exact group.
259
+ * @param args.ancestry - When `true`, the response includes the `traversedGroupIds` array showing all group IDs visited during the walk.
260
+ * @returns An object with:
261
+ * - `membership` — the member document at the matched group, or `null` if none was found.
262
+ * - `matchedGroupId` — the ID of the group where membership was found, or `null`.
263
+ * - `depth` — how many levels above `groupId` the match was found (0 = direct), or `null` if not found.
264
+ * - `isDirect` — `true` when `depth === 0`.
265
+ * - `isInherited` — `true` when `depth > 0`.
266
+ * - `traversedGroupIds` — (only when `ancestry` is `true`) array of group IDs visited.
267
+ *
268
+ * @example
269
+ * ```ts
270
+ * const result = await ctx.runQuery(
271
+ * components.auth.groups.memberResolve,
272
+ * {
273
+ * userId: currentUserId,
274
+ * groupId: subTeamGroupId,
275
+ * maxDepth: 5,
276
+ * ancestry: true,
277
+ * },
278
+ * );
279
+ * if (result.membership !== null) {
280
+ * console.log(
281
+ * result.isDirect ? "Direct member" : `Inherited from depth ${result.depth}`,
282
+ * );
283
+ * }
284
+ * ```
285
+ */
286
+ export const memberResolve = query({
287
+ args: {
288
+ userId: v.id("User"),
289
+ groupId: v.id("Group"),
290
+ maxDepth: v.optional(v.number()),
291
+ ancestry: v.optional(v.boolean()),
292
+ },
293
+ returns: v.object({
294
+ membership: v.union(vGroupMemberDoc, v.null()),
295
+ matchedGroupId: v.union(v.id("Group"), v.null()),
296
+ depth: v.union(v.number(), v.null()),
297
+ isDirect: v.boolean(),
298
+ isInherited: v.boolean(),
299
+ traversedGroupIds: v.optional(v.array(v.id("Group"))),
300
+ }),
301
+ handler: async (ctx, args) => {
302
+ const maxDepth = Math.max(0, Math.floor(args.maxDepth ?? 32));
303
+ const includeAncestry = args.ancestry ?? false;
304
+ const visited = new Set<string>();
305
+ const traversedGroupIds: Id<"Group">[] = [];
306
+ let currentGroupId: Id<"Group"> | undefined = args.groupId;
307
+ let depth = 0;
308
+
309
+ while (currentGroupId !== undefined && depth <= maxDepth) {
310
+ if (visited.has(currentGroupId)) break;
311
+ visited.add(currentGroupId);
312
+ if (includeAncestry) traversedGroupIds.push(currentGroupId);
313
+
314
+ const membership = await ctx.db
315
+ .query("GroupMember")
316
+ .withIndex("group_id_user_id", (q) =>
317
+ q.eq("groupId", currentGroupId!).eq("userId", args.userId),
318
+ )
319
+ .unique();
320
+
321
+ if (membership !== null) {
322
+ return {
323
+ membership,
324
+ matchedGroupId: currentGroupId,
325
+ depth,
326
+ isDirect: depth === 0,
327
+ isInherited: depth > 0,
328
+ ...(includeAncestry ? { traversedGroupIds } : {}),
329
+ };
330
+ }
331
+
332
+ const groupDoc: { parentGroupId?: Id<"Group"> } | null =
333
+ await ctx.db.get(currentGroupId);
334
+ if (!groupDoc?.parentGroupId) break;
335
+ currentGroupId = groupDoc.parentGroupId;
336
+ depth++;
337
+ }
338
+
339
+ return {
340
+ membership: null,
341
+ matchedGroupId: null,
342
+ depth: null,
343
+ isDirect: false,
344
+ isInherited: false,
345
+ ...(includeAncestry ? { traversedGroupIds } : {}),
346
+ };
347
+ },
348
+ });
349
+
350
+ /**
351
+ * Remove a member from a group by permanently deleting the member record.
352
+ *
353
+ * This is a hard delete — the `GroupMember` document is removed from the
354
+ * database entirely. If you need soft-delete semantics, use
355
+ * {@link memberUpdate} to set the `status` field instead.
356
+ *
357
+ * @param args.memberId - The `Id<"GroupMember">` of the member record to delete.
358
+ * @returns `null` on success.
359
+ *
360
+ * @example
361
+ * ```ts
362
+ * await ctx.runMutation(components.auth.groups.memberRemove, {
363
+ * memberId: memberToRemoveId,
364
+ * });
365
+ * ```
366
+ */
367
+ export const memberRemove = mutation({
368
+ args: { memberId: v.id("GroupMember") },
369
+ returns: v.null(),
370
+ handler: async (ctx, { memberId }) => {
371
+ await ctx.db.delete("GroupMember", memberId);
372
+ return null;
373
+ },
374
+ });
375
+
376
+ /**
377
+ * Update a member record's mutable fields such as `roleIds`, `status`, and
378
+ * `extend`.
379
+ *
380
+ * Uses `db.patch` under the hood, so only the fields present in `data` are
381
+ * modified — all other fields on the member document are left unchanged.
382
+ *
383
+ * @param args.memberId - The `Id<"GroupMember">` of the member record to update.
384
+ * @param args.data - A partial object of fields to patch. Supported keys include `roleIds`, `status`, and `extend`.
385
+ * @returns `null` on success.
386
+ *
387
+ * @example
388
+ * ```ts
389
+ * await ctx.runMutation(components.auth.groups.memberUpdate, {
390
+ * memberId: existingMemberId,
391
+ * data: {
392
+ * roleIds: ["admin", "editor"],
393
+ * status: "active",
394
+ * },
395
+ * });
396
+ * ```
397
+ */
398
+ export const memberUpdate = mutation({
399
+ args: { memberId: v.id("GroupMember"), data: v.any() },
400
+ returns: v.null(),
401
+ handler: async (ctx, { memberId, data }) => {
402
+ await ctx.db.patch("GroupMember", memberId, data);
403
+ return null;
404
+ },
405
+ });
406
+
407
+ // ============================================================================
408
+ // Invites
409
+ // ============================================================================
@@ -0,0 +1,206 @@
1
+ import { v } from "convex/values";
2
+ import { mutation, query } from "../../functions";
3
+ import { vAccountDoc } from "../../model";
4
+
5
+ /**
6
+ * List all accounts linked to a specific user.
7
+ *
8
+ * Queries the `Account` table using the `user_id_provider` index to efficiently
9
+ * retrieve every authentication account (e.g. OAuth, credentials, email) that
10
+ * belongs to the given user.
11
+ *
12
+ * @param args.userId - The document ID of the user whose accounts should be retrieved.
13
+ * @returns An array of account documents associated with the user. Each document
14
+ * includes fields such as `provider`, `providerAccountId`, `secret`, and `extend`.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * const accounts = await ctx.runQuery(
19
+ * component.identity.accounts.accountListByUser,
20
+ * { userId: user._id },
21
+ * );
22
+ * for (const account of accounts) {
23
+ * console.log(`Provider: ${account.provider}, ID: ${account.providerAccountId}`);
24
+ * }
25
+ * ```
26
+ */
27
+ export const accountListByUser = query({
28
+ args: { userId: v.id("User") },
29
+ returns: v.array(vAccountDoc),
30
+ handler: async (ctx, { userId }) => {
31
+ return await ctx.db
32
+ .query("Account")
33
+ .withIndex("user_id_provider", (q) => q.eq("userId", userId as any))
34
+ .collect();
35
+ },
36
+ });
37
+
38
+ /**
39
+ * Look up an account by its provider name and provider-specific account ID.
40
+ *
41
+ * Uses the `provider_account_id` index to find the unique account that matches
42
+ * the given provider and external account identifier. This is the primary way
43
+ * to resolve an incoming authentication event (e.g. an OAuth callback) to an
44
+ * existing account in the system.
45
+ *
46
+ * @param args.provider - The name of the authentication provider (e.g. `"google"`, `"github"`, `"credentials"`).
47
+ * @param args.providerAccountId - The unique identifier assigned to the user by the external provider.
48
+ * @returns The matching account document, or `null` if no account exists for the
49
+ * given provider and provider account ID combination.
50
+ *
51
+ * @example
52
+ * ```ts
53
+ * const account = await ctx.runQuery(
54
+ * component.identity.accounts.accountGet,
55
+ * { provider: "google", providerAccountId: "1184210396400123" },
56
+ * );
57
+ * if (account !== null) {
58
+ * console.log(`Found account for user: ${account.userId}`);
59
+ * }
60
+ * ```
61
+ */
62
+ export const accountGet = query({
63
+ args: { provider: v.string(), providerAccountId: v.string() },
64
+ returns: v.union(vAccountDoc, v.null()),
65
+ handler: async (ctx, { provider, providerAccountId }) => {
66
+ return await ctx.db
67
+ .query("Account")
68
+ .withIndex("provider_account_id", (q) =>
69
+ q.eq("provider", provider).eq("providerAccountId", providerAccountId),
70
+ )
71
+ .unique();
72
+ },
73
+ });
74
+
75
+ /**
76
+ * Retrieve a single account by its Convex document ID.
77
+ *
78
+ * Performs a direct point lookup on the `Account` table. Returns `null` if the
79
+ * document has been deleted or never existed.
80
+ *
81
+ * @param args.accountId - The Convex document ID (`Id<"Account">`) of the account to retrieve.
82
+ * @returns The account document if it exists, or `null` otherwise.
83
+ *
84
+ * @example
85
+ * ```ts
86
+ * const account = await ctx.runQuery(
87
+ * component.identity.accounts.accountGetById,
88
+ * { accountId: existingAccountId },
89
+ * );
90
+ * if (account !== null) {
91
+ * console.log(`Provider: ${account.provider}`);
92
+ * }
93
+ * ```
94
+ */
95
+ export const accountGetById = query({
96
+ args: { accountId: v.id("Account") },
97
+ returns: v.union(vAccountDoc, v.null()),
98
+ handler: async (ctx, { accountId }) => {
99
+ return await ctx.db.get("Account", accountId);
100
+ },
101
+ });
102
+
103
+ /**
104
+ * Create a new account that links a user to an authentication provider.
105
+ *
106
+ * Inserts a row into the `Account` table, establishing the relationship between
107
+ * a user document and an external authentication provider (OAuth, credentials,
108
+ * email/phone OTP, etc.). A single user may have multiple accounts for different
109
+ * providers.
110
+ *
111
+ * @param args.userId - The document ID of the user to link this account to.
112
+ * @param args.provider - The name of the authentication provider (e.g. `"google"`, `"credentials"`).
113
+ * @param args.providerAccountId - The unique identifier for this user within the external provider.
114
+ * @param args.secret - An optional hashed secret (e.g. password hash) stored for credential-based providers.
115
+ * @param args.extend - Optional arbitrary data to store alongside the account for application-specific needs.
116
+ * @returns The document ID of the newly created account.
117
+ *
118
+ * @example
119
+ * ```ts
120
+ * const accountId = await ctx.runMutation(
121
+ * component.identity.accounts.accountInsert,
122
+ * {
123
+ * userId: user._id,
124
+ * provider: "credentials",
125
+ * providerAccountId: "user@example.com",
126
+ * secret: hashedPassword,
127
+ * },
128
+ * );
129
+ * ```
130
+ */
131
+ export const accountInsert = mutation({
132
+ args: {
133
+ userId: v.id("User"),
134
+ provider: v.string(),
135
+ providerAccountId: v.string(),
136
+ secret: v.optional(v.string()),
137
+ extend: v.optional(v.any()),
138
+ },
139
+ returns: v.id("Account"),
140
+ handler: async (ctx, args) => {
141
+ return await ctx.db.insert("Account", args as any);
142
+ },
143
+ });
144
+
145
+ /**
146
+ * Patch an existing account document with partial data.
147
+ *
148
+ * Merges the provided fields into the existing account document. Fields not
149
+ * included in `data` are left unchanged. This is useful for updating a stored
150
+ * secret (e.g. after a password change) or modifying extended metadata.
151
+ *
152
+ * @param args.accountId - The document ID of the account to update.
153
+ * @param args.data - A partial object containing the fields to merge into the account document.
154
+ * @returns `null` on success.
155
+ *
156
+ * @example
157
+ * ```ts
158
+ * await ctx.runMutation(
159
+ * component.identity.accounts.accountPatch,
160
+ * {
161
+ * accountId: account._id,
162
+ * data: { secret: newHashedPassword },
163
+ * },
164
+ * );
165
+ * ```
166
+ */
167
+ export const accountPatch = mutation({
168
+ args: { accountId: v.id("Account"), data: v.any() },
169
+ returns: v.null(),
170
+ handler: async (ctx, { accountId, data }) => {
171
+ await ctx.db.patch("Account", accountId, data);
172
+ return null;
173
+ },
174
+ });
175
+
176
+ /**
177
+ * Delete an account document permanently.
178
+ *
179
+ * Removes the account from the `Account` table. This effectively unlinks the
180
+ * user from the corresponding authentication provider. Callers should ensure
181
+ * that related resources (verification codes, sessions, etc.) are cleaned up
182
+ * separately if needed.
183
+ *
184
+ * @param args.accountId - The document ID of the account to delete.
185
+ * @returns `null` on success.
186
+ *
187
+ * @example
188
+ * ```ts
189
+ * await ctx.runMutation(
190
+ * component.identity.accounts.accountDelete,
191
+ * { accountId: account._id },
192
+ * );
193
+ * ```
194
+ */
195
+ export const accountDelete = mutation({
196
+ args: { accountId: v.id("Account") },
197
+ returns: v.null(),
198
+ handler: async (ctx, { accountId }) => {
199
+ await ctx.db.delete("Account", accountId);
200
+ return null;
201
+ },
202
+ });
203
+
204
+ // ============================================================================
205
+ // Sessions
206
+ // ============================================================================