From 7332290ece07a13c74eb581c40c50f2e533b9f65 Mon Sep 17 00:00:00 2001 From: Sergey Rostov Date: Sun, 7 Jul 2019 22:22:57 +0300 Subject: [PATCH] Gradle, js, NpmDependency: getDependenciesRecursively --- .../gradle/targets/js/npm/NpmDependency.kt | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmDependency.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmDependency.kt index 1520fc132cd..b1398d23168 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmDependency.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmDependency.kt @@ -44,7 +44,23 @@ data class NpmDependency( internal var resolvedVersion: String? = null internal var integrity: String? = null - override fun resolve(transitive: Boolean): MutableSet { + fun getDependenciesRecursively(): Set { + val visited = mutableSetOf() + + fun visit(it: NpmDependency) { + if (!visited.add(it)) return + + it.dependencies.forEach { child -> + visit(child) + } + } + + visit(this) + + return visited + } + + override fun resolve(transitive: Boolean): Set { val npmPackage = resolveProject() ?: return mutableSetOf() val npmProject = npmPackage.npmProject