@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,292 @@
1
+ /**
2
+ * Add FusionAuth login to your page.
3
+ *
4
+ * ### Setup
5
+ *
6
+ * #### Callback URL
7
+ * ```
8
+ * https://example.com/api/auth/callback/fusionauth
9
+ * ```
10
+ *
11
+ * #### Configuration
12
+ *```ts
13
+ * import { Auth } from "@auth/core"
14
+ * import FusionAuth from "@auth/core/providers/fusionauth"
15
+ *
16
+ * const request = new Request(origin)
17
+ * const response = await Auth(request, {
18
+ * providers: [
19
+ * FusionAuth({
20
+ * clientId: FUSIONAUTH_CLIENT_ID,
21
+ * clientSecret: FUSIONAUTH_CLIENT_SECRET,
22
+ * tenantId: FUSIONAUTH_TENANT_ID,
23
+ * issuer: FUSIONAUTH_ISSUER,
24
+ * }),
25
+ * ],
26
+ * })
27
+ * ```
28
+ * :::warning
29
+ * If you're using multi-tenancy, you need to pass in the tenantId option to apply the proper theme.
30
+ * :::
31
+ *
32
+ * ### Resources
33
+ *
34
+ * - [FusionAuth OAuth documentation](https://fusionauth.io/docs/lifecycle/authenticate-users/oauth/)
35
+ *
36
+ * ### Notes
37
+ *
38
+ * By default, Auth.js assumes that the FusionAuth provider is
39
+ * based on the [OAuth 2](https://www.rfc-editor.org/rfc/rfc6749.html) specification.
40
+ *
41
+ * ## Configuration
42
+ * :::tip
43
+ * An application can be created at https://your-fusionauth-server-url/admin/application.
44
+ *
45
+ * For more information, follow the [FusionAuth 5-minute setup guide](https://fusionauth.io/docs/v1/tech/5-minute-setup-guide).
46
+ * :::
47
+ *
48
+ * In the OAuth settings for your application, configure the following.
49
+ *
50
+ * - Redirect URL
51
+ * - https://localhost:3000/api/auth/callback/fusionauth
52
+ * - Enabled grants
53
+ * - Make sure _Authorization Code_ is enabled.
54
+ *
55
+ * If using JSON Web Tokens, you need to make sure the signing algorithm is RS256, you can create an RS256 key pair by
56
+ * going to Settings, Key Master, generate RSA and choosing SHA-256 as algorithm. After that, go to the JWT settings of
57
+ * your application and select this key as Access Token signing key and Id Token signing key.
58
+ * :::tip
59
+ *
60
+ * The FusionAuth provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/fusionauth.ts).
61
+ * To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers).
62
+ *
63
+ * :::
64
+ *
65
+ * :::info **Disclaimer**
66
+ *
67
+ * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue).
68
+ *
69
+ * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from
70
+ * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec,
71
+ * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions).
72
+ *
73
+ * :::
74
+ *
75
+ *
76
+ * It is highly recommended to follow this example call when using the provider in Next.js
77
+ * so that you can access both the access_token and id_token on the server.
78
+ *
79
+ * ```ts
80
+ * /// <reference types="next-auth" />
81
+ import NextAuth from 'next-auth';
82
+ export const { handlers, auth, signIn, signOut } = NextAuth({
83
+ providers: [
84
+ {
85
+ id: 'fusionauth',
86
+ name: 'FusionAuth',
87
+ type: 'oidc',
88
+ issuer: process.env.AUTH_FUSIONAUTH_ISSUER!,
89
+ clientId: process.env.AUTH_FUSIONAUTH_CLIENT_ID!,
90
+ clientSecret: process.env.AUTH_FUSIONAUTH_CLIENT_SECRET!,
91
+ authorization: {
92
+ params: {
93
+ scope: 'offline_access email openid profile',
94
+ tenantId: process.env.AUTH_FUSIONAUTH_TENANT_ID!,
95
+ },
96
+ },
97
+ userinfo: `${process.env.AUTH_FUSIONAUTH_ISSUER}/oauth2/userinfo`,
98
+ // This is due to a known processing issue
99
+ // TODO: https://github.com/nextauthjs/next-auth/issues/8745#issuecomment-1907799026
100
+ token: {
101
+ url: `${process.env.AUTH_FUSIONAUTH_ISSUER}/oauth2/token`,
102
+ conform: async (response: Response) => {
103
+ if (response.status === 401) return response;
104
+
105
+ const newHeaders = Array.from(response.headers.entries())
106
+ .filter(([key]) => key.toLowerCase() !== 'www-authenticate')
107
+ .reduce(
108
+ (headers, [key, value]) => (headers.append(key, value), headers),
109
+ new Headers()
110
+ );
111
+
112
+ return new Response(response.body, {
113
+ status: response.status,
114
+ statusText: response.statusText,
115
+ headers: newHeaders,
116
+ });
117
+ },
118
+ },
119
+ },
120
+ ],
121
+ session: {
122
+ strategy: 'jwt',
123
+ },
124
+ // Required to get the account object in the session and enable
125
+ // the ability to call API's externally that rely on JWT tokens.
126
+ callbacks: {
127
+ async jwt(params) {
128
+ const { token, user, account } = params;
129
+ if (account) {
130
+ // First-time login, save the `access_token`, its expiry and the `refresh_token`
131
+ return {
132
+ ...token,
133
+ ...account,
134
+ };
135
+ } else if (
136
+ token.expires_at &&
137
+ Date.now() < (token.expires_at as number) * 1000
138
+ ) {
139
+ // Subsequent logins, but the `access_token` is still valid
140
+ return token;
141
+ } else {
142
+ // Subsequent logins, but the `access_token` has expired, try to refresh it
143
+ if (!token.refresh_token) throw new TypeError('Missing refresh_token');
144
+
145
+ try {
146
+ const refreshResponse = await fetch(
147
+ `${process.env.AUTH_FUSIONAUTH_ISSUER}/oauth2/token`,
148
+ {
149
+ method: 'POST',
150
+ headers: {
151
+ 'Content-Type': 'application/x-www-form-urlencoded',
152
+ },
153
+ body: new URLSearchParams({
154
+ client_id: process.env.AUTH_FUSIONAUTH_CLIENT_ID!,
155
+ client_secret: process.env.AUTH_FUSIONAUTH_CLIENT_SECRET!,
156
+ grant_type: 'refresh_token',
157
+ refresh_token: token.refresh_token as string,
158
+ }),
159
+ }
160
+ );
161
+
162
+ if (!refreshResponse.ok) {
163
+ throw new Error('Failed to refresh token');
164
+ }
165
+
166
+ const tokensOrError = await refreshResponse.json();
167
+
168
+ if (!refreshResponse.ok) throw tokensOrError;
169
+
170
+ const newTokens = tokensOrError as {
171
+ access_token: string;
172
+ expires_in: number;
173
+ refresh_token?: string;
174
+ };
175
+
176
+ return {
177
+ ...token,
178
+ access_token: newTokens.access_token,
179
+ expires_at: Math.floor(Date.now() / 1000 + newTokens.expires_in),
180
+ // Some providers only issue refresh tokens once, so preserve if we did not get a new one
181
+ refresh_token: newTokens.refresh_token
182
+ ? newTokens.refresh_token
183
+ : token.refresh_token,
184
+ };
185
+ } catch (error) {
186
+ console.error('Error refreshing access_token', error);
187
+ // If we fail to refresh the token, return an error so we can handle it on the page
188
+ token.error = 'RefreshTokenError';
189
+ return token;
190
+ }
191
+ }
192
+ },
193
+ async session(params) {
194
+ const { session, token } = params;
195
+ return { ...session, ...token };
196
+ },
197
+ },
198
+ });
199
+
200
+ declare module 'next-auth' {
201
+ interface Session {
202
+ access_token: string;
203
+ expires_in: number;
204
+ id_token?: string;
205
+ expires_at: number;
206
+ refresh_token?: string;
207
+ refresh_token_id?: string;
208
+ error?: 'RefreshTokenError';
209
+ scope: string;
210
+ token_type: string;
211
+ userId: string;
212
+ provider: string;
213
+ type: string;
214
+ providerAccountId: string;
215
+ }
216
+ }
217
+
218
+ declare module 'next-auth' {
219
+ interface JWT {
220
+ access_token: string;
221
+ expires_in: number;
222
+ id_token?: string;
223
+ expires_at: number;
224
+ refresh_token?: string;
225
+ refresh_token_id?: string;
226
+ error?: 'RefreshTokenError';
227
+ scope: string;
228
+ token_type: string;
229
+ userId: string;
230
+ provider: string;
231
+ type: string;
232
+ providerAccountId: string;
233
+ }
234
+ }
235
+ ```
236
+ *
237
+ *
238
+ *
239
+ */
240
+ export default function FusionAuth(
241
+ // tenantId only needed if there is more than one tenant configured on the server
242
+ options) {
243
+ return {
244
+ id: "fusionauth",
245
+ name: "FusionAuth",
246
+ type: "oidc",
247
+ issuer: options.issuer,
248
+ clientId: options.clientId,
249
+ clientSecret: options.clientSecret,
250
+ wellKnown: options?.tenantId
251
+ ? `${options.issuer}/.well-known/openid-configuration?tenantId=${options.tenantId}`
252
+ : `${options.issuer}/.well-known/openid-configuration`,
253
+ authorization: {
254
+ params: {
255
+ scope: "openid offline_access email profile",
256
+ ...(options?.tenantId && { tenantId: options.tenantId }),
257
+ },
258
+ },
259
+ userinfo: `${options.issuer}/oauth2/userinfo`,
260
+ // This is due to a known processing issue
261
+ // TODO: https://github.com/nextauthjs/next-auth/issues/8745#issuecomment-1907799026
262
+ token: {
263
+ url: `${options.issuer}/oauth2/token`,
264
+ conform: async (response) => {
265
+ if (response.status === 401)
266
+ return response;
267
+ const newHeaders = Array.from(response.headers.entries())
268
+ .filter(([key]) => key.toLowerCase() !== "www-authenticate")
269
+ .reduce((headers, [key, value]) => (headers.append(key, value), headers), new Headers());
270
+ return new Response(response.body, {
271
+ status: response.status,
272
+ statusText: response.statusText,
273
+ headers: newHeaders,
274
+ });
275
+ },
276
+ },
277
+ checks: ["pkce", "state"],
278
+ profile(profile) {
279
+ return {
280
+ id: profile.sub,
281
+ email: profile.email,
282
+ name: profile.name ??
283
+ profile.preferred_username ??
284
+ [profile.given_name, profile.middle_name, profile.family_name]
285
+ .filter((x) => x)
286
+ .join(" "),
287
+ image: profile.picture,
288
+ };
289
+ },
290
+ options,
291
+ };
292
+ }
@@ -0,0 +1,127 @@
1
+ /**
2
+ * <div class="provider" style={{backgroundColor: "#24292f", display: "flex", justifyContent: "space-between", color: "#fff", padding: 16}}>
3
+ * <span>Built-in <b>GitHub</b> integration.</span>
4
+ * <a href="https://github.com">
5
+ * <img style={{display: "block"}} src="https://authjs.dev/img/providers/github.svg" height="48" width="48"/>
6
+ * </a>
7
+ * </div>
8
+ *
9
+ * @module providers/github
10
+ */
11
+ import type { OAuthConfig, OAuthUserConfig } from "./index.js";
12
+ export interface GitHubEmail {
13
+ email: string;
14
+ primary: boolean;
15
+ verified: boolean;
16
+ visibility: "public" | "private";
17
+ }
18
+ /** @see [Get the authenticated user](https://docs.github.com/en/rest/users/users#get-the-authenticated-user) */
19
+ export interface GitHubProfile {
20
+ login: string;
21
+ id: number;
22
+ node_id: string;
23
+ avatar_url: string;
24
+ gravatar_id: string | null;
25
+ url: string;
26
+ html_url: string;
27
+ followers_url: string;
28
+ following_url: string;
29
+ gists_url: string;
30
+ starred_url: string;
31
+ subscriptions_url: string;
32
+ organizations_url: string;
33
+ repos_url: string;
34
+ events_url: string;
35
+ received_events_url: string;
36
+ type: string;
37
+ site_admin: boolean;
38
+ name: string | null;
39
+ company: string | null;
40
+ blog: string | null;
41
+ location: string | null;
42
+ email: string | null;
43
+ hireable: boolean | null;
44
+ bio: string | null;
45
+ twitter_username?: string | null;
46
+ public_repos: number;
47
+ public_gists: number;
48
+ followers: number;
49
+ following: number;
50
+ created_at: string;
51
+ updated_at: string;
52
+ private_gists?: number;
53
+ total_private_repos?: number;
54
+ owned_private_repos?: number;
55
+ disk_usage?: number;
56
+ suspended_at?: string | null;
57
+ collaborators?: number;
58
+ two_factor_authentication: boolean;
59
+ plan?: {
60
+ collaborators: number;
61
+ name: string;
62
+ space: number;
63
+ private_repos: number;
64
+ };
65
+ [claim: string]: unknown;
66
+ }
67
+ /**
68
+ * Add GitHub login to your page and make requests to [GitHub APIs](https://docs.github.com/en/rest).
69
+ *
70
+ * ### Setup
71
+ *
72
+ * #### Callback URL
73
+ * ```
74
+ * https://example.com/api/auth/callback/github
75
+ * ```
76
+ *
77
+ * #### Configuration
78
+ * ```ts
79
+ * import { Auth } from "@auth/core"
80
+ * import GitHub from "@auth/core/providers/github"
81
+ *
82
+ * const request = new Request(origin)
83
+ * const response = await Auth(request, {
84
+ * providers: [
85
+ * GitHub({ clientId: GITHUB_CLIENT_ID, clientSecret: GITHUB_CLIENT_SECRET }),
86
+ * ],
87
+ * })
88
+ * ```
89
+ *
90
+ * ### Resources
91
+ *
92
+ * - [GitHub - Creating an OAuth App](https://docs.github.com/en/developers/apps/building-oauth-apps/creating-an-oauth-app)
93
+ * - [GitHub - Authorizing OAuth Apps](https://docs.github.com/en/developers/apps/building-oauth-apps/authorizing-oauth-apps)
94
+ * - [GitHub - Configure your GitHub OAuth Apps](https://github.com/settings/developers)
95
+ * - [Learn more about OAuth](https://authjs.dev/concepts/oauth)
96
+ * - [Source code](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/github.ts)
97
+ *
98
+ * ### Notes
99
+ *
100
+ * By default, Auth.js assumes that the GitHub provider is
101
+ * based on the [OAuth 2](https://www.rfc-editor.org/rfc/rfc6749.html) specification.
102
+ *
103
+ * :::tip
104
+ *
105
+ * The GitHub provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/github.ts).
106
+ * To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers).
107
+ *
108
+ * :::
109
+ *
110
+ * :::info **Disclaimer**
111
+ *
112
+ * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue).
113
+ *
114
+ * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from
115
+ * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec,
116
+ * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions).
117
+ *
118
+ * :::
119
+ */
120
+ export default function GitHub(config: OAuthUserConfig<GitHubProfile> & {
121
+ /** Configuration for usage with [GitHub Enterprise Server](https://docs.github.com/en/enterprise-server/get-started). */
122
+ enterprise?: {
123
+ /** The base URL of your GitHub Enterprise Server instance. */
124
+ baseUrl?: string;
125
+ };
126
+ }): OAuthConfig<GitHubProfile>;
127
+ //# sourceMappingURL=github.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../src/providers/github.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE9D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,QAAQ,GAAG,SAAS,CAAA;CACjC;AAED,gHAAgH;AAChH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,iBAAiB,EAAE,MAAM,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,OAAO,CAAA;IACnB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAA;IACxB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,yBAAyB,EAAE,OAAO,CAAA;IAClC,IAAI,CAAC,EAAE;QACL,aAAa,EAAE,MAAM,CAAA;QACrB,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,aAAa,EAAE,MAAM,CAAA;KACtB,CAAA;IACD,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAC5B,MAAM,EAAE,eAAe,CAAC,aAAa,CAAC,GAAG;IACvC,yHAAyH;IACzH,UAAU,CAAC,EAAE;QACX,8DAA8D;QAC9D,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB,CAAA;CACF,GACA,WAAW,CAAC,aAAa,CAAC,CAuD5B"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * <div class="provider" style={{backgroundColor: "#24292f", display: "flex", justifyContent: "space-between", color: "#fff", padding: 16}}>
3
+ * <span>Built-in <b>GitHub</b> integration.</span>
4
+ * <a href="https://github.com">
5
+ * <img style={{display: "block"}} src="https://authjs.dev/img/providers/github.svg" height="48" width="48"/>
6
+ * </a>
7
+ * </div>
8
+ *
9
+ * @module providers/github
10
+ */
11
+ /**
12
+ * Add GitHub login to your page and make requests to [GitHub APIs](https://docs.github.com/en/rest).
13
+ *
14
+ * ### Setup
15
+ *
16
+ * #### Callback URL
17
+ * ```
18
+ * https://example.com/api/auth/callback/github
19
+ * ```
20
+ *
21
+ * #### Configuration
22
+ * ```ts
23
+ * import { Auth } from "@auth/core"
24
+ * import GitHub from "@auth/core/providers/github"
25
+ *
26
+ * const request = new Request(origin)
27
+ * const response = await Auth(request, {
28
+ * providers: [
29
+ * GitHub({ clientId: GITHUB_CLIENT_ID, clientSecret: GITHUB_CLIENT_SECRET }),
30
+ * ],
31
+ * })
32
+ * ```
33
+ *
34
+ * ### Resources
35
+ *
36
+ * - [GitHub - Creating an OAuth App](https://docs.github.com/en/developers/apps/building-oauth-apps/creating-an-oauth-app)
37
+ * - [GitHub - Authorizing OAuth Apps](https://docs.github.com/en/developers/apps/building-oauth-apps/authorizing-oauth-apps)
38
+ * - [GitHub - Configure your GitHub OAuth Apps](https://github.com/settings/developers)
39
+ * - [Learn more about OAuth](https://authjs.dev/concepts/oauth)
40
+ * - [Source code](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/github.ts)
41
+ *
42
+ * ### Notes
43
+ *
44
+ * By default, Auth.js assumes that the GitHub provider is
45
+ * based on the [OAuth 2](https://www.rfc-editor.org/rfc/rfc6749.html) specification.
46
+ *
47
+ * :::tip
48
+ *
49
+ * The GitHub provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/github.ts).
50
+ * To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers).
51
+ *
52
+ * :::
53
+ *
54
+ * :::info **Disclaimer**
55
+ *
56
+ * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue).
57
+ *
58
+ * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from
59
+ * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec,
60
+ * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions).
61
+ *
62
+ * :::
63
+ */
64
+ export default function GitHub(config) {
65
+ const baseUrl = config?.enterprise?.baseUrl ?? "https://github.com";
66
+ const apiBaseUrl = config?.enterprise?.baseUrl
67
+ ? `${config?.enterprise?.baseUrl}/api/v3`
68
+ : "https://api.github.com";
69
+ return {
70
+ id: "github",
71
+ name: "GitHub",
72
+ type: "oauth",
73
+ authorization: {
74
+ url: `${baseUrl}/login/oauth/authorize`,
75
+ params: { scope: "read:user user:email" },
76
+ },
77
+ token: `${baseUrl}/login/oauth/access_token`,
78
+ userinfo: {
79
+ url: `${apiBaseUrl}/user`,
80
+ async request({ tokens, provider }) {
81
+ const profile = await fetch(provider.userinfo?.url, {
82
+ headers: {
83
+ Authorization: `Bearer ${tokens.access_token}`,
84
+ "User-Agent": "authjs",
85
+ },
86
+ }).then(async (res) => await res.json());
87
+ if (!profile.email) {
88
+ // If the user does not have a public email, get another via the GitHub API
89
+ // See https://docs.github.com/en/rest/users/emails#list-public-email-addresses-for-the-authenticated-user
90
+ const res = await fetch(`${apiBaseUrl}/user/emails`, {
91
+ headers: {
92
+ Authorization: `Bearer ${tokens.access_token}`,
93
+ "User-Agent": "authjs",
94
+ },
95
+ });
96
+ if (res.ok) {
97
+ const emails = await res.json();
98
+ profile.email = (emails.find((e) => e.primary) ?? emails[0]).email;
99
+ }
100
+ }
101
+ return profile;
102
+ },
103
+ },
104
+ profile(profile) {
105
+ return {
106
+ id: profile.id.toString(),
107
+ name: profile.name ?? profile.login,
108
+ email: profile.email,
109
+ image: profile.avatar_url,
110
+ };
111
+ },
112
+ style: { bg: "#24292f", text: "#fff" },
113
+ options: config,
114
+ };
115
+ }
@@ -0,0 +1,115 @@
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
+ export interface GitLabProfile extends Record<string, any> {
13
+ id: number;
14
+ username: string;
15
+ email: string;
16
+ name: string;
17
+ state: string;
18
+ avatar_url: string;
19
+ web_url: string;
20
+ created_at: string;
21
+ bio: string;
22
+ location?: string;
23
+ public_email: string;
24
+ skype: string;
25
+ linkedin: string;
26
+ twitter: string;
27
+ website_url: string;
28
+ organization: string;
29
+ job_title: string;
30
+ pronouns: string;
31
+ bot: boolean;
32
+ work_information?: string;
33
+ followers: number;
34
+ following: number;
35
+ local_time: string;
36
+ last_sign_in_at: string;
37
+ confirmed_at: string;
38
+ theme_id: number;
39
+ last_activity_on: string;
40
+ color_scheme_id: number;
41
+ projects_limit: number;
42
+ current_sign_in_at: string;
43
+ identities: Array<{
44
+ provider: string;
45
+ extern_uid: string;
46
+ }>;
47
+ can_create_group: boolean;
48
+ can_create_project: boolean;
49
+ two_factor_enabled: boolean;
50
+ external: boolean;
51
+ private_profile: boolean;
52
+ commit_email: string;
53
+ shared_runners_minutes_limit: number;
54
+ extra_shared_runners_minutes_limit: number;
55
+ }
56
+ /**
57
+ * Add GitLab login to your page.
58
+ *
59
+ * ### Setup
60
+ *
61
+ * #### Callback URL
62
+ * ```
63
+ * https://example.com/api/auth/callback/gitlab
64
+ * ```
65
+ *
66
+ * #### Configuration
67
+ *```ts
68
+ * import { Auth } from "@auth/core"
69
+ * import GitLab from "@auth/core/providers/gitlab"
70
+ *
71
+ * const request = new Request(origin)
72
+ * const response = await Auth(request, {
73
+ * providers: [
74
+ * GitLab({ clientId: GITLAB_CLIENT_ID, clientSecret: GITLAB_CLIENT_SECRET }),
75
+ * ],
76
+ * })
77
+ * ```
78
+ *
79
+ * ### Resources
80
+ *
81
+ * - [GitLab OAuth documentation](https://docs.gitlab.com/ee/api/oauth2.html)
82
+ *
83
+ * ### Notes
84
+ *
85
+ * By default, Auth.js assumes that the GitLab provider is
86
+ * based on the [OAuth 2](https://www.rfc-editor.org/rfc/rfc6749.html) specification.
87
+ *
88
+ * :::tip
89
+ * Enable the `read_user` option in scope if you want to save the users email address on sign up.
90
+ * :::
91
+ *
92
+ * :::tip
93
+ *
94
+ * The GitLab provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/gitlab.ts).
95
+ * To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers).
96
+ *
97
+ * :::
98
+ *
99
+ * :::info **Disclaimer**
100
+ *
101
+ * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue).
102
+ *
103
+ * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from
104
+ * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec,
105
+ * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions).
106
+ *
107
+ * :::
108
+ */
109
+ export default function GitLab<P extends GitLabProfile>(options: OAuthUserConfig<P> & {
110
+ /**
111
+ * @default "https://gitlab.com"
112
+ */
113
+ baseUrl?: URL | string;
114
+ }): OAuthConfig<P>;
115
+ //# sourceMappingURL=gitlab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitlab.d.ts","sourceRoot":"","sources":["../src/providers/gitlab.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE9D,MAAM,WAAW,aAAc,SAAQ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACxD,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,OAAO,CAAA;IACZ,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,MAAM,CAAA;IACtB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,UAAU,EAAE,KAAK,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAA;QAChB,UAAU,EAAE,MAAM,CAAA;KACnB,CAAC,CAAA;IACF,gBAAgB,EAAE,OAAO,CAAA;IACzB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,kBAAkB,EAAE,OAAO,CAAA;IAC3B,QAAQ,EAAE,OAAO,CAAA;IACjB,eAAe,EAAE,OAAO,CAAA;IACxB,YAAY,EAAE,MAAM,CAAA;IACpB,4BAA4B,EAAE,MAAM,CAAA;IACpC,kCAAkC,EAAE,MAAM,CAAA;CAC3C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,CAAC,SAAS,aAAa,EACpD,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG;IAC5B;;OAEG;IACH,OAAO,CAAC,EAAE,GAAG,GAAG,MAAM,CAAA;CACvB,GACA,WAAW,CAAC,CAAC,CAAC,CAsBhB"}