UNPKG

typir

Version:

General purpose type checking library

26 lines 1.74 kB
/****************************************************************************** * Copyright 2025 TypeFox GmbH * This program and the accompanying materials are made available under the * terms of the MIT License, which is available in the project root. ******************************************************************************/ import { TypirServices, TypirSpecifics } from '../typir.js'; import { TypeEdge } from './type-edge.js'; import { TypeGraph } from './type-graph.js'; import { Type } from './type-node.js'; /** * Graph algorithms to do calculations on the type graph. * All algorithms are robust regarding cycles. */ export interface GraphAlgorithms { collectReachableTypes(from: Type, $relations: Array<TypeEdge['$relation']>, filterEdges?: (edgr: TypeEdge) => boolean): Set<Type>; existsEdgePath(from: Type, to: Type, $relations: Array<TypeEdge['$relation']>, filterEdges?: (edgr: TypeEdge) => boolean): boolean; getEdgePath(from: Type, to: Type, $relations: Array<TypeEdge['$relation']>, filterEdges?: (edgr: TypeEdge) => boolean): TypeEdge[]; } export declare class DefaultGraphAlgorithms<Specifics extends TypirSpecifics> implements GraphAlgorithms { protected readonly graph: TypeGraph; constructor(services: TypirServices<Specifics>); collectReachableTypes(from: Type, $relations: Array<TypeEdge['$relation']>, filterEdges?: (edgr: TypeEdge) => boolean): Set<Type>; existsEdgePath(from: Type, to: Type, $relations: Array<TypeEdge['$relation']>, filterEdges?: (edgr: TypeEdge) => boolean): boolean; getEdgePath(from: Type, to: Type, $relations: Array<TypeEdge['$relation']>, filterEdges?: (edgr: TypeEdge) => boolean): TypeEdge[]; } //# sourceMappingURL=graph-algorithms.d.ts.map