camelcase-keys-safe
Version:
Safely convert object keys to camelCase recursively with circular reference protection, deep traversal, and robust error handling.
61 lines (48 loc) • 1.91 kB
Markdown
# camelcase-keys-safe
Safely convert object keys to camelCase recursively with circular reference protection, deep traversal, and robust error handling.
### Simple usage:
``` JavaScript
import camelCaseSafe from 'camelcase-keys-safe';
var camelGotHumps = camelCaseSafe({'test-1':123, 'test-2':{'test-3:':{'test-four':132}}});
//{ test1: 123, test2: { 'test3:': { testFour: 132 } } }
console.log(camelGotHumps);
```
### Works with Arrays too:
``` JavaScript
var anotherCamelWithTheHump = camelCaseSafe({
'test-1': 123,
'test-Two': [{
'test-three': {
'test-FOUR': [{'test-five':[{testSix:{'test-seven':8}}]}]
}
}]
});
//{"test1":123,"testTwo":[{"testThree":{"testFOUR":[{"testFive":[{"testSix":{"testSeven":8}}]}]}}]}
console.log(JSON.stringify(anotherCamelWithTheHump));
```
### Handles Circular References Safely:
``` JavaScript
// Create an object with circular reference
const obj = { 'user-name': 'John', 'user-data': {} };
obj['user-data'].parent = obj; // Circular reference!
// This would cause infinite loops with regular recursive functions
// But camelCaseSafe handles it gracefully
const safeResult = camelCaseSafe(obj);
console.log(safeResult);
// { userName: 'John', userData: { parent: [Circular] } }
```
## Features
- ✅ **Circular Reference Protection**: Uses WeakMap caching to prevent infinite loops
- ✅ **Deep Traversal**: Recursively processes nested objects and arrays
- ✅ **Type Safety**: Preserves Date objects and other special types
- ✅ **Array Support**: Handles arrays containing objects
- ✅ **Performance Optimized**: Efficient caching mechanism
- ✅ **Zero Dependencies**: Only depends on `map-obj` for core functionality
## Installation
```bash
npm install camelcase-keys-safe
```
## More information on internal modules
[map-obj](https://www.npmjs.com/package/map-obj) // TODO
## Contributing
Simply make a pr with details on your bug and tests.