@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,383 @@
1
+ /**
2
+ * @source https://github.com/jshttp/cookie
3
+ * @author blakeembrey
4
+ * @license MIT
5
+ */
6
+
7
+ /**
8
+ * This is a workaround to support ESM-only environments, until `cookie` ships ESM builds.
9
+ * @see https://github.com/jshttp/cookie/issues/211
10
+ */
11
+
12
+ /**
13
+ * RegExp to match cookie-name in RFC 6265 sec 4.1.1
14
+ * This refers out to the obsoleted definition of token in RFC 2616 sec 2.2
15
+ * which has been replaced by the token definition in RFC 7230 appendix B.
16
+ *
17
+ * cookie-name = token
18
+ * token = 1*tchar
19
+ * tchar = "!" / "#" / "$" / "%" / "&" / "'" /
20
+ * "*" / "+" / "-" / "." / "^" / "_" /
21
+ * "`" / "|" / "~" / DIGIT / ALPHA
22
+ */
23
+ const cookieNameRegExp = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/
24
+
25
+ /**
26
+ * RegExp to match cookie-value in RFC 6265 sec 4.1.1
27
+ *
28
+ * cookie-value = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )
29
+ * cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E
30
+ * ; US-ASCII characters excluding CTLs,
31
+ * ; whitespace DQUOTE, comma, semicolon,
32
+ * ; and backslash
33
+ */
34
+ const cookieValueRegExp =
35
+ /^("?)[\u0021\u0023-\u002B\u002D-\u003A\u003C-\u005B\u005D-\u007E]*\1$/
36
+
37
+ /**
38
+ * RegExp to match domain-value in RFC 6265 sec 4.1.1
39
+ *
40
+ * domain-value = <subdomain>
41
+ * ; defined in [RFC1034], Section 3.5, as
42
+ * ; enhanced by [RFC1123], Section 2.1
43
+ * <subdomain> = <label> | <subdomain> "." <label>
44
+ * <label> = <let-dig> [ [ <ldh-str> ] <let-dig> ]
45
+ * Labels must be 63 characters or less.
46
+ * 'let-dig' not 'letter' in the first char, per RFC1123
47
+ * <ldh-str> = <let-dig-hyp> | <let-dig-hyp> <ldh-str>
48
+ * <let-dig-hyp> = <let-dig> | "-"
49
+ * <let-dig> = <letter> | <digit>
50
+ * <letter> = any one of the 52 alphabetic characters A through Z in
51
+ * upper case and a through z in lower case
52
+ * <digit> = any one of the ten digits 0 through 9
53
+ *
54
+ * Keep support for leading dot: https://github.com/jshttp/cookie/issues/173
55
+ *
56
+ * > (Note that a leading %x2E ("."), if present, is ignored even though that
57
+ * character is not permitted, but a trailing %x2E ("."), if present, will
58
+ * cause the user agent to ignore the attribute.)
59
+ */
60
+ const domainValueRegExp =
61
+ /^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i
62
+
63
+ /**
64
+ * RegExp to match path-value in RFC 6265 sec 4.1.1
65
+ *
66
+ * path-value = <any CHAR except CTLs or ";">
67
+ * CHAR = %x01-7F
68
+ * ; defined in RFC 5234 appendix B.1
69
+ */
70
+ const pathValueRegExp = /^[\u0020-\u003A\u003D-\u007E]*$/
71
+
72
+ const __toString = Object.prototype.toString
73
+
74
+ const NullObject = /* @__PURE__ */ (() => {
75
+ const C = function () {}
76
+ C.prototype = Object.create(null)
77
+ return C
78
+ })() as unknown as { new (): any }
79
+
80
+ /**
81
+ * Parse options.
82
+ */
83
+ export interface ParseOptions {
84
+ /**
85
+ * Specifies a function that will be used to decode a [cookie-value](https://datatracker.ietf.org/doc/html/rfc6265#section-4.1.1).
86
+ * Since the value of a cookie has a limited character set (and must be a simple string), this function can be used to decode
87
+ * a previously-encoded cookie value into a JavaScript string.
88
+ *
89
+ * The default function is the global `decodeURIComponent`, wrapped in a `try..catch`. If an error
90
+ * is thrown it will return the cookie's original value. If you provide your own encode/decode
91
+ * scheme you must ensure errors are appropriately handled.
92
+ *
93
+ * @default decode
94
+ */
95
+ decode?: (str: string) => string | undefined
96
+ }
97
+
98
+ /**
99
+ * Parse a cookie header.
100
+ *
101
+ * Parse the given cookie header string into an object
102
+ * The object has the various cookies as keys(names) => values
103
+ */
104
+ export function parse(
105
+ str: string,
106
+ options?: ParseOptions
107
+ ): Record<string, string | undefined> {
108
+ const obj: Record<string, string | undefined> = new NullObject()
109
+ const len = str.length
110
+ // RFC 6265 sec 4.1.1, RFC 2616 2.2 defines a cookie name consists of one char minimum, plus '='.
111
+ if (len < 2) return obj
112
+
113
+ const dec = options?.decode || decode
114
+ let index = 0
115
+
116
+ do {
117
+ const eqIdx = str.indexOf("=", index)
118
+ if (eqIdx === -1) break // No more cookie pairs.
119
+
120
+ const colonIdx = str.indexOf(";", index)
121
+ const endIdx = colonIdx === -1 ? len : colonIdx
122
+
123
+ if (eqIdx > endIdx) {
124
+ // backtrack on prior semicolon
125
+ index = str.lastIndexOf(";", eqIdx - 1) + 1
126
+ continue
127
+ }
128
+
129
+ const keyStartIdx = startIndex(str, index, eqIdx)
130
+ const keyEndIdx = endIndex(str, eqIdx, keyStartIdx)
131
+ const key = str.slice(keyStartIdx, keyEndIdx)
132
+
133
+ // only assign once
134
+ if (obj[key] === undefined) {
135
+ let valStartIdx = startIndex(str, eqIdx + 1, endIdx)
136
+ let valEndIdx = endIndex(str, endIdx, valStartIdx)
137
+
138
+ const value = dec(str.slice(valStartIdx, valEndIdx))
139
+ obj[key] = value
140
+ }
141
+
142
+ index = endIdx + 1
143
+ } while (index < len)
144
+
145
+ return obj
146
+ }
147
+
148
+ function startIndex(str: string, index: number, max: number) {
149
+ do {
150
+ const code = str.charCodeAt(index)
151
+ if (code !== 0x20 /* */ && code !== 0x09 /* \t */) return index
152
+ } while (++index < max)
153
+ return max
154
+ }
155
+
156
+ function endIndex(str: string, index: number, min: number) {
157
+ while (index > min) {
158
+ const code = str.charCodeAt(--index)
159
+ if (code !== 0x20 /* */ && code !== 0x09 /* \t */) return index + 1
160
+ }
161
+ return min
162
+ }
163
+
164
+ /**
165
+ * Serialize options.
166
+ */
167
+ export interface SerializeOptions {
168
+ /**
169
+ * Specifies a function that will be used to encode a [cookie-value](https://datatracker.ietf.org/doc/html/rfc6265#section-4.1.1).
170
+ * Since value of a cookie has a limited character set (and must be a simple string), this function can be used to encode
171
+ * a value into a string suited for a cookie's value, and should mirror `decode` when parsing.
172
+ *
173
+ * @default encodeURIComponent
174
+ */
175
+ encode?: (str: string) => string
176
+ /**
177
+ * Specifies the `number` (in seconds) to be the value for the [`Max-Age` `Set-Cookie` attribute](https://tools.ietf.org/html/rfc6265#section-5.2.2).
178
+ *
179
+ * The [cookie storage model specification](https://tools.ietf.org/html/rfc6265#section-5.3) states that if both `expires` and
180
+ * `maxAge` are set, then `maxAge` takes precedence, but it is possible not all clients by obey this,
181
+ * so if both are set, they should point to the same date and time.
182
+ */
183
+ maxAge?: number
184
+ /**
185
+ * Specifies the `Date` object to be the value for the [`Expires` `Set-Cookie` attribute](https://tools.ietf.org/html/rfc6265#section-5.2.1).
186
+ * When no expiration is set clients consider this a "non-persistent cookie" and delete it the current session is over.
187
+ *
188
+ * The [cookie storage model specification](https://tools.ietf.org/html/rfc6265#section-5.3) states that if both `expires` and
189
+ * `maxAge` are set, then `maxAge` takes precedence, but it is possible not all clients by obey this,
190
+ * so if both are set, they should point to the same date and time.
191
+ */
192
+ expires?: Date
193
+ /**
194
+ * Specifies the value for the [`Domain` `Set-Cookie` attribute](https://tools.ietf.org/html/rfc6265#section-5.2.3).
195
+ * When no domain is set clients consider the cookie to apply to the current domain only.
196
+ */
197
+ domain?: string
198
+ /**
199
+ * Specifies the value for the [`Path` `Set-Cookie` attribute](https://tools.ietf.org/html/rfc6265#section-5.2.4).
200
+ * When no path is set, the path is considered the ["default path"](https://tools.ietf.org/html/rfc6265#section-5.1.4).
201
+ */
202
+ path?: string
203
+ /**
204
+ * Enables the [`HttpOnly` `Set-Cookie` attribute](https://tools.ietf.org/html/rfc6265#section-5.2.6).
205
+ * When enabled, clients will not allow client-side JavaScript to see the cookie in `document.cookie`.
206
+ */
207
+ httpOnly?: boolean
208
+ /**
209
+ * Enables the [`Secure` `Set-Cookie` attribute](https://tools.ietf.org/html/rfc6265#section-5.2.5).
210
+ * When enabled, clients will only send the cookie back if the browser has a HTTPS connection.
211
+ */
212
+ secure?: boolean
213
+ /**
214
+ * Enables the [`Partitioned` `Set-Cookie` attribute](https://tools.ietf.org/html/draft-cutler-httpbis-partitioned-cookies/).
215
+ * When enabled, clients will only send the cookie back when the current domain _and_ top-level domain matches.
216
+ *
217
+ * This is an attribute that has not yet been fully standardized, and may change in the future.
218
+ * This also means clients may ignore this attribute until they understand it. More information
219
+ * about can be found in [the proposal](https://github.com/privacycg/CHIPS).
220
+ */
221
+ partitioned?: boolean
222
+ /**
223
+ * Specifies the value for the [`Priority` `Set-Cookie` attribute](https://tools.ietf.org/html/draft-west-cookie-priority-00#section-4.1).
224
+ *
225
+ * - `'low'` will set the `Priority` attribute to `Low`.
226
+ * - `'medium'` will set the `Priority` attribute to `Medium`, the default priority when not set.
227
+ * - `'high'` will set the `Priority` attribute to `High`.
228
+ *
229
+ * More information about priority levels can be found in [the specification](https://tools.ietf.org/html/draft-west-cookie-priority-00#section-4.1).
230
+ */
231
+ priority?: "low" | "medium" | "high"
232
+ /**
233
+ * Specifies the value for the [`SameSite` `Set-Cookie` attribute](https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-09#section-5.4.7).
234
+ *
235
+ * - `true` will set the `SameSite` attribute to `Strict` for strict same site enforcement.
236
+ * - `'lax'` will set the `SameSite` attribute to `Lax` for lax same site enforcement.
237
+ * - `'none'` will set the `SameSite` attribute to `None` for an explicit cross-site cookie.
238
+ * - `'strict'` will set the `SameSite` attribute to `Strict` for strict same site enforcement.
239
+ *
240
+ * More information about enforcement levels can be found in [the specification](https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-09#section-5.4.7).
241
+ */
242
+ sameSite?: boolean | "lax" | "strict" | "none"
243
+ }
244
+
245
+ /**
246
+ * Serialize data into a cookie header.
247
+ *
248
+ * Serialize a name value pair into a cookie string suitable for
249
+ * http headers. An optional options object specifies cookie parameters.
250
+ *
251
+ * serialize('foo', 'bar', { httpOnly: true })
252
+ * => "foo=bar; httpOnly"
253
+ */
254
+ export function serialize(
255
+ name: string,
256
+ val: string,
257
+ options?: SerializeOptions
258
+ ): string {
259
+ const enc = options?.encode || encodeURIComponent
260
+
261
+ if (!cookieNameRegExp.test(name)) {
262
+ throw new TypeError(`argument name is invalid: ${name}`)
263
+ }
264
+
265
+ const value = enc(val)
266
+
267
+ if (!cookieValueRegExp.test(value)) {
268
+ throw new TypeError(`argument val is invalid: ${val}`)
269
+ }
270
+
271
+ let str = name + "=" + value
272
+ if (!options) return str
273
+
274
+ if (options.maxAge !== undefined) {
275
+ if (!Number.isInteger(options.maxAge)) {
276
+ throw new TypeError(`option maxAge is invalid: ${options.maxAge}`)
277
+ }
278
+
279
+ str += "; Max-Age=" + options.maxAge
280
+ }
281
+
282
+ if (options.domain) {
283
+ if (!domainValueRegExp.test(options.domain)) {
284
+ throw new TypeError(`option domain is invalid: ${options.domain}`)
285
+ }
286
+
287
+ str += "; Domain=" + options.domain
288
+ }
289
+
290
+ if (options.path) {
291
+ if (!pathValueRegExp.test(options.path)) {
292
+ throw new TypeError(`option path is invalid: ${options.path}`)
293
+ }
294
+
295
+ str += "; Path=" + options.path
296
+ }
297
+
298
+ if (options.expires) {
299
+ if (
300
+ !isDate(options.expires) ||
301
+ !Number.isFinite(options.expires.valueOf())
302
+ ) {
303
+ throw new TypeError(`option expires is invalid: ${options.expires}`)
304
+ }
305
+
306
+ str += "; Expires=" + options.expires.toUTCString()
307
+ }
308
+
309
+ if (options.httpOnly) {
310
+ str += "; HttpOnly"
311
+ }
312
+
313
+ if (options.secure) {
314
+ str += "; Secure"
315
+ }
316
+
317
+ if (options.partitioned) {
318
+ str += "; Partitioned"
319
+ }
320
+
321
+ if (options.priority) {
322
+ const priority =
323
+ typeof options.priority === "string"
324
+ ? options.priority.toLowerCase()
325
+ : undefined
326
+ switch (priority) {
327
+ case "low":
328
+ str += "; Priority=Low"
329
+ break
330
+ case "medium":
331
+ str += "; Priority=Medium"
332
+ break
333
+ case "high":
334
+ str += "; Priority=High"
335
+ break
336
+ default:
337
+ throw new TypeError(`option priority is invalid: ${options.priority}`)
338
+ }
339
+ }
340
+
341
+ if (options.sameSite) {
342
+ const sameSite =
343
+ typeof options.sameSite === "string"
344
+ ? options.sameSite.toLowerCase()
345
+ : options.sameSite
346
+ switch (sameSite) {
347
+ case true:
348
+ case "strict":
349
+ str += "; SameSite=Strict"
350
+ break
351
+ case "lax":
352
+ str += "; SameSite=Lax"
353
+ break
354
+ case "none":
355
+ str += "; SameSite=None"
356
+ break
357
+ default:
358
+ throw new TypeError(`option sameSite is invalid: ${options.sameSite}`)
359
+ }
360
+ }
361
+
362
+ return str
363
+ }
364
+
365
+ /**
366
+ * URL-decode string value. Optimized to skip native call when no %.
367
+ */
368
+ function decode(str: string): string {
369
+ if (str.indexOf("%") === -1) return str
370
+
371
+ try {
372
+ return decodeURIComponent(str)
373
+ } catch (e) {
374
+ return str
375
+ }
376
+ }
377
+
378
+ /**
379
+ * Determine if value is a Date.
380
+ */
381
+ function isDate(val: any): val is Date {
382
+ return __toString.call(val) === "[object Date]"
383
+ }
@@ -0,0 +1,256 @@
1
+ /**
2
+ * <div class="provider" style={{backgroundColor: "#fff", display: "flex", justifyContent: "space-between", color: "#000", padding: 16}}>
3
+ * <span>Built-in <b>42School</b> integration.</span>
4
+ * <a href="https://api.intra.42.fr//">
5
+ * <img style={{display: "block"}} src="https://authjs.dev/img/providers/42-school.svg" height="48" width="48"/>
6
+ * </a>
7
+ * </div>
8
+ *
9
+ * @module providers/42-school
10
+ */
11
+ import type { OAuthConfig, OAuthUserConfig } from "./index.js"
12
+
13
+ export interface UserData {
14
+ id: number
15
+ email: string
16
+ login: string
17
+ first_name: string
18
+ last_name: string
19
+ usual_full_name: null | string
20
+ usual_first_name: null | string
21
+ url: string
22
+ phone: "hidden" | string | null
23
+ displayname: string
24
+ image_url: string | null
25
+ "staff?": boolean
26
+ correction_point: number
27
+ pool_month: string | null
28
+ pool_year: string | null
29
+ location: string | null
30
+ wallet: number
31
+ anonymize_date: string
32
+ created_at: string
33
+ updated_at: string | null
34
+ alumni: boolean
35
+ "is_launched?": boolean
36
+ }
37
+
38
+ export interface CursusUser {
39
+ grade: string | null
40
+ level: number
41
+ skills: Array<{ id: number; name: string; level: number }>
42
+ blackholed_at: string | null
43
+ id: number
44
+ begin_at: string | null
45
+ end_at: string | null
46
+ cursus_id: number
47
+ has_coalition: boolean
48
+ created_at: string
49
+ updated_at: string | null
50
+ user: UserData
51
+ cursus: { id: number; created_at: string; name: string; slug: string }
52
+ }
53
+
54
+ export interface ProjectUser {
55
+ id: number
56
+ occurrence: number
57
+ final_mark: number | null
58
+ status: "in_progress" | "finished"
59
+ "validated?": boolean | null
60
+ current_team_id: number
61
+ project: {
62
+ id: number
63
+ name: string
64
+ slug: string
65
+ parent_id: number | null
66
+ }
67
+ cursus_ids: number[]
68
+ marked_at: string | null
69
+ marked: boolean
70
+ retriable_at: string | null
71
+ created_at: string
72
+ updated_at: string | null
73
+ }
74
+
75
+ export interface Achievement {
76
+ id: number
77
+ name: string
78
+ description: string
79
+ tier: "none" | "easy" | "medium" | "hard" | "challenge"
80
+ kind: "scolarity" | "project" | "pedagogy" | "scolarity"
81
+ visible: boolean
82
+ image: string | null
83
+ nbr_of_success: number | null
84
+ users_url: string
85
+ }
86
+
87
+ export interface LanguagesUser {
88
+ id: number
89
+ language_id: number
90
+ user_id: number
91
+ position: number
92
+ created_at: string
93
+ }
94
+
95
+ export interface TitlesUser {
96
+ id: number
97
+ user_id: number
98
+ title_id: number
99
+ selected: boolean
100
+ created_at: string
101
+ updated_at: string | null
102
+ }
103
+
104
+ export interface ExpertisesUser {
105
+ id: number
106
+ expertise_id: number
107
+ interested: boolean
108
+ value: number
109
+ contact_me: boolean
110
+ created_at: string
111
+ user_id: number
112
+ }
113
+
114
+ export interface Campus {
115
+ id: number
116
+ name: string
117
+ time_zone: string
118
+ language: {
119
+ id: number
120
+ name: string
121
+ identifier: string
122
+ created_at: string
123
+ updated_at: string | null
124
+ }
125
+ users_count: number
126
+ vogsphere_id: number
127
+ country: string
128
+ address: string
129
+ zip: string
130
+ city: string
131
+ website: string
132
+ facebook: string
133
+ twitter: string
134
+ active: boolean
135
+ email_extension: string
136
+ default_hidden_phone: boolean
137
+ }
138
+
139
+ export interface CampusUser {
140
+ id: number
141
+ user_id: number
142
+ campus_id: number
143
+ is_primary: boolean
144
+ created_at: string
145
+ updated_at: string | null
146
+ }
147
+
148
+ export interface Image {
149
+ link: string
150
+ versions: {
151
+ micro: string
152
+ small: string
153
+ medium: string
154
+ large: string
155
+ }
156
+ }
157
+
158
+ export interface FortyTwoProfile extends UserData, Record<string, any> {
159
+ groups: Array<{ id: string; name: string }>
160
+ cursus_users: CursusUser[]
161
+ projects_users: ProjectUser[]
162
+ languages_users: LanguagesUser[]
163
+ achievements: Achievement[]
164
+ titles: Array<{ id: string; name: string }>
165
+ titles_users: TitlesUser[]
166
+ partnerships: any[]
167
+ patroned: any[]
168
+ patroning: any[]
169
+ expertises_users: ExpertisesUser[]
170
+ roles: Array<{ id: string; name: string }>
171
+ campus: Campus[]
172
+ campus_users: CampusUser[]
173
+ image: Image
174
+ user: any | null
175
+ }
176
+
177
+ /**
178
+ * Add 42School login to your page.
179
+ *
180
+ * ### Setup
181
+ *
182
+ * #### Callback URL
183
+ * ```
184
+ * https://example.com/api/auth/callback/42-school
185
+ * ```
186
+ *
187
+ * #### Configuration
188
+ *```ts
189
+ * import { Auth } from "@auth/core"
190
+ * import FortyTwoSchool from "@auth/core/providers/42-school"
191
+ *
192
+ * const request = new Request(origin)
193
+ * const response = await Auth(request, {
194
+ * providers: [
195
+ * FortyTwoSchool({
196
+ * clientId: FORTY_TWO_SCHOOL_CLIENT_ID,
197
+ * clientSecret: FORTY_TWO_SCHOOL_CLIENT_SECRET,
198
+ * }),
199
+ * ],
200
+ * })
201
+ * ```
202
+ *
203
+ * ### Resources
204
+ *
205
+ * - [42School OAuth documentation](https://api.intra.42.fr/apidoc/guides/web_application_flow)
206
+ *
207
+ * ### Notes
208
+ *
209
+ *
210
+ * :::note
211
+ * 42 returns a field on `Account` called `created_at` which is a number. See the [docs](https://api.intra.42.fr/apidoc/guides/getting_started#make-basic-requests). Make sure to add this field to your database schema, in case if you are using an [Adapter](https://authjs.dev/reference/core/adapters).
212
+ * :::
213
+ * By default, Auth.js assumes that the 42School provider is
214
+ * based on the [OAuth 2](https://www.rfc-editor.org/rfc/rfc6749.html) specification.
215
+ *
216
+ * :::tip
217
+ *
218
+ * The 42School provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/42-school.ts).
219
+ * To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers).
220
+ *
221
+ * :::
222
+ *
223
+ * :::info **Disclaimer**
224
+ *
225
+ * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue).
226
+ *
227
+ * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from
228
+ * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec,
229
+ * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions).
230
+ *
231
+ * :::
232
+ */
233
+ export default function FortyTwo<P extends FortyTwoProfile>(
234
+ options: OAuthUserConfig<P>
235
+ ): OAuthConfig<P> {
236
+ return {
237
+ id: "42-school",
238
+ name: "42 School",
239
+ type: "oauth",
240
+ authorization: {
241
+ url: "https://api.intra.42.fr/oauth/authorize",
242
+ params: { scope: "public" },
243
+ },
244
+ token: "https://api.intra.42.fr/oauth/token",
245
+ userinfo: "https://api.intra.42.fr/v2/me",
246
+ profile(profile) {
247
+ return {
248
+ id: profile.id.toString(),
249
+ name: profile.usual_full_name,
250
+ email: profile.email,
251
+ image: profile.image.link,
252
+ }
253
+ },
254
+ options,
255
+ }
256
+ }