assertthat
Version:
assertthat provides fluent TDD.
38 lines (31 loc) • 742 B
text/typescript
import { Ancestors } from './Ancestors';
import { dispel } from './dispel';
import { Recursion, recursion } from '../types/Recursion';
const dispelObject = function (
value: object,
path = '/',
ancestors: Ancestors = []
): object | Recursion {
for (const ancestor of ancestors) {
if (value === ancestor.reference) {
return recursion({
recursionPath: ancestor.path
});
}
}
const newAncestors = [
...ancestors,
{
reference: value,
path
}
];
const dispelledObject: any = {};
for (const [ key, subValue ] of Object.entries(value)) {
dispelledObject[key] = dispel(subValue, `${path}${key}/`, newAncestors);
}
return dispelledObject;
};
export {
dispelObject
};