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