import { createLogger, type IMyLogger } from '@idlebox/logger'; import { AbstractBaseGraph, AbstractBaseNode, AbstractGraphBuilder } from './base-graph.js'; export class SimpleNode extends AbstractBaseNode { protected override _dependencies: Set; constructor( name: string, dependencies: readonly string[], public readonly attachedData: T, ) { super(name); this._dependencies = new Set(dependencies); } } interface IArrayData { readonly name: string; readonly dependencies: readonly string[]; readonly data: T; } export type { SimpleDependencyGraph }; class SimpleDependencyGraph extends AbstractBaseGraph> { protected override inspectSummary() { return { totalColor: '7', }; } } export class SimpleDependencyBuilder extends AbstractGraphBuilder, SimpleDependencyGraph> { constructor(logger: IMyLogger = createLogger('graph:anonymouse')) { super(logger); } protected override _finalize() { return new SimpleDependencyGraph(this.nodes, this.logger); } static from(nodes: ReadonlyArray>, logger?: IMyLogger) { const g = new SimpleDependencyBuilder(logger); for (const node of nodes) { g.addNode(new SimpleNode(node.name, node.dependencies, node.data)); } return g.finalize(); } }