@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,140 @@
1
+ /**
2
+ * <div class="provider" style={{backgroundColor: "#000", display: "flex", justifyContent: "space-between", color: "#fff", padding: 16}}>
3
+ * <span>Built-in <b>GitLab</b> integration.</span>
4
+ * <a href="https://gitlab.com">
5
+ * <img style={{display: "block"}} src="https://authjs.dev/img/providers/gitlab.svg" height="48" width="48"/>
6
+ * </a>
7
+ * </div>
8
+ *
9
+ * @module providers/gitlab
10
+ */
11
+ import type { OAuthConfig, OAuthUserConfig } from "./index.js"
12
+
13
+ export interface GitLabProfile extends Record<string, any> {
14
+ id: number
15
+ username: string
16
+ email: string
17
+ name: string
18
+ state: string
19
+ avatar_url: string
20
+ web_url: string
21
+ created_at: string
22
+ bio: string
23
+ location?: string
24
+ public_email: string
25
+ skype: string
26
+ linkedin: string
27
+ twitter: string
28
+ website_url: string
29
+ organization: string
30
+ job_title: string
31
+ pronouns: string
32
+ bot: boolean
33
+ work_information?: string
34
+ followers: number
35
+ following: number
36
+ local_time: string
37
+ last_sign_in_at: string
38
+ confirmed_at: string
39
+ theme_id: number
40
+ last_activity_on: string
41
+ color_scheme_id: number
42
+ projects_limit: number
43
+ current_sign_in_at: string
44
+ identities: Array<{
45
+ provider: string
46
+ extern_uid: string
47
+ }>
48
+ can_create_group: boolean
49
+ can_create_project: boolean
50
+ two_factor_enabled: boolean
51
+ external: boolean
52
+ private_profile: boolean
53
+ commit_email: string
54
+ shared_runners_minutes_limit: number
55
+ extra_shared_runners_minutes_limit: number
56
+ }
57
+
58
+ /**
59
+ * Add GitLab login to your page.
60
+ *
61
+ * ### Setup
62
+ *
63
+ * #### Callback URL
64
+ * ```
65
+ * https://example.com/api/auth/callback/gitlab
66
+ * ```
67
+ *
68
+ * #### Configuration
69
+ *```ts
70
+ * import { Auth } from "@auth/core"
71
+ * import GitLab from "@auth/core/providers/gitlab"
72
+ *
73
+ * const request = new Request(origin)
74
+ * const response = await Auth(request, {
75
+ * providers: [
76
+ * GitLab({ clientId: GITLAB_CLIENT_ID, clientSecret: GITLAB_CLIENT_SECRET }),
77
+ * ],
78
+ * })
79
+ * ```
80
+ *
81
+ * ### Resources
82
+ *
83
+ * - [GitLab OAuth documentation](https://docs.gitlab.com/ee/api/oauth2.html)
84
+ *
85
+ * ### Notes
86
+ *
87
+ * By default, Auth.js assumes that the GitLab provider is
88
+ * based on the [OAuth 2](https://www.rfc-editor.org/rfc/rfc6749.html) specification.
89
+ *
90
+ * :::tip
91
+ * Enable the `read_user` option in scope if you want to save the users email address on sign up.
92
+ * :::
93
+ *
94
+ * :::tip
95
+ *
96
+ * The GitLab provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/gitlab.ts).
97
+ * To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers).
98
+ *
99
+ * :::
100
+ *
101
+ * :::info **Disclaimer**
102
+ *
103
+ * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue).
104
+ *
105
+ * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from
106
+ * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec,
107
+ * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions).
108
+ *
109
+ * :::
110
+ */
111
+ export default function GitLab<P extends GitLabProfile>(
112
+ options: OAuthUserConfig<P> & {
113
+ /**
114
+ * @default "https://gitlab.com"
115
+ */
116
+ baseUrl?: URL | string
117
+ }
118
+ ): OAuthConfig<P> {
119
+ const baseUrl = options.baseUrl ?? "https://gitlab.com"
120
+ const url = new URL(baseUrl.toString())
121
+
122
+ return {
123
+ id: "gitlab",
124
+ name: "GitLab",
125
+ type: "oauth",
126
+ authorization: `${url}oauth/authorize?scope=read_user`,
127
+ token: `${url}oauth/token`,
128
+ userinfo: `${url}api/v4/user`,
129
+ profile(profile) {
130
+ return {
131
+ id: profile.sub?.toString() ?? profile.id?.toString(),
132
+ name: profile.name ?? profile.username,
133
+ email: profile.email,
134
+ image: profile.avatar_url,
135
+ }
136
+ },
137
+ style: { bg: "#FC6D26", text: "#fff" },
138
+ options,
139
+ }
140
+ }
@@ -0,0 +1,152 @@
1
+ /**
2
+ * <div class="provider" style={{backgroundColor: "#000", display: "flex", justifyContent: "space-between", color: "#fff", padding: 16}}>
3
+ * <span>Built-in <b>Google</b> integration.</span>
4
+ * <a href="https://google.com">
5
+ * <img style={{display: "block"}} src="https://authjs.dev/img/providers/google.svg" height="48" width="48"/>
6
+ * </a>
7
+ * </div>
8
+ *
9
+ * @module providers/google
10
+ */
11
+ import type { OAuthConfig, OAuthUserConfig } from "./index.js"
12
+
13
+ export interface GoogleProfile extends Record<string, any> {
14
+ aud: string
15
+ azp: string
16
+ email: string
17
+ email_verified: boolean
18
+ exp: number
19
+ family_name?: string
20
+ given_name: string
21
+ hd?: string
22
+ iat: number
23
+ iss: string
24
+ jti?: string
25
+ locale?: string
26
+ name: string
27
+ nbf?: number
28
+ picture: string
29
+ sub: string
30
+ }
31
+
32
+ /**
33
+ * Add Google login to your page.
34
+ *
35
+ * ### Setup
36
+ *
37
+ * #### Callback URL
38
+ * ```
39
+ * https://example.com/api/auth/callback/google
40
+ * ```
41
+ *
42
+ * #### Configuration
43
+ *```ts
44
+ * import { Auth } from "@auth/core"
45
+ * import Google from "@auth/core/providers/google"
46
+ *
47
+ * const request = new Request(origin)
48
+ * const response = await Auth(request, {
49
+ * providers: [
50
+ * Google({ clientId: GOOGLE_CLIENT_ID, clientSecret: GOOGLE_CLIENT_SECRET }),
51
+ * ],
52
+ * })
53
+ * ```
54
+ *
55
+ * ### Resources
56
+ *
57
+ * - [Google OAuth documentation](https://developers.google.com/identity/protocols/oauth2)
58
+ * - [Google OAuth Configuration](https://console.developers.google.com/apis/credentials)
59
+ *
60
+ * ### Notes
61
+ *
62
+ * By default, Auth.js assumes that the Google provider is
63
+ * based on the [Open ID Connect](https://openid.net/specs/openid-connect-core-1_0.html) specification.
64
+ *
65
+ *
66
+ * The "Authorized redirect URIs" used when creating the credentials must include your full domain and end in the callback path. For example;
67
+ *
68
+ * - For production: `https://{YOUR_DOMAIN}/api/auth/callback/google`
69
+ * - For development: `http://localhost:3000/api/auth/callback/google`
70
+ *
71
+ * :::warning
72
+ * Google only provides Refresh Token to an application the first time a user signs in.
73
+ *
74
+ * To force Google to re-issue a Refresh Token, the user needs to remove the application from their account and sign in again:
75
+ * https://myaccount.google.com/permissions
76
+ *
77
+ * Alternatively, you can also pass options in the `params` object of `authorization` which will force the Refresh Token to always be provided on sign in, however this will ask all users to confirm if they wish to grant your application access every time they sign in.
78
+ *
79
+ * If you need access to the RefreshToken or AccessToken for a Google account and you are not using a database to persist user accounts, this may be something you need to do.
80
+ *
81
+ * ```ts
82
+ * const options = {
83
+ * providers: [
84
+ * Google({
85
+ * clientId: process.env.GOOGLE_ID,
86
+ * clientSecret: process.env.GOOGLE_SECRET,
87
+ * authorization: {
88
+ * params: {
89
+ * prompt: "consent",
90
+ * access_type: "offline",
91
+ * response_type: "code"
92
+ * }
93
+ * }
94
+ * })
95
+ * ],
96
+ * }
97
+ * ```
98
+ *
99
+ * :::
100
+ *
101
+ * :::tip
102
+ * Google also returns a `email_verified` boolean property in the OAuth profile.
103
+ *
104
+ * You can use this property to restrict access to people with verified accounts at a particular domain.
105
+ *
106
+ * ```ts
107
+ * const options = {
108
+ * ...
109
+ * callbacks: {
110
+ * async signIn({ account, profile }) {
111
+ * if (account.provider === "google") {
112
+ * return profile.email_verified && profile.email.endsWith("@example.com")
113
+ * }
114
+ * return true // Do different verification for other providers that don't have `email_verified`
115
+ * },
116
+ * }
117
+ * ...
118
+ * }
119
+ * ```
120
+ *
121
+ * :::
122
+ * :::tip
123
+ *
124
+ * The Google provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/google.ts).
125
+ * To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers).
126
+ *
127
+ * :::
128
+ *
129
+ * :::info **Disclaimer**
130
+ *
131
+ * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue).
132
+ *
133
+ * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from
134
+ * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec,
135
+ * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions).
136
+ *
137
+ * :::
138
+ */
139
+ export default function Google<P extends GoogleProfile>(
140
+ options: OAuthUserConfig<P>
141
+ ): OAuthConfig<P> {
142
+ return {
143
+ id: "google",
144
+ name: "Google",
145
+ type: "oidc",
146
+ issuer: "https://accounts.google.com",
147
+ style: {
148
+ brandColor: "#1a73e8",
149
+ },
150
+ options,
151
+ }
152
+ }
@@ -0,0 +1,117 @@
1
+ /**
2
+ * <div class="provider" style={{backgroundColor: "#000", display: "flex", justifyContent: "space-between", color: "#fff", padding: 16}}>
3
+ * <span>Built-in <b>HubSpot</b> integration.</span>
4
+ * <a href="https://hubspot.com">
5
+ * <img style={{display: "block"}} src="https://authjs.dev/img/providers/hubspot.svg" height="48" width="48"/>
6
+ * </a>
7
+ * </div>
8
+ *
9
+ * @module providers/hubspot
10
+ */
11
+ import type { OAuthConfig, OAuthUserConfig } from "./index.js"
12
+
13
+ interface HubSpotProfile extends Record<string, any> {
14
+ // https://legacydocs.hubspot.com/docs/methods/oauth2/get-access-token-information
15
+ user: string
16
+ user_id: string
17
+ hub_domain: string
18
+ hub_id: string
19
+ }
20
+
21
+ /**
22
+ * Add HubSpot login to your page.
23
+ *
24
+ * ### Setup
25
+ *
26
+ * #### Callback URL
27
+ * ```
28
+ * https://example.com/api/auth/callback/hubspot
29
+ * ```
30
+ *
31
+ * #### Configuration
32
+ *```ts
33
+ * import { Auth } from "@auth/core"
34
+ * import HubSpot from "@auth/core/providers/hubspot"
35
+ *
36
+ * const request = new Request(origin)
37
+ * const response = await Auth(request, {
38
+ * providers: [
39
+ * HubSpot({
40
+ * clientId: HUBSPOT_CLIENT_ID,
41
+ * clientSecret: HUBSPOT_CLIENT_SECRET,
42
+ * }),
43
+ * ],
44
+ * })
45
+ * ```
46
+ *
47
+ * ### Resources
48
+ *
49
+ * - [HubSpot OAuth documentation](https://developers.hubspot.com/docs/api/oauth-quickstart-guide)
50
+ *
51
+ * ### Notes
52
+ *
53
+ * By default, Auth.js assumes that the HubSpot provider is
54
+ * based on the [OAuth 2](https://www.rfc-editor.org/rfc/rfc6749.html) specification.
55
+ *
56
+ * You need to have an APP in your Developer Account as described at https://developers.hubspot.com/docs/api/developer-tools-overview
57
+ * :::note
58
+ * HubSpot returns a limited amount of information on the token holder (see [docs](https://legacydocs.hubspot.com/docs/methods/oauth2/get-access-token-information)). One other issue is that the name and profile photo cannot be fetched through API as discussed [here](https://community.hubspot.com/t5/APIs-Integrations/Profile-photo-is-not-retrieved-with-User-API/m-p/325521).
59
+ * :::
60
+ * :::tip
61
+ *
62
+ * The HubSpot provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/hubspot.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 HubSpot<P extends HubSpotProfile>(
78
+ options: OAuthUserConfig<P>
79
+ ): OAuthConfig<P> {
80
+ return {
81
+ id: "hubspot",
82
+ name: "HubSpot",
83
+ type: "oauth",
84
+ authorization: {
85
+ url: "https://app.hubspot.com/oauth/authorize",
86
+ params: { scope: "oauth", client_id: options.clientId },
87
+ },
88
+ client: {
89
+ token_endpoint_auth_method: "client_secret_post",
90
+ },
91
+ token: "https://api.hubapi.com/oauth/v1/token",
92
+ userinfo: {
93
+ url: "https://api.hubapi.com/oauth/v1/access-tokens",
94
+ async request({ tokens, provider }) {
95
+ const url = `${provider.userinfo?.url}/${tokens.access_token}`
96
+
97
+ return await fetch(url, {
98
+ headers: { "Content-Type": "application/json" },
99
+ method: "GET",
100
+ }).then(async (res) => await res.json())
101
+ },
102
+ },
103
+ profile(profile) {
104
+ return {
105
+ id: profile.user_id,
106
+ name: profile.user,
107
+ email: profile.user,
108
+
109
+ // TODO: get image from profile once it's available
110
+ // Details available https://community.hubspot.com/t5/APIs-Integrations/Profile-photo-is-not-retrieved-with-User-API/m-p/325521
111
+ image: null,
112
+ }
113
+ },
114
+ style: { bg: "#ff7a59", text: "#fff" },
115
+ options,
116
+ }
117
+ }
@@ -0,0 +1,234 @@
1
+ /**
2
+ * <div class="provider" style={{backgroundColor: "#fff", display: "flex", justifyContent: "space-between", color: "#000", padding: 16}}>
3
+ * <span>Built-in <b>Hugging Face</b> integration.</span>
4
+ * <a href="https://huggingface.co">
5
+ * <img style={{display: "block"}} src="https://authjs.dev/img/providers/huggingface.svg" height="48" width="48"/>
6
+ * </a>
7
+ * </div>
8
+ *
9
+ * @module providers/huggingface
10
+ */
11
+
12
+ import type { OIDCConfig, OIDCUserConfig } from "./index.js"
13
+
14
+ export interface HuggingfaceProfile {
15
+ /**
16
+ * Unique identifier for the user.
17
+ */
18
+ sub: string
19
+ /**
20
+ * Full name of the user.
21
+ *
22
+ * Needs 'profile' scope
23
+ */
24
+ name?: string
25
+ /**
26
+ * Username of the user.
27
+ *
28
+ * Need 'profile' scope
29
+ */
30
+ preferred_username?: string
31
+ /**
32
+ * URL of the user's avatar.
33
+ *
34
+ * Need 'profile' scope
35
+ */
36
+ profile?: string
37
+ /**
38
+ * URL of the user's profile picture.
39
+ *
40
+ * Need 'profile' scope
41
+ */
42
+ picture?: string
43
+ /**
44
+ * Need 'profile' scope
45
+ *
46
+ * Website of the user.
47
+ */
48
+ website?: string
49
+ /**
50
+ * Need 'email' scope
51
+ *
52
+ * Email address of the user.
53
+ */
54
+ email?: string
55
+ /**
56
+ * Need 'email' scope
57
+ *
58
+ * Whether the user's email address is verified. Should always be true, Hugging Face enforces
59
+ * email verification for users to grant access to OAuth apps.
60
+ */
61
+ email_verified?: boolean
62
+ /**
63
+ * Whether the user has a paid subscription.
64
+ */
65
+ isPro: boolean
66
+ /**
67
+ * Whether the user has a payment method set up.
68
+ *
69
+ * Needs the `read-billing` scope.
70
+ */
71
+ canPay?: boolean
72
+ /**
73
+ * List of the user's organizations.
74
+ */
75
+ orgs: Array<{
76
+ /**
77
+ * Unique identifier for the organization.
78
+ */
79
+ sub: string
80
+ /**
81
+ * Name of the organization.
82
+ */
83
+ name: string
84
+ /**
85
+ * URL of the organization's avatar.
86
+ */
87
+ picture: string
88
+ /**
89
+ * Username of the organization.
90
+ */
91
+ preferred_username: string
92
+ /**
93
+ * Whether the organization has a paid enterprise subscription.
94
+ */
95
+ isEnterprise: boolean
96
+ /**
97
+ * Whether the organization has a payment method set up.
98
+ *
99
+ * Access to the organization needs to be granted to the oauth app for this field to be present.
100
+ */
101
+ canPay?: boolean
102
+ /**
103
+ * The role of the user in the organization.
104
+ *
105
+ * Access to the organization needs to be granted to the oauth app for this field to be present.
106
+ */
107
+ roleInOrg?: "admin" | "write" | "read" | "contributor"
108
+ /**
109
+ * User needs to re-authenticate to access the organization.
110
+ *
111
+ * Access to the organization needs to be granted to the oauth app for this field to be present.
112
+ */
113
+ pendingSSO?: boolean
114
+ /**
115
+ * User needs to enable MFA to access the organization.
116
+ *
117
+ * Access to the organization needs to be granted to the oauth app for this field to be present.
118
+ */
119
+ missingMFA?: boolean
120
+ /**
121
+ * Resource groups are a feature of enterprise organizations.
122
+ *
123
+ * They allow granular access control to resources within the organization.
124
+ *
125
+ * Access to the organization needs to be granted to the oauth app for this field to be present.
126
+ */
127
+ resourceGroups?: Array<{
128
+ /**
129
+ * Unique identifier for the resource group.
130
+ */
131
+ sub: string
132
+ name: string
133
+ /**
134
+ * The role of the user in the resource group.
135
+ */
136
+ role: "read" | "write" | "admin" | "contributor"
137
+ }>
138
+ }>
139
+ }
140
+
141
+ /**
142
+ * Add HuggingFace login to your page.
143
+ *
144
+ * ### Setup
145
+ *
146
+ * #### Callback URL
147
+ * ```
148
+ * https://example.com/api/auth/callback/huggingface
149
+ * ```
150
+ *
151
+ * #### Configuration
152
+ *```ts
153
+ * import { Auth } from "@auth/core"
154
+ * import HuggingFace from "@auth/core/providers/huggingface"
155
+ *
156
+ * const request = new Request(origin)
157
+ * const response = await Auth(request, {
158
+ * providers: [
159
+ * HuggingFace({
160
+ * clientId: HUGGINGFACE_CLIENT_ID,
161
+ * clientSecret: HUGGINGFACE_CLIENT_SECRET,
162
+ * authorization: {
163
+ * params: {
164
+ * scope: "openid profile email", // specify the scopes you need
165
+ * // orgIds: "unique_org_id" // If your oauth app needs access to a specific organization of the user
166
+ * }
167
+ * },
168
+ * }),
169
+ * ],
170
+ * })
171
+ * ```
172
+ *
173
+ * The following scopes are available:
174
+ *
175
+ * - `openid`: Grants access to the user's OpenID Connect profile.
176
+ * - `profile`: Grants access to the user's profile information.
177
+ * - `email`: Grants access to the user's email address.
178
+ * - `read-repos`: Grants read access to the user's repositories.
179
+ * - `write-repos`: Grants write access to the user's repositories.
180
+ * - `manage-repos`: Can create/delete repositories on behalf of the user.
181
+ * - `write-discussions`: Can post on the user's behalf.
182
+ * - `read-billing`: Know if the user has a payment method set up.
183
+ * - `inference-api`: Can make calls to Inference providers on behalf of the user.
184
+ * - `webhooks`: Can manage webhooks on behalf of the user.
185
+ *
186
+ * You need to enable them first in your OAuth app settings.
187
+ *
188
+ * /!\ By default, the `profile` and `email` scopes are enabled in NextAuth. So you need to enable
189
+ * the `email` scope in your OAuth app settings or you will get a scope error.
190
+ *
191
+ * ### Resources
192
+ *
193
+ * - [Hugging Face OAuth documentation](https://huggingface.co/docs/hub/en/oauth#creating-an-oauth-app)
194
+ * - [Create an OAuth application](https://huggingface.co/settings/applications/new)
195
+ *
196
+ * ### Notes
197
+ *
198
+ * By default, Auth.js assumes that the Hugging Face provider is
199
+ * based on the [OIDC](https://openid.net/specs/openid-connect-core-1_0.html) specification.
200
+ *
201
+ * :::tip
202
+ *
203
+ * The HuggingFace provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/huggingface.ts).
204
+ * To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers).
205
+ *
206
+ * :::
207
+ *
208
+ * :::info **Disclaimer**
209
+ *
210
+ * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue).
211
+ *
212
+ * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from
213
+ * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec,
214
+ * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions).
215
+ *
216
+ * :::
217
+ */
218
+ export default function Huggingface(
219
+ options: OIDCUserConfig<HuggingfaceProfile>
220
+ ): OIDCConfig<HuggingfaceProfile> {
221
+ return {
222
+ id: "huggingface",
223
+ name: "Hugging Face",
224
+ type: "oidc",
225
+ issuer: "https://huggingface.co",
226
+ checks: ["state", "pkce"],
227
+
228
+ style: {
229
+ bg: "#FFD21E",
230
+ text: "#000",
231
+ },
232
+ options,
233
+ }
234
+ }