function walk (node, cbProp, cbObj) {
switch (node.type) {
case 'Array':
node.children.forEach((item) => {
walk(item, cbProp, cbObj);
});
break;
case 'Object':
cbObj(node);
node.children.forEach((property) => {
cbProp(property);
walk(property.value, cbProp, cbObj);
});
break;
}
}