mulguard 1.1.7 → 1.1.9

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 (546) hide show
  1. package/LICENSE +3 -3
  2. package/README.md +21 -582
  3. package/adapters.d.ts +2 -0
  4. package/adapters.d.ts.map +1 -0
  5. package/adapters.js +1 -0
  6. package/index.d.ts +329 -0
  7. package/index.d.ts.map +1 -0
  8. package/index.js +145 -0
  9. package/jwt.d.ts +9 -0
  10. package/jwt.d.ts.map +1 -0
  11. package/jwt.js +8 -0
  12. package/lib/actions.d.ts +13 -0
  13. package/lib/actions.d.ts.map +1 -0
  14. package/lib/actions.js +86 -0
  15. package/lib/client.d.ts +104 -0
  16. package/lib/client.d.ts.map +1 -0
  17. package/lib/client.js +95 -0
  18. package/lib/env.d.ts +12 -0
  19. package/lib/env.d.ts.map +1 -0
  20. package/lib/env.js +38 -0
  21. package/lib/index.d.ts +56 -0
  22. package/lib/index.d.ts.map +1 -0
  23. package/lib/index.js +187 -0
  24. package/lib/types.d.ts +24 -0
  25. package/lib/types.d.ts.map +1 -0
  26. package/lib/types.js +1 -0
  27. package/middleware.d.ts +9 -0
  28. package/middleware.d.ts.map +1 -0
  29. package/middleware.js +12 -0
  30. package/next.d.ts +9 -0
  31. package/next.d.ts.map +1 -0
  32. package/next.js +12 -0
  33. package/package.json +93 -102
  34. package/providers/42-school.d.ts +3 -0
  35. package/providers/42-school.d.ts.map +1 -0
  36. package/providers/42-school.js +2 -0
  37. package/providers/apple.d.ts +3 -0
  38. package/providers/apple.d.ts.map +1 -0
  39. package/providers/apple.js +2 -0
  40. package/providers/asgardeo.d.ts +3 -0
  41. package/providers/asgardeo.d.ts.map +1 -0
  42. package/providers/asgardeo.js +2 -0
  43. package/providers/atlassian.d.ts +3 -0
  44. package/providers/atlassian.d.ts.map +1 -0
  45. package/providers/atlassian.js +2 -0
  46. package/providers/auth0.d.ts +3 -0
  47. package/providers/auth0.d.ts.map +1 -0
  48. package/providers/auth0.js +2 -0
  49. package/providers/authentik.d.ts +3 -0
  50. package/providers/authentik.d.ts.map +1 -0
  51. package/providers/authentik.js +2 -0
  52. package/providers/azure-ad-b2c.d.ts +3 -0
  53. package/providers/azure-ad-b2c.d.ts.map +1 -0
  54. package/providers/azure-ad-b2c.js +2 -0
  55. package/providers/azure-ad.d.ts +3 -0
  56. package/providers/azure-ad.d.ts.map +1 -0
  57. package/providers/azure-ad.js +2 -0
  58. package/providers/azure-devops.d.ts +3 -0
  59. package/providers/azure-devops.d.ts.map +1 -0
  60. package/providers/azure-devops.js +2 -0
  61. package/providers/bankid-no.d.ts +3 -0
  62. package/providers/bankid-no.d.ts.map +1 -0
  63. package/providers/bankid-no.js +2 -0
  64. package/providers/battlenet.d.ts +3 -0
  65. package/providers/battlenet.d.ts.map +1 -0
  66. package/providers/battlenet.js +2 -0
  67. package/providers/beyondidentity.d.ts +3 -0
  68. package/providers/beyondidentity.d.ts.map +1 -0
  69. package/providers/beyondidentity.js +2 -0
  70. package/providers/bitbucket.d.ts +3 -0
  71. package/providers/bitbucket.d.ts.map +1 -0
  72. package/providers/bitbucket.js +2 -0
  73. package/providers/box.d.ts +3 -0
  74. package/providers/box.d.ts.map +1 -0
  75. package/providers/box.js +2 -0
  76. package/providers/boxyhq-saml.d.ts +3 -0
  77. package/providers/boxyhq-saml.d.ts.map +1 -0
  78. package/providers/boxyhq-saml.js +2 -0
  79. package/providers/bungie.d.ts +3 -0
  80. package/providers/bungie.d.ts.map +1 -0
  81. package/providers/bungie.js +2 -0
  82. package/providers/click-up.d.ts +3 -0
  83. package/providers/click-up.d.ts.map +1 -0
  84. package/providers/click-up.js +2 -0
  85. package/providers/cognito.d.ts +3 -0
  86. package/providers/cognito.d.ts.map +1 -0
  87. package/providers/cognito.js +2 -0
  88. package/providers/coinbase.d.ts +3 -0
  89. package/providers/coinbase.d.ts.map +1 -0
  90. package/providers/coinbase.js +2 -0
  91. package/providers/concept2.d.ts +3 -0
  92. package/providers/concept2.d.ts.map +1 -0
  93. package/providers/concept2.js +2 -0
  94. package/providers/credentials.d.ts +3 -0
  95. package/providers/credentials.d.ts.map +1 -0
  96. package/providers/credentials.js +2 -0
  97. package/providers/descope.d.ts +3 -0
  98. package/providers/descope.d.ts.map +1 -0
  99. package/providers/descope.js +2 -0
  100. package/providers/discord.d.ts +3 -0
  101. package/providers/discord.d.ts.map +1 -0
  102. package/providers/discord.js +2 -0
  103. package/providers/dribbble.d.ts +3 -0
  104. package/providers/dribbble.d.ts.map +1 -0
  105. package/providers/dribbble.js +2 -0
  106. package/providers/dropbox.d.ts +3 -0
  107. package/providers/dropbox.d.ts.map +1 -0
  108. package/providers/dropbox.js +2 -0
  109. package/providers/duende-identity-server6.d.ts +3 -0
  110. package/providers/duende-identity-server6.d.ts.map +1 -0
  111. package/providers/duende-identity-server6.js +2 -0
  112. package/providers/email.d.ts +3 -0
  113. package/providers/email.d.ts.map +1 -0
  114. package/providers/email.js +2 -0
  115. package/providers/eventbrite.d.ts +3 -0
  116. package/providers/eventbrite.d.ts.map +1 -0
  117. package/providers/eventbrite.js +2 -0
  118. package/providers/eveonline.d.ts +3 -0
  119. package/providers/eveonline.d.ts.map +1 -0
  120. package/providers/eveonline.js +2 -0
  121. package/providers/facebook.d.ts +3 -0
  122. package/providers/facebook.d.ts.map +1 -0
  123. package/providers/facebook.js +2 -0
  124. package/providers/faceit.d.ts +3 -0
  125. package/providers/faceit.d.ts.map +1 -0
  126. package/providers/faceit.js +2 -0
  127. package/providers/figma.d.ts +3 -0
  128. package/providers/figma.d.ts.map +1 -0
  129. package/providers/figma.js +2 -0
  130. package/providers/forwardemail.d.ts +3 -0
  131. package/providers/forwardemail.d.ts.map +1 -0
  132. package/providers/forwardemail.js +2 -0
  133. package/providers/foursquare.d.ts +3 -0
  134. package/providers/foursquare.d.ts.map +1 -0
  135. package/providers/foursquare.js +2 -0
  136. package/providers/freshbooks.d.ts +3 -0
  137. package/providers/freshbooks.d.ts.map +1 -0
  138. package/providers/freshbooks.js +2 -0
  139. package/providers/frontegg.d.ts +3 -0
  140. package/providers/frontegg.d.ts.map +1 -0
  141. package/providers/frontegg.js +2 -0
  142. package/providers/fusionauth.d.ts +3 -0
  143. package/providers/fusionauth.d.ts.map +1 -0
  144. package/providers/fusionauth.js +2 -0
  145. package/providers/github.d.ts +3 -0
  146. package/providers/github.d.ts.map +1 -0
  147. package/providers/github.js +2 -0
  148. package/providers/gitlab.d.ts +3 -0
  149. package/providers/gitlab.d.ts.map +1 -0
  150. package/providers/gitlab.js +2 -0
  151. package/providers/google.d.ts +3 -0
  152. package/providers/google.d.ts.map +1 -0
  153. package/providers/google.js +2 -0
  154. package/providers/hubspot.d.ts +3 -0
  155. package/providers/hubspot.d.ts.map +1 -0
  156. package/providers/hubspot.js +2 -0
  157. package/providers/huggingface.d.ts +3 -0
  158. package/providers/huggingface.d.ts.map +1 -0
  159. package/providers/huggingface.js +2 -0
  160. package/providers/identity-server4.d.ts +3 -0
  161. package/providers/identity-server4.d.ts.map +1 -0
  162. package/providers/identity-server4.js +2 -0
  163. package/providers/index.d.ts +2 -0
  164. package/providers/index.d.ts.map +1 -0
  165. package/providers/index.js +1 -0
  166. package/providers/instagram.d.ts +3 -0
  167. package/providers/instagram.d.ts.map +1 -0
  168. package/providers/instagram.js +2 -0
  169. package/providers/kakao.d.ts +3 -0
  170. package/providers/kakao.d.ts.map +1 -0
  171. package/providers/kakao.js +2 -0
  172. package/providers/keycloak.d.ts +3 -0
  173. package/providers/keycloak.d.ts.map +1 -0
  174. package/providers/keycloak.js +2 -0
  175. package/providers/kinde.d.ts +3 -0
  176. package/providers/kinde.d.ts.map +1 -0
  177. package/providers/kinde.js +2 -0
  178. package/providers/line.d.ts +3 -0
  179. package/providers/line.d.ts.map +1 -0
  180. package/providers/line.js +2 -0
  181. package/providers/linkedin.d.ts +3 -0
  182. package/providers/linkedin.d.ts.map +1 -0
  183. package/providers/linkedin.js +2 -0
  184. package/providers/logto.d.ts +3 -0
  185. package/providers/logto.d.ts.map +1 -0
  186. package/providers/logto.js +2 -0
  187. package/providers/loops.d.ts +3 -0
  188. package/providers/loops.d.ts.map +1 -0
  189. package/providers/loops.js +2 -0
  190. package/providers/mailchimp.d.ts +3 -0
  191. package/providers/mailchimp.d.ts.map +1 -0
  192. package/providers/mailchimp.js +2 -0
  193. package/providers/mailgun.d.ts +3 -0
  194. package/providers/mailgun.d.ts.map +1 -0
  195. package/providers/mailgun.js +2 -0
  196. package/providers/mailru.d.ts +3 -0
  197. package/providers/mailru.d.ts.map +1 -0
  198. package/providers/mailru.js +2 -0
  199. package/providers/mastodon.d.ts +3 -0
  200. package/providers/mastodon.d.ts.map +1 -0
  201. package/providers/mastodon.js +2 -0
  202. package/providers/mattermost.d.ts +3 -0
  203. package/providers/mattermost.d.ts.map +1 -0
  204. package/providers/mattermost.js +2 -0
  205. package/providers/medium.d.ts +3 -0
  206. package/providers/medium.d.ts.map +1 -0
  207. package/providers/medium.js +2 -0
  208. package/providers/microsoft-entra-id.d.ts +3 -0
  209. package/providers/microsoft-entra-id.d.ts.map +1 -0
  210. package/providers/microsoft-entra-id.js +2 -0
  211. package/providers/naver.d.ts +3 -0
  212. package/providers/naver.d.ts.map +1 -0
  213. package/providers/naver.js +2 -0
  214. package/providers/netlify.d.ts +3 -0
  215. package/providers/netlify.d.ts.map +1 -0
  216. package/providers/netlify.js +2 -0
  217. package/providers/netsuite.d.ts +3 -0
  218. package/providers/netsuite.d.ts.map +1 -0
  219. package/providers/netsuite.js +2 -0
  220. package/providers/nextcloud.d.ts +3 -0
  221. package/providers/nextcloud.d.ts.map +1 -0
  222. package/providers/nextcloud.js +2 -0
  223. package/providers/nodemailer.d.ts +3 -0
  224. package/providers/nodemailer.d.ts.map +1 -0
  225. package/providers/nodemailer.js +2 -0
  226. package/providers/notion.d.ts +3 -0
  227. package/providers/notion.d.ts.map +1 -0
  228. package/providers/notion.js +2 -0
  229. package/providers/okta.d.ts +3 -0
  230. package/providers/okta.d.ts.map +1 -0
  231. package/providers/okta.js +2 -0
  232. package/providers/onelogin.d.ts +3 -0
  233. package/providers/onelogin.d.ts.map +1 -0
  234. package/providers/onelogin.js +2 -0
  235. package/providers/ory-hydra.d.ts +3 -0
  236. package/providers/ory-hydra.d.ts.map +1 -0
  237. package/providers/ory-hydra.js +2 -0
  238. package/providers/osso.d.ts +3 -0
  239. package/providers/osso.d.ts.map +1 -0
  240. package/providers/osso.js +2 -0
  241. package/providers/osu.d.ts +3 -0
  242. package/providers/osu.d.ts.map +1 -0
  243. package/providers/osu.js +2 -0
  244. package/providers/passage.d.ts +3 -0
  245. package/providers/passage.d.ts.map +1 -0
  246. package/providers/passage.js +2 -0
  247. package/providers/passkey.d.ts +3 -0
  248. package/providers/passkey.d.ts.map +1 -0
  249. package/providers/passkey.js +2 -0
  250. package/providers/patreon.d.ts +3 -0
  251. package/providers/patreon.d.ts.map +1 -0
  252. package/providers/patreon.js +2 -0
  253. package/providers/ping-id.d.ts +3 -0
  254. package/providers/ping-id.d.ts.map +1 -0
  255. package/providers/ping-id.js +2 -0
  256. package/providers/pinterest.d.ts +3 -0
  257. package/providers/pinterest.d.ts.map +1 -0
  258. package/providers/pinterest.js +2 -0
  259. package/providers/pipedrive.d.ts +3 -0
  260. package/providers/pipedrive.d.ts.map +1 -0
  261. package/providers/pipedrive.js +2 -0
  262. package/providers/postmark.d.ts +3 -0
  263. package/providers/postmark.d.ts.map +1 -0
  264. package/providers/postmark.js +2 -0
  265. package/providers/reddit.d.ts +3 -0
  266. package/providers/reddit.d.ts.map +1 -0
  267. package/providers/reddit.js +2 -0
  268. package/providers/resend.d.ts +3 -0
  269. package/providers/resend.d.ts.map +1 -0
  270. package/providers/resend.js +2 -0
  271. package/providers/roblox.d.ts +3 -0
  272. package/providers/roblox.d.ts.map +1 -0
  273. package/providers/roblox.js +2 -0
  274. package/providers/salesforce.d.ts +3 -0
  275. package/providers/salesforce.d.ts.map +1 -0
  276. package/providers/salesforce.js +2 -0
  277. package/providers/sendgrid.d.ts +3 -0
  278. package/providers/sendgrid.d.ts.map +1 -0
  279. package/providers/sendgrid.js +2 -0
  280. package/providers/simplelogin.d.ts +3 -0
  281. package/providers/simplelogin.d.ts.map +1 -0
  282. package/providers/simplelogin.js +2 -0
  283. package/providers/slack.d.ts +3 -0
  284. package/providers/slack.d.ts.map +1 -0
  285. package/providers/slack.js +2 -0
  286. package/providers/spotify.d.ts +3 -0
  287. package/providers/spotify.d.ts.map +1 -0
  288. package/providers/spotify.js +2 -0
  289. package/providers/strava.d.ts +3 -0
  290. package/providers/strava.d.ts.map +1 -0
  291. package/providers/strava.js +2 -0
  292. package/providers/threads.d.ts +3 -0
  293. package/providers/threads.d.ts.map +1 -0
  294. package/providers/threads.js +2 -0
  295. package/providers/tiktok.d.ts +3 -0
  296. package/providers/tiktok.d.ts.map +1 -0
  297. package/providers/tiktok.js +2 -0
  298. package/providers/todoist.d.ts +3 -0
  299. package/providers/todoist.d.ts.map +1 -0
  300. package/providers/todoist.js +2 -0
  301. package/providers/trakt.d.ts +3 -0
  302. package/providers/trakt.d.ts.map +1 -0
  303. package/providers/trakt.js +2 -0
  304. package/providers/twitch.d.ts +3 -0
  305. package/providers/twitch.d.ts.map +1 -0
  306. package/providers/twitch.js +2 -0
  307. package/providers/twitter.d.ts +3 -0
  308. package/providers/twitter.d.ts.map +1 -0
  309. package/providers/twitter.js +2 -0
  310. package/providers/united-effects.d.ts +3 -0
  311. package/providers/united-effects.d.ts.map +1 -0
  312. package/providers/united-effects.js +2 -0
  313. package/providers/vipps.d.ts +3 -0
  314. package/providers/vipps.d.ts.map +1 -0
  315. package/providers/vipps.js +2 -0
  316. package/providers/vk.d.ts +3 -0
  317. package/providers/vk.d.ts.map +1 -0
  318. package/providers/vk.js +2 -0
  319. package/providers/webauthn.d.ts +3 -0
  320. package/providers/webauthn.d.ts.map +1 -0
  321. package/providers/webauthn.js +2 -0
  322. package/providers/webex.d.ts +3 -0
  323. package/providers/webex.d.ts.map +1 -0
  324. package/providers/webex.js +2 -0
  325. package/providers/wechat.d.ts +3 -0
  326. package/providers/wechat.d.ts.map +1 -0
  327. package/providers/wechat.js +2 -0
  328. package/providers/wikimedia.d.ts +3 -0
  329. package/providers/wikimedia.d.ts.map +1 -0
  330. package/providers/wikimedia.js +2 -0
  331. package/providers/wordpress.d.ts +3 -0
  332. package/providers/wordpress.d.ts.map +1 -0
  333. package/providers/wordpress.js +2 -0
  334. package/providers/workos.d.ts +3 -0
  335. package/providers/workos.d.ts.map +1 -0
  336. package/providers/workos.js +2 -0
  337. package/providers/yandex.d.ts +3 -0
  338. package/providers/yandex.d.ts.map +1 -0
  339. package/providers/yandex.js +2 -0
  340. package/providers/zitadel.d.ts +3 -0
  341. package/providers/zitadel.d.ts.map +1 -0
  342. package/providers/zitadel.js +2 -0
  343. package/providers/zoho.d.ts +3 -0
  344. package/providers/zoho.d.ts.map +1 -0
  345. package/providers/zoho.js +2 -0
  346. package/providers/zoom.d.ts +3 -0
  347. package/providers/zoom.d.ts.map +1 -0
  348. package/providers/zoom.js +2 -0
  349. package/react.d.ts +102 -0
  350. package/react.d.ts.map +1 -0
  351. package/react.js +361 -0
  352. package/src/adapters.ts +1 -0
  353. package/src/index.ts +430 -0
  354. package/src/jwt.ts +9 -0
  355. package/src/lib/actions.ts +144 -0
  356. package/src/lib/client.ts +245 -0
  357. package/src/lib/env.ts +36 -0
  358. package/src/lib/index.ts +313 -0
  359. package/src/lib/types.ts +30 -0
  360. package/src/middleware.ts +16 -0
  361. package/src/next.ts +16 -0
  362. package/src/providers/42-school.ts +2 -0
  363. package/src/providers/apple.ts +2 -0
  364. package/src/providers/asgardeo.ts +2 -0
  365. package/src/providers/atlassian.ts +2 -0
  366. package/src/providers/auth0.ts +2 -0
  367. package/src/providers/authentik.ts +2 -0
  368. package/src/providers/azure-ad-b2c.ts +2 -0
  369. package/src/providers/azure-ad.ts +2 -0
  370. package/src/providers/azure-devops.ts +2 -0
  371. package/src/providers/bankid-no.ts +2 -0
  372. package/src/providers/battlenet.ts +2 -0
  373. package/src/providers/beyondidentity.ts +2 -0
  374. package/src/providers/bitbucket.ts +2 -0
  375. package/src/providers/box.ts +2 -0
  376. package/src/providers/boxyhq-saml.ts +2 -0
  377. package/src/providers/bungie.ts +2 -0
  378. package/src/providers/click-up.ts +2 -0
  379. package/src/providers/cognito.ts +2 -0
  380. package/src/providers/coinbase.ts +2 -0
  381. package/src/providers/concept2.ts +2 -0
  382. package/src/providers/credentials.ts +2 -0
  383. package/src/providers/descope.ts +2 -0
  384. package/src/providers/discord.ts +2 -0
  385. package/src/providers/dribbble.ts +2 -0
  386. package/src/providers/dropbox.ts +2 -0
  387. package/src/providers/duende-identity-server6.ts +2 -0
  388. package/src/providers/email.ts +2 -0
  389. package/src/providers/eventbrite.ts +2 -0
  390. package/src/providers/eveonline.ts +2 -0
  391. package/src/providers/facebook.ts +2 -0
  392. package/src/providers/faceit.ts +2 -0
  393. package/src/providers/figma.ts +2 -0
  394. package/src/providers/forwardemail.ts +2 -0
  395. package/src/providers/foursquare.ts +2 -0
  396. package/src/providers/freshbooks.ts +2 -0
  397. package/src/providers/frontegg.ts +2 -0
  398. package/src/providers/fusionauth.ts +2 -0
  399. package/src/providers/github.ts +2 -0
  400. package/src/providers/gitlab.ts +2 -0
  401. package/src/providers/google.ts +2 -0
  402. package/src/providers/hubspot.ts +2 -0
  403. package/src/providers/huggingface.ts +2 -0
  404. package/src/providers/identity-server4.ts +2 -0
  405. package/src/providers/index.ts +1 -0
  406. package/src/providers/instagram.ts +2 -0
  407. package/src/providers/kakao.ts +2 -0
  408. package/src/providers/keycloak.ts +2 -0
  409. package/src/providers/kinde.ts +2 -0
  410. package/src/providers/line.ts +2 -0
  411. package/src/providers/linkedin.ts +2 -0
  412. package/src/providers/logto.ts +2 -0
  413. package/src/providers/loops.ts +2 -0
  414. package/src/providers/mailchimp.ts +2 -0
  415. package/src/providers/mailgun.ts +2 -0
  416. package/src/providers/mailru.ts +2 -0
  417. package/src/providers/mastodon.ts +2 -0
  418. package/src/providers/mattermost.ts +2 -0
  419. package/src/providers/medium.ts +2 -0
  420. package/src/providers/microsoft-entra-id.ts +2 -0
  421. package/src/providers/naver.ts +2 -0
  422. package/src/providers/netlify.ts +2 -0
  423. package/src/providers/netsuite.ts +2 -0
  424. package/src/providers/nextcloud.ts +2 -0
  425. package/src/providers/nodemailer.ts +2 -0
  426. package/src/providers/notion.ts +2 -0
  427. package/src/providers/okta.ts +2 -0
  428. package/src/providers/onelogin.ts +2 -0
  429. package/src/providers/ory-hydra.ts +2 -0
  430. package/src/providers/osso.ts +2 -0
  431. package/src/providers/osu.ts +2 -0
  432. package/src/providers/passage.ts +2 -0
  433. package/src/providers/passkey.ts +2 -0
  434. package/src/providers/patreon.ts +2 -0
  435. package/src/providers/ping-id.ts +2 -0
  436. package/src/providers/pinterest.ts +2 -0
  437. package/src/providers/pipedrive.ts +2 -0
  438. package/src/providers/postmark.ts +2 -0
  439. package/src/providers/reddit.ts +2 -0
  440. package/src/providers/resend.ts +2 -0
  441. package/src/providers/roblox.ts +2 -0
  442. package/src/providers/salesforce.ts +2 -0
  443. package/src/providers/sendgrid.ts +2 -0
  444. package/src/providers/simplelogin.ts +2 -0
  445. package/src/providers/slack.ts +2 -0
  446. package/src/providers/spotify.ts +2 -0
  447. package/src/providers/strava.ts +2 -0
  448. package/src/providers/threads.ts +2 -0
  449. package/src/providers/tiktok.ts +2 -0
  450. package/src/providers/todoist.ts +2 -0
  451. package/src/providers/trakt.ts +2 -0
  452. package/src/providers/twitch.ts +2 -0
  453. package/src/providers/twitter.ts +2 -0
  454. package/src/providers/united-effects.ts +2 -0
  455. package/src/providers/vipps.ts +2 -0
  456. package/src/providers/vk.ts +2 -0
  457. package/src/providers/webauthn.ts +2 -0
  458. package/src/providers/webex.ts +2 -0
  459. package/src/providers/wechat.ts +2 -0
  460. package/src/providers/wikimedia.ts +2 -0
  461. package/src/providers/wordpress.ts +2 -0
  462. package/src/providers/workos.ts +2 -0
  463. package/src/providers/yandex.ts +2 -0
  464. package/src/providers/zitadel.ts +2 -0
  465. package/src/providers/zoho.ts +2 -0
  466. package/src/providers/zoom.ts +2 -0
  467. package/src/react.tsx +546 -0
  468. package/src/webauthn.ts +152 -0
  469. package/webauthn.d.ts +9 -0
  470. package/webauthn.d.ts.map +1 -0
  471. package/webauthn.js +92 -0
  472. package/dist/actions-CMtg7FGv.js +0 -1
  473. package/dist/actions-CjQUKaXF.mjs +0 -200
  474. package/dist/client/index.js +0 -1
  475. package/dist/client/index.mjs +0 -484
  476. package/dist/components/AccountPicker.d.ts +0 -11
  477. package/dist/components/OAuthButton.d.ts +0 -11
  478. package/dist/components/PassKeyButton.d.ts +0 -11
  479. package/dist/components/PassKeyRegister.d.ts +0 -10
  480. package/dist/components/TwoFactorSetup.d.ts +0 -8
  481. package/dist/components/TwoFactorVerify.d.ts +0 -9
  482. package/dist/core/account-picker/encryption.d.ts +0 -22
  483. package/dist/core/account-picker/index.d.ts +0 -22
  484. package/dist/core/auth/email-password.d.ts +0 -145
  485. package/dist/core/auth/oauth/index.d.ts +0 -14
  486. package/dist/core/auth/oauth/oauth-handler.d.ts +0 -172
  487. package/dist/core/auth/oauth/pkce.d.ts +0 -168
  488. package/dist/core/auth/oauth/providers.d.ts +0 -198
  489. package/dist/core/auth/oauth/state-store-cookie.d.ts +0 -83
  490. package/dist/core/auth/oauth/state-store-redis.d.ts +0 -25
  491. package/dist/core/auth/oauth/state-store.d.ts +0 -48
  492. package/dist/core/auth/otp.d.ts +0 -184
  493. package/dist/core/auth/passkey.d.ts +0 -35
  494. package/dist/core/auth/password.d.ts +0 -22
  495. package/dist/core/auth/signin-unified.d.ts +0 -33
  496. package/dist/core/auth/two-factor.d.ts +0 -28
  497. package/dist/core/client/index.d.ts +0 -132
  498. package/dist/core/client/token-refresh-manager.d.ts +0 -48
  499. package/dist/core/errors/index.d.ts +0 -269
  500. package/dist/core/index.d.ts +0 -9
  501. package/dist/core/logger/index.d.ts +0 -147
  502. package/dist/core/mulguard/auth-handlers.d.ts +0 -100
  503. package/dist/core/mulguard/defaults.d.ts +0 -58
  504. package/dist/core/mulguard/index.d.ts +0 -9
  505. package/dist/core/mulguard/integration.d.ts +0 -104
  506. package/dist/core/mulguard/oauth-handler.d.ts +0 -93
  507. package/dist/core/mulguard/session-manager.d.ts +0 -94
  508. package/dist/core/security/csrf.d.ts +0 -46
  509. package/dist/core/security/headers.d.ts +0 -24
  510. package/dist/core/security/index.d.ts +0 -132
  511. package/dist/core/security/rate-limit.d.ts +0 -39
  512. package/dist/core/security/security-manager.d.ts +0 -236
  513. package/dist/core/security/validation.d.ts +0 -251
  514. package/dist/core/security/xss.d.ts +0 -20
  515. package/dist/core/session/index.d.ts +0 -35
  516. package/dist/core/session/session-manager.d.ts +0 -235
  517. package/dist/core/types/auth.d.ts +0 -290
  518. package/dist/core/types/errors.d.ts +0 -200
  519. package/dist/core/types/index.d.ts +0 -484
  520. package/dist/core/utils/auth-helpers.d.ts +0 -136
  521. package/dist/core/utils/logger.d.ts +0 -121
  522. package/dist/index/index.js +0 -1
  523. package/dist/index/index.mjs +0 -2736
  524. package/dist/index.d.ts +0 -18
  525. package/dist/mulguard.d.ts +0 -373
  526. package/dist/nextjs/client/hooks.d.ts +0 -122
  527. package/dist/nextjs/client/index.d.ts +0 -13
  528. package/dist/nextjs/client/provider.d.ts +0 -69
  529. package/dist/nextjs/client/server-actions-helper.d.ts +0 -22
  530. package/dist/nextjs/handlers/api.d.ts +0 -10
  531. package/dist/nextjs/handlers/index.d.ts +0 -9
  532. package/dist/nextjs/handlers/route.d.ts +0 -76
  533. package/dist/nextjs/index.d.ts +0 -15
  534. package/dist/nextjs/proxy/index.d.ts +0 -149
  535. package/dist/nextjs/proxy/security.d.ts +0 -9
  536. package/dist/nextjs/server/actions.d.ts +0 -30
  537. package/dist/nextjs/server/auth.d.ts +0 -65
  538. package/dist/nextjs/server/cookies.d.ts +0 -41
  539. package/dist/nextjs/server/index.d.ts +0 -18
  540. package/dist/nextjs/server/oauth-state.d.ts +0 -32
  541. package/dist/nextjs/server/session-helpers.d.ts +0 -24
  542. package/dist/nextjs/server/session.d.ts +0 -144
  543. package/dist/oauth-state-Drwz6fES.js +0 -1
  544. package/dist/oauth-state-pdypStuS.mjs +0 -210
  545. package/dist/server/index.js +0 -1
  546. package/dist/server/index.mjs +0 -29
package/react.js ADDED
@@ -0,0 +1,361 @@
1
+ /**
2
+ *
3
+ * MulGuard is the official integration of Auth.js for Next.js applications. It supports both
4
+ * [Client Components](https://nextjs.org/docs/app/building-your-application/rendering/client-components) and the
5
+ * [Pages Router](https://nextjs.org/docs/pages). It includes methods for signing in, signing out, hooks, and a React
6
+ * Context provider to wrap your application and make session data available anywhere.
7
+ *
8
+ * For use in [Server Actions](https://nextjs.org/docs/app/api-reference/functions/server-actions), check out [these methods](https://authjs.dev/guides/upgrade-to-v5#methods)
9
+ *
10
+ * @module react
11
+ */
12
+ "use client";
13
+ import { jsx as _jsx } from "react/jsx-runtime";
14
+ import * as React from "react";
15
+ import { apiBaseUrl, ClientSessionError, fetchData, now, parseUrl, useOnline, } from "./lib/client.js";
16
+ // This behaviour mirrors the default behaviour for getting the site name that
17
+ // happens server side in server/index.js
18
+ // 1. An empty value is legitimate when the code is being invoked client side as
19
+ // relative URLs are valid in that context and so defaults to empty.
20
+ // 2. When invoked server side the value is picked up from an environment
21
+ // variable and defaults to 'http://localhost:3000'.
22
+ export const __MULGUARD = {
23
+ baseUrl: parseUrl(process.env.MULGUARD_URL ?? process.env.NEXTAUTH_URL ?? process.env.AUTH_URL ?? process.env.VERCEL_URL).origin,
24
+ basePath: parseUrl(process.env.MULGUARD_URL ?? process.env.NEXTAUTH_URL ?? process.env.AUTH_URL).path,
25
+ baseUrlServer: parseUrl(process.env.MULGUARD_URL_INTERNAL ??
26
+ process.env.NEXTAUTH_URL_INTERNAL ??
27
+ process.env.AUTH_URL ??
28
+ process.env.NEXTAUTH_URL ??
29
+ process.env.VERCEL_URL).origin,
30
+ basePathServer: parseUrl(process.env.MULGUARD_URL_INTERNAL ?? process.env.NEXTAUTH_URL_INTERNAL ?? process.env.AUTH_URL ?? process.env.NEXTAUTH_URL).path,
31
+ _lastSync: 0,
32
+ _session: undefined,
33
+ _getSession: () => { },
34
+ };
35
+ // Backward compatibility
36
+ export const __NEXTAUTH = __MULGUARD;
37
+ // https://github.com/mulguard/mulguard/pull/10762
38
+ let broadcastChannel = null;
39
+ function getNewBroadcastChannel() {
40
+ if (typeof BroadcastChannel === "undefined") {
41
+ return {
42
+ postMessage: () => { },
43
+ addEventListener: () => { },
44
+ removeEventListener: () => { },
45
+ name: "mulguard",
46
+ onmessage: null,
47
+ onmessageerror: null,
48
+ close: () => { },
49
+ dispatchEvent: () => false,
50
+ };
51
+ }
52
+ return new BroadcastChannel("mulguard");
53
+ }
54
+ function broadcast() {
55
+ if (broadcastChannel === null) {
56
+ broadcastChannel = getNewBroadcastChannel();
57
+ }
58
+ return broadcastChannel;
59
+ }
60
+ // TODO:
61
+ const logger = {
62
+ debug: console.debug,
63
+ error: console.error,
64
+ warn: console.warn,
65
+ };
66
+ export const SessionContext = React.createContext?.(undefined);
67
+ /**
68
+ * React Hook that gives you access to the logged in user's session data and lets you modify it.
69
+ *
70
+ * :::info
71
+ * `useSession` is for client-side use only and when using [Next.js App Router (`app/`)](https://nextjs.org/blog/next-13-4#nextjs-app-router) you should prefer the `auth()` export.
72
+ * :::
73
+ */
74
+ export function useSession(options) {
75
+ if (!SessionContext) {
76
+ throw new Error("React Context is unavailable in Server Components");
77
+ }
78
+ // @ts-expect-error Satisfy TS if branch on line below
79
+ const value = React.useContext(SessionContext);
80
+ if (!value && process.env.NODE_ENV !== "production") {
81
+ throw new Error("[next-auth]: `useSession` must be wrapped in a <SessionProvider />");
82
+ }
83
+ const { required, onUnauthenticated } = options ?? {};
84
+ const requiredAndNotLoading = required && value.status === "unauthenticated";
85
+ React.useEffect(() => {
86
+ if (requiredAndNotLoading) {
87
+ const url = `${__NEXTAUTH.basePath}/signin?${new URLSearchParams({
88
+ error: "SessionRequired",
89
+ callbackUrl: window.location.href,
90
+ })}`;
91
+ if (onUnauthenticated)
92
+ onUnauthenticated();
93
+ else
94
+ window.location.href = url;
95
+ }
96
+ }, [requiredAndNotLoading, onUnauthenticated]);
97
+ if (requiredAndNotLoading) {
98
+ return {
99
+ data: value.data,
100
+ update: value.update,
101
+ status: "loading",
102
+ };
103
+ }
104
+ return value;
105
+ }
106
+ export async function getSession(params) {
107
+ const session = await fetchData("session", __NEXTAUTH, logger, params);
108
+ if (params?.broadcast ?? true) {
109
+ // https://github.com/nextauthjs/next-auth/pull/11470
110
+ getNewBroadcastChannel().postMessage({
111
+ event: "session",
112
+ data: { trigger: "getSession" },
113
+ });
114
+ }
115
+ return session;
116
+ }
117
+ /**
118
+ * Returns the current Cross-Site Request Forgery Token (CSRF Token)
119
+ * required to make requests that changes state. (e.g. signing in or out, or updating the session).
120
+ *
121
+ * [CSRF Prevention: Double Submit Cookie](https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html#double-submit-cookie)
122
+ */
123
+ export async function getCsrfToken() {
124
+ const response = await fetchData("csrf", __NEXTAUTH, logger);
125
+ return response?.csrfToken ?? "";
126
+ }
127
+ export async function getProviders() {
128
+ return fetchData("providers", __NEXTAUTH, logger);
129
+ }
130
+ export async function signIn(provider, options, authorizationParams) {
131
+ const { callbackUrl, ...rest } = options ?? {};
132
+ const { redirect = true, redirectTo = callbackUrl ?? window.location.href, ...signInParams } = rest;
133
+ const baseUrl = apiBaseUrl(__NEXTAUTH);
134
+ const providers = await getProviders();
135
+ if (!providers) {
136
+ const url = `${baseUrl}/error`;
137
+ window.location.href = url;
138
+ return; // TODO: Return error if `redirect: false`
139
+ }
140
+ if (!provider || !providers[provider]) {
141
+ const url = `${baseUrl}/signin?${new URLSearchParams({
142
+ callbackUrl: redirectTo,
143
+ })}`;
144
+ window.location.href = url;
145
+ return; // TODO: Return error if `redirect: false`
146
+ }
147
+ const providerType = providers[provider].type;
148
+ if (providerType === "webauthn") {
149
+ // TODO: Add docs link with explanation
150
+ throw new TypeError([
151
+ `Provider id "${provider}" refers to a WebAuthn provider.`,
152
+ 'Please use `import { signIn } from "next-auth/webauthn"` instead.',
153
+ ].join("\n"));
154
+ }
155
+ const signInUrl = `${baseUrl}/${providerType === "credentials" ? "callback" : "signin"}/${provider}`;
156
+ const csrfToken = await getCsrfToken();
157
+ const res = await fetch(`${signInUrl}?${new URLSearchParams(authorizationParams)}`, {
158
+ method: "post",
159
+ headers: {
160
+ "Content-Type": "application/x-www-form-urlencoded",
161
+ "X-Auth-Return-Redirect": "1",
162
+ },
163
+ body: new URLSearchParams({
164
+ ...signInParams,
165
+ csrfToken,
166
+ callbackUrl: redirectTo,
167
+ }),
168
+ });
169
+ const data = await res.json();
170
+ if (redirect) {
171
+ const url = data.url ?? redirectTo;
172
+ window.location.href = url;
173
+ // If url contains a hash, the browser does not reload the page. We reload manually
174
+ if (url.includes("#"))
175
+ window.location.reload();
176
+ return;
177
+ }
178
+ const error = new URL(data.url).searchParams.get("error") ?? undefined;
179
+ const code = new URL(data.url).searchParams.get("code") ?? undefined;
180
+ if (res.ok) {
181
+ await __NEXTAUTH._getSession({ event: "storage" });
182
+ }
183
+ return {
184
+ error,
185
+ code,
186
+ status: res.status,
187
+ ok: res.ok,
188
+ url: error ? null : data.url,
189
+ };
190
+ }
191
+ export async function signOut(options) {
192
+ const { redirect = true, redirectTo = options?.callbackUrl ?? window.location.href, } = options ?? {};
193
+ const baseUrl = apiBaseUrl(__NEXTAUTH);
194
+ const csrfToken = await getCsrfToken();
195
+ const res = await fetch(`${baseUrl}/signout`, {
196
+ method: "post",
197
+ headers: {
198
+ "Content-Type": "application/x-www-form-urlencoded",
199
+ "X-Auth-Return-Redirect": "1",
200
+ },
201
+ body: new URLSearchParams({ csrfToken, callbackUrl: redirectTo }),
202
+ });
203
+ const data = await res.json();
204
+ broadcast().postMessage({ event: "session", data: { trigger: "signout" } });
205
+ if (redirect) {
206
+ const url = data.url ?? redirectTo;
207
+ window.location.href = url;
208
+ // If url contains a hash, the browser does not reload the page. We reload manually
209
+ if (url.includes("#"))
210
+ window.location.reload();
211
+ return;
212
+ }
213
+ await __NEXTAUTH._getSession({ event: "storage" });
214
+ return data;
215
+ }
216
+ /**
217
+ * [React Context](https://react.dev/learn/passing-data-deeply-with-context) provider to wrap the app (`pages/`) to make session data available anywhere.
218
+ *
219
+ * When used, the session state is automatically synchronized across all open tabs/windows and they are all updated whenever they gain or lose focus
220
+ * or the state changes (e.g. a user signs in or out) when {@link SessionProviderProps.refetchOnWindowFocus} is `true`.
221
+ *
222
+ * :::info
223
+ * `SessionProvider` is for client-side use only and when using [Next.js App Router (`app/`)](https://nextjs.org/blog/next-13-4#nextjs-app-router) you should prefer the `auth()` export.
224
+ * :::
225
+ */
226
+ export function SessionProvider(props) {
227
+ if (!SessionContext) {
228
+ throw new Error("React Context is unavailable in Server Components");
229
+ }
230
+ const { children, basePath, refetchInterval, refetchWhenOffline } = props;
231
+ if (basePath)
232
+ __NEXTAUTH.basePath = basePath;
233
+ /**
234
+ * If session was `null`, there was an attempt to fetch it,
235
+ * but it failed, but we still treat it as a valid initial value.
236
+ */
237
+ const hasInitialSession = props.session !== undefined;
238
+ /** If session was passed, initialize as already synced */
239
+ __NEXTAUTH._lastSync = hasInitialSession ? now() : 0;
240
+ const [session, setSession] = React.useState(() => {
241
+ if (hasInitialSession)
242
+ __NEXTAUTH._session = props.session;
243
+ return props.session;
244
+ });
245
+ /** If session was passed, initialize as not loading */
246
+ const [loading, setLoading] = React.useState(!hasInitialSession);
247
+ React.useEffect(() => {
248
+ __NEXTAUTH._getSession = async ({ event } = {}) => {
249
+ try {
250
+ const storageEvent = event === "storage";
251
+ // We should always update if we don't have a client session yet
252
+ // or if there are events from other tabs/windows
253
+ if (storageEvent || __NEXTAUTH._session === undefined) {
254
+ __NEXTAUTH._lastSync = now();
255
+ __NEXTAUTH._session = await getSession({
256
+ broadcast: !storageEvent,
257
+ });
258
+ setSession(__NEXTAUTH._session);
259
+ return;
260
+ }
261
+ if (
262
+ // If there is no time defined for when a session should be considered
263
+ // stale, then it's okay to use the value we have until an event is
264
+ // triggered which updates it
265
+ !event ||
266
+ // If the client doesn't have a session then we don't need to call
267
+ // the server to check if it does (if they have signed in via another
268
+ // tab or window that will come through as a "stroage" event
269
+ // event anyway)
270
+ __NEXTAUTH._session === null ||
271
+ // Bail out early if the client session is not stale yet
272
+ now() < __NEXTAUTH._lastSync) {
273
+ return;
274
+ }
275
+ // An event or session staleness occurred, update the client session.
276
+ __NEXTAUTH._lastSync = now();
277
+ __NEXTAUTH._session = await getSession();
278
+ setSession(__NEXTAUTH._session);
279
+ }
280
+ catch (error) {
281
+ logger.error(new ClientSessionError(error.message, error));
282
+ }
283
+ finally {
284
+ setLoading(false);
285
+ }
286
+ };
287
+ __NEXTAUTH._getSession();
288
+ return () => {
289
+ __NEXTAUTH._lastSync = 0;
290
+ __NEXTAUTH._session = undefined;
291
+ __NEXTAUTH._getSession = () => { };
292
+ };
293
+ }, []);
294
+ React.useEffect(() => {
295
+ const handle = () => __NEXTAUTH._getSession({ event: "storage" });
296
+ // Listen for storage events and update session if event fired from
297
+ // another window (but suppress firing another event to avoid a loop)
298
+ // Fetch new session data but tell it to not to fire another event to
299
+ // avoid an infinite loop.
300
+ // Note: We could pass session data through and do something like
301
+ // `setData(message.data)` but that can cause problems depending
302
+ // on how the session object is being used in the client; it is
303
+ // more robust to have each window/tab fetch it's own copy of the
304
+ // session object rather than share it across instances.
305
+ broadcast().addEventListener("message", handle);
306
+ return () => broadcast().removeEventListener("message", handle);
307
+ }, []);
308
+ React.useEffect(() => {
309
+ const { refetchOnWindowFocus = true } = props;
310
+ // Listen for when the page is visible, if the user switches tabs
311
+ // and makes our tab visible again, re-fetch the session, but only if
312
+ // this feature is not disabled.
313
+ const visibilityHandler = () => {
314
+ if (refetchOnWindowFocus && document.visibilityState === "visible")
315
+ __NEXTAUTH._getSession({ event: "visibilitychange" });
316
+ };
317
+ document.addEventListener("visibilitychange", visibilityHandler, false);
318
+ return () => document.removeEventListener("visibilitychange", visibilityHandler, false);
319
+ }, [props.refetchOnWindowFocus]);
320
+ const isOnline = useOnline();
321
+ // TODO: Flip this behavior in next major version
322
+ const shouldRefetch = refetchWhenOffline !== false || isOnline;
323
+ React.useEffect(() => {
324
+ if (refetchInterval && shouldRefetch) {
325
+ const refetchIntervalTimer = setInterval(() => {
326
+ if (__NEXTAUTH._session) {
327
+ __NEXTAUTH._getSession({ event: "poll" });
328
+ }
329
+ }, refetchInterval * 1000);
330
+ return () => clearInterval(refetchIntervalTimer);
331
+ }
332
+ }, [refetchInterval, shouldRefetch]);
333
+ const value = React.useMemo(() => ({
334
+ data: session,
335
+ status: loading
336
+ ? "loading"
337
+ : session
338
+ ? "authenticated"
339
+ : "unauthenticated",
340
+ async update(data) {
341
+ if (loading)
342
+ return;
343
+ setLoading(true);
344
+ const newSession = await fetchData("session", __NEXTAUTH, logger, typeof data === "undefined"
345
+ ? undefined
346
+ : { body: { csrfToken: await getCsrfToken(), data } });
347
+ setLoading(false);
348
+ if (newSession) {
349
+ setSession(newSession);
350
+ broadcast().postMessage({
351
+ event: "session",
352
+ data: { trigger: "getSession" },
353
+ });
354
+ }
355
+ return newSession;
356
+ },
357
+ }), [session, loading]);
358
+ return (
359
+ // @ts-expect-error
360
+ _jsx(SessionContext.Provider, { value: value, children: children }));
361
+ }
@@ -0,0 +1 @@
1
+ export type * from "@mulverse/mulguard-core/adapters"