You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I haven't maintained this module in a while*, and PRs are piling up.
If anybody is interested in helping out, I'm happy to give commit bits + npm package access.
To get access, please try to write 1-2 sentences that give me a reasonable hope you're not looking to put malicious code into the package and also mention your npm account name.
* For those curious about the "why?", I'm working with Go these days haven't been using node.js for over 3 years now.
Reacted by Mike Atlas, Mark Stosberg, Pranav, 田宏宇, Sven Lito, Amir Irani, Schuyler Ankele, Christopher Connolly, xargsyan, netop://ウィビ and 7 more
I also can help when have time. I have Koajs package koa-better-body that uses formidable. It's about 3 years old and many users use it, and using it exactly because formidable.
I'm happy to help as well. I have decent experience in creating and maintaining libraries, as well as packaging and releasing. @pornel, maybe you want someone to spar with?
@badeball added you only on gh since you didn't provide your npm handle.
@ all: Thank you so much for offering your help. I'll leave it up to you if you just want to merge good PRs, or add new features. A lot of people depend on this library, so big API changes are probably undesirable at this point. Anyway, I'll mostly stay out of it, unless you need my help to break a tie on a discussion or similar.
We should add some more benchmarks against the other parsers like dicer and busboy, because I'm curious if formidable is still faster.
I would expect newer libraries to be faster. I mean I wrote most of the parser 6 years ago, and a lot of things have changed in Node/v8 since then. There was also a lot of time to just improve on my initial ideas :).
Anyway, it would be interesting to see where things are at, but I'd be surprised if formidable wasn't "fast enough" anymore. If it can still process data faster than what your network interface on your server is rated for ... the code is probably fast enough :)
Very important things should be done first. Sadly I don't have the time, but veryt hanks for that @felixge added me. I always trying to comment and help in new issues, but sadly I can't commit new things and fixes. I partially believe that this project deserve to be rewritten to be more accurate.
@blueelvis It woul dbe great if you can help with the issues and the commented on #414 and #415, because I'm very tired about the whole community and I'm in pause (for relax) currently and I'm not doing anything last few weeks or so (just rage quit).
@MaxFichtelmann what's v1.2.3? Just that package.json change? Well, yea possibly when i published 1.2.2 i forgot to bump to version in package.json or what? hm.
I'm a maintainer on the widely-used 'winston' logger (w-b-t on npm; 2FA required for that b/c it's a top-100 package) and while I can't promise any active maintenance here, I might be able to chip in on occasion (example here).
@wbt great, it's always better to have more hands and eyes. Can add you this next few days. Many things are commented and have opened issues for tracking.
hello, it's my first time on open source project, I'm curious how parsing multi-part forms work
I started my search by looking for the request interface with contenttype="multi-part/form" and I started getting results
also I tried to read through "src/Formidable.js", I was wondering can I migrate "@types/formidable" inside the project to make my mission easier
any resources to help me understand the parsing process would be appreciated
btw I used formidable myself in a couple of projects
Formidable is a very old project (11 years), and its codebase might be a bit unintuitive. There are parts that sit there because of legacy reasons.
To understand the flow and look on a bit more modern base you can check out formidable-mini that I created to play around a while ago, around the same parser. But the whole thing is significantly more small because there are many things that got into the JS/nodejs core like File and FormData. The even funnier thing is that in Nodejs v19.2+ (and in the future v20 LTS) there will be NO need for any package - just 15 lines of code around native things.
For example:
// example request handler (e.g. express middleware, or serverless)functionhandler(req,res){// getting/"parsing" file uploads and fields in v19.2+constresp=newResponse(req,{headers: req.headers});constform=awaitresp.formData();console.log([...form.entries()]);}
This magic works, because the competitor package busbuy got into Nodejs Core. There was discussion to be formidable or busboy and they picked Busboy because it was bumped to v1 this year and it's probably a bit faster nowadays but that can change soon.
Btw, Formidable's parser is used in node-fetch too. It was copy pasted without any note or attribution anywhere. And I copy pasted the modernized variant into formidable-mini too. I tried some benchmarks there too, and from what I'm seeing, it's on par with the latest busboy that got into the Node Core.
The parser itself... it's tricky but kind of easy to follow and understand (it's the least touched thing over the years), if you are into parsing in general tho, it's not my specialty.. haha. I think to write a new parser from scratch (for learning purposes) one day based on what I learned over the years here.
Soon I'll buy a domain, create a website and write a long article around Formidable its past, present and future - the whole state of multipart parsing ("A letter to the stakeholders", haha). Because as you can see, its state and existence is... For 11 years, it's everywhere, in every 9 of 10 articles for nodejs multipart parsing and file uploads, even in Node's official website guide about file uploads. And it's STILL the most downloaded, 2x more than Busboy in fact - https://twitter.com/3a1fcBx0/status/1535663399291564047.
Reacted by Andrei Lahunou, Black Jack, Daniel Kehlibarov, Tomas Palider (DJTommek), Kilkenni and Nagy Nabil
@tunnckoCore What's the current status of Formidable-mini? I've tried to check it out, but so far it lacks even the TS definitions. GH history shows 404 when I try to go to its repo from the old monorepo - I assume the origin of this merge is your private repo. I threw up some smol TS def to calm down the TS language server, and I probably can share it if you wish.
Btw, the site listed in your bio seems to be dead.
Writing here because I'm really not sure where should I write.
Activity
felixge commentedon Jan 11, 2017
@pornel sounds good. What's your NPM account? I'll give you access :). Thanks!
kornelski commentedon Jan 11, 2017
I'm kornel on npm
ChALkeR commentedon Jan 11, 2017
You can use https://github.com/pickhardt/maintainers-wanted badge, btw.
felixge commentedon Jan 13, 2017
@pornel thanks, added you on GH and NPM :).
@ChALkeR done.
tunnckoCore commentedon Jan 13, 2017
I also can help when have time. I have Koajs package koa-better-body that uses formidable. It's about 3 years old and many users use it, and using it exactly because
formidable.I'm all-lowercased
tunnckocoreat npm.badeball commentedon Jan 13, 2017
Hi, @felixge
I'm happy to help as well. I have decent experience in creating and maintaining libraries, as well as packaging and releasing. @pornel, maybe you want someone to spar with?
kornelski commentedon Jan 13, 2017
Sure, the more the merrier.
felixge commentedon Jan 14, 2017
@tunnckoCore added you on gh and npm.
@badeball added you only on gh since you didn't provide your npm handle.
@ all: Thank you so much for offering your help. I'll leave it up to you if you just want to merge good PRs, or add new features. A lot of people depend on this library, so big API changes are probably undesirable at this point. Anyway, I'll mostly stay out of it, unless you need my help to break a tie on a discussion or similar.
tunnckoCore commentedon Jan 14, 2017
@felixge cool, thanks!
Maybe yea. First we should try to clear the most issues.
We should add some more benchmarks against the other parsers like
dicerandbusboy, because I'm curious ifformidableis still faster.felixge commentedon Jan 16, 2017
I would expect newer libraries to be faster. I mean I wrote most of the parser 6 years ago, and a lot of things have changed in Node/v8 since then. There was also a lot of time to just improve on my initial ideas :).
Anyway, it would be interesting to see where things are at, but I'd be surprised if formidable wasn't "fast enough" anymore. If it can still process data faster than what your network interface on your server is rated for ... the code is probably fast enough :)
tunnckoCore commentedon Jan 16, 2017
Yea exactly. In any way it is always good to have some comparison to know where we are. :)
Merge pending pull requests
blueelvis commentedon Apr 20, 2017
@tunnckoCore - I would also like to help with this project :)
tunnckoCore commentedon Apr 20, 2017
Very important things should be done first. Sadly I don't have the time, but veryt hanks for that @felixge added me. I always trying to comment and help in new issues, but sadly I can't commit new things and fixes. I partially believe that this project deserve to be rewritten to be more accurate.
@blueelvis It woul dbe great if you can help with the issues and the commented on #414 and #415, because I'm very tired about the whole community and I'm in pause (for relax) currently and I'm not doing anything last few weeks or so (just rage quit).
richard457 commentedon Jul 7, 2017
I am Interested As I need this module so much in my file Storage System and I am using it now on it streamupbox, and is my NPM name too. thank you.
32 remaining items
GrosSacASac commentedon Apr 29, 2021
If someone has npm access, please help resolve #718 (comment)
MaxFichtelmann commentedon Apr 29, 2021
npm is also needed to publish v1.2.3 (7e07387)
tunnckoCore commentedon Oct 2, 2021
@MaxFichtelmann what's
v1.2.3? Just that package.json change? Well, yea possibly when i published 1.2.2 i forgot to bump to version in package.json or what? hm.GrosSacASac commentedon Oct 3, 2021
If I am correct 1.2.3 has a fix (2021) on top of 1.2.2 but was not published to npm
tunnckoCore commentedon Oct 4, 2021
Hm. Okay clear. I'll try.
MaxFichtelmann commentedon Oct 4, 2021
the change was a fix for #433
some minor changes were needed to make the tests/travis work again/current node versions
details: v1.2.1...v1.2.3
tunnckoCore commentedon Oct 12, 2021
Ah, right. Thanks @MaxFichtelmann
GrosSacASac commentedon Jan 16, 2022
I don't even know how to test if form.pause() and resume work. We have 2 issues around this, and don't know where to start.
wbt commentedon Apr 12, 2022
I'm a maintainer on the widely-used 'winston' logger (w-b-t on npm; 2FA required for that b/c it's a top-100 package) and while I can't promise any active maintenance here, I might be able to chip in on occasion (example here).
tunnckoCore commentedon Apr 29, 2022
@wbt great, it's always better to have more hands and eyes. Can add you this next few days. Many things are commented and have opened issues for tracking.
nagy-nabil commentedon Dec 28, 2022
hello, it's my first time on open source project, I'm curious how parsing multi-part forms work
I started my search by looking for the request interface with contenttype="multi-part/form" and I started getting results
also I tried to read through "src/Formidable.js", I was wondering can I migrate "@types/formidable" inside the project to make my mission easier
any resources to help me understand the parsing process would be appreciated
btw I used formidable myself in a couple of projects
tunnckoCore commentedon Dec 30, 2022
@nagy-nabil welcome to open source! 👋
Formidable is a very old project (11 years), and its codebase might be a bit unintuitive. There are parts that sit there because of legacy reasons.
To understand the flow and look on a bit more modern base you can check out formidable-mini that I created to play around a while ago, around the same parser. But the whole thing is significantly more small because there are many things that got into the JS/nodejs core like File and FormData. The even funnier thing is that in Nodejs v19.2+ (and in the future v20 LTS) there will be NO need for any package - just 15 lines of code around native things.
For example:
This magic works, because the competitor package
busbuygot into Nodejs Core. There was discussion to beformidableorbusboyand they picked Busboy because it was bumped to v1 this year and it's probably a bit faster nowadays but that can change soon.Btw, Formidable's parser is used in
node-fetchtoo. It was copy pasted without any note or attribution anywhere. And I copy pasted the modernized variant intoformidable-minitoo. I tried some benchmarks there too, and from what I'm seeing, it's on par with the latestbusboythat got into the Node Core.The parser itself... it's tricky but kind of easy to follow and understand (it's the least touched thing over the years), if you are into parsing in general tho, it's not my specialty.. haha. I think to write a new parser from scratch (for learning purposes) one day based on what I learned over the years here.
Soon I'll buy a domain, create a website and write a long article around Formidable its past, present and future - the whole state of multipart parsing ("A letter to the stakeholders", haha). Because as you can see, its state and existence is... For 11 years, it's everywhere, in every 9 of 10 articles for nodejs multipart parsing and file uploads, even in Node's official website guide about file uploads. And it's STILL the most downloaded, 2x more than Busboy in fact - https://twitter.com/3a1fcBx0/status/1535663399291564047.
Kilkenni commentedon Aug 31, 2026
@tunnckoCore What's the current status of Formidable-mini? I've tried to check it out, but so far it lacks even the TS definitions. GH history shows 404 when I try to go to its repo from the old monorepo - I assume the origin of this merge is your private repo. I threw up some smol TS def to calm down the TS language server, and I probably can share it if you wish.
Btw, the site listed in your bio seems to be dead.
Writing here because I'm really not sure where should I write.