@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,104 @@
1
+ /**
2
+ * <div class="provider" style={{backgroundColor: "#24292f", display: "flex", justifyContent: "space-between", color: "#fff", padding: 16}}>
3
+ * <span>Built-in <b>ClickUp</b> integration.</span>
4
+ * <a href="https://clickup.com">
5
+ * <img style={{display: "block"}} src="https://authjs.dev/img/providers/click-up.svg" height="48" width="48"/>
6
+ * </a>
7
+ * </div>
8
+ *
9
+ * @module providers/click-up
10
+ */
11
+
12
+ import type { OAuthConfig, OAuthUserConfig } from "./index.js"
13
+
14
+ /** @see [Get the authenticated user](https://clickup.com/api/clickupreference/operation/GetAuthorizedUser/)*/
15
+ export interface ClickUpProfile {
16
+ user: {
17
+ id: number
18
+ username: string
19
+ color: string
20
+ profilePicture: string
21
+ }
22
+ }
23
+
24
+ /**
25
+ * Add ClickUp login to your page and make requests to [ClickUp APIs](https://clickup.com/api/).
26
+ *
27
+ * ### Setup
28
+ *
29
+ * #### Callback URL
30
+ * ```
31
+ * https://example.com/api/auth/callback/clickup
32
+ * ```
33
+ *
34
+ * #### Configuration
35
+ * ```ts
36
+ * import { Auth } from "@auth/core"
37
+ * import ClickUp from "@auth/core/providers/click-up"
38
+ *
39
+ * const request = new Request(origin)
40
+ * const response = await Auth(request, {
41
+ * providers: [
42
+ * ClickUp({
43
+ * clientId: CLICKUP_CLIENT_ID,
44
+ * clientSecret: CLICKUP_CLIENT_SECRET,
45
+ * }),
46
+ * ],
47
+ * })
48
+ * ```
49
+ *
50
+ * ### Resources
51
+ *
52
+ * - [ClickUp - Authorizing OAuth Apps](https://clickup.com/api/developer-portal/authentication#oauth-flow)
53
+ * - [Source code](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/click-up.ts)
54
+ *
55
+ * ### Notes
56
+ *
57
+ * By default, Auth.js assumes that the ClickUp provider is
58
+ * based on the [OAuth 2](https://www.rfc-editor.org/rfc/rfc6749.html) specification.
59
+ *
60
+ * :::tip
61
+ *
62
+ * The ClickUp provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/click-up.ts).
63
+ * To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers).
64
+ *
65
+ * :::
66
+ *
67
+ * :::info **Disclaimer**
68
+ *
69
+ * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue).
70
+ *
71
+ * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from
72
+ * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec,
73
+ * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions).
74
+ *
75
+ * :::
76
+ */
77
+ export default function ClickUp(
78
+ config: OAuthUserConfig<ClickUpProfile>
79
+ ): OAuthConfig<ClickUpProfile> {
80
+ return {
81
+ id: "click-up",
82
+ name: "ClickUp",
83
+ type: "oauth",
84
+ authorization: "https://app.clickup.com/api",
85
+ token: "https://api.clickup.com/api/v2/oauth/token",
86
+ userinfo: "https://api.clickup.com/api/v2/user",
87
+ clientId: config.clientId,
88
+ clientSecret: config.clientSecret,
89
+ checks: ["state"],
90
+ profile: (profile: ClickUpProfile) => {
91
+ return {
92
+ id: profile.user.id.toString(),
93
+ name: profile.user.username,
94
+ profilePicture: profile.user.profilePicture,
95
+ color: profile.user.color,
96
+ }
97
+ },
98
+ style: {
99
+ bg: "#24292f",
100
+ text: "#fff",
101
+ },
102
+ options: config,
103
+ }
104
+ }
@@ -0,0 +1,94 @@
1
+ /**
2
+ * <div class="provider" style={{backgroundColor: "#000", display: "flex", justifyContent: "space-between", color: "#fff", padding: 16}}>
3
+ * <span>Built-in <b>Cognito</b> integration.</span>
4
+ * <a href="https://docs.aws.amazon.com/cognito">
5
+ * <img style={{display: "block"}} src="https://authjs.dev/img/providers/cognito.svg" height="48" width="48"/>
6
+ * </a>
7
+ * </div>
8
+ *
9
+ * @module providers/cognito
10
+ */
11
+ import type { OAuthConfig, OAuthUserConfig } from "./index.js"
12
+
13
+ export interface CognitoProfile extends Record<string, any> {
14
+ sub: string
15
+ name: string
16
+ email: string
17
+ picture: string
18
+ }
19
+
20
+ /**
21
+ * Add Cognito login to your page.
22
+ *
23
+ * ### Setup
24
+ *
25
+ * #### Callback URL
26
+ * ```
27
+ * https://example.com/api/auth/callback/cognito
28
+ * ```
29
+ *
30
+ * #### Configuration
31
+ *```ts
32
+ * import { Auth } from "@auth/core"
33
+ * import Cognito from "@auth/core/providers/cognito"
34
+ *
35
+ * const request = new Request(origin)
36
+ * const response = await Auth(request, {
37
+ * providers: [
38
+ * Cognito({
39
+ * clientId: COGNITO_CLIENT_ID,
40
+ * clientSecret: COGNITO_CLIENT_SECRET,
41
+ * issuer: COGNITO_ISSUER,
42
+ * }),
43
+ * ],
44
+ * })
45
+ * ```
46
+ *
47
+ * ### Resources
48
+ *
49
+ * - [Cognito OAuth documentation](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-userpools-server-contract-reference.html)
50
+ *
51
+ * ### Notes
52
+ * You need to select your AWS region to go the the Cognito dashboard.
53
+ *
54
+ * :::tip
55
+ * The issuer is a URL, that looks like this: https://cognito-idp.{region}.amazonaws.com/{PoolId}
56
+ * :::
57
+ * `PoolId` is from General Settings in Cognito, not to be confused with the App Client ID.
58
+ * :::warning
59
+ * Make sure you select all the appropriate client settings or the OAuth flow will not work.
60
+ * :::
61
+ *
62
+ * By default, Auth.js assumes that the Cognito provider is
63
+ * based on the [Open ID Connect](https://openid.net/specs/openid-connect-core-1_0.html) specification.
64
+ *
65
+ * :::tip
66
+ *
67
+ * The Cognito provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/cognito.ts).
68
+ * To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers).
69
+ *
70
+ * :::
71
+ *
72
+ * :::info **Disclaimer**
73
+ *
74
+ * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue).
75
+ *
76
+ * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from
77
+ * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec,
78
+ * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions).
79
+ *
80
+ * :::
81
+ */
82
+ export default function Cognito<P extends CognitoProfile>(
83
+ options: OAuthUserConfig<P>
84
+ ): OAuthConfig<P> {
85
+ return {
86
+ id: "cognito",
87
+ name: "Cognito",
88
+ type: "oidc",
89
+ style: {
90
+ brandColor: "#C17B9E",
91
+ },
92
+ options,
93
+ }
94
+ }
@@ -0,0 +1,93 @@
1
+ /**
2
+ * <div class="provider" style={{backgroundColor: "#000", display: "flex", justifyContent: "space-between", color: "#fff", padding: 16}}>
3
+ * <span>Built-in <b>Coinbase</b> integration.</span>
4
+ * <a href="https://coinbase.com/">
5
+ * <img style={{display: "block"}} src="https://authjs.dev/img/providers/coinbase.svg" height="48" width="48"/>
6
+ * </a>
7
+ * </div>
8
+ *
9
+ * @module providers/coinbase
10
+ */
11
+ import type { OAuthConfig, OAuthUserConfig } from "./index.js"
12
+
13
+ /**
14
+ * Add Coinbase login to your page.
15
+ *
16
+ * ### Setup
17
+ *
18
+ * #### Callback URL
19
+ * ```
20
+ * https://example.com/api/auth/callback/coinbase
21
+ * ```
22
+ *
23
+ * #### Configuration
24
+ *```ts
25
+ * import { Auth } from "@auth/core"
26
+ * import Coinbase from "@auth/core/providers/coinbase"
27
+ *
28
+ * const request = new Request(origin)
29
+ * const response = await Auth(request, {
30
+ * providers: [
31
+ * Coinbase({
32
+ * clientId: COINBASE_CLIENT_ID,
33
+ * clientSecret: COINBASE_CLIENT_SECRET,
34
+ * }),
35
+ * ],
36
+ * })
37
+ * ```
38
+ *
39
+ * ### Resources
40
+ *
41
+ * - [Coinbase OAuth documentation](https://developers.coinbase.com/api/v2)
42
+ *
43
+ * ### Notes
44
+ *
45
+ * :::tip
46
+ * This Provider template has a 2 hour access token to it. A refresh token is also returned.
47
+ * :::
48
+ *
49
+ * By default, Auth.js assumes that the Coinbase provider is
50
+ * based on the [OAuth 2](https://www.rfc-editor.org/rfc/rfc6749.html) specification.
51
+ *
52
+ * :::tip
53
+ *
54
+ * The Coinbase provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/coinbase.ts).
55
+ * To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers).
56
+ *
57
+ * :::
58
+ *
59
+ * :::info **Disclaimer**
60
+ *
61
+ * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue).
62
+ *
63
+ * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from
64
+ * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec,
65
+ * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions).
66
+ *
67
+ * :::
68
+ */
69
+ export default function Coinbase(
70
+ options: OAuthUserConfig<Record<string, any>>
71
+ ): OAuthConfig<Record<string, any>> {
72
+ return {
73
+ id: "coinbase",
74
+ name: "Coinbase",
75
+ type: "oauth",
76
+ authorization:
77
+ "https://login.coinbase.com/oauth2/auth?scope=wallet:user:email+wallet:user:read",
78
+ token: "https://login.coinbase.com/oauth2/token",
79
+ userinfo: "https://api.coinbase.com/v2/user",
80
+ profile(profile) {
81
+ return {
82
+ id: profile.data.id,
83
+ name: profile.data.name,
84
+ email: profile.data.email,
85
+ image: profile.data.avatar_url,
86
+ }
87
+ },
88
+ style: {
89
+ brandColor: "#0052ff",
90
+ },
91
+ options,
92
+ }
93
+ }
@@ -0,0 +1,108 @@
1
+ /**
2
+ * <div class="provider" style={{backgroundColor: "#000", display: "flex", justifyContent: "space-between", color: "#fff", padding: 16}}>
3
+ * <span>Built-in <b>Concept2</b> integration.</span>
4
+ * <a href="https://concept2.com">
5
+ * <img style={{display: "block"}} src="https://authjs.dev/img/providers/concept2.svg" height="48" width="48"/>
6
+ * </a>
7
+ * </div>
8
+ *
9
+ * @module providers/concept2
10
+ */
11
+
12
+ import type { OAuthConfig, OAuthUserConfig } from "./index.js"
13
+
14
+ export interface Concept2Profile extends Record<string, any> {
15
+ id: number
16
+ username: string
17
+ first_name: string
18
+ last_name: string
19
+ gender: string
20
+ dob: string
21
+ email: string
22
+ country: string
23
+ profile_image: string
24
+ age_restricted: boolean
25
+ email_permission: boolean | null
26
+ max_heart_rate: number | null
27
+ weight: number | null
28
+ logbook_privacy: string | null
29
+ }
30
+
31
+ /**
32
+ * Add Concept2 login to your page.
33
+ *
34
+ * ### Setup
35
+ *
36
+ * #### Callback URL
37
+ * ```
38
+ * https://example.com/api/auth/callback/concept2
39
+ * ```
40
+ *
41
+ * #### Configuration
42
+ *```js
43
+ * import { Auth } from "@auth/core"
44
+ * import Concept2 from "@auth/core/providers/concept2"
45
+ *
46
+ * const request = new Request(origin)
47
+ * const response = await Auth(request, {
48
+ * providers: [
49
+ * Concept2({
50
+ * clientId: CONCEPT2_CLIENT_ID,
51
+ * clientSecret: CONCEPT2_CLIENT_SECRET
52
+ * }),
53
+ * ],
54
+ * })
55
+ * ```
56
+ *
57
+ * ### Resources
58
+ *
59
+ * - [Concept2 OAuth documentation](https://log.concept2.com/developers/documentation/)
60
+ *
61
+ * ### Notes
62
+ *
63
+ * By default, Auth.js assumes that the Concept2 provider is
64
+ * based on the [OAuth 2](https://www.rfc-editor.org/rfc/rfc6749.html) specification.
65
+ *
66
+ * :::tip
67
+ *
68
+ * The Concept2 provider comes with a [default configuration](https://github.com/mulguard/mulguard/blob/main/packages/mulguard/src/providers/concept2.ts).
69
+ * To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/providers/custom-provider#override-default-options).
70
+ *
71
+ * :::
72
+ *
73
+ * :::info **Disclaimer**
74
+ *
75
+ * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue).
76
+ *
77
+ * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from
78
+ * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec,
79
+ * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions).
80
+ *
81
+ * :::
82
+ */
83
+ export default function Concept2(
84
+ options: OAuthUserConfig<Concept2Profile>
85
+ ): OAuthConfig<Concept2Profile> {
86
+ return {
87
+ id: "concept2",
88
+ name: "Concept2",
89
+ type: "oauth",
90
+ authorization: {
91
+ url: "https://log.concept2.com/oauth/authorize",
92
+ params: {
93
+ scope: "user:read,results:write",
94
+ },
95
+ },
96
+ token: "https://log.concept2.com/oauth/access_token",
97
+ userinfo: "https://log.concept2.com/api/users/me",
98
+ profile(profile) {
99
+ return {
100
+ id: profile.data.id,
101
+ name: profile.data.username,
102
+ email: profile.data.email,
103
+ image: profile.data.profile_image,
104
+ }
105
+ },
106
+ options,
107
+ }
108
+ }
@@ -0,0 +1,157 @@
1
+ import type { CommonProviderOptions } from "./index.js"
2
+ import type { Awaitable, User } from "../types.js"
3
+ import type { JSX } from "preact"
4
+
5
+ /**
6
+ * Besides providing type safety inside {@link CredentialsConfig.authorize}
7
+ * it also determines how the credentials input fields will be rendered
8
+ * on the default sign in page.
9
+ */
10
+ export interface CredentialInput
11
+ extends Partial<JSX.IntrinsicElements["input"]> {
12
+ label?: string
13
+ }
14
+
15
+ /** The Credentials Provider needs to be configured. */
16
+ export interface CredentialsConfig<
17
+ CredentialsInputs extends Record<string, CredentialInput> = Record<
18
+ string,
19
+ CredentialInput
20
+ >,
21
+ > extends CommonProviderOptions {
22
+ type: "credentials"
23
+ credentials: CredentialsInputs
24
+ /**
25
+ * Gives full control over how you handle the credentials received from the user.
26
+ *
27
+ * :::warning
28
+ * There is no validation on the user inputs by default, so make sure you do so
29
+ * by a popular library like [Zod](https://zod.dev)
30
+ * :::
31
+ *
32
+ * This method expects a `User` object to be returned for a successful login.
33
+ *
34
+ * If an `CredentialsSignin` is thrown or `null` is returned, two things can happen:
35
+ * 1. The user is redirected to the login page, with `error=CredentialsSignin&code=credentials` in the URL. `code` is configurable, see below.
36
+ * 2. If you throw this error in a framework that handles form actions server-side, this error is thrown by the login form action, so you'll need to handle it there.
37
+ *
38
+ * In case of 1., generally, we recommend not hinting if the user for example gave a wrong username or password specifically,
39
+ * try rather something like "invalid-credentials". Try to be as generic with client-side errors as possible.
40
+ *
41
+ * To customize the error code, you can create a custom error that extends {@link CredentialsSignin} and throw it in `authorize`.
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * class CustomError extends CredentialsSignin {
46
+ * code = "custom_error"
47
+ * }
48
+ * // URL will contain `error=CredentialsSignin&code=custom_error`
49
+ * ```
50
+ *
51
+ * @example
52
+ * ```ts
53
+ * async authorize(credentials, request) { // you have access to the original request as well
54
+ * if(!isValidCredentials(credentials)) {
55
+ * throw new CustomError()
56
+ * }
57
+ * return await getUser(credentials) // assuming it returns a User or null
58
+ * }
59
+ * ```
60
+ */
61
+ authorize: (
62
+ /**
63
+ * The available keys are determined by {@link CredentialInput}.
64
+ *
65
+ * @note The existence/correctness of a field cannot be guaranteed at compile time,
66
+ * so you should always validate the input before using it.
67
+ *
68
+ * You can add basic validation depending on your use case,
69
+ * or you can use a popular library like [Zod](https://zod.dev) for example.
70
+ */
71
+ credentials: Partial<Record<keyof CredentialsInputs, unknown>>,
72
+ /** The original request. */
73
+ request: Request
74
+ ) => Awaitable<User | null>
75
+ }
76
+
77
+ export type CredentialsProviderId = "credentials"
78
+
79
+ /**
80
+ * The Credentials provider allows you to handle signing in with arbitrary credentials,
81
+ * such as a username and password, domain, or two factor authentication or hardware device (e.g. YubiKey U2F / FIDO).
82
+ *
83
+ * It is intended to support use cases where you have an existing system you need to authenticate users against.
84
+ *
85
+ * It comes with the constraint that users authenticated in this manner are not persisted in the database,
86
+ * and consequently that the Credentials provider can only be used if JSON Web Tokens are enabled for sessions.
87
+ *
88
+ * :::caution
89
+ * The functionality provided for credentials-based authentication is intentionally limited to discourage the use of passwords due to the inherent security risks of the username-password model.
90
+ *
91
+ * OAuth providers spend significant amounts of money, time, and engineering effort to build:
92
+ *
93
+ * - abuse detection (bot-protection, rate-limiting)
94
+ * - password management (password reset, credential stuffing, rotation)
95
+ * - data security (encryption/salting, strength validation)
96
+ *
97
+ * and much more for authentication solutions. It is likely that your application would benefit from leveraging these battle-tested solutions rather than try to rebuild them from scratch.
98
+ *
99
+ * If you'd still like to build password-based authentication for your application despite these risks, Auth.js gives you full control to do so.
100
+ *
101
+ * :::
102
+ *
103
+ * See the [callbacks documentation](/reference/core#authconfig#callbacks) for more information on how to interact with the token. For example, you can add additional information to the token by returning an object from the `jwt()` callback:
104
+ *
105
+ * ```ts
106
+ * callbacks: {
107
+ * async jwt({ token, user, account, profile, isNewUser }) {
108
+ * if (user) {
109
+ * token.id = user.id
110
+ * }
111
+ * return token
112
+ * }
113
+ * }
114
+ * ```
115
+ *
116
+ * @example
117
+ * ```ts
118
+ * import { Auth } from "@auth/core"
119
+ * import Credentials from "@auth/core/providers/credentials"
120
+ *
121
+ * const request = new Request("https://example.com")
122
+ * const response = await AuthHandler(request, {
123
+ * providers: [
124
+ * Credentials({
125
+ * credentials: {
126
+ * username: { label: "Username" },
127
+ * password: { label: "Password", type: "password" }
128
+ * },
129
+ * async authorize({ request }) {
130
+ * const response = await fetch(request)
131
+ * if(!response.ok) return null
132
+ * return await response.json() ?? null
133
+ * }
134
+ * })
135
+ * ],
136
+ * secret: "...",
137
+ * trustHost: true,
138
+ * })
139
+ * ```
140
+ * @see [Username/Password Example](https://authjs.dev/getting-started/authentication/credentials)
141
+ */
142
+ export default function Credentials<
143
+ CredentialsInputs extends Record<string, CredentialInput> = Record<
144
+ string,
145
+ CredentialInput
146
+ >,
147
+ >(config: Partial<CredentialsConfig<CredentialsInputs>>): CredentialsConfig {
148
+ return {
149
+ id: "credentials",
150
+ name: "Credentials",
151
+ type: "credentials",
152
+ credentials: {},
153
+ authorize: () => null,
154
+ // @ts-expect-error
155
+ options: config,
156
+ }
157
+ }
@@ -0,0 +1,105 @@
1
+ /**
2
+ * <div class="provider" style={{display: "flex", justifyContent: "space-between", alignItems: "center"}}>
3
+ * <span style={{fontSize: "1.35rem" }}>
4
+ * Built-in sign in with <b>Descope</b> integration.
5
+ * </span>
6
+ * <a href="https://descope.com" style={{backgroundColor: "#000000", padding: "12px", borderRadius: "100%" }}>
7
+ * <img style={{display: "block"}} src="https://authjs.dev/img/providers/descope.svg" width="24"/>
8
+ * </a>
9
+ * </div>
10
+ *
11
+ * @module providers/descope
12
+ */
13
+
14
+ import type { OIDCConfig, OIDCUserConfig } from "./index.js"
15
+
16
+ /** The returned user profile from Descope when using the profile callback.
17
+ * [See Load User](https://docs.descope.com/api/openapi/usermanagement/operation/LoadUser/)
18
+ */
19
+ export interface DescopeProfile {
20
+ /** The user's unique Descope ID */
21
+ sub: string
22
+ /** The user's name */
23
+ name: string
24
+ /** The user's email */
25
+ email: string
26
+ /** A boolean indicating if the user's email is verified */
27
+ email_verified: boolean
28
+ /** The user's phone number */
29
+ phone_number: string
30
+ /** A boolean indicating if the user's phone number is verified */
31
+ phone_number_verified: boolean
32
+ /** The user's picture */
33
+ picture: string
34
+ /** The user's custom attributes */
35
+ [claim: string]: unknown
36
+ }
37
+
38
+ /**
39
+ *
40
+ * ### Setup
41
+ *
42
+ * #### Callback URL
43
+ * ```
44
+ * https://example.com/api/auth/callback/descope
45
+ * ```
46
+ *
47
+ * #### Configuration
48
+ * ```ts
49
+ * import { Auth } from "@auth/core"
50
+ * import Descope from "@auth/core/providers/descope"
51
+ *
52
+ * const request = new Request(origin)
53
+ * const response = await Auth(request, { providers: [Descope({ clientId: AUTH_DESCOPE_ID, clientSecret: AUTH_DESCOPE_SECRET, issuer: AUTH_DESCOPE_ISSUER })] })
54
+ * ```
55
+ *
56
+ * ### Configuring Descope
57
+ *
58
+ * Follow these steps:
59
+ *
60
+ * 1. Log into the [Descope console](https://app.descope.com)
61
+ * 2. Follow the [OIDC instructions](https://docs.descope.com/customize/auth/oidc)
62
+ *
63
+ * Then, create a `.env.local` file in the project root add the following entries:
64
+ *
65
+ * Get the following from the Descope's console:
66
+ * ```
67
+ * AUTH_DESCOPE_ID="<Descope Issuer's last url segment>" # Descope's Issuer can be found in "Authentication Methods > SSO > Identity Provider" (Can also be taken from "Project > Project ID")
68
+ * AUTH_DESCOPE_SECRET="<Descope Access Key>" # Manage > Access Keys
69
+ * AUTH_DESCOPE_ISSUER="<Descope Issuer URL>" # Applications -> OIDC Application -> Issuer
70
+ * ```
71
+ *
72
+ * ### Resources
73
+ *
74
+ * - [Descope OIDC](https://docs.descope.com/customize/auth/oidc)
75
+ * - [Descope Flows](https://docs.descope.com/customize/flows)
76
+ *
77
+ * ### Notes
78
+ *
79
+ * The Descope provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/descope.ts). To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers).
80
+ *
81
+ * :::info
82
+ * By default, Auth.js assumes that the Descope provider is based on the [OIDC](https://openid.net/specs/openid-connect-core-1_0.html) spec
83
+ * :::
84
+ *
85
+ * ## Help
86
+ *
87
+ * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue).
88
+ *
89
+ * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from
90
+ * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec,
91
+ * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions).
92
+ */
93
+ export default function Descope(
94
+ config: OIDCUserConfig<DescopeProfile>
95
+ ): OIDCConfig<DescopeProfile> {
96
+ config.issuer ??= `https://api.descope.com/${config.clientId}`
97
+ return {
98
+ id: "descope",
99
+ name: "Descope",
100
+ type: "oidc",
101
+ style: { bg: "#1C1C23", text: "#ffffff" },
102
+ checks: ["pkce", "state"],
103
+ options: config,
104
+ }
105
+ }