[Gradle, JS] Use rejected versions
^KT-41054 fixed
This commit is contained in:
+17
-7
@@ -13,23 +13,33 @@ class NpmVersionConstraint(
|
||||
) : DefaultMutableVersionConstraint(version) {
|
||||
override fun rejectAll() {
|
||||
super.rejectAll()
|
||||
reject("0.0.0")
|
||||
reject(NONE_VERSION)
|
||||
}
|
||||
|
||||
fun toSemVer(): String {
|
||||
if (requiredVersion.isEmpty()) {
|
||||
return preferredVersion
|
||||
return buildNpmVersion(
|
||||
includedVersions = listOf(preferredVersion),
|
||||
excludedVersions = rejectedVersions
|
||||
)
|
||||
}
|
||||
|
||||
if (strictVersion.isNotEmpty()) {
|
||||
return strictVersion
|
||||
return buildNpmVersion(
|
||||
includedVersions = listOf(strictVersion),
|
||||
excludedVersions = rejectedVersions
|
||||
)
|
||||
}
|
||||
|
||||
val requiredRange = "^$requiredVersion"
|
||||
return if (SemVer.valid(requiredRange) && SemVer.satisfies(requiredVersion, requiredRange)) {
|
||||
val version = buildNpmVersion(listOf(requiredVersion), rejectedVersions)
|
||||
|
||||
val requiredRange = "^$version"
|
||||
return if (SemVer.valid(requiredRange) && SemVer.satisfies(version, requiredRange)) {
|
||||
requiredRange
|
||||
} else {
|
||||
requiredVersion
|
||||
version
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const val NONE_VERSION = "0.0.0"
|
||||
+1
-1
@@ -12,7 +12,7 @@ import org.antlr.v4.runtime.tree.TerminalNode
|
||||
|
||||
class NpmVersionInvertedVisitor : NodeSemverExpressionBaseVisitor<String>() {
|
||||
override fun visitEmptyRange(ctx: NodeSemverExpressionParser.EmptyRangeContext): String =
|
||||
WILDCARD_VERSION
|
||||
NONE_VERSION
|
||||
|
||||
override fun visitWildcard(ctx: NodeSemverExpressionParser.WildcardContext): String =
|
||||
NONE_VERSION
|
||||
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* 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 com.github.gundy.semver4j.generated.grammar.NodeSemverExpressionLexer
|
||||
import com.github.gundy.semver4j.generated.grammar.NodeSemverExpressionParser
|
||||
import org.antlr.v4.runtime.ANTLRInputStream
|
||||
import org.antlr.v4.runtime.CommonTokenStream
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmVersionInvertedVisitor.Companion.AND
|
||||
|
||||
fun invertNpmVersion(version: String): String {
|
||||
val lexer = NodeSemverExpressionLexer(ANTLRInputStream(version))
|
||||
val tokens = CommonTokenStream(lexer)
|
||||
val parser = NodeSemverExpressionParser(tokens)
|
||||
return NpmVersionInvertedVisitor()
|
||||
.visit(parser.rangeSet())!!
|
||||
}
|
||||
|
||||
fun buildNpmVersion(
|
||||
includedVersions: List<String>,
|
||||
excludedVersions: List<String>
|
||||
): String =
|
||||
includedVersions
|
||||
.joinToString(AND) { it.trimIndent() } +
|
||||
excludedVersions
|
||||
.joinToString(prefix = AND, separator = AND) { invertNpmVersion(it.trimIndent()) }
|
||||
Reference in New Issue
Block a user