-
-
Notifications
You must be signed in to change notification settings - Fork 193
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
Adhere to the full Streams API #159
Comments
Yea, definitely would like to see. Node.js 0.8 will be dropped with the next major but 0.10 support won't be removed anytime soon, so if it's possible to still support 0.10 that would be super awesome. |
FWIW I feel like the current API is pretty janky so totally open to an API that flows better, especially the output side. Many would like to see this write to a transform stream to do transformations, which sounds like you're ask too. |
In addition for Node.js versions, everything in this org tries to support as many Node.js versions as possible -- it's part of our philosophy. We have the ideal support line (down to 0.10 currently) and the hard line of must go down to at least (4.0 currently). Really the minimum version is negotiable between those two, and if 0.10 isn't picked there should be some good reasons to why it's impossible to support lower (in the past we have used compat helps like on-finished to accomplish tasks like this, so perhaps it's just to make a new one). |
Yes, I need to apply a transform afterwards (compression). I'll see what I can come up with, I'll target Node 4, and then we can see if we can stretch it to 0.10. I'm in your same shoes for backward compat, as |
@pillarjs/express-tc Is this something we still want? |
I would actually recommend to reconcile with https://github.com/fastify/send, which already has a variation of this implemented. |
I don't fully understand what you mean by reconciling it in this case. Could you elaborate, please? |
Basically take |
That sounds good to me, although it was required for the TC to agree. I'll add it to the agenda. edit: Okay, the label is not there. Once it is added, I will add it to the agenda. |
We are pretty sure this will need to be a part of the @mcollina If you were willing to, we would love to find a time to sync up with you on how to move forward here. So would you be willing to run us all through some of what your goals are here, what specific technical goals we should be aware of, and lastly what we will need to be aware of when reconciling these to test the ecosystem of modules that depend on this. |
@mcollina is there specific attribution you’d want when doing this work? I’d like to prioritize this and understood the comment as mostly doing a PR based on your branch of work into
|
I think it is more than just that. Similar to the other issues in question, I think we should be working toward an api which we could upstream to node core someday, which likely would enable things like sending the file directly to the socket without ever hitting JS (a thing discussed in the web server frameworks team IIRC). Unless someone has a plan for that in the existing modules, I think we should get a lay of the land here before making any changes. Hence why we discussed getting @mcollina (and team if they can) to sync on this before making any concrete moves. |
I guess I should clarify, that is unless you can work out a way to do this in a backwards compatible way. If so, that would be awesome and then we could try to land it in v5. |
I recommend opening a matching issue on the other repo to make the rest of Fastify team know where this is at.
The
We have been doing the work atm due to the lack of activity on this one. We have aggressively dropped support for old Node.js runtimes (one of the things that made maintaining this very problematic). Less maintenance work is good for everybody if it's possible.
Open an issue on
This is not that API unfortunately, as it still rely on Node.js streams.
|
Yep, I was mainly saying I am more interested in working toward that future api since this is not going to ship to the majority of it's consumers for at least a year. And then because we will be supporting express v6 for something like 1-2 years (TBD) after that it will be much better if we can skip a step. If this work had been done when this issue was opened originally I would have a completely opposite opinion, but I think at this point short term thinking is low value. TLDR: we have to land a breaking change no matter what, why not choose the better of the two options? |
I kind of concur with the assessment. |
Currently
send
does not implement the Streams API (even if it inherits fromStream
), and in fact insidesend(..).pipe(res)
, it doesstream.pipe(res)
.Specifically, we had to use an "hack" to make it work well on Fastify. See fastify/fastify-static#46, where we had to pipe it through a modified
PassThrough
.I'm thinking of changing the API to something:
As well as:
I would like to also remove the dependency on
on-finished
and some of the others modules that were needed in the 0.8/0.10 days.I think this work should help as well with http2 compatibility as well. I'm happy to prototype this work in a forked module as well, just let me know.
cc @apapirovski
The text was updated successfully, but these errors were encountered: