From 0c53a2d1d75d3d934d134594751fe6cd0b000d1a Mon Sep 17 00:00:00 2001 From: laur89 Date: Mon, 21 Apr 2025 01:18:41 +0200 Subject: [PATCH 01/11] fix: Group `mount` and `install` options into an argument group (#364) Co-authored-by: oSumAtrIX --- .../app/revanced/cli/command/PatchCommand.kt | 46 +++++++++++-------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/src/main/kotlin/app/revanced/cli/command/PatchCommand.kt b/src/main/kotlin/app/revanced/cli/command/PatchCommand.kt index efbc7552..ba6b0440 100644 --- a/src/main/kotlin/app/revanced/cli/command/PatchCommand.kt +++ b/src/main/kotlin/app/revanced/cli/command/PatchCommand.kt @@ -115,21 +115,27 @@ internal object PatchCommand : Runnable { this.outputFilePath = outputFilePath?.absoluteFile } - @CommandLine.Option( - names = ["-i", "--install"], - description = ["Serial of the ADB device to install to. If not specified, the first connected device will be used."], - // Empty string to indicate that the first connected device should be used. - fallbackValue = "", - arity = "0..1", - ) - private var deviceSerial: String? = null - - @CommandLine.Option( - names = ["--mount"], - description = ["Install the patched APK file by mounting."], - showDefaultValue = ALWAYS, - ) - private var mount: Boolean = false + @ArgGroup(exclusive = false, multiplicity = "0..1") + internal var installation: Installation? = null + + internal class Installation { + @CommandLine.Option( + names = ["-i", "--install"], + required = true, + description = ["Serial of the ADB device to install to. If not specified, the first connected device will be used."], + fallbackValue = "", // Empty string is used to select the first of connected devices. + arity = "0..1", + ) + internal var deviceSerial: String? = null + + @CommandLine.Option( + names = ["--mount"], + required = false, + description = ["Install the patched APK file by mounting."], + showDefaultValue = ALWAYS, + ) + internal var mount: Boolean = false + } @CommandLine.Option( names = ["--keystore"], @@ -245,11 +251,11 @@ internal object PatchCommand : Runnable { keyStoreFilePath ?: outputFilePath.parentFile .resolve("${outputFilePath.nameWithoutExtension}.keystore") - val installer = if (deviceSerial != null) { - val deviceSerial = deviceSerial!!.ifEmpty { null } + val installer = if (installation?.deviceSerial != null) { + val deviceSerial = installation?.deviceSerial!!.ifEmpty { null } try { - if (mount) { + if (installation?.mount == true) { AdbRootInstaller(deviceSerial) } else { AdbInstaller(deviceSerial) @@ -332,7 +338,7 @@ internal object PatchCommand : Runnable { apk.copyTo(temporaryFilesPath.resolve(apk.name), overwrite = true).apply { patcherResult.applyTo(this) }.let { patchedApkFile -> - if (!mount) { + if (installation?.mount != true) { ApkUtils.signApk( patchedApkFile, outputFilePath, @@ -355,7 +361,7 @@ internal object PatchCommand : Runnable { // region Install. - deviceSerial?.let { + installation?.deviceSerial?.let { runBlocking { when (val result = installer!!.install(Installer.Apk(outputFilePath, packageName))) { RootInstallerResult.FAILURE -> logger.severe("Failed to mount the patched APK file") From 1717cc66f772652026ab04cc18011ec34120b23d Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sun, 20 Apr 2025 23:20:36 +0000 Subject: [PATCH 02/11] chore: Release v5.0.2-dev.1 [skip ci] ## [5.0.2-dev.1](https://github.com/ReVanced/revanced-cli/compare/v5.0.1...v5.0.2-dev.1) (2025-04-20) ### Bug Fixes * Group `mount` and `install` options into an argument group ([#364](https://github.com/ReVanced/revanced-cli/issues/364)) ([0c53a2d](https://github.com/ReVanced/revanced-cli/commit/0c53a2d1d75d3d934d134594751fe6cd0b000d1a)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 54b16bcc..6d2f09bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [5.0.2-dev.1](https://github.com/ReVanced/revanced-cli/compare/v5.0.1...v5.0.2-dev.1) (2025-04-20) + + +### Bug Fixes + +* Group `mount` and `install` options into an argument group ([#364](https://github.com/ReVanced/revanced-cli/issues/364)) ([0c53a2d](https://github.com/ReVanced/revanced-cli/commit/0c53a2d1d75d3d934d134594751fe6cd0b000d1a)) + ## [5.0.1](https://github.com/ReVanced/revanced-cli/compare/v5.0.0...v5.0.1) (2025-04-14) diff --git a/gradle.properties b/gradle.properties index d5a4aa32..54b7fe01 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true kotlin.code.style = official -version = 5.0.1 +version = 5.0.2-dev.1 From bba90fede85e4632efb9509e5bcf9091a9435549 Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Fri, 25 Apr 2025 22:26:45 +0200 Subject: [PATCH 03/11] fix: Do not print patch description if null --- .../cli/command/ListPatchesCommand.kt | 89 +++++++++---------- 1 file changed, 43 insertions(+), 46 deletions(-) diff --git a/src/main/kotlin/app/revanced/cli/command/ListPatchesCommand.kt b/src/main/kotlin/app/revanced/cli/command/ListPatchesCommand.kt index a2220e61..231017a8 100644 --- a/src/main/kotlin/app/revanced/cli/command/ListPatchesCommand.kt +++ b/src/main/kotlin/app/revanced/cli/command/ListPatchesCommand.kt @@ -85,58 +85,55 @@ internal object ListPatchesCommand : Runnable { } } - fun PatchOption<*>.buildString() = + fun PatchOption<*>.buildString() = buildString { + appendLine("Title: $title") + description?.let { appendLine("Description: $it") } + appendLine("Required: $required") + default?.let { + appendLine("Key: $key") + append("Default: $it") + } ?: append("Key: $key") + + values?.let { values -> + appendLine("\nPossible values:") + append(values.map { "${it.value} (${it.key})" }.joinToString("\n").prependIndent("\t")) + } + + append("\nType: $type") + } + + fun IndexedValue>.buildString() = let { (index, patch) -> buildString { - appendLine("Title: $title") - description?.let { appendLine("Description: $it") } - appendLine("Required: $required") - default?.let { - appendLine("Key: $key") - append("Default: $it") - } ?: append("Key: $key") - - values?.let { values -> - appendLine("\nPossible values:") - append(values.map { "${it.value} (${it.key})" }.joinToString("\n").prependIndent("\t")) - } + if (withIndex) appendLine("Index: $index") - append("\nType: $type") - } + append("Name: ${patch.name}") - fun IndexedValue>.buildString() = - let { (index, patch) -> - buildString { - if (withIndex) appendLine("Index: $index") - - append("Name: ${patch.name}") - - if (withDescriptions) append("\nDescription: ${patch.description}") - - append("\nEnabled: ${patch.use}") - - if (withOptions && patch.options.isNotEmpty()) { - appendLine("\nOptions:") - append( - patch.options.values.joinToString("\n\n") { option -> - option.buildString() - }.prependIndent("\t"), - ) - } - - if (withPackages && patch.compatiblePackages != null) { - appendLine("\nCompatible packages:") - append( - patch.compatiblePackages!!.joinToString("\n") { - it.buildString() - }.prependIndent("\t"), - ) - } + if (withDescriptions) patch.description?.let { append("\nDescription: $it") } + + append("\nEnabled: ${patch.use}") + + if (withOptions && patch.options.isNotEmpty()) { + appendLine("\nOptions:") + append( + patch.options.values.joinToString("\n\n") { option -> + option.buildString() + }.prependIndent("\t"), + ) + } + + if (withPackages && patch.compatiblePackages != null) { + appendLine("\nCompatible packages:") + append( + patch.compatiblePackages!!.joinToString("\n") { + it.buildString() + }.prependIndent("\t"), + ) } } + } - fun Patch<*>.filterCompatiblePackages(name: String) = - compatiblePackages?.any { (compatiblePackageName, _) -> compatiblePackageName == name } - ?: withUniversalPatches + fun Patch<*>.filterCompatiblePackages(name: String) = compatiblePackages?.any { (compatiblePackageName, _) -> compatiblePackageName == name } + ?: withUniversalPatches val patches = loadPatchesFromJar(patchesFiles).withIndex().toList() From f29eda8674a3406992f7127f0fd0a19c1188ca8a Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Fri, 25 Apr 2025 20:29:10 +0000 Subject: [PATCH 04/11] chore: Release v5.0.2-dev.2 [skip ci] ## [5.0.2-dev.2](https://github.com/ReVanced/revanced-cli/compare/v5.0.2-dev.1...v5.0.2-dev.2) (2025-04-25) ### Bug Fixes * Do not print patch description if null ([bba90fe](https://github.com/ReVanced/revanced-cli/commit/bba90fede85e4632efb9509e5bcf9091a9435549)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d2f09bf..7058d6f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [5.0.2-dev.2](https://github.com/ReVanced/revanced-cli/compare/v5.0.2-dev.1...v5.0.2-dev.2) (2025-04-25) + + +### Bug Fixes + +* Do not print patch description if null ([bba90fe](https://github.com/ReVanced/revanced-cli/commit/bba90fede85e4632efb9509e5bcf9091a9435549)) + ## [5.0.2-dev.1](https://github.com/ReVanced/revanced-cli/compare/v5.0.1...v5.0.2-dev.1) (2025-04-20) diff --git a/gradle.properties b/gradle.properties index 54b7fe01..2e43ce1b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true kotlin.code.style = official -version = 5.0.2-dev.1 +version = 5.0.2-dev.2 From 77862e8940d7e76f9bdd7e0b449ccf38298758bd Mon Sep 17 00:00:00 2001 From: Pun Butrach Date: Thu, 22 May 2025 19:54:29 +0700 Subject: [PATCH 05/11] ci: Attest release artifacts (#367) Co-authored-by: oSumAtrIX --- .github/workflows/release.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ce715b38..e7799bf5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,6 +12,8 @@ jobs: name: Release permissions: contents: write + id-token: write + attestations: write runs-on: ubuntu-latest steps: - name: Checkout @@ -47,6 +49,14 @@ jobs: fingerprint: ${{ vars.GPG_FINGERPRINT }} - name: Release + uses: cycjimmy/semantic-release-action@v4 + id: release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: npm exec semantic-release + + - name: Attest + if: steps.release.outputs.new_release_published == 'true' + uses: actions/attest-build-provenance@v2 + with: + subject-name: 'ReVanced CLI ${{ steps.release.outputs.new_release_git_tag }}' + subject-path: build/libs/revanced-cli*.jar From 8e18082862b0523365df64401497efb8e404b777 Mon Sep 17 00:00:00 2001 From: Pun Butrach Date: Tue, 8 Jul 2025 23:01:12 +0700 Subject: [PATCH 06/11] ci: Use default fetch-depth of 1 for checkout step (#375) --- .github/workflows/build_pull_request.yml | 2 -- .github/workflows/release.yml | 5 ----- 2 files changed, 7 deletions(-) diff --git a/.github/workflows/build_pull_request.yml b/.github/workflows/build_pull_request.yml index 250871bc..1f671bb5 100644 --- a/.github/workflows/build_pull_request.yml +++ b/.github/workflows/build_pull_request.yml @@ -13,8 +13,6 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 - with: - fetch-depth: 0 - name: Cache Gradle uses: burrunan/gradle-cache-action@v1 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e7799bf5..106a2079 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,11 +18,6 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 - with: - # Make sure the release step uses its own credentials: - # https://github.com/cycjimmy/semantic-release-action#private-packages - persist-credentials: false - fetch-depth: 0 - name: Cache Gradle uses: burrunan/gradle-cache-action@v1 From 731865e167ee449be15fff3dde7a476faea0c2de Mon Sep 17 00:00:00 2001 From: Pun Butrach Date: Sun, 14 Dec 2025 22:39:29 +0700 Subject: [PATCH 07/11] docs: Use American spelling (#381) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 897638e1..15e1350b 100644 --- a/README.md +++ b/README.md @@ -100,7 +100,7 @@ To build a ReVanced CLI, you can follow the [documentation](/docs). You can find the documentation of ReVanced CLI [here](/docs). -## 📜 Licence +## 📜 License ReVanced CLI is licensed under the GPLv3 license. Please see the [license file](LICENSE) for more information. [tl;dr](https://www.tldrlegal.com/license/gnu-general-public-license-v3-gpl-3) you may copy, distribute and modify ReVanced CLI as long as you track changes/dates in source files. From 30f36ee270d4b63b69bf7949c7968f2827c395ce Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Sun, 22 Feb 2026 00:17:52 +0100 Subject: [PATCH 08/11] build(Needs bump)!: Update to ReVanced Patcher v22 (#385) BREAKING CHANGE: ReVanced CLI switches to ReVanced Patcher v22 and will therefore be incompatible with patches from older versions of ReVanced Patcher. --- .editorconfig | 3 - .github/workflows/build_pull_request.yml | 7 +- .github/workflows/open_pull_request.yml | 2 +- .github/workflows/release.yml | 15 +- .releaserc | 5 +- build.gradle.kts | 32 +- gradle/libs.versions.toml | 22 +- gradle/wrapper/gradle-wrapper.jar | Bin 43462 -> 46175 bytes gradle/wrapper/gradle-wrapper.properties | 3 +- gradlew | 15 +- gradlew.bat | 5 +- package-lock.json | 5056 ++++++----------- package.json | 8 +- settings.gradle.kts | 12 + .../cli/command/ListCompatibleVersions.kt | 17 +- .../cli/command/ListPatchesCommand.kt | 15 +- .../app/revanced/cli/command/MainCommand.kt | 23 +- .../app/revanced/cli/command/PatchCommand.kt | 76 +- 18 files changed, 1980 insertions(+), 3336 deletions(-) delete mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 2d6d258f..00000000 --- a/.editorconfig +++ /dev/null @@ -1,3 +0,0 @@ -[*.{kt,kts}] -ktlint_code_style = intellij_idea -ktlint_standard_no-wildcard-imports = disabled \ No newline at end of file diff --git a/.github/workflows/build_pull_request.yml b/.github/workflows/build_pull_request.yml index 1f671bb5..d47c9229 100644 --- a/.github/workflows/build_pull_request.yml +++ b/.github/workflows/build_pull_request.yml @@ -12,12 +12,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Cache Gradle - uses: burrunan/gradle-cache-action@v1 + uses: burrunan/gradle-cache-action@v3 - name: Build env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + ORG_GRADLE_PROJECT_githubPackagesUsername: ${{ env.GITHUB_ACTOR }} + ORG_GRADLE_PROJECT_githubPackagesPassword: ${{ secrets.GITHUB_TOKEN }} run: ./gradlew build --no-daemon diff --git a/.github/workflows/open_pull_request.yml b/.github/workflows/open_pull_request.yml index 75b8e67f..6efa41cb 100644 --- a/.github/workflows/open_pull_request.yml +++ b/.github/workflows/open_pull_request.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Open pull request uses: repo-sync/pull-request@v2 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 106a2079..2056482a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,18 +17,19 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Cache Gradle - uses: burrunan/gradle-cache-action@v1 + uses: burrunan/gradle-cache-action@v3 - name: Build env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + ORG_GRADLE_PROJECT_githubPackagesUsername: ${{ env.GITHUB_ACTOR }} + ORG_GRADLE_PROJECT_githubPackagesPassword: ${{ secrets.GITHUB_TOKEN }} run: ./gradlew build clean - name: Setup Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: "lts/*" cache: 'npm' @@ -44,14 +45,16 @@ jobs: fingerprint: ${{ vars.GPG_FINGERPRINT }} - name: Release - uses: cycjimmy/semantic-release-action@v4 + uses: cycjimmy/semantic-release-action@v5 id: release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + ORG_GRADLE_PROJECT_githubPackagesUsername: ${{ env.GITHUB_ACTOR }} + ORG_GRADLE_PROJECT_githubPackagesPassword: ${{ secrets.GITHUB_TOKEN }} - name: Attest if: steps.release.outputs.new_release_published == 'true' - uses: actions/attest-build-provenance@v2 + uses: actions/attest-build-provenance@v3 with: subject-name: 'ReVanced CLI ${{ steps.release.outputs.new_release_git_tag }}' subject-path: build/libs/revanced-cli*.jar diff --git a/.releaserc b/.releaserc index cbfa3a70..80995e4a 100644 --- a/.releaserc +++ b/.releaserc @@ -39,10 +39,9 @@ } ], [ - "@saithodev/semantic-release-backmerge", + "@kilianpaquier/semantic-release-backmerge", { - backmergeBranches: [{"from": "main", "to": "dev"}], - clearWorkspace: true + "targets": [{ "from": "main", "to": "dev" }] } ] ] diff --git a/build.gradle.kts b/build.gradle.kts index d3705b4b..77b1a71e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -14,20 +14,9 @@ application { mainClass = "app.revanced.cli.command.MainCommandKt" } -repositories { - mavenCentral() - google() - maven { - // A repository must be specified for some reason. "registry" is a dummy. - url = uri("https://maven.pkg.github.com/revanced/registry") - credentials { - username = project.findProperty("gpr.user") as String? ?: System.getenv("GITHUB_ACTOR") - password = project.findProperty("gpr.key") as String? ?: System.getenv("GITHUB_TOKEN") - } - } -} - dependencies { + implementation(libs.bcpg.jdk18on) + implementation(libs.sigstore.java) implementation(libs.revanced.patcher) implementation(libs.revanced.library) implementation(libs.kotlinx.coroutines.core) @@ -38,12 +27,13 @@ dependencies { kotlin { compilerOptions { - jvmTarget.set(JvmTarget.JVM_11) - } -} + jvmToolchain(17) -java { - targetCompatibility = JavaVersion.VERSION_11 + freeCompilerArgs.addAll( + "-Xexplicit-backing-fields", + "-Xcontext-parameters", + ) + } } tasks { @@ -62,7 +52,7 @@ tasks { exclude("/prebuilt/linux/aapt", "/prebuilt/windows/aapt.exe", "/prebuilt/*/aapt_*") minimize { exclude(dependency("org.bouncycastle:.*")) - exclude(dependency("app.revanced:revanced-patcher")) + exclude(dependency("app.revanced:patcher")) } } @@ -76,10 +66,6 @@ tasks { // The maven-publish is also necessary to make the signing plugin work. publishing { - repositories { - mavenLocal() - } - publications { create("revanced-cli-publication") { from(components["java"]) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index aa164126..f12c8fc1 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,18 +1,22 @@ [versions] -shadow = "8.1.1" -kotlin = "2.0.20" -kotlinx = "1.8.1" -picocli = "4.7.6" -revanced-patcher = "21.0.0" -revanced-library = "3.1.0" +bcpg-jdk18on = "1.83" +shadow = "9.3.1" +kotlin = "2.3.10" +kotlinx = "1.10.2" +picocli = "4.7.7" +revanced-patcher = "22.0.0" +revanced-library = "4.0.0" +sigstore = "2.0.0" [libraries] +bcpg-jdk18on = { module = "org.bouncycastle:bcpg-jdk18on", version.ref = "bcpg-jdk18on" } kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" } kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinx" } picocli = { module = "info.picocli:picocli", version.ref = "picocli" } -revanced-patcher = { module = "app.revanced:revanced-patcher", version.ref = "revanced-patcher" } -revanced-library = { module = "app.revanced:revanced-library-jvm", version.ref = "revanced-library" } +revanced-patcher = { module = "app.revanced:patcher", version.ref = "revanced-patcher" } +revanced-library = { module = "app.revanced:library", version.ref = "revanced-library" } +sigstore-java = { module = "dev.sigstore:sigstore-java", version.ref = "sigstore" } [plugins] -shadow = { id = "com.github.johnrengelman.shadow", version.ref = "shadow" } +shadow = { id = "com.gradleup.shadow", version.ref = "shadow" } kotlin = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index d64cd4917707c1f8861d8cb53dd15194d4248596..61285a659d17295f1de7c53e24fdf13ad755c379 100644 GIT binary patch delta 38060 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 delta 35217 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 /dev/null && pwd -P ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -112,7 +114,6 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -170,7 +171,6 @@ fi # For Cygwin or MSYS, switch paths to Windows format before running java if "$cygwin" || "$msys" ; then APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) JAVACMD=$( cygpath --unix "$JAVACMD" ) @@ -203,15 +203,14 @@ fi DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, # and any embedded shellness will be escaped. # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be # treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" # Stop when "xargs" is not available. diff --git a/gradlew.bat b/gradlew.bat index 25da30db..c4bdd3ab 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -13,6 +13,8 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## @@ -68,11 +70,10 @@ goto fail :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* :end @rem End local scope for the variables with windows NT shell diff --git a/package-lock.json b/package-lock.json index 4ac59bb5..a89d1189 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,119 +5,85 @@ "packages": { "": { "devDependencies": { - "@saithodev/semantic-release-backmerge": "^4.0.1", + "@kilianpaquier/semantic-release-backmerge": "^1.7.1", "@semantic-release/changelog": "^6.0.3", "@semantic-release/git": "^10.0.1", - "gradle-semantic-release-plugin": "^1.10.1", - "semantic-release": "^24.1.2" + "gradle-semantic-release-plugin": "^1.10.3", + "semantic-release": "^25.0.3" } }, - "node_modules/@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "node_modules/@actions/core": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-2.0.3.tgz", + "integrity": "sha512-Od9Thc3T1mQJYddvVPM4QGiLUewdh+3txmDYHHxoNdkqysR1MbCT+rFOtNUxYAz+7+6RIsqipVahY2GJqGPyxA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/highlight": "^7.24.7", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" + "@actions/exec": "^2.0.0", + "@actions/http-client": "^3.0.2" } }, - "node_modules/@babel/highlight": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "node_modules/@actions/exec": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-2.0.0.tgz", + "integrity": "sha512-k8ngrX2voJ/RIN6r9xB82NVqKpnMRtxDoiO+g3olkIUpQNqjArXrCQceduQZCQj3P3xm32pChRLqRrtXTlqhIw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.24.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" + "@actions/io": "^2.0.0" } }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@actions/http-client": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-3.0.2.tgz", + "integrity": "sha512-JP38FYYpyqvUsz+Igqlc/JG6YO9PaKuvqjM3iGvaLqFnJ7TFmcLyy2IDrY0bI0qCQug8E9K+elv5ZNfw62ZJzA==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" + "tunnel": "^0.0.6", + "undici": "^6.23.0" } }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@actions/http-client/node_modules/undici": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.23.0.tgz", + "integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" + "node": ">=18.17" } }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "node_modules/@actions/io": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@actions/io/-/io-2.0.0.tgz", + "integrity": "sha512-Jv33IN09XLO+0HS79aaODsvIRyduiF7NY/F6LYeK5oeUmrsz7aFdRphQjFoESF4jS7lMauDOttKALcpapVDIAg==", "dev": true, "license": "MIT" }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, "node_modules/@colors/colors": { @@ -131,197 +97,251 @@ "node": ">=0.1.90" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@kilianpaquier/semantic-release-backmerge": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@kilianpaquier/semantic-release-backmerge/-/semantic-release-backmerge-1.7.1.tgz", + "integrity": "sha512-R2ARmmzpcfkBm2SMMqdOkvb7a3uRtrHyXPUzZYHEBVjX5sQrv5d57sWs9NhFef2aTbL8bXqFredqSA+MqD7pxg==", "dev": true, "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, + "@octokit/core": "7.0.6", + "@semantic-release/error": "4.0.0", + "aggregate-error": "5.0.0", + "debug": "4.4.3", + "execa": "9.6.1", + "git-up": "8.1.1", + "git-url-parse": "16.1.0", + "lodash": "4.17.23", + "node-fetch": "3.3.2", + "semantic-release": "25.0.2", + "semver": "7.7.3", + "url-join": "5.0.0" + } + }, + "node_modules/@kilianpaquier/semantic-release-backmerge/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/@kilianpaquier/semantic-release-backmerge/node_modules/p-reduce": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz", + "integrity": "sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==", "dev": true, "license": "MIT", "engines": { - "node": ">= 8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@kilianpaquier/semantic-release-backmerge/node_modules/semantic-release": { + "version": "25.0.2", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-25.0.2.tgz", + "integrity": "sha512-6qGjWccl5yoyugHt3jTgztJ9Y0JVzyH8/Voc/D8PlLat9pwxQYXz7W1Dpnq5h0/G5GCYGUaDSlYcyk3AMh5A6g==", "dev": true, "license": "MIT", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@semantic-release/commit-analyzer": "^13.0.1", + "@semantic-release/error": "^4.0.0", + "@semantic-release/github": "^12.0.0", + "@semantic-release/npm": "^13.1.1", + "@semantic-release/release-notes-generator": "^14.1.0", + "aggregate-error": "^5.0.0", + "cosmiconfig": "^9.0.0", + "debug": "^4.0.0", + "env-ci": "^11.0.0", + "execa": "^9.0.0", + "figures": "^6.0.0", + "find-versions": "^6.0.0", + "get-stream": "^6.0.0", + "git-log-parser": "^1.2.0", + "hook-std": "^4.0.0", + "hosted-git-info": "^9.0.0", + "import-from-esm": "^2.0.0", + "lodash-es": "^4.17.21", + "marked": "^15.0.0", + "marked-terminal": "^7.3.0", + "micromatch": "^4.0.2", + "p-each-series": "^3.0.0", + "p-reduce": "^3.0.0", + "read-package-up": "^12.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.3.2", + "semver-diff": "^5.0.0", + "signale": "^1.2.1", + "yargs": "^18.0.0" + }, + "bin": { + "semantic-release": "bin/semantic-release.js" }, "engines": { - "node": ">= 8" + "node": "^22.14.0 || >= 24.10.0" } }, "node_modules/@octokit/auth-token": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.1.tgz", - "integrity": "sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz", + "integrity": "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==", "dev": true, "license": "MIT", "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@octokit/core": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.2.tgz", - "integrity": "sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-7.0.6.tgz", + "integrity": "sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==", "dev": true, "license": "MIT", "dependencies": { - "@octokit/auth-token": "^5.0.0", - "@octokit/graphql": "^8.0.0", - "@octokit/request": "^9.0.0", - "@octokit/request-error": "^6.0.1", - "@octokit/types": "^13.0.0", - "before-after-hook": "^3.0.2", + "@octokit/auth-token": "^6.0.0", + "@octokit/graphql": "^9.0.3", + "@octokit/request": "^10.0.6", + "@octokit/request-error": "^7.0.2", + "@octokit/types": "^16.0.0", + "before-after-hook": "^4.0.0", "universal-user-agent": "^7.0.0" }, "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@octokit/endpoint": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.1.tgz", - "integrity": "sha512-JYjh5rMOwXMJyUpj028cu0Gbp7qe/ihxfJMLc8VZBMMqSwLgOxDI1911gV4Enl1QSavAQNJcwmwBF9M0VvLh6Q==", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.2.tgz", + "integrity": "sha512-4zCpzP1fWc7QlqunZ5bSEjxc6yLAlRTnDwKtgXfcI/FxxGoqedDG8V2+xJ60bV2kODqcGB+nATdtap/XYq2NZQ==", "dev": true, "license": "MIT", "dependencies": { - "@octokit/types": "^13.0.0", + "@octokit/types": "^16.0.0", "universal-user-agent": "^7.0.2" }, "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@octokit/graphql": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.1.1.tgz", - "integrity": "sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.3.tgz", + "integrity": "sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==", "dev": true, "license": "MIT", "dependencies": { - "@octokit/request": "^9.0.0", - "@octokit/types": "^13.0.0", + "@octokit/request": "^10.0.6", + "@octokit/types": "^16.0.0", "universal-user-agent": "^7.0.0" }, "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@octokit/openapi-types": { - "version": "22.2.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz", - "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==", + "version": "27.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-27.0.0.tgz", + "integrity": "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==", "dev": true, "license": "MIT" }, "node_modules/@octokit/plugin-paginate-rest": { - "version": "11.3.5", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.5.tgz", - "integrity": "sha512-cgwIRtKrpwhLoBi0CUNuY83DPGRMaWVjqVI/bGKsLJ4PzyWZNaEmhHroI2xlrVXkk6nFv0IsZpOp+ZWSWUS2AQ==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-14.0.0.tgz", + "integrity": "sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==", "dev": true, "license": "MIT", "dependencies": { - "@octokit/types": "^13.6.0" + "@octokit/types": "^16.0.0" }, "engines": { - "node": ">= 18" + "node": ">= 20" }, "peerDependencies": { "@octokit/core": ">=6" } }, "node_modules/@octokit/plugin-retry": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-7.1.2.tgz", - "integrity": "sha512-XOWnPpH2kJ5VTwozsxGurw+svB2e61aWlmk5EVIYZPwFK5F9h4cyPyj9CIKRyMXMHSwpIsI3mPOdpMmrRhe7UQ==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-8.0.3.tgz", + "integrity": "sha512-vKGx1i3MC0za53IzYBSBXcrhmd+daQDzuZfYDd52X5S0M2otf3kVZTVP8bLA3EkU0lTvd1WEC2OlNNa4G+dohA==", "dev": true, "license": "MIT", "dependencies": { - "@octokit/request-error": "^6.0.0", - "@octokit/types": "^13.0.0", + "@octokit/request-error": "^7.0.2", + "@octokit/types": "^16.0.0", "bottleneck": "^2.15.3" }, "engines": { - "node": ">= 18" + "node": ">= 20" }, "peerDependencies": { - "@octokit/core": ">=6" + "@octokit/core": ">=7" } }, "node_modules/@octokit/plugin-throttling": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-9.3.1.tgz", - "integrity": "sha512-Qd91H4liUBhwLB2h6jZ99bsxoQdhgPk6TdwnClPyTBSDAdviGPceViEgUwj+pcQDmB/rfAXAXK7MTochpHM3yQ==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-11.0.3.tgz", + "integrity": "sha512-34eE0RkFCKycLl2D2kq7W+LovheM/ex3AwZCYN8udpi6bxsyjZidb2McXs69hZhLmJlDqTSP8cH+jSRpiaijBg==", "dev": true, "license": "MIT", "dependencies": { - "@octokit/types": "^13.0.0", + "@octokit/types": "^16.0.0", "bottleneck": "^2.15.3" }, "engines": { - "node": ">= 18" + "node": ">= 20" }, "peerDependencies": { - "@octokit/core": "^6.0.0" + "@octokit/core": "^7.0.0" } }, "node_modules/@octokit/request": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.1.3.tgz", - "integrity": "sha512-V+TFhu5fdF3K58rs1pGUJIDH5RZLbZm5BI+MNF+6o/ssFNT4vWlCh/tVpF3NxGtP15HUxTTMUbsG5llAuU2CZA==", + "version": "10.0.7", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.7.tgz", + "integrity": "sha512-v93h0i1yu4idj8qFPZwjehoJx4j3Ntn+JhXsdJrG9pYaX6j/XRz2RmasMUHtNgQD39nrv/VwTWSqK0RNXR8upA==", "dev": true, "license": "MIT", "dependencies": { - "@octokit/endpoint": "^10.0.0", - "@octokit/request-error": "^6.0.1", - "@octokit/types": "^13.1.0", + "@octokit/endpoint": "^11.0.2", + "@octokit/request-error": "^7.0.2", + "@octokit/types": "^16.0.0", + "fast-content-type-parse": "^3.0.0", "universal-user-agent": "^7.0.2" }, "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@octokit/request-error": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.5.tgz", - "integrity": "sha512-IlBTfGX8Yn/oFPMwSfvugfncK2EwRLjzbrpifNaMY8o/HTEAFqCA1FZxjD9cWvSKBHgrIhc4CSBIzMxiLsbzFQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.1.0.tgz", + "integrity": "sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==", "dev": true, "license": "MIT", "dependencies": { - "@octokit/types": "^13.0.0" + "@octokit/types": "^16.0.0" }, "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@octokit/types": { - "version": "13.6.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.6.0.tgz", - "integrity": "sha512-CrooV/vKCXqwLa+osmHLIMUb87brpgUqlqkPGc6iE2wCkUvTrHiXFMhAKoDDaAAYJrtKtrFTgSQTg5nObBEaew==", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-16.0.0.tgz", + "integrity": "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==", "dev": true, "license": "MIT", "dependencies": { - "@octokit/openapi-types": "^22.2.0" + "@octokit/openapi-types": "^27.0.0" } }, "node_modules/@pnpm/config.env-replace": { @@ -355,9 +375,9 @@ "license": "ISC" }, "node_modules/@pnpm/npm-conf": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz", - "integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-3.0.2.tgz", + "integrity": "sha512-h104Kh26rR8tm+a3Qkc5S4VLYint3FE48as7+/5oCEcKR2idC/pF1G6AhIXKI+eHPJa/3J9i5z0Al47IeGHPkA==", "dev": true, "license": "MIT", "dependencies": { @@ -369,396 +389,354 @@ "node": ">=12" } }, - "node_modules/@saithodev/semantic-release-backmerge": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@saithodev/semantic-release-backmerge/-/semantic-release-backmerge-4.0.1.tgz", - "integrity": "sha512-WDsU28YrXSLx0xny7FgFlEk8DCKGcj6OOhA+4Q9k3te1jJD1GZuqY8sbIkVQaw9cqJ7CT+fCZUN6QDad8JW4Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@semantic-release/error": "^3.0.0", - "aggregate-error": "^3.1.0", - "debug": "^4.3.4", - "execa": "^5.1.1", - "lodash": "^4.17.21", - "semantic-release": "^22.0.7" - } - }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/@octokit/auth-token": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", - "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 18" - } + "license": "MIT" }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/@octokit/core": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.0.tgz", - "integrity": "sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==", + "node_modules/@semantic-release/changelog": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.3.tgz", + "integrity": "sha512-dZuR5qByyfe3Y03TpmCvAxCyTnp7r5XwtHRf/8vD9EAn4ZWbavUX8adMtXYzE86EVh0gyLA7lm5yW4IV30XUag==", "dev": true, "license": "MIT", "dependencies": { - "@octokit/auth-token": "^4.0.0", - "@octokit/graphql": "^7.1.0", - "@octokit/request": "^8.3.1", - "@octokit/request-error": "^5.1.0", - "@octokit/types": "^13.0.0", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" + "@semantic-release/error": "^3.0.0", + "aggregate-error": "^3.0.0", + "fs-extra": "^11.0.0", + "lodash": "^4.17.4" }, "engines": { - "node": ">= 18" + "node": ">=14.17" + }, + "peerDependencies": { + "semantic-release": ">=18.0.0" } }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/@octokit/endpoint": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.5.tgz", - "integrity": "sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==", + "node_modules/@semantic-release/changelog/node_modules/@semantic-release/error": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-3.0.0.tgz", + "integrity": "sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==", "dev": true, "license": "MIT", - "dependencies": { - "@octokit/types": "^13.1.0", - "universal-user-agent": "^6.0.0" - }, "engines": { - "node": ">= 18" + "node": ">=14.17" } }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/@octokit/graphql": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.0.tgz", - "integrity": "sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==", + "node_modules/@semantic-release/changelog/node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, "license": "MIT", "dependencies": { - "@octokit/request": "^8.3.0", - "@octokit/types": "^13.0.0", - "universal-user-agent": "^6.0.0" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" }, "engines": { - "node": ">= 18" + "node": ">=8" } }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/@octokit/openapi-types": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", - "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/@octokit/plugin-paginate-rest": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.1.tgz", - "integrity": "sha512-wfGhE/TAkXZRLjksFXuDZdmGnJQHvtU/joFQdweXUgzo1XwvBCD4o4+75NtFfjfLK5IwLf9vHTfSiU3sLRYpRw==", + "node_modules/@semantic-release/changelog/node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, "license": "MIT", - "dependencies": { - "@octokit/types": "^12.6.0" - }, "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@octokit/core": "5" + "node": ">=6" } }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { - "version": "12.6.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", - "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", + "node_modules/@semantic-release/changelog/node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^20.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/@octokit/plugin-retry": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-6.0.1.tgz", - "integrity": "sha512-SKs+Tz9oj0g4p28qkZwl/topGcb0k0qPNX/i7vBKmDsjoeqnVfFUquqrE/O9oJY7+oLzdCtkiWSXLpLjvl6uog==", + "node_modules/@semantic-release/commit-analyzer": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-13.0.1.tgz", + "integrity": "sha512-wdnBPHKkr9HhNhXOhZD5a2LNl91+hs8CC2vsAVYxtZH3y0dV3wKn+uZSN61rdJQZ8EGxzWB3inWocBHV9+u/CQ==", "dev": true, "license": "MIT", "dependencies": { - "@octokit/request-error": "^5.0.0", - "@octokit/types": "^12.0.0", - "bottleneck": "^2.15.3" + "conventional-changelog-angular": "^8.0.0", + "conventional-changelog-writer": "^8.0.0", + "conventional-commits-filter": "^5.0.0", + "conventional-commits-parser": "^6.0.0", + "debug": "^4.0.0", + "import-from-esm": "^2.0.0", + "lodash-es": "^4.17.21", + "micromatch": "^4.0.2" }, "engines": { - "node": ">= 18" + "node": ">=20.8.1" }, "peerDependencies": { - "@octokit/core": ">=5" + "semantic-release": ">=20.1.0" } }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/@octokit/plugin-retry/node_modules/@octokit/types": { - "version": "12.6.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", - "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", + "node_modules/@semantic-release/error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", + "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", "dev": true, "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^20.0.0" + "engines": { + "node": ">=18" } }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/@octokit/plugin-throttling": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-8.2.0.tgz", - "integrity": "sha512-nOpWtLayKFpgqmgD0y3GqXafMFuKcA4tRPZIfu7BArd2lEZeb1988nhWhwx4aZWmjDmUfdgVf7W+Tt4AmvRmMQ==", + "node_modules/@semantic-release/git": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@semantic-release/git/-/git-10.0.1.tgz", + "integrity": "sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==", "dev": true, "license": "MIT", "dependencies": { - "@octokit/types": "^12.2.0", - "bottleneck": "^2.15.3" + "@semantic-release/error": "^3.0.0", + "aggregate-error": "^3.0.0", + "debug": "^4.0.0", + "dir-glob": "^3.0.0", + "execa": "^5.0.0", + "lodash": "^4.17.4", + "micromatch": "^4.0.0", + "p-reduce": "^2.0.0" }, "engines": { - "node": ">= 18" + "node": ">=14.17" }, "peerDependencies": { - "@octokit/core": "^5.0.0" + "semantic-release": ">=18.0.0" } }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/@octokit/plugin-throttling/node_modules/@octokit/types": { - "version": "12.6.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", - "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", + "node_modules/@semantic-release/git/node_modules/@semantic-release/error": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-3.0.0.tgz", + "integrity": "sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==", "dev": true, "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^20.0.0" + "engines": { + "node": ">=14.17" } }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/@octokit/request": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.0.tgz", - "integrity": "sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==", + "node_modules/@semantic-release/git/node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, "license": "MIT", "dependencies": { - "@octokit/endpoint": "^9.0.1", - "@octokit/request-error": "^5.1.0", - "@octokit/types": "^13.1.0", - "universal-user-agent": "^6.0.0" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" }, "engines": { - "node": ">= 18" + "node": ">=8" } }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/@octokit/request-error": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.0.tgz", - "integrity": "sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==", + "node_modules/@semantic-release/git/node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, "license": "MIT", - "dependencies": { - "@octokit/types": "^13.1.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - }, "engines": { - "node": ">= 18" + "node": ">=6" } }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/@semantic-release/commit-analyzer": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-11.1.0.tgz", - "integrity": "sha512-cXNTbv3nXR2hlzHjAMgbuiQVtvWHTlwwISt60B+4NZv01y/QRY7p2HcJm8Eh2StzcTJoNnflvKjHH/cjFS7d5g==", + "node_modules/@semantic-release/git/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "license": "MIT", "dependencies": { - "conventional-changelog-angular": "^7.0.0", - "conventional-commits-filter": "^4.0.0", - "conventional-commits-parser": "^5.0.0", - "debug": "^4.0.0", - "import-from-esm": "^1.0.3", - "lodash-es": "^4.17.21", - "micromatch": "^4.0.2" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": "^18.17 || >=20.6.1" + "node": ">=10" }, - "peerDependencies": { - "semantic-release": ">=20.1.0" + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/@semantic-release/github": { - "version": "9.2.6", - "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-9.2.6.tgz", - "integrity": "sha512-shi+Lrf6exeNZF+sBhK+P011LSbhmIAoUEgEY6SsxF8irJ+J2stwI5jkyDQ+4gzYyDImzV6LCKdYB9FXnQRWKA==", + "node_modules/@semantic-release/git/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "license": "MIT", - "dependencies": { - "@octokit/core": "^5.0.0", - "@octokit/plugin-paginate-rest": "^9.0.0", - "@octokit/plugin-retry": "^6.0.0", - "@octokit/plugin-throttling": "^8.0.0", - "@semantic-release/error": "^4.0.0", - "aggregate-error": "^5.0.0", - "debug": "^4.3.4", - "dir-glob": "^3.0.1", - "globby": "^14.0.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", - "issue-parser": "^6.0.0", - "lodash-es": "^4.17.21", - "mime": "^4.0.0", - "p-filter": "^4.0.0", - "url-join": "^5.0.0" - }, "engines": { - "node": ">=18" + "node": ">=10" }, - "peerDependencies": { - "semantic-release": ">=20.1.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/git/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" } }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/@semantic-release/github/node_modules/@semantic-release/error": { + "node_modules/@semantic-release/git/node_modules/indent-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", - "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=8" } }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/@semantic-release/github/node_modules/aggregate-error": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", - "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", + "node_modules/@semantic-release/git/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, "license": "MIT", - "dependencies": { - "clean-stack": "^5.2.0", - "indent-string": "^5.0.0" - }, "engines": { - "node": ">=18" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/@semantic-release/npm": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-11.0.3.tgz", - "integrity": "sha512-KUsozQGhRBAnoVg4UMZj9ep436VEGwT536/jwSqB7vcEfA6oncCUU7UIYTRdLx7GvTtqn0kBjnkfLVkcnBa2YQ==", + "node_modules/@semantic-release/git/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "license": "MIT", "dependencies": { - "@semantic-release/error": "^4.0.0", - "aggregate-error": "^5.0.0", - "execa": "^8.0.0", - "fs-extra": "^11.0.0", - "lodash-es": "^4.17.21", - "nerf-dart": "^1.0.0", - "normalize-url": "^8.0.0", - "npm": "^10.5.0", - "rc": "^1.2.8", - "read-pkg": "^9.0.0", - "registry-auth-token": "^5.0.0", - "semver": "^7.1.2", - "tempy": "^3.0.0" + "path-key": "^3.0.0" }, "engines": { - "node": "^18.17 || >=20" - }, - "peerDependencies": { - "semantic-release": ">=20.1.0" + "node": ">=8" } }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/@semantic-release/npm/node_modules/@semantic-release/error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", - "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", + "node_modules/@semantic-release/git/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } + "license": "ISC" }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/@semantic-release/npm/node_modules/aggregate-error": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", - "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", + "node_modules/@semantic-release/git/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, "license": "MIT", - "dependencies": { - "clean-stack": "^5.2.0", - "indent-string": "^5.0.0" - }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/@semantic-release/npm/node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "node_modules/@semantic-release/github": { + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-12.0.3.tgz", + "integrity": "sha512-pod3AVGVVVk2rUczMBL4+gfY7hP7A9YYOwjpxVFSusF+pDbFOYBzFRQcHjv1H3IntQyB/Noxzx8LUZ/iwAQQeQ==", "dev": true, "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" + "@octokit/core": "^7.0.0", + "@octokit/plugin-paginate-rest": "^14.0.0", + "@octokit/plugin-retry": "^8.0.0", + "@octokit/plugin-throttling": "^11.0.0", + "@semantic-release/error": "^4.0.0", + "aggregate-error": "^5.0.0", + "debug": "^4.3.4", + "dir-glob": "^3.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "issue-parser": "^7.0.0", + "lodash-es": "^4.17.21", + "mime": "^4.0.0", + "p-filter": "^4.0.0", + "tinyglobby": "^0.2.14", + "undici": "^7.0.0", + "url-join": "^5.0.0" }, "engines": { - "node": ">=16.17" + "node": "^22.14.0 || >= 24.10.0" }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "peerDependencies": { + "semantic-release": ">=24.1.0" } }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/@semantic-release/npm/node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "node_modules/@semantic-release/npm": { + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-13.1.3.tgz", + "integrity": "sha512-q7zreY8n9V0FIP1Cbu63D+lXtRAVAIWb30MH5U3TdrfXt6r2MIrWCY0whAImN53qNvSGp0Zt07U95K+Qp9GpEg==", "dev": true, "license": "MIT", + "dependencies": { + "@actions/core": "^2.0.0", + "@semantic-release/error": "^4.0.0", + "aggregate-error": "^5.0.0", + "env-ci": "^11.2.0", + "execa": "^9.0.0", + "fs-extra": "^11.0.0", + "lodash-es": "^4.17.21", + "nerf-dart": "^1.0.0", + "normalize-url": "^8.0.0", + "npm": "^11.6.2", + "rc": "^1.2.8", + "read-pkg": "^10.0.0", + "registry-auth-token": "^5.0.0", + "semver": "^7.1.2", + "tempy": "^3.0.0" + }, "engines": { - "node": ">=16" + "node": "^22.14.0 || >= 24.10.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "semantic-release": ">=20.1.0" } }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/@semantic-release/release-notes-generator": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-12.1.0.tgz", - "integrity": "sha512-g6M9AjUKAZUZnxaJZnouNBeDNTCUrJ5Ltj+VJ60gJeDaRRahcHsry9HW8yKrnKkKNkx5lbWiEP1FPMqVNQz8Kg==", + "node_modules/@semantic-release/release-notes-generator": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-14.1.0.tgz", + "integrity": "sha512-CcyDRk7xq+ON/20YNR+1I/jP7BYKICr1uKd1HHpROSnnTdGqOTburi4jcRiTYz0cpfhxSloQO3cGhnoot7IEkA==", "dev": true, "license": "MIT", "dependencies": { - "conventional-changelog-angular": "^7.0.0", - "conventional-changelog-writer": "^7.0.0", - "conventional-commits-filter": "^4.0.0", - "conventional-commits-parser": "^5.0.0", + "conventional-changelog-angular": "^8.0.0", + "conventional-changelog-writer": "^8.0.0", + "conventional-commits-filter": "^5.0.0", + "conventional-commits-parser": "^6.0.0", "debug": "^4.0.0", "get-stream": "^7.0.0", - "import-from-esm": "^1.0.3", + "import-from-esm": "^2.0.0", "into-stream": "^7.0.0", "lodash-es": "^4.17.21", - "read-pkg-up": "^11.0.0" + "read-package-up": "^11.0.0" }, "engines": { - "node": "^18.17 || >=20.6.1" + "node": ">=20.8.1" }, "peerDependencies": { "semantic-release": ">=20.1.0" } }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/@semantic-release/release-notes-generator/node_modules/get-stream": { + "node_modules/@semantic-release/release-notes-generator/node_modules/get-stream": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.1.tgz", "integrity": "sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==", @@ -771,958 +749,90 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/ansi-escapes": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz", - "integrity": "sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/before-after-hook": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", - "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/clean-stack": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", - "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", + "node_modules/@semantic-release/release-notes-generator/node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "escape-string-regexp": "5.0.0" + "lru-cache": "^10.0.1" }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/conventional-changelog-angular": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", - "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", + "node_modules/@semantic-release/release-notes-generator/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "license": "ISC", - "dependencies": { - "compare-func": "^2.0.0" - }, - "engines": { - "node": ">=16" - } + "license": "ISC" }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/conventional-changelog-writer": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-7.0.1.tgz", - "integrity": "sha512-Uo+R9neH3r/foIvQ0MKcsXkX642hdm9odUp7TqgFS7BsalTcjzRlIfWZrZR1gbxOozKucaKt5KAbjW8J8xRSmA==", + "node_modules/@semantic-release/release-notes-generator/node_modules/normalize-package-data": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", + "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "conventional-commits-filter": "^4.0.0", - "handlebars": "^4.7.7", - "json-stringify-safe": "^5.0.1", - "meow": "^12.0.1", - "semver": "^7.5.2", - "split2": "^4.0.0" - }, - "bin": { - "conventional-changelog-writer": "cli.mjs" + "hosted-git-info": "^7.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" }, "engines": { - "node": ">=16" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/conventional-commits-filter": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-4.0.0.tgz", - "integrity": "sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==", + "node_modules/@semantic-release/release-notes-generator/node_modules/parse-json": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz", + "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "index-to-position": "^1.1.0", + "type-fest": "^4.39.1" + }, "engines": { - "node": ">=16" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/conventional-commits-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", - "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", + "node_modules/@semantic-release/release-notes-generator/node_modules/read-package-up": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/read-package-up/-/read-package-up-11.0.0.tgz", + "integrity": "sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==", "dev": true, "license": "MIT", "dependencies": { - "is-text-path": "^2.0.0", - "JSONStream": "^1.3.5", - "meow": "^12.0.1", - "split2": "^4.0.0" - }, - "bin": { - "conventional-commits-parser": "cli.mjs" + "find-up-simple": "^1.0.0", + "read-pkg": "^9.0.0", + "type-fest": "^4.6.0" }, "engines": { - "node": ">=16" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "node_modules/@semantic-release/release-notes-generator/node_modules/read-pkg": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", + "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", "dev": true, "license": "MIT", "dependencies": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/env-ci": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-10.0.0.tgz", - "integrity": "sha512-U4xcd/utDYFgMh0yWj07R1H6L5fwhVbmxBCpnL0DbVSDZVnsC82HONw0wxtxNkIAcua3KtbomQvIk5xFZGAQJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "execa": "^8.0.0", - "java-properties": "^1.0.2" - }, - "engines": { - "node": "^18.17 || >=20.6.1" - } - }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/env-ci/node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/env-ci/node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/find-versions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz", - "integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver-regex": "^4.0.5" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/hosted-git-info": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", - "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^10.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=16.17.0" - } - }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/issue-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", - "integrity": "sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash.capitalize": "^4.2.1", - "lodash.escaperegexp": "^4.1.2", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.uniqby": "^4.7.0" - }, - "engines": { - "node": ">=10.13" - } - }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/marked": { - "version": "9.1.6", - "resolved": "https://registry.npmjs.org/marked/-/marked-9.1.6.tgz", - "integrity": "sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q==", - "dev": true, - "license": "MIT", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 16" - } - }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/marked-terminal": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-6.2.0.tgz", - "integrity": "sha512-ubWhwcBFHnXsjYNsu+Wndpg0zhY4CahSpPlA70PlO0rR9r2sZpkyU+rkCsOWH+KMEkx847UpALON+HWgxowFtw==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-escapes": "^6.2.0", - "cardinal": "^2.1.1", - "chalk": "^5.3.0", - "cli-table3": "^0.6.3", - "node-emoji": "^2.1.3", - "supports-hyperlinks": "^3.0.0" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "marked": ">=1 <12" - } - }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/meow": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", - "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16.10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/p-reduce": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz", - "integrity": "sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/semantic-release": { - "version": "22.0.12", - "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-22.0.12.tgz", - "integrity": "sha512-0mhiCR/4sZb00RVFJIUlMuiBkW3NMpVIW2Gse7noqEMoFGkvfPPAImEQbkBV8xga4KOPP4FdTRYuLLy32R1fPw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@semantic-release/commit-analyzer": "^11.0.0", - "@semantic-release/error": "^4.0.0", - "@semantic-release/github": "^9.0.0", - "@semantic-release/npm": "^11.0.0", - "@semantic-release/release-notes-generator": "^12.0.0", - "aggregate-error": "^5.0.0", - "cosmiconfig": "^8.0.0", - "debug": "^4.0.0", - "env-ci": "^10.0.0", - "execa": "^8.0.0", - "figures": "^6.0.0", - "find-versions": "^5.1.0", - "get-stream": "^6.0.0", - "git-log-parser": "^1.2.0", - "hook-std": "^3.0.0", - "hosted-git-info": "^7.0.0", - "import-from-esm": "^1.3.1", - "lodash-es": "^4.17.21", - "marked": "^9.0.0", - "marked-terminal": "^6.0.0", - "micromatch": "^4.0.2", - "p-each-series": "^3.0.0", - "p-reduce": "^3.0.0", - "read-pkg-up": "^11.0.0", - "resolve-from": "^5.0.0", - "semver": "^7.3.2", - "semver-diff": "^4.0.0", - "signale": "^1.2.1", - "yargs": "^17.5.1" - }, - "bin": { - "semantic-release": "bin/semantic-release.js" - }, - "engines": { - "node": "^18.17 || >=20.6.1" - } - }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/semantic-release/node_modules/@semantic-release/error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", - "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/semantic-release/node_modules/aggregate-error": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", - "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", - "dev": true, - "license": "MIT", - "dependencies": { - "clean-stack": "^5.2.0", - "indent-string": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/semantic-release/node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/semantic-release/node_modules/execa/node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@saithodev/semantic-release-backmerge/node_modules/universal-user-agent": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", - "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/@sec-ant/readable-stream": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", - "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@semantic-release/changelog": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.3.tgz", - "integrity": "sha512-dZuR5qByyfe3Y03TpmCvAxCyTnp7r5XwtHRf/8vD9EAn4ZWbavUX8adMtXYzE86EVh0gyLA7lm5yW4IV30XUag==", - "dev": true, - "license": "MIT", - "dependencies": { - "@semantic-release/error": "^3.0.0", - "aggregate-error": "^3.0.0", - "fs-extra": "^11.0.0", - "lodash": "^4.17.4" - }, - "engines": { - "node": ">=14.17" - }, - "peerDependencies": { - "semantic-release": ">=18.0.0" - } - }, - "node_modules/@semantic-release/commit-analyzer": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-13.0.0.tgz", - "integrity": "sha512-KtXWczvTAB1ZFZ6B4O+w8HkfYm/OgQb1dUGNFZtDgQ0csggrmkq8sTxhd+lwGF8kMb59/RnG9o4Tn7M/I8dQ9Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "conventional-changelog-angular": "^8.0.0", - "conventional-changelog-writer": "^8.0.0", - "conventional-commits-filter": "^5.0.0", - "conventional-commits-parser": "^6.0.0", - "debug": "^4.0.0", - "import-from-esm": "^1.0.3", - "lodash-es": "^4.17.21", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=20.8.1" - }, - "peerDependencies": { - "semantic-release": ">=20.1.0" - } - }, - "node_modules/@semantic-release/error": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-3.0.0.tgz", - "integrity": "sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.17" - } - }, - "node_modules/@semantic-release/git": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@semantic-release/git/-/git-10.0.1.tgz", - "integrity": "sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@semantic-release/error": "^3.0.0", - "aggregate-error": "^3.0.0", - "debug": "^4.0.0", - "dir-glob": "^3.0.0", - "execa": "^5.0.0", - "lodash": "^4.17.4", - "micromatch": "^4.0.0", - "p-reduce": "^2.0.0" - }, - "engines": { - "node": ">=14.17" - }, - "peerDependencies": { - "semantic-release": ">=18.0.0" - } - }, - "node_modules/@semantic-release/github": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-11.0.0.tgz", - "integrity": "sha512-Uon6G6gJD8U1JNvPm7X0j46yxNRJ8Ui6SgK4Zw5Ktu8RgjEft3BGn+l/RX1TTzhhO3/uUcKuqM+/9/ETFxWS/Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/core": "^6.0.0", - "@octokit/plugin-paginate-rest": "^11.0.0", - "@octokit/plugin-retry": "^7.0.0", - "@octokit/plugin-throttling": "^9.0.0", - "@semantic-release/error": "^4.0.0", - "aggregate-error": "^5.0.0", - "debug": "^4.3.4", - "dir-glob": "^3.0.1", - "globby": "^14.0.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", - "issue-parser": "^7.0.0", - "lodash-es": "^4.17.21", - "mime": "^4.0.0", - "p-filter": "^4.0.0", - "url-join": "^5.0.0" - }, - "engines": { - "node": ">=20.8.1" - }, - "peerDependencies": { - "semantic-release": ">=24.1.0" - } - }, - "node_modules/@semantic-release/github/node_modules/@semantic-release/error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", - "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@semantic-release/github/node_modules/aggregate-error": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", - "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", - "dev": true, - "license": "MIT", - "dependencies": { - "clean-stack": "^5.2.0", - "indent-string": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/github/node_modules/clean-stack": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", - "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "5.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/github/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/github/node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-12.0.1.tgz", - "integrity": "sha512-/6nntGSUGK2aTOI0rHPwY3ZjgY9FkXmEHbW9Kr+62NVOsyqpKKeP0lrCH+tphv+EsNdJNmqqwijTEnVWUMQ2Nw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@semantic-release/error": "^4.0.0", - "aggregate-error": "^5.0.0", - "execa": "^9.0.0", - "fs-extra": "^11.0.0", - "lodash-es": "^4.17.21", - "nerf-dart": "^1.0.0", - "normalize-url": "^8.0.0", - "npm": "^10.5.0", - "rc": "^1.2.8", - "read-pkg": "^9.0.0", - "registry-auth-token": "^5.0.0", - "semver": "^7.1.2", - "tempy": "^3.0.0" - }, - "engines": { - "node": ">=20.8.1" - }, - "peerDependencies": { - "semantic-release": ">=20.1.0" - } - }, - "node_modules/@semantic-release/npm/node_modules/@semantic-release/error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", - "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@semantic-release/npm/node_modules/@sindresorhus/merge-streams": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", - "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm/node_modules/aggregate-error": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", - "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", - "dev": true, - "license": "MIT", - "dependencies": { - "clean-stack": "^5.2.0", - "indent-string": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm/node_modules/clean-stack": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", - "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "5.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm/node_modules/execa": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-9.4.0.tgz", - "integrity": "sha512-yKHlle2YGxZE842MERVIplWwNH5VYmqqcPFgtnlU//K8gxuFFXu0pwd/CrfXTumFpeEiufsP7+opT/bPJa1yVw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/merge-streams": "^4.0.0", - "cross-spawn": "^7.0.3", - "figures": "^6.1.0", - "get-stream": "^9.0.0", - "human-signals": "^8.0.0", - "is-plain-obj": "^4.1.0", - "is-stream": "^4.0.1", - "npm-run-path": "^6.0.0", - "pretty-ms": "^9.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^4.0.0", - "yoctocolors": "^2.0.0" - }, - "engines": { - "node": "^18.19.0 || >=20.5.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/@semantic-release/npm/node_modules/get-stream": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", - "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sec-ant/readable-stream": "^0.4.1", - "is-stream": "^4.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm/node_modules/human-signals": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", - "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@semantic-release/npm/node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm/node_modules/is-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm/node_modules/npm-run-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", - "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^4.0.0", - "unicorn-magic": "^0.3.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@semantic-release/npm/node_modules/strip-final-newline": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", - "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm/node_modules/unicorn-magic": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", - "dev": true, - "license": "MIT", + "@types/normalize-package-data": "^2.4.3", + "normalize-package-data": "^6.0.0", + "parse-json": "^8.0.0", + "type-fest": "^4.6.0", + "unicorn-magic": "^0.1.0" + }, "engines": { "node": ">=18" }, @@ -1730,39 +840,27 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/release-notes-generator": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-14.0.1.tgz", - "integrity": "sha512-K0w+5220TM4HZTthE5dDpIuFrnkN1NfTGPidJFm04ULT1DEZ9WG89VNXN7F0c+6nMEpWgqmPvb7vY7JkB2jyyA==", + "node_modules/@semantic-release/release-notes-generator/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", "dev": true, - "license": "MIT", - "dependencies": { - "conventional-changelog-angular": "^8.0.0", - "conventional-changelog-writer": "^8.0.0", - "conventional-commits-filter": "^5.0.0", - "conventional-commits-parser": "^6.0.0", - "debug": "^4.0.0", - "get-stream": "^7.0.0", - "import-from-esm": "^1.0.3", - "into-stream": "^7.0.0", - "lodash-es": "^4.17.21", - "read-package-up": "^11.0.0" - }, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=20.8.1" + "node": ">=16" }, - "peerDependencies": { - "semantic-release": ">=20.1.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/release-notes-generator/node_modules/get-stream": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.1.tgz", - "integrity": "sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==", + "node_modules/@semantic-release/release-notes-generator/node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -1782,9 +880,9 @@ } }, "node_modules/@sindresorhus/merge-streams": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", - "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", "dev": true, "license": "MIT", "engines": { @@ -1801,44 +899,44 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "node_modules/@types/parse-path": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/parse-path/-/parse-path-7.0.3.tgz", + "integrity": "sha512-LriObC2+KYZD3FzCrgWGv/qufdUy4eXrxcLgQMfYXgPbLIecKIsVBaQgUPmxSSLcjmYbDTQbMgr6qr6l/eb7Bg==", "dev": true, "license": "MIT" }, "node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "dev": true, "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, "engines": { "node": ">= 14" } }, "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", + "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", "dev": true, "license": "MIT", "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "clean-stack": "^5.2.0", + "indent-string": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/ansi-escapes": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", - "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.3.0.tgz", + "integrity": "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==", "dev": true, "license": "MIT", "dependencies": { @@ -1852,38 +950,31 @@ } }, "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/ansicolors": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", - "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", - "dev": true, - "license": "MIT" - }, "node_modules/any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", @@ -1913,9 +1004,9 @@ "license": "MIT" }, "node_modules/before-after-hook": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz", - "integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-4.0.0.tgz", + "integrity": "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==", "dev": true, "license": "Apache-2.0" }, @@ -1949,24 +1040,10 @@ "node": ">=6" } }, - "node_modules/cardinal": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", - "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansicolors": "~0.3.2", - "redeyed": "~2.1.0" - }, - "bin": { - "cdl": "bin/cdl.js" - } - }, "node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, "license": "MIT", "engines": { @@ -1987,13 +1064,19 @@ } }, "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.3.0.tgz", + "integrity": "sha512-9ngPTOhYGQqNVSfeJkYXHmF7AGWp4/nN5D/QqNQs3Dvxd1Kk/WpjHfNujKHYUQ/5CoGyOyFNoWSPk5afzP0QVg==", "dev": true, "license": "MIT", + "dependencies": { + "escape-string-regexp": "5.0.0" + }, "engines": { - "node": ">=6" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/cli-highlight": { @@ -2018,6 +1101,22 @@ "npm": ">=5.0.0" } }, + "node_modules/cli-highlight/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/cli-highlight/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -2047,6 +1146,24 @@ "wrap-ansi": "^7.0.0" } }, + "node_modules/cli-highlight/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/cli-highlight/node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -2093,18 +1210,59 @@ } }, "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", + "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", "dev": true, "license": "ISC", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cliui/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" }, "engines": { "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/color-convert": { @@ -2150,9 +1308,9 @@ } }, "node_modules/conventional-changelog-angular": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.0.0.tgz", - "integrity": "sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.1.0.tgz", + "integrity": "sha512-GGf2Nipn1RUCAktxuVauVr1e3r8QrLP/B0lEUsFktmGqc3ddbQkhoJZHJctVU829U1c6mTSWftrVOCHaL85Q3w==", "dev": true, "license": "ISC", "dependencies": { @@ -2163,13 +1321,12 @@ } }, "node_modules/conventional-changelog-writer": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-8.0.0.tgz", - "integrity": "sha512-TQcoYGRatlAnT2qEWDON/XSfnVG38JzA7E0wcGScu7RElQBkg9WWgZd1peCWFcWDh1xfb2CfsrcvOn1bbSzztA==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-8.2.0.tgz", + "integrity": "sha512-Y2aW4596l9AEvFJRwFGJGiQjt2sBYTjPD18DdvxX9Vpz0Z7HQ+g1Z+6iYDAm1vR3QOJrDBkRHixHK/+FhkR6Pw==", "dev": true, "license": "MIT", "dependencies": { - "@types/semver": "^7.5.5", "conventional-commits-filter": "^5.0.0", "handlebars": "^4.7.7", "meow": "^13.0.0", @@ -2193,9 +1350,9 @@ } }, "node_modules/conventional-commits-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.0.0.tgz", - "integrity": "sha512-TbsINLp48XeMXR8EvGjTnKGsZqBemisPoyWESlpRyR8lif0lcwzqz+NMtYSj1ooF/WYjSuu7wX0CtdeeMEQAmA==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.2.1.tgz", + "integrity": "sha512-20pyHgnO40rvfI0NGF/xiEoFMkXDtkF8FwHvk5BokoFoCuTQRI8vrNCNFWUOfuolKJMm1tPCHc8GgYEtr1XRNA==", "dev": true, "license": "MIT", "dependencies": { @@ -2256,9 +1413,9 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { @@ -2299,10 +1456,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", "dependencies": { @@ -2327,13 +1494,6 @@ "node": ">=4.0.0" } }, - "node_modules/deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "dev": true, - "license": "ISC" - }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -2385,9 +1545,9 @@ "license": "MIT" }, "node_modules/env-ci": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-11.1.0.tgz", - "integrity": "sha512-Z8dnwSDbV1XYM9SBF2J0GcNVvmfmfh3a49qddGIROhBoVro6MZVTji15z/sJbQ2ko2ei8n988EU1wzoLU/tF+g==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-11.2.0.tgz", + "integrity": "sha512-D5kWfzkmaOQDioPmiviWAVtKmpPT4/iJmMVQxWxMPJTFyTkdc5JQUfc5iXEeWxcOdsYTKSAiA/Age4NUOqKsRA==", "dev": true, "license": "MIT", "dependencies": { @@ -2516,19 +1676,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/env-ci/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/env-ci/node_modules/strip-final-newline": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", @@ -2566,9 +1713,9 @@ } }, "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2586,78 +1733,84 @@ } }, "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "node": ">=12" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.1.tgz", + "integrity": "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==", "dev": true, "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.6", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.1", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.2.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.1.1" }, "engines": { - "node": ">=10" + "node": "^18.19.0 || >=20.5.0" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "node_modules/fast-content-type-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-3.0.0.tgz", + "integrity": "sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==", "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", "dev": true, - "license": "ISC", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", "dependencies": { - "reusify": "^1.0.4" + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" } }, "node_modules/figures": { @@ -2703,9 +1856,9 @@ } }, "node_modules/find-up-simple": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz", - "integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz", + "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==", "dev": true, "license": "MIT", "engines": { @@ -2732,6 +1885,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, "node_modules/from2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", @@ -2744,9 +1910,9 @@ } }, "node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.3.tgz", + "integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==", "dev": true, "license": "MIT", "dependencies": { @@ -2781,14 +1947,31 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-east-asian-width": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", + "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", "dev": true, "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -2819,51 +2002,25 @@ "through2": "~2.0.0" } }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globby": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", - "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", + "node_modules/git-up": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-8.1.1.tgz", + "integrity": "sha512-FDenSF3fVqBYSaJoYy1KSc2wosx0gCvKP+c+PRBht7cAaiCeQlBtfBDX9vgnNOHmdePlSFITVcn4pFfcgNvx3g==", "dev": true, "license": "MIT", "dependencies": { - "@sindresorhus/merge-streams": "^2.1.0", - "fast-glob": "^3.3.2", - "ignore": "^5.2.4", - "path-type": "^5.0.0", - "slash": "^5.1.0", - "unicorn-magic": "^0.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "is-ssh": "^1.4.0", + "parse-url": "^9.2.0" } }, - "node_modules/globby/node_modules/path-type": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", - "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", + "node_modules/git-url-parse": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-16.1.0.tgz", + "integrity": "sha512-cPLz4HuK86wClEW7iDdeAKcCVlWXmrLpb2L+G9goW0Z1dtpNS6BXXSOckUTlJT/LDQViE1QZKstNORzHsLnobw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "git-up": "^8.1.0" } }, "node_modules/graceful-fs": { @@ -2874,9 +2031,9 @@ "license": "ISC" }, "node_modules/gradle-semantic-release-plugin": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/gradle-semantic-release-plugin/-/gradle-semantic-release-plugin-1.10.1.tgz", - "integrity": "sha512-Q4dLAFICjPouUyRRHEKK8cXNB75nraXoioYZDZlVQOg4sYKudnTDZ3ohLmV3k4cPGiiMCh1ckXETkx9JnuyKmA==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/gradle-semantic-release-plugin/-/gradle-semantic-release-plugin-1.10.3.tgz", + "integrity": "sha512-ik1qPcHvzl9AI0NzZpmKv89SAOpamuAQrbynWy0RjMBskpvHh97vPw0ywtfw5+u2O7oqxtG88xLJOFY0YaZCpg==", "dev": true, "funding": [ { @@ -2893,7 +2050,7 @@ "node": ">=18" }, "peerDependencies": { - "semantic-release": "^24.0.0" + "semantic-release": "^24.0.0 || ^25.0.0" } }, "node_modules/handlebars": { @@ -2939,29 +2096,29 @@ } }, "node_modules/hook-std": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-3.0.0.tgz", - "integrity": "sha512-jHRQzjSDzMtFy34AGj1DN+vq54WVuhSvKgrHf0OMiFQTwDD4L/qqofVEWjLOBMTn5+lCD3fPg32W9yOfnEJTTw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-4.0.0.tgz", + "integrity": "sha512-IHI4bEVOt3vRUDJ+bFA9VUJlo7SzvFARPNLw75pqSmAOP2HmTWfFJtPvLBrDrlgjEYXY9zs7SFdHPQaJShkSCQ==", "dev": true, "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/hosted-git-info": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.0.0.tgz", - "integrity": "sha512-4nw3vOVR+vHUOT8+U4giwe2tcGv+R3pwwRidUe67DoMBTjhrfr6rZYJVVwdkBE+Um050SG+X9tf0Jo4fOpn01w==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.2.tgz", + "integrity": "sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==", "dev": true, "license": "ISC", "dependencies": { - "lru-cache": "^10.0.1" + "lru-cache": "^11.1.0" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/http-proxy-agent": { @@ -2979,13 +2136,13 @@ } }, "node_modules/https-proxy-agent": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", - "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.2", "debug": "4" }, "engines": { @@ -2993,29 +2150,19 @@ } }, "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", + "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", "dev": true, "license": "Apache-2.0", "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" + "node": ">=18.18.0" } }, "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3040,9 +2187,9 @@ } }, "node_modules/import-from-esm": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/import-from-esm/-/import-from-esm-1.3.4.tgz", - "integrity": "sha512-7EyUlPFC0HOlBDpUFGfYstsU7XHxZJKAAMzCT8wZ0hMW7b+hG51LIKTDcsgtz8Pu6YC0HqRVbX+rVUtsGMUKvg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-from-esm/-/import-from-esm-2.0.0.tgz", + "integrity": "sha512-YVt14UZCgsX1vZQ3gKjkWVdBdHQ6eu3MPU1TBgL1H5orXe2+jWD006WCPPtOuwlQm10NuzOW5WawiF1Q9veW8g==", "dev": true, "license": "MIT", "dependencies": { @@ -3050,13 +2197,13 @@ "import-meta-resolve": "^4.0.0" }, "engines": { - "node": ">=16.20" + "node": ">=18.20" } }, "node_modules/import-meta-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", - "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", + "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", "dev": true, "license": "MIT", "funding": { @@ -3065,19 +2212,22 @@ } }, "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/index-to-position": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-0.1.2.tgz", - "integrity": "sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-1.2.0.tgz", + "integrity": "sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==", "dev": true, "license": "MIT", "engines": { @@ -3125,16 +2275,6 @@ "dev": true, "license": "MIT" }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -3145,19 +2285,6 @@ "node": ">=8" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -3191,30 +2318,27 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/is-ssh": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.1.tgz", + "integrity": "sha512-JNeu1wQsHjyHgn9NcWTaXq6zWSR6hqE0++zhfZlkFBbScNkyvxCdeV8sRkSBaeLKxmbpR21brail63ACNxJ0Tg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "protocols": "^2.0.1" } }, - "node_modules/is-text-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", - "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", + "node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", "dev": true, "license": "MIT", - "dependencies": { - "text-extensions": "^2.0.0" - }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-unicode-supported": { @@ -3279,9 +2403,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { @@ -3305,17 +2429,10 @@ "dev": true, "license": "MIT" }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true, - "license": "ISC" - }, "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", "dev": true, "license": "MIT", "dependencies": { @@ -3325,33 +2442,6 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "dev": true, - "engines": [ - "node >= 0.2.0" - ], - "license": "MIT" - }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, - "license": "(MIT OR Apache-2.0)", - "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" - }, - "engines": { - "node": "*" - } - }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -3404,16 +2494,16 @@ } }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", "dev": true, "license": "MIT" }, "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", "dev": true, "license": "MIT" }, @@ -3453,16 +2543,50 @@ "license": "MIT" }, "node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", "dev": true, - "license": "ISC" + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/make-asynchronous": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-asynchronous/-/make-asynchronous-1.0.1.tgz", + "integrity": "sha512-T9BPOmEOhp6SmV25SwLVcHK4E6JyG/coH3C6F1NjNXSziv/fd4GmsqMk8YR6qpPOswfaOCApSNkZv6fxoaYFcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-event": "^6.0.0", + "type-fest": "^4.6.0", + "web-worker": "1.2.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-asynchronous/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/marked": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz", - "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==", + "version": "15.0.12", + "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.12.tgz", + "integrity": "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==", "dev": true, "license": "MIT", "bin": { @@ -3473,24 +2597,25 @@ } }, "node_modules/marked-terminal": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-7.1.0.tgz", - "integrity": "sha512-+pvwa14KZL74MVXjYdPR3nSInhGhNvPce/3mqLVZT2oUvt654sL1XImFuLZ1pkA866IYZ3ikDTOFUIC7XzpZZg==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-7.3.0.tgz", + "integrity": "sha512-t4rBvPsHc57uE/2nJOLmMbZCQ4tgAccAED3ngXQqW6g+TxA488JzJ+FK3lQkzBQOI1mRV/r/Kq+1ZlJ4D0owQw==", "dev": true, "license": "MIT", "dependencies": { "ansi-escapes": "^7.0.0", - "chalk": "^5.3.0", + "ansi-regex": "^6.1.0", + "chalk": "^5.4.1", "cli-highlight": "^2.1.11", "cli-table3": "^0.6.5", - "node-emoji": "^2.1.3", - "supports-hyperlinks": "^3.0.0" + "node-emoji": "^2.2.0", + "supports-hyperlinks": "^3.1.0" }, "engines": { "node": ">=16.0.0" }, "peerDependencies": { - "marked": ">=1 <14" + "marked": ">=1 <16" } }, "node_modules/meow": { @@ -3513,16 +2638,6 @@ "dev": true, "license": "MIT" }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, "node_modules/micromatch": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", @@ -3538,9 +2653,9 @@ } }, "node_modules/mime": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.4.tgz", - "integrity": "sha512-v8yqInVjhXyqP6+Kw4fV3ZzeMRqEW6FotRsKXjRS5VMTNIuXsdRoAvklpoRgSqXm6o9VNH4/C0mgedko9DdLsQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-4.1.0.tgz", + "integrity": "sha512-X5ju04+cAzsojXKes0B/S4tcYtFAJ6tTMuSPBEn9CPGlrWr8Fiw7qYeLT0XyH80HSoAoqWCaz+MWKh22P7G1cw==", "dev": true, "funding": [ "https://github.com/sponsors/broofa" @@ -3606,10 +2721,31 @@ "dev": true, "license": "MIT" }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "deprecated": "Use your platform's native DOMException instead", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, "node_modules/node-emoji": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz", - "integrity": "sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.2.0.tgz", + "integrity": "sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==", "dev": true, "license": "MIT", "dependencies": { @@ -3622,38 +2758,44 @@ "node": ">=18" } }, - "node_modules/normalize-package-data": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", - "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", + "node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "hosted-git-info": "^7.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" } }, - "node_modules/normalize-package-data/node_modules/hosted-git-info": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", - "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "node_modules/normalize-package-data": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-8.0.0.tgz", + "integrity": "sha512-RWk+PI433eESQ7ounYxIp67CYuVsS1uYSonX3kA6ps/3LWfjVQa/ptEg6Y3T6uAMq1mWpX9PQ+qx+QaHpsc7gQ==", "dev": true, - "license": "ISC", + "license": "BSD-2-Clause", "dependencies": { - "lru-cache": "^10.0.1" + "hosted-git-info": "^9.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/normalize-url": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", - "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.1.1.tgz", + "integrity": "sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==", "dev": true, "license": "MIT", "engines": { @@ -3664,15 +2806,16 @@ } }, "node_modules/npm": { - "version": "10.8.3", - "resolved": "https://registry.npmjs.org/npm/-/npm-10.8.3.tgz", - "integrity": "sha512-0IQlyAYvVtQ7uOhDFYZCGK8kkut2nh8cpAdA9E6FvRSJaTgtZRZgNjlC5ZCct//L73ygrpY93CxXpRJDtNqPVg==", + "version": "11.9.0", + "resolved": "https://registry.npmjs.org/npm/-/npm-11.9.0.tgz", + "integrity": "sha512-BBZoU926FCypj4b7V7ElinxsWcy4Kss88UG3ejFYmKyq7Uc5XnT34Me2nEhgCOaL5qY4HvGu5aI92C4OYd7NaA==", "bundleDependencies": [ "@isaacs/string-locale-compare", "@npmcli/arborist", "@npmcli/config", "@npmcli/fs", "@npmcli/map-workspaces", + "@npmcli/metavuln-calculator", "@npmcli/package-json", "@npmcli/promise-spawn", "@npmcli/redact", @@ -3697,7 +2840,6 @@ "libnpmdiff", "libnpmexec", "libnpmfund", - "libnpmhook", "libnpmorg", "libnpmpack", "libnpmpublish", @@ -3711,7 +2853,6 @@ "ms", "node-gyp", "nopt", - "normalize-package-data", "npm-audit-report", "npm-install-checks", "npm-package-arg", @@ -3734,8 +2875,7 @@ "tiny-relative-date", "treeverse", "validate-npm-package-name", - "which", - "write-file-atomic" + "which" ], "dev": true, "license": "Artistic-2.0", @@ -3748,160 +2888,141 @@ ], "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^7.5.4", - "@npmcli/config": "^8.3.4", - "@npmcli/fs": "^3.1.1", - "@npmcli/map-workspaces": "^3.0.6", - "@npmcli/package-json": "^5.2.0", - "@npmcli/promise-spawn": "^7.0.2", - "@npmcli/redact": "^2.0.1", - "@npmcli/run-script": "^8.1.0", - "@sigstore/tuf": "^2.3.4", - "abbrev": "^2.0.0", + "@npmcli/arborist": "^9.2.0", + "@npmcli/config": "^10.6.0", + "@npmcli/fs": "^5.0.0", + "@npmcli/map-workspaces": "^5.0.3", + "@npmcli/metavuln-calculator": "^9.0.3", + "@npmcli/package-json": "^7.0.4", + "@npmcli/promise-spawn": "^9.0.1", + "@npmcli/redact": "^4.0.0", + "@npmcli/run-script": "^10.0.3", + "@sigstore/tuf": "^4.0.1", + "abbrev": "^4.0.0", "archy": "~1.0.0", - "cacache": "^18.0.4", - "chalk": "^5.3.0", - "ci-info": "^4.0.0", + "cacache": "^20.0.3", + "chalk": "^5.6.2", + "ci-info": "^4.4.0", "cli-columns": "^4.0.0", "fastest-levenshtein": "^1.0.16", "fs-minipass": "^3.0.3", - "glob": "^10.4.5", + "glob": "^13.0.0", "graceful-fs": "^4.2.11", - "hosted-git-info": "^7.0.2", - "ini": "^4.1.3", - "init-package-json": "^6.0.3", - "is-cidr": "^5.1.0", - "json-parse-even-better-errors": "^3.0.2", - "libnpmaccess": "^8.0.6", - "libnpmdiff": "^6.1.4", - "libnpmexec": "^8.1.4", - "libnpmfund": "^5.0.12", - "libnpmhook": "^10.0.5", - "libnpmorg": "^6.0.6", - "libnpmpack": "^7.0.4", - "libnpmpublish": "^9.0.9", - "libnpmsearch": "^7.0.6", - "libnpmteam": "^6.0.5", - "libnpmversion": "^6.0.3", - "make-fetch-happen": "^13.0.1", - "minimatch": "^9.0.5", + "hosted-git-info": "^9.0.2", + "ini": "^6.0.0", + "init-package-json": "^8.2.4", + "is-cidr": "^6.0.1", + "json-parse-even-better-errors": "^5.0.0", + "libnpmaccess": "^10.0.3", + "libnpmdiff": "^8.1.0", + "libnpmexec": "^10.2.0", + "libnpmfund": "^7.0.14", + "libnpmorg": "^8.0.1", + "libnpmpack": "^9.1.0", + "libnpmpublish": "^11.1.3", + "libnpmsearch": "^9.0.1", + "libnpmteam": "^8.0.2", + "libnpmversion": "^8.0.3", + "make-fetch-happen": "^15.0.3", + "minimatch": "^10.1.1", "minipass": "^7.1.1", "minipass-pipeline": "^1.2.4", "ms": "^2.1.2", - "node-gyp": "^10.2.0", - "nopt": "^7.2.1", - "normalize-package-data": "^6.0.2", - "npm-audit-report": "^5.0.0", - "npm-install-checks": "^6.3.0", - "npm-package-arg": "^11.0.3", - "npm-pick-manifest": "^9.1.0", - "npm-profile": "^10.0.0", - "npm-registry-fetch": "^17.1.0", - "npm-user-validate": "^2.0.1", - "p-map": "^4.0.0", - "pacote": "^18.0.6", - "parse-conflict-json": "^3.0.1", - "proc-log": "^4.2.0", + "node-gyp": "^12.2.0", + "nopt": "^9.0.0", + "npm-audit-report": "^7.0.0", + "npm-install-checks": "^8.0.0", + "npm-package-arg": "^13.0.2", + "npm-pick-manifest": "^11.0.3", + "npm-profile": "^12.0.1", + "npm-registry-fetch": "^19.1.1", + "npm-user-validate": "^4.0.0", + "p-map": "^7.0.4", + "pacote": "^21.1.0", + "parse-conflict-json": "^5.0.1", + "proc-log": "^6.1.0", "qrcode-terminal": "^0.12.0", - "read": "^3.0.1", - "semver": "^7.6.3", + "read": "^5.0.1", + "semver": "^7.7.3", "spdx-expression-parse": "^4.0.0", - "ssri": "^10.0.6", - "supports-color": "^9.4.0", - "tar": "^6.2.1", + "ssri": "^13.0.0", + "supports-color": "^10.2.2", + "tar": "^7.5.7", "text-table": "~0.2.0", - "tiny-relative-date": "^1.3.0", + "tiny-relative-date": "^2.0.2", "treeverse": "^3.0.0", - "validate-npm-package-name": "^5.0.1", - "which": "^4.0.0", - "write-file-atomic": "^5.0.1" + "validate-npm-package-name": "^7.0.2", + "which": "^6.0.0" }, - "bin": { - "npm": "bin/npm-cli.js", - "npx": "bin/npx-cli.js" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" + "bin": { + "npm": "bin/npm-cli.js", + "npx": "bin/npx-cli.js" }, "engines": { - "node": ">=8" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/npm/node_modules/@isaacs/cliui": { - "version": "8.0.2", + "node_modules/npm-run-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", "dev": true, - "inBundle": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" }, "engines": { - "node": ">=12" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, - "inBundle": true, "license": "MIT", "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", + "node_modules/npm/node_modules/@isaacs/balanced-match": { + "version": "4.0.1", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": "20 || >=22" + } }, - "node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", + "node_modules/npm/node_modules/@isaacs/brace-expansion": { + "version": "5.0.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "@isaacs/balanced-match": "^4.0.1" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "20 || >=22" } }, - "node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", + "node_modules/npm/node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", "dev": true, "inBundle": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "ansi-regex": "^6.0.1" + "minipass": "^7.0.4" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=18.0.0" } }, "node_modules/npm/node_modules/@isaacs/string-locale-compare": { @@ -3911,7 +3032,7 @@ "license": "ISC" }, "node_modules/npm/node_modules/@npmcli/agent": { - "version": "2.2.2", + "version": "4.0.0", "dev": true, "inBundle": true, "license": "ISC", @@ -3919,83 +3040,81 @@ "agent-base": "^7.1.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.1", - "lru-cache": "^10.0.1", + "lru-cache": "^11.2.1", "socks-proxy-agent": "^8.0.3" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "7.5.4", + "version": "9.2.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/fs": "^3.1.1", - "@npmcli/installed-package-contents": "^2.1.0", - "@npmcli/map-workspaces": "^3.0.2", - "@npmcli/metavuln-calculator": "^7.1.1", - "@npmcli/name-from-folder": "^2.0.0", - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/package-json": "^5.1.0", - "@npmcli/query": "^3.1.0", - "@npmcli/redact": "^2.0.0", - "@npmcli/run-script": "^8.1.0", - "bin-links": "^4.0.4", - "cacache": "^18.0.3", - "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^7.0.2", - "json-parse-even-better-errors": "^3.0.2", + "@npmcli/fs": "^5.0.0", + "@npmcli/installed-package-contents": "^4.0.0", + "@npmcli/map-workspaces": "^5.0.0", + "@npmcli/metavuln-calculator": "^9.0.2", + "@npmcli/name-from-folder": "^4.0.0", + "@npmcli/node-gyp": "^5.0.0", + "@npmcli/package-json": "^7.0.0", + "@npmcli/query": "^5.0.0", + "@npmcli/redact": "^4.0.0", + "@npmcli/run-script": "^10.0.0", + "bin-links": "^6.0.0", + "cacache": "^20.0.1", + "common-ancestor-path": "^2.0.0", + "hosted-git-info": "^9.0.0", "json-stringify-nice": "^1.1.4", - "lru-cache": "^10.2.2", - "minimatch": "^9.0.4", - "nopt": "^7.2.1", - "npm-install-checks": "^6.2.0", - "npm-package-arg": "^11.0.2", - "npm-pick-manifest": "^9.0.1", - "npm-registry-fetch": "^17.0.1", - "pacote": "^18.0.6", - "parse-conflict-json": "^3.0.0", - "proc-log": "^4.2.0", - "proggy": "^2.0.0", + "lru-cache": "^11.2.1", + "minimatch": "^10.0.3", + "nopt": "^9.0.0", + "npm-install-checks": "^8.0.0", + "npm-package-arg": "^13.0.0", + "npm-pick-manifest": "^11.0.1", + "npm-registry-fetch": "^19.0.0", + "pacote": "^21.0.2", + "parse-conflict-json": "^5.0.1", + "proc-log": "^6.0.0", + "proggy": "^4.0.0", "promise-all-reject-late": "^1.0.0", "promise-call-limit": "^3.0.1", - "read-package-json-fast": "^3.0.2", "semver": "^7.3.7", - "ssri": "^10.0.6", + "ssri": "^13.0.0", "treeverse": "^3.0.0", - "walk-up-path": "^3.0.1" + "walk-up-path": "^4.0.0" }, "bin": { "arborist": "bin/index.js" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/@npmcli/config": { - "version": "8.3.4", + "version": "10.6.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/map-workspaces": "^3.0.2", - "@npmcli/package-json": "^5.1.1", + "@npmcli/map-workspaces": "^5.0.0", + "@npmcli/package-json": "^7.0.0", "ci-info": "^4.0.0", - "ini": "^4.1.2", - "nopt": "^7.2.1", - "proc-log": "^4.2.0", + "ini": "^6.0.0", + "nopt": "^9.0.0", + "proc-log": "^6.0.0", "semver": "^7.3.5", - "walk-up-path": "^3.0.1" + "walk-up-path": "^4.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/@npmcli/fs": { - "version": "3.1.1", + "version": "5.0.0", "dev": true, "inBundle": true, "license": "ISC", @@ -4003,244 +3122,233 @@ "semver": "^7.3.5" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/@npmcli/git": { - "version": "5.0.8", + "version": "7.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/promise-spawn": "^7.0.0", - "ini": "^4.1.3", - "lru-cache": "^10.0.1", - "npm-pick-manifest": "^9.0.0", - "proc-log": "^4.0.0", - "promise-inflight": "^1.0.1", + "@npmcli/promise-spawn": "^9.0.0", + "ini": "^6.0.0", + "lru-cache": "^11.2.1", + "npm-pick-manifest": "^11.0.1", + "proc-log": "^6.0.0", "promise-retry": "^2.0.1", "semver": "^7.3.5", - "which": "^4.0.0" + "which": "^6.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/@npmcli/installed-package-contents": { - "version": "2.1.0", + "version": "4.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-bundled": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" + "npm-bundled": "^5.0.0", + "npm-normalize-package-bin": "^5.0.0" }, "bin": { "installed-package-contents": "bin/index.js" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/@npmcli/map-workspaces": { - "version": "3.0.6", + "version": "5.0.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/name-from-folder": "^2.0.0", - "glob": "^10.2.2", - "minimatch": "^9.0.0", - "read-package-json-fast": "^3.0.0" + "@npmcli/name-from-folder": "^4.0.0", + "@npmcli/package-json": "^7.0.0", + "glob": "^13.0.0", + "minimatch": "^10.0.3" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { - "version": "7.1.1", + "version": "9.0.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "cacache": "^18.0.0", - "json-parse-even-better-errors": "^3.0.0", - "pacote": "^18.0.0", - "proc-log": "^4.1.0", + "cacache": "^20.0.0", + "json-parse-even-better-errors": "^5.0.0", + "pacote": "^21.0.0", + "proc-log": "^6.0.0", "semver": "^7.3.5" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/@npmcli/name-from-folder": { - "version": "2.0.0", + "version": "4.0.0", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/@npmcli/node-gyp": { - "version": "3.0.0", + "version": "5.0.0", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/@npmcli/package-json": { - "version": "5.2.0", + "version": "7.0.4", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/git": "^5.0.0", - "glob": "^10.2.2", - "hosted-git-info": "^7.0.0", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^6.0.0", - "proc-log": "^4.0.0", - "semver": "^7.5.3" + "@npmcli/git": "^7.0.0", + "glob": "^13.0.0", + "hosted-git-info": "^9.0.0", + "json-parse-even-better-errors": "^5.0.0", + "proc-log": "^6.0.0", + "semver": "^7.5.3", + "validate-npm-package-license": "^3.0.4" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/@npmcli/promise-spawn": { - "version": "7.0.2", + "version": "9.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "which": "^4.0.0" + "which": "^6.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/@npmcli/query": { - "version": "3.1.0", + "version": "5.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "postcss-selector-parser": "^6.0.10" + "postcss-selector-parser": "^7.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/@npmcli/redact": { - "version": "2.0.1", + "version": "4.0.0", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/@npmcli/run-script": { - "version": "8.1.0", + "version": "10.0.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/package-json": "^5.0.0", - "@npmcli/promise-spawn": "^7.0.0", - "node-gyp": "^10.0.0", - "proc-log": "^4.0.0", - "which": "^4.0.0" + "@npmcli/node-gyp": "^5.0.0", + "@npmcli/package-json": "^7.0.0", + "@npmcli/promise-spawn": "^9.0.0", + "node-gyp": "^12.1.0", + "proc-log": "^6.0.0", + "which": "^6.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/@sigstore/bundle": { - "version": "2.3.2", + "version": "4.0.0", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.3.2" + "@sigstore/protobuf-specs": "^0.5.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/@sigstore/core": { - "version": "1.1.0", + "version": "3.1.0", "dev": true, "inBundle": true, "license": "Apache-2.0", "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/@sigstore/protobuf-specs": { - "version": "0.3.2", + "version": "0.5.0", "dev": true, "inBundle": true, "license": "Apache-2.0", "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/@sigstore/sign": { - "version": "2.3.2", + "version": "4.1.0", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.3.2", - "@sigstore/core": "^1.0.0", - "@sigstore/protobuf-specs": "^0.3.2", - "make-fetch-happen": "^13.0.1", - "proc-log": "^4.2.0", + "@sigstore/bundle": "^4.0.0", + "@sigstore/core": "^3.1.0", + "@sigstore/protobuf-specs": "^0.5.0", + "make-fetch-happen": "^15.0.3", + "proc-log": "^6.1.0", "promise-retry": "^2.0.1" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/@sigstore/tuf": { - "version": "2.3.4", + "version": "4.0.1", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.3.2", - "tuf-js": "^2.2.1" + "@sigstore/protobuf-specs": "^0.5.0", + "tuf-js": "^4.1.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/@sigstore/verify": { - "version": "1.2.1", + "version": "3.1.0", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.3.2", - "@sigstore/core": "^1.1.0", - "@sigstore/protobuf-specs": "^0.3.2" + "@sigstore/bundle": "^4.0.0", + "@sigstore/core": "^3.1.0", + "@sigstore/protobuf-specs": "^0.5.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/@tufjs/canonical-json": { @@ -4253,52 +3361,36 @@ } }, "node_modules/npm/node_modules/@tufjs/models": { - "version": "2.0.1", + "version": "4.1.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@tufjs/canonical-json": "2.0.0", - "minimatch": "^9.0.4" + "minimatch": "^10.1.1" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/abbrev": { - "version": "2.0.0", + "version": "4.0.0", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/agent-base": { - "version": "7.1.1", + "version": "7.1.4", "dev": true, "inBundle": true, "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, "engines": { "node": ">= 14" } }, - "node_modules/npm/node_modules/aggregate-error": { - "version": "3.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/npm/node_modules/ansi-regex": { "version": "5.0.1", "dev": true, @@ -4308,20 +3400,8 @@ "node": ">=8" } }, - "node_modules/npm/node_modules/ansi-styles": { - "version": "6.2.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/npm/node_modules/aproba": { - "version": "2.0.0", + "version": "2.1.0", "dev": true, "inBundle": true, "license": "ISC" @@ -4332,73 +3412,58 @@ "inBundle": true, "license": "MIT" }, - "node_modules/npm/node_modules/balanced-match": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, "node_modules/npm/node_modules/bin-links": { - "version": "4.0.4", + "version": "6.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "cmd-shim": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "read-cmd-shim": "^4.0.0", - "write-file-atomic": "^5.0.0" + "cmd-shim": "^8.0.0", + "npm-normalize-package-bin": "^5.0.0", + "proc-log": "^6.0.0", + "read-cmd-shim": "^6.0.0", + "write-file-atomic": "^7.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/binary-extensions": { - "version": "2.3.0", + "version": "3.1.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/npm/node_modules/cacache": { - "version": "18.0.4", + "version": "20.0.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/fs": "^3.1.0", + "@npmcli/fs": "^5.0.0", "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^10.0.1", + "glob": "^13.0.0", + "lru-cache": "^11.1.0", "minipass": "^7.0.3", "minipass-collect": "^2.0.1", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" + "p-map": "^7.0.2", + "ssri": "^13.0.0", + "unique-filename": "^5.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/chalk": { - "version": "5.3.0", + "version": "5.6.2", "dev": true, "inBundle": true, "license": "MIT", @@ -4410,16 +3475,16 @@ } }, "node_modules/npm/node_modules/chownr": { - "version": "2.0.0", + "version": "3.0.0", "dev": true, "inBundle": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/npm/node_modules/ci-info": { - "version": "4.0.0", + "version": "4.4.0", "dev": true, "funding": [ { @@ -4434,24 +3499,15 @@ } }, "node_modules/npm/node_modules/cidr-regex": { - "version": "4.1.1", + "version": "5.0.1", "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { - "ip-regex": "^5.0.0" + "ip-regex": "5.0.0" }, "engines": { - "node": ">=14" - } - }, - "node_modules/npm/node_modules/clean-stack": { - "version": "2.2.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" + "node": ">=20" } }, "node_modules/npm/node_modules/cli-columns": { @@ -4468,65 +3524,21 @@ } }, "node_modules/npm/node_modules/cmd-shim": { - "version": "6.0.3", + "version": "8.0.0", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/npm/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "inBundle": true, - "license": "MIT" - }, "node_modules/npm/node_modules/common-ancestor-path": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/cross-spawn": { - "version": "7.0.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", + "version": "2.0.0", "dev": true, "inBundle": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, + "license": "BlueOak-1.0.0", "engines": { - "node": ">= 8" + "node": ">= 18" } }, "node_modules/npm/node_modules/cssesc": { @@ -4542,12 +3554,12 @@ } }, "node_modules/npm/node_modules/debug": { - "version": "4.3.6", + "version": "4.4.3", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -4558,14 +3570,8 @@ } } }, - "node_modules/npm/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, "node_modules/npm/node_modules/diff": { - "version": "5.2.0", + "version": "8.0.3", "dev": true, "inBundle": true, "license": "BSD-3-Clause", @@ -4573,12 +3579,6 @@ "node": ">=0.3.1" } }, - "node_modules/npm/node_modules/eastasianwidth": { - "version": "0.2.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, "node_modules/npm/node_modules/emoji-regex": { "version": "8.0.0", "dev": true, @@ -4611,34 +3611,18 @@ "license": "MIT" }, "node_modules/npm/node_modules/exponential-backoff": { - "version": "3.1.1", + "version": "3.1.3", "dev": true, "inBundle": true, "license": "Apache-2.0" }, "node_modules/npm/node_modules/fastest-levenshtein": { - "version": "1.0.16", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 4.9.1" - } - }, - "node_modules/npm/node_modules/foreground-child": { - "version": "3.3.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, + "version": "1.0.16", + "dev": true, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 4.9.1" } }, "node_modules/npm/node_modules/fs-minipass": { @@ -4654,20 +3638,17 @@ } }, "node_modules/npm/node_modules/glob": { - "version": "10.4.5", + "version": "13.0.1", "dev": true, "inBundle": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", + "minimatch": "^10.1.2", "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" + "path-scurry": "^2.0.0" }, - "bin": { - "glob": "dist/esm/bin.mjs" + "engines": { + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -4680,19 +3661,19 @@ "license": "ISC" }, "node_modules/npm/node_modules/hosted-git-info": { - "version": "7.0.2", + "version": "9.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "lru-cache": "^10.0.1" + "lru-cache": "^11.1.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/http-cache-semantics": { - "version": "4.1.1", + "version": "4.2.0", "dev": true, "inBundle": true, "license": "BSD-2-Clause" @@ -4711,12 +3692,12 @@ } }, "node_modules/npm/node_modules/https-proxy-agent": { - "version": "7.0.5", + "version": "7.0.6", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.2", "debug": "4" }, "engines": { @@ -4737,15 +3718,15 @@ } }, "node_modules/npm/node_modules/ignore-walk": { - "version": "6.0.5", + "version": "8.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "minimatch": "^9.0.0" + "minimatch": "^10.0.3" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/imurmurhash": { @@ -4757,51 +3738,38 @@ "node": ">=0.8.19" } }, - "node_modules/npm/node_modules/indent-string": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/npm/node_modules/ini": { - "version": "4.1.3", + "version": "6.0.0", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/init-package-json": { - "version": "6.0.3", + "version": "8.2.4", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/package-json": "^5.0.0", - "npm-package-arg": "^11.0.0", - "promzard": "^1.0.0", - "read": "^3.0.1", - "semver": "^7.3.5", + "@npmcli/package-json": "^7.0.0", + "npm-package-arg": "^13.0.0", + "promzard": "^3.0.1", + "read": "^5.0.1", + "semver": "^7.7.2", "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^5.0.0" + "validate-npm-package-name": "^7.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/ip-address": { - "version": "9.0.5", + "version": "10.1.0", "dev": true, "inBundle": true, "license": "MIT", - "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, "engines": { "node": ">= 12" } @@ -4819,15 +3787,15 @@ } }, "node_modules/npm/node_modules/is-cidr": { - "version": "5.1.0", + "version": "6.0.2", "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { - "cidr-regex": "^4.1.1" + "cidr-regex": "^5.0.1" }, "engines": { - "node": ">=14" + "node": ">=20" } }, "node_modules/npm/node_modules/is-fullwidth-code-point": { @@ -4839,46 +3807,22 @@ "node": ">=8" } }, - "node_modules/npm/node_modules/is-lambda": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT" - }, "node_modules/npm/node_modules/isexe": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/jackspeak": { - "version": "3.4.3", + "version": "3.1.1", "dev": true, "inBundle": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "license": "ISC", + "engines": { + "node": ">=16" } }, - "node_modules/npm/node_modules/jsbn": { - "version": "1.1.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, "node_modules/npm/node_modules/json-parse-even-better-errors": { - "version": "3.0.2", + "version": "5.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/json-stringify-nice": { @@ -4912,210 +3856,201 @@ "license": "MIT" }, "node_modules/npm/node_modules/libnpmaccess": { - "version": "8.0.6", + "version": "10.0.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-package-arg": "^11.0.2", - "npm-registry-fetch": "^17.0.1" + "npm-package-arg": "^13.0.0", + "npm-registry-fetch": "^19.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/libnpmdiff": { - "version": "6.1.4", + "version": "8.1.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.5.4", - "@npmcli/installed-package-contents": "^2.1.0", - "binary-extensions": "^2.3.0", - "diff": "^5.1.0", - "minimatch": "^9.0.4", - "npm-package-arg": "^11.0.2", - "pacote": "^18.0.6", - "tar": "^6.2.1" + "@npmcli/arborist": "^9.2.0", + "@npmcli/installed-package-contents": "^4.0.0", + "binary-extensions": "^3.0.0", + "diff": "^8.0.2", + "minimatch": "^10.0.3", + "npm-package-arg": "^13.0.0", + "pacote": "^21.0.2", + "tar": "^7.5.1" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/libnpmexec": { - "version": "8.1.4", + "version": "10.2.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.5.4", - "@npmcli/run-script": "^8.1.0", + "@npmcli/arborist": "^9.2.0", + "@npmcli/package-json": "^7.0.0", + "@npmcli/run-script": "^10.0.0", "ci-info": "^4.0.0", - "npm-package-arg": "^11.0.2", - "pacote": "^18.0.6", - "proc-log": "^4.2.0", - "read": "^3.0.1", - "read-package-json-fast": "^3.0.2", + "npm-package-arg": "^13.0.0", + "pacote": "^21.0.2", + "proc-log": "^6.0.0", + "promise-retry": "^2.0.1", + "read": "^5.0.1", "semver": "^7.3.7", - "walk-up-path": "^3.0.1" + "signal-exit": "^4.1.0", + "walk-up-path": "^4.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/libnpmfund": { - "version": "5.0.12", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/arborist": "^7.5.4" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmhook": { - "version": "10.0.5", + "version": "7.0.14", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^17.0.1" + "@npmcli/arborist": "^9.2.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/libnpmorg": { - "version": "6.0.6", + "version": "8.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "aproba": "^2.0.0", - "npm-registry-fetch": "^17.0.1" + "npm-registry-fetch": "^19.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/libnpmpack": { - "version": "7.0.4", + "version": "9.1.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.5.4", - "@npmcli/run-script": "^8.1.0", - "npm-package-arg": "^11.0.2", - "pacote": "^18.0.6" + "@npmcli/arborist": "^9.2.0", + "@npmcli/run-script": "^10.0.0", + "npm-package-arg": "^13.0.0", + "pacote": "^21.0.2" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/libnpmpublish": { - "version": "9.0.9", + "version": "11.1.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { + "@npmcli/package-json": "^7.0.0", "ci-info": "^4.0.0", - "normalize-package-data": "^6.0.1", - "npm-package-arg": "^11.0.2", - "npm-registry-fetch": "^17.0.1", - "proc-log": "^4.2.0", + "npm-package-arg": "^13.0.0", + "npm-registry-fetch": "^19.0.0", + "proc-log": "^6.0.0", "semver": "^7.3.7", - "sigstore": "^2.2.0", - "ssri": "^10.0.6" + "sigstore": "^4.0.0", + "ssri": "^13.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/libnpmsearch": { - "version": "7.0.6", + "version": "9.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-registry-fetch": "^17.0.1" + "npm-registry-fetch": "^19.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/libnpmteam": { - "version": "6.0.5", + "version": "8.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "aproba": "^2.0.0", - "npm-registry-fetch": "^17.0.1" + "npm-registry-fetch": "^19.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/libnpmversion": { - "version": "6.0.3", + "version": "8.0.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/git": "^5.0.7", - "@npmcli/run-script": "^8.1.0", - "json-parse-even-better-errors": "^3.0.2", - "proc-log": "^4.2.0", + "@npmcli/git": "^7.0.0", + "@npmcli/run-script": "^10.0.0", + "json-parse-even-better-errors": "^5.0.0", + "proc-log": "^6.0.0", "semver": "^7.3.7" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/lru-cache": { - "version": "10.4.3", + "version": "11.2.5", "dev": true, "inBundle": true, - "license": "ISC" + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } }, "node_modules/npm/node_modules/make-fetch-happen": { - "version": "13.0.1", + "version": "15.0.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/agent": "^2.0.0", - "cacache": "^18.0.0", + "@npmcli/agent": "^4.0.0", + "cacache": "^20.0.1", "http-cache-semantics": "^4.1.1", - "is-lambda": "^1.0.1", "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", + "minipass-fetch": "^5.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "proc-log": "^4.2.0", + "negotiator": "^1.0.0", + "proc-log": "^6.0.0", "promise-retry": "^2.0.1", - "ssri": "^10.0.0" + "ssri": "^13.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/minimatch": { - "version": "9.0.5", + "version": "10.1.2", "dev": true, "inBundle": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.1" + "@isaacs/brace-expansion": "^5.0.1" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -5143,17 +4078,17 @@ } }, "node_modules/npm/node_modules/minipass-fetch": { - "version": "3.0.5", + "version": "5.0.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "minipass": "^7.0.3", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" + "minipass-sized": "^2.0.0", + "minizlib": "^3.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" }, "optionalDependencies": { "encoding": "^0.1.13" @@ -5208,64 +4143,27 @@ } }, "node_modules/npm/node_modules/minipass-sized": { - "version": "1.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { - "version": "3.3.6", + "version": "2.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "yallist": "^4.0.0" + "minipass": "^7.1.2" }, "engines": { "node": ">=8" } }, "node_modules/npm/node_modules/minizlib": { - "version": "2.1.2", + "version": "3.1.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/mkdirp": { - "version": "1.0.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" + "minipass": "^7.1.2" }, "engines": { - "node": ">=10" + "node": ">= 18" } }, "node_modules/npm/node_modules/ms": { @@ -5275,16 +4173,16 @@ "license": "MIT" }, "node_modules/npm/node_modules/mute-stream": { - "version": "1.0.0", + "version": "3.0.0", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/negotiator": { - "version": "0.6.3", + "version": "1.0.0", "dev": true, "inBundle": true, "license": "MIT", @@ -5293,81 +4191,67 @@ } }, "node_modules/npm/node_modules/node-gyp": { - "version": "10.2.0", + "version": "12.2.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", - "glob": "^10.3.10", "graceful-fs": "^4.2.6", - "make-fetch-happen": "^13.0.0", - "nopt": "^7.0.0", - "proc-log": "^4.1.0", + "make-fetch-happen": "^15.0.0", + "nopt": "^9.0.0", + "proc-log": "^6.0.0", "semver": "^7.3.5", - "tar": "^6.2.1", - "which": "^4.0.0" + "tar": "^7.5.4", + "tinyglobby": "^0.2.12", + "which": "^6.0.0" }, "bin": { "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/nopt": { - "version": "7.2.1", + "version": "9.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "abbrev": "^2.0.0" + "abbrev": "^4.0.0" }, "bin": { "nopt": "bin/nopt.js" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/normalize-package-data": { - "version": "6.0.2", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^7.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/npm-audit-report": { - "version": "5.0.0", + "version": "7.0.0", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/npm-bundled": { - "version": "3.0.1", + "version": "5.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-normalize-package-bin": "^3.0.0" + "npm-normalize-package-bin": "^5.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/npm-install-checks": { - "version": "6.3.0", + "version": "8.0.0", "dev": true, "inBundle": true, "license": "BSD-2-Clause", @@ -5375,194 +4259,177 @@ "semver": "^7.1.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/npm-normalize-package-bin": { - "version": "3.0.1", + "version": "5.0.0", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/npm-package-arg": { - "version": "11.0.3", + "version": "13.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "hosted-git-info": "^7.0.0", - "proc-log": "^4.0.0", + "hosted-git-info": "^9.0.0", + "proc-log": "^6.0.0", "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" + "validate-npm-package-name": "^7.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/npm-packlist": { - "version": "8.0.2", + "version": "10.0.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "ignore-walk": "^6.0.4" + "ignore-walk": "^8.0.0", + "proc-log": "^6.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/npm-pick-manifest": { - "version": "9.1.0", + "version": "11.0.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-install-checks": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "npm-package-arg": "^11.0.0", + "npm-install-checks": "^8.0.0", + "npm-normalize-package-bin": "^5.0.0", + "npm-package-arg": "^13.0.0", "semver": "^7.3.5" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/npm-profile": { - "version": "10.0.0", + "version": "12.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-registry-fetch": "^17.0.1", - "proc-log": "^4.0.0" + "npm-registry-fetch": "^19.0.0", + "proc-log": "^6.0.0" }, "engines": { - "node": ">=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/npm-registry-fetch": { - "version": "17.1.0", + "version": "19.1.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/redact": "^2.0.0", + "@npmcli/redact": "^4.0.0", "jsonparse": "^1.3.1", - "make-fetch-happen": "^13.0.0", + "make-fetch-happen": "^15.0.0", "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", - "minizlib": "^2.1.2", - "npm-package-arg": "^11.0.0", - "proc-log": "^4.0.0" + "minipass-fetch": "^5.0.0", + "minizlib": "^3.0.1", + "npm-package-arg": "^13.0.0", + "proc-log": "^6.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/npm-user-validate": { - "version": "2.0.1", + "version": "4.0.0", "dev": true, "inBundle": true, "license": "BSD-2-Clause", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/p-map": { - "version": "4.0.0", + "version": "7.0.4", "dev": true, "inBundle": true, "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/package-json-from-dist": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "BlueOak-1.0.0" - }, "node_modules/npm/node_modules/pacote": { - "version": "18.0.6", + "version": "21.1.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/git": "^5.0.0", - "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/package-json": "^5.1.0", - "@npmcli/promise-spawn": "^7.0.0", - "@npmcli/run-script": "^8.0.0", - "cacache": "^18.0.0", + "@npmcli/git": "^7.0.0", + "@npmcli/installed-package-contents": "^4.0.0", + "@npmcli/package-json": "^7.0.0", + "@npmcli/promise-spawn": "^9.0.0", + "@npmcli/run-script": "^10.0.0", + "cacache": "^20.0.0", "fs-minipass": "^3.0.0", "minipass": "^7.0.2", - "npm-package-arg": "^11.0.0", - "npm-packlist": "^8.0.0", - "npm-pick-manifest": "^9.0.0", - "npm-registry-fetch": "^17.0.0", - "proc-log": "^4.0.0", + "npm-package-arg": "^13.0.0", + "npm-packlist": "^10.0.1", + "npm-pick-manifest": "^11.0.1", + "npm-registry-fetch": "^19.0.0", + "proc-log": "^6.0.0", "promise-retry": "^2.0.1", - "sigstore": "^2.2.0", - "ssri": "^10.0.0", - "tar": "^6.1.11" + "sigstore": "^4.0.0", + "ssri": "^13.0.0", + "tar": "^7.4.3" }, "bin": { "pacote": "bin/index.js" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/parse-conflict-json": { - "version": "3.0.1", + "version": "5.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "json-parse-even-better-errors": "^3.0.0", + "json-parse-even-better-errors": "^5.0.0", "just-diff": "^6.0.0", "just-diff-apply": "^5.2.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/path-key": { - "version": "3.1.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/path-scurry": { - "version": "1.11.1", + "version": "2.0.1", "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" }, "engines": { - "node": ">=16 || 14 >=14.18" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/npm/node_modules/postcss-selector-parser": { - "version": "6.1.2", + "version": "7.1.1", "dev": true, "inBundle": true, "license": "MIT", @@ -5575,21 +4442,21 @@ } }, "node_modules/npm/node_modules/proc-log": { - "version": "4.2.0", + "version": "6.1.0", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/proggy": { - "version": "2.0.0", + "version": "4.0.0", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/promise-all-reject-late": { @@ -5602,7 +4469,7 @@ } }, "node_modules/npm/node_modules/promise-call-limit": { - "version": "3.0.1", + "version": "3.0.2", "dev": true, "inBundle": true, "license": "ISC", @@ -5610,12 +4477,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/npm/node_modules/promise-inflight": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/promise-retry": { "version": "2.0.1", "dev": true, @@ -5630,15 +4491,15 @@ } }, "node_modules/npm/node_modules/promzard": { - "version": "1.0.2", + "version": "3.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "read": "^3.0.1" + "read": "^5.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/qrcode-terminal": { @@ -5650,37 +4511,24 @@ } }, "node_modules/npm/node_modules/read": { - "version": "3.0.1", + "version": "5.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "mute-stream": "^1.0.0" + "mute-stream": "^3.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/read-cmd-shim": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/read-package-json-fast": { - "version": "3.0.2", + "version": "6.0.0", "dev": true, "inBundle": true, "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/retry": { @@ -5700,7 +4548,7 @@ "optional": true }, "node_modules/npm/node_modules/semver": { - "version": "7.6.3", + "version": "7.7.3", "dev": true, "inBundle": true, "license": "ISC", @@ -5711,27 +4559,6 @@ "node": ">=10" } }, - "node_modules/npm/node_modules/shebang-command": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/shebang-regex": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/npm/node_modules/signal-exit": { "version": "4.1.0", "dev": true, @@ -5745,20 +4572,20 @@ } }, "node_modules/npm/node_modules/sigstore": { - "version": "2.3.1", + "version": "4.1.0", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.3.2", - "@sigstore/core": "^1.0.0", - "@sigstore/protobuf-specs": "^0.3.2", - "@sigstore/sign": "^2.3.2", - "@sigstore/tuf": "^2.3.4", - "@sigstore/verify": "^1.2.1" + "@sigstore/bundle": "^4.0.0", + "@sigstore/core": "^3.1.0", + "@sigstore/protobuf-specs": "^0.5.0", + "@sigstore/sign": "^4.1.0", + "@sigstore/tuf": "^4.0.1", + "@sigstore/verify": "^3.1.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/smart-buffer": { @@ -5772,12 +4599,12 @@ } }, "node_modules/npm/node_modules/socks": { - "version": "2.8.3", + "version": "2.8.7", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "ip-address": "^9.0.5", + "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" }, "engines": { @@ -5786,12 +4613,12 @@ } }, "node_modules/npm/node_modules/socks-proxy-agent": { - "version": "8.0.4", + "version": "8.0.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "agent-base": "^7.1.1", + "agent-base": "^7.1.2", "debug": "^4.3.4", "socks": "^2.8.3" }, @@ -5836,19 +4663,13 @@ } }, "node_modules/npm/node_modules/spdx-license-ids": { - "version": "3.0.18", + "version": "3.0.22", "dev": true, "inBundle": true, "license": "CC0-1.0" }, - "node_modules/npm/node_modules/sprintf-js": { - "version": "1.1.3", - "dev": true, - "inBundle": true, - "license": "BSD-3-Clause" - }, "node_modules/npm/node_modules/ssri": { - "version": "10.0.6", + "version": "13.0.0", "dev": true, "inBundle": true, "license": "ISC", @@ -5856,7 +4677,7 @@ "minipass": "^7.0.3" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/string-width": { @@ -5873,21 +4694,6 @@ "node": ">=8" } }, - "node_modules/npm/node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/npm/node_modules/strip-ansi": { "version": "6.0.1", "dev": true, @@ -5900,92 +4706,99 @@ "node": ">=8" } }, - "node_modules/npm/node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/npm/node_modules/supports-color": { - "version": "9.4.0", + "version": "10.2.2", "dev": true, "inBundle": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "node_modules/npm/node_modules/tar": { - "version": "6.2.1", + "version": "7.5.7", "dev": true, "inBundle": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" } }, - "node_modules/npm/node_modules/tar/node_modules/fs-minipass": { - "version": "2.1.0", + "node_modules/npm/node_modules/tar/node_modules/yallist": { + "version": "5.0.0", "dev": true, "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, + "license": "BlueOak-1.0.0", "engines": { - "node": ">= 8" + "node": ">=18" } }, - "node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", + "node_modules/npm/node_modules/text-table": { + "version": "0.2.0", "dev": true, "inBundle": true, - "license": "ISC", + "license": "MIT" + }, + "node_modules/npm/node_modules/tiny-relative-date": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/tinyglobby": { + "version": "0.2.15", + "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "fdir": "^6.5.0", + "picomatch": "^4.0.3" }, "engines": { - "node": ">=8" + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/npm/node_modules/tar/node_modules/minipass": { - "version": "5.0.0", + "node_modules/npm/node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", "dev": true, "inBundle": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, - "node_modules/npm/node_modules/text-table": { - "version": "0.2.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/tiny-relative-date": { - "version": "1.3.0", + "node_modules/npm/node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } }, "node_modules/npm/node_modules/treeverse": { "version": "3.0.0", @@ -5997,33 +4810,33 @@ } }, "node_modules/npm/node_modules/tuf-js": { - "version": "2.2.1", + "version": "4.1.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@tufjs/models": "2.0.1", - "debug": "^4.3.4", - "make-fetch-happen": "^13.0.1" + "@tufjs/models": "4.1.0", + "debug": "^4.4.3", + "make-fetch-happen": "^15.0.1" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/unique-filename": { - "version": "3.0.0", + "version": "5.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "unique-slug": "^4.0.0" + "unique-slug": "^6.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/unique-slug": { - "version": "4.0.0", + "version": "6.0.0", "dev": true, "inBundle": true, "license": "ISC", @@ -6031,7 +4844,7 @@ "imurmurhash": "^0.1.4" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/util-deprecate": { @@ -6061,146 +4874,40 @@ } }, "node_modules/npm/node_modules/validate-npm-package-name": { - "version": "5.0.1", + "version": "7.0.2", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/walk-up-path": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/which": { "version": "4.0.0", "dev": true, "inBundle": true, "license": "ISC", - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, "engines": { - "node": "^16.13.0 || >=18.0.0" + "node": "20 || >=22" } }, - "node_modules/npm/node_modules/which/node_modules/isexe": { - "version": "3.1.1", + "node_modules/npm/node_modules/which": { + "version": "6.0.0", "dev": true, "inBundle": true, "license": "ISC", - "engines": { - "node": ">=16" - } - }, - "node_modules/npm/node_modules/wrap-ansi": { - "version": "8.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/npm/node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "9.2.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { - "version": "5.1.2", - "dev": true, - "inBundle": true, - "license": "MIT", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" + "isexe": "^3.1.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" + "bin": { + "node-which": "bin/which.js" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/write-file-atomic": { - "version": "5.0.1", + "version": "7.0.0", "dev": true, "inBundle": true, "license": "ISC", @@ -6209,7 +4916,7 @@ "signal-exit": "^4.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm/node_modules/yallist": { @@ -6228,16 +4935,6 @@ "node": ">=0.10.0" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, "node_modules/onetime": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", @@ -6267,6 +4964,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-event": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-6.0.1.tgz", + "integrity": "sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-timeout": "^6.1.2" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-filter": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-4.1.0.tgz", @@ -6320,9 +5033,9 @@ } }, "node_modules/p-map": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.2.tgz", - "integrity": "sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz", + "integrity": "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==", "dev": true, "license": "MIT", "engines": { @@ -6339,7 +5052,20 @@ "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=8" + } + }, + "node_modules/p-timeout": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", + "integrity": "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-try": { @@ -6397,6 +5123,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/parse-path": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.1.0.tgz", + "integrity": "sha512-EuCycjZtfPcjWk7KTksnJ5xPMvWGA/6i4zrLYhRG0hGvC3GPU/jGUj3Cy+ZR0v30duV3e23R95T1lE2+lsndSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "protocols": "^2.0.0" + } + }, + "node_modules/parse-url": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-9.2.0.tgz", + "integrity": "sha512-bCgsFI+GeGWPAvAiUv63ZorMeif3/U0zaXABGJbOWt5OH2KCaPHF6S+0ok4aqM9RuIPGyZdx9tR9l13PsW4AYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/parse-path": "^7.0.0", + "parse-path": "^7.0.0" + }, + "engines": { + "node": ">=14.13.0" + } + }, "node_modules/parse5": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", @@ -6459,9 +5209,9 @@ } }, "node_modules/picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true, "license": "ISC" }, @@ -6503,9 +5253,9 @@ } }, "node_modules/pretty-ms": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.1.0.tgz", - "integrity": "sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz", + "integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6546,25 +5296,11 @@ "dev": true, "license": "ISC" }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "node_modules/protocols": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.2.tgz", + "integrity": "sha512-hHVTzba3wboROl0/aWRRG9dMytgH6ow//STBZh43l/wQgmMhYhOFi0EHWAPtoCz9IAUymsyP0TSBHkhgMEGNnQ==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], "license": "MIT" }, "node_modules/rc": { @@ -6584,54 +5320,53 @@ } }, "node_modules/read-package-up": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/read-package-up/-/read-package-up-11.0.0.tgz", - "integrity": "sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/read-package-up/-/read-package-up-12.0.0.tgz", + "integrity": "sha512-Q5hMVBYur/eQNWDdbF4/Wqqr9Bjvtrw2kjGxxBbKLbx8bVCL8gcArjTy8zDUuLGQicftpMuU0riQNcAsbtOVsw==", "dev": true, "license": "MIT", "dependencies": { - "find-up-simple": "^1.0.0", - "read-pkg": "^9.0.0", - "type-fest": "^4.6.0" + "find-up-simple": "^1.0.1", + "read-pkg": "^10.0.0", + "type-fest": "^5.2.0" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/read-pkg": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", - "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-10.0.0.tgz", + "integrity": "sha512-A70UlgfNdKI5NSvTTfHzLQj7NJRpJ4mT5tGafkllJ4wh71oYuGm/pzphHcmW4s35iox56KSK721AihodoXSc/A==", "dev": true, "license": "MIT", "dependencies": { - "@types/normalize-package-data": "^2.4.3", - "normalize-package-data": "^6.0.0", - "parse-json": "^8.0.0", - "type-fest": "^4.6.0", - "unicorn-magic": "^0.1.0" + "@types/normalize-package-data": "^2.4.4", + "normalize-package-data": "^8.0.0", + "parse-json": "^8.3.0", + "type-fest": "^5.2.0", + "unicorn-magic": "^0.3.0" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-11.0.0.tgz", - "integrity": "sha512-LOVbvF1Q0SZdjClSefZ0Nz5z8u+tIE7mV5NibzmE9VYmDe9CaBbAVtz1veOSZbofrdsilxuDAYnFenukZVp8/Q==", - "deprecated": "Renamed to read-package-up", + "node_modules/read-pkg/node_modules/parse-json": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz", + "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==", "dev": true, "license": "MIT", "dependencies": { - "find-up-simple": "^1.0.0", - "read-pkg": "^9.0.0", - "type-fest": "^4.6.0" + "@babel/code-frame": "^7.26.2", + "index-to-position": "^1.1.0", + "type-fest": "^4.39.1" }, "engines": { "node": ">=18" @@ -6640,19 +5375,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg/node_modules/parse-json": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.1.0.tgz", - "integrity": "sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==", + "node_modules/read-pkg/node_modules/parse-json/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.22.13", - "index-to-position": "^0.1.2", - "type-fest": "^4.7.1" - }, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=18" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -6674,24 +5404,14 @@ "util-deprecate": "~1.0.1" } }, - "node_modules/redeyed": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", - "integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "esprima": "~4.0.0" - } - }, "node_modules/registry-auth-token": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", - "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.1.tgz", + "integrity": "sha512-P7B4+jq8DeD2nMsAcdfaqHbssgHtZ7Z5+++a5ask90fvmJ8p5je4mOa+wzu+DB4vQ5tdJV/xywY+UnVFeQLV5Q==", "dev": true, "license": "MIT", "dependencies": { - "@pnpm/npm-conf": "^2.1.0" + "@pnpm/npm-conf": "^3.0.2" }, "engines": { "node": ">=14" @@ -6717,41 +5437,6 @@ "node": ">=8" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -6760,17 +5445,17 @@ "license": "MIT" }, "node_modules/semantic-release": { - "version": "24.1.2", - "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-24.1.2.tgz", - "integrity": "sha512-hvEJ7yI97pzJuLsDZCYzJgmRxF8kiEJvNZhf0oiZQcexw+Ycjy4wbdsn/sVMURgNCu8rwbAXJdBRyIxM4pe32g==", + "version": "25.0.3", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-25.0.3.tgz", + "integrity": "sha512-WRgl5GcypwramYX4HV+eQGzUbD7UUbljVmS+5G1uMwX/wLgYuJAxGeerXJDMO2xshng4+FXqCgyB5QfClV6WjA==", "dev": true, "license": "MIT", "dependencies": { - "@semantic-release/commit-analyzer": "^13.0.0-beta.1", + "@semantic-release/commit-analyzer": "^13.0.1", "@semantic-release/error": "^4.0.0", - "@semantic-release/github": "^11.0.0", - "@semantic-release/npm": "^12.0.0", - "@semantic-release/release-notes-generator": "^14.0.0-beta.1", + "@semantic-release/github": "^12.0.0", + "@semantic-release/npm": "^13.1.1", + "@semantic-release/release-notes-generator": "^14.1.0", "aggregate-error": "^5.0.0", "cosmiconfig": "^9.0.0", "debug": "^4.0.0", @@ -6780,264 +5465,58 @@ "find-versions": "^6.0.0", "get-stream": "^6.0.0", "git-log-parser": "^1.2.0", - "hook-std": "^3.0.0", - "hosted-git-info": "^8.0.0", - "import-from-esm": "^1.3.1", + "hook-std": "^4.0.0", + "hosted-git-info": "^9.0.0", + "import-from-esm": "^2.0.0", "lodash-es": "^4.17.21", - "marked": "^12.0.0", - "marked-terminal": "^7.0.0", + "marked": "^15.0.0", + "marked-terminal": "^7.3.0", "micromatch": "^4.0.2", "p-each-series": "^3.0.0", "p-reduce": "^3.0.0", - "read-package-up": "^11.0.0", + "read-package-up": "^12.0.0", "resolve-from": "^5.0.0", "semver": "^7.3.2", - "semver-diff": "^4.0.0", - "signale": "^1.2.1", - "yargs": "^17.5.1" - }, - "bin": { - "semantic-release": "bin/semantic-release.js" - }, - "engines": { - "node": ">=20.8.1" - } - }, - "node_modules/semantic-release/node_modules/@semantic-release/error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", - "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/semantic-release/node_modules/@sindresorhus/merge-streams": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", - "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/aggregate-error": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", - "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", - "dev": true, - "license": "MIT", - "dependencies": { - "clean-stack": "^5.2.0", - "indent-string": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/clean-stack": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", - "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "5.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/execa": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-9.4.0.tgz", - "integrity": "sha512-yKHlle2YGxZE842MERVIplWwNH5VYmqqcPFgtnlU//K8gxuFFXu0pwd/CrfXTumFpeEiufsP7+opT/bPJa1yVw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/merge-streams": "^4.0.0", - "cross-spawn": "^7.0.3", - "figures": "^6.1.0", - "get-stream": "^9.0.0", - "human-signals": "^8.0.0", - "is-plain-obj": "^4.1.0", - "is-stream": "^4.0.1", - "npm-run-path": "^6.0.0", - "pretty-ms": "^9.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^4.0.0", - "yoctocolors": "^2.0.0" - }, - "engines": { - "node": "^18.19.0 || >=20.5.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/semantic-release/node_modules/execa/node_modules/get-stream": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", - "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sec-ant/readable-stream": "^0.4.1", - "is-stream": "^4.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/human-signals": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", - "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/semantic-release/node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/is-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/npm-run-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", - "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^4.0.0", - "unicorn-magic": "^0.3.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/p-reduce": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz", - "integrity": "sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" + "signale": "^1.2.1", + "yargs": "^18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" + "bin": { + "semantic-release": "bin/semantic-release.js" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^22.14.0 || >= 24.10.0" } }, - "node_modules/semantic-release/node_modules/strip-final-newline": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", - "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "node_modules/semantic-release/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/unicorn-magic": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "node_modules/semantic-release/node_modules/p-reduce": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz", + "integrity": "sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, "license": "ISC", "bin": { @@ -7048,9 +5527,10 @@ } }, "node_modules/semver-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", - "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-5.0.0.tgz", + "integrity": "sha512-0HbGtOm+S7T6NGQ/pxJSJipJvc4DK3FcRVMRkhsIwJDJ4Jcz5DQC1cPPzB5GhzyHjwttW878HaWQq46CkL3cqg==", + "deprecated": "Deprecated as the semver package now supports this built-in.", "dev": true, "license": "MIT", "dependencies": { @@ -7100,11 +5580,17 @@ } }, "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "license": "ISC" + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/signale": { "version": "1.4.0", @@ -7166,6 +5652,16 @@ "dev": true, "license": "MIT" }, + "node_modules/signale/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/signale/node_modules/figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", @@ -7215,19 +5711,6 @@ "node": ">=8" } }, - "node_modules/slash": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", - "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -7275,9 +5758,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.20", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", - "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", + "version": "3.0.22", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", + "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", "dev": true, "license": "CC0-1.0" }, @@ -7340,6 +5823,16 @@ "node": ">=8" } }, + "node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -7351,13 +5844,16 @@ } }, "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/strip-json-comments": { @@ -7371,13 +5867,14 @@ } }, "node_modules/super-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/super-regex/-/super-regex-1.0.0.tgz", - "integrity": "sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/super-regex/-/super-regex-1.1.0.tgz", + "integrity": "sha512-WHkws2ZflZe41zj6AolvvmaTrWds/VuyeYr9iPVv/oQeaIoVxMKaushfFWpOGDT+GuBrM/sVqF8KUCYQlSSTdQ==", "dev": true, "license": "MIT", "dependencies": { "function-timeout": "^1.0.1", + "make-asynchronous": "^1.0.1", "time-span": "^5.1.0" }, "engines": { @@ -7401,9 +5898,9 @@ } }, "node_modules/supports-hyperlinks": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz", - "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz", + "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==", "dev": true, "license": "MIT", "dependencies": { @@ -7413,6 +5910,19 @@ "engines": { "node": ">=14.18" }, + "funding": { + "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1" + } + }, + "node_modules/tagged-tag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tagged-tag/-/tagged-tag-1.0.0.tgz", + "integrity": "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } @@ -7428,9 +5938,9 @@ } }, "node_modules/tempy": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", - "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.2.0.tgz", + "integrity": "sha512-d79HhZya5Djd7am0q+W4RTsSU+D/aJzM+4Y4AGJGuGlgM2L6sx5ZvOYTmZjqPhrDrV6xJTtRSm1JCLj6V6LHLQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7472,19 +5982,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/text-extensions": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", - "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", @@ -7508,13 +6005,6 @@ "node": ">=0.8" } }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true, - "license": "MIT" - }, "node_modules/through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -7542,6 +6032,54 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -7568,14 +6106,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, "node_modules/type-fest": { - "version": "4.26.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz", - "integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==", + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.4.3.tgz", + "integrity": "sha512-AXSAQJu79WGc79/3e9/CR77I/KQgeY1AhNvcShIH4PTcGYyC4xv6H4R4AUOwkPS5799KlVDAu8zExeCrkGquiA==", "dev": true, "license": "(MIT OR CC0-1.0)", + "dependencies": { + "tagged-tag": "^1.0.0" + }, "engines": { - "node": ">=16" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -7595,6 +6146,16 @@ "node": ">=0.8.0" } }, + "node_modules/undici": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.20.0.tgz", + "integrity": "sha512-MJZrkjyd7DeC+uPZh+5/YaMDxFiiEEaDgbUSVMXayofAkDWF1088CDo+2RPg7B1BuS1qf1vgNE7xqwPxE0DuSQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, "node_modules/unicode-emoji-modifier-base": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", @@ -7606,9 +6167,9 @@ } }, "node_modules/unicorn-magic": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", - "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", "dev": true, "license": "MIT", "engines": { @@ -7635,9 +6196,9 @@ } }, "node_modules/universal-user-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz", - "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.3.tgz", + "integrity": "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==", "dev": true, "license": "ISC" }, @@ -7679,6 +6240,23 @@ "spdx-expression-parse": "^3.0.0" } }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/web-worker": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz", + "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -7703,29 +6281,63 @@ "license": "MIT" }, "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", "dev": true, - "license": "ISC" + "license": "MIT" + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } }, "node_modules/xtend": { "version": "4.0.2", @@ -7748,38 +6360,78 @@ } }, "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", + "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", "dev": true, "license": "MIT", "dependencies": { - "cliui": "^8.0.1", + "cliui": "^9.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", + "string-width": "^7.2.0", "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "yargs-parser": "^22.0.0" }, "engines": { - "node": ">=12" + "node": "^20.19.0 || ^22.12.0 || >=23" } }, "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", + "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", "dev": true, "license": "ISC", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "dev": true, + "license": "MIT" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, "engines": { "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/yoctocolors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz", - "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz", + "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==", "dev": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index 105a5ca8..0d81d45a 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,9 @@ { "devDependencies": { - "@saithodev/semantic-release-backmerge": "^4.0.1", + "@kilianpaquier/semantic-release-backmerge": "^1.7.1", "@semantic-release/changelog": "^6.0.3", "@semantic-release/git": "^10.0.1", - "gradle-semantic-release-plugin": "^1.10.1", - "semantic-release": "^24.1.2" + "gradle-semantic-release-plugin": "^1.10.3", + "semantic-release": "^25.0.3" } -} +} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 97e6f042..b098a278 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1 +1,13 @@ rootProject.name = "revanced-cli" + +dependencyResolutionManagement { + repositories { + mavenCentral() + google() + maven { + name = "githubPackages" + url = uri("https://maven.pkg.github.com/revanced/cli") + credentials(PasswordCredentials::class) + } + } +} diff --git a/src/main/kotlin/app/revanced/cli/command/ListCompatibleVersions.kt b/src/main/kotlin/app/revanced/cli/command/ListCompatibleVersions.kt index aed66e9e..25033e8e 100644 --- a/src/main/kotlin/app/revanced/cli/command/ListCompatibleVersions.kt +++ b/src/main/kotlin/app/revanced/cli/command/ListCompatibleVersions.kt @@ -3,7 +3,7 @@ package app.revanced.cli.command import app.revanced.library.PackageName import app.revanced.library.VersionMap import app.revanced.library.mostCommonCompatibleVersions -import app.revanced.patcher.patch.loadPatchesFromJar +import app.revanced.patcher.patch.loadPatches import picocli.CommandLine import java.io.File import java.util.logging.Logger @@ -48,15 +48,14 @@ internal class ListCompatibleVersions : Runnable { } } - fun buildString(entry: Map.Entry) = - buildString { - val (name, versions) = entry - appendLine("Package name: $name") - appendLine("Most common compatible versions:") - appendLine(versions.buildVersionsString().prependIndent("\t")) - } + fun buildString(entry: Map.Entry) = buildString { + val (name, versions) = entry + appendLine("Package name: $name") + appendLine("Most common compatible versions:") + appendLine(versions.buildVersionsString().prependIndent("\t")) + } - val patches = loadPatchesFromJar(patchesFiles) + val patches = loadPatches(patchesFiles = patchesFiles.toTypedArray()) patches.mostCommonCompatibleVersions( packageNames, diff --git a/src/main/kotlin/app/revanced/cli/command/ListPatchesCommand.kt b/src/main/kotlin/app/revanced/cli/command/ListPatchesCommand.kt index 231017a8..e8c6b438 100644 --- a/src/main/kotlin/app/revanced/cli/command/ListPatchesCommand.kt +++ b/src/main/kotlin/app/revanced/cli/command/ListPatchesCommand.kt @@ -2,7 +2,7 @@ package app.revanced.cli.command import app.revanced.patcher.patch.Package import app.revanced.patcher.patch.Patch -import app.revanced.patcher.patch.loadPatchesFromJar +import app.revanced.patcher.patch.loadPatches import picocli.CommandLine.* import picocli.CommandLine.Help.Visibility.ALWAYS import java.io.File @@ -86,13 +86,10 @@ internal object ListPatchesCommand : Runnable { } fun PatchOption<*>.buildString() = buildString { - appendLine("Title: $title") + appendLine("Name: $name") description?.let { appendLine("Description: $it") } appendLine("Required: $required") - default?.let { - appendLine("Key: $key") - append("Default: $it") - } ?: append("Key: $key") + default?.let { append("Default: $it") } values?.let { values -> appendLine("\nPossible values:") @@ -102,7 +99,7 @@ internal object ListPatchesCommand : Runnable { append("\nType: $type") } - fun IndexedValue>.buildString() = let { (index, patch) -> + fun IndexedValue.buildString() = let { (index, patch) -> buildString { if (withIndex) appendLine("Index: $index") @@ -132,10 +129,10 @@ internal object ListPatchesCommand : Runnable { } } - fun Patch<*>.filterCompatiblePackages(name: String) = compatiblePackages?.any { (compatiblePackageName, _) -> compatiblePackageName == name } + fun Patch.filterCompatiblePackages(name: String) = compatiblePackages?.any { (compatiblePackageName, _) -> compatiblePackageName == name } ?: withUniversalPatches - val patches = loadPatchesFromJar(patchesFiles).withIndex().toList() + val patches = loadPatches(patchesFiles = patchesFiles.toTypedArray()).withIndex().toList() val filtered = packageName?.let { patches.filter { (_, patch) -> patch.filterCompatiblePackages(it) } } ?: patches diff --git a/src/main/kotlin/app/revanced/cli/command/MainCommand.kt b/src/main/kotlin/app/revanced/cli/command/MainCommand.kt index 5ceeef15..f7600668 100644 --- a/src/main/kotlin/app/revanced/cli/command/MainCommand.kt +++ b/src/main/kotlin/app/revanced/cli/command/MainCommand.kt @@ -13,18 +13,17 @@ fun main(args: Array) { } private object CLIVersionProvider : IVersionProvider { - override fun getVersion() = - arrayOf( - MainCommand::class.java.getResourceAsStream( - "/app/revanced/cli/version.properties", - )?.use { stream -> - Properties().apply { - load(stream) - }.let { - "ReVanced CLI v${it.getProperty("version")}" - } - } ?: "ReVanced CLI", - ) + override fun getVersion() = arrayOf( + MainCommand::class.java.getResourceAsStream( + "/app/revanced/cli/version.properties", + )?.use { stream -> + Properties().apply { + load(stream) + }.let { + "ReVanced CLI v${it.getProperty("version")}" + } + } ?: "ReVanced CLI", + ) } @Command( diff --git a/src/main/kotlin/app/revanced/cli/command/PatchCommand.kt b/src/main/kotlin/app/revanced/cli/command/PatchCommand.kt index ba6b0440..1ed2b17c 100644 --- a/src/main/kotlin/app/revanced/cli/command/PatchCommand.kt +++ b/src/main/kotlin/app/revanced/cli/command/PatchCommand.kt @@ -4,10 +4,9 @@ import app.revanced.library.ApkUtils import app.revanced.library.ApkUtils.applyTo import app.revanced.library.installation.installer.* import app.revanced.library.setOptions -import app.revanced.patcher.Patcher -import app.revanced.patcher.PatcherConfig import app.revanced.patcher.patch.Patch -import app.revanced.patcher.patch.loadPatchesFromJar +import app.revanced.patcher.patch.loadPatches +import app.revanced.patcher.patcher import kotlinx.coroutines.runBlocking import picocli.CommandLine import picocli.CommandLine.ArgGroup @@ -123,7 +122,7 @@ internal object PatchCommand : Runnable { names = ["-i", "--install"], required = true, description = ["Serial of the ADB device to install to. If not specified, the first connected device will be used."], - fallbackValue = "", // Empty string is used to select the first of connected devices. + fallbackValue = "", // Empty string is used to select the first of connected devices. arity = "0..1", ) internal var deviceSerial: String? = null @@ -260,7 +259,7 @@ internal object PatchCommand : Runnable { } else { AdbInstaller(deviceSerial) } - } catch (e: DeviceNotFoundException) { + } catch (_: DeviceNotFoundException) { if (deviceSerial?.isNotEmpty() == true) { logger.severe( "Device with serial $deviceSerial not found to install to. " + @@ -285,62 +284,59 @@ internal object PatchCommand : Runnable { logger.info("Loading patches") - val patches = loadPatchesFromJar(patchesFiles) + val patches = loadPatches(patchesFiles = patchesFiles.toTypedArray()) { file, throwable -> + logger.severe("Failed to load patches from ${file.path}:\n${throwable.stackTraceToString()}") + } // endregion val patcherTemporaryFilesPath = temporaryFilesPath.resolve("patcher") - val (packageName, patcherResult) = Patcher( - PatcherConfig( - apk, - patcherTemporaryFilesPath, - aaptBinaryPath?.path, - patcherTemporaryFilesPath.absolutePath, - ), - ).use { patcher -> - val packageName = patcher.context.packageMetadata.packageName - val packageVersion = patcher.context.packageMetadata.packageVersion + lateinit var _packageName: String + + val patch = patcher( + apk, + patcherTemporaryFilesPath, + aaptBinaryPath, + patcherTemporaryFilesPath.absolutePath, + ) { packageName, versionName -> + _packageName = packageName - val filteredPatches = patches.filterPatchSelection(packageName, packageVersion) + val filteredPatches = patches.filterPatchSelection(packageName, versionName) logger.info("Setting patch options") val patchesList = patches.toList() + selection.filter { it.enabled != null }.associate { val enabledSelection = it.enabled!! + val name = enabledSelection.selector.name ?: patchesList[enabledSelection.selector.index!!].name!! - (enabledSelection.selector.name ?: patchesList[enabledSelection.selector.index!!].name!!) to - enabledSelection.options + name to enabledSelection.options }.let(filteredPatches::setOptions) - patcher += filteredPatches + filteredPatches + } - // Execute patches. - runBlocking { - patcher().collect { patchResult -> - val exception = patchResult.exception - ?: return@collect logger.info("\"${patchResult.patch}\" succeeded") + val patchesResult = patch { patchResult -> + val exception = patchResult.exception + ?: return@patch logger.info("\"${patchResult.patch}\" succeeded") - StringWriter().use { writer -> - exception.printStackTrace(PrintWriter(writer)) + StringWriter().use { writer -> + exception.printStackTrace(PrintWriter(writer)) - logger.severe("\"${patchResult.patch}\" failed:\n$writer") - } - } + logger.severe("\"${patchResult.patch}\" failed:\n$writer") } - - patcher.context.packageMetadata.packageName to patcher.get() } // region Save. - apk.copyTo(temporaryFilesPath.resolve(apk.name), overwrite = true).apply { - patcherResult.applyTo(this) - }.let { patchedApkFile -> + apk.copyTo(temporaryFilesPath.resolve(apk.name), overwrite = true).let { + patchesResult.applyTo(it) + if (installation?.mount != true) { ApkUtils.signApk( - patchedApkFile, + it, outputFilePath, signer, ApkUtils.KeyStoreDetails( @@ -351,7 +347,7 @@ internal object PatchCommand : Runnable { ), ) } else { - patchedApkFile.copyTo(outputFilePath, overwrite = true) + it.copyTo(outputFilePath, overwrite = true) } } @@ -363,7 +359,7 @@ internal object PatchCommand : Runnable { installation?.deviceSerial?.let { runBlocking { - when (val result = installer!!.install(Installer.Apk(outputFilePath, packageName))) { + when (val result = installer!!.install(Installer.Apk(outputFilePath, _packageName))) { RootInstallerResult.FAILURE -> logger.severe("Failed to mount the patched APK file") is AdbInstallerResult.Failure -> logger.severe(result.exception.toString()) else -> logger.info("Installed the patched APK file") @@ -386,10 +382,10 @@ internal object PatchCommand : Runnable { * @param packageVersion The version of the APK file to be patched. * @return The filtered patches. */ - private fun Set>.filterPatchSelection( + private fun Set.filterPatchSelection( packageName: String, packageVersion: String, - ): Set> = buildSet { + ) = buildSet { val enabledPatchesByName = selection.mapNotNull { it.enabled?.selector?.name }.toSet() val enabledPatchesByIndex = From 1fd84711d1bf9590884157335c92fd104a653b00 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 21 Feb 2026 23:20:05 +0000 Subject: [PATCH 09/11] chore: Release v6.0.0-dev.1 [skip ci] # [6.0.0-dev.1](https://github.com/ReVanced/revanced-cli/compare/v5.0.2-dev.2...v6.0.0-dev.1) (2026-02-21) * build(Needs bump)!: Update to ReVanced Patcher v22 ([#385](https://github.com/ReVanced/revanced-cli/issues/385)) ([30f36ee](https://github.com/ReVanced/revanced-cli/commit/30f36ee270d4b63b69bf7949c7968f2827c395ce)) ### BREAKING CHANGES * ReVanced CLI switches to ReVanced Patcher v22 and will therefore be incompatible with patches from older versions of ReVanced Patcher. --- CHANGELOG.md | 10 ++++++++++ gradle.properties | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7058d6f1..ab5d3cda 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ +# [6.0.0-dev.1](https://github.com/ReVanced/revanced-cli/compare/v5.0.2-dev.2...v6.0.0-dev.1) (2026-02-21) + + +* build(Needs bump)!: Update to ReVanced Patcher v22 ([#385](https://github.com/ReVanced/revanced-cli/issues/385)) ([30f36ee](https://github.com/ReVanced/revanced-cli/commit/30f36ee270d4b63b69bf7949c7968f2827c395ce)) + + +### BREAKING CHANGES + +* ReVanced CLI switches to ReVanced Patcher v22 and will therefore be incompatible with patches from older versions of ReVanced Patcher. + ## [5.0.2-dev.2](https://github.com/ReVanced/revanced-cli/compare/v5.0.2-dev.1...v5.0.2-dev.2) (2025-04-25) diff --git a/gradle.properties b/gradle.properties index 2e43ce1b..c38a3000 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true kotlin.code.style = official -version = 5.0.2-dev.2 +version = 6.0.0-dev.1 From f481462ccf2eb55d1f964c0f3934bf2b29f4b0ef Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Mon, 23 Feb 2026 17:57:39 +0100 Subject: [PATCH 10/11] feat: Add signature and build provenance verification --- build.gradle.kts | 3 +- docs/1_usage.md | 102 +++++-- gradle/libs.versions.toml | 6 +- .../app/revanced/cli/command/CommandUtils.kt | 151 +++++++++++ .../cli/command/ListCompatibleVersions.kt | 25 +- .../cli/command/ListPatchesCommand.kt | 69 ++--- .../app/revanced/cli/command/PatchCommand.kt | 255 ++++++++++-------- .../cli/command/utility/UtilityCommand.kt | 5 +- 8 files changed, 424 insertions(+), 192 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 77b1a71e..93bc9a5a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,5 +1,3 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget - plugins { alias(libs.plugins.kotlin) alias(libs.plugins.shadow) @@ -53,6 +51,7 @@ tasks { minimize { exclude(dependency("org.bouncycastle:.*")) exclude(dependency("app.revanced:patcher")) + exclude(dependency("commons-logging:commons-logging")) } } diff --git a/docs/1_usage.md b/docs/1_usage.md index 57e36f58..1140a109 100644 --- a/docs/1_usage.md +++ b/docs/1_usage.md @@ -4,6 +4,10 @@ Learn how to use ReVanced CLI. The following examples will show you how to perform basic operations. You can list patches, patch an app, uninstall, and install an app. +> [!NOTE] +> For demonstrative purposes, `-b` is used to +> bypass patches signature and build provenance verification for some commands. + ## 🚀 Show all commands ```bash @@ -13,54 +17,55 @@ java -jar revanced-cli.jar -h ## 📃 List patches ```bash -java -jar revanced-cli.jar list-patches --with-packages --with-versions --with-options patches.rvp +java -jar revanced-cli.jar list-patches --packages --versions --options -bp patches.rvp ``` ## 💉 Patch an app -To patch an app using the default list of patches, use the `patch` command: +To patch an app using the default list of patches, use the `patch` command. ```bash -java -jar revanced-cli.jar patch -p patches.rvp input.apk +java -jar revanced-cli.jar patch -bp patches.rvp input.apk ``` You can also use multiple RVP files: ```bash -java -jar revanced-cli.jar patch -p patches.rvp -p another-patches.rvp input.apk +java -jar revanced-cli.jar patch -bp patches.rvp -bp another-patches.rvp input.apk ``` -To change the default set of enabled or disabled patches, use the option `-e` or `-d` to enable or disable specific patches. +To change the default set of enabled or disabled patches, use the option `-e` or `-d` to enable or +disable specific patches. You can use the `list-patches` command to see which patches are enabled by default. To only enable specific patches, you can use the option `--exclusive` combined with `-e`. Remember that the options `-e` and `-d` match the patch's name exactly. Here is an example: ```bash -java -jar revanced-cli.jar patch -p patches.rvp --exclusive -e "Patch name" -e "Another patch name" input.apk +java -jar revanced-cli.jar patch -bp patches.rvp --exclusive -e "Patch name" -e "Another patch name" input.apk ``` You can also use the options `--ei` or `--di` to enable or disable patches by their index. -This is useful, if two patches happen to have the same name, or if typing the names is too cumbersome. +This is useful, if two patches happen to have the same name, or if typing the names is too +cumbersome. To know the indices of patches, use the command `list-patches`: ```bash -java -jar revanced-cli.jar list-patches patches.rvp +java -jar revanced-cli.jar list-patches -bp patches.rvp ``` Then you can use the indices to enable or disable patches: ```bash -java -jar revanced-cli.jar patch -p patches.rvp --ei 123 --di 456 input.apk +java -jar revanced-cli.jar patch -bp patches.rvp --ei 123 --di 456 input.apk ``` You can combine the option `-e`, `-d`, `--ei`, `--di` and `--exclusive`. Here is an example: ```bash -java -jar revanced-cli.jar patch -p patches.rvp --exclusive -e "Patch name" --ei 123 input.apk +java -jar revanced-cli.jar patch -bp patches.rvp --exclusive -e "Patch name" --ei 123 input.apk ``` - > [!TIP] > You can use the option `-i` to automatically install the patched app after patching. > Make sure ADB is working: @@ -72,18 +77,20 @@ java -jar revanced-cli.jar patch -p patches.rvp --exclusive -e "Patch name" --ei > [!TIP] > You can use the option `--mount` to mount the patched app on top of the un-patched app. -> Make sure you have root permissions and the same app you are patching and mounting over is installed on your device: +> Make sure you have root permissions and the same app you are patching and mounting over is +> installed on your device: > > ```bash > adb shell su -c exit > adb install input.apk > ``` -Patches can have options you can set using the option `-O` alongside the option to include the patch by name or index. -To know the options of a patch, use the option `--with-options` when listing patches: +Patches can have options you can set using the option `-O` alongside the option to include the patch +by name or index. +To know the options of a patch, use the option `--options` when listing patches: ```bash -java -jar revanced-cli.jar list-patches --with-options patches.rvp +java -jar revanced-cli.jar list-patches --options -bp patches.rvp ``` Each patch can have multiple options. You can set them using the option `-O`. @@ -91,19 +98,19 @@ For example, to set the options for the patch with the name `Patch name` with the key `key1` and `key2` to `value1` and `value2` respectively, use the following command: ```bash -java -jar revanced-cli.jar patch -p patches.rvp -e "Patch name" -Okey1=value1 -Okey2=value2 input.apk +java -jar revanced-cli.jar patch -bp patches.rvp -e "Patch name" -Okey1=value1 -Okey2=value2 input.apk ``` If you want to set the option value to `null`, you can omit the value: ```bash -java -jar revanced-cli.jar patch -p patches.rvp -i "Patch name" -Okey1 input.apk +java -jar revanced-cli.jar patch -bp patches.rvp -i "Patch name" -Okey1 input.apk ``` > [!WARNING] > Option values are usually typed. If you set a value with the wrong type, the patch can fail. -> The value types can be seen when listing patches with the option `--with-options`. -> +> The value types can be seen when listing patches with the option `--options`. +> > Example option values: > > - String: `string` @@ -121,19 +128,21 @@ java -jar revanced-cli.jar patch -p patches.rvp -i "Patch name" -Okey1 input.apk > > Quotes and commas escaped in strings (`\"`, `\'`, `\,`) are parsed as part of the string. > List items are recursively parsed, so you can escape values in lists: -> +> > - Escaped integer as a string: `[\'123\']` > - Escaped boolean as a string: `[\'true\']` > - Escaped list as a string: `[\'[item1,item2]\']` > - Escaped null value as a string: `[\'null\']` -> - List with an integer, an integer as a string and a string with a comma, and an escaped list: [`123,\'123\',str\,ing`,`\'[]\'`] -> +> - List with an integer, an integer as a string and a string with a comma, and an escaped list: [ + `123,\'123\',str\,ing`,`\'[]\'`] +> > Example command with an escaped integer as a string: -> +> > ```bash -> java -jar revanced-cli.jar -p patches.rvp -e "Patch name" -OstringKey=\'1\' input.apk +> java -jar revanced-cli.jar -bp patches.rvp -e "Patch name" -OstringKey=\'1\' input.apk > ``` -## 📦 Install an app manually + +## 📦 Install an app manually ```bash java -jar revanced-cli.jar utility install -a input.apk @@ -141,7 +150,8 @@ java -jar revanced-cli.jar utility install -a input.apk > [!TIP] > You can use the option `--mount` to mount the patched app on top of the un-patched app. -> Make sure you have root permissions and the same app you are patching and mounting over is installed on your device: +> Make sure you have root permissions and the same app you are patching and mounting over is +> installed on your device: > > ```bash > adb shell su -c exit @@ -164,8 +174,46 @@ java -jar revanced-cli.jar utility uninstall --package-name --unm > [!TIP] > By default, the app is installed or uninstalled to the first connected device. -> You can append one or more devices by their serial to install or uninstall an app on your selected choice of devices: +> You can append one or more devices by their serial to install or uninstall an app on your selected +> choice of devices: > > ```bash > java -jar revanced-cli.jar utility uninstall --package-name [ ...] > ``` + +## 🔐 Signature and build provenance verification + +To increase confidence and security that the patches you are applying are from a trusted source +and have not been tampered with, artifacts such as the patches files +are signed with PGP by the respective author +and their provenance attested by the platform in which they are built. + +ReVanced CLI currently supports build provenance verification for these platforms: + +- GitHub + +By default, ReVanced CLI requires additional inputs to verify the signature and provenance, +but to bypass these verifications, you can use the option `--bypass-verification` or `-b` +for each input of patches. + +```bash +java -jar revanced-cli.jar patch -bp patches.rvp input.apk +``` + +To verify the signature and provenance, you need to provide the following options +for each input of patches: + +- `--public-key-ring` or `-k`: Path to the PGP public key ring +containing the public key of the author who signed the patches file +- `--signature` or `-s`: Path to the PGP signature file +- `--attestation` or `-a`: Path to the build provenance attestation file +- Additional verification options for the respective platform which produced the patches file: + - GitHub: + - `--repository` or `-r`: GitHub repository in the format 'owner/repo' + +For example, to verify the signature and provenance of a patches file from GitHub +when using the `list-patches` command, use the following command: + +```bash +java -jar revanced-cli.jar list-patches -p patches.rvp -k public-key-ring.gpg -s patches.rvp.asc -a patches.rvp.sigstore.json -r owner/repo +``` diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f12c8fc1..34b51253 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,15 +1,15 @@ [versions] -bcpg-jdk18on = "1.83" +bouncy-castle = "1.83" shadow = "9.3.1" kotlin = "2.3.10" kotlinx = "1.10.2" picocli = "4.7.7" revanced-patcher = "22.0.0" -revanced-library = "4.0.0" +revanced-library = "4.0.1" sigstore = "2.0.0" [libraries] -bcpg-jdk18on = { module = "org.bouncycastle:bcpg-jdk18on", version.ref = "bcpg-jdk18on" } +bcpg-jdk18on = { module = "org.bouncycastle:bcpg-jdk18on", version.ref = "bouncy-castle" } kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" } kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinx" } picocli = { module = "info.picocli:picocli", version.ref = "picocli" } diff --git a/src/main/kotlin/app/revanced/cli/command/CommandUtils.kt b/src/main/kotlin/app/revanced/cli/command/CommandUtils.kt index afb365b6..4982f0ac 100644 --- a/src/main/kotlin/app/revanced/cli/command/CommandUtils.kt +++ b/src/main/kotlin/app/revanced/cli/command/CommandUtils.kt @@ -1,6 +1,157 @@ package app.revanced.cli.command +import app.revanced.library.getPublicKeyRingCollection +import app.revanced.library.getSignature +import app.revanced.library.matchGitHub +import app.revanced.library.verifyProvenance +import app.revanced.library.verifySignature +import app.revanced.patcher.patch.Patches +import dev.sigstore.fulcio.client.ImmutableFulcioCertificateMatcher.Builder import picocli.CommandLine +import java.io.File +import java.util.logging.Logger + +class PatchesFileInput { + + @CommandLine.Option( + names = ["-p", "--patches"], + description = ["One or more path to RVP files."], + required = true + ) + lateinit var patchesFile: File + + @CommandLine.ArgGroup(multiplicity = "1", exclusive = true) + lateinit var signatureVerification: SignatureVerification + + class SignatureVerification { + @CommandLine.Option( + names = ["-b", "--bypass-verification"], + description = ["Bypass signature and build provenance verification for this RVP file."], + required = true, + ) + var bypass: Boolean = false + + @CommandLine.ArgGroup(exclusive = false) + var options: SignatureVerificationOptions? = null + + class SignatureVerificationOptions { + @CommandLine.Option( + names = ["-s", "--signature"], + description = ["Path to the PGP signature file for this RVP file."], + required = true, + ) + lateinit var signatureFile: File + + @CommandLine.Option( + names = ["-k", "--public-key-ring"], + description = ["Path to the PGP public key ring for this RVP file."], + required = true, + ) + lateinit var publicKeyRingFile: File + + @CommandLine.Option( + names = ["-a", "--attestation"], + description = ["Path to the build provenance attestation file for this RVP file."], + required = true, + ) + lateinit var attestationFile: File + + @CommandLine.ArgGroup(exclusive = true, multiplicity = "1") + lateinit var provenance: Provenance + + class Provenance { + @CommandLine.ArgGroup(exclusive = false) + var github: GitHubOptions? = null + + class GitHubOptions { + @CommandLine.Option( + names = ["-r", "--repository"], + description = ["GitHub repository in the format 'owner/repo'."], + required = true, + ) + lateinit var repository: String + } + } + } + } + + fun isValid(): Boolean { + if (!patchesFile.exists()) { + logger.severe("Patches file ${patchesFile.path} does not exist") + return false + } + + if (!signatureVerification.bypass) { + val options = signatureVerification.options!! + + // Signature verification. + if (!options.signatureFile.exists()) { + logger.severe("Signature file ${options.signatureFile.path} does not exist") + return false + } + + if (!options.publicKeyRingFile.exists()) { + logger.severe("Public key ring file ${options.publicKeyRingFile.path} does not exist") + return false + } + + val signature = options.signatureFile.inputStream().use { getSignature(it) } + val publicKey = options.publicKeyRingFile.inputStream() + .use { getPublicKeyRingCollection(it) } + .getPublicKey(signature.keyID) + + if (!verifySignature(patchesFile.readBytes(), signature, publicKey)) { + logger.severe("Signature verification failed for ${patchesFile.path}") + return false + } + + // Provenance verification. + if (!options.attestationFile.exists()) { + logger.severe("Attestation file ${options.attestationFile.path} does not exist") + return false + } + + val buildMatcher: Builder.() -> Builder = when { + options.provenance.github != null -> + fun Builder.(): Builder { + return matchGitHub(options.provenance.github!!.repository) + } + + else -> { + logger.severe("No provenance options specified for ${patchesFile.path}") + return false + } + } + + val isValid = options.attestationFile.inputStream().use { attestationStream -> + verifyProvenance(patchesFile.readBytes(), attestationStream, buildMatcher) + } + + if (!isValid) { + logger.severe("Provenance verification failed for ${patchesFile.path}") + return false + } + + } + + return true + } + + companion object { + private val logger = Logger.getLogger(PatchesFileInput::class.java.name) + + fun loadPatches(patchesFiles: List): Patches? { + if (!patchesFiles.all(PatchesFileInput::isValid)) return null + + return app.revanced.patcher.patch.loadPatches( + patchesFiles = patchesFiles.map { it.patchesFile }.toTypedArray() + ) { file, throwable -> + logger.severe("Failed to load patches from ${file.path}:\n${throwable.stackTraceToString()}") + } + } + } + +} class OptionKeyConverter : CommandLine.ITypeConverter { override fun convert(value: String): String = value diff --git a/src/main/kotlin/app/revanced/cli/command/ListCompatibleVersions.kt b/src/main/kotlin/app/revanced/cli/command/ListCompatibleVersions.kt index 25033e8e..381392da 100644 --- a/src/main/kotlin/app/revanced/cli/command/ListCompatibleVersions.kt +++ b/src/main/kotlin/app/revanced/cli/command/ListCompatibleVersions.kt @@ -1,28 +1,26 @@ package app.revanced.cli.command +import app.revanced.cli.command.PatchesFileInput.Companion.loadPatches import app.revanced.library.PackageName import app.revanced.library.VersionMap import app.revanced.library.mostCommonCompatibleVersions -import app.revanced.patcher.patch.loadPatches import picocli.CommandLine -import java.io.File +import java.util.concurrent.Callable import java.util.logging.Logger @CommandLine.Command( name = "list-versions", description = [ "List the most common compatible versions of apps that are compatible " + - "with the patches from RVP files.", + "with the patches from RVP files.", ], + sortOptions = false, ) -internal class ListCompatibleVersions : Runnable { +internal class ListCompatibleVersions : Callable { private val logger = Logger.getLogger(this::class.java.name) - @CommandLine.Parameters( - description = ["Paths to RVP files."], - arity = "1..*", - ) - private lateinit var patchesFiles: Set + @CommandLine.ArgGroup(exclusive = false, multiplicity = "1..*") + private lateinit var patchesFileInputs: List @CommandLine.Option( names = ["-f", "--filter-package-names"], @@ -37,11 +35,12 @@ internal class ListCompatibleVersions : Runnable { ) private var countUnusedPatches: Boolean = false - override fun run() { + override fun call(): Int { fun VersionMap.buildVersionsString(): String { if (isEmpty()) return "Any" - fun buildPatchesCountString(count: Int) = if (count == 1) "1 patch" else "$count patches" + fun buildPatchesCountString(count: Int) = + if (count == 1) "1 patch" else "$count patches" return entries.joinToString("\n") { (version, count) -> "$version (${buildPatchesCountString(count)})" @@ -55,11 +54,13 @@ internal class ListCompatibleVersions : Runnable { appendLine(versions.buildVersionsString().prependIndent("\t")) } - val patches = loadPatches(patchesFiles = patchesFiles.toTypedArray()) + val patches = loadPatches(patchesFileInputs) ?: return -1 patches.mostCommonCompatibleVersions( packageNames, countUnusedPatches, ).entries.joinToString("\n", transform = ::buildString).let(logger::info) + + return 0 } } diff --git a/src/main/kotlin/app/revanced/cli/command/ListPatchesCommand.kt b/src/main/kotlin/app/revanced/cli/command/ListPatchesCommand.kt index e8c6b438..2757b5ae 100644 --- a/src/main/kotlin/app/revanced/cli/command/ListPatchesCommand.kt +++ b/src/main/kotlin/app/revanced/cli/command/ListPatchesCommand.kt @@ -1,81 +1,79 @@ package app.revanced.cli.command +import app.revanced.cli.command.PatchesFileInput.Companion.loadPatches import app.revanced.patcher.patch.Package import app.revanced.patcher.patch.Patch -import app.revanced.patcher.patch.loadPatches import picocli.CommandLine.* import picocli.CommandLine.Help.Visibility.ALWAYS -import java.io.File +import java.util.concurrent.Callable import java.util.logging.Logger import app.revanced.patcher.patch.Option as PatchOption @Command( name = "list-patches", description = ["List patches from supplied RVP files."], + sortOptions = false, ) -internal object ListPatchesCommand : Runnable { +internal object ListPatchesCommand : Callable { private val logger = Logger.getLogger(this::class.java.name) - @Parameters( - description = ["Paths to RVP files."], - arity = "1..*", - ) - private lateinit var patchesFiles: Set + @ArgGroup(exclusive = false, multiplicity = "1..*") + private lateinit var patchesFileInputs: List @Option( - names = ["-d", "--with-descriptions"], + names = ["--descriptions"], description = ["List their descriptions."], showDefaultValue = ALWAYS, ) - private var withDescriptions: Boolean = true + private var showDescriptions: Boolean = true @Option( - names = ["-p", "--with-packages"], + names = ["--packages"], description = ["List the packages the patches are compatible with."], showDefaultValue = ALWAYS, ) - private var withPackages: Boolean = false + private var showPackages: Boolean = false @Option( - names = ["-v", "--with-versions"], + names = ["--versions"], description = ["List the versions of the apps the patches are compatible with."], showDefaultValue = ALWAYS, ) - private var withVersions: Boolean = false + private var showVersions: Boolean = false @Option( - names = ["-o", "--with-options"], + names = ["--options"], description = ["List the options of the patches."], showDefaultValue = ALWAYS, ) - private var withOptions: Boolean = false + private var showOptions: Boolean = false @Option( - names = ["-u", "--with-universal-patches"], + names = ["--universal-patches"], description = ["List patches which are compatible with any app."], showDefaultValue = ALWAYS, ) - private var withUniversalPatches: Boolean = true + private var showUniversalPatches: Boolean = true @Option( - names = ["-i", "--index"], + names = ["--index"], description = ["List the index of each patch in relation to the supplied RVP files."], showDefaultValue = ALWAYS, ) - private var withIndex: Boolean = true + private var showIndex: Boolean = true @Option( - names = ["-f", "--filter-package-name"], + names = ["--filter-package-name"], description = ["Filter patches by package name."], ) private var packageName: String? = null - override fun run() { + override fun call(): Int { fun Package.buildString(): String { val (name, versions) = this return buildString { - if (withVersions && versions != null) { + if (showVersions && versions != null) { appendLine("Package name: $name") appendLine("Compatible versions:") append(versions.joinToString("\n") { version -> version }.prependIndent("\t")) @@ -93,7 +91,9 @@ internal object ListPatchesCommand : Runnable { values?.let { values -> appendLine("\nPossible values:") - append(values.map { "${it.value} (${it.key})" }.joinToString("\n").prependIndent("\t")) + append( + values.map { "${it.value} (${it.key})" }.joinToString("\n").prependIndent("\t") + ) } append("\nType: $type") @@ -101,15 +101,15 @@ internal object ListPatchesCommand : Runnable { fun IndexedValue.buildString() = let { (index, patch) -> buildString { - if (withIndex) appendLine("Index: $index") + if (showIndex) appendLine("Index: $index") append("Name: ${patch.name}") - if (withDescriptions) patch.description?.let { append("\nDescription: $it") } + if (showDescriptions) patch.description?.let { append("\nDescription: $it") } append("\nEnabled: ${patch.use}") - if (withOptions && patch.options.isNotEmpty()) { + if (showOptions && patch.options.isNotEmpty()) { appendLine("\nOptions:") append( patch.options.values.joinToString("\n\n") { option -> @@ -118,7 +118,7 @@ internal object ListPatchesCommand : Runnable { ) } - if (withPackages && patch.compatiblePackages != null) { + if (showPackages && patch.compatiblePackages != null) { appendLine("\nCompatible packages:") append( patch.compatiblePackages!!.joinToString("\n") { @@ -129,14 +129,19 @@ internal object ListPatchesCommand : Runnable { } } - fun Patch.filterCompatiblePackages(name: String) = compatiblePackages?.any { (compatiblePackageName, _) -> compatiblePackageName == name } - ?: withUniversalPatches + fun Patch.filterCompatiblePackages(name: String) = + compatiblePackages?.any { (compatiblePackageName, _) -> compatiblePackageName == name } + ?: showUniversalPatches + - val patches = loadPatches(patchesFiles = patchesFiles.toTypedArray()).withIndex().toList() + val patches = loadPatches(patchesFileInputs)?.withIndex()?.toList() ?: return -1 val filtered = - packageName?.let { patches.filter { (_, patch) -> patch.filterCompatiblePackages(it) } } ?: patches + packageName?.let { patches.filter { (_, patch) -> patch.filterCompatiblePackages(it) } } + ?: patches if (filtered.isNotEmpty()) logger.info(filtered.joinToString("\n\n") { it.buildString() }) + + return 0 } } diff --git a/src/main/kotlin/app/revanced/cli/command/PatchCommand.kt b/src/main/kotlin/app/revanced/cli/command/PatchCommand.kt index 1ed2b17c..00265405 100644 --- a/src/main/kotlin/app/revanced/cli/command/PatchCommand.kt +++ b/src/main/kotlin/app/revanced/cli/command/PatchCommand.kt @@ -1,11 +1,11 @@ package app.revanced.cli.command +import app.revanced.cli.command.PatchesFileInput.Companion.loadPatches import app.revanced.library.ApkUtils import app.revanced.library.ApkUtils.applyTo import app.revanced.library.installation.installer.* import app.revanced.library.setOptions import app.revanced.patcher.patch.Patch -import app.revanced.patcher.patch.loadPatches import app.revanced.patcher.patcher import kotlinx.coroutines.runBlocking import picocli.CommandLine @@ -16,28 +16,56 @@ import picocli.CommandLine.Spec import java.io.File import java.io.PrintWriter import java.io.StringWriter +import java.util.concurrent.Callable import java.util.logging.Logger @CommandLine.Command( name = "patch", description = ["Patch an APK file."], + sortOptions = false, ) -internal object PatchCommand : Runnable { +internal object PatchCommand : Callable { private val logger = Logger.getLogger(this::class.java.name) @Spec private lateinit var spec: CommandSpec + // region Required parameters + + @CommandLine.Parameters( + description = ["APK file to patch."], + arity = "1", + ) + @Suppress("unused") + private fun setApk(apk: File) { + if (!apk.exists()) { + throw CommandLine.ParameterException( + spec.commandLine(), + "APK file ${apk.path} does not exist", + ) + } + this.apk = apk + } + + private lateinit var apk: File + + @ArgGroup(exclusive = false, multiplicity = "1..*") + private lateinit var patchesFileInputs: List + + // endregion + + // region Patch selection + @ArgGroup(exclusive = false, multiplicity = "0..*") private var selection = mutableSetOf() internal class Selection { @ArgGroup(exclusive = false) - internal var enabled: EnableSelection? = null + var enabled: EnableSelection? = null internal class EnableSelection { @ArgGroup(multiplicity = "1") - internal lateinit var selector: EnableSelector + lateinit var selector: EnableSelector internal class EnableSelector { @CommandLine.Option( @@ -45,14 +73,14 @@ internal object PatchCommand : Runnable { description = ["Name of the patch."], required = true, ) - internal var name: String? = null + var name: String? = null @CommandLine.Option( names = ["--ei"], description = ["Index of the patch in the combined list of the supplied RVP files."], required = true, ) - internal var index: Int? = null + var index: Int? = null } @CommandLine.Option( @@ -61,15 +89,15 @@ internal object PatchCommand : Runnable { mapFallbackValue = CommandLine.Option.NULL_VALUE, converter = [OptionKeyConverter::class, OptionValueConverter::class], ) - internal var options = mutableMapOf() + var options = mutableMapOf() } @ArgGroup(exclusive = false) - internal var disable: DisableSelection? = null + var disable: DisableSelection? = null internal class DisableSelection { @ArgGroup(multiplicity = "1") - internal lateinit var selector: DisableSelector + lateinit var selector: DisableSelector internal class DisableSelector { @CommandLine.Option( @@ -77,14 +105,14 @@ internal object PatchCommand : Runnable { description = ["Name of the patch."], required = true, ) - internal var name: String? = null + var name: String? = null @CommandLine.Option( names = ["--di"], description = ["Index of the patch in the combined list of the supplied RVP files."], required = true, ) - internal var index: Int? = null + var index: Int? = null } } } @@ -101,9 +129,11 @@ internal object PatchCommand : Runnable { description = ["Don't check for compatibility with the supplied APK's version."], showDefaultValue = ALWAYS, ) - private var force: Boolean = false + private var force = false - private var outputFilePath: File? = null + // endregion + + // region Output @CommandLine.Option( names = ["-o", "--out"], @@ -114,109 +144,81 @@ internal object PatchCommand : Runnable { this.outputFilePath = outputFilePath?.absoluteFile } + private var outputFilePath: File? = null + + // endregion + + // region Installation + @ArgGroup(exclusive = false, multiplicity = "0..1") - internal var installation: Installation? = null + private var installation: Installation? = null - internal class Installation { + private class Installation { @CommandLine.Option( names = ["-i", "--install"], required = true, description = ["Serial of the ADB device to install to. If not specified, the first connected device will be used."], - fallbackValue = "", // Empty string is used to select the first of connected devices. + fallbackValue = "", arity = "0..1", ) - internal var deviceSerial: String? = null + var deviceSerial: String? = null @CommandLine.Option( names = ["--mount"], - required = false, description = ["Install the patched APK file by mounting."], showDefaultValue = ALWAYS, ) - internal var mount: Boolean = false + var mount = false } - @CommandLine.Option( - names = ["--keystore"], - description = [ - "Path to the keystore file containing a private key and certificate pair to sign the patched APK file with. " + - "Defaults to the same directory as the supplied APK file.", - ], - ) - private var keyStoreFilePath: File? = null + // endregion - @CommandLine.Option( - names = ["--keystore-password"], - description = ["Password of the keystore. Empty password by default."], - ) - private var keyStorePassword: String? = null // Empty password by default + // region Signing - @CommandLine.Option( - names = ["--keystore-entry-alias"], - description = ["Alias of the private key and certificate pair keystore entry."], - showDefaultValue = ALWAYS, - ) - private var keyStoreEntryAlias = "ReVanced Key" - - @CommandLine.Option( - names = ["--keystore-entry-password"], - description = ["Password of the keystore entry."], - ) - private var keyStoreEntryPassword = "" // Empty password by default + @ArgGroup(exclusive = false, multiplicity = "0..1") + private var signing: Signing? = null - @CommandLine.Option( - names = ["--signer"], - description = ["The name of the signer to sign the patched APK file with."], - showDefaultValue = ALWAYS, - ) - private var signer = "ReVanced" + private class Signing { + @CommandLine.Option( + names = ["--keystore"], + description = [ + "Path to the keystore file containing a private key and certificate pair to sign the patched APK file with. " + + "Defaults to the same directory as the supplied APK file.", + ], + ) + var keystoreFilePath: File? = null - @CommandLine.Option( - names = ["-t", "--temporary-files-path"], - description = ["Path to store temporary files."], - ) - private var temporaryFilesPath: File? = null + @CommandLine.Option( + names = ["--keystore-password"], + description = ["Password of the keystore. Empty password by default."], + ) + var keystorePassword: String? = null - private var aaptBinaryPath: File? = null + @CommandLine.Option( + names = ["--keystore-entry-alias"], + description = ["Alias of the private key and certificate pair keystore entry."], + showDefaultValue = ALWAYS, + ) + var keystoreEntryAlias = "ReVanced Key" - @CommandLine.Option( - names = ["--purge"], - description = ["Purge temporary files directory after patching."], - showDefaultValue = ALWAYS, - ) - private var purge: Boolean = false + @CommandLine.Option( + names = ["--keystore-entry-password"], + description = ["Password of the keystore entry."], + showDefaultValue = ALWAYS, + ) + var keystoreEntryPassword = "" - @CommandLine.Parameters( - description = ["APK file to patch."], - arity = "1", - ) - @Suppress("unused") - private fun setApk(apk: File) { - if (!apk.exists()) { - throw CommandLine.ParameterException( - spec.commandLine(), - "APK file ${apk.path} does not exist", - ) - } - this.apk = apk + @CommandLine.Option( + names = ["--signer"], + description = ["The name of the signer to sign the patched APK file with."], + showDefaultValue = ALWAYS, + ) + var signer = "ReVanced" } - private lateinit var apk: File + // endregion - @CommandLine.Option( - names = ["-p", "--patches"], - description = ["One or more path to RVP files."], - required = true, - ) - @Suppress("unused") - private fun setPatchesFile(patchesFiles: Set) { - patchesFiles.firstOrNull { !it.exists() }?.let { - throw CommandLine.ParameterException(spec.commandLine(), "${it.name} can't be found") - } - this.patchesFiles = patchesFiles - } - - private var patchesFiles = emptySet() + // region Resource compilation @CommandLine.Option( names = ["--custom-aapt2-binary"], @@ -233,7 +235,28 @@ internal object PatchCommand : Runnable { this.aaptBinaryPath = aaptBinaryPath } - override fun run() { + private var aaptBinaryPath: File? = null + + // endregion + + // region Temporary files + + @CommandLine.Option( + names = ["-t", "--temporary-files-path"], + description = ["Path to store temporary files."], + ) + private var temporaryFilesPath: File? = null + + @CommandLine.Option( + names = ["--purge"], + description = ["Purge temporary files directory after patching."], + showDefaultValue = ALWAYS, + ) + private var purge = false + + // endregion + + override fun call(): Int { // region Setup val outputFilePath = @@ -247,7 +270,7 @@ internal object PatchCommand : Runnable { ) val keystoreFilePath = - keyStoreFilePath ?: outputFilePath.parentFile + signing?.keystoreFilePath ?: outputFilePath.parentFile .resolve("${outputFilePath.nameWithoutExtension}.keystore") val installer = if (installation?.deviceSerial != null) { @@ -263,16 +286,16 @@ internal object PatchCommand : Runnable { if (deviceSerial?.isNotEmpty() == true) { logger.severe( "Device with serial $deviceSerial not found to install to. " + - "Ensure the device is connected and the serial is correct when using the --install option.", + "Ensure the device is connected and the serial is correct when using the --install option.", ) } else { logger.severe( "No device has been found to install to. " + - "Ensure a device is connected when using the --install option.", + "Ensure a device is connected when using the --install option.", ) } - return + return -1 } } else { null @@ -284,25 +307,23 @@ internal object PatchCommand : Runnable { logger.info("Loading patches") - val patches = loadPatches(patchesFiles = patchesFiles.toTypedArray()) { file, throwable -> - logger.severe("Failed to load patches from ${file.path}:\n${throwable.stackTraceToString()}") - } - // endregion + val patches = loadPatches(patchesFileInputs) ?: return -1 + // endregion val patcherTemporaryFilesPath = temporaryFilesPath.resolve("patcher") - lateinit var _packageName: String + lateinit var packageName: String val patch = patcher( apk, patcherTemporaryFilesPath, aaptBinaryPath, patcherTemporaryFilesPath.absolutePath, - ) { packageName, versionName -> - _packageName = packageName + ) { appPackageName, versionName -> + packageName = appPackageName - val filteredPatches = patches.filterPatchSelection(packageName, versionName) + val filteredPatches = patches.filterPatchSelection(appPackageName, versionName) logger.info("Setting patch options") @@ -310,7 +331,8 @@ internal object PatchCommand : Runnable { selection.filter { it.enabled != null }.associate { val enabledSelection = it.enabled!! - val name = enabledSelection.selector.name ?: patchesList[enabledSelection.selector.index!!].name!! + val name = enabledSelection.selector.name + ?: patchesList[enabledSelection.selector.index!!].name!! name to enabledSelection.options }.let(filteredPatches::setOptions) @@ -338,12 +360,12 @@ internal object PatchCommand : Runnable { ApkUtils.signApk( it, outputFilePath, - signer, + signing?.signer ?: "ReVanced", ApkUtils.KeyStoreDetails( keystoreFilePath, - keyStorePassword, - keyStoreEntryAlias, - keyStoreEntryPassword, + signing?.keystorePassword, + signing?.keystoreEntryAlias ?: "ReVanced Key", + signing?.keystoreEntryPassword ?: "", ), ) } else { @@ -359,7 +381,8 @@ internal object PatchCommand : Runnable { installation?.deviceSerial?.let { runBlocking { - when (val result = installer!!.install(Installer.Apk(outputFilePath, _packageName))) { + when (val result = + installer!!.install(Installer.Apk(outputFilePath, packageName))) { RootInstallerResult.FAILURE -> logger.severe("Failed to mount the patched APK file") is AdbInstallerResult.Failure -> logger.severe(result.exception.toString()) else -> logger.info("Installed the patched APK file") @@ -373,6 +396,8 @@ internal object PatchCommand : Runnable { logger.info("Purging temporary files") purge(temporaryFilesPath) } + + return 0 } /** @@ -415,16 +440,16 @@ internal object PatchCommand : Runnable { if (!matchesVersion) { return@patchLoop logger.warning( "\"$patchName\" incompatible with $packageName $packageVersion " + - "but compatible with " + - packages.joinToString("; ") { (packageName, versions) -> - packageName + " " + versions!!.joinToString(", ") - }, + "but compatible with " + + packages.joinToString("; ") { (packageName, versions) -> + packageName + " " + versions!!.joinToString(", ") + }, ) } } ?: return@patchLoop logger.fine( "\"$patchName\" incompatible with $packageName. " + - "It is only compatible with " + - packages.joinToString(", ") { (name, _) -> name }, + "It is only compatible with " + + packages.joinToString(", ") { (name, _) -> name }, ) return@let diff --git a/src/main/kotlin/app/revanced/cli/command/utility/UtilityCommand.kt b/src/main/kotlin/app/revanced/cli/command/utility/UtilityCommand.kt index 7e01a53f..95e68ea8 100644 --- a/src/main/kotlin/app/revanced/cli/command/utility/UtilityCommand.kt +++ b/src/main/kotlin/app/revanced/cli/command/utility/UtilityCommand.kt @@ -5,6 +5,9 @@ import picocli.CommandLine @CommandLine.Command( name = "utility", description = ["Commands for utility purposes."], - subcommands = [InstallCommand::class, UninstallCommand::class], + subcommands = [ + InstallCommand::class, + UninstallCommand::class, + ], ) internal object UtilityCommand From ad23a88cba3bba319bafde367c4061047260adf4 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 26 Feb 2026 18:17:16 +0000 Subject: [PATCH 11/11] chore: Release v6.0.0-dev.2 [skip ci] # [6.0.0-dev.2](https://github.com/ReVanced/revanced-cli/compare/v6.0.0-dev.1...v6.0.0-dev.2) (2026-02-26) ### Features * Add signature and build provenance verification ([f481462](https://github.com/ReVanced/revanced-cli/commit/f481462ccf2eb55d1f964c0f3934bf2b29f4b0ef)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ab5d3cda..da0deeb9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [6.0.0-dev.2](https://github.com/ReVanced/revanced-cli/compare/v6.0.0-dev.1...v6.0.0-dev.2) (2026-02-26) + + +### Features + +* Add signature and build provenance verification ([f481462](https://github.com/ReVanced/revanced-cli/commit/f481462ccf2eb55d1f964c0f3934bf2b29f4b0ef)) + # [6.0.0-dev.1](https://github.com/ReVanced/revanced-cli/compare/v5.0.2-dev.2...v6.0.0-dev.1) (2026-02-21) diff --git a/gradle.properties b/gradle.properties index c38a3000..0043b579 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true kotlin.code.style = official -version = 6.0.0-dev.1 +version = 6.0.0-dev.2