Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add @auth/astro framework library #9856

Open
wants to merge 52 commits into
base: main
Choose a base branch
from

Conversation

TheOtterlord
Copy link

@TheOtterlord TheOtterlord commented Jan 30, 2024

☕️ Reasoning

This PR is the next iteration of #6463

Introduces an Astro framework package. The package exposes an integration, along with helper methods for both server & client uses.

🧢 Checklist

  • Documentation (Note: The auth-astro.vercel.app autogenerated link doesn't have a deployed site. I'm assuming any deployed example will be hosted by this org)
  • Tests
  • Ready to be merged

🎫 Affected issues

📌 Resources

Copy link

vercel bot commented Jan 30, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
auth-docs ✅ Ready (Inspect) Visit Preview 💬 Add feedback Oct 30, 2024 2:29pm
1 Skipped Deployment
Name Status Preview Comments Updated (UTC)
next-auth-docs ⬜️ Ignored (Inspect) Visit Preview Oct 30, 2024 2:29pm

apps/dev/astro/auth.config.ts Outdated Show resolved Hide resolved
packages/frameworks-astro/src/config.ts Outdated Show resolved Hide resolved
Copy link
Member

@balazsorban44 balazsorban44 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! Added some comments!

Besides those, have a look at https://github.com/nextauthjs/next-auth/blob/main/packages/utils/scripts/providers.js

Used eg. here:

"build": "pnpm clean && pnpm providers && tsc",
"clean": "rm -rf *.js *.d.ts* lib providers",
"dev": "pnpm providers && tsc -w",
"test": "vitest -c ../utils/vitest.config.ts",
"providers": "node ../utils/scripts/providers"

This way, users can import providers from @auth/astro/providers/* instead of having to install @auth/core!

Further, for other integrations support automatic environment variable inference by using the setEnvDefaults method like so

setEnvDefaults(process.env, config)

there is also createActionURL, a method from core that helps you create the url for the Request of Auth in a much less hacky way!

And lastly, the default basePath value is expected to be /auth, not /api/auth. (NextAuth.js is the only exception, since historically that was the default basePath there and we did not want to make this a breaking change in v5)

Could you incorporate these changes, and then make sure that the dev app and example app is also correctly updated? 🙏 Thanks!

packages/frameworks-astro/module.d.ts Outdated Show resolved Hide resolved
packages/frameworks-astro/package.json Outdated Show resolved Hide resolved
Comment on lines 13 to 17
".": "./src/index.ts",
"./config": "./src/config.ts",
"./client": "./src/client.ts",
"./server": "./src/server.ts",
"./middleware": "./middleware.ts"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
".": "./src/index.ts",
"./config": "./src/config.ts",
"./client": "./src/client.ts",
"./server": "./src/server.ts",
"./middleware": "./middleware.ts"
".": {
"types": "./index.d.ts",
"import": "./index.js"
},
"./config": {
"types": "./config.d.ts",
"import": "./config.js"
},
"./client": {
"types": "./client.d.ts",
"import": "./client.js"
},
"./server": {
"types": "./server.d.ts",
"import": "./server.js"
},
"./middleware": {
"types": "./middleware.d.ts",
"import": "./middleware.js"
},
"./adapters": {
"types": "./adapters.d.ts"
},
"./providers/*": {
"types": "./providers/*.d.ts",
"import": "./providers/*.js"
}

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Astro package doesn't require bundling, as all Astro projects (regardless of config) support TypeScript files. Is there still a reason to specify both types and import if they both lead to the same file?

packages/frameworks-astro/package.json Outdated Show resolved Hide resolved
packages/frameworks-astro/tsconfig.json Outdated Show resolved Hide resolved
packages/frameworks-astro/src/server.ts Outdated Show resolved Hide resolved
Co-authored-by: Balázs Orbán <info@balazsorban.com>
@NuroDev
Copy link

NuroDev commented Mar 10, 2024

Is there any further things blocking this from getting merged? I'd love to start using it

@ndom91
Copy link
Member

ndom91 commented Mar 11, 2024

There seem to be some merge conflicts. Otherwise it should be close. Needs another last going over, testing, etc.

@TheOtterlord
Copy link
Author

@ndom91 happy to resolve the conflict, seems to just be the pnpm-lock, so I'll try to do this tonight. Also, I have some notes from the last review in Discord that might be relevant when going over for another round of reviewing.

I also know there's been work on the framework guidelines? I've not been able to keep up as much as I wanted, so let me know if I'm missing anything important from those!

@ndom91
Copy link
Member

ndom91 commented Mar 13, 2024

@ndom91 happy to resolve the conflict, seems to just be the pnpm-lock, so I'll try to do this tonight. Also, I have some notes from the last review in Discord that might be relevant when going over for another round of reviewing.

I also know there's been work on the framework guidelines? I've not been able to keep up as much as I wanted, so let me know if I'm missing anything important from those!

Awesome, thanks! Yeah no I don't think there were any changes there. There's just this creating a framework pkg guidelines 👍

Copy link

vercel bot commented Mar 13, 2024

@TheOtterlord is attempting to deploy a commit to the authjs Team on Vercel.

A member of the Team first needs to authorize it.

@podbasico
Copy link

I have moved away from authjs because I don't think this PR is ever going to be merged (there used to be a different one before this one)

Can you recommend good alternatives?

I could, but don't think this is the right place 😉

@ruohki
Copy link

ruohki commented Oct 9, 2024

I have moved away from authjs because I don't think this PR is ever going to be merged (there used to be a different one before this one)

Can you recommend good alternatives?

https://github.com/lucia-auth/lucia try this one its the other recommended framework for astro

@andokai
Copy link

andokai commented Oct 9, 2024

I have moved away from authjs because I don't think this PR is ever going to be merged (there used to be a different one before this one)

Can you recommend good alternatives?

https://github.com/lucia-auth/lucia try this one its the other recommended framework for astro

Probably better that you don't do that.

lucia-auth/lucia#1707

@NuroDev
Copy link

NuroDev commented Oct 10, 2024

I would prefer to use Auth.js since I am familar with it but since this PR is clearly not going to get merged, at least any time soon, I've switched to better-auth since it offers out the box support for Astro.

@jonaspm
Copy link

jonaspm commented Oct 18, 2024

I also hope this does get merged!

@dos41gw
Copy link

dos41gw commented Oct 29, 2024

Has anyone been able to run the fork with the installed PR? I'm stuck because the middleware isn't attaching due to an error in vite-plugin-astro-server/request.js: 'Only URLs with a scheme in: file, data, and node are supported by the default ESM loader. Received protocol 'auth:'.'

@jonaspm
Copy link

jonaspm commented Oct 29, 2024

Has anyone been able to run the fork with the installed PR? I'm stuck because the middleware isn't attaching due to an error in vite-plugin-astro-server/request.js: 'Only URLs with a scheme in: file, data, and node are supported by the default ESM loader. Received protocol 'auth:'.'

I have not, but seems that there is still some work being done by @TheOtterlord & @ndom91

@RyzeKit
Copy link

RyzeKit commented Nov 10, 2024

I have moved away from authjs because I don't think this PR is ever going to be merged (there used to be a different one before this one)

Can you recommend good alternatives?

https://github.com/lucia-auth/lucia try this one its the other recommended framework for astro

Probably better that you don't do that.

lucia-auth/lucia#1707

I just finished converting my Astro starter kit to Lucia v4 (the latest version), and although it took some time, I would say it's a pretty good alternative. There are some examples that you can follow for guidance: https://github.com/orgs/lucia-auth/repositories?q=astro

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.