@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,107 @@
1
+ /**
2
+ * <div class="provider" style={{backgroundColor: "#000", display: "flex", justifyContent: "space-between", color: "#fff", padding: 16}}>
3
+ * <span>Built-in <b>SimpleLogin</b> integration.</span>
4
+ * <a href="https://simplelogin.io">
5
+ * <img style={{display: "block"}} src="https://authjs.dev/img/providers/simplelogin.svg" height="48" width="48"/>
6
+ * </a>
7
+ * </div>
8
+ *
9
+ * @module providers/simplelogin
10
+ */
11
+ import type { OAuthConfig, OAuthUserConfig } from "./index.js"
12
+
13
+ export interface SimpleLoginProfile {
14
+ id: number
15
+ sub: string
16
+ email: string
17
+ email_verified: boolean
18
+ name: string
19
+ avatar_url: string | undefined
20
+ client: string
21
+ }
22
+
23
+ /**
24
+ * Add SimpleLogin login to your page.
25
+ *
26
+ * ### Setup
27
+ *
28
+ * #### Callback URL
29
+ * ```
30
+ * https://example.com/api/auth/callback/simplelogin
31
+ * ```
32
+ *
33
+ * #### Configuration
34
+ *```ts
35
+ * import { Auth } from "@auth/core"
36
+ * import SimpleLogin from "@auth/core/providers/simplelogin"
37
+ *
38
+ * const request = new Request(origin)
39
+ * const response = await Auth(request, {
40
+ * providers: [
41
+ * SimpleLogin({
42
+ * clientId: SIMPLELOGIN_CLIENT_ID,
43
+ * clientSecret: SIMPLELOGIN_CLIENT_SECRET,
44
+ * }),
45
+ * ],
46
+ * })
47
+ * ```
48
+ *
49
+ * ### Resources
50
+ *
51
+ * - [Sign in with SimpleLogin](https://simplelogin.io/developer/)
52
+ * - [SimpleLogin OAuth documentation](https://simplelogin.io/docs/siwsl/intro/)
53
+ * - [SimpleLogin OAuth Configuration](https://app.simplelogin.io/developer)
54
+ *
55
+ * ### Notes
56
+ *
57
+ * By default, Auth.js assumes that the SimpleLogin provider is
58
+ * based on the [Open ID Connect](https://openid.net/specs/openid-connect-core-1_0.html) specification.
59
+ *
60
+ * The "Authorized redirect URIs" used must include your full domain and end in the callback path. By default, SimpleLogin whitelists all `http[s]://localhost:*` address to facilitate local development. For example;
61
+ *
62
+ * - For production: `https://{YOUR_DOMAIN}/api/auth/callback/simplelogin`
63
+ * - For development: By default **localhost** is whitelisted.
64
+ *
65
+ * :::warning
66
+ *
67
+ * **Authorized Redirect URIs** must be **HTTPS** for security reason (except for `localhost`).
68
+ *
69
+ * :::
70
+ *
71
+ * :::tip
72
+ *
73
+ * The SimpleLogin provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/simplelogin.ts).
74
+ * To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers).
75
+ *
76
+ * :::
77
+ *
78
+ * :::info **Disclaimer**
79
+ *
80
+ * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue).
81
+ *
82
+ * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from
83
+ * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec,
84
+ * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions).
85
+ *
86
+ * :::
87
+ */
88
+ export default function SimpleLogin<P extends SimpleLoginProfile>(
89
+ options: OAuthUserConfig<P>
90
+ ): OAuthConfig<P> {
91
+ return {
92
+ id: "simplelogin",
93
+ name: "SimpleLogin",
94
+ type: "oidc",
95
+ issuer: "https://app.simplelogin.io",
96
+ profile(profile) {
97
+ return {
98
+ id: profile.sub,
99
+ name: profile.name,
100
+ email: profile.email,
101
+ image: profile.avatar_url,
102
+ }
103
+ },
104
+ style: { brandColor: "#e3156a" },
105
+ options,
106
+ }
107
+ }
@@ -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>Slack</b> integration.</span>
4
+ * <a href="https://www.slack.com/">
5
+ * <img style={{display: "block"}} src="https://authjs.dev/img/providers/slack.svg" height="48" />
6
+ * </a>
7
+ * </div>
8
+ *
9
+ * @module providers/slack
10
+ */
11
+ import type { OAuthConfig, OAuthUserConfig } from "./index.js"
12
+
13
+ export interface SlackProfile extends Record<string, any> {
14
+ ok: boolean
15
+ sub: string
16
+ "https://slack.com/user_id": string
17
+ "https://slack.com/team_id": string
18
+ email: string
19
+ email_verified: boolean
20
+ date_email_verified: number
21
+ name: string
22
+ picture: string
23
+ given_name: string
24
+ family_name: string
25
+ locale: string
26
+ "https://slack.com/team_name": string
27
+ "https://slack.com/team_domain": string
28
+ "https://slack.com/user_image_24": string
29
+ "https://slack.com/user_image_32": string
30
+ "https://slack.com/user_image_48": string
31
+ "https://slack.com/user_image_72": string
32
+ "https://slack.com/user_image_192": string
33
+ "https://slack.com/user_image_512": string
34
+ "https://slack.com/user_image_1024": string
35
+ "https://slack.com/team_image_34": string
36
+ "https://slack.com/team_image_44": string
37
+ "https://slack.com/team_image_68": string
38
+ "https://slack.com/team_image_88": string
39
+ "https://slack.com/team_image_102": string
40
+ "https://slack.com/team_image_132": string
41
+ "https://slack.com/team_image_230": string
42
+ "https://slack.com/team_image_default": boolean
43
+ }
44
+
45
+ /**
46
+ * Add Slack login to your page.
47
+ *
48
+ * ### Setup
49
+ *
50
+ * #### Callback URL
51
+ * ```
52
+ * https://example.com/api/auth/callback/slack
53
+ * ```
54
+ *
55
+ * #### Configuration
56
+ *```ts
57
+ * import { Auth } from "@auth/core"
58
+ * import Slack from "@auth/core/providers/slack"
59
+ *
60
+ * const request = new Request(origin)
61
+ * const response = await Auth(request, {
62
+ * providers: [
63
+ * Slack({ clientId: SLACK_CLIENT_ID, clientSecret: SLACK_CLIENT_SECRET }),
64
+ * ],
65
+ * })
66
+ * ```
67
+ *
68
+ * ### Resources
69
+ *
70
+ * - [Slack Authentication documentation](https://api.slack.com/authentication)
71
+ * - [Sign-in with Slack](https://api.slack.com/docs/sign-in-with-slack)
72
+ * - [Slack app console](https://api.slack.com/apps)
73
+ *
74
+ * ### Notes
75
+ *
76
+ * By default, Auth.js assumes that the Slack provider is
77
+ * based on the [Open ID Connect](https://openid.net/specs/openid-connect-core-1_0.html) specification.
78
+ *
79
+ * :::danger
80
+ *
81
+ * Slack requires that the redirect URL of your app uses https, even for local development.
82
+ * An easy workaround for this is using a service like [ngrok](https://ngrok.com/) that creates a secure tunnel to your app, using https. Remember to set the url as `NEXTAUTH_URL` as well.
83
+ *
84
+ * :::
85
+ *
86
+ * :::tip
87
+ *
88
+ * The Slack provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/slack.ts).
89
+ * To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers).
90
+ *
91
+ * :::
92
+ *
93
+ * :::info **Disclaimer**
94
+ *
95
+ * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue).
96
+ *
97
+ * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from
98
+ * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec,
99
+ * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions).
100
+ *
101
+ * :::
102
+ */
103
+ export default function Slack<P extends SlackProfile>(
104
+ options: OAuthUserConfig<P>
105
+ ): OAuthConfig<P> {
106
+ return {
107
+ id: "slack",
108
+ name: "Slack",
109
+ type: "oidc",
110
+ issuer: "https://slack.com",
111
+ checks: ["nonce"],
112
+ style: { brandColor: "#611f69" },
113
+ options,
114
+ }
115
+ }
@@ -0,0 +1,99 @@
1
+ /**
2
+ * <div class="provider" style={{backgroundColor: "#000", display: "flex", justifyContent: "space-between", color: "#fff", padding: 16}}>
3
+ * <span>Built-in <b>Spotify</b> integration.</span>
4
+ * <a href="https://www.spotify.com/">
5
+ * <img style={{display: "block"}} src="https://authjs.dev/img/providers/spotify.svg" height="48" />
6
+ * </a>
7
+ * </div>
8
+ *
9
+ * @module providers/spotify
10
+ */
11
+ import type { OAuthConfig, OAuthUserConfig } from "./index.js"
12
+
13
+ export interface SpotifyImage {
14
+ url: string
15
+ }
16
+
17
+ export interface SpotifyProfile extends Record<string, any> {
18
+ id: string
19
+ display_name: string
20
+ email: string
21
+ images: SpotifyImage[]
22
+ }
23
+
24
+ /**
25
+ * Add Spotify login to your page.
26
+ *
27
+ * ### Setup
28
+ *
29
+ * #### Callback URL
30
+ * ```
31
+ * https://example.com/api/auth/callback/spotify
32
+ * ```
33
+ *
34
+ * #### Configuration
35
+ *```ts
36
+ * import { Auth } from "@auth/core"
37
+ * import Spotify from "@auth/core/providers/spotify"
38
+ *
39
+ * const request = new Request(origin)
40
+ * const response = await Auth(request, {
41
+ * providers: [
42
+ * Spotify({
43
+ * clientId: SPOTIFY_CLIENT_ID,
44
+ * clientSecret: SPOTIFY_CLIENT_SECRET,
45
+ * }),
46
+ * ],
47
+ * })
48
+ * ```
49
+ *
50
+ * ### Resources
51
+ *
52
+ * - [Spotify OAuth documentation](https://developer.spotify.com/documentation/general/guides/authorization-guide)
53
+ * - [Spotify app console](https://developer.spotify.com/dashboard/applications)
54
+ *
55
+ * ### Notes
56
+ *
57
+ * By default, Auth.js assumes that the Spotify provider is
58
+ * based on the [OAuth 2](https://www.rfc-editor.org/rfc/rfc6749.html) specification.
59
+ *
60
+ * :::tip
61
+ *
62
+ * The Spotify provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/spotify.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 Spotify<P extends SpotifyProfile>(
78
+ options: OAuthUserConfig<P>
79
+ ): OAuthConfig<P> {
80
+ return {
81
+ id: "spotify",
82
+ name: "Spotify",
83
+ type: "oauth",
84
+ authorization:
85
+ "https://accounts.spotify.com/authorize?scope=user-read-email",
86
+ token: "https://accounts.spotify.com/api/token",
87
+ userinfo: "https://api.spotify.com/v1/me",
88
+ profile(profile) {
89
+ return {
90
+ id: profile.id,
91
+ name: profile.display_name,
92
+ email: profile.email,
93
+ image: profile.images?.[0]?.url,
94
+ }
95
+ },
96
+ style: { brandColor: "#1db954" },
97
+ options,
98
+ }
99
+ }
@@ -0,0 +1,101 @@
1
+ /**
2
+ * <div class="provider" style={{backgroundColor: "#000", display: "flex", justifyContent: "space-between", color: "#fff", padding: 16}}>
3
+ * <span>Built-in <b>Strava</b> integration.</span>
4
+ * <a href="https://www.strava.com/">
5
+ * <img style={{display: "block"}} src="https://authjs.dev/img/providers/strava.svg" height="48" />
6
+ * </a>
7
+ * </div>
8
+ *
9
+ * @module providers/strava
10
+ */
11
+ import type { OAuthConfig, OAuthUserConfig } from "./index.js"
12
+
13
+ export interface StravaProfile extends Record<string, any> {
14
+ id: string // this is really a number
15
+ firstname: string
16
+ lastname: string
17
+ profile: string
18
+ }
19
+
20
+ /**
21
+ * Add Strava login to your page.
22
+ *
23
+ * ### Setup
24
+ *
25
+ * #### Callback URL
26
+ * ```
27
+ * https://example.com/api/auth/callback/strava
28
+ * ```
29
+ *
30
+ * #### Configuration
31
+ *```ts
32
+ * import { Auth } from "@auth/core"
33
+ * import Strava from "@auth/core/providers/strava"
34
+ *
35
+ * const request = new Request(origin)
36
+ * const response = await Auth(request, {
37
+ * providers: [
38
+ * Strava({ clientId: STRAVA_CLIENT_ID, clientSecret: STRAVA_CLIENT_SECRET }),
39
+ * ],
40
+ * })
41
+ * ```
42
+ *
43
+ * ### Resources
44
+ *
45
+ * - [Strava API documentation](http://developers.strava.com/docs/reference/)
46
+ *
47
+ * ### Notes
48
+ *
49
+ * By default, Auth.js assumes that the Strava provider is
50
+ * based on the [OAuth 2](https://www.rfc-editor.org/rfc/rfc6749.html) specification.
51
+ *
52
+ * :::tip
53
+ *
54
+ * The Strava provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/strava.ts).
55
+ * To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers).
56
+ *
57
+ * :::
58
+ *
59
+ * :::info **Disclaimer**
60
+ *
61
+ * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue).
62
+ *
63
+ * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from
64
+ * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec,
65
+ * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions).
66
+ *
67
+ * :::
68
+ */
69
+ export default function Strava<P extends StravaProfile>(
70
+ options: OAuthUserConfig<P>
71
+ ): OAuthConfig<P> {
72
+ return {
73
+ id: "strava",
74
+ name: "Strava",
75
+ type: "oauth",
76
+ authorization: {
77
+ url: "https://www.strava.com/api/v3/oauth/authorize",
78
+ params: {
79
+ scope: "read",
80
+ approval_prompt: "auto",
81
+ response_type: "code",
82
+ },
83
+ },
84
+ token: {
85
+ url: "https://www.strava.com/api/v3/oauth/token",
86
+ },
87
+ userinfo: "https://www.strava.com/api/v3/athlete",
88
+ client: {
89
+ token_endpoint_auth_method: "client_secret_post",
90
+ },
91
+ profile(profile) {
92
+ return {
93
+ id: profile.id,
94
+ name: `${profile.firstname} ${profile.lastname}`,
95
+ email: null,
96
+ image: profile.profile,
97
+ }
98
+ },
99
+ options,
100
+ }
101
+ }
@@ -0,0 +1,135 @@
1
+ /**
2
+ * <div class="provider" style={{backgroundColor: "#000", display: "flex", justifyContent: "space-between", color: "#fff", padding: 16}}>
3
+ * <span>Built-in <b>Threads</b> integration.</span>
4
+ * <a href="https://www.threads.net/">
5
+ * <img style={{display: "block"}} src="https://authjs.dev/img/providers/threads.svg" height="48" />
6
+ * </a>
7
+ * </div>
8
+ *
9
+ * @module providers/threads
10
+ */
11
+ import type { OAuthConfig, OAuthUserConfig } from "./index.js"
12
+
13
+ /**
14
+ * [User](https://developers.facebook.com/docs/threads/reference/user)
15
+ */
16
+ export interface ThreadsProfile {
17
+ data: {
18
+ /**
19
+ * Unique identifier of this user. This is returned as a string in order to avoid complications with languages and tools
20
+ * that cannot handle large integers.
21
+ */
22
+ id: string
23
+ /**
24
+ * The Threads handle (username) of this user.
25
+ *
26
+ * To return this field, add `fields=username` in the authorization request's query parameter.
27
+ */
28
+ username?: string
29
+ /**
30
+ * The URL to the profile image for this user, as shown on the user's profile.
31
+ *
32
+ * To return this field, add `fields=threads_profile_picture_url` in the authorization request's query parameter.
33
+ */
34
+ threads_profile_picture_url?: string
35
+ /**
36
+ * The text of this user's profile biography (also known as bio), if the user provided one.
37
+ *
38
+ * To return this field, add `fields=threads_biography` in the authorization request's query parameter.
39
+ */
40
+ threads_biography?: string
41
+ }
42
+ }
43
+
44
+ /**
45
+ * Add Threads login to your page.
46
+ *
47
+ * ### Setup
48
+ *
49
+ * #### Callback URL
50
+ * ```
51
+ * https://example.com/api/auth/callback/threads
52
+ * ```
53
+ *
54
+ * #### Configuration
55
+ *```ts
56
+ * import { Auth } from "@auth/core"
57
+ * import Threads from "@auth/core/providers/threads"
58
+ *
59
+ * const request = new Request(origin)
60
+ * const response = await Auth(request, {
61
+ * providers: [
62
+ * Threads({
63
+ * clientId: THREADS_CLIENT_ID,
64
+ * clientSecret: THREADS_CLIENT_SECRET,
65
+ * }),
66
+ * ],
67
+ * })
68
+ * ```
69
+ *
70
+ * ### Resources
71
+ *
72
+ * - [Threads OAuth documentation](https://developers.facebook.com/docs/threads)
73
+ * - [Threads OAuth apps](https://developers.facebook.com/apps/)
74
+ *
75
+ * ### Notes
76
+ *
77
+ * :::warning
78
+ *
79
+ * Email address is not returned by the Threads API.
80
+ *
81
+ * :::
82
+ *
83
+ * :::tip
84
+ *
85
+ * Threads required callback URL to be configured in your Facebook app and Facebook required you to use **https** even for localhost! In order to do that, you either need to [add an SSL to your localhost](https://www.freecodecamp.org/news/how-to-get-https-working-on-your-local-development-environment-in-5-minutes-7af615770eec/) or use a proxy such as [ngrok](https://ngrok.com/docs).
86
+ *
87
+ * :::
88
+ *
89
+ * By default, Auth.js assumes that the Threads provider is
90
+ * based on the [OAuth 2](https://www.rfc-editor.org/rfc/rfc6749.html) specification.
91
+ *
92
+ * :::tip
93
+ *
94
+ * The Threads provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/threads.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 Threads(
110
+ config: OAuthUserConfig<ThreadsProfile>
111
+ ): OAuthConfig<ThreadsProfile> {
112
+ return {
113
+ id: "threads",
114
+ name: "Threads",
115
+ type: "oauth",
116
+ checks: ["state"],
117
+ authorization: "https://threads.net/oauth/authorize?scope=threads_basic",
118
+ token: "https://graph.threads.net/oauth/access_token",
119
+ userinfo:
120
+ "https://graph.threads.net/v1.0/me?fields=id,username,threads_profile_picture_url",
121
+ client: {
122
+ token_endpoint_auth_method: "client_secret_post",
123
+ },
124
+ profile({ data }) {
125
+ return {
126
+ id: data.id,
127
+ name: data.username || null,
128
+ email: null,
129
+ image: data.threads_profile_picture_url || null,
130
+ }
131
+ },
132
+ style: { bg: "#000", text: "#fff" },
133
+ options: config,
134
+ }
135
+ }