Formidable monorepo and v4 perp#997
Conversation
Signed-off-by: tunnckoCore <5038030+tunnckoCore@users.noreply.github.com>
Signed-off-by: tunnckoCore <5038030+tunnckoCore@users.noreply.github.com>
Signed-off-by: tunnckoCore <5038030+tunnckoCore@users.noreply.github.com>
Signed-off-by: tunnckoCore <5038030+tunnckoCore@users.noreply.github.com>
| } | ||
| function quote(value) { | ||
| if (value.includes('"') || value.includes(';') || value.includes(' ')) { | ||
| return `"${value.replace(/"/g, '\\"')}"`; |
Check failure
Code scanning / CodeQL
Incomplete string escaping or encoding
Show autofix suggestion
Hide autofix suggestion
Copilot Autofix
AI about 1 year ago
To fix the issue, the quote function should be updated to escape backslashes in addition to double quotes. This can be achieved by first replacing all backslashes with escaped backslashes (\\), and then escaping double quotes. The order of these replacements is important to avoid double-escaping backslashes introduced during the first replacement.
The updated quote function will:
- Replace all backslashes (
\) with double backslashes (\\). - Replace all double quotes (
") with escaped double quotes (\").
This ensures that both backslashes and double quotes are properly escaped.
| @@ -26,3 +26,3 @@ | ||
| if (value.includes('"') || value.includes(';') || value.includes(' ')) { | ||
| return `"${value.replace(/"/g, '\\"')}"`; | ||
| return `"${value.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"`; | ||
| } |
Signed-off-by: tunnckoCore <5038030+tunnckoCore@users.noreply.github.com>
|
Published v4 RC on What's cool is the |
Signed-off-by: tunnckoCore <5038030+tunnckoCore@users.noreply.github.com>
Signed-off-by: tunnckoCore <5038030+tunnckoCore@users.noreply.github.com>
Signed-off-by: tunnckoCore <5038030+tunnckoCore@users.noreply.github.com>
…e to tsdown, fix exports Signed-off-by: tunnckoCore <5038030+tunnckoCore@users.noreply.github.com>
Signed-off-by: tunnckoCore <5038030+tunnckoCore@users.noreply.github.com>
|
The tests in All tests in general are broken beyond belief. And all tests are basically testing weird stuff with emitters and streams. It's absolute nightmare. Rather prefer to switch the whole thing under the hood with v4 + compat for limit options, and to actually test that. |
Signed-off-by: tunnckoCore <5038030+tunnckoCore@users.noreply.github.com>
Moving to a monorepo and TypeScript.
There will be couple of benefits with that like we can have v1, v2, v3 and others as separate directories and not separate branches. We can make CI builds based on that too.
I played with a lot of variants, so there will be:
packages/v1(or similar), v2, v3,@mjackson/multipart-parserforkWhat i just started realizing is that the HTTP Multipart is pretty bad, and there might be an alternative way to handle all that a lot better, like..
What if on the backend user defines
formidable(req, options)but on his frontend he also get theformidableClient(e.target, options), the client side part will basically get theFileListand send in parallel eachFileto a server endpoint that is handled by theformidable(req)and just does the validation and checking on the server.That way we can accept multiple requests at the same time and validate and stream to a third-party like S3 or the disk. Usually what happens is, no matter how many files and fields there are, on the server end we (any body parser) get just one stream that we gotta process "synchronously", there's no other way - but that's the nature of streams.
eg. in frontend
and then, on the endpoint backend, you just get the requests, validate it and send it wherever you want (disk or S3).