A simple library inspired by change-case and its keys functions,
designed to change the casing of object keys. It is useful, for example,
for converting objects from the REST standard to JavaScript best practices,
and vice versa.
npm i change-every-case
You can use this library to change object keys:
import { dotKeys } from 'change-every-case';
const result = dotKeys({ hello_world: 'Lorem Ipsum' });
// { 'hello.world': 'Lorem Ipsum }
//---------^You can also work with nested objects containing arrays and other values:
import { camelKeys } from 'change-every-case';
const input = {
lorem_ipsum: 'lorem_ipsum',
hello_planets: [
{
planet_earth: 'Hello World',
planet_mars: 'Hello Mars',
}
],
value: 3,
};
const result = camelKeys(input);
// {
// loremIpsum: 'lorem_ipsum',
// helloPlanets: [
// {
// planetEarth: 'Hello World ',
// planetMars: 'Hello Mars',
// }
// ],
// value: 3,
// };You can also pass arrays:
import { camelKeys } from 'change-every-case';
const inputArray = [
{ 'hello-world': 3 },
{ 'foo-bar': 3 }
];
const result = camelKeys(inputArray);
// [
// { helloWorld: 3 },
// { fooBar: 3 }
// ];This library provides a handfull of ...Keys formatters:
| Funtion | Key example |
|---|---|
| noKeys | hello world |
| camelKeys | helloWorld |
| pascalKeys | HelloWorld |
| pascalSnakeKeys | Hello_World |
| capitalKeys | Hello World |
| constantKeys | HELLO_WORLD |
| dotKeys | hello.world |
| kebabKeys | hello-world |
| pathKeys | hello/world |
| sentenceKeys | Hello world |
| snakeKeys | hello_world |
| trainKeys | Hello-World |
Additonaly, change-every-case re-exports all of the ...Case functions
from change-case, so it can be treated as drop-in replacement.
The change-every-case functions are similar to those from change-case,
but they accept any type of input as the first parameter.
The options parameters accepts all the options supported by
change-case with addition of maxDeep.
maxDeep? number– sets maximum deep of recursion. Defaults to 1000.
- The function will throw an error when the passed object or array will have more levels that the mmaximal configured deepness.
- If you would pass string or number it will be returned as is.
- Date objects are not changed.
MIT of course :)