@mulverse/mulguard-core 1.0.0

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 (600) hide show
  1. package/README.md +24 -0
  2. package/adapters.d.ts +522 -0
  3. package/adapters.d.ts.map +1 -0
  4. package/adapters.js +170 -0
  5. package/errors.d.ts +429 -0
  6. package/errors.d.ts.map +1 -0
  7. package/errors.js +473 -0
  8. package/index.d.ts +547 -0
  9. package/index.d.ts.map +1 -0
  10. package/index.js +142 -0
  11. package/jwt.d.ts +132 -0
  12. package/jwt.d.ts.map +1 -0
  13. package/jwt.js +123 -0
  14. package/lib/actions/callback/handle-login.d.ts +35 -0
  15. package/lib/actions/callback/handle-login.d.ts.map +1 -0
  16. package/lib/actions/callback/handle-login.js +275 -0
  17. package/lib/actions/callback/index.d.ts +5 -0
  18. package/lib/actions/callback/index.d.ts.map +1 -0
  19. package/lib/actions/callback/index.js +409 -0
  20. package/lib/actions/callback/oauth/callback.d.ts +36 -0
  21. package/lib/actions/callback/oauth/callback.d.ts.map +1 -0
  22. package/lib/actions/callback/oauth/callback.js +248 -0
  23. package/lib/actions/callback/oauth/checks.d.ts +70 -0
  24. package/lib/actions/callback/oauth/checks.d.ts.map +1 -0
  25. package/lib/actions/callback/oauth/checks.js +188 -0
  26. package/lib/actions/callback/oauth/csrf-token.d.ts +33 -0
  27. package/lib/actions/callback/oauth/csrf-token.d.ts.map +1 -0
  28. package/lib/actions/callback/oauth/csrf-token.js +39 -0
  29. package/lib/actions/index.d.ts +6 -0
  30. package/lib/actions/index.d.ts.map +1 -0
  31. package/lib/actions/index.js +5 -0
  32. package/lib/actions/session.d.ts +5 -0
  33. package/lib/actions/session.d.ts.map +1 -0
  34. package/lib/actions/session.js +127 -0
  35. package/lib/actions/signin/authorization-url.d.ts +12 -0
  36. package/lib/actions/signin/authorization-url.d.ts.map +1 -0
  37. package/lib/actions/signin/authorization-url.js +94 -0
  38. package/lib/actions/signin/index.d.ts +4 -0
  39. package/lib/actions/signin/index.d.ts.map +1 -0
  40. package/lib/actions/signin/index.js +22 -0
  41. package/lib/actions/signin/send-token.d.ts +10 -0
  42. package/lib/actions/signin/send-token.d.ts.map +1 -0
  43. package/lib/actions/signin/send-token.js +98 -0
  44. package/lib/actions/signout.d.ts +11 -0
  45. package/lib/actions/signout.d.ts.map +1 -0
  46. package/lib/actions/signout.js +30 -0
  47. package/lib/actions/webauthn-options.d.ts +8 -0
  48. package/lib/actions/webauthn-options.d.ts.map +1 -0
  49. package/lib/actions/webauthn-options.js +60 -0
  50. package/lib/index.d.ts +2 -0
  51. package/lib/index.d.ts.map +1 -0
  52. package/lib/index.js +70 -0
  53. package/lib/init.d.ts +25 -0
  54. package/lib/init.d.ts.map +1 -0
  55. package/lib/init.js +172 -0
  56. package/lib/pages/error.d.ts +17 -0
  57. package/lib/pages/error.d.ts.map +1 -0
  58. package/lib/pages/error.js +40 -0
  59. package/lib/pages/index.d.ts +42 -0
  60. package/lib/pages/index.d.ts.map +1 -0
  61. package/lib/pages/index.js +136 -0
  62. package/lib/pages/signin.d.ts +10 -0
  63. package/lib/pages/signin.d.ts.map +1 -0
  64. package/lib/pages/signin.js +75 -0
  65. package/lib/pages/signout.d.ts +8 -0
  66. package/lib/pages/signout.d.ts.map +1 -0
  67. package/lib/pages/signout.js +17 -0
  68. package/lib/pages/styles.d.ts +3 -0
  69. package/lib/pages/styles.d.ts.map +1 -0
  70. package/lib/pages/styles.js +381 -0
  71. package/lib/pages/verify-request.d.ts +8 -0
  72. package/lib/pages/verify-request.d.ts.map +1 -0
  73. package/lib/pages/verify-request.js +11 -0
  74. package/lib/symbols.d.ts +50 -0
  75. package/lib/symbols.d.ts.map +1 -0
  76. package/lib/symbols.js +57 -0
  77. package/lib/utils/actions.d.ts +3 -0
  78. package/lib/utils/actions.d.ts.map +1 -0
  79. package/lib/utils/actions.js +14 -0
  80. package/lib/utils/assert.d.ts +14 -0
  81. package/lib/utils/assert.d.ts.map +1 -0
  82. package/lib/utils/assert.js +168 -0
  83. package/lib/utils/callback-url.d.ts +17 -0
  84. package/lib/utils/callback-url.d.ts.map +1 -0
  85. package/lib/utils/callback-url.js +27 -0
  86. package/lib/utils/cookie.d.ts +111 -0
  87. package/lib/utils/cookie.d.ts.map +1 -0
  88. package/lib/utils/cookie.js +205 -0
  89. package/lib/utils/date.d.ts +7 -0
  90. package/lib/utils/date.d.ts.map +1 -0
  91. package/lib/utils/date.js +8 -0
  92. package/lib/utils/email.d.ts +20 -0
  93. package/lib/utils/email.d.ts.map +1 -0
  94. package/lib/utils/email.js +57 -0
  95. package/lib/utils/env.d.ts +9 -0
  96. package/lib/utils/env.d.ts.map +1 -0
  97. package/lib/utils/env.js +96 -0
  98. package/lib/utils/logger.d.ts +18 -0
  99. package/lib/utils/logger.d.ts.map +1 -0
  100. package/lib/utils/logger.js +50 -0
  101. package/lib/utils/merge.d.ts +3 -0
  102. package/lib/utils/merge.d.ts.map +1 -0
  103. package/lib/utils/merge.js +23 -0
  104. package/lib/utils/providers.d.ts +19 -0
  105. package/lib/utils/providers.d.ts.map +1 -0
  106. package/lib/utils/providers.js +149 -0
  107. package/lib/utils/session.d.ts +7 -0
  108. package/lib/utils/session.d.ts.map +1 -0
  109. package/lib/utils/session.js +29 -0
  110. package/lib/utils/web.d.ts +10 -0
  111. package/lib/utils/web.d.ts.map +1 -0
  112. package/lib/utils/web.js +109 -0
  113. package/lib/utils/webauthn-client.d.ts +30 -0
  114. package/lib/utils/webauthn-client.d.ts.map +1 -0
  115. package/lib/utils/webauthn-client.js +197 -0
  116. package/lib/utils/webauthn-utils.d.ts +81 -0
  117. package/lib/utils/webauthn-utils.d.ts.map +1 -0
  118. package/lib/utils/webauthn-utils.js +343 -0
  119. package/lib/vendored/cookie.d.ts +120 -0
  120. package/lib/vendored/cookie.d.ts.map +1 -0
  121. package/lib/vendored/cookie.js +237 -0
  122. package/package.json +118 -0
  123. package/providers/42-school.d.ts +240 -0
  124. package/providers/42-school.d.ts.map +1 -0
  125. package/providers/42-school.js +78 -0
  126. package/providers/apple.d.ts +149 -0
  127. package/providers/apple.d.ts.map +1 -0
  128. package/providers/apple.js +104 -0
  129. package/providers/asgardeo.d.ts +102 -0
  130. package/providers/asgardeo.d.ts.map +1 -0
  131. package/providers/asgardeo.js +93 -0
  132. package/providers/atlassian.d.ts +94 -0
  133. package/providers/atlassian.d.ts.map +1 -0
  134. package/providers/atlassian.js +84 -0
  135. package/providers/auth0.d.ts +116 -0
  136. package/providers/auth0.d.ts.map +1 -0
  137. package/providers/auth0.js +49 -0
  138. package/providers/authentik.d.ts +90 -0
  139. package/providers/authentik.d.ts.map +1 -0
  140. package/providers/authentik.js +65 -0
  141. package/providers/azure-ad-b2c.d.ts +104 -0
  142. package/providers/azure-ad-b2c.d.ts.map +1 -0
  143. package/providers/azure-ad-b2c.js +100 -0
  144. package/providers/azure-ad.d.ts +19 -0
  145. package/providers/azure-ad.d.ts.map +1 -0
  146. package/providers/azure-ad.js +23 -0
  147. package/providers/azure-devops.d.ts +128 -0
  148. package/providers/azure-devops.d.ts.map +1 -0
  149. package/providers/azure-devops.js +158 -0
  150. package/providers/bankid-no.d.ts +134 -0
  151. package/providers/bankid-no.d.ts.map +1 -0
  152. package/providers/bankid-no.js +65 -0
  153. package/providers/battlenet.d.ts +85 -0
  154. package/providers/battlenet.d.ts.map +1 -0
  155. package/providers/battlenet.js +81 -0
  156. package/providers/beyondidentity.d.ts +77 -0
  157. package/providers/beyondidentity.d.ts.map +1 -0
  158. package/providers/beyondidentity.js +84 -0
  159. package/providers/bitbucket.d.ts +89 -0
  160. package/providers/bitbucket.d.ts.map +1 -0
  161. package/providers/bitbucket.js +92 -0
  162. package/providers/box.d.ts +63 -0
  163. package/providers/box.d.ts.map +1 -0
  164. package/providers/box.js +73 -0
  165. package/providers/boxyhq-saml.d.ts +121 -0
  166. package/providers/boxyhq-saml.d.ts.map +1 -0
  167. package/providers/boxyhq-saml.js +127 -0
  168. package/providers/bungie.d.ts +167 -0
  169. package/providers/bungie.d.ts.map +1 -0
  170. package/providers/bungie.js +174 -0
  171. package/providers/click-up.d.ts +75 -0
  172. package/providers/click-up.d.ts.map +1 -0
  173. package/providers/click-up.js +89 -0
  174. package/providers/cognito.d.ts +81 -0
  175. package/providers/cognito.d.ts.map +1 -0
  176. package/providers/cognito.js +73 -0
  177. package/providers/coinbase.d.ts +69 -0
  178. package/providers/coinbase.d.ts.map +1 -0
  179. package/providers/coinbase.js +78 -0
  180. package/providers/concept2.d.ts +81 -0
  181. package/providers/concept2.d.ts.map +1 -0
  182. package/providers/concept2.js +86 -0
  183. package/providers/credentials.d.ts +132 -0
  184. package/providers/credentials.d.ts.map +1 -0
  185. package/providers/credentials.js +74 -0
  186. package/providers/descope.d.ts +91 -0
  187. package/providers/descope.d.ts.map +1 -0
  188. package/providers/descope.js +78 -0
  189. package/providers/discord.d.ts +139 -0
  190. package/providers/discord.d.ts.map +1 -0
  191. package/providers/discord.js +86 -0
  192. package/providers/dribbble.d.ts +88 -0
  193. package/providers/dribbble.d.ts.map +1 -0
  194. package/providers/dribbble.js +85 -0
  195. package/providers/dropbox.d.ts +65 -0
  196. package/providers/dropbox.d.ts.map +1 -0
  197. package/providers/dropbox.js +88 -0
  198. package/providers/duende-identity-server6.d.ts +91 -0
  199. package/providers/duende-identity-server6.d.ts.map +1 -0
  200. package/providers/duende-identity-server6.js +80 -0
  201. package/providers/email.d.ts +41 -0
  202. package/providers/email.d.ts.map +1 -0
  203. package/providers/email.js +18 -0
  204. package/providers/eventbrite.d.ts +78 -0
  205. package/providers/eventbrite.d.ts.map +1 -0
  206. package/providers/eventbrite.js +88 -0
  207. package/providers/eveonline.d.ts +94 -0
  208. package/providers/eveonline.d.ts.map +1 -0
  209. package/providers/eveonline.js +92 -0
  210. package/providers/facebook.d.ts +84 -0
  211. package/providers/facebook.d.ts.map +1 -0
  212. package/providers/facebook.js +93 -0
  213. package/providers/faceit.d.ts +64 -0
  214. package/providers/faceit.d.ts.map +1 -0
  215. package/providers/faceit.js +74 -0
  216. package/providers/figma.d.ts +75 -0
  217. package/providers/figma.d.ts.map +1 -0
  218. package/providers/figma.js +81 -0
  219. package/providers/forwardemail.d.ts +4 -0
  220. package/providers/forwardemail.d.ts.map +1 -0
  221. package/providers/forwardemail.js +32 -0
  222. package/providers/foursquare.d.ts +71 -0
  223. package/providers/foursquare.d.ts.map +1 -0
  224. package/providers/foursquare.js +91 -0
  225. package/providers/freshbooks.d.ts +66 -0
  226. package/providers/freshbooks.d.ts.map +1 -0
  227. package/providers/freshbooks.js +76 -0
  228. package/providers/frontegg.d.ts +95 -0
  229. package/providers/frontegg.d.ts.map +1 -0
  230. package/providers/frontegg.js +88 -0
  231. package/providers/fusionauth.d.ts +279 -0
  232. package/providers/fusionauth.d.ts.map +1 -0
  233. package/providers/fusionauth.js +292 -0
  234. package/providers/github.d.ts +127 -0
  235. package/providers/github.d.ts.map +1 -0
  236. package/providers/github.js +115 -0
  237. package/providers/gitlab.d.ts +115 -0
  238. package/providers/gitlab.d.ts.map +1 -0
  239. package/providers/gitlab.js +75 -0
  240. package/providers/google.d.ts +138 -0
  241. package/providers/google.d.ts.map +1 -0
  242. package/providers/google.js +119 -0
  243. package/providers/hubspot.d.ts +76 -0
  244. package/providers/hubspot.d.ts.map +1 -0
  245. package/providers/hubspot.js +93 -0
  246. package/providers/huggingface.d.ts +216 -0
  247. package/providers/huggingface.d.ts.map +1 -0
  248. package/providers/huggingface.js +101 -0
  249. package/providers/identity-server4.d.ts +69 -0
  250. package/providers/identity-server4.d.ts.map +1 -0
  251. package/providers/identity-server4.js +64 -0
  252. package/providers/index.d.ts +61 -0
  253. package/providers/index.d.ts.map +1 -0
  254. package/providers/index.js +3 -0
  255. package/providers/instagram.d.ts +74 -0
  256. package/providers/instagram.d.ts.map +1 -0
  257. package/providers/instagram.js +87 -0
  258. package/providers/kakao.d.ts +148 -0
  259. package/providers/kakao.d.ts.map +1 -0
  260. package/providers/kakao.js +103 -0
  261. package/providers/keycloak.d.ts +100 -0
  262. package/providers/keycloak.d.ts.map +1 -0
  263. package/providers/keycloak.js +73 -0
  264. package/providers/kinde.d.ts +73 -0
  265. package/providers/kinde.d.ts.map +1 -0
  266. package/providers/kinde.js +51 -0
  267. package/providers/line.d.ts +83 -0
  268. package/providers/line.d.ts.map +1 -0
  269. package/providers/line.js +73 -0
  270. package/providers/linkedin.d.ts +77 -0
  271. package/providers/linkedin.d.ts.map +1 -0
  272. package/providers/linkedin.js +65 -0
  273. package/providers/logto.d.ts +98 -0
  274. package/providers/logto.d.ts.map +1 -0
  275. package/providers/logto.js +81 -0
  276. package/providers/loops.d.ts +40 -0
  277. package/providers/loops.d.ts.map +1 -0
  278. package/providers/loops.js +59 -0
  279. package/providers/mailchimp.d.ts +66 -0
  280. package/providers/mailchimp.d.ts.map +1 -0
  281. package/providers/mailchimp.js +76 -0
  282. package/providers/mailgun.d.ts +55 -0
  283. package/providers/mailgun.d.ts.map +1 -0
  284. package/providers/mailgun.js +74 -0
  285. package/providers/mailru.d.ts +63 -0
  286. package/providers/mailru.d.ts.map +1 -0
  287. package/providers/mailru.js +61 -0
  288. package/providers/mastodon.d.ts +90 -0
  289. package/providers/mastodon.d.ts.map +1 -0
  290. package/providers/mastodon.js +75 -0
  291. package/providers/mattermost.d.ts +132 -0
  292. package/providers/mattermost.d.ts.map +1 -0
  293. package/providers/mattermost.js +83 -0
  294. package/providers/medium.d.ts +68 -0
  295. package/providers/medium.d.ts.map +1 -0
  296. package/providers/medium.js +84 -0
  297. package/providers/microsoft-entra-id.d.ts +428 -0
  298. package/providers/microsoft-entra-id.d.ts.map +1 -0
  299. package/providers/microsoft-entra-id.js +156 -0
  300. package/providers/naver.d.ts +80 -0
  301. package/providers/naver.d.ts.map +1 -0
  302. package/providers/naver.js +79 -0
  303. package/providers/netlify.d.ts +66 -0
  304. package/providers/netlify.d.ts.map +1 -0
  305. package/providers/netlify.js +85 -0
  306. package/providers/netsuite.d.ts +189 -0
  307. package/providers/netsuite.d.ts.map +1 -0
  308. package/providers/netsuite.js +170 -0
  309. package/providers/nextcloud.d.ts +150 -0
  310. package/providers/nextcloud.d.ts.map +1 -0
  311. package/providers/nextcloud.js +99 -0
  312. package/providers/nodemailer.d.ts +27 -0
  313. package/providers/nodemailer.d.ts.map +1 -0
  314. package/providers/nodemailer.js +34 -0
  315. package/providers/notion.d.ts +99 -0
  316. package/providers/notion.d.ts.map +1 -0
  317. package/providers/notion.js +110 -0
  318. package/providers/oauth.d.ts +188 -0
  319. package/providers/oauth.d.ts.map +1 -0
  320. package/providers/oauth.js +1 -0
  321. package/providers/okta.d.ts +99 -0
  322. package/providers/okta.d.ts.map +1 -0
  323. package/providers/okta.js +63 -0
  324. package/providers/onelogin.d.ts +65 -0
  325. package/providers/onelogin.d.ts.map +1 -0
  326. package/providers/onelogin.js +61 -0
  327. package/providers/ory-hydra.d.ts +79 -0
  328. package/providers/ory-hydra.d.ts.map +1 -0
  329. package/providers/ory-hydra.js +67 -0
  330. package/providers/osso.d.ts +79 -0
  331. package/providers/osso.d.ts.map +1 -0
  332. package/providers/osso.js +77 -0
  333. package/providers/osu.d.ts +116 -0
  334. package/providers/osu.d.ts.map +1 -0
  335. package/providers/osu.js +75 -0
  336. package/providers/passage.d.ts +88 -0
  337. package/providers/passage.d.ts.map +1 -0
  338. package/providers/passage.js +75 -0
  339. package/providers/passkey.d.ts +65 -0
  340. package/providers/passkey.d.ts.map +1 -0
  341. package/providers/passkey.js +87 -0
  342. package/providers/patreon.d.ts +73 -0
  343. package/providers/patreon.d.ts.map +1 -0
  344. package/providers/patreon.js +77 -0
  345. package/providers/ping-id.d.ts +57 -0
  346. package/providers/ping-id.d.ts.map +1 -0
  347. package/providers/ping-id.js +40 -0
  348. package/providers/pinterest.d.ts +79 -0
  349. package/providers/pinterest.d.ts.map +1 -0
  350. package/providers/pinterest.js +85 -0
  351. package/providers/pipedrive.d.ts +99 -0
  352. package/providers/pipedrive.d.ts.map +1 -0
  353. package/providers/pipedrive.js +71 -0
  354. package/providers/postmark.d.ts +4 -0
  355. package/providers/postmark.d.ts.map +1 -0
  356. package/providers/postmark.js +36 -0
  357. package/providers/provider-types.d.ts +3 -0
  358. package/providers/provider-types.d.ts.map +1 -0
  359. package/providers/provider-types.js +1 -0
  360. package/providers/reddit.d.ts +88 -0
  361. package/providers/reddit.d.ts.map +1 -0
  362. package/providers/reddit.js +90 -0
  363. package/providers/resend.d.ts +4 -0
  364. package/providers/resend.d.ts.map +1 -0
  365. package/providers/resend.js +32 -0
  366. package/providers/roblox.d.ts +67 -0
  367. package/providers/roblox.d.ts.map +1 -0
  368. package/providers/roblox.js +53 -0
  369. package/providers/salesforce.d.ts +59 -0
  370. package/providers/salesforce.d.ts.map +1 -0
  371. package/providers/salesforce.js +52 -0
  372. package/providers/sendgrid.d.ts +4 -0
  373. package/providers/sendgrid.d.ts.map +1 -0
  374. package/providers/sendgrid.js +35 -0
  375. package/providers/simplelogin.d.ts +87 -0
  376. package/providers/simplelogin.d.ts.map +1 -0
  377. package/providers/simplelogin.js +83 -0
  378. package/providers/slack.d.ts +102 -0
  379. package/providers/slack.d.ts.map +1 -0
  380. package/providers/slack.js +69 -0
  381. package/providers/spotify.d.ts +75 -0
  382. package/providers/spotify.d.ts.map +1 -0
  383. package/providers/spotify.js +73 -0
  384. package/providers/strava.d.ts +68 -0
  385. package/providers/strava.d.ts.map +1 -0
  386. package/providers/strava.js +80 -0
  387. package/providers/threads.d.ts +108 -0
  388. package/providers/threads.d.ts.map +1 -0
  389. package/providers/threads.js +89 -0
  390. package/providers/tiktok.d.ts +248 -0
  391. package/providers/tiktok.d.ts.map +1 -0
  392. package/providers/tiktok.js +195 -0
  393. package/providers/todoist.d.ts +76 -0
  394. package/providers/todoist.d.ts.map +1 -0
  395. package/providers/todoist.js +97 -0
  396. package/providers/trakt.d.ts +93 -0
  397. package/providers/trakt.d.ts.map +1 -0
  398. package/providers/trakt.js +91 -0
  399. package/providers/twitch.d.ts +71 -0
  400. package/providers/twitch.d.ts.map +1 -0
  401. package/providers/twitch.js +96 -0
  402. package/providers/twitter.d.ts +183 -0
  403. package/providers/twitter.d.ts.map +1 -0
  404. package/providers/twitter.js +100 -0
  405. package/providers/united-effects.d.ts +80 -0
  406. package/providers/united-effects.d.ts.map +1 -0
  407. package/providers/united-effects.js +72 -0
  408. package/providers/vipps.d.ts +71 -0
  409. package/providers/vipps.d.ts.map +1 -0
  410. package/providers/vipps.js +33 -0
  411. package/providers/vk.d.ts +334 -0
  412. package/providers/vk.d.ts.map +1 -0
  413. package/providers/vk.js +103 -0
  414. package/providers/webauthn.d.ts +148 -0
  415. package/providers/webauthn.d.ts.map +1 -0
  416. package/providers/webauthn.js +128 -0
  417. package/providers/webex.d.ts +78 -0
  418. package/providers/webex.d.ts.map +1 -0
  419. package/providers/webex.js +73 -0
  420. package/providers/wechat.d.ts +78 -0
  421. package/providers/wechat.d.ts.map +1 -0
  422. package/providers/wechat.js +105 -0
  423. package/providers/wikimedia.d.ts +99 -0
  424. package/providers/wikimedia.d.ts.map +1 -0
  425. package/providers/wikimedia.js +90 -0
  426. package/providers/wordpress.d.ts +65 -0
  427. package/providers/wordpress.d.ts.map +1 -0
  428. package/providers/wordpress.js +71 -0
  429. package/providers/workos.d.ts +154 -0
  430. package/providers/workos.d.ts.map +1 -0
  431. package/providers/workos.js +143 -0
  432. package/providers/yandex.d.ts +131 -0
  433. package/providers/yandex.d.ts.map +1 -0
  434. package/providers/yandex.js +80 -0
  435. package/providers/zitadel.d.ts +117 -0
  436. package/providers/zitadel.d.ts.map +1 -0
  437. package/providers/zitadel.js +95 -0
  438. package/providers/zoho.d.ts +63 -0
  439. package/providers/zoho.d.ts.map +1 -0
  440. package/providers/zoho.js +79 -0
  441. package/providers/zoom.d.ts +93 -0
  442. package/providers/zoom.d.ts.map +1 -0
  443. package/providers/zoom.js +82 -0
  444. package/src/adapters/server-actions-helpers.ts +126 -0
  445. package/src/adapters.ts +603 -0
  446. package/src/errors.ts +551 -0
  447. package/src/index.ts +689 -0
  448. package/src/jwt.ts +283 -0
  449. package/src/lib/actions/callback/handle-login.ts +334 -0
  450. package/src/lib/actions/callback/index.ts +554 -0
  451. package/src/lib/actions/callback/oauth/callback.ts +347 -0
  452. package/src/lib/actions/callback/oauth/checks.ts +258 -0
  453. package/src/lib/actions/callback/oauth/csrf-token.ts +60 -0
  454. package/src/lib/actions/index.ts +5 -0
  455. package/src/lib/actions/session.ts +167 -0
  456. package/src/lib/actions/signin/authorization-url.ts +123 -0
  457. package/src/lib/actions/signin/index.ts +37 -0
  458. package/src/lib/actions/signin/send-token.ts +124 -0
  459. package/src/lib/actions/signout.ts +38 -0
  460. package/src/lib/actions/webauthn-options.ts +100 -0
  461. package/src/lib/index.ts +97 -0
  462. package/src/lib/init.ts +236 -0
  463. package/src/lib/pages/error.tsx +106 -0
  464. package/src/lib/pages/index.ts +181 -0
  465. package/src/lib/pages/signin.tsx +255 -0
  466. package/src/lib/pages/signout.tsx +49 -0
  467. package/src/lib/pages/styles.css +377 -0
  468. package/src/lib/pages/styles.ts +381 -0
  469. package/src/lib/pages/verify-request.tsx +36 -0
  470. package/src/lib/symbols.ts +60 -0
  471. package/src/lib/utils/actions.ts +17 -0
  472. package/src/lib/utils/assert.ts +259 -0
  473. package/src/lib/utils/callback-url.ts +42 -0
  474. package/src/lib/utils/cookie.ts +248 -0
  475. package/src/lib/utils/date.ts +8 -0
  476. package/src/lib/utils/email.ts +65 -0
  477. package/src/lib/utils/env.ts +113 -0
  478. package/src/lib/utils/logger.ts +75 -0
  479. package/src/lib/utils/merge.ts +30 -0
  480. package/src/lib/utils/providers.ts +203 -0
  481. package/src/lib/utils/session.ts +41 -0
  482. package/src/lib/utils/web.ts +151 -0
  483. package/src/lib/utils/webauthn-client.js +229 -0
  484. package/src/lib/utils/webauthn-utils.ts +531 -0
  485. package/src/lib/vendored/cookie.ts +383 -0
  486. package/src/providers/42-school.ts +256 -0
  487. package/src/providers/apple.ts +206 -0
  488. package/src/providers/asgardeo.ts +118 -0
  489. package/src/providers/atlassian.ts +120 -0
  490. package/src/providers/auth0.ts +127 -0
  491. package/src/providers/authentik.ts +100 -0
  492. package/src/providers/azure-ad-b2c.ts +124 -0
  493. package/src/providers/azure-ad.ts +30 -0
  494. package/src/providers/azure-devops.ts +184 -0
  495. package/src/providers/bankid-no.ts +161 -0
  496. package/src/providers/battlenet.ts +107 -0
  497. package/src/providers/beyondidentity.ts +102 -0
  498. package/src/providers/bitbucket.ts +122 -0
  499. package/src/providers/box.ts +87 -0
  500. package/src/providers/boxyhq-saml.ts +148 -0
  501. package/src/providers/bungie.ts +192 -0
  502. package/src/providers/click-up.ts +104 -0
  503. package/src/providers/cognito.ts +94 -0
  504. package/src/providers/coinbase.ts +93 -0
  505. package/src/providers/concept2.ts +108 -0
  506. package/src/providers/credentials.ts +157 -0
  507. package/src/providers/descope.ts +105 -0
  508. package/src/providers/discord.ts +176 -0
  509. package/src/providers/dribbble.ts +122 -0
  510. package/src/providers/dropbox.ts +102 -0
  511. package/src/providers/duende-identity-server6.ts +101 -0
  512. package/src/providers/email.ts +60 -0
  513. package/src/providers/eventbrite.ts +105 -0
  514. package/src/providers/eveonline.ts +117 -0
  515. package/src/providers/facebook.ts +119 -0
  516. package/src/providers/faceit.ts +90 -0
  517. package/src/providers/figma.ts +105 -0
  518. package/src/providers/forwardemail.ts +37 -0
  519. package/src/providers/foursquare.ts +105 -0
  520. package/src/providers/freshbooks.ts +90 -0
  521. package/src/providers/frontegg.ts +111 -0
  522. package/src/providers/fusionauth.ts +336 -0
  523. package/src/providers/github.ts +187 -0
  524. package/src/providers/gitlab.ts +140 -0
  525. package/src/providers/google.ts +152 -0
  526. package/src/providers/hubspot.ts +117 -0
  527. package/src/providers/huggingface.ts +234 -0
  528. package/src/providers/identity-server4.ts +78 -0
  529. package/src/providers/index.ts +115 -0
  530. package/src/providers/instagram.ts +103 -0
  531. package/src/providers/kakao.ts +184 -0
  532. package/src/providers/keycloak.ts +111 -0
  533. package/src/providers/kinde.ts +85 -0
  534. package/src/providers/line.ts +99 -0
  535. package/src/providers/linkedin.ts +91 -0
  536. package/src/providers/logto.ts +122 -0
  537. package/src/providers/loops.ts +79 -0
  538. package/src/providers/mailchimp.ts +90 -0
  539. package/src/providers/mailgun.ts +98 -0
  540. package/src/providers/mailru.ts +75 -0
  541. package/src/providers/mastodon.ts +112 -0
  542. package/src/providers/mattermost.ts +154 -0
  543. package/src/providers/medium.ts +89 -0
  544. package/src/providers/microsoft-entra-id.ts +497 -0
  545. package/src/providers/naver.ts +102 -0
  546. package/src/providers/netlify.ts +90 -0
  547. package/src/providers/netsuite.ts +225 -0
  548. package/src/providers/nextcloud.ts +207 -0
  549. package/src/providers/nodemailer.ts +84 -0
  550. package/src/providers/notion.ts +166 -0
  551. package/src/providers/oauth.ts +310 -0
  552. package/src/providers/okta.ts +111 -0
  553. package/src/providers/onelogin.ts +75 -0
  554. package/src/providers/ory-hydra.ts +93 -0
  555. package/src/providers/osso.ts +91 -0
  556. package/src/providers/osu.ts +138 -0
  557. package/src/providers/passage.ts +103 -0
  558. package/src/providers/passkey.ts +94 -0
  559. package/src/providers/patreon.ts +98 -0
  560. package/src/providers/ping-id.ts +68 -0
  561. package/src/providers/pinterest.ts +106 -0
  562. package/src/providers/pipedrive.ts +120 -0
  563. package/src/providers/postmark.ts +38 -0
  564. package/src/providers/provider-types.ts +107 -0
  565. package/src/providers/reddit.ts +104 -0
  566. package/src/providers/resend.ts +35 -0
  567. package/src/providers/roblox.ts +94 -0
  568. package/src/providers/salesforce.ts +73 -0
  569. package/src/providers/sendgrid.ts +36 -0
  570. package/src/providers/simplelogin.ts +107 -0
  571. package/src/providers/slack.ts +115 -0
  572. package/src/providers/spotify.ts +99 -0
  573. package/src/providers/strava.ts +101 -0
  574. package/src/providers/threads.ts +135 -0
  575. package/src/providers/tiktok.ts +319 -0
  576. package/src/providers/todoist.ts +122 -0
  577. package/src/providers/trakt.ts +120 -0
  578. package/src/providers/twitch.ts +121 -0
  579. package/src/providers/twitter.ts +207 -0
  580. package/src/providers/united-effects.ts +89 -0
  581. package/src/providers/vipps.ts +86 -0
  582. package/src/providers/vk.ts +401 -0
  583. package/src/providers/webauthn.ts +296 -0
  584. package/src/providers/webex.ts +102 -0
  585. package/src/providers/wechat.ts +141 -0
  586. package/src/providers/wikimedia.ts +258 -0
  587. package/src/providers/wordpress.ts +86 -0
  588. package/src/providers/workos.ts +180 -0
  589. package/src/providers/yandex.ts +159 -0
  590. package/src/providers/zitadel.ts +128 -0
  591. package/src/providers/zoho.ts +84 -0
  592. package/src/providers/zoom.ts +119 -0
  593. package/src/types.ts +430 -0
  594. package/src/warnings.ts +21 -0
  595. package/types.d.ts +309 -0
  596. package/types.d.ts.map +1 -0
  597. package/types.js +53 -0
  598. package/warnings.d.ts +17 -0
  599. package/warnings.d.ts.map +1 -0
  600. package/warnings.js +1 -0
@@ -0,0 +1,236 @@
1
+ import * as jwt from "../jwt.js"
2
+ import { createCallbackUrl } from "./utils/callback-url.js"
3
+ import * as cookie from "./utils/cookie.js"
4
+ import { createCSRFToken } from "./actions/callback/oauth/csrf-token.js"
5
+
6
+ import { AdapterError, EventError } from "../errors.js"
7
+ import parseProviders from "./utils/providers.js"
8
+ import { setLogger, type LoggerInstance } from "./utils/logger.js"
9
+ import { merge } from "./utils/merge.js"
10
+
11
+ import type { InternalOptions, RequestInternal } from "../types.js"
12
+ import type { AuthConfig } from "../index.js"
13
+ import { createServerActionsAdapter } from "../adapters/server-actions-helpers.js"
14
+
15
+ interface InitParams {
16
+ url: URL
17
+ authOptions: AuthConfig
18
+ providerId?: string
19
+ action: InternalOptions["action"]
20
+ /** Callback URL value extracted from the incoming request. */
21
+ callbackUrl?: string
22
+ /** CSRF token value extracted from the incoming request. From body if POST, from query if GET */
23
+ csrfToken?: string
24
+ /** Is the incoming request a POST request? */
25
+ csrfDisabled: boolean
26
+ isPost: boolean
27
+ cookies: RequestInternal["cookies"]
28
+ }
29
+
30
+ export const defaultCallbacks: InternalOptions["callbacks"] = {
31
+ signIn() {
32
+ return true
33
+ },
34
+ redirect({ url, baseUrl }) {
35
+ if (url.startsWith("/")) return `${baseUrl}${url}`
36
+ else if (new URL(url).origin === baseUrl) return url
37
+ return baseUrl
38
+ },
39
+ session({ session }) {
40
+ return {
41
+ user: {
42
+ name: session.user?.name,
43
+ email: session.user?.email,
44
+ image: session.user?.image,
45
+ },
46
+ expires: session.expires?.toISOString?.() ?? session.expires,
47
+ }
48
+ },
49
+ jwt({ token }) {
50
+ return token
51
+ },
52
+ }
53
+
54
+ /** Initialize all internal options and cookies. */
55
+ export async function init({
56
+ authOptions: config,
57
+ providerId,
58
+ action,
59
+ url,
60
+ cookies: reqCookies,
61
+ callbackUrl: reqCallbackUrl,
62
+ csrfToken: reqCsrfToken,
63
+ csrfDisabled,
64
+ isPost,
65
+ }: InitParams): Promise<{
66
+ options: InternalOptions
67
+ cookies: cookie.Cookie[]
68
+ }> {
69
+ const logger = setLogger(config)
70
+ const { providers, provider } = parseProviders({ url, providerId, config })
71
+
72
+ const maxAge = 30 * 24 * 60 * 60 // Sessions expire after 30 days of being idle by default
73
+
74
+ let isOnRedirectProxy = false
75
+ if (
76
+ (provider?.type === "oauth" || provider?.type === "oidc") &&
77
+ provider.redirectProxyUrl
78
+ ) {
79
+ try {
80
+ isOnRedirectProxy =
81
+ new URL(provider.redirectProxyUrl).origin === url.origin
82
+ } catch {
83
+ throw new TypeError(
84
+ `redirectProxyUrl must be a valid URL. Received: ${provider.redirectProxyUrl}`
85
+ )
86
+ }
87
+ }
88
+
89
+ // User provided options are overridden by other options,
90
+ // except for the options with special handling above
91
+ const options: InternalOptions = {
92
+ debug: false,
93
+ pages: {},
94
+ theme: {
95
+ colorScheme: "auto",
96
+ logo: "",
97
+ brandColor: "",
98
+ buttonText: "",
99
+ },
100
+ // Custom options override defaults
101
+ ...config,
102
+ // These computed settings can have values in userOptions but we override them
103
+ // and are request-specific.
104
+ url,
105
+ action,
106
+ // @ts-expect-errors
107
+ provider,
108
+ cookies: merge(
109
+ cookie.defaultCookies(
110
+ config.useSecureCookies ?? url.protocol === "https:"
111
+ ),
112
+ config.cookies
113
+ ),
114
+ providers,
115
+ // Session options
116
+ session: {
117
+ // If no adapter or serverActions specified, force use of JSON Web Tokens (stateless)
118
+ strategy: (config.adapter || config.serverActions) ? "database" : "jwt",
119
+ maxAge,
120
+ updateAge: 24 * 60 * 60,
121
+ generateSessionToken: () => crypto.randomUUID(),
122
+ ...config.session,
123
+ },
124
+ // JWT options
125
+ jwt: {
126
+ secret: config.secret!, // Asserted in assert.ts
127
+ maxAge: config.session?.maxAge ?? maxAge, // default to same as `session.maxAge`
128
+ encode: jwt.encode,
129
+ decode: jwt.decode,
130
+ ...config.jwt,
131
+ },
132
+ // Event messages
133
+ events: eventsErrorHandler(config.events ?? {}, logger),
134
+ adapter: adapterErrorHandler(
135
+ config.adapter || (config.serverActions ? createServerActionsAdapter(config.serverActions) : undefined),
136
+ logger
137
+ ),
138
+ // Callback functions
139
+ callbacks: { ...defaultCallbacks, ...config.callbacks },
140
+ logger,
141
+ callbackUrl: url.origin,
142
+ isOnRedirectProxy,
143
+ experimental: {
144
+ ...config.experimental,
145
+ },
146
+ }
147
+
148
+ // Init cookies
149
+
150
+ const cookies: cookie.Cookie[] = []
151
+
152
+ if (csrfDisabled) {
153
+ options.csrfTokenVerified = true
154
+ } else {
155
+ const {
156
+ csrfToken,
157
+ cookie: csrfCookie,
158
+ csrfTokenVerified,
159
+ } = await createCSRFToken({
160
+ options,
161
+ cookieValue: reqCookies?.[options.cookies.csrfToken.name],
162
+ isPost,
163
+ bodyValue: reqCsrfToken,
164
+ })
165
+
166
+ options.csrfToken = csrfToken
167
+ options.csrfTokenVerified = csrfTokenVerified
168
+
169
+ if (csrfCookie) {
170
+ cookies.push({
171
+ name: options.cookies.csrfToken.name,
172
+ value: csrfCookie,
173
+ options: options.cookies.csrfToken.options,
174
+ })
175
+ }
176
+ }
177
+
178
+ const { callbackUrl, callbackUrlCookie } = await createCallbackUrl({
179
+ options,
180
+ cookieValue: reqCookies?.[options.cookies.callbackUrl.name],
181
+ paramValue: reqCallbackUrl,
182
+ })
183
+ options.callbackUrl = callbackUrl
184
+ if (callbackUrlCookie) {
185
+ cookies.push({
186
+ name: options.cookies.callbackUrl.name,
187
+ value: callbackUrlCookie,
188
+ options: options.cookies.callbackUrl.options,
189
+ })
190
+ }
191
+
192
+ return { options, cookies }
193
+ }
194
+
195
+ type Method = (...args: any[]) => Promise<any>
196
+
197
+ /** Wraps an object of methods and adds error handling. */
198
+ function eventsErrorHandler(
199
+ methods: Partial<InternalOptions["events"]>,
200
+ logger: LoggerInstance
201
+ ): Partial<InternalOptions["events"]> {
202
+ return Object.keys(methods).reduce<any>((acc, name) => {
203
+ acc[name] = async (...args: any[]) => {
204
+ try {
205
+ const method: Method = methods[name as keyof Method]
206
+ return await method(...args)
207
+ } catch (e) {
208
+ logger.error(new EventError(e as Error))
209
+ }
210
+ }
211
+ return acc
212
+ }, {})
213
+ }
214
+
215
+ /** Handles adapter induced errors. */
216
+ function adapterErrorHandler(
217
+ adapter: AuthConfig["adapter"],
218
+ logger: LoggerInstance
219
+ ) {
220
+ if (!adapter) return
221
+
222
+ return Object.keys(adapter).reduce<any>((acc, name) => {
223
+ acc[name] = async (...args: any[]) => {
224
+ try {
225
+ logger.debug(`adapter_${name}`, { args })
226
+ const method: Method = adapter[name as keyof Method]
227
+ return await method(...args)
228
+ } catch (e) {
229
+ const error = new AdapterError(e as Error)
230
+ logger.error(error)
231
+ throw error
232
+ }
233
+ }
234
+ return acc
235
+ }, {})
236
+ }
@@ -0,0 +1,106 @@
1
+ import type { ErrorPageParam, Theme } from "../../types.js"
2
+
3
+ /**
4
+ * The following errors are passed as error query parameters to the default or overridden error page.
5
+ *
6
+ * [Documentation](https://authjs.dev/guides/pages/error)
7
+ */
8
+
9
+ export interface ErrorProps {
10
+ url?: URL
11
+ theme?: Theme
12
+ error?: ErrorPageParam
13
+ }
14
+
15
+ interface ErrorView {
16
+ status: number
17
+ heading: string
18
+ message: JSX.Element
19
+ signin?: JSX.Element
20
+ }
21
+
22
+ /** Renders an error page. */
23
+ export default function ErrorPage(props: ErrorProps) {
24
+ const { url, error = "default", theme } = props
25
+ const signinPageUrl = `${url}/signin`
26
+
27
+ const errors: Record<ErrorPageParam | "default", ErrorView> = {
28
+ default: {
29
+ status: 200,
30
+ heading: "Error",
31
+ message: (
32
+ <p>
33
+ <a className="site" href={url?.origin}>
34
+ {url?.host}
35
+ </a>
36
+ </p>
37
+ ),
38
+ },
39
+ Configuration: {
40
+ status: 500,
41
+ heading: "Server error",
42
+ message: (
43
+ <div>
44
+ <p>There is a problem with the server configuration.</p>
45
+ <p>Check the server logs for more information.</p>
46
+ </div>
47
+ ),
48
+ },
49
+ AccessDenied: {
50
+ status: 403,
51
+ heading: "Access Denied",
52
+ message: (
53
+ <div>
54
+ <p>You do not have permission to sign in.</p>
55
+ <p>
56
+ <a className="button" href={signinPageUrl}>
57
+ Sign in
58
+ </a>
59
+ </p>
60
+ </div>
61
+ ),
62
+ },
63
+ Verification: {
64
+ status: 403,
65
+ heading: "Unable to sign in",
66
+ message: (
67
+ <div>
68
+ <p>The sign in link is no longer valid.</p>
69
+ <p>It may have been used already or it may have expired.</p>
70
+ </div>
71
+ ),
72
+ signin: (
73
+ <a className="button" href={signinPageUrl}>
74
+ Sign in
75
+ </a>
76
+ ),
77
+ },
78
+ }
79
+
80
+ const { status, heading, message, signin } = errors[error] ?? errors.default
81
+
82
+ return {
83
+ status,
84
+ html: (
85
+ <div className="error">
86
+ {theme?.brandColor && (
87
+ <style
88
+ dangerouslySetInnerHTML={{
89
+ __html: `
90
+ :root {
91
+ --brand-color: ${theme?.brandColor}
92
+ }
93
+ `,
94
+ }}
95
+ />
96
+ )}
97
+ <div className="card">
98
+ {theme?.logo && <img src={theme?.logo} alt="Logo" className="logo" />}
99
+ <h1>{heading}</h1>
100
+ <div className="message">{message}</div>
101
+ {signin}
102
+ </div>
103
+ </div>
104
+ ),
105
+ }
106
+ }
@@ -0,0 +1,181 @@
1
+ import { renderToString } from "preact-render-to-string"
2
+ import ErrorPage from "./error.js"
3
+ import SigninPage from "./signin.js"
4
+ import SignoutPage from "./signout.js"
5
+ import css from "./styles.js"
6
+ import VerifyRequestPage from "./verify-request.js"
7
+ import { UnknownAction } from "../../errors.js"
8
+
9
+ import type {
10
+ InternalOptions,
11
+ RequestInternal,
12
+ ResponseInternal,
13
+ InternalProvider,
14
+ PublicProvider,
15
+ } from "../../types.js"
16
+ import type { Cookie } from "../utils/cookie.js"
17
+
18
+ function send({
19
+ html,
20
+ title,
21
+ status,
22
+ cookies,
23
+ theme,
24
+ headTags,
25
+ }: any): ResponseInternal {
26
+ return {
27
+ cookies,
28
+ status,
29
+ headers: { "Content-Type": "text/html" },
30
+ body: `<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><style>${css}</style><title>${title}</title>${
31
+ headTags ?? ""
32
+ }</head><body class="__next-auth-theme-${
33
+ theme?.colorScheme ?? "auto"
34
+ }"><div class="page">${renderToString(html)}</div></body></html>`,
35
+ }
36
+ }
37
+
38
+ type RenderPageParams = {
39
+ query?: RequestInternal["query"]
40
+ cookies?: Cookie[]
41
+ } & Partial<
42
+ Pick<
43
+ InternalOptions,
44
+ "url" | "callbackUrl" | "csrfToken" | "providers" | "theme" | "pages"
45
+ >
46
+ >
47
+
48
+ /**
49
+ * Unless the user defines their [own pages](https://authjs.dev/reference/core#pages),
50
+ * we render a set of default ones, using Preact SSR.
51
+ */
52
+ export default function renderPage(params: RenderPageParams) {
53
+ const { url, theme, query, cookies, pages, providers } = params
54
+
55
+ return {
56
+ csrf(skip: boolean, options: InternalOptions, cookies: Cookie[]) {
57
+ if (!skip) {
58
+ return {
59
+ headers: {
60
+ "Content-Type": "application/json",
61
+ "Cache-Control": "private, no-cache, no-store",
62
+ Expires: "0",
63
+ Pragma: "no-cache",
64
+ },
65
+ body: { csrfToken: options.csrfToken },
66
+ cookies,
67
+ }
68
+ }
69
+ options.logger.warn("csrf-disabled")
70
+ cookies.push({
71
+ name: options.cookies.csrfToken.name,
72
+ value: "",
73
+ options: { ...options.cookies.csrfToken.options, maxAge: 0 },
74
+ })
75
+ return { status: 404, cookies }
76
+ },
77
+ providers(providers: InternalProvider[]) {
78
+ return {
79
+ headers: { "Content-Type": "application/json" },
80
+ body: providers.reduce<Record<string, PublicProvider>>(
81
+ (acc, { id, name, type, signinUrl, callbackUrl }) => {
82
+ acc[id] = { id, name, type, signinUrl, callbackUrl }
83
+ return acc
84
+ },
85
+ {}
86
+ ),
87
+ }
88
+ },
89
+ signin(providerId?: string, error?: any) {
90
+ if (providerId) throw new UnknownAction("Unsupported action")
91
+ if (pages?.signIn) {
92
+ let signinUrl = `${pages.signIn}${
93
+ pages.signIn.includes("?") ? "&" : "?"
94
+ }${new URLSearchParams({ callbackUrl: params.callbackUrl ?? "/" })}`
95
+ if (error) signinUrl = `${signinUrl}&${new URLSearchParams({ error })}`
96
+ return { redirect: signinUrl, cookies }
97
+ }
98
+
99
+ // If we have a webauthn provider with conditional UI and
100
+ // a simpleWebAuthnBrowserScript is defined, we need to
101
+ // render the script in the page.
102
+ const webauthnProvider = providers?.find(
103
+ (p): p is InternalProvider<"webauthn"> =>
104
+ p.type === "webauthn" &&
105
+ p.enableConditionalUI &&
106
+ !!p.simpleWebAuthnBrowserVersion
107
+ )
108
+
109
+ let simpleWebAuthnBrowserScript = ""
110
+ if (webauthnProvider) {
111
+ const { simpleWebAuthnBrowserVersion } = webauthnProvider
112
+ simpleWebAuthnBrowserScript = `<script src="https://unpkg.com/@simplewebauthn/browser@${simpleWebAuthnBrowserVersion}/dist/bundle/index.umd.min.js" crossorigin="anonymous"></script>`
113
+ }
114
+
115
+ return send({
116
+ cookies,
117
+ theme,
118
+ html: SigninPage({
119
+ csrfToken: params.csrfToken,
120
+ // We only want to render providers
121
+ providers: params.providers?.filter(
122
+ (provider) =>
123
+ // Always render oauth and email type providers
124
+ ["email", "oauth", "oidc"].includes(provider.type) ||
125
+ // Only render credentials type provider if credentials are defined
126
+ (provider.type === "credentials" && provider.credentials) ||
127
+ // Only render webauthn type provider if formFields are defined
128
+ (provider.type === "webauthn" && provider.formFields) ||
129
+ // Don't render other provider types
130
+ false
131
+ ),
132
+ callbackUrl: params.callbackUrl,
133
+ theme: params.theme,
134
+ error,
135
+ ...query,
136
+ }),
137
+ title: "Sign In",
138
+ headTags: simpleWebAuthnBrowserScript,
139
+ })
140
+ },
141
+ signout() {
142
+ if (pages?.signOut) return { redirect: pages.signOut, cookies }
143
+ return send({
144
+ cookies,
145
+ theme,
146
+ html: SignoutPage({ csrfToken: params.csrfToken, url, theme }),
147
+ title: "Sign Out",
148
+ })
149
+ },
150
+ verifyRequest(props?: any) {
151
+ if (pages?.verifyRequest)
152
+ return {
153
+ redirect: `${pages.verifyRequest}${url?.search ?? ""}`,
154
+ cookies,
155
+ }
156
+ return send({
157
+ cookies,
158
+ theme,
159
+ html: VerifyRequestPage({ url, theme, ...props }),
160
+ title: "Verify Request",
161
+ })
162
+ },
163
+ error(error?: string) {
164
+ if (pages?.error) {
165
+ return {
166
+ redirect: `${pages.error}${
167
+ pages.error.includes("?") ? "&" : "?"
168
+ }error=${error}`,
169
+ cookies,
170
+ }
171
+ }
172
+ return send({
173
+ cookies,
174
+ theme,
175
+ // @ts-expect-error fix error type
176
+ ...ErrorPage({ url, theme, error }),
177
+ title: "Error",
178
+ })
179
+ },
180
+ }
181
+ }