map objectKeys with given keyMap
npm install tailored-keymapping --save import TailoredKeymapping from 'tailored-keymapping' // define keymap const keymap = { 'test': { 'oldKey': 'newKey' , 'foo': 'bar' , 'abc': 'xyz' /**  * custom mapping function  * called after mapping loop  * @param {object} data - mapped data object  * @return {any} newValue - new value of the keyName  * @return {array} [newKey,newValue] - new key/value pair  */ , 'keyName': function(data) { return ['newKey', newValue] // return newValue; // to use original keyname ('keyName') } } } // create instance const keyMapping = new TailoredKeymapping(keymap) // overwrite keymap after initialisation if needed keyMapping.setKeymap(otherKeymap) // process data with given options let mappedData = keyMapping.map(dataToMap, { 'keymapTree': 'test' // || ['sub', 'subsub'] , 'onlyMappedVars': true /**  * callback function  * mutate data after mapping  * @param {object} dataMapped - mapped data object (after custom functions)  * @param {object} dataOriginal - mapped data object (after custom functions)  * @return {object} newData - mutated data object  */ , callback: function(data) { data.dynamicVar = data.foo + data.abc; return data; } ) // you can also rely on default options and just pass a callback function mappedData = keyMapping.map(payload, (data)=>newData){ onlyMappedVars: false // drop old keys? , keymapTree: '' // keymaps subtree to use , callback: null // mutate data after mapping }import KeyMapping from 'tailored-keymapping' // create instance with keyMap const keyMapping = new KeyMapping({foo: 'bar'}) // basic flat keymap let dataMapped = keyMapping.map({foo: 'foo_content'}) console.log(dataMapped) // => {bar: 'foo_content', foo: 'foo_content'} // basic deep keymap keyMapping.setKeymap({sub: {subsub: {foo: 'bar'}}}) dataMapped = keyMapping.map( {foo: 'foo_content'} , { keymapTree: ['sub', 'subsub'] , onlyMappedVars: true } ) console.log(dataMapped) // => {bar: 'foo_content'} // custom functions keyMapping.setKeymap({ 'newKey': (data) => data.foo+'-'+data.bar }) dataMapped = keyMapping.map( {foo: 'foo', bar: 'bar'} // data2map , {onlyMappedVars: true} // options or callback ) console.log(datMapped) // => {newKey: 'foo-bar'}for more examples have a look at the mocha tests
- 0.2.0 - finish basic tests
 - 0.1.6 - remove lodash dependecy (?)
 - 0.1.45 - added travis build hook
 - 0.1.44 - fixxed bug (mappedKey > originalKey)
 - 0.1.41 - added callback tests
 - 0.1.4 - added tests
 - 0.1.2 - dist folder is new entrypoint
 
- assert.throws doesn't fail on wrong Error msg (@tests: 'select wrong subtree')
 - keymap handling in constructor !?
 
if you find a bug, please report them @Issues