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

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 (310) hide show
  1. package/dist/authorization/index.d.ts +1 -1
  2. package/dist/authorization/index.js +1 -1
  3. package/dist/authorization/index.js.map +1 -1
  4. package/dist/client/index.d.ts +1 -2
  5. package/dist/client/index.d.ts.map +1 -1
  6. package/dist/client/index.js +36 -39
  7. package/dist/client/index.js.map +1 -1
  8. package/dist/component/client/index.d.ts +1 -2
  9. package/dist/component/convex.config.d.ts +2 -2
  10. package/dist/component/convex.config.d.ts.map +1 -1
  11. package/dist/component/model.d.ts +5 -5
  12. package/dist/component/model.d.ts.map +1 -1
  13. package/dist/component/public/enterprise/audit.d.ts.map +1 -1
  14. package/dist/component/public/enterprise/audit.js.map +1 -1
  15. package/dist/component/public/enterprise/core.d.ts.map +1 -1
  16. package/dist/component/public/enterprise/core.js.map +1 -1
  17. package/dist/component/public/enterprise/domains.d.ts.map +1 -1
  18. package/dist/component/public/enterprise/domains.js.map +1 -1
  19. package/dist/component/public/enterprise/scim.d.ts.map +1 -1
  20. package/dist/component/public/enterprise/scim.js.map +1 -1
  21. package/dist/component/public/enterprise/secrets.d.ts.map +1 -1
  22. package/dist/component/public/enterprise/secrets.js.map +1 -1
  23. package/dist/component/public/enterprise/webhooks.d.ts.map +1 -1
  24. package/dist/component/public/enterprise/webhooks.js.map +1 -1
  25. package/dist/component/public/factors/devices.d.ts.map +1 -1
  26. package/dist/component/public/factors/devices.js.map +1 -1
  27. package/dist/component/public/factors/passkeys.d.ts.map +1 -1
  28. package/dist/component/public/factors/passkeys.js.map +1 -1
  29. package/dist/component/public/factors/totp.d.ts.map +1 -1
  30. package/dist/component/public/factors/totp.js.map +1 -1
  31. package/dist/component/public/groups/core.js.map +1 -1
  32. package/dist/component/public/groups/invites.d.ts.map +1 -1
  33. package/dist/component/public/groups/invites.js.map +1 -1
  34. package/dist/component/public/groups/members.d.ts.map +1 -1
  35. package/dist/component/public/groups/members.js.map +1 -1
  36. package/dist/component/public/identity/accounts.d.ts.map +1 -1
  37. package/dist/component/public/identity/accounts.js.map +1 -1
  38. package/dist/component/public/identity/codes.d.ts.map +1 -1
  39. package/dist/component/public/identity/codes.js.map +1 -1
  40. package/dist/component/public/identity/sessions.d.ts.map +1 -1
  41. package/dist/component/public/identity/sessions.js.map +1 -1
  42. package/dist/component/public/identity/tokens.d.ts.map +1 -1
  43. package/dist/component/public/identity/tokens.js.map +1 -1
  44. package/dist/component/public/identity/users.d.ts.map +1 -1
  45. package/dist/component/public/identity/users.js.map +1 -1
  46. package/dist/component/public/identity/verifiers.d.ts.map +1 -1
  47. package/dist/component/public/identity/verifiers.js.map +1 -1
  48. package/dist/component/public/security/keys.d.ts.map +1 -1
  49. package/dist/component/public/security/keys.js.map +1 -1
  50. package/dist/component/public/security/limits.d.ts.map +1 -1
  51. package/dist/component/public/security/limits.js.map +1 -1
  52. package/dist/component/schema.d.ts +39 -39
  53. package/dist/component/server/auth.d.ts +95 -52
  54. package/dist/component/server/auth.d.ts.map +1 -1
  55. package/dist/component/server/auth.js +63 -43
  56. package/dist/component/server/auth.js.map +1 -1
  57. package/dist/component/server/core.js +116 -235
  58. package/dist/component/server/core.js.map +1 -1
  59. package/dist/component/server/crypto.js +25 -7
  60. package/dist/component/server/crypto.js.map +1 -1
  61. package/dist/component/server/device.js +58 -15
  62. package/dist/component/server/device.js.map +1 -1
  63. package/dist/component/server/enterprise/domain.js +148 -59
  64. package/dist/component/server/enterprise/domain.js.map +1 -1
  65. package/dist/component/server/enterprise/http.js +36 -15
  66. package/dist/component/server/enterprise/http.js.map +1 -1
  67. package/dist/component/server/enterprise/oidc.js +1 -1
  68. package/dist/component/server/http.js +26 -21
  69. package/dist/component/server/http.js.map +1 -1
  70. package/dist/component/server/identity.js +5 -2
  71. package/dist/component/server/identity.js.map +1 -1
  72. package/dist/component/server/limits.js +21 -30
  73. package/dist/component/server/limits.js.map +1 -1
  74. package/dist/component/server/mutations/account.js +12 -10
  75. package/dist/component/server/mutations/account.js.map +1 -1
  76. package/dist/component/server/mutations/code.js +5 -2
  77. package/dist/component/server/mutations/code.js.map +1 -1
  78. package/dist/component/server/mutations/invalidate.js +1 -1
  79. package/dist/component/server/mutations/invalidate.js.map +1 -1
  80. package/dist/component/server/mutations/oauth.js +10 -4
  81. package/dist/component/server/mutations/oauth.js.map +1 -1
  82. package/dist/component/server/mutations/refresh.js +2 -2
  83. package/dist/component/server/mutations/refresh.js.map +1 -1
  84. package/dist/component/server/mutations/register.js +46 -42
  85. package/dist/component/server/mutations/register.js.map +1 -1
  86. package/dist/component/server/mutations/retrieve.js +21 -25
  87. package/dist/component/server/mutations/retrieve.js.map +1 -1
  88. package/dist/component/server/mutations/signature.js +10 -4
  89. package/dist/component/server/mutations/signature.js.map +1 -1
  90. package/dist/component/server/mutations/signout.js.map +1 -1
  91. package/dist/component/server/mutations/store.js +9 -24
  92. package/dist/component/server/mutations/store.js.map +1 -1
  93. package/dist/component/server/mutations/verifier.js.map +1 -1
  94. package/dist/component/server/mutations/verify.js +1 -1
  95. package/dist/component/server/mutations/verify.js.map +1 -1
  96. package/dist/component/server/oauth.js +53 -16
  97. package/dist/component/server/oauth.js.map +1 -1
  98. package/dist/component/server/passkey.js +115 -31
  99. package/dist/component/server/passkey.js.map +1 -1
  100. package/dist/component/server/redirects.js +9 -3
  101. package/dist/component/server/redirects.js.map +1 -1
  102. package/dist/component/server/refresh.js +10 -7
  103. package/dist/component/server/refresh.js.map +1 -1
  104. package/dist/component/server/runtime.d.ts +3 -3
  105. package/dist/component/server/runtime.d.ts.map +1 -1
  106. package/dist/component/server/runtime.js +62 -20
  107. package/dist/component/server/runtime.js.map +1 -1
  108. package/dist/component/server/signin.js +34 -10
  109. package/dist/component/server/signin.js.map +1 -1
  110. package/dist/component/server/totp.js +79 -19
  111. package/dist/component/server/totp.js.map +1 -1
  112. package/dist/component/server/types.d.ts +12 -20
  113. package/dist/component/server/types.d.ts.map +1 -1
  114. package/dist/component/server/types.js.map +1 -1
  115. package/dist/component/server/users.js +6 -3
  116. package/dist/component/server/users.js.map +1 -1
  117. package/dist/component/server/utils.js +10 -4
  118. package/dist/component/server/utils.js.map +1 -1
  119. package/dist/core/types.d.ts +14 -22
  120. package/dist/core/types.d.ts.map +1 -1
  121. package/dist/factors/device.js +8 -9
  122. package/dist/factors/device.js.map +1 -1
  123. package/dist/factors/passkey.js +18 -21
  124. package/dist/factors/passkey.js.map +1 -1
  125. package/dist/providers/password.js +66 -81
  126. package/dist/providers/password.js.map +1 -1
  127. package/dist/runtime/invite.js +2 -8
  128. package/dist/runtime/invite.js.map +1 -1
  129. package/dist/server/auth.d.ts +95 -52
  130. package/dist/server/auth.d.ts.map +1 -1
  131. package/dist/server/auth.js +63 -43
  132. package/dist/server/auth.js.map +1 -1
  133. package/dist/server/core.d.ts +71 -159
  134. package/dist/server/core.d.ts.map +1 -1
  135. package/dist/server/core.js +116 -235
  136. package/dist/server/core.js.map +1 -1
  137. package/dist/server/crypto.d.ts.map +1 -1
  138. package/dist/server/crypto.js +25 -7
  139. package/dist/server/crypto.js.map +1 -1
  140. package/dist/server/device.js +58 -15
  141. package/dist/server/device.js.map +1 -1
  142. package/dist/server/enterprise/domain.d.ts +0 -8
  143. package/dist/server/enterprise/domain.d.ts.map +1 -1
  144. package/dist/server/enterprise/domain.js +148 -59
  145. package/dist/server/enterprise/domain.js.map +1 -1
  146. package/dist/server/enterprise/http.d.ts.map +1 -1
  147. package/dist/server/enterprise/http.js +35 -14
  148. package/dist/server/enterprise/http.js.map +1 -1
  149. package/dist/server/http.d.ts +2 -2
  150. package/dist/server/http.d.ts.map +1 -1
  151. package/dist/server/http.js +25 -20
  152. package/dist/server/http.js.map +1 -1
  153. package/dist/server/identity.js +5 -2
  154. package/dist/server/identity.js.map +1 -1
  155. package/dist/server/index.d.ts +2 -2
  156. package/dist/server/limits.js +21 -30
  157. package/dist/server/limits.js.map +1 -1
  158. package/dist/server/mounts.d.ts +26 -64
  159. package/dist/server/mounts.d.ts.map +1 -1
  160. package/dist/server/mounts.js +45 -106
  161. package/dist/server/mounts.js.map +1 -1
  162. package/dist/server/mutations/account.d.ts +8 -9
  163. package/dist/server/mutations/account.d.ts.map +1 -1
  164. package/dist/server/mutations/account.js +11 -9
  165. package/dist/server/mutations/account.js.map +1 -1
  166. package/dist/server/mutations/code.d.ts +13 -13
  167. package/dist/server/mutations/code.d.ts.map +1 -1
  168. package/dist/server/mutations/code.js +5 -2
  169. package/dist/server/mutations/code.js.map +1 -1
  170. package/dist/server/mutations/invalidate.d.ts +4 -4
  171. package/dist/server/mutations/invalidate.d.ts.map +1 -1
  172. package/dist/server/mutations/invalidate.js.map +1 -1
  173. package/dist/server/mutations/oauth.d.ts +12 -10
  174. package/dist/server/mutations/oauth.d.ts.map +1 -1
  175. package/dist/server/mutations/oauth.js +9 -3
  176. package/dist/server/mutations/oauth.js.map +1 -1
  177. package/dist/server/mutations/refresh.d.ts +3 -3
  178. package/dist/server/mutations/refresh.d.ts.map +1 -1
  179. package/dist/server/mutations/refresh.js +1 -1
  180. package/dist/server/mutations/refresh.js.map +1 -1
  181. package/dist/server/mutations/register.d.ts +11 -11
  182. package/dist/server/mutations/register.d.ts.map +1 -1
  183. package/dist/server/mutations/register.js +45 -41
  184. package/dist/server/mutations/register.js.map +1 -1
  185. package/dist/server/mutations/retrieve.d.ts +6 -6
  186. package/dist/server/mutations/retrieve.d.ts.map +1 -1
  187. package/dist/server/mutations/retrieve.js +20 -24
  188. package/dist/server/mutations/retrieve.js.map +1 -1
  189. package/dist/server/mutations/signature.d.ts +6 -7
  190. package/dist/server/mutations/signature.d.ts.map +1 -1
  191. package/dist/server/mutations/signature.js +9 -3
  192. package/dist/server/mutations/signature.js.map +1 -1
  193. package/dist/server/mutations/signin.d.ts +5 -5
  194. package/dist/server/mutations/signin.d.ts.map +1 -1
  195. package/dist/server/mutations/signout.js.map +1 -1
  196. package/dist/server/mutations/store.d.ts +97 -97
  197. package/dist/server/mutations/store.d.ts.map +1 -1
  198. package/dist/server/mutations/store.js +8 -23
  199. package/dist/server/mutations/store.js.map +1 -1
  200. package/dist/server/mutations/verifier.js.map +1 -1
  201. package/dist/server/mutations/verify.d.ts +10 -10
  202. package/dist/server/mutations/verify.d.ts.map +1 -1
  203. package/dist/server/mutations/verify.js.map +1 -1
  204. package/dist/server/oauth.js +53 -16
  205. package/dist/server/oauth.js.map +1 -1
  206. package/dist/server/passkey.d.ts +2 -2
  207. package/dist/server/passkey.d.ts.map +1 -1
  208. package/dist/server/passkey.js +114 -30
  209. package/dist/server/passkey.js.map +1 -1
  210. package/dist/server/redirects.js +9 -3
  211. package/dist/server/redirects.js.map +1 -1
  212. package/dist/server/refresh.js +10 -7
  213. package/dist/server/refresh.js.map +1 -1
  214. package/dist/server/runtime.d.ts +14 -14
  215. package/dist/server/runtime.d.ts.map +1 -1
  216. package/dist/server/runtime.js +61 -19
  217. package/dist/server/runtime.js.map +1 -1
  218. package/dist/server/signin.js +34 -10
  219. package/dist/server/signin.js.map +1 -1
  220. package/dist/server/ssr.d.ts.map +1 -1
  221. package/dist/server/ssr.js +175 -184
  222. package/dist/server/ssr.js.map +1 -1
  223. package/dist/server/totp.js +78 -18
  224. package/dist/server/totp.js.map +1 -1
  225. package/dist/server/types.d.ts +13 -21
  226. package/dist/server/types.d.ts.map +1 -1
  227. package/dist/server/types.js.map +1 -1
  228. package/dist/server/users.js +6 -3
  229. package/dist/server/users.js.map +1 -1
  230. package/dist/server/utils.js +10 -4
  231. package/dist/server/utils.js.map +1 -1
  232. package/package.json +2 -6
  233. package/src/authorization/index.ts +1 -1
  234. package/src/cli/index.ts +1 -1
  235. package/src/client/core/types.ts +14 -14
  236. package/src/client/factors/device.ts +10 -12
  237. package/src/client/factors/passkey.ts +23 -26
  238. package/src/client/index.ts +54 -64
  239. package/src/client/runtime/invite.ts +5 -7
  240. package/src/component/index.ts +1 -0
  241. package/src/component/public/enterprise/audit.ts +6 -1
  242. package/src/component/public/enterprise/core.ts +1 -0
  243. package/src/component/public/enterprise/domains.ts +5 -1
  244. package/src/component/public/enterprise/scim.ts +1 -0
  245. package/src/component/public/enterprise/secrets.ts +1 -0
  246. package/src/component/public/enterprise/webhooks.ts +1 -0
  247. package/src/component/public/factors/devices.ts +1 -0
  248. package/src/component/public/factors/passkeys.ts +1 -0
  249. package/src/component/public/factors/totp.ts +1 -0
  250. package/src/component/public/groups/core.ts +1 -1
  251. package/src/component/public/groups/invites.ts +7 -1
  252. package/src/component/public/groups/members.ts +1 -0
  253. package/src/component/public/identity/accounts.ts +1 -0
  254. package/src/component/public/identity/codes.ts +1 -0
  255. package/src/component/public/identity/sessions.ts +1 -0
  256. package/src/component/public/identity/tokens.ts +1 -0
  257. package/src/component/public/identity/users.ts +1 -0
  258. package/src/component/public/identity/verifiers.ts +1 -0
  259. package/src/component/public/security/keys.ts +1 -0
  260. package/src/component/public/security/limits.ts +1 -0
  261. package/src/providers/password.ts +89 -110
  262. package/src/server/auth.ts +177 -111
  263. package/src/server/core.ts +197 -233
  264. package/src/server/crypto.ts +31 -29
  265. package/src/server/device.ts +65 -32
  266. package/src/server/enterprise/domain.ts +158 -170
  267. package/src/server/enterprise/http.ts +46 -39
  268. package/src/server/http.ts +36 -30
  269. package/src/server/identity.ts +5 -5
  270. package/src/server/index.ts +2 -0
  271. package/src/server/limits.ts +53 -80
  272. package/src/server/mounts.ts +47 -74
  273. package/src/server/mutations/account.ts +22 -36
  274. package/src/server/mutations/code.ts +6 -6
  275. package/src/server/mutations/invalidate.ts +1 -1
  276. package/src/server/mutations/oauth.ts +14 -8
  277. package/src/server/mutations/refresh.ts +5 -4
  278. package/src/server/mutations/register.ts +87 -132
  279. package/src/server/mutations/retrieve.ts +44 -44
  280. package/src/server/mutations/signature.ts +13 -6
  281. package/src/server/mutations/signout.ts +1 -1
  282. package/src/server/mutations/store.ts +16 -31
  283. package/src/server/mutations/verifier.ts +1 -1
  284. package/src/server/mutations/verify.ts +3 -5
  285. package/src/server/oauth.ts +60 -69
  286. package/src/server/passkey.ts +567 -517
  287. package/src/server/redirects.ts +10 -6
  288. package/src/server/refresh.ts +14 -18
  289. package/src/server/runtime.ts +70 -55
  290. package/src/server/signin.ts +44 -37
  291. package/src/server/ssr.ts +390 -407
  292. package/src/server/totp.ts +85 -35
  293. package/src/server/types.ts +19 -22
  294. package/src/server/users.ts +7 -6
  295. package/src/server/utils.ts +10 -12
  296. package/dist/component/server/authError.js +0 -34
  297. package/dist/component/server/authError.js.map +0 -1
  298. package/dist/component/server/errors.d.ts +0 -1
  299. package/dist/component/server/errors.js +0 -137
  300. package/dist/component/server/errors.js.map +0 -1
  301. package/dist/server/authError.d.ts +0 -46
  302. package/dist/server/authError.d.ts.map +0 -1
  303. package/dist/server/authError.js +0 -34
  304. package/dist/server/authError.js.map +0 -1
  305. package/dist/server/errors.d.ts +0 -177
  306. package/dist/server/errors.d.ts.map +0 -1
  307. package/dist/server/errors.js +0 -212
  308. package/dist/server/errors.js.map +0 -1
  309. package/src/server/authError.ts +0 -44
  310. package/src/server/errors.ts +0 -290
@@ -310,204 +310,195 @@ function server(options) {
310
310
  const host = request.headers.get("host") ?? new URL(request.url).host;
311
311
  const currentCookies = parseAuthCookies(request.headers.get("cookie"), host, cookieNamespace);
312
312
  return Fx.run(Fx.match(actionDispatch, actionDispatch.action, {
313
- sessionStart: (_) => Fx.from({
314
- ok: async () => {
315
- const refreshDispatch = args.refreshToken === void 0 ? { kind: "passthrough" } : currentCookies.refreshToken === null ? { kind: "refreshRequestedWithoutCookie" } : {
316
- kind: "hydrateRefreshFromCookie",
317
- refreshToken: currentCookies.refreshToken
318
- };
319
- const refreshResponse = await Fx.run(Fx.match(refreshDispatch, refreshDispatch.kind, {
320
- passthrough: async () => null,
321
- hydrateRefreshFromCookie: async ({ refreshToken }) => {
322
- args.refreshToken = refreshToken;
323
- return null;
324
- },
325
- refreshRequestedWithoutCookie: async () => {
326
- const currentToken = currentCookies.token;
327
- const decodedToken = currentToken === null ? null : await Fx.run(Fx.attempt(async () => jwtDecode(currentToken), (decoded) => decoded, () => null));
328
- const tokenDispatch = currentToken !== null && decodedToken?.exp !== void 0 && decodedToken.iss !== void 0 && acceptedIssuers.has(normalizeIssuer(decodedToken.iss)) && decodedToken.exp * 1e3 > Date.now() ? {
329
- kind: "validToken",
330
- token: currentToken
331
- } : { kind: "missingToken" };
332
- return await Fx.run(Fx.match(tokenDispatch, tokenDispatch.kind, {
333
- validToken: ({ token }) => new Response(JSON.stringify({ tokens: {
334
- token,
335
- refreshToken: "dummy"
336
- } }), {
337
- status: 200,
338
- headers: { "Content-Type": "application/json" }
339
- }),
340
- missingToken: () => new Response(JSON.stringify({ tokens: null }), {
341
- status: 200,
342
- headers: { "Content-Type": "application/json" }
343
- })
344
- }));
345
- }
346
- }));
347
- const refreshDecision = refreshResponse !== null ? {
348
- kind: "shortCircuit",
349
- response: refreshResponse
350
- } : { kind: "continue" };
351
- const maybeShortCircuitResponse = await Fx.run(Fx.match(refreshDecision, refreshDecision.kind, {
352
- shortCircuit: ({ response }) => response,
353
- continue: () => null
354
- }));
355
- if (maybeShortCircuitResponse !== null) return maybeShortCircuitResponse;
356
- const client = new ConvexHttpClient(convexUrl);
357
- const authDispatch = args.refreshToken === void 0 && args.params?.code === void 0 && currentCookies.token !== null ? {
358
- kind: "attachAuth",
359
- token: currentCookies.token
360
- } : { kind: "skipAuth" };
361
- await Fx.run(Fx.match(authDispatch, authDispatch.kind, {
362
- attachAuth: ({ token }) => {
363
- client.setAuth(token);
364
- },
365
- skipAuth: () => void 0
366
- }));
367
- return Fx.run(Fx.from({
368
- ok: () => client.action(signInActionRef, args),
369
- err: (error) => error
370
- }).pipe(Fx.fold({
371
- ok: (result) => Fx.run(Fx.match(result, result.kind, {
372
- redirect: (redirectResult) => {
373
- const response = new Response(JSON.stringify({
374
- kind: "redirect",
375
- redirect: redirectResult.redirect,
376
- verifier: redirectResult.verifier
377
- }), {
378
- status: 200,
379
- headers: { "Content-Type": "application/json" }
380
- });
381
- for (const value of serializeAuthCookies({
382
- ...currentCookies,
383
- verifier: redirectResult.verifier
384
- }, host, cookieConfig, cookieNamespace)) response.headers.append("Set-Cookie", value);
385
- return Fx.succeed(response);
386
- },
387
- signedIn: (signedInResult) => {
388
- const response = new Response(JSON.stringify({
389
- kind: "signedIn",
390
- tokens: signedInResult.tokens === null ? null : {
391
- token: signedInResult.tokens.token,
392
- refreshToken: "dummy"
393
- }
394
- }), {
395
- status: 200,
396
- headers: { "Content-Type": "application/json" }
397
- });
398
- for (const value of serializeAuthCookies({
399
- token: signedInResult.tokens?.token ?? null,
400
- refreshToken: signedInResult.tokens?.refreshToken ?? null,
401
- verifier: null
402
- }, host, cookieConfig, cookieNamespace)) response.headers.append("Set-Cookie", value);
403
- return Fx.succeed(response);
404
- },
405
- started: (startedResult) => Fx.succeed(new Response(JSON.stringify(startedResult), {
406
- status: 200,
407
- headers: { "Content-Type": "application/json" }
408
- })),
409
- passkeyOptions: (passkeyOptionsResult) => Fx.succeed(new Response(JSON.stringify(passkeyOptionsResult), {
313
+ sessionStart: (_) => Fx.promise(async () => {
314
+ const refreshDispatch = args.refreshToken === void 0 ? { kind: "passthrough" } : currentCookies.refreshToken === null ? { kind: "refreshRequestedWithoutCookie" } : {
315
+ kind: "hydrateRefreshFromCookie",
316
+ refreshToken: currentCookies.refreshToken
317
+ };
318
+ const refreshResponse = await Fx.run(Fx.match(refreshDispatch, refreshDispatch.kind, {
319
+ passthrough: async () => null,
320
+ hydrateRefreshFromCookie: async ({ refreshToken }) => {
321
+ args.refreshToken = refreshToken;
322
+ return null;
323
+ },
324
+ refreshRequestedWithoutCookie: async () => {
325
+ const currentToken = currentCookies.token;
326
+ const decodedToken = currentToken === null ? null : await Fx.run(Fx.attempt(async () => jwtDecode(currentToken), (decoded) => decoded, () => null));
327
+ const tokenDispatch = currentToken !== null && decodedToken?.exp !== void 0 && decodedToken.iss !== void 0 && acceptedIssuers.has(normalizeIssuer(decodedToken.iss)) && decodedToken.exp * 1e3 > Date.now() ? {
328
+ kind: "validToken",
329
+ token: currentToken
330
+ } : { kind: "missingToken" };
331
+ return await Fx.run(Fx.match(tokenDispatch, tokenDispatch.kind, {
332
+ validToken: ({ token }) => new Response(JSON.stringify({ tokens: {
333
+ token,
334
+ refreshToken: "dummy"
335
+ } }), {
410
336
  status: 200,
411
337
  headers: { "Content-Type": "application/json" }
412
- })),
413
- totpRequired: (totpRequiredResult) => Fx.succeed(new Response(JSON.stringify(totpRequiredResult), {
338
+ }),
339
+ missingToken: () => new Response(JSON.stringify({ tokens: null }), {
414
340
  status: 200,
415
341
  headers: { "Content-Type": "application/json" }
416
- })),
417
- totpSetup: (totpSetupResult) => Fx.succeed(new Response(JSON.stringify(totpSetupResult), {
342
+ })
343
+ }));
344
+ }
345
+ }));
346
+ const refreshDecision = refreshResponse !== null ? {
347
+ kind: "shortCircuit",
348
+ response: refreshResponse
349
+ } : { kind: "continue" };
350
+ const maybeShortCircuitResponse = await Fx.run(Fx.match(refreshDecision, refreshDecision.kind, {
351
+ shortCircuit: ({ response }) => response,
352
+ continue: () => null
353
+ }));
354
+ if (maybeShortCircuitResponse !== null) return maybeShortCircuitResponse;
355
+ const client = new ConvexHttpClient(convexUrl);
356
+ const authDispatch = args.refreshToken === void 0 && args.params?.code === void 0 && currentCookies.token !== null ? {
357
+ kind: "attachAuth",
358
+ token: currentCookies.token
359
+ } : { kind: "skipAuth" };
360
+ await Fx.run(Fx.match(authDispatch, authDispatch.kind, {
361
+ attachAuth: ({ token }) => {
362
+ client.setAuth(token);
363
+ },
364
+ skipAuth: () => void 0
365
+ }));
366
+ return Fx.run(Fx.from({
367
+ ok: () => client.action(signInActionRef, args),
368
+ err: (error) => error
369
+ }).pipe(Fx.fold({
370
+ ok: (result) => Fx.run(Fx.match(result, result.kind, {
371
+ redirect: (redirectResult) => {
372
+ const response = new Response(JSON.stringify({
373
+ kind: "redirect",
374
+ redirect: redirectResult.redirect,
375
+ verifier: redirectResult.verifier
376
+ }), {
418
377
  status: 200,
419
378
  headers: { "Content-Type": "application/json" }
420
- })),
421
- deviceCode: (deviceCodeResult) => Fx.succeed(new Response(JSON.stringify(deviceCodeResult), {
379
+ });
380
+ for (const value of serializeAuthCookies({
381
+ ...currentCookies,
382
+ verifier: redirectResult.verifier
383
+ }, host, cookieConfig, cookieNamespace)) response.headers.append("Set-Cookie", value);
384
+ return Fx.succeed(response);
385
+ },
386
+ signedIn: (signedInResult) => {
387
+ const response = new Response(JSON.stringify({
388
+ kind: "signedIn",
389
+ tokens: signedInResult.tokens === null ? null : {
390
+ token: signedInResult.tokens.token,
391
+ refreshToken: "dummy"
392
+ }
393
+ }), {
422
394
  status: 200,
423
395
  headers: { "Content-Type": "application/json" }
424
- }))
425
- })),
426
- err: (error) => {
427
- const errorBody = error instanceof ConvexError && typeof error.data === "object" && error.data !== null && "code" in error.data ? {
428
- error: error.data.message ?? String(error),
429
- authError: error.data
430
- } : { error: error instanceof Error ? error.message : String(error) };
431
- const response = new Response(JSON.stringify(errorBody), {
432
- status: 400,
433
- headers: { "Content-Type": "application/json" }
434
396
  });
435
- const clearSession = args.refreshToken !== void 0 && error instanceof ConvexError && typeof error.data === "object" && error.data !== null && error.data.code === "INVALID_REFRESH_TOKEN";
436
397
  for (const value of serializeAuthCookies({
437
- token: clearSession ? null : currentCookies.token,
438
- refreshToken: clearSession ? null : currentCookies.refreshToken,
398
+ token: signedInResult.tokens?.token ?? null,
399
+ refreshToken: signedInResult.tokens?.refreshToken ?? null,
439
400
  verifier: null
440
401
  }, host, cookieConfig, cookieNamespace)) response.headers.append("Set-Cookie", value);
441
- return response;
442
- }
443
- })));
444
- },
445
- err: (e) => e
446
- }),
447
- sessionStop: (_) => Fx.from({
448
- ok: async () => {
449
- await Fx.run(Fx.from({
450
- ok: () => (() => {
451
- const client = new ConvexHttpClient(convexUrl);
452
- if (currentCookies.token !== null) client.setAuth(currentCookies.token);
453
- return client.action(signOutActionRef);
454
- })(),
455
- err: (error) => error
456
- }).pipe(Fx.recover((error) => {
457
- console.error("[convex-auth/server] proxy sign-out failed", error);
458
- const fallbackDispatch = currentCookies.refreshToken !== null ? {
459
- kind: "attemptFallback",
460
- refreshToken: currentCookies.refreshToken
461
- } : { kind: "skipFallback" };
462
- return Fx.match(fallbackDispatch, fallbackDispatch.kind, {
463
- attemptFallback: ({ refreshToken }) => Fx.from({
464
- ok: async () => {
465
- const refreshed = await new ConvexHttpClient(convexUrl).action(signInActionRef, { refreshToken });
466
- const refreshedTokens = await Fx.run(Fx.match(refreshed, refreshed.kind, {
467
- signedIn: (signedInResult) => Fx.succeed(signedInResult.tokens),
468
- redirect: () => Fx.fatal(/* @__PURE__ */ new Error("Invalid `auth:signIn` result for sign-out fallback refresh")),
469
- started: () => Fx.fatal(/* @__PURE__ */ new Error("Invalid `auth:signIn` result for sign-out fallback refresh")),
470
- passkeyOptions: () => Fx.fatal(/* @__PURE__ */ new Error("Invalid `auth:signIn` result for sign-out fallback refresh")),
471
- totpRequired: () => Fx.fatal(/* @__PURE__ */ new Error("Invalid `auth:signIn` result for sign-out fallback refresh")),
472
- totpSetup: () => Fx.fatal(/* @__PURE__ */ new Error("Invalid `auth:signIn` result for sign-out fallback refresh")),
473
- deviceCode: () => Fx.fatal(/* @__PURE__ */ new Error("Invalid `auth:signIn` result for sign-out fallback refresh"))
474
- }));
475
- const fallbackSignOutDispatch = refreshedTokens !== null ? {
476
- kind: "signOutWithRefreshed",
477
- token: refreshedTokens.token
478
- } : { kind: "skipRefreshedSignOut" };
479
- await Fx.run(Fx.match(fallbackSignOutDispatch, fallbackSignOutDispatch.kind, {
480
- signOutWithRefreshed: ({ token }) => Fx.from({
481
- ok: async () => {
482
- const client = new ConvexHttpClient(convexUrl);
483
- client.setAuth(token);
484
- await client.action(signOutActionRef);
485
- },
486
- err: (error$1) => error$1
487
- }),
488
- skipRefreshedSignOut: () => Fx.succeed(void 0)
489
- }));
490
- },
491
- err: (fallbackError) => fallbackError
492
- }).pipe(Fx.recover((fallbackError) => {
493
- console.error("[convex-auth/server] proxy sign-out fallback failed", fallbackError);
494
- return Fx.succeed(void 0);
495
- })),
496
- skipFallback: () => Fx.succeed(void 0)
402
+ return Fx.succeed(response);
403
+ },
404
+ started: (startedResult) => Fx.succeed(new Response(JSON.stringify(startedResult), {
405
+ status: 200,
406
+ headers: { "Content-Type": "application/json" }
407
+ })),
408
+ passkeyOptions: (passkeyOptionsResult) => Fx.succeed(new Response(JSON.stringify(passkeyOptionsResult), {
409
+ status: 200,
410
+ headers: { "Content-Type": "application/json" }
411
+ })),
412
+ totpRequired: (totpRequiredResult) => Fx.succeed(new Response(JSON.stringify(totpRequiredResult), {
413
+ status: 200,
414
+ headers: { "Content-Type": "application/json" }
415
+ })),
416
+ totpSetup: (totpSetupResult) => Fx.succeed(new Response(JSON.stringify(totpSetupResult), {
417
+ status: 200,
418
+ headers: { "Content-Type": "application/json" }
419
+ })),
420
+ deviceCode: (deviceCodeResult) => Fx.succeed(new Response(JSON.stringify(deviceCodeResult), {
421
+ status: 200,
422
+ headers: { "Content-Type": "application/json" }
423
+ }))
424
+ })),
425
+ err: (error) => {
426
+ const errorBody = error instanceof ConvexError && typeof error.data === "object" && error.data !== null && "code" in error.data ? {
427
+ error: error.data.message ?? String(error),
428
+ authError: error.data
429
+ } : { error: error instanceof Error ? error.message : String(error) };
430
+ const response = new Response(JSON.stringify(errorBody), {
431
+ status: 400,
432
+ headers: { "Content-Type": "application/json" }
497
433
  });
498
- }), Fx.map(() => void 0)));
499
- const response = new Response(JSON.stringify(null), {
500
- status: 200,
501
- headers: { "Content-Type": "application/json" }
434
+ const clearSession = args.refreshToken !== void 0 && error instanceof ConvexError && typeof error.data === "object" && error.data !== null && error.data.code === "INVALID_REFRESH_TOKEN";
435
+ for (const value of serializeAuthCookies({
436
+ token: clearSession ? null : currentCookies.token,
437
+ refreshToken: clearSession ? null : currentCookies.refreshToken,
438
+ verifier: null
439
+ }, host, cookieConfig, cookieNamespace)) response.headers.append("Set-Cookie", value);
440
+ return response;
441
+ }
442
+ })));
443
+ }),
444
+ sessionStop: (_) => Fx.promise(async () => {
445
+ await Fx.run(Fx.from({
446
+ ok: () => (() => {
447
+ const client = new ConvexHttpClient(convexUrl);
448
+ if (currentCookies.token !== null) client.setAuth(currentCookies.token);
449
+ return client.action(signOutActionRef);
450
+ })(),
451
+ err: (error) => error
452
+ }).pipe(Fx.recover((error) => {
453
+ console.error("[convex-auth/server] proxy sign-out failed", error);
454
+ const fallbackDispatch = currentCookies.refreshToken !== null ? {
455
+ kind: "attemptFallback",
456
+ refreshToken: currentCookies.refreshToken
457
+ } : { kind: "skipFallback" };
458
+ return Fx.match(fallbackDispatch, fallbackDispatch.kind, {
459
+ attemptFallback: ({ refreshToken }) => Fx.from({
460
+ ok: async () => {
461
+ const refreshed = await new ConvexHttpClient(convexUrl).action(signInActionRef, { refreshToken });
462
+ const refreshedTokens = await Fx.run(Fx.match(refreshed, refreshed.kind, {
463
+ signedIn: (signedInResult) => Fx.succeed(signedInResult.tokens),
464
+ redirect: () => Fx.fatal(/* @__PURE__ */ new Error("Invalid `auth:signIn` result for sign-out fallback refresh")),
465
+ started: () => Fx.fatal(/* @__PURE__ */ new Error("Invalid `auth:signIn` result for sign-out fallback refresh")),
466
+ passkeyOptions: () => Fx.fatal(/* @__PURE__ */ new Error("Invalid `auth:signIn` result for sign-out fallback refresh")),
467
+ totpRequired: () => Fx.fatal(/* @__PURE__ */ new Error("Invalid `auth:signIn` result for sign-out fallback refresh")),
468
+ totpSetup: () => Fx.fatal(/* @__PURE__ */ new Error("Invalid `auth:signIn` result for sign-out fallback refresh")),
469
+ deviceCode: () => Fx.fatal(/* @__PURE__ */ new Error("Invalid `auth:signIn` result for sign-out fallback refresh"))
470
+ }));
471
+ const fallbackSignOutDispatch = refreshedTokens !== null ? {
472
+ kind: "signOutWithRefreshed",
473
+ token: refreshedTokens.token
474
+ } : { kind: "skipRefreshedSignOut" };
475
+ await Fx.run(Fx.match(fallbackSignOutDispatch, fallbackSignOutDispatch.kind, {
476
+ signOutWithRefreshed: ({ token }) => Fx.promise(async () => {
477
+ const client = new ConvexHttpClient(convexUrl);
478
+ client.setAuth(token);
479
+ await client.action(signOutActionRef);
480
+ }),
481
+ skipRefreshedSignOut: () => Fx.succeed(void 0)
482
+ }));
483
+ },
484
+ err: (error$1) => error$1
485
+ }).pipe(Fx.recover((fallbackError) => {
486
+ console.error("[convex-auth/server] proxy sign-out fallback failed", fallbackError);
487
+ return Fx.succeed(void 0);
488
+ })),
489
+ skipFallback: () => Fx.succeed(void 0)
502
490
  });
503
- for (const value of serializeAuthCookies({
504
- token: null,
505
- refreshToken: null,
506
- verifier: null
507
- }, host, cookieConfig, cookieNamespace)) response.headers.append("Set-Cookie", value);
508
- return response;
509
- },
510
- err: (e) => e
491
+ }), Fx.map(() => void 0)));
492
+ const response = new Response(JSON.stringify(null), {
493
+ status: 200,
494
+ headers: { "Content-Type": "application/json" }
495
+ });
496
+ for (const value of serializeAuthCookies({
497
+ token: null,
498
+ refreshToken: null,
499
+ verifier: null
500
+ }, host, cookieConfig, cookieNamespace)) response.headers.append("Set-Cookie", value);
501
+ return response;
511
502
  })
512
503
  }));
513
504
  },