[Gradle, JS] Require version use caret
^KT-41054 fixed
This commit is contained in:
+5
-1
@@ -31,7 +31,11 @@ class NpmVersionConstraint(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
return buildNpmVersion(listOf(requiredVersion), rejectedVersions)
|
return buildNpmVersion(
|
||||||
|
listOf(requiredVersion),
|
||||||
|
rejectedVersions,
|
||||||
|
true
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+20
-1
@@ -21,11 +21,13 @@ fun versionToNpmRanges(version: String): List<NpmRange> {
|
|||||||
|
|
||||||
fun buildNpmVersion(
|
fun buildNpmVersion(
|
||||||
includedVersions: List<String>,
|
includedVersions: List<String>,
|
||||||
excludedVersions: List<String>
|
excludedVersions: List<String>,
|
||||||
|
includedWithCaret: Boolean = false
|
||||||
): String {
|
): String {
|
||||||
val includedRange: NpmRange? = try {
|
val includedRange: NpmRange? = try {
|
||||||
includedVersions
|
includedVersions
|
||||||
.flatMap { versionToNpmRanges(it) }
|
.flatMap { versionToNpmRanges(it) }
|
||||||
|
.map { if (includedWithCaret) it.caretizeSingleVersion() else it }
|
||||||
.reduce { acc: NpmRange, next: NpmRange ->
|
.reduce { acc: NpmRange, next: NpmRange ->
|
||||||
val intersection = acc intersect next
|
val intersection = acc intersect next
|
||||||
requireNotNull(intersection) {
|
requireNotNull(intersection) {
|
||||||
@@ -39,6 +41,8 @@ fun buildNpmVersion(
|
|||||||
|
|
||||||
includedRange!!
|
includedRange!!
|
||||||
|
|
||||||
|
if (excludedVersions.isEmpty()) return includedRange.toString()
|
||||||
|
|
||||||
val excludedRanges: List<NpmRange> = try {
|
val excludedRanges: List<NpmRange> = try {
|
||||||
excludedVersions
|
excludedVersions
|
||||||
.flatMap { versionToNpmRanges(it) }
|
.flatMap { versionToNpmRanges(it) }
|
||||||
@@ -56,3 +60,18 @@ fun buildNpmVersion(
|
|||||||
.sortedBy { it.startVersion }
|
.sortedBy { it.startVersion }
|
||||||
.joinToString(NpmRangeVisitor.OR)
|
.joinToString(NpmRangeVisitor.OR)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun NpmRange.caretizeSingleVersion(): NpmRange {
|
||||||
|
if (startVersion?.toVersion() != endVersion?.toVersion() || !(startInclusive || endInclusive)) {
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
return NpmRange(
|
||||||
|
startVersion = startVersion,
|
||||||
|
startInclusive = startInclusive,
|
||||||
|
endVersion = startVersion
|
||||||
|
?.toVersion()
|
||||||
|
?.incrementMajor()
|
||||||
|
?.toSemVer()
|
||||||
|
)
|
||||||
|
}
|
||||||
+9
@@ -182,6 +182,15 @@ fun Version.toSemVer(): SemVer =
|
|||||||
build = buildIdentifiers.joinToString(".").let { if (it.isNotEmpty()) it else null }
|
build = buildIdentifiers.joinToString(".").let { if (it.isNotEmpty()) it else null }
|
||||||
)
|
)
|
||||||
|
|
||||||
|
fun SemVer.toVersion(): Version =
|
||||||
|
Version.builder()
|
||||||
|
.major(major.toInt())
|
||||||
|
.minor(minor.toInt())
|
||||||
|
.patch(patch.toInt())
|
||||||
|
.preReleaseIdentifiers(preRelease?.split(".")?.map { Version.Identifier.fromString(it) } ?: emptyList())
|
||||||
|
.buildIdentifiers(build?.split(".")?.map { Version.Identifier.fromString(it) } ?: emptyList())
|
||||||
|
.build()
|
||||||
|
|
||||||
fun min(a: SemVer, b: SemVer): SemVer =
|
fun min(a: SemVer, b: SemVer): SemVer =
|
||||||
if (a < b) a else b
|
if (a < b) a else b
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user