Similar to keymirror but supports nested objects, built with TypeScript.
$ npm i key-path-mirror
# or
$ yarn add key-path-mirror
import { keyPathMirror } from 'key-path-mirror'
keyPathMirror(obj: object, prefix?: string)
const nestedObject = {
a: 123,
b: {
c: 'hello',
d: {
e: 'world'
}
},
f: {
g: {
h: {
i: () => { console.log('hello world') }
},
j: 123
},
k: undefined
},
l: new Date()
}
const expectedKeyPathMirroredObject = {
a: 'a',
b: {
c: 'b.c',
d: {
e: 'b.d.e'
}
},
f: {
g: {
h: {
i: 'f.g.h.i'
},
j: 'f.g.j'
},
k: 'f.k'
},
l: 'l'
}
console.assert(
JSON.stringify(keyPathMirror(nestedObject)) ===
JSON.stringify(expectedKeyPathMirroredObject)
) // no errors :)
const prefix = 'foobar:'
const nestedObject = {
a: 123,
b: {
c: 'hello',
d: {
e: null
}
}
}
const expectedPrefixedKeyPathMirroredObject = {
a: 'foobar:a',
b: {
c: 'foobar:b.c',
d: {
e: 'foobar:b.d.e'
}
}
}
console.assert(
JSON.stringify(keyPathMirror(nestedObject, prefix)) ===
JSON.stringify(expectedPrefixedKeyPathMirroredObject)
) // no errors :)