camelcase-keys
Advanced tools
Comparing version 4.0.0 to 4.1.0
20
index.js
'use strict'; | ||
const mapObj = require('map-obj'); | ||
const camelCase = require('camelcase'); | ||
const QuickLru = require('quick-lru'); | ||
const has = (arr, key) => arr.some(x => typeof x === 'string' ? x === key : x.test(key)); | ||
const cache = new QuickLru({maxSize: 100000}); | ||
module.exports = (input, opts) => { | ||
opts = Object.assign({ | ||
exclude: [], | ||
deep: false | ||
}, opts); | ||
const exclude = opts.exclude; | ||
return mapObj(input, (key, val) => { | ||
key = has(opts.exclude, key) ? key : camelCase(key); | ||
if (!(exclude && has(exclude, key))) { | ||
if (cache.has(key)) { | ||
key = cache.get(key); | ||
} else { | ||
const ret = camelCase(key); | ||
if (key.length < 100) { // Prevent abuse | ||
cache.set(key, ret); | ||
} | ||
key = ret; | ||
} | ||
} | ||
return [key, val]; | ||
}, {deep: opts.deep}); | ||
}; |
{ | ||
"name": "camelcase-keys", | ||
"version": "4.0.0", | ||
"version": "4.1.0", | ||
"description": "Convert object keys to camelCase", | ||
@@ -16,3 +16,4 @@ "license": "MIT", | ||
"scripts": { | ||
"test": "xo && ava" | ||
"test": "xo && ava", | ||
"bench": "matcha bench/bench.js" | ||
}, | ||
@@ -49,12 +50,21 @@ "files": [ | ||
"dependencies": { | ||
"camelcase": "^3.0.0", | ||
"map-obj": "^2.0.0" | ||
"camelcase": "^4.1.0", | ||
"map-obj": "^2.0.0", | ||
"quick-lru": "^1.0.0" | ||
}, | ||
"devDependencies": { | ||
"ava": "*", | ||
"matcha": "^0.7.0", | ||
"xo": "*" | ||
}, | ||
"xo": { | ||
"esnext": true | ||
"overrides": [ | ||
{ | ||
"files": "bench/bench.js", | ||
"rules": { | ||
"import/no-unresolved": "off" | ||
} | ||
} | ||
] | ||
} | ||
} |
4121
26
3
3
+ Addedquick-lru@^1.0.0
+ Addedcamelcase@4.1.0(transitive)
+ Addedquick-lru@1.1.0(transitive)
- Removedcamelcase@3.0.0(transitive)
Updatedcamelcase@^4.1.0