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
v3 Roadmap #668
Comments
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Going through some items:
definitely
probably don't want an API, clone() should probably just create both stream with larger highWaterMark so that isomorphic users don't run into issues that easily
as long as there are people to review and maintain this one.
I would love to, but need to think about potential impact?
I am fine with or without it, make rules more relax at first would be good.
definitely
jimmy can probably help you on that
yes, follow the spec on this
we should probably change to match browsers, but need to review how many error types we will end up with (quite a few, I reckon, in #549); error handling in browsers have always been a headache, and AFAIK Fetch just couldn't address it due to browser legacy and conventions.
With older node dropped this should be easy to do
I am at least a bit skeptical on this: |
@bitinn I can be a backer code reviewer. There are heaps of things in the roadmap that needs doing and I'm up for creating and reviewing PRs to resolve them. TLDR: Please make me a collaborator. 👍 |
@Richienb sure, added! make sure you ask other for review before merging risky changes. Also we should decide on whether we merge changes on |
@bitinn At the moment, I'm creating PRs against 3.x |
@Richienb let's go with |
@bitinn Sure. I've also just created the Discord server which I'll finish setting up within the next hour: https://discord.gg/hh8ZSw7 |
I wasn't planning to tackle these within
I was waiting for node to provide some abstraction layer between HTTP/1 and HTTP/2 so that we can build upon it. Feels like a lot of work and a headache to maintain.
I am quite interested in this, but the ecosystem doesn't seem to be ready, can we easily convert between Node Stream and WebStream nowadays? Can we hide such conversion so that users' code is truly isomorphic? Lots of things to consider. I was planning to allow users to provide a custom "Stream" implementation, much like a custom |
@bitinn How are you envisioning the simple plugin system to work? For WebStreams, wouldn't https://www.npmjs.com/package/node-web-streams cut the cake? |
@bitinn In the Discord server, do we need a feed holding all of the activity in this repository? If so, add a webhook for all events to |
I agree. It's also worth mentioning, that there is a 80$ bounty on this issue
I'm happy to maintain types, so that shouldn't be a problem 😄\
Sure, we can use ESLint wrapper, like xo to get some reasonable defaults and turn off rules we don't like. Let's leave HTTP2 support & WebStream API and wait for them to be fully implemented in Node.js Implementing HTTP/2 would indeed be a hard task (see for example sindresorhus/got#167). |
@Richienb I haven't thought about it too much to be honest, maybe we don't need plugins at all, just allow users to set a |
@Richienb Done 😄 |
@Richienb Tabs are my favorite |
@Richienb I will start working on:
As soon as you add xo 😄 |
@xxczaki It turns out, not using a linter for 4 years may not have been a good choice. XO is spitting out 50 or so errors that can't be automatically fixed and I'm slowly grinding through them, adding ignore rules and fixing the fixable. |
I would suggest to add an automated release process to the list, based on 3 commit message conventions ( I can help with both Greenkeeper & semantic-release setup and if there are any problems that would arise from it in future. I worked on Greenkeeper in the past and I am a maintainer at semantic-release myself. |
Regarding
I would strongly suggest to use a zero-config linter, such as https://standardjs.com/ or https://prettier.io/ (without custom config). Nobody will ever be happy with any linting setup, but at least we can avoid having discussions about what linting rule to add or change, and focus on the code instead. |
I will be happy to help with some of the errors, if you want to 😄 |
I will need to think about that, semantic-release seems really nice (I've actually used it in one of my projects in the past), but I'm not sure about Greenkeeper... Have you ever used Dependabot? It has some additional features and was also recently aquired by Github, so it might be a better option. |
I’ve always used greenkeeper due to my affiliation to it, but in the end they all do the same, so I really don’t mind which we end up using, as long as we have one. As we already have 100% test coverage we will be able to merge dependency updates quickly and with confidence, no matter the service that sends the PRs. |
I've found that While investigating, I found other options that are defined in the
can we add them to the node-only extensions? |
Any plans for |
Now, when the current LTS is 14.x, I believe it's reasonable to drop |
@tinovyatkin 12.x is still under maintenance support for another 16 months (and 10.x is also for another 4 months). I'm afraid that if we drop support for <12.18, we will just end up with a bunch of irritated users with lots of "wontfix" issues. If the intent is just to remove the logic branches, I think the public relations benefit of leaving them is greater than the cost. |
node 10.x is no longer maintained; 12.x users can upgrade to >=12.18 (they do this anyway to get security fixes), they aren't forced to jump to 14.x |
I agree with @mariusa. v2 has been around for a long time and is stable. We can continue to accept bug fixes for v2 for a while. With v3, we should drop support for Node < 12.8 and build node-fetch as native ES Module, without any transpilation to CJS, just make a clear break, similar to what Sindre laid out here: https://blog.sindresorhus.com/get-ready-for-esm-aa53530b3f77 |
I'm back and happy to make a PR to use pure ESM 😄 |
Looks like @Richienb and @jimmywarting are in favor, too Any thoughts @bitinn? |
I am onboard, @xxczaki you can do it. My hope is v3 stable gets out this year :) Also note there are some outstanding PRs, fixing known issues is probably more useful than a rewrite. (but I understand the desire to have a clean break.) |
@node-fetch/core @node-fetch/reviewers and others, I opened a pull request which includes the ESM transition and more. Feedback is appreciated, as merging this will allow for the release of |
the v3 beta have been around for quite a while now, can't make a release happen soon? |
I'm sorry I didn't have the time to review @xxczaki pull request for the ESM transition yet. I do have it on top of my work todo list though, I'll very likely get to it this coming week. |
Good news! WHATWG streams have landed in NodeJS (as experimental) Think we should start using it whenever possible, might be worth looking into adding whatwg stream polyfill now! Wow, githubs new markdown to display the full title of other issues/pr really made a mess |
ESM has landed! 🚀 This issue have become quite long to scan through. Going from One thing that worries me now is that ppl that are already using 3.0.0-beta.9 with |
breaking changes are ok for pre-releases such as |
Good to know. Should we publish the next beta version now then? After that I say we hold off for a while with any new features/PR and only fix bugs that might arise. (unless someone else really need/want something else to be fixed before we ship v3) |
beta.10 release! Entering idle/maintenance mode for 2-4 week 🙂 |
It looks like the size increased quite a bit Seems like most of that is from web-streams-polyfill. |
b/c NodeJS added native support for so: fetch-blob was the first to adapt web-streams-polyfill NodeJS is also going to ship fetch in core one day. and we wish to be the polyfill that references nodejs implementation so it can be backward compatible until everyone starts using nodes (upcoming) built in fetch impl that means we should also be using whatwg stream for compatibility reasons. #1217 tracks the size issue, and @MattiasBuelens is working on reducing the size here: MattiasBuelens/web-streams-polyfill#83
short answer: yes |
Note: v3 beta is now available on npm under the
next
tagv3 Roadmap
General stuff
@types/node-fetch
package) (feat: Migrated types #669)encoding
withfetch-charset-detection
. #694))Content-Encoding
to lowercase (When server's Content-Encoding: GZip, response won't decompress #661, PR open: fix: Convert Content-Encoding to lowercase #672)url.parse
andurl.resolve
with calls tonew URL
to use the new UTF-8 awareness and remove theutf8
package.url.parse
(refactor: Replaceurl.parse
withnew URL()
#701)url.resolve
(e3cd4d2)content-type
values (doesn't correctly handle multiplecontent-type
values #783)Additional:
WebStream API support (WebStream API support #387)- needs more discussion and standard.Support trailers (Support trailers #330)- trailer support has been removed (Consider removing trailers API whatwg/fetch#772).Caching (Offer caching #68)- would likely require opinionated implementation.Cookies (cookie jar #94)- would likely require opinionated implementation.Other
Create a final v2 release before releasing v3cc @bitinn @jimmywarting @TimothyGu @jkantr @gr2m @Richienb
The text was updated successfully, but these errors were encountered: