diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/TasksRequirements.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/TasksRequirements.kt index 43fc86cd4f0..b9237ef80ba 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/TasksRequirements.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/TasksRequirements.kt @@ -7,22 +7,32 @@ package org.jetbrains.kotlin.gradle.targets.js.nodejs import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation import org.jetbrains.kotlin.gradle.targets.js.RequiredKotlinJsDependency +import org.jetbrains.kotlin.gradle.targets.js.npm.NpmDependency import org.jetbrains.kotlin.gradle.targets.js.npm.RequiresNpmDependencies class TasksRequirements { - val byTask = mutableMapOf>() - private val byCompilation = mutableMapOf>() + private val _byTask = mutableMapOf>() + private val byCompilation = mutableMapOf>() - fun getTaskRequirements(compilation: KotlinJsCompilation): Collection = - byCompilation[compilation] ?: listOf() + val byTask: Map> + get() = _byTask + + fun getCompilationNpmRequirements(compilation: KotlinJsCompilation): List = + byCompilation[compilation] + ?.asSequence() + ?.flatMap { it.requiredNpmDependencies.asSequence() } + ?.map { it.createDependency(compilation.target.project) } + ?.filterIsInstance() + ?.toList() + ?: listOf() fun addTaskRequirements(task: RequiresNpmDependencies) { val requirements = task.requiredNpmDependencies - byTask[task] = requirements + _byTask[task] = requirements byCompilation - .getOrPut(task.compilation) { mutableListOf() } + .getOrPut(task.compilation) { mutableSetOf() } .add(task) } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt index 27abc24614e..75e77e92045 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt @@ -315,12 +315,7 @@ internal class KotlinCompilationNpmResolver( .filterNotNull() val toolsNpmDependencies = nodeJs.taskRequirements - .getTaskRequirements(compilation) - .flatMap { requirement -> - requirement.requiredNpmDependencies - } - .map { it.createDependency(project) } - .filterIsInstance() + .getCompilationNpmRequirements(compilation) val allNpmDependencies = externalNpmDependencies + toolsNpmDependencies diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/tasks/KotlinPackageJsonTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/tasks/KotlinPackageJsonTask.kt index cbf595dfee3..36b04bc2055 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/tasks/KotlinPackageJsonTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/tasks/KotlinPackageJsonTask.kt @@ -11,7 +11,6 @@ import org.gradle.api.tasks.* import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin -import org.jetbrains.kotlin.gradle.targets.js.npm.NpmDependency import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject import org.jetbrains.kotlin.gradle.targets.js.npm.resolver.KotlinCompilationNpmResolver import org.jetbrains.kotlin.gradle.targets.js.npm.resolver.PACKAGE_JSON_UMBRELLA_TASK_NAME @@ -38,10 +37,7 @@ open class KotlinPackageJsonTask : DefaultTask() { @get:Input internal val toolsNpmDependencies: List get() = nodeJs.taskRequirements - .getTaskRequirements(compilation) - .flatMap { it.requiredNpmDependencies } - .map { it.createDependency(project) } - .filterIsInstance() + .getCompilationNpmRequirements(compilation) .map { it.uniqueRepresentation() } @get:Nested