[Gradle, JS] Use rejected versions
^KT-41054 fixed
This commit is contained in:
+16
-6
@@ -13,23 +13,33 @@ class NpmVersionConstraint(
|
|||||||
) : DefaultMutableVersionConstraint(version) {
|
) : DefaultMutableVersionConstraint(version) {
|
||||||
override fun rejectAll() {
|
override fun rejectAll() {
|
||||||
super.rejectAll()
|
super.rejectAll()
|
||||||
reject("0.0.0")
|
reject(NONE_VERSION)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun toSemVer(): String {
|
fun toSemVer(): String {
|
||||||
if (requiredVersion.isEmpty()) {
|
if (requiredVersion.isEmpty()) {
|
||||||
return preferredVersion
|
return buildNpmVersion(
|
||||||
|
includedVersions = listOf(preferredVersion),
|
||||||
|
excludedVersions = rejectedVersions
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strictVersion.isNotEmpty()) {
|
if (strictVersion.isNotEmpty()) {
|
||||||
return strictVersion
|
return buildNpmVersion(
|
||||||
|
includedVersions = listOf(strictVersion),
|
||||||
|
excludedVersions = rejectedVersions
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
val requiredRange = "^$requiredVersion"
|
val version = buildNpmVersion(listOf(requiredVersion), rejectedVersions)
|
||||||
return if (SemVer.valid(requiredRange) && SemVer.satisfies(requiredVersion, requiredRange)) {
|
|
||||||
|
val requiredRange = "^$version"
|
||||||
|
return if (SemVer.valid(requiredRange) && SemVer.satisfies(version, requiredRange)) {
|
||||||
requiredRange
|
requiredRange
|
||||||
} else {
|
} 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>() {
|
class NpmVersionInvertedVisitor : NodeSemverExpressionBaseVisitor<String>() {
|
||||||
override fun visitEmptyRange(ctx: NodeSemverExpressionParser.EmptyRangeContext): String =
|
override fun visitEmptyRange(ctx: NodeSemverExpressionParser.EmptyRangeContext): String =
|
||||||
WILDCARD_VERSION
|
NONE_VERSION
|
||||||
|
|
||||||
override fun visitWildcard(ctx: NodeSemverExpressionParser.WildcardContext): String =
|
override fun visitWildcard(ctx: NodeSemverExpressionParser.WildcardContext): String =
|
||||||
NONE_VERSION
|
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