diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0f225565..bf643ab2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,116 +11,21 @@ env: GRADLE_OPTS: "-Dorg.gradle.jvmargs=-Xmx4096M -Dorg.gradle.daemon=false -Dorg.gradle.parallel=true -Dorg.gradle.caching=true" jobs: - test: - name: Run Tests - runs-on: ubuntu-latest + build: + name: Build Library (Android + iOS) + runs-on: macOS-latest steps: - name: Checkout uses: actions/checkout@v6 - - name: Run unit tests - run: ./gradlew jvmTest + - name: Set up JDK 21 + uses: actions/setup-java@v5 + with: + distribution: 'zulu' + java-version: 21 -# - name: Upload test reports -# uses: actions/upload-artifact@v7 -# with: -# name: test-reports -# path: "**/build/reports/tests/" + - name: Assemble library modules + run: ./gradlew assemble - build-android: - name: Build Android - runs-on: ubuntu-latest - needs: test - steps: - - name: Checkout - uses: actions/checkout@v6 - - - name: Build Android APKs - run: ./gradlew :sample:ktor:assembleDebug :sample:ktor:assembleRelease :sample:okhttp:assembleDebug :sample:okhttp:assembleRelease - -# - name: Upload Android APKs -# uses: actions/upload-artifact@v7 -# with: -# name: android-apks -# path: "**/build/outputs/apk/**/*.apk" - -# build-ios: -# name: Build iOS simulator app -# runs-on: macos-latest -# needs: test -# steps: -# - name: Checkout -# uses: actions/checkout@v6 -# -# - name: Build iOS simulator app -# run: | -# xcodebuild build \ -# -project sample/ktor/iosApp/iosApp.xcodeproj \ -# -configuration Debug \ -# -scheme ios \ -# -sdk iphonesimulator \ -# -arch arm64 \ -# -derivedDataPath ./build \ -# -verbose - -# - name: Upload App Folder -# uses: actions/upload-artifact@v7 -# with: -# name: iphonesimulator-app -# path: build/Build/Products/Debug-iphonesimulator/* - - build-desktop-macos: - name: Build Desktop macOS - runs-on: macos-latest - needs: test - steps: - - name: Checkout - uses: actions/checkout@v6 - - - name: Build macOS DMGs - run: ./gradlew :sample:ktor:packageDmg :sample:okhttp:packageDmg - -# - name: Upload macOS DMGs -# uses: actions/upload-artifact@v7 -# with: -# name: desktop-macos-dmg -# path: "**/build/compose/binaries/main/dmg/*.dmg" - - build-desktop-windows: - name: Build Desktop Windows - runs-on: windows-latest - needs: test - steps: - - name: Checkout - uses: actions/checkout@v6 - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v5.0.0 - - - name: Build Windows MSIs - run: ./gradlew :sample:ktor:packageMsi :sample:okhttp:packageMsi - -# - name: Upload Windows MSIs -# uses: actions/upload-artifact@v7 -# with: -# name: desktop-windows-msi -# path: "**/build/compose/binaries/main/msi/*.msi" - - build-desktop-linux: - name: Build Desktop Linux - runs-on: ubuntu-latest - needs: test - steps: - - name: Checkout - uses: actions/checkout@v6 - - - name: Build Linux DEBs and RPMs - run: ./gradlew :sample:ktor:packageDeb :sample:ktor:packageRpm :sample:okhttp:packageDeb :sample:okhttp:packageRpm - -# - name: Upload Linux DEBs and RPMs -# uses: actions/upload-artifact@v7 -# with: -# name: desktop-linux-deb -# path: | -# **/build/compose/binaries/main/deb/*.deb -# **/build/compose/binaries/main/rpm/*.rpm + - name: Run API check + run: ./gradlew apiCheck diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index a331ee8d..1d00f9a6 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -28,11 +28,11 @@ jobs: git config user.name github-actions[bot] git config user.email 41898282+github-actions[bot]@users.noreply.github.com - - name: Set up JDK 24 + - name: Set up JDK 21 uses: actions/setup-java@v5 with: distribution: 'zulu' - java-version: 24 + java-version: 21 - name: Set up Python uses: actions/setup-python@v6 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 604e4d3b..3e711810 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -1,11 +1,13 @@ -name: Publish to MavenCentral +name: Publish to GitHub Packages on: release: types: [released, prereleased] + workflow_dispatch: permissions: - contents: write + contents: read + packages: write jobs: check: @@ -15,51 +17,31 @@ jobs: - name: Checkout uses: actions/checkout@v6 + - name: Set up JDK 21 + uses: actions/setup-java@v5 + with: + distribution: 'zulu' + java-version: 21 + - name: Run api check run: ./gradlew apiCheck - docs: - name: Generate Docs - runs-on: macOS-latest - needs: check - steps: - - uses: actions/checkout@v6 - - name: Configure Git Credentials - run: | - git config user.name github-actions[bot] - git config user.email 41898282+github-actions[bot]@users.noreply.github.com - - uses: actions/setup-python@v6 - with: - python-version: 3.x - - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV - - uses: actions/cache@v5 - with: - key: mkdocs-material-${{ env.cache_id }} - path: ~/.cache - restore-keys: | - mkdocs-material- - - run: rm -rf docs/api - - run: ./gradlew clean dokkaGenerate - - run: pip install mkdocs-material - - run: mkdocs gh-deploy --force --config-file docs/mkdocs.yml - publish: - name: Release and Publish + name: Publish to GitHub Packages runs-on: macOS-latest - needs: docs + needs: check steps: - name: Check out code uses: actions/checkout@v6 + - name: Set up JDK 21 uses: actions/setup-java@v5 with: distribution: 'zulu' - java-version: 24 - - name: Publish to MavenCentral - run: ./gradlew publishAndReleaseToMavenCentral --no-configuration-cache + java-version: 21 + + - name: Publish to GitHub Packages + run: ./gradlew publishAllPublicationsToGitHubPackagesRepository --no-configuration-cache env: - ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.MAVEN_CENTRAL_USERNAME }} - ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} - ORG_GRADLE_PROJECT_signingInMemoryKeyId: ${{ secrets.SIGNING_KEY_ID }} - ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNING_PASSWORD }} - ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.GPG_KEY_CONTENTS }} \ No newline at end of file + USERNAME: ${{ github.actor }} + USER_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/README.md b/README.md index 847bb58b..59968add 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -[![Maven Central](https://img.shields.io/maven-central/v/ro.cosminmihu.ktor/ktor-monitor-logging?logo=apachemaven&label=Maven%20Central&link=https://search.maven.org/artifact/ro.cosminmihu.ktor/ktor-monitor-logging/)](https://search.maven.org/artifact/ro.cosminmihu.ktor/ktor-monitor-logging) +[![GitHub Packages](https://img.shields.io/badge/GitHub%20Packages-robustrade%3Aktor--monitor-2088FF?logo=github&logoColor=white)](https://github.com/Robustrade/KtorMonitor/packages) [![License](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg?label=Licence&logo=lintcode&logoColor=white&color=#3DA639)](https://github.com/CosminMihuMDC/KtorMonitor/blob/main/LICENSE) -[![Platforms](https://img.shields.io/badge/Platforms-Android%20+%20iOS%20+%20JVM%20+%20Wasm%20+%20Js-brightgreen?logo=kotlin&logoColor=white&color=8d69e0)](https://cosminmihumdc.github.io/KtorMonitor) +[![Platforms](https://img.shields.io/badge/Platforms-Android%20+%20iOS-brightgreen?logo=kotlin&logoColor=white&color=8d69e0)](https://cosminmihumdc.github.io/KtorMonitor) [![Slack](https://img.shields.io/badge/Slack-kotlinlang-4A164B?logo=sololearn&logoColor=white)](https://kotlinlang.slack.com/archives/C0AB9GA32H0) [![JetBrains Klibs.io](https://img.shields.io/badge/JetBrains-klibs.io-4284F3?logo=jetbrains&logoColor=white)](https://klibs.io/project/CosminMihuMDC/KtorMonitor) [![Documentation](https://img.shields.io/badge/Docs-gray?logo=readthedocs&logoColor=white)](https://cosminmihumdc.github.io/KtorMonitor) @@ -26,6 +26,26 @@ Powerful tool to monitor [Ktor Client](https://ktor.io/), [OkHttp](https://squar * 📡**SSE & WebSockets**: Track one-way streams (*SSE*) and bidirectional traffic (*WebSockets*). * 🛡️**Production Safe**: No-Op version to ensure monitoring code is excluded from your production builds. +## 📦 Repository (GitHub Packages) + +This fork is published to **GitHub Packages** under the `robustrade` group (not Maven Central). +Add the GitHub Packages repository — authenticated with a GitHub token that has `read:packages` — +to your `settings.gradle.kts`: + +```kotlin +dependencyResolutionManagement { + repositories { + maven { + url = uri("https://maven.pkg.github.com/Robustrade/KtorMonitor") + credentials { + username = System.getenv("USERNAME") + password = System.getenv("USER_TOKEN") + } + } + } +} +``` + ## 📦 Setup (Kotlin Multiplatform) for [Ktor Client](https://ktor.io/) ### @@ -34,7 +54,7 @@ Powerful tool to monitor [Ktor Client](https://ktor.io/), [OkHttp](https://squar kotlin { sourceSets { commonMain.dependencies { - implementation("ro.cosminmihu.ktor:ktor-monitor-logging:1.13.0") + implementation("robustrade:ktor-monitor-logging:1.13.0") } } } @@ -48,7 +68,7 @@ To isolate KtorMonitor from release builds, use the `ktor-monitor-logging-no-op` kotlin { sourceSets { commonMain.dependencies { - implementation("ro.cosminmihu.ktor:ktor-monitor-logging-no-op:1.13.0") + implementation("robustrade:ktor-monitor-logging-no-op:1.13.0") } } } @@ -60,8 +80,8 @@ kotlin { ```kotlin dependencies { - debugImplementation("ro.cosminmihu.ktor:ktor-monitor-logging:1.13.0") - releaseImplementation("ro.cosminmihu.ktor:ktor-monitor-logging-no-op:1.13.0") + debugImplementation("robustrade:ktor-monitor-logging:1.13.0") + releaseImplementation("robustrade:ktor-monitor-logging-no-op:1.13.0") } ``` @@ -88,71 +108,8 @@ HttpClient { - ```retentionPeriod``` - The retention period for the logs. Default is **1h**. - ```maxContentLength``` - The maximum length of the content that will be logged. After this, body will be truncated. Default is **250_000**. To log the entire body use ```ContentLength.Full```. -## 📦 Setup (Android & JVM) for [OkHttp](https://square.github.io/okhttp/) - -### - -```kotlin -dependencies { - debugImplementation("`ro.cosminmihu.ktor:ktor-monitor-okhttp-interceptor:1.13.0") - releaseImplementation("ro.cosminmihu.ktor:ktor-monitor-okhttp-interceptor-no-op:1.13.0") -} -``` - -For ***Android minSdk < 26***, [Core Library Desugaring](https://developer.android.com/studio/write/java8-support#library-desugaring) is required. - -### Install OkHttp Interceptor - -```kotlin -OkHttpClient.Builder() - .addNetworkInterceptor( - KtorMonitorInterceptor { - sanitizeHeader { header -> header == "Authorization" } - filter { request -> !request.url.host.contains("cosminmihu.ro") } - showNotification = true - retentionPeriod = RetentionPeriod.OneHour - maxContentLength = ContentLength.Default - } - ) - .build() -``` - -- ```sanitizeHeader``` - sanitize sensitive headers to avoid their values appearing in the logs -- ```filter``` - filter logs for calls matching a predicate. -- ```showNotification``` - Keep track of latest requests and responses into notification. Default is **true**. Android and iOS only. Notifications permission needs to be granted. -- ```retentionPeriod``` - The retention period for the logs. Default is **1h**. -- ```maxContentLength``` - The maximum length of the content that will be logged. After this, body will be truncated. Default is **250_000**. To log the entire body use ```ContentLength.Full```. - -## 📦 Setup (Android & JVM) for [http4k](https://www.http4k.org/) - -### - -```kotlin -dependencies { - debugImplementation("ro.cosminmihu.ktor:ktor-monitor-http4k-filter:1.13.0") - releaseImplementation("ro.cosminmihu.ktor:ktor-monitor-http4k-filter-no-op:1.13.0") -} -``` - -For ***Android minSdk < 26***, [Core Library Desugaring](https://developer.android.com/studio/write/java8-support#library-desugaring) is required. - -### Install http4k Filter - -```kotlin -KtorMonitorFilter { - sanitizeHeader { header -> header == "Authorization" } - filter { request -> !request.uri.host.contains("cosminmihu.ro") } - showNotification = true - retentionPeriod = RetentionPeriod.OneHour - maxContentLength = ContentLength.Default -}.then(JavaHttpClient()) -``` - -- ```sanitizeHeader``` - sanitize sensitive headers to avoid their values appearing in the logs -- ```filter``` - filter logs for calls matching a predicate. -- ```showNotification``` - Keep track of latest requests and responses into notification. Default is **true**. Android only. Notifications permission needs to be granted. -- ```retentionPeriod``` - The retention period for the logs. Default is **1h**. -- ```maxContentLength``` - The maximum length of the content that will be logged. After this, body will be truncated. Default is **250_000**. To log the entire body use ```ContentLength.Full```. +> **Note:** This fork targets **Android + iOS only** for consumption by `kulu-kmp`. The upstream +> OkHttp and http4k integrations are not published here. ## 🧩 Integration diff --git a/build.gradle.kts b/build.gradle.kts index e8587e2c..7dd6a7d2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,21 +8,35 @@ plugins { alias(libs.plugins.kotlinMultiplatform) apply false alias(libs.plugins.sqldelight) apply false alias(libs.plugins.kotlinx.atomicfu) apply false - alias(libs.plugins.koin.compiler) apply false alias(libs.plugins.maven.publish) apply false alias(libs.plugins.binary.compatibility.validator) apply false alias(libs.plugins.dokka) } allprojects { - group = "ro.cosminmihu.ktor" + group = "robustrade" version = "1.13.0" } +subprojects { + plugins.withId("maven-publish") { + extensions.configure("publishing") { + repositories { + maven { + name = "GitHubPackages" + url = uri("https://maven.pkg.github.com/Robustrade/KtorMonitor") + credentials { + username = System.getenv("USERNAME") + password = System.getenv("USER_TOKEN") + } + } + } + } + } +} + dependencies { dokka(project(":ktor:library-ktor")) - dokka(project(":okhttp:library-okhttp")) - dokka(project(":http4k:library-http4k")) } dokka { diff --git a/core/library-no-op/api/jvm/library-no-op.api b/core/library-no-op/api/jvm/library-no-op.api deleted file mode 100644 index b6cf11d5..00000000 --- a/core/library-no-op/api/jvm/library-no-op.api +++ /dev/null @@ -1,32 +0,0 @@ -public final class ro/cosminmihu/ktor/monitor/ContentLength { - public static final field $stable I - public static final field Default I - public static final field Full I - public static final field INSTANCE Lro/cosminmihu/ktor/monitor/ContentLength; -} - -public final class ro/cosminmihu/ktor/monitor/KtorMonitorKt { - public static final fun KtorMonitor (Landroidx/compose/ui/Modifier;ZLandroidx/compose/runtime/Composer;II)V -} - -public final class ro/cosminmihu/ktor/monitor/KtorMonitorMenuItemKt { - public static final fun KtorMonitorMenuItem (Landroidx/compose/ui/window/MenuScope;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V -} - -public final class ro/cosminmihu/ktor/monitor/KtorMonitorPanelKt { - public static final fun getKtorMonitorPanel ()Ljavax/swing/JLayeredPane; -} - -public final class ro/cosminmihu/ktor/monitor/KtorMonitorWindowKt { - public static final fun KtorMonitorWindow (ZLkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;II)V -} - -public final class ro/cosminmihu/ktor/monitor/RetentionPeriod { - public static final field $stable I - public static final field INSTANCE Lro/cosminmihu/ktor/monitor/RetentionPeriod; - public final fun getForever-UwyO8pc ()J - public final fun getOneDay-UwyO8pc ()J - public final fun getOneHour-UwyO8pc ()J - public final fun getOneWeek-UwyO8pc ()J -} - diff --git a/core/library-no-op/api/android/library-no-op.api b/core/library-no-op/api/library-no-op.api similarity index 100% rename from core/library-no-op/api/android/library-no-op.api rename to core/library-no-op/api/library-no-op.api diff --git a/core/library-no-op/api/library-no-op.klib.api b/core/library-no-op/api/library-no-op.klib.api index a45bf62f..d845380a 100644 --- a/core/library-no-op/api/library-no-op.klib.api +++ b/core/library-no-op/api/library-no-op.klib.api @@ -1,11 +1,11 @@ // Klib ABI Dump -// Targets: [iosArm64, iosSimulatorArm64, js, wasmJs] +// Targets: [iosArm64, iosSimulatorArm64] // Rendering settings: // - Signature version: 2 // - Show manifest properties: true // - Show declarations: true -// Library unique name: +// Library unique name: final object ro.cosminmihu.ktor.monitor/ContentLength { // ro.cosminmihu.ktor.monitor/ContentLength|null[0] final const val Default // ro.cosminmihu.ktor.monitor/ContentLength.Default|{}Default[0] final fun (): kotlin/Int // ro.cosminmihu.ktor.monitor/ContentLength.Default.|(){}[0] diff --git a/core/library-no-op/build.gradle.kts b/core/library-no-op/build.gradle.kts index a4b0f4cb..04452927 100644 --- a/core/library-no-op/build.gradle.kts +++ b/core/library-no-op/build.gradle.kts @@ -1,4 +1,3 @@ -import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { @@ -19,10 +18,6 @@ apiValidation { } mavenPublishing { - publishToMavenCentral() - - signAllPublications() - val artifact = "ktor-monitor-core-no-op" coordinates(group.toString(), artifact, version.toString()) @@ -77,15 +72,6 @@ kotlin { freeCompilerArgs.add("-Xexpect-actual-classes") // TODO remove after jetbrains fix } - js { - browser() - } - - @OptIn(ExperimentalWasmDsl::class) - wasmJs { - browser() - } - androidTarget { compilerOptions { jvmTarget.set(JvmTarget.JVM_11) @@ -97,16 +83,10 @@ kotlin { iosSimulatorArm64(), ) - jvm() - sourceSets { commonMain.dependencies { implementation(compose.ui) } - webMain.dependencies { - implementation(npm("sql.js", libs.versions.sqljs.get())) - implementation(devNpm("copy-webpack-plugin", libs.versions.webpack.get())) - } } } diff --git a/core/library/api/jvm/library.api b/core/library/api/jvm/library.api deleted file mode 100644 index 2f95c106..00000000 --- a/core/library/api/jvm/library.api +++ /dev/null @@ -1,38 +0,0 @@ -public final class ro/cosminmihu/ktor/monitor/ComposableSingletons$KtorMonitorPanelKt { - public static final field INSTANCE Lro/cosminmihu/ktor/monitor/ComposableSingletons$KtorMonitorPanelKt; - public fun ()V - public final fun getLambda$-1421894391$library ()Lkotlin/jvm/functions/Function2; -} - -public final class ro/cosminmihu/ktor/monitor/ContentLength { - public static final field $stable I - public static final field Default I - public static final field Full I - public static final field INSTANCE Lro/cosminmihu/ktor/monitor/ContentLength; -} - -public final class ro/cosminmihu/ktor/monitor/KtorMonitorKt { - public static final fun KtorMonitor (Landroidx/compose/ui/Modifier;ZLandroidx/compose/runtime/Composer;II)V -} - -public final class ro/cosminmihu/ktor/monitor/KtorMonitorMenuItemKt { - public static final fun KtorMonitorMenuItem (Landroidx/compose/ui/window/MenuScope;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V -} - -public final class ro/cosminmihu/ktor/monitor/KtorMonitorPanelKt { - public static final fun getKtorMonitorPanel ()Ljavax/swing/JLayeredPane; -} - -public final class ro/cosminmihu/ktor/monitor/KtorMonitorWindowKt { - public static final fun KtorMonitorWindow (ZZLkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;II)V -} - -public final class ro/cosminmihu/ktor/monitor/RetentionPeriod { - public static final field $stable I - public static final field INSTANCE Lro/cosminmihu/ktor/monitor/RetentionPeriod; - public final fun getForever-UwyO8pc ()J - public final fun getOneDay-UwyO8pc ()J - public final fun getOneHour-UwyO8pc ()J - public final fun getOneWeek-UwyO8pc ()J -} - diff --git a/core/library/api/android/library.api b/core/library/api/library.api similarity index 100% rename from core/library/api/android/library.api rename to core/library/api/library.api diff --git a/core/library/api/library.klib.api b/core/library/api/library.klib.api index dbbff778..fe2f5664 100644 --- a/core/library/api/library.klib.api +++ b/core/library/api/library.klib.api @@ -1,12 +1,11 @@ // Klib ABI Dump -// Targets: [iosArm64, iosSimulatorArm64, js, wasmJs] -// Alias: ios => [iosArm64, iosSimulatorArm64] +// Targets: [iosArm64, iosSimulatorArm64] // Rendering settings: // - Signature version: 2 // - Show manifest properties: true // - Show declarations: true -// Library unique name: +// Library unique name: final object ro.cosminmihu.ktor.monitor/ContentLength { // ro.cosminmihu.ktor.monitor/ContentLength|null[0] final const val Default // ro.cosminmihu.ktor.monitor/ContentLength.Default|{}Default[0] final fun (): kotlin/Int // ro.cosminmihu.ktor.monitor/ContentLength.Default.|(){}[0] @@ -30,9 +29,7 @@ final val ro.cosminmihu.ktor.monitor/ro_cosminmihu_ktor_monitor_InternalLibraryB final val ro.cosminmihu.ktor.monitor/ro_cosminmihu_ktor_monitor_RetentionPeriod$stableprop // ro.cosminmihu.ktor.monitor/ro_cosminmihu_ktor_monitor_RetentionPeriod$stableprop|#static{}ro_cosminmihu_ktor_monitor_RetentionPeriod$stableprop[0] final fun ro.cosminmihu.ktor.monitor/KtorMonitor(androidx.compose.ui/Modifier?, kotlin/Boolean, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int) // ro.cosminmihu.ktor.monitor/KtorMonitor|KtorMonitor(androidx.compose.ui.Modifier?;kotlin.Boolean;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){}[0] +final fun ro.cosminmihu.ktor.monitor/KtorMonitorViewController(): platform.UIKit/UIViewController // ro.cosminmihu.ktor.monitor/KtorMonitorViewController|KtorMonitorViewController(){}[0] final fun ro.cosminmihu.ktor.monitor/ro_cosminmihu_ktor_monitor_ContentLength$stableprop_getter(): kotlin/Int // ro.cosminmihu.ktor.monitor/ro_cosminmihu_ktor_monitor_ContentLength$stableprop_getter|ro_cosminmihu_ktor_monitor_ContentLength$stableprop_getter(){}[0] final fun ro.cosminmihu.ktor.monitor/ro_cosminmihu_ktor_monitor_InternalLibraryBridge$stableprop_getter(): kotlin/Int // ro.cosminmihu.ktor.monitor/ro_cosminmihu_ktor_monitor_InternalLibraryBridge$stableprop_getter|ro_cosminmihu_ktor_monitor_InternalLibraryBridge$stableprop_getter(){}[0] final fun ro.cosminmihu.ktor.monitor/ro_cosminmihu_ktor_monitor_RetentionPeriod$stableprop_getter(): kotlin/Int // ro.cosminmihu.ktor.monitor/ro_cosminmihu_ktor_monitor_RetentionPeriod$stableprop_getter|ro_cosminmihu_ktor_monitor_RetentionPeriod$stableprop_getter(){}[0] - -// Targets: [ios] -final fun ro.cosminmihu.ktor.monitor/KtorMonitorViewController(): platform.UIKit/UIViewController // ro.cosminmihu.ktor.monitor/KtorMonitorViewController|KtorMonitorViewController(){}[0] diff --git a/core/library/build.gradle.kts b/core/library/build.gradle.kts index 9c45ff86..14fb8b8e 100644 --- a/core/library/build.gradle.kts +++ b/core/library/build.gradle.kts @@ -1,4 +1,3 @@ -import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { @@ -9,7 +8,6 @@ plugins { alias(libs.plugins.kotlinxSerialization) alias(libs.plugins.sqldelight) alias(libs.plugins.kotlinx.atomicfu) - alias(libs.plugins.koin.compiler) alias(libs.plugins.maven.publish) alias(libs.plugins.binary.compatibility.validator) alias(libs.plugins.dokka) @@ -72,10 +70,6 @@ apiValidation { } mavenPublishing { - publishToMavenCentral() - - signAllPublications() - val artifact = "ktor-monitor-core" coordinates(group.toString(), artifact, version.toString()) @@ -130,15 +124,6 @@ kotlin { freeCompilerArgs.add("-Xexpect-actual-classes") // TODO remove after jetbrains fix } - js { - browser() - } - - @OptIn(ExperimentalWasmDsl::class) - wasmJs { - browser() - } - androidTarget { compilerOptions { jvmTarget.set(JvmTarget.JVM_11) @@ -155,8 +140,6 @@ kotlin { } } - jvm() - sourceSets { androidMain.dependencies { implementation(libs.androidx.activity.compose) @@ -180,7 +163,6 @@ kotlin { implementation(libs.compose.adaptive) implementation(libs.compose.adaptive.layout) implementation(libs.compose.adaptive.navigation) - implementation(libs.navigation.event) implementation(libs.androidx.lifecycle.viewmodel) implementation(libs.androidx.lifecycle.runtime.compose) implementation(libs.sqldelight.runtime) @@ -198,19 +180,6 @@ kotlin { implementation(libs.ksoup) implementation(libs.ktor.utils) } - jvmMain.dependencies { - implementation(compose.desktop.currentOs) - implementation(libs.kotlinx.coroutines.swing) - implementation(libs.sqldelight.jvm) - implementation(libs.slf4j.simple) - } - - webMain.dependencies { - implementation(libs.sqldelight.web) - implementation(npm("sql.js", libs.versions.sqljs.get())) - implementation(npm("@cashapp/sqldelight-sqljs-worker", libs.versions.sqldelight.get())) - implementation(devNpm("copy-webpack-plugin", libs.versions.webpack.get())) - } } jvmToolchain { diff --git a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/di/Modules.kt b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/di/Modules.kt index 68605149..47aefae3 100644 --- a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/di/Modules.kt +++ b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/di/Modules.kt @@ -3,11 +3,10 @@ package ro.cosminmihu.ktor.monitor.di import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.SupervisorJob +import org.koin.core.module.dsl.factoryOf +import org.koin.core.module.dsl.singleOf +import org.koin.core.module.dsl.viewModelOf import org.koin.dsl.module -import org.koin.plugin.module.dsl.create -import org.koin.plugin.module.dsl.factory -import org.koin.plugin.module.dsl.single -import org.koin.plugin.module.dsl.viewModel import ro.cosminmihu.ktor.monitor.core.ClipboardManager import ro.cosminmihu.ktor.monitor.core.ShareManager import ro.cosminmihu.ktor.monitor.db.LibraryDao @@ -37,9 +36,13 @@ internal fun libraryModule() = listOf( ) internal val databaseModule = module { - factory { create(::createDatabaseDriver) } - single { create(::createDatabase) } - factory() + factory { + createDatabaseDriver() + } + single { + createDatabase(get()) + } + factoryOf(::LibraryDao) } internal val coroutineModule = module { @@ -49,30 +52,30 @@ internal val coroutineModule = module { } internal val notificationModule = module { - factory() + factoryOf(::NotificationManager) } internal val viewModelModule = module { - viewModel() - viewModel() - viewModel() + viewModelOf(::MainViewModel) + viewModelOf(::ListViewModel) + viewModelOf(::DetailViewModel) } internal val domainModule = module { - single() + singleOf(::ConfigUseCase) - single() - factory() + singleOf(::ListenByRecentCallsUseCase) + factoryOf(::RetentionUseCase) - factory() - factory() - factory() + factoryOf(::GetCallsUseCase) + factoryOf(::GetCallUseCase) + factoryOf(::DeleteCallsUseCase) - factory() - factory() + factoryOf(::ClipboardManager) + factoryOf(::ShareManager) - factory() - factory() - factory() - factory() -} \ No newline at end of file + factoryOf(::ExportCallUrlUseCase) + factoryOf(::ExportCallRequestAsCurlUseCase) + factoryOf(::ExportCallRequestAsWgetUseCase) + factoryOf(::ExportCallAsTextUseCase) +} diff --git a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/domain/model/Units.kt b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/domain/model/Units.kt index 2a5e951b..8b961a74 100644 --- a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/domain/model/Units.kt +++ b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/domain/model/Units.kt @@ -1,5 +1,6 @@ package ro.cosminmihu.ktor.monitor.domain.model +import kotlinx.datetime.Instant import kotlinx.datetime.LocalDateTime import kotlinx.datetime.TimeZone import kotlinx.datetime.format @@ -12,10 +13,7 @@ import kotlinx.datetime.toLocalDateTime import kotlin.math.log import kotlin.math.pow import kotlin.math.round -import kotlin.time.ExperimentalTime -import kotlin.time.Instant -@OptIn(ExperimentalTime::class) internal fun Long.formatTime() = Instant.fromEpochMilliseconds(this) .toLocalDateTime(TimeZone.currentSystemDefault()) .format( @@ -25,14 +23,13 @@ internal fun Long.formatTime() = Instant.fromEpochMilliseconds(this) } ) -@OptIn(ExperimentalTime::class) internal fun Long.formatDateTimeTime() = Instant.fromEpochMilliseconds(this) .format( DateTimeComponents.Format { dayOfWeek(DayOfWeekNames.ENGLISH_ABBREVIATED) char(',') char(' ') - year(); char(' '); monthName(MonthNames.ENGLISH_ABBREVIATED); char(' '); day() + year(); char(' '); monthName(MonthNames.ENGLISH_ABBREVIATED); char(' '); dayOfMonth() char(' ') hour(); char(':'); minute(); char(':'); second() optional { char('.'); secondFraction() } diff --git a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/Loading.kt b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/Loading.kt index 3bdddc6a..ede1a77c 100644 --- a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/Loading.kt +++ b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/Loading.kt @@ -18,7 +18,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.rotate import androidx.compose.ui.text.font.FontStyle import org.jetbrains.compose.resources.stringResource -import androidx.compose.ui.tooling.preview.Preview +import org.jetbrains.compose.ui.tooling.preview.Preview import ro.cosminmihu.ktor.monitor.ui.resources.Res import ro.cosminmihu.ktor.monitor.ui.resources.ktor_in_progress import ro.cosminmihu.ktor.monitor.ui.theme.LibraryTheme diff --git a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/detail/SummaryScreen.kt b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/detail/SummaryScreen.kt index 3d77ab7f..6d3873db 100644 --- a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/detail/SummaryScreen.kt +++ b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/detail/SummaryScreen.kt @@ -36,10 +36,9 @@ import ro.cosminmihu.ktor.monitor.ui.resources.ktor_summary_response_time import ro.cosminmihu.ktor.monitor.ui.resources.ktor_summary_status import ro.cosminmihu.ktor.monitor.ui.resources.ktor_summary_total_size import ro.cosminmihu.ktor.monitor.ui.resources.ktor_summary_url -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.tooling.preview.PreviewParameter -import androidx.compose.ui.tooling.preview.datasource.LoremIpsum -import ro.cosminmihu.ktor.monitor.ui.preview.UI_MODE_NIGHT_YES +import org.jetbrains.compose.ui.tooling.preview.Preview +import org.jetbrains.compose.ui.tooling.preview.PreviewParameter +import ro.cosminmihu.ktor.monitor.ui.preview.LoremIpsum import ro.cosminmihu.ktor.monitor.ui.theme.LibraryTheme @Composable @@ -210,8 +209,7 @@ private fun String.toSlug(): String = take(24) .trim('-') .ifEmpty { "users" } -@Preview(name = "Light") -@Preview(name = "Dark", uiMode = UI_MODE_NIGHT_YES) +@Preview @Composable private fun SummaryScreenPreview( @PreviewParameter(LoremIpsum::class) lorem: String, @@ -221,8 +219,7 @@ private fun SummaryScreenPreview( } } -@Preview(name = "Light") -@Preview(name = "Dark", uiMode = UI_MODE_NIGHT_YES) +@Preview @Composable private fun SummaryScreenLoadingPreview( @PreviewParameter(LoremIpsum::class) lorem: String, @@ -232,8 +229,7 @@ private fun SummaryScreenLoadingPreview( } } -@Preview(name = "Light") -@Preview(name = "Dark", uiMode = UI_MODE_NIGHT_YES) +@Preview @Composable private fun SummaryScreenErrorPreview( @PreviewParameter(LoremIpsum::class) lorem: String, @@ -243,8 +239,7 @@ private fun SummaryScreenErrorPreview( } } -@Preview(name = "Light") -@Preview(name = "Dark", uiMode = UI_MODE_NIGHT_YES) +@Preview @Composable private fun SummaryScreenHttpErrorPreview( @PreviewParameter(LoremIpsum::class) lorem: String, diff --git a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/detail/body/Body.kt b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/detail/body/Body.kt index c45ee969..c5e969ca 100644 --- a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/detail/body/Body.kt +++ b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/detail/body/Body.kt @@ -13,9 +13,9 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Modifier -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.tooling.preview.PreviewParameter -import androidx.compose.ui.tooling.preview.datasource.LoremIpsum +import org.jetbrains.compose.ui.tooling.preview.Preview +import org.jetbrains.compose.ui.tooling.preview.PreviewParameter +import ro.cosminmihu.ktor.monitor.ui.preview.LoremIpsum import coil3.ImageLoader import coil3.compose.AsyncImage import coil3.compose.LocalPlatformContext @@ -40,7 +40,6 @@ import ro.cosminmihu.ktor.monitor.ui.detail.hasCopyableContent import ro.cosminmihu.ktor.monitor.ui.detail.hasPreview import ro.cosminmihu.ktor.monitor.ui.detail.noBody import ro.cosminmihu.ktor.monitor.ui.detail.transaction.TransactionSection -import ro.cosminmihu.ktor.monitor.ui.preview.UI_MODE_NIGHT_YES import ro.cosminmihu.ktor.monitor.ui.resources.Res import ro.cosminmihu.ktor.monitor.ui.resources.ktor_body import ro.cosminmihu.ktor.monitor.ui.theme.LibraryTheme @@ -175,8 +174,7 @@ internal fun Body( } } -@Preview(name = "Light") -@Preview(name = "Dark", uiMode = UI_MODE_NIGHT_YES) +@Preview @Composable private fun BodyPreview( @PreviewParameter(LoremIpsum::class) lorem: String, @@ -197,8 +195,7 @@ private fun BodyPreview( } } -@Preview(name = "Light") -@Preview(name = "Dark", uiMode = UI_MODE_NIGHT_YES) +@Preview @Composable private fun BodyJsonPreview( @PreviewParameter(LoremIpsum::class) lorem: String, @@ -220,8 +217,7 @@ private fun BodyJsonPreview( } } -@Preview(name = "Light") -@Preview(name = "Dark", uiMode = UI_MODE_NIGHT_YES) +@Preview @Composable private fun BodyEmptyPreview() { LibraryTheme { diff --git a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/detail/body/DisplayMode.kt b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/detail/body/DisplayMode.kt index d96ea17c..ae4ee9d4 100644 --- a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/detail/body/DisplayMode.kt +++ b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/detail/body/DisplayMode.kt @@ -1,23 +1,16 @@ package ro.cosminmihu.ktor.monitor.ui.detail.body -import androidx.compose.foundation.horizontalScroll -import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.rememberScrollState -import androidx.compose.material3.ButtonGroupDefaults -import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.SegmentedButton +import androidx.compose.material3.SegmentedButtonDefaults +import androidx.compose.material3.SingleChoiceSegmentedButtonRow import androidx.compose.material3.Text -import androidx.compose.material3.ToggleButton import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.semantics.Role -import androidx.compose.ui.semantics.role -import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.text.font.FontWeight import org.jetbrains.compose.resources.stringResource @@ -29,15 +22,13 @@ import ro.cosminmihu.ktor.monitor.ui.resources.ktor_response_view_binary import ro.cosminmihu.ktor.monitor.ui.resources.ktor_response_view_code import ro.cosminmihu.ktor.monitor.ui.resources.ktor_response_view_preview import ro.cosminmihu.ktor.monitor.ui.resources.ktor_response_view_raw -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.tooling.preview.PreviewParameter -import androidx.compose.ui.tooling.preview.datasource.LoremIpsum +import org.jetbrains.compose.ui.tooling.preview.Preview +import org.jetbrains.compose.ui.tooling.preview.PreviewParameter +import ro.cosminmihu.ktor.monitor.ui.preview.LoremIpsum import ro.cosminmihu.ktor.monitor.ui.detail.DisplayMode import ro.cosminmihu.ktor.monitor.ui.detail.hasPreview -import ro.cosminmihu.ktor.monitor.ui.preview.UI_MODE_NIGHT_YES import ro.cosminmihu.ktor.monitor.ui.theme.LibraryTheme -@OptIn(ExperimentalMaterial3ExpressiveApi::class) @Composable internal fun DisplayModeSelector( body: DetailUiState.Body, @@ -101,23 +92,19 @@ internal fun DisplayModeSelector( ) } - FlowRow( + SingleChoiceSegmentedButtonRow( modifier = Modifier - .horizontalScroll(rememberScrollState()) .align(Alignment.CenterEnd) .padding(horizontal = Dimens.Small), - horizontalArrangement = Arrangement.spacedBy(ButtonGroupDefaults.ConnectedSpaceBetween), ) { segmentedButtons.forEachIndexed { index, item -> - ToggleButton( - checked = item.selected, - onCheckedChange = { if (it) item.onClick() }, - shapes = when (index) { - 0 -> ButtonGroupDefaults.connectedLeadingButtonShapes() - segmentedButtons.lastIndex -> ButtonGroupDefaults.connectedTrailingButtonShapes() - else -> ButtonGroupDefaults.connectedMiddleButtonShapes() - }, - modifier = Modifier.semantics { role = Role.RadioButton }, + SegmentedButton( + selected = item.selected, + onClick = item.onClick, + shape = SegmentedButtonDefaults.itemShape( + index = index, + count = segmentedButtons.size, + ), ) { Text(text = item.text, fontWeight = FontWeight.Bold) } @@ -133,8 +120,7 @@ private data class BodyShowTypeSegment( ) -@Preview(name = "Light") -@Preview(name = "Dark", uiMode = UI_MODE_NIGHT_YES) +@Preview @Composable private fun DisplayModeSelectorPreview( @PreviewParameter(LoremIpsum::class) lorem: String, @@ -156,8 +142,7 @@ private fun DisplayModeSelectorPreview( } } -@Preview(name = "Light") -@Preview(name = "Dark", uiMode = UI_MODE_NIGHT_YES) +@Preview @Composable private fun DisplayModeSelectorTrimmedPreview( @PreviewParameter(LoremIpsum::class) lorem: String, diff --git a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/detail/body/NoBody.kt b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/detail/body/NoBody.kt index c5e92f6a..217f38e1 100644 --- a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/detail/body/NoBody.kt +++ b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/detail/body/NoBody.kt @@ -10,8 +10,7 @@ import org.jetbrains.compose.resources.stringResource import ro.cosminmihu.ktor.monitor.ui.Dimens import ro.cosminmihu.ktor.monitor.ui.resources.Res import ro.cosminmihu.ktor.monitor.ui.resources.ktor_no_body -import androidx.compose.ui.tooling.preview.Preview -import ro.cosminmihu.ktor.monitor.ui.preview.UI_MODE_NIGHT_YES +import org.jetbrains.compose.ui.tooling.preview.Preview import ro.cosminmihu.ktor.monitor.ui.theme.LibraryTheme @Composable @@ -27,8 +26,7 @@ internal fun NoBody() { ) } -@Preview(name = "Light") -@Preview(name = "Dark", uiMode = UI_MODE_NIGHT_YES) +@Preview @Composable private fun NoBodyPreview() { LibraryTheme { diff --git a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/detail/headers/Headers.kt b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/detail/headers/Headers.kt index 36197854..3ee6e8a2 100644 --- a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/detail/headers/Headers.kt +++ b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/detail/headers/Headers.kt @@ -13,10 +13,9 @@ import org.jetbrains.compose.resources.stringResource import ro.cosminmihu.ktor.monitor.ui.detail.transaction.TransactionSection import ro.cosminmihu.ktor.monitor.ui.resources.Res import ro.cosminmihu.ktor.monitor.ui.resources.ktor_headers -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.tooling.preview.PreviewParameter -import androidx.compose.ui.tooling.preview.datasource.LoremIpsum -import ro.cosminmihu.ktor.monitor.ui.preview.UI_MODE_NIGHT_YES +import org.jetbrains.compose.ui.tooling.preview.Preview +import org.jetbrains.compose.ui.tooling.preview.PreviewParameter +import ro.cosminmihu.ktor.monitor.ui.preview.LoremIpsum import ro.cosminmihu.ktor.monitor.ui.theme.LibraryTheme @Composable @@ -58,8 +57,7 @@ internal fun Headers(headers: Map>) { } } -@Preview(name = "Light") -@Preview(name = "Dark", uiMode = UI_MODE_NIGHT_YES) +@Preview @Composable private fun HeadersPreview( @PreviewParameter(LoremIpsum::class) lorem: String, @@ -77,8 +75,7 @@ private fun HeadersPreview( } } -@Preview(name = "Light") -@Preview(name = "Dark", uiMode = UI_MODE_NIGHT_YES) +@Preview @Composable private fun HeadersEmptyPreview() { LibraryTheme { diff --git a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/detail/headers/NoHeaders.kt b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/detail/headers/NoHeaders.kt index ee12cf50..c3cf20cf 100644 --- a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/detail/headers/NoHeaders.kt +++ b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/detail/headers/NoHeaders.kt @@ -10,8 +10,7 @@ import org.jetbrains.compose.resources.stringResource import ro.cosminmihu.ktor.monitor.ui.Dimens import ro.cosminmihu.ktor.monitor.ui.resources.Res import ro.cosminmihu.ktor.monitor.ui.resources.ktor_no_headers -import androidx.compose.ui.tooling.preview.Preview -import ro.cosminmihu.ktor.monitor.ui.preview.UI_MODE_NIGHT_YES +import org.jetbrains.compose.ui.tooling.preview.Preview import ro.cosminmihu.ktor.monitor.ui.theme.LibraryTheme @Composable @@ -27,8 +26,7 @@ internal fun NoHeaders() { ) } -@Preview(name = "Light") -@Preview(name = "Dark", uiMode = UI_MODE_NIGHT_YES) +@Preview @Composable private fun NoHeadersPreview() { LibraryTheme { diff --git a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/detail/transaction/Transaction.kt b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/detail/transaction/Transaction.kt index c2994022..611c5da0 100644 --- a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/detail/transaction/Transaction.kt +++ b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/detail/transaction/Transaction.kt @@ -8,7 +8,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier -import androidx.compose.ui.tooling.preview.Preview +import org.jetbrains.compose.ui.tooling.preview.Preview import ro.cosminmihu.ktor.monitor.ui.Dimens import ro.cosminmihu.ktor.monitor.ui.Loading import ro.cosminmihu.ktor.monitor.ui.detail.DetailUiState diff --git a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/list/ListEmptyState.kt b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/list/ListEmptyState.kt index dadc2ef9..f1b37af4 100644 --- a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/list/ListEmptyState.kt +++ b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/list/ListEmptyState.kt @@ -18,8 +18,7 @@ import org.jetbrains.compose.resources.stringResource import ro.cosminmihu.ktor.monitor.ui.Dimens import ro.cosminmihu.ktor.monitor.ui.resources.Res import ro.cosminmihu.ktor.monitor.ui.resources.ktor_list_empty -import androidx.compose.ui.tooling.preview.Preview -import ro.cosminmihu.ktor.monitor.ui.preview.UI_MODE_NIGHT_YES +import org.jetbrains.compose.ui.tooling.preview.Preview import ro.cosminmihu.ktor.monitor.ui.theme.LibraryTheme @Composable @@ -47,8 +46,7 @@ internal fun ListEmptyState(modifier: Modifier = Modifier) { } } -@Preview(name = "Light") -@Preview(name = "Dark", uiMode = UI_MODE_NIGHT_YES) +@Preview @Composable private fun ListEmptyStatePreview() { LibraryTheme { diff --git a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/list/ListItem.kt b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/list/ListItem.kt index 7baa2936..f8c5af15 100644 --- a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/list/ListItem.kt +++ b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/list/ListItem.kt @@ -25,7 +25,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign -import androidx.compose.ui.tooling.preview.Preview +import org.jetbrains.compose.ui.tooling.preview.Preview import org.jetbrains.compose.resources.stringResource import ro.cosminmihu.ktor.monitor.domain.model.ContentType import ro.cosminmihu.ktor.monitor.domain.model.asColor diff --git a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/list/ListScreen.kt b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/list/ListScreen.kt index ca43c0cf..41c331bb 100644 --- a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/list/ListScreen.kt +++ b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/list/ListScreen.kt @@ -45,7 +45,7 @@ import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow -import androidx.compose.ui.tooling.preview.Preview +import org.jetbrains.compose.ui.tooling.preview.Preview import org.jetbrains.compose.resources.stringResource import org.jetbrains.compose.resources.vectorResource import ro.cosminmihu.ktor.monitor.core.URL @@ -89,14 +89,6 @@ internal fun ListScreen( var showSearchBar by rememberSaveable { mutableStateOf(false) } val searchFocusRequester = remember { FocusRequester() } - LaunchedEffect(showSearchBar) { - if (showSearchBar) { - searchFocusRequester.requestFocus() - } else { - searchFocusRequester.freeFocus() - } - } - Scaffold( modifier = modifier, topBar = { @@ -194,6 +186,16 @@ internal fun ListScreen( ) AnimatedVisibility(visible = showSearchBar) { + LaunchedEffect(Unit) { + // Yield coroutine execution to allow a layout pass to attach the FocusRequester + kotlinx.coroutines.yield() + try { + searchFocusRequester.requestFocus() + } catch (_: IllegalStateException) { + // Defensive block to catch edge-case layout delays + } + } + Surface { Column { SearchField( diff --git a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/list/SearchField.kt b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/list/SearchField.kt index c4269698..63692f96 100644 --- a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/list/SearchField.kt +++ b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/list/SearchField.kt @@ -20,7 +20,7 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource -import androidx.compose.ui.tooling.preview.Preview +import org.jetbrains.compose.ui.tooling.preview.Preview import ro.cosminmihu.ktor.monitor.ui.Dimens import ro.cosminmihu.ktor.monitor.ui.resources.Res import ro.cosminmihu.ktor.monitor.ui.resources.ktor_close diff --git a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/main/MainContent.kt b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/main/MainContent.kt index 018f9ec9..dafa549d 100644 --- a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/main/MainContent.kt +++ b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/main/MainContent.kt @@ -1,24 +1,15 @@ package ro.cosminmihu.ktor.monitor.ui.main -import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.material3.LocalMinimumInteractiveComponentSize import androidx.compose.material3.Surface -import androidx.compose.material3.VerticalDragHandle import androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi import androidx.compose.material3.adaptive.layout.AnimatedPane import androidx.compose.material3.adaptive.layout.ListDetailPaneScaffold import androidx.compose.material3.adaptive.layout.ListDetailPaneScaffoldRole -import androidx.compose.material3.adaptive.layout.PaneExpansionAnchor -import androidx.compose.material3.adaptive.layout.rememberPaneExpansionState import androidx.compose.material3.adaptive.navigation.rememberListDetailPaneScaffoldNavigator import androidx.compose.runtime.Composable -import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Modifier -import androidx.navigationevent.NavigationEventInfo -import androidx.navigationevent.compose.NavigationEventHandler -import androidx.navigationevent.compose.rememberNavigationEventState import kotlinx.coroutines.launch import ro.cosminmihu.ktor.monitor.ui.detail.DetailRoute import ro.cosminmihu.ktor.monitor.ui.list.ListRoute @@ -29,16 +20,6 @@ internal fun MainContent(modifier: Modifier = Modifier) { val coroutineScope = rememberCoroutineScope() val navigator = rememberListDetailPaneScaffoldNavigator() - NavigationEventHandler( - state = rememberNavigationEventState(NavigationEventInfo.None), - isBackEnabled = navigator.canNavigateBack(), - onBackCompleted = { - coroutineScope.launch { - navigator.navigateBack() - } - } - ) - Surface(modifier = modifier) { ListDetailPaneScaffold( modifier = Modifier.fillMaxSize(), @@ -73,32 +54,6 @@ internal fun MainContent(modifier: Modifier = Modifier) { ) } }, - paneExpansionState = rememberPaneExpansionState( - keyProvider = navigator.scaffoldValue, - anchors = listOf( - PaneExpansionAnchor.Proportion(0.25f), - PaneExpansionAnchor.Proportion(0.3f), - PaneExpansionAnchor.Proportion(0.35f), - PaneExpansionAnchor.Proportion(0.4f), - PaneExpansionAnchor.Proportion(0.45f), - PaneExpansionAnchor.Proportion(0.5f), - PaneExpansionAnchor.Proportion(0.55f), - PaneExpansionAnchor.Proportion(0.6f), - PaneExpansionAnchor.Proportion(0.65f), - PaneExpansionAnchor.Proportion(0.7f), - ) - ), - paneExpansionDragHandle = { state -> - val interactionSource = remember { MutableInteractionSource() } - VerticalDragHandle( - modifier = Modifier.paneExpansionDraggable( - state = state, - minTouchTargetSize = LocalMinimumInteractiveComponentSize.current, - interactionSource = interactionSource, - ), - interactionSource = interactionSource - ) - } ) } } \ No newline at end of file diff --git a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/main/MainInactiveState.kt b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/main/MainInactiveState.kt index e602bbed..cc134ab6 100644 --- a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/main/MainInactiveState.kt +++ b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/main/MainInactiveState.kt @@ -14,10 +14,9 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics -import androidx.compose.ui.tooling.preview.Preview +import org.jetbrains.compose.ui.tooling.preview.Preview import org.jetbrains.compose.resources.stringResource import ro.cosminmihu.ktor.monitor.ui.Dimens -import ro.cosminmihu.ktor.monitor.ui.preview.UI_MODE_NIGHT_YES import ro.cosminmihu.ktor.monitor.ui.resources.Res import ro.cosminmihu.ktor.monitor.ui.resources.ktor_library_disabled import ro.cosminmihu.ktor.monitor.ui.theme.LibraryTheme @@ -47,8 +46,7 @@ internal fun MainInactiveState(modifier: Modifier = Modifier) { } } -@Preview(name = "Light") -@Preview(name = "Dark", uiMode = UI_MODE_NIGHT_YES) +@Preview @Composable private fun MainInactiveStatePreview() { LibraryTheme { diff --git a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/preview/LoremIpsum.kt b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/preview/LoremIpsum.kt new file mode 100644 index 00000000..02abfc91 --- /dev/null +++ b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/preview/LoremIpsum.kt @@ -0,0 +1,20 @@ +package ro.cosminmihu.ktor.monitor.ui.preview + +import org.jetbrains.compose.ui.tooling.preview.PreviewParameterProvider + +/** + * Common-source replacement for `androidx.compose.ui.tooling.preview.datasource.LoremIpsum`, + * which only ships on Android. Supplies a fixed placeholder string to `@PreviewParameter` + * so the detail previews render in `commonMain` on Compose Multiplatform 1.8.x. + */ +internal class LoremIpsum : PreviewParameterProvider { + override val values: Sequence = sequenceOf(LOREM_IPSUM) +} + +private const val LOREM_IPSUM = + "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor " + + "incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis " + + "nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. " + + "Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu " + + "fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in " + + "culpa qui officia deserunt mollit anim id est laborum." diff --git a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/preview/PreviewUiModes.kt b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/preview/PreviewUiModes.kt deleted file mode 100644 index 29db95da..00000000 --- a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/preview/PreviewUiModes.kt +++ /dev/null @@ -1,10 +0,0 @@ -package ro.cosminmihu.ktor.monitor.ui.preview - -/** - * `Configuration.UI_MODE_NIGHT_YES or Configuration.UI_MODE_TYPE_NORMAL`. - * - * Hard-coded so it can live in `commonMain` (the `android.content.res.Configuration` - * constants are only available on Android). Used by `@Preview(uiMode = …)` to render - * a composable in dark mode. - */ -internal const val UI_MODE_NIGHT_YES: Int = 0x21 \ No newline at end of file diff --git a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/theme/Colors.kt b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/theme/Colors.kt index 3fe3cc27..b9e85e18 100644 --- a/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/theme/Colors.kt +++ b/core/library/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/ui/theme/Colors.kt @@ -75,18 +75,6 @@ internal val lightColorScheme = lightColorScheme( surfaceContainerLow = GraySurfaceContainerLow, surfaceContainerLowest = GraySurfaceContainerLowest, surfaceDim = GraySurfaceDim, - primaryFixed = GrayDark, - primaryFixedDim = GrayMedium, - onPrimaryFixed = Color.White, - onPrimaryFixedVariant = GrayLight, - secondaryFixed = GrayMedium, - secondaryFixedDim = GrayDark, - onSecondaryFixed = Color.White, - onSecondaryFixedVariant = GrayLight, - tertiaryFixed = GrayMedium, - tertiaryFixedDim = GrayDark, - onTertiaryFixed = Color.White, - onTertiaryFixedVariant = GrayLight, ) internal val darkColorScheme = darkColorScheme( @@ -122,16 +110,4 @@ internal val darkColorScheme = darkColorScheme( surfaceContainerLow = DarkSurfaceContainerLow, surfaceContainerLowest = DarkSurfaceContainerLowest, surfaceDim = DarkSurfaceDim, - primaryFixed = DarkAccent, - primaryFixedDim = DarkSurfaceVariant, - onPrimaryFixed = DarkBackground, - onPrimaryFixedVariant = DarkText, - secondaryFixed = DarkAccent, - secondaryFixedDim = DarkSurfaceVariant, - onSecondaryFixed = DarkBackground, - onSecondaryFixedVariant = DarkText, - tertiaryFixed = DarkAccent, - tertiaryFixedDim = DarkSurfaceVariant, - onTertiaryFixed = DarkBackground, - onTertiaryFixedVariant = DarkText, ) \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index ec5425eb..649f8360 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,6 +8,5 @@ org.gradle.jvmargs=-Xmx4096M -Dfile.encoding=UTF-8 #Android android.useAndroidX=true -# TODO-libs remove -android.builtInKotlin=false -android.newDsl=false \ No newline at end of file +#Compose (the wasm/js canvas target is opt-in on Compose Multiplatform 1.8.x) +org.jetbrains.compose.experimental.jscanvas.enabled=true \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4df27272..b6e5c298 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,38 +1,41 @@ [versions] -agp = "9.2.1" -android-compileSdk = "36" -android-minSdk = "24" -android-targetSdk = "36" -androidx-activityCompose = "1.13.0" -androidx-core-ktx = "1.18.0" -androidx-espresso-core = "3.7.0" -androidx-lifecycle = "2.10.0" -androidx-test-junit = "1.3.0" +# Toolchain pinned to match kulu-kmp (the consumer) so the published +# robustrade:ktor-monitor-* artifacts are consumable by kulu-kmp and the android app. +# DO NOT bump kotlin / compose-multiplatform above kulu-kmp's versions (Kotlin 2.2.0 / Compose 1.8.2): +# a KMP library must be built with Kotlin <= its consumer, or klib metadata can't be read. +agp = "8.10.0" +android-compileSdk = "35" +android-minSdk = "21" +android-targetSdk = "35" +androidx-activityCompose = "1.9.3" +androidx-core-ktx = "1.15.0" +androidx-espresso-core = "3.6.1" +androidx-lifecycle = "2.9.0" +androidx-test-junit = "1.2.1" accompanist = "0.37.3" -compose-adaptive = "1.2.0" -compose-multiplatform = "1.11.0" +compose-adaptive = "1.1.2" +compose-multiplatform = "1.8.2" desugar = "2.1.5" junit = "4.13.2" -kotlin = "2.3.21" -kotlinx-coroutines = "1.11.0" -ksoup = "0.2.6" -ktor = "3.5.0" +kotlin = "2.2.0" +kotlinx-coroutines = "1.10.2" +ksoup = "0.2.5" +ktor = "3.0.1" okhttp = "5.3.2" http4k = "6.48.0.0" -material3AdaptiveNavigationSuite = "1.9.0" +material3AdaptiveNavigationSuite = "1.8.2" materialIconsExtended = "1.7.3" -material3 = "1.11.0-alpha07" +material3 = "1.8.2" slf4j = "2.0.18" -sqldelight = "2.3.2" +sqldelight = "2.2.1" sqljs = "1.11.0" webpack = "9.1.0" -koin = "4.2.1" -koin-plugin = "1.0.0" -kotlinx-datetime = "0.8.0" -kotlinx-serialization = "1.11.0" -coil = "3.4.0" -kotlin-atomicfu = "0.32.1" -maven-publish = "0.36.0" +koin = "4.0.0" +kotlinx-datetime = "0.6.0" +kotlinx-serialization = "1.9.0" +coil = "3.0.4" +kotlin-atomicfu = "0.29.0" +maven-publish = "0.34.0" navigation-event = "1.1.0" binary-compatibility-validator = "0.18.1" dokka = "2.2.0" @@ -60,7 +63,7 @@ compose-material3 = { module = "org.jetbrains.compose.material3:material3", vers compose-material3-adaptive-navigation-suite = { module = "org.jetbrains.compose.material3:material3-adaptive-navigation-suite", version.ref = "material3AdaptiveNavigationSuite" } compose-ui = { module = "org.jetbrains.compose.ui:ui", version.ref = "compose-multiplatform" } navigation-event = { module = "org.jetbrains.androidx.navigationevent:navigationevent-compose", version.ref = "navigation-event" } -compose-ui-tooling-preview = { module = "org.jetbrains.compose.ui:ui-tooling-preview", version.ref = "compose-multiplatform" } +compose-ui-tooling-preview = { module = "org.jetbrains.compose.components:components-ui-tooling-preview", version.ref = "compose-multiplatform" } kotlinx-coroutines-swing = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-swing", version.ref = "kotlinx-coroutines" } ksoup = { module = "com.fleeksoft.ksoup:ksoup", version.ref = "ksoup" } okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" } @@ -104,7 +107,6 @@ composeMultiplatform = { id = "org.jetbrains.compose", version.ref = "compose-mu composeCompiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } kotlinMultiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } kotlinxSerialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } -koin-compiler = { id = "io.insert-koin.compiler.plugin", version.ref = "koin-plugin" } sqldelight = { id = "app.cash.sqldelight", version.ref = "sqldelight" } kotlinx-atomicfu = { id = "org.jetbrains.kotlinx.atomicfu", version.ref = "kotlin-atomicfu" } maven-publish = { id = "com.vanniktech.maven.publish", version.ref = "maven-publish" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 5c01b664..1a391361 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ #Sat Jan 25 18:49:14 EET 2025 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/http4k/library-http4k-no-op/api/android/library-http4k-no-op.api b/http4k/library-http4k-no-op/api/android/library-http4k-no-op.api deleted file mode 100644 index 310106c1..00000000 --- a/http4k/library-http4k-no-op/api/android/library-http4k-no-op.api +++ /dev/null @@ -1,22 +0,0 @@ -public final class ro/cosminmihu/ktor/monitor/KtorMonitorFilter : org/http4k/core/Filter { - public fun ()V - public fun (Lkotlin/jvm/functions/Function1;)V - public synthetic fun invoke (Ljava/lang/Object;)Ljava/lang/Object; - public fun invoke (Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function1; -} - -public final class ro/cosminmihu/ktor/monitor/KtorMonitorFilterConfig { - public fun ()V - public final fun filter (Lkotlin/jvm/functions/Function1;)V - public final fun getMaxContentLength ()I - public final fun getRetentionPeriod-UwyO8pc ()J - public final fun getShowNotification ()Z - public final fun isActive ()Z - public final fun sanitizeHeader (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V - public static synthetic fun sanitizeHeader$default (Lro/cosminmihu/ktor/monitor/KtorMonitorFilterConfig;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V - public final fun setActive (Z)V - public final fun setMaxContentLength (I)V - public final fun setRetentionPeriod-LRDsOJo (J)V - public final fun setShowNotification (Z)V -} - diff --git a/http4k/library-http4k-no-op/api/jvm/library-http4k-no-op.api b/http4k/library-http4k-no-op/api/jvm/library-http4k-no-op.api deleted file mode 100644 index 310106c1..00000000 --- a/http4k/library-http4k-no-op/api/jvm/library-http4k-no-op.api +++ /dev/null @@ -1,22 +0,0 @@ -public final class ro/cosminmihu/ktor/monitor/KtorMonitorFilter : org/http4k/core/Filter { - public fun ()V - public fun (Lkotlin/jvm/functions/Function1;)V - public synthetic fun invoke (Ljava/lang/Object;)Ljava/lang/Object; - public fun invoke (Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function1; -} - -public final class ro/cosminmihu/ktor/monitor/KtorMonitorFilterConfig { - public fun ()V - public final fun filter (Lkotlin/jvm/functions/Function1;)V - public final fun getMaxContentLength ()I - public final fun getRetentionPeriod-UwyO8pc ()J - public final fun getShowNotification ()Z - public final fun isActive ()Z - public final fun sanitizeHeader (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V - public static synthetic fun sanitizeHeader$default (Lro/cosminmihu/ktor/monitor/KtorMonitorFilterConfig;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V - public final fun setActive (Z)V - public final fun setMaxContentLength (I)V - public final fun setRetentionPeriod-LRDsOJo (J)V - public final fun setShowNotification (Z)V -} - diff --git a/http4k/library-http4k-no-op/api/library-http4k-no-op.klib.api b/http4k/library-http4k-no-op/api/library-http4k-no-op.klib.api deleted file mode 100644 index e69de29b..00000000 diff --git a/http4k/library-http4k-no-op/build.gradle.kts b/http4k/library-http4k-no-op/build.gradle.kts deleted file mode 100644 index 98360ccb..00000000 --- a/http4k/library-http4k-no-op/build.gradle.kts +++ /dev/null @@ -1,106 +0,0 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget - -plugins { - alias(libs.plugins.kotlinMultiplatform) - alias(libs.plugins.androidLibrary) - alias(libs.plugins.maven.publish) - alias(libs.plugins.binary.compatibility.validator) -} - -mavenPublishing { - publishToMavenCentral() - - signAllPublications() - - val artifact = "ktor-monitor-http4k-filter-no-op" - coordinates(group.toString(), artifact, version.toString()) - - pom { - name.set("Ktor Monitor - http4k Filter (No-Op)") - description.set("""No-op implementation of the http4k Filter for Ktor Monitor.""".trimMargin()) - inceptionYear.set("2026") - url.set("https://github.com/CosminMihuMDC/KtorMonitor") - - licenses { - license { - name = "The Apache Software License, Version 2.0" - url = "https://www.apache.org/licenses/LICENSE-2.0.txt" - distribution = "https://www.apache.org/licenses/LICENSE-2.0.txt" - } - } - - developers { - developer { - id = "Cosmin Mihu" - name = "Cosmin Mihu" - url = "https://www.cosminmihu.ro/" - } - } - - scm { - url = "https://github.com/CosminMihuMDC/KtorMonitor.git" - connection = "scm:git:git://github.com/CosminMihuMDC/KtorMonitor.git" - developerConnection = "scm:git:git://github.com/CosminMihuMDC/KtorMonitor.git" - } - - issueManagement { - system = "GitHub Issues" - url = "https://github.com/CosminMihuMDC/KtorMonitor/issues" - } - - ciManagement { - system = "GitHub Actions" - url = "https://github.com/CosminMihuMDC/KtorMonitor/actions" - } - - distributionManagement { - downloadUrl = "https://github.com/CosminMihuMDC/KtorMonitor/releases" - } - } -} - -apiValidation { - @OptIn(kotlinx.validation.ExperimentalBCVApi::class) - klib { - enabled = true - strictValidation = true - } -} - -kotlin { - explicitApi() - - jvmToolchain { - languageVersion.set(JavaLanguageVersion.of(11)) - } - - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_11) - } - publishLibraryVariants("debug", "release") - } - - jvm() - - sourceSets { - commonMain.dependencies { - api(projects.core.libraryNoOp) - implementation(libs.http4k.core) - } - } -} - -android { - namespace = "ro.cosminmihu.ktor.monitor.http4k.noop" - compileSdk = libs.versions.android.compileSdk.get().toInt() - - defaultConfig { - minSdk = libs.versions.android.minSdk.get().toInt() - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - } -} - diff --git a/http4k/library-http4k-no-op/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/KtorMonitorFilter.kt b/http4k/library-http4k-no-op/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/KtorMonitorFilter.kt deleted file mode 100644 index f1b91c08..00000000 --- a/http4k/library-http4k-no-op/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/KtorMonitorFilter.kt +++ /dev/null @@ -1,15 +0,0 @@ -package ro.cosminmihu.ktor.monitor - -import org.http4k.core.Filter -import org.http4k.core.HttpHandler - -/** - * No-op implementation. - */ -public class KtorMonitorFilter() : Filter { - - public constructor(block: KtorMonitorFilterConfig.() -> Unit) : this() - - override fun invoke(next: HttpHandler): HttpHandler = next -} - diff --git a/http4k/library-http4k-no-op/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/KtorMonitorFilterConfig.kt b/http4k/library-http4k-no-op/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/KtorMonitorFilterConfig.kt deleted file mode 100644 index 6c7dc878..00000000 --- a/http4k/library-http4k-no-op/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/KtorMonitorFilterConfig.kt +++ /dev/null @@ -1,27 +0,0 @@ -package ro.cosminmihu.ktor.monitor - -import org.http4k.core.Request -import kotlin.time.Duration - -/** - * No-op implementation. - */ -public class KtorMonitorFilterConfig { - - public fun filter(predicate: (Request) -> Boolean) { - // Not implemented. - } - - public fun sanitizeHeader(placeholder: String = "***", predicate: (String) -> Boolean) { - // Not implemented. - } - - public var isActive: Boolean = false - - public var showNotification: Boolean = false - - public var retentionPeriod: Duration = Duration.ZERO - - public var maxContentLength: Int = 0 -} - diff --git a/http4k/library-http4k/api/android/library-http4k.api b/http4k/library-http4k/api/android/library-http4k.api deleted file mode 100644 index 310106c1..00000000 --- a/http4k/library-http4k/api/android/library-http4k.api +++ /dev/null @@ -1,22 +0,0 @@ -public final class ro/cosminmihu/ktor/monitor/KtorMonitorFilter : org/http4k/core/Filter { - public fun ()V - public fun (Lkotlin/jvm/functions/Function1;)V - public synthetic fun invoke (Ljava/lang/Object;)Ljava/lang/Object; - public fun invoke (Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function1; -} - -public final class ro/cosminmihu/ktor/monitor/KtorMonitorFilterConfig { - public fun ()V - public final fun filter (Lkotlin/jvm/functions/Function1;)V - public final fun getMaxContentLength ()I - public final fun getRetentionPeriod-UwyO8pc ()J - public final fun getShowNotification ()Z - public final fun isActive ()Z - public final fun sanitizeHeader (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V - public static synthetic fun sanitizeHeader$default (Lro/cosminmihu/ktor/monitor/KtorMonitorFilterConfig;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V - public final fun setActive (Z)V - public final fun setMaxContentLength (I)V - public final fun setRetentionPeriod-LRDsOJo (J)V - public final fun setShowNotification (Z)V -} - diff --git a/http4k/library-http4k/api/jvm/library-http4k.api b/http4k/library-http4k/api/jvm/library-http4k.api deleted file mode 100644 index 310106c1..00000000 --- a/http4k/library-http4k/api/jvm/library-http4k.api +++ /dev/null @@ -1,22 +0,0 @@ -public final class ro/cosminmihu/ktor/monitor/KtorMonitorFilter : org/http4k/core/Filter { - public fun ()V - public fun (Lkotlin/jvm/functions/Function1;)V - public synthetic fun invoke (Ljava/lang/Object;)Ljava/lang/Object; - public fun invoke (Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function1; -} - -public final class ro/cosminmihu/ktor/monitor/KtorMonitorFilterConfig { - public fun ()V - public final fun filter (Lkotlin/jvm/functions/Function1;)V - public final fun getMaxContentLength ()I - public final fun getRetentionPeriod-UwyO8pc ()J - public final fun getShowNotification ()Z - public final fun isActive ()Z - public final fun sanitizeHeader (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V - public static synthetic fun sanitizeHeader$default (Lro/cosminmihu/ktor/monitor/KtorMonitorFilterConfig;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V - public final fun setActive (Z)V - public final fun setMaxContentLength (I)V - public final fun setRetentionPeriod-LRDsOJo (J)V - public final fun setShowNotification (Z)V -} - diff --git a/http4k/library-http4k/api/library-http4k.klib.api b/http4k/library-http4k/api/library-http4k.klib.api deleted file mode 100644 index e69de29b..00000000 diff --git a/http4k/library-http4k/build.gradle.kts b/http4k/library-http4k/build.gradle.kts deleted file mode 100644 index fc933fe1..00000000 --- a/http4k/library-http4k/build.gradle.kts +++ /dev/null @@ -1,116 +0,0 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget - -plugins { - alias(libs.plugins.kotlinMultiplatform) - alias(libs.plugins.androidLibrary) - alias(libs.plugins.maven.publish) - alias(libs.plugins.binary.compatibility.validator) - alias(libs.plugins.dokka) -} - -mavenPublishing { - publishToMavenCentral() - - signAllPublications() - - val artifact = "ktor-monitor-http4k-filter" - coordinates(group.toString(), artifact, version.toString()) - - pom { - name.set("Ktor Monitor - http4k Filter") - description.set("""http4k Filter that provides the capability to log HTTP calls for Ktor Monitor.""".trimMargin()) - inceptionYear.set("2026") - url.set("https://github.com/CosminMihuMDC/KtorMonitor") - - licenses { - license { - name = "The Apache Software License, Version 2.0" - url = "https://www.apache.org/licenses/LICENSE-2.0.txt" - distribution = "https://www.apache.org/licenses/LICENSE-2.0.txt" - } - } - - developers { - developer { - id = "Cosmin Mihu" - name = "Cosmin Mihu" - url = "https://www.cosminmihu.ro/" - } - } - - scm { - url = "https://github.com/CosminMihuMDC/KtorMonitor.git" - connection = "scm:git:git://github.com/CosminMihuMDC/KtorMonitor.git" - developerConnection = "scm:git:git://github.com/CosminMihuMDC/KtorMonitor.git" - } - - issueManagement { - system = "GitHub Issues" - url = "https://github.com/CosminMihuMDC/KtorMonitor/issues" - } - - ciManagement { - system = "GitHub Actions" - url = "https://github.com/CosminMihuMDC/KtorMonitor/actions" - } - - distributionManagement { - downloadUrl = "https://github.com/CosminMihuMDC/KtorMonitor/releases" - } - } -} - -apiValidation { - @OptIn(kotlinx.validation.ExperimentalBCVApi::class) - klib { - enabled = true - strictValidation = true - } -} - -dokka { - moduleName = "http4k Filter" - moduleVersion = project.version.toString() -} - -dependencies { - dokka(projects.core.library) -} - -kotlin { - explicitApi() - - jvmToolchain { - languageVersion = JavaLanguageVersion.of(11) - } - - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_11) - } - publishLibraryVariants("debug", "release") - } - - jvm() - - sourceSets { - commonMain.dependencies { - api(projects.core.library) - implementation(libs.http4k.core) - } - } -} - -android { - namespace = "ro.cosminmihu.ktor.monitor.http4k" - compileSdk = libs.versions.android.compileSdk.get().toInt() - - defaultConfig { - minSdk = libs.versions.android.minSdk.get().toInt() - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - } -} - diff --git a/http4k/library-http4k/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/KtorMonitorFilter.kt b/http4k/library-http4k/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/KtorMonitorFilter.kt deleted file mode 100644 index 9c826638..00000000 --- a/http4k/library-http4k/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/KtorMonitorFilter.kt +++ /dev/null @@ -1,200 +0,0 @@ -package ro.cosminmihu.ktor.monitor - -import kotlinx.coroutines.launch -import org.http4k.core.Filter -import org.http4k.core.HttpHandler -import ro.cosminmihu.ktor.monitor.domain.model.ClientSource -import kotlin.math.abs -import kotlin.random.Random -import kotlin.time.Clock -import kotlin.time.ExperimentalTime - -/** - * An [http4k](https://www.http4k.org/) [Filter] that provides the capability to log HTTP calls. - * - * You can learn more from [KtorMonitor](https://github.com/CosminMihuMDC/KtorMonitor). - * - * ```kotlin - * KtorMonitorFilter { - * sanitizeHeader { header -> header == "Authorization" } - * isActive = true - * showNotification = true - * retentionPeriod = RetentionPeriod.OneHour - * maxContentLength = ContentLength.Default - * }.then(JavaHttpClient()) - * ``` - */ -public class KtorMonitorFilter() : Filter { - - private val config: KtorMonitorFilterConfig = KtorMonitorFilterConfig() - - public constructor(block: KtorMonitorFilterConfig.() -> Unit) : this() { - config.apply(block) - } - - init { - @OptIn(InternalKtorMonitorApi::class) - InternalLibraryBridge.setConfig( - isActive = config.isActive, - showNotification = config.showNotification, - retentionPeriod = config.retentionPeriod, - maxContentLength = config.maxContentLength, - clientSource = ClientSource.Http4k, - ) - - if (config.isActive && config.retentionPeriod.isPositive()) { - @OptIn(InternalKtorMonitorApi::class) - InternalLibraryBridge.startListening() - } - } - - @OptIn(InternalKtorMonitorApi::class, ExperimentalTime::class) - override fun invoke(next: HttpHandler): HttpHandler = { request -> - // Check if plugin is active. - if (!config.isActive || !config.retentionPeriod.isPositive()) { - next(request) - } else { - // Filter. - val shouldLog = config.filters.isEmpty() || config.filters.any { it(request) } - if (!shouldLog) { - next(request) - } else { - // Generate call id. - val id = callIdentifier - - // Log request. - val requestTimestamp = Clock.System.now().toEpochMilliseconds() - val method = request.method.name - val url = request.uri.toString() - val requestContentType = request.header("Content-Type") - - // Request body bytes — duplicate ByteBuffer to avoid consuming the original. - val requestBodyBytes = try { - val buf = request.body.payload.duplicate() - val bytes = ByteArray(buf.remaining()).also { buf.get(it) } - if (config.maxContentLength != ContentLength.Full) { - bytes.take(config.maxContentLength).toByteArray() - } else bytes - } catch (_: Throwable) { - null - } - val requestContentLength = request.body.length - ?: requestBodyBytes?.size?.toLong() - ?: 0L - - // Request headers. - val requestHeaders = request.headers - .groupBy({ it.first }) { it.second ?: "" } - .mapValues { (key, values) -> - val sanitized = config.sanitizedHeaders.firstOrNull { it.predicate(key) } - if (sanitized != null) listOf(sanitized.placeholder) else values - } - .toSortedMap() - - InternalLibraryBridge.coroutineScope().launch { - try { - InternalLibraryBridge.saveRequest( - id = id, - method = method, - url = url, - requestTimestamp = requestTimestamp, - requestHeaders = requestHeaders, - requestContentType = requestContentType, - requestContentLength = requestContentLength, - requestBody = requestBodyBytes, - isRequestBodyTruncated = requestContentLength != 0L && requestContentLength > config.maxContentLength, - ) - } catch (_: Throwable) { - } - } - - // Proceed with request. - val response = try { - next(request) - } catch (cause: Throwable) { - InternalLibraryBridge.coroutineScope().launch { - try { - InternalLibraryBridge.saveRequestError(id = id, error = cause) - } catch (_: Throwable) { - } - } - throw cause - } - - // Log response. - val responseTimestamp = Clock.System.now().toEpochMilliseconds() - val responseCode = response.status.code - // http4k does not expose the HTTP protocol version; default to HTTP/1.1. - val protocol = "HTTP/1.1" - val responseContentType = response.header("Content-Type") - - // Response headers. - val responseHeaders = response.headers - .groupBy({ it.first }) { it.second ?: "" } - .mapValues { (key, values) -> - val sanitized = config.sanitizedHeaders.firstOrNull { it.predicate(key) } - if (sanitized != null) listOf(sanitized.placeholder) else values - } - .toSortedMap() - - InternalLibraryBridge.coroutineScope().launch { - try { - InternalLibraryBridge.saveResponse( - id = id, - protocol = protocol, - requestTimestamp = requestTimestamp, - responseCode = responseCode, - responseTimestamp = responseTimestamp, - responseContentType = responseContentType, - responseHeaders = responseHeaders, - ) - } catch (_: Throwable) { - } - } - - // Response body — duplicate ByteBuffer so the caller still receives a full body. - val responseBodyBytes = try { - val buf = response.body.payload.duplicate() - ByteArray(buf.remaining()).also { buf.get(it) } - } catch (_: Throwable) { - null - } - val responseContentLength = responseBodyBytes?.size?.toLong() - ?: response.body.length - ?: 0L - - val truncatedBody = if (config.maxContentLength != ContentLength.Full) { - responseBodyBytes?.take(config.maxContentLength)?.toByteArray() - } else { - responseBodyBytes - } - val isResponseBodyTruncated = responseContentLength > config.maxContentLength - - InternalLibraryBridge.coroutineScope().launch { - try { - InternalLibraryBridge.saveResponseBody( - id = id, - responseContentLength = responseContentLength, - responseBody = truncatedBody ?: ByteArray(0), - isResponseBodyTruncated = isResponseBodyTruncated, - ) - } catch (_: Throwable) { - } - } - - response - } - } - } -} - -@OptIn(ExperimentalTime::class) -private val callIdentifier: String - get() { - val timestamp = Clock.System.now().toEpochMilliseconds().toString() - val randomLong = Random.nextLong().toString() - val raw = "$timestamp-$randomLong" - val hash = abs(raw.hashCode()).toString(16) - return "$raw-$hash" - } - diff --git a/http4k/library-http4k/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/KtorMonitorFilterConfig.kt b/http4k/library-http4k/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/KtorMonitorFilterConfig.kt deleted file mode 100644 index e8681dc0..00000000 --- a/http4k/library-http4k/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/KtorMonitorFilterConfig.kt +++ /dev/null @@ -1,71 +0,0 @@ -package ro.cosminmihu.ktor.monitor - -import org.http4k.core.Request -import kotlin.time.Duration - -/** - * Configuration for [KtorMonitorFilter]. - */ -public class KtorMonitorFilterConfig { - - internal val filters = mutableListOf<(Request) -> Boolean>() - internal val sanitizedHeaders = mutableListOf() - - /** - * Allows you to filter logs for calls matching a [predicate]. - */ - public fun filter(predicate: (Request) -> Boolean) { - filters.add(predicate) - } - - /** - * Allows you to sanitize sensitive headers to avoid their values appearing in the logs. - * In the example below, Authorization header value will be replaced with '***' when logging: - * ```kotlin - * sanitizeHeader { header -> header == "Authorization" } - * ``` - */ - public fun sanitizeHeader(placeholder: String = "***", predicate: (String) -> Boolean) { - sanitizedHeaders.add(SanitizedHeader(placeholder, predicate)) - } - - /** - * Enable or disable the logging of requests and responses. - * By default, enabled. - */ - @OptIn(InternalKtorMonitorApi::class) - public var isActive: Boolean = true - - /** - * Keep track of latest requests and responses into notification. - * By default: - * - android - enabled. android.permission.POST_NOTIFICATIONS needs to be granted. - * - ios - not supported. - * - desktop - not supported. - * - web - not supported. - */ - public var showNotification: Boolean = true - - /** - * The retention period for the logs. - * By default, it is 1 hour. - */ - public var retentionPeriod: Duration = RetentionPeriod.OneHour - - /** - * The maximum length of the content that will be logged. - * After this, body will be truncated. - * By default, it is [ContentLength.Default]. - * Use [ContentLength.Full] to log the full content. - */ - public var maxContentLength: Int = ContentLength.Default -} - -/** - * Configuration for a sanitized header. - */ -internal class SanitizedHeader( - val placeholder: String, - val predicate: (String) -> Boolean, -) - diff --git a/kotlin-js-store/wasm/yarn.lock b/kotlin-js-store/wasm/yarn.lock deleted file mode 100644 index e7d90b30..00000000 --- a/kotlin-js-store/wasm/yarn.lock +++ /dev/null @@ -1,285 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@cashapp/sqldelight-sqljs-worker@2.3.2": - version "2.3.2" - resolved "https://registry.yarnpkg.com/@cashapp/sqldelight-sqljs-worker/-/sqldelight-sqljs-worker-2.3.2.tgz#605d9799130dbb40c8db77cd732258b29dbc83fa" - integrity sha512-j43u8FCiLCz52rI/+NP4sXNviwaKS59eggvqjPRji8l62SYQEps5IlW1/fMm8s9BH4nbfaGX1YPSbbdThkXt4w== - -"@js-joda/core@3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@js-joda/core/-/core-3.2.0.tgz#3e61e21b7b2b8a6be746df1335cf91d70db2a273" - integrity sha512-PMqgJ0sw5B7FKb2d5bWYIoxjri+QlW/Pys7+Rw82jSH0QN3rB05jZ/VrrsUdh1w4+i2kw9JOejXGq/KhDOX7Kg== - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@types/json-schema@^7.0.8": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - -ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv@^6.12.5: - version "6.14.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.14.0.tgz#fd067713e228210636ebb08c60bd3765d6dbe73a" - integrity sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -braces@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" - integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== - dependencies: - fill-range "^7.1.1" - -copy-webpack-plugin@9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz#2d2c460c4c4695ec0a58afb2801a1205256c4e6b" - integrity sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA== - dependencies: - fast-glob "^3.2.7" - glob-parent "^6.0.1" - globby "^11.0.3" - normalize-path "^3.0.0" - schema-utils "^3.1.1" - serialize-javascript "^6.0.0" - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -fast-deep-equal@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@^3.2.7, fast-glob@^3.2.9: - version "3.3.3" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" - integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== - 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.8" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fastq@^1.6.0: - version "1.20.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.20.1.tgz#ca750a10dc925bc8b18839fd203e3ef4b3ced675" - integrity sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw== - dependencies: - reusify "^1.0.4" - -fill-range@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" - integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== - dependencies: - to-regex-range "^5.0.1" - -glob-parent@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -globby@^11.0.3: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -ignore@^5.2.0: - version "5.3.2" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" - integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-glob@^4.0.1, is-glob@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" - integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== - dependencies: - braces "^3.0.3" - picomatch "^2.3.1" - -normalize-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -picomatch@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.2.tgz#5a942915e26b372dc0f0e6753149a16e6b1c5601" - integrity sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA== - -punycode@^2.1.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -reusify@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f" - integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -safe-buffer@^5.1.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -schema-utils@^3.1.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" - integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -serialize-javascript@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" - integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== - dependencies: - randombytes "^2.1.0" - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -sql.js@1.11.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/sql.js/-/sql.js-1.11.0.tgz#2fcfb6aa24fae9b8ecc5395c70fc596a71247994" - integrity sha512-GsLUDU3vhOo14Pd5ME0y2te49JQyby6HuoCuadevEV+CGgTUjmYRrm7B7lhRyzOgrmcWmspUfyjNb6sOAEqdsA== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -ws@8.18.0: - version "8.18.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" - integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== - -ws@8.18.3: - version "8.18.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" - integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== diff --git a/kotlin-js-store/yarn.lock b/kotlin-js-store/yarn.lock deleted file mode 100644 index 7fc39f49..00000000 --- a/kotlin-js-store/yarn.lock +++ /dev/null @@ -1,3518 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@cashapp/sqldelight-sqljs-worker@2.3.2": - version "2.3.2" - resolved "https://registry.yarnpkg.com/@cashapp/sqldelight-sqljs-worker/-/sqldelight-sqljs-worker-2.3.2.tgz#605d9799130dbb40c8db77cd732258b29dbc83fa" - integrity sha512-j43u8FCiLCz52rI/+NP4sXNviwaKS59eggvqjPRji8l62SYQEps5IlW1/fMm8s9BH4nbfaGX1YPSbbdThkXt4w== - -"@colors/colors@1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" - integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== - -"@discoveryjs/json-ext@^0.6.1": - version "0.6.3" - resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz#f13c7c205915eb91ae54c557f5e92bddd8be0e83" - integrity sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ== - -"@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== - 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" - -"@jridgewell/gen-mapping@^0.3.5": - version "0.3.13" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz#6342a19f44347518c93e43b1ac69deb3c4656a1f" - integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA== - dependencies: - "@jridgewell/sourcemap-codec" "^1.5.0" - "@jridgewell/trace-mapping" "^0.3.24" - -"@jridgewell/resolve-uri@^3.1.0": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" - integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== - -"@jridgewell/source-map@^0.3.3": - version "0.3.11" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.11.tgz#b21835cbd36db656b857c2ad02ebd413cc13a9ba" - integrity sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA== - dependencies: - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - -"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": - version "1.5.5" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" - integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== - -"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": - version "0.3.31" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0" - integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@js-joda/core@3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@js-joda/core/-/core-3.2.0.tgz#3e61e21b7b2b8a6be746df1335cf91d70db2a273" - integrity sha512-PMqgJ0sw5B7FKb2d5bWYIoxjri+QlW/Pys7+Rw82jSH0QN3rB05jZ/VrrsUdh1w4+i2kw9JOejXGq/KhDOX7Kg== - -"@jsonjoy.com/base64@17.67.0": - version "17.67.0" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/base64/-/base64-17.67.0.tgz#7eeda3cb41138d77a90408fd2e42b2aba10576d7" - integrity sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw== - -"@jsonjoy.com/base64@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/base64/-/base64-1.1.2.tgz#cf8ea9dcb849b81c95f14fc0aaa151c6b54d2578" - integrity sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA== - -"@jsonjoy.com/buffers@17.67.0", "@jsonjoy.com/buffers@^17.65.0": - version "17.67.0" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/buffers/-/buffers-17.67.0.tgz#5c58dbcdeea8824ce296bd1cfce006c2eb167b3d" - integrity sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw== - -"@jsonjoy.com/buffers@^1.0.0", "@jsonjoy.com/buffers@^1.2.0": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz#8d99c7f67eaf724d3428dfd9826c6455266a5c83" - integrity sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA== - -"@jsonjoy.com/codegen@17.67.0": - version "17.67.0" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/codegen/-/codegen-17.67.0.tgz#3635fd8769d77e19b75dc5574bc9756019b2e591" - integrity sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q== - -"@jsonjoy.com/codegen@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz#5c23f796c47675f166d23b948cdb889184b93207" - integrity sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g== - -"@jsonjoy.com/fs-core@4.57.2": - version "4.57.2" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-core/-/fs-core-4.57.2.tgz#e28f357ba9983ce53577ba34fc72d344f19ec459" - integrity sha512-SVjwklkpIV5wrynpYtuYnfYH1QF4/nDuLBX7VXdb+3miglcAgBVZb/5y0cOsehRV/9Vb+3UqhkMq3/NR3ztdkQ== - dependencies: - "@jsonjoy.com/fs-node-builtins" "4.57.2" - "@jsonjoy.com/fs-node-utils" "4.57.2" - thingies "^2.5.0" - -"@jsonjoy.com/fs-fsa@4.57.2": - version "4.57.2" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-fsa/-/fs-fsa-4.57.2.tgz#ec6dd492ff8c104a0c1eae74959a013960fe8969" - integrity sha512-fhO8+iR2I+OCw668ISDJdn1aArc9zx033sWejIyzQ8RBeXa9bDSaUeA3ix0poYOfrj1KdOzytmYNv2/uLDfV6g== - dependencies: - "@jsonjoy.com/fs-core" "4.57.2" - "@jsonjoy.com/fs-node-builtins" "4.57.2" - "@jsonjoy.com/fs-node-utils" "4.57.2" - thingies "^2.5.0" - -"@jsonjoy.com/fs-node-builtins@4.57.2": - version "4.57.2" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.57.2.tgz#9174b87e70213b38caf1ac8669b130c4dfd6a909" - integrity sha512-xhiegylRmhw43Ki2HO1ZBL7DQ5ja/qpRsL29VtQ2xuUHiuDGbgf2uD4p9Qd8hJI5P6RCtGYD50IXHXVq/Ocjcg== - -"@jsonjoy.com/fs-node-to-fsa@4.57.2": - version "4.57.2" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.57.2.tgz#8542449b72dfc48f3bfe311a7b0af5323f9bc926" - integrity sha512-18LmWTSONhoAPW+IWRuf8w/+zRolPFGPeGwMxlAhhfY11EKzX+5XHDBPAw67dBF5dxDErHJbl40U+3IXSDRXSQ== - dependencies: - "@jsonjoy.com/fs-fsa" "4.57.2" - "@jsonjoy.com/fs-node-builtins" "4.57.2" - "@jsonjoy.com/fs-node-utils" "4.57.2" - -"@jsonjoy.com/fs-node-utils@4.57.2": - version "4.57.2" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.57.2.tgz#c3234c03b1e59d609a0915572dd6f450be0463b1" - integrity sha512-rsPSJgekz43IlNbLyAM/Ab+ouYLWGp5DDBfYBNNEqDaSpsbXfthBn29Q4muFA9L0F+Z3mKo+CWlgSCXrf+mOyQ== - dependencies: - "@jsonjoy.com/fs-node-builtins" "4.57.2" - -"@jsonjoy.com/fs-node@4.57.2": - version "4.57.2" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node/-/fs-node-4.57.2.tgz#8db2875df19683683e5852053e0099e233dc45d2" - integrity sha512-nX2AdL6cOFwLdju9G4/nbRnYevmCJbh7N7hvR3gGm97Cs60uEjyd0rpR+YBS7cTg175zzl22pGKXR5USaQMvKg== - dependencies: - "@jsonjoy.com/fs-core" "4.57.2" - "@jsonjoy.com/fs-node-builtins" "4.57.2" - "@jsonjoy.com/fs-node-utils" "4.57.2" - "@jsonjoy.com/fs-print" "4.57.2" - "@jsonjoy.com/fs-snapshot" "4.57.2" - glob-to-regex.js "^1.0.0" - thingies "^2.5.0" - -"@jsonjoy.com/fs-print@4.57.2": - version "4.57.2" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-print/-/fs-print-4.57.2.tgz#286c4ceda19225a5c54aaad657ad9f466d5bd0c1" - integrity sha512-wK9NSow48i4DbDl9F1CQE5TqnyZOJ04elU3WFG5aJ76p+YxO/ulyBBQvKsessPxdo381Bc2pcEoyPujMOhcRqQ== - dependencies: - "@jsonjoy.com/fs-node-utils" "4.57.2" - tree-dump "^1.1.0" - -"@jsonjoy.com/fs-snapshot@4.57.2": - version "4.57.2" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.57.2.tgz#800424a076638a605dad5ef1540915bc0167d7f8" - integrity sha512-GdduDZuoP5V/QCgJkx9+BZ6SC0EZ/smXAdTS7PfMqgMTGXLlt/bH/FqMYaqB9JmLf05sJPtO0XRbAwwkEEPbVw== - dependencies: - "@jsonjoy.com/buffers" "^17.65.0" - "@jsonjoy.com/fs-node-utils" "4.57.2" - "@jsonjoy.com/json-pack" "^17.65.0" - "@jsonjoy.com/util" "^17.65.0" - -"@jsonjoy.com/json-pack@^1.11.0": - version "1.21.0" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz#93f8dd57fe3a3a92132b33d1eb182dcd9e7629fa" - integrity sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg== - dependencies: - "@jsonjoy.com/base64" "^1.1.2" - "@jsonjoy.com/buffers" "^1.2.0" - "@jsonjoy.com/codegen" "^1.0.0" - "@jsonjoy.com/json-pointer" "^1.0.2" - "@jsonjoy.com/util" "^1.9.0" - hyperdyperid "^1.2.0" - thingies "^2.5.0" - tree-dump "^1.1.0" - -"@jsonjoy.com/json-pack@^17.65.0": - version "17.67.0" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pack/-/json-pack-17.67.0.tgz#8dd8ff65dd999c5d4d26df46c63915c7bdec093a" - integrity sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w== - dependencies: - "@jsonjoy.com/base64" "17.67.0" - "@jsonjoy.com/buffers" "17.67.0" - "@jsonjoy.com/codegen" "17.67.0" - "@jsonjoy.com/json-pointer" "17.67.0" - "@jsonjoy.com/util" "17.67.0" - hyperdyperid "^1.2.0" - thingies "^2.5.0" - tree-dump "^1.1.0" - -"@jsonjoy.com/json-pointer@17.67.0": - version "17.67.0" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pointer/-/json-pointer-17.67.0.tgz#74439573dc046e0c9a3a552fb94b391bc75313b8" - integrity sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA== - dependencies: - "@jsonjoy.com/util" "17.67.0" - -"@jsonjoy.com/json-pointer@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz#049cb530ac24e84cba08590c5e36b431c4843408" - integrity sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg== - dependencies: - "@jsonjoy.com/codegen" "^1.0.0" - "@jsonjoy.com/util" "^1.9.0" - -"@jsonjoy.com/util@17.67.0", "@jsonjoy.com/util@^17.65.0": - version "17.67.0" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/util/-/util-17.67.0.tgz#7c4288fc3808233e55c7610101e7bb4590cddd3f" - integrity sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew== - dependencies: - "@jsonjoy.com/buffers" "17.67.0" - "@jsonjoy.com/codegen" "17.67.0" - -"@jsonjoy.com/util@^1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/util/-/util-1.9.0.tgz#7ee95586aed0a766b746cd8d8363e336c3c47c46" - integrity sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ== - dependencies: - "@jsonjoy.com/buffers" "^1.0.0" - "@jsonjoy.com/codegen" "^1.0.0" - -"@leichtgewicht/ip-codec@^2.0.1": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#4fc56c15c580b9adb7dc3c333a134e540b44bfb1" - integrity sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw== - -"@noble/hashes@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" - integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@peculiar/asn1-cms@^2.6.0", "@peculiar/asn1-cms@^2.6.1": - version "2.6.1" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-cms/-/asn1-cms-2.6.1.tgz#cb5445c1bad9197d176073bf142a5c035b460640" - integrity sha512-vdG4fBF6Lkirkcl53q6eOdn3XYKt+kJTG59edgRZORlg/3atWWEReRCx5rYE1ZzTTX6vLK5zDMjHh7vbrcXGtw== - dependencies: - "@peculiar/asn1-schema" "^2.6.0" - "@peculiar/asn1-x509" "^2.6.1" - "@peculiar/asn1-x509-attr" "^2.6.1" - asn1js "^3.0.6" - tslib "^2.8.1" - -"@peculiar/asn1-csr@^2.6.0": - version "2.6.1" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-csr/-/asn1-csr-2.6.1.tgz#9629d403bc5a61254f28ed0b90e99cee61c0e8be" - integrity sha512-WRWnKfIocHyzFYQTka8O/tXCiBquAPSrRjXbOkHbO4qdmS6loffCEGs+rby6WxxGdJCuunnhS2duHURhjyio6w== - dependencies: - "@peculiar/asn1-schema" "^2.6.0" - "@peculiar/asn1-x509" "^2.6.1" - asn1js "^3.0.6" - tslib "^2.8.1" - -"@peculiar/asn1-ecc@^2.6.0": - version "2.6.1" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-ecc/-/asn1-ecc-2.6.1.tgz#d29c4af671508a9934edc78e7c9419fbf7bc9870" - integrity sha512-+Vqw8WFxrtDIN5ehUdvlN2m73exS2JVG0UAyfVB31gIfor3zWEAQPD+K9ydCxaj3MLen9k0JhKpu9LqviuCE1g== - dependencies: - "@peculiar/asn1-schema" "^2.6.0" - "@peculiar/asn1-x509" "^2.6.1" - asn1js "^3.0.6" - tslib "^2.8.1" - -"@peculiar/asn1-pfx@^2.6.1": - version "2.6.1" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-pfx/-/asn1-pfx-2.6.1.tgz#75cddd14d43ef875109e91ea150377d679c8fbc1" - integrity sha512-nB5jVQy3MAAWvq0KY0R2JUZG8bO/bTLpnwyOzXyEh/e54ynGTatAR+csOnXkkVD9AFZ2uL8Z7EV918+qB1qDvw== - dependencies: - "@peculiar/asn1-cms" "^2.6.1" - "@peculiar/asn1-pkcs8" "^2.6.1" - "@peculiar/asn1-rsa" "^2.6.1" - "@peculiar/asn1-schema" "^2.6.0" - asn1js "^3.0.6" - tslib "^2.8.1" - -"@peculiar/asn1-pkcs8@^2.6.1": - version "2.6.1" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.6.1.tgz#bd56b4bb9e8a3702369049713a89134c87c6931a" - integrity sha512-JB5iQ9Izn5yGMw3ZG4Nw3Xn/hb/G38GYF3lf7WmJb8JZUydhVGEjK/ZlFSWhnlB7K/4oqEs8HnfFIKklhR58Tw== - dependencies: - "@peculiar/asn1-schema" "^2.6.0" - "@peculiar/asn1-x509" "^2.6.1" - asn1js "^3.0.6" - tslib "^2.8.1" - -"@peculiar/asn1-pkcs9@^2.6.0": - version "2.6.1" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.6.1.tgz#ddc5222952f25b59a0562a6f8cabdb72f586a496" - integrity sha512-5EV8nZoMSxeWmcxWmmcolg22ojZRgJg+Y9MX2fnE2bGRo5KQLqV5IL9kdSQDZxlHz95tHvIq9F//bvL1OeNILw== - dependencies: - "@peculiar/asn1-cms" "^2.6.1" - "@peculiar/asn1-pfx" "^2.6.1" - "@peculiar/asn1-pkcs8" "^2.6.1" - "@peculiar/asn1-schema" "^2.6.0" - "@peculiar/asn1-x509" "^2.6.1" - "@peculiar/asn1-x509-attr" "^2.6.1" - asn1js "^3.0.6" - tslib "^2.8.1" - -"@peculiar/asn1-rsa@^2.6.0", "@peculiar/asn1-rsa@^2.6.1": - version "2.6.1" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-rsa/-/asn1-rsa-2.6.1.tgz#2cdf9f9ea6d6fdbaae214b9fed6de0534b654437" - integrity sha512-1nVMEh46SElUt5CB3RUTV4EG/z7iYc7EoaDY5ECwganibQPkZ/Y2eMsTKB/LeyrUJ+W/tKoD9WUqIy8vB+CEdA== - dependencies: - "@peculiar/asn1-schema" "^2.6.0" - "@peculiar/asn1-x509" "^2.6.1" - asn1js "^3.0.6" - tslib "^2.8.1" - -"@peculiar/asn1-schema@^2.6.0": - version "2.6.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.6.0.tgz#0dca1601d5b0fed2a72fed7a5f1d0d7dbe3a6f82" - integrity sha512-xNLYLBFTBKkCzEZIw842BxytQQATQv+lDTCEMZ8C196iJcJJMBUZxrhSTxLaohMyKK8QlzRNTRkUmanucnDSqg== - dependencies: - asn1js "^3.0.6" - pvtsutils "^1.3.6" - tslib "^2.8.1" - -"@peculiar/asn1-x509-attr@^2.6.1": - version "2.6.1" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.6.1.tgz#6425008b8099476010aace5b8ae9f9cbc41db0ab" - integrity sha512-tlW6cxoHwgcQghnJwv3YS+9OO1737zgPogZ+CgWRUK4roEwIPzRH4JEiG770xe5HX2ATfCpmX60gurfWIF9dcQ== - dependencies: - "@peculiar/asn1-schema" "^2.6.0" - "@peculiar/asn1-x509" "^2.6.1" - asn1js "^3.0.6" - tslib "^2.8.1" - -"@peculiar/asn1-x509@^2.6.0", "@peculiar/asn1-x509@^2.6.1": - version "2.6.1" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509/-/asn1-x509-2.6.1.tgz#4e8995659e16178e0e90fe90519aa269045af262" - integrity sha512-O9jT5F1A2+t3r7C4VT7LYGXqkGLK7Kj1xFpz7U0isPrubwU5PbDoyYtx6MiGst29yq7pXN5vZbQFKRCP+lLZlA== - dependencies: - "@peculiar/asn1-schema" "^2.6.0" - asn1js "^3.0.6" - pvtsutils "^1.3.6" - tslib "^2.8.1" - -"@peculiar/x509@^1.14.2": - version "1.14.3" - resolved "https://registry.yarnpkg.com/@peculiar/x509/-/x509-1.14.3.tgz#2c44c2b89474346afec38a0c2803ec4fb8ce959e" - integrity sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA== - dependencies: - "@peculiar/asn1-cms" "^2.6.0" - "@peculiar/asn1-csr" "^2.6.0" - "@peculiar/asn1-ecc" "^2.6.0" - "@peculiar/asn1-pkcs9" "^2.6.0" - "@peculiar/asn1-rsa" "^2.6.0" - "@peculiar/asn1-schema" "^2.6.0" - "@peculiar/asn1-x509" "^2.6.0" - pvtsutils "^1.3.6" - reflect-metadata "^0.2.2" - tslib "^2.8.1" - tsyringe "^4.10.0" - -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - -"@socket.io/component-emitter@~3.1.0": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz#821f8442f4175d8f0467b9daf26e3a18e2d02af2" - integrity sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA== - -"@types/body-parser@*": - version "1.19.6" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.6.tgz#1859bebb8fd7dac9918a45d54c1971ab8b5af474" - integrity sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g== - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/bonjour@^3.5.13": - version "3.5.13" - resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.13.tgz#adf90ce1a105e81dd1f9c61fdc5afda1bfb92956" - integrity sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ== - dependencies: - "@types/node" "*" - -"@types/connect-history-api-fallback@^1.5.4": - version "1.5.4" - resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#7de71645a103056b48ac3ce07b3520b819c1d5b3" - integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw== - dependencies: - "@types/express-serve-static-core" "*" - "@types/node" "*" - -"@types/connect@*": - version "3.4.38" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" - integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== - dependencies: - "@types/node" "*" - -"@types/cors@^2.8.12": - version "2.8.19" - resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.19.tgz#d93ea2673fd8c9f697367f5eeefc2bbfa94f0342" - integrity sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg== - dependencies: - "@types/node" "*" - -"@types/eslint-scope@^3.7.7": - version "3.7.7" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" - integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*": - version "9.6.1" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-9.6.1.tgz#d5795ad732ce81715f27f75da913004a56751584" - integrity sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*", "@types/estree@^1.0.8": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" - integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== - -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^5.0.0": - version "5.1.1" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz#1a77faffee9572d39124933259be2523837d7eaa" - integrity sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - "@types/send" "*" - -"@types/express-serve-static-core@^4.17.21", "@types/express-serve-static-core@^4.17.33": - version "4.19.8" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz#99b960322a4d576b239a640ab52ef191989b036f" - integrity sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - "@types/send" "*" - -"@types/express@*": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@types/express/-/express-5.0.6.tgz#2d724b2c990dcb8c8444063f3580a903f6d500cc" - integrity sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^5.0.0" - "@types/serve-static" "^2" - -"@types/express@^4.17.25": - version "4.17.25" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.25.tgz#070c8c73a6fee6936d65c195dbbfb7da5026649b" - integrity sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.33" - "@types/qs" "*" - "@types/serve-static" "^1" - -"@types/http-errors@*": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.5.tgz#5b749ab2b16ba113423feb1a64a95dcd30398472" - integrity sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg== - -"@types/http-proxy@^1.17.8": - version "1.17.17" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.17.tgz#d9e2c4571fe3507343cb210cd41790375e59a533" - integrity sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw== - dependencies: - "@types/node" "*" - -"@types/json-schema@*", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - -"@types/mime@^1": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" - integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== - -"@types/node@*", "@types/node@>=10.0.0": - version "25.6.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-25.6.0.tgz#4e09bad9b469871f2d0f68140198cbd714f4edca" - integrity sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ== - dependencies: - undici-types "~7.19.0" - -"@types/qs@*": - version "6.15.0" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.15.0.tgz#963ab61779843fe910639a50661b48f162bc7f79" - integrity sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow== - -"@types/range-parser@*": - version "1.2.7" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" - integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== - -"@types/retry@0.12.2": - version "0.12.2" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.2.tgz#ed279a64fa438bb69f2480eda44937912bb7480a" - integrity sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow== - -"@types/send@*": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@types/send/-/send-1.2.1.tgz#6a784e45543c18c774c049bff6d3dbaf045c9c74" - integrity sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ== - dependencies: - "@types/node" "*" - -"@types/send@<1": - version "0.17.6" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.6.tgz#aeb5385be62ff58a52cd5459daa509ae91651d25" - integrity sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og== - dependencies: - "@types/mime" "^1" - "@types/node" "*" - -"@types/serve-index@^1.9.4": - version "1.9.4" - resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.4.tgz#e6ae13d5053cb06ed36392110b4f9a49ac4ec898" - integrity sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug== - dependencies: - "@types/express" "*" - -"@types/serve-static@^1", "@types/serve-static@^1.15.5": - version "1.15.10" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.10.tgz#768169145a778f8f5dfcb6360aead414a3994fee" - integrity sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw== - dependencies: - "@types/http-errors" "*" - "@types/node" "*" - "@types/send" "<1" - -"@types/serve-static@^2": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-2.2.0.tgz#d4a447503ead0d1671132d1ab6bd58b805d8de6a" - integrity sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ== - dependencies: - "@types/http-errors" "*" - "@types/node" "*" - -"@types/sockjs@^0.3.36": - version "0.3.36" - resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535" - integrity sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q== - dependencies: - "@types/node" "*" - -"@types/ws@^8.5.10", "@types/ws@^8.5.12": - version "8.18.1" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.18.1.tgz#48464e4bf2ddfd17db13d845467f6070ffea4aa9" - integrity sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg== - dependencies: - "@types/node" "*" - -"@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.14.1.tgz#a9f6a07f2b03c95c8d38c4536a1fdfb521ff55b6" - integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== - dependencies: - "@webassemblyjs/helper-numbers" "1.13.2" - "@webassemblyjs/helper-wasm-bytecode" "1.13.2" - -"@webassemblyjs/floating-point-hex-parser@1.13.2": - version "1.13.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz#fcca1eeddb1cc4e7b6eed4fc7956d6813b21b9fb" - integrity sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA== - -"@webassemblyjs/helper-api-error@1.13.2": - version "1.13.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz#e0a16152248bc38daee76dd7e21f15c5ef3ab1e7" - integrity sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ== - -"@webassemblyjs/helper-buffer@1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz#822a9bc603166531f7d5df84e67b5bf99b72b96b" - integrity sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA== - -"@webassemblyjs/helper-numbers@1.13.2": - version "1.13.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz#dbd932548e7119f4b8a7877fd5a8d20e63490b2d" - integrity sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.13.2" - "@webassemblyjs/helper-api-error" "1.13.2" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.13.2": - version "1.13.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz#e556108758f448aae84c850e593ce18a0eb31e0b" - integrity sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA== - -"@webassemblyjs/helper-wasm-section@1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz#9629dda9c4430eab54b591053d6dc6f3ba050348" - integrity sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@webassemblyjs/helper-buffer" "1.14.1" - "@webassemblyjs/helper-wasm-bytecode" "1.13.2" - "@webassemblyjs/wasm-gen" "1.14.1" - -"@webassemblyjs/ieee754@1.13.2": - version "1.13.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz#1c5eaace1d606ada2c7fd7045ea9356c59ee0dba" - integrity sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.13.2": - version "1.13.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.13.2.tgz#57c5c3deb0105d02ce25fa3fd74f4ebc9fd0bbb0" - integrity sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.13.2": - version "1.13.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.13.2.tgz#917a20e93f71ad5602966c2d685ae0c6c21f60f1" - integrity sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ== - -"@webassemblyjs/wasm-edit@^1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz#ac6689f502219b59198ddec42dcd496b1004d597" - integrity sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@webassemblyjs/helper-buffer" "1.14.1" - "@webassemblyjs/helper-wasm-bytecode" "1.13.2" - "@webassemblyjs/helper-wasm-section" "1.14.1" - "@webassemblyjs/wasm-gen" "1.14.1" - "@webassemblyjs/wasm-opt" "1.14.1" - "@webassemblyjs/wasm-parser" "1.14.1" - "@webassemblyjs/wast-printer" "1.14.1" - -"@webassemblyjs/wasm-gen@1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz#991e7f0c090cb0bb62bbac882076e3d219da9570" - integrity sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@webassemblyjs/helper-wasm-bytecode" "1.13.2" - "@webassemblyjs/ieee754" "1.13.2" - "@webassemblyjs/leb128" "1.13.2" - "@webassemblyjs/utf8" "1.13.2" - -"@webassemblyjs/wasm-opt@1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz#e6f71ed7ccae46781c206017d3c14c50efa8106b" - integrity sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@webassemblyjs/helper-buffer" "1.14.1" - "@webassemblyjs/wasm-gen" "1.14.1" - "@webassemblyjs/wasm-parser" "1.14.1" - -"@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz#b3e13f1893605ca78b52c68e54cf6a865f90b9fb" - integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@webassemblyjs/helper-api-error" "1.13.2" - "@webassemblyjs/helper-wasm-bytecode" "1.13.2" - "@webassemblyjs/ieee754" "1.13.2" - "@webassemblyjs/leb128" "1.13.2" - "@webassemblyjs/utf8" "1.13.2" - -"@webassemblyjs/wast-printer@1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz#3bb3e9638a8ae5fdaf9610e7a06b4d9f9aa6fe07" - integrity sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@xtuc/long" "4.2.2" - -"@webpack-cli/configtest@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-3.0.1.tgz#76ac285b9658fa642ce238c276264589aa2b6b57" - integrity sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA== - -"@webpack-cli/info@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-3.0.1.tgz#3cff37fabb7d4ecaab6a8a4757d3826cf5888c63" - integrity sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ== - -"@webpack-cli/serve@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-3.0.1.tgz#bd8b1f824d57e30faa19eb78e4c0951056f72f00" - integrity sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg== - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -accepts@~1.3.4, accepts@~1.3.8: - version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -acorn-import-phases@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz#16eb850ba99a056cb7cbfe872ffb8972e18c8bd7" - integrity sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ== - -acorn@^8.15.0: - version "8.16.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.16.0.tgz#4ce79c89be40afe7afe8f3adb902a1f1ce9ac08a" - integrity sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw== - -ajv-formats@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" - integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== - dependencies: - ajv "^8.0.0" - -ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv-keywords@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" - integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== - dependencies: - fast-deep-equal "^3.1.3" - -ajv@^6.12.5: - version "6.14.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.14.0.tgz#fd067713e228210636ebb08c60bd3765d6dbe73a" - integrity sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^8.0.0, ajv@^8.9.0: - version "8.18.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.18.0.tgz#8864186b6738d003eb3a933172bb3833e10cefbc" - integrity sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A== - dependencies: - fast-deep-equal "^3.1.3" - fast-uri "^3.0.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - -ansi-html-community@^0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" - integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.2.2.tgz#60216eea464d864597ce2832000738a0589650c1" - integrity sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg== - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^6.1.0: - version "6.2.3" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.3.tgz#c044d5dcc521a076413472597a1acb1f103c4041" - integrity sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg== - -anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -asn1js@^3.0.6: - version "3.0.7" - resolved "https://registry.yarnpkg.com/asn1js/-/asn1js-3.0.7.tgz#15f1f2f59e60f80d5b43ef14047a294a969f824f" - integrity sha512-uLvq6KJu04qoQM6gvBfKFjlh6Gl0vOKQuR5cJMDHQkmwfMOQeN3F3SHCv9SNYSL+CRoHvOGFfllDlVz03GQjvQ== - dependencies: - pvtsutils "^1.3.6" - pvutils "^1.1.3" - tslib "^2.8.1" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64id@2.0.0, base64id@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" - integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== - -baseline-browser-mapping@^2.10.12: - version "2.10.19" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.19.tgz#7697721c22f94f66195d0c34299b1a91e3299493" - integrity sha512-qCkNLi2sfBOn8XhZQ0FXsT1Ki/Yo5P90hrkRamVFRS7/KV9hpfA4HkoWNU152+8w0zPjnxo5psx5NL3PSGgv5g== - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== - -binary-extensions@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" - integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== - -body-parser@^1.19.0, body-parser@~1.20.3: - version "1.20.4" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.4.tgz#f8e20f4d06ca8a50a71ed329c15dccad1cdc547f" - integrity sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA== - dependencies: - bytes "~3.1.2" - content-type "~1.0.5" - debug "2.6.9" - depd "2.0.0" - destroy "~1.2.0" - http-errors "~2.0.1" - iconv-lite "~0.4.24" - on-finished "~2.4.1" - qs "~6.14.0" - raw-body "~2.5.3" - type-is "~1.6.18" - unpipe "~1.0.0" - -bonjour-service@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.3.0.tgz#80d867430b5a0da64e82a8047fc1e355bdb71722" - integrity sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA== - dependencies: - fast-deep-equal "^3.1.3" - multicast-dns "^7.2.5" - -brace-expansion@^1.1.7: - version "1.1.14" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.14.tgz#d9de602370d91347cd9ddad1224d4fd701eb348b" - integrity sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.2: - version "2.1.0" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.1.0.tgz#4f41a41190216ee36067ec381526fe9539c4f0ae" - integrity sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.2, braces@^3.0.3, braces@~3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" - integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== - dependencies: - fill-range "^7.1.1" - -browser-stdout@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" - integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== - -browserslist@^4.24.0: - version "4.28.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.2.tgz#f50b65362ef48974ca9f50b3680566d786b811d2" - integrity sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg== - dependencies: - baseline-browser-mapping "^2.10.12" - caniuse-lite "^1.0.30001782" - electron-to-chromium "^1.5.328" - node-releases "^2.0.36" - update-browserslist-db "^1.2.3" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -bundle-name@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-4.1.0.tgz#f3b96b34160d6431a19d7688135af7cfb8797889" - integrity sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q== - dependencies: - run-applescript "^7.0.0" - -bytes@3.1.2, bytes@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -bytestreamjs@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/bytestreamjs/-/bytestreamjs-2.0.1.tgz#a32947c7ce389a6fa11a09a9a563d0a45889535e" - integrity sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ== - -call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" - integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - -call-bound@^1.0.2, call-bound@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" - integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== - dependencies: - call-bind-apply-helpers "^1.0.2" - get-intrinsic "^1.3.0" - -camelcase@^6.0.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -caniuse-lite@^1.0.30001782: - version "1.0.30001788" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001788.tgz#31e97d1bfec332b3f2d7eea7781460c97629b3bf" - integrity sha512-6q8HFp+lOQtcf7wBK+uEenxymVWkGKkjFpCvw5W25cmMwEDU45p1xQFBQv8JDlMMry7eNxyBaR+qxgmTUZkIRQ== - -chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chokidar@^3.5.1, chokidar@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" - integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chokidar@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.3.tgz#7be37a4c03c9aee1ecfe862a4a23b2c70c205d30" - integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA== - dependencies: - readdirp "^4.0.1" - -chrome-trace-event@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz#05bffd7ff928465093314708c93bdfa9bd1f0f5b" - integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -colorette@^2.0.10, colorette@^2.0.14: - version "2.0.20" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" - integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== - -commander@^12.1.0: - version "12.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" - integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== - -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -compressible@~2.0.18: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.8.1.tgz#4a45d909ac16509195a9a28bd91094889c180d79" - integrity sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w== - dependencies: - bytes "3.1.2" - compressible "~2.0.18" - debug "2.6.9" - negotiator "~0.6.4" - on-headers "~1.1.0" - safe-buffer "5.2.1" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -connect-history-api-fallback@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" - integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== - -connect@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" - integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== - dependencies: - debug "2.6.9" - finalhandler "1.1.2" - parseurl "~1.3.3" - utils-merge "1.0.1" - -content-disposition@~0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-type@~1.0.4, content-type@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" - integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== - -cookie-signature@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.7.tgz#ab5dd7ab757c54e60f37ef6550f481c426d10454" - integrity sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA== - -cookie@~0.7.1, cookie@~0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7" - integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== - -copy-webpack-plugin@9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz#2d2c460c4c4695ec0a58afb2801a1205256c4e6b" - integrity sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA== - dependencies: - fast-glob "^3.2.7" - glob-parent "^6.0.1" - globby "^11.0.3" - normalize-path "^3.0.0" - schema-utils "^3.1.1" - serialize-javascript "^6.0.0" - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cors@~2.8.5: - version "2.8.6" - resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.6.tgz#ff5dd69bd95e547503820d29aba4f8faf8dfec96" - integrity sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw== - dependencies: - object-assign "^4" - vary "^1" - -cross-spawn@^7.0.3, cross-spawn@^7.0.6: - version "7.0.6" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" - integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -custom-event@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" - integrity sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg== - -date-format@^4.0.14: - version "4.0.14" - resolved "https://registry.yarnpkg.com/date-format/-/date-format-4.0.14.tgz#7a8e584434fb169a521c8b7aa481f355810d9400" - integrity sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg== - -debug@2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^4.1.0, debug@^4.3.4, debug@^4.3.5, debug@~4.4.1: - version "4.4.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" - integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== - dependencies: - ms "^2.1.3" - -decamelize@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" - integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== - -default-browser-id@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-5.0.1.tgz#f7a7ccb8f5104bf8e0f71ba3b1ccfa5eafdb21e8" - integrity sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q== - -default-browser@^5.2.1: - version "5.5.0" - resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-5.5.0.tgz#2792e886f2422894545947cc80e1a444496c5976" - integrity sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw== - dependencies: - bundle-name "^4.1.0" - default-browser-id "^5.0.0" - -define-lazy-prop@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" - integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== - -depd@2.0.0, depd@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== - -destroy@1.2.0, destroy@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -detect-node@^2.0.4: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== - -di@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" - integrity sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA== - -diff@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-7.0.0.tgz#3fb34d387cd76d803f6eebea67b921dab0182a9a" - integrity sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -dns-packet@^5.2.2: - version "5.6.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" - integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== - dependencies: - "@leichtgewicht/ip-codec" "^2.0.1" - -dom-serialize@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" - integrity sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ== - dependencies: - custom-event "~1.0.0" - ent "~2.2.0" - extend "^3.0.0" - void-elements "^2.0.0" - -dunder-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" - integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== - dependencies: - call-bind-apply-helpers "^1.0.1" - es-errors "^1.3.0" - gopd "^1.2.0" - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -electron-to-chromium@^1.5.328: - version "1.5.340" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.340.tgz#fe3f76e8d9b9541c123fb7edbc3381688272f79a" - integrity sha512-908qahOGocRMinT2nM3ajCEM99H4iPdv84eagPP3FfZy/1ZGeOy2CZYzjhms81ckOPCXPlW7LkY4XpxD8r1DrA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -encodeurl@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" - integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== - -engine.io-parser@~5.2.1: - version "5.2.3" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.3.tgz#00dc5b97b1f233a23c9398d0209504cf5f94d92f" - integrity sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q== - -engine.io@~6.6.0: - version "6.6.6" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.6.6.tgz#9942111e7a4dc31f057e73470d7b7fcc7f74c390" - integrity sha512-U2SN0w3OpjFRVlrc17E6TMDmH58Xl9rai1MblNjAdwWp07Kk+llmzX0hjDpQdrDGzwmvOtgM5yI+meYX6iZ2xA== - dependencies: - "@types/cors" "^2.8.12" - "@types/node" ">=10.0.0" - "@types/ws" "^8.5.12" - accepts "~1.3.4" - base64id "2.0.0" - cookie "~0.7.2" - cors "~2.8.5" - debug "~4.4.1" - engine.io-parser "~5.2.1" - ws "~8.18.3" - -enhanced-resolve@^5.17.3: - version "5.20.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz#eeeb3966bea62c348c40a0cc9e7912e2557d0be0" - integrity sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.3.0" - -ent@~2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.2.tgz#22a5ed2fd7ce0cbcff1d1474cf4909a44bdb6e85" - integrity sha512-kKvD1tO6BM+oK9HzCPpUdRb4vKFQY/FPTFmurMvh6LlN68VMrdj77w8yp51/kDbpkFOS9J8w5W6zIzgM2H8/hw== - dependencies: - call-bound "^1.0.3" - es-errors "^1.3.0" - punycode "^1.4.1" - safe-regex-test "^1.1.0" - -envinfo@^7.14.0: - version "7.21.0" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.21.0.tgz#04a251be79f92548541f37d13c8b6f22940c3bae" - integrity sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow== - -es-define-property@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" - integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== - -es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - -es-module-lexer@^1.2.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.7.0.tgz#9159601561880a85f2734560a9099b2c31e5372a" - integrity sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA== - -es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" - integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== - dependencies: - es-errors "^1.3.0" - -escalade@^3.1.1, escalade@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" - integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-scope@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - -eventemitter3@^4.0.0: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -express@^4.22.1: - version "4.22.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.22.1.tgz#1de23a09745a4fffdb39247b344bb5eaff382069" - integrity sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "~1.20.3" - content-disposition "~0.5.4" - content-type "~1.0.4" - cookie "~0.7.1" - cookie-signature "~1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~2.0.0" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "~1.3.1" - fresh "~0.5.2" - http-errors "~2.0.0" - merge-descriptors "1.0.3" - methods "~1.1.2" - on-finished "~2.4.1" - parseurl "~1.3.3" - path-to-regexp "~0.1.12" - proxy-addr "~2.0.7" - qs "~6.14.0" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "~0.19.0" - serve-static "~1.16.2" - setprototypeof "1.2.0" - statuses "~2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -extend@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@^3.2.7, fast-glob@^3.2.9: - version "3.3.3" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" - integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== - 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.8" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-uri@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.0.tgz#66eecff6c764c0df9b762e62ca7edcfb53b4edfa" - integrity sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA== - -fastest-levenshtein@^1.0.12: - version "1.0.16" - resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" - integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== - -fastq@^1.6.0: - version "1.20.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.20.1.tgz#ca750a10dc925bc8b18839fd203e3ef4b3ced675" - integrity sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw== - dependencies: - reusify "^1.0.4" - -faye-websocket@^0.11.3: - version "0.11.4" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" - integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== - dependencies: - websocket-driver ">=0.5.1" - -fill-range@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" - integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -finalhandler@~1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.2.tgz#1ebc2228fc7673aac4a472c310cc05b77d852b88" - integrity sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg== - dependencies: - debug "2.6.9" - encodeurl "~2.0.0" - escape-html "~1.0.3" - on-finished "~2.4.1" - parseurl "~1.3.3" - statuses "~2.0.2" - unpipe "~1.0.0" - -find-up@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flat@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== - -flatted@^3.2.7: - version "3.4.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.4.2.tgz#f5c23c107f0f37de8dbdf24f13722b3b98d52726" - integrity sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA== - -follow-redirects@^1.0.0: - version "1.16.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.16.0.tgz#28474a159d3b9d11ef62050a14ed60e4df6d61bc" - integrity sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw== - -foreground-child@^3.1.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f" - integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== - dependencies: - cross-spawn "^7.0.6" - signal-exit "^4.0.1" - -format-util@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/format-util/-/format-util-1.0.5.tgz#1ffb450c8a03e7bccffe40643180918cc297d271" - integrity sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg== - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fresh@~0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.2.5, get-intrinsic@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" - integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== - dependencies: - call-bind-apply-helpers "^1.0.2" - es-define-property "^1.0.1" - es-errors "^1.3.0" - es-object-atoms "^1.1.1" - function-bind "^1.1.2" - get-proto "^1.0.1" - gopd "^1.2.0" - has-symbols "^1.1.0" - hasown "^2.0.2" - math-intrinsics "^1.1.0" - -get-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" - integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== - dependencies: - dunder-proto "^1.0.1" - es-object-atoms "^1.0.0" - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob-to-regex.js@^1.0.0, glob-to-regex.js@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz#2b323728271d133830850e32311f40766c5f6413" - integrity sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ== - -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - -glob@^10.4.5: - version "10.5.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.5.0.tgz#8ec0355919cd3338c28428a23d4f24ecc5fe738c" - integrity sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg== - dependencies: - foreground-child "^3.1.0" - jackspeak "^3.1.2" - minimatch "^9.0.4" - minipass "^7.1.2" - package-json-from-dist "^1.0.0" - path-scurry "^1.11.1" - -glob@^7.1.3, glob@^7.1.7: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globby@^11.0.3: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -gopd@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" - integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== - -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.10, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6: - version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.3, has-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" - integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== - -has-tostringtag@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" - integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== - dependencies: - has-symbols "^1.0.3" - -hasown@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.3.tgz#5e5c2b15b60370a4c7930c383dfb76bf17bc403c" - integrity sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg== - dependencies: - function-bind "^1.1.2" - -he@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== - -http-errors@~1.8.0: - version "1.8.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" - integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.1" - -http-errors@~2.0.0, http-errors@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.1.tgz#36d2f65bc909c8790018dd36fb4d93da6caae06b" - integrity sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ== - dependencies: - depd "~2.0.0" - inherits "~2.0.4" - setprototypeof "~1.2.0" - statuses "~2.0.2" - toidentifier "~1.0.1" - -http-parser-js@>=0.5.1: - version "0.5.10" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.10.tgz#b3277bd6d7ed5588e20ea73bf724fcbe44609075" - integrity sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA== - -http-proxy-middleware@^2.0.9: - version "2.0.9" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz#e9e63d68afaa4eee3d147f39149ab84c0c2815ef" - integrity sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q== - dependencies: - "@types/http-proxy" "^1.17.8" - http-proxy "^1.18.1" - is-glob "^4.0.1" - is-plain-obj "^3.0.0" - micromatch "^4.0.2" - -http-proxy@^1.18.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -hyperdyperid@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/hyperdyperid/-/hyperdyperid-1.2.0.tgz#59668d323ada92228d2a869d3e474d5a33b69e6b" - integrity sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A== - -iconv-lite@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - -iconv-lite@~0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ignore@^5.2.0: - version "5.3.2" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" - integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== - -import-local@^3.0.2: - version "3.2.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" - integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3, inherits@~2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -interpret@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" - integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== - -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -ipaddr.js@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.3.0.tgz#71dce70e1398122208996d1c22f2ba46a24b1abc" - integrity sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-core-module@^2.16.1: - version "2.16.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" - integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== - dependencies: - hasown "^2.0.2" - -is-docker@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" - integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-inside-container@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" - integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== - dependencies: - is-docker "^3.0.0" - -is-network-error@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/is-network-error/-/is-network-error-1.3.1.tgz#a2a86b80ffd6b05b774755c73c8aaab16597e58d" - integrity sha512-6QCxa49rQbmUWLfk0nuGqzql9U8uaV2H6279bRErPBHe/109hCzsLUBUHfbEtvLIHBd6hyXbgedBSHevm43Edw== - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-plain-obj@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" - integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== - -is-plain-obj@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" - integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== - -is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-regex@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.2.1.tgz#76d70a3ed10ef9be48eb577887d74205bf0cad22" - integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g== - dependencies: - call-bound "^1.0.2" - gopd "^1.2.0" - has-tostringtag "^1.0.2" - hasown "^2.0.2" - -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - -is-wsl@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-3.1.1.tgz#327897b26832a3eb117da6c27492d04ca132594f" - integrity sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw== - dependencies: - is-inside-container "^1.0.0" - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isbinaryfile@^4.0.8: - version "4.0.10" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" - integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - -jackspeak@^3.1.2: - version "3.4.3" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" - integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - -jest-worker@^27.4.5: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -js-yaml@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.1.tgz#854c292467705b699476e1a2decc0c8a3458806b" - integrity sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA== - dependencies: - argparse "^2.0.1" - -json-parse-even-better-errors@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== - optionalDependencies: - graceful-fs "^4.1.6" - -karma-chrome-launcher@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz#eb9c95024f2d6dfbb3748d3415ac9b381906b9a9" - integrity sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q== - dependencies: - which "^1.2.1" - -karma-mocha@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/karma-mocha/-/karma-mocha-2.0.1.tgz#4b0254a18dfee71bdbe6188d9a6861bf86b0cd7d" - integrity sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ== - dependencies: - minimist "^1.2.3" - -karma-sourcemap-loader@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.4.0.tgz#b01d73f8f688f533bcc8f5d273d43458e13b5488" - integrity sha512-xCRL3/pmhAYF3I6qOrcn0uhbQevitc2DERMPH82FMnG+4WReoGcGFZb1pURf2a5apyrOHRdvD+O6K7NljqKHyA== - dependencies: - graceful-fs "^4.2.10" - -karma-webpack@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-5.0.1.tgz#4eafd31bbe684a747a6e8f3e4ad373e53979ced4" - integrity sha512-oo38O+P3W2mSPCSUrQdySSPv1LvPpXP+f+bBimNomS5sW+1V4SuhCuW8TfJzV+rDv921w2fDSDw0xJbPe6U+kQ== - dependencies: - glob "^7.1.3" - minimatch "^9.0.3" - webpack-merge "^4.1.5" - -"karma@github:Kotlin/karma#6.4.5": - version "6.4.4" - resolved "https://codeload.github.com/Kotlin/karma/tar.gz/239a8fc984584f0d96b1dd750e7a5e2c79da93a6" - dependencies: - "@colors/colors" "1.5.0" - body-parser "^1.19.0" - braces "^3.0.2" - chokidar "^3.5.1" - connect "^3.7.0" - di "^0.0.1" - dom-serialize "^2.2.1" - glob "^7.1.7" - graceful-fs "^4.2.6" - http-proxy "^1.18.1" - isbinaryfile "^4.0.8" - lodash "^4.17.21" - log4js "^6.4.1" - mime "^2.5.2" - minimatch "^3.0.4" - mkdirp "^0.5.5" - qjobs "^1.2.0" - range-parser "^1.2.1" - rimraf "^3.0.2" - socket.io "^4.7.2" - source-map "^0.6.1" - tmp "^0.2.1" - ua-parser-js "^0.7.30" - yargs "^16.1.1" - -kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -kotlin-web-helpers@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/kotlin-web-helpers/-/kotlin-web-helpers-3.0.0.tgz#3ed6b48f694f74bb60a737a9d7e2c0e3b29abdb9" - integrity sha512-kdQO4AJQkUPvpLh9aglkXDRyN+CfXO7pKq+GESEnxooBFkQpytLrqZis3ABvmFN1cGw/ZQ/K38u5sRGW+NfBnw== - dependencies: - format-util "^1.0.5" - -launch-editor@^2.6.1: - version "2.13.2" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.13.2.tgz#41d51baaf8afb393224b89bd2bcb4e02f2306405" - integrity sha512-4VVDnbOpLXy/s8rdRCSXb+zfMeFR0WlJWpET1iA9CQdlZDfwyLjUuGQzXU4VeOoey6AicSAluWan7Etga6Kcmg== - dependencies: - picocolors "^1.1.1" - shell-quote "^1.8.3" - -loader-runner@^4.2.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.1.tgz#6c76ed29b0ccce9af379208299f07f876de737e3" - integrity sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q== - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash@^4.17.15, lodash@^4.17.21: - version "4.18.1" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.18.1.tgz#ff2b66c1f6326d59513de2407bf881439812771c" - integrity sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q== - -log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -log4js@^6.4.1: - version "6.9.1" - resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.9.1.tgz#aba5a3ff4e7872ae34f8b4c533706753709e38b6" - integrity sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g== - dependencies: - date-format "^4.0.14" - debug "^4.3.4" - flatted "^3.2.7" - rfdc "^1.3.0" - streamroller "^3.1.5" - -lru-cache@^10.2.0: - version "10.4.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" - integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== - -math-intrinsics@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" - integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - -memfs@^4.43.1: - version "4.57.2" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.57.2.tgz#5f74e977c9a14681ea10d427b3ce5d7db5f817e7" - integrity sha512-2nWzSsJzrukurSDna4Z0WywuScK4Id3tSKejgu74u8KCdW4uNrseKRSIDg75C6Yw5ZRqBe0F0EtMNlTbUq8bAQ== - dependencies: - "@jsonjoy.com/fs-core" "4.57.2" - "@jsonjoy.com/fs-fsa" "4.57.2" - "@jsonjoy.com/fs-node" "4.57.2" - "@jsonjoy.com/fs-node-builtins" "4.57.2" - "@jsonjoy.com/fs-node-to-fsa" "4.57.2" - "@jsonjoy.com/fs-node-utils" "4.57.2" - "@jsonjoy.com/fs-print" "4.57.2" - "@jsonjoy.com/fs-snapshot" "4.57.2" - "@jsonjoy.com/json-pack" "^1.11.0" - "@jsonjoy.com/util" "^1.9.0" - glob-to-regex.js "^1.0.1" - thingies "^2.5.0" - tree-dump "^1.0.3" - tslib "^2.0.0" - -merge-descriptors@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" - integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== - -micromatch@^4.0.2, micromatch@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" - integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== - dependencies: - braces "^3.0.3" - picomatch "^2.3.1" - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -"mime-db@>= 1.43.0 < 2", mime-db@^1.54.0: - version "1.54.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5" - integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== - -mime-types@^2.1.27, mime-types@~2.1.24, mime-types@~2.1.34, mime-types@~2.1.35: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime-types@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-3.0.2.tgz#39002d4182575d5af036ffa118100f2524b2e2ab" - integrity sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A== - dependencies: - mime-db "^1.54.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.5.2: - version "2.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" - integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== - -minimalistic-assert@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimatch@^3.0.4, minimatch@^3.1.1: - version "3.1.5" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.5.tgz#580c88f8d5445f2bd6aa8f3cadefa0de79fbd69e" - integrity sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^9.0.3, minimatch@^9.0.4, minimatch@^9.0.5: - version "9.0.9" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.9.tgz#9b0cb9fcb78087f6fd7eababe2511c4d3d60574e" - integrity sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg== - dependencies: - brace-expansion "^2.0.2" - -minimist@^1.2.3, minimist@^1.2.6: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: - version "7.1.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.3.tgz#79389b4eb1bb2d003a9bba87d492f2bd37bdc65b" - integrity sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A== - -mkdirp@^0.5.5: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - -mocha@11.7.5: - version "11.7.5" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-11.7.5.tgz#58f5bbfa5e0211ce7e5ee6128107cefc2515a627" - integrity sha512-mTT6RgopEYABzXWFx+GcJ+ZQ32kp4fMf0xvpZIIfSq9Z8lC/++MtcCnQ9t5FP2veYEP95FIYSvW+U9fV4xrlig== - dependencies: - browser-stdout "^1.3.1" - chokidar "^4.0.1" - debug "^4.3.5" - diff "^7.0.0" - escape-string-regexp "^4.0.0" - find-up "^5.0.0" - glob "^10.4.5" - he "^1.2.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - log-symbols "^4.1.0" - minimatch "^9.0.5" - ms "^2.1.3" - picocolors "^1.1.1" - serialize-javascript "^6.0.2" - strip-json-comments "^3.1.1" - supports-color "^8.1.1" - workerpool "^9.2.0" - yargs "^17.7.2" - yargs-parser "^21.1.1" - yargs-unparser "^2.0.0" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.1.3, ms@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -multicast-dns@^7.2.5: - version "7.2.5" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" - integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== - dependencies: - dns-packet "^5.2.2" - thunky "^1.0.2" - -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -negotiator@~0.6.4: - version "0.6.4" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.4.tgz#777948e2452651c570b712dd01c23e262713fff7" - integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w== - -neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -node-releases@^2.0.36: - version "2.0.37" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.37.tgz#9bd4f10b77ba39c2b9402d4e8399c482a797f671" - integrity sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg== - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -object-assign@^4: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-inspect@^1.13.3, object-inspect@^1.13.4: - version "1.13.4" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" - integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== - -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - -on-finished@^2.4.1, on-finished@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== - dependencies: - ee-first "1.1.1" - -on-headers@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.1.0.tgz#59da4f91c45f5f989c6e4bcedc5a3b0aed70ff65" - integrity sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A== - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -open@^10.0.3: - version "10.2.0" - resolved "https://registry.yarnpkg.com/open/-/open-10.2.0.tgz#b9d855be007620e80b6fb05fac98141fe62db73c" - integrity sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA== - dependencies: - default-browser "^5.2.1" - define-lazy-prop "^3.0.0" - is-inside-container "^1.0.0" - wsl-utils "^0.1.0" - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-retry@^6.2.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-6.2.1.tgz#81828f8dc61c6ef5a800585491572cc9892703af" - integrity sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ== - dependencies: - "@types/retry" "0.12.2" - is-network-error "^1.0.0" - retry "^0.13.1" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -package-json-from-dist@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" - integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== - -parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-scurry@^1.11.1: - version "1.11.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" - integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== - dependencies: - lru-cache "^10.2.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - -path-to-regexp@~0.1.12: - version "0.1.13" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.13.tgz#9b22ec16bc3ab88d05a0c7e369869421401ab17d" - integrity sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -picocolors@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" - integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.2.tgz#5a942915e26b372dc0f0e6753149a16e6b1c5601" - integrity sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA== - -pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pkijs@^3.3.3: - version "3.4.0" - resolved "https://registry.yarnpkg.com/pkijs/-/pkijs-3.4.0.tgz#d9164def30ff6d97be2d88966d5e36192499ca9c" - integrity sha512-emEcLuomt2j03vxD54giVB4SxTjnsqkU692xZOZXHDVoYyypEm+b3jpiTcc+Cf+myooc+/Ly0z01jqeNHVgJGw== - dependencies: - "@noble/hashes" "1.4.0" - asn1js "^3.0.6" - bytestreamjs "^2.0.1" - pvtsutils "^1.3.6" - pvutils "^1.1.3" - tslib "^2.8.1" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -proxy-addr@~2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== - -punycode@^2.1.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - -pvtsutils@^1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.3.6.tgz#ec46e34db7422b9e4fdc5490578c1883657d6001" - integrity sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg== - dependencies: - tslib "^2.8.1" - -pvutils@^1.1.3: - version "1.1.5" - resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.1.5.tgz#84b0dea4a5d670249aa9800511804ee0b7c2809c" - integrity sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA== - -qjobs@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" - integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== - -qs@~6.14.0: - version "6.14.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.2.tgz#b5634cf9d9ad9898e31fba3504e866e8efb6798c" - integrity sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q== - dependencies: - side-channel "^1.1.0" - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@~2.5.3: - version "2.5.3" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.3.tgz#11c6650ee770a7de1b494f197927de0c923822e2" - integrity sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA== - dependencies: - bytes "~3.1.2" - http-errors "~2.0.1" - iconv-lite "~0.4.24" - unpipe "~1.0.0" - -readable-stream@^2.0.1: - version "2.3.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.0.6: - version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@^4.0.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.1.2.tgz#eb85801435fbf2a7ee58f19e0921b068fc69948d" - integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg== - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -rechoir@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" - integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== - dependencies: - resolve "^1.20.0" - -reflect-metadata@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.2.2.tgz#400c845b6cba87a21f2c65c4aeb158f4fa4d9c5b" - integrity sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q== - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve@^1.20.0: - version "1.22.12" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.12.tgz#f5b2a680897c69c238a13cd16b15671f8b73549f" - integrity sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA== - dependencies: - es-errors "^1.3.0" - is-core-module "^2.16.1" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -retry@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - -reusify@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f" - integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== - -rfdc@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca" - integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -run-applescript@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-7.1.0.tgz#2e9e54c4664ec3106c5b5630e249d3d6595c4911" - integrity sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q== - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-regex-test@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.1.0.tgz#7f87dfb67a3150782eaaf18583ff5d1711ac10c1" - integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw== - dependencies: - call-bound "^1.0.2" - es-errors "^1.3.0" - is-regex "^1.2.1" - -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -schema-utils@^3.1.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" - integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -schema-utils@^4.0.0, schema-utils@^4.2.0, schema-utils@^4.3.0, schema-utils@^4.3.2: - version "4.3.3" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.3.3.tgz#5b1850912fa31df90716963d45d9121fdfc09f46" - integrity sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA== - dependencies: - "@types/json-schema" "^7.0.9" - ajv "^8.9.0" - ajv-formats "^2.1.1" - ajv-keywords "^5.1.0" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== - -selfsigned@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-5.5.0.tgz#4c9ab7c7c9f35f18fb6a9882c253eb0e6bd6557b" - integrity sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew== - dependencies: - "@peculiar/x509" "^1.14.2" - pkijs "^3.3.3" - -send@~0.19.0, send@~0.19.1: - version "0.19.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.19.2.tgz#59bc0da1b4ea7ad42736fd642b1c4294e114ff29" - integrity sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg== - dependencies: - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl "~2.0.0" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "~0.5.2" - http-errors "~2.0.1" - mime "1.6.0" - ms "2.1.3" - on-finished "~2.4.1" - range-parser "~1.2.1" - statuses "~2.0.2" - -serialize-javascript@^6.0.0, serialize-javascript@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" - integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== - dependencies: - randombytes "^2.1.0" - -serve-index@^1.9.1: - version "1.9.2" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.2.tgz#2988e3612106d78a5e4849ddff552ce7bd3d9bcb" - integrity sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ== - dependencies: - accepts "~1.3.8" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.8.0" - mime-types "~2.1.35" - parseurl "~1.3.3" - -serve-static@~1.16.2: - version "1.16.3" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.3.tgz#a97b74d955778583f3862a4f0b841eb4d5d78cf9" - integrity sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA== - dependencies: - encodeurl "~2.0.0" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "~0.19.1" - -setprototypeof@1.2.0, setprototypeof@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-quote@^1.8.3: - version "1.8.3" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.3.tgz#55e40ef33cf5c689902353a3d8cd1a6725f08b4b" - integrity sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw== - -side-channel-list@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.1.tgz#c2e0b5a14a540aebee3bbc6c3f8666cc9b509127" - integrity sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w== - dependencies: - es-errors "^1.3.0" - object-inspect "^1.13.4" - -side-channel-map@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" - integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== - dependencies: - call-bound "^1.0.2" - es-errors "^1.3.0" - get-intrinsic "^1.2.5" - object-inspect "^1.13.3" - -side-channel-weakmap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" - integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== - dependencies: - call-bound "^1.0.2" - es-errors "^1.3.0" - get-intrinsic "^1.2.5" - object-inspect "^1.13.3" - side-channel-map "^1.0.1" - -side-channel@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" - integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== - dependencies: - es-errors "^1.3.0" - object-inspect "^1.13.3" - side-channel-list "^1.0.0" - side-channel-map "^1.0.1" - side-channel-weakmap "^1.0.2" - -signal-exit@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -socket.io-adapter@~2.5.2: - version "2.5.6" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.5.6.tgz#c697f609d36a676a46749782274607d8df52c1d8" - integrity sha512-DkkO/dz7MGln0dHn5bmN3pPy+JmywNICWrJqVWiVOyvXjWQFIv9c2h24JrQLLFJ2aQVQf/Cvl1vblnd4r2apLQ== - dependencies: - debug "~4.4.1" - ws "~8.18.3" - -socket.io-parser@~4.2.4: - version "4.2.6" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.6.tgz#19156bf179af3931abd05260cfb1491822578a6f" - integrity sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg== - dependencies: - "@socket.io/component-emitter" "~3.1.0" - debug "~4.4.1" - -socket.io@^4.7.2: - version "4.8.3" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.8.3.tgz#ca6ba1431c69532e1e0a6f496deebeb601dbc4df" - integrity sha512-2Dd78bqzzjE6KPkD5fHZmDAKRNe3J15q+YHDrIsy9WEkqttc7GY+kT9OBLSMaPbQaEd0x1BjcmtMtXkfpc+T5A== - dependencies: - accepts "~1.3.4" - base64id "~2.0.0" - cors "~2.8.5" - debug "~4.4.1" - engine.io "~6.6.0" - socket.io-adapter "~2.5.2" - socket.io-parser "~4.2.4" - -sockjs@^0.3.24: - version "0.3.24" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" - integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== - dependencies: - faye-websocket "^0.11.3" - uuid "^8.3.2" - websocket-driver "^0.7.4" - -source-map-js@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" - integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== - -source-map-loader@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-5.0.0.tgz#f593a916e1cc54471cfc8851b905c8a845fc7e38" - integrity sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA== - dependencies: - iconv-lite "^0.6.3" - source-map-js "^1.0.2" - -source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0, source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" - integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - -sql.js@1.11.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/sql.js/-/sql.js-1.11.0.tgz#2fcfb6aa24fae9b8ecc5395c70fc596a71247994" - integrity sha512-GsLUDU3vhOo14Pd5ME0y2te49JQyby6HuoCuadevEV+CGgTUjmYRrm7B7lhRyzOgrmcWmspUfyjNb6sOAEqdsA== - -"statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - -statuses@~2.0.1, statuses@~2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.2.tgz#8f75eecef765b5e1cfcdc080da59409ed424e382" - integrity sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw== - -streamroller@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-3.1.5.tgz#1263182329a45def1ffaef58d31b15d13d2ee7ff" - integrity sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw== - dependencies: - date-format "^4.0.14" - debug "^4.3.4" - fs-extra "^8.1.0" - -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^7.0.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.2.0.tgz#d22a269522836a627af8d04b5c3fd2c7fa3e32e3" - integrity sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w== - dependencies: - ansi-regex "^6.2.2" - -strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.0.0, supports-color@^8.1.1: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -tapable@^2.1.1, tapable@^2.3.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.3.2.tgz#86755feabad08d82a26b891db044808c6ad00f15" - integrity sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA== - -terser-webpack-plugin@^5.3.11: - version "5.4.0" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz#95fc4cf4437e587be11ecf37d08636089174d76b" - integrity sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g== - dependencies: - "@jridgewell/trace-mapping" "^0.3.25" - jest-worker "^27.4.5" - schema-utils "^4.3.0" - terser "^5.31.1" - -terser@^5.31.1: - version "5.46.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.46.1.tgz#40e4b1e35d5f13130f82793a8b3eeb7ec3a92eee" - integrity sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ== - dependencies: - "@jridgewell/source-map" "^0.3.3" - acorn "^8.15.0" - commander "^2.20.0" - source-map-support "~0.5.20" - -thingies@^2.5.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/thingies/-/thingies-2.6.0.tgz#e09b98b9e6f6caf8a759eca8481fea1de974d2b1" - integrity sha512-rMHRjmlFLM1R96UYPvpmnc3LYtdFrT33JIB7L9hetGue1qAPfn1N2LJeEjxUSidu1Iku+haLZXDuEXUHNGO/lg== - -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - -tmp@^0.2.1: - version "0.2.5" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.5.tgz#b06bcd23f0f3c8357b426891726d16015abfd8f8" - integrity sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -toidentifier@1.0.1, toidentifier@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -tree-dump@^1.0.3, tree-dump@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/tree-dump/-/tree-dump-1.1.0.tgz#ab29129169dc46004414f5a9d4a3c6e89f13e8a4" - integrity sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA== - -tslib@^1.9.3: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.0.0, tslib@^2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" - integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== - -tsyringe@^4.10.0: - version "4.10.0" - resolved "https://registry.yarnpkg.com/tsyringe/-/tsyringe-4.10.0.tgz#d0c95815d584464214060285eaaadd94aa03299c" - integrity sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw== - dependencies: - tslib "^1.9.3" - -type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -ua-parser-js@^0.7.30: - version "0.7.41" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.41.tgz#9f6dee58c389e8afababa62a4a2dc22edb69a452" - integrity sha512-O3oYyCMPYgNNHuO7Jjk3uacJWZF8loBgwrfd/5LE/HyZ3lUIOdniQ7DNXJcIgZbwioZxk0fLfI4EVnetdiX5jg== - -undici-types@~7.19.0: - version "7.19.2" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.19.2.tgz#1b67fc26d0f157a0cba3a58a5b5c1e2276b8ba2a" - integrity sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg== - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - -update-browserslist-db@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz#64d76db58713136acbeb4c49114366cc6cc2e80d" - integrity sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w== - dependencies: - escalade "^3.2.0" - picocolors "^1.1.1" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -vary@^1, vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - -void-elements@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" - integrity sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung== - -watchpack@^2.4.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.5.1.tgz#dd38b601f669e0cbf567cb802e75cead82cde102" - integrity sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - -webpack-cli@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-6.0.1.tgz#a1ce25da5ba077151afd73adfa12e208e5089207" - integrity sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw== - dependencies: - "@discoveryjs/json-ext" "^0.6.1" - "@webpack-cli/configtest" "^3.0.1" - "@webpack-cli/info" "^3.0.1" - "@webpack-cli/serve" "^3.0.1" - colorette "^2.0.14" - commander "^12.1.0" - cross-spawn "^7.0.3" - envinfo "^7.14.0" - fastest-levenshtein "^1.0.12" - import-local "^3.0.2" - interpret "^3.1.1" - rechoir "^0.8.0" - webpack-merge "^6.0.1" - -webpack-dev-middleware@^7.4.2: - version "7.4.5" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz#d4e8720aa29cb03bc158084a94edb4594e3b7ac0" - integrity sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA== - dependencies: - colorette "^2.0.10" - memfs "^4.43.1" - mime-types "^3.0.1" - on-finished "^2.4.1" - range-parser "^1.2.1" - schema-utils "^4.0.0" - -webpack-dev-server@5.2.3: - version "5.2.3" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-5.2.3.tgz#7f36a78be7ac88833fd87757edee31469a9e47d3" - integrity sha512-9Gyu2F7+bg4Vv+pjbovuYDhHX+mqdqITykfzdM9UyKqKHlsE5aAjRhR+oOEfXW5vBeu8tarzlJFIZva4ZjAdrQ== - dependencies: - "@types/bonjour" "^3.5.13" - "@types/connect-history-api-fallback" "^1.5.4" - "@types/express" "^4.17.25" - "@types/express-serve-static-core" "^4.17.21" - "@types/serve-index" "^1.9.4" - "@types/serve-static" "^1.15.5" - "@types/sockjs" "^0.3.36" - "@types/ws" "^8.5.10" - ansi-html-community "^0.0.8" - bonjour-service "^1.2.1" - chokidar "^3.6.0" - colorette "^2.0.10" - compression "^1.8.1" - connect-history-api-fallback "^2.0.0" - express "^4.22.1" - graceful-fs "^4.2.6" - http-proxy-middleware "^2.0.9" - ipaddr.js "^2.1.0" - launch-editor "^2.6.1" - open "^10.0.3" - p-retry "^6.2.0" - schema-utils "^4.2.0" - selfsigned "^5.5.0" - serve-index "^1.9.1" - sockjs "^0.3.24" - spdy "^4.0.2" - webpack-dev-middleware "^7.4.2" - ws "^8.18.0" - -webpack-merge@^4.1.5: - version "4.2.2" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" - integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== - dependencies: - lodash "^4.17.15" - -webpack-merge@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-6.0.1.tgz#50c776868e080574725abc5869bd6e4ef0a16c6a" - integrity sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg== - dependencies: - clone-deep "^4.0.1" - flat "^5.0.2" - wildcard "^2.0.1" - -webpack-sources@^3.3.3: - version "3.3.4" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.3.4.tgz#a338b95eb484ecc75fbb196cbe8a2890618b4891" - integrity sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q== - -webpack@5.101.3: - version "5.101.3" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.101.3.tgz#3633b2375bb29ea4b06ffb1902734d977bc44346" - integrity sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A== - dependencies: - "@types/eslint-scope" "^3.7.7" - "@types/estree" "^1.0.8" - "@types/json-schema" "^7.0.15" - "@webassemblyjs/ast" "^1.14.1" - "@webassemblyjs/wasm-edit" "^1.14.1" - "@webassemblyjs/wasm-parser" "^1.14.1" - acorn "^8.15.0" - acorn-import-phases "^1.0.3" - browserslist "^4.24.0" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.17.3" - es-module-lexer "^1.2.1" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.11" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^4.3.2" - tapable "^2.1.1" - terser-webpack-plugin "^5.3.11" - watchpack "^2.4.1" - webpack-sources "^3.3.3" - -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - -which@^1.2.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wildcard@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" - integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== - -workerpool@^9.2.0: - version "9.3.4" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-9.3.4.tgz#f6c92395b2141afd78e2a889e80cb338fe9fca41" - integrity sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg== - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -ws@8.18.0: - version "8.18.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" - integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== - -ws@8.18.3, ws@~8.18.3: - version "8.18.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" - integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== - -ws@^8.18.0: - version "8.20.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.20.0.tgz#4cd9532358eba60bc863aad1623dfb045a4d4af8" - integrity sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA== - -wsl-utils@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/wsl-utils/-/wsl-utils-0.1.0.tgz#8783d4df671d4d50365be2ee4c71917a0557baab" - integrity sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw== - dependencies: - is-wsl "^3.1.0" - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs-unparser@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" - integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== - dependencies: - camelcase "^6.0.0" - decamelize "^4.0.0" - flat "^5.0.2" - is-plain-obj "^2.1.0" - -yargs@^16.1.1: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yargs@^17.7.2: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/ktor/library-ktor-no-op/api/jvm/library-ktor-no-op.api b/ktor/library-ktor-no-op/api/jvm/library-ktor-no-op.api deleted file mode 100644 index c177009f..00000000 --- a/ktor/library-ktor-no-op/api/jvm/library-ktor-no-op.api +++ /dev/null @@ -1,19 +0,0 @@ -public final class ro/cosminmihu/ktor/monitor/KtorMonitorLoggingConfig { - public fun ()V - public final fun filter (Lkotlin/jvm/functions/Function1;)V - public final fun getMaxContentLength ()I - public final fun getRetentionPeriod-UwyO8pc ()J - public final fun getShowNotification ()Z - public final fun isActive ()Z - public final fun sanitizeHeader (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V - public static synthetic fun sanitizeHeader$default (Lro/cosminmihu/ktor/monitor/KtorMonitorLoggingConfig;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V - public final fun setActive (Z)V - public final fun setMaxContentLength (I)V - public final fun setRetentionPeriod-LRDsOJo (J)V - public final fun setShowNotification (Z)V -} - -public final class ro/cosminmihu/ktor/monitor/KtorMonitorLoggingKt { - public static final fun getKtorMonitorLogging ()Lio/ktor/client/plugins/api/ClientPlugin; -} - diff --git a/ktor/library-ktor-no-op/api/android/library-ktor-no-op.api b/ktor/library-ktor-no-op/api/library-ktor-no-op.api similarity index 100% rename from ktor/library-ktor-no-op/api/android/library-ktor-no-op.api rename to ktor/library-ktor-no-op/api/library-ktor-no-op.api diff --git a/ktor/library-ktor-no-op/api/library-ktor-no-op.klib.api b/ktor/library-ktor-no-op/api/library-ktor-no-op.klib.api index aa0ca50e..3a64a495 100644 --- a/ktor/library-ktor-no-op/api/library-ktor-no-op.klib.api +++ b/ktor/library-ktor-no-op/api/library-ktor-no-op.klib.api @@ -1,11 +1,11 @@ // Klib ABI Dump -// Targets: [iosArm64, iosSimulatorArm64, js, wasmJs] +// Targets: [iosArm64, iosSimulatorArm64] // Rendering settings: // - Signature version: 2 // - Show manifest properties: true // - Show declarations: true -// Library unique name: +// Library unique name: final class ro.cosminmihu.ktor.monitor/KtorMonitorLoggingConfig { // ro.cosminmihu.ktor.monitor/KtorMonitorLoggingConfig|null[0] constructor () // ro.cosminmihu.ktor.monitor/KtorMonitorLoggingConfig.|(){}[0] diff --git a/ktor/library-ktor-no-op/build.gradle.kts b/ktor/library-ktor-no-op/build.gradle.kts index 504bf8de..4f8c5546 100644 --- a/ktor/library-ktor-no-op/build.gradle.kts +++ b/ktor/library-ktor-no-op/build.gradle.kts @@ -1,4 +1,3 @@ -import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { @@ -9,10 +8,6 @@ plugins { } mavenPublishing { - publishToMavenCentral() - - signAllPublications() - val artifact = "ktor-monitor-logging-no-op" coordinates(group.toString(), artifact, version.toString()) @@ -79,15 +74,6 @@ kotlin { freeCompilerArgs.add("-Xexpect-actual-classes") // TODO remove after jetbrains fix } - js { - browser() - } - - @OptIn(ExperimentalWasmDsl::class) - wasmJs { - browser() - } - androidTarget { compilerOptions { jvmTarget.set(JvmTarget.JVM_11) @@ -100,18 +86,12 @@ kotlin { iosSimulatorArm64(), ) - jvm() - sourceSets { commonMain.dependencies { api(projects.core.libraryNoOp) implementation(libs.ktor.client.core) } } - - jvmToolchain { - languageVersion = JavaLanguageVersion.of(11) - } } android { diff --git a/ktor/library-ktor/api/jvm/library-ktor.api b/ktor/library-ktor/api/jvm/library-ktor.api deleted file mode 100644 index c177009f..00000000 --- a/ktor/library-ktor/api/jvm/library-ktor.api +++ /dev/null @@ -1,19 +0,0 @@ -public final class ro/cosminmihu/ktor/monitor/KtorMonitorLoggingConfig { - public fun ()V - public final fun filter (Lkotlin/jvm/functions/Function1;)V - public final fun getMaxContentLength ()I - public final fun getRetentionPeriod-UwyO8pc ()J - public final fun getShowNotification ()Z - public final fun isActive ()Z - public final fun sanitizeHeader (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V - public static synthetic fun sanitizeHeader$default (Lro/cosminmihu/ktor/monitor/KtorMonitorLoggingConfig;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V - public final fun setActive (Z)V - public final fun setMaxContentLength (I)V - public final fun setRetentionPeriod-LRDsOJo (J)V - public final fun setShowNotification (Z)V -} - -public final class ro/cosminmihu/ktor/monitor/KtorMonitorLoggingKt { - public static final fun getKtorMonitorLogging ()Lio/ktor/client/plugins/api/ClientPlugin; -} - diff --git a/ktor/library-ktor/api/android/library-ktor.api b/ktor/library-ktor/api/library-ktor.api similarity index 100% rename from ktor/library-ktor/api/android/library-ktor.api rename to ktor/library-ktor/api/library-ktor.api diff --git a/ktor/library-ktor/api/library-ktor.klib.api b/ktor/library-ktor/api/library-ktor.klib.api index 83ed883c..22259fcc 100644 --- a/ktor/library-ktor/api/library-ktor.klib.api +++ b/ktor/library-ktor/api/library-ktor.klib.api @@ -1,11 +1,11 @@ // Klib ABI Dump -// Targets: [iosArm64, iosSimulatorArm64, js, wasmJs] +// Targets: [iosArm64, iosSimulatorArm64] // Rendering settings: // - Signature version: 2 // - Show manifest properties: true // - Show declarations: true -// Library unique name: +// Library unique name: final class ro.cosminmihu.ktor.monitor/KtorMonitorLoggingConfig { // ro.cosminmihu.ktor.monitor/KtorMonitorLoggingConfig|null[0] constructor () // ro.cosminmihu.ktor.monitor/KtorMonitorLoggingConfig.|(){}[0] diff --git a/ktor/library-ktor/build.gradle.kts b/ktor/library-ktor/build.gradle.kts index 99a3ae40..731e2dab 100644 --- a/ktor/library-ktor/build.gradle.kts +++ b/ktor/library-ktor/build.gradle.kts @@ -1,4 +1,3 @@ -import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { @@ -10,10 +9,6 @@ plugins { } mavenPublishing { - publishToMavenCentral() - - signAllPublications() - val artifact = "ktor-monitor-logging" coordinates(group.toString(), artifact, version.toString()) @@ -96,15 +91,6 @@ kotlin { freeCompilerArgs.add("-Xexpect-actual-classes") // TODO remove after jetbrains fix } - js { - browser() - } - - @OptIn(ExperimentalWasmDsl::class) - wasmJs { - browser() - } - androidTarget { compilerOptions { jvmTarget.set(JvmTarget.JVM_11) @@ -117,8 +103,6 @@ kotlin { iosSimulatorArm64(), ) - jvm() - sourceSets { commonMain.dependencies { api(projects.core.library) diff --git a/okhttp/library-okhttp-no-op/api/android/library-okhttp-no-op.api b/okhttp/library-okhttp-no-op/api/android/library-okhttp-no-op.api deleted file mode 100644 index 30030095..00000000 --- a/okhttp/library-okhttp-no-op/api/android/library-okhttp-no-op.api +++ /dev/null @@ -1,22 +0,0 @@ -public final class ro/cosminmihu/ktor/monitor/KtorMonitorInterceptor : okhttp3/Interceptor { - public fun ()V - public fun (Lkotlin/jvm/functions/Function1;)V - public fun intercept (Lokhttp3/Interceptor$Chain;)Lokhttp3/Response; -} - -public final class ro/cosminmihu/ktor/monitor/KtorMonitorInterceptorConfig { - public fun ()V - public fun (Lkotlin/jvm/functions/Function1;)V - public final fun filter (Lkotlin/jvm/functions/Function1;)V - public final fun getMaxContentLength ()I - public final fun getRetentionPeriod-UwyO8pc ()J - public final fun getShowNotification ()Z - public final fun isActive ()Z - public final fun sanitizeHeader (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V - public static synthetic fun sanitizeHeader$default (Lro/cosminmihu/ktor/monitor/KtorMonitorInterceptorConfig;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V - public final fun setActive (Z)V - public final fun setMaxContentLength (I)V - public final fun setRetentionPeriod-LRDsOJo (J)V - public final fun setShowNotification (Z)V -} - diff --git a/okhttp/library-okhttp-no-op/api/jvm/library-okhttp-no-op.api b/okhttp/library-okhttp-no-op/api/jvm/library-okhttp-no-op.api deleted file mode 100644 index 30030095..00000000 --- a/okhttp/library-okhttp-no-op/api/jvm/library-okhttp-no-op.api +++ /dev/null @@ -1,22 +0,0 @@ -public final class ro/cosminmihu/ktor/monitor/KtorMonitorInterceptor : okhttp3/Interceptor { - public fun ()V - public fun (Lkotlin/jvm/functions/Function1;)V - public fun intercept (Lokhttp3/Interceptor$Chain;)Lokhttp3/Response; -} - -public final class ro/cosminmihu/ktor/monitor/KtorMonitorInterceptorConfig { - public fun ()V - public fun (Lkotlin/jvm/functions/Function1;)V - public final fun filter (Lkotlin/jvm/functions/Function1;)V - public final fun getMaxContentLength ()I - public final fun getRetentionPeriod-UwyO8pc ()J - public final fun getShowNotification ()Z - public final fun isActive ()Z - public final fun sanitizeHeader (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V - public static synthetic fun sanitizeHeader$default (Lro/cosminmihu/ktor/monitor/KtorMonitorInterceptorConfig;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V - public final fun setActive (Z)V - public final fun setMaxContentLength (I)V - public final fun setRetentionPeriod-LRDsOJo (J)V - public final fun setShowNotification (Z)V -} - diff --git a/okhttp/library-okhttp-no-op/api/library-okhttp-no-op.klib.api b/okhttp/library-okhttp-no-op/api/library-okhttp-no-op.klib.api deleted file mode 100644 index e69de29b..00000000 diff --git a/okhttp/library-okhttp-no-op/build.gradle.kts b/okhttp/library-okhttp-no-op/build.gradle.kts deleted file mode 100644 index c607faa5..00000000 --- a/okhttp/library-okhttp-no-op/build.gradle.kts +++ /dev/null @@ -1,106 +0,0 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget - -plugins { - alias(libs.plugins.kotlinMultiplatform) - alias(libs.plugins.androidLibrary) - alias(libs.plugins.maven.publish) - alias(libs.plugins.binary.compatibility.validator) -} - -mavenPublishing { - publishToMavenCentral() - - signAllPublications() - - val artifact = "ktor-monitor-okhttp-interceptor-no-op" - coordinates(group.toString(), artifact, version.toString()) - - pom { - name.set("Ktor Monitor - OkHttp Interceptor (No-Op)") - description.set("""No-op implementation of the OkHttp Interceptor for Ktor Monitor.""".trimMargin()) - inceptionYear.set("2026") - url.set("https://github.com/CosminMihuMDC/KtorMonitor") - - licenses { - license { - name = "The Apache Software License, Version 2.0" - url = "https://www.apache.org/licenses/LICENSE-2.0.txt" - distribution = "https://www.apache.org/licenses/LICENSE-2.0.txt" - } - } - - developers { - developer { - id = "Cosmin Mihu" - name = "Cosmin Mihu" - url = "https://www.cosminmihu.ro/" - } - } - - scm { - url = "https://github.com/CosminMihuMDC/KtorMonitor.git" - connection = "scm:git:git://github.com/CosminMihuMDC/KtorMonitor.git" - developerConnection = "scm:git:git://github.com/CosminMihuMDC/KtorMonitor.git" - } - - issueManagement { - system = "GitHub Issues" - url = "https://github.com/CosminMihuMDC/KtorMonitor/issues" - } - - ciManagement { - system = "GitHub Actions" - url = "https://github.com/CosminMihuMDC/KtorMonitor/actions" - } - - distributionManagement { - downloadUrl = "https://github.com/CosminMihuMDC/KtorMonitor/releases" - } - } -} - -apiValidation { - @OptIn(kotlinx.validation.ExperimentalBCVApi::class) - klib { - enabled = true - strictValidation = true - } -} - -kotlin { - explicitApi() - - jvmToolchain { - languageVersion.set(JavaLanguageVersion.of(11)) - } - - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_11) - } - publishLibraryVariants("debug", "release") - } - - jvm() - - sourceSets { - commonMain.dependencies { - api(projects.core.libraryNoOp) - implementation(libs.okhttp) - } - } -} - -android { - namespace = "ro.cosminmihu.ktor.monitor.okhttp.noop" - compileSdk = libs.versions.android.compileSdk.get().toInt() - - defaultConfig { - minSdk = libs.versions.android.minSdk.get().toInt() - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - } -} - diff --git a/okhttp/library-okhttp-no-op/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/KtorMonitorInterceptor.kt b/okhttp/library-okhttp-no-op/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/KtorMonitorInterceptor.kt deleted file mode 100644 index cb583775..00000000 --- a/okhttp/library-okhttp-no-op/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/KtorMonitorInterceptor.kt +++ /dev/null @@ -1,14 +0,0 @@ -package ro.cosminmihu.ktor.monitor - -import okhttp3.Interceptor -import okhttp3.Response - -/** - * No-op implementation. - */ -public class KtorMonitorInterceptor() : Interceptor { - - public constructor(block: KtorMonitorInterceptorConfig.() -> Unit) : this() - - override fun intercept(chain: Interceptor.Chain): Response = chain.proceed(chain.request()) -} diff --git a/okhttp/library-okhttp-no-op/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/KtorMonitorInterceptorConfig.kt b/okhttp/library-okhttp-no-op/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/KtorMonitorInterceptorConfig.kt deleted file mode 100644 index d680ea11..00000000 --- a/okhttp/library-okhttp-no-op/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/KtorMonitorInterceptorConfig.kt +++ /dev/null @@ -1,33 +0,0 @@ -package ro.cosminmihu.ktor.monitor - -import okhttp3.Request -import kotlin.time.Duration - -/** - * No-op implementation. - */ -public class KtorMonitorInterceptorConfig() { - - private val config: KtorMonitorInterceptorConfig = KtorMonitorInterceptorConfig() - - public constructor(block: KtorMonitorInterceptorConfig.() -> Unit) : this() { - config.apply(block) - } - - public fun filter(predicate: (Request) -> Boolean) { - // Not implemented. - } - - public fun sanitizeHeader(placeholder: String = "***", predicate: (String) -> Boolean) { - // Not implemented. - } - - public var isActive: Boolean = false - - public var showNotification: Boolean = false - - public var retentionPeriod: Duration = Duration.ZERO - - public var maxContentLength: Int = 0 -} - diff --git a/okhttp/library-okhttp/api/android/library-okhttp.api b/okhttp/library-okhttp/api/android/library-okhttp.api deleted file mode 100644 index c9759241..00000000 --- a/okhttp/library-okhttp/api/android/library-okhttp.api +++ /dev/null @@ -1,21 +0,0 @@ -public final class ro/cosminmihu/ktor/monitor/KtorMonitorInterceptor : okhttp3/Interceptor { - public fun ()V - public fun (Lkotlin/jvm/functions/Function1;)V - public fun intercept (Lokhttp3/Interceptor$Chain;)Lokhttp3/Response; -} - -public final class ro/cosminmihu/ktor/monitor/KtorMonitorInterceptorConfig { - public fun ()V - public final fun filter (Lkotlin/jvm/functions/Function1;)V - public final fun getMaxContentLength ()I - public final fun getRetentionPeriod-UwyO8pc ()J - public final fun getShowNotification ()Z - public final fun isActive ()Z - public final fun sanitizeHeader (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V - public static synthetic fun sanitizeHeader$default (Lro/cosminmihu/ktor/monitor/KtorMonitorInterceptorConfig;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V - public final fun setActive (Z)V - public final fun setMaxContentLength (I)V - public final fun setRetentionPeriod-LRDsOJo (J)V - public final fun setShowNotification (Z)V -} - diff --git a/okhttp/library-okhttp/api/jvm/library-okhttp.api b/okhttp/library-okhttp/api/jvm/library-okhttp.api deleted file mode 100644 index c9759241..00000000 --- a/okhttp/library-okhttp/api/jvm/library-okhttp.api +++ /dev/null @@ -1,21 +0,0 @@ -public final class ro/cosminmihu/ktor/monitor/KtorMonitorInterceptor : okhttp3/Interceptor { - public fun ()V - public fun (Lkotlin/jvm/functions/Function1;)V - public fun intercept (Lokhttp3/Interceptor$Chain;)Lokhttp3/Response; -} - -public final class ro/cosminmihu/ktor/monitor/KtorMonitorInterceptorConfig { - public fun ()V - public final fun filter (Lkotlin/jvm/functions/Function1;)V - public final fun getMaxContentLength ()I - public final fun getRetentionPeriod-UwyO8pc ()J - public final fun getShowNotification ()Z - public final fun isActive ()Z - public final fun sanitizeHeader (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V - public static synthetic fun sanitizeHeader$default (Lro/cosminmihu/ktor/monitor/KtorMonitorInterceptorConfig;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V - public final fun setActive (Z)V - public final fun setMaxContentLength (I)V - public final fun setRetentionPeriod-LRDsOJo (J)V - public final fun setShowNotification (Z)V -} - diff --git a/okhttp/library-okhttp/api/library-okhttp.klib.api b/okhttp/library-okhttp/api/library-okhttp.klib.api deleted file mode 100644 index e69de29b..00000000 diff --git a/okhttp/library-okhttp/build.gradle.kts b/okhttp/library-okhttp/build.gradle.kts deleted file mode 100644 index 2a076f7c..00000000 --- a/okhttp/library-okhttp/build.gradle.kts +++ /dev/null @@ -1,116 +0,0 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget - -plugins { - alias(libs.plugins.kotlinMultiplatform) - alias(libs.plugins.androidLibrary) - alias(libs.plugins.maven.publish) - alias(libs.plugins.binary.compatibility.validator) - alias(libs.plugins.dokka) -} - -mavenPublishing { - publishToMavenCentral() - - signAllPublications() - - val artifact = "ktor-monitor-okhttp-interceptor" - coordinates(group.toString(), artifact, version.toString()) - - pom { - name.set("Ktor Monitor - OkHttp Interceptor") - description.set("""OkHttp Interceptor that provides the capability to log HTTP calls for Ktor Monitor.""".trimMargin()) - inceptionYear.set("2026") - url.set("https://github.com/CosminMihuMDC/KtorMonitor") - - licenses { - license { - name = "The Apache Software License, Version 2.0" - url = "https://www.apache.org/licenses/LICENSE-2.0.txt" - distribution = "https://www.apache.org/licenses/LICENSE-2.0.txt" - } - } - - developers { - developer { - id = "Cosmin Mihu" - name = "Cosmin Mihu" - url = "https://www.cosminmihu.ro/" - } - } - - scm { - url = "https://github.com/CosminMihuMDC/KtorMonitor.git" - connection = "scm:git:git://github.com/CosminMihuMDC/KtorMonitor.git" - developerConnection = "scm:git:git://github.com/CosminMihuMDC/KtorMonitor.git" - } - - issueManagement { - system = "GitHub Issues" - url = "https://github.com/CosminMihuMDC/KtorMonitor/issues" - } - - ciManagement { - system = "GitHub Actions" - url = "https://github.com/CosminMihuMDC/KtorMonitor/actions" - } - - distributionManagement { - downloadUrl = "https://github.com/CosminMihuMDC/KtorMonitor/releases" - } - } -} - -apiValidation { - @OptIn(kotlinx.validation.ExperimentalBCVApi::class) - klib { - enabled = true - strictValidation = true - } -} - -dokka { - moduleName = "OkHttp Interceptor" - moduleVersion = project.version.toString() -} - -dependencies { - dokka(projects.core.library) -} - -kotlin { - explicitApi() - - jvmToolchain { - languageVersion = JavaLanguageVersion.of(11) - } - - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_11) - } - publishLibraryVariants("debug", "release") - } - - jvm() - - sourceSets { - commonMain.dependencies { - api(projects.core.library) - implementation(libs.okhttp) - } - } -} - -android { - namespace = "ro.cosminmihu.ktor.monitor.okhttp" - compileSdk = libs.versions.android.compileSdk.get().toInt() - - defaultConfig { - minSdk = libs.versions.android.minSdk.get().toInt() - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - } -} - diff --git a/okhttp/library-okhttp/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/KtorMonitorInterceptor.kt b/okhttp/library-okhttp/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/KtorMonitorInterceptor.kt deleted file mode 100644 index bf6c151c..00000000 --- a/okhttp/library-okhttp/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/KtorMonitorInterceptor.kt +++ /dev/null @@ -1,308 +0,0 @@ -package ro.cosminmihu.ktor.monitor - -import kotlinx.coroutines.launch -import okhttp3.Interceptor -import okhttp3.MediaType -import okhttp3.Response -import okhttp3.ResponseBody -import okhttp3.ResponseBody.Companion.asResponseBody -import okio.Buffer -import okio.BufferedSource -import okio.ForwardingSource -import okio.Source -import okio.buffer -import ro.cosminmihu.ktor.monitor.domain.model.ClientSource -import kotlin.math.abs -import kotlin.math.min -import kotlin.random.Random -import kotlin.time.Clock -import kotlin.time.ExperimentalTime - -/** - * An [OkHttp](https://square.github.io/okhttp/) [Interceptor] that provides the capability to log HTTP calls. - * - * You can learn more from [KtorMonitor](https://github.com/CosminMihuMDC/KtorMonitor). - * - * ```kotlin - * OkHttpClient.Builder() - * .addNetworkInterceptor( - * KtorMonitorInterceptor { - * sanitizeHeader { header -> header == "Authorization" } - * isActive = true - * showNotification = true - * retentionPeriod = RetentionPeriod.OneHour - * maxContentLength = ContentLength.Default - * } - * ) - * .build() - * ``` - */ -public class KtorMonitorInterceptor() : Interceptor { - - private val config: KtorMonitorInterceptorConfig = KtorMonitorInterceptorConfig() - - public constructor(block: KtorMonitorInterceptorConfig.() -> Unit) : this() { - config.apply(block) - } - - init { - @OptIn(InternalKtorMonitorApi::class) - InternalLibraryBridge.setConfig( - isActive = config.isActive, - showNotification = config.showNotification, - retentionPeriod = config.retentionPeriod, - maxContentLength = config.maxContentLength, - clientSource = ClientSource.OkHttp, - ) - - if (config.isActive && config.retentionPeriod.isPositive()) { - @OptIn(InternalKtorMonitorApi::class) - InternalLibraryBridge.startListening() - } - } - - @OptIn(InternalKtorMonitorApi::class, ExperimentalTime::class) - override fun intercept(chain: Interceptor.Chain): Response { - val request = chain.request() - - // Check if plugin is active. - if (!config.isActive) return chain.proceed(request) - // Check if retention period is zero. - if (!config.retentionPeriod.isPositive()) return chain.proceed(request) - - // Filter. - val shouldLog = config.filters.isEmpty() || config.filters.any { it(request) } - if (!shouldLog) return chain.proceed(request) - - // Generate call id. - val id = callIdentifier - - // Log request. - val requestTimestamp = Clock.System.now().toEpochMilliseconds() - val method = request.method - val url = request.url.toString() - val requestContentType = request.body?.contentType()?.toString() - val requestContentLength = request.body?.contentLength() ?: 0L - - // Headers. - val requestHeaders = request.headers.toMultimap() - .mapValues { (key, values) -> - val sanitized = config.sanitizedHeaders.firstOrNull { it.predicate(key) } - if (sanitized != null) listOf(sanitized.placeholder) else values - } - .toSortedMap() - - // Request body. - val requestBody = try { - val buffer = okio.Buffer() - request.body?.writeTo(buffer) - val bytes = buffer.readByteArray() - if (config.maxContentLength != ContentLength.Full) { - bytes.take(config.maxContentLength).toByteArray() - } else bytes - } catch (_: Throwable) { - null - } - - InternalLibraryBridge.coroutineScope().launch { - try { - InternalLibraryBridge.saveRequest( - id = id, - method = method, - url = url, - requestTimestamp = requestTimestamp, - requestHeaders = requestHeaders, - requestContentType = requestContentType, - requestContentLength = requestContentLength, - requestBody = requestBody, - isRequestBodyTruncated = requestContentLength != 0L && requestContentLength > config.maxContentLength, - ) - } catch (_: Throwable) { - } - } - - // Proceed with request. - val response: Response - try { - response = chain.proceed(request) - } catch (cause: Throwable) { - InternalLibraryBridge.coroutineScope().launch { - try { - InternalLibraryBridge.saveRequestError(id = id, error = cause) - } catch (_: Throwable) { - } - } - throw cause - } - - // Log response. - val responseTimestamp = Clock.System.now().toEpochMilliseconds() - val responseCode = response.code - val protocol = response.protocol.toString() - val responseContentType = response.body.contentType()?.toString() - - // Response headers. - val responseHeaders = response.headers.toMultimap() - .mapValues { (key, values) -> - val sanitized = config.sanitizedHeaders.firstOrNull { it.predicate(key) } - if (sanitized != null) listOf(sanitized.placeholder) else values - } - .toSortedMap() - - // Response body. - val responseBody = response.body - val responseContentTypeRaw = responseBody.contentType()?.toString() - val isWebSocketUpgrade = responseCode == WEBSOCKET_UPGRADE_STATUS - val isServerSentEvents = responseContentTypeRaw - ?.substringBefore(';') - ?.trim() - ?.equals("text/event-stream", ignoreCase = true) == true - - // Always persist the response head first. - InternalLibraryBridge.coroutineScope().launch { - try { - InternalLibraryBridge.saveResponse( - id = id, - protocol = protocol, - requestTimestamp = requestTimestamp, - responseCode = responseCode, - responseTimestamp = responseTimestamp, - responseContentType = responseContentType, - responseHeaders = responseHeaders, - ) - } catch (_: Throwable) { - } - } - - // WebSocket upgrade — frames travel through the upgraded socket and are not - // visible from a network interceptor. Don't try to read the body or we'd - // block the upgrade indefinitely. - if (isWebSocketUpgrade) { - return response - } - - // Server-Sent Events — wrap the body so each chunk read by the consumer is - // mirrored into the DB, letting the detail screen update live. - if (isServerSentEvents) { - return wrapForStreaming(response, responseBody, id, config.maxContentLength) - } - - // Default (non-streaming) path: drain the buffered body once. - val responseBodySource = responseBody.source() - responseBodySource.request(Long.MAX_VALUE) - val responseBodyBytes = responseBodySource.buffer.clone().readByteArray() - val responseContentLength = responseBodyBytes.size.toLong() - - val truncatedBody = - if (config.maxContentLength != ContentLength.Full) { - responseBodyBytes.take(config.maxContentLength).toByteArray() - } else { - responseBodyBytes - } - val isResponseBodyTruncated = responseContentLength > config.maxContentLength - - InternalLibraryBridge.coroutineScope().launch { - try { - InternalLibraryBridge.saveResponseBody( - id = id, - responseContentLength = responseContentLength, - responseBody = truncatedBody, - isResponseBodyTruncated = isResponseBodyTruncated, - ) - } catch (_: Throwable) { - } - } - - return response - } -} - -private const val WEBSOCKET_UPGRADE_STATUS = 101 - -@OptIn(InternalKtorMonitorApi::class) -private fun wrapForStreaming( - response: Response, - body: ResponseBody, - id: String, - maxContentLength: Int, -): Response { - // Initialise the body row so the UI shows an empty (streaming) response immediately. - InternalLibraryBridge.coroutineScope().launch { - try { - InternalLibraryBridge.saveResponseBody( - id = id, - responseContentLength = 0L, - responseBody = ByteArray(0), - isResponseBodyTruncated = false, - ) - } catch (_: Throwable) { - } - } - - val unbounded = maxContentLength == ContentLength.Full - val contentType: MediaType? = body.contentType() - val originalContentLength = body.contentLength() - - val tee = object : ForwardingSource(body.source()) { - private var stored: Long = 0L - private var truncated: Boolean = false - - override fun read(sink: Buffer, byteCount: Long): Long { - val sizeBefore = sink.size - val read = super.read(sink, byteCount) - if (read <= 0L) return read - - // Snapshot only the newly read bytes from the sink. - val snapshot = Buffer() - sink.copyTo(snapshot, sizeBefore, read) - val newBytes = snapshot.readByteArray() - - val keep: ByteArray = when { - unbounded -> newBytes - stored >= maxContentLength -> { - truncated = true - ByteArray(0) - } - stored + newBytes.size > maxContentLength -> { - truncated = true - val remaining = (maxContentLength - stored).toInt() - newBytes.copyOf(min(remaining, newBytes.size)) - } - else -> newBytes - } - - if (keep.isNotEmpty()) { - stored += keep.size - } - val isTruncated = truncated - - InternalLibraryBridge.coroutineScope().launch { - try { - InternalLibraryBridge.appendResponseBody( - id = id, - chunk = keep, - deltaSize = read, - isResponseBodyTruncated = isTruncated, - ) - } catch (_: Throwable) { - } - } - - return read - } - } - - val wrappedSource: BufferedSource = (tee as Source).buffer() - val wrappedBody: ResponseBody = wrappedSource.asResponseBody(contentType, originalContentLength) - return response.newBuilder().body(wrappedBody).build() -} - -@OptIn(ExperimentalTime::class) -private val callIdentifier: String - get() { - val timestamp = Clock.System.now().toEpochMilliseconds().toString() - val randomLong = Random.nextLong().toString() - val raw = "$timestamp-$randomLong" - val hash = abs(raw.hashCode()).toString(16) - return "$raw-$hash" - } diff --git a/okhttp/library-okhttp/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/KtorMonitorInterceptorConfig.kt b/okhttp/library-okhttp/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/KtorMonitorInterceptorConfig.kt deleted file mode 100644 index 276769ad..00000000 --- a/okhttp/library-okhttp/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/KtorMonitorInterceptorConfig.kt +++ /dev/null @@ -1,70 +0,0 @@ -package ro.cosminmihu.ktor.monitor - -import okhttp3.Request -import kotlin.time.Duration - -/** - * Configuration for [KtorMonitorInterceptor]. - */ -public class KtorMonitorInterceptorConfig { - - internal val filters = mutableListOf<(Request) -> Boolean>() - internal val sanitizedHeaders = mutableListOf() - - /** - * Allows you to filter logs for calls matching a [predicate]. - */ - public fun filter(predicate: (Request) -> Boolean) { - filters.add(predicate) - } - - /** - * Allows you to sanitize sensitive headers to avoid their values appearing in the logs. - * In the example below, Authorization header value will be replaced with '***' when logging: - * ```kotlin - * sanitizeHeader { header -> header == "Authorization" } - * ``` - */ - public fun sanitizeHeader(placeholder: String = "***", predicate: (String) -> Boolean) { - sanitizedHeaders.add(SanitizedHeader(placeholder, predicate)) - } - - /** - * Enable or disable the logging of requests and responses. - * By default, enabled: - */ - @OptIn(InternalKtorMonitorApi::class) - public var isActive: Boolean = true - - /** - * Keep track of latest requests and responses into notification. - * By default: - * - android - enabled. android.permission.POST_NOTIFICATIONS needs to be granted. - * - ios - enabled. Notifications permission needs to be granted. - * - desktop - not supported - * - web - not supported. - */ - public var showNotification: Boolean = true - - /** - * The retention period for the logs. - * By default, it is 1 hour. - */ - public var retentionPeriod: Duration = RetentionPeriod.OneHour - - /** - * The maximum length of the content that will be logged. - * After this, body will be truncated. - * By default, it is [ContentLength.Default]. - * Use [ContentLength.Full] to log the full content. - */ - public var maxContentLength: Int = ContentLength.Default -} - -/** - * Configuration for a sanitized header. - */ -internal class SanitizedHeader( - val placeholder: String, - val predicate: (String) -> Boolean, -) diff --git a/sample/http4k/build.gradle.kts b/sample/http4k/build.gradle.kts deleted file mode 100644 index bb3d8551..00000000 --- a/sample/http4k/build.gradle.kts +++ /dev/null @@ -1,110 +0,0 @@ -import org.jetbrains.compose.desktop.application.dsl.TargetFormat -import org.jetbrains.kotlin.gradle.dsl.JvmTarget - -plugins { - alias(libs.plugins.kotlinMultiplatform) - alias(libs.plugins.androidApplication) - alias(libs.plugins.composeMultiplatform) - alias(libs.plugins.composeCompiler) -} - -compose.resources { - packageOfResClass = "ro.cosminmihu.ktor.monitor.sample.resources" -} - -kotlin { - - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_11) - } - } - - jvm() - - sourceSets { - androidMain.dependencies { - implementation(libs.androidx.activity.compose) - implementation(libs.http4k.client.okhttp) - } - commonMain.dependencies { - implementation(libs.compose.runtime) - implementation(libs.compose.foundation) - implementation(libs.compose.material3) - implementation(libs.compose.ui) - implementation(libs.compose.components.resources) - implementation(libs.compose.ui.tooling.preview) - implementation(libs.androidx.lifecycle.viewmodel) - implementation(libs.androidx.lifecycle.runtime.compose) - implementation(libs.http4k.core) - implementation(libs.http4k.multipart) - implementation(projects.http4k.libraryHttp4k) - implementation(projects.sample.shared) -// implementation("ro.cosminmihu.ktor:ktor-monitor-http4k-filter:1.13.0") -// implementation(projects.http4k.libraryHttp4kNoOp) -// implementation("ro.cosminmihu.ktor:ktor-monitor-http4k-filter-no-op:1.13.0") - } - jvmMain.dependencies { - implementation(compose.desktop.currentOs) - implementation(libs.kotlinx.coroutines.swing) - } - } -} - -android { - namespace = "ro.cosminmihu.ktor.monitor.sample" - compileSdk = libs.versions.android.compileSdk.get().toInt() - - defaultConfig { - applicationId = "ro.cosminmihu.ktor.monitor.sample.http4k" - minSdk = libs.versions.android.minSdk.get().toInt() - targetSdk = libs.versions.android.targetSdk.get().toInt() - versionCode = 1 - versionName = "1.0" - } - packaging { - resources { - excludes += "/META-INF/{AL2.0,LGPL2.1}" - } - } - signingConfigs { - create("release") { - storeFile = File(project.rootDir, "extra/sample/sample-ktor-monitor.jks") - storePassword = "ktor-monitor-sample" - keyAlias = "ktor-monitor-sample" - keyPassword = "ktor-monitor-sample" - } - } - buildTypes { - debug { - versionNameSuffix = ".debug" - } - - release { - isMinifyEnabled = true - isShrinkResources = true - signingConfig = signingConfigs.getByName("release") - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - isCoreLibraryDesugaringEnabled = true - } -} - -compose.desktop { - application { - mainClass = "ro.cosminmihu.ktor.monitor.sample.MainKt" - - nativeDistributions { - targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb, TargetFormat.Rpm) - packageName = "ro.cosminmihu.ktor.monitor.sample.http4k" - packageVersion = "1.0.0" - } - } -} - -dependencies { - coreLibraryDesugaring(libs.desugar) -} diff --git a/sample/http4k/src/androidMain/AndroidManifest.xml b/sample/http4k/src/androidMain/AndroidManifest.xml deleted file mode 100644 index 760a97b1..00000000 --- a/sample/http4k/src/androidMain/AndroidManifest.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/sample/http4k/src/androidMain/ic_launcher-playstore.png b/sample/http4k/src/androidMain/ic_launcher-playstore.png deleted file mode 100644 index cb1af58b..00000000 Binary files a/sample/http4k/src/androidMain/ic_launcher-playstore.png and /dev/null differ diff --git a/sample/http4k/src/androidMain/kotlin/ro/cosminmihu/ktor/monitor/sample/HttpClient.kt b/sample/http4k/src/androidMain/kotlin/ro/cosminmihu/ktor/monitor/sample/HttpClient.kt deleted file mode 100644 index 157dc445..00000000 --- a/sample/http4k/src/androidMain/kotlin/ro/cosminmihu/ktor/monitor/sample/HttpClient.kt +++ /dev/null @@ -1,18 +0,0 @@ -package ro.cosminmihu.ktor.monitor.sample - -import org.http4k.client.OkHttp -import org.http4k.core.HttpHandler -import org.http4k.core.then -import ro.cosminmihu.ktor.monitor.ContentLength -import ro.cosminmihu.ktor.monitor.KtorMonitorFilter -import ro.cosminmihu.ktor.monitor.RetentionPeriod - -internal actual fun httpClient(): HttpHandler = - KtorMonitorFilter { - sanitizeHeader { header -> header == "Authorization" } - filter { request -> !request.uri.host.contains("cosminmihu.ro") } - showNotification = true - retentionPeriod = RetentionPeriod.OneHour - maxContentLength = ContentLength.Default - }.then(OkHttp()) - diff --git a/sample/http4k/src/androidMain/kotlin/ro/cosminmihu/ktor/monitor/sample/SampleActivity.kt b/sample/http4k/src/androidMain/kotlin/ro/cosminmihu/ktor/monitor/sample/SampleActivity.kt deleted file mode 100644 index 6c19f1ad..00000000 --- a/sample/http4k/src/androidMain/kotlin/ro/cosminmihu/ktor/monitor/sample/SampleActivity.kt +++ /dev/null @@ -1,18 +0,0 @@ -package ro.cosminmihu.ktor.monitor.sample - -import android.os.Bundle -import androidx.activity.ComponentActivity -import androidx.activity.compose.setContent -import androidx.activity.enableEdgeToEdge - -class SampleActivity : ComponentActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - enableEdgeToEdge() - - setContent { - App() - } - } -} - diff --git a/sample/http4k/src/androidMain/res/drawable/ic_launcher_foreground.xml b/sample/http4k/src/androidMain/res/drawable/ic_launcher_foreground.xml deleted file mode 100644 index b8fa95d1..00000000 --- a/sample/http4k/src/androidMain/res/drawable/ic_launcher_foreground.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - diff --git a/sample/http4k/src/androidMain/res/drawable/ic_launcher_monochrome.xml b/sample/http4k/src/androidMain/res/drawable/ic_launcher_monochrome.xml deleted file mode 100644 index 5b781595..00000000 --- a/sample/http4k/src/androidMain/res/drawable/ic_launcher_monochrome.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - diff --git a/sample/http4k/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml b/sample/http4k/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml deleted file mode 100644 index 081998b2..00000000 --- a/sample/http4k/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/sample/http4k/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml b/sample/http4k/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml deleted file mode 100644 index 081998b2..00000000 --- a/sample/http4k/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/sample/http4k/src/androidMain/res/mipmap-hdpi/ic_launcher.webp b/sample/http4k/src/androidMain/res/mipmap-hdpi/ic_launcher.webp deleted file mode 100644 index 97c5532a..00000000 Binary files a/sample/http4k/src/androidMain/res/mipmap-hdpi/ic_launcher.webp and /dev/null differ diff --git a/sample/http4k/src/androidMain/res/mipmap-hdpi/ic_launcher_foreground.webp b/sample/http4k/src/androidMain/res/mipmap-hdpi/ic_launcher_foreground.webp deleted file mode 100644 index 134f74d5..00000000 Binary files a/sample/http4k/src/androidMain/res/mipmap-hdpi/ic_launcher_foreground.webp and /dev/null differ diff --git a/sample/http4k/src/androidMain/res/mipmap-hdpi/ic_launcher_round.webp b/sample/http4k/src/androidMain/res/mipmap-hdpi/ic_launcher_round.webp deleted file mode 100644 index ec375861..00000000 Binary files a/sample/http4k/src/androidMain/res/mipmap-hdpi/ic_launcher_round.webp and /dev/null differ diff --git a/sample/http4k/src/androidMain/res/mipmap-mdpi/ic_launcher.webp b/sample/http4k/src/androidMain/res/mipmap-mdpi/ic_launcher.webp deleted file mode 100644 index 0f4834bb..00000000 Binary files a/sample/http4k/src/androidMain/res/mipmap-mdpi/ic_launcher.webp and /dev/null differ diff --git a/sample/http4k/src/androidMain/res/mipmap-mdpi/ic_launcher_foreground.webp b/sample/http4k/src/androidMain/res/mipmap-mdpi/ic_launcher_foreground.webp deleted file mode 100644 index 7f67aceb..00000000 Binary files a/sample/http4k/src/androidMain/res/mipmap-mdpi/ic_launcher_foreground.webp and /dev/null differ diff --git a/sample/http4k/src/androidMain/res/mipmap-mdpi/ic_launcher_round.webp b/sample/http4k/src/androidMain/res/mipmap-mdpi/ic_launcher_round.webp deleted file mode 100644 index f5eba7d3..00000000 Binary files a/sample/http4k/src/androidMain/res/mipmap-mdpi/ic_launcher_round.webp and /dev/null differ diff --git a/sample/http4k/src/androidMain/res/mipmap-xhdpi/ic_launcher.webp b/sample/http4k/src/androidMain/res/mipmap-xhdpi/ic_launcher.webp deleted file mode 100644 index 768c7448..00000000 Binary files a/sample/http4k/src/androidMain/res/mipmap-xhdpi/ic_launcher.webp and /dev/null differ diff --git a/sample/http4k/src/androidMain/res/mipmap-xhdpi/ic_launcher_foreground.webp b/sample/http4k/src/androidMain/res/mipmap-xhdpi/ic_launcher_foreground.webp deleted file mode 100644 index c3f18412..00000000 Binary files a/sample/http4k/src/androidMain/res/mipmap-xhdpi/ic_launcher_foreground.webp and /dev/null differ diff --git a/sample/http4k/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.webp b/sample/http4k/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.webp deleted file mode 100644 index 058948fe..00000000 Binary files a/sample/http4k/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.webp and /dev/null differ diff --git a/sample/http4k/src/androidMain/res/mipmap-xxhdpi/ic_launcher.webp b/sample/http4k/src/androidMain/res/mipmap-xxhdpi/ic_launcher.webp deleted file mode 100644 index e4a3514f..00000000 Binary files a/sample/http4k/src/androidMain/res/mipmap-xxhdpi/ic_launcher.webp and /dev/null differ diff --git a/sample/http4k/src/androidMain/res/mipmap-xxhdpi/ic_launcher_foreground.webp b/sample/http4k/src/androidMain/res/mipmap-xxhdpi/ic_launcher_foreground.webp deleted file mode 100644 index 58668e3e..00000000 Binary files a/sample/http4k/src/androidMain/res/mipmap-xxhdpi/ic_launcher_foreground.webp and /dev/null differ diff --git a/sample/http4k/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.webp b/sample/http4k/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.webp deleted file mode 100644 index d7d90ed3..00000000 Binary files a/sample/http4k/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.webp and /dev/null differ diff --git a/sample/http4k/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.webp b/sample/http4k/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.webp deleted file mode 100644 index 147dc823..00000000 Binary files a/sample/http4k/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.webp and /dev/null differ diff --git a/sample/http4k/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_foreground.webp b/sample/http4k/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_foreground.webp deleted file mode 100644 index a3a2f505..00000000 Binary files a/sample/http4k/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_foreground.webp and /dev/null differ diff --git a/sample/http4k/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.webp b/sample/http4k/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.webp deleted file mode 100644 index 44fbdeec..00000000 Binary files a/sample/http4k/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.webp and /dev/null differ diff --git a/sample/http4k/src/androidMain/res/values/ic_launcher_background.xml b/sample/http4k/src/androidMain/res/values/ic_launcher_background.xml deleted file mode 100644 index f001f3e9..00000000 --- a/sample/http4k/src/androidMain/res/values/ic_launcher_background.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - #010101 - \ No newline at end of file diff --git a/sample/http4k/src/androidMain/res/values/strings.xml b/sample/http4k/src/androidMain/res/values/strings.xml deleted file mode 100644 index 57ec8057..00000000 --- a/sample/http4k/src/androidMain/res/values/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - Ktor Monitor Sample HTTP4K - \ No newline at end of file diff --git a/sample/http4k/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/sample/App.kt b/sample/http4k/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/sample/App.kt deleted file mode 100644 index 651b6e99..00000000 --- a/sample/http4k/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/sample/App.kt +++ /dev/null @@ -1,29 +0,0 @@ -package ro.cosminmihu.ktor.monitor.sample - -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.tooling.preview.Preview -import ro.cosminmihu.ktor.monitor.KtorMonitor - -/** - * Compose sample how to use [KtorMonitor]. - */ -@Preview -@Composable -fun App() { - Column( - modifier = Modifier.fillMaxSize(), - horizontalAlignment = Alignment.CenterHorizontally, - ) { - KtorMonitor() - } - - LaunchedEffect(Unit) { - samples() - } -} - diff --git a/sample/http4k/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/sample/Calls.kt b/sample/http4k/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/sample/Calls.kt deleted file mode 100644 index c46971df..00000000 --- a/sample/http4k/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/sample/Calls.kt +++ /dev/null @@ -1,181 +0,0 @@ -package ro.cosminmihu.ktor.monitor.sample - -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.withContext -import org.http4k.core.ContentType -import org.http4k.core.Method -import org.http4k.core.MultipartFormBody -import org.http4k.core.Request -import org.http4k.lens.MultipartFormFile -import ro.cosminmihu.ktor.monitor.sample.shared.HTTP_BIN_URL -import ro.cosminmihu.ktor.monitor.sample.shared.MARKDOWN_SAMPLE -import ro.cosminmihu.ktor.monitor.sample.shared.SVG_SAMPLE -import ro.cosminmihu.ktor.monitor.sample.shared.TEXT_FILE_CONTENT_SAMPLE -import ro.cosminmihu.ktor.monitor.sample.shared.TEXT_SAMPLE -import ro.cosminmihu.ktor.monitor.sample.shared.YAML_SAMPLE - - -internal suspend fun samples() = withContext(Dispatchers.IO) { - val client = httpClient() - - // HTTP Methods - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/get")) } - runCatching { client(Request(Method.POST, "$HTTP_BIN_URL/post").body("")) } - runCatching { client(Request(Method.PUT, "$HTTP_BIN_URL/put").body("")) } - runCatching { client(Request(Method.DELETE, "$HTTP_BIN_URL/delete")) } - runCatching { client(Request(Method.PATCH, "$HTTP_BIN_URL/patch").body("")) } - - // Status codes - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/status/200")) } - runCatching { client(Request(Method.POST, "$HTTP_BIN_URL/status/201").body("")) } - runCatching { client(Request(Method.PUT, "$HTTP_BIN_URL/status/204").body("")) } - runCatching { client(Request(Method.PATCH, "$HTTP_BIN_URL/status/206").body("")) } - runCatching { client(Request(Method.TRACE, "$HTTP_BIN_URL/status/302")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/status/404")) } - runCatching { client(Request(Method.DELETE, "$HTTP_BIN_URL/status/418")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/status/500")) } - - // Redirects - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/absolute-redirect/1")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/absolute-redirect/3")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/redirect/1")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/redirect/3")) } - runCatching { client(Request(Method.DELETE, "$HTTP_BIN_URL/redirect-to?url=/get")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/redirect-to?url=/get")) } - runCatching { client(Request(Method.PATCH, "$HTTP_BIN_URL/redirect-to?url=/get").body("")) } - runCatching { client(Request(Method.POST, "$HTTP_BIN_URL/redirect-to?url=/get").body("")) } - runCatching { client(Request(Method.PUT, "$HTTP_BIN_URL/redirect-to?url=/get").body("")) } - runCatching { client(Request(Method.TRACE, "$HTTP_BIN_URL/redirect-to?url=/get")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/redirect-to?url=/get&status_code=301")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/redirect-to?url=/get&status_code=302")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/redirect-to?url=/get&status_code=303")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/redirect-to?url=/get&status_code=307")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/redirect-to?url=/get&status_code=308")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/relative-redirect/1")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/relative-redirect/3")) } - - // Anything - runCatching { client(Request(Method.DELETE, "$HTTP_BIN_URL/anything")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/anything")) } - runCatching { client(Request(Method.PATCH, "$HTTP_BIN_URL/anything").body("")) } - runCatching { client(Request(Method.POST, "$HTTP_BIN_URL/anything").body("")) } - runCatching { client(Request(Method.PUT, "$HTTP_BIN_URL/anything").body("")) } - runCatching { client(Request(Method.TRACE, "$HTTP_BIN_URL/anything")) } - runCatching { client(Request(Method.DELETE, "$HTTP_BIN_URL/anything/nested/path")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/anything/nested/path")) } - runCatching { client(Request(Method.PATCH, "$HTTP_BIN_URL/anything/nested/path").body("")) } - runCatching { client(Request(Method.POST, "$HTTP_BIN_URL/anything/nested/path").body("")) } - runCatching { client(Request(Method.PUT, "$HTTP_BIN_URL/anything/nested/path").body("")) } - runCatching { client(Request(Method.TRACE, "$HTTP_BIN_URL/anything/nested/path")) } - - // Request inspection - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/headers")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/ip")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/user-agent")) } - - // Auth - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/basic-auth/user/passwd")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/bearer")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/digest-auth/auth/user/passwd")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/digest-auth/auth/user/passwd/MD5")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/digest-auth/auth/user/passwd/MD5/never")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/hidden-basic-auth/user/passwd")) } - - // Response formats - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/base64/SGVsbG8sIGh0dHBiaW4h")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/deny")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/encoding/utf8")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/html")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/json")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/robots.txt")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/xml")) } - runCatching { - client( - Request(Method.POST, "$HTTP_BIN_URL/anything/markdown") - .header("Content-Type", "text/markdown") - .body(MARKDOWN_SAMPLE) - ) - } - runCatching { - client( - Request(Method.POST, "$HTTP_BIN_URL/anything/yaml") - .header("Content-Type", "application/yaml") - .body(YAML_SAMPLE) - ) - } - - // Images - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/image")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/image/jpeg")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/image/png")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/image/svg")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/image/webp")) } - - // Compression - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/brotli")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/deflate")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/gzip")) } - - // Cookies and cache - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/cache")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/cache/30")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/cookies")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/cookies/delete?theme")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/cookies/set?theme=dark")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/cookies/set/session/ktor-monitor")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/etag/sample-etag")) } - - // Dynamic data - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/bytes/1024")) } - runCatching { client(Request(Method.DELETE, "$HTTP_BIN_URL/delay/1")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/delay/1")) } - runCatching { client(Request(Method.PATCH, "$HTTP_BIN_URL/delay/1").body("")) } - runCatching { client(Request(Method.POST, "$HTTP_BIN_URL/delay/1").body("")) } - runCatching { client(Request(Method.PUT, "$HTTP_BIN_URL/delay/1").body("")) } - runCatching { client(Request(Method.TRACE, "$HTTP_BIN_URL/delay/1")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/drip?duration=1&numbytes=16&delay=0")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/links/5/0")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/range/256")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/response-headers?X-Debug=http4k-monitor&Server=example")) } - runCatching { client(Request(Method.POST, "$HTTP_BIN_URL/response-headers?X-Debug=http4k-monitor").body("")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/stream/5")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/stream-bytes/256")) } - runCatching { client(Request(Method.GET, "$HTTP_BIN_URL/uuid")) } - - // Form data (url-encoded) - runCatching { - client( - Request(Method.POST, "$HTTP_BIN_URL/post") - .header("Content-Type", "application/x-www-form-urlencoded") - .body("username=ktor-monitor&email=demo%40example.com¬es=Hello+from+Ktor+Monitor+sample") - ) - } - - // Multipart / form-data - runCatching { - val body = MultipartFormBody() - .plus("username" to "ktor-monitor") - .plus("email" to "demo@example.com") - .plus("notes" to TEXT_SAMPLE) - .plus( - "file" to MultipartFormFile( - "sample.txt", - ContentType.TEXT_PLAIN, - TEXT_FILE_CONTENT_SAMPLE.byteInputStream(), - ) - ) - .plus( - "logo" to MultipartFormFile( - "logo.svg", - ContentType("image/svg+xml"), - SVG_SAMPLE.inputStream(), - ) - ) - - client( - Request(Method.POST, "$HTTP_BIN_URL/post") - .header("Content-Type", "multipart/form-data; boundary=${body.boundary}") - .body(body) - ) - } -} diff --git a/sample/http4k/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/sample/HttpClient.kt b/sample/http4k/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/sample/HttpClient.kt deleted file mode 100644 index 9e572458..00000000 --- a/sample/http4k/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/sample/HttpClient.kt +++ /dev/null @@ -1,6 +0,0 @@ -package ro.cosminmihu.ktor.monitor.sample - -import org.http4k.core.HttpHandler - -internal expect fun httpClient(): HttpHandler - diff --git a/sample/http4k/src/jvmMain/composeResources/drawable/ic_launcher.xml b/sample/http4k/src/jvmMain/composeResources/drawable/ic_launcher.xml deleted file mode 100644 index 18295790..00000000 --- a/sample/http4k/src/jvmMain/composeResources/drawable/ic_launcher.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/sample/http4k/src/jvmMain/composeResources/values/strings.xml b/sample/http4k/src/jvmMain/composeResources/values/strings.xml deleted file mode 100644 index ad79c6aa..00000000 --- a/sample/http4k/src/jvmMain/composeResources/values/strings.xml +++ /dev/null @@ -1,4 +0,0 @@ - - Ktor Monitor Sample http4k - - diff --git a/sample/http4k/src/jvmMain/kotlin/ro/cosminmihu/ktor/monitor/sample/HttpClient.kt b/sample/http4k/src/jvmMain/kotlin/ro/cosminmihu/ktor/monitor/sample/HttpClient.kt deleted file mode 100644 index 9ac1813d..00000000 --- a/sample/http4k/src/jvmMain/kotlin/ro/cosminmihu/ktor/monitor/sample/HttpClient.kt +++ /dev/null @@ -1,18 +0,0 @@ -package ro.cosminmihu.ktor.monitor.sample - -import org.http4k.client.JavaHttpClient -import org.http4k.core.HttpHandler -import org.http4k.core.then -import ro.cosminmihu.ktor.monitor.ContentLength -import ro.cosminmihu.ktor.monitor.KtorMonitorFilter -import ro.cosminmihu.ktor.monitor.RetentionPeriod - -internal actual fun httpClient(): HttpHandler = - KtorMonitorFilter { - sanitizeHeader { header -> header == "Authorization" } - filter { request -> !request.uri.host.contains("cosminmihu.ro") } - showNotification = true - retentionPeriod = RetentionPeriod.OneHour - maxContentLength = ContentLength.Default - }.then(JavaHttpClient()) - diff --git a/sample/http4k/src/jvmMain/kotlin/ro/cosminmihu/ktor/monitor/sample/compose/main.kt b/sample/http4k/src/jvmMain/kotlin/ro/cosminmihu/ktor/monitor/sample/compose/main.kt deleted file mode 100644 index 9d3e76dd..00000000 --- a/sample/http4k/src/jvmMain/kotlin/ro/cosminmihu/ktor/monitor/sample/compose/main.kt +++ /dev/null @@ -1,45 +0,0 @@ -package ro.cosminmihu.ktor.monitor.sample.compose - -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.saveable.rememberSaveable -import androidx.compose.runtime.setValue -import androidx.compose.ui.window.Tray -import androidx.compose.ui.window.Window -import androidx.compose.ui.window.application -import org.jetbrains.compose.resources.painterResource -import org.jetbrains.compose.resources.stringResource -import ro.cosminmihu.ktor.monitor.KtorMonitorMenuItem -import ro.cosminmihu.ktor.monitor.KtorMonitorWindow -import ro.cosminmihu.ktor.monitor.sample.App -import ro.cosminmihu.ktor.monitor.sample.resources.Res -import ro.cosminmihu.ktor.monitor.sample.resources.app_name -import ro.cosminmihu.ktor.monitor.sample.resources.ic_launcher - -/** - * Compose sample how to use [KtorMonitorWindow] w/o [KtorMonitorMenuItem]. - */ -fun main() = application { - - var showKtorMonitor by rememberSaveable { mutableStateOf(false) } - - Tray( - icon = painterResource(Res.drawable.ic_launcher), - menu = { - KtorMonitorMenuItem { showKtorMonitor = true } - } - ) - - KtorMonitorWindow( - show = showKtorMonitor, - onCloseRequest = { showKtorMonitor = false } - ) - - Window( - onCloseRequest = ::exitApplication, - title = stringResource(Res.string.app_name), - ) { - App() - } -} - diff --git a/sample/http4k/src/jvmMain/kotlin/ro/cosminmihu/ktor/monitor/sample/swing/main.kt b/sample/http4k/src/jvmMain/kotlin/ro/cosminmihu/ktor/monitor/sample/swing/main.kt deleted file mode 100644 index 7a3accbd..00000000 --- a/sample/http4k/src/jvmMain/kotlin/ro/cosminmihu/ktor/monitor/sample/swing/main.kt +++ /dev/null @@ -1,31 +0,0 @@ -package ro.cosminmihu.ktor.monitor.sample.swing - -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.launch -import ro.cosminmihu.ktor.monitor.KtorMonitorPanel -import ro.cosminmihu.ktor.monitor.sample.samples -import java.awt.BorderLayout -import java.awt.Dimension -import javax.swing.JFrame -import javax.swing.SwingUtilities - -/** - * Swing Sample how to use [KtorMonitorPanel]. - */ -fun main() { - GlobalScope.launch { - samples() - } - - SwingUtilities.invokeLater { - val frame = JFrame("Ktor Monitor Sample - http4k") - frame.minimumSize = Dimension(800, 600) - frame.defaultCloseOperation = JFrame.EXIT_ON_CLOSE - - frame.add(KtorMonitorPanel, BorderLayout.CENTER) - - frame.pack() - frame.isVisible = true - } -} - diff --git a/sample/ktor/build.gradle.kts b/sample/ktor/build.gradle.kts deleted file mode 100644 index 1d2250d7..00000000 --- a/sample/ktor/build.gradle.kts +++ /dev/null @@ -1,156 +0,0 @@ -import org.jetbrains.compose.desktop.application.dsl.TargetFormat -import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl -import org.jetbrains.kotlin.gradle.dsl.JvmTarget - -plugins { - alias(libs.plugins.kotlinMultiplatform) - alias(libs.plugins.androidApplication) - alias(libs.plugins.composeMultiplatform) - alias(libs.plugins.composeCompiler) -} - -compose.resources { - packageOfResClass = "ro.cosminmihu.ktor.monitor.sample.resources" -} - -kotlin { - - js { - browser { - commonWebpackConfig { - outputFileName = "KtorMonitorSample.js" - } - } - binaries.executable() - } - - @OptIn(ExperimentalWasmDsl::class) - wasmJs { - browser { - commonWebpackConfig { - outputFileName = "KtorMonitorSample.js" - } - } - binaries.executable() - } - - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_11) - } - } - - listOf( - iosArm64(), - iosSimulatorArm64(), - ).forEach { iosTarget -> - iosTarget.binaries.framework { - baseName = "KtorMonitorSample" - isStatic = true - } - } - - jvm() - - sourceSets { - androidMain.dependencies { - implementation(libs.androidx.activity.compose) - implementation(libs.ktor.client.okhttp) - } - iosMain.dependencies { - implementation(libs.ktor.client.darwin) - } - commonMain.dependencies { - implementation(libs.compose.runtime) - implementation(libs.compose.foundation) - implementation(libs.compose.material3) - implementation(libs.compose.ui) - implementation(libs.compose.components.resources) - implementation(libs.compose.ui.tooling.preview) - implementation(libs.androidx.lifecycle.viewmodel) - implementation(libs.androidx.lifecycle.runtime.compose) - implementation(libs.ktor.client.core) - implementation(libs.ktor.client.websockets) - implementation(libs.ktor.client.logging) - implementation(libs.ktor.client.content.negotiation) - implementation(libs.ktor.serialization.kotlinx.json) - implementation(projects.ktor.libraryKtor) - implementation(projects.sample.shared) -// implementation("ro.cosminmihu.ktor:ktor-monitor-logging:1.13.0") -// implementation(projects.ktor.libraryKtorNoOp) -// implementation("ro.cosminmihu.ktor:ktor-monitor-logging-no-op:1.13.0") - } - jvmMain.dependencies { - implementation(compose.desktop.currentOs) - implementation(libs.kotlinx.coroutines.swing) - implementation(libs.ktor.client.cio) - } - webMain.dependencies { - implementation(libs.ktor.client.js) - implementation(devNpm("copy-webpack-plugin", libs.versions.webpack.get())) - } - } -} - -android { - namespace = "ro.cosminmihu.ktor.monitor.sample" - compileSdk = libs.versions.android.compileSdk.get().toInt() - - defaultConfig { - applicationId = "ro.cosminmihu.ktor.monitor.sample" - minSdk = libs.versions.android.minSdk.get().toInt() - targetSdk = libs.versions.android.targetSdk.get().toInt() - versionCode = 1 - versionName = "1.0" - } - packaging { - resources { - excludes += "/META-INF/{AL2.0,LGPL2.1}" - } - } - signingConfigs { - create("release") { - storeFile = File(project.rootDir, "extra/sample/sample-ktor-monitor.jks") - storePassword = "ktor-monitor-sample" - keyAlias = "ktor-monitor-sample" - keyPassword = "ktor-monitor-sample" - } - } - buildTypes { - debug { - versionNameSuffix = ".debug" - } - - release { - isMinifyEnabled = true - isShrinkResources = true - signingConfig = signingConfigs.getByName("release") - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - } -} - -compose.desktop { - application { - mainClass = "ro.cosminmihu.ktor.monitor.sample.compose.MainKt" - - nativeDistributions { - targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb, TargetFormat.Rpm) - packageName = "ro.cosminmihu.ktor.monitor.sample" - packageVersion = "1.0.0" - } - } -} - -android { - compileOptions { - isCoreLibraryDesugaringEnabled = true - } -} - -dependencies { - coreLibraryDesugaring(libs.desugar) -} \ No newline at end of file diff --git a/sample/ktor/iosApp/Configuration/Config.xcconfig b/sample/ktor/iosApp/Configuration/Config.xcconfig deleted file mode 100644 index da5ab5d6..00000000 --- a/sample/ktor/iosApp/Configuration/Config.xcconfig +++ /dev/null @@ -1,3 +0,0 @@ -TEAM_ID= -BUNDLE_ID=ro.cosminmihu.ktor.monitor.sampleMonitorSample -APP_NAME=Ktor Monitor Sample \ No newline at end of file diff --git a/sample/ktor/iosApp/iosApp.xcodeproj/project.pbxproj b/sample/ktor/iosApp/iosApp.xcodeproj/project.pbxproj deleted file mode 100644 index db6af67e..00000000 --- a/sample/ktor/iosApp/iosApp.xcodeproj/project.pbxproj +++ /dev/null @@ -1,396 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 56; - objects = { - -/* Begin PBXBuildFile section */ - 058557BB273AAA24004C7B11 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 058557BA273AAA24004C7B11 /* Assets.xcassets */; }; - 058557D9273AAEEB004C7B11 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */; }; - 2152FB042600AC8F00CF470E /* iOSApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2152FB032600AC8F00CF470E /* iOSApp.swift */; }; - 7555FF83242A565900829871 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7555FF82242A565900829871 /* ContentView.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 058557BA273AAA24004C7B11 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; - 2152FB032600AC8F00CF470E /* iOSApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSApp.swift; sourceTree = ""; }; - 7555FF7B242A565900829871 /* Ktor Monitor Sample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Ktor Monitor Sample.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - 7555FF82242A565900829871 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; - 7555FF8C242A565B00829871 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - AB3632DC29227652001CCB65 /* Config.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Config.xcconfig; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - B92378962B6B1156000C7307 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 058557D7273AAEEB004C7B11 /* Preview Content */ = { - isa = PBXGroup; - children = ( - 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */, - ); - path = "Preview Content"; - sourceTree = ""; - }; - 42799AB246E5F90AF97AA0EF /* Frameworks */ = { - isa = PBXGroup; - children = ( - ); - name = Frameworks; - sourceTree = ""; - }; - 7555FF72242A565900829871 = { - isa = PBXGroup; - children = ( - AB1DB47929225F7C00F7AF9C /* Configuration */, - 7555FF7D242A565900829871 /* iosApp */, - 7555FF7C242A565900829871 /* Products */, - 42799AB246E5F90AF97AA0EF /* Frameworks */, - ); - sourceTree = ""; - }; - 7555FF7C242A565900829871 /* Products */ = { - isa = PBXGroup; - children = ( - 7555FF7B242A565900829871 /* Ktor Monitor Sample.app */, - ); - name = Products; - sourceTree = ""; - }; - 7555FF7D242A565900829871 /* iosApp */ = { - isa = PBXGroup; - children = ( - 058557BA273AAA24004C7B11 /* Assets.xcassets */, - 7555FF82242A565900829871 /* ContentView.swift */, - 7555FF8C242A565B00829871 /* Info.plist */, - 2152FB032600AC8F00CF470E /* iOSApp.swift */, - 058557D7273AAEEB004C7B11 /* Preview Content */, - ); - path = iosApp; - sourceTree = ""; - }; - AB1DB47929225F7C00F7AF9C /* Configuration */ = { - isa = PBXGroup; - children = ( - AB3632DC29227652001CCB65 /* Config.xcconfig */, - ); - path = Configuration; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 7555FF7A242A565900829871 /* iosApp */ = { - isa = PBXNativeTarget; - buildConfigurationList = 7555FFA5242A565B00829871 /* Build configuration list for PBXNativeTarget "iosApp" */; - buildPhases = ( - F36B1CEB2AD83DDC00CB74D5 /* Compile Kotlin Framework */, - 7555FF77242A565900829871 /* Sources */, - B92378962B6B1156000C7307 /* Frameworks */, - 7555FF79242A565900829871 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = iosApp; - packageProductDependencies = ( - ); - productName = iosApp; - productReference = 7555FF7B242A565900829871 /* Ktor Monitor Sample.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 7555FF73242A565900829871 /* Project object */ = { - isa = PBXProject; - attributes = { - BuildIndependentTargetsInParallel = YES; - LastSwiftUpdateCheck = 1130; - LastUpgradeCheck = 1540; - ORGANIZATIONNAME = orgName; - TargetAttributes = { - 7555FF7A242A565900829871 = { - CreatedOnToolsVersion = 11.3.1; - }; - }; - }; - buildConfigurationList = 7555FF76242A565900829871 /* Build configuration list for PBXProject "iosApp" */; - compatibilityVersion = "Xcode 14.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 7555FF72242A565900829871; - packageReferences = ( - ); - productRefGroup = 7555FF7C242A565900829871 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 7555FF7A242A565900829871 /* iosApp */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 7555FF79242A565900829871 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 058557D9273AAEEB004C7B11 /* Preview Assets.xcassets in Resources */, - 058557BB273AAA24004C7B11 /* Assets.xcassets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - F36B1CEB2AD83DDC00CB74D5 /* Compile Kotlin Framework */ = { - isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - name = "Compile Kotlin Framework"; - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "if [ \"YES\" = \"$OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED\" ]; then\n echo \"Skipping Gradle build task invocation due to OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED environment variable set to \\\"YES\\\"\"\n exit 0\nfi\ncd \"$SRCROOT/../../..\"\n./gradlew :sample:ktor:embedAndSignAppleFrameworkForXcode\n"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 7555FF77242A565900829871 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 2152FB042600AC8F00CF470E /* iOSApp.swift in Sources */, - 7555FF83242A565900829871 /* ContentView.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 7555FFA3242A565B00829871 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = AB3632DC29227652001CCB65 /* Config.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 16.0; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 7555FFA4242A565B00829871 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = AB3632DC29227652001CCB65 /* Config.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 16.0; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 7555FFA6242A565B00829871 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\""; - DEVELOPMENT_TEAM = "${TEAM_ID}"; - ENABLE_PREVIEWS = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/../shared/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)\n$(SRCROOT)/../build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)", - ); - INFOPLIST_FILE = iosApp/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 16.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - OTHER_LDFLAGS = "-lsqlite3"; - PRODUCT_BUNDLE_IDENTIFIER = "${BUNDLE_ID}${TEAM_ID}"; - PRODUCT_NAME = "${APP_NAME}"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 7555FFA7242A565B00829871 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\""; - DEVELOPMENT_TEAM = "${TEAM_ID}"; - ENABLE_PREVIEWS = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/../shared/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)\n$(SRCROOT)/../build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)", - ); - INFOPLIST_FILE = iosApp/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 16.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - OTHER_LDFLAGS = "-lsqlite3"; - PRODUCT_BUNDLE_IDENTIFIER = "${BUNDLE_ID}${TEAM_ID}"; - PRODUCT_NAME = "${APP_NAME}"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 7555FF76242A565900829871 /* Build configuration list for PBXProject "iosApp" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 7555FFA3242A565B00829871 /* Debug */, - 7555FFA4242A565B00829871 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 7555FFA5242A565B00829871 /* Build configuration list for PBXNativeTarget "iosApp" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 7555FFA6242A565B00829871 /* Debug */, - 7555FFA7242A565B00829871 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 7555FF73242A565900829871 /* Project object */; -} \ No newline at end of file diff --git a/sample/ktor/iosApp/iosApp.xcodeproj/xcshareddata/xcschemes/ios.xcscheme b/sample/ktor/iosApp/iosApp.xcodeproj/xcshareddata/xcschemes/ios.xcscheme deleted file mode 100644 index 723277db..00000000 --- a/sample/ktor/iosApp/iosApp.xcodeproj/xcshareddata/xcschemes/ios.xcscheme +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/sample/ktor/iosApp/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json b/sample/ktor/iosApp/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json deleted file mode 100644 index ee7e3ca0..00000000 --- a/sample/ktor/iosApp/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "colors" : [ - { - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} \ No newline at end of file diff --git a/sample/ktor/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json b/sample/ktor/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 8edf56e7..00000000 --- a/sample/ktor/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "images" : [ - { - "filename" : "app-icon-1024.png", - "idiom" : "universal", - "platform" : "ios", - "size" : "1024x1024" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/sample/ktor/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/app-icon-1024.png b/sample/ktor/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/app-icon-1024.png deleted file mode 100644 index 68dd30dd..00000000 Binary files a/sample/ktor/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/app-icon-1024.png and /dev/null differ diff --git a/sample/ktor/iosApp/iosApp/Assets.xcassets/Contents.json b/sample/ktor/iosApp/iosApp/Assets.xcassets/Contents.json deleted file mode 100644 index 4aa7c535..00000000 --- a/sample/ktor/iosApp/iosApp/Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} \ No newline at end of file diff --git a/sample/ktor/iosApp/iosApp/ContentView.swift b/sample/ktor/iosApp/iosApp/ContentView.swift deleted file mode 100644 index bf607ded..00000000 --- a/sample/ktor/iosApp/iosApp/ContentView.swift +++ /dev/null @@ -1,20 +0,0 @@ -import UIKit -import SwiftUI -import KtorMonitorSample - -struct ComposeView: UIViewControllerRepresentable { - func makeUIViewController(context: Context) -> UIViewController { - MainViewControllerKt.MainViewController() - } - - func updateUIViewController(_ uiViewController: UIViewController, context: Context) {} -} - -struct ContentView: View { - var body: some View { - ComposeView().ignoresSafeArea() - } -} - - - diff --git a/sample/ktor/iosApp/iosApp/Info.plist b/sample/ktor/iosApp/iosApp/Info.plist deleted file mode 100644 index 412e3781..00000000 --- a/sample/ktor/iosApp/iosApp/Info.plist +++ /dev/null @@ -1,50 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - $(PRODUCT_BUNDLE_PACKAGE_TYPE) - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - LSRequiresIPhoneOS - - CADisableMinimumFrameDurationOnPhone - - UIApplicationSceneManifest - - UIApplicationSupportsMultipleScenes - - - UILaunchScreen - - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - - diff --git a/sample/ktor/iosApp/iosApp/Preview Content/Preview Assets.xcassets/Contents.json b/sample/ktor/iosApp/iosApp/Preview Content/Preview Assets.xcassets/Contents.json deleted file mode 100644 index 4aa7c535..00000000 --- a/sample/ktor/iosApp/iosApp/Preview Content/Preview Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} \ No newline at end of file diff --git a/sample/ktor/iosApp/iosApp/iOSApp.swift b/sample/ktor/iosApp/iosApp/iOSApp.swift deleted file mode 100644 index d83dca61..00000000 --- a/sample/ktor/iosApp/iosApp/iOSApp.swift +++ /dev/null @@ -1,10 +0,0 @@ -import SwiftUI - -@main -struct iOSApp: App { - var body: some Scene { - WindowGroup { - ContentView() - } - } -} \ No newline at end of file diff --git a/sample/ktor/src/androidMain/AndroidManifest.xml b/sample/ktor/src/androidMain/AndroidManifest.xml deleted file mode 100644 index f8c92352..00000000 --- a/sample/ktor/src/androidMain/AndroidManifest.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/sample/ktor/src/androidMain/ic_launcher-playstore.png b/sample/ktor/src/androidMain/ic_launcher-playstore.png deleted file mode 100644 index cb1af58b..00000000 Binary files a/sample/ktor/src/androidMain/ic_launcher-playstore.png and /dev/null differ diff --git a/sample/ktor/src/androidMain/kotlin/ro/cosminmihu/ktor/monitor/sample/SampleActivity.kt b/sample/ktor/src/androidMain/kotlin/ro/cosminmihu/ktor/monitor/sample/SampleActivity.kt deleted file mode 100644 index d0fd72d5..00000000 --- a/sample/ktor/src/androidMain/kotlin/ro/cosminmihu/ktor/monitor/sample/SampleActivity.kt +++ /dev/null @@ -1,20 +0,0 @@ -package ro.cosminmihu.ktor.monitor.sample - -import android.os.Bundle -import androidx.activity.ComponentActivity -import androidx.activity.compose.setContent -import androidx.activity.enableEdgeToEdge - -/** - * Compose sample how to use [ro.cosminmihu.ktor.monitor.KtorMonitor]. - */ -class SampleActivity : ComponentActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - enableEdgeToEdge() - - setContent { - App() - } - } -} \ No newline at end of file diff --git a/sample/ktor/src/androidMain/res/drawable/ic_launcher_foreground.xml b/sample/ktor/src/androidMain/res/drawable/ic_launcher_foreground.xml deleted file mode 100644 index b8fa95d1..00000000 --- a/sample/ktor/src/androidMain/res/drawable/ic_launcher_foreground.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - diff --git a/sample/ktor/src/androidMain/res/drawable/ic_launcher_monochrome.xml b/sample/ktor/src/androidMain/res/drawable/ic_launcher_monochrome.xml deleted file mode 100644 index 5b781595..00000000 --- a/sample/ktor/src/androidMain/res/drawable/ic_launcher_monochrome.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - diff --git a/sample/ktor/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml b/sample/ktor/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml deleted file mode 100644 index 081998b2..00000000 --- a/sample/ktor/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/sample/ktor/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml b/sample/ktor/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml deleted file mode 100644 index 081998b2..00000000 --- a/sample/ktor/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/sample/ktor/src/androidMain/res/mipmap-hdpi/ic_launcher.webp b/sample/ktor/src/androidMain/res/mipmap-hdpi/ic_launcher.webp deleted file mode 100644 index 97c5532a..00000000 Binary files a/sample/ktor/src/androidMain/res/mipmap-hdpi/ic_launcher.webp and /dev/null differ diff --git a/sample/ktor/src/androidMain/res/mipmap-hdpi/ic_launcher_foreground.webp b/sample/ktor/src/androidMain/res/mipmap-hdpi/ic_launcher_foreground.webp deleted file mode 100644 index 134f74d5..00000000 Binary files a/sample/ktor/src/androidMain/res/mipmap-hdpi/ic_launcher_foreground.webp and /dev/null differ diff --git a/sample/ktor/src/androidMain/res/mipmap-hdpi/ic_launcher_round.webp b/sample/ktor/src/androidMain/res/mipmap-hdpi/ic_launcher_round.webp deleted file mode 100644 index ec375861..00000000 Binary files a/sample/ktor/src/androidMain/res/mipmap-hdpi/ic_launcher_round.webp and /dev/null differ diff --git a/sample/ktor/src/androidMain/res/mipmap-mdpi/ic_launcher.webp b/sample/ktor/src/androidMain/res/mipmap-mdpi/ic_launcher.webp deleted file mode 100644 index 0f4834bb..00000000 Binary files a/sample/ktor/src/androidMain/res/mipmap-mdpi/ic_launcher.webp and /dev/null differ diff --git a/sample/ktor/src/androidMain/res/mipmap-mdpi/ic_launcher_foreground.webp b/sample/ktor/src/androidMain/res/mipmap-mdpi/ic_launcher_foreground.webp deleted file mode 100644 index 7f67aceb..00000000 Binary files a/sample/ktor/src/androidMain/res/mipmap-mdpi/ic_launcher_foreground.webp and /dev/null differ diff --git a/sample/ktor/src/androidMain/res/mipmap-mdpi/ic_launcher_round.webp b/sample/ktor/src/androidMain/res/mipmap-mdpi/ic_launcher_round.webp deleted file mode 100644 index f5eba7d3..00000000 Binary files a/sample/ktor/src/androidMain/res/mipmap-mdpi/ic_launcher_round.webp and /dev/null differ diff --git a/sample/ktor/src/androidMain/res/mipmap-xhdpi/ic_launcher.webp b/sample/ktor/src/androidMain/res/mipmap-xhdpi/ic_launcher.webp deleted file mode 100644 index 768c7448..00000000 Binary files a/sample/ktor/src/androidMain/res/mipmap-xhdpi/ic_launcher.webp and /dev/null differ diff --git a/sample/ktor/src/androidMain/res/mipmap-xhdpi/ic_launcher_foreground.webp b/sample/ktor/src/androidMain/res/mipmap-xhdpi/ic_launcher_foreground.webp deleted file mode 100644 index c3f18412..00000000 Binary files a/sample/ktor/src/androidMain/res/mipmap-xhdpi/ic_launcher_foreground.webp and /dev/null differ diff --git a/sample/ktor/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.webp b/sample/ktor/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.webp deleted file mode 100644 index 058948fe..00000000 Binary files a/sample/ktor/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.webp and /dev/null differ diff --git a/sample/ktor/src/androidMain/res/mipmap-xxhdpi/ic_launcher.webp b/sample/ktor/src/androidMain/res/mipmap-xxhdpi/ic_launcher.webp deleted file mode 100644 index e4a3514f..00000000 Binary files a/sample/ktor/src/androidMain/res/mipmap-xxhdpi/ic_launcher.webp and /dev/null differ diff --git a/sample/ktor/src/androidMain/res/mipmap-xxhdpi/ic_launcher_foreground.webp b/sample/ktor/src/androidMain/res/mipmap-xxhdpi/ic_launcher_foreground.webp deleted file mode 100644 index 58668e3e..00000000 Binary files a/sample/ktor/src/androidMain/res/mipmap-xxhdpi/ic_launcher_foreground.webp and /dev/null differ diff --git a/sample/ktor/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.webp b/sample/ktor/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.webp deleted file mode 100644 index d7d90ed3..00000000 Binary files a/sample/ktor/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.webp and /dev/null differ diff --git a/sample/ktor/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.webp b/sample/ktor/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.webp deleted file mode 100644 index 147dc823..00000000 Binary files a/sample/ktor/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.webp and /dev/null differ diff --git a/sample/ktor/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_foreground.webp b/sample/ktor/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_foreground.webp deleted file mode 100644 index a3a2f505..00000000 Binary files a/sample/ktor/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_foreground.webp and /dev/null differ diff --git a/sample/ktor/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.webp b/sample/ktor/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.webp deleted file mode 100644 index 44fbdeec..00000000 Binary files a/sample/ktor/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.webp and /dev/null differ diff --git a/sample/ktor/src/androidMain/res/values/ic_launcher_background.xml b/sample/ktor/src/androidMain/res/values/ic_launcher_background.xml deleted file mode 100644 index f001f3e9..00000000 --- a/sample/ktor/src/androidMain/res/values/ic_launcher_background.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - #010101 - \ No newline at end of file diff --git a/sample/ktor/src/androidMain/res/values/strings.xml b/sample/ktor/src/androidMain/res/values/strings.xml deleted file mode 100644 index a9c1068c..00000000 --- a/sample/ktor/src/androidMain/res/values/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - Ktor Monitor Sample KTOR - \ No newline at end of file diff --git a/sample/ktor/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/sample/App.kt b/sample/ktor/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/sample/App.kt deleted file mode 100644 index 651b6e99..00000000 --- a/sample/ktor/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/sample/App.kt +++ /dev/null @@ -1,29 +0,0 @@ -package ro.cosminmihu.ktor.monitor.sample - -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.tooling.preview.Preview -import ro.cosminmihu.ktor.monitor.KtorMonitor - -/** - * Compose sample how to use [KtorMonitor]. - */ -@Preview -@Composable -fun App() { - Column( - modifier = Modifier.fillMaxSize(), - horizontalAlignment = Alignment.CenterHorizontally, - ) { - KtorMonitor() - } - - LaunchedEffect(Unit) { - samples() - } -} - diff --git a/sample/ktor/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/sample/Calls.kt b/sample/ktor/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/sample/Calls.kt deleted file mode 100644 index 4675de9e..00000000 --- a/sample/ktor/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/sample/Calls.kt +++ /dev/null @@ -1,224 +0,0 @@ -package ro.cosminmihu.ktor.monitor.sample - -import io.ktor.client.request.delete -import io.ktor.client.request.forms.FormDataContent -import io.ktor.client.request.forms.MultiPartFormDataContent -import io.ktor.client.request.forms.formData -import io.ktor.client.request.get -import io.ktor.client.request.patch -import io.ktor.client.request.post -import io.ktor.client.request.put -import io.ktor.client.request.request -import io.ktor.client.request.setBody -import io.ktor.http.ContentType -import io.ktor.http.Headers -import io.ktor.http.HttpHeaders -import io.ktor.http.HttpMethod -import io.ktor.http.Parameters -import io.ktor.http.contentType -import ro.cosminmihu.ktor.monitor.sample.shared.HTTP_BIN_URL -import ro.cosminmihu.ktor.monitor.sample.shared.MARKDOWN_SAMPLE -import ro.cosminmihu.ktor.monitor.sample.shared.SVG_SAMPLE -import ro.cosminmihu.ktor.monitor.sample.shared.TEXT_FILE_CONTENT_SAMPLE -import ro.cosminmihu.ktor.monitor.sample.shared.TEXT_SAMPLE -import ro.cosminmihu.ktor.monitor.sample.shared.YAML_SAMPLE - - -internal suspend fun samples() { - val client = httpClient() - - // HTTP Methods - runCatching { client.get("$HTTP_BIN_URL/get") } - runCatching { client.post("$HTTP_BIN_URL/post") { setBody("") } } - runCatching { client.put("$HTTP_BIN_URL/put") { setBody("") } } - runCatching { client.delete("$HTTP_BIN_URL/delete") } - runCatching { client.patch("$HTTP_BIN_URL/patch") { setBody("") } } - - // Status codes - runCatching { client.get("$HTTP_BIN_URL/status/200") } - runCatching { client.post("$HTTP_BIN_URL/status/201") { setBody("") } } - runCatching { client.put("$HTTP_BIN_URL/status/204") { setBody("") } } - runCatching { client.patch("$HTTP_BIN_URL/status/206") { setBody("") } } - runCatching { - client.request("$HTTP_BIN_URL/status/302") { - method = HttpMethod.Trace - } - } - runCatching { client.get("$HTTP_BIN_URL/status/404") } - runCatching { client.delete("$HTTP_BIN_URL/status/418") } - runCatching { client.get("$HTTP_BIN_URL/status/500") } - - // Redirects - runCatching { client.get("$HTTP_BIN_URL/absolute-redirect/1") } - runCatching { client.get("$HTTP_BIN_URL/absolute-redirect/3") } - runCatching { client.get("$HTTP_BIN_URL/redirect/1") } - runCatching { client.get("$HTTP_BIN_URL/redirect/3") } - runCatching { client.delete("$HTTP_BIN_URL/redirect-to?url=/get") } - runCatching { client.get("$HTTP_BIN_URL/redirect-to?url=/get") } - runCatching { client.patch("$HTTP_BIN_URL/redirect-to?url=/get") { setBody("") } } - runCatching { client.post("$HTTP_BIN_URL/redirect-to?url=/get") { setBody("") } } - runCatching { client.put("$HTTP_BIN_URL/redirect-to?url=/get") { setBody("") } } - runCatching { - client.request("$HTTP_BIN_URL/redirect-to?url=/get") { - method = HttpMethod.Trace - } - } - runCatching { client.get("$HTTP_BIN_URL/redirect-to?url=/get&status_code=301") } - runCatching { client.get("$HTTP_BIN_URL/redirect-to?url=/get&status_code=302") } - runCatching { client.get("$HTTP_BIN_URL/redirect-to?url=/get&status_code=303") } - runCatching { client.get("$HTTP_BIN_URL/redirect-to?url=/get&status_code=307") } - runCatching { client.get("$HTTP_BIN_URL/redirect-to?url=/get&status_code=308") } - runCatching { client.get("$HTTP_BIN_URL/relative-redirect/1") } - runCatching { client.get("$HTTP_BIN_URL/relative-redirect/3") } - - // Anything - runCatching { client.delete("$HTTP_BIN_URL/anything") } - runCatching { client.get("$HTTP_BIN_URL/anything") } - runCatching { client.patch("$HTTP_BIN_URL/anything") { setBody("") } } - runCatching { client.post("$HTTP_BIN_URL/anything") { setBody("") } } - runCatching { client.put("$HTTP_BIN_URL/anything") { setBody("") } } - runCatching { - client.request("$HTTP_BIN_URL/anything") { - method = HttpMethod.Trace - } - } - runCatching { client.delete("$HTTP_BIN_URL/anything/nested/path") } - runCatching { client.get("$HTTP_BIN_URL/anything/nested/path") } - runCatching { client.patch("$HTTP_BIN_URL/anything/nested/path") { setBody("") } } - runCatching { client.post("$HTTP_BIN_URL/anything/nested/path") { setBody("") } } - runCatching { client.put("$HTTP_BIN_URL/anything/nested/path") { setBody("") } } - runCatching { - client.request("$HTTP_BIN_URL/anything/nested/path") { - method = HttpMethod.Trace - } - } - - // Request inspection - runCatching { client.get("$HTTP_BIN_URL/headers") } - runCatching { client.get("$HTTP_BIN_URL/ip") } - runCatching { client.get("$HTTP_BIN_URL/user-agent") } - - // Auth - runCatching { client.get("$HTTP_BIN_URL/basic-auth/user/passwd") } - runCatching { client.get("$HTTP_BIN_URL/bearer") } - runCatching { client.get("$HTTP_BIN_URL/digest-auth/auth/user/passwd") } - runCatching { client.get("$HTTP_BIN_URL/digest-auth/auth/user/passwd/MD5") } - runCatching { client.get("$HTTP_BIN_URL/digest-auth/auth/user/passwd/MD5/never") } - runCatching { client.get("$HTTP_BIN_URL/hidden-basic-auth/user/passwd") } - - // Response formats - runCatching { client.get("$HTTP_BIN_URL/base64/SGVsbG8sIGh0dHBiaW4h") } - runCatching { client.get("$HTTP_BIN_URL/deny") } - runCatching { client.get("$HTTP_BIN_URL/encoding/utf8") } - runCatching { client.get("$HTTP_BIN_URL/html") } - runCatching { client.get("$HTTP_BIN_URL/json") } - runCatching { client.get("$HTTP_BIN_URL/robots.txt") } - runCatching { client.get("$HTTP_BIN_URL/xml") } - runCatching { - client.post("$HTTP_BIN_URL/anything/markdown") { - contentType(ContentType.parse("text/markdown")) - setBody(MARKDOWN_SAMPLE) - } - } - runCatching { - client.post("$HTTP_BIN_URL/anything/yaml") { - contentType(ContentType.parse("application/yaml")) - setBody(YAML_SAMPLE) - } - } - - // Images - runCatching { client.get("$HTTP_BIN_URL/image") } - runCatching { client.get("$HTTP_BIN_URL/image/jpeg") } - runCatching { client.get("$HTTP_BIN_URL/image/png") } - runCatching { client.get("$HTTP_BIN_URL/image/svg") } - runCatching { client.get("$HTTP_BIN_URL/image/webp") } - - // Compression - runCatching { client.get("$HTTP_BIN_URL/brotli") } - runCatching { client.get("$HTTP_BIN_URL/deflate") } - runCatching { client.get("$HTTP_BIN_URL/gzip") } - - // Cookies and cache - runCatching { client.get("$HTTP_BIN_URL/cache") } - runCatching { client.get("$HTTP_BIN_URL/cache/30") } - runCatching { client.get("$HTTP_BIN_URL/cookies") } - runCatching { client.get("$HTTP_BIN_URL/cookies/delete?theme") } - runCatching { client.get("$HTTP_BIN_URL/cookies/set?theme=dark") } - runCatching { client.get("$HTTP_BIN_URL/cookies/set/session/ktor-monitor") } - runCatching { client.get("$HTTP_BIN_URL/etag/sample-etag") } - - // Dynamic data - runCatching { client.get("$HTTP_BIN_URL/bytes/1024") } - runCatching { client.delete("$HTTP_BIN_URL/delay/1") } - runCatching { client.get("$HTTP_BIN_URL/delay/1") } - runCatching { client.patch("$HTTP_BIN_URL/delay/1") { setBody("") } } - runCatching { client.post("$HTTP_BIN_URL/delay/1") { setBody("") } } - runCatching { client.put("$HTTP_BIN_URL/delay/1") { setBody("") } } - runCatching { - client.request("$HTTP_BIN_URL/delay/1") { - method = HttpMethod.Trace - } - } - runCatching { client.get("$HTTP_BIN_URL/drip?duration=1&numbytes=16&delay=0") } - runCatching { client.get("$HTTP_BIN_URL/links/5/0") } - runCatching { client.get("$HTTP_BIN_URL/range/256") } - runCatching { client.get("$HTTP_BIN_URL/response-headers?X-Debug=ktor-monitor&Server=example") } - runCatching { client.post("$HTTP_BIN_URL/response-headers?X-Debug=ktor-monitor") { setBody("") } } - runCatching { client.get("$HTTP_BIN_URL/stream/5") } - runCatching { client.get("$HTTP_BIN_URL/stream-bytes/256") } - runCatching { client.get("$HTTP_BIN_URL/uuid") } - - // Form data (url-encoded) - runCatching { - client.post("$HTTP_BIN_URL/post") { - contentType(ContentType.Application.FormUrlEncoded) - setBody( - FormDataContent( - Parameters.build { - append("username", "ktor-monitor") - append("email", "demo@example.com") - append("notes", TEXT_SAMPLE) - } - ) - ) - } - } - - // Multipart / form-data - runCatching { - client.post("$HTTP_BIN_URL/post") { - setBody( - MultiPartFormDataContent( - formData { - append("username", "ktor-monitor") - append("email", "demo@example.com") - append( - key = "notes", - value = TEXT_SAMPLE, - headers = Headers.build { - append(HttpHeaders.ContentType, "text/plain; charset=utf-8") - }, - ) - append( - key = "file", - value = TEXT_FILE_CONTENT_SAMPLE.encodeToByteArray(), - headers = Headers.build { - append(HttpHeaders.ContentType, "text/plain") - append(HttpHeaders.ContentDisposition, "filename=\"sample.txt\"") - }, - ) - append( - key = "logo", - value = SVG_SAMPLE, - headers = Headers.build { - append(HttpHeaders.ContentType, "image/svg+xml") - append(HttpHeaders.ContentDisposition, "filename=\"logo.svg\"") - }, - ) - } - ) - ) - } - } -} \ No newline at end of file diff --git a/sample/ktor/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/sample/HttpClient.kt b/sample/ktor/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/sample/HttpClient.kt deleted file mode 100644 index 5bc12226..00000000 --- a/sample/ktor/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/sample/HttpClient.kt +++ /dev/null @@ -1,20 +0,0 @@ -package ro.cosminmihu.ktor.monitor.sample - -import io.ktor.client.HttpClient -import io.ktor.client.plugins.sse.SSE -import io.ktor.client.plugins.websocket.WebSockets -import ro.cosminmihu.ktor.monitor.ContentLength -import ro.cosminmihu.ktor.monitor.KtorMonitorLogging -import ro.cosminmihu.ktor.monitor.RetentionPeriod - -internal fun httpClient() = HttpClient { - install(KtorMonitorLogging) { - sanitizeHeader { header -> header == "Authorization" } - filter { request -> !request.url.host.contains("cosminmihu.ro") } - showNotification = true - retentionPeriod = RetentionPeriod.OneHour - maxContentLength = ContentLength.Default - } - install(WebSockets) - install(SSE) -} \ No newline at end of file diff --git a/sample/ktor/src/iosMain/kotlin/ro/cosminmihu/ktor/monitor/sample/MainViewController.kt b/sample/ktor/src/iosMain/kotlin/ro/cosminmihu/ktor/monitor/sample/MainViewController.kt deleted file mode 100644 index 45253014..00000000 --- a/sample/ktor/src/iosMain/kotlin/ro/cosminmihu/ktor/monitor/sample/MainViewController.kt +++ /dev/null @@ -1,9 +0,0 @@ -package ro.cosminmihu.ktor.monitor.sample - -import androidx.compose.ui.window.ComposeUIViewController -import ro.cosminmihu.ktor.monitor.KtorMonitor - -/** - * Compose sample how to use [KtorMonitor]. - */ -fun MainViewController() = ComposeUIViewController { App() } \ No newline at end of file diff --git a/sample/ktor/src/jvmMain/composeResources/drawable/ic_launcher.xml b/sample/ktor/src/jvmMain/composeResources/drawable/ic_launcher.xml deleted file mode 100644 index 18295790..00000000 --- a/sample/ktor/src/jvmMain/composeResources/drawable/ic_launcher.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/sample/ktor/src/jvmMain/composeResources/values/strings.xml b/sample/ktor/src/jvmMain/composeResources/values/strings.xml deleted file mode 100644 index 4c23d95f..00000000 --- a/sample/ktor/src/jvmMain/composeResources/values/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - Ktor Monitor Sample Ktor - \ No newline at end of file diff --git a/sample/ktor/src/jvmMain/kotlin/ro/cosminmihu/ktor/monitor/sample/compose/main.kt b/sample/ktor/src/jvmMain/kotlin/ro/cosminmihu/ktor/monitor/sample/compose/main.kt deleted file mode 100644 index 029aa6ce..00000000 --- a/sample/ktor/src/jvmMain/kotlin/ro/cosminmihu/ktor/monitor/sample/compose/main.kt +++ /dev/null @@ -1,44 +0,0 @@ -package ro.cosminmihu.ktor.monitor.sample.compose - -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.saveable.rememberSaveable -import androidx.compose.runtime.setValue -import androidx.compose.ui.window.Tray -import androidx.compose.ui.window.Window -import androidx.compose.ui.window.application -import org.jetbrains.compose.resources.painterResource -import org.jetbrains.compose.resources.stringResource -import ro.cosminmihu.ktor.monitor.KtorMonitorMenuItem -import ro.cosminmihu.ktor.monitor.KtorMonitorWindow -import ro.cosminmihu.ktor.monitor.sample.App -import ro.cosminmihu.ktor.monitor.sample.resources.Res -import ro.cosminmihu.ktor.monitor.sample.resources.app_name -import ro.cosminmihu.ktor.monitor.sample.resources.ic_launcher - -/** - * Compose sample how to use [KtorMonitorWindow] w/o [KtorMonitorMenuItem]. - */ -fun main() = application { - - var showKtorMonitor by rememberSaveable { mutableStateOf(false) } - - Tray( - icon = painterResource(Res.drawable.ic_launcher), - menu = { - KtorMonitorMenuItem { showKtorMonitor = true } - } - ) - - KtorMonitorWindow( - show = showKtorMonitor, - onCloseRequest = { showKtorMonitor = false } - ) - - Window( - onCloseRequest = ::exitApplication, - title = stringResource(Res.string.app_name), - ) { - App() - } -} \ No newline at end of file diff --git a/sample/ktor/src/jvmMain/kotlin/ro/cosminmihu/ktor/monitor/sample/swing/main.kt b/sample/ktor/src/jvmMain/kotlin/ro/cosminmihu/ktor/monitor/sample/swing/main.kt deleted file mode 100644 index a72e9af5..00000000 --- a/sample/ktor/src/jvmMain/kotlin/ro/cosminmihu/ktor/monitor/sample/swing/main.kt +++ /dev/null @@ -1,30 +0,0 @@ -package ro.cosminmihu.ktor.monitor.sample.swing - -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.launch -import ro.cosminmihu.ktor.monitor.KtorMonitorPanel -import ro.cosminmihu.ktor.monitor.sample.samples -import java.awt.BorderLayout -import java.awt.Dimension -import javax.swing.JFrame -import javax.swing.SwingUtilities - -/** - * Swing Sample how to use [KtorMonitorPanel]. - */ -fun main() { - GlobalScope.launch { - samples() - } - - SwingUtilities.invokeLater { - val frame = JFrame("Ktor Monitor Sample") - frame.minimumSize = Dimension(800, 600) - frame.defaultCloseOperation = JFrame.EXIT_ON_CLOSE - - frame.add(KtorMonitorPanel, BorderLayout.CENTER) - - frame.pack() - frame.isVisible = true - } -} \ No newline at end of file diff --git a/sample/ktor/src/webMain/kotlin/ro/cosminmihu/ktor/monitor/sample/main.kt b/sample/ktor/src/webMain/kotlin/ro/cosminmihu/ktor/monitor/sample/main.kt deleted file mode 100644 index 3973bd26..00000000 --- a/sample/ktor/src/webMain/kotlin/ro/cosminmihu/ktor/monitor/sample/main.kt +++ /dev/null @@ -1,11 +0,0 @@ -package ro.cosminmihu.ktor.monitor.sample - -import androidx.compose.ui.ExperimentalComposeUiApi -import androidx.compose.ui.window.ComposeViewport - -@OptIn(ExperimentalComposeUiApi::class) -fun main() { - ComposeViewport { - App() - } -} \ No newline at end of file diff --git a/sample/ktor/src/webMain/resources/index.html b/sample/ktor/src/webMain/resources/index.html deleted file mode 100644 index 946c6c51..00000000 --- a/sample/ktor/src/webMain/resources/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - Ktor Monitor Sample - - - - - - \ No newline at end of file diff --git a/sample/ktor/src/webMain/resources/styles.css b/sample/ktor/src/webMain/resources/styles.css deleted file mode 100644 index 0549b10f..00000000 --- a/sample/ktor/src/webMain/resources/styles.css +++ /dev/null @@ -1,7 +0,0 @@ -html, body { - width: 100%; - height: 100%; - margin: 0; - padding: 0; - overflow: hidden; -} \ No newline at end of file diff --git a/sample/ktor/webpack.config.d/sqljs-config.js b/sample/ktor/webpack.config.d/sqljs-config.js deleted file mode 100644 index 8612d471..00000000 --- a/sample/ktor/webpack.config.d/sqljs-config.js +++ /dev/null @@ -1,17 +0,0 @@ -// {project}/webpack.config.d/sqljs.js -config.resolve = { - fallback: { - fs: false, - path: false, - crypto: false, - } -}; - -const CopyWebpackPlugin = require('copy-webpack-plugin'); -config.plugins.push( - new CopyWebpackPlugin({ - patterns: [ - '../../node_modules/sql.js/dist/sql-wasm.wasm' - ] - }) -); \ No newline at end of file diff --git a/sample/okhttp/build.gradle.kts b/sample/okhttp/build.gradle.kts deleted file mode 100644 index 6f92c900..00000000 --- a/sample/okhttp/build.gradle.kts +++ /dev/null @@ -1,108 +0,0 @@ -import org.jetbrains.compose.desktop.application.dsl.TargetFormat -import org.jetbrains.kotlin.gradle.dsl.JvmTarget - -plugins { - alias(libs.plugins.kotlinMultiplatform) - alias(libs.plugins.androidApplication) - alias(libs.plugins.composeMultiplatform) - alias(libs.plugins.composeCompiler) -} - -compose.resources { - packageOfResClass = "ro.cosminmihu.ktor.monitor.sample.resources" -} - -kotlin { - - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_11) - } - } - - jvm() - - sourceSets { - androidMain.dependencies { - implementation(libs.androidx.activity.compose) - } - commonMain.dependencies { - implementation(libs.compose.runtime) - implementation(libs.compose.foundation) - implementation(libs.compose.material3) - implementation(libs.compose.ui) - implementation(libs.compose.components.resources) - implementation(libs.compose.ui.tooling.preview) - implementation(libs.androidx.lifecycle.viewmodel) - implementation(libs.androidx.lifecycle.runtime.compose) - implementation(libs.okhttp) - implementation(projects.okhttp.libraryOkhttp) - implementation(projects.sample.shared) -// implementation("ro.cosminmihu.ktor:ktor-monitor-okhttp-interceptor:1.13.0") -// implementation(projects.okhttp.libraryOkhttpNoOp) -// implementation("ro.cosminmihu.ktor:ktor-monitor-okhttp-interceptor-no-op:1.13.0") - } - jvmMain.dependencies { - implementation(compose.desktop.currentOs) - implementation(libs.kotlinx.coroutines.swing) - } - } -} - -android { - namespace = "ro.cosminmihu.ktor.monitor.sample" - compileSdk = libs.versions.android.compileSdk.get().toInt() - - defaultConfig { - applicationId = "ro.cosminmihu.ktor.monitor.sample" - minSdk = libs.versions.android.minSdk.get().toInt() - targetSdk = libs.versions.android.targetSdk.get().toInt() - versionCode = 1 - versionName = "1.0" - } - packaging { - resources { - excludes += "/META-INF/{AL2.0,LGPL2.1}" - } - } - signingConfigs { - create("release") { - storeFile = File(project.rootDir, "extra/sample/sample-ktor-monitor.jks") - storePassword = "ktor-monitor-sample" - keyAlias = "ktor-monitor-sample" - keyPassword = "ktor-monitor-sample" - } - } - buildTypes { - debug { - versionNameSuffix = ".debug" - } - - release { - isMinifyEnabled = true - isShrinkResources = true - signingConfig = signingConfigs.getByName("release") - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - isCoreLibraryDesugaringEnabled = true - } -} - -compose.desktop { - application { - mainClass = "ro.cosminmihu.ktor.monitor.sample.MainKt" - - nativeDistributions { - targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb, TargetFormat.Rpm) - packageName = "ro.cosminmihu.ktor.monitor.sample" - packageVersion = "1.0.0" - } - } -} - -dependencies { - coreLibraryDesugaring(libs.desugar) -} diff --git a/sample/okhttp/src/androidMain/AndroidManifest.xml b/sample/okhttp/src/androidMain/AndroidManifest.xml deleted file mode 100644 index 760a97b1..00000000 --- a/sample/okhttp/src/androidMain/AndroidManifest.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/sample/okhttp/src/androidMain/ic_launcher-playstore.png b/sample/okhttp/src/androidMain/ic_launcher-playstore.png deleted file mode 100644 index cb1af58b..00000000 Binary files a/sample/okhttp/src/androidMain/ic_launcher-playstore.png and /dev/null differ diff --git a/sample/okhttp/src/androidMain/kotlin/ro/cosminmihu/ktor/monitor/sample/SampleActivity.kt b/sample/okhttp/src/androidMain/kotlin/ro/cosminmihu/ktor/monitor/sample/SampleActivity.kt deleted file mode 100644 index 6c19f1ad..00000000 --- a/sample/okhttp/src/androidMain/kotlin/ro/cosminmihu/ktor/monitor/sample/SampleActivity.kt +++ /dev/null @@ -1,18 +0,0 @@ -package ro.cosminmihu.ktor.monitor.sample - -import android.os.Bundle -import androidx.activity.ComponentActivity -import androidx.activity.compose.setContent -import androidx.activity.enableEdgeToEdge - -class SampleActivity : ComponentActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - enableEdgeToEdge() - - setContent { - App() - } - } -} - diff --git a/sample/okhttp/src/androidMain/res/drawable/ic_launcher_foreground.xml b/sample/okhttp/src/androidMain/res/drawable/ic_launcher_foreground.xml deleted file mode 100644 index b8fa95d1..00000000 --- a/sample/okhttp/src/androidMain/res/drawable/ic_launcher_foreground.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - diff --git a/sample/okhttp/src/androidMain/res/drawable/ic_launcher_monochrome.xml b/sample/okhttp/src/androidMain/res/drawable/ic_launcher_monochrome.xml deleted file mode 100644 index 5b781595..00000000 --- a/sample/okhttp/src/androidMain/res/drawable/ic_launcher_monochrome.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - diff --git a/sample/okhttp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml b/sample/okhttp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml deleted file mode 100644 index 081998b2..00000000 --- a/sample/okhttp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/sample/okhttp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml b/sample/okhttp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml deleted file mode 100644 index 081998b2..00000000 --- a/sample/okhttp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/sample/okhttp/src/androidMain/res/mipmap-hdpi/ic_launcher.webp b/sample/okhttp/src/androidMain/res/mipmap-hdpi/ic_launcher.webp deleted file mode 100644 index 97c5532a..00000000 Binary files a/sample/okhttp/src/androidMain/res/mipmap-hdpi/ic_launcher.webp and /dev/null differ diff --git a/sample/okhttp/src/androidMain/res/mipmap-hdpi/ic_launcher_foreground.webp b/sample/okhttp/src/androidMain/res/mipmap-hdpi/ic_launcher_foreground.webp deleted file mode 100644 index 134f74d5..00000000 Binary files a/sample/okhttp/src/androidMain/res/mipmap-hdpi/ic_launcher_foreground.webp and /dev/null differ diff --git a/sample/okhttp/src/androidMain/res/mipmap-hdpi/ic_launcher_round.webp b/sample/okhttp/src/androidMain/res/mipmap-hdpi/ic_launcher_round.webp deleted file mode 100644 index ec375861..00000000 Binary files a/sample/okhttp/src/androidMain/res/mipmap-hdpi/ic_launcher_round.webp and /dev/null differ diff --git a/sample/okhttp/src/androidMain/res/mipmap-mdpi/ic_launcher.webp b/sample/okhttp/src/androidMain/res/mipmap-mdpi/ic_launcher.webp deleted file mode 100644 index 0f4834bb..00000000 Binary files a/sample/okhttp/src/androidMain/res/mipmap-mdpi/ic_launcher.webp and /dev/null differ diff --git a/sample/okhttp/src/androidMain/res/mipmap-mdpi/ic_launcher_foreground.webp b/sample/okhttp/src/androidMain/res/mipmap-mdpi/ic_launcher_foreground.webp deleted file mode 100644 index 7f67aceb..00000000 Binary files a/sample/okhttp/src/androidMain/res/mipmap-mdpi/ic_launcher_foreground.webp and /dev/null differ diff --git a/sample/okhttp/src/androidMain/res/mipmap-mdpi/ic_launcher_round.webp b/sample/okhttp/src/androidMain/res/mipmap-mdpi/ic_launcher_round.webp deleted file mode 100644 index f5eba7d3..00000000 Binary files a/sample/okhttp/src/androidMain/res/mipmap-mdpi/ic_launcher_round.webp and /dev/null differ diff --git a/sample/okhttp/src/androidMain/res/mipmap-xhdpi/ic_launcher.webp b/sample/okhttp/src/androidMain/res/mipmap-xhdpi/ic_launcher.webp deleted file mode 100644 index 768c7448..00000000 Binary files a/sample/okhttp/src/androidMain/res/mipmap-xhdpi/ic_launcher.webp and /dev/null differ diff --git a/sample/okhttp/src/androidMain/res/mipmap-xhdpi/ic_launcher_foreground.webp b/sample/okhttp/src/androidMain/res/mipmap-xhdpi/ic_launcher_foreground.webp deleted file mode 100644 index c3f18412..00000000 Binary files a/sample/okhttp/src/androidMain/res/mipmap-xhdpi/ic_launcher_foreground.webp and /dev/null differ diff --git a/sample/okhttp/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.webp b/sample/okhttp/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.webp deleted file mode 100644 index 058948fe..00000000 Binary files a/sample/okhttp/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.webp and /dev/null differ diff --git a/sample/okhttp/src/androidMain/res/mipmap-xxhdpi/ic_launcher.webp b/sample/okhttp/src/androidMain/res/mipmap-xxhdpi/ic_launcher.webp deleted file mode 100644 index e4a3514f..00000000 Binary files a/sample/okhttp/src/androidMain/res/mipmap-xxhdpi/ic_launcher.webp and /dev/null differ diff --git a/sample/okhttp/src/androidMain/res/mipmap-xxhdpi/ic_launcher_foreground.webp b/sample/okhttp/src/androidMain/res/mipmap-xxhdpi/ic_launcher_foreground.webp deleted file mode 100644 index 58668e3e..00000000 Binary files a/sample/okhttp/src/androidMain/res/mipmap-xxhdpi/ic_launcher_foreground.webp and /dev/null differ diff --git a/sample/okhttp/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.webp b/sample/okhttp/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.webp deleted file mode 100644 index d7d90ed3..00000000 Binary files a/sample/okhttp/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.webp and /dev/null differ diff --git a/sample/okhttp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.webp b/sample/okhttp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.webp deleted file mode 100644 index 147dc823..00000000 Binary files a/sample/okhttp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.webp and /dev/null differ diff --git a/sample/okhttp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_foreground.webp b/sample/okhttp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_foreground.webp deleted file mode 100644 index a3a2f505..00000000 Binary files a/sample/okhttp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_foreground.webp and /dev/null differ diff --git a/sample/okhttp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.webp b/sample/okhttp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.webp deleted file mode 100644 index 44fbdeec..00000000 Binary files a/sample/okhttp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.webp and /dev/null differ diff --git a/sample/okhttp/src/androidMain/res/values/ic_launcher_background.xml b/sample/okhttp/src/androidMain/res/values/ic_launcher_background.xml deleted file mode 100644 index f001f3e9..00000000 --- a/sample/okhttp/src/androidMain/res/values/ic_launcher_background.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - #010101 - \ No newline at end of file diff --git a/sample/okhttp/src/androidMain/res/values/strings.xml b/sample/okhttp/src/androidMain/res/values/strings.xml deleted file mode 100644 index 7da4ec0a..00000000 --- a/sample/okhttp/src/androidMain/res/values/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - Ktor Monitor Sample OKHTTP - \ No newline at end of file diff --git a/sample/okhttp/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/sample/App.kt b/sample/okhttp/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/sample/App.kt deleted file mode 100644 index 651b6e99..00000000 --- a/sample/okhttp/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/sample/App.kt +++ /dev/null @@ -1,29 +0,0 @@ -package ro.cosminmihu.ktor.monitor.sample - -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.tooling.preview.Preview -import ro.cosminmihu.ktor.monitor.KtorMonitor - -/** - * Compose sample how to use [KtorMonitor]. - */ -@Preview -@Composable -fun App() { - Column( - modifier = Modifier.fillMaxSize(), - horizontalAlignment = Alignment.CenterHorizontally, - ) { - KtorMonitor() - } - - LaunchedEffect(Unit) { - samples() - } -} - diff --git a/sample/okhttp/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/sample/Calls.kt b/sample/okhttp/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/sample/Calls.kt deleted file mode 100644 index 95d0ce82..00000000 --- a/sample/okhttp/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/sample/Calls.kt +++ /dev/null @@ -1,188 +0,0 @@ -package ro.cosminmihu.ktor.monitor.sample - -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.withContext -import okhttp3.MediaType.Companion.toMediaType -import okhttp3.MultipartBody -import okhttp3.Request -import okhttp3.RequestBody.Companion.toRequestBody -import ro.cosminmihu.ktor.monitor.sample.shared.HTTP_BIN_URL -import ro.cosminmihu.ktor.monitor.sample.shared.MARKDOWN_SAMPLE -import ro.cosminmihu.ktor.monitor.sample.shared.SVG_SAMPLE -import ro.cosminmihu.ktor.monitor.sample.shared.TEXT_FILE_CONTENT_SAMPLE -import ro.cosminmihu.ktor.monitor.sample.shared.TEXT_SAMPLE -import ro.cosminmihu.ktor.monitor.sample.shared.YAML_SAMPLE - - -internal suspend fun samples() = withContext(Dispatchers.IO) { - val client = httpClient() - - // HTTP Methods - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/get").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/post").post("".toRequestBody(null)).build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/put").put("".toRequestBody(null)).build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/delete").delete().build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/patch").patch("".toRequestBody(null)).build()).execute() } - - // Status codes - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/status/200").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/status/201").post("".toRequestBody(null)).build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/status/204").put("".toRequestBody(null)).build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/status/206").patch("".toRequestBody(null)).build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/status/302").method("TRACE", null).build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/status/404").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/status/418").delete().build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/status/500").build()).execute() } - - // Redirects - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/absolute-redirect/1").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/absolute-redirect/3").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/redirect/1").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/redirect/3").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/redirect-to?url=/get").delete().build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/redirect-to?url=/get").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/redirect-to?url=/get").patch("".toRequestBody(null)).build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/redirect-to?url=/get").post("".toRequestBody(null)).build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/redirect-to?url=/get").put("".toRequestBody(null)).build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/redirect-to?url=/get").method("TRACE", null).build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/redirect-to?url=/get&status_code=301").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/redirect-to?url=/get&status_code=302").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/redirect-to?url=/get&status_code=303").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/redirect-to?url=/get&status_code=307").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/redirect-to?url=/get&status_code=308").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/relative-redirect/1").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/relative-redirect/3").build()).execute() } - - // Anything - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/anything").delete().build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/anything").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/anything").patch("".toRequestBody(null)).build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/anything").post("".toRequestBody(null)).build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/anything").put("".toRequestBody(null)).build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/anything").method("TRACE", null).build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/anything/nested/path").delete().build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/anything/nested/path").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/anything/nested/path").patch("".toRequestBody(null)).build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/anything/nested/path").post("".toRequestBody(null)).build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/anything/nested/path").put("".toRequestBody(null)).build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/anything/nested/path").method("TRACE", null).build()).execute() } - - // Request inspection - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/headers").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/ip").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/user-agent").build()).execute() } - - // Auth - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/basic-auth/user/passwd").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/bearer").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/digest-auth/auth/user/passwd").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/digest-auth/auth/user/passwd/MD5").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/digest-auth/auth/user/passwd/MD5/never").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/hidden-basic-auth/user/passwd").build()).execute() } - - // Response formats - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/base64/SGVsbG8sIGh0dHBiaW4h").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/deny").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/encoding/utf8").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/html").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/json").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/robots.txt").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/xml").build()).execute() } - runCatching { - client.newCall( - Request.Builder() - .url("$HTTP_BIN_URL/anything/markdown") - .post(MARKDOWN_SAMPLE.toRequestBody("text/markdown".toMediaType())) - .build() - ).execute() - } - runCatching { - client.newCall( - Request.Builder() - .url("$HTTP_BIN_URL/anything/yaml") - .post(YAML_SAMPLE.toRequestBody("application/yaml".toMediaType())) - .build() - ).execute() - } - - // Images - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/image").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/image/jpeg").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/image/png").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/image/svg").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/image/webp").build()).execute() } - - // Compression - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/brotli").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/deflate").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/gzip").build()).execute() } - - // Cookies and cache - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/cache").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/cache/30").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/cookies").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/cookies/delete?theme").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/cookies/set?theme=dark").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/cookies/set/session/ktor-monitor").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/etag/sample-etag").build()).execute() } - - // Dynamic data - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/bytes/1024").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/delay/1").delete().build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/delay/1").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/delay/1").patch("".toRequestBody(null)).build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/delay/1").post("".toRequestBody(null)).build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/delay/1").put("".toRequestBody(null)).build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/delay/1").method("TRACE", null).build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/drip?duration=1&numbytes=16&delay=0").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/links/5/0").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/range/256").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/response-headers?X-Debug=okhttp-monitor&Server=example").build()).execute() } - runCatching { - client.newCall( - Request.Builder() - .url("$HTTP_BIN_URL/response-headers?X-Debug=okhttp-monitor") - .post("".toRequestBody(null)) - .build() - ).execute() - } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/stream/5").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/stream-bytes/256").build()).execute() } - runCatching { client.newCall(Request.Builder().url("$HTTP_BIN_URL/uuid").build()).execute() } - - // Form data (url-encoded) - runCatching { - client.newCall( - Request.Builder() - .url("$HTTP_BIN_URL/post") - .post( - "username=ktor-monitor&email=demo%40example.com¬es=Hello+from+Ktor+Monitor+sample" - .toRequestBody("application/x-www-form-urlencoded".toMediaType()) - ) - .build() - ).execute() - } - - // Multipart / form-data - runCatching { - val multipart = MultipartBody.Builder() - .setType(MultipartBody.FORM) - .addFormDataPart("username", "ktor-monitor") - .addFormDataPart("email", "demo@example.com") - .addFormDataPart("notes", TEXT_SAMPLE) - .addFormDataPart( - "file", - "sample.txt", - TEXT_FILE_CONTENT_SAMPLE.toRequestBody("text/plain".toMediaType()), - ) - .addFormDataPart( - "logo", - "logo.svg", - SVG_SAMPLE.toRequestBody("image/svg+xml".toMediaType()), - ) - .build() - client.newCall( - Request.Builder().url("$HTTP_BIN_URL/post").post(multipart).build() - ).execute() - } -} diff --git a/sample/okhttp/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/sample/HttpClient.kt b/sample/okhttp/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/sample/HttpClient.kt deleted file mode 100644 index 397880b0..00000000 --- a/sample/okhttp/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/sample/HttpClient.kt +++ /dev/null @@ -1,20 +0,0 @@ -package ro.cosminmihu.ktor.monitor.sample - -import okhttp3.OkHttpClient -import ro.cosminmihu.ktor.monitor.ContentLength -import ro.cosminmihu.ktor.monitor.KtorMonitorInterceptor -import ro.cosminmihu.ktor.monitor.RetentionPeriod - -internal fun httpClient(): OkHttpClient = - OkHttpClient.Builder() - .addNetworkInterceptor( - KtorMonitorInterceptor { - sanitizeHeader { header -> header == "Authorization" } - filter { request -> !request.url.host.contains("cosminmihu.ro") } - showNotification = true - retentionPeriod = RetentionPeriod.OneHour - maxContentLength = ContentLength.Default - } - ) - .build() - diff --git a/sample/okhttp/src/jvmMain/composeResources/drawable/ic_launcher.xml b/sample/okhttp/src/jvmMain/composeResources/drawable/ic_launcher.xml deleted file mode 100644 index 18295790..00000000 --- a/sample/okhttp/src/jvmMain/composeResources/drawable/ic_launcher.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/sample/okhttp/src/jvmMain/composeResources/values/strings.xml b/sample/okhttp/src/jvmMain/composeResources/values/strings.xml deleted file mode 100644 index 4c23d95f..00000000 --- a/sample/okhttp/src/jvmMain/composeResources/values/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - Ktor Monitor Sample Ktor - \ No newline at end of file diff --git a/sample/okhttp/src/jvmMain/kotlin/ro/cosminmihu/ktor/monitor/sample/compose/main.kt b/sample/okhttp/src/jvmMain/kotlin/ro/cosminmihu/ktor/monitor/sample/compose/main.kt deleted file mode 100644 index 029aa6ce..00000000 --- a/sample/okhttp/src/jvmMain/kotlin/ro/cosminmihu/ktor/monitor/sample/compose/main.kt +++ /dev/null @@ -1,44 +0,0 @@ -package ro.cosminmihu.ktor.monitor.sample.compose - -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.saveable.rememberSaveable -import androidx.compose.runtime.setValue -import androidx.compose.ui.window.Tray -import androidx.compose.ui.window.Window -import androidx.compose.ui.window.application -import org.jetbrains.compose.resources.painterResource -import org.jetbrains.compose.resources.stringResource -import ro.cosminmihu.ktor.monitor.KtorMonitorMenuItem -import ro.cosminmihu.ktor.monitor.KtorMonitorWindow -import ro.cosminmihu.ktor.monitor.sample.App -import ro.cosminmihu.ktor.monitor.sample.resources.Res -import ro.cosminmihu.ktor.monitor.sample.resources.app_name -import ro.cosminmihu.ktor.monitor.sample.resources.ic_launcher - -/** - * Compose sample how to use [KtorMonitorWindow] w/o [KtorMonitorMenuItem]. - */ -fun main() = application { - - var showKtorMonitor by rememberSaveable { mutableStateOf(false) } - - Tray( - icon = painterResource(Res.drawable.ic_launcher), - menu = { - KtorMonitorMenuItem { showKtorMonitor = true } - } - ) - - KtorMonitorWindow( - show = showKtorMonitor, - onCloseRequest = { showKtorMonitor = false } - ) - - Window( - onCloseRequest = ::exitApplication, - title = stringResource(Res.string.app_name), - ) { - App() - } -} \ No newline at end of file diff --git a/sample/okhttp/src/jvmMain/kotlin/ro/cosminmihu/ktor/monitor/sample/swing/main.kt b/sample/okhttp/src/jvmMain/kotlin/ro/cosminmihu/ktor/monitor/sample/swing/main.kt deleted file mode 100644 index a72e9af5..00000000 --- a/sample/okhttp/src/jvmMain/kotlin/ro/cosminmihu/ktor/monitor/sample/swing/main.kt +++ /dev/null @@ -1,30 +0,0 @@ -package ro.cosminmihu.ktor.monitor.sample.swing - -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.launch -import ro.cosminmihu.ktor.monitor.KtorMonitorPanel -import ro.cosminmihu.ktor.monitor.sample.samples -import java.awt.BorderLayout -import java.awt.Dimension -import javax.swing.JFrame -import javax.swing.SwingUtilities - -/** - * Swing Sample how to use [KtorMonitorPanel]. - */ -fun main() { - GlobalScope.launch { - samples() - } - - SwingUtilities.invokeLater { - val frame = JFrame("Ktor Monitor Sample") - frame.minimumSize = Dimension(800, 600) - frame.defaultCloseOperation = JFrame.EXIT_ON_CLOSE - - frame.add(KtorMonitorPanel, BorderLayout.CENTER) - - frame.pack() - frame.isVisible = true - } -} \ No newline at end of file diff --git a/sample/shared/build.gradle.kts b/sample/shared/build.gradle.kts deleted file mode 100644 index 7aa6f149..00000000 --- a/sample/shared/build.gradle.kts +++ /dev/null @@ -1,45 +0,0 @@ -import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl -import org.jetbrains.kotlin.gradle.dsl.JvmTarget - -plugins { - alias(libs.plugins.kotlinMultiplatform) - alias(libs.plugins.androidLibrary) -} - -kotlin { - androidTarget { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_11) - } - } - - jvm() - - listOf( - iosArm64(), - iosSimulatorArm64(), - ) - - js { - browser() - } - - @OptIn(ExperimentalWasmDsl::class) - wasmJs { - browser() - } -} - -android { - namespace = "ro.cosminmihu.ktor.monitor.sample.shared" - compileSdk = libs.versions.android.compileSdk.get().toInt() - - defaultConfig { - minSdk = libs.versions.android.minSdk.get().toInt() - } - - compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - } -} \ No newline at end of file diff --git a/sample/shared/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/sample/shared/SamplePayloads.kt b/sample/shared/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/sample/shared/SamplePayloads.kt deleted file mode 100644 index 9db9d2c2..00000000 --- a/sample/shared/src/commonMain/kotlin/ro/cosminmihu/ktor/monitor/sample/shared/SamplePayloads.kt +++ /dev/null @@ -1,66 +0,0 @@ -package ro.cosminmihu.ktor.monitor.sample.shared - -const val HTTP_BIN_URL: String = "https://httpbin.org" - -const val TEXT_SAMPLE: String = "Hello from Ktor Monitor sample" - -val TEXT_FILE_CONTENT_SAMPLE: String = """ -Sample file content -Line 2 -Line 3 -""".trimIndent() - -val MARKDOWN_SAMPLE: String = """ -# Ktor Monitor Markdown sample - -This request body helps test Markdown rendering. - -- preview mode for markdown -- code mode with line numbers - -```kotlin -fun greeting() = "Hello from Markdown" -``` -""".trimIndent() - -val YAML_SAMPLE: String = """ -sample: - name: ktor-monitor - features: - - markdown-preview - - yaml-code-view - enabled: true -""".trimIndent() - -/** W3C SVG logo used as a multipart SVG image attachment. */ -val SVG_SAMPLE: ByteArray = """ - SVG Logo - - - - - - - - - - - - - - - - - - - - - - - - - - - -""".trimIndent().encodeToByteArray() \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 54869af8..cdcf0351 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -35,11 +35,3 @@ include(":core:library") include(":core:library-no-op") include(":ktor:library-ktor") include(":ktor:library-ktor-no-op") -include(":okhttp:library-okhttp") -include(":okhttp:library-okhttp-no-op") -include(":http4k:library-http4k") -include(":http4k:library-http4k-no-op") -include(":sample:shared") -include(":sample:ktor") -include(":sample:okhttp") -include(":sample:http4k")