Files

52 lines
1.5 KiB
TypeScript

import { SortingNodeWithDependencies } from './sort-nodes-by-dependencies.js'
/**
* Checks if one node has a dependency on another node.
*
* Determines whether sortingNode1 depends on sortingNode2 by checking if any of
* sortingNode1's dependency names match any of sortingNode2's dependencies.
* This is used in dependency-aware sorting to ensure that dependent nodes are
* placed after their dependencies.
*
* Returns false for self-dependency (when both nodes are the same) to prevent
* circular dependency issues.
*
* @example
*
* ```ts
* const nodeA = {
* name: 'userService',
* dependencies: ['userService'],
* dependencyNames: ['logger', 'database'],
* }
*
* const nodeB = {
* name: 'logger',
* dependencies: ['logger'],
* dependencyNames: [],
* }
*
* isNodeDependentOnOtherNode(nodeA, nodeB)
* // Returns: true (userService depends on logger)
*
* isNodeDependentOnOtherNode(nodeB, nodeA)
* // Returns: false (logger doesn't depend on userService)
*
* isNodeDependentOnOtherNode(nodeA, nodeA)
* // Returns: false (self-dependency check)
* ```
*
* @param sortingNode1 - The node to check for dependencies.
* @param sortingNode2 - The potential dependency node.
* @returns True if sortingNode1 depends on sortingNode2, false otherwise.
*/
export declare function isNodeDependentOnOtherNode(
sortingNode1: Pick<
SortingNodeWithDependencies,
'dependencyNames' | 'dependencies'
>,
sortingNode2: Pick<
SortingNodeWithDependencies,
'dependencyNames' | 'dependencies'
>,
): boolean