const TOPIC = "topic" const CATEGORY = "category" const typeName = levels => (levels >= 3 ? TOPIC : CATEGORY) const createNode = ({ perLevel, levels, remainingLevels }) => { if (remainingLevels === 0) return { type: TOPIC, children: [] } return { type: typeName(levels - remainingLevels), children: new Array(perLevel).fill(createNode({ perLevel, levels, remainingLevels: remainingLevels - 1 })), } } const createHierarchy = ({ perLevel, levels }) => { return new Array(perLevel).fill(createNode({ perLevel, levels, remainingLevels: levels - 1 })) } module.exports = { createHierarchy }