https://github.com/workable/objecttransformator
https://github.com/workable/objecttransformator
Last synced: 5 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/workable/objecttransformator
- Owner: Workable
- License: mit
- Created: 2020-02-13T10:46:17.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2024-04-15T15:00:15.000Z (almost 2 years ago)
- Last Synced: 2025-02-20T21:37:07.742Z (about 1 year ago)
- Language: JavaScript
- Size: 1.69 MB
- Stars: 0
- Watchers: 14
- Forks: 1
- Open Issues: 17
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
# objectTransformator
Transforms a javascript object from one shape to another.
`objectTransformator` comes with some preset transformations.
## Installing
Using npm:
```
\$ npm install @workablehr/object-transformator
```
## Basic usage
```javascript
import { underscoredKeys } from "@workablehr/object-transformator";
underscoredKeys({ attrV1: "val1", attrs: { attrV2: "val2" } });
// {attr_v1: 'val1', attrs: {attr_v2: 'val2'}}
```
## Presets
### camelizeKeys
Transforms all the object keys to camel case.
- shallow, if true, it transforms only the first level of the object.
- omit, excludes specific keys from the transformation.
```javascript
import { camelizeKeys } from "@workablehr/object-transformator";
camelizeKeys({ attr_v1: "val1", attrs: { attr_v2: "val2" } });
// { attrV1: "val1", attrs: { attrV2: "val2" } }
```
### underscoredKeys
Transforms all the object keys to underscored case.
- shallow, if true, it transforms only the first level of the object.
- omit, excludes specific keys from the transformation.
```javascript
import { underscoredKeys } from "@workablehr/object-transformator";
underscoredKeys(
{ attrV1: "val1", attrs: { attrV2: "val2" } },
{ shallow: true }
);
// {attr_v1: 'val1', attrs: {attrV2: 'val2'}}
```
## transformator
The pure transformator function.
```javascript
import transformKeys from "@workablehr/object-transformator";
const prefixKeys = (data, prefix, { shallow = false, omit = [] } = {}) =>
transformKeys(data, {
shallow,
func: prefixKeys,
action: (target, key, value) => ({ ...target, [prefix + key]: value }),
omit
});
prefixKeys({ attr1: "val1", attrs: { attr2: "val2" } }, "v1_");
// {{ v1_attr1: "val1", v1_attrs: { v1_attr2: "val2" } }}
```
### compose
Creates a chain of transformators.
```javascript
import transformKeys, {compose} from "@workablehr/object-transformator";
const prefixAction = (target, key, value) => ({ ...target, ['v1_' + key]: value })
const payloadTransformator = data =>
transformKeys(data, {
func: payloadTransformator,
action: compose(
camelizeKey,
prefixAction
)
});
payloadTransformator({...});
```