diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt index fb4f3589199..a2d32c80f6f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt @@ -12,12 +12,9 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import org.jetbrains.kotlin.gradle.plugin.TaskHolder import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTarget -import org.jetbrains.kotlin.gradle.plugin.whenEvaluated import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBrowserDsl import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsNodeDsl import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl -import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin -import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinPackageJsonTask import org.jetbrains.kotlin.gradle.targets.js.subtargets.KotlinBrowserJs import org.jetbrains.kotlin.gradle.targets.js.subtargets.KotlinNodeJs import org.jetbrains.kotlin.gradle.testing.internal.KotlinTestReport diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/PackageJsonDukatExecutor.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/PackageJsonDukatExecutor.kt index 4e33546250e..b70d2c406b8 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/PackageJsonDukatExecutor.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/PackageJsonDukatExecutor.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.gradle.targets.js.dukat import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension import org.jetbrains.kotlin.gradle.targets.js.npm.NpmProject -import org.jetbrains.kotlin.gradle.targets.js.npm.resolved.KotlinRootNpmResolution class PackageJsonDukatExecutor( val nodeJs: NodeJsRootExtension, diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/PackageJsonDukatTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/PackageJsonDukatTask.kt index 49097aeea9b..33b4a96873b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/PackageJsonDukatTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/PackageJsonDukatTask.kt @@ -34,11 +34,11 @@ open class PackageJsonDukatTask : AbstractDukatTask() { override val destDir: File get() = compilation.npmProject.externalsDir - private val executer by lazy { + private val executor by lazy { PackageJsonDukatExecutor(nodeJs, dts, compilation.npmProject, true, compareInputs = false) } override fun run() { - executer.execute() + executor.execute() } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/KotlinNpmResolutionManager.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/KotlinNpmResolutionManager.kt index ddbef7c1c8e..d20d6451516 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/KotlinNpmResolutionManager.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/KotlinNpmResolutionManager.kt @@ -13,7 +13,10 @@ import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension import org.jetbrains.kotlin.gradle.targets.js.npm.resolved.KotlinCompilationNpmResolution import org.jetbrains.kotlin.gradle.targets.js.npm.resolved.KotlinProjectNpmResolution import org.jetbrains.kotlin.gradle.targets.js.npm.resolved.KotlinRootNpmResolution +import org.jetbrains.kotlin.gradle.targets.js.npm.resolver.KotlinCompilationNpmResolver +import org.jetbrains.kotlin.gradle.targets.js.npm.resolver.KotlinProjectNpmResolver import org.jetbrains.kotlin.gradle.targets.js.npm.resolver.KotlinRootNpmResolver +import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinPackageJsonTask import java.io.File /** @@ -22,41 +25,40 @@ import java.io.File * ## Resolving process from Gradle * * **configuring**. Global initial state. [NpmResolverPlugin] should be applied for each project - * that requires NPM resolution. This plugin should be applied only after kotlin plugin. - * When applied, [KotlinProjectNpmResolver] will be created for the corresponding project - * and will subscribe to all js compilations. + * that requires NPM resolution. When applied, [KotlinProjectNpmResolver] will be created for the + * corresponding project and will subscribe to all js compilations. [NpmResolverPlugin] requires + * kotlin mulitplatform or plaform plugin applied first. * - * **up-to-date-checked**. This state is compilation local (one compilation may be in up-to-date-checked - * state, while another may be steel in configuring state). New compilations may be added in this - * state, but compilations that are already up-to-date-checked cannot be changes. + * **up-to-date-checked**. This state is compilation local: one compilation may be in up-to-date-checked + * state, while another may be steel in configuring state. New compilations may be added in this + * state, but compilations that are already up-to-date-checked cannot be changed. * Initiated by calling [KotlinPackageJsonTask.producerInputs] getter (will be called by Gradle). * [KotlinCompilationNpmResolver] will create and **resolve** aggregated compilation configuration, - * which consists of all related compilation configuration - * and npm tools configuration which contains all dependencies that is required for all enabled + * which contains all related compilation configuration and NPM tools configuration. + * NPM tools configuration contains all dependencies that is required for all enabled * tasks related to this compilation. It is important to resolve this configuration inside particular * project and not globally. Aggregated configuration will be analyzed for gradle internal dependencies - * (project depenencies), gradle external dependencies and npm dependencies. This collections will + * (project dependencies), gradle external dependencies and npm dependencies. This collections will * be treated as `packageJson` task inputs. * * **package-json-created**. This state also compilation local. Initiated by executing `packageJson` * task for particular compilation. If `packageJson` task is up-to-date, this state is reached by * first calling [KotlinCompilationNpmResolver.getResolutionOrResolveIfForced] which may be called - * by compilation that depends on this compilation. - * - * Note that package.json will be executed only for required compilations, while other may be missed. + * by compilation that depends on this compilation. Note that package.json will be executed only for + * required compilations, while other may be missed. * * **installed**. Global final state. Initiated by executing global `kotlinNpmInstall` task. * All created package.json files will be gathered and package manager will be executed. * Package manager will create lock file, that will be parsed for transitive npm dependencies * that will be added to the root [NpmDependency] objects. `kotlinNpmInstall` task may be up-to-date. - * In this case, installed state will be reached by first call of [installIfNeeded] without exeucting + * In this case, installed state will be reached by first call of [installIfNeeded] without executing * package manager. * * Resolution will be used from [NpmDependency] by calling [getNpmDependencyResolvedCompilation]. * Also resolution will be checked before calling [NpmProject.require] and executing any task * that requires npm dependencies or node_modules. * - * Also user can call [requireInstalled] to get resolution info. + * User can call [requireInstalled] to get resolution info. * * ## Resolving process during Idea import * @@ -71,7 +73,7 @@ import java.io.File * * Note that in this case resolution process will be performed outside of task execution. */ -class KotlinNpmResolutionManager(val nodeJsSettings: NodeJsRootExtension) { +class KotlinNpmResolutionManager(private val nodeJsSettings: NodeJsRootExtension) { private val forceFullResolve: Boolean get() = isInIdeaSync @@ -115,7 +117,7 @@ class KotlinNpmResolutionManager(val nodeJsSettings: NodeJsRootExtension) { } val state0 = this.state - val resolution = when (state0) { + return when (state0) { is ResolutionState.Installed -> alreadyResolved(state0.resolved) is ResolutionState.Configuring -> { synchronized(this) { @@ -138,8 +140,6 @@ class KotlinNpmResolutionManager(val nodeJsSettings: NodeJsRootExtension) { } } } - - return resolution } internal fun getNpmDependencyResolvedCompilation(npmDependency: NpmDependency): KotlinCompilationNpmResolution? { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinRootNpmResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinRootNpmResolver.kt index ffde5d50dcf..ebcd81ea991 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinRootNpmResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinRootNpmResolver.kt @@ -100,12 +100,10 @@ internal class KotlinRootNpmResolver internal constructor( upToDateChecks.forEach { it.commit() } - val resolution = KotlinRootNpmResolution(rootProject, projectResolutions) - - return resolution + return KotlinRootNpmResolution(rootProject, projectResolutions) } - fun closePlugins(resolution: KotlinRootNpmResolution) { + internal fun closePlugins(resolution: KotlinRootNpmResolution) { plugins.forEach { it.close(resolution) }