Comments (6)
I would like to second this! There is an existing repo for this but it no longer works and I haven't been able to figure out what changes need to be made:
timnghg/elysia-connect#1
from elysia.
(it's missing 2FA and WebAuthn support, which Passport has)
Maybe you can talk about this topic with the author of Lucia? Passport.JS is already outdated in my opinion...
But it would be great to do something like fastify-express. It would be a great marketing move!
from elysia.
It would also greatly expand the current ecosystem since you could then utilize most express middleware.
from elysia.
It would also greatly expand the current ecosystem since you could then utilize most express middleware.
But I still think it's more of an evil thing...
from elysia.
So, a proposal for the Elysia team if they are interested. I can look into creating the plugin, but then donate it to the Elysia project if there is interest, and I may well be able to find the time to maintain it as well.
As for a potential plugin, I kind of fancy a slightly different approach to what the previous connect implementation did. Perhaps something like this:
import { Elysia } from "elysia";
import { connect } from "whatever-package-name-I-decide";
// Example Express middlewares, I don't advocate using these in particular with Elysia
// these are just examples that everyone knows how to use
import { json } from "body-parser";
import helmet from "helmet";
new Elysia()
.use(connect({
middleware: [json(), helmet()]
}))
.get("/", ({ connect }) => {
let res: Response;
// If a middleware created a response (for example, Helmet), it's available as connect.res
if (connect.res) {
res = connect.res;
} else {
res = new Response();
}
// If a middleware modifies the request (for example, body-parser), it's available as connect.req
if (req.body) {
res.headers = {
"Content-Type": "application/json"
};
res.body = JSON.stringify({ request: connect.req.body });
res.status = 200;
return res;
} else {
res.body = "Error";
res.status = 400;
return res;
}
})
.listen(3000);
As I'm sure many of you will see, this is a very inconvenient way to use connect middleware, and that is intentional. While I would like to see connect support in Elysia, I think it should be a last resort. Ideally, you should always attempt to find a solution that fits within the confines of your framework. However, even I can admit that isn't always possible; so being able to tap the huge (and well maintained) ecosystem of Express middleware is a blessing.
from elysia.
I mean, if you're going through the effort of building it, I wouldn't intentionally make it hard to use. Just state that there's minimal/no support if avoiding support getting overloaded is a worry.
from elysia.
Related Issues (20)
- onError: For 'VALIDATION' type errors, status code change does not work (200 is always returned) HOT 4
- Unable to access root level macros in plugins
- Cookie schema validation doesn't work with `aot: true` HOT 4
- RangeError: Maximum call stack size exceeded when render jsx after bun build HOT 1
- `redirect` doesn't work with `aot: false` HOT 1
- custom model causing eden to not infer route types
- `decorate` unexpectedly overwrites decorators everywhere HOT 1
- Eden Treat types break when using absolute import paths
- Eden treaty swallows errors HOT 1
- CORS not working correctly when aot is false
- Typing error when using `onError` with `derive` HOT 3
- requestIP return null when using sign cookie
- `ctx.query` doesn't work in some cases with `aot: true` HOT 2
- `aot` does not recognize the use of `ctx.body` within a `try catch` HOT 1
- rate limit feature or plugin !? HOT 1
- no `base64` in `t.String()` `format` option. Also no type support for the `byte` option.
- t.Literal type is ignored in favor of string during validation
- Eden Treaty ignores t.Transform()
- "default" option is not being applied on validation HOT 4
- Ability to create and remove websocket endpoints at runtime.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from elysia.