mulguard 1.1.7 → 1.1.8

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/README.md +21 -582
  2. package/adapters.d.ts +2 -0
  3. package/adapters.d.ts.map +1 -0
  4. package/adapters.js +1 -0
  5. package/index.d.ts +329 -0
  6. package/index.d.ts.map +1 -0
  7. package/index.js +145 -0
  8. package/jwt.d.ts +9 -0
  9. package/jwt.d.ts.map +1 -0
  10. package/jwt.js +8 -0
  11. package/lib/actions.d.ts +13 -0
  12. package/lib/actions.d.ts.map +1 -0
  13. package/lib/actions.js +86 -0
  14. package/lib/client.d.ts +104 -0
  15. package/lib/client.d.ts.map +1 -0
  16. package/lib/client.js +95 -0
  17. package/lib/env.d.ts +12 -0
  18. package/lib/env.d.ts.map +1 -0
  19. package/lib/env.js +38 -0
  20. package/lib/index.d.ts +56 -0
  21. package/lib/index.d.ts.map +1 -0
  22. package/lib/index.js +187 -0
  23. package/lib/types.d.ts +24 -0
  24. package/lib/types.d.ts.map +1 -0
  25. package/lib/types.js +1 -0
  26. package/middleware.d.ts +9 -0
  27. package/middleware.d.ts.map +1 -0
  28. package/middleware.js +12 -0
  29. package/next.d.ts +9 -0
  30. package/next.d.ts.map +1 -0
  31. package/next.js +12 -0
  32. package/package.json +117 -126
  33. package/providers/42-school.d.ts +3 -0
  34. package/providers/42-school.d.ts.map +1 -0
  35. package/providers/42-school.js +2 -0
  36. package/providers/apple.d.ts +3 -0
  37. package/providers/apple.d.ts.map +1 -0
  38. package/providers/apple.js +2 -0
  39. package/providers/asgardeo.d.ts +3 -0
  40. package/providers/asgardeo.d.ts.map +1 -0
  41. package/providers/asgardeo.js +2 -0
  42. package/providers/atlassian.d.ts +3 -0
  43. package/providers/atlassian.d.ts.map +1 -0
  44. package/providers/atlassian.js +2 -0
  45. package/providers/auth0.d.ts +3 -0
  46. package/providers/auth0.d.ts.map +1 -0
  47. package/providers/auth0.js +2 -0
  48. package/providers/authentik.d.ts +3 -0
  49. package/providers/authentik.d.ts.map +1 -0
  50. package/providers/authentik.js +2 -0
  51. package/providers/azure-ad-b2c.d.ts +3 -0
  52. package/providers/azure-ad-b2c.d.ts.map +1 -0
  53. package/providers/azure-ad-b2c.js +2 -0
  54. package/providers/azure-ad.d.ts +3 -0
  55. package/providers/azure-ad.d.ts.map +1 -0
  56. package/providers/azure-ad.js +2 -0
  57. package/providers/azure-devops.d.ts +3 -0
  58. package/providers/azure-devops.d.ts.map +1 -0
  59. package/providers/azure-devops.js +2 -0
  60. package/providers/bankid-no.d.ts +3 -0
  61. package/providers/bankid-no.d.ts.map +1 -0
  62. package/providers/bankid-no.js +2 -0
  63. package/providers/battlenet.d.ts +3 -0
  64. package/providers/battlenet.d.ts.map +1 -0
  65. package/providers/battlenet.js +2 -0
  66. package/providers/beyondidentity.d.ts +3 -0
  67. package/providers/beyondidentity.d.ts.map +1 -0
  68. package/providers/beyondidentity.js +2 -0
  69. package/providers/bitbucket.d.ts +3 -0
  70. package/providers/bitbucket.d.ts.map +1 -0
  71. package/providers/bitbucket.js +2 -0
  72. package/providers/box.d.ts +3 -0
  73. package/providers/box.d.ts.map +1 -0
  74. package/providers/box.js +2 -0
  75. package/providers/boxyhq-saml.d.ts +3 -0
  76. package/providers/boxyhq-saml.d.ts.map +1 -0
  77. package/providers/boxyhq-saml.js +2 -0
  78. package/providers/bungie.d.ts +3 -0
  79. package/providers/bungie.d.ts.map +1 -0
  80. package/providers/bungie.js +2 -0
  81. package/providers/click-up.d.ts +3 -0
  82. package/providers/click-up.d.ts.map +1 -0
  83. package/providers/click-up.js +2 -0
  84. package/providers/cognito.d.ts +3 -0
  85. package/providers/cognito.d.ts.map +1 -0
  86. package/providers/cognito.js +2 -0
  87. package/providers/coinbase.d.ts +3 -0
  88. package/providers/coinbase.d.ts.map +1 -0
  89. package/providers/coinbase.js +2 -0
  90. package/providers/concept2.d.ts +3 -0
  91. package/providers/concept2.d.ts.map +1 -0
  92. package/providers/concept2.js +2 -0
  93. package/providers/credentials.d.ts +3 -0
  94. package/providers/credentials.d.ts.map +1 -0
  95. package/providers/credentials.js +2 -0
  96. package/providers/descope.d.ts +3 -0
  97. package/providers/descope.d.ts.map +1 -0
  98. package/providers/descope.js +2 -0
  99. package/providers/discord.d.ts +3 -0
  100. package/providers/discord.d.ts.map +1 -0
  101. package/providers/discord.js +2 -0
  102. package/providers/dribbble.d.ts +3 -0
  103. package/providers/dribbble.d.ts.map +1 -0
  104. package/providers/dribbble.js +2 -0
  105. package/providers/dropbox.d.ts +3 -0
  106. package/providers/dropbox.d.ts.map +1 -0
  107. package/providers/dropbox.js +2 -0
  108. package/providers/duende-identity-server6.d.ts +3 -0
  109. package/providers/duende-identity-server6.d.ts.map +1 -0
  110. package/providers/duende-identity-server6.js +2 -0
  111. package/providers/email.d.ts +3 -0
  112. package/providers/email.d.ts.map +1 -0
  113. package/providers/email.js +2 -0
  114. package/providers/eventbrite.d.ts +3 -0
  115. package/providers/eventbrite.d.ts.map +1 -0
  116. package/providers/eventbrite.js +2 -0
  117. package/providers/eveonline.d.ts +3 -0
  118. package/providers/eveonline.d.ts.map +1 -0
  119. package/providers/eveonline.js +2 -0
  120. package/providers/facebook.d.ts +3 -0
  121. package/providers/facebook.d.ts.map +1 -0
  122. package/providers/facebook.js +2 -0
  123. package/providers/faceit.d.ts +3 -0
  124. package/providers/faceit.d.ts.map +1 -0
  125. package/providers/faceit.js +2 -0
  126. package/providers/figma.d.ts +3 -0
  127. package/providers/figma.d.ts.map +1 -0
  128. package/providers/figma.js +2 -0
  129. package/providers/forwardemail.d.ts +3 -0
  130. package/providers/forwardemail.d.ts.map +1 -0
  131. package/providers/forwardemail.js +2 -0
  132. package/providers/foursquare.d.ts +3 -0
  133. package/providers/foursquare.d.ts.map +1 -0
  134. package/providers/foursquare.js +2 -0
  135. package/providers/freshbooks.d.ts +3 -0
  136. package/providers/freshbooks.d.ts.map +1 -0
  137. package/providers/freshbooks.js +2 -0
  138. package/providers/frontegg.d.ts +3 -0
  139. package/providers/frontegg.d.ts.map +1 -0
  140. package/providers/frontegg.js +2 -0
  141. package/providers/fusionauth.d.ts +3 -0
  142. package/providers/fusionauth.d.ts.map +1 -0
  143. package/providers/fusionauth.js +2 -0
  144. package/providers/github.d.ts +3 -0
  145. package/providers/github.d.ts.map +1 -0
  146. package/providers/github.js +2 -0
  147. package/providers/gitlab.d.ts +3 -0
  148. package/providers/gitlab.d.ts.map +1 -0
  149. package/providers/gitlab.js +2 -0
  150. package/providers/google.d.ts +3 -0
  151. package/providers/google.d.ts.map +1 -0
  152. package/providers/google.js +2 -0
  153. package/providers/hubspot.d.ts +3 -0
  154. package/providers/hubspot.d.ts.map +1 -0
  155. package/providers/hubspot.js +2 -0
  156. package/providers/huggingface.d.ts +3 -0
  157. package/providers/huggingface.d.ts.map +1 -0
  158. package/providers/huggingface.js +2 -0
  159. package/providers/identity-server4.d.ts +3 -0
  160. package/providers/identity-server4.d.ts.map +1 -0
  161. package/providers/identity-server4.js +2 -0
  162. package/providers/index.d.ts +2 -0
  163. package/providers/index.d.ts.map +1 -0
  164. package/providers/index.js +1 -0
  165. package/providers/instagram.d.ts +3 -0
  166. package/providers/instagram.d.ts.map +1 -0
  167. package/providers/instagram.js +2 -0
  168. package/providers/kakao.d.ts +3 -0
  169. package/providers/kakao.d.ts.map +1 -0
  170. package/providers/kakao.js +2 -0
  171. package/providers/keycloak.d.ts +3 -0
  172. package/providers/keycloak.d.ts.map +1 -0
  173. package/providers/keycloak.js +2 -0
  174. package/providers/kinde.d.ts +3 -0
  175. package/providers/kinde.d.ts.map +1 -0
  176. package/providers/kinde.js +2 -0
  177. package/providers/line.d.ts +3 -0
  178. package/providers/line.d.ts.map +1 -0
  179. package/providers/line.js +2 -0
  180. package/providers/linkedin.d.ts +3 -0
  181. package/providers/linkedin.d.ts.map +1 -0
  182. package/providers/linkedin.js +2 -0
  183. package/providers/logto.d.ts +3 -0
  184. package/providers/logto.d.ts.map +1 -0
  185. package/providers/logto.js +2 -0
  186. package/providers/loops.d.ts +3 -0
  187. package/providers/loops.d.ts.map +1 -0
  188. package/providers/loops.js +2 -0
  189. package/providers/mailchimp.d.ts +3 -0
  190. package/providers/mailchimp.d.ts.map +1 -0
  191. package/providers/mailchimp.js +2 -0
  192. package/providers/mailgun.d.ts +3 -0
  193. package/providers/mailgun.d.ts.map +1 -0
  194. package/providers/mailgun.js +2 -0
  195. package/providers/mailru.d.ts +3 -0
  196. package/providers/mailru.d.ts.map +1 -0
  197. package/providers/mailru.js +2 -0
  198. package/providers/mastodon.d.ts +3 -0
  199. package/providers/mastodon.d.ts.map +1 -0
  200. package/providers/mastodon.js +2 -0
  201. package/providers/mattermost.d.ts +3 -0
  202. package/providers/mattermost.d.ts.map +1 -0
  203. package/providers/mattermost.js +2 -0
  204. package/providers/medium.d.ts +3 -0
  205. package/providers/medium.d.ts.map +1 -0
  206. package/providers/medium.js +2 -0
  207. package/providers/microsoft-entra-id.d.ts +3 -0
  208. package/providers/microsoft-entra-id.d.ts.map +1 -0
  209. package/providers/microsoft-entra-id.js +2 -0
  210. package/providers/naver.d.ts +3 -0
  211. package/providers/naver.d.ts.map +1 -0
  212. package/providers/naver.js +2 -0
  213. package/providers/netlify.d.ts +3 -0
  214. package/providers/netlify.d.ts.map +1 -0
  215. package/providers/netlify.js +2 -0
  216. package/providers/netsuite.d.ts +3 -0
  217. package/providers/netsuite.d.ts.map +1 -0
  218. package/providers/netsuite.js +2 -0
  219. package/providers/nextcloud.d.ts +3 -0
  220. package/providers/nextcloud.d.ts.map +1 -0
  221. package/providers/nextcloud.js +2 -0
  222. package/providers/nodemailer.d.ts +3 -0
  223. package/providers/nodemailer.d.ts.map +1 -0
  224. package/providers/nodemailer.js +2 -0
  225. package/providers/notion.d.ts +3 -0
  226. package/providers/notion.d.ts.map +1 -0
  227. package/providers/notion.js +2 -0
  228. package/providers/okta.d.ts +3 -0
  229. package/providers/okta.d.ts.map +1 -0
  230. package/providers/okta.js +2 -0
  231. package/providers/onelogin.d.ts +3 -0
  232. package/providers/onelogin.d.ts.map +1 -0
  233. package/providers/onelogin.js +2 -0
  234. package/providers/ory-hydra.d.ts +3 -0
  235. package/providers/ory-hydra.d.ts.map +1 -0
  236. package/providers/ory-hydra.js +2 -0
  237. package/providers/osso.d.ts +3 -0
  238. package/providers/osso.d.ts.map +1 -0
  239. package/providers/osso.js +2 -0
  240. package/providers/osu.d.ts +3 -0
  241. package/providers/osu.d.ts.map +1 -0
  242. package/providers/osu.js +2 -0
  243. package/providers/passage.d.ts +3 -0
  244. package/providers/passage.d.ts.map +1 -0
  245. package/providers/passage.js +2 -0
  246. package/providers/passkey.d.ts +3 -0
  247. package/providers/passkey.d.ts.map +1 -0
  248. package/providers/passkey.js +2 -0
  249. package/providers/patreon.d.ts +3 -0
  250. package/providers/patreon.d.ts.map +1 -0
  251. package/providers/patreon.js +2 -0
  252. package/providers/ping-id.d.ts +3 -0
  253. package/providers/ping-id.d.ts.map +1 -0
  254. package/providers/ping-id.js +2 -0
  255. package/providers/pinterest.d.ts +3 -0
  256. package/providers/pinterest.d.ts.map +1 -0
  257. package/providers/pinterest.js +2 -0
  258. package/providers/pipedrive.d.ts +3 -0
  259. package/providers/pipedrive.d.ts.map +1 -0
  260. package/providers/pipedrive.js +2 -0
  261. package/providers/postmark.d.ts +3 -0
  262. package/providers/postmark.d.ts.map +1 -0
  263. package/providers/postmark.js +2 -0
  264. package/providers/reddit.d.ts +3 -0
  265. package/providers/reddit.d.ts.map +1 -0
  266. package/providers/reddit.js +2 -0
  267. package/providers/resend.d.ts +3 -0
  268. package/providers/resend.d.ts.map +1 -0
  269. package/providers/resend.js +2 -0
  270. package/providers/roblox.d.ts +3 -0
  271. package/providers/roblox.d.ts.map +1 -0
  272. package/providers/roblox.js +2 -0
  273. package/providers/salesforce.d.ts +3 -0
  274. package/providers/salesforce.d.ts.map +1 -0
  275. package/providers/salesforce.js +2 -0
  276. package/providers/sendgrid.d.ts +3 -0
  277. package/providers/sendgrid.d.ts.map +1 -0
  278. package/providers/sendgrid.js +2 -0
  279. package/providers/simplelogin.d.ts +3 -0
  280. package/providers/simplelogin.d.ts.map +1 -0
  281. package/providers/simplelogin.js +2 -0
  282. package/providers/slack.d.ts +3 -0
  283. package/providers/slack.d.ts.map +1 -0
  284. package/providers/slack.js +2 -0
  285. package/providers/spotify.d.ts +3 -0
  286. package/providers/spotify.d.ts.map +1 -0
  287. package/providers/spotify.js +2 -0
  288. package/providers/strava.d.ts +3 -0
  289. package/providers/strava.d.ts.map +1 -0
  290. package/providers/strava.js +2 -0
  291. package/providers/threads.d.ts +3 -0
  292. package/providers/threads.d.ts.map +1 -0
  293. package/providers/threads.js +2 -0
  294. package/providers/tiktok.d.ts +3 -0
  295. package/providers/tiktok.d.ts.map +1 -0
  296. package/providers/tiktok.js +2 -0
  297. package/providers/todoist.d.ts +3 -0
  298. package/providers/todoist.d.ts.map +1 -0
  299. package/providers/todoist.js +2 -0
  300. package/providers/trakt.d.ts +3 -0
  301. package/providers/trakt.d.ts.map +1 -0
  302. package/providers/trakt.js +2 -0
  303. package/providers/twitch.d.ts +3 -0
  304. package/providers/twitch.d.ts.map +1 -0
  305. package/providers/twitch.js +2 -0
  306. package/providers/twitter.d.ts +3 -0
  307. package/providers/twitter.d.ts.map +1 -0
  308. package/providers/twitter.js +2 -0
  309. package/providers/united-effects.d.ts +3 -0
  310. package/providers/united-effects.d.ts.map +1 -0
  311. package/providers/united-effects.js +2 -0
  312. package/providers/vipps.d.ts +3 -0
  313. package/providers/vipps.d.ts.map +1 -0
  314. package/providers/vipps.js +2 -0
  315. package/providers/vk.d.ts +3 -0
  316. package/providers/vk.d.ts.map +1 -0
  317. package/providers/vk.js +2 -0
  318. package/providers/webauthn.d.ts +3 -0
  319. package/providers/webauthn.d.ts.map +1 -0
  320. package/providers/webauthn.js +2 -0
  321. package/providers/webex.d.ts +3 -0
  322. package/providers/webex.d.ts.map +1 -0
  323. package/providers/webex.js +2 -0
  324. package/providers/wechat.d.ts +3 -0
  325. package/providers/wechat.d.ts.map +1 -0
  326. package/providers/wechat.js +2 -0
  327. package/providers/wikimedia.d.ts +3 -0
  328. package/providers/wikimedia.d.ts.map +1 -0
  329. package/providers/wikimedia.js +2 -0
  330. package/providers/wordpress.d.ts +3 -0
  331. package/providers/wordpress.d.ts.map +1 -0
  332. package/providers/wordpress.js +2 -0
  333. package/providers/workos.d.ts +3 -0
  334. package/providers/workos.d.ts.map +1 -0
  335. package/providers/workos.js +2 -0
  336. package/providers/yandex.d.ts +3 -0
  337. package/providers/yandex.d.ts.map +1 -0
  338. package/providers/yandex.js +2 -0
  339. package/providers/zitadel.d.ts +3 -0
  340. package/providers/zitadel.d.ts.map +1 -0
  341. package/providers/zitadel.js +2 -0
  342. package/providers/zoho.d.ts +3 -0
  343. package/providers/zoho.d.ts.map +1 -0
  344. package/providers/zoho.js +2 -0
  345. package/providers/zoom.d.ts +3 -0
  346. package/providers/zoom.d.ts.map +1 -0
  347. package/providers/zoom.js +2 -0
  348. package/react.d.ts +102 -0
  349. package/react.d.ts.map +1 -0
  350. package/react.js +361 -0
  351. package/src/adapters.ts +1 -0
  352. package/src/index.ts +430 -0
  353. package/src/jwt.ts +9 -0
  354. package/src/lib/actions.ts +144 -0
  355. package/src/lib/client.ts +245 -0
  356. package/src/lib/env.ts +36 -0
  357. package/src/lib/index.ts +313 -0
  358. package/src/lib/types.ts +30 -0
  359. package/src/middleware.ts +16 -0
  360. package/src/next.ts +16 -0
  361. package/src/providers/42-school.ts +2 -0
  362. package/src/providers/apple.ts +2 -0
  363. package/src/providers/asgardeo.ts +2 -0
  364. package/src/providers/atlassian.ts +2 -0
  365. package/src/providers/auth0.ts +2 -0
  366. package/src/providers/authentik.ts +2 -0
  367. package/src/providers/azure-ad-b2c.ts +2 -0
  368. package/src/providers/azure-ad.ts +2 -0
  369. package/src/providers/azure-devops.ts +2 -0
  370. package/src/providers/bankid-no.ts +2 -0
  371. package/src/providers/battlenet.ts +2 -0
  372. package/src/providers/beyondidentity.ts +2 -0
  373. package/src/providers/bitbucket.ts +2 -0
  374. package/src/providers/box.ts +2 -0
  375. package/src/providers/boxyhq-saml.ts +2 -0
  376. package/src/providers/bungie.ts +2 -0
  377. package/src/providers/click-up.ts +2 -0
  378. package/src/providers/cognito.ts +2 -0
  379. package/src/providers/coinbase.ts +2 -0
  380. package/src/providers/concept2.ts +2 -0
  381. package/src/providers/credentials.ts +2 -0
  382. package/src/providers/descope.ts +2 -0
  383. package/src/providers/discord.ts +2 -0
  384. package/src/providers/dribbble.ts +2 -0
  385. package/src/providers/dropbox.ts +2 -0
  386. package/src/providers/duende-identity-server6.ts +2 -0
  387. package/src/providers/email.ts +2 -0
  388. package/src/providers/eventbrite.ts +2 -0
  389. package/src/providers/eveonline.ts +2 -0
  390. package/src/providers/facebook.ts +2 -0
  391. package/src/providers/faceit.ts +2 -0
  392. package/src/providers/figma.ts +2 -0
  393. package/src/providers/forwardemail.ts +2 -0
  394. package/src/providers/foursquare.ts +2 -0
  395. package/src/providers/freshbooks.ts +2 -0
  396. package/src/providers/frontegg.ts +2 -0
  397. package/src/providers/fusionauth.ts +2 -0
  398. package/src/providers/github.ts +2 -0
  399. package/src/providers/gitlab.ts +2 -0
  400. package/src/providers/google.ts +2 -0
  401. package/src/providers/hubspot.ts +2 -0
  402. package/src/providers/huggingface.ts +2 -0
  403. package/src/providers/identity-server4.ts +2 -0
  404. package/src/providers/index.ts +1 -0
  405. package/src/providers/instagram.ts +2 -0
  406. package/src/providers/kakao.ts +2 -0
  407. package/src/providers/keycloak.ts +2 -0
  408. package/src/providers/kinde.ts +2 -0
  409. package/src/providers/line.ts +2 -0
  410. package/src/providers/linkedin.ts +2 -0
  411. package/src/providers/logto.ts +2 -0
  412. package/src/providers/loops.ts +2 -0
  413. package/src/providers/mailchimp.ts +2 -0
  414. package/src/providers/mailgun.ts +2 -0
  415. package/src/providers/mailru.ts +2 -0
  416. package/src/providers/mastodon.ts +2 -0
  417. package/src/providers/mattermost.ts +2 -0
  418. package/src/providers/medium.ts +2 -0
  419. package/src/providers/microsoft-entra-id.ts +2 -0
  420. package/src/providers/naver.ts +2 -0
  421. package/src/providers/netlify.ts +2 -0
  422. package/src/providers/netsuite.ts +2 -0
  423. package/src/providers/nextcloud.ts +2 -0
  424. package/src/providers/nodemailer.ts +2 -0
  425. package/src/providers/notion.ts +2 -0
  426. package/src/providers/okta.ts +2 -0
  427. package/src/providers/onelogin.ts +2 -0
  428. package/src/providers/ory-hydra.ts +2 -0
  429. package/src/providers/osso.ts +2 -0
  430. package/src/providers/osu.ts +2 -0
  431. package/src/providers/passage.ts +2 -0
  432. package/src/providers/passkey.ts +2 -0
  433. package/src/providers/patreon.ts +2 -0
  434. package/src/providers/ping-id.ts +2 -0
  435. package/src/providers/pinterest.ts +2 -0
  436. package/src/providers/pipedrive.ts +2 -0
  437. package/src/providers/postmark.ts +2 -0
  438. package/src/providers/reddit.ts +2 -0
  439. package/src/providers/resend.ts +2 -0
  440. package/src/providers/roblox.ts +2 -0
  441. package/src/providers/salesforce.ts +2 -0
  442. package/src/providers/sendgrid.ts +2 -0
  443. package/src/providers/simplelogin.ts +2 -0
  444. package/src/providers/slack.ts +2 -0
  445. package/src/providers/spotify.ts +2 -0
  446. package/src/providers/strava.ts +2 -0
  447. package/src/providers/threads.ts +2 -0
  448. package/src/providers/tiktok.ts +2 -0
  449. package/src/providers/todoist.ts +2 -0
  450. package/src/providers/trakt.ts +2 -0
  451. package/src/providers/twitch.ts +2 -0
  452. package/src/providers/twitter.ts +2 -0
  453. package/src/providers/united-effects.ts +2 -0
  454. package/src/providers/vipps.ts +2 -0
  455. package/src/providers/vk.ts +2 -0
  456. package/src/providers/webauthn.ts +2 -0
  457. package/src/providers/webex.ts +2 -0
  458. package/src/providers/wechat.ts +2 -0
  459. package/src/providers/wikimedia.ts +2 -0
  460. package/src/providers/wordpress.ts +2 -0
  461. package/src/providers/workos.ts +2 -0
  462. package/src/providers/yandex.ts +2 -0
  463. package/src/providers/zitadel.ts +2 -0
  464. package/src/providers/zoho.ts +2 -0
  465. package/src/providers/zoom.ts +2 -0
  466. package/src/react.tsx +546 -0
  467. package/src/webauthn.ts +152 -0
  468. package/webauthn.d.ts +9 -0
  469. package/webauthn.d.ts.map +1 -0
  470. package/webauthn.js +92 -0
  471. package/LICENSE +0 -70
  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/index.d.ts ADDED
@@ -0,0 +1,329 @@
1
+ /**
2
+ * MulGuard - Authentication for Next.js with Backend-First Architecture
3
+ *
4
+ * ## Installation
5
+ *
6
+ * ```bash npm2yarn
7
+ * npm install mulguard
8
+ * ```
9
+ *
10
+ * ## Environment variable inference
11
+ *
12
+ * `MULGUARD_URL` and `MULGUARD_SECRET` are automatically inferred.
13
+ *
14
+ * MulGuard can also automatically infer environment variables that are prefixed with `AUTH_`.
15
+ *
16
+ * For example `AUTH_GITHUB_ID` and `AUTH_GITHUB_SECRET` will be used as the `clientId` and `clientSecret` options for the GitHub provider.
17
+ *
18
+ * :::tip
19
+ * The environment variable name inferring has the following format for OAuth providers: `AUTH_{PROVIDER}_{ID|SECRET}`.
20
+ *
21
+ * `PROVIDER` is the uppercase snake case version of the provider's id, followed by either `ID` or `SECRET` respectively.
22
+ * :::
23
+ *
24
+ * `AUTH_SECRET` and `AUTH_URL` are also supported for backward compatibility.
25
+ *
26
+ * To add social login to your app, the configuration becomes:
27
+ *
28
+ * ```ts title="auth.ts"
29
+ * import MulGuard from "mulguard"
30
+ * import GitHub from "mulguard/providers/github"
31
+ * export const { handlers, auth } = MulGuard({ providers: [ GitHub ] })
32
+ * ```
33
+ *
34
+ * And the `.env.local` file:
35
+ *
36
+ * ```sh title=".env.local"
37
+ * AUTH_GITHUB_ID=...
38
+ * AUTH_GITHUB_SECRET=...
39
+ * AUTH_SECRET=...
40
+ * ```
41
+ *
42
+ * :::tip
43
+ * In production, `AUTH_SECRET` is a required environment variable - if not set, MulGuard will throw an error. See [MissingSecretError](https://authjs.dev/reference/core/errors#missingsecret) for more details.
44
+ * :::
45
+ *
46
+ * If you need to override the default values for a provider, you can still call it as a function `GitHub({...})` as before.
47
+ *
48
+ * ## Lazy initialization
49
+ * You can also initialize MulGuard lazily, which allows you to access the request context in the configuration in some cases, like Route Handlers, Middleware, API Routes or `getServerSideProps`.
50
+ * The above example becomes:
51
+ *
52
+ * ```ts title="auth.ts"
53
+ * import MulGuard from "mulguard"
54
+ * import GitHub from "mulguard/providers/github"
55
+ * export const { handlers, auth } = MulGuard(req => {
56
+ * if (req) {
57
+ * console.log(req) // do something with the request
58
+ * }
59
+ * return { providers: [ GitHub ] }
60
+ * })
61
+ * ```
62
+ *
63
+ * :::tip
64
+ * This is useful if you want to customize the configuration based on the request, for example, to add a different provider in staging/dev environments.
65
+ * :::
66
+ *
67
+ * @module mulguard
68
+ */
69
+ import { customFetch } from "@mulverse/mulguard-core";
70
+ import type { Awaitable, Session } from "@mulverse/mulguard-core/types";
71
+ import type { ProviderId } from "@mulverse/mulguard-core/providers";
72
+ import type { GetServerSidePropsContext, NextApiRequest, NextApiResponse } from "next";
73
+ import type { AppRouteHandlerFn, AppRouteHandlerFnContext } from "./lib/types.js";
74
+ import type { NextRequest, NextMiddleware } from "next/server";
75
+ import type { MulGuardConfig, MulGuardRequest, MulGuardMiddleware } from "./lib/index.js";
76
+ type NextAuthConfig = MulGuardConfig;
77
+ type NextAuthRequest = MulGuardRequest;
78
+ type NextAuthMiddleware = MulGuardMiddleware;
79
+ export type { MulGuardConfig, MulGuardRequest, MulGuardMiddleware };
80
+ export type { NextAuthConfig, NextAuthRequest, NextAuthMiddleware };
81
+ export { AuthError, CredentialsSignin } from "@mulverse/mulguard-core/errors";
82
+ export { customFetch };
83
+ export type { Session, Account, Profile, DefaultSession, User, } from "@mulverse/mulguard-core/types";
84
+ export type { ServerActionsAdapter } from "@mulverse/mulguard-core/adapters";
85
+ type AppRouteHandlers = Record<"GET" | "POST", (req: NextRequest) => Promise<Response>>;
86
+ /**
87
+ * The result of invoking {@link MulGuard|MulGuard}, initialized with the {@link MulGuardConfig}.
88
+ * It contains methods to set up and interact with MulGuard in your Next.js app.
89
+ */
90
+ export interface MulGuardResult {
91
+ /**
92
+ * The MulGuard [Route Handler](https://beta.nextjs.org/docs/routing/route-handlers) methods. These are used to expose an endpoint for OAuth/Email providers,
93
+ * as well as REST API endpoints (such as `/api/auth/session`) that can be contacted from the client.
94
+ *
95
+ * After initializing MulGuard in `auth.ts`,
96
+ * re-export these methods.
97
+ *
98
+ * In `app/api/auth/[...mulguard]/route.ts`:
99
+ *
100
+ * ```ts title="app/api/auth/[...mulguard]/route.ts"
101
+ * export { GET, POST } from "../../../../auth"
102
+ * export const runtime = "edge" // optional
103
+ * ```
104
+ * Then `auth.ts`:
105
+ * ```ts title="auth.ts"
106
+ * // ...
107
+ * export const { handlers: { GET, POST }, auth } = MulGuard({...})
108
+ * ```
109
+ */
110
+ handlers: AppRouteHandlers;
111
+ /**
112
+ * A universal method to interact with MulGuard in your Next.js app.
113
+ * After initializing MulGuard in `auth.ts`, use this method in Middleware, Server Components, Route Handlers (`app/`), and Edge or Node.js API Routes (`pages/`).
114
+ *
115
+ * ##### In Middleware
116
+ *
117
+ * :::info
118
+ * Adding `auth` to your Middleware is optional, but recommended to keep the user session alive.
119
+ * :::
120
+ *
121
+ * Authentication is done by the {@link MulGuardConfig.callbacks|callbacks.authorized} callback.
122
+ * @example
123
+ * ```ts title="middleware.ts"
124
+ * export { auth as middleware } from "./auth"
125
+ * ```
126
+ *
127
+ * Alternatively you can wrap your own middleware with `auth`, where `req` is extended with `auth`:
128
+ * @example
129
+ * ```ts title="middleware.ts"
130
+ * import { auth } from "./auth"
131
+ * export default auth((req) => {
132
+ * // req.auth
133
+ * })
134
+ * ```
135
+ *
136
+ * ```ts
137
+ * // Optionally, don't invoke Middleware on some paths
138
+ * // Read more: https://nextjs.org/docs/app/building-your-application/routing/middleware#matcher
139
+ * export const config = {
140
+ * matcher: ["/((?!api|_next/static|_next/image|favicon.ico).*)"],
141
+ * }
142
+ * ```
143
+ *
144
+ * ##### In Server Components
145
+ *
146
+ * @example
147
+ * ```ts title="app/page.ts"
148
+ * import { auth } from "../auth"
149
+ *
150
+ * export default async function Page() {
151
+ * const { user } = await auth()
152
+ * return <p>Hello {user?.name}</p>
153
+ * }
154
+ * ```
155
+ *
156
+ * ##### In Route Handlers
157
+ * @example
158
+ * ```ts title="app/api/route.ts"
159
+ * import { auth } from "../../auth"
160
+ *
161
+ * export const POST = auth((req) => {
162
+ * // req.auth
163
+ * })
164
+ * ```
165
+ *
166
+ * ##### In Edge API Routes
167
+ *
168
+ * @example
169
+ * ```ts title="pages/api/protected.ts"
170
+ * import { auth } from "../../auth"
171
+ *
172
+ * export default auth((req) => {
173
+ * // req.auth
174
+ * })
175
+ *
176
+ * export const config = { runtime: "edge" }
177
+ * ```
178
+ *
179
+ * ##### In API Routes
180
+ *
181
+ * @example
182
+ * ```ts title="pages/api/protected.ts"
183
+ * import { auth } from "../auth"
184
+ * import type { NextApiRequest, NextApiResponse } from "next"
185
+ *
186
+ * export default async (req: NextApiRequest, res: NextApiResponse) => {
187
+ * const session = await auth(req, res)
188
+ * if (session) {
189
+ * // Do something with the session
190
+ * return res.json("This is protected content.")
191
+ * }
192
+ * res.status(401).json("You must be signed in.")
193
+ * }
194
+ * ```
195
+ *
196
+ * ##### In `getServerSideProps`
197
+ *
198
+ * @example
199
+ * ```ts title="pages/protected-ssr.ts"
200
+ * import { auth } from "../auth"
201
+ *
202
+ * export const getServerSideProps: GetServerSideProps = async (context) => {
203
+ * const session = await auth(context)
204
+ *
205
+ * if (session) {
206
+ * // Do something with the session
207
+ * return { props: { session, content: (await res.json()).content } }
208
+ * }
209
+ *
210
+ * return { props: {} }
211
+ * }
212
+ * ```
213
+ */
214
+ auth: ((...args: [NextApiRequest, NextApiResponse]) => Promise<Session | null>) & ((...args: []) => Promise<Session | null>) & ((...args: [GetServerSidePropsContext]) => Promise<Session | null>) & ((...args: [
215
+ (req: NextAuthRequest, ctx: AppRouteHandlerFnContext) => ReturnType<AppRouteHandlerFn>
216
+ ]) => AppRouteHandlerFn) & ((...args: [NextAuthMiddleware]) => NextMiddleware);
217
+ /**
218
+ * Sign in with a provider. If no provider is specified, the user will be redirected to the sign in page.
219
+ *
220
+ * By default, the user is redirected to the current page after signing in. You can override this behavior by setting the `redirectTo` option with a relative path.
221
+ *
222
+ * @example
223
+ * ```ts title="app/layout.tsx"
224
+ * import { signIn } from "../auth"
225
+ *
226
+ * export default function Layout() {
227
+ * return (
228
+ * <form action={async () => {
229
+ * "use server"
230
+ * await signIn("github")
231
+ * }}>
232
+ * <button>Sign in with GitHub</button>
233
+ * </form>
234
+ * )
235
+ * ```
236
+ *
237
+ * If an error occurs during signin, an instance of {@link AuthError} will be thrown. You can catch it like this:
238
+ * ```ts title="app/layout.tsx"
239
+ * import { AuthError } from "mulguard"
240
+ * import { signIn } from "../auth"
241
+ *
242
+ * export default function Layout() {
243
+ * return (
244
+ * <form action={async (formData) => {
245
+ * "use server"
246
+ * try {
247
+ * await signIn("credentials", formData)
248
+ * } catch(error) {
249
+ * if (error instanceof AuthError) // Handle auth errors
250
+ * throw error // Rethrow all other errors
251
+ * }
252
+ * }}>
253
+ * <button>Sign in</button>
254
+ * </form>
255
+ * )
256
+ * }
257
+ * ```
258
+ *
259
+ */
260
+ signIn: <P extends ProviderId, R extends boolean = true>(
261
+ /** Provider to sign in to */
262
+ provider?: P, // See: https://github.com/microsoft/TypeScript/issues/29729
263
+ options?: FormData | ({
264
+ /** The relative path to redirect to after signing in. By default, the user is redirected to the current page. */
265
+ redirectTo?: string;
266
+ /** If set to `false`, the `signIn` method will return the URL to redirect to instead of redirecting automatically. */
267
+ redirect?: R;
268
+ } & Record<string, any>), authorizationParams?: string[][] | Record<string, string> | string | URLSearchParams) => Promise<R extends false ? any : never>;
269
+ /**
270
+ * Sign out the user. If the session was created using a database strategy, the session will be removed from the database and the related cookie is invalidated.
271
+ * If the session was created using a JWT, the cookie is invalidated.
272
+ *
273
+ * By default the user is redirected to the current page after signing out. You can override this behavior by setting the `redirectTo` option with a relative path.
274
+ *
275
+ * @example
276
+ * ```ts title="app/layout.tsx"
277
+ * import { signOut } from "../auth"
278
+ *
279
+ * export default function Layout() {
280
+ * return (
281
+ * <form action={async () => {
282
+ * "use server"
283
+ * await signOut()
284
+ * }}>
285
+ * <button>Sign out</button>
286
+ * </form>
287
+ * )
288
+ * ```
289
+ *
290
+ *
291
+ */
292
+ signOut: <R extends boolean = true>(options?: {
293
+ /** The relative path to redirect to after signing out. By default, the user is redirected to the current page. */
294
+ redirectTo?: string;
295
+ /** If set to `false`, the `signOut` method will return the URL to redirect to instead of redirecting automatically. */
296
+ redirect?: R;
297
+ }) => Promise<R extends false ? any : never>;
298
+ unstable_update: (data: Partial<Session | {
299
+ user: Partial<Session["user"]>;
300
+ }>) => Promise<Session | null>;
301
+ }
302
+ /**
303
+ * Initialize MulGuard.
304
+ *
305
+ * @example
306
+ * ```ts title="auth.ts"
307
+ * import MulGuard from "mulguard"
308
+ * import GitHub from "@mulverse/mulguard-core/providers/github"
309
+ *
310
+ * export const { handlers, auth } = MulGuard({ providers: [GitHub] })
311
+ * ```
312
+ *
313
+ * Lazy initialization:
314
+ *
315
+ * @example
316
+ * ```ts title="auth.ts"
317
+ * import MulGuard from "mulguard"
318
+ * import GitHub from "@mulverse/mulguard-core/providers/github"
319
+ *
320
+ * export const { handlers, auth } = MulGuard(async (req) => {
321
+ * console.log(req) // do something with the request
322
+ * return {
323
+ * providers: [GitHub],
324
+ * },
325
+ * })
326
+ * ```
327
+ */
328
+ export default function MulGuard(config: MulGuardConfig | ((request: NextRequest | undefined) => Awaitable<MulGuardConfig>)): MulGuardResult;
329
+ //# sourceMappingURL=index.d.ts.map
package/index.d.ts.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"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"}
package/index.js ADDED
@@ -0,0 +1,145 @@
1
+ /**
2
+ * MulGuard - Authentication for Next.js with Backend-First Architecture
3
+ *
4
+ * ## Installation
5
+ *
6
+ * ```bash npm2yarn
7
+ * npm install mulguard
8
+ * ```
9
+ *
10
+ * ## Environment variable inference
11
+ *
12
+ * `MULGUARD_URL` and `MULGUARD_SECRET` are automatically inferred.
13
+ *
14
+ * MulGuard can also automatically infer environment variables that are prefixed with `AUTH_`.
15
+ *
16
+ * For example `AUTH_GITHUB_ID` and `AUTH_GITHUB_SECRET` will be used as the `clientId` and `clientSecret` options for the GitHub provider.
17
+ *
18
+ * :::tip
19
+ * The environment variable name inferring has the following format for OAuth providers: `AUTH_{PROVIDER}_{ID|SECRET}`.
20
+ *
21
+ * `PROVIDER` is the uppercase snake case version of the provider's id, followed by either `ID` or `SECRET` respectively.
22
+ * :::
23
+ *
24
+ * `AUTH_SECRET` and `AUTH_URL` are also supported for backward compatibility.
25
+ *
26
+ * To add social login to your app, the configuration becomes:
27
+ *
28
+ * ```ts title="auth.ts"
29
+ * import MulGuard from "mulguard"
30
+ * import GitHub from "mulguard/providers/github"
31
+ * export const { handlers, auth } = MulGuard({ providers: [ GitHub ] })
32
+ * ```
33
+ *
34
+ * And the `.env.local` file:
35
+ *
36
+ * ```sh title=".env.local"
37
+ * AUTH_GITHUB_ID=...
38
+ * AUTH_GITHUB_SECRET=...
39
+ * AUTH_SECRET=...
40
+ * ```
41
+ *
42
+ * :::tip
43
+ * In production, `AUTH_SECRET` is a required environment variable - if not set, MulGuard will throw an error. See [MissingSecretError](https://authjs.dev/reference/core/errors#missingsecret) for more details.
44
+ * :::
45
+ *
46
+ * If you need to override the default values for a provider, you can still call it as a function `GitHub({...})` as before.
47
+ *
48
+ * ## Lazy initialization
49
+ * You can also initialize MulGuard lazily, which allows you to access the request context in the configuration in some cases, like Route Handlers, Middleware, API Routes or `getServerSideProps`.
50
+ * The above example becomes:
51
+ *
52
+ * ```ts title="auth.ts"
53
+ * import MulGuard from "mulguard"
54
+ * import GitHub from "mulguard/providers/github"
55
+ * export const { handlers, auth } = MulGuard(req => {
56
+ * if (req) {
57
+ * console.log(req) // do something with the request
58
+ * }
59
+ * return { providers: [ GitHub ] }
60
+ * })
61
+ * ```
62
+ *
63
+ * :::tip
64
+ * This is useful if you want to customize the configuration based on the request, for example, to add a different provider in staging/dev environments.
65
+ * :::
66
+ *
67
+ * @module mulguard
68
+ */
69
+ import { Auth, customFetch } from "@mulverse/mulguard-core";
70
+ import { reqWithEnvURL, setEnvDefaults } from "./lib/env.js";
71
+ import { initAuth } from "./lib/index.js";
72
+ import { signIn, signOut, update } from "./lib/actions.js";
73
+ export { AuthError, CredentialsSignin } from "@mulverse/mulguard-core/errors";
74
+ export { customFetch };
75
+ /**
76
+ * Initialize MulGuard.
77
+ *
78
+ * @example
79
+ * ```ts title="auth.ts"
80
+ * import MulGuard from "mulguard"
81
+ * import GitHub from "@mulverse/mulguard-core/providers/github"
82
+ *
83
+ * export const { handlers, auth } = MulGuard({ providers: [GitHub] })
84
+ * ```
85
+ *
86
+ * Lazy initialization:
87
+ *
88
+ * @example
89
+ * ```ts title="auth.ts"
90
+ * import MulGuard from "mulguard"
91
+ * import GitHub from "@mulverse/mulguard-core/providers/github"
92
+ *
93
+ * export const { handlers, auth } = MulGuard(async (req) => {
94
+ * console.log(req) // do something with the request
95
+ * return {
96
+ * providers: [GitHub],
97
+ * },
98
+ * })
99
+ * ```
100
+ */
101
+ export default function MulGuard(config) {
102
+ if (typeof config === "function") {
103
+ const httpHandler = async (req) => {
104
+ const _config = await config(req);
105
+ setEnvDefaults(_config);
106
+ return Auth(reqWithEnvURL(req), _config);
107
+ };
108
+ return {
109
+ handlers: { GET: httpHandler, POST: httpHandler },
110
+ // @ts-expect-error
111
+ auth: initAuth(config, (c) => setEnvDefaults(c)),
112
+ signIn: async (provider, options, authorizationParams) => {
113
+ const _config = await config(undefined);
114
+ setEnvDefaults(_config);
115
+ return signIn(provider, options, authorizationParams, _config);
116
+ },
117
+ signOut: async (options) => {
118
+ const _config = await config(undefined);
119
+ setEnvDefaults(_config);
120
+ return signOut(options, _config);
121
+ },
122
+ unstable_update: async (data) => {
123
+ const _config = await config(undefined);
124
+ setEnvDefaults(_config);
125
+ return update(data, _config);
126
+ },
127
+ };
128
+ }
129
+ setEnvDefaults(config);
130
+ const httpHandler = (req) => Auth(reqWithEnvURL(req), config);
131
+ return {
132
+ handlers: { GET: httpHandler, POST: httpHandler },
133
+ // @ts-expect-error
134
+ auth: initAuth(config),
135
+ signIn: (provider, options, authorizationParams) => {
136
+ return signIn(provider, options, authorizationParams, config);
137
+ },
138
+ signOut: (options) => {
139
+ return signOut(options, config);
140
+ },
141
+ unstable_update: (data) => {
142
+ return update(data, config);
143
+ },
144
+ };
145
+ }
package/jwt.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ /**
2
+ * :::warning Not recommended
3
+ * In NextAuth.js v5 or newer, we recommend other authentication methods server-side. Read more at: https://authjs.dev/getting-started/migrating-to-v5#authenticating-server-side
4
+ * :::
5
+ *
6
+ * @module jwt
7
+ */
8
+ export * from "@mulverse/mulguard-core/jwt";
9
+ //# sourceMappingURL=jwt.d.ts.map
package/jwt.d.ts.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["src/jwt.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,6BAA6B,CAAA"}
package/jwt.js ADDED
@@ -0,0 +1,8 @@
1
+ /**
2
+ * :::warning Not recommended
3
+ * In NextAuth.js v5 or newer, we recommend other authentication methods server-side. Read more at: https://authjs.dev/getting-started/migrating-to-v5#authenticating-server-side
4
+ * :::
5
+ *
6
+ * @module jwt
7
+ */
8
+ export * from "@mulverse/mulguard-core/jwt";
@@ -0,0 +1,13 @@
1
+ import type { MulGuardConfig } from "./index.js";
2
+ import type { MulGuardResult, Session } from "../index.js";
3
+ type SignInParams = Parameters<MulGuardResult["signIn"]>;
4
+ export declare function signIn(provider: SignInParams[0], options: FormData | ({
5
+ redirectTo?: string | undefined;
6
+ redirect?: boolean | undefined;
7
+ } & Record<string, any>) | undefined, authorizationParams: SignInParams[2], config: MulGuardConfig): Promise<any>;
8
+ type SignOutParams = Parameters<MulGuardResult["signOut"]>;
9
+ export declare function signOut(options: SignOutParams[0], config: MulGuardConfig): Promise<any>;
10
+ type UpdateParams = Parameters<MulGuardResult["unstable_update"]>;
11
+ export declare function update(data: UpdateParams[0], config: MulGuardConfig): Promise<Session | null>;
12
+ export {};
13
+ //# sourceMappingURL=actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/lib/actions.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAG1D,KAAK,YAAY,GAAG,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAA;AACxD,wBAAsB,MAAM,CAC1B,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EACzB,OAAO;;;oCAAsB,EAC7B,mBAAmB,EAAE,YAAY,CAAC,CAAC,CAAC,EACpC,MAAM,EAAE,cAAc,gBAuEvB;AAED,KAAK,aAAa,GAAG,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAA;AAC1D,wBAAsB,OAAO,CAC3B,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EACzB,MAAM,EAAE,cAAc,gBAyBvB;AAED,KAAK,YAAY,GAAG,UAAU,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAA;AACjE,wBAAsB,MAAM,CAC1B,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EACrB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAqBzB"}
package/lib/actions.js ADDED
@@ -0,0 +1,86 @@
1
+ import { Auth, raw, skipCSRFCheck, createActionURL } from "@mulverse/mulguard-core";
2
+ // @ts-expect-error Next.js does not yet correctly use the `package.json#exports` field
3
+ import { headers as nextHeaders, cookies } from "next/headers";
4
+ // @ts-expect-error Next.js does not yet correctly use the `package.json#exports` field
5
+ import { redirect } from "next/navigation";
6
+ export async function signIn(provider, options = {}, authorizationParams, config) {
7
+ const headers = new Headers(await nextHeaders());
8
+ const { redirect: shouldRedirect = true, redirectTo, ...rest } = options instanceof FormData ? Object.fromEntries(options) : options;
9
+ const callbackUrl = redirectTo?.toString() ?? headers.get("Referer") ?? "/";
10
+ const signInURL = createActionURL("signin",
11
+ // @ts-expect-error `x-forwarded-proto` is not nullable, next.js sets it by default
12
+ headers.get("x-forwarded-proto"), headers, process.env, config);
13
+ if (!provider) {
14
+ signInURL.searchParams.append("callbackUrl", callbackUrl);
15
+ if (shouldRedirect)
16
+ redirect(signInURL.toString());
17
+ return signInURL.toString();
18
+ }
19
+ let url = `${signInURL}/${provider}?${new URLSearchParams(authorizationParams)}`;
20
+ let foundProvider = {};
21
+ for (const providerConfig of config.providers) {
22
+ const { options, ...defaults } = typeof providerConfig === "function" ? providerConfig() : providerConfig;
23
+ const id = options?.id ?? defaults.id;
24
+ if (id === provider) {
25
+ foundProvider = {
26
+ id,
27
+ type: options?.type ?? defaults.type,
28
+ };
29
+ break;
30
+ }
31
+ }
32
+ if (!foundProvider.id) {
33
+ const url = `${signInURL}?${new URLSearchParams({ callbackUrl })}`;
34
+ if (shouldRedirect)
35
+ redirect(url);
36
+ return url;
37
+ }
38
+ if (foundProvider.type === "credentials") {
39
+ url = url.replace("signin", "callback");
40
+ }
41
+ headers.set("Content-Type", "application/x-www-form-urlencoded");
42
+ const body = new URLSearchParams({ ...rest, callbackUrl });
43
+ const req = new Request(url, { method: "POST", headers, body });
44
+ const res = await Auth(req, { ...config, raw, skipCSRFCheck });
45
+ const cookieJar = await cookies();
46
+ for (const c of res?.cookies ?? [])
47
+ cookieJar.set(c.name, c.value, c.options);
48
+ const responseUrl = res instanceof Response ? res.headers.get("Location") : res.redirect;
49
+ // NOTE: if for some unexpected reason the responseUrl is not set,
50
+ // we redirect to the original url
51
+ const redirectUrl = responseUrl ?? url;
52
+ if (shouldRedirect)
53
+ return redirect(redirectUrl);
54
+ return redirectUrl;
55
+ }
56
+ export async function signOut(options, config) {
57
+ const headers = new Headers(await nextHeaders());
58
+ headers.set("Content-Type", "application/x-www-form-urlencoded");
59
+ const url = createActionURL("signout",
60
+ // @ts-expect-error `x-forwarded-proto` is not nullable, next.js sets it by default
61
+ headers.get("x-forwarded-proto"), headers, process.env, config);
62
+ const callbackUrl = options?.redirectTo ?? headers.get("Referer") ?? "/";
63
+ const body = new URLSearchParams({ callbackUrl });
64
+ const req = new Request(url, { method: "POST", headers, body });
65
+ const res = await Auth(req, { ...config, raw, skipCSRFCheck });
66
+ const cookieJar = await cookies();
67
+ for (const c of res?.cookies ?? [])
68
+ cookieJar.set(c.name, c.value, c.options);
69
+ if (options?.redirect ?? true)
70
+ return redirect(res.redirect);
71
+ return res;
72
+ }
73
+ export async function update(data, config) {
74
+ const headers = new Headers(await nextHeaders());
75
+ headers.set("Content-Type", "application/json");
76
+ const url = createActionURL("session",
77
+ // @ts-expect-error `x-forwarded-proto` is not nullable, next.js sets it by default
78
+ headers.get("x-forwarded-proto"), headers, process.env, config);
79
+ const body = JSON.stringify({ data });
80
+ const req = new Request(url, { method: "POST", headers, body });
81
+ const res = await Auth(req, { ...config, raw, skipCSRFCheck });
82
+ const cookieJar = await cookies();
83
+ for (const c of res?.cookies ?? [])
84
+ cookieJar.set(c.name, c.value, c.options);
85
+ return res.body;
86
+ }