-
-
Notifications
You must be signed in to change notification settings - Fork 16.7k
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
Release 5.0 #2237
Release 5.0 #2237
Conversation
here's some mostly refactor-based changes i'd like to see. AFAIK you've got this covered @dougwilson, but let me know if you need help:
|
All great stuff @jonathanong :) I added all but the |
How close is this to a prerelease? I just want to know if you think it's stable enough to start playing around with for future projects. |
So you're always welcome to play around with |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Great job @wesleytodd and everyone who worked on this issue. |
Hey @karlhorky! Thanks for the thanks and the questions. Would you mind moving them into a new issue and we can edit this to link back there? I just dont want to make it even harder to find things burried at the end of a 10 year old issue. 🤣 EDIT: and I should add, this stuff is the main reason we are on |
Just dropped by to say this is very cool and thank you all for the hard work ❤️ |
Sounds good, I created a first issue over here: |
I'd like to congratulate everyone involved in this release for their absolutely incredible perseverance in getting Express 5.0 to the finish line! Huge thanks for all your hard work, I'm really looking forward to upgrading! 🙏 |
Congratulations for the hardwork 🎉 |
Thank you so much for releasing all these amazing stuff @wesleytodd . Do we have any plans to backport recent security patches (path-go-regexp, send etc.) in v4? |
@spperforce As 4.x is still maintained, all security work has been done for that release. Is there something missing? |
This was so cool to see. Congrats to everyone involved! |
Here are the maintainers listed for the Definitely Typed packages: @types/express@types/express-serve-static-coreBut the express types have only had a few changes since 2021, so I don't know how active its maintainers are. |
If any of the folks in this list are interested in helping us refine our strategy for supporting typescript, please take a look at the new issue #5944 to continue the discussion. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM 🫡
This is a tracking issue for release 5.0.
5.0.0-beta.1 published on npm
I am trying to give better visibility for upcoming changes and so am trying out making a PR for a release here, pulling from the official next release branch into 4.x. This allows for the current pending changes to be easily visible.
Please keep feature requests in their own issues
I'm also leaving this PR unlocked so people can make comments/etc. and we'll see how it goes :) If you want to make a comment on a particular change, please make the comment in the "Files changed" tab so comments are not lost during a rebase (they will occur frequently has 4.x progresses).
The goal of Express 5 is to be API tweaks & the removal of all code from the Express repository, moving into components in the pillarjs project (https://github.com/pillarjs), providing at least basic support for promise-returning handlers and complete HTTP/2 functionality. Express 5 would become a "view into pillarjs" and would be an arrangement of these components.
List of changes for release:
[email protected]
)app.param
(though[email protected]
)app.router
which is just generally useful for directly calling to the routerapp.use(app.router)
does not explodeFix views to resolve paths async Resolve paths for views asynchronously #2653query parser
option default to'simple'
Consider disabling extended query string parsing by default #3361bodyParser.urlencoded
default to'simple'
(though[email protected]
)req.host
actually return the host req.host should be req.hostname #2179req.query
a getter instead of added by middleware remove/opt-out ofqs
module #2215res.render
always async callback, to hide sync view engines app.render callbacks twice #2668Makeres.render
use the default engine even when an extension was found Feature request View global option ignore extname #2708Makeres.sendFile
use the"etag"
application setting Disable ETag forres.sendFile()
#2294res.status
throw on invalid argument type Throw on invalid status codes #4212 Throw on bad argument to res.status() #2795 Throw error if argument to res.status is null or undefined #2797 Throw TypeError if argument passed to res.status is null or undefined #3111 Gracefully handle invalid status codes #3137 Gracefully handle invalid status codes #3143Makeexpress.static
use the"etag"
application setting Disabling etag after express.configure doesn't work #2317[email protected]
)Provide separate locals and options to view engine separate locals from config values #2648mime-types
instead ofmime
path-is-absolute
module for absolute path detection utils: use external pathIsAbsolute #2620List of deprecated things removed:
:
inname
forapp.param(name, fn)
app.del
app.param(fn)
req.acceptsCharset
req.acceptsEncoding
req.acceptsLanguage
res.json(obj, status)
res.json(status, obj)
Remove res.json(status, obj) signature #2939res.jsonp(obj, status)
res.jsonp(status, obj)
Remove res.jsonp(status, obj) signature #2940req.param()
res.redirect(url, status)
Remove res.redirect(url, status) signature #2941res.send(body, status)
res.send(status)
res.send(status, body)
Remove res.send(status, body) signature #2942res.sendfile
res.vary()
(i.e. no arguments) Remove res.vary() (no arguments) signature #2943List of things to refactor (still provided by
express
):Betterres.cookie
and general cookie reading/setting (newkeygrip
andcookies
modules; newreq.cookies
or such)Move prototype properties to own repo Move req / res prototype extension to a separate repo #2432Router
to it's own repo Router As Separate Module #2411Testing this release
If you want to try out this release, you can install it with the following command:
Owners/collaborators: please do not merge this PR :)