object-form-encoder
v0.0.6
Published
Utility to normalize and convert objects into FormData
Downloads
19
Maintainers
Readme
Object Form Encoder
This package provides a simple way to convert any object to a FormData instance to send it to remote server.
Features
- Convert any object to FormData instance
- Converts complex objects to JSON strings
- Normalizes Dates to ISO strings
- Assigns arrays with
key[]
syntax
Installation
- Add
object-form-encoder
dependency to your project
# Using pnpm
pnpm add -D object-form-encoder
# Using yarn
yarn add --dev object-form-encoder
# Using npm
npm install --save-dev object-form-encoder
That's it! You can now use this package in your app ✨
Usage
Let's imagine that you have this object in your application code:
const payload = {
name: 'John',
roles: ['user', 'admin'],
is_active: true,
has_children: false,
age: 30,
address: {
street: 'Street name',
city: 'City name',
},
created_at: new Date('2020-01-01'),
avatar: new File(['foo'], 'foo.txt'), // e.g. from <input type="file" />
uploads: new FileList([...]), // e.g. from <input type="file" multiple />
};
And you need to send it to the server as multipart/form-data
request. You can do it with this package:
import { objectToFormData } from 'object-form-encoder';
const formData = objectToFormData(payload);
Now you are free to send this formData
to the remote API.
Normalization
Since some types should be normalized before appending to the FormData
instance, this package contains a list of normalizers for such types:
FileList
- appends each file to the same key withkey[]
syntaxArray
- appends each item to the same key withkey[]
syntaxFile
- appends as isDate
- normalizes to ISO stringBoolean
- converts to1
or0
stringObject
- converts to JSON stringScalar
- appends as is (any type that is notobject
)
Each normalizer applies only once and the order of normalizers is the same as in the list above.
Development
# Install dependencies
yarn install
# Build package
yarn build
# Run Prettier
yarn fmt
# Run ESLint
yarn lint
# Run Vitest
yarn test
# Release new version
yarn release