From bd2dba10d9794c662bc46e3ad30ef0d71491f25c Mon Sep 17 00:00:00 2001 From: Peter Csajtai Date: Fri, 5 Apr 2024 18:06:26 +0200 Subject: [PATCH] Squashed commit of the following: commit 30a40b7b81078a8d20dd3a78eed6cee9fde95185 Author: Peter Csajtai Date: Fri Apr 5 17:41:42 2024 +0200 Update README.md commit fae37bec1612f7d2ccbbdcfe9a2fbbaa3ed1da4d Author: Peter Csajtai Date: Fri Apr 5 17:35:54 2024 +0200 Update build.gradle.kts commit 4f5147e3e7ae2a7635cf2fa6bd7b95685184e3b9 Author: Peter Csajtai Date: Fri Apr 5 17:27:58 2024 +0200 Update semver-test.yml commit 5c9fd45b6ce7a263a49f64e9af926d96664b670f Author: Peter Csajtai Date: Fri Apr 5 17:25:56 2024 +0200 Bump Kotlin version to 1.9.23 / add wasm targets --- .github/workflows/semver-ci.yml | 26 +- .github/workflows/semver-test.yml | 6 +- Module.md | 8 +- README.md | 10 +- assets/custom.css | 3 +- build.gradle.kts | 220 +- gradle.properties | 12 +- kotlin-js-store/yarn.lock | 1995 +++++++++++++++++ .../kotlin/io/github/z4kn4fein/semver/Inc.kt | 2 +- .../io/github/z4kn4fein/semver/PreRelease.kt | 23 +- .../z4kn4fein/semver/StringExtensions.kt | 6 +- .../io/github/z4kn4fein/semver/Version.kt | 27 +- .../z4kn4fein/semver/VersionExtensions.kt | 61 +- .../z4kn4fein/semver/VersionSerializer.kt | 14 +- .../semver/constraints/ComparatorBuilder.kt | 75 +- .../z4kn4fein/semver/constraints/Condition.kt | 1 - .../semver/constraints/ConditionProcessor.kt | 46 +- .../semver/constraints/Constraint.kt | 35 +- .../constraints/ConstraintExtensions.kt | 17 +- .../constraints/ConstraintSerializer.kt | 7 +- .../github/z4kn4fein/semver/constraints/Op.kt | 3 +- .../z4kn4fein/semver/constraints/Range.kt | 3 +- .../semver/constraints/VersionComparator.kt | 1 + .../semver/constraints/VersionDescriptor.kt | 23 +- .../github/z4kn4fein/semver/CompareTests.kt | 21 +- .../z4kn4fein/semver/ConstraintTests.kt | 1190 +++++----- .../z4kn4fein/semver/NextVersionTests.kt | 128 +- .../z4kn4fein/semver/SerializationTests.kt | 2 +- .../semver/samples/ConstraintSamples.kt | 23 +- 29 files changed, 3007 insertions(+), 981 deletions(-) create mode 100644 kotlin-js-store/yarn.lock diff --git a/.github/workflows/semver-ci.yml b/.github/workflows/semver-ci.yml index 3c50a0b..fcc8573 100644 --- a/.github/workflows/semver-ci.yml +++ b/.github/workflows/semver-ci.yml @@ -22,7 +22,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v4 with: - java-version: 11 + java-version: 17 distribution: zulu - name: Cache Konan uses: ./.github/actions/cache-konan @@ -39,7 +39,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v4 with: - java-version: 11 + java-version: 17 distribution: zulu - name: Cache Gradle uses: ./.github/actions/cache-gradle @@ -54,7 +54,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v4 with: - java-version: 11 + java-version: 17 distribution: zulu - name: Cache Konan uses: ./.github/actions/cache-konan @@ -80,7 +80,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v4 with: - java-version: 11 + java-version: 17 distribution: zulu - name: Cache Konan uses: ./.github/actions/cache-konan @@ -105,7 +105,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v4 with: - java-version: 11 + java-version: 17 distribution: zulu - name: Cache Konan uses: ./.github/actions/cache-konan @@ -156,10 +156,7 @@ jobs: deploy-snapshot: needs: [ test, lint, analysis, assemble, coverage ] if: ${{ github.ref == 'refs/heads/main' }} - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [ macos-latest, ubuntu-latest, windows-latest ] + runs-on: macos-latest env: SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} @@ -171,7 +168,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v4 with: - java-version: 11 + java-version: 17 distribution: zulu - name: Cache Konan uses: ./.github/actions/cache-konan @@ -184,10 +181,7 @@ jobs: deploy-release: needs: [ test, lint, analysis, assemble, coverage ] if: startsWith(github.ref, 'refs/tags') - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [ macos-latest, ubuntu-latest, windows-latest ] + runs-on: macos-latest env: SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} @@ -199,7 +193,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v4 with: - java-version: 11 + java-version: 17 distribution: zulu - name: Cache Konan uses: ./.github/actions/cache-konan @@ -218,7 +212,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v4 with: - java-version: 11 + java-version: 17 distribution: zulu - name: Cache Konan uses: ./.github/actions/cache-konan diff --git a/.github/workflows/semver-test.yml b/.github/workflows/semver-test.yml index 53dc7a4..5d81836 100644 --- a/.github/workflows/semver-test.yml +++ b/.github/workflows/semver-test.yml @@ -1,6 +1,10 @@ name: Semver Test on: + push: + branches: [ '*' ] + paths-ignore: + - '**.md' pull_request: branches: [ main ] paths-ignore: @@ -21,7 +25,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v4 with: - java-version: 11 + java-version: 17 distribution: zulu - name: Cache Konan uses: ./.github/actions/cache-konan diff --git a/Module.md b/Module.md index 7cd694e..932e312 100644 --- a/Module.md +++ b/Module.md @@ -14,23 +14,23 @@ repositories { Then, you can add the package to your dependencies. ```kotlin -val semver_version: String by project +val semverVersion: String by project dependencies { - implementation("io.github.z4kn4fein:semver:$semver_version") + implementation("io.github.z4kn4fein:semver:$semverVersion") } ```
In case of a multiplatform project, you can simply reference the package in your `commonMain` source set. ```kotlin -val semver_version: String by project +val semverVersion: String by project kotlin { sourceSets { val commonMain by getting { dependencies { - implementation("io.github.z4kn4fein:semver:$semver_version") + implementation("io.github.z4kn4fein:semver:$semverVersion") } } } diff --git a/README.md b/README.md index d90eb7f..7eef433 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ [![Build](https://img.shields.io/github/actions/workflow/status/z4kn4fein/kotlin-semver/semver-ci.yml?logo=GitHub&branch=main)](https://github.com/z4kn4fein/kotlin-semver/actions/workflows/semver-ci.yml) [![Quality Gate Status](https://img.shields.io/sonar/quality_gate/z4kn4fein_kotlin-semver?logo=SonarCloud&server=https%3A%2F%2Fsonarcloud.io)](https://sonarcloud.io/project/overview?id=z4kn4fein_kotlin-semver) [![SonarCloud Coverage](https://img.shields.io/sonar/coverage/z4kn4fein_kotlin-semver?logo=SonarCloud&server=https%3A%2F%2Fsonarcloud.io)](https://sonarcloud.io/project/overview?id=z4kn4fein_kotlin-semver) -[![Kotlin](https://img.shields.io/badge/kotlin-1.7-blueviolet.svg?logo=kotlin)](http://kotlinlang.org) +[![Kotlin](https://img.shields.io/badge/kotlin-1.9-blueviolet.svg?logo=kotlin)](http://kotlinlang.org) Semantic Versioning library for [Kotlin Multiplatform](https://kotlinlang.org/docs/mpp-intro.html). It implements the full [semantic version 2.0.0](https://semver.org/spec/v2.0.0.html) specification and @@ -22,21 +22,21 @@ repositories { ``` Then, you can add the package to your dependencies. ```kotlin -val semver_version: String by project +val semverVersion: String by project dependencies { - implementation("io.github.z4kn4fein:semver:$semver_version") + implementation("io.github.z4kn4fein:semver:$semverVersion") } ``` In case of a multiplatform project, you can simply reference the package in your `commonMain` source set. ```kotlin -val semver_version: String by project +val semverVersion: String by project kotlin { sourceSets { val commonMain by getting { dependencies { - implementation("io.github.z4kn4fein:semver:$semver_version") + implementation("io.github.z4kn4fein:semver:$semverVersion") } } } diff --git a/assets/custom.css b/assets/custom.css index fa627e3..edc3fc8 100644 --- a/assets/custom.css +++ b/assets/custom.css @@ -8,7 +8,8 @@ display: inline-flex; justify-content: center; align-items: center; - margin-right: 20px; + margin: 0 20px; + color: white; } .repo-name { diff --git a/build.gradle.kts b/build.gradle.kts index d9158ec..59cf1f2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,10 +1,8 @@ import io.gitlab.arturbosch.detekt.Detekt import org.jetbrains.dokka.gradle.DokkaTask -import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet -import org.jetbrains.kotlin.gradle.plugin.KotlinTargetPreset -import org.jetbrains.kotlin.gradle.targets.native.tasks.KotlinNativeSimulatorTest import java.net.URL -import kotlin.collections.mutableListOf +import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension +import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmInstallTask repositories { mavenCentral() @@ -12,38 +10,24 @@ repositories { } plugins { - kotlin("multiplatform") version "1.7.22" - kotlin("plugin.serialization") version "1.7.22" + kotlin("multiplatform") version "1.9.23" + kotlin("plugin.serialization") version "1.9.23" id("maven-publish") id("signing") - id("org.jetbrains.dokka") version "1.7.20" + id("org.jetbrains.dokka") version "1.9.20" id("org.sonarqube") version "3.5.0.2730" - id("org.jlleitschuh.gradle.ktlint") version "11.0.0" - id("org.jetbrains.kotlinx.kover") version "0.6.1" - id("io.gitlab.arturbosch.detekt") version "1.22.0" + id("org.jlleitschuh.gradle.ktlint") version "12.1.0" + id("org.jetbrains.kotlinx.kover") version "0.7.6" + id("io.gitlab.arturbosch.detekt") version "1.23.6" } -val kotlinx_serialization_version: String by project -val build_number: String get() = System.getenv("BUILD_NUMBER") ?: "" -val is_snapshot: Boolean get() = System.getProperty("snapshot") != null -val nativeMainSets: MutableList = mutableListOf() -val nativeTestSets: MutableList = mutableListOf() -val host: Host = getHostType() +val kotlinxSerializationVersion: String by project +val buildNumber: String get() = System.getenv("BUILD_NUMBER") ?: "" +val isSnapshot: Boolean get() = System.getProperty("snapshot") != null -version = "$version${if (is_snapshot) "-SNAPSHOT" else ""}" +version = "$version${if (isSnapshot) "-SNAPSHOT" else ""}" kotlin { - fun addNativeTarget(preset: KotlinTargetPreset<*>, desiredHost: Host) { - val target = targetFromPreset(preset) - nativeMainSets.add(target.compilations.getByName("main").kotlinSourceSets.first()) - nativeTestSets.add(target.compilations.getByName("test").kotlinSourceSets.first()) - if (host != desiredHost) { - target.compilations.configureEach { - compileKotlinTask.enabled = false - } - } - } - explicitApi() jvm { @@ -53,87 +37,77 @@ kotlin { withJava() } - js(BOTH) { + js { browser { testTask { useKarma { useChromeHeadless() } } - commonWebpackConfig { - cssSupport.enabled = true + } + nodejs() + } + + wasmJs { + browser { + testTask { + useKarma { + useChromeHeadless() + } } } nodejs() } - // Windows - addNativeTarget(presets["mingwX86"], Host.WINDOWS) - addNativeTarget(presets["mingwX64"], Host.WINDOWS) - - // Linux - addNativeTarget(presets["linuxArm64"], Host.LINUX) - addNativeTarget(presets["linuxArm32Hfp"], Host.LINUX) - addNativeTarget(presets["linuxX64"], Host.LINUX) - - // MacOS - addNativeTarget(presets["macosX64"], Host.MAC_OS) - addNativeTarget(presets["macosArm64"], Host.MAC_OS) - - // iOS - addNativeTarget(presets["iosArm64"], Host.MAC_OS) - addNativeTarget(presets["iosArm32"], Host.MAC_OS) - addNativeTarget(presets["iosX64"], Host.MAC_OS) - addNativeTarget(presets["iosSimulatorArm64"], Host.MAC_OS) - - // watchOS - addNativeTarget(presets["watchosX86"], Host.MAC_OS) - addNativeTarget(presets["watchosX64"], Host.MAC_OS) - addNativeTarget(presets["watchosArm32"], Host.MAC_OS) - addNativeTarget(presets["watchosArm64"], Host.MAC_OS) - addNativeTarget(presets["watchosSimulatorArm64"], Host.MAC_OS) - - // tvOS - addNativeTarget(presets["tvosArm64"], Host.MAC_OS) - addNativeTarget(presets["tvosX64"], Host.MAC_OS) - addNativeTarget(presets["tvosSimulatorArm64"], Host.MAC_OS) + wasmWasi { + nodejs() + } + + macosX64() + macosArm64() + + iosX64() + iosArm64() + iosSimulatorArm64() + + watchosArm32() + watchosArm64() + watchosX64() + watchosSimulatorArm64() + + tvosArm64() + tvosX64() + tvosSimulatorArm64() + + mingwX64() + + linuxX64() + linuxArm64() + linuxArm32Hfp() + + androidNativeArm32() + androidNativeArm64() + androidNativeX86() + androidNativeX64() + + applyDefaultHierarchyTemplate() sourceSets { val commonMain by getting { dependencies { - implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:$kotlinx_serialization_version") + implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:$kotlinxSerializationVersion") } } val commonTest by getting { dependencies { implementation(kotlin("test")) - implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:$kotlinx_serialization_version") + implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:$kotlinxSerializationVersion") } } - - val nativeMain by creating { - dependsOn(commonMain) - } - - val nativeTest by creating { - dependsOn(commonTest) - } - - configure(nativeMainSets) { - dependsOn(nativeMain) - } - - configure(nativeTestSets) { - dependsOn(nativeTest) - } } } -tasks.getByName("watchosX64Test") { - deviceId = "Apple Watch Series 6 (40mm)" -} - tasks.getByName("dokkaHtml") { outputDirectory.set(file(buildDir.resolve("dokka"))) dokkaSourceSets { @@ -152,32 +126,35 @@ tasks.getByName("dokkaHtml") { pluginsMapConfiguration.set(mapOf("org.jetbrains.dokka.base.DokkaBase" to json.replace("\\", "/"))) doLast { - outputDirectory.get().walk() + outputDirectory.getAsFileTree().getFiles() .filter { it.extension == "html" } .forEach { file -> val text = file.readText() file.writeText( text.replace( - "", - "" + "", + "" ).replace( - "", - " z4kn4fein/kotlin-semver" + "", + " " + + "z4kn4fein/kotlin-semver" ).replace( "styles/custom.css\" rel=\"Stylesheet\">", "styles/custom.css\" rel=\"Stylesheet\">" + - "" + "" ) ) } } } -val javadocJar = tasks.register("javadocJar") { - archiveClassifier.set("javadoc") - dependsOn("dokkaHtml") - from(buildDir.resolve("dokka")) -} +val javadocJar = + tasks.register("javadocJar") { + archiveClassifier.set("javadoc") + dependsOn("dokkaHtml") + from(buildDir.resolve("dokka")) + } detekt { buildUponDefaultConfig = true @@ -185,6 +162,12 @@ detekt { isIgnoreFailures = true } +ktlint { + filter { + exclude { element -> element.file.path.contains("build.gradle.kts") } + } +} + tasks.withType().configureEach { setSource(project.files(project.projectDir.resolve("src/commonMain"))) include("**/*.kt") @@ -196,11 +179,20 @@ tasks.withType().configureEach { } } +rootProject.the().apply { + nodeVersion = "22.0.0-nightly202404032241e8c5b3" + nodeDownloadBaseUrl = "https://nodejs.org/download/nightly" +} + +tasks.withType().configureEach { + args.add("--ignore-engines") +} + sonarqube { properties { property("sonar.projectKey", "z4kn4fein_kotlin-semver") property("sonar.projectName", "kotlin-semver") - property("sonar.projectVersion", "$version-$build_number") + property("sonar.projectVersion", "$version-$buildNumber") property("sonar.organization", "z4kn4fein") property("sonar.host.url", "https://sonarcloud.io") property("sonar.sources", "src/commonMain/kotlin/io/github/z4kn4fein/semver") @@ -216,7 +208,7 @@ publishing { name = "oss" val releasesRepoUrl = uri("https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/") val snapshotsRepoUrl = uri("https://s01.oss.sonatype.org/content/repositories/snapshots/") - url = if (is_snapshot) snapshotsRepoUrl else releasesRepoUrl + url = if (isSnapshot) snapshotsRepoUrl else releasesRepoUrl credentials { username = System.getenv("SONATYPE_USERNAME") password = System.getenv("SONATYPE_PASSWORD") @@ -229,7 +221,11 @@ publishing { pom { name.set("Kotlin Semantic Versioning") - description.set("Semantic Versioning library for Kotlin Multiplatform. It implements the full semantic version 2.0.0 specification and provides the ability to parse, compare, and increment semantic versions along with validation against constraints.") + description.set( + "Semantic Versioning library for Kotlin Multiplatform. It implements the full semantic version " + + "2.0.0 specification and provides the ability to parse, compare, and increment semantic " + + "versions along with validation against constraints.", + ) url.set("https://z4kn4fein.github.io/kotlin-semver") issueManagement { @@ -258,14 +254,6 @@ publishing { } } } - - tasks.withType(AbstractPublishToMaven::class).configureEach { - onlyIf { isPublicationAllowed(publication.name) } - } - - tasks.withType(GenerateModuleMetadata::class).configureEach { - onlyIf { isPublicationAllowed(publication.get().name) } - } } signing { @@ -276,25 +264,3 @@ signing { sign(publishing.publications) } } - -fun isPublicationAllowed(name: String): Boolean = - when { - name.startsWith("mingw") -> host == Host.WINDOWS - name.startsWith("macos") || - name.startsWith("ios") || - name.startsWith("watchos") || - name.startsWith("tvos") -> host == Host.MAC_OS - else -> host == Host.LINUX - } - -fun getHostType(): Host { - val hostOs = System.getProperty("os.name") - return when { - hostOs.startsWith("Windows") -> Host.WINDOWS - hostOs.startsWith("Mac") -> Host.MAC_OS - hostOs == "Linux" -> Host.LINUX - else -> throw Error("Invalid host.") - } -} - -enum class Host { WINDOWS, MAC_OS, LINUX } diff --git a/gradle.properties b/gradle.properties index b40617e..494ef10 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,16 +1,10 @@ group=io.github.z4kn4fein -version=1.4.2 +version=2.0.0 kotlin.code.style=official +kotlin.incremental=true -kotlin.mpp.enableCompatibilityMetadataVariant=true -kotlin.native.distribution.type=prebuilt - -kotlin.native.ignoreDisabledTargets=true -kotlin.parallel.tasks.in.project = true -kotlin.incremental.multiplatform=true - -kotlinx_serialization_version=1.4.1 +kotlinxSerializationVersion=1.6.3 org.gradle.jvmargs = -Xmx3g org.gradle.parallel = true diff --git a/kotlin-js-store/yarn.lock b/kotlin-js-store/yarn.lock new file mode 100644 index 0000000..2344d1d --- /dev/null +++ b/kotlin-js-store/yarn.lock @@ -0,0 +1,1995 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + +"@discoveryjs/json-ext@^0.5.0": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== + +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/source-map@^0.3.3": + version "0.3.6" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.6.tgz#9d71ca886e32502eb9362c9a74a46787c36df81a" + integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@socket.io/component-emitter@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553" + integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg== + +"@types/cookie@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d" + integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== + +"@types/cors@^2.8.12": + version "2.8.17" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.17.tgz#5d718a5e494a8166f569d986794e49c48b216b2b" + integrity sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA== + dependencies: + "@types/node" "*" + +"@types/eslint-scope@^3.7.3": + version "3.7.7" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" + integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "8.56.7" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.7.tgz#c33b5b5a9cfb66881beb7b5be6c34aa3e81d3366" + integrity sha512-SjDvI/x3zsZnOkYZ3lCt9lOZWZLB2jIlNKz+LBgCtDurK0JZcwucxYHn1w2BJkD34dgX9Tjnak0txtq4WTggEA== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^1.0.0": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + +"@types/json-schema@*", "@types/json-schema@^7.0.8": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/node@*", "@types/node@>=10.0.0": + version "20.12.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.4.tgz#af5921bd75ccdf3a3d8b3fa75bf3d3359268cd11" + integrity sha512-E+Fa9z3wSQpzgYQdYmme5X3OTuejnnTx88A6p6vkkJosR3KBz+HpE3kqNm98VE6cfLFcISx7zW7MsJkH6KwbTw== + dependencies: + undici-types "~5.26.4" + +"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.11.5": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.12.1.tgz#bb16a0e8b1914f979f45864c23819cc3e3f0d4bb" + integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + +"@webassemblyjs/floating-point-hex-parser@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" + integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== + +"@webassemblyjs/helper-api-error@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" + integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== + +"@webassemblyjs/helper-buffer@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz#6df20d272ea5439bf20ab3492b7fb70e9bfcb3f6" + integrity sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw== + +"@webassemblyjs/helper-numbers@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" + integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" + integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== + +"@webassemblyjs/helper-wasm-section@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz#3da623233ae1a60409b509a52ade9bc22a37f7bf" + integrity sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/wasm-gen" "1.12.1" + +"@webassemblyjs/ieee754@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" + integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" + integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" + integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== + +"@webassemblyjs/wasm-edit@^1.11.5": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz#9f9f3ff52a14c980939be0ef9d5df9ebc678ae3b" + integrity sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/helper-wasm-section" "1.12.1" + "@webassemblyjs/wasm-gen" "1.12.1" + "@webassemblyjs/wasm-opt" "1.12.1" + "@webassemblyjs/wasm-parser" "1.12.1" + "@webassemblyjs/wast-printer" "1.12.1" + +"@webassemblyjs/wasm-gen@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz#a6520601da1b5700448273666a71ad0a45d78547" + integrity sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wasm-opt@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz#9e6e81475dfcfb62dab574ac2dda38226c232bc5" + integrity sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" + "@webassemblyjs/wasm-gen" "1.12.1" + "@webassemblyjs/wasm-parser" "1.12.1" + +"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.11.5": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz#c47acb90e6f083391e3fa61d113650eea1e95937" + integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-api-error" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wast-printer@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz#bcecf661d7d1abdaf989d8341a4833e33e2b31ac" + integrity sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@xtuc/long" "4.2.2" + +"@webpack-cli/configtest@^2.1.0": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz#3b2f852e91dac6e3b85fb2a314fb8bef46d94646" + integrity sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw== + +"@webpack-cli/info@^2.0.1": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.2.tgz#cc3fbf22efeb88ff62310cf885c5b09f44ae0fdd" + integrity sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A== + +"@webpack-cli/serve@^2.0.3": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e" + integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abab@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== + +accepts@~1.3.4: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-import-assertions@^1.7.6: + version "1.9.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" + integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== + +acorn@^8.7.1, acorn@^8.8.2: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + +ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-colors@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64id@2.0.0, base64id@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" + integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +body-parser@^1.19.0: + version "1.20.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" + integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== + dependencies: + bytes "3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.2" + type-is "~1.6.18" + unpipe "1.0.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + +browserslist@^4.14.5: + version "4.23.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" + integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== + dependencies: + caniuse-lite "^1.0.30001587" + electron-to-chromium "^1.4.668" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + +camelcase@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-lite@^1.0.30001587: + version "1.0.30001606" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001606.tgz#b4d5f67ab0746a3b8b5b6d1f06e39c51beb39a9e" + integrity sha512-LPbwnW4vfpJId225pwjZJOgX1m9sGfbw/RKJvw/t0QhYOOaTXHvkjVGFGPpvwEzufrjvTlsULnVTxdy4/6cqkg== + +chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chokidar@3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chokidar@^3.5.1: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colorette@^2.0.14: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + +commander@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +connect@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" + integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== + dependencies: + debug "2.6.9" + finalhandler "1.1.2" + parseurl "~1.3.3" + utils-merge "1.0.1" + +content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +cookie@~0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + +cors@~2.8.5: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +custom-event@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" + integrity sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg== + +date-format@^4.0.14: + version "4.0.14" + resolved "https://registry.yarnpkg.com/date-format/-/date-format-4.0.14.tgz#7a8e584434fb169a521c8b7aa481f355810d9400" + integrity sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg== + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4.3.4, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2, debug@~4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + +define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +di@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" + integrity sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA== + +diff@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== + +dom-serialize@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" + integrity sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ== + dependencies: + custom-event "~1.0.0" + ent "~2.2.0" + extend "^3.0.0" + void-elements "^2.0.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +electron-to-chromium@^1.4.668: + version "1.4.728" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.728.tgz#ac54d9d1b38752b920ec737a48c83dec2bf45ea1" + integrity sha512-Ud1v7hJJYIqehlUJGqR6PF1Ek8l80zWwxA6nGxigBsGJ9f9M2fciHyrIiNMerSHSH3p+0/Ia7jIlnDkt41h5cw== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +engine.io-parser@~5.2.1: + version "5.2.2" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.2.tgz#37b48e2d23116919a3453738c5720455e64e1c49" + integrity sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw== + +engine.io@~6.5.2: + version "6.5.4" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.5.4.tgz#6822debf324e781add2254e912f8568508850cdc" + integrity sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg== + dependencies: + "@types/cookie" "^0.4.1" + "@types/cors" "^2.8.12" + "@types/node" ">=10.0.0" + accepts "~1.3.4" + base64id "2.0.0" + cookie "~0.4.1" + cors "~2.8.5" + debug "~4.3.1" + engine.io-parser "~5.2.1" + ws "~8.11.0" + +enhanced-resolve@^5.13.0: + version "5.16.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz#65ec88778083056cb32487faa9aef82ed0864787" + integrity sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +ent@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" + integrity sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA== + +envinfo@^7.7.3: + version "7.11.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.11.1.tgz#2ffef77591057081b0129a8fd8cf6118da1b94e1" + integrity sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg== + +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-module-lexer@^1.2.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.0.tgz#4878fee3789ad99e065f975fdd3c645529ff0236" + integrity sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw== + +escalade@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fastest-levenshtein@^1.0.12: + version "1.0.16" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-up@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +flatted@^3.2.7: + version "3.3.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" + integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== + +follow-redirects@^1.0.0: + version "1.15.6" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" + integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== + +format-util@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/format-util/-/format-util-1.0.5.tgz#1ffb450c8a03e7bccffe40643180918cc297d271" + integrity sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg== + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.3, glob@^7.1.7: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.10, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-proto@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== + +has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +hasown@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +he@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +interpret@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" + integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-core-module@^2.13.0: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +isbinaryfile@^4.0.8: + version "4.0.10" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" + integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +js-yaml@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-parse-even-better-errors@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +karma-chrome-launcher@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz#eb9c95024f2d6dfbb3748d3415ac9b381906b9a9" + integrity sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q== + dependencies: + which "^1.2.1" + +karma-mocha@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/karma-mocha/-/karma-mocha-2.0.1.tgz#4b0254a18dfee71bdbe6188d9a6861bf86b0cd7d" + integrity sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ== + dependencies: + minimist "^1.2.3" + +karma-sourcemap-loader@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.4.0.tgz#b01d73f8f688f533bcc8f5d273d43458e13b5488" + integrity sha512-xCRL3/pmhAYF3I6qOrcn0uhbQevitc2DERMPH82FMnG+4WReoGcGFZb1pURf2a5apyrOHRdvD+O6K7NljqKHyA== + dependencies: + graceful-fs "^4.2.10" + +karma-webpack@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-5.0.0.tgz#2a2c7b80163fe7ffd1010f83f5507f95ef39f840" + integrity sha512-+54i/cd3/piZuP3dr54+NcFeKOPnys5QeM1IY+0SPASwrtHsliXUiCL50iW+K9WWA7RvamC4macvvQ86l3KtaA== + dependencies: + glob "^7.1.3" + minimatch "^3.0.4" + webpack-merge "^4.1.5" + +karma@6.4.2: + version "6.4.2" + resolved "https://registry.yarnpkg.com/karma/-/karma-6.4.2.tgz#a983f874cee6f35990c4b2dcc3d274653714de8e" + integrity sha512-C6SU/53LB31BEgRg+omznBEMY4SjHU3ricV6zBcAe1EeILKkeScr+fZXtaI5WyDbkVowJxxAI6h73NcFPmXolQ== + dependencies: + "@colors/colors" "1.5.0" + body-parser "^1.19.0" + braces "^3.0.2" + chokidar "^3.5.1" + connect "^3.7.0" + di "^0.0.1" + dom-serialize "^2.2.1" + glob "^7.1.7" + graceful-fs "^4.2.6" + http-proxy "^1.18.1" + isbinaryfile "^4.0.8" + lodash "^4.17.21" + log4js "^6.4.1" + mime "^2.5.2" + minimatch "^3.0.4" + mkdirp "^0.5.5" + qjobs "^1.2.0" + range-parser "^1.2.1" + rimraf "^3.0.2" + socket.io "^4.4.1" + source-map "^0.6.1" + tmp "^0.2.1" + ua-parser-js "^0.7.30" + yargs "^16.1.1" + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash@^4.17.15, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +log4js@^6.4.1: + version "6.9.1" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.9.1.tgz#aba5a3ff4e7872ae34f8b4c533706753709e38b6" + integrity sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g== + dependencies: + date-format "^4.0.14" + debug "^4.3.4" + flatted "^3.2.7" + rfdc "^1.3.0" + streamroller "^3.1.5" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.27, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@^2.5.2: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +minimatch@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" + integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^3.0.4, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.3, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +mkdirp@^0.5.5: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mocha@10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" + integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== + dependencies: + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.3" + debug "4.3.4" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.2.0" + he "1.2.0" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "5.0.1" + ms "2.1.3" + nanoid "3.3.3" + serialize-javascript "6.0.0" + strip-json-comments "3.1.1" + supports-color "8.1.1" + workerpool "6.2.1" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +nanoid@3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" + integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +object-assign@^4: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.13.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== + dependencies: + ee-first "1.1.1" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +qjobs@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" + integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== + +qs@6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +range-parser@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +rechoir@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" + integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== + dependencies: + resolve "^1.20.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve@^1.20.0: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +rfdc@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.1.tgz#2b6d4df52dffe8bb346992a10ea9451f24373a8f" + integrity sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +safe-buffer@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +schema-utils@^3.1.1, schema-utils@^3.1.2: + version "3.3.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +serialize-javascript@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== + dependencies: + randombytes "^2.1.0" + +serialize-javascript@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== + dependencies: + randombytes "^2.1.0" + +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + +socket.io-adapter@~2.5.2: + version "2.5.4" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.5.4.tgz#4fdb1358667f6d68f25343353bd99bd11ee41006" + integrity sha512-wDNHGXGewWAjQPt3pyeYBtpWSq9cLE5UW1ZUPL/2eGK9jtse/FpXib7epSTsz0Q0m+6sg6Y4KtcFTlah1bdOVg== + dependencies: + debug "~4.3.4" + ws "~8.11.0" + +socket.io-parser@~4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.4.tgz#c806966cf7270601e47469ddeec30fbdfda44c83" + integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew== + dependencies: + "@socket.io/component-emitter" "~3.1.0" + debug "~4.3.1" + +socket.io@^4.4.1: + version "4.7.5" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.7.5.tgz#56eb2d976aef9d1445f373a62d781a41c7add8f8" + integrity sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA== + dependencies: + accepts "~1.3.4" + base64id "~2.0.0" + cors "~2.8.5" + debug "~4.3.2" + engine.io "~6.5.2" + socket.io-adapter "~2.5.2" + socket.io-parser "~4.2.4" + +source-map-js@^1.0.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" + integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== + +source-map-loader@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-4.0.1.tgz#72f00d05f5d1f90f80974eda781cbd7107c125f2" + integrity sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA== + dependencies: + abab "^2.0.6" + iconv-lite "^0.6.3" + source-map-js "^1.0.2" + +source-map-support@0.5.21, source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +streamroller@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-3.1.5.tgz#1263182329a45def1ffaef58d31b15d13d2ee7ff" + integrity sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw== + dependencies: + date-format "^4.0.14" + debug "^4.3.4" + fs-extra "^8.1.0" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-json-comments@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@8.1.1, supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +terser-webpack-plugin@^5.3.7: + version "5.3.10" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" + integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== + dependencies: + "@jridgewell/trace-mapping" "^0.3.20" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.1" + terser "^5.26.0" + +terser@^5.26.0: + version "5.30.3" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.30.3.tgz#f1bb68ded42408c316b548e3ec2526d7dd03f4d2" + integrity sha512-STdUgOUx8rLbMGO9IOwHLpCqolkDITFFQSMYYwKE1N2lY6MVSaeoi10z/EhWxRc6ybqoVmKSkhKYH/XUpl7vSA== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + +tmp@^0.2.1: + version "0.2.3" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" + integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typescript@5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b" + integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== + +ua-parser-js@^0.7.30: + version "0.7.37" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.37.tgz#e464e66dac2d33a7a1251d7d7a99d6157ec27832" + integrity sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA== + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +vary@^1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +void-elements@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" + integrity sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung== + +watchpack@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.1.tgz#29308f2cac150fa8e4c92f90e0ec954a9fed7fff" + integrity sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +webpack-cli@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.0.tgz#abc4b1f44b50250f2632d8b8b536cfe2f6257891" + integrity sha512-a7KRJnCxejFoDpYTOwzm5o21ZXMaNqtRlvS183XzGDUPRdVEzJNImcQokqYZ8BNTnk9DkKiuWxw75+DCCoZ26w== + dependencies: + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^2.1.0" + "@webpack-cli/info" "^2.0.1" + "@webpack-cli/serve" "^2.0.3" + colorette "^2.0.14" + commander "^10.0.1" + cross-spawn "^7.0.3" + envinfo "^7.7.3" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^3.1.1" + rechoir "^0.8.0" + webpack-merge "^5.7.3" + +webpack-merge@^4.1.5: + version "4.2.2" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" + integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== + dependencies: + lodash "^4.17.15" + +webpack-merge@^5.7.3: + version "5.10.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" + integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== + dependencies: + clone-deep "^4.0.1" + flat "^5.0.2" + wildcard "^2.0.0" + +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack@5.82.0: + version "5.82.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.82.0.tgz#3c0d074dec79401db026b4ba0fb23d6333f88e7d" + integrity sha512-iGNA2fHhnDcV1bONdUu554eZx+XeldsaeQ8T67H6KKHl2nUSwX8Zm7cmzOA46ox/X1ARxf7Bjv8wQ/HsB5fxBg== + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^1.0.0" + "@webassemblyjs/ast" "^1.11.5" + "@webassemblyjs/wasm-edit" "^1.11.5" + "@webassemblyjs/wasm-parser" "^1.11.5" + acorn "^8.7.1" + acorn-import-assertions "^1.7.6" + browserslist "^4.14.5" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.13.0" + es-module-lexer "^1.2.1" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.9" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.1.2" + tapable "^2.1.1" + terser-webpack-plugin "^5.3.7" + watchpack "^2.4.0" + webpack-sources "^3.2.3" + +which@^1.2.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wildcard@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" + integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== + +workerpool@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" + integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@~8.11.0: + version "8.11.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" + integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yargs-parser@20.2.4: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-unparser@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@16.2.0, yargs@^16.1.1: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/src/commonMain/kotlin/io/github/z4kn4fein/semver/Inc.kt b/src/commonMain/kotlin/io/github/z4kn4fein/semver/Inc.kt index 5d0aaaf..87734a0 100644 --- a/src/commonMain/kotlin/io/github/z4kn4fein/semver/Inc.kt +++ b/src/commonMain/kotlin/io/github/z4kn4fein/semver/Inc.kt @@ -32,5 +32,5 @@ public enum class Inc { * * @sample io.github.z4kn4fein.semver.samples.VersionSamples.inc */ - PRE_RELEASE + PRE_RELEASE, } diff --git a/src/commonMain/kotlin/io/github/z4kn4fein/semver/PreRelease.kt b/src/commonMain/kotlin/io/github/z4kn4fein/semver/PreRelease.kt index 81546f4..83d672d 100644 --- a/src/commonMain/kotlin/io/github/z4kn4fein/semver/PreRelease.kt +++ b/src/commonMain/kotlin/io/github/z4kn4fein/semver/PreRelease.kt @@ -3,7 +3,6 @@ package io.github.z4kn4fein.semver import kotlin.math.min internal class PreRelease private constructor(private val parts: List) : Comparable { - val identity: String get() = parts[0] fun increment(): PreRelease { @@ -47,7 +46,10 @@ internal class PreRelease private constructor(private val parts: List) : override fun toString(): String = parts.joinToString(".") - private fun compareParts(part1: String, part2: String): Int { + private fun compareParts( + part1: String, + part2: String, + ): Int { val firstPart = part1.toIntOrNull() val secondPart = part2.toIntOrNull() @@ -74,14 +76,15 @@ internal class PreRelease private constructor(private val parts: List) : val parts = preReleaseString.trim().split('.') for (part in parts) { - val error = when { - part.isBlank() -> "Pre-release identity contains an empty part." - part.matches(onlyNumberRegex) && part.length > 1 && part[0] == '0' -> - "Pre-release part '$part' is numeric but contains a leading zero." - !part.matches(onlyAlphaNumericAndHyphenRegex) -> - "Pre-release part '$part' contains an invalid character." - else -> null - } + val error = + when { + part.isBlank() -> "Pre-release identity contains an empty part." + part.matches(onlyNumberRegex) && part.length > 1 && part[0] == '0' -> + "Pre-release part '$part' is numeric but contains a leading zero." + !part.matches(onlyAlphaNumericAndHyphenRegex) -> + "Pre-release part '$part' contains an invalid character." + else -> null + } error?.let { throw VersionFormatException("$error ($preReleaseString)") } ?: continue } diff --git a/src/commonMain/kotlin/io/github/z4kn4fein/semver/StringExtensions.kt b/src/commonMain/kotlin/io/github/z4kn4fein/semver/StringExtensions.kt index 14cd69a..5f4e78b 100644 --- a/src/commonMain/kotlin/io/github/z4kn4fein/semver/StringExtensions.kt +++ b/src/commonMain/kotlin/io/github/z4kn4fein/semver/StringExtensions.kt @@ -23,6 +23,10 @@ public fun String.toVersion(strict: Boolean = true): Version = Version.parse(thi * @sample io.github.z4kn4fein.semver.samples.VersionSamples.toVersionOrNullLoose */ public fun String.toVersionOrNull(strict: Boolean = true): Version? = - try { this.toVersion(strict) } catch (_: Exception) { null } + try { + this.toVersion(strict) + } catch (_: Exception) { + null + } internal fun String.toPreRelease(): PreRelease = PreRelease(this) diff --git a/src/commonMain/kotlin/io/github/z4kn4fein/semver/Version.kt b/src/commonMain/kotlin/io/github/z4kn4fein/semver/Version.kt index e003104..0f198ac 100644 --- a/src/commonMain/kotlin/io/github/z4kn4fein/semver/Version.kt +++ b/src/commonMain/kotlin/io/github/z4kn4fein/semver/Version.kt @@ -12,19 +12,14 @@ import kotlinx.serialization.Serializable public class Version private constructor( /** The MAJOR number of the version. */ public val major: Int, - /** The MINOR number of the version. */ public val minor: Int, - /** The PATCH number of the version. */ public val patch: Int, - internal val parsedPreRelease: PreRelease? = null, - /** The BUILD metadata of the version. */ - public val buildMetadata: String? = null + public val buildMetadata: String? = null, ) : Comparable { - /** * Constructs a semantic version from the given arguments following the pattern: * <[major]>.<[minor]>.<[patch]>-<[preRelease]>+<[buildMetadata]> @@ -36,7 +31,7 @@ public class Version private constructor( minor: Int = 0, patch: Int = 0, preRelease: String? = null, - buildMetadata: String? = null + buildMetadata: String? = null, ) : this(major, minor, patch, preRelease?.toPreRelease(), buildMetadata) init { @@ -71,7 +66,7 @@ public class Version private constructor( minor: Int = this.minor, patch: Int = this.patch, preRelease: String? = this.preRelease, - buildMetadata: String? = this.buildMetadata + buildMetadata: String? = this.buildMetadata, ): Version = Version(major, minor, patch, preRelease, buildMetadata) public override fun compareTo(other: Version): Int = @@ -112,12 +107,16 @@ public class Version private constructor( /** Component function that returns the MAJOR number of the version upon destructuring. */ public operator fun component1(): Int = major + /** Component function that returns the MINOR number of the version upon destructuring. */ public operator fun component2(): Int = minor + /** Component function that returns the PATCH number of the version upon destructuring. */ public operator fun component3(): Int = patch + /** Component function that returns the PRE-RELEASE identifier of the version upon destructuring. */ public operator fun component4(): String? = preRelease + /** Component function that returns the BUILD metadata of the version upon destructuring. */ public operator fun component5(): String? = buildMetadata @@ -144,10 +143,14 @@ public class Version private constructor( * @sample io.github.z4kn4fein.semver.samples.VersionSamples.parseLoose */ @Suppress("MagicNumber") - public fun parse(versionString: String, strict: Boolean = true): Version { + public fun parse( + versionString: String, + strict: Boolean = true, + ): Version { val regex = if (strict) versionRegex else looseVersionRegex - val result = regex.matchEntire(versionString) - ?: throw VersionFormatException("Invalid version: $versionString") + val result = + regex.matchEntire(versionString) + ?: throw VersionFormatException("Invalid version: $versionString") val major = result.groupValues[1].toIntOrNull() val minor = result.groupValues[2].toIntOrNull() val patch = result.groupValues[3].toIntOrNull() @@ -169,7 +172,7 @@ public class Version private constructor( minor: Int, patch: Int, preRelease: PreRelease?, - buildMetadata: String? = null + buildMetadata: String? = null, ): Version = Version(major, minor, patch, preRelease, buildMetadata) } } diff --git a/src/commonMain/kotlin/io/github/z4kn4fein/semver/VersionExtensions.kt b/src/commonMain/kotlin/io/github/z4kn4fein/semver/VersionExtensions.kt index 0010415..5f6deed 100644 --- a/src/commonMain/kotlin/io/github/z4kn4fein/semver/VersionExtensions.kt +++ b/src/commonMain/kotlin/io/github/z4kn4fein/semver/VersionExtensions.kt @@ -12,12 +12,13 @@ import io.github.z4kn4fein.semver.constraints.satisfiedBy * * @sample io.github.z4kn4fein.semver.samples.VersionSamples.nextMajor */ -public fun Version.nextMajor(preRelease: String? = null): Version = Version( - major + 1, - 0, - 0, - preRelease?.let { PreRelease(preRelease) } -) +public fun Version.nextMajor(preRelease: String? = null): Version = + Version( + major + 1, + 0, + 0, + preRelease?.let { PreRelease(preRelease) }, + ) /** * Increments the version by its MINOR number. When the [preRelease] parameter is set, a pre-release version @@ -28,12 +29,13 @@ public fun Version.nextMajor(preRelease: String? = null): Version = Version( * * @sample io.github.z4kn4fein.semver.samples.VersionSamples.nextMinor */ -public fun Version.nextMinor(preRelease: String? = null): Version = Version( - major, - minor + 1, - 0, - preRelease?.let { PreRelease(preRelease) } -) +public fun Version.nextMinor(preRelease: String? = null): Version = + Version( + major, + minor + 1, + 0, + preRelease?.let { PreRelease(preRelease) }, + ) /** * Increments the version by its PATCH number. When the version is pre-release, the PATCH number will not be @@ -46,12 +48,13 @@ public fun Version.nextMinor(preRelease: String? = null): Version = Version( * * @sample io.github.z4kn4fein.semver.samples.VersionSamples.nextPatch */ -public fun Version.nextPatch(preRelease: String? = null): Version = Version( - major, - minor, - if (parsedPreRelease == null || preRelease != null) patch + 1 else patch, - preRelease?.let { PreRelease(preRelease) } -) +public fun Version.nextPatch(preRelease: String? = null): Version = + Version( + major, + minor, + if (parsedPreRelease == null || preRelease != null) patch + 1 else patch, + preRelease?.let { PreRelease(preRelease) }, + ) /** * Increments the version by its PRE-RELEASE identifier or produces the next pre-release of a stable version. @@ -63,14 +66,15 @@ public fun Version.nextPatch(preRelease: String? = null): Version = Version( * * @sample io.github.z4kn4fein.semver.samples.VersionSamples.nextPreRelease */ -public fun Version.nextPreRelease(preRelease: String? = null): Version = Version( - major, - minor, - parsedPreRelease?.let { patch } ?: (patch + 1), - preRelease?.let { - if (parsedPreRelease?.identity == it) parsedPreRelease.increment() else PreRelease(preRelease) - } ?: parsedPreRelease?.increment() ?: PreRelease.default -) +public fun Version.nextPreRelease(preRelease: String? = null): Version = + Version( + major, + minor, + parsedPreRelease?.let { patch } ?: (patch + 1), + preRelease?.let { + if (parsedPreRelease?.identity == it) parsedPreRelease.increment() else PreRelease(preRelease) + } ?: parsedPreRelease?.increment() ?: PreRelease.default, + ) /** * Increases the version [by] its [Inc.MAJOR], [Inc.MINOR], [Inc.PATCH], or [Inc.PRE_RELEASE] segment. @@ -87,7 +91,10 @@ public fun Version.nextPreRelease(preRelease: String? = null): Version = Version * * @sample io.github.z4kn4fein.semver.samples.VersionSamples.inc */ -public fun Version.inc(by: Inc, preRelease: String? = null): Version = +public fun Version.inc( + by: Inc, + preRelease: String? = null, +): Version = when (by) { Inc.MAJOR -> nextMajor(preRelease) Inc.MINOR -> nextMinor(preRelease) diff --git a/src/commonMain/kotlin/io/github/z4kn4fein/semver/VersionSerializer.kt b/src/commonMain/kotlin/io/github/z4kn4fein/semver/VersionSerializer.kt index 5bbfba6..82f7aec 100644 --- a/src/commonMain/kotlin/io/github/z4kn4fein/semver/VersionSerializer.kt +++ b/src/commonMain/kotlin/io/github/z4kn4fein/semver/VersionSerializer.kt @@ -15,7 +15,12 @@ import kotlinx.serialization.encoding.Encoder */ public object VersionSerializer : KSerializer { override fun deserialize(decoder: Decoder): Version = decoder.decodeString().toVersion() - override fun serialize(encoder: Encoder, value: Version): Unit = encoder.encodeString(value.toString()) + + override fun serialize( + encoder: Encoder, + value: Version, + ): Unit = encoder.encodeString(value.toString()) + override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("Version", PrimitiveKind.STRING) } @@ -28,6 +33,11 @@ public object VersionSerializer : KSerializer { */ public object LooseVersionSerializer : KSerializer { override fun deserialize(decoder: Decoder): Version = decoder.decodeString().toVersion(strict = false) - override fun serialize(encoder: Encoder, value: Version): Unit = encoder.encodeString(value.toString()) + + override fun serialize( + encoder: Encoder, + value: Version, + ): Unit = encoder.encodeString(value.toString()) + override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("LooseVersion", PrimitiveKind.STRING) } diff --git a/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/ComparatorBuilder.kt b/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/ComparatorBuilder.kt index 3772144..1bfd044 100644 --- a/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/ComparatorBuilder.kt +++ b/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/ComparatorBuilder.kt @@ -7,34 +7,44 @@ import io.github.z4kn4fein.semver.nextPatch internal interface ComparatorBuilder { val acceptedOperators: Array - fun buildComparator(operatorString: String, versionDescriptor: VersionDescriptor): VersionComparator + + fun buildComparator( + operatorString: String, + versionDescriptor: VersionDescriptor, + ): VersionComparator } internal class RegularComparatorBuilder : ComparatorBuilder { override val acceptedOperators: Array = arrayOf("=", "!=", ">", ">=", "=>", "<", "<=", "=<", "") - override fun buildComparator(operatorString: String, versionDescriptor: VersionDescriptor): VersionComparator = - versionDescriptor.toComparator(operatorString.toOperator()) + override fun buildComparator( + operatorString: String, + versionDescriptor: VersionDescriptor, + ): VersionComparator = versionDescriptor.toComparator(operatorString.toOperator()) } internal class TildeComparatorBuilder : ComparatorBuilder { override val acceptedOperators: Array = arrayOf("~>", "~") - override fun buildComparator(operatorString: String, versionDescriptor: VersionDescriptor): VersionComparator = + override fun buildComparator( + operatorString: String, + versionDescriptor: VersionDescriptor, + ): VersionComparator = when { versionDescriptor.isWildcard -> versionDescriptor.toComparator() else -> { - val version = Version( - versionDescriptor.major, - versionDescriptor.minor, - versionDescriptor.patch, - versionDescriptor.preRelease, - versionDescriptor.buildMetadata - ) + val version = + Version( + versionDescriptor.major, + versionDescriptor.minor, + versionDescriptor.patch, + versionDescriptor.preRelease, + versionDescriptor.buildMetadata, + ) Range( start = Condition(Op.GREATER_THAN_OR_EQUAL, version), end = Condition(Op.LESS_THAN, version.nextMinor(preRelease = "")), - Op.EQUAL + Op.EQUAL, ) } } @@ -43,29 +53,34 @@ internal class TildeComparatorBuilder : ComparatorBuilder { internal class CaretComparatorBuilder : ComparatorBuilder { override val acceptedOperators: Array = arrayOf("^") - override fun buildComparator(operatorString: String, versionDescriptor: VersionDescriptor): VersionComparator = + override fun buildComparator( + operatorString: String, + versionDescriptor: VersionDescriptor, + ): VersionComparator = when { versionDescriptor.isMajorWildcard -> VersionComparator.greaterThanMin versionDescriptor.isMinorWildcard -> fromMinorWildcardCaret(versionDescriptor) versionDescriptor.isPatchWildcard -> fromPatchWildcardCaret(versionDescriptor) else -> { - val version = Version( - versionDescriptor.major, - versionDescriptor.minor, - versionDescriptor.patch, - versionDescriptor.preRelease, - versionDescriptor.buildMetadata - ) - val endVersion = when { - versionDescriptor.majorString != "0" -> version.nextMajor(preRelease = "") - versionDescriptor.minorString != "0" -> version.nextMinor(preRelease = "") - versionDescriptor.patchString != "0" -> version.nextPatch(preRelease = "") - else -> Version(patch = 1, preRelease = "") // ^0.0.0 -> <0.0.1-0 - } + val version = + Version( + versionDescriptor.major, + versionDescriptor.minor, + versionDescriptor.patch, + versionDescriptor.preRelease, + versionDescriptor.buildMetadata, + ) + val endVersion = + when { + versionDescriptor.majorString != "0" -> version.nextMajor(preRelease = "") + versionDescriptor.minorString != "0" -> version.nextMinor(preRelease = "") + versionDescriptor.patchString != "0" -> version.nextPatch(preRelease = "") + else -> Version(patch = 1, preRelease = "") // ^0.0.0 -> <0.0.1-0 + } Range( start = Condition(Op.GREATER_THAN_OR_EQUAL, version), end = Condition(Op.LESS_THAN, endVersion), - Op.EQUAL + Op.EQUAL, ) } } @@ -76,7 +91,7 @@ internal class CaretComparatorBuilder : ComparatorBuilder { Range( VersionComparator.greaterThanMin, Condition(Op.LESS_THAN, Version(major = 1, preRelease = "")), - Op.EQUAL + Op.EQUAL, ) else -> versionDescriptor.toComparator() } @@ -87,14 +102,14 @@ internal class CaretComparatorBuilder : ComparatorBuilder { Range( VersionComparator.greaterThanMin, Condition(Op.LESS_THAN, Version(minor = 1, preRelease = "")), - Op.EQUAL + Op.EQUAL, ) versionDescriptor.majorString != "0" -> { val version = Version(major = versionDescriptor.major, minor = versionDescriptor.minor) Range( Condition(Op.GREATER_THAN_OR_EQUAL, version), Condition(Op.LESS_THAN, version.nextMajor(preRelease = "")), - Op.EQUAL + Op.EQUAL, ) } else -> versionDescriptor.toComparator() diff --git a/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/Condition.kt b/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/Condition.kt index 923d24f..83f0cb1 100644 --- a/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/Condition.kt +++ b/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/Condition.kt @@ -3,7 +3,6 @@ package io.github.z4kn4fein.semver.constraints import io.github.z4kn4fein.semver.Version internal class Condition(private val operator: Op, private val version: Version) : VersionComparator { - override fun isSatisfiedBy(version: Version): Boolean { return when (operator) { Op.EQUAL -> version == this.version diff --git a/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/ConditionProcessor.kt b/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/ConditionProcessor.kt index 8646172..824e5e7 100644 --- a/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/ConditionProcessor.kt +++ b/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/ConditionProcessor.kt @@ -4,16 +4,18 @@ import io.github.z4kn4fein.semver.Patterns internal interface ConditionProcessor { val regex: Regex + fun processCondition(match: MatchResult): VersionComparator } internal class OperatorConditionProcessor : ConditionProcessor { override val regex: Regex = Patterns.OPERATOR_CONDITION_REGEX.toRegex() - private val comparatorBuilders = arrayOf( - RegularComparatorBuilder(), - TildeComparatorBuilder(), - CaretComparatorBuilder() - ) + private val comparatorBuilders = + arrayOf( + RegularComparatorBuilder(), + TildeComparatorBuilder(), + CaretComparatorBuilder(), + ) @Suppress("MagicNumber") override fun processCondition(match: MatchResult): VersionComparator { @@ -31,7 +33,7 @@ internal class OperatorConditionProcessor : ConditionProcessor { } throw ConstraintFormatException( "Invalid constraint operator: " + - "$operator in $descriptor" + "$operator in $descriptor", ) } } @@ -41,24 +43,26 @@ internal class HyphenConditionProcessor : ConditionProcessor { @Suppress("MagicNumber") override fun processCondition(match: MatchResult): VersionComparator { - val start = VersionDescriptor( - majorString = match.groups[1]?.value ?: "", - minorString = match.groups[2]?.value, - patchString = match.groups[3]?.value, - preRelease = match.groups[4]?.value, - buildMetadata = match.groups[5]?.value - ) - val end = VersionDescriptor( - majorString = match.groups[6]?.value ?: "", - minorString = match.groups[7]?.value, - patchString = match.groups[8]?.value, - preRelease = match.groups[9]?.value, - buildMetadata = match.groups[10]?.value - ) + val start = + VersionDescriptor( + majorString = match.groups[1]?.value ?: "", + minorString = match.groups[2]?.value, + patchString = match.groups[3]?.value, + preRelease = match.groups[4]?.value, + buildMetadata = match.groups[5]?.value, + ) + val end = + VersionDescriptor( + majorString = match.groups[6]?.value ?: "", + minorString = match.groups[7]?.value, + patchString = match.groups[8]?.value, + preRelease = match.groups[9]?.value, + buildMetadata = match.groups[10]?.value, + ) return Range( start.toComparator(Op.GREATER_THAN_OR_EQUAL), end.toComparator(Op.LESS_THAN_OR_EQUAL), - Op.EQUAL + Op.EQUAL, ) } } diff --git a/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/Constraint.kt b/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/Constraint.kt index 98d5f4e..edaf477 100644 --- a/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/Constraint.kt +++ b/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/Constraint.kt @@ -33,10 +33,11 @@ public class Constraint private constructor(private val comparators: List part.isNotBlank() } - val comparators = orParts.map { comparator -> - val conditionsResult = mutableListOf() - var processed = comparator - conditionProcessors.forEach { processor -> - processed = processed.replace(processor.regex) { condition -> - conditionsResult.add(processor.processCondition(condition)) - "" + val comparators = + orParts.map { comparator -> + val conditionsResult = mutableListOf() + var processed = comparator + conditionProcessors.forEach { processor -> + processed = + processed.replace(processor.regex) { condition -> + conditionsResult.add(processor.processCondition(condition)) + "" + } + } + when { + processed.isNotBlank() -> throw ConstraintFormatException("Invalid constraint: $comparator") + else -> conditionsResult } } - when { - processed.isNotBlank() -> throw ConstraintFormatException("Invalid constraint: $comparator") - else -> conditionsResult - } - } return when { comparators.isEmpty() || comparators.all { it.isEmpty() } -> throw ConstraintFormatException("Invalid constraint: $constraintString") diff --git a/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/ConstraintExtensions.kt b/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/ConstraintExtensions.kt index fb1e1e6..0107d49 100644 --- a/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/ConstraintExtensions.kt +++ b/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/ConstraintExtensions.kt @@ -15,7 +15,10 @@ public infix fun Constraint.satisfiedBy(version: Version): Boolean = this.isSati * @sample io.github.z4kn4fein.semver.samples.ConstraintSamples.satisfiedByAll */ public infix fun Constraint.satisfiedByAll(versions: Iterable): Boolean = - versions.all { version -> this.isSatisfiedBy(version) } + versions.all { + version -> + this.isSatisfiedBy(version) + } /** * Determines whether a [Constraint] is satisfied by at least one [Version] in a collection or not. @@ -23,7 +26,10 @@ public infix fun Constraint.satisfiedByAll(versions: Iterable): Boolean * @sample io.github.z4kn4fein.semver.samples.ConstraintSamples.satisfiedByAny */ public infix fun Constraint.satisfiedByAny(versions: Iterable): Boolean = - versions.any { version -> this.isSatisfiedBy(version) } + versions.any { + version -> + this.isSatisfiedBy(version) + } /** * Parses the string as a [Constraint] and returns the result or throws a [ConstraintFormatException] @@ -39,4 +45,9 @@ public fun String.toConstraint(): Constraint = Constraint.parse(this) * * @sample io.github.z4kn4fein.semver.samples.ConstraintSamples.toConstraintOrNull */ -public fun String.toConstraintOrNull(): Constraint? = try { this.toConstraint() } catch (_: Exception) { null } +public fun String.toConstraintOrNull(): Constraint? = + try { + this.toConstraint() + } catch (_: Exception) { + null + } diff --git a/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/ConstraintSerializer.kt b/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/ConstraintSerializer.kt index 7763e3e..3acf850 100644 --- a/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/ConstraintSerializer.kt +++ b/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/ConstraintSerializer.kt @@ -15,6 +15,11 @@ import kotlinx.serialization.encoding.Encoder */ public object ConstraintSerializer : KSerializer { override fun deserialize(decoder: Decoder): Constraint = decoder.decodeString().toConstraint() - override fun serialize(encoder: Encoder, value: Constraint): Unit = encoder.encodeString(value.toString()) + + override fun serialize( + encoder: Encoder, + value: Constraint, + ): Unit = encoder.encodeString(value.toString()) + override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("Constraint", PrimitiveKind.STRING) } diff --git a/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/Op.kt b/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/Op.kt index c5d2d32..b5c8905 100644 --- a/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/Op.kt +++ b/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/Op.kt @@ -6,7 +6,8 @@ internal enum class Op(private val stringValue: String) { LESS_THAN("<"), LESS_THAN_OR_EQUAL("<="), GREATER_THAN(">"), - GREATER_THAN_OR_EQUAL(">="); + GREATER_THAN_OR_EQUAL(">="), + ; override fun toString(): String { return stringValue diff --git a/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/Range.kt b/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/Range.kt index e8ea956..bc461fd 100644 --- a/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/Range.kt +++ b/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/Range.kt @@ -5,9 +5,8 @@ import io.github.z4kn4fein.semver.Version internal class Range( private val start: VersionComparator, private val end: VersionComparator, - private val operator: Op + private val operator: Op, ) : VersionComparator { - override fun isSatisfiedBy(version: Version): Boolean = when (operator) { Op.EQUAL -> start.isSatisfiedBy(version) && end.isSatisfiedBy(version) diff --git a/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/VersionComparator.kt b/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/VersionComparator.kt index 667f109..580882e 100644 --- a/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/VersionComparator.kt +++ b/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/VersionComparator.kt @@ -4,6 +4,7 @@ import io.github.z4kn4fein.semver.Version internal interface VersionComparator { fun isSatisfiedBy(version: Version): Boolean + fun opposite(): String companion object { diff --git a/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/VersionDescriptor.kt b/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/VersionDescriptor.kt index e812d5c..7872a1c 100644 --- a/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/VersionDescriptor.kt +++ b/src/commonMain/kotlin/io/github/z4kn4fein/semver/constraints/VersionDescriptor.kt @@ -9,7 +9,7 @@ internal data class VersionDescriptor( val minorString: String?, val patchString: String?, val preRelease: String? = null, - val buildMetadata: String? = null + val buildMetadata: String? = null, ) { override fun toString(): String { return majorString + @@ -25,14 +25,17 @@ internal data class VersionDescriptor( val isWildcard: Boolean = isMajorWildcard || isMinorWildcard || isPatchWildcard - val major: Int get() = majorString.toIntOrNull() - ?: throw ConstraintFormatException("Invalid MAJOR number in: $this") + val major: Int get() = + majorString.toIntOrNull() + ?: throw ConstraintFormatException("Invalid MAJOR number in: $this") - val minor: Int get() = minorString?.toIntOrNull() - ?: throw ConstraintFormatException("Invalid MINOR number in: $this") + val minor: Int get() = + minorString?.toIntOrNull() + ?: throw ConstraintFormatException("Invalid MINOR number in: $this") - val patch: Int get() = patchString?.toIntOrNull() - ?: throw ConstraintFormatException("Invalid PATCH number in: $this") + val patch: Int get() = + patchString?.toIntOrNull() + ?: throw ConstraintFormatException("Invalid PATCH number in: $this") fun toComparator(operator: Op = Op.EQUAL): VersionComparator { return when { @@ -47,7 +50,7 @@ internal data class VersionDescriptor( Range( start = Condition(Op.GREATER_THAN_OR_EQUAL, version), end = Condition(Op.LESS_THAN, version.nextMajor(preRelease = "")), - operator + operator, ) } isPatchWildcard -> { @@ -56,13 +59,13 @@ internal data class VersionDescriptor( Range( start = Condition(Op.GREATER_THAN_OR_EQUAL, version), end = Condition(Op.LESS_THAN, version.nextMinor(preRelease = "")), - operator + operator, ) } else -> Condition( operator, - Version(major = major, minor = minor, patch = patch, preRelease, buildMetadata) + Version(major = major, minor = minor, patch = patch, preRelease, buildMetadata), ) } } diff --git a/src/commonTest/kotlin/io/github/z4kn4fein/semver/CompareTests.kt b/src/commonTest/kotlin/io/github/z4kn4fein/semver/CompareTests.kt index ca9ce8c..0bdae3d 100644 --- a/src/commonTest/kotlin/io/github/z4kn4fein/semver/CompareTests.kt +++ b/src/commonTest/kotlin/io/github/z4kn4fein/semver/CompareTests.kt @@ -90,15 +90,16 @@ class CompareTests { @Test fun testListOrder() { - val list: List = listOf( - "1.0.1".toVersion(), - "1.0.1-alpha".toVersion(), - "1.0.1-alpha.beta".toVersion(), - "1.0.1-alpha.3".toVersion(), - "1.0.1-alpha.2".toVersion(), - "1.1.0".toVersion(), - "1.1.0+build".toVersion(), - ) + val list: List = + listOf( + "1.0.1".toVersion(), + "1.0.1-alpha".toVersion(), + "1.0.1-alpha.beta".toVersion(), + "1.0.1-alpha.3".toVersion(), + "1.0.1-alpha.2".toVersion(), + "1.1.0".toVersion(), + "1.1.0+build".toVersion(), + ) assertEquals( listOf( @@ -110,7 +111,7 @@ class CompareTests { "1.1.0".toVersion(), "1.1.0+build".toVersion(), ), - list.sorted() + list.sorted(), ) } } diff --git a/src/commonTest/kotlin/io/github/z4kn4fein/semver/ConstraintTests.kt b/src/commonTest/kotlin/io/github/z4kn4fein/semver/ConstraintTests.kt index 9e3ddc8..852746e 100644 --- a/src/commonTest/kotlin/io/github/z4kn4fein/semver/ConstraintTests.kt +++ b/src/commonTest/kotlin/io/github/z4kn4fein/semver/ConstraintTests.kt @@ -149,183 +149,184 @@ class ConstraintTests { @Test fun testSatisfies() { - val data: List> = listOf( - Pair("<\t1.0.0", "0.1.2"), - Pair("1.2.3", "1.2.3"), - Pair("=1.2.3", "1.2.3"), - Pair("!=1.2.3", "1.2.4"), - Pair("1.0.0 - 2.0.0", "1.2.3"), - Pair("^1.2.3+build", "1.2.3"), - Pair("^1.2.3+build", "1.3.0"), - Pair("x - 1.0.0", "0.9.7"), - Pair("x - 1.x", "0.9.7"), - Pair("1.0.0 - x", "1.9.7"), - Pair("1.x - x", "1.9.7"), - Pair("1.1 - 2", "1.1.1"), - Pair("1 - 2", "2.0.0-alpha"), - Pair("1 - 2", "1.0.0"), - Pair("1.0 - 2", "1.0.0"), - Pair("1.2.3-alpha+beta - 2.4.5-alpha+beta", "1.2.3"), - Pair("1.2.3-alpha+beta - 2.4.5-alpha+beta", "1.2.3-alpha.2"), - Pair("1.2.3-alpha+beta - 2.4.5-alpha+beta", "2.4.5-alpha"), - Pair("1.2.3+beta - 2.4.3+beta", "1.2.3"), - Pair("1.0.0", "1.0.0"), - Pair(">=1.0.0", "1.0.0"), - Pair(">=1.0.0", "1.0.1"), - Pair(">=1.0.0", "1.1.0"), - Pair(">1.0.0", "1.0.1"), - Pair(">1.0.0", "1.1.0"), - Pair("<=2.0.0", "2.0.0"), - Pair("<=2.0.0", "1.9.9"), - Pair("<=2.0.0", "0.1.2"), - Pair("<2.0.0", "1.9.9"), - Pair("<2.0.0", "0.1.2"), - Pair(">= 1.0.0", "1.0.0"), - Pair(">= 1.0.0", "1.0.1"), - Pair(">= 1.0.0", "1.1.0"), - Pair("> 1.0.0", "1.0.1"), - Pair("> 1.0.0", "1.1.0"), - Pair("<= 2.0.0", "2.0.0"), - Pair("<= 2.0.0", "1.9.9"), - Pair("<= 2.0.0", "0.1.2"), - Pair("< 2.0.0", "1.9.9"), - Pair(">=0.1.2", "0.1.2"), - Pair(">1.1 <2", "1.2.1"), - Pair("0.1.2 || 1.2.4", "1.2.4"), - Pair("0.1.2 | 1.2.4", "1.2.4"), - Pair(">=0.1.2 || <0.0.1", "0.0.0"), - Pair(">=0.1.2 || <0.0.1", "0.1.2"), - Pair(">=0.1.2 || <0.0.1", "0.1.3"), - Pair(">=0.1.2 | <0.0.1", "0.0.0"), - Pair(">=0.1.2 | <0.0.1", "0.1.2"), - Pair(">=0.1.2 | <0.0.1", "0.1.3"), - Pair(">=0.1.2|<0.0.1", "0.0.0"), - Pair(">=0.1.2|<0.0.1", "0.1.2"), - Pair(">=0.1.2|<0.0.1", "0.1.3"), - Pair(">=1.1 <2 !=1.2.3 || > 3", "4.1.2"), - Pair(">=1.1 <2 !=1.2.3 || >= 3", "3.0.0"), - Pair(">=1", "1.0.0"), - Pair(">= 1", "1.0.0"), - Pair("<1.2", "1.1.1"), - Pair("< 1.2", "1.1.1"), - Pair("=0.7.x", "0.7.2"), - Pair("<=0.7.x", "0.7.2"), - Pair(">=0.7.x", "0.7.2"), - Pair("<=0.7.x", "0.6.2"), - Pair("2.x.x", "2.1.3"), - Pair("1.2.x", "1.2.3"), - Pair("1.2.x || 2.x", "2.1.3"), - Pair("1.2.x || 2.x", "1.2.3"), - Pair("4.1", "4.1.0"), - Pair("4.1.x", "4.1.3"), - Pair("1.x", "1.4.0"), - Pair("x", "1.2.3"), - Pair("2.*.*", "2.1.3"), - Pair("1.2.*", "1.2.3"), - Pair("1.2.* || 2.*", "2.1.3"), - Pair("1.2.* || 2.*", "1.2.3"), - Pair("*", "1.2.3"), - Pair(">=*", "0.2.4"), - Pair("*", "1.0.0-beta"), - Pair("2", "2.1.2"), - Pair("2.3", "2.3.1"), - Pair("~0.0.1", "0.0.1"), - Pair("~0.0.1", "0.0.2"), - Pair("~x", "0.0.9"), - Pair("~2", "2.0.9"), - Pair("~2.4", "2.4.0"), - Pair("~2.4", "2.4.5"), - Pair("~>3.2.1", "3.2.2"), - Pair("~1", "1.2.3"), - Pair("~>1", "1.2.3"), - Pair("~> 1", "1.2.3"), - Pair("~1.0", "1.0.2"), - Pair("~ 1.0", "1.0.2"), - Pair("~ 1.0.3", "1.0.12"), - Pair("~ 1.0.3-alpha", "1.0.12"), - Pair("~0.5.4-alpha", "0.5.5"), - Pair("~0.5.4-alpha", "0.5.4"), - Pair("~1.2.1 >=1.2.3", "1.2.3"), - Pair("~1.2.1 =1.2.3", "1.2.3"), - Pair("~1.2.1 1.2.3", "1.2.3"), - Pair("~1.2.1 >=1.2.3 1.2.3", "1.2.3"), - Pair("~1.2.1 1.2.3 >=1.2.3", "1.2.3"), - Pair("~1.2.1 1.2.3", "1.2.3"), - Pair("~*", "2.1.1"), - Pair("~1", "1.3.5"), - Pair("~1.x", "1.3.5"), - Pair("~1.3.5-alpha", "1.3.5-beta"), - Pair("~1.x", "1.2.3"), - Pair("~1.1", "1.1.1"), - Pair("~1.2.3", "1.2.5"), - Pair("~0.0.0", "0.0.1"), - Pair("~1.2.3-beta.2", "1.2.4-beta.2"), - Pair(">=1.2.1 1.2.3", "1.2.3"), - Pair("1.2.3 >=1.2.1", "1.2.3"), - Pair(">=1.2.3 >=1.2.1", "1.2.3"), - Pair(">=1.2.1 >=1.2.3", "1.2.3"), - Pair(">=1.2", "1.2.8"), - Pair("^1.2.3", "1.8.1"), - Pair("^0.1.2", "0.1.2"), - Pair("^0.1", "0.1.2"), - Pair("^0.0.1", "0.0.1"), - Pair("^1.2", "1.4.2"), - Pair("^1.2 ^1", "1.4.2"), - Pair("^1.2.3-alpha", "1.2.3-alpha"), - Pair("^1.2.0-alpha", "1.2.0-alpha"), - Pair("^0.0.1-alpha", "0.0.1-beta"), - Pair("^0.0.1-alpha", "0.0.1"), - Pair("^0.1.1-alpha", "0.1.1-beta"), - Pair("^x", "1.2.3"), - Pair("<=7.x", "7.9.9"), - Pair("2.x", "2.0.0"), - Pair("2.x", "2.1.0-alpha.0"), - Pair("1.1.x", "1.1.0"), - Pair("1.1.x", "1.1.1-a"), - Pair("^1.0.0-0", "1.0.1-beta"), - Pair("^1.0.0-beta", "1.0.1-beta"), - Pair("^1.0.0", "1.0.1-beta"), - Pair("^1.0.0", "1.1.0-beta"), - Pair("^1.2.3", "1.8.9"), - Pair("^1.2.0-alpha.0", "1.2.1-alpha.0"), - Pair("^1.2.0-alpha.0", "1.2.1-alpha.1"), - Pair("^1.2", "1.8.9"), - Pair("^1", "1.8.9"), - Pair("^0.2.3", "0.2.5"), - Pair("^0.2", "0.2.5"), - Pair("^0.0.3", "0.0.3"), - Pair("^0.0", "0.0.3"), - Pair("^0", "0.2.3"), - Pair("^0.2.3-beta.2", "0.2.3-beta.4"), - Pair("^1.1", "1.1.1"), - Pair("^1.x", "1.1.1"), - Pair("^1.1.0", "1.1.1-alpha.1"), - Pair("^1.1.1-alpha", "1.1.1-beta"), - Pair("^0.1.2-alpha.1", "0.1.2-alpha.1"), - Pair("^0.1.2-alpha.1", "0.1.3-alpha.1"), - Pair("^0.0.1", "0.0.1"), - Pair("=0.7.x", "0.7.0"), - Pair(">=0.7.x", "0.7.0"), - Pair("<=0.7.x", "0.7.0"), - Pair(">=1.0.0 <=1.1.0", "1.1.0-alpha"), - Pair("= 2.0", "2.0.0"), - Pair("!=1.1", "1.0.0"), - Pair("!=1.1", "1.2.3"), - Pair("!=1.x", "2.1.0"), - Pair("!=1.x", "1.0.0-alpha"), - Pair("!=1.1.x", "1.0.0"), - Pair("!=1.1.x", "1.2.3"), - Pair(">=1.1", "4.1.0"), - Pair("<=1.1", "1.1.0"), - Pair("<=1.1", "0.1.0"), - Pair(">=1.1", "1.1.0"), - Pair("<=1.1", "1.1.1"), - Pair("<=1.x", "1.1.0"), - Pair(">1.1", "4.1.0"), - Pair("<1.1", "0.1.0"), - Pair("<2.x", "1.1.1"), - Pair("<1.2.x", "1.1.1"), - ) + val data: List> = + listOf( + Pair("<\t1.0.0", "0.1.2"), + Pair("1.2.3", "1.2.3"), + Pair("=1.2.3", "1.2.3"), + Pair("!=1.2.3", "1.2.4"), + Pair("1.0.0 - 2.0.0", "1.2.3"), + Pair("^1.2.3+build", "1.2.3"), + Pair("^1.2.3+build", "1.3.0"), + Pair("x - 1.0.0", "0.9.7"), + Pair("x - 1.x", "0.9.7"), + Pair("1.0.0 - x", "1.9.7"), + Pair("1.x - x", "1.9.7"), + Pair("1.1 - 2", "1.1.1"), + Pair("1 - 2", "2.0.0-alpha"), + Pair("1 - 2", "1.0.0"), + Pair("1.0 - 2", "1.0.0"), + Pair("1.2.3-alpha+beta - 2.4.5-alpha+beta", "1.2.3"), + Pair("1.2.3-alpha+beta - 2.4.5-alpha+beta", "1.2.3-alpha.2"), + Pair("1.2.3-alpha+beta - 2.4.5-alpha+beta", "2.4.5-alpha"), + Pair("1.2.3+beta - 2.4.3+beta", "1.2.3"), + Pair("1.0.0", "1.0.0"), + Pair(">=1.0.0", "1.0.0"), + Pair(">=1.0.0", "1.0.1"), + Pair(">=1.0.0", "1.1.0"), + Pair(">1.0.0", "1.0.1"), + Pair(">1.0.0", "1.1.0"), + Pair("<=2.0.0", "2.0.0"), + Pair("<=2.0.0", "1.9.9"), + Pair("<=2.0.0", "0.1.2"), + Pair("<2.0.0", "1.9.9"), + Pair("<2.0.0", "0.1.2"), + Pair(">= 1.0.0", "1.0.0"), + Pair(">= 1.0.0", "1.0.1"), + Pair(">= 1.0.0", "1.1.0"), + Pair("> 1.0.0", "1.0.1"), + Pair("> 1.0.0", "1.1.0"), + Pair("<= 2.0.0", "2.0.0"), + Pair("<= 2.0.0", "1.9.9"), + Pair("<= 2.0.0", "0.1.2"), + Pair("< 2.0.0", "1.9.9"), + Pair(">=0.1.2", "0.1.2"), + Pair(">1.1 <2", "1.2.1"), + Pair("0.1.2 || 1.2.4", "1.2.4"), + Pair("0.1.2 | 1.2.4", "1.2.4"), + Pair(">=0.1.2 || <0.0.1", "0.0.0"), + Pair(">=0.1.2 || <0.0.1", "0.1.2"), + Pair(">=0.1.2 || <0.0.1", "0.1.3"), + Pair(">=0.1.2 | <0.0.1", "0.0.0"), + Pair(">=0.1.2 | <0.0.1", "0.1.2"), + Pair(">=0.1.2 | <0.0.1", "0.1.3"), + Pair(">=0.1.2|<0.0.1", "0.0.0"), + Pair(">=0.1.2|<0.0.1", "0.1.2"), + Pair(">=0.1.2|<0.0.1", "0.1.3"), + Pair(">=1.1 <2 !=1.2.3 || > 3", "4.1.2"), + Pair(">=1.1 <2 !=1.2.3 || >= 3", "3.0.0"), + Pair(">=1", "1.0.0"), + Pair(">= 1", "1.0.0"), + Pair("<1.2", "1.1.1"), + Pair("< 1.2", "1.1.1"), + Pair("=0.7.x", "0.7.2"), + Pair("<=0.7.x", "0.7.2"), + Pair(">=0.7.x", "0.7.2"), + Pair("<=0.7.x", "0.6.2"), + Pair("2.x.x", "2.1.3"), + Pair("1.2.x", "1.2.3"), + Pair("1.2.x || 2.x", "2.1.3"), + Pair("1.2.x || 2.x", "1.2.3"), + Pair("4.1", "4.1.0"), + Pair("4.1.x", "4.1.3"), + Pair("1.x", "1.4.0"), + Pair("x", "1.2.3"), + Pair("2.*.*", "2.1.3"), + Pair("1.2.*", "1.2.3"), + Pair("1.2.* || 2.*", "2.1.3"), + Pair("1.2.* || 2.*", "1.2.3"), + Pair("*", "1.2.3"), + Pair(">=*", "0.2.4"), + Pair("*", "1.0.0-beta"), + Pair("2", "2.1.2"), + Pair("2.3", "2.3.1"), + Pair("~0.0.1", "0.0.1"), + Pair("~0.0.1", "0.0.2"), + Pair("~x", "0.0.9"), + Pair("~2", "2.0.9"), + Pair("~2.4", "2.4.0"), + Pair("~2.4", "2.4.5"), + Pair("~>3.2.1", "3.2.2"), + Pair("~1", "1.2.3"), + Pair("~>1", "1.2.3"), + Pair("~> 1", "1.2.3"), + Pair("~1.0", "1.0.2"), + Pair("~ 1.0", "1.0.2"), + Pair("~ 1.0.3", "1.0.12"), + Pair("~ 1.0.3-alpha", "1.0.12"), + Pair("~0.5.4-alpha", "0.5.5"), + Pair("~0.5.4-alpha", "0.5.4"), + Pair("~1.2.1 >=1.2.3", "1.2.3"), + Pair("~1.2.1 =1.2.3", "1.2.3"), + Pair("~1.2.1 1.2.3", "1.2.3"), + Pair("~1.2.1 >=1.2.3 1.2.3", "1.2.3"), + Pair("~1.2.1 1.2.3 >=1.2.3", "1.2.3"), + Pair("~1.2.1 1.2.3", "1.2.3"), + Pair("~*", "2.1.1"), + Pair("~1", "1.3.5"), + Pair("~1.x", "1.3.5"), + Pair("~1.3.5-alpha", "1.3.5-beta"), + Pair("~1.x", "1.2.3"), + Pair("~1.1", "1.1.1"), + Pair("~1.2.3", "1.2.5"), + Pair("~0.0.0", "0.0.1"), + Pair("~1.2.3-beta.2", "1.2.4-beta.2"), + Pair(">=1.2.1 1.2.3", "1.2.3"), + Pair("1.2.3 >=1.2.1", "1.2.3"), + Pair(">=1.2.3 >=1.2.1", "1.2.3"), + Pair(">=1.2.1 >=1.2.3", "1.2.3"), + Pair(">=1.2", "1.2.8"), + Pair("^1.2.3", "1.8.1"), + Pair("^0.1.2", "0.1.2"), + Pair("^0.1", "0.1.2"), + Pair("^0.0.1", "0.0.1"), + Pair("^1.2", "1.4.2"), + Pair("^1.2 ^1", "1.4.2"), + Pair("^1.2.3-alpha", "1.2.3-alpha"), + Pair("^1.2.0-alpha", "1.2.0-alpha"), + Pair("^0.0.1-alpha", "0.0.1-beta"), + Pair("^0.0.1-alpha", "0.0.1"), + Pair("^0.1.1-alpha", "0.1.1-beta"), + Pair("^x", "1.2.3"), + Pair("<=7.x", "7.9.9"), + Pair("2.x", "2.0.0"), + Pair("2.x", "2.1.0-alpha.0"), + Pair("1.1.x", "1.1.0"), + Pair("1.1.x", "1.1.1-a"), + Pair("^1.0.0-0", "1.0.1-beta"), + Pair("^1.0.0-beta", "1.0.1-beta"), + Pair("^1.0.0", "1.0.1-beta"), + Pair("^1.0.0", "1.1.0-beta"), + Pair("^1.2.3", "1.8.9"), + Pair("^1.2.0-alpha.0", "1.2.1-alpha.0"), + Pair("^1.2.0-alpha.0", "1.2.1-alpha.1"), + Pair("^1.2", "1.8.9"), + Pair("^1", "1.8.9"), + Pair("^0.2.3", "0.2.5"), + Pair("^0.2", "0.2.5"), + Pair("^0.0.3", "0.0.3"), + Pair("^0.0", "0.0.3"), + Pair("^0", "0.2.3"), + Pair("^0.2.3-beta.2", "0.2.3-beta.4"), + Pair("^1.1", "1.1.1"), + Pair("^1.x", "1.1.1"), + Pair("^1.1.0", "1.1.1-alpha.1"), + Pair("^1.1.1-alpha", "1.1.1-beta"), + Pair("^0.1.2-alpha.1", "0.1.2-alpha.1"), + Pair("^0.1.2-alpha.1", "0.1.3-alpha.1"), + Pair("^0.0.1", "0.0.1"), + Pair("=0.7.x", "0.7.0"), + Pair(">=0.7.x", "0.7.0"), + Pair("<=0.7.x", "0.7.0"), + Pair(">=1.0.0 <=1.1.0", "1.1.0-alpha"), + Pair("= 2.0", "2.0.0"), + Pair("!=1.1", "1.0.0"), + Pair("!=1.1", "1.2.3"), + Pair("!=1.x", "2.1.0"), + Pair("!=1.x", "1.0.0-alpha"), + Pair("!=1.1.x", "1.0.0"), + Pair("!=1.1.x", "1.2.3"), + Pair(">=1.1", "4.1.0"), + Pair("<=1.1", "1.1.0"), + Pair("<=1.1", "0.1.0"), + Pair(">=1.1", "1.1.0"), + Pair("<=1.1", "1.1.1"), + Pair("<=1.x", "1.1.0"), + Pair(">1.1", "4.1.0"), + Pair("<1.1", "0.1.0"), + Pair("<2.x", "1.1.1"), + Pair("<1.2.x", "1.1.1"), + ) data.forEach { assertTrue { it.second.toVersion() satisfies it.first.toConstraint() } @@ -334,182 +335,183 @@ class ConstraintTests { @Test fun testNotSatisfies() { - val data: List> = listOf( - Pair("~1.2.3-alpha.2", "1.3.4-alpha.2"), - Pair("^1.2.3", "2.8.9"), - Pair("^1.2.3", "1.2.1"), - Pair("^1.1.0", "2.1.0"), - Pair("^1.2.0", "2.2.1"), - Pair("^1.2.0-alpha.2", "1.2.0-alpha.1"), - Pair("^1.2", "2.8.9"), - Pair("^1", "2.8.9"), - Pair("^0.2.3", "0.5.6"), - Pair("^0.2", "0.5.6"), - Pair("^0.0.3", "0.0.4"), - Pair("^0.0", "0.1.4"), - Pair("^0.0", "1.0.4"), - Pair("^0", "1.1.4"), - Pair("^0.0.1", "0.0.2-alpha"), - Pair("^0.0.1", "0.0.2"), - Pair("^1.2.3", "2.0.0-alpha"), - Pair("^1.2.3", "1.2.2"), - Pair("^1.2", "1.1.9"), - Pair("^1.0.0", "1.0.0-alpha"), - Pair("^1.0.0", "2.0.0-alpha"), - Pair("^1.2.3-beta", "2.0.0"), - Pair("^1.0.0", "2.0.0-alpha"), - Pair("^1.0.0", "2.0.0-alpha"), - Pair("^1.2.3+build", "2.0.0"), - Pair("^1.2.3+build", "1.2.0"), - Pair("^1.2.3", "1.2.3-beta"), - Pair("^1.2", "1.2.0-beta"), - Pair("^1.1", "1.1.0-alpha"), - Pair("^1.1.1-beta", "1.1.1-alpha"), - Pair("^1.1", "3.0.0"), - Pair("^2.x", "1.1.1"), - Pair("^1.x", "2.1.1"), - Pair("^0.0.1", "0.1.3"), - Pair("1 - 2", "3.0.0-alpha"), - Pair("1 - 2", "1.0.0-alpha"), - Pair("1.0 - 2", "1.0.0-alpha"), - Pair("1.0.0 - 2.0.0", "2.2.3"), - Pair("1.2.3+alpha - 2.4.3+alpha", "1.2.3-alpha.1"), - Pair("1.2.3+alpha - 2.4.3-alpha", "2.4.3-alpha.1"), - Pair("1.1.x", "1.0.0-alpha"), - Pair("1.1.x", "1.1.0-alpha"), - Pair("1.1.x", "1.2.0-alpha"), - Pair("1.1.x", "1.2.0-alpha"), - Pair("1.1.x", "1.0.0-alpha"), - Pair("1.x", "1.0.0-alpha"), - Pair("1.x", "0.0.0-alpha"), - Pair("1.x", "2.0.0-alpha"), - Pair(">1.1", "1.1.0"), - Pair("<1.1", "1.1.0"), - Pair("<1.1", "1.1.1"), - Pair("<1.x", "1.1.1"), - Pair("<1.x", "2.1.1"), - Pair("<1.1.x", "1.2.1"), - Pair("<1.1.x", "1.1.1"), - Pair(">=1.1", "0.0.9"), - Pair("<=2.x", "3.1.0"), - Pair("<=1.1.x", "1.2.1"), - Pair(">1.1 <2", "1.1.1"), - Pair(">1.1 <3", "4.3.2"), - Pair(">=1.1 <2 !=1.1.1", "1.1.1"), - Pair(">=1.1 <2 !=1.1.1 || > 3", "1.1.1"), - Pair(">=1.1 <2 !=1.1.1 || > 3", "3.1.2"), - Pair(">=1.1 <2 !=1.1.1 || > 3", "3.0.0"), - Pair("~1", "2.1.1"), - Pair("~1", "2.0.0-alpha"), - Pair("~1.x", "2.1.1"), - Pair("~1.x", "2.0.0-alpha"), - Pair("~1.3.6-alpha", "1.3.5-beta"), - Pair("~1.3.5-beta", "1.3.5-alpha"), - Pair("~1.2.3", "1.2.2"), - Pair("~1.2.3", "1.3.2"), - Pair("~1.1", "1.2.3"), - Pair("~1.3", "2.4.5"), - Pair(">1.2", "1.2.0"), - Pair("<=1.2.3", "1.2.4-beta"), - Pair("^1.2.3", "1.2.3-beta"), - Pair("=0.7.x", "0.7.0-alpha"), - Pair(">=0.7.x", "0.7.0-alpha"), - Pair("<=0.7.x", "0.8.0-alpha"), - Pair("1", "1.0.0-beta"), - Pair("<1", "1.0.1"), - Pair("< 1", "1.0.1-beta"), - Pair("1.0.0", "1.0.1"), - Pair(">=1.0.0", "0.0.0"), - Pair(">=1.0.0", "0.0.1"), - Pair(">=1.0.0", "0.1.0"), - Pair(">1.0.0", "0.0.1"), - Pair(">1.0.0", "0.1.0"), - Pair("<=2.0.0", "3.0.0"), - Pair("=<2.0.0", "2.1.0"), - Pair("=<2.0.0", "2.0.1"), - Pair("<2.0.0", "2.0.0"), - Pair("<2.0.0", "2.0.1"), - Pair(">=0.1.2", "0.1.1"), - Pair("0.1.1 || 1.2.4", "1.2.3"), - Pair(">=0.1.0 || <0.0.1", "0.0.1"), - Pair(">=0.1.1 || <0.0.1", "0.1.0"), - Pair("2.x.x", "1.1.3",), - Pair("2.x.x", "3.1.3"), - Pair("1.2.X", "1.3.3"), - Pair("1.2.X || 2.x", "3.1.3"), - Pair("1.2.X || 2.x", "1.1.3"), - Pair("2.*.*", "1.1.3"), - Pair("2.*.*", "3.1.3"), - Pair("1.2.*", "1.3.3"), - Pair("2", "1.1.3"), - Pair("2", "3.1.3"), - Pair("1.2", "1.3.3"), - Pair("1.2.* || 2.*", "3.1.3"), - Pair("1.2.* || 2.*", "1.1.3"), - Pair("2", "1.1.2"), - Pair("2.3", "2.4.1"), - Pair("<1", "1.0.0"), - Pair("=>1.2", "1.1.1"), - Pair("1", "2.0.0-beta"), - Pair("~0.1.1-alpha.2", "0.1.1-alpha.1"), - Pair("=0.1.x", "0.2.0"), - Pair(">=0.1.x", "0.0.1"), - Pair("<0.1.x", "0.1.1"), - Pair("<1.2.3", "1.2.4-beta"), - Pair("=1.2.3", "1.2.3-beta"), - Pair(">1.2", "1.2.8"), - Pair("2.x", "3.0.0-beta.0"), - Pair(">=1.0.0 <1.1.0", "1.1.0"), - Pair(">=1.0.0 <1.1.0", "1.1.0"), - Pair(">=1.0.0 <1.1.0-beta", "1.1.0-beta"), - Pair("=2.0.0", "1.2.3"), - Pair("=2.0", "1.2.3"), - Pair("= 2.0", "1.2.3"), - Pair("!=4.1", "4.1.0"), - Pair("!=4.x", "4.1.0"), - Pair("!=4.2.x", "4.2.3"), - Pair("!=1.1.0", "1.1.0"), - Pair("!=1.1", "1.1.0"), - Pair("!=1.1", "1.1.1"), - Pair("!=1.1", "1.1.1-alpha"), - Pair("<1", "1.1.0"), - Pair("<1.1", "1.1.0"), - Pair("<1.1", "1.1.1"), - Pair("<=1", "2.0.0"), - Pair("<=1.1", "1.2.3"), - Pair(">1.1", "1.1.0"), - Pair(">0", "0.0.0"), - Pair(">0", "0.0.1-alpha"), - Pair(">0.0", "0.0.1-alpha"), - Pair(">0", "0.0.0-alpha"), - Pair(">1", "1.1.0"), - Pair(">1.1", "1.1.0"), - Pair(">1.1", "1.1.1"), - Pair(">=1.1", "1.0.2"), - Pair(">=1.1", "0.0.9"), - Pair(">=0", "0.0.0-alpha"), - Pair(">=0.0", "0.0.0-alpha"), - Pair("<0", "0.0.0"), - Pair("=0", "1.0.0"), - Pair("2.*", "3.0.0"), - Pair("2", "2.0.0-alpha"), - Pair("2.1.*", "2.2.1"), - Pair("2", "3.0.0"), - Pair("2.1", "2.2.1"), - Pair("~1.2.3", "1.3.0"), - Pair("~1.2", "1.3.0"), - Pair("~1", "2.0.0"), - Pair("~0.1.2", "0.2.0"), - Pair("~0.0.1", "0.1.0-alpha"), - Pair("~0.0.1", "0.1.0"), - Pair("~2.4", "2.5.0"), - Pair("~2.4", "2.3.9"), - Pair("~>3.2.1", "3.3.2"), - Pair("~>3.2.1", "3.2.0"), - Pair("~1", "0.2.3"), - Pair("~>1", "2.2.3"), - Pair("~1.0", "1.1.0"), - ) + val data: List> = + listOf( + Pair("~1.2.3-alpha.2", "1.3.4-alpha.2"), + Pair("^1.2.3", "2.8.9"), + Pair("^1.2.3", "1.2.1"), + Pair("^1.1.0", "2.1.0"), + Pair("^1.2.0", "2.2.1"), + Pair("^1.2.0-alpha.2", "1.2.0-alpha.1"), + Pair("^1.2", "2.8.9"), + Pair("^1", "2.8.9"), + Pair("^0.2.3", "0.5.6"), + Pair("^0.2", "0.5.6"), + Pair("^0.0.3", "0.0.4"), + Pair("^0.0", "0.1.4"), + Pair("^0.0", "1.0.4"), + Pair("^0", "1.1.4"), + Pair("^0.0.1", "0.0.2-alpha"), + Pair("^0.0.1", "0.0.2"), + Pair("^1.2.3", "2.0.0-alpha"), + Pair("^1.2.3", "1.2.2"), + Pair("^1.2", "1.1.9"), + Pair("^1.0.0", "1.0.0-alpha"), + Pair("^1.0.0", "2.0.0-alpha"), + Pair("^1.2.3-beta", "2.0.0"), + Pair("^1.0.0", "2.0.0-alpha"), + Pair("^1.0.0", "2.0.0-alpha"), + Pair("^1.2.3+build", "2.0.0"), + Pair("^1.2.3+build", "1.2.0"), + Pair("^1.2.3", "1.2.3-beta"), + Pair("^1.2", "1.2.0-beta"), + Pair("^1.1", "1.1.0-alpha"), + Pair("^1.1.1-beta", "1.1.1-alpha"), + Pair("^1.1", "3.0.0"), + Pair("^2.x", "1.1.1"), + Pair("^1.x", "2.1.1"), + Pair("^0.0.1", "0.1.3"), + Pair("1 - 2", "3.0.0-alpha"), + Pair("1 - 2", "1.0.0-alpha"), + Pair("1.0 - 2", "1.0.0-alpha"), + Pair("1.0.0 - 2.0.0", "2.2.3"), + Pair("1.2.3+alpha - 2.4.3+alpha", "1.2.3-alpha.1"), + Pair("1.2.3+alpha - 2.4.3-alpha", "2.4.3-alpha.1"), + Pair("1.1.x", "1.0.0-alpha"), + Pair("1.1.x", "1.1.0-alpha"), + Pair("1.1.x", "1.2.0-alpha"), + Pair("1.1.x", "1.2.0-alpha"), + Pair("1.1.x", "1.0.0-alpha"), + Pair("1.x", "1.0.0-alpha"), + Pair("1.x", "0.0.0-alpha"), + Pair("1.x", "2.0.0-alpha"), + Pair(">1.1", "1.1.0"), + Pair("<1.1", "1.1.0"), + Pair("<1.1", "1.1.1"), + Pair("<1.x", "1.1.1"), + Pair("<1.x", "2.1.1"), + Pair("<1.1.x", "1.2.1"), + Pair("<1.1.x", "1.1.1"), + Pair(">=1.1", "0.0.9"), + Pair("<=2.x", "3.1.0"), + Pair("<=1.1.x", "1.2.1"), + Pair(">1.1 <2", "1.1.1"), + Pair(">1.1 <3", "4.3.2"), + Pair(">=1.1 <2 !=1.1.1", "1.1.1"), + Pair(">=1.1 <2 !=1.1.1 || > 3", "1.1.1"), + Pair(">=1.1 <2 !=1.1.1 || > 3", "3.1.2"), + Pair(">=1.1 <2 !=1.1.1 || > 3", "3.0.0"), + Pair("~1", "2.1.1"), + Pair("~1", "2.0.0-alpha"), + Pair("~1.x", "2.1.1"), + Pair("~1.x", "2.0.0-alpha"), + Pair("~1.3.6-alpha", "1.3.5-beta"), + Pair("~1.3.5-beta", "1.3.5-alpha"), + Pair("~1.2.3", "1.2.2"), + Pair("~1.2.3", "1.3.2"), + Pair("~1.1", "1.2.3"), + Pair("~1.3", "2.4.5"), + Pair(">1.2", "1.2.0"), + Pair("<=1.2.3", "1.2.4-beta"), + Pair("^1.2.3", "1.2.3-beta"), + Pair("=0.7.x", "0.7.0-alpha"), + Pair(">=0.7.x", "0.7.0-alpha"), + Pair("<=0.7.x", "0.8.0-alpha"), + Pair("1", "1.0.0-beta"), + Pair("<1", "1.0.1"), + Pair("< 1", "1.0.1-beta"), + Pair("1.0.0", "1.0.1"), + Pair(">=1.0.0", "0.0.0"), + Pair(">=1.0.0", "0.0.1"), + Pair(">=1.0.0", "0.1.0"), + Pair(">1.0.0", "0.0.1"), + Pair(">1.0.0", "0.1.0"), + Pair("<=2.0.0", "3.0.0"), + Pair("=<2.0.0", "2.1.0"), + Pair("=<2.0.0", "2.0.1"), + Pair("<2.0.0", "2.0.0"), + Pair("<2.0.0", "2.0.1"), + Pair(">=0.1.2", "0.1.1"), + Pair("0.1.1 || 1.2.4", "1.2.3"), + Pair(">=0.1.0 || <0.0.1", "0.0.1"), + Pair(">=0.1.1 || <0.0.1", "0.1.0"), + Pair("2.x.x", "1.1.3"), + Pair("2.x.x", "3.1.3"), + Pair("1.2.X", "1.3.3"), + Pair("1.2.X || 2.x", "3.1.3"), + Pair("1.2.X || 2.x", "1.1.3"), + Pair("2.*.*", "1.1.3"), + Pair("2.*.*", "3.1.3"), + Pair("1.2.*", "1.3.3"), + Pair("2", "1.1.3"), + Pair("2", "3.1.3"), + Pair("1.2", "1.3.3"), + Pair("1.2.* || 2.*", "3.1.3"), + Pair("1.2.* || 2.*", "1.1.3"), + Pair("2", "1.1.2"), + Pair("2.3", "2.4.1"), + Pair("<1", "1.0.0"), + Pair("=>1.2", "1.1.1"), + Pair("1", "2.0.0-beta"), + Pair("~0.1.1-alpha.2", "0.1.1-alpha.1"), + Pair("=0.1.x", "0.2.0"), + Pair(">=0.1.x", "0.0.1"), + Pair("<0.1.x", "0.1.1"), + Pair("<1.2.3", "1.2.4-beta"), + Pair("=1.2.3", "1.2.3-beta"), + Pair(">1.2", "1.2.8"), + Pair("2.x", "3.0.0-beta.0"), + Pair(">=1.0.0 <1.1.0", "1.1.0"), + Pair(">=1.0.0 <1.1.0", "1.1.0"), + Pair(">=1.0.0 <1.1.0-beta", "1.1.0-beta"), + Pair("=2.0.0", "1.2.3"), + Pair("=2.0", "1.2.3"), + Pair("= 2.0", "1.2.3"), + Pair("!=4.1", "4.1.0"), + Pair("!=4.x", "4.1.0"), + Pair("!=4.2.x", "4.2.3"), + Pair("!=1.1.0", "1.1.0"), + Pair("!=1.1", "1.1.0"), + Pair("!=1.1", "1.1.1"), + Pair("!=1.1", "1.1.1-alpha"), + Pair("<1", "1.1.0"), + Pair("<1.1", "1.1.0"), + Pair("<1.1", "1.1.1"), + Pair("<=1", "2.0.0"), + Pair("<=1.1", "1.2.3"), + Pair(">1.1", "1.1.0"), + Pair(">0", "0.0.0"), + Pair(">0", "0.0.1-alpha"), + Pair(">0.0", "0.0.1-alpha"), + Pair(">0", "0.0.0-alpha"), + Pair(">1", "1.1.0"), + Pair(">1.1", "1.1.0"), + Pair(">1.1", "1.1.1"), + Pair(">=1.1", "1.0.2"), + Pair(">=1.1", "0.0.9"), + Pair(">=0", "0.0.0-alpha"), + Pair(">=0.0", "0.0.0-alpha"), + Pair("<0", "0.0.0"), + Pair("=0", "1.0.0"), + Pair("2.*", "3.0.0"), + Pair("2", "2.0.0-alpha"), + Pair("2.1.*", "2.2.1"), + Pair("2", "3.0.0"), + Pair("2.1", "2.2.1"), + Pair("~1.2.3", "1.3.0"), + Pair("~1.2", "1.3.0"), + Pair("~1", "2.0.0"), + Pair("~0.1.2", "0.2.0"), + Pair("~0.0.1", "0.1.0-alpha"), + Pair("~0.0.1", "0.1.0"), + Pair("~2.4", "2.5.0"), + Pair("~2.4", "2.3.9"), + Pair("~>3.2.1", "3.3.2"), + Pair("~>3.2.1", "3.2.0"), + Pair("~1", "0.2.3"), + Pair("~>1", "2.2.3"), + Pair("~1.0", "1.1.0"), + ) data.forEach { assertFalse(it.second.toVersion() satisfies it.first.toConstraint()) @@ -518,247 +520,247 @@ class ConstraintTests { @Test fun testParse() { - val data: List> = listOf( - Pair("1.2.3 - 2.3.4", ">=1.2.3 <=2.3.4"), - Pair("1.2.3 - 2.3.4 || 3.0.0 - 4.0.0", ">=1.2.3 <=2.3.4 || >=3.0.0 <=4.0.0"), - Pair("1.2 - 2.3.4", ">=1.2.0 <=2.3.4"), - Pair("1.2.3 - 2.3", ">=1.2.3 <2.4.0-0"), - Pair("1.2.3 - 2", ">=1.2.3 <3.0.0-0"), - Pair("~1.2.3", ">=1.2.3 <1.3.0-0"), - Pair("~1.2", ">=1.2.0 <1.3.0-0"), - Pair("~1", ">=1.0.0 <2.0.0-0"), - Pair("~0.2.3", ">=0.2.3 <0.3.0-0"), - Pair("~0.2", ">=0.2.0 <0.3.0-0"), - Pair("~0", ">=0.0.0 <1.0.0-0"), - Pair("~0.0.0", ">=0.0.0 <0.1.0-0"), - Pair("~0.0", ">=0.0.0 <0.1.0-0"), - Pair("~1.2.3-alpha.1", ">=1.2.3-alpha.1 <1.3.0-0"), - Pair("", ">=0.0.0"), - Pair("*", ">=0.0.0"), - Pair("x", ">=0.0.0"), - Pair("X", ">=0.0.0"), - Pair("1.x", ">=1.0.0 <2.0.0-0"), - Pair("1.2.x", ">=1.2.0 <1.3.0-0"), - Pair("1", ">=1.0.0 <2.0.0-0"), - Pair("1.*", ">=1.0.0 <2.0.0-0"), - Pair("1.*.*", ">=1.0.0 <2.0.0-0"), - Pair("1.x", ">=1.0.0 <2.0.0-0"), - Pair("1.x.x", ">=1.0.0 <2.0.0-0"), - Pair("1.X", ">=1.0.0 <2.0.0-0"), - Pair("1.X.X", ">=1.0.0 <2.0.0-0"), - Pair("1.2", ">=1.2.0 <1.3.0-0"), - Pair("1.2.*", ">=1.2.0 <1.3.0-0"), - Pair("1.2.x", ">=1.2.0 <1.3.0-0"), - Pair("1.2.X", ">=1.2.0 <1.3.0-0"), - Pair("^1.2.3", ">=1.2.3 <2.0.0-0"), - Pair("^0.2.3", ">=0.2.3 <0.3.0-0"), - Pair("^0.0.3", ">=0.0.3 <0.0.4-0"), - Pair("^0", ">=0.0.0 <1.0.0-0"), - Pair("^0.0", ">=0.0.0 <0.1.0-0"), - Pair("^0.0.0", ">=0.0.0 <0.0.1-0"), - Pair("^1.2.3-alpha.1", ">=1.2.3-alpha.1 <2.0.0-0"), - Pair("^0.0.1-alpha", ">=0.0.1-alpha <0.0.2-0"), - Pair("^0.0.*", ">=0.0.0 <0.1.0-0"), - Pair("^1.2.*", ">=1.2.0 <2.0.0-0"), - Pair("^1.*", ">=1.0.0 <2.0.0-0"), - Pair("^0.*", ">=0.0.0 <1.0.0-0"), - Pair("1.0.0 - 2.0.0", ">=1.0.0 <=2.0.0"), - Pair("1 - 2", ">=1.0.0 <3.0.0-0"), - Pair("1.0 - 2.0", ">=1.0.0 <2.1.0-0"), - Pair("1.0.0", "=1.0.0"), - Pair(">=*", ">=0.0.0"), - Pair(">=1.0.0", ">=1.0.0"), - Pair(">1.0.0", ">1.0.0"), - Pair("<=2.0.0", "<=2.0.0"), - Pair("<=2.0.0", "<=2.0.0"), - Pair("<2.0.0", "<2.0.0"), - Pair("<\t2.0.0", "<2.0.0"), - Pair("<= 2.0.0", "<=2.0.0"), - Pair("<= 2.0.0", "<=2.0.0"), - Pair("< 2.0.0", "<2.0.0"), - Pair("< 2.0", "<2.0.0"), - Pair("<= 2.0", "<2.1.0-0"), - Pair(">= 1.0.0", ">=1.0.0"), - Pair(">= 1.0.0", ">=1.0.0"), - Pair(">= 1.0.0", ">=1.0.0"), - Pair("> 1.0.0", ">1.0.0"), - Pair("> 1.0.0", ">1.0.0"), - Pair("<= 2.0.0", "<=2.0.0"), - Pair("0.1.0 || 1.2.3", "=0.1.0 || =1.2.3"), - Pair(">=0.1.0 || <0.0.1", ">=0.1.0 || <0.0.1"), - Pair("0.1.0 | 1.2.3", "=0.1.0 || =1.2.3"), - Pair(">=0.1.0|<0.0.1", ">=0.1.0 || <0.0.1"), - Pair("2.x.x", ">=2.0.0 <3.0.0-0"), - Pair("1.2.x", ">=1.2.0 <1.3.0-0"), - Pair("1.2.x || 2.x", ">=1.2.0 <1.3.0-0 || >=2.0.0 <3.0.0-0"), - Pair("1.2.x || 2.x", ">=1.2.0 <1.3.0-0 || >=2.0.0 <3.0.0-0"), - Pair("1.2.x|2.x", ">=1.2.0 <1.3.0-0 || >=2.0.0 <3.0.0-0"), - Pair("x", ">=0.0.0"), - Pair("2.*.*", ">=2.0.0 <3.0.0-0"), - Pair("1.2.*", ">=1.2.0 <1.3.0-0"), - Pair("1.2.* || 2.*", ">=1.2.0 <1.3.0-0 || >=2.0.0 <3.0.0-0"), - Pair("1.2.*|2.*", ">=1.2.0 <1.3.0-0 || >=2.0.0 <3.0.0-0"), - Pair("*", ">=0.0.0"), - Pair("2", ">=2.0.0 <3.0.0-0"), - Pair("2.3", ">=2.3.0 <2.4.0-0"), - Pair("~2.4", ">=2.4.0 <2.5.0-0"), - Pair("~2.4", ">=2.4.0 <2.5.0-0"), - Pair("~>3.2.1", ">=3.2.1 <3.3.0-0"), - Pair("~1", ">=1.0.0 <2.0.0-0"), - Pair("~>1", ">=1.0.0 <2.0.0-0"), - Pair("~> 1", ">=1.0.0 <2.0.0-0"), - Pair("~1.0", ">=1.0.0 <1.1.0-0"), - Pair("~ 1.0", ">=1.0.0 <1.1.0-0"), - Pair("^0", ">=0.0.0 <1.0.0-0"), - Pair("^ 1", ">=1.0.0 <2.0.0-0"), - Pair("^0.1", ">=0.1.0 <0.2.0-0"), - Pair("^1.0", ">=1.0.0 <2.0.0-0"), - Pair("^1.2", ">=1.2.0 <2.0.0-0"), - Pair("^0.0.1", ">=0.0.1 <0.0.2-0"), - Pair("^0.0.1-beta", ">=0.0.1-beta <0.0.2-0"), - Pair("^0.1.2", ">=0.1.2 <0.2.0-0"), - Pair("^1.2.3", ">=1.2.3 <2.0.0-0"), - Pair("^1.2.3-beta.4", ">=1.2.3-beta.4 <2.0.0-0"), - Pair("<1", "<1.0.0"), - Pair("< 1", "<1.0.0"), - Pair("= 1", ">=1.0.0 <2.0.0-0"), - Pair("!= 1", "<1.0.0 || >=2.0.0-0"), - Pair(">=1", ">=1.0.0"), - Pair(">= 1", ">=1.0.0"), - Pair("<1.2", "<1.2.0"), - Pair("< 1.2", "<1.2.0"), - Pair("1", ">=1.0.0 <2.0.0-0"), - Pair("^ 1.2 ^ 1", ">=1.2.0 <2.0.0-0 >=1.0.0 <2.0.0-0"), - Pair("1.2 - 3.4.5", ">=1.2.0 <=3.4.5"), - Pair("1.2.3 - 3.4", ">=1.2.3 <3.5.0-0"), - Pair("1.2 - 3.4", ">=1.2.0 <3.5.0-0"), - Pair(">1", ">=2.0.0-0"), - Pair(">1.2", ">=1.3.0-0"), - Pair("<*", "<0.0.0-0"), - Pair(">*", "<0.0.0-0"), - Pair("!=*", "<0.0.0-0"), - Pair(">=*", ">=0.0.0"), - Pair("<=*", ">=0.0.0"), - Pair("=*", ">=0.0.0"), - - Pair("v1.2.3 - v2.3.4", ">=1.2.3 <=2.3.4"), - Pair("v1.2.3 - v2.3.4 || 3.0.0 - 4.0.0", ">=1.2.3 <=2.3.4 || >=3.0.0 <=4.0.0"), - Pair("v1.2 - v2.3.4", ">=1.2.0 <=2.3.4"), - Pair("v1.2.3 - v2.3", ">=1.2.3 <2.4.0-0"), - Pair("v1.2.3 - v2", ">=1.2.3 <3.0.0-0"), - Pair("~v1.2.3", ">=1.2.3 <1.3.0-0"), - Pair("~v1.2", ">=1.2.0 <1.3.0-0"), - Pair("~v1", ">=1.0.0 <2.0.0-0"), - Pair("~v0.2.3", ">=0.2.3 <0.3.0-0"), - Pair("~v0.2", ">=0.2.0 <0.3.0-0"), - Pair("~v0", ">=0.0.0 <1.0.0-0"), - Pair("~v0.0.0", ">=0.0.0 <0.1.0-0"), - Pair("~v0.0", ">=0.0.0 <0.1.0-0"), - Pair("~v1.2.3-alpha.1", ">=1.2.3-alpha.1 <1.3.0-0"), - Pair("v*", ">=0.0.0"), - Pair("vx", ">=0.0.0"), - Pair("vX", ">=0.0.0"), - Pair("v1.x", ">=1.0.0 <2.0.0-0"), - Pair("v1.2.x", ">=1.2.0 <1.3.0-0"), - Pair("v1", ">=1.0.0 <2.0.0-0"), - Pair("v1.*", ">=1.0.0 <2.0.0-0"), - Pair("v1.*.*", ">=1.0.0 <2.0.0-0"), - Pair("v1.x", ">=1.0.0 <2.0.0-0"), - Pair("v1.x.x", ">=1.0.0 <2.0.0-0"), - Pair("v1.X", ">=1.0.0 <2.0.0-0"), - Pair("v1.X.X", ">=1.0.0 <2.0.0-0"), - Pair("v1.2", ">=1.2.0 <1.3.0-0"), - Pair("v1.2.*", ">=1.2.0 <1.3.0-0"), - Pair("v1.2.x", ">=1.2.0 <1.3.0-0"), - Pair("v1.2.X", ">=1.2.0 <1.3.0-0"), - Pair("^v1.2.3", ">=1.2.3 <2.0.0-0"), - Pair("^v0.2.3", ">=0.2.3 <0.3.0-0"), - Pair("^v0.0.3", ">=0.0.3 <0.0.4-0"), - Pair("^v0", ">=0.0.0 <1.0.0-0"), - Pair("^v0.0", ">=0.0.0 <0.1.0-0"), - Pair("^v0.0.0", ">=0.0.0 <0.0.1-0"), - Pair("^v1.2.3-alpha.1", ">=1.2.3-alpha.1 <2.0.0-0"), - Pair("^v0.0.1-alpha", ">=0.0.1-alpha <0.0.2-0"), - Pair("^v0.0.*", ">=0.0.0 <0.1.0-0"), - Pair("^v1.2.*", ">=1.2.0 <2.0.0-0"), - Pair("^v1.*", ">=1.0.0 <2.0.0-0"), - Pair("^v0.*", ">=0.0.0 <1.0.0-0"), - Pair("v1.0.0 - 2.0.0", ">=1.0.0 <=2.0.0"), - Pair("v1 - v2", ">=1.0.0 <3.0.0-0"), - Pair("v1.0 - v2.0", ">=1.0.0 <2.1.0-0"), - Pair("v1.0.0", "=1.0.0"), - Pair(">=v*", ">=0.0.0"), - Pair(">=v1.0.0", ">=1.0.0"), - Pair(">v1.0.0", ">1.0.0"), - Pair("<=v2.0.0", "<=2.0.0"), - Pair("<=v2.0.0", "<=2.0.0"), - Pair("= v1.0.0", ">=1.0.0"), - Pair(">= v1.0.0", ">=1.0.0"), - Pair(">= v1.0.0", ">=1.0.0"), - Pair("> v1.0.0", ">1.0.0"), - Pair("> v1.0.0", ">1.0.0"), - Pair("<= v2.0.0", "<=2.0.0"), - Pair("v0.1.0 || v1.2.3", "=0.1.0 || =1.2.3"), - Pair(">=v0.1.0 || =0.1.0 || <0.0.1"), - Pair("v2.x.x", ">=2.0.0 <3.0.0-0"), - Pair("v1.2.x", ">=1.2.0 <1.3.0-0"), - Pair("v1.2.x || v2.x", ">=1.2.0 <1.3.0-0 || >=2.0.0 <3.0.0-0"), - Pair("v1.2.x || v2.x", ">=1.2.0 <1.3.0-0 || >=2.0.0 <3.0.0-0"), - Pair("vx", ">=0.0.0"), - Pair("v2.*.*", ">=2.0.0 <3.0.0-0"), - Pair("v1.2.*", ">=1.2.0 <1.3.0-0"), - Pair("v1.2.* || 2.*", ">=1.2.0 <1.3.0-0 || >=2.0.0 <3.0.0-0"), - Pair("v*", ">=0.0.0"), - Pair("v2", ">=2.0.0 <3.0.0-0"), - Pair("v2.3", ">=2.3.0 <2.4.0-0"), - Pair("~v2.4", ">=2.4.0 <2.5.0-0"), - Pair("~v2.4", ">=2.4.0 <2.5.0-0"), - Pair("~>v3.2.1", ">=3.2.1 <3.3.0-0"), - Pair("~v1", ">=1.0.0 <2.0.0-0"), - Pair("~>v1", ">=1.0.0 <2.0.0-0"), - Pair("~> v1", ">=1.0.0 <2.0.0-0"), - Pair("~v1.0", ">=1.0.0 <1.1.0-0"), - Pair("~ v1.0", ">=1.0.0 <1.1.0-0"), - Pair("^v0", ">=0.0.0 <1.0.0-0"), - Pair("^ v1", ">=1.0.0 <2.0.0-0"), - Pair("^v0.1", ">=0.1.0 <0.2.0-0"), - Pair("^v1.0", ">=1.0.0 <2.0.0-0"), - Pair("^v1.2", ">=1.2.0 <2.0.0-0"), - Pair("^v0.0.1", ">=0.0.1 <0.0.2-0"), - Pair("^v0.0.1-beta", ">=0.0.1-beta <0.0.2-0"), - Pair("^v0.1.2", ">=0.1.2 <0.2.0-0"), - Pair("^v1.2.3", ">=1.2.3 <2.0.0-0"), - Pair("^v1.2.3-beta.4", ">=1.2.3-beta.4 <2.0.0-0"), - Pair("=1.0.0 <2.0.0-0"), - Pair("!= v1", "<1.0.0 || >=2.0.0-0"), - Pair(">=v1", ">=1.0.0"), - Pair(">= v1", ">=1.0.0"), - Pair("=1.0.0 <2.0.0-0"), - Pair("^ v1.2 ^ v1", ">=1.2.0 <2.0.0-0 >=1.0.0 <2.0.0-0"), - Pair("v1.2 - v3.4.5", ">=1.2.0 <=3.4.5"), - Pair("v1.2.3 - v3.4", ">=1.2.3 <3.5.0-0"), - Pair("v1.2 - v3.4", ">=1.2.0 <3.5.0-0"), - Pair(">v1", ">=2.0.0-0"), - Pair(">v1.2", ">=1.3.0-0"), - Pair("v*", "<0.0.0-0"), - Pair("!=v*", "<0.0.0-0"), - Pair(">=v*", ">=0.0.0"), - Pair("<=v*", ">=0.0.0"), - Pair("=v*", ">=0.0.0"), - Pair("^7|^8", ">=7.0.0 <8.0.0-0 || >=8.0.0 <9.0.0-0"), - ) + val data: List> = + listOf( + Pair("1.2.3 - 2.3.4", ">=1.2.3 <=2.3.4"), + Pair("1.2.3 - 2.3.4 || 3.0.0 - 4.0.0", ">=1.2.3 <=2.3.4 || >=3.0.0 <=4.0.0"), + Pair("1.2 - 2.3.4", ">=1.2.0 <=2.3.4"), + Pair("1.2.3 - 2.3", ">=1.2.3 <2.4.0-0"), + Pair("1.2.3 - 2", ">=1.2.3 <3.0.0-0"), + Pair("~1.2.3", ">=1.2.3 <1.3.0-0"), + Pair("~1.2", ">=1.2.0 <1.3.0-0"), + Pair("~1", ">=1.0.0 <2.0.0-0"), + Pair("~0.2.3", ">=0.2.3 <0.3.0-0"), + Pair("~0.2", ">=0.2.0 <0.3.0-0"), + Pair("~0", ">=0.0.0 <1.0.0-0"), + Pair("~0.0.0", ">=0.0.0 <0.1.0-0"), + Pair("~0.0", ">=0.0.0 <0.1.0-0"), + Pair("~1.2.3-alpha.1", ">=1.2.3-alpha.1 <1.3.0-0"), + Pair("", ">=0.0.0"), + Pair("*", ">=0.0.0"), + Pair("x", ">=0.0.0"), + Pair("X", ">=0.0.0"), + Pair("1.x", ">=1.0.0 <2.0.0-0"), + Pair("1.2.x", ">=1.2.0 <1.3.0-0"), + Pair("1", ">=1.0.0 <2.0.0-0"), + Pair("1.*", ">=1.0.0 <2.0.0-0"), + Pair("1.*.*", ">=1.0.0 <2.0.0-0"), + Pair("1.x", ">=1.0.0 <2.0.0-0"), + Pair("1.x.x", ">=1.0.0 <2.0.0-0"), + Pair("1.X", ">=1.0.0 <2.0.0-0"), + Pair("1.X.X", ">=1.0.0 <2.0.0-0"), + Pair("1.2", ">=1.2.0 <1.3.0-0"), + Pair("1.2.*", ">=1.2.0 <1.3.0-0"), + Pair("1.2.x", ">=1.2.0 <1.3.0-0"), + Pair("1.2.X", ">=1.2.0 <1.3.0-0"), + Pair("^1.2.3", ">=1.2.3 <2.0.0-0"), + Pair("^0.2.3", ">=0.2.3 <0.3.0-0"), + Pair("^0.0.3", ">=0.0.3 <0.0.4-0"), + Pair("^0", ">=0.0.0 <1.0.0-0"), + Pair("^0.0", ">=0.0.0 <0.1.0-0"), + Pair("^0.0.0", ">=0.0.0 <0.0.1-0"), + Pair("^1.2.3-alpha.1", ">=1.2.3-alpha.1 <2.0.0-0"), + Pair("^0.0.1-alpha", ">=0.0.1-alpha <0.0.2-0"), + Pair("^0.0.*", ">=0.0.0 <0.1.0-0"), + Pair("^1.2.*", ">=1.2.0 <2.0.0-0"), + Pair("^1.*", ">=1.0.0 <2.0.0-0"), + Pair("^0.*", ">=0.0.0 <1.0.0-0"), + Pair("1.0.0 - 2.0.0", ">=1.0.0 <=2.0.0"), + Pair("1 - 2", ">=1.0.0 <3.0.0-0"), + Pair("1.0 - 2.0", ">=1.0.0 <2.1.0-0"), + Pair("1.0.0", "=1.0.0"), + Pair(">=*", ">=0.0.0"), + Pair(">=1.0.0", ">=1.0.0"), + Pair(">1.0.0", ">1.0.0"), + Pair("<=2.0.0", "<=2.0.0"), + Pair("<=2.0.0", "<=2.0.0"), + Pair("<2.0.0", "<2.0.0"), + Pair("<\t2.0.0", "<2.0.0"), + Pair("<= 2.0.0", "<=2.0.0"), + Pair("<= 2.0.0", "<=2.0.0"), + Pair("< 2.0.0", "<2.0.0"), + Pair("< 2.0", "<2.0.0"), + Pair("<= 2.0", "<2.1.0-0"), + Pair(">= 1.0.0", ">=1.0.0"), + Pair(">= 1.0.0", ">=1.0.0"), + Pair(">= 1.0.0", ">=1.0.0"), + Pair("> 1.0.0", ">1.0.0"), + Pair("> 1.0.0", ">1.0.0"), + Pair("<= 2.0.0", "<=2.0.0"), + Pair("0.1.0 || 1.2.3", "=0.1.0 || =1.2.3"), + Pair(">=0.1.0 || <0.0.1", ">=0.1.0 || <0.0.1"), + Pair("0.1.0 | 1.2.3", "=0.1.0 || =1.2.3"), + Pair(">=0.1.0|<0.0.1", ">=0.1.0 || <0.0.1"), + Pair("2.x.x", ">=2.0.0 <3.0.0-0"), + Pair("1.2.x", ">=1.2.0 <1.3.0-0"), + Pair("1.2.x || 2.x", ">=1.2.0 <1.3.0-0 || >=2.0.0 <3.0.0-0"), + Pair("1.2.x || 2.x", ">=1.2.0 <1.3.0-0 || >=2.0.0 <3.0.0-0"), + Pair("1.2.x|2.x", ">=1.2.0 <1.3.0-0 || >=2.0.0 <3.0.0-0"), + Pair("x", ">=0.0.0"), + Pair("2.*.*", ">=2.0.0 <3.0.0-0"), + Pair("1.2.*", ">=1.2.0 <1.3.0-0"), + Pair("1.2.* || 2.*", ">=1.2.0 <1.3.0-0 || >=2.0.0 <3.0.0-0"), + Pair("1.2.*|2.*", ">=1.2.0 <1.3.0-0 || >=2.0.0 <3.0.0-0"), + Pair("*", ">=0.0.0"), + Pair("2", ">=2.0.0 <3.0.0-0"), + Pair("2.3", ">=2.3.0 <2.4.0-0"), + Pair("~2.4", ">=2.4.0 <2.5.0-0"), + Pair("~2.4", ">=2.4.0 <2.5.0-0"), + Pair("~>3.2.1", ">=3.2.1 <3.3.0-0"), + Pair("~1", ">=1.0.0 <2.0.0-0"), + Pair("~>1", ">=1.0.0 <2.0.0-0"), + Pair("~> 1", ">=1.0.0 <2.0.0-0"), + Pair("~1.0", ">=1.0.0 <1.1.0-0"), + Pair("~ 1.0", ">=1.0.0 <1.1.0-0"), + Pair("^0", ">=0.0.0 <1.0.0-0"), + Pair("^ 1", ">=1.0.0 <2.0.0-0"), + Pair("^0.1", ">=0.1.0 <0.2.0-0"), + Pair("^1.0", ">=1.0.0 <2.0.0-0"), + Pair("^1.2", ">=1.2.0 <2.0.0-0"), + Pair("^0.0.1", ">=0.0.1 <0.0.2-0"), + Pair("^0.0.1-beta", ">=0.0.1-beta <0.0.2-0"), + Pair("^0.1.2", ">=0.1.2 <0.2.0-0"), + Pair("^1.2.3", ">=1.2.3 <2.0.0-0"), + Pair("^1.2.3-beta.4", ">=1.2.3-beta.4 <2.0.0-0"), + Pair("<1", "<1.0.0"), + Pair("< 1", "<1.0.0"), + Pair("= 1", ">=1.0.0 <2.0.0-0"), + Pair("!= 1", "<1.0.0 || >=2.0.0-0"), + Pair(">=1", ">=1.0.0"), + Pair(">= 1", ">=1.0.0"), + Pair("<1.2", "<1.2.0"), + Pair("< 1.2", "<1.2.0"), + Pair("1", ">=1.0.0 <2.0.0-0"), + Pair("^ 1.2 ^ 1", ">=1.2.0 <2.0.0-0 >=1.0.0 <2.0.0-0"), + Pair("1.2 - 3.4.5", ">=1.2.0 <=3.4.5"), + Pair("1.2.3 - 3.4", ">=1.2.3 <3.5.0-0"), + Pair("1.2 - 3.4", ">=1.2.0 <3.5.0-0"), + Pair(">1", ">=2.0.0-0"), + Pair(">1.2", ">=1.3.0-0"), + Pair("<*", "<0.0.0-0"), + Pair(">*", "<0.0.0-0"), + Pair("!=*", "<0.0.0-0"), + Pair(">=*", ">=0.0.0"), + Pair("<=*", ">=0.0.0"), + Pair("=*", ">=0.0.0"), + Pair("v1.2.3 - v2.3.4", ">=1.2.3 <=2.3.4"), + Pair("v1.2.3 - v2.3.4 || 3.0.0 - 4.0.0", ">=1.2.3 <=2.3.4 || >=3.0.0 <=4.0.0"), + Pair("v1.2 - v2.3.4", ">=1.2.0 <=2.3.4"), + Pair("v1.2.3 - v2.3", ">=1.2.3 <2.4.0-0"), + Pair("v1.2.3 - v2", ">=1.2.3 <3.0.0-0"), + Pair("~v1.2.3", ">=1.2.3 <1.3.0-0"), + Pair("~v1.2", ">=1.2.0 <1.3.0-0"), + Pair("~v1", ">=1.0.0 <2.0.0-0"), + Pair("~v0.2.3", ">=0.2.3 <0.3.0-0"), + Pair("~v0.2", ">=0.2.0 <0.3.0-0"), + Pair("~v0", ">=0.0.0 <1.0.0-0"), + Pair("~v0.0.0", ">=0.0.0 <0.1.0-0"), + Pair("~v0.0", ">=0.0.0 <0.1.0-0"), + Pair("~v1.2.3-alpha.1", ">=1.2.3-alpha.1 <1.3.0-0"), + Pair("v*", ">=0.0.0"), + Pair("vx", ">=0.0.0"), + Pair("vX", ">=0.0.0"), + Pair("v1.x", ">=1.0.0 <2.0.0-0"), + Pair("v1.2.x", ">=1.2.0 <1.3.0-0"), + Pair("v1", ">=1.0.0 <2.0.0-0"), + Pair("v1.*", ">=1.0.0 <2.0.0-0"), + Pair("v1.*.*", ">=1.0.0 <2.0.0-0"), + Pair("v1.x", ">=1.0.0 <2.0.0-0"), + Pair("v1.x.x", ">=1.0.0 <2.0.0-0"), + Pair("v1.X", ">=1.0.0 <2.0.0-0"), + Pair("v1.X.X", ">=1.0.0 <2.0.0-0"), + Pair("v1.2", ">=1.2.0 <1.3.0-0"), + Pair("v1.2.*", ">=1.2.0 <1.3.0-0"), + Pair("v1.2.x", ">=1.2.0 <1.3.0-0"), + Pair("v1.2.X", ">=1.2.0 <1.3.0-0"), + Pair("^v1.2.3", ">=1.2.3 <2.0.0-0"), + Pair("^v0.2.3", ">=0.2.3 <0.3.0-0"), + Pair("^v0.0.3", ">=0.0.3 <0.0.4-0"), + Pair("^v0", ">=0.0.0 <1.0.0-0"), + Pair("^v0.0", ">=0.0.0 <0.1.0-0"), + Pair("^v0.0.0", ">=0.0.0 <0.0.1-0"), + Pair("^v1.2.3-alpha.1", ">=1.2.3-alpha.1 <2.0.0-0"), + Pair("^v0.0.1-alpha", ">=0.0.1-alpha <0.0.2-0"), + Pair("^v0.0.*", ">=0.0.0 <0.1.0-0"), + Pair("^v1.2.*", ">=1.2.0 <2.0.0-0"), + Pair("^v1.*", ">=1.0.0 <2.0.0-0"), + Pair("^v0.*", ">=0.0.0 <1.0.0-0"), + Pair("v1.0.0 - 2.0.0", ">=1.0.0 <=2.0.0"), + Pair("v1 - v2", ">=1.0.0 <3.0.0-0"), + Pair("v1.0 - v2.0", ">=1.0.0 <2.1.0-0"), + Pair("v1.0.0", "=1.0.0"), + Pair(">=v*", ">=0.0.0"), + Pair(">=v1.0.0", ">=1.0.0"), + Pair(">v1.0.0", ">1.0.0"), + Pair("<=v2.0.0", "<=2.0.0"), + Pair("<=v2.0.0", "<=2.0.0"), + Pair("= v1.0.0", ">=1.0.0"), + Pair(">= v1.0.0", ">=1.0.0"), + Pair(">= v1.0.0", ">=1.0.0"), + Pair("> v1.0.0", ">1.0.0"), + Pair("> v1.0.0", ">1.0.0"), + Pair("<= v2.0.0", "<=2.0.0"), + Pair("v0.1.0 || v1.2.3", "=0.1.0 || =1.2.3"), + Pair(">=v0.1.0 || =0.1.0 || <0.0.1"), + Pair("v2.x.x", ">=2.0.0 <3.0.0-0"), + Pair("v1.2.x", ">=1.2.0 <1.3.0-0"), + Pair("v1.2.x || v2.x", ">=1.2.0 <1.3.0-0 || >=2.0.0 <3.0.0-0"), + Pair("v1.2.x || v2.x", ">=1.2.0 <1.3.0-0 || >=2.0.0 <3.0.0-0"), + Pair("vx", ">=0.0.0"), + Pair("v2.*.*", ">=2.0.0 <3.0.0-0"), + Pair("v1.2.*", ">=1.2.0 <1.3.0-0"), + Pair("v1.2.* || 2.*", ">=1.2.0 <1.3.0-0 || >=2.0.0 <3.0.0-0"), + Pair("v*", ">=0.0.0"), + Pair("v2", ">=2.0.0 <3.0.0-0"), + Pair("v2.3", ">=2.3.0 <2.4.0-0"), + Pair("~v2.4", ">=2.4.0 <2.5.0-0"), + Pair("~v2.4", ">=2.4.0 <2.5.0-0"), + Pair("~>v3.2.1", ">=3.2.1 <3.3.0-0"), + Pair("~v1", ">=1.0.0 <2.0.0-0"), + Pair("~>v1", ">=1.0.0 <2.0.0-0"), + Pair("~> v1", ">=1.0.0 <2.0.0-0"), + Pair("~v1.0", ">=1.0.0 <1.1.0-0"), + Pair("~ v1.0", ">=1.0.0 <1.1.0-0"), + Pair("^v0", ">=0.0.0 <1.0.0-0"), + Pair("^ v1", ">=1.0.0 <2.0.0-0"), + Pair("^v0.1", ">=0.1.0 <0.2.0-0"), + Pair("^v1.0", ">=1.0.0 <2.0.0-0"), + Pair("^v1.2", ">=1.2.0 <2.0.0-0"), + Pair("^v0.0.1", ">=0.0.1 <0.0.2-0"), + Pair("^v0.0.1-beta", ">=0.0.1-beta <0.0.2-0"), + Pair("^v0.1.2", ">=0.1.2 <0.2.0-0"), + Pair("^v1.2.3", ">=1.2.3 <2.0.0-0"), + Pair("^v1.2.3-beta.4", ">=1.2.3-beta.4 <2.0.0-0"), + Pair("=1.0.0 <2.0.0-0"), + Pair("!= v1", "<1.0.0 || >=2.0.0-0"), + Pair(">=v1", ">=1.0.0"), + Pair(">= v1", ">=1.0.0"), + Pair("=1.0.0 <2.0.0-0"), + Pair("^ v1.2 ^ v1", ">=1.2.0 <2.0.0-0 >=1.0.0 <2.0.0-0"), + Pair("v1.2 - v3.4.5", ">=1.2.0 <=3.4.5"), + Pair("v1.2.3 - v3.4", ">=1.2.3 <3.5.0-0"), + Pair("v1.2 - v3.4", ">=1.2.0 <3.5.0-0"), + Pair(">v1", ">=2.0.0-0"), + Pair(">v1.2", ">=1.3.0-0"), + Pair("v*", "<0.0.0-0"), + Pair("!=v*", "<0.0.0-0"), + Pair(">=v*", ">=0.0.0"), + Pair("<=v*", ">=0.0.0"), + Pair("=v*", ">=0.0.0"), + Pair("^7|^8", ">=7.0.0 <8.0.0-0 || >=8.0.0 <9.0.0-0"), + ) data.forEach { assertEquals(it.second, it.first.toConstraint().toString()) diff --git a/src/commonTest/kotlin/io/github/z4kn4fein/semver/NextVersionTests.kt b/src/commonTest/kotlin/io/github/z4kn4fein/semver/NextVersionTests.kt index 781cc4e..b6c57e0 100644 --- a/src/commonTest/kotlin/io/github/z4kn4fein/semver/NextVersionTests.kt +++ b/src/commonTest/kotlin/io/github/z4kn4fein/semver/NextVersionTests.kt @@ -53,70 +53,70 @@ class NextVersionTests { @Test fun testWithData() { data class Row(val source: String, val incBy: Inc, val expected: String, val preRelease: String?) - val data: List = listOf( - Row("1.2.3", Inc.MAJOR, "2.0.0", null), - Row("1.2.3", Inc.MINOR, "1.3.0", null), - Row("1.2.3", Inc.PATCH, "1.2.4", null), - Row("1.2.3-alpha", Inc.MAJOR, "2.0.0", null), - Row("1.2.0-0", Inc.PATCH, "1.2.0", null), - Row("1.2.3-4", Inc.MAJOR, "2.0.0", null), - Row("1.2.3-4", Inc.MINOR, "1.3.0", null), - Row("1.2.3-4", Inc.PATCH, "1.2.3", null), - Row("1.2.3-alpha.0.beta", Inc.MAJOR, "2.0.0", null), - Row("1.2.3-alpha.0.beta", Inc.MINOR, "1.3.0", null), - Row("1.2.3-alpha.0.beta", Inc.PATCH, "1.2.3", null), - Row("1.2.4", Inc.PRE_RELEASE, "1.2.5-0", null), - Row("1.2.3-0", Inc.PRE_RELEASE, "1.2.3-1", null), - Row("1.2.3-alpha.0", Inc.PRE_RELEASE, "1.2.3-alpha.1", null), - Row("1.2.3-alpha.1", Inc.PRE_RELEASE, "1.2.3-alpha.2", null), - Row("1.2.3-alpha.2", Inc.PRE_RELEASE, "1.2.3-alpha.3", null), - Row("1.2.3-alpha.0.beta", Inc.PRE_RELEASE, "1.2.3-alpha.1.beta", null), - Row("1.2.3-alpha.1.beta", Inc.PRE_RELEASE, "1.2.3-alpha.2.beta", null), - Row("1.2.3-alpha.2.beta", Inc.PRE_RELEASE, "1.2.3-alpha.3.beta", null), - Row("1.2.3-alpha.10.0.beta", Inc.PRE_RELEASE, "1.2.3-alpha.10.1.beta", null), - Row("1.2.3-alpha.10.1.beta", Inc.PRE_RELEASE, "1.2.3-alpha.10.2.beta", null), - Row("1.2.3-alpha.10.2.beta", Inc.PRE_RELEASE, "1.2.3-alpha.10.3.beta", null), - Row("1.2.3-alpha.10.beta.0", Inc.PRE_RELEASE, "1.2.3-alpha.10.beta.1", null), - Row("1.2.3-alpha.10.beta.1", Inc.PRE_RELEASE, "1.2.3-alpha.10.beta.2", null), - Row("1.2.3-alpha.10.beta.2", Inc.PRE_RELEASE, "1.2.3-alpha.10.beta.3", null), - Row("1.2.3-alpha.9.beta", Inc.PRE_RELEASE, "1.2.3-alpha.10.beta", null), - Row("1.2.3-alpha.10.beta", Inc.PRE_RELEASE, "1.2.3-alpha.11.beta", null), - Row("1.2.3-alpha.11.beta", Inc.PRE_RELEASE, "1.2.3-alpha.12.beta", null), - Row("1.2.0", Inc.PATCH, "1.2.1-0", ""), - Row("1.2.0-1", Inc.PATCH, "1.2.1-0", ""), - Row("1.2.0", Inc.MINOR, "1.3.0-0", ""), - Row("1.2.3-1", Inc.MINOR, "1.3.0-0", ""), - Row("1.2.0", Inc.MAJOR, "2.0.0-0", ""), - Row("1.2.3-1", Inc.MAJOR, "2.0.0-0", ""), - - Row("1.2.4", Inc.PRE_RELEASE, "1.2.5-dev", "dev"), - Row("1.2.3-0", Inc.PRE_RELEASE, "1.2.3-dev", "dev"), - Row("1.2.3-alpha.0", Inc.PRE_RELEASE, "1.2.3-dev", "dev"), - Row("1.2.3-alpha.0", Inc.PRE_RELEASE, "1.2.3-alpha.1", "alpha"), - Row("1.2.3-alpha.0.beta", Inc.PRE_RELEASE, "1.2.3-dev", "dev"), - Row("1.2.3-alpha.0.beta", Inc.PRE_RELEASE, "1.2.3-alpha.1.beta", "alpha"), - Row("1.2.3-alpha.10.0.beta", Inc.PRE_RELEASE, "1.2.3-dev", "dev"), - Row("1.2.3-alpha.10.0.beta", Inc.PRE_RELEASE, "1.2.3-alpha.10.1.beta", "alpha"), - Row("1.2.3-alpha.10.1.beta", Inc.PRE_RELEASE, "1.2.3-alpha.10.2.beta", "alpha"), - Row("1.2.3-alpha.10.2.beta", Inc.PRE_RELEASE, "1.2.3-alpha.10.3.beta", "alpha"), - Row("1.2.3-alpha.10.beta.0", Inc.PRE_RELEASE, "1.2.3-dev", "dev"), - Row("1.2.3-alpha.10.beta.0", Inc.PRE_RELEASE, "1.2.3-alpha.10.beta.1", "alpha"), - Row("1.2.3-alpha.10.beta.1", Inc.PRE_RELEASE, "1.2.3-alpha.10.beta.2", "alpha"), - Row("1.2.3-alpha.10.beta.2", Inc.PRE_RELEASE, "1.2.3-alpha.10.beta.3", "alpha"), - Row("1.2.3-alpha.9.beta", Inc.PRE_RELEASE, "1.2.3-dev", "dev"), - Row("1.2.3-alpha.9.beta", Inc.PRE_RELEASE, "1.2.3-alpha.10.beta", "alpha"), - Row("1.2.3-alpha.10.beta", Inc.PRE_RELEASE, "1.2.3-alpha.11.beta", "alpha"), - Row("1.2.3-alpha.11.beta", Inc.PRE_RELEASE, "1.2.3-alpha.12.beta", "alpha"), - Row("1.2.0", Inc.PATCH, "1.2.1-dev", "dev"), - Row("1.2.0-1", Inc.PATCH, "1.2.1-dev", "dev"), - Row("1.2.0", Inc.MINOR, "1.3.0-dev", "dev"), - Row("1.2.3-1", Inc.MINOR, "1.3.0-dev", "dev"), - Row("1.2.0", Inc.MAJOR, "2.0.0-dev", "dev"), - Row("1.2.3-1", Inc.MAJOR, "2.0.0-dev", "dev"), - Row("1.2.0-1", Inc.MINOR, "1.3.0", null), - Row("1.0.0-1", Inc.MAJOR, "2.0.0", null), - Row("1.2.3-dev.beta", Inc.PRE_RELEASE, "1.2.3-dev.beta.0", "dev"), - ) + val data: List = + listOf( + Row("1.2.3", Inc.MAJOR, "2.0.0", null), + Row("1.2.3", Inc.MINOR, "1.3.0", null), + Row("1.2.3", Inc.PATCH, "1.2.4", null), + Row("1.2.3-alpha", Inc.MAJOR, "2.0.0", null), + Row("1.2.0-0", Inc.PATCH, "1.2.0", null), + Row("1.2.3-4", Inc.MAJOR, "2.0.0", null), + Row("1.2.3-4", Inc.MINOR, "1.3.0", null), + Row("1.2.3-4", Inc.PATCH, "1.2.3", null), + Row("1.2.3-alpha.0.beta", Inc.MAJOR, "2.0.0", null), + Row("1.2.3-alpha.0.beta", Inc.MINOR, "1.3.0", null), + Row("1.2.3-alpha.0.beta", Inc.PATCH, "1.2.3", null), + Row("1.2.4", Inc.PRE_RELEASE, "1.2.5-0", null), + Row("1.2.3-0", Inc.PRE_RELEASE, "1.2.3-1", null), + Row("1.2.3-alpha.0", Inc.PRE_RELEASE, "1.2.3-alpha.1", null), + Row("1.2.3-alpha.1", Inc.PRE_RELEASE, "1.2.3-alpha.2", null), + Row("1.2.3-alpha.2", Inc.PRE_RELEASE, "1.2.3-alpha.3", null), + Row("1.2.3-alpha.0.beta", Inc.PRE_RELEASE, "1.2.3-alpha.1.beta", null), + Row("1.2.3-alpha.1.beta", Inc.PRE_RELEASE, "1.2.3-alpha.2.beta", null), + Row("1.2.3-alpha.2.beta", Inc.PRE_RELEASE, "1.2.3-alpha.3.beta", null), + Row("1.2.3-alpha.10.0.beta", Inc.PRE_RELEASE, "1.2.3-alpha.10.1.beta", null), + Row("1.2.3-alpha.10.1.beta", Inc.PRE_RELEASE, "1.2.3-alpha.10.2.beta", null), + Row("1.2.3-alpha.10.2.beta", Inc.PRE_RELEASE, "1.2.3-alpha.10.3.beta", null), + Row("1.2.3-alpha.10.beta.0", Inc.PRE_RELEASE, "1.2.3-alpha.10.beta.1", null), + Row("1.2.3-alpha.10.beta.1", Inc.PRE_RELEASE, "1.2.3-alpha.10.beta.2", null), + Row("1.2.3-alpha.10.beta.2", Inc.PRE_RELEASE, "1.2.3-alpha.10.beta.3", null), + Row("1.2.3-alpha.9.beta", Inc.PRE_RELEASE, "1.2.3-alpha.10.beta", null), + Row("1.2.3-alpha.10.beta", Inc.PRE_RELEASE, "1.2.3-alpha.11.beta", null), + Row("1.2.3-alpha.11.beta", Inc.PRE_RELEASE, "1.2.3-alpha.12.beta", null), + Row("1.2.0", Inc.PATCH, "1.2.1-0", ""), + Row("1.2.0-1", Inc.PATCH, "1.2.1-0", ""), + Row("1.2.0", Inc.MINOR, "1.3.0-0", ""), + Row("1.2.3-1", Inc.MINOR, "1.3.0-0", ""), + Row("1.2.0", Inc.MAJOR, "2.0.0-0", ""), + Row("1.2.3-1", Inc.MAJOR, "2.0.0-0", ""), + Row("1.2.4", Inc.PRE_RELEASE, "1.2.5-dev", "dev"), + Row("1.2.3-0", Inc.PRE_RELEASE, "1.2.3-dev", "dev"), + Row("1.2.3-alpha.0", Inc.PRE_RELEASE, "1.2.3-dev", "dev"), + Row("1.2.3-alpha.0", Inc.PRE_RELEASE, "1.2.3-alpha.1", "alpha"), + Row("1.2.3-alpha.0.beta", Inc.PRE_RELEASE, "1.2.3-dev", "dev"), + Row("1.2.3-alpha.0.beta", Inc.PRE_RELEASE, "1.2.3-alpha.1.beta", "alpha"), + Row("1.2.3-alpha.10.0.beta", Inc.PRE_RELEASE, "1.2.3-dev", "dev"), + Row("1.2.3-alpha.10.0.beta", Inc.PRE_RELEASE, "1.2.3-alpha.10.1.beta", "alpha"), + Row("1.2.3-alpha.10.1.beta", Inc.PRE_RELEASE, "1.2.3-alpha.10.2.beta", "alpha"), + Row("1.2.3-alpha.10.2.beta", Inc.PRE_RELEASE, "1.2.3-alpha.10.3.beta", "alpha"), + Row("1.2.3-alpha.10.beta.0", Inc.PRE_RELEASE, "1.2.3-dev", "dev"), + Row("1.2.3-alpha.10.beta.0", Inc.PRE_RELEASE, "1.2.3-alpha.10.beta.1", "alpha"), + Row("1.2.3-alpha.10.beta.1", Inc.PRE_RELEASE, "1.2.3-alpha.10.beta.2", "alpha"), + Row("1.2.3-alpha.10.beta.2", Inc.PRE_RELEASE, "1.2.3-alpha.10.beta.3", "alpha"), + Row("1.2.3-alpha.9.beta", Inc.PRE_RELEASE, "1.2.3-dev", "dev"), + Row("1.2.3-alpha.9.beta", Inc.PRE_RELEASE, "1.2.3-alpha.10.beta", "alpha"), + Row("1.2.3-alpha.10.beta", Inc.PRE_RELEASE, "1.2.3-alpha.11.beta", "alpha"), + Row("1.2.3-alpha.11.beta", Inc.PRE_RELEASE, "1.2.3-alpha.12.beta", "alpha"), + Row("1.2.0", Inc.PATCH, "1.2.1-dev", "dev"), + Row("1.2.0-1", Inc.PATCH, "1.2.1-dev", "dev"), + Row("1.2.0", Inc.MINOR, "1.3.0-dev", "dev"), + Row("1.2.3-1", Inc.MINOR, "1.3.0-dev", "dev"), + Row("1.2.0", Inc.MAJOR, "2.0.0-dev", "dev"), + Row("1.2.3-1", Inc.MAJOR, "2.0.0-dev", "dev"), + Row("1.2.0-1", Inc.MINOR, "1.3.0", null), + Row("1.0.0-1", Inc.MAJOR, "2.0.0", null), + Row("1.2.3-dev.beta", Inc.PRE_RELEASE, "1.2.3-dev.beta.0", "dev"), + ) data.forEach { assertEquals(it.expected.toVersion(), it.source.toVersion().inc(by = it.incBy, it.preRelease)) diff --git a/src/commonTest/kotlin/io/github/z4kn4fein/semver/SerializationTests.kt b/src/commonTest/kotlin/io/github/z4kn4fein/semver/SerializationTests.kt index 04a2de2..aad257d 100644 --- a/src/commonTest/kotlin/io/github/z4kn4fein/semver/SerializationTests.kt +++ b/src/commonTest/kotlin/io/github/z4kn4fein/semver/SerializationTests.kt @@ -16,7 +16,7 @@ class SerializationTests { @Serializable data class ToLooseSerialize( @Serializable(with = LooseVersionSerializer::class) - val version: Version + val version: Version, ) @Serializable diff --git a/src/commonTest/kotlin/io/github/z4kn4fein/semver/samples/ConstraintSamples.kt b/src/commonTest/kotlin/io/github/z4kn4fein/semver/samples/ConstraintSamples.kt index 2deb5f6..6a91162 100644 --- a/src/commonTest/kotlin/io/github/z4kn4fein/semver/samples/ConstraintSamples.kt +++ b/src/commonTest/kotlin/io/github/z4kn4fein/semver/samples/ConstraintSamples.kt @@ -12,17 +12,18 @@ import kotlinx.serialization.json.Json class ConstraintSamples { fun constraint() { - val constraints = listOf( - "1.0.0", - "!=1.0.0", - "~1.0", - "^1.x", - "1.1.0 - 1.2.*", - ">=1.1.0 <3 || =0.1 || 5 - 6", - "v1", - "v3 - v4", - ">=v2.3" - ) + val constraints = + listOf( + "1.0.0", + "!=1.0.0", + "~1.0", + "^1.x", + "1.1.0 - 1.2.*", + ">=1.1.0 <3 || =0.1 || 5 - 6", + "v1", + "v3 - v4", + ">=v2.3", + ) constraints.forEach { println("[$it]: [${it.toConstraint()}]") } }