diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmRange.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmRange.kt new file mode 100644 index 00000000000..61ce1bb3d9d --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmRange.kt @@ -0,0 +1,23 @@ +/* + * 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.model.Version + +data class NpmRange( + val startVersion: Version? = null, + val startInclusive: Boolean = false, + val endVersion: Version? = null, + val endInclusive: Boolean = false +) + +val NONE_RANGE = NpmRange( + startVersion = Version.fromString(NONE_VERSION) +) + +infix operator fun NpmRange.plus(other: NpmRange) { + +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmVersionInvertedVisitor.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmVersionInvertedVisitor.kt index 9c3bcf7d7a3..5b5167a9fa1 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmVersionInvertedVisitor.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmVersionInvertedVisitor.kt @@ -10,17 +10,17 @@ import com.github.gundy.semver4j.generated.grammar.NodeSemverExpressionParser import com.github.gundy.semver4j.model.Version import org.antlr.v4.runtime.tree.TerminalNode -class NpmVersionInvertedVisitor : NodeSemverExpressionBaseVisitor() { - override fun visitEmptyRange(ctx: NodeSemverExpressionParser.EmptyRangeContext): String = - NONE_VERSION +class NpmVersionInvertedVisitor : NodeSemverExpressionBaseVisitor() { + override fun visitEmptyRange(ctx: NodeSemverExpressionParser.EmptyRangeContext): NpmRange = + NONE_RANGE - override fun visitWildcard(ctx: NodeSemverExpressionParser.WildcardContext): String = - NONE_VERSION + override fun visitWildcard(ctx: NodeSemverExpressionParser.WildcardContext): NpmRange = + NONE_RANGE - override fun visitWildcardRange(ctx: NodeSemverExpressionParser.WildcardRangeContext): String = + override fun visitWildcardRange(ctx: NodeSemverExpressionParser.WildcardRangeContext): NpmRange = inverseVersion(ctx.partialWildcardSemver().text) - override fun visitOperator(ctx: NodeSemverExpressionParser.OperatorContext): String { + override fun visitOperator(ctx: NodeSemverExpressionParser.OperatorContext): NpmRange { val eq: TerminalNode? = ctx.unaryOperator().EQ() val gt: TerminalNode? = ctx.unaryOperator().GT() val lt: TerminalNode? = ctx.unaryOperator().LT() @@ -40,10 +40,10 @@ class NpmVersionInvertedVisitor : NodeSemverExpressionBaseVisitor() { return "$LT$invertedEqToken$version" } - override fun visitWildcardOperator(ctx: NodeSemverExpressionParser.WildcardOperatorContext): String = - NONE_VERSION + override fun visitWildcardOperator(ctx: NodeSemverExpressionParser.WildcardOperatorContext): NpmRange = + NONE_RANGE - override fun visitTildeRange(ctx: NodeSemverExpressionParser.TildeRangeContext): String { + override fun visitTildeRange(ctx: NodeSemverExpressionParser.TildeRangeContext): NpmRange { val version = Version.fromString(ctx.fullSemver().text) val nextVersion = version .incrementMinor() @@ -51,7 +51,7 @@ class NpmVersionInvertedVisitor : NodeSemverExpressionBaseVisitor() { return "$LT$version $OR $GTEQ$nextVersion" } - override fun visitCaretRange(ctx: NodeSemverExpressionParser.CaretRangeContext): String { + override fun visitCaretRange(ctx: NodeSemverExpressionParser.CaretRangeContext): NpmRange { val version = Version.fromString(ctx.fullSemver().text) val nextVersion = version .incrementMajor() @@ -59,14 +59,14 @@ class NpmVersionInvertedVisitor : NodeSemverExpressionBaseVisitor() { return "$LT$version $OR $GTEQ$nextVersion" } - override fun visitFullySpecifiedSemver(ctx: NodeSemverExpressionParser.FullySpecifiedSemverContext): String = + override fun visitFullySpecifiedSemver(ctx: NodeSemverExpressionParser.FullySpecifiedSemverContext): NpmRange = inverseVersion(ctx.fullSemver().text) - override fun visitLogicalAndOfSimpleExpressions(ctx: NodeSemverExpressionParser.LogicalAndOfSimpleExpressionsContext): String = + override fun visitLogicalAndOfSimpleExpressions(ctx: NodeSemverExpressionParser.LogicalAndOfSimpleExpressionsContext): NpmRange = ctx.simple() .joinToString(OR) { visit(it) } - override fun visitLogicalOrOfMultipleRanges(ctx: NodeSemverExpressionParser.LogicalOrOfMultipleRangesContext): String = + override fun visitLogicalOrOfMultipleRanges(ctx: NodeSemverExpressionParser.LogicalOrOfMultipleRangesContext): NpmRange = ctx.basicRange() .joinToString(AND) { visitBasicRange(it) }