All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jetbrains.kotlin.gradle.targets.js.npm.NpmApi.kt Maven / Gradle / Ivy

There is a newer version: 2.0.0
Show newest version
/*
 * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
 * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
 */

package org.jetbrains.kotlin.gradle.targets.js.npm

import org.gradle.api.logging.Logger
import org.gradle.internal.service.ServiceRegistry
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsEnv
import org.jetbrains.kotlin.gradle.targets.js.npm.resolved.PreparedKotlinCompilationNpmResolution
import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnEnv
import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnResolution
import java.io.File
import java.io.Serializable

/**
 * NodeJS package manager API
 */
interface NpmApi : Serializable {
    fun preparedFiles(nodeJs: NpmEnvironment): Collection

    fun prepareRootProject(
        nodeJs: NpmEnvironment,
        rootProjectName: String,
        rootProjectVersion: String,
        logger: Logger,
        subProjects: Collection,
        resolutions: Map,
    )

    fun resolveRootProject(
        services: ServiceRegistry,
        logger: Logger,
        nodeJs: NpmEnvironment,
        yarn: YarnEnvironment,
        npmProjects: Collection,
        cliArgs: List
    )

    companion object {
        fun resolveOperationDescription(packageManagerTitle: String): String =
            "Resolving NPM dependencies using $packageManagerTitle"
    }
}

data class NpmEnvironment(
    val rootPackageDir: File,
    val nodeExecutable: String,
    val isWindows: Boolean,
    val packageManager: NpmApi
) : Serializable

internal val NodeJsEnv.asNpmEnvironment
    get() = NpmEnvironment(
        rootPackageDir,
        nodeExecutable,
        isWindows,
        packageManager
    )

data class YarnEnvironment(
    val executable: String,
    val standalone: Boolean,
    val ignoreScripts: Boolean,
    val yarnResolutions: List
) : Serializable

internal val YarnEnv.asYarnEnvironment
    get() = YarnEnvironment(
        executable,
        standalone,
        ignoreScripts,
        yarnResolutions
    )




© 2015 - 2024 Weber Informatics LLC | Privacy Policy