formidable icon indicating copy to clipboard operation
formidable copied to clipboard

Make multipart parser less dependent on NodeJS

Open jimmywarting opened this issue 1 year ago • 2 comments

I would like to use the parser in basically all env. Node, deno, bun, even browser. however it's so dependent upon NodeJS stuff.

I would like to make a feature request to make it less dependent on NodeJS. meaning: remove node:buffer and node:stream

Buffer could be replaced with Uint8Array and the transformer could be replaced with something that's is iterable

There is no reason why the parser couldn't or should not work with both a node:stream or a web stream coming from a ReadableStream. they are both iterable. and both yields uint8array.

so instead of feeding/piping in data into the parser then i would suggest that it takes a iterable and read the stream.

new MultipartParser(boundary, body)

and the parser would then do something like

for await (const uint8_chunk of body) {
  ...
}

jimmywarting avatar Oct 21 '23 20:10 jimmywarting

Hey @jimmywarting! Yeah, i had that version somewhere, it's just the parser, which exposes a function. It's practically the same as your fork.

At one point i thought to make scoped packages. I even think i have mini-formidable or something like that.

The reason i not done much in the past year is that they merged Busboy into the Node core and this kinda killed my enthusiasm. But i regularly see that people are still massively using formidable with 9m+ downloads per week so..

tunnckoCore avatar Mar 10 '24 20:03 tunnckoCore

@jimmywarting here it is https://www.npmjs.com/package/formidable-mini a thin compat layer for Formidable.

Also just the parser https://www.npmjs.com/package/formidable-parser

tunnckoCore avatar Mar 10 '24 21:03 tunnckoCore