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

apply plugin: 'com.github.node-gradle.node'

node {
    version = "$node_version"
    npmVersion = "$npm_version"
    download = true
    nodeProjectDir = 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.nodeProjectDir
}

npmInstall.dependsOn prepareNodePackage

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