
Research
Security News
The Growing Risk of Malicious Browser Extensions
Socket researchers uncover how browser extensions in trusted stores are used to hijack sessions, redirect traffic, and manipulate user behavior.
form-auto-content
Advanced tools
Build a form payload without caring if it should be application/x-www-form-urlencoded
or multipart/form-data
.
It works with Fastify
and light-my-request
too!
npm install form-auto-content
This module will transform your JSON to a payload ready to submit to an HTTP server!
The autosense feature will check if there is a stream
or a buffer
as input and it will act accordingly returning a multipart/form-data
stream; otherwise it will create a x-www-form-urlencoded
string.
The module return a JSON like this:
{
payload: Stream, // the data Stream
headers: {} // a JSON with the `content-type` field set
}
x-www-form-urlencoded
const formAutoContent = require('form-auto-content')
const myForm = formAutoContent({
field1: 'value1',
field2: ['value2', 'value2.2'] // array are supported too!!
})
myForm.payload // Stream of the string in application/x-www-form-urlencoded format
myForm.headers // JSON with the `content-type` field set
multipart/form-data
const formAutoContent = require('form-auto-content')
const myForm = formAutoContent({
field1: 'value1',
field2: ['value2', 'value2.2'], // array are supported too!!
myFile: fs.createReadStream('the-file.xml'),
multipleFiles: [fs.createReadStream('file1.xml'), fs.createReadStream('file2.xml')],
wowBuffer: Buffer.from('a long string'),
// the file options are supported too:
myRenamedFile: {
value: fs.createReadStream('./foo.md'),
options: {
filename: 'bar.md',
contentType: 'text/markdown'
}
},
// also in arrays!
renamedArray: [
{
value: fs.createReadStream('./one.json'),
options: { filename: 'foo.json' }
},
{
value: fs.createReadStream('./two.json'),
options: { filename: 'bar.json' }
}
]
})
myForm.payload // Stream in multipart/form-data format
myForm.headers // JSON with the `content-type` field set to multipart/form-data
To customize the output field names, add an extra option object with the payload
and headers
string!
const formAutoContent = require('form-auto-content')
const option = { payload: 'body', headers: 'head' }
const myCustomForm = formAutoContent({
field1: 'value1',
field2: ['value2', 'value2.2'] // array are supported too!!
}, option)
myForm.body // Stream of the string in application/x-www-form-urlencoded format
myForm.head // JSON with the `content-type` field set
This module ships with a handwritten TypeScript declaration file for TS support. The declaration exports a single function.
import formAutoContent from 'form-auto-content';
When an options object is provided, the result types will be accurately inferred:
import formAutoContent from 'form-auto-content';
const option = {
payload: 'body',
headers: 'head',
forceMultiPart: true,
} as const;
const myCustomForm = formAutoContent({
field1: 'value1',
field2: ['value2']
}, option);
myCustomForm.body // ok
myCustomForm.head // ok
myCustomForm.payload // Typescript error: property 'payload' does not exists in type...
Licensed under MIT.
FAQs
Build a form without headache
The npm package form-auto-content receives a total of 8,897 weekly downloads. As such, form-auto-content popularity was classified as popular.
We found that form-auto-content demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover how browser extensions in trusted stores are used to hijack sessions, redirect traffic, and manipulate user behavior.
Research
Security News
An in-depth analysis of credential stealers, crypto drainers, cryptojackers, and clipboard hijackers abusing open source package registries to compromise Web3 development environments.
Security News
pnpm 10.12.1 introduces a global virtual store for faster installs and new options for managing dependencies with version catalogs.