1// SPDX-FileCopyrightText: 2025 The Project Pterodactyl Developers 2// 3// SPDX-License-Identifier: MPL-2.0 4 5import Foundation 6import TSCBasic 7import llbuild2fx 8 9extension Keys { 10 struct TransitiveDependencies: BuildKey { 11 struct ValueType: Codable, FXValue { 12 var dependencies: Set<UnitName> 13 } 14 15 let sourceTreeId: LLBDataID 16 let unitName: UnitName 17 18 static let versionDependencies: [any FXVersioning.Type] = [Keys.DependencyGraphOfSourceTree.self] 19 20 func computeValue(_ ctx: BuildContext<Self>) async throws -> ValueType { 21 let graph = try await ctx.request(Keys.DependencyGraphOfSourceTree(sourceTreeId: sourceTreeId)) 22 return ValueType(dependencies: graph.verticesReachableFrom(unitName)) 23 } 24 } 25}