import { Edge, Tree, TreeNode } from './' interface HasLength { length: number } export abstract class TreeNodeFactory { public static fromEdgesAndValue(edgeNames: string[], value?: T): TreeNode { let currentNode: TreeNode = new Tree() for (const edgeName of edgeNames) { const edge = new Edge(edgeName) const newNode = new TreeNode(edge) edge.target = newNode currentNode.addEdge(edge) currentNode = newNode } currentNode.setMessage({ value, length: value ? value.length : 0, received: new Date(), }) return currentNode } }