/*
 * Copyright 2016-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
 */

apply plugin: 'com.moowork.node'

node {
    version = "$node_version"
    npmVersion = "$npm_version"
    download = true
    nodeModulesDir = file(buildDir)
}

// Configures testing for JS modules

task prepareNodePackage(type: Copy) {
    from("npm") {
        include 'package.json'
        // Postpone expansion of package.json until we configure version property in build.gradle
        def copySpec = it
        afterEvaluate {
            copySpec.expand(project.properties + [kotlinDependency: ""])
        }
    }
    from("npm") {
        exclude 'package.json'
    }
    into "$node.nodeModulesDir"
}

npmInstall.dependsOn prepareNodePackage

// Workaround the problem with Node downloading
repositories.whenObjectAdded {
    if (it instanceof IvyArtifactRepository) {
        metadataSources {
            artifact()
        }
    }
}
