litenode
Version:
Lightweight and modular web framework
23 lines (19 loc) • 739 B
JavaScript
import { RouteNode } from "../RouteNode.js"
export function mergeNodes(currentNode, nodeToMerge, middlewares = []) {
for (const [method, handlers] of Object.entries(nodeToMerge.handler)) {
currentNode.handler[method] = [...middlewares, ...handlers]
}
for (const [pathSegment, subNode] of Object.entries(nodeToMerge.children)) {
if (!currentNode.children[pathSegment]) {
currentNode.children[pathSegment] = new RouteNode()
}
mergeNodes(currentNode.children[pathSegment], subNode, middlewares)
}
if (nodeToMerge.param) {
if (!currentNode.param) {
currentNode.param = new RouteNode()
currentNode.param.paramName = nodeToMerge.param.paramName
}
mergeNodes(currentNode.param, nodeToMerge.param, middlewares)
}
}