@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 +0,0 @@
1
- {"version":3,"file":"utils.js","names":["rawSha256","osloGenerateRandomString"],"sources":["../../../src/server/implementation/utils.ts"],"sourcesContent":["import { sha256 as rawSha256 } from \"@oslojs/crypto/sha2\";\nimport { encodeHexLowerCase } from \"@oslojs/encoding\";\nimport {\n RandomReader,\n generateRandomString as osloGenerateRandomString,\n} from \"@oslojs/crypto/random\";\n\nexport const TOKEN_SUB_CLAIM_DIVIDER = \"|\";\nexport const REFRESH_TOKEN_DIVIDER = \"|\";\n\nexport function stringToNumber(value: string | undefined) {\n return value !== undefined ? Number(value) : undefined;\n}\n\nexport async function sha256(input: string) {\n return encodeHexLowerCase(rawSha256(new TextEncoder().encode(input)));\n}\n\nexport function generateRandomString(length: number, alphabet: string) {\n const random: RandomReader = {\n read(bytes) {\n crypto.getRandomValues(bytes);\n },\n };\n\n return osloGenerateRandomString(random, alphabet, length);\n}\n\nexport function logError(error: unknown) {\n logWithLevel(\n LOG_LEVELS.ERROR,\n error instanceof Error\n ? error.message + \"\\n\" + error.stack?.replace(\"\\\\n\", \"\\n\")\n : error,\n );\n}\n\nexport const LOG_LEVELS = {\n ERROR: \"ERROR\",\n WARN: \"WARN\",\n INFO: \"INFO\",\n DEBUG: \"DEBUG\",\n} as const;\ntype LogLevel = keyof typeof LOG_LEVELS;\n\nexport function logWithLevel(level: LogLevel, ...args: unknown[]) {\n const configuredLogLevel =\n LOG_LEVELS[\n (process.env.AUTH_LOG_LEVEL as LogLevel | undefined) ?? \"INFO\"\n ] ?? \"INFO\";\n switch (level) {\n case \"ERROR\":\n console.error(...args);\n break;\n case \"WARN\":\n if (configuredLogLevel !== \"ERROR\") {\n console.warn(...args);\n }\n break;\n case \"INFO\":\n if (configuredLogLevel === \"INFO\" || configuredLogLevel === \"DEBUG\") {\n console.info(...args);\n }\n break;\n case \"DEBUG\":\n if (configuredLogLevel === \"DEBUG\") {\n console.debug(...args);\n }\n break;\n }\n}\n\nconst UNREDACTED_LENGTH = 5;\nexport function maybeRedact(value: string) {\n if (value === \"\") {\n return \"\";\n }\n const shouldRedact = process.env.AUTH_LOG_SECRETS !== \"true\";\n if (shouldRedact) {\n if (value.length < UNREDACTED_LENGTH * 2) {\n return \"<redacted>\";\n }\n return (\n value.substring(0, UNREDACTED_LENGTH) +\n \"<redacted>\" +\n value.substring(value.length - UNREDACTED_LENGTH)\n );\n } else {\n return value;\n }\n}\n"],"mappings":";;;;;AAOA,MAAa,0BAA0B;AACvC,MAAa,wBAAwB;AAErC,SAAgB,eAAe,OAA2B;AACxD,QAAO,UAAU,SAAY,OAAO,MAAM,GAAG;;AAG/C,eAAsB,OAAO,OAAe;AAC1C,QAAO,mBAAmBA,SAAU,IAAI,aAAa,CAAC,OAAO,MAAM,CAAC,CAAC;;AAGvE,SAAgB,qBAAqB,QAAgB,UAAkB;AAOrE,QAAOC,uBANsB,EAC3B,KAAK,OAAO;AACV,SAAO,gBAAgB,MAAM;IAEhC,EAEuC,UAAU,OAAO;;AAG3D,SAAgB,SAAS,OAAgB;AACvC,cACE,WAAW,OACX,iBAAiB,QACb,MAAM,UAAU,OAAO,MAAM,OAAO,QAAQ,OAAO,KAAK,GACxD,MACL;;AAGH,MAAa,aAAa;CACxB,OAAO;CACP,MAAM;CACN,MAAM;CACN,OAAO;CACR;AAGD,SAAgB,aAAa,OAAiB,GAAG,MAAiB;CAChE,MAAM,qBACJ,WACG,QAAQ,IAAI,kBAA2C,WACrD;AACP,SAAQ,OAAR;EACE,KAAK;AACH,WAAQ,MAAM,GAAG,KAAK;AACtB;EACF,KAAK;AACH,OAAI,uBAAuB,QACzB,SAAQ,KAAK,GAAG,KAAK;AAEvB;EACF,KAAK;AACH,OAAI,uBAAuB,UAAU,uBAAuB,QAC1D,SAAQ,KAAK,GAAG,KAAK;AAEvB;EACF,KAAK;AACH,OAAI,uBAAuB,QACzB,SAAQ,MAAM,GAAG,KAAK;AAExB;;;AAIN,MAAM,oBAAoB;AAC1B,SAAgB,YAAY,OAAe;AACzC,KAAI,UAAU,GACZ,QAAO;AAGT,KADqB,QAAQ,IAAI,qBAAqB,QACpC;AAChB,MAAI,MAAM,SAAS,oBAAoB,EACrC,QAAO;AAET,SACE,MAAM,UAAU,GAAG,kBAAkB,GACrC,eACA,MAAM,UAAU,MAAM,SAAS,kBAAkB;OAGnD,QAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/server/index.ts"],"mappings":";;KAWY,gBAAA;EAAgB,6DAE1B,MAAA;AAAA;;KAIU,WAAA;EAAW,mDAErB,KAAA,iBAFqB;EAIrB,YAAA;EAEA,QAAA;AAAA;;KAIU,UAAA;EACV,IAAA;EACA,KAAA;EACA,OAAA;IACE,IAAA;IACA,QAAA;IACA,MAAA;IACA,QAAA;IACA,MAAA;IACA,OAAA,GAAU,IAAA;EAAA;AAAA;;;;KAOF,aAAA;EAAA,oEAEV,GAAA;;;;;EAKA,QAAA,WAIA;EAFA,YAAA,kBAU8B;EAR9B,OAAA;EAQoD;;;AAGtD;;;;EAHE,gBAAA,KAAqB,OAAA,EAAS,OAAA,eAAsB,OAAA;AAAA;AAAA,KAG1C,aAAA;EAMV,iDAJA,OAAA,EAAS,UAAA,IAIJ;EAFL,QAAA,WAc6B;EAZ7B,KAAA;AAAA;;;;;;;AA4BF;;;iBAhBgB,eAAA,CAAgB,IAAA;;;;;;AAuChC;;;;;;iBAvBgB,gBAAA,CACd,YAAA,6BACA,IAAA,YACC,WAAA;;;;;AA2DH;;;;;;iBAvCgB,oBAAA,CACd,OAAA,EAAS,WAAA,EACT,IAAA,WACA,MAAA,GAAQ,gBAAA;;;;;;;iBAoCM,qBAAA,CACd,OAAA,EAAS,WAAA,EACT,IAAA,WACA,MAAA,GAAQ,gBAAA,GACP,UAAA;;;AAmDH;;;;;AA6CA;;;iBA7CgB,qBAAA,CAAsB,QAAA,UAAkB,QAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6CxC,MAAA,CAAO,OAAA,EAAS,aAAA;;;;;;;iBA4Hb,OAAA;;;;;;;;;;kBAaO,OAAA,GAAU,OAAA;;;;;;;;;;;;iBAuBX,OAAA,GAAU,OAAA,CAAQ,QAAA;;;;;;;;;;;;;;mBAuIhB,OAAA,GAAU,OAAA,CAAQ,aAAA;AAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/server/index.ts"],"sourcesContent":["import { ConvexHttpClient } from \"convex/browser\";\nimport { ConvexError } from \"convex/values\";\nimport { jwtDecode } from \"jwt-decode\";\nimport { parse, serialize } from \"cookie\";\nimport type {\n SignInAction,\n SignOutAction,\n} from \"./implementation/index\";\nimport { isLocalHost } from \"./utils\";\n\n/** Cookie lifetime configuration for auth tokens. */\nexport type AuthCookieConfig = {\n /** Maximum age in seconds, or `null` for session cookies. */\n maxAge: number | null;\n};\n\n/** Raw cookie values extracted from a request. */\nexport type AuthCookies = {\n /** The JWT access token, or `null` when absent. */\n token: string | null;\n /** The refresh token, or `null` when absent. */\n refreshToken: string | null;\n /** The OAuth PKCE verifier, or `null` when absent. */\n verifier: string | null;\n};\n\n/** A structured cookie ready to be set via any framework's cookie API. */\nexport type AuthCookie = {\n name: string;\n value: string;\n options: {\n path: string;\n httpOnly: boolean;\n secure: boolean;\n sameSite: \"lax\" | \"strict\" | \"none\";\n maxAge?: number;\n expires?: Date;\n };\n};\n\n/**\n * Options for the SSR auth helper returned by {@link server}.\n */\nexport type ServerOptions = {\n /** Convex deployment URL (e.g. `https://your-app.convex.cloud`). */\n url: string;\n /**\n * Path the client POSTs auth actions to. Defaults to `\"/api/auth\"`.\n * Must match the `proxy` option on the client.\n */\n apiRoute?: string;\n /** Cookie `maxAge` in seconds, or `null` for session cookies. */\n cookieMaxAge?: number | null;\n /** Enable verbose debug logging for token refresh and cookie operations. */\n verbose?: boolean;\n /**\n * Control whether `refresh()` handles OAuth `?code=` query parameters.\n *\n * - `true` (default): always exchange the code on GET requests with `text/html` accept.\n * - `false`: never exchange — useful when only the client handles codes.\n * - A function: called with the `Request` for per-request decisions.\n */\n shouldHandleCode?: ((request: Request) => boolean | Promise<boolean>) | boolean;\n};\n\nexport type RefreshResult = {\n /** Structured cookies to set on the response. */\n cookies: AuthCookie[];\n /** URL to redirect to (set after OAuth code exchange). */\n redirect?: string;\n /** JWT for SSR hydration, or `null` if not authenticated. */\n token: string | null;\n};\n\n/**\n * Derive the cookie names used for auth tokens.\n *\n * On localhost the names are unprefixed; on production hosts they\n * use the `__Host-` prefix for tighter security.\n *\n * @param host - The `Host` header value. Omit to use unprefixed names.\n * @returns An object with `token`, `refreshToken`, and `verifier` cookie names.\n */\nexport function authCookieNames(host?: string) {\n const prefix = isLocalHost(host) ? \"\" : \"__Host-\";\n return {\n token: `${prefix}__convexAuthJWT`,\n refreshToken: `${prefix}__convexAuthRefreshToken`,\n verifier: `${prefix}__convexAuthOAuthVerifier`,\n };\n}\n\n/**\n * Parse auth cookie values from a raw `Cookie` header string.\n *\n * @param cookieHeader - The raw `Cookie` header, or `null`/`undefined`.\n * @param host - The `Host` header, used to determine cookie name prefixes.\n * @returns Parsed {@link AuthCookies} with `token`, `refreshToken`, and `verifier`.\n */\nexport function parseAuthCookies(\n cookieHeader: string | null | undefined,\n host?: string,\n): AuthCookies {\n const names = authCookieNames(host);\n const parsed = parse(cookieHeader ?? \"\");\n return {\n token: parsed[names.token] ?? null,\n refreshToken: parsed[names.refreshToken] ?? null,\n verifier: parsed[names.verifier] ?? null,\n };\n}\n\n/**\n * Serialize auth cookies into `Set-Cookie` header strings.\n *\n * Nulled-out values produce deletion cookies (maxAge 0, expired date).\n *\n * @param cookies - The auth cookie values to serialize.\n * @param host - The `Host` header, used for cookie name prefixes and `Secure` flag.\n * @param config - Cookie lifetime config. Defaults to session cookies.\n * @returns An array of three `Set-Cookie` header strings.\n */\nexport function serializeAuthCookies(\n cookies: AuthCookies,\n host?: string,\n config: AuthCookieConfig = { maxAge: null },\n) {\n const names = authCookieNames(host);\n const secure = !isLocalHost(host);\n const base = {\n path: \"/\",\n httpOnly: true,\n sameSite: \"lax\" as const,\n secure,\n };\n const maxAge = config.maxAge ?? undefined;\n return [\n serialize(names.token, cookies.token ?? \"\", {\n ...base,\n maxAge: cookies.token === null ? 0 : maxAge,\n expires: cookies.token === null ? new Date(0) : undefined,\n }),\n serialize(names.refreshToken, cookies.refreshToken ?? \"\", {\n ...base,\n maxAge: cookies.refreshToken === null ? 0 : maxAge,\n expires: cookies.refreshToken === null ? new Date(0) : undefined,\n }),\n serialize(names.verifier, cookies.verifier ?? \"\", {\n ...base,\n maxAge: cookies.verifier === null ? 0 : maxAge,\n expires: cookies.verifier === null ? new Date(0) : undefined,\n }),\n ];\n}\n\n/**\n * Build structured cookie objects for any SSR framework.\n *\n * Use with SvelteKit's `event.cookies.set()`, TanStack Start's `setCookie()`,\n * Next.js's `cookies().set()`, or any other framework cookie API.\n */\nexport function structuredAuthCookies(\n cookies: AuthCookies,\n host?: string,\n config: AuthCookieConfig = { maxAge: null },\n): AuthCookie[] {\n const names = authCookieNames(host);\n const secure = !isLocalHost(host);\n const base = {\n path: \"/\" as const,\n httpOnly: true as const,\n secure,\n sameSite: \"lax\" as const,\n };\n const maxAge = config.maxAge ?? undefined;\n return [\n {\n name: names.token,\n value: cookies.token ?? \"\",\n options: {\n ...base,\n maxAge: cookies.token === null ? 0 : maxAge,\n expires: cookies.token === null ? new Date(0) : undefined,\n },\n },\n {\n name: names.refreshToken,\n value: cookies.refreshToken ?? \"\",\n options: {\n ...base,\n maxAge: cookies.refreshToken === null ? 0 : maxAge,\n expires: cookies.refreshToken === null ? new Date(0) : undefined,\n },\n },\n {\n name: names.verifier,\n value: cookies.verifier ?? \"\",\n options: {\n ...base,\n maxAge: cookies.verifier === null ? 0 : maxAge,\n expires: cookies.verifier === null ? new Date(0) : undefined,\n },\n },\n ];\n}\n\n/**\n * Check whether a request pathname matches the auth proxy route.\n *\n * Handles trailing-slash ambiguity: both `/api/auth` and `/api/auth/`\n * match regardless of how `apiRoute` is configured.\n *\n * @param pathname - The request URL pathname.\n * @param apiRoute - The configured proxy route (e.g. `\"/api/auth\"`).\n * @returns `true` when the pathname matches the proxy route.\n */\nexport function shouldProxyAuthAction(pathname: string, apiRoute: string) {\n if (apiRoute.endsWith(\"/\")) {\n return pathname === apiRoute || pathname === apiRoute.slice(0, -1);\n }\n return pathname === apiRoute || pathname === `${apiRoute}/`;\n}\n\nconst REQUIRED_TOKEN_LIFETIME_MS = 60_000;\nconst MINIMUM_REQUIRED_TOKEN_LIFETIME_MS = 10_000;\n\ntype DecodedToken = { exp?: number; iat?: number };\n\n/**\n * Create an SSR auth helper for server-side frameworks.\n *\n * Handles cookie-based token management, OAuth code exchange,\n * and automatic JWT refresh on page loads. Works with any\n * framework that gives you a `Request` object — SvelteKit,\n * TanStack Start, Remix, Next.js, etc.\n *\n * @param options - SSR configuration (Convex URL, proxy route, cookie lifetime).\n * @returns An object with `token`, `verify`, `proxy`, and `refresh` methods.\n *\n * @example SvelteKit hooks\n * ```ts\n * // src/hooks.server.ts\n * import { server } from '@robelest/convex-auth/server';\n *\n * const auth = server({ url: CONVEX_URL });\n *\n * export const handle = async ({ event, resolve }) => {\n * const { cookies, token } = await auth.refresh(event.request);\n * for (const c of cookies) event.cookies.set(c.name, c.value, c.options);\n * event.locals.token = token;\n * return resolve(event);\n * };\n * ```\n *\n * @example Generic proxy endpoint\n * ```ts\n * if (shouldProxyAuthAction(url.pathname, '/api/auth')) {\n * return auth.proxy(request);\n * }\n * ```\n */\nexport function server(options: ServerOptions) {\n const convexUrl = options.url;\n const apiRoute = options.apiRoute ?? \"/api/auth\";\n const cookieConfig = { maxAge: options.cookieMaxAge ?? null };\n const verbose = options.verbose ?? false;\n\n const logVerbose = (message: string) => {\n if (!verbose) {\n return;\n }\n console.debug(\n `${new Date().toISOString()} [convex-auth/server] ${message}`,\n );\n };\n\n const cookieHost = (request: Request) => {\n return request.headers.get(\"host\") ?? new URL(request.url).host;\n };\n\n const parseRequestCookies = (request: Request) => {\n return parseAuthCookies(request.headers.get(\"cookie\"), cookieHost(request));\n };\n\n const attachCookies = (response: Response, cookies: string[]) => {\n for (const value of cookies) {\n response.headers.append(\"Set-Cookie\", value);\n }\n return response;\n };\n\n const jsonResponse = (body: unknown, status = 200) => {\n return new Response(JSON.stringify(body), {\n status,\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n };\n\n const isCorsRequest = (request: Request) => {\n const originHeader = request.headers.get(\"origin\");\n if (originHeader === null) {\n return false;\n }\n const requestUrl = new URL(request.url);\n const originUrl = new URL(originHeader);\n return (\n originUrl.host !== requestUrl.host ||\n originUrl.protocol !== requestUrl.protocol\n );\n };\n\n const decodeToken = (token: string): DecodedToken | null => {\n try {\n return jwtDecode<DecodedToken>(token);\n } catch {\n return null;\n }\n };\n\n const convexClient = (token?: string | null) => {\n const client = new ConvexHttpClient(convexUrl);\n if (token !== undefined && token !== null) {\n client.setAuth(token);\n }\n return client;\n };\n\n const refreshTokens = async (\n request: Request,\n ): Promise<{ token: string; refreshToken: string } | null | undefined> => {\n const cookies = parseRequestCookies(request);\n const { token, refreshToken } = cookies;\n if (refreshToken === null && token === null) {\n logVerbose(\"No auth cookies found, skipping refresh\");\n return undefined;\n }\n if (refreshToken === null || token === null) {\n logVerbose(\"Only one auth cookie present, clearing auth cookies\");\n return null;\n }\n const decodedToken = decodeToken(token);\n if (decodedToken?.exp === undefined || decodedToken.iat === undefined) {\n logVerbose(\"Failed to decode token, clearing auth cookies\");\n return null;\n }\n const totalTokenLifetimeMs = decodedToken.exp * 1000 - decodedToken.iat * 1000;\n const minimumExpiration =\n Date.now() +\n Math.min(\n REQUIRED_TOKEN_LIFETIME_MS,\n Math.max(MINIMUM_REQUIRED_TOKEN_LIFETIME_MS, totalTokenLifetimeMs / 10),\n );\n if (decodedToken.exp * 1000 > minimumExpiration) {\n logVerbose(\"Token valid long enough, skipping refresh\");\n return undefined;\n }\n\n try {\n const result = await convexClient().action(\n \"auth:signIn\" as unknown as SignInAction,\n {\n refreshToken,\n },\n );\n if (result.tokens === undefined) {\n throw new Error(\"Invalid `auth:signIn` result for token refresh\");\n }\n logVerbose(`Refreshed tokens, null=${result.tokens === null}`);\n return result.tokens;\n } catch (error) {\n console.error(error);\n logVerbose(\"Token refresh failed, clearing auth cookies\");\n return null;\n }\n };\n\n return {\n /**\n * Read the JWT from the request cookies without any validation.\n *\n * @param request - The incoming HTTP request.\n * @returns The raw JWT string, or `null` when no token cookie exists.\n */\n token(request: Request): string | null {\n return parseRequestCookies(request).token;\n },\n\n /**\n * Check whether the request carries a non-expired JWT.\n *\n * Performs local expiration checking only (no network call).\n * Use for lightweight auth guards in middleware.\n *\n * @param request - The incoming HTTP request.\n * @returns `true` when a valid, non-expired JWT exists in the cookies.\n */\n async verify(request: Request): Promise<boolean> {\n const token = parseRequestCookies(request).token;\n if (token === null) {\n return false;\n }\n const decodedToken = decodeToken(token);\n if (decodedToken?.exp === undefined) {\n return false;\n }\n return decodedToken.exp * 1000 > Date.now();\n },\n\n /**\n * Handle a proxied `signIn` or `signOut` POST from the client.\n *\n * Validates the route, method, and origin, then forwards the\n * action to Convex and returns a `Response` with updated\n * `Set-Cookie` headers. The client never sees the real\n * refresh token — it stays in httpOnly cookies.\n *\n * @param request - The incoming POST request from the client.\n * @returns A JSON `Response` with auth result and cookie headers.\n */\n async proxy(request: Request): Promise<Response> {\n const requestUrl = new URL(request.url);\n if (!shouldProxyAuthAction(requestUrl.pathname, apiRoute)) {\n return new Response(\"Invalid route\", { status: 404 });\n }\n if (request.method !== \"POST\") {\n return new Response(\"Invalid method\", { status: 405 });\n }\n if (isCorsRequest(request)) {\n return new Response(\"Invalid origin\", { status: 403 });\n }\n\n const body = await request.json();\n const action = body.action as string;\n const args = (body.args ?? {}) as Record<string, any>;\n\n if (action !== \"auth:signIn\" && action !== \"auth:signOut\") {\n return new Response(\"Invalid action\", { status: 400 });\n }\n\n const currentCookies = parseRequestCookies(request);\n const host = cookieHost(request);\n\n if (action === \"auth:signIn\") {\n if (args.refreshToken !== undefined) {\n if (currentCookies.refreshToken === null) {\n return jsonResponse({ tokens: null });\n }\n args.refreshToken = currentCookies.refreshToken;\n }\n const client = convexClient(\n args.refreshToken !== undefined || args.params?.code !== undefined\n ? null\n : currentCookies.token,\n );\n\n try {\n const result = await client.action(\n \"auth:signIn\" as unknown as SignInAction,\n args,\n );\n if (result.redirect !== undefined) {\n const response = jsonResponse({ redirect: result.redirect });\n return attachCookies(\n response,\n serializeAuthCookies(\n {\n ...currentCookies,\n verifier: result.verifier ?? null,\n },\n host,\n cookieConfig,\n ),\n );\n }\n if (result.tokens !== undefined) {\n const response = jsonResponse({\n tokens:\n result.tokens === null\n ? null\n : { token: result.tokens.token, refreshToken: \"dummy\" },\n });\n return attachCookies(\n response,\n serializeAuthCookies(\n {\n token: result.tokens?.token ?? null,\n refreshToken: result.tokens?.refreshToken ?? null,\n verifier: null,\n },\n host,\n cookieConfig,\n ),\n );\n }\n return jsonResponse(result);\n } catch (error: unknown) {\n // Forward structured error data when available (ConvexError with { code, message }).\n const errorBody =\n error instanceof ConvexError &&\n typeof error.data === \"object\" &&\n error.data !== null &&\n \"code\" in error.data\n ? { error: (error.data as { message?: string }).message ?? String(error), authError: error.data }\n : { error: error instanceof Error ? error.message : String(error) };\n const response = jsonResponse(errorBody, 400);\n return attachCookies(\n response,\n serializeAuthCookies(\n {\n token: null,\n refreshToken: null,\n verifier: null,\n },\n host,\n cookieConfig,\n ),\n );\n }\n }\n\n try {\n await convexClient(currentCookies.token).action(\n \"auth:signOut\" as unknown as SignOutAction,\n );\n } catch (error) {\n console.error(error);\n }\n return attachCookies(\n jsonResponse(null),\n serializeAuthCookies(\n {\n token: null,\n refreshToken: null,\n verifier: null,\n },\n host,\n cookieConfig,\n ),\n );\n },\n\n /**\n * Refresh auth tokens on page load.\n *\n * Call this in your server hooks/middleware on every request.\n * It handles three scenarios:\n *\n * 1. **OAuth code exchange** — exchanges a `?code=` query param for tokens and returns a redirect URL.\n * 2. **Token refresh** — refreshes the JWT if it's close to expiry.\n * 3. **No-op** — returns the existing token when no refresh is needed.\n *\n * @param request - The incoming HTTP request.\n * @returns Structured cookies to set on the response, an optional redirect URL, and the current JWT.\n */\n async refresh(request: Request): Promise<RefreshResult> {\n const host = cookieHost(request);\n const currentToken = parseRequestCookies(request).token;\n\n // CORS request — clear all auth cookies.\n if (isCorsRequest(request)) {\n return {\n cookies: structuredAuthCookies(\n { token: null, refreshToken: null, verifier: null },\n host,\n cookieConfig,\n ),\n token: null,\n };\n }\n\n // OAuth code exchange — exchange code for tokens and redirect.\n const requestUrl = new URL(request.url);\n const code = requestUrl.searchParams.get(\"code\");\n const shouldHandleCode =\n options.shouldHandleCode === undefined\n ? true\n : typeof options.shouldHandleCode === \"function\"\n ? await options.shouldHandleCode(request)\n : options.shouldHandleCode;\n\n if (\n code !== null &&\n request.method === \"GET\" &&\n request.headers.get(\"accept\")?.includes(\"text/html\") &&\n shouldHandleCode\n ) {\n const requestCookies = parseRequestCookies(request);\n const redirectUrl = new URL(requestUrl);\n redirectUrl.searchParams.delete(\"code\");\n try {\n const result = await convexClient().action(\n \"auth:signIn\" as unknown as SignInAction,\n {\n params: { code },\n verifier: requestCookies.verifier ?? undefined,\n },\n );\n if (result.tokens === undefined) {\n throw new Error(\"Invalid `auth:signIn` result for code exchange\");\n }\n return {\n cookies: structuredAuthCookies(\n {\n token: result.tokens?.token ?? null,\n refreshToken: result.tokens?.refreshToken ?? null,\n verifier: null,\n },\n host,\n cookieConfig,\n ),\n redirect: redirectUrl.toString(),\n token: result.tokens?.token ?? null,\n };\n } catch (error) {\n console.error(error);\n return {\n cookies: structuredAuthCookies(\n { token: null, refreshToken: null, verifier: null },\n host,\n cookieConfig,\n ),\n redirect: redirectUrl.toString(),\n token: null,\n };\n }\n }\n\n // Normal page load — refresh tokens if needed.\n const tokens = await refreshTokens(request);\n if (tokens === undefined) {\n // No refresh needed — return current token for hydration.\n return { cookies: [], token: currentToken };\n }\n return {\n cookies: structuredAuthCookies(\n {\n token: tokens?.token ?? null,\n refreshToken: tokens?.refreshToken ?? null,\n verifier: null,\n },\n host,\n cookieConfig,\n ),\n token: tokens?.token ?? null,\n };\n },\n };\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"oauth.d.ts","names":[],"sources":["../../src/server/oauth.ts"],"mappings":";;;;UAqBiB,WAAA;EACf,IAAA;EACA,KAAA;EACA,OAAA,EAAS,MAAA;AAAA;;UAIM,mBAAA;EACf,QAAA;EACA,OAAA,EAAS,WAAA;EACT,SAAA;AAAA;;UAIe,cAAA;EACf,OAAA,EAAS,YAAA;EACT,iBAAA;EACA,OAAA,EAAS,WAAA;EACT,SAAA;AAAA;;;;;iBAkDc,yBAAA,CAAA;EACd,YAAA;EACA;AAAA;EAEA,YAAA;EACA,KAAA;AAAA;AAAA,iBAWc,WAAA,CAAY,UAAA;;;;;;iBA6DN,2BAAA,CACpB,UAAA,UACA,cAAA,OACA,WAAA,EAAa,mBAAA,GACZ,OAAA,CAAQ,mBAAA;;;;;iBA0CW,mBAAA,CACpB,UAAA,UACA,cAAA,OACA,WAAA,EAAa,mBAAA,EACb,MAAA,EAAQ,MAAA,kBACR,OAAA,EAAS,MAAA,+BACR,OAAA,CAAQ,cAAA"}
@@ -1,72 +0,0 @@
1
- import { ApiKeyConfig, AuthComponentApi, AuthProviderConfig, AuthProviderMaterializedConfig, ConvexAuthConfig, EmailTransport } from "./types.js";
2
- import * as convex_server86 from "convex/server";
3
- import * as convex_values0 from "convex/values";
4
-
5
- //#region src/server/providers.d.ts
6
- /**
7
- * Resolve raw provider configs into materialized form and apply defaults.
8
- *
9
- * @internal
10
- */
11
- declare function configDefaults(config_: ConvexAuthConfig): {
12
- extraProviders: AuthProviderMaterializedConfig[];
13
- providers: AuthProviderMaterializedConfig[];
14
- component: AuthComponentApi;
15
- session?: {
16
- totalDurationMs?: number;
17
- inactiveDurationMs?: number;
18
- };
19
- jwt?: {
20
- durationMs?: number;
21
- };
22
- signIn?: {
23
- maxFailedAttempsPerHour?: number;
24
- };
25
- apiKeys?: ApiKeyConfig;
26
- email?: EmailTransport;
27
- callbacks?: {
28
- redirect?: (params: {
29
- redirectTo: string;
30
- }) => Promise<string>;
31
- createOrUpdateUser?: (ctx: convex_server86.GenericMutationCtx<convex_server86.AnyDataModel>, args: {
32
- existingUserId: convex_values0.GenericId<"user"> | null;
33
- type: "oauth" | "credentials" | "email" | "phone" | "verification";
34
- provider: AuthProviderMaterializedConfig;
35
- profile: Record<string, unknown> & {
36
- email?: string;
37
- phone?: string;
38
- emailVerified?: boolean;
39
- phoneVerified?: boolean;
40
- };
41
- shouldLink?: boolean;
42
- }) => Promise<convex_values0.GenericId<"user">>;
43
- afterUserCreatedOrUpdated?: (ctx: convex_server86.GenericMutationCtx<convex_server86.AnyDataModel>, args: {
44
- userId: convex_values0.GenericId<"user">;
45
- existingUserId: convex_values0.GenericId<"user"> | null;
46
- type: "oauth" | "credentials" | "email" | "phone" | "verification";
47
- provider: AuthProviderMaterializedConfig;
48
- profile: Record<string, unknown> & {
49
- email?: string;
50
- phone?: string;
51
- emailVerified?: boolean;
52
- phoneVerified?: boolean;
53
- };
54
- shouldLink?: boolean;
55
- }) => Promise<void>;
56
- };
57
- };
58
- /**
59
- * Materialize a single provider config into its runtime form.
60
- *
61
- * @internal
62
- */
63
- declare function materializeProvider(provider: AuthProviderConfig): AuthProviderMaterializedConfig;
64
- /**
65
- * List available provider IDs for error messages.
66
- *
67
- * @internal
68
- */
69
- declare function listAvailableProviders(config: ReturnType<typeof configDefaults>, allowExtraProviders: boolean): string;
70
- //#endregion
71
- export { configDefaults, listAvailableProviders, materializeProvider };
72
- //# sourceMappingURL=providers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"providers.d.ts","names":[],"sources":["../../src/server/providers.ts"],"mappings":";;;;;;;;;AAgCA;iBAAgB,cAAA,CAAe,OAAA,EAAS,gBAAA;;;;;;;;;;;;;;;;;gBAmG6hC,MAAA;;;0BAA8jB,GAAA,EAAA,eAAA,CAAA,kBAAA,iBAAA,YAAA,GAAA,IAAA;sBAAA,cAAA,CAAA,SAAA;;;;;;;;;;;iCAA64D,GAAA,EAAA,eAAA,CAAA,kBAAA,iBAAA,YAAA,GAAA,IAAA;cAAA,cAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;iBAhFhgH,mBAAA,CAAoB,QAAA,EAAU,kBAAA,GAGd,8BAAA;;;;;;iBAQhB,sBAAA,CACd,MAAA,EAAQ,UAAA,QAAkB,cAAA,GAC1B,mBAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"providers.js","names":[],"sources":["../../src/server/providers.ts"],"sourcesContent":["import {\n AuthProviderConfig,\n AuthProviderMaterializedConfig,\n ConvexAuthConfig,\n OAuthMaterializedConfig,\n} from \"./types\";\nimport { isOAuthProvider, type OAuthProviderInstance } from \"../providers/oauth\";\n\n// ============================================================================\n// Provider class detection\n// ============================================================================\n\n/** Check if something is a new-style class provider with `_toMaterialized()`. */\nfunction isClassProvider(\n provider: any,\n): provider is { _toMaterialized(): AuthProviderMaterializedConfig } {\n return (\n typeof provider === \"object\" &&\n provider !== null &&\n typeof provider._toMaterialized === \"function\"\n );\n}\n\n// ============================================================================\n// Public API\n// ============================================================================\n\n/**\n * Resolve raw provider configs into materialized form and apply defaults.\n *\n * @internal\n */\nexport function configDefaults(config_: ConvexAuthConfig) {\n const config = materializeAndDefaultProviders(config_);\n // Collect extra providers from credentials providers\n const extraProviders = config.providers\n .filter((p) => p.type === \"credentials\")\n .map((p) => p.extraProviders)\n .flat()\n .filter((p) => p !== undefined);\n return {\n ...config,\n extraProviders: materializeProviders(extraProviders),\n };\n}\n\n/**\n * Materialize a single provider config into its runtime form.\n *\n * @internal\n */\nexport function materializeProvider(provider: AuthProviderConfig) {\n const config = { providers: [provider], component: {} as any };\n materializeAndDefaultProviders(config);\n return config.providers[0] as AuthProviderMaterializedConfig;\n}\n\n/**\n * List available provider IDs for error messages.\n *\n * @internal\n */\nexport function listAvailableProviders(\n config: ReturnType<typeof configDefaults>,\n allowExtraProviders: boolean,\n) {\n const availableProviders = config.providers\n .concat(allowExtraProviders ? config.extraProviders : [])\n .map((provider) => `\\`${provider.id}\\``);\n return availableProviders.length > 0\n ? availableProviders.join(\", \")\n : \"no providers have been configured\";\n}\n\n// ============================================================================\n// Internal helpers\n// ============================================================================\n\nfunction materializeProviders(providers: AuthProviderConfig[]) {\n const config = { providers, component: {} as any };\n materializeAndDefaultProviders(config);\n return config.providers as AuthProviderMaterializedConfig[];\n}\n\nfunction materializeAndDefaultProviders(config_: ConvexAuthConfig) {\n const allProviders: AuthProviderMaterializedConfig[] = [];\n\n for (const raw of config_.providers) {\n if (isOAuthProvider(raw)) {\n allProviders.push(materializeOAuthProvider(raw));\n } else if (isClassProvider(raw)) {\n allProviders.push(raw._toMaterialized());\n } else {\n // Factory function or plain config object\n const resolved = typeof raw === \"function\" ? raw() : (raw as any);\n // Merge `options` into the provider (backward compat with factory-style\n // providers that store user overrides in an `options` field).\n const merged = resolved.options\n ? { ...resolved, ...resolved.options }\n : resolved;\n allProviders.push(merged as AuthProviderMaterializedConfig);\n }\n }\n\n const config = { ...config_, providers: allProviders };\n\n // Set phone provider API key from env\n config.providers.forEach((provider) => {\n if (provider.type === \"phone\") {\n const ID = provider.id.toUpperCase().replace(/-/g, \"_\");\n provider.apiKey ??= process.env[`AUTH_${ID}_KEY`];\n }\n });\n\n return config;\n}\n\n/**\n * Materialize an Arctic-based `OAuthProviderInstance` into the runtime config.\n */\nfunction materializeOAuthProvider(\n instance: OAuthProviderInstance,\n): OAuthMaterializedConfig {\n return {\n id: instance.id,\n type: \"oauth\",\n provider: instance.provider,\n scopes: instance.scopes,\n profile: instance.profile,\n };\n}\n"],"mappings":";;;;AAaA,SAAS,gBACP,UACmE;AACnE,QACE,OAAO,aAAa,YACpB,aAAa,QACb,OAAO,SAAS,oBAAoB;;;;;;;AAaxC,SAAgB,eAAe,SAA2B;CACxD,MAAM,SAAS,+BAA+B,QAAQ;CAEtD,MAAM,iBAAiB,OAAO,UAC3B,QAAQ,MAAM,EAAE,SAAS,cAAc,CACvC,KAAK,MAAM,EAAE,eAAe,CAC5B,MAAM,CACN,QAAQ,MAAM,MAAM,OAAU;AACjC,QAAO;EACL,GAAG;EACH,gBAAgB,qBAAqB,eAAe;EACrD;;;;;;;AAQH,SAAgB,oBAAoB,UAA8B;CAChE,MAAM,SAAS;EAAE,WAAW,CAAC,SAAS;EAAE,WAAW,EAAE;EAAS;AAC9D,gCAA+B,OAAO;AACtC,QAAO,OAAO,UAAU;;;;;;;AAQ1B,SAAgB,uBACd,QACA,qBACA;CACA,MAAM,qBAAqB,OAAO,UAC/B,OAAO,sBAAsB,OAAO,iBAAiB,EAAE,CAAC,CACxD,KAAK,aAAa,KAAK,SAAS,GAAG,IAAI;AAC1C,QAAO,mBAAmB,SAAS,IAC/B,mBAAmB,KAAK,KAAK,GAC7B;;AAON,SAAS,qBAAqB,WAAiC;CAC7D,MAAM,SAAS;EAAE;EAAW,WAAW,EAAE;EAAS;AAClD,gCAA+B,OAAO;AACtC,QAAO,OAAO;;AAGhB,SAAS,+BAA+B,SAA2B;CACjE,MAAM,eAAiD,EAAE;AAEzD,MAAK,MAAM,OAAO,QAAQ,UACxB,KAAI,gBAAgB,IAAI,CACtB,cAAa,KAAK,yBAAyB,IAAI,CAAC;UACvC,gBAAgB,IAAI,CAC7B,cAAa,KAAK,IAAI,iBAAiB,CAAC;MACnC;EAEL,MAAM,WAAW,OAAO,QAAQ,aAAa,KAAK,GAAI;EAGtD,MAAM,SAAS,SAAS,UACpB;GAAE,GAAG;GAAU,GAAG,SAAS;GAAS,GACpC;AACJ,eAAa,KAAK,OAAyC;;CAI/D,MAAM,SAAS;EAAE,GAAG;EAAS,WAAW;EAAc;AAGtD,QAAO,UAAU,SAAS,aAAa;AACrC,MAAI,SAAS,SAAS,SAAS;GAC7B,MAAM,KAAK,SAAS,GAAG,aAAa,CAAC,QAAQ,MAAM,IAAI;AACvD,YAAS,WAAW,QAAQ,IAAI,QAAQ,GAAG;;GAE7C;AAEF,QAAO;;;;;AAMT,SAAS,yBACP,UACyB;AACzB,QAAO;EACL,IAAI,SAAS;EACb,MAAM;EACN,UAAU,SAAS;EACnB,QAAQ,SAAS;EACjB,SAAS,SAAS;EACnB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"templates.d.ts","names":[],"sources":["../../src/server/templates.ts"],"mappings":";;AAiBA;;;;;;;;;;;;;;;iBAAgB,qBAAA,CAAsB,GAAA,UAAa,IAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","names":[],"sources":["../../src/server/utils.ts"],"mappings":";iBAEgB,UAAA,CAAW,IAAA;AAAA,iBAQX,WAAA,CAAY,IAAA"}
@@ -1,5 +0,0 @@
1
- //#region src/server/version.d.ts
2
- declare const AUTH_VERSION = "0.0.4-preview.2";
3
- //#endregion
4
- export { AUTH_VERSION };
5
- //# sourceMappingURL=version.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"version.d.ts","names":[],"sources":["../../src/server/version.ts"],"mappings":";cACa,YAAA"}
@@ -1,6 +0,0 @@
1
- //#region src/server/version.ts
2
- const AUTH_VERSION = "0.0.4-preview.2";
3
-
4
- //#endregion
5
- export { AUTH_VERSION };
6
- //# sourceMappingURL=version.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"version.js","names":[],"sources":["../../src/server/version.ts"],"sourcesContent":["// Auto-generated by scripts/generate-version.js — do not edit.\nexport const AUTH_VERSION = \"0.0.4-preview.2\";\n"],"mappings":";AACA,MAAa,eAAe"}
package/src/cli/utils.ts DELETED
@@ -1,248 +0,0 @@
1
- /**
2
- * Shared CLI utilities — logging, subprocess execution, file helpers.
3
- *
4
- * Eliminates duplication across index.ts, upload.ts, link.ts.
5
- * All output goes to stderr so stdout can be piped cleanly.
6
- */
7
-
8
- import chalk from "chalk";
9
- import { execFileSync } from "child_process";
10
- import { existsSync, readFileSync, writeFileSync } from "fs";
11
- import { extname } from "path";
12
-
13
- // ---------------------------------------------------------------------------
14
- // Logging — unified output to stderr with chalk prefixes
15
- // ---------------------------------------------------------------------------
16
-
17
- const write = (msg: string) => process.stderr.write(msg + "\n");
18
-
19
- export const log = {
20
- step: (n: number, msg: string) => write(`${chalk.blue.bold(`[${n}]`)} ${chalk.bold(msg)}`),
21
- success: (msg: string) => write(`${chalk.green("✔")} ${msg}`),
22
- warn: (msg: string) => write(`${chalk.yellow.bold("!")} ${msg}`),
23
- error: (msg: string, detail?: string) =>
24
- write(`${chalk.red("✖")} ${msg}${detail ? `\n ${chalk.grey(`Error: ${detail}`)}` : ""}`),
25
- info: (msg: string) => write(`${chalk.blue.bold("i")} ${msg}`),
26
- blank: () => write(""),
27
- raw: (msg: string) => write(msg),
28
- indent: (msg: string) => write(` ${msg}`),
29
- } as const;
30
-
31
- // ---------------------------------------------------------------------------
32
- // Subprocess — safe execFile with argument arrays (no shell injection)
33
- // ---------------------------------------------------------------------------
34
-
35
- export type DeploymentOptions = {
36
- prod?: boolean;
37
- adminKey?: string;
38
- url?: string;
39
- previewName?: string;
40
- deploymentName?: string;
41
- };
42
-
43
- /** Build CLI args array for Convex deployment selection. */
44
- export const deploymentArgs = (opts: DeploymentOptions): string[] => {
45
- const args: string[] = [];
46
- if (opts.adminKey) args.push("--admin-key", opts.adminKey);
47
- if (opts.url) args.push("--url", opts.url);
48
- else if (opts.prod) args.push("--prod");
49
- else if (opts.previewName) args.push("--preview-name", opts.previewName);
50
- else if (opts.deploymentName) args.push("--deployment-name", opts.deploymentName);
51
- return args;
52
- };
53
-
54
- /** Run `npx convex env get <name>` and return the value. */
55
- export const envGet = (name: string, opts: DeploymentOptions): string =>
56
- execFileSync("npx", ["convex", "env", "get", ...deploymentArgs(opts), name], {
57
- encoding: "utf-8",
58
- stdio: ["pipe", "pipe", "pipe"],
59
- }).slice(0, -1); // strip trailing newline
60
-
61
- /** Run `npx convex env set <name> <value>`. */
62
- export const envSet = (
63
- name: string,
64
- value: string,
65
- opts: DeploymentOptions & { hideValue?: boolean },
66
- ): void => {
67
- execFileSync(
68
- "npx",
69
- ["convex", "env", "set", ...deploymentArgs(opts), "--", name, value],
70
- { stdio: opts.hideValue ? "ignore" : "inherit" },
71
- );
72
- };
73
-
74
- /**
75
- * Run a Convex function via `npx convex run` and return parsed JSON output.
76
- * Uses execFile with argument arrays — no shell injection.
77
- */
78
- export const convexRun = <T = unknown>(
79
- functionPath: string,
80
- args: Record<string, unknown>,
81
- opts: { prod?: boolean } = {},
82
- ): Promise<T> =>
83
- new Promise((resolve, reject) => {
84
- const { execFile } = require("child_process");
85
- const cmdArgs = [
86
- "convex", "run", functionPath,
87
- JSON.stringify(args),
88
- "--typecheck=disable",
89
- "--codegen=disable",
90
- ...(opts.prod ? ["--prod"] : []),
91
- ];
92
- execFile("npx", cmdArgs, { encoding: "utf-8" }, (error: any, stdout: string, stderr: string) => {
93
- if (error) {
94
- reject(new Error(`convex run ${functionPath} failed: ${stderr || stdout}`));
95
- return;
96
- }
97
- try {
98
- resolve(JSON.parse(stdout.trim()) as T);
99
- } catch {
100
- // If output is not JSON, return raw string as-is
101
- resolve(stdout.trim() as T);
102
- }
103
- });
104
- });
105
-
106
- // ---------------------------------------------------------------------------
107
- // MIME types
108
- // ---------------------------------------------------------------------------
109
-
110
- const MIME_TYPES: Record<string, string> = {
111
- ".html": "text/html; charset=utf-8",
112
- ".js": "application/javascript; charset=utf-8",
113
- ".mjs": "application/javascript; charset=utf-8",
114
- ".css": "text/css; charset=utf-8",
115
- ".json": "application/json; charset=utf-8",
116
- ".png": "image/png",
117
- ".jpg": "image/jpeg",
118
- ".jpeg": "image/jpeg",
119
- ".gif": "image/gif",
120
- ".svg": "image/svg+xml",
121
- ".ico": "image/x-icon",
122
- ".webp": "image/webp",
123
- ".woff": "font/woff",
124
- ".woff2":"font/woff2",
125
- ".ttf": "font/ttf",
126
- ".txt": "text/plain; charset=utf-8",
127
- ".map": "application/json",
128
- ".webmanifest": "application/manifest+json",
129
- ".xml": "application/xml",
130
- ".br": "application/octet-stream",
131
- ".gz": "application/gzip",
132
- };
133
-
134
- export const getMimeType = (path: string): string =>
135
- MIME_TYPES[extname(path).toLowerCase()] ?? "application/octet-stream";
136
-
137
- // ---------------------------------------------------------------------------
138
- // File helpers
139
- // ---------------------------------------------------------------------------
140
-
141
- /**
142
- * Check for an existing non-empty source file (.ts or .js) at the given
143
- * base path (without extension). Returns the path if found, null otherwise.
144
- */
145
- export const findExistingSource = (basePath: string): string | null =>
146
- [".ts", ".js"]
147
- .map((ext) => basePath + ext)
148
- .find((p) => existsSync(p) && readFileSync(p, "utf-8").trim() !== "")
149
- ?? null;
150
-
151
- /**
152
- * Test whether an existing file already matches a template.
153
- * Templates use `$$` as wildcards and `;` followed by newline as flexible separators.
154
- */
155
- export const matchesTemplate = (existing: string, template: string): boolean =>
156
- new RegExp(
157
- template
158
- .replace(/[.*+?^${}()|[\]\\]/g, "\\$&")
159
- .replace(/\\\$\\\$/g, ".*")
160
- .replace(/;\n/g, ";.*"),
161
- "s",
162
- ).test(existing);
163
-
164
- /** Strip template markers from a source template. */
165
- export const stripMarkers = (template: string): string =>
166
- template.replace(/\$\$/g, "");
167
-
168
- /**
169
- * Higher-order function: ensure a file matches a template.
170
- *
171
- * - If the file doesn't exist → create it
172
- * - If it already matches → log success
173
- * - If it exists but doesn't match → show instructions and prompt
174
- *
175
- * Returns a configured function bound to the convex folder path + TS preference.
176
- */
177
- export const createFileEnsurer = (
178
- convexFolderPath: string,
179
- usesTypeScript: boolean,
180
- promptFn: (message: string) => Promise<void>,
181
- ) => {
182
- const path = require("path");
183
-
184
- return async (
185
- baseName: string,
186
- template: string,
187
- description: string,
188
- ): Promise<void> => {
189
- const source = stripMarkers(template);
190
- const filePath = path.join(convexFolderPath, baseName);
191
- const existing = findExistingSource(filePath);
192
-
193
- if (existing) {
194
- const content = readFileSync(existing, "utf-8");
195
- if (matchesTemplate(content, template)) {
196
- log.success(`${chalk.bold(existing)} already configured.`);
197
- return;
198
- }
199
- log.info(`${chalk.bold(existing)} needs ${description}:`);
200
- log.raw(`\n${indentBlock(source)}\n`);
201
- await promptFn("Ready to continue?");
202
- return;
203
- }
204
-
205
- const ext = usesTypeScript ? ".ts" : ".js";
206
- const newPath = filePath + ext;
207
- writeFileSync(newPath, source);
208
- log.success(`Created ${chalk.bold(newPath)}`);
209
- };
210
- };
211
-
212
- /** Indent a multiline string (2 spaces, first line not indented). */
213
- export const indentBlock = (s: string): string =>
214
- s.replace(/^/gm, " ").slice(2);
215
-
216
- // ---------------------------------------------------------------------------
217
- // Crypto helpers
218
- // ---------------------------------------------------------------------------
219
-
220
- export { randomBytes, createHash } from "crypto";
221
-
222
- /** Generate a URL-safe random token (32 bytes → 43 chars base64url). */
223
- export const generateToken = (): string =>
224
- require("crypto").randomBytes(32).toString("base64url");
225
-
226
- /** SHA-256 hash a string and return the hex digest. */
227
- export const hashToken = (token: string): string =>
228
- require("crypto").createHash("sha256").update(token).digest("hex");
229
-
230
- // ---------------------------------------------------------------------------
231
- // Package version
232
- // ---------------------------------------------------------------------------
233
-
234
- /** Read the auth package version from its own package.json. */
235
- export const getPackageVersion = (): string => {
236
- try {
237
- const pkgPath = require("path").resolve(__dirname, "..", "package.json");
238
- return JSON.parse(readFileSync(pkgPath, "utf-8")).version;
239
- } catch {
240
- // Fallback: if running from dist/bin.cjs, package.json is two levels up
241
- try {
242
- const pkgPath = require("path").resolve(__dirname, "..", "..", "package.json");
243
- return JSON.parse(readFileSync(pkgPath, "utf-8")).version;
244
- } catch {
245
- return "unknown";
246
- }
247
- }
248
- };