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.
- package/README.md +21 -582
- package/adapters.d.ts +2 -0
- package/adapters.d.ts.map +1 -0
- package/adapters.js +1 -0
- package/index.d.ts +329 -0
- package/index.d.ts.map +1 -0
- package/index.js +145 -0
- package/jwt.d.ts +9 -0
- package/jwt.d.ts.map +1 -0
- package/jwt.js +8 -0
- package/lib/actions.d.ts +13 -0
- package/lib/actions.d.ts.map +1 -0
- package/lib/actions.js +86 -0
- package/lib/client.d.ts +104 -0
- package/lib/client.d.ts.map +1 -0
- package/lib/client.js +95 -0
- package/lib/env.d.ts +12 -0
- package/lib/env.d.ts.map +1 -0
- package/lib/env.js +38 -0
- package/lib/index.d.ts +56 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +187 -0
- package/lib/types.d.ts +24 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +1 -0
- package/middleware.d.ts +9 -0
- package/middleware.d.ts.map +1 -0
- package/middleware.js +12 -0
- package/next.d.ts +9 -0
- package/next.d.ts.map +1 -0
- package/next.js +12 -0
- package/package.json +117 -126
- package/providers/42-school.d.ts +3 -0
- package/providers/42-school.d.ts.map +1 -0
- package/providers/42-school.js +2 -0
- package/providers/apple.d.ts +3 -0
- package/providers/apple.d.ts.map +1 -0
- package/providers/apple.js +2 -0
- package/providers/asgardeo.d.ts +3 -0
- package/providers/asgardeo.d.ts.map +1 -0
- package/providers/asgardeo.js +2 -0
- package/providers/atlassian.d.ts +3 -0
- package/providers/atlassian.d.ts.map +1 -0
- package/providers/atlassian.js +2 -0
- package/providers/auth0.d.ts +3 -0
- package/providers/auth0.d.ts.map +1 -0
- package/providers/auth0.js +2 -0
- package/providers/authentik.d.ts +3 -0
- package/providers/authentik.d.ts.map +1 -0
- package/providers/authentik.js +2 -0
- package/providers/azure-ad-b2c.d.ts +3 -0
- package/providers/azure-ad-b2c.d.ts.map +1 -0
- package/providers/azure-ad-b2c.js +2 -0
- package/providers/azure-ad.d.ts +3 -0
- package/providers/azure-ad.d.ts.map +1 -0
- package/providers/azure-ad.js +2 -0
- package/providers/azure-devops.d.ts +3 -0
- package/providers/azure-devops.d.ts.map +1 -0
- package/providers/azure-devops.js +2 -0
- package/providers/bankid-no.d.ts +3 -0
- package/providers/bankid-no.d.ts.map +1 -0
- package/providers/bankid-no.js +2 -0
- package/providers/battlenet.d.ts +3 -0
- package/providers/battlenet.d.ts.map +1 -0
- package/providers/battlenet.js +2 -0
- package/providers/beyondidentity.d.ts +3 -0
- package/providers/beyondidentity.d.ts.map +1 -0
- package/providers/beyondidentity.js +2 -0
- package/providers/bitbucket.d.ts +3 -0
- package/providers/bitbucket.d.ts.map +1 -0
- package/providers/bitbucket.js +2 -0
- package/providers/box.d.ts +3 -0
- package/providers/box.d.ts.map +1 -0
- package/providers/box.js +2 -0
- package/providers/boxyhq-saml.d.ts +3 -0
- package/providers/boxyhq-saml.d.ts.map +1 -0
- package/providers/boxyhq-saml.js +2 -0
- package/providers/bungie.d.ts +3 -0
- package/providers/bungie.d.ts.map +1 -0
- package/providers/bungie.js +2 -0
- package/providers/click-up.d.ts +3 -0
- package/providers/click-up.d.ts.map +1 -0
- package/providers/click-up.js +2 -0
- package/providers/cognito.d.ts +3 -0
- package/providers/cognito.d.ts.map +1 -0
- package/providers/cognito.js +2 -0
- package/providers/coinbase.d.ts +3 -0
- package/providers/coinbase.d.ts.map +1 -0
- package/providers/coinbase.js +2 -0
- package/providers/concept2.d.ts +3 -0
- package/providers/concept2.d.ts.map +1 -0
- package/providers/concept2.js +2 -0
- package/providers/credentials.d.ts +3 -0
- package/providers/credentials.d.ts.map +1 -0
- package/providers/credentials.js +2 -0
- package/providers/descope.d.ts +3 -0
- package/providers/descope.d.ts.map +1 -0
- package/providers/descope.js +2 -0
- package/providers/discord.d.ts +3 -0
- package/providers/discord.d.ts.map +1 -0
- package/providers/discord.js +2 -0
- package/providers/dribbble.d.ts +3 -0
- package/providers/dribbble.d.ts.map +1 -0
- package/providers/dribbble.js +2 -0
- package/providers/dropbox.d.ts +3 -0
- package/providers/dropbox.d.ts.map +1 -0
- package/providers/dropbox.js +2 -0
- package/providers/duende-identity-server6.d.ts +3 -0
- package/providers/duende-identity-server6.d.ts.map +1 -0
- package/providers/duende-identity-server6.js +2 -0
- package/providers/email.d.ts +3 -0
- package/providers/email.d.ts.map +1 -0
- package/providers/email.js +2 -0
- package/providers/eventbrite.d.ts +3 -0
- package/providers/eventbrite.d.ts.map +1 -0
- package/providers/eventbrite.js +2 -0
- package/providers/eveonline.d.ts +3 -0
- package/providers/eveonline.d.ts.map +1 -0
- package/providers/eveonline.js +2 -0
- package/providers/facebook.d.ts +3 -0
- package/providers/facebook.d.ts.map +1 -0
- package/providers/facebook.js +2 -0
- package/providers/faceit.d.ts +3 -0
- package/providers/faceit.d.ts.map +1 -0
- package/providers/faceit.js +2 -0
- package/providers/figma.d.ts +3 -0
- package/providers/figma.d.ts.map +1 -0
- package/providers/figma.js +2 -0
- package/providers/forwardemail.d.ts +3 -0
- package/providers/forwardemail.d.ts.map +1 -0
- package/providers/forwardemail.js +2 -0
- package/providers/foursquare.d.ts +3 -0
- package/providers/foursquare.d.ts.map +1 -0
- package/providers/foursquare.js +2 -0
- package/providers/freshbooks.d.ts +3 -0
- package/providers/freshbooks.d.ts.map +1 -0
- package/providers/freshbooks.js +2 -0
- package/providers/frontegg.d.ts +3 -0
- package/providers/frontegg.d.ts.map +1 -0
- package/providers/frontegg.js +2 -0
- package/providers/fusionauth.d.ts +3 -0
- package/providers/fusionauth.d.ts.map +1 -0
- package/providers/fusionauth.js +2 -0
- package/providers/github.d.ts +3 -0
- package/providers/github.d.ts.map +1 -0
- package/providers/github.js +2 -0
- package/providers/gitlab.d.ts +3 -0
- package/providers/gitlab.d.ts.map +1 -0
- package/providers/gitlab.js +2 -0
- package/providers/google.d.ts +3 -0
- package/providers/google.d.ts.map +1 -0
- package/providers/google.js +2 -0
- package/providers/hubspot.d.ts +3 -0
- package/providers/hubspot.d.ts.map +1 -0
- package/providers/hubspot.js +2 -0
- package/providers/huggingface.d.ts +3 -0
- package/providers/huggingface.d.ts.map +1 -0
- package/providers/huggingface.js +2 -0
- package/providers/identity-server4.d.ts +3 -0
- package/providers/identity-server4.d.ts.map +1 -0
- package/providers/identity-server4.js +2 -0
- package/providers/index.d.ts +2 -0
- package/providers/index.d.ts.map +1 -0
- package/providers/index.js +1 -0
- package/providers/instagram.d.ts +3 -0
- package/providers/instagram.d.ts.map +1 -0
- package/providers/instagram.js +2 -0
- package/providers/kakao.d.ts +3 -0
- package/providers/kakao.d.ts.map +1 -0
- package/providers/kakao.js +2 -0
- package/providers/keycloak.d.ts +3 -0
- package/providers/keycloak.d.ts.map +1 -0
- package/providers/keycloak.js +2 -0
- package/providers/kinde.d.ts +3 -0
- package/providers/kinde.d.ts.map +1 -0
- package/providers/kinde.js +2 -0
- package/providers/line.d.ts +3 -0
- package/providers/line.d.ts.map +1 -0
- package/providers/line.js +2 -0
- package/providers/linkedin.d.ts +3 -0
- package/providers/linkedin.d.ts.map +1 -0
- package/providers/linkedin.js +2 -0
- package/providers/logto.d.ts +3 -0
- package/providers/logto.d.ts.map +1 -0
- package/providers/logto.js +2 -0
- package/providers/loops.d.ts +3 -0
- package/providers/loops.d.ts.map +1 -0
- package/providers/loops.js +2 -0
- package/providers/mailchimp.d.ts +3 -0
- package/providers/mailchimp.d.ts.map +1 -0
- package/providers/mailchimp.js +2 -0
- package/providers/mailgun.d.ts +3 -0
- package/providers/mailgun.d.ts.map +1 -0
- package/providers/mailgun.js +2 -0
- package/providers/mailru.d.ts +3 -0
- package/providers/mailru.d.ts.map +1 -0
- package/providers/mailru.js +2 -0
- package/providers/mastodon.d.ts +3 -0
- package/providers/mastodon.d.ts.map +1 -0
- package/providers/mastodon.js +2 -0
- package/providers/mattermost.d.ts +3 -0
- package/providers/mattermost.d.ts.map +1 -0
- package/providers/mattermost.js +2 -0
- package/providers/medium.d.ts +3 -0
- package/providers/medium.d.ts.map +1 -0
- package/providers/medium.js +2 -0
- package/providers/microsoft-entra-id.d.ts +3 -0
- package/providers/microsoft-entra-id.d.ts.map +1 -0
- package/providers/microsoft-entra-id.js +2 -0
- package/providers/naver.d.ts +3 -0
- package/providers/naver.d.ts.map +1 -0
- package/providers/naver.js +2 -0
- package/providers/netlify.d.ts +3 -0
- package/providers/netlify.d.ts.map +1 -0
- package/providers/netlify.js +2 -0
- package/providers/netsuite.d.ts +3 -0
- package/providers/netsuite.d.ts.map +1 -0
- package/providers/netsuite.js +2 -0
- package/providers/nextcloud.d.ts +3 -0
- package/providers/nextcloud.d.ts.map +1 -0
- package/providers/nextcloud.js +2 -0
- package/providers/nodemailer.d.ts +3 -0
- package/providers/nodemailer.d.ts.map +1 -0
- package/providers/nodemailer.js +2 -0
- package/providers/notion.d.ts +3 -0
- package/providers/notion.d.ts.map +1 -0
- package/providers/notion.js +2 -0
- package/providers/okta.d.ts +3 -0
- package/providers/okta.d.ts.map +1 -0
- package/providers/okta.js +2 -0
- package/providers/onelogin.d.ts +3 -0
- package/providers/onelogin.d.ts.map +1 -0
- package/providers/onelogin.js +2 -0
- package/providers/ory-hydra.d.ts +3 -0
- package/providers/ory-hydra.d.ts.map +1 -0
- package/providers/ory-hydra.js +2 -0
- package/providers/osso.d.ts +3 -0
- package/providers/osso.d.ts.map +1 -0
- package/providers/osso.js +2 -0
- package/providers/osu.d.ts +3 -0
- package/providers/osu.d.ts.map +1 -0
- package/providers/osu.js +2 -0
- package/providers/passage.d.ts +3 -0
- package/providers/passage.d.ts.map +1 -0
- package/providers/passage.js +2 -0
- package/providers/passkey.d.ts +3 -0
- package/providers/passkey.d.ts.map +1 -0
- package/providers/passkey.js +2 -0
- package/providers/patreon.d.ts +3 -0
- package/providers/patreon.d.ts.map +1 -0
- package/providers/patreon.js +2 -0
- package/providers/ping-id.d.ts +3 -0
- package/providers/ping-id.d.ts.map +1 -0
- package/providers/ping-id.js +2 -0
- package/providers/pinterest.d.ts +3 -0
- package/providers/pinterest.d.ts.map +1 -0
- package/providers/pinterest.js +2 -0
- package/providers/pipedrive.d.ts +3 -0
- package/providers/pipedrive.d.ts.map +1 -0
- package/providers/pipedrive.js +2 -0
- package/providers/postmark.d.ts +3 -0
- package/providers/postmark.d.ts.map +1 -0
- package/providers/postmark.js +2 -0
- package/providers/reddit.d.ts +3 -0
- package/providers/reddit.d.ts.map +1 -0
- package/providers/reddit.js +2 -0
- package/providers/resend.d.ts +3 -0
- package/providers/resend.d.ts.map +1 -0
- package/providers/resend.js +2 -0
- package/providers/roblox.d.ts +3 -0
- package/providers/roblox.d.ts.map +1 -0
- package/providers/roblox.js +2 -0
- package/providers/salesforce.d.ts +3 -0
- package/providers/salesforce.d.ts.map +1 -0
- package/providers/salesforce.js +2 -0
- package/providers/sendgrid.d.ts +3 -0
- package/providers/sendgrid.d.ts.map +1 -0
- package/providers/sendgrid.js +2 -0
- package/providers/simplelogin.d.ts +3 -0
- package/providers/simplelogin.d.ts.map +1 -0
- package/providers/simplelogin.js +2 -0
- package/providers/slack.d.ts +3 -0
- package/providers/slack.d.ts.map +1 -0
- package/providers/slack.js +2 -0
- package/providers/spotify.d.ts +3 -0
- package/providers/spotify.d.ts.map +1 -0
- package/providers/spotify.js +2 -0
- package/providers/strava.d.ts +3 -0
- package/providers/strava.d.ts.map +1 -0
- package/providers/strava.js +2 -0
- package/providers/threads.d.ts +3 -0
- package/providers/threads.d.ts.map +1 -0
- package/providers/threads.js +2 -0
- package/providers/tiktok.d.ts +3 -0
- package/providers/tiktok.d.ts.map +1 -0
- package/providers/tiktok.js +2 -0
- package/providers/todoist.d.ts +3 -0
- package/providers/todoist.d.ts.map +1 -0
- package/providers/todoist.js +2 -0
- package/providers/trakt.d.ts +3 -0
- package/providers/trakt.d.ts.map +1 -0
- package/providers/trakt.js +2 -0
- package/providers/twitch.d.ts +3 -0
- package/providers/twitch.d.ts.map +1 -0
- package/providers/twitch.js +2 -0
- package/providers/twitter.d.ts +3 -0
- package/providers/twitter.d.ts.map +1 -0
- package/providers/twitter.js +2 -0
- package/providers/united-effects.d.ts +3 -0
- package/providers/united-effects.d.ts.map +1 -0
- package/providers/united-effects.js +2 -0
- package/providers/vipps.d.ts +3 -0
- package/providers/vipps.d.ts.map +1 -0
- package/providers/vipps.js +2 -0
- package/providers/vk.d.ts +3 -0
- package/providers/vk.d.ts.map +1 -0
- package/providers/vk.js +2 -0
- package/providers/webauthn.d.ts +3 -0
- package/providers/webauthn.d.ts.map +1 -0
- package/providers/webauthn.js +2 -0
- package/providers/webex.d.ts +3 -0
- package/providers/webex.d.ts.map +1 -0
- package/providers/webex.js +2 -0
- package/providers/wechat.d.ts +3 -0
- package/providers/wechat.d.ts.map +1 -0
- package/providers/wechat.js +2 -0
- package/providers/wikimedia.d.ts +3 -0
- package/providers/wikimedia.d.ts.map +1 -0
- package/providers/wikimedia.js +2 -0
- package/providers/wordpress.d.ts +3 -0
- package/providers/wordpress.d.ts.map +1 -0
- package/providers/wordpress.js +2 -0
- package/providers/workos.d.ts +3 -0
- package/providers/workos.d.ts.map +1 -0
- package/providers/workos.js +2 -0
- package/providers/yandex.d.ts +3 -0
- package/providers/yandex.d.ts.map +1 -0
- package/providers/yandex.js +2 -0
- package/providers/zitadel.d.ts +3 -0
- package/providers/zitadel.d.ts.map +1 -0
- package/providers/zitadel.js +2 -0
- package/providers/zoho.d.ts +3 -0
- package/providers/zoho.d.ts.map +1 -0
- package/providers/zoho.js +2 -0
- package/providers/zoom.d.ts +3 -0
- package/providers/zoom.d.ts.map +1 -0
- package/providers/zoom.js +2 -0
- package/react.d.ts +102 -0
- package/react.d.ts.map +1 -0
- package/react.js +361 -0
- package/src/adapters.ts +1 -0
- package/src/index.ts +430 -0
- package/src/jwt.ts +9 -0
- package/src/lib/actions.ts +144 -0
- package/src/lib/client.ts +245 -0
- package/src/lib/env.ts +36 -0
- package/src/lib/index.ts +313 -0
- package/src/lib/types.ts +30 -0
- package/src/middleware.ts +16 -0
- package/src/next.ts +16 -0
- package/src/providers/42-school.ts +2 -0
- package/src/providers/apple.ts +2 -0
- package/src/providers/asgardeo.ts +2 -0
- package/src/providers/atlassian.ts +2 -0
- package/src/providers/auth0.ts +2 -0
- package/src/providers/authentik.ts +2 -0
- package/src/providers/azure-ad-b2c.ts +2 -0
- package/src/providers/azure-ad.ts +2 -0
- package/src/providers/azure-devops.ts +2 -0
- package/src/providers/bankid-no.ts +2 -0
- package/src/providers/battlenet.ts +2 -0
- package/src/providers/beyondidentity.ts +2 -0
- package/src/providers/bitbucket.ts +2 -0
- package/src/providers/box.ts +2 -0
- package/src/providers/boxyhq-saml.ts +2 -0
- package/src/providers/bungie.ts +2 -0
- package/src/providers/click-up.ts +2 -0
- package/src/providers/cognito.ts +2 -0
- package/src/providers/coinbase.ts +2 -0
- package/src/providers/concept2.ts +2 -0
- package/src/providers/credentials.ts +2 -0
- package/src/providers/descope.ts +2 -0
- package/src/providers/discord.ts +2 -0
- package/src/providers/dribbble.ts +2 -0
- package/src/providers/dropbox.ts +2 -0
- package/src/providers/duende-identity-server6.ts +2 -0
- package/src/providers/email.ts +2 -0
- package/src/providers/eventbrite.ts +2 -0
- package/src/providers/eveonline.ts +2 -0
- package/src/providers/facebook.ts +2 -0
- package/src/providers/faceit.ts +2 -0
- package/src/providers/figma.ts +2 -0
- package/src/providers/forwardemail.ts +2 -0
- package/src/providers/foursquare.ts +2 -0
- package/src/providers/freshbooks.ts +2 -0
- package/src/providers/frontegg.ts +2 -0
- package/src/providers/fusionauth.ts +2 -0
- package/src/providers/github.ts +2 -0
- package/src/providers/gitlab.ts +2 -0
- package/src/providers/google.ts +2 -0
- package/src/providers/hubspot.ts +2 -0
- package/src/providers/huggingface.ts +2 -0
- package/src/providers/identity-server4.ts +2 -0
- package/src/providers/index.ts +1 -0
- package/src/providers/instagram.ts +2 -0
- package/src/providers/kakao.ts +2 -0
- package/src/providers/keycloak.ts +2 -0
- package/src/providers/kinde.ts +2 -0
- package/src/providers/line.ts +2 -0
- package/src/providers/linkedin.ts +2 -0
- package/src/providers/logto.ts +2 -0
- package/src/providers/loops.ts +2 -0
- package/src/providers/mailchimp.ts +2 -0
- package/src/providers/mailgun.ts +2 -0
- package/src/providers/mailru.ts +2 -0
- package/src/providers/mastodon.ts +2 -0
- package/src/providers/mattermost.ts +2 -0
- package/src/providers/medium.ts +2 -0
- package/src/providers/microsoft-entra-id.ts +2 -0
- package/src/providers/naver.ts +2 -0
- package/src/providers/netlify.ts +2 -0
- package/src/providers/netsuite.ts +2 -0
- package/src/providers/nextcloud.ts +2 -0
- package/src/providers/nodemailer.ts +2 -0
- package/src/providers/notion.ts +2 -0
- package/src/providers/okta.ts +2 -0
- package/src/providers/onelogin.ts +2 -0
- package/src/providers/ory-hydra.ts +2 -0
- package/src/providers/osso.ts +2 -0
- package/src/providers/osu.ts +2 -0
- package/src/providers/passage.ts +2 -0
- package/src/providers/passkey.ts +2 -0
- package/src/providers/patreon.ts +2 -0
- package/src/providers/ping-id.ts +2 -0
- package/src/providers/pinterest.ts +2 -0
- package/src/providers/pipedrive.ts +2 -0
- package/src/providers/postmark.ts +2 -0
- package/src/providers/reddit.ts +2 -0
- package/src/providers/resend.ts +2 -0
- package/src/providers/roblox.ts +2 -0
- package/src/providers/salesforce.ts +2 -0
- package/src/providers/sendgrid.ts +2 -0
- package/src/providers/simplelogin.ts +2 -0
- package/src/providers/slack.ts +2 -0
- package/src/providers/spotify.ts +2 -0
- package/src/providers/strava.ts +2 -0
- package/src/providers/threads.ts +2 -0
- package/src/providers/tiktok.ts +2 -0
- package/src/providers/todoist.ts +2 -0
- package/src/providers/trakt.ts +2 -0
- package/src/providers/twitch.ts +2 -0
- package/src/providers/twitter.ts +2 -0
- package/src/providers/united-effects.ts +2 -0
- package/src/providers/vipps.ts +2 -0
- package/src/providers/vk.ts +2 -0
- package/src/providers/webauthn.ts +2 -0
- package/src/providers/webex.ts +2 -0
- package/src/providers/wechat.ts +2 -0
- package/src/providers/wikimedia.ts +2 -0
- package/src/providers/wordpress.ts +2 -0
- package/src/providers/workos.ts +2 -0
- package/src/providers/yandex.ts +2 -0
- package/src/providers/zitadel.ts +2 -0
- package/src/providers/zoho.ts +2 -0
- package/src/providers/zoom.ts +2 -0
- package/src/react.tsx +546 -0
- package/src/webauthn.ts +152 -0
- package/webauthn.d.ts +9 -0
- package/webauthn.d.ts.map +1 -0
- package/webauthn.js +92 -0
- package/LICENSE +0 -70
- package/dist/actions-CMtg7FGv.js +0 -1
- package/dist/actions-CjQUKaXF.mjs +0 -200
- package/dist/client/index.js +0 -1
- package/dist/client/index.mjs +0 -484
- package/dist/components/AccountPicker.d.ts +0 -11
- package/dist/components/OAuthButton.d.ts +0 -11
- package/dist/components/PassKeyButton.d.ts +0 -11
- package/dist/components/PassKeyRegister.d.ts +0 -10
- package/dist/components/TwoFactorSetup.d.ts +0 -8
- package/dist/components/TwoFactorVerify.d.ts +0 -9
- package/dist/core/account-picker/encryption.d.ts +0 -22
- package/dist/core/account-picker/index.d.ts +0 -22
- package/dist/core/auth/email-password.d.ts +0 -145
- package/dist/core/auth/oauth/index.d.ts +0 -14
- package/dist/core/auth/oauth/oauth-handler.d.ts +0 -172
- package/dist/core/auth/oauth/pkce.d.ts +0 -168
- package/dist/core/auth/oauth/providers.d.ts +0 -198
- package/dist/core/auth/oauth/state-store-cookie.d.ts +0 -83
- package/dist/core/auth/oauth/state-store-redis.d.ts +0 -25
- package/dist/core/auth/oauth/state-store.d.ts +0 -48
- package/dist/core/auth/otp.d.ts +0 -184
- package/dist/core/auth/passkey.d.ts +0 -35
- package/dist/core/auth/password.d.ts +0 -22
- package/dist/core/auth/signin-unified.d.ts +0 -33
- package/dist/core/auth/two-factor.d.ts +0 -28
- package/dist/core/client/index.d.ts +0 -132
- package/dist/core/client/token-refresh-manager.d.ts +0 -48
- package/dist/core/errors/index.d.ts +0 -269
- package/dist/core/index.d.ts +0 -9
- package/dist/core/logger/index.d.ts +0 -147
- package/dist/core/mulguard/auth-handlers.d.ts +0 -100
- package/dist/core/mulguard/defaults.d.ts +0 -58
- package/dist/core/mulguard/index.d.ts +0 -9
- package/dist/core/mulguard/integration.d.ts +0 -104
- package/dist/core/mulguard/oauth-handler.d.ts +0 -93
- package/dist/core/mulguard/session-manager.d.ts +0 -94
- package/dist/core/security/csrf.d.ts +0 -46
- package/dist/core/security/headers.d.ts +0 -24
- package/dist/core/security/index.d.ts +0 -132
- package/dist/core/security/rate-limit.d.ts +0 -39
- package/dist/core/security/security-manager.d.ts +0 -236
- package/dist/core/security/validation.d.ts +0 -251
- package/dist/core/security/xss.d.ts +0 -20
- package/dist/core/session/index.d.ts +0 -35
- package/dist/core/session/session-manager.d.ts +0 -235
- package/dist/core/types/auth.d.ts +0 -290
- package/dist/core/types/errors.d.ts +0 -200
- package/dist/core/types/index.d.ts +0 -484
- package/dist/core/utils/auth-helpers.d.ts +0 -136
- package/dist/core/utils/logger.d.ts +0 -121
- package/dist/index/index.js +0 -1
- package/dist/index/index.mjs +0 -2736
- package/dist/index.d.ts +0 -18
- package/dist/mulguard.d.ts +0 -373
- package/dist/nextjs/client/hooks.d.ts +0 -122
- package/dist/nextjs/client/index.d.ts +0 -13
- package/dist/nextjs/client/provider.d.ts +0 -69
- package/dist/nextjs/client/server-actions-helper.d.ts +0 -22
- package/dist/nextjs/handlers/api.d.ts +0 -10
- package/dist/nextjs/handlers/index.d.ts +0 -9
- package/dist/nextjs/handlers/route.d.ts +0 -76
- package/dist/nextjs/index.d.ts +0 -15
- package/dist/nextjs/proxy/index.d.ts +0 -149
- package/dist/nextjs/proxy/security.d.ts +0 -9
- package/dist/nextjs/server/actions.d.ts +0 -30
- package/dist/nextjs/server/auth.d.ts +0 -65
- package/dist/nextjs/server/cookies.d.ts +0 -41
- package/dist/nextjs/server/index.d.ts +0 -18
- package/dist/nextjs/server/oauth-state.d.ts +0 -32
- package/dist/nextjs/server/session-helpers.d.ts +0 -24
- package/dist/nextjs/server/session.d.ts +0 -144
- package/dist/oauth-state-Drwz6fES.js +0 -1
- package/dist/oauth-state-pdypStuS.mjs +0 -210
- package/dist/server/index.js +0 -1
- package/dist/server/index.mjs +0 -29
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { NextRequest, NextResponse } from 'next/server';
|
|
2
|
-
import { MulguardInstance } from '../../mulguard';
|
|
3
|
-
/**
|
|
4
|
-
* Route handler options.
|
|
5
|
-
*/
|
|
6
|
-
export interface RouteHandlerOptions {
|
|
7
|
-
readonly auth: MulguardInstance;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Creates Next.js route handlers for Mulguard authentication.
|
|
11
|
-
*
|
|
12
|
-
* @param auth - Mulguard instance
|
|
13
|
-
* @returns Route handlers for GET and POST requests
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* ```typescript
|
|
17
|
-
* // app/api/auth/[...mulguard]/route.ts
|
|
18
|
-
* import { auth } from '@/auth'
|
|
19
|
-
* import { toNextJsHandler } from 'mulguard'
|
|
20
|
-
*
|
|
21
|
-
* export const { GET, POST } = toNextJsHandler(auth)
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
export declare function toNextJsHandler(auth: MulguardInstance): {
|
|
25
|
-
GET: (request: NextRequest) => Promise<NextResponse>;
|
|
26
|
-
POST: (request: NextRequest) => Promise<NextResponse>;
|
|
27
|
-
};
|
|
28
|
-
/**
|
|
29
|
-
* TODO: Performance
|
|
30
|
-
* - [ ] Add request rate limiting middleware
|
|
31
|
-
* - [ ] Implement request caching for GET /session
|
|
32
|
-
* - [ ] Add request body size limits
|
|
33
|
-
* - [ ] Optimize path matching with compiled regex
|
|
34
|
-
*
|
|
35
|
-
* TODO: Features
|
|
36
|
-
* - [ ] Add request logging middleware
|
|
37
|
-
* - [ ] Implement request validation middleware
|
|
38
|
-
* - [ ] Add CORS support configuration
|
|
39
|
-
* - [ ] Create request/response transformation hooks
|
|
40
|
-
* - [ ] Add request timeout handling
|
|
41
|
-
*
|
|
42
|
-
* TODO: Type Safety
|
|
43
|
-
* - [ ] Add runtime validation for request bodies
|
|
44
|
-
* - [ ] Create type-safe route definitions
|
|
45
|
-
* - [ ] Implement compile-time route validation
|
|
46
|
-
* - [ ] Add type guards for all request bodies
|
|
47
|
-
*
|
|
48
|
-
* TODO: Security
|
|
49
|
-
* - [ ] Add CSRF token validation for state-changing operations
|
|
50
|
-
* - [ ] Implement request origin validation
|
|
51
|
-
* - [ ] Add request signing verification
|
|
52
|
-
* - [ ] Create security headers middleware
|
|
53
|
-
*
|
|
54
|
-
* TODO: Error Handling
|
|
55
|
-
* - [ ] Add structured error responses
|
|
56
|
-
* - [ ] Implement error logging
|
|
57
|
-
* - [ ] Create error recovery strategies
|
|
58
|
-
* - [ ] Add error reporting
|
|
59
|
-
*
|
|
60
|
-
* TODO: Testing
|
|
61
|
-
* - [ ] Add comprehensive route handler tests
|
|
62
|
-
* - [ ] Test all error scenarios
|
|
63
|
-
* - [ ] Test path matching logic
|
|
64
|
-
* - [ ] Add integration tests
|
|
65
|
-
*
|
|
66
|
-
* TODO: Documentation
|
|
67
|
-
* - [ ] Document all supported routes
|
|
68
|
-
* - [ ] Add route examples
|
|
69
|
-
* - [ ] Create troubleshooting guide
|
|
70
|
-
*
|
|
71
|
-
* TODO: Limitations
|
|
72
|
-
* - [ ] Path matching is basic (consider route table)
|
|
73
|
-
* - [ ] No request body validation (add schema validation)
|
|
74
|
-
* - [ ] Error messages may expose internal details
|
|
75
|
-
* - [ ] No request timeout configuration
|
|
76
|
-
*/
|
package/dist/nextjs/index.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Next.js Integration for Mulguard Authentication Library.
|
|
3
|
-
*
|
|
4
|
-
* Provides comprehensive Next.js integration including:
|
|
5
|
-
* - Server-side utilities (getServerSession, Server Actions)
|
|
6
|
-
* - Client-side hooks (useAuth, useSession, Provider)
|
|
7
|
-
* - Proxy middleware (Next.js 16+)
|
|
8
|
-
* - Route handlers (App Router)
|
|
9
|
-
*
|
|
10
|
-
* @module @mulguard/nextjs
|
|
11
|
-
*/
|
|
12
|
-
export * from './server';
|
|
13
|
-
export * from './client';
|
|
14
|
-
export * from './proxy';
|
|
15
|
-
export * from './handlers';
|
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
import { NextResponse, NextRequest } from 'next/server';
|
|
2
|
-
import { MulguardInstance } from '../../mulguard';
|
|
3
|
-
/**
|
|
4
|
-
* Proxy middleware configuration.
|
|
5
|
-
*/
|
|
6
|
-
export interface ProxyMiddlewareConfig {
|
|
7
|
-
/**
|
|
8
|
-
* Mulguard auth instance.
|
|
9
|
-
*/
|
|
10
|
-
readonly auth: MulguardInstance;
|
|
11
|
-
/**
|
|
12
|
-
* Protected routes that require authentication.
|
|
13
|
-
*
|
|
14
|
-
* @example
|
|
15
|
-
* ['/dashboard', '/profile', '/settings']
|
|
16
|
-
*/
|
|
17
|
-
readonly protectedRoutes?: readonly string[];
|
|
18
|
-
/**
|
|
19
|
-
* Public routes accessible without authentication.
|
|
20
|
-
*
|
|
21
|
-
* @example
|
|
22
|
-
* ['/login', '/signup', '/about']
|
|
23
|
-
*/
|
|
24
|
-
readonly publicRoutes?: readonly string[];
|
|
25
|
-
/**
|
|
26
|
-
* Redirect to this URL if not authenticated.
|
|
27
|
-
*
|
|
28
|
-
* @default '/login'
|
|
29
|
-
*/
|
|
30
|
-
readonly redirectTo?: string;
|
|
31
|
-
/**
|
|
32
|
-
* Redirect to this URL if already authenticated (for login/register pages).
|
|
33
|
-
*
|
|
34
|
-
* @example
|
|
35
|
-
* '/dashboard'
|
|
36
|
-
*/
|
|
37
|
-
readonly redirectIfAuthenticated?: string;
|
|
38
|
-
/**
|
|
39
|
-
* API routes prefix (default: '/api/auth').
|
|
40
|
-
*/
|
|
41
|
-
readonly apiPrefix?: string;
|
|
42
|
-
/**
|
|
43
|
-
* Enable security headers.
|
|
44
|
-
*
|
|
45
|
-
* @default true
|
|
46
|
-
*/
|
|
47
|
-
readonly enableSecurityHeaders?: boolean;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Creates proxy middleware for Next.js 16+.
|
|
51
|
-
*
|
|
52
|
-
* Replaces the old middleware.ts pattern with proxy-based approach.
|
|
53
|
-
*
|
|
54
|
-
* @param config - Proxy middleware configuration
|
|
55
|
-
* @returns Proxy middleware function
|
|
56
|
-
*
|
|
57
|
-
* @example
|
|
58
|
-
* ```typescript
|
|
59
|
-
* // proxy.ts (Next.js 16+)
|
|
60
|
-
* import { createProxyMiddleware } from 'mulguard/nextjs/proxy'
|
|
61
|
-
* import { auth } from '@/lib/auth'
|
|
62
|
-
*
|
|
63
|
-
* export default createProxyMiddleware({
|
|
64
|
-
* auth,
|
|
65
|
-
* protectedRoutes: ['/dashboard', '/profile'],
|
|
66
|
-
* redirectTo: '/login',
|
|
67
|
-
* redirectIfAuthenticated: '/dashboard',
|
|
68
|
-
* })
|
|
69
|
-
*
|
|
70
|
-
* export const config = {
|
|
71
|
-
* matcher: ['/((?!api|_next/static|_next/image|favicon.ico).*)'],
|
|
72
|
-
* }
|
|
73
|
-
* ```
|
|
74
|
-
*/
|
|
75
|
-
export declare function createProxyMiddleware(config: ProxyMiddlewareConfig): (request: NextRequest) => Promise<NextResponse>;
|
|
76
|
-
/**
|
|
77
|
-
* Checks if user has required role (for role-based access control).
|
|
78
|
-
*
|
|
79
|
-
* @param auth - Mulguard auth instance
|
|
80
|
-
* @param requiredRole - Required role
|
|
81
|
-
* @returns True if user has required role
|
|
82
|
-
*
|
|
83
|
-
* @example
|
|
84
|
-
* ```typescript
|
|
85
|
-
* const hasAdminRole = await checkRole(auth, 'admin')
|
|
86
|
-
* if (!hasAdminRole) {
|
|
87
|
-
* return NextResponse.json({ error: 'Forbidden' }, { status: 403 })
|
|
88
|
-
* }
|
|
89
|
-
* ```
|
|
90
|
-
*/
|
|
91
|
-
export declare function checkRole(auth: MulguardInstance, requiredRole: string): Promise<boolean>;
|
|
92
|
-
/**
|
|
93
|
-
* Creates a role-based proxy middleware.
|
|
94
|
-
*
|
|
95
|
-
* @param config - Proxy middleware configuration
|
|
96
|
-
* @param requiredRole - Required role
|
|
97
|
-
* @returns Proxy middleware function with role check
|
|
98
|
-
*
|
|
99
|
-
* @example
|
|
100
|
-
* ```typescript
|
|
101
|
-
* export default createRoleBasedProxy(
|
|
102
|
-
* { auth, protectedRoutes: ['/admin'] },
|
|
103
|
-
* 'admin'
|
|
104
|
-
* )
|
|
105
|
-
* ```
|
|
106
|
-
*/
|
|
107
|
-
export declare function createRoleBasedProxy(config: ProxyMiddlewareConfig, requiredRole: string): (request: NextRequest) => Promise<NextResponse>;
|
|
108
|
-
export { withSecurityHeaders } from './security';
|
|
109
|
-
/**
|
|
110
|
-
* TODO: Performance
|
|
111
|
-
* - [ ] Add session caching for proxy middleware
|
|
112
|
-
* - [ ] Optimize route matching with compiled regex
|
|
113
|
-
* - [ ] Add request-level session cache
|
|
114
|
-
* - [ ] Implement route preloading
|
|
115
|
-
*
|
|
116
|
-
* TODO: Features
|
|
117
|
-
* - [ ] Add IP-based rate limiting in proxy
|
|
118
|
-
* - [ ] Implement request logging
|
|
119
|
-
* - [ ] Add custom redirect logic support
|
|
120
|
-
* - [ ] Create route permission system
|
|
121
|
-
* - [ ] Add middleware chaining support
|
|
122
|
-
*
|
|
123
|
-
* TODO: Type Safety
|
|
124
|
-
* - [ ] Add branded types for routes
|
|
125
|
-
* - [ ] Create type-safe route matching
|
|
126
|
-
* - [ ] Implement compile-time route validation
|
|
127
|
-
*
|
|
128
|
-
* TODO: Security
|
|
129
|
-
* - [ ] Add request fingerprinting
|
|
130
|
-
* - [ ] Implement bot detection
|
|
131
|
-
* - [ ] Add DDoS protection
|
|
132
|
-
* - [ ] Create security event logging
|
|
133
|
-
*
|
|
134
|
-
* TODO: Testing
|
|
135
|
-
* - [ ] Add comprehensive unit tests
|
|
136
|
-
* - [ ] Test route matching logic
|
|
137
|
-
* - [ ] Test redirect behavior
|
|
138
|
-
* - [ ] Add Next.js integration tests
|
|
139
|
-
*
|
|
140
|
-
* TODO: Documentation
|
|
141
|
-
* - [ ] Document proxy middleware usage
|
|
142
|
-
* - [ ] Add route protection guide
|
|
143
|
-
* - [ ] Create security best practices guide
|
|
144
|
-
*
|
|
145
|
-
* TODO: Limitations
|
|
146
|
-
* - [ ] Proxy middleware runs on every request (consider caching)
|
|
147
|
-
* - [ ] Session check is synchronous (consider async optimization)
|
|
148
|
-
* - [ ] Route matching is simple (consider regex support)
|
|
149
|
-
*/
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { NextResponse, NextRequest } from 'next/server';
|
|
2
|
-
/**
|
|
3
|
-
* Apply security headers to response
|
|
4
|
-
*/
|
|
5
|
-
export declare function withSecurityHeaders(_request: NextRequest, response: NextResponse): NextResponse;
|
|
6
|
-
/**
|
|
7
|
-
* Security middleware wrapper
|
|
8
|
-
*/
|
|
9
|
-
export declare function createSecurityMiddleware(): (request: NextRequest) => Promise<NextResponse>;
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { MulguardInstance } from '../../mulguard';
|
|
2
|
-
import { Verify2FAData, AuthResult, EmailCredentials, RegisterData } from '../../core/types';
|
|
3
|
-
/**
|
|
4
|
-
* Verify 2FA code - Server Action
|
|
5
|
-
*
|
|
6
|
-
* @example
|
|
7
|
-
* ```typescript
|
|
8
|
-
* 'use client'
|
|
9
|
-
* import { verify2FAAction } from 'mulguard/nextjs/server'
|
|
10
|
-
* import { auth } from '@/lib/auth'
|
|
11
|
-
*
|
|
12
|
-
* const result = await verify2FAAction(auth, { email, userId, code })
|
|
13
|
-
* ```
|
|
14
|
-
*/
|
|
15
|
-
export declare function verify2FAAction(auth: MulguardInstance, data: Verify2FAData): Promise<AuthResult>;
|
|
16
|
-
/**
|
|
17
|
-
* Sign out - Server Action
|
|
18
|
-
*/
|
|
19
|
-
export declare function signOutAction(auth: MulguardInstance): Promise<{
|
|
20
|
-
success: boolean;
|
|
21
|
-
error?: string;
|
|
22
|
-
}>;
|
|
23
|
-
/**
|
|
24
|
-
* Sign in with email - Server Action
|
|
25
|
-
*/
|
|
26
|
-
export declare function signInEmailAction(auth: MulguardInstance, credentials: EmailCredentials): Promise<AuthResult>;
|
|
27
|
-
/**
|
|
28
|
-
* Sign up - Server Action
|
|
29
|
-
*/
|
|
30
|
-
export declare function signUpAction(auth: MulguardInstance, data: RegisterData): Promise<AuthResult>;
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { Session, User } from '../../core/types';
|
|
2
|
-
import { MulguardInstance } from '../../mulguard';
|
|
3
|
-
/**
|
|
4
|
-
* Get server session using auth instance
|
|
5
|
-
*
|
|
6
|
-
* @example
|
|
7
|
-
* ```typescript
|
|
8
|
-
* import { auth } from '@/auth'
|
|
9
|
-
* import { getServerSession } from 'mulguard/nextjs/server'
|
|
10
|
-
*
|
|
11
|
-
* export default async function Page() {
|
|
12
|
-
* const session = await getServerSession(auth)
|
|
13
|
-
* if (!session) {
|
|
14
|
-
* redirect('/login')
|
|
15
|
-
* }
|
|
16
|
-
* return <div>Hello {session.user.name}</div>
|
|
17
|
-
* }
|
|
18
|
-
* ```
|
|
19
|
-
*/
|
|
20
|
-
export declare function getServerSession(auth: MulguardInstance): Promise<Session | null>;
|
|
21
|
-
/**
|
|
22
|
-
* Require authentication - redirects if not authenticated
|
|
23
|
-
*
|
|
24
|
-
* @example
|
|
25
|
-
* ```typescript
|
|
26
|
-
* import { auth } from '@/auth'
|
|
27
|
-
* import { requireAuth } from 'mulguard/nextjs/server'
|
|
28
|
-
*
|
|
29
|
-
* export default async function ProtectedPage() {
|
|
30
|
-
* const session = await requireAuth(auth, '/login')
|
|
31
|
-
* return <div>Hello {session.user.name}</div>
|
|
32
|
-
* }
|
|
33
|
-
* ```
|
|
34
|
-
*/
|
|
35
|
-
export declare function requireAuth(auth: MulguardInstance, redirectTo?: string): Promise<Session>;
|
|
36
|
-
/**
|
|
37
|
-
* Require specific role
|
|
38
|
-
*
|
|
39
|
-
* @example
|
|
40
|
-
* ```typescript
|
|
41
|
-
* import { auth } from '@/auth'
|
|
42
|
-
* import { requireRole } from 'mulguard/nextjs/server'
|
|
43
|
-
*
|
|
44
|
-
* export default async function AdminPage() {
|
|
45
|
-
* const session = await requireRole(auth, 'admin', '/unauthorized')
|
|
46
|
-
* return <div>Admin Dashboard</div>
|
|
47
|
-
* }
|
|
48
|
-
* ```
|
|
49
|
-
*/
|
|
50
|
-
export declare function requireRole(auth: MulguardInstance, role: string, redirectTo?: string): Promise<Session>;
|
|
51
|
-
/**
|
|
52
|
-
* Get current user
|
|
53
|
-
*
|
|
54
|
-
* @example
|
|
55
|
-
* ```typescript
|
|
56
|
-
* import { auth } from '@/auth'
|
|
57
|
-
* import { getCurrentUser } from 'mulguard/nextjs/server'
|
|
58
|
-
*
|
|
59
|
-
* export default async function Page() {
|
|
60
|
-
* const user = await getCurrentUser(auth)
|
|
61
|
-
* return <div>{user ? `Hello ${user.name}` : 'Not logged in'}</div>
|
|
62
|
-
* }
|
|
63
|
-
* ```
|
|
64
|
-
*/
|
|
65
|
-
export declare function getCurrentUser(auth: MulguardInstance): Promise<User | null>;
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { SessionConfig } from '../../core/types';
|
|
2
|
-
export interface CookieOptions {
|
|
3
|
-
name: string;
|
|
4
|
-
value: string;
|
|
5
|
-
maxAge?: number;
|
|
6
|
-
expires?: Date;
|
|
7
|
-
httpOnly?: boolean;
|
|
8
|
-
secure?: boolean;
|
|
9
|
-
sameSite?: 'strict' | 'lax' | 'none';
|
|
10
|
-
path?: string;
|
|
11
|
-
domain?: string;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Result of setting a cookie
|
|
15
|
-
*/
|
|
16
|
-
export interface SetCookieResult {
|
|
17
|
-
success: boolean;
|
|
18
|
-
error?: string;
|
|
19
|
-
warning?: string;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Get cookie value from Next.js cookies
|
|
23
|
-
*/
|
|
24
|
-
export declare function getCookie(name: string): Promise<string | undefined>;
|
|
25
|
-
/**
|
|
26
|
-
* Set cookie in Next.js response
|
|
27
|
-
*
|
|
28
|
-
* @returns Result indicating success or failure with error message
|
|
29
|
-
*/
|
|
30
|
-
export declare function setCookie(options: CookieOptions): Promise<SetCookieResult>;
|
|
31
|
-
/**
|
|
32
|
-
* Delete cookie
|
|
33
|
-
*/
|
|
34
|
-
export declare function deleteCookie(name: string, options?: {
|
|
35
|
-
path?: string;
|
|
36
|
-
domain?: string;
|
|
37
|
-
}): Promise<void>;
|
|
38
|
-
/**
|
|
39
|
-
* Build cookie options from session config
|
|
40
|
-
*/
|
|
41
|
-
export declare function buildCookieOptions(name: string, value: string, config: SessionConfig): CookieOptions;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Next.js Server-Side Integration for Mulguard Authentication Library.
|
|
3
|
-
*
|
|
4
|
-
* Provides server-side utilities for Next.js App Router including:
|
|
5
|
-
* - Session management (getServerSession, getServerUser)
|
|
6
|
-
* - Server Actions helpers
|
|
7
|
-
* - Cookie utilities
|
|
8
|
-
* - Authentication helpers
|
|
9
|
-
*
|
|
10
|
-
* @module @mulguard/nextjs/server
|
|
11
|
-
*/
|
|
12
|
-
export * from './session';
|
|
13
|
-
export * from './actions';
|
|
14
|
-
export { requireAuth, requireRole, getCurrentUser } from './auth';
|
|
15
|
-
export * from './cookies';
|
|
16
|
-
export * from './session-helpers';
|
|
17
|
-
export * from './oauth-state';
|
|
18
|
-
export type { Session, User } from '../../core/types';
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Server-side OAuth state management for Next.js.
|
|
3
|
-
*
|
|
4
|
-
* Stores OAuth state in httpOnly cookies for security.
|
|
5
|
-
*
|
|
6
|
-
* ✅ SECURE: Uses httpOnly cookies to prevent XSS attacks
|
|
7
|
-
* ✅ PRODUCTION-READY: Works with Next.js Server Actions
|
|
8
|
-
*
|
|
9
|
-
* ⚠️ NOTE: For production with multiple server instances, use Redis or Database store instead.
|
|
10
|
-
*
|
|
11
|
-
* @module @mulguard/nextjs/server/oauth-state
|
|
12
|
-
*/
|
|
13
|
-
/**
|
|
14
|
-
* Store OAuth state in httpOnly cookie
|
|
15
|
-
* ✅ SECURE: Uses httpOnly cookie to prevent XSS attacks
|
|
16
|
-
*/
|
|
17
|
-
export declare function storeOAuthStateCookie(state: string, provider: string): Promise<{
|
|
18
|
-
success: boolean;
|
|
19
|
-
error?: string;
|
|
20
|
-
}>;
|
|
21
|
-
/**
|
|
22
|
-
* Get and validate OAuth state from cookie
|
|
23
|
-
* ✅ SECURE: Validates state and deletes after use (one-time use)
|
|
24
|
-
*/
|
|
25
|
-
export declare function getOAuthStateCookie(): Promise<{
|
|
26
|
-
state: string;
|
|
27
|
-
provider: string;
|
|
28
|
-
} | null>;
|
|
29
|
-
/**
|
|
30
|
-
* Delete OAuth state cookie
|
|
31
|
-
*/
|
|
32
|
-
export declare function deleteOAuthStateCookie(): Promise<void>;
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { Session } from '../../core/types';
|
|
2
|
-
/**
|
|
3
|
-
* Check if session is expired (helper version that accepts null)
|
|
4
|
-
*/
|
|
5
|
-
export declare function isSessionExpiredNullable(session: Session | null): boolean;
|
|
6
|
-
/**
|
|
7
|
-
* Check if session is expiring soon
|
|
8
|
-
* @param session - Session to check
|
|
9
|
-
* @param thresholdMinutes - Minutes before expiration to consider "soon" (default: 5)
|
|
10
|
-
*/
|
|
11
|
-
export declare function isSessionExpiringSoon(session: Session | null, thresholdMinutes?: number): boolean;
|
|
12
|
-
/**
|
|
13
|
-
* Get time until session expiration in minutes
|
|
14
|
-
*/
|
|
15
|
-
export declare function getSessionTimeUntilExpiry(session: Session | null): number | null;
|
|
16
|
-
/**
|
|
17
|
-
* Check if session is valid (not expired and has required fields)
|
|
18
|
-
*/
|
|
19
|
-
export declare function isSessionValid(session: Session | null): session is Session;
|
|
20
|
-
/**
|
|
21
|
-
* Validate session structure
|
|
22
|
-
* Centralized validation logic used across the library
|
|
23
|
-
*/
|
|
24
|
-
export declare function validateSessionStructure(session: unknown): session is Session;
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
import { Session, User } from '../../core/types';
|
|
2
|
-
import { MulguardInstance } from '../../mulguard';
|
|
3
|
-
/**
|
|
4
|
-
* Gets the current session on the server side.
|
|
5
|
-
*
|
|
6
|
-
* Reads session from cookie and validates expiration.
|
|
7
|
-
* Works in Server Components, Server Actions, and API Routes.
|
|
8
|
-
*
|
|
9
|
-
* @template TUser - User type
|
|
10
|
-
* @template TSession - Session type
|
|
11
|
-
* @param auth - Mulguard instance
|
|
12
|
-
* @returns Current session or null if not authenticated
|
|
13
|
-
* @throws SessionExpiredError if session is expired
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* ```typescript
|
|
17
|
-
* // In Server Component
|
|
18
|
-
* import { getServerSession } from 'mulguard/nextjs/server'
|
|
19
|
-
* import { auth } from '@/lib/auth'
|
|
20
|
-
*
|
|
21
|
-
* export default async function DashboardPage() {
|
|
22
|
-
* const session = await getServerSession(auth)
|
|
23
|
-
* if (!session) {
|
|
24
|
-
* redirect('/login')
|
|
25
|
-
* }
|
|
26
|
-
* return <div>Welcome, {session.user.name}!</div>
|
|
27
|
-
* }
|
|
28
|
-
* ```
|
|
29
|
-
*/
|
|
30
|
-
export declare function getServerSession<TUser extends User = User, TSession extends Session<TUser> = Session<TUser>>(auth: MulguardInstance): Promise<TSession | null>;
|
|
31
|
-
/**
|
|
32
|
-
* Checks if user is authenticated on the server side.
|
|
33
|
-
*
|
|
34
|
-
* @param auth - Mulguard instance
|
|
35
|
-
* @returns True if user is authenticated
|
|
36
|
-
*
|
|
37
|
-
* @example
|
|
38
|
-
* ```typescript
|
|
39
|
-
* const isAuthenticated = await isAuthenticated(auth)
|
|
40
|
-
* if (!isAuthenticated) {
|
|
41
|
-
* redirect('/login')
|
|
42
|
-
* }
|
|
43
|
-
* ```
|
|
44
|
-
*/
|
|
45
|
-
export declare function isAuthenticated(auth: MulguardInstance): Promise<boolean>;
|
|
46
|
-
/**
|
|
47
|
-
* Gets the current user from session on the server side.
|
|
48
|
-
*
|
|
49
|
-
* @template TUser - User type
|
|
50
|
-
* @param auth - Mulguard instance
|
|
51
|
-
* @returns Current user or null if not authenticated
|
|
52
|
-
*
|
|
53
|
-
* @example
|
|
54
|
-
* ```typescript
|
|
55
|
-
* const user = await getServerUser(auth)
|
|
56
|
-
* if (user) {
|
|
57
|
-
* console.log('User:', user.email)
|
|
58
|
-
* }
|
|
59
|
-
* ```
|
|
60
|
-
*/
|
|
61
|
-
export declare function getServerUser<TUser extends User = User>(auth: MulguardInstance): Promise<TUser | null>;
|
|
62
|
-
/**
|
|
63
|
-
* Server Action wrapper for authentication operations.
|
|
64
|
-
*
|
|
65
|
-
* Provides type-safe server actions with automatic error handling.
|
|
66
|
-
*
|
|
67
|
-
* @template TResult - Result type
|
|
68
|
-
* @param action - Server action function
|
|
69
|
-
* @returns Server action result
|
|
70
|
-
*
|
|
71
|
-
* @example
|
|
72
|
-
* ```typescript
|
|
73
|
-
* 'use server'
|
|
74
|
-
*
|
|
75
|
-
* import { createServerAction } from 'mulguard/nextjs/server'
|
|
76
|
-
* import { auth } from '@/lib/auth'
|
|
77
|
-
*
|
|
78
|
-
* export const signInAction = createServerAction(async (email: string, password: string) => {
|
|
79
|
-
* return await auth.signIn('credentials', { email, password })
|
|
80
|
-
* })
|
|
81
|
-
* ```
|
|
82
|
-
*/
|
|
83
|
-
export declare function createServerAction<TResult>(action: () => Promise<TResult>): () => Promise<TResult>;
|
|
84
|
-
/**
|
|
85
|
-
* Server Action with authentication check.
|
|
86
|
-
*
|
|
87
|
-
* Ensures user is authenticated before executing action.
|
|
88
|
-
*
|
|
89
|
-
* @template TResult - Result type
|
|
90
|
-
* @template TUser - User type
|
|
91
|
-
* @param auth - Mulguard instance
|
|
92
|
-
* @param action - Server action function with user parameter
|
|
93
|
-
* @returns Server action result
|
|
94
|
-
*
|
|
95
|
-
* @example
|
|
96
|
-
* ```typescript
|
|
97
|
-
* 'use server'
|
|
98
|
-
*
|
|
99
|
-
* import { createAuthenticatedAction } from 'mulguard/nextjs/server'
|
|
100
|
-
* import { auth } from '@/lib/auth'
|
|
101
|
-
*
|
|
102
|
-
* export const updateProfileAction = createAuthenticatedAction(auth, async (user, data) => {
|
|
103
|
-
* // User is guaranteed to be authenticated here
|
|
104
|
-
* return await updateUserProfile(user.id, data)
|
|
105
|
-
* })
|
|
106
|
-
* ```
|
|
107
|
-
*/
|
|
108
|
-
export declare function createAuthenticatedAction<TResult, TUser extends User = User>(auth: MulguardInstance, action: (user: TUser) => Promise<TResult>): () => Promise<TResult>;
|
|
109
|
-
export type { Session, User } from '../../core/types';
|
|
110
|
-
export { SessionExpiredError } from '../../core/errors';
|
|
111
|
-
/**
|
|
112
|
-
* TODO: Performance
|
|
113
|
-
* - [ ] Add session caching for Server Components
|
|
114
|
-
* - [ ] Implement request-level session cache
|
|
115
|
-
* - [ ] Optimize cookie reading
|
|
116
|
-
* - [ ] Add session preloading
|
|
117
|
-
*
|
|
118
|
-
* TODO: Features
|
|
119
|
-
* - [ ] Add session refresh helpers
|
|
120
|
-
* - [ ] Implement session invalidation
|
|
121
|
-
* - [ ] Add session middleware support
|
|
122
|
-
* - [ ] Create session debugging utilities
|
|
123
|
-
*
|
|
124
|
-
* TODO: Type Safety
|
|
125
|
-
* - [ ] Add branded types for session IDs
|
|
126
|
-
* - [ ] Create type-safe cookie handling
|
|
127
|
-
* - [ ] Implement compile-time session validation
|
|
128
|
-
*
|
|
129
|
-
* TODO: Testing
|
|
130
|
-
* - [ ] Add comprehensive unit tests
|
|
131
|
-
* - [ ] Test Server Actions integration
|
|
132
|
-
* - [ ] Test cookie handling
|
|
133
|
-
* - [ ] Add Next.js integration tests
|
|
134
|
-
*
|
|
135
|
-
* TODO: Documentation
|
|
136
|
-
* - [ ] Document Server Actions usage
|
|
137
|
-
* - [ ] Add Server Components guide
|
|
138
|
-
* - [ ] Create API Routes guide
|
|
139
|
-
*
|
|
140
|
-
* TODO: Limitations
|
|
141
|
-
* - [ ] Cookie handling requires Next.js cookies() API
|
|
142
|
-
* - [ ] Server Actions require 'use server' directive
|
|
143
|
-
* - [ ] Session caching is per-request (consider global cache)
|
|
144
|
-
*/
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var y=Object.defineProperty;var m=(t,e,r)=>e in t?y(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var a=(t,e,r)=>m(t,typeof e!="symbol"?e+"":e,r);const o=require("./actions-CMtg7FGv.js"),S=require("next/navigation");class l extends Error{constructor(r,s,i,E){super(s);a(this,"code");a(this,"statusCode");a(this,"details");this.name="AuthError",this.code=r,this.statusCode=i??o.getErrorStatusCode(r),this.details=E,Error.captureStackTrace&&Error.captureStackTrace(this,l)}toJSON(){return{code:this.code,message:this.message,statusCode:this.statusCode,details:this.details}}toErrorResult(){return{success:!1,error:this.message,errorCode:this.code,details:this.details}}}class c extends l{constructor(e="Session has expired",r){super(o.AuthErrorCode.SESSION_EXPIRED,e,void 0,r),this.name="SessionExpiredError"}}function f(t){return!t||!t.expiresAt?!1:new Date(t.expiresAt)<new Date}function O(t,e=5){if(!t||!t.expiresAt)return!1;const r=new Date(t.expiresAt),s=new Date,i=(r.getTime()-s.getTime())/(1e3*60);return i>0&&i<e}function T(t){if(!t||!t.expiresAt)return null;const e=new Date(t.expiresAt),r=new Date,s=(e.getTime()-r.getTime())/(1e3*60);return s>0?Math.floor(s):0}function v(t){return!(!t||!t.user||!t.user.id||!t.user.email||!t.user.name||f(t))}function h(t){if(!t||typeof t!="object")return!1;const e=t;if(!e.user||typeof e.user!="object")return!1;const r=e.user;if(typeof r.id!="string"||r.id.length===0||typeof r.email!="string"||r.email.length===0||typeof r.name!="string"||r.name.length===0||!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(r.email))return!1;if(e.expiresAt)if(e.expiresAt instanceof Date){if(isNaN(e.expiresAt.getTime()))return!1}else if(typeof e.expiresAt=="string"){const i=new Date(e.expiresAt);if(isNaN(i.getTime()))return!1}else return!1;return!0}async function u(t){try{const e=await t.getSession();if(!e)return null;if((typeof e.expiresAt=="string"?new Date(e.expiresAt):e.expiresAt).getTime()<Date.now())throw new c("Session has expired");return e}catch(e){if(e instanceof c)throw e;return null}}async function C(t){try{return await u(t)!==null}catch{return!1}}async function D(t){const e=await u(t);return(e==null?void 0:e.user)||null}function N(t){return async()=>{try{return await t()}catch(e){throw e}}}function _(t,e){return async()=>{const r=await u(t);if(!r)throw new Error("Authentication required");return await e(r.user)}}async function A(t){try{const e=await t.getSession();return!e||!h(e)||f(e)?null:e}catch(e){return process.env.NODE_ENV==="development"&&console.error("Failed to get server session:",e),null}}async function g(t,e="/login"){const r=await A(t);return r||S.redirect(e),r}async function k(t,e,r="/unauthorized"){const s=await g(t);return(!s.user.roles||!s.user.roles.includes(e))&&S.redirect(r),s}async function U(t){const e=await A(t);return(e==null?void 0:e.user)??null}const d="__mulguard_oauth_state",p=10*60;async function x(t,e){try{const r=JSON.stringify({state:t,provider:e,expiresAt:Date.now()+p*1e3}),s=process.env.NODE_ENV==="production";return await o.setCookie({name:d,value:r,httpOnly:!0,secure:s,sameSite:"lax",maxAge:p,path:"/"})}catch(r){return{success:!1,error:r instanceof Error?r.message:"Failed to store OAuth state"}}}async function w(){try{const t=await o.getCookie(d);if(!t)return null;const e=JSON.parse(t);return e.expiresAt<Date.now()?(await n(),null):(await n(),{state:e.state,provider:e.provider})}catch{return await n(),null}}async function n(){await o.deleteCookie(d,{path:"/"})}const b=Object.freeze(Object.defineProperty({__proto__:null,deleteOAuthStateCookie:n,getOAuthStateCookie:w,storeOAuthStateCookie:x},Symbol.toStringTag,{value:"Module"}));exports.SessionExpiredError=c;exports.createAuthenticatedAction=_;exports.createServerAction=N;exports.deleteOAuthStateCookie=n;exports.getCurrentUser=U;exports.getOAuthStateCookie=w;exports.getServerSession=u;exports.getServerUser=D;exports.getSessionTimeUntilExpiry=T;exports.isAuthenticated=C;exports.isSessionExpiredNullable=f;exports.isSessionExpiringSoon=O;exports.isSessionValid=v;exports.oauthState=b;exports.requireAuth=g;exports.requireRole=k;exports.storeOAuthStateCookie=x;exports.validateSessionStructure=h;
|