diff --git a/.github/workflows/Hydraulic_Conveyor.yml b/.github/workflows/Hydraulic_Conveyor.yml
index d5627972..989fc0c1 100644
--- a/.github/workflows/Hydraulic_Conveyor.yml
+++ b/.github/workflows/Hydraulic_Conveyor.yml
@@ -28,7 +28,7 @@ jobs:
run: ./gradlew createReleaseDistributable
- name: Run Conveyor
- uses: hydraulic-software/conveyor/actions/build@v15.1
+ uses: hydraulic-software/conveyor/actions/build@v16.0
env:
TOKEN: ${{ secrets.TOKEN }}
with:
diff --git a/.github/workflows/web.yml b/.github/workflows/web.yml
index b8ae3e81..c090d4a9 100644
--- a/.github/workflows/web.yml
+++ b/.github/workflows/web.yml
@@ -28,9 +28,9 @@ jobs:
# If main branch update, deploy to gh-pages
- name: Deploy
# if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main'
- uses: JamesIves/github-pages-deploy-action@v4.6.9
+ uses: JamesIves/github-pages-deploy-action@v4.7.2
with:
GITHUB_TOKEN: ${{ secrets.TOKEN }}
BRANCH: gh-web # The branch the action should deploy to.
- FOLDER: composeApp/build/dist/wasmJs/productionExecutable # The folder the action should deploy.
+ FOLDER: app/build/dist/wasmJs/productionExecutable # The folder the action should deploy.
CLEAN: true # Automatically remove deleted files from the deploy branch
\ No newline at end of file
diff --git a/NewReadMe.md b/NewReadMe.md
new file mode 100644
index 00000000..69145f98
--- /dev/null
+++ b/NewReadMe.md
@@ -0,0 +1,350 @@
+
+
+
+
Hydraulic Compose Multiplatform Template
+
+
+
+hydraulic is a compose multiplatform template. that use note app as an example. it is multi-module architecture.
+
+
+## Screenshot
+
+### Phone
+
+
+
+
+
+
+
+### Desktop
+
+
+
+
+
+
+
+### Web
+
+
+
+
+
+
+
+## Features
+
+- Dark mode theme
+- Change theme
+
+ Available filters
+
+
+# Tech stack & Open-source libraries
+
+- Minimum SDK level 21
+
+- [Kotlin](https://kotlinlang.org/) based
+
+
+- [Dynamic Theme](https://github.com/mshdabiola/DynamicTheme) - library, which allows you to easily
+ implement custom color theming.
+
+- [Coroutines](https://github.com/Kotlin/kotlinx.coroutines) for asynchronous work.
+
+- [Flow](https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/)
+ to emit values from data layer reactively.
+
+- [Koin](https://github.com/InsertKoinIO/koin) for dependency injection.
+
+- [Coil](https://github.com/coil-kt/coil) for loading images.
+
+- Jetpack
+
+ - [Compose](https://developer.android.com/jetpack/compose) - Modern Declarative UI style
+ framework based on composable functions.
+
+ - [Material You Kit](https://developer.android.com/jetpack/androidx/releases/compose-material3) -
+ Material 3 powerful UI components.
+
+ - [Data Store](https://developer.android.com/jetpack/androidx/releases/datastore) - Store data
+ asynchronously, consistently, and transactionally.
+
+ - [Lifecycle](https://developer.android.com/jetpack/androidx/releases/lifecycle) - Observe
+ Android lifecycles and handle UI states upon the lifecycle changes.
+
+## Build
+
+This project utilizes Kotlin Multiplatform to target Android, Desktop, and WebAssembly (WASM).
+Android has two build variants: **GooglePlay** and **FossReliant**. To build and run the project on
+each platform, follow the instructions below:
+
+### Android
+
+#### GooglePlay Variant
+
+1. Open the project in Android Studio.
+2. Select the **GooglePlay** build variant.
+3. Connect an Android device or start an emulator.
+4. Run the `app` module. This will build an APK with Google Play dependencies and install it on your
+ device or emulator.
+
+#### FossReliant Variant
+
+1. Open the project in Android Studio.
+2. Select the **FossReliant** build variant.
+3. Connect an Android device or start an emulator.
+4. Run the `app` module. This will build an APK without Google Play dependencies, relying on FOSS
+ alternatives, and install it on your device or emulator.
+
+### Desktop
+
+Run the following command to build the desktop application:
+
+```bash
+./gradlew app:run
+```
+
+This will run an executable file on your operating system (Windows, macOS, or Linux).
+
+### Web
+
+Run the following command to build the web application:
+
+```bash
+./gradlew wasmJsBrowserRun -t
+```
+
+This will start a development server that serves the web application. Open the provided URL in your
+browser to access the application.
+
+**Note:** You may need to install Node.js and Yarn for the web build to work correctly.
+
+## Release
+
+This project offers releases for Android, Desktop, and Web. Below are instructions for releasing the
+application on each platform.
+
+### Android
+
+#### GooglePlay Variant
+
+To release the GooglePlay variant, follow these steps:
+
+Build the release APK using the following Gradle command:
+
+```bash
+./gradlew assembleGooglePlayRelease
+```
+
+Upload the signed APK to the Google Play Console.
+
+#### FossReliant Variant
+
+To release the FossReliant variant, follow these steps:
+
+Build the release APK using the following Gradle command:
+
+```bash
+./gradlew assembleFossReliantRelease
+```
+
+Distribute the APK through your preferred channels (e.g., GitHub Releases, F-Droid).
+
+### Desktop
+
+This project leverages Hydraulic Conveyor for packaging and distributing the Desktop application.
+Hydraulic Conveyor simplifies the creation of installers and distributable packages across various
+operating systems (Windows, macOS, Linux).
+
+1. Install hydraulic conveyor at [Hydraulic](https://downloads.hydraulic.dev/)
+
+2. Build the release executable using the following Gradle command:
+
+```bash
+conveyor make app
+```
+
+3. To create site for the all desktop platform
+
+```bash
+conveyor make site
+```
+
+### Web
+
+To release the Web application, follow these steps:
+
+Build the release version of the web application using the following Gradle command:
+
+```bash
+./gradlew wasmJsBrowserDistribution
+```
+
+Deploy the built files to your web server or hosting provider.
+
+## Testing
+
+### JVM Tests
+
+This project includes a comprehensive suite of JVM tests to ensure the correctness and reliability
+of the core logic and functionality. These tests are written using JvmTest and cover various aspects
+of the application, including:
+
+* **Unit tests:** Verify the behavior of individual components and functions in isolation.
+* **Integration tests:** Test the interaction between different modules or components of the system.
+* **Data layer tests:** Validate data access, persistence, and retrieval operations.
+* **Business logic tests:** Ensure the correct implementation of business rules and workflows.
+
+**Running Tests**
+
+To run the JVM tests, you can use the following Gradle command:
+
+```bash
+./gradlew jvmTest
+```
+
+### Screenshot Test
+
+Compose Screenshot Testing is an essential part of ensuring UI quality. A screenshot test captures
+an image of a Composable function or a section of your app's UI and compares it to a previously
+saved reference image, known as a "golden" or "baseline" image. This ensures that UI changes don't
+unintentionally introduce visual regressions.
+
+**Compose ScreenshotTest and Gradle Tasks**
+
+Compose screenshot testing can be seamlessly integrated with the Paparazzi library, providing
+automated image comparisons. Paparazzi offers the following useful Gradle tasks:
+
+- `validateFossReliantDebugScreenshotTest`: Executes all screenshot tests, comparing captured images
+ with the baseline images. This process helps detect any visual discrepancies introduced by code
+ changes.
+- `updateFossReliantDebugScreenshotTest`: Generates new baseline images. Use this command after
+ intentionally modifying the UI and manually verifying the correctness of the new visuals. The
+ newly captured screenshots then become the new baseline for future comparisons.
+- `testFossReliantDebugScreenshotTest`: Creates comparison images highlighting the differences
+ between failed tests and the baseline images. These images aid in pinpointing visual
+ discrepancies, simplifying debugging efforts.
+
+## Performance
+
+### Benchmarks
+
+We utilize benchmarking tools to measure the performance of key operations in our application. This
+helps identify potential bottlenecks and areas for optimization. Benchmarks are focused on critical
+aspects, such as UI rendering, data processing, and network operations, ensuring a smooth and
+responsive user experience.
+
+### Baseline Profile
+
+Baseline Profiles are integrated into our build process to enhance app startup time and reduce
+initial rendering latency. These profiles provide guidance to the Android Runtime (ART) for
+pre-compiling frequently used code paths, leading to faster loading times and improved overall
+performance.
+
+
+```bash
+./gradlew generateReleaseBaselineProfile
+```
+
+### Compose Compiler Metrics
+
+We leverage Compose Compiler Metrics to monitor and analyze the performance of our Compose UI.
+Metrics like recomposition counts and skippability rates help identify potential areas for
+optimization and ensure efficient UI rendering. This proactive approach ensures that our Compose UI
+remains performant and responsive as the application evolves.
+
+
+```bash
+./gradlew assembleDebug -PenableComposeCompilerMetrics=true -PenableComposeCompilerReports=true
+```
+
+## Find this repository useful?
+
+Support it by joining **[stargazers](https://github.com/mshdabiola/hydraulic/stargazers)** for this
+repository. :star:
+And **[follow](https://github.com/mshdabiola)** me for my next creations! 🤩
+
+## Star History
+
+
+
+
+
+
+
+
+
+
+![Alt](https://repobeats.axiom.co/api/embed/a0893eb63066333a921a4197172ab150fe896a37.svg "Repobeats analytics image")
+
+
+## Contributors
+
+
+
+
+
+
+# License
+
+**Hydraulic** is distributed under the terms of the GNU License (Version 2.0). See the
+[license](LICENSE) for more information.
diff --git a/README.md b/README.md
index e1d19762..dee3bd78 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,361 @@
-Hydralic Desktop
+
+
+
+
Hydraulic Compose Multiplatform Template
+
+
+
+hydraulic is a compose multiplatform template. that use note app as an example. it is multi-module architecture.
+
+
+## Screenshot
+
+### Phone
+
+
+
+
+
+
+
+### Desktop
+
+
+
+
+
+
+
+### Web
+
+
+
+
+
+
+
+## Features
+
+- Dark mode theme
+- Change theme
+
+ Available filters
+
+
+# Tech stack & Open-source libraries
+
+- Minimum SDK level 21
+
+- [Kotlin](https://kotlinlang.org/) based
+
+
+- [Dynamic Theme](https://github.com/mshdabiola/DynamicTheme) - library, which allows you to easily
+ implement custom color theming.
+
+- [Coroutines](https://github.com/Kotlin/kotlinx.coroutines) for asynchronous work.
+
+- [Flow](https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/)
+ to emit values from data layer reactively.
+
+- [Koin](https://github.com/InsertKoinIO/koin) for dependency injection.
+
+- [Coil](https://github.com/coil-kt/coil) for loading images.
+
+- Jetpack
+
+ - [Compose](https://developer.android.com/jetpack/compose) - Modern Declarative UI style
+ framework based on composable functions.
+
+ - [Material You Kit](https://developer.android.com/jetpack/androidx/releases/compose-material3) -
+ Material 3 powerful UI components.
+
+ - [Room](https://developer.android.com/jetpack/androidx/releases/room) Constructs Database by providing an abstraction layer over SQLite to allow fluent database access.
+
+ - [Data Store](https://developer.android.com/jetpack/androidx/releases/datastore) - Store data
+ asynchronously, consistently, and transactionally.
+
+ - [Lifecycle](https://developer.android.com/jetpack/androidx/releases/lifecycle) - Observe
+ Android lifecycles and handle UI states upon the lifecycle changes.
+
+- [Turbine](https://github.com/cashapp/turbine) - A small testing library for kotlinx.coroutines Flow.
+
+- [Timber](https://github.com/JakeWharton/timber) - A logger with a small, extensible API.
+
+- [ksp](https://github.com/google/ksp): Kotlin Symbol Processing API.
+
+- Architecture
+ - MVVM Architecture (Compose - ViewModel - Model)
+ - Repository Pattern
+## Build
+
+This project utilizes Kotlin Multiplatform to target Android, Desktop, and WebAssembly (WASM).
+Android has two build variants: **GooglePlay** and **FossReliant**. To build and run the project on
+each platform, follow the instructions below:
+
+### Android
+
+#### GooglePlay Variant
+
+1. Open the project in Android Studio.
+2. Select the **GooglePlay** build variant.
+3. Connect an Android device or start an emulator.
+4. Run the `app` module. This will build an APK with Google Play dependencies and install it on your
+ device or emulator.
+
+#### FossReliant Variant
+
+1. Open the project in Android Studio.
+2. Select the **FossReliant** build variant.
+3. Connect an Android device or start an emulator.
+4. Run the `app` module. This will build an APK without Google Play dependencies, relying on FOSS
+ alternatives, and install it on your device or emulator.
+
+### Desktop
+
+Run the following command to build the desktop application:
+
+```bash
+./gradlew app:run
+```
+
+This will run an executable file on your operating system (Windows, macOS, or Linux).
+
+### Web
+
+Run the following command to build the web application:
+
+```bash
+./gradlew wasmJsBrowserRun -t
+```
+
+This will start a development server that serves the web application. Open the provided URL in your
+browser to access the application.
+
+**Note:** You may need to install Node.js and Yarn for the web build to work correctly.
+
+## Release
+
+This project offers releases for Android, Desktop, and Web. Below are instructions for releasing the
+application on each platform.
+
+### Android
+
+#### GooglePlay Variant
+
+To release the GooglePlay variant, follow these steps:
+
+Build the release APK using the following Gradle command:
+
+```bash
+./gradlew assembleGooglePlayRelease
+```
+
+Upload the signed APK to the Google Play Console.
+
+#### FossReliant Variant
+
+To release the FossReliant variant, follow these steps:
+
+Build the release APK using the following Gradle command:
+
+```bash
+./gradlew assembleFossReliantRelease
+```
+
+Distribute the APK through your preferred channels (e.g., GitHub Releases, F-Droid).
+
+### Desktop
+
+This project leverages Hydraulic Conveyor for packaging and distributing the Desktop application.
+Hydraulic Conveyor simplifies the creation of installers and distributable packages across various
+operating systems (Windows, macOS, Linux).
+
+1. Install hydraulic conveyor at [Hydraulic](https://downloads.hydraulic.dev/)
+
+2. Build the release executable using the following Gradle command:
+
+```bash
+conveyor make app
+```
+
+3. To create site for the all desktop platform
+
+```bash
+conveyor make site
+```
+
+### Web
+
+To release the Web application, follow these steps:
+
+Build the release version of the web application using the following Gradle command:
+
+```bash
+./gradlew wasmJsBrowserDistribution
+```
+
+Deploy the built files to your web server or hosting provider.
+
+## Testing
+
+### JVM Tests
+
+This project includes a comprehensive suite of JVM tests to ensure the correctness and reliability
+of the core logic and functionality. These tests are written using JvmTest and cover various aspects
+of the application, including:
+
+* **Unit tests:** Verify the behavior of individual components and functions in isolation.
+* **Integration tests:** Test the interaction between different modules or components of the system.
+* **Data layer tests:** Validate data access, persistence, and retrieval operations.
+* **Business logic tests:** Ensure the correct implementation of business rules and workflows.
+
+**Running Tests**
+
+To run the JVM tests, you can use the following Gradle command:
+
+```bash
+./gradlew jvmTest
+```
+
+### Screenshot Test
+
+Compose Screenshot Testing is an essential part of ensuring UI quality. A screenshot test captures
+an image of a Composable function or a section of your app's UI and compares it to a previously
+saved reference image, known as a "golden" or "baseline" image. This ensures that UI changes don't
+unintentionally introduce visual regressions.
+
+**Compose ScreenshotTest and Gradle Tasks**
+
+Compose screenshot testing can be seamlessly integrated with the Paparazzi library, providing
+automated image comparisons. Paparazzi offers the following useful Gradle tasks:
+
+- `validateFossReliantDebugScreenshotTest`: Executes all screenshot tests, comparing captured images
+ with the baseline images. This process helps detect any visual discrepancies introduced by code
+ changes.
+- `updateFossReliantDebugScreenshotTest`: Generates new baseline images. Use this command after
+ intentionally modifying the UI and manually verifying the correctness of the new visuals. The
+ newly captured screenshots then become the new baseline for future comparisons.
+- `testFossReliantDebugScreenshotTest`: Creates comparison images highlighting the differences
+ between failed tests and the baseline images. These images aid in pinpointing visual
+ discrepancies, simplifying debugging efforts.
+
+## Performance
+
+### Benchmarks
+
+We utilize benchmarking tools to measure the performance of key operations in our application. This
+helps identify potential bottlenecks and areas for optimization. Benchmarks are focused on critical
+aspects, such as UI rendering, data processing, and network operations, ensuring a smooth and
+responsive user experience.
+
+### Baseline Profile
+
+Baseline Profiles are integrated into our build process to enhance app startup time and reduce
+initial rendering latency. These profiles provide guidance to the Android Runtime (ART) for
+pre-compiling frequently used code paths, leading to faster loading times and improved overall
+performance.
+
+
+```bash
+./gradlew generateReleaseBaselineProfile
+```
+
+### Compose Compiler Metrics
+
+We leverage Compose Compiler Metrics to monitor and analyze the performance of our Compose UI.
+Metrics like recomposition counts and skippability rates help identify potential areas for
+optimization and ensure efficient UI rendering. This proactive approach ensures that our Compose UI
+remains performant and responsive as the application evolves.
+
+
+```bash
+./gradlew assembleDebug -PenableComposeCompilerMetrics=true -PenableComposeCompilerReports=true
+```
+
+## Find this repository useful?
+
+Support it by joining **[stargazers](https://github.com/mshdabiola/hydraulic/stargazers)** for this
+repository. :star:
+And **[follow](https://github.com/mshdabiola)** me for my next creations! 🤩
+
+## Star History
+
+
+
+
+
+
+
+
+
+
+![Alt](https://repobeats.axiom.co/api/embed/a0893eb63066333a921a4197172ab150fe896a37.svg "Repobeats analytics image")
+
+
+## Contributors
+
+
+
+
+
+
+# License
+
+**Hydraulic** is distributed under the terms of the GNU License (Version 2.0). See the
+[license](LICENSE) for more information.
diff --git a/README2.md b/README2.md
new file mode 100644
index 00000000..f7485ff3
--- /dev/null
+++ b/README2.md
@@ -0,0 +1,96 @@
+[![CI-MASTER](https://github.com/jarroyoesp/ComposeMultiplatformApp/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/jarroyoesp/ComposeMultiplatformApp/actions/workflows/ci.yml)
+[![Latest release](https://img.shields.io/github/v/release/JetBrains/compose-multiplatform?color=blue&label=Compose%20multiplatform)](https://github.com/JetBrains/compose-multiplatform/releases/tag/v1.7.1)
+![Kotlin Version](https://img.shields.io/badge/Kotlin-2.0.21-blue?logo=kotlin&logoColor=white)
+
+
+
🚀 Example project to show SpaceX data built with Kotlin Multiplatform and Compose UI Multiplatform
+
+
+[Compose Multiplatform](https://www.jetbrains.com/lp/compose-multiplatform/) Sample (KMP) that serves as a comprehensive example demonstrating the integration of Compose Multiplatform, GraphQL data consumption, and SQLDelight for local data persistence.
+
+Using data from the GraphQL endpoint [SpaceX-GraphQL](https://studio.apollographql.com/public/SpaceX-pxxbxen/variant/current/explorer)
+
+Current supported Platforms are:
+1. Android
+2. Desktop
+3. iOS
+
+
+
+# Features
+
+## Home Screen 🚀
+- List of SpaceX launches: Displays a list of SpaceX launches retrieved from a GraphQL endpoint.
+- Show favorite Launches: retrieve data from local database to show your favorite launches
+- Apollo GraphQL Integration: Utilizes GraphQL to fetch and display SpaceX launch data efficiently.
+- SQLDelight Integration: Integrates SQLDelight for managing and persisting favorite launch data.
+- Responsive UI: Provides a responsive user interface for seamless navigation and interaction across devices.
+- Error Handling: Provides informative error messages and graceful handling of network and database errors.
+
+## Detail Screen 🛸
+
+- Detailed View: Navigate to a detailed view of each launch for more information.
+- Save Favorites: Enables users to save their favorite launches to a SQLDelight database for persistence.
+
+## Built With 🛠
+
+- [Kotlin Multiplatform](https://github.com/JetBrains/compose-multiplatform)
+- [Compose Multiplatform](https://github.com/JetBrains/compose-multiplatform): Enables cross-platform UI development with JetBrains' Compose framework.
+- [Koin - DI](https://github.com/InsertKoinIO/koin): Dependency injection framework for Kotlin Multiplatform
+- [Kotlin Coroutines](https://github.com/Kotlin/kotlinx.coroutines): Provides asynchronous programming utilities in Kotlin.
+- [SQLDelight](https://github.com/cashapp/sqldelight): Generates Kotlin APIs from SQL statements for safer database interactions.
+- [Apollo GraphQL](https://github.com/apollographql): Offers client-side tools for consuming GraphQL APIs.
+- [Kotlin Multiplatform Navigation](https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-navigation-routing.html): Provides navigation components for Kotlin Multiplatform projects using Compose.
+- [Kotlin Multiplatform ViewModel](https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-viewmodel.html): Manages UI-related data and state in Kotlin Multiplatform projects using Compose.
+- [ConstraintLayout Multiplatform](https://github.com/Lavmee/constraintlayout-compose-multiplatform): Brings ConstraintLayout functionality to Kotlin Multiplatform projects with Compose.
+- [Coil](https://coil-kt.github.io/coil/): Efficient image loading library for Compose multiplatform projects.
+- [Logger](https://github.com/touchlab/Kermit): Logging library for Kotlin Multiplatform projects.
+- [Unit Tests](https://github.com/junit-team/junit5): Automated tests to verify the behavior of individual code units.
+
+## Android 🤖
+
+| | | |
+|----------------------------------------------------------|------------------------------------------------------------|-------------------------------------------------------------|
+
+## Desktop 🖥️
+
+To execute the Desktop app run this `gradle` command:
+
+```
+./gradlew desktop:run
+```
+
+| | | |
+|----------------------------------------------------------|------------------------------------------------------------|-------------------------------------------------------------|
+
+## iOS 🍎
+Steps to setup your iOS app:
+1. Create your iosApp using XCode
+2. Add to your `Build phases`
+
+```
+cd "$SRCROOT/.."
+./gradlew :modules:feature-home-shared:embedAndSignAppleFrameworkForXcode
+```
+
+
+
+3. Add to Search Paths:
+```
+$(SRCROOT)/../modules/feature-home-shared/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)
+```
+
+More details [JetBrains official documentation](https://www.jetbrains.com/help/kotlin-multiplatform-dev/multiplatform-integrate-in-existing-app.html#make-your-cross-platform-application-work-on-ios)
+
+| | | |
+|------------------------------------------------------|--------------------------------------------------------|---------------------------------------------------------|
+
+
+### Get the latest version of the GraphQL schema
+```bash
+./gradlew :module:library-network-api:downloadApolloSchemaFromIntrospection
+```
+
+## Contributing 🤝
+
+Issues or Pull request for any bugs/improvements are well received
\ No newline at end of file
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 8ad6d755..7bcbdded 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -1,5 +1,6 @@
import com.mshdabiola.app.BuildType
-import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl
+import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
+import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig
plugins {
alias(libs.plugins.kotlinMultiplatform)
@@ -69,6 +70,36 @@ kotlin {
androidTarget()
jvm()
+ @OptIn(org.jetbrains.kotlin.gradle.ExperimentalWasmDsl::class)
+ wasmJs {
+ moduleName = "composeApp"
+ browser {
+ val rootDirPath = project.rootDir.path
+ val projectDirPath = project.projectDir.path
+ commonWebpackConfig {
+ outputFileName = "composeApp.js"
+ devServer = (devServer ?: KotlinWebpackConfig.DevServer()).apply {
+ static = (static ?: mutableListOf()).apply {
+ // Serve sources to debug inside browser
+ add(rootDirPath)
+ add(projectDirPath)
+ }
+ }
+ }
+ }
+ binaries.executable()
+ }
+ @OptIn(ExperimentalKotlinGradlePluginApi::class)
+ applyDefaultHierarchyTemplate {
+ common {
+ group("nonJs") {
+ withAndroidTarget()
+ // withIos()
+ withJvm()
+ }
+ }
+ }
+
sourceSets {
val jvmMain by getting
@@ -94,7 +125,7 @@ kotlin {
// Logger
implementation(libs.kermit)
- implementation(libs.kermit.koin)
+// implementation(libs.kermit.koin)
implementation(libs.androidx.compose.material3.adaptive)
implementation(libs.androidx.compose.material3.adaptive.layout)
@@ -102,6 +133,12 @@ kotlin {
}
+ val nonJsMain by getting{
+ dependencies {
+ implementation(libs.kermit.koin)
+
+ }
+ }
jvmMain.dependencies {
implementation(compose.desktop.currentOs)
diff --git a/app/dependencies/fossReliantReleaseRuntimeClasspath.txt b/app/dependencies/fossReliantReleaseRuntimeClasspath.txt
index d799ff79..b0549691 100644
--- a/app/dependencies/fossReliantReleaseRuntimeClasspath.txt
+++ b/app/dependencies/fossReliantReleaseRuntimeClasspath.txt
@@ -103,25 +103,25 @@ androidx.navigation:navigation-common:2.8.0-rc01
androidx.navigation:navigation-compose:2.8.0-rc01
androidx.navigation:navigation-runtime-ktx:2.8.0-rc01
androidx.navigation:navigation-runtime:2.8.0-rc01
-androidx.paging:paging-common-android:3.3.4
-androidx.paging:paging-common:3.3.4
+androidx.paging:paging-common-android:3.3.2
+androidx.paging:paging-common:3.3.2
androidx.profileinstaller:profileinstaller:1.4.1
androidx.resourceinspection:resourceinspection-annotation:1.0.1
-androidx.room:room-common-jvm:2.7.0-alpha11
-androidx.room:room-common:2.7.0-alpha11
-androidx.room:room-ktx:2.7.0-alpha11
-androidx.room:room-paging-android:2.7.0-alpha11
-androidx.room:room-paging:2.7.0-alpha11
-androidx.room:room-runtime-android:2.7.0-alpha11
-androidx.room:room-runtime:2.7.0-alpha11
+androidx.room:room-common-jvm:2.7.0-alpha12
+androidx.room:room-common:2.7.0-alpha12
+androidx.room:room-ktx:2.7.0-alpha12
+androidx.room:room-paging-android:2.7.0-alpha12
+androidx.room:room-paging:2.7.0-alpha12
+androidx.room:room-runtime-android:2.7.0-alpha12
+androidx.room:room-runtime:2.7.0-alpha12
androidx.savedstate:savedstate-ktx:1.2.1
androidx.savedstate:savedstate:1.2.1
-androidx.sqlite:sqlite-android:2.5.0-alpha11
-androidx.sqlite:sqlite-bundled-android:2.5.0-alpha11
-androidx.sqlite:sqlite-bundled:2.5.0-alpha11
-androidx.sqlite:sqlite-framework-android:2.5.0-alpha11
-androidx.sqlite:sqlite-framework:2.5.0-alpha11
-androidx.sqlite:sqlite:2.5.0-alpha11
+androidx.sqlite:sqlite-android:2.5.0-alpha12
+androidx.sqlite:sqlite-bundled-android:2.5.0-alpha12
+androidx.sqlite:sqlite-bundled:2.5.0-alpha12
+androidx.sqlite:sqlite-framework-android:2.5.0-alpha12
+androidx.sqlite:sqlite-framework:2.5.0-alpha12
+androidx.sqlite:sqlite:2.5.0-alpha12
androidx.startup:startup-runtime:1.1.1
androidx.tracing:tracing-ktx:1.3.0-alpha02
androidx.tracing:tracing:1.3.0-alpha02
@@ -133,12 +133,12 @@ androidx.window.extensions.core:core:1.0.0
androidx.window:window-core-android:1.3.0
androidx.window:window-core:1.3.0
androidx.window:window:1.3.0
-co.touchlab:kermit-android:2.0.4
-co.touchlab:kermit-core-android:2.0.4
-co.touchlab:kermit-core:2.0.4
-co.touchlab:kermit-koin-android:2.0.4
-co.touchlab:kermit-koin:2.0.4
-co.touchlab:kermit:2.0.4
+co.touchlab:kermit-android:2.0.5
+co.touchlab:kermit-core-android:2.0.5
+co.touchlab:kermit-core:2.0.5
+co.touchlab:kermit-koin-android:2.0.5
+co.touchlab:kermit-koin:2.0.5
+co.touchlab:kermit:2.0.5
co.touchlab:stately-concurrency-jvm:2.1.0
co.touchlab:stately-concurrency:2.1.0
co.touchlab:stately-concurrent-collections-jvm:2.1.0
@@ -153,23 +153,22 @@ com.google.guava:failureaccess:1.0.1
com.google.guava:guava:31.0.1-jre
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
com.google.j2objc:j2objc-annotations:1.3
-com.squareup.okhttp3:okhttp:4.12.0
com.squareup.okio:okio-jvm:3.9.1
com.squareup.okio:okio:3.9.1
-io.coil-kt.coil3:coil-android:3.0.3
-io.coil-kt.coil3:coil-compose-android:3.0.3
-io.coil-kt.coil3:coil-compose-core-android:3.0.3
-io.coil-kt.coil3:coil-compose-core:3.0.3
-io.coil-kt.coil3:coil-compose:3.0.3
-io.coil-kt.coil3:coil-core-android:3.0.3
-io.coil-kt.coil3:coil-core:3.0.3
-io.coil-kt.coil3:coil-network-core-android:3.0.3
-io.coil-kt.coil3:coil-network-core:3.0.3
-io.coil-kt.coil3:coil-network-okhttp-jvm:3.0.3
-io.coil-kt.coil3:coil-network-okhttp:3.0.3
-io.coil-kt.coil3:coil-svg-android:3.0.3
-io.coil-kt.coil3:coil-svg:3.0.3
-io.coil-kt.coil3:coil:3.0.3
+io.coil-kt.coil3:coil-android:3.0.4
+io.coil-kt.coil3:coil-compose-android:3.0.4
+io.coil-kt.coil3:coil-compose-core-android:3.0.4
+io.coil-kt.coil3:coil-compose-core:3.0.4
+io.coil-kt.coil3:coil-compose:3.0.4
+io.coil-kt.coil3:coil-core-android:3.0.4
+io.coil-kt.coil3:coil-core:3.0.4
+io.coil-kt.coil3:coil-network-core-android:3.0.4
+io.coil-kt.coil3:coil-network-core:3.0.4
+io.coil-kt.coil3:coil-network-ktor3-android:3.0.4
+io.coil-kt.coil3:coil-network-ktor3:3.0.4
+io.coil-kt.coil3:coil-svg-android:3.0.4
+io.coil-kt.coil3:coil-svg:3.0.4
+io.coil-kt.coil3:coil:3.0.4
io.insert-koin:koin-android:4.0.0
io.insert-koin:koin-compose-jvm:4.0.0
io.insert-koin:koin-compose-viewmodel-jvm:4.0.0
@@ -179,35 +178,37 @@ io.insert-koin:koin-core-jvm:4.0.0
io.insert-koin:koin-core-viewmodel-jvm:4.0.0
io.insert-koin:koin-core-viewmodel:4.0.0
io.insert-koin:koin-core:4.0.0
-io.ktor:ktor-client-android-jvm:2.3.12
-io.ktor:ktor-client-android:2.3.12
-io.ktor:ktor-client-content-negotiation-jvm:2.3.12
-io.ktor:ktor-client-content-negotiation:2.3.12
-io.ktor:ktor-client-core-jvm:2.3.12
-io.ktor:ktor-client-core:2.3.12
-io.ktor:ktor-client-logging-jvm:2.3.12
-io.ktor:ktor-client-resources-jvm:2.3.12
-io.ktor:ktor-client-resources:2.3.12
-io.ktor:ktor-events-jvm:2.3.12
-io.ktor:ktor-events:2.3.12
-io.ktor:ktor-http-jvm:2.3.12
-io.ktor:ktor-http:2.3.12
-io.ktor:ktor-io-jvm:2.3.12
-io.ktor:ktor-io:2.3.12
-io.ktor:ktor-resources-jvm:2.3.12
-io.ktor:ktor-resources:2.3.12
-io.ktor:ktor-serialization-jvm:2.3.12
-io.ktor:ktor-serialization-kotlinx-json-jvm:2.3.12
-io.ktor:ktor-serialization-kotlinx-json:2.3.12
-io.ktor:ktor-serialization-kotlinx-jvm:2.3.12
-io.ktor:ktor-serialization-kotlinx:2.3.12
-io.ktor:ktor-serialization:2.3.12
-io.ktor:ktor-utils-jvm:2.3.12
-io.ktor:ktor-utils:2.3.12
-io.ktor:ktor-websocket-serialization-jvm:2.3.12
-io.ktor:ktor-websocket-serialization:2.3.12
-io.ktor:ktor-websockets-jvm:2.3.12
-io.ktor:ktor-websockets:2.3.12
+io.ktor:ktor-client-android-jvm:3.0.2
+io.ktor:ktor-client-android:3.0.2
+io.ktor:ktor-client-content-negotiation-jvm:3.0.2
+io.ktor:ktor-client-content-negotiation:3.0.2
+io.ktor:ktor-client-core-jvm:3.0.2
+io.ktor:ktor-client-core:3.0.2
+io.ktor:ktor-client-logging-jvm:3.0.2
+io.ktor:ktor-client-resources-jvm:3.0.2
+io.ktor:ktor-client-resources:3.0.2
+io.ktor:ktor-events-jvm:3.0.2
+io.ktor:ktor-events:3.0.2
+io.ktor:ktor-http-jvm:3.0.2
+io.ktor:ktor-http:3.0.2
+io.ktor:ktor-io-jvm:3.0.2
+io.ktor:ktor-io:3.0.2
+io.ktor:ktor-resources-jvm:3.0.2
+io.ktor:ktor-resources:3.0.2
+io.ktor:ktor-serialization-jvm:3.0.2
+io.ktor:ktor-serialization-kotlinx-json-jvm:3.0.2
+io.ktor:ktor-serialization-kotlinx-json:3.0.2
+io.ktor:ktor-serialization-kotlinx-jvm:3.0.2
+io.ktor:ktor-serialization-kotlinx:3.0.2
+io.ktor:ktor-serialization:3.0.2
+io.ktor:ktor-sse-jvm:3.0.2
+io.ktor:ktor-sse:3.0.2
+io.ktor:ktor-utils-jvm:3.0.2
+io.ktor:ktor-utils:3.0.2
+io.ktor:ktor-websocket-serialization-jvm:3.0.2
+io.ktor:ktor-websocket-serialization:3.0.2
+io.ktor:ktor-websockets-jvm:3.0.2
+io.ktor:ktor-websockets:3.0.2
org.checkerframework:checker-qual:3.12.0
org.jetbrains.androidx.core:core-bundle-android:1.0.1
org.jetbrains.androidx.core:core-bundle:1.0.1
@@ -255,7 +256,7 @@ org.jetbrains.kotlin:kotlin-android-extensions-runtime:1.9.22
org.jetbrains.kotlin:kotlin-parcelize-runtime:1.9.22
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.24
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.24
-org.jetbrains.kotlin:kotlin-stdlib:2.0.21
+org.jetbrains.kotlin:kotlin-stdlib:2.1.0
org.jetbrains.kotlinx:atomicfu-jvm:0.23.2
org.jetbrains.kotlinx:atomicfu:0.23.2
org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.7
@@ -265,14 +266,19 @@ org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.9.0
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.9.0
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0
org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.9.0
-org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.9.0
org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.9.0
-org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.2
-org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.2
-org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.2
-org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.2
-org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.2
+org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.5.4
+org.jetbrains.kotlinx:kotlinx-io-bytestring:0.5.4
+org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.5.4
+org.jetbrains.kotlinx:kotlinx-io-core:0.5.4
+org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3
+org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3
+org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3
+org.jetbrains.kotlinx:kotlinx-serialization-json-io-jvm:1.7.3
+org.jetbrains.kotlinx:kotlinx-serialization-json-io:1.7.3
+org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.3
+org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3
org.jetbrains.skiko:skiko-awt-runtime-linux-x64:0.8.18
org.jetbrains.skiko:skiko-awt:0.8.18
org.jetbrains:annotations:23.0.0
-org.slf4j:slf4j-api:1.7.36
+org.slf4j:slf4j-api:2.0.16
diff --git a/app/dependencies/googlePlayDebugRuntimeClasspath.txt b/app/dependencies/googlePlayDebugRuntimeClasspath.txt
index 10ca5442..dd89fc4c 100644
--- a/app/dependencies/googlePlayDebugRuntimeClasspath.txt
+++ b/app/dependencies/googlePlayDebugRuntimeClasspath.txt
@@ -126,29 +126,29 @@ androidx.navigation:navigation-common:2.8.0-rc01
androidx.navigation:navigation-compose:2.8.0-rc01
androidx.navigation:navigation-runtime-ktx:2.8.0-rc01
androidx.navigation:navigation-runtime:2.8.0-rc01
-androidx.paging:paging-common-android:3.3.4
-androidx.paging:paging-common:3.3.4
+androidx.paging:paging-common-android:3.3.2
+androidx.paging:paging-common:3.3.2
androidx.print:print:1.0.0
androidx.privacysandbox.ads:ads-adservices-java:1.0.0-beta05
androidx.privacysandbox.ads:ads-adservices:1.0.0-beta05
androidx.profileinstaller:profileinstaller:1.4.1
androidx.resourceinspection:resourceinspection-annotation:1.0.1
-androidx.room:room-common-jvm:2.7.0-alpha11
-androidx.room:room-common:2.7.0-alpha11
-androidx.room:room-ktx:2.7.0-alpha11
-androidx.room:room-paging-android:2.7.0-alpha11
-androidx.room:room-paging:2.7.0-alpha11
-androidx.room:room-runtime-android:2.7.0-alpha11
-androidx.room:room-runtime:2.7.0-alpha11
+androidx.room:room-common-jvm:2.7.0-alpha12
+androidx.room:room-common:2.7.0-alpha12
+androidx.room:room-ktx:2.7.0-alpha12
+androidx.room:room-paging-android:2.7.0-alpha12
+androidx.room:room-paging:2.7.0-alpha12
+androidx.room:room-runtime-android:2.7.0-alpha12
+androidx.room:room-runtime:2.7.0-alpha12
androidx.savedstate:savedstate-ktx:1.2.1
androidx.savedstate:savedstate:1.2.1
androidx.slidingpanelayout:slidingpanelayout:1.0.0
-androidx.sqlite:sqlite-android:2.5.0-alpha11
-androidx.sqlite:sqlite-bundled-android:2.5.0-alpha11
-androidx.sqlite:sqlite-bundled:2.5.0-alpha11
-androidx.sqlite:sqlite-framework-android:2.5.0-alpha11
-androidx.sqlite:sqlite-framework:2.5.0-alpha11
-androidx.sqlite:sqlite:2.5.0-alpha11
+androidx.sqlite:sqlite-android:2.5.0-alpha12
+androidx.sqlite:sqlite-bundled-android:2.5.0-alpha12
+androidx.sqlite:sqlite-bundled:2.5.0-alpha12
+androidx.sqlite:sqlite-framework-android:2.5.0-alpha12
+androidx.sqlite:sqlite-framework:2.5.0-alpha12
+androidx.sqlite:sqlite:2.5.0-alpha12
androidx.startup:startup-runtime:1.1.1
androidx.swiperefreshlayout:swiperefreshlayout:1.0.0
androidx.tracing:tracing-ktx:1.3.0-alpha02
@@ -161,12 +161,12 @@ androidx.window.extensions.core:core:1.0.0
androidx.window:window-core-android:1.3.0
androidx.window:window-core:1.3.0
androidx.window:window:1.3.0
-co.touchlab:kermit-android-debug:2.0.4
-co.touchlab:kermit-core-android-debug:2.0.4
-co.touchlab:kermit-core:2.0.4
-co.touchlab:kermit-koin-android-debug:2.0.4
-co.touchlab:kermit-koin:2.0.4
-co.touchlab:kermit:2.0.4
+co.touchlab:kermit-android-debug:2.0.5
+co.touchlab:kermit-core-android-debug:2.0.5
+co.touchlab:kermit-core:2.0.5
+co.touchlab:kermit-koin-android-debug:2.0.5
+co.touchlab:kermit-koin:2.0.5
+co.touchlab:kermit:2.0.5
co.touchlab:stately-concurrency-jvm:2.1.0
co.touchlab:stately-concurrency:2.1.0
co.touchlab:stately-concurrent-collections-jvm:2.1.0
@@ -203,16 +203,16 @@ com.google.android.gms:play-services-tasks:18.2.0
com.google.android.libraries.identity.googleid:googleid:1.1.0
com.google.android.play:app-update-ktx:2.1.0
com.google.android.play:app-update:2.1.0
-com.google.android.play:core-common:2.0.3
+com.google.android.play:core-common:2.0.4
com.google.android.play:integrity:1.3.0
-com.google.android.play:review-ktx:2.0.1
-com.google.android.play:review:2.0.1
+com.google.android.play:review-ktx:2.0.2
+com.google.android.play:review:2.0.2
com.google.android.recaptcha:recaptcha:18.5.1
com.google.android:annotations:4.1.1.4
com.google.auto.value:auto-value-annotations:1.8.1
com.google.code.findbugs:jsr305:3.0.2
com.google.code.gson:gson:2.10.1
-com.google.dagger:dagger:2.27
+com.google.dagger:dagger:2.43.2
com.google.errorprone:error_prone_annotations:2.26.0
com.google.firebase:firebase-abt:21.1.1
com.google.firebase:firebase-analytics-ktx:22.1.2
@@ -221,14 +221,14 @@ com.google.firebase:firebase-annotations:16.2.0
com.google.firebase:firebase-appcheck-interop:17.0.0
com.google.firebase:firebase-auth-interop:20.0.0
com.google.firebase:firebase-auth:23.1.0
-com.google.firebase:firebase-bom:33.6.0
+com.google.firebase:firebase-bom:33.7.0
com.google.firebase:firebase-common-ktx:21.0.0
com.google.firebase:firebase-common:21.0.0
com.google.firebase:firebase-components:18.0.0
com.google.firebase:firebase-config-interop:16.0.1
com.google.firebase:firebase-config:22.0.1
-com.google.firebase:firebase-crashlytics-ktx:19.2.1
-com.google.firebase:firebase-crashlytics:19.2.1
+com.google.firebase:firebase-crashlytics-ktx:19.3.0
+com.google.firebase:firebase-crashlytics:19.3.0
com.google.firebase:firebase-datatransport:19.0.0
com.google.firebase:firebase-encoders-json:18.0.1
com.google.firebase:firebase-encoders-proto:16.0.0
@@ -241,31 +241,31 @@ com.google.firebase:firebase-installations:18.0.0
com.google.firebase:firebase-measurement-connector:20.0.1
com.google.firebase:firebase-messaging-ktx:24.1.0
com.google.firebase:firebase-messaging:24.1.0
-com.google.firebase:firebase-perf-ktx:21.0.2
-com.google.firebase:firebase-perf:21.0.2
-com.google.firebase:firebase-sessions:2.0.6
+com.google.firebase:firebase-perf-ktx:21.0.3
+com.google.firebase:firebase-perf:21.0.3
+com.google.firebase:firebase-sessions:2.0.7
com.google.firebase:protolite-well-known-types:18.0.0
com.google.guava:failureaccess:1.0.1
com.google.guava:guava:32.1.3-android
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
com.google.protobuf:protobuf-javalite:3.25.5
-com.squareup.okhttp3:okhttp:4.12.0
+com.squareup.okhttp3:okhttp:3.12.13
com.squareup.okio:okio-jvm:3.9.1
com.squareup.okio:okio:3.9.1
-io.coil-kt.coil3:coil-android:3.0.3
-io.coil-kt.coil3:coil-compose-android:3.0.3
-io.coil-kt.coil3:coil-compose-core-android:3.0.3
-io.coil-kt.coil3:coil-compose-core:3.0.3
-io.coil-kt.coil3:coil-compose:3.0.3
-io.coil-kt.coil3:coil-core-android:3.0.3
-io.coil-kt.coil3:coil-core:3.0.3
-io.coil-kt.coil3:coil-network-core-android:3.0.3
-io.coil-kt.coil3:coil-network-core:3.0.3
-io.coil-kt.coil3:coil-network-okhttp-jvm:3.0.3
-io.coil-kt.coil3:coil-network-okhttp:3.0.3
-io.coil-kt.coil3:coil-svg-android:3.0.3
-io.coil-kt.coil3:coil-svg:3.0.3
-io.coil-kt.coil3:coil:3.0.3
+io.coil-kt.coil3:coil-android:3.0.4
+io.coil-kt.coil3:coil-compose-android:3.0.4
+io.coil-kt.coil3:coil-compose-core-android:3.0.4
+io.coil-kt.coil3:coil-compose-core:3.0.4
+io.coil-kt.coil3:coil-compose:3.0.4
+io.coil-kt.coil3:coil-core-android:3.0.4
+io.coil-kt.coil3:coil-core:3.0.4
+io.coil-kt.coil3:coil-network-core-android:3.0.4
+io.coil-kt.coil3:coil-network-core:3.0.4
+io.coil-kt.coil3:coil-network-ktor3-android:3.0.4
+io.coil-kt.coil3:coil-network-ktor3:3.0.4
+io.coil-kt.coil3:coil-svg-android:3.0.4
+io.coil-kt.coil3:coil-svg:3.0.4
+io.coil-kt.coil3:coil:3.0.4
io.grpc:grpc-api:1.62.2
io.grpc:grpc-context:1.62.2
io.grpc:grpc-core:1.62.2
@@ -282,35 +282,37 @@ io.insert-koin:koin-core-jvm:4.0.0
io.insert-koin:koin-core-viewmodel-jvm:4.0.0
io.insert-koin:koin-core-viewmodel:4.0.0
io.insert-koin:koin-core:4.0.0
-io.ktor:ktor-client-android-jvm:2.3.12
-io.ktor:ktor-client-android:2.3.12
-io.ktor:ktor-client-content-negotiation-jvm:2.3.12
-io.ktor:ktor-client-content-negotiation:2.3.12
-io.ktor:ktor-client-core-jvm:2.3.12
-io.ktor:ktor-client-core:2.3.12
-io.ktor:ktor-client-logging-jvm:2.3.12
-io.ktor:ktor-client-resources-jvm:2.3.12
-io.ktor:ktor-client-resources:2.3.12
-io.ktor:ktor-events-jvm:2.3.12
-io.ktor:ktor-events:2.3.12
-io.ktor:ktor-http-jvm:2.3.12
-io.ktor:ktor-http:2.3.12
-io.ktor:ktor-io-jvm:2.3.12
-io.ktor:ktor-io:2.3.12
-io.ktor:ktor-resources-jvm:2.3.12
-io.ktor:ktor-resources:2.3.12
-io.ktor:ktor-serialization-jvm:2.3.12
-io.ktor:ktor-serialization-kotlinx-json-jvm:2.3.12
-io.ktor:ktor-serialization-kotlinx-json:2.3.12
-io.ktor:ktor-serialization-kotlinx-jvm:2.3.12
-io.ktor:ktor-serialization-kotlinx:2.3.12
-io.ktor:ktor-serialization:2.3.12
-io.ktor:ktor-utils-jvm:2.3.12
-io.ktor:ktor-utils:2.3.12
-io.ktor:ktor-websocket-serialization-jvm:2.3.12
-io.ktor:ktor-websocket-serialization:2.3.12
-io.ktor:ktor-websockets-jvm:2.3.12
-io.ktor:ktor-websockets:2.3.12
+io.ktor:ktor-client-android-jvm:3.0.2
+io.ktor:ktor-client-android:3.0.2
+io.ktor:ktor-client-content-negotiation-jvm:3.0.2
+io.ktor:ktor-client-content-negotiation:3.0.2
+io.ktor:ktor-client-core-jvm:3.0.2
+io.ktor:ktor-client-core:3.0.2
+io.ktor:ktor-client-logging-jvm:3.0.2
+io.ktor:ktor-client-resources-jvm:3.0.2
+io.ktor:ktor-client-resources:3.0.2
+io.ktor:ktor-events-jvm:3.0.2
+io.ktor:ktor-events:3.0.2
+io.ktor:ktor-http-jvm:3.0.2
+io.ktor:ktor-http:3.0.2
+io.ktor:ktor-io-jvm:3.0.2
+io.ktor:ktor-io:3.0.2
+io.ktor:ktor-resources-jvm:3.0.2
+io.ktor:ktor-resources:3.0.2
+io.ktor:ktor-serialization-jvm:3.0.2
+io.ktor:ktor-serialization-kotlinx-json-jvm:3.0.2
+io.ktor:ktor-serialization-kotlinx-json:3.0.2
+io.ktor:ktor-serialization-kotlinx-jvm:3.0.2
+io.ktor:ktor-serialization-kotlinx:3.0.2
+io.ktor:ktor-serialization:3.0.2
+io.ktor:ktor-sse-jvm:3.0.2
+io.ktor:ktor-sse:3.0.2
+io.ktor:ktor-utils-jvm:3.0.2
+io.ktor:ktor-utils:3.0.2
+io.ktor:ktor-websocket-serialization-jvm:3.0.2
+io.ktor:ktor-websocket-serialization:3.0.2
+io.ktor:ktor-websockets-jvm:3.0.2
+io.ktor:ktor-websockets:3.0.2
io.perfmark:perfmark-api:0.26.0
io.reactivex.rxjava2:rxandroid:2.0.2
io.reactivex.rxjava2:rxjava:2.1.14
@@ -365,7 +367,7 @@ org.jetbrains.kotlin:kotlin-android-extensions-runtime:1.9.22
org.jetbrains.kotlin:kotlin-parcelize-runtime:1.9.22
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.24
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.24
-org.jetbrains.kotlin:kotlin-stdlib:2.0.21
+org.jetbrains.kotlin:kotlin-stdlib:2.1.0
org.jetbrains.kotlinx:atomicfu-jvm:0.23.2
org.jetbrains.kotlinx:atomicfu:0.23.2
org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.7
@@ -375,16 +377,21 @@ org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.9.0
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.9.0
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0
org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.9.0
-org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.9.0
org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.9.0
org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.9.0
-org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.2
-org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.2
-org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.2
-org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.2
-org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.2
+org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.5.4
+org.jetbrains.kotlinx:kotlinx-io-bytestring:0.5.4
+org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.5.4
+org.jetbrains.kotlinx:kotlinx-io-core:0.5.4
+org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3
+org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3
+org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3
+org.jetbrains.kotlinx:kotlinx-serialization-json-io-jvm:1.7.3
+org.jetbrains.kotlinx:kotlinx-serialization-json-io:1.7.3
+org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.3
+org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3
org.jetbrains.skiko:skiko-awt-runtime-linux-x64:0.8.18
org.jetbrains.skiko:skiko-awt:0.8.18
org.jetbrains:annotations:23.0.0
org.reactivestreams:reactive-streams:1.0.2
-org.slf4j:slf4j-api:1.7.36
+org.slf4j:slf4j-api:2.0.16
diff --git a/app/fossReliantRelease-badging.txt b/app/fossReliantRelease-badging.txt
index 1b421a5e..4629d333 100644
--- a/app/fossReliantRelease-badging.txt
+++ b/app/fossReliantRelease-badging.txt
@@ -1,4 +1,4 @@
-package: name='com.mshdabiola.skeletonapp.foss' versionCode='122' versionName='1.2.2' platformBuildVersionName='15' platformBuildVersionCode='35' compileSdkVersion='35' compileSdkVersionCodename='15'
+package: name='com.mshdabiola.skeletonapp.foss' versionCode='123' versionName='1.2.3' platformBuildVersionName='15' platformBuildVersionCode='35' compileSdkVersion='35' compileSdkVersionCodename='15'
sdkVersion:'24'
targetSdkVersion:'35'
uses-permission: name='com.mshdabiola.skeletonapp.foss.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION'
diff --git a/app/src/androidMain/ic_launcher-playstore.png b/app/src/androidMain/ic_launcher-playstore.png
new file mode 100644
index 00000000..f3c53041
Binary files /dev/null and b/app/src/androidMain/ic_launcher-playstore.png differ
diff --git a/app/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml b/app/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml
deleted file mode 100644
index c7e76f5a..00000000
--- a/app/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/androidMain/res/drawable/ic_launcher_foreground.xml b/app/src/androidMain/res/drawable/ic_launcher_foreground.xml
index 0277e243..54b88620 100644
--- a/app/src/androidMain/res/drawable/ic_launcher_foreground.xml
+++ b/app/src/androidMain/res/drawable/ic_launcher_foreground.xml
@@ -1,34 +1,16 @@
-
+
-
-
-
-
-
-
-
-
-
+ android:viewportWidth="86"
+ android:viewportHeight="190.08008">
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml
index 99146c21..7353dbd1 100644
--- a/app/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml
+++ b/app/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -1,9 +1,5 @@
-
+
-
-
-
+
+
\ No newline at end of file
diff --git a/app/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml
index 99146c21..7353dbd1 100644
--- a/app/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml
+++ b/app/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -1,9 +1,5 @@
-
+
-
-
-
+
+
\ No newline at end of file
diff --git a/app/src/androidMain/res/mipmap-hdpi/ic_launcher.webp b/app/src/androidMain/res/mipmap-hdpi/ic_launcher.webp
index c209e78e..ee175443 100644
Binary files a/app/src/androidMain/res/mipmap-hdpi/ic_launcher.webp and b/app/src/androidMain/res/mipmap-hdpi/ic_launcher.webp differ
diff --git a/app/src/androidMain/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/androidMain/res/mipmap-hdpi/ic_launcher_round.webp
index b2dfe3d1..5662ead5 100644
Binary files a/app/src/androidMain/res/mipmap-hdpi/ic_launcher_round.webp and b/app/src/androidMain/res/mipmap-hdpi/ic_launcher_round.webp differ
diff --git a/app/src/androidMain/res/mipmap-mdpi/ic_launcher.webp b/app/src/androidMain/res/mipmap-mdpi/ic_launcher.webp
index 4f0f1d64..78ac309b 100644
Binary files a/app/src/androidMain/res/mipmap-mdpi/ic_launcher.webp and b/app/src/androidMain/res/mipmap-mdpi/ic_launcher.webp differ
diff --git a/app/src/androidMain/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/androidMain/res/mipmap-mdpi/ic_launcher_round.webp
index 62b611da..d19b23c2 100644
Binary files a/app/src/androidMain/res/mipmap-mdpi/ic_launcher_round.webp and b/app/src/androidMain/res/mipmap-mdpi/ic_launcher_round.webp differ
diff --git a/app/src/androidMain/res/mipmap-xhdpi/ic_launcher.webp b/app/src/androidMain/res/mipmap-xhdpi/ic_launcher.webp
index 948a3070..487c7942 100644
Binary files a/app/src/androidMain/res/mipmap-xhdpi/ic_launcher.webp and b/app/src/androidMain/res/mipmap-xhdpi/ic_launcher.webp differ
diff --git a/app/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.webp
index 1b9a6956..eb885c75 100644
Binary files a/app/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.webp and b/app/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.webp differ
diff --git a/app/src/androidMain/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/androidMain/res/mipmap-xxhdpi/ic_launcher.webp
index 28d4b77f..5ca8999a 100644
Binary files a/app/src/androidMain/res/mipmap-xxhdpi/ic_launcher.webp and b/app/src/androidMain/res/mipmap-xxhdpi/ic_launcher.webp differ
diff --git a/app/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.webp
index 9287f508..dae89dbf 100644
Binary files a/app/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.webp and b/app/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.webp differ
diff --git a/app/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.webp
index aa7d6427..541a53c0 100644
Binary files a/app/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.webp and b/app/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.webp differ
diff --git a/app/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.webp
index 9126ae37..1bf3c7e4 100644
Binary files a/app/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.webp and b/app/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.webp differ
diff --git a/app/src/androidMain/res/values/colors.xml b/app/src/androidMain/res/values/colors.xml
index 65f112a5..345c1921 100644
--- a/app/src/androidMain/res/values/colors.xml
+++ b/app/src/androidMain/res/values/colors.xml
@@ -3,7 +3,7 @@
-->
- #914278
+ #8E4D31
#4D000000
diff --git a/app/src/androidMain/res/values/ic_launcher_background.xml b/app/src/androidMain/res/values/ic_launcher_background.xml
new file mode 100644
index 00000000..69eb5afa
--- /dev/null
+++ b/app/src/androidMain/res/values/ic_launcher_background.xml
@@ -0,0 +1,4 @@
+
+
+ #8E4D31
+
\ No newline at end of file
diff --git a/app/src/jvmMain/kotlin/com/mshdabiola/skeletonapp/MainApp.kt b/app/src/jvmMain/kotlin/com/mshdabiola/skeletonapp/MainApp.kt
index 4d837f2e..2cd79857 100644
--- a/app/src/jvmMain/kotlin/com/mshdabiola/skeletonapp/MainApp.kt
+++ b/app/src/jvmMain/kotlin/com/mshdabiola/skeletonapp/MainApp.kt
@@ -36,7 +36,7 @@ fun mainApp() {
position = WindowPosition.Aligned(Alignment.Center),
)
- val version = "1.2.2"
+ val version = "1.2.3"
Window(
onCloseRequest = ::exitApplication,
title = "$appName v$version",
diff --git a/app/src/wasmJsMain/kotlin/org/example/project/Main.kt b/app/src/wasmJsMain/kotlin/org/example/project/Main.kt
new file mode 100644
index 00000000..07d4b1c4
--- /dev/null
+++ b/app/src/wasmJsMain/kotlin/org/example/project/Main.kt
@@ -0,0 +1,67 @@
+package org.example.project
+
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.ui.ExperimentalComposeUiApi
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.window.ComposeViewport
+import co.touchlab.kermit.Logger
+import co.touchlab.kermit.loggerConfigInit
+import co.touchlab.kermit.platformLogWriter
+import com.mshdabiola.skeletonapp.di.appModule
+import com.mshdabiola.skeletonapp.ui.SkeletonApp
+import com.mshdabiola.ui.SplashScreen
+import kotlinx.browser.document
+import kotlinx.coroutines.delay
+import org.koin.core.context.GlobalContext.startKoin
+import org.koin.dsl.module
+
+@OptIn(ExperimentalComposeUiApi::class)
+fun mainApp() {
+ ComposeViewport(document.body!!) {
+ val version = "1.2.2"
+
+ val show = remember { mutableStateOf(true) }
+ LaunchedEffect(Unit) {
+ delay(2000)
+ show.value = false
+ }
+ Box(Modifier.fillMaxSize()) {
+ SkeletonApp()
+ if (show.value) {
+ SplashScreen()
+ }
+ }
+ }
+}
+
+@OptIn(ExperimentalComposeUiApi::class)
+fun main() {
+ val logger = Logger(
+ loggerConfigInit(platformLogWriter(), Writer()),
+ "DesktopLogger,",
+ )
+ val logModule = module {
+ single {
+ logger
+ }
+ }
+ try {
+ startKoin {
+// logger(
+// KermitKoinLogger(Logger.withTag("koin")),
+// )
+ modules(
+ appModule,
+ logModule,
+ )
+ }
+ mainApp()
+ } catch (e: Exception) {
+ logger.e("crash exceptions", e)
+ throw e
+ }
+}
diff --git a/app/src/wasmJsMain/kotlin/org/example/project/Writer.kt b/app/src/wasmJsMain/kotlin/org/example/project/Writer.kt
new file mode 100644
index 00000000..026cf4da
--- /dev/null
+++ b/app/src/wasmJsMain/kotlin/org/example/project/Writer.kt
@@ -0,0 +1,15 @@
+package org.example.project
+
+import co.touchlab.kermit.DefaultFormatter
+import co.touchlab.kermit.LogWriter
+import co.touchlab.kermit.Message
+import co.touchlab.kermit.Severity
+import co.touchlab.kermit.Tag
+
+class Writer() : LogWriter() {
+
+ override fun log(severity: Severity, message: String, tag: String, throwable: Throwable?) {
+ val messageStr = DefaultFormatter.formatMessage(severity, Tag(tag), Message(message))
+ println(messageStr)
+ }
+}
diff --git a/app/src/wasmJsMain/resources/index.html b/app/src/wasmJsMain/resources/index.html
new file mode 100644
index 00000000..0828ff59
--- /dev/null
+++ b/app/src/wasmJsMain/resources/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+ Hydraulic
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/wasmJsMain/resources/styles.css b/app/src/wasmJsMain/resources/styles.css
new file mode 100644
index 00000000..0549b10f
--- /dev/null
+++ b/app/src/wasmJsMain/resources/styles.css
@@ -0,0 +1,7 @@
+html, body {
+ width: 100%;
+ height: 100%;
+ margin: 0;
+ padding: 0;
+ overflow: hidden;
+}
\ No newline at end of file
diff --git a/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt
index 98fcd305..61f4dcf5 100644
--- a/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt
+++ b/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt
@@ -5,13 +5,16 @@ import com.mshdabiola.app.configureGradleManagedDevices
import com.mshdabiola.app.configureKotlinAndroid
import com.mshdabiola.app.configurePrintApksTask
import com.mshdabiola.app.disableUnnecessaryAndroidTests
+import com.mshdabiola.app.libs
import org.gradle.api.Plugin
import org.gradle.api.Project
-import org.gradle.api.artifacts.VersionCatalogsExtension
import org.gradle.kotlin.dsl.configure
-import org.gradle.kotlin.dsl.getByType
+import org.gradle.kotlin.dsl.getting
+import org.gradle.kotlin.dsl.provideDelegate
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
+import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
+import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig
import org.jetbrains.kotlin.powerassert.gradle.PowerAssertGradleExtension
class AndroidLibraryConventionPlugin : Plugin {
@@ -63,11 +66,43 @@ class AndroidLibraryConventionPlugin : Plugin {
androidTarget()
// jvm("desktop")
jvm()
+
+ @OptIn(ExperimentalWasmDsl::class)
+ wasmJs {
+ browser {
+ val rootDirPath = project.rootDir.path
+ val projectDirPath = project.projectDir.path
+ commonWebpackConfig {
+ devServer = (devServer ?: KotlinWebpackConfig.DevServer()).apply {
+ static = (static ?: mutableListOf()).apply {
+ // Serve sources to debug inside browser
+ add(rootDirPath)
+ add(projectDirPath)
+ }
+ }
+ }
+ }
+ }
+
jvmToolchain(21)
+ applyDefaultHierarchyTemplate {
+ common {
+ group("nonJs") {
+ withAndroidTarget()
+ // withIos()
+ withJvm()
+ }
+ }
+ }
- val libs = extensions.getByType().named("libs")
with(sourceSets) {
+ getByName("nonJsMain") {
+ this.dependencies {
+
+ }
+
+ }
commonMain.dependencies {
implementation(libs.findLibrary("koin.core").get())
implementation(libs.findLibrary("kermit").get())
diff --git a/build-logic/convention/src/main/kotlin/AndroidRoomConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidRoomConventionPlugin.kt
index db954bd9..e0f706a6 100644
--- a/build-logic/convention/src/main/kotlin/AndroidRoomConventionPlugin.kt
+++ b/build-logic/convention/src/main/kotlin/AndroidRoomConventionPlugin.kt
@@ -4,14 +4,16 @@ import androidx.room.gradle.RoomExtension
import com.google.devtools.ksp.gradle.KspExtension
import org.gradle.api.Plugin
import org.gradle.api.Project
-import org.gradle.api.artifacts.VersionCatalogsExtension
+import com.mshdabiola.app.libs
import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.dependencies
import org.gradle.kotlin.dsl.getByType
+import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
class AndroidRoomConventionPlugin : Plugin {
+ @OptIn(ExperimentalKotlinGradlePluginApi::class)
override fun apply(target: Project) {
with(target) {
with(pluginManager) {
@@ -20,7 +22,6 @@ class AndroidRoomConventionPlugin : Plugin {
apply("androidx.room")
}
- val libs = extensions.getByType().named("libs")
extensions.configure {
arg("room.generateKotlin", "true")
@@ -54,17 +55,34 @@ class AndroidRoomConventionPlugin : Plugin {
androidTarget()
jvm()
jvmToolchain(21)
- // val libs = extensions.getByType().named("libs")
+ applyDefaultHierarchyTemplate {
+ common {
+ group("nonJs") {
+ withAndroidTarget()
+ // withIos()
+ withJvm()
+ }
+ }
+ }
+
with(sourceSets) {
commonMain.dependencies {
implementation(project(":modules:model"))
- implementation(libs.findLibrary("room.runtime").get())
- implementation(libs.findLibrary("room.ktx").get())
- implementation(libs.findLibrary("room.paging").get())
+// implementation(libs.findLibrary("kotlinx.coroutines.core").get())
+
+
+ }
+ getByName("nonJsMain") {
+ this.dependencies {
+ implementation(libs.findLibrary("room.runtime").get())
+ implementation(libs.findLibrary("room.ktx").get())
+ implementation(libs.findLibrary("room.paging").get())
// implementation(libs.findLibrary("paging.common").get())
- api(libs.findLibrary("sqlite.bundled").get())//sqlite-bundled
+
+ api(libs.findLibrary("sqlite.bundled").get())//sqlite-bundled
+ }
}
jvmTest.dependencies {
diff --git a/build-logic/convention/src/main/kotlin/com/mshdabiola/app/AndroidCompose.kt b/build-logic/convention/src/main/kotlin/com/mshdabiola/app/AndroidCompose.kt
index c770ba04..4e85f39d 100644
--- a/build-logic/convention/src/main/kotlin/com/mshdabiola/app/AndroidCompose.kt
+++ b/build-logic/convention/src/main/kotlin/com/mshdabiola/app/AndroidCompose.kt
@@ -8,6 +8,7 @@ import org.gradle.kotlin.dsl.dependencies
import org.gradle.kotlin.dsl.withType
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import org.jetbrains.kotlin.compose.compiler.gradle.ComposeCompilerGradlePluginExtension
+import org.jetbrains.kotlin.compose.compiler.gradle.ComposeFeatureFlag
/**
* Configure Compose-specific options
@@ -59,6 +60,6 @@ internal fun Project.configureAndroidCompose(
stabilityConfigurationFile.set(rootProject.layout.projectDirectory.file("compose_compiler_config.conf"))
- enableStrongSkippingMode.set(true)
+ featureFlags.set(listOf(ComposeFeatureFlag.StrongSkipping))
}
}
\ No newline at end of file
diff --git a/conveyor.conf b/conveyor.conf
index d6b013dd..7a241298 100644
--- a/conveyor.conf
+++ b/conveyor.conf
@@ -19,7 +19,7 @@ include required("/stdlib/jdk/17/openjdk.conf")
app {
// This is optional. If not specified the last component of the rdns name will be turned into a display name.
- display-name = "Skeleton App"
+ display-name = "Hydraulic"
//version = "1.0.7"
vendor = "Mshdabiola"
description = "Template application"
@@ -31,8 +31,10 @@ app {
// Use the Compose logo as an icon and include it so we can pass it to the Window constructor.
//icons = icons/icon.svg
icons {
- label = SA
- gradient = "blue;pink"
+ label = H
+ // gradient = "blue;pink"
+ gradient = "#8E4D31"
+
}
windows.inputs += TASK/rendered-icons/windows
linux.inputs += TASK/rendered-icons/linux
diff --git a/fastlane/metadata/android/en-US/images/buttons/fdroid.svg b/fastlane/metadata/android/en-US/images/buttons/fdroid.svg
new file mode 100644
index 00000000..01dcf15d
--- /dev/null
+++ b/fastlane/metadata/android/en-US/images/buttons/fdroid.svg
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/fastlane/metadata/android/en-US/images/buttons/github.svg b/fastlane/metadata/android/en-US/images/buttons/github.svg
new file mode 100644
index 00000000..256a4317
--- /dev/null
+++ b/fastlane/metadata/android/en-US/images/buttons/github.svg
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/fastlane/metadata/android/en-US/images/buttons/gplay.svg b/fastlane/metadata/android/en-US/images/buttons/gplay.svg
new file mode 100644
index 00000000..3bafd225
--- /dev/null
+++ b/fastlane/metadata/android/en-US/images/buttons/gplay.svg
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/fastlane/metadata/android/en-US/images/desktopScreenshots/1.png b/fastlane/metadata/android/en-US/images/desktopScreenshots/1.png
new file mode 100644
index 00000000..9a57da9d
Binary files /dev/null and b/fastlane/metadata/android/en-US/images/desktopScreenshots/1.png differ
diff --git a/fastlane/metadata/android/en-US/images/desktopScreenshots/2.png b/fastlane/metadata/android/en-US/images/desktopScreenshots/2.png
new file mode 100644
index 00000000..87c33595
Binary files /dev/null and b/fastlane/metadata/android/en-US/images/desktopScreenshots/2.png differ
diff --git a/fastlane/metadata/android/en-US/images/desktopScreenshots/3.png b/fastlane/metadata/android/en-US/images/desktopScreenshots/3.png
new file mode 100644
index 00000000..6e4fe899
Binary files /dev/null and b/fastlane/metadata/android/en-US/images/desktopScreenshots/3.png differ
diff --git a/fastlane/metadata/android/en-US/images/icon.png b/fastlane/metadata/android/en-US/images/icon.png
new file mode 100644
index 00000000..5847a150
Binary files /dev/null and b/fastlane/metadata/android/en-US/images/icon.png differ
diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png
new file mode 100644
index 00000000..aa397bcc
Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png differ
diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png
new file mode 100644
index 00000000..eeb64554
Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png differ
diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/3.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/3.png
new file mode 100644
index 00000000..b28fda05
Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/3.png differ
diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/shot_1.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/shot_1.png
deleted file mode 100755
index 6d188c2e..00000000
Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/shot_1.png and /dev/null differ
diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/shot_2.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/shot_2.png
deleted file mode 100755
index ea5d968a..00000000
Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/shot_2.png and /dev/null differ
diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/shot_3.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/shot_3.png
deleted file mode 100755
index bd1238a6..00000000
Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/shot_3.png and /dev/null differ
diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/shot_4.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/shot_4.png
deleted file mode 100755
index ada5e0c8..00000000
Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/shot_4.png and /dev/null differ
diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/shot_5.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/shot_5.png
deleted file mode 100755
index ff34255c..00000000
Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/shot_5.png and /dev/null differ
diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/shot_6.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/shot_6.png
deleted file mode 100755
index 5a87d32f..00000000
Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/shot_6.png and /dev/null differ
diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/shot_7.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/shot_7.png
deleted file mode 100755
index f84fb36a..00000000
Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/shot_7.png and /dev/null differ
diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/shot_8.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/shot_8.png
deleted file mode 100755
index f19bba2a..00000000
Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/shot_8.png and /dev/null differ
diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/shot_9.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/shot_9.png
deleted file mode 100755
index 6aca022a..00000000
Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/shot_9.png and /dev/null differ
diff --git a/fastlane/metadata/android/en-US/images/webScreenshots/1.png b/fastlane/metadata/android/en-US/images/webScreenshots/1.png
new file mode 100644
index 00000000..e45b8aed
Binary files /dev/null and b/fastlane/metadata/android/en-US/images/webScreenshots/1.png differ
diff --git a/fastlane/metadata/android/en-US/images/webScreenshots/2.png b/fastlane/metadata/android/en-US/images/webScreenshots/2.png
new file mode 100644
index 00000000..904ba0e9
Binary files /dev/null and b/fastlane/metadata/android/en-US/images/webScreenshots/2.png differ
diff --git a/fastlane/metadata/android/en-US/images/webScreenshots/3.png b/fastlane/metadata/android/en-US/images/webScreenshots/3.png
new file mode 100644
index 00000000..a68ca040
Binary files /dev/null and b/fastlane/metadata/android/en-US/images/webScreenshots/3.png differ
diff --git a/features/setting/src/commonMain/kotlin/com/mshdabiola/setting/SettingScreen.kt b/features/setting/src/commonMain/kotlin/com/mshdabiola/setting/SettingScreen.kt
index 535f06bf..ca5d7d8a 100644
--- a/features/setting/src/commonMain/kotlin/com/mshdabiola/setting/SettingScreen.kt
+++ b/features/setting/src/commonMain/kotlin/com/mshdabiola/setting/SettingScreen.kt
@@ -97,6 +97,8 @@ internal fun MainContent(
) {
var dark by remember { mutableStateOf(false) }
var theme by remember { mutableStateOf(false) }
+ val themeArray = stringArrayResource(Res.array.theme)
+ val dayLightArray = stringArrayResource(Res.array.daynight)
Column(
modifier.padding(16.dp),
@@ -122,7 +124,7 @@ internal fun MainContent(
modifier = Modifier.testTag("setting:theme").clickable { theme = true },
headlineContent = { Text("Theme") },
supportingContent = {
- Text(stringArrayResource(Res.array.theme)[settingState.themeBrand.ordinal])
+ Text(themeArray.getOrNull(settingState.themeBrand.ordinal) ?: "")
},
)
@@ -130,7 +132,7 @@ internal fun MainContent(
modifier = Modifier.testTag("setting:mode").clickable { dark = true },
headlineContent = { Text("DayNight mode") },
supportingContent = {
- Text(stringArrayResource(Res.array.daynight)[settingState.darkThemeConfig.ordinal])
+ Text(dayLightArray.getOrNull(settingState.darkThemeConfig.ordinal) ?: "")
},
)
}
@@ -138,7 +140,7 @@ internal fun MainContent(
AnimatedVisibility(theme) {
OptionsDialog(
modifier = Modifier,
- options = stringArrayResource(Res.array.theme),
+ options = themeArray,
current = settingState.themeBrand.ordinal,
onDismiss = { theme = false },
onSelect = { setTheme(ThemeBrand.entries[it]) },
@@ -147,7 +149,7 @@ internal fun MainContent(
AnimatedVisibility(dark) {
OptionsDialog(
modifier = Modifier,
- options = stringArrayResource(Res.array.daynight),
+ options = dayLightArray,
current = settingState.darkThemeConfig.ordinal,
onDismiss = { dark = false },
onSelect = { setDarkMode(DarkThemeConfig.entries[it]) },
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 4eae314b..88f22fbc 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -1,8 +1,8 @@
[versions]
-accompanist = "0.36.0"
-androidDesugarJdkLibs = "2.1.2"
-androidGradlePlugin = "8.7.2"
-androidTools = "31.7.2"
+accompanist = "0.37.0"
+androidDesugarJdkLibs = "2.1.3"
+androidGradlePlugin = "8.7.3"
+androidTools = "31.7.3"
androidxActivity = "1.9.3"
androidxAppCompat = "1.7.0"
androidxBrowser = "1.8.0"
@@ -30,37 +30,38 @@ androidxTracing = "1.3.0-alpha02"
androidxUiAutomator = "2.3.0"
androidxWindowManager = "1.3.0"
androidxWork = "2.10.0"
-coil = "3.0.3"
+coil = "3.0.4"
dependencyGuard = "0.5.0"
-firebaseBom = "33.6.0"
+firebaseBom = "33.7.0"
firebaseCrashlyticsPlugin = "2.9.9"
firebasePerfPlugin = "1.4.2"
gmsPlugin = "4.4.2"
googleOss = "17.1.0"
googleOssPlugin = "0.10.6"
junit4 = "4.13.2"
-kotlin = "2.0.21"
+kotlin = "2.1.0"
kotlinxCoroutines = "1.9.0"
kotlinxDatetime = "0.6.1"
-kotlinxSerializationJson = "1.7.2"
+kotlinxSerializationJson = "1.7.3"
protobuf = "4.26.0"
protobufPlugin = "0.9.4"
-ksp = "2.0.21-1.0.28"
-moduleGraph = "2.6.0"
+ksp = "2.1.0-1.0.29"
+moduleGraph = "2.7.1"
poi = "5.3.0"
-room = "2.7.0-alpha11"
+room = "2.7.0-alpha12"
secrets = "2.0.1"
-truth = "1.4.3"
+truth = "1.4.4"
turbine = "1.2.0"
+kstore ="0.9.1"
compose-plugin = "1.7.1"
composeNavigation="2.8.0-alpha10"
-androidxNavigationTest = "2.8.4" #for nav test
+androidxNavigationTest = "2.8.5" #for nav test
compose = "1.7.5"
playGame = "20.1.2"
-playReview = "2.0.1"
+playReview = "2.0.2"
playUpdate = "2.1.0"
playCoroutine = "1.9.0"
firebaseAnalytics = "21.2.2"
@@ -68,7 +69,7 @@ firebaseCrashlyticsKts = "18.3.6"
firebaseCrashylyticsPlugins = "2.9.9"
playServicesMlkitTextRecognition = "19.0.0"
-ktor = "2.3.12"
+ktor = "3.0.2"
uiTextGoogleFonts = "1.7.5"
koin = "4.0.0"
@@ -76,23 +77,23 @@ koinCompose = "4.0.0"
conveyor = "1.12"
-kermit = "2.0.4"
+kermit = "2.0.5"
slf4jSimple = "2.0.16"
-androidx-paging = "3.3.4"
-sqlite = "2.5.0-alpha07"
+androidx-paging = "3.3.5"
+sqlite = "2.5.0-alpha11"
kotlinxCollectionImmutable = "0.3.7"
windowSizeClass = "0.5.0"
screenshot = "0.0.1-alpha08"
-kover = "0.8.3"
+kover = "0.9.0"
series = "0.0.19"
calf = "0.6.1"
-versionCode = "122"
-versionName = "1.2.2"
+versionCode = "123"
+versionName = "1.2.3"
@@ -140,7 +141,7 @@ androidx-work-testing = { group = "androidx.work", name = "work-testing", versio
coil-kt = { module = "io.coil-kt.coil3:coil", version.ref = "coil" }
coil-kt-compose = { module = "io.coil-kt.coil3:coil-compose", version.ref = "coil" }
coil-kt-svg = { module = "io.coil-kt.coil3:coil-svg", version.ref = "coil" }
-coil-kt-network = { module = "io.coil-kt.coil3:coil-network-okhttp", version.ref = "coil" }
+coil-kt-network = { module = "io.coil-kt.coil3:coil-network-ktor3", version.ref = "coil" }
firebase-analytics = { group = "com.google.firebase", name = "firebase-analytics-ktx" }
firebase-bom = { group = "com.google.firebase", name = "firebase-bom", version.ref = "firebaseBom" }
firebase-cloud-messaging = { group = "com.google.firebase", name = "firebase-messaging-ktx" }
@@ -153,6 +154,8 @@ kotlinx-coroutines-guava = { group = "org.jetbrains.kotlinx", name = "kotlinx-co
kotlinx-coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "kotlinxCoroutines" }
kotlinx-datetime = { group = "org.jetbrains.kotlinx", name = "kotlinx-datetime", version.ref = "kotlinxDatetime" }
kotlinx-serialization-json = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlinxSerializationJson" }
+kstore-storage = { module = "io.github.xxfast:kstore-storage", version.ref = "kstore" }
+kstore = { module = "io.github.xxfast:kstore", version.ref = "kstore" }
lint-api = { group = "com.android.tools.lint", name = "lint-api", version.ref = "androidTools" }
lint-checks = { group = "com.android.tools.lint", name = "lint-checks", version.ref = "androidTools" }
lint-tests = { group = "com.android.tools.lint", name = "lint-tests", version.ref = "androidTools" }
diff --git a/instuctions b/instuctions
index bd87d3e4..7891f55d 100644
--- a/instuctions
+++ b/instuctions
@@ -13,8 +13,8 @@
./gradlew wasmJsBrowserRun -t
./gradlew wasmJsBrowserDistribution
- export TOKEN=
- conveyor make rendered-icons
+export TOKEN="your_actual_token"
+ conveyor make rendered-icons
conveyor make site
./gradlew run
diff --git a/kotlin-js-store/yarn.lock b/kotlin-js-store/yarn.lock
new file mode 100644
index 00000000..590a6e52
--- /dev/null
+++ b/kotlin-js-store/yarn.lock
@@ -0,0 +1,2904 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@colors/colors@1.5.0":
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9"
+ integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==
+
+"@discoveryjs/json-ext@^0.5.0":
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70"
+ integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==
+
+"@jridgewell/gen-mapping@^0.3.5":
+ version "0.3.8"
+ resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142"
+ integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==
+ dependencies:
+ "@jridgewell/set-array" "^1.2.1"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+ "@jridgewell/trace-mapping" "^0.3.24"
+
+"@jridgewell/resolve-uri@^3.1.0":
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6"
+ integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==
+
+"@jridgewell/set-array@^1.2.1":
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280"
+ integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==
+
+"@jridgewell/source-map@^0.3.3":
+ version "0.3.6"
+ resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.6.tgz#9d71ca886e32502eb9362c9a74a46787c36df81a"
+ integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==
+ dependencies:
+ "@jridgewell/gen-mapping" "^0.3.5"
+ "@jridgewell/trace-mapping" "^0.3.25"
+
+"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14":
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a"
+ integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==
+
+"@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
+ version "0.3.25"
+ resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0"
+ integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==
+ dependencies:
+ "@jridgewell/resolve-uri" "^3.1.0"
+ "@jridgewell/sourcemap-codec" "^1.4.14"
+
+"@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==
+
+"@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==
+
+"@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.5"
+ resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4"
+ integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==
+ dependencies:
+ "@types/connect" "*"
+ "@types/node" "*"
+
+"@types/bonjour@^3.5.9":
+ 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.3.5":
+ 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/cookie@^0.4.1":
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d"
+ integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==
+
+"@types/cors@^2.8.12":
+ version "2.8.17"
+ resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.17.tgz#5d718a5e494a8166f569d986794e49c48b216b2b"
+ integrity sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==
+ dependencies:
+ "@types/node" "*"
+
+"@types/estree@^1.0.5":
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50"
+ integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==
+
+"@types/express-serve-static-core@*", "@types/express-serve-static-core@^5.0.0":
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.0.2.tgz#812d2871e5eea17fb0bd5214dda7a7b748c0e12a"
+ integrity sha512-vluaspfvWEtE4vcSDlKRNer52DvOGrB2xv6diXy6UKyKW0lqZiWHGNApSyxOv+8DE5Z27IzVvE7hNkxg7EXIcg==
+ dependencies:
+ "@types/node" "*"
+ "@types/qs" "*"
+ "@types/range-parser" "*"
+ "@types/send" "*"
+
+"@types/express-serve-static-core@^4.17.33":
+ version "4.19.6"
+ resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz#e01324c2a024ff367d92c66f48553ced0ab50267"
+ integrity sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==
+ dependencies:
+ "@types/node" "*"
+ "@types/qs" "*"
+ "@types/range-parser" "*"
+ "@types/send" "*"
+
+"@types/express@*":
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/@types/express/-/express-5.0.0.tgz#13a7d1f75295e90d19ed6e74cab3678488eaa96c"
+ integrity sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ==
+ dependencies:
+ "@types/body-parser" "*"
+ "@types/express-serve-static-core" "^5.0.0"
+ "@types/qs" "*"
+ "@types/serve-static" "*"
+
+"@types/express@^4.17.13":
+ version "4.17.21"
+ resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d"
+ integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==
+ dependencies:
+ "@types/body-parser" "*"
+ "@types/express-serve-static-core" "^4.17.33"
+ "@types/qs" "*"
+ "@types/serve-static" "*"
+
+"@types/http-errors@*":
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f"
+ integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==
+
+"@types/http-proxy@^1.17.8":
+ version "1.17.15"
+ resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.15.tgz#12118141ce9775a6499ecb4c01d02f90fc839d36"
+ integrity sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==
+ dependencies:
+ "@types/node" "*"
+
+"@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-forge@^1.3.0":
+ version "1.3.11"
+ resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.11.tgz#0972ea538ddb0f4d9c2fa0ec5db5724773a604da"
+ integrity sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==
+ dependencies:
+ "@types/node" "*"
+
+"@types/node@*", "@types/node@>=10.0.0":
+ version "22.10.2"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.2.tgz#a485426e6d1fdafc7b0d4c7b24e2c78182ddabb9"
+ integrity sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==
+ dependencies:
+ undici-types "~6.20.0"
+
+"@types/qs@*":
+ version "6.9.17"
+ resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.17.tgz#fc560f60946d0aeff2f914eb41679659d3310e1a"
+ integrity sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==
+
+"@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.0":
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d"
+ integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==
+
+"@types/send@*":
+ version "0.17.4"
+ resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a"
+ integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==
+ dependencies:
+ "@types/mime" "^1"
+ "@types/node" "*"
+
+"@types/serve-index@^1.9.1":
+ 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@*", "@types/serve-static@^1.13.10":
+ version "1.15.7"
+ resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714"
+ integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==
+ dependencies:
+ "@types/http-errors" "*"
+ "@types/node" "*"
+ "@types/send" "*"
+
+"@types/sockjs@^0.3.33":
+ 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.5":
+ version "8.5.13"
+ resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.13.tgz#6414c280875e2691d0d1e080b05addbf5cb91e20"
+ integrity sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==
+ dependencies:
+ "@types/node" "*"
+
+"@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.12.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.12.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.12.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@^2.1.1":
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz#3b2f852e91dac6e3b85fb2a314fb8bef46d94646"
+ integrity sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==
+
+"@webpack-cli/info@^2.0.2":
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.2.tgz#cc3fbf22efeb88ff62310cf885c5b09f44ae0fdd"
+ integrity sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==
+
+"@webpack-cli/serve@^2.0.5":
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e"
+ integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==
+
+"@xtuc/ieee754@^1.2.0":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
+ integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==
+
+"@xtuc/long@4.2.2":
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
+ integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
+
+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-attributes@^1.9.5:
+ version "1.9.5"
+ resolved "https://registry.yarnpkg.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz#7eb1557b1ba05ef18b5ed0ec67591bfab04688ef"
+ integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==
+
+acorn@^8.7.1, acorn@^8.8.2:
+ version "8.14.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0"
+ integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==
+
+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.12.6"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
+ integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
+
+ajv@^8.0.0, ajv@^8.9.0:
+ version "8.17.1"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6"
+ integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==
+ 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-colors@^4.1.3:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b"
+ integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==
+
+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-styles@^4.0.0, ansi-styles@^4.1.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
+ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
+ dependencies:
+ color-convert "^2.0.1"
+
+anymatch@~3.1.2:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
+ integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
+ dependencies:
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
+argparse@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
+ integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
+
+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==
+
+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==
+
+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.20.3, body-parser@^1.19.0:
+ version "1.20.3"
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6"
+ integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==
+ dependencies:
+ bytes "3.1.2"
+ content-type "~1.0.5"
+ debug "2.6.9"
+ depd "2.0.0"
+ destroy "1.2.0"
+ http-errors "2.0.0"
+ iconv-lite "0.4.24"
+ on-finished "2.4.1"
+ qs "6.13.0"
+ raw-body "2.5.2"
+ type-is "~1.6.18"
+ unpipe "1.0.0"
+
+bonjour-service@^1.0.11:
+ 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.11"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+brace-expansion@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
+ integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
+ dependencies:
+ balanced-match "^1.0.0"
+
+braces@^3.0.2, braces@^3.0.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.21.10:
+ version "4.24.2"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.2.tgz#f5845bc91069dbd55ee89faf9822e1d885d16580"
+ integrity sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==
+ dependencies:
+ caniuse-lite "^1.0.30001669"
+ electron-to-chromium "^1.5.41"
+ node-releases "^2.0.18"
+ update-browserslist-db "^1.1.1"
+
+buffer-from@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
+ integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
+
+bytes@3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
+ integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
+
+call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz#32e5892e6361b29b0b545ba6f7763378daca2840"
+ integrity sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==
+ dependencies:
+ es-errors "^1.3.0"
+ function-bind "^1.1.2"
+
+call-bind@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c"
+ integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==
+ dependencies:
+ call-bind-apply-helpers "^1.0.0"
+ es-define-property "^1.0.0"
+ get-intrinsic "^1.2.4"
+ set-function-length "^1.2.2"
+
+call-bound@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.2.tgz#9dbd4daf9f5f753bec3e4c8fbb8a2ecc4de6c39b"
+ integrity sha512-0lk0PHFe/uz0vl527fG9CgdE9WdafjDbCXvBbs+LUv000TVt2Jjhqbs4Jwm8gz070w8xXyEAxrPOMullsxXeGg==
+ dependencies:
+ call-bind "^1.0.8"
+ get-intrinsic "^1.2.5"
+
+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.30001669:
+ version "1.0.30001688"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001688.tgz#f9d3ede749f083ce0db4c13db9d828adaf2e8d0a"
+ integrity sha512-Nmqpru91cuABu/DTCXbM2NSRHzM2uVHfPnhJ/1zEAJx/ILBRVmz3pzH4N7DZqbdG0gWClsCC05Oj0mJ/1AWMbA==
+
+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.5.3:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b"
+ integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==
+ dependencies:
+ anymatch "~3.1.2"
+ braces "~3.0.2"
+ glob-parent "~5.1.2"
+ is-binary-path "~2.1.0"
+ is-glob "~4.0.1"
+ normalize-path "~3.0.0"
+ readdirp "~3.6.0"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+chrome-trace-event@^1.0.2:
+ version "1.0.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"
+
+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@^10.0.1:
+ version "10.0.1"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06"
+ integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==
+
+commander@^2.20.0:
+ version "2.20.3"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
+ integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+
+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.7.4:
+ version "1.7.5"
+ resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.5.tgz#fdd256c0a642e39e314c478f6c2cd654edd74c93"
+ integrity sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==
+ dependencies:
+ bytes "3.1.2"
+ compressible "~2.0.18"
+ debug "2.6.9"
+ negotiator "~0.6.4"
+ on-headers "~1.0.2"
+ 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.6"
+ resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
+ integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==
+
+cookie@0.7.1:
+ version "0.7.1"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.1.tgz#2f73c42142d5d5cf71310a74fc4ae61670e5dbc9"
+ integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==
+
+cookie@~0.7.2:
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7"
+ integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==
+
+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.5"
+ resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29"
+ integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==
+ dependencies:
+ object-assign "^4"
+ vary "^1"
+
+cross-spawn@^7.0.3:
+ version "7.0.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:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a"
+ integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==
+ dependencies:
+ ms "^2.1.3"
+
+debug@~4.3.1, debug@~4.3.2, debug@~4.3.4:
+ version "4.3.7"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52"
+ integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==
+ 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-gateway@^6.0.3:
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71"
+ integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==
+ dependencies:
+ execa "^5.0.0"
+
+define-data-property@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
+ integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
+ dependencies:
+ es-define-property "^1.0.0"
+ es-errors "^1.3.0"
+ gopd "^1.0.1"
+
+define-lazy-prop@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f"
+ integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==
+
+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:
+ 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@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531"
+ integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==
+
+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.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.0.tgz#c2fce098b3c8f8899554905f4377b6d85dabaa80"
+ integrity sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==
+ dependencies:
+ call-bind-apply-helpers "^1.0.0"
+ es-errors "^1.3.0"
+ gopd "^1.2.0"
+
+ee-first@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
+ integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
+
+electron-to-chromium@^1.5.41:
+ version "1.5.73"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.73.tgz#f32956ce40947fa3c8606726a96cd8fb5bb5f720"
+ integrity sha512-8wGNxG9tAG5KhGd3eeA0o6ixhiNdgr0DcHWm85XPCphwZgD1lIEoi6t3VERayWao7SF7AAZTw6oARGJeVjH8Kg==
+
+emoji-regex@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
+ integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
+
+encodeurl@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
+ integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
+
+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.2"
+ resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.6.2.tgz#32bd845b4db708f8c774a4edef4e5c8a98b3da72"
+ integrity sha512-gmNvsYi9C8iErnZdVcJnvCpSKbWTt1E8+JZo8b+daLninywUWi5NQ5STSHZ9rFjFO7imNcvb8Pc5pe/wMR5xEw==
+ dependencies:
+ "@types/cookie" "^0.4.1"
+ "@types/cors" "^2.8.12"
+ "@types/node" ">=10.0.0"
+ accepts "~1.3.4"
+ base64id "2.0.0"
+ cookie "~0.7.2"
+ cors "~2.8.5"
+ debug "~4.3.1"
+ engine.io-parser "~5.2.1"
+ ws "~8.17.1"
+
+enhanced-resolve@^5.17.1:
+ version "5.17.1"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz#67bfbbcc2f81d511be77d686a90267ef7f898a15"
+ integrity sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==
+ dependencies:
+ graceful-fs "^4.2.4"
+ tapable "^2.2.0"
+
+ent@~2.2.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.1.tgz#68dc99a002f115792c26239baedaaea9e70c0ca2"
+ integrity sha512-QHuXVeZx9d+tIQAz/XztU0ZwZf2Agg9CcXcgE1rurqvdBeDBrpSwjl8/6XUqMg7tw2Y7uAdKb2sRv+bSEFqQ5A==
+ dependencies:
+ punycode "^1.4.1"
+
+envinfo@^7.7.3:
+ version "7.14.0"
+ resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.14.0.tgz#26dac5db54418f2a4c1159153a0b2ae980838aae"
+ integrity sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==
+
+es-define-property@^1.0.0, 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.5.4"
+ resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.4.tgz#a8efec3a3da991e60efa6b633a7cad6ab8d26b78"
+ integrity sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==
+
+es-object-atoms@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941"
+ integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==
+ 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==
+
+execa@^5.0.0:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
+ integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==
+ dependencies:
+ cross-spawn "^7.0.3"
+ get-stream "^6.0.0"
+ human-signals "^2.1.0"
+ is-stream "^2.0.0"
+ merge-stream "^2.0.0"
+ npm-run-path "^4.0.1"
+ onetime "^5.1.2"
+ signal-exit "^3.0.3"
+ strip-final-newline "^2.0.0"
+
+express@^4.17.3:
+ version "4.21.2"
+ resolved "https://registry.yarnpkg.com/express/-/express-4.21.2.tgz#cf250e48362174ead6cea4a566abef0162c1ec32"
+ integrity sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==
+ 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.13.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-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.0.3"
+ resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.3.tgz#892a1c91802d5d7860de728f18608a0573142241"
+ integrity sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==
+
+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==
+
+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.1"
+ resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019"
+ integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==
+ 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.1"
+ 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.3.2"
+ resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.2.tgz#adba1448a9841bec72b42c532ea23dbbedef1a27"
+ integrity sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==
+
+follow-redirects@^1.0.0:
+ version "1.15.9"
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1"
+ integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==
+
+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-monkey@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.6.tgz#8ead082953e88d992cf3ff844faa907b26756da2"
+ integrity sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==
+
+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.4, get-intrinsic@^1.2.5:
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.6.tgz#43dd3dd0e7b49b82b2dfcad10dc824bf7fc265d5"
+ integrity sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==
+ dependencies:
+ call-bind-apply-helpers "^1.0.1"
+ dunder-proto "^1.0.0"
+ es-define-property "^1.0.1"
+ es-errors "^1.3.0"
+ es-object-atoms "^1.0.0"
+ function-bind "^1.1.2"
+ gopd "^1.2.0"
+ has-symbols "^1.1.0"
+ hasown "^2.0.2"
+ math-intrinsics "^1.0.0"
+
+get-stream@^6.0.0:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
+ integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
+
+glob-parent@~5.1.2:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+ dependencies:
+ is-glob "^4.0.1"
+
+glob-to-regexp@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
+ integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
+
+glob@^7.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"
+
+glob@^8.1.0:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e"
+ integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^5.0.1"
+ once "^1.3.0"
+
+gopd@^1.0.1, 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-property-descriptors@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854"
+ integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
+ dependencies:
+ es-define-property "^1.0.0"
+
+has-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==
+
+hasown@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
+ integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
+ dependencies:
+ function-bind "^1.1.2"
+
+he@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
+ integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
+
+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"
+
+html-entities@^2.3.2:
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.5.2.tgz#201a3cf95d3a15be7099521620d19dfb4f65359f"
+ integrity sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==
+
+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@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
+ integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
+ dependencies:
+ depd "2.0.0"
+ inherits "2.0.4"
+ setprototypeof "1.2.0"
+ statuses "2.0.1"
+ toidentifier "1.0.1"
+
+http-errors@~1.6.2:
+ version "1.6.3"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
+ integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==
+ dependencies:
+ depd "~1.1.2"
+ inherits "2.0.3"
+ setprototypeof "1.1.0"
+ statuses ">= 1.4.0 < 2"
+
+http-parser-js@>=0.5.1:
+ version "0.5.8"
+ resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3"
+ integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==
+
+http-proxy-middleware@^2.0.3:
+ version "2.0.7"
+ resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz#915f236d92ae98ef48278a95dedf17e991936ec6"
+ integrity sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==
+ 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"
+
+human-signals@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
+ integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
+
+iconv-lite@0.4.24:
+ version "0.4.24"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
+ integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3"
+
+iconv-lite@^0.6.3:
+ version "0.6.3"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
+ integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3.0.0"
+
+import-local@^3.0.2:
+ version "3.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:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+inherits@2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+ integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==
+
+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.0.1:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8"
+ integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==
+
+is-binary-path@~2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
+ integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
+ dependencies:
+ binary-extensions "^2.0.0"
+
+is-core-module@^2.13.0:
+ version "2.15.1"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37"
+ integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==
+ dependencies:
+ hasown "^2.0.2"
+
+is-docker@^2.0.0, is-docker@^2.1.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
+ integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
+
+is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
+
+is-fullwidth-code-point@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
+ integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
+
+is-glob@^4.0.1, is-glob@~4.0.1:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
+ integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-plain-obj@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287"
+ integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==
+
+is-plain-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-stream@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
+ integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
+
+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@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
+ integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
+ dependencies:
+ is-docker "^2.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==
+
+jest-worker@^27.4.5:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0"
+ integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==
+ dependencies:
+ "@types/node" "*"
+ merge-stream "^2.0.0"
+ supports-color "^8.0.0"
+
+js-yaml@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
+ integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
+ dependencies:
+ argparse "^2.0.1"
+
+json-parse-even-better-errors@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
+ integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
+
+json-schema-traverse@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+
+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@6.4.4:
+ version "6.4.4"
+ resolved "https://registry.yarnpkg.com/karma/-/karma-6.4.4.tgz#dfa5a426cf5a8b53b43cd54ef0d0d09742351492"
+ integrity sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==
+ 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@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/kotlin-web-helpers/-/kotlin-web-helpers-2.0.0.tgz#b112096b273c1e733e0b86560998235c09a19286"
+ integrity sha512-xkVGl60Ygn/zuLkDPx+oHj7jeLR7hCvoNF99nhwXMn8a3ApB4lLiC9pk4ol4NHPjyoCbvQctBqvzUcp8pkqyWw==
+ dependencies:
+ format-util "^1.0.5"
+
+launch-editor@^2.6.0:
+ version "2.9.1"
+ resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.9.1.tgz#253f173bd441e342d4344b4dae58291abb425047"
+ integrity sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==
+ dependencies:
+ picocolors "^1.0.0"
+ shell-quote "^1.8.1"
+
+loader-runner@^4.2.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1"
+ integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==
+
+locate-path@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
+ integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
+ dependencies:
+ p-locate "^4.1.0"
+
+locate-path@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
+ integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
+ dependencies:
+ p-locate "^5.0.0"
+
+lodash@^4.17.15, lodash@^4.17.21:
+ version "4.17.21"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
+ integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+
+log-symbols@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503"
+ integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==
+ dependencies:
+ chalk "^4.1.0"
+ is-unicode-supported "^0.1.0"
+
+log4js@^6.4.1:
+ version "6.9.1"
+ resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.9.1.tgz#aba5a3ff4e7872ae34f8b4c533706753709e38b6"
+ integrity sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==
+ dependencies:
+ date-format "^4.0.14"
+ debug "^4.3.4"
+ flatted "^3.2.7"
+ rfdc "^1.3.0"
+ streamroller "^3.1.5"
+
+math-intrinsics@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.0.0.tgz#4e04bf87c85aa51e90d078dac2252b4eb5260817"
+ integrity sha512-4MqMiKP90ybymYvsut0CH2g4XWbfLtmlCkXmtmdcDCxNB+mQcu1w/1+L/VD7vi/PSv7X2JYV7SCcR+jiPXnQtA==
+
+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@^3.4.3:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6"
+ integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ==
+ dependencies:
+ fs-monkey "^1.0.4"
+
+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==
+
+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:
+ 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":
+ version "1.53.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.53.0.tgz#3cb63cd820fc29896d9d4e8c32ab4fcd74ccb447"
+ integrity sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==
+
+mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34:
+ version "2.1.35"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
+ integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
+ dependencies:
+ mime-db "1.52.0"
+
+mime@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==
+
+mimic-fn@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
+ integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+
+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.2"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
+ integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimatch@^5.0.1, minimatch@^5.1.6:
+ version "5.1.6"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96"
+ integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==
+ dependencies:
+ brace-expansion "^2.0.1"
+
+minimatch@^9.0.3:
+ version "9.0.5"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
+ integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
+ dependencies:
+ brace-expansion "^2.0.1"
+
+minimist@^1.2.3, minimist@^1.2.6:
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
+ integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
+
+mkdirp@^0.5.5:
+ version "0.5.6"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
+ integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
+ dependencies:
+ minimist "^1.2.6"
+
+mocha@10.7.3:
+ version "10.7.3"
+ resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.7.3.tgz#ae32003cabbd52b59aece17846056a68eb4b0752"
+ integrity sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==
+ dependencies:
+ ansi-colors "^4.1.3"
+ browser-stdout "^1.3.1"
+ chokidar "^3.5.3"
+ debug "^4.3.5"
+ diff "^5.2.0"
+ escape-string-regexp "^4.0.0"
+ find-up "^5.0.0"
+ glob "^8.1.0"
+ he "^1.2.0"
+ js-yaml "^4.1.0"
+ log-symbols "^4.1.0"
+ minimatch "^5.1.6"
+ ms "^2.1.3"
+ serialize-javascript "^6.0.2"
+ strip-json-comments "^3.1.1"
+ supports-color "^8.1.1"
+ workerpool "^6.5.1"
+ yargs "^16.2.0"
+ yargs-parser "^20.2.9"
+ 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-forge@^1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3"
+ integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==
+
+node-releases@^2.0.18:
+ version "2.0.19"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314"
+ integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==
+
+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==
+
+npm-run-path@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
+ integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
+ dependencies:
+ path-key "^3.0.0"
+
+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:
+ version "1.13.3"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.3.tgz#f14c183de51130243d6d18ae149375ff50ea488a"
+ integrity sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==
+
+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:
+ 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.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
+ integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
+
+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"
+
+onetime@^5.1.2:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
+ integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
+ dependencies:
+ mimic-fn "^2.1.0"
+
+open@^8.0.9:
+ version "8.4.2"
+ resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9"
+ integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==
+ dependencies:
+ define-lazy-prop "^2.0.0"
+ is-docker "^2.1.1"
+ is-wsl "^2.2.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@^4.5.0:
+ version "4.6.2"
+ resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16"
+ integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==
+ dependencies:
+ "@types/retry" "0.12.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==
+
+parseurl@~1.3.2, 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.0.0, 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-to-regexp@0.1.12:
+ version "0.1.12"
+ resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.12.tgz#d5e1a12e478a976d432ef3c58d534b9923164bb7"
+ integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==
+
+picocolors@^1.0.0, picocolors@^1.1.0:
+ 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.1"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
+ integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+
+pkg-dir@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
+ integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
+ dependencies:
+ find-up "^4.0.0"
+
+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==
+
+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.13.0:
+ version "6.13.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906"
+ integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==
+ dependencies:
+ side-channel "^1.0.6"
+
+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.2:
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a"
+ integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==
+ dependencies:
+ bytes "3.1.2"
+ http-errors "2.0.0"
+ iconv-lite "0.4.24"
+ unpipe "1.0.0"
+
+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@~3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
+ integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
+ dependencies:
+ picomatch "^2.2.1"
+
+rechoir@^0.8.0:
+ version "0.8.0"
+ resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22"
+ integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==
+ dependencies:
+ resolve "^1.20.0"
+
+require-directory@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
+ integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
+
+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.8"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d"
+ integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
+ dependencies:
+ is-core-module "^2.13.0"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
+
+retry@^0.13.1:
+ version "0.13.1"
+ resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658"
+ integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==
+
+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"
+
+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==
+
+"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+ integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
+
+schema-utils@^3.1.1, schema-utils@^3.2.0:
+ 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:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.3.0.tgz#3b669f04f71ff2dfb5aba7ce2d5a9d79b35622c0"
+ integrity sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==
+ 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@^2.1.1:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0"
+ integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==
+ dependencies:
+ "@types/node-forge" "^1.3.0"
+ node-forge "^1"
+
+send@0.19.0:
+ version "0.19.0"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8"
+ integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==
+ dependencies:
+ debug "2.6.9"
+ depd "2.0.0"
+ destroy "1.2.0"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ fresh "0.5.2"
+ http-errors "2.0.0"
+ mime "1.6.0"
+ ms "2.1.3"
+ on-finished "2.4.1"
+ range-parser "~1.2.1"
+ statuses "2.0.1"
+
+serialize-javascript@^6.0.1, 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.1"
+ resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"
+ integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==
+ dependencies:
+ accepts "~1.3.4"
+ batch "0.6.1"
+ debug "2.6.9"
+ escape-html "~1.0.3"
+ http-errors "~1.6.2"
+ mime-types "~2.1.17"
+ parseurl "~1.3.2"
+
+serve-static@1.16.2:
+ version "1.16.2"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296"
+ integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==
+ dependencies:
+ encodeurl "~2.0.0"
+ escape-html "~1.0.3"
+ parseurl "~1.3.3"
+ send "0.19.0"
+
+set-function-length@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449"
+ integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==
+ dependencies:
+ define-data-property "^1.1.4"
+ es-errors "^1.3.0"
+ function-bind "^1.1.2"
+ get-intrinsic "^1.2.4"
+ gopd "^1.0.1"
+ has-property-descriptors "^1.0.2"
+
+setprototypeof@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
+ integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
+
+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.1:
+ version "1.8.2"
+ resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.2.tgz#d2d83e057959d53ec261311e9e9b8f51dcb2934a"
+ integrity sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==
+
+side-channel-list@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad"
+ integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==
+ dependencies:
+ es-errors "^1.3.0"
+ object-inspect "^1.13.3"
+
+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.0.6:
+ 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@^3.0.3:
+ version "3.0.7"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
+ integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
+
+socket.io-adapter@~2.5.2:
+ version "2.5.5"
+ resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz#c7a1f9c703d7756844751b6ff9abfc1780664082"
+ integrity sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==
+ dependencies:
+ debug "~4.3.4"
+ ws "~8.17.1"
+
+socket.io-parser@~4.2.4:
+ version "4.2.4"
+ resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.4.tgz#c806966cf7270601e47469ddeec30fbdfda44c83"
+ integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==
+ dependencies:
+ "@socket.io/component-emitter" "~3.1.0"
+ debug "~4.3.1"
+
+socket.io@^4.7.2:
+ version "4.8.1"
+ resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.8.1.tgz#fa0eaff965cc97fdf4245e8d4794618459f7558a"
+ integrity sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==
+ dependencies:
+ accepts "~1.3.4"
+ base64id "~2.0.0"
+ cors "~2.8.5"
+ debug "~4.3.2"
+ 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"
+
+statuses@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
+ integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
+
+"statuses@>= 1.4.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==
+
+streamroller@^3.1.5:
+ version "3.1.5"
+ resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-3.1.5.tgz#1263182329a45def1ffaef58d31b15d13d2ee7ff"
+ integrity sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==
+ dependencies:
+ date-format "^4.0.14"
+ debug "^4.3.4"
+ fs-extra "^8.1.0"
+
+string-width@^4.1.0, string-width@^4.2.0:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
+ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.1"
+
+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@^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-final-newline@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
+ integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
+
+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.2.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
+ integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
+
+terser-webpack-plugin@^5.3.10:
+ version "5.3.10"
+ resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199"
+ integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==
+ dependencies:
+ "@jridgewell/trace-mapping" "^0.3.20"
+ jest-worker "^27.4.5"
+ schema-utils "^3.1.1"
+ serialize-javascript "^6.0.1"
+ terser "^5.26.0"
+
+terser@^5.26.0:
+ version "5.37.0"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-5.37.0.tgz#38aa66d1cfc43d0638fab54e43ff8a4f72a21ba3"
+ integrity sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==
+ dependencies:
+ "@jridgewell/source-map" "^0.3.3"
+ acorn "^8.8.2"
+ commander "^2.20.0"
+ source-map-support "~0.5.20"
+
+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.3"
+ resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae"
+ integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==
+
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
+toidentifier@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
+ integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
+
+type-is@~1.6.18:
+ version "1.6.18"
+ resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
+ integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
+ dependencies:
+ media-typer "0.3.0"
+ mime-types "~2.1.24"
+
+typescript@5.5.4:
+ version "5.5.4"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba"
+ integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==
+
+ua-parser-js@^0.7.30:
+ version "0.7.39"
+ resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.39.tgz#c71efb46ebeabc461c4612d22d54f88880fabe7e"
+ integrity sha512-IZ6acm6RhQHNibSt7+c09hhvsKy9WUr4DVbeq9U8o71qxyYtJpQeDxQnMrVqnIFMLcQjHO0I9wgfO2vIahht4w==
+
+undici-types@~6.20.0:
+ version "6.20.0"
+ resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433"
+ integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==
+
+universalify@^0.1.0:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
+ integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
+
+unpipe@1.0.0, unpipe@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
+ integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
+
+update-browserslist-db@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5"
+ integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==
+ dependencies:
+ escalade "^3.2.0"
+ picocolors "^1.1.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"
+
+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.4.2"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.2.tgz#2feeaed67412e7c33184e5a79ca738fbd38564da"
+ integrity sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==
+ 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@5.1.4:
+ version "5.1.4"
+ resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.4.tgz#c8e046ba7eaae4911d7e71e2b25b776fcc35759b"
+ integrity sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==
+ dependencies:
+ "@discoveryjs/json-ext" "^0.5.0"
+ "@webpack-cli/configtest" "^2.1.1"
+ "@webpack-cli/info" "^2.0.2"
+ "@webpack-cli/serve" "^2.0.5"
+ colorette "^2.0.14"
+ commander "^10.0.1"
+ cross-spawn "^7.0.3"
+ envinfo "^7.7.3"
+ fastest-levenshtein "^1.0.12"
+ import-local "^3.0.2"
+ interpret "^3.1.1"
+ rechoir "^0.8.0"
+ webpack-merge "^5.7.3"
+
+webpack-dev-middleware@^5.3.4:
+ version "5.3.4"
+ resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz#eb7b39281cbce10e104eb2b8bf2b63fce49a3517"
+ integrity sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==
+ dependencies:
+ colorette "^2.0.10"
+ memfs "^3.4.3"
+ mime-types "^2.1.31"
+ range-parser "^1.2.1"
+ schema-utils "^4.0.0"
+
+webpack-dev-server@4.15.2:
+ version "4.15.2"
+ resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz#9e0c70a42a012560860adb186986da1248333173"
+ integrity sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==
+ dependencies:
+ "@types/bonjour" "^3.5.9"
+ "@types/connect-history-api-fallback" "^1.3.5"
+ "@types/express" "^4.17.13"
+ "@types/serve-index" "^1.9.1"
+ "@types/serve-static" "^1.13.10"
+ "@types/sockjs" "^0.3.33"
+ "@types/ws" "^8.5.5"
+ ansi-html-community "^0.0.8"
+ bonjour-service "^1.0.11"
+ chokidar "^3.5.3"
+ colorette "^2.0.10"
+ compression "^1.7.4"
+ connect-history-api-fallback "^2.0.0"
+ default-gateway "^6.0.3"
+ express "^4.17.3"
+ graceful-fs "^4.2.6"
+ html-entities "^2.3.2"
+ http-proxy-middleware "^2.0.3"
+ ipaddr.js "^2.0.1"
+ launch-editor "^2.6.0"
+ open "^8.0.9"
+ p-retry "^4.5.0"
+ rimraf "^3.0.2"
+ schema-utils "^4.0.0"
+ selfsigned "^2.1.1"
+ serve-index "^1.9.1"
+ sockjs "^0.3.24"
+ spdy "^4.0.2"
+ webpack-dev-middleware "^5.3.4"
+ ws "^8.13.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@^5.7.3:
+ version "5.10.0"
+ resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177"
+ integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==
+ dependencies:
+ clone-deep "^4.0.1"
+ flat "^5.0.2"
+ wildcard "^2.0.0"
+
+webpack-sources@^3.2.3:
+ version "3.2.3"
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
+ integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
+
+webpack@5.94.0:
+ version "5.94.0"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.94.0.tgz#77a6089c716e7ab90c1c67574a28da518a20970f"
+ integrity sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==
+ dependencies:
+ "@types/estree" "^1.0.5"
+ "@webassemblyjs/ast" "^1.12.1"
+ "@webassemblyjs/wasm-edit" "^1.12.1"
+ "@webassemblyjs/wasm-parser" "^1.12.1"
+ acorn "^8.7.1"
+ acorn-import-attributes "^1.9.5"
+ browserslist "^4.21.10"
+ chrome-trace-event "^1.0.2"
+ enhanced-resolve "^5.17.1"
+ 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 "^3.2.0"
+ tapable "^2.1.1"
+ terser-webpack-plugin "^5.3.10"
+ watchpack "^2.4.1"
+ webpack-sources "^3.2.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.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67"
+ integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==
+
+workerpool@^6.5.1:
+ version "6.5.1"
+ resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544"
+ integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==
+
+wrap-ansi@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
+ integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
+
+ws@8.5.0:
+ version "8.5.0"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f"
+ integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==
+
+ws@^8.13.0:
+ version "8.18.0"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc"
+ integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==
+
+ws@~8.17.1:
+ version "8.17.1"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b"
+ integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==
+
+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, yargs-parser@^20.2.9:
+ version "20.2.9"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
+ integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
+
+yargs-unparser@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb"
+ integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==
+ dependencies:
+ camelcase "^6.0.0"
+ decamelize "^4.0.0"
+ flat "^5.0.2"
+ is-plain-obj "^2.1.0"
+
+yargs@^16.1.1, yargs@^16.2.0:
+ version "16.2.0"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
+ integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
+ dependencies:
+ cliui "^7.0.2"
+ escalade "^3.1.1"
+ get-caller-file "^2.0.5"
+ require-directory "^2.1.1"
+ string-width "^4.2.0"
+ y18n "^5.0.5"
+ yargs-parser "^20.2.2"
+
+yocto-queue@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
+ integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
diff --git a/modules/analytics/src/wasmJsMain/kotlin/com/mshdabiola/analytics/di/AnalyticModule.wasmJs.kt b/modules/analytics/src/wasmJsMain/kotlin/com/mshdabiola/analytics/di/AnalyticModule.wasmJs.kt
new file mode 100644
index 00000000..b8ac79fc
--- /dev/null
+++ b/modules/analytics/src/wasmJsMain/kotlin/com/mshdabiola/analytics/di/AnalyticModule.wasmJs.kt
@@ -0,0 +1,18 @@
+package com.mshdabiola.analytics.di
+
+import com.mshdabiola.analytics.AnalyticsEvent
+import com.mshdabiola.analytics.AnalyticsHelper
+import org.koin.core.module.Module
+import org.koin.dsl.bind
+import org.koin.dsl.module
+
+actual val analyticsModule: Module
+ get() = module {
+
+ single {
+ object : AnalyticsHelper {
+ override fun logEvent(event: AnalyticsEvent) {
+ }
+ }
+ } bind AnalyticsHelper::class
+ }
diff --git a/modules/data/build.gradle.kts b/modules/data/build.gradle.kts
index b4df7692..11cc94cb 100644
--- a/modules/data/build.gradle.kts
+++ b/modules/data/build.gradle.kts
@@ -21,7 +21,7 @@ kotlin {
api(project(":modules:datastore"))
api(project(":modules:network"))
implementation(libs.kotlinx.coroutines.core)
- implementation(libs.paging.common)
+ // implementation(libs.paging.common)
}
}
diff --git a/modules/data/src/commonMain/kotlin/com/mshdabiola/data/di/DataModule.kt b/modules/data/src/commonMain/kotlin/com/mshdabiola/data/di/DataModule.kt
index f412dedf..06db0c84 100644
--- a/modules/data/src/commonMain/kotlin/com/mshdabiola/data/di/DataModule.kt
+++ b/modules/data/src/commonMain/kotlin/com/mshdabiola/data/di/DataModule.kt
@@ -2,24 +2,27 @@ package com.mshdabiola.data.di
import com.mshdabiola.analytics.di.analyticsModule
import com.mshdabiola.data.repository.INetworkRepository
-import com.mshdabiola.data.repository.NoteRepository
import com.mshdabiola.data.repository.OfflineFirstUserDataRepository
import com.mshdabiola.data.repository.RealINetworkRepository
-import com.mshdabiola.data.repository.RealModelRepository
import com.mshdabiola.data.repository.UserDataRepository
-import com.mshdabiola.database.di.databaseModule
import com.mshdabiola.datastore.di.datastoreModule
import com.mshdabiola.network.di.networkModule
-import kotlinx.coroutines.CoroutineDispatcher
-import kotlinx.coroutines.Dispatchers
+import org.koin.core.module.Module
import org.koin.core.module.dsl.singleOf
import org.koin.dsl.bind
import org.koin.dsl.module
-val dataModule = module {
- includes(datastoreModule, databaseModule, networkModule, analyticsModule)
- single { Dispatchers.IO } bind CoroutineDispatcher::class
+expect val dataModule: Module
+// module {
+// includes(datastoreModule, databaseModule, networkModule, analyticsModule)
+// single { Dispatchers.IO } bind CoroutineDispatcher::class
+// singleOf(::RealINetworkRepository) bind INetworkRepository::class
+// singleOf(::RealModelRepository) bind NoteRepository::class
+// singleOf(::OfflineFirstUserDataRepository) bind UserDataRepository::class
+// }
+
+val commonModule = module {
+ includes(datastoreModule, networkModule, analyticsModule)
singleOf(::RealINetworkRepository) bind INetworkRepository::class
- singleOf(::RealModelRepository) bind NoteRepository::class
singleOf(::OfflineFirstUserDataRepository) bind UserDataRepository::class
}
diff --git a/modules/data/src/nonJsMain/kotlin/com/mshdabiola/data/di/DataModule.nonJs.kt b/modules/data/src/nonJsMain/kotlin/com/mshdabiola/data/di/DataModule.nonJs.kt
new file mode 100644
index 00000000..1001cf90
--- /dev/null
+++ b/modules/data/src/nonJsMain/kotlin/com/mshdabiola/data/di/DataModule.nonJs.kt
@@ -0,0 +1,18 @@
+package com.mshdabiola.data.di
+
+import com.mshdabiola.data.repository.NoteRepository
+import com.mshdabiola.data.repository.RealModelRepository
+import com.mshdabiola.database.di.databaseModule
+import kotlinx.coroutines.CoroutineDispatcher
+import kotlinx.coroutines.Dispatchers
+import org.koin.core.module.Module
+import org.koin.core.module.dsl.singleOf
+import org.koin.dsl.bind
+import org.koin.dsl.module
+
+actual val dataModule: Module
+ get() = module {
+ includes(commonModule, databaseModule)
+ single { Dispatchers.IO } bind CoroutineDispatcher::class
+ singleOf(::RealModelRepository) bind NoteRepository::class
+ }
diff --git a/modules/data/src/commonMain/kotlin/com/mshdabiola/data/model/NoteEx.kt b/modules/data/src/nonJsMain/kotlin/com/mshdabiola/data/model/NoteEx.kt
similarity index 100%
rename from modules/data/src/commonMain/kotlin/com/mshdabiola/data/model/NoteEx.kt
rename to modules/data/src/nonJsMain/kotlin/com/mshdabiola/data/model/NoteEx.kt
diff --git a/modules/data/src/commonMain/kotlin/com/mshdabiola/data/repository/RealModelRepository.kt b/modules/data/src/nonJsMain/kotlin/com/mshdabiola/data/repository/RealModelRepository.kt
similarity index 100%
rename from modules/data/src/commonMain/kotlin/com/mshdabiola/data/repository/RealModelRepository.kt
rename to modules/data/src/nonJsMain/kotlin/com/mshdabiola/data/repository/RealModelRepository.kt
diff --git a/modules/data/src/wasmJsMain/kotlin/com/mshdabiola/data/di/DataModule.wasmJs.kt b/modules/data/src/wasmJsMain/kotlin/com/mshdabiola/data/di/DataModule.wasmJs.kt
new file mode 100644
index 00000000..ba8cbe50
--- /dev/null
+++ b/modules/data/src/wasmJsMain/kotlin/com/mshdabiola/data/di/DataModule.wasmJs.kt
@@ -0,0 +1,17 @@
+package com.mshdabiola.data.di
+
+import com.mshdabiola.data.repository.NoteRepository
+import com.mshdabiola.data.repository.RealModelRepository
+import kotlinx.coroutines.CoroutineDispatcher
+import kotlinx.coroutines.Dispatchers
+import org.koin.core.module.Module
+import org.koin.core.module.dsl.singleOf
+import org.koin.dsl.bind
+import org.koin.dsl.module
+
+actual val dataModule: Module
+ get() = module {
+ includes(commonModule)
+ single { Dispatchers.Default } bind CoroutineDispatcher::class
+ singleOf(::RealModelRepository) bind NoteRepository::class
+ }
diff --git a/modules/data/src/wasmJsMain/kotlin/com/mshdabiola/data/repository/RealModelRepository.kt b/modules/data/src/wasmJsMain/kotlin/com/mshdabiola/data/repository/RealModelRepository.kt
new file mode 100644
index 00000000..9b277a96
--- /dev/null
+++ b/modules/data/src/wasmJsMain/kotlin/com/mshdabiola/data/repository/RealModelRepository.kt
@@ -0,0 +1,54 @@
+package com.mshdabiola.data.repository
+
+import com.mshdabiola.model.Note
+import kotlinx.coroutines.CoroutineDispatcher
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.flowOn
+import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.flow.update
+import kotlinx.coroutines.flow.updateAndGet
+import kotlinx.coroutines.withContext
+
+internal class RealModelRepository(
+ private val ioDispatcher: CoroutineDispatcher,
+) : NoteRepository {
+ private val notes = MutableStateFlow(listOf())
+ override suspend fun upsert(note: Note): Long {
+ return withContext(ioDispatcher) {
+ var id = note.id
+ val notesMutable = notes.value.toMutableList()
+ if (id == -1L) {
+ id = notes.value.maxByOrNull { it.id }?.id?.plus(1) ?: 1
+ notesMutable.add(note.copy(id = id))
+ } else {
+ notesMutable.removeAll { it.id == id }
+ notesMutable.add(note.copy(id = id))
+ id = note.id
+ }
+
+ notes.update { notesMutable }
+
+ return@withContext id
+ }
+ }
+
+ override fun getAll(): Flow> {
+ return notes
+ }
+
+ override fun getOne(id: Long): Flow {
+ return notes
+ .map { notes1 -> notes1.first { it.id == id } }
+ .flowOn(ioDispatcher)
+ }
+
+ override suspend fun delete(id: Long) {
+ withContext(ioDispatcher) {
+ notes.updateAndGet { notes1 ->
+
+ notes1.toMutableList().apply { removeAll { it.id == id } }
+ }
+ }
+ }
+}
diff --git a/modules/database/build.gradle.kts b/modules/database/build.gradle.kts
index db093a6c..bfccb1ae 100644
--- a/modules/database/build.gradle.kts
+++ b/modules/database/build.gradle.kts
@@ -1,3 +1,4 @@
+import com.mshdabiola.app.libs
plugins {
id("mshdabiola.android.library")
@@ -11,7 +12,6 @@ android {
room {
schemaDirectory("$projectDir/schemas")
}
-
configurations.commonMainApi {
exclude(group = "org.jetbrains.kotlinx", module = "kotlinx-coroutines-android")
}
\ No newline at end of file
diff --git a/modules/database/src/commonMain/kotlin/com/mshdabiola/database/DatabaseMigrations.kt b/modules/database/src/nonJsMain/kotlin/com/mshdabiola/database/DatabaseMigrations.kt
similarity index 100%
rename from modules/database/src/commonMain/kotlin/com/mshdabiola/database/DatabaseMigrations.kt
rename to modules/database/src/nonJsMain/kotlin/com/mshdabiola/database/DatabaseMigrations.kt
diff --git a/modules/database/src/commonMain/kotlin/com/mshdabiola/database/DatabaseModule.kt b/modules/database/src/nonJsMain/kotlin/com/mshdabiola/database/DatabaseModule.kt
similarity index 100%
rename from modules/database/src/commonMain/kotlin/com/mshdabiola/database/DatabaseModule.kt
rename to modules/database/src/nonJsMain/kotlin/com/mshdabiola/database/DatabaseModule.kt
diff --git a/modules/database/src/commonMain/kotlin/com/mshdabiola/database/SkeletonDatabase.kt b/modules/database/src/nonJsMain/kotlin/com/mshdabiola/database/SkeletonDatabase.kt
similarity index 100%
rename from modules/database/src/commonMain/kotlin/com/mshdabiola/database/SkeletonDatabase.kt
rename to modules/database/src/nonJsMain/kotlin/com/mshdabiola/database/SkeletonDatabase.kt
diff --git a/modules/database/src/commonMain/kotlin/com/mshdabiola/database/dao/ImageDao.kt b/modules/database/src/nonJsMain/kotlin/com/mshdabiola/database/dao/ImageDao.kt
similarity index 100%
rename from modules/database/src/commonMain/kotlin/com/mshdabiola/database/dao/ImageDao.kt
rename to modules/database/src/nonJsMain/kotlin/com/mshdabiola/database/dao/ImageDao.kt
diff --git a/modules/database/src/commonMain/kotlin/com/mshdabiola/database/dao/NoteDao.kt b/modules/database/src/nonJsMain/kotlin/com/mshdabiola/database/dao/NoteDao.kt
similarity index 100%
rename from modules/database/src/commonMain/kotlin/com/mshdabiola/database/dao/NoteDao.kt
rename to modules/database/src/nonJsMain/kotlin/com/mshdabiola/database/dao/NoteDao.kt
diff --git a/modules/database/src/commonMain/kotlin/com/mshdabiola/database/di/Platform.kt b/modules/database/src/nonJsMain/kotlin/com/mshdabiola/database/di/Platform.kt
similarity index 100%
rename from modules/database/src/commonMain/kotlin/com/mshdabiola/database/di/Platform.kt
rename to modules/database/src/nonJsMain/kotlin/com/mshdabiola/database/di/Platform.kt
diff --git a/modules/database/src/commonMain/kotlin/com/mshdabiola/database/model/ImageEntity.kt b/modules/database/src/nonJsMain/kotlin/com/mshdabiola/database/model/ImageEntity.kt
similarity index 100%
rename from modules/database/src/commonMain/kotlin/com/mshdabiola/database/model/ImageEntity.kt
rename to modules/database/src/nonJsMain/kotlin/com/mshdabiola/database/model/ImageEntity.kt
diff --git a/modules/database/src/commonMain/kotlin/com/mshdabiola/database/model/NoteEntity.kt b/modules/database/src/nonJsMain/kotlin/com/mshdabiola/database/model/NoteEntity.kt
similarity index 100%
rename from modules/database/src/commonMain/kotlin/com/mshdabiola/database/model/NoteEntity.kt
rename to modules/database/src/nonJsMain/kotlin/com/mshdabiola/database/model/NoteEntity.kt
diff --git a/modules/database/src/commonMain/kotlin/com/mshdabiola/database/util/Constant.kt b/modules/database/src/nonJsMain/kotlin/com/mshdabiola/database/util/Constant.kt
similarity index 100%
rename from modules/database/src/commonMain/kotlin/com/mshdabiola/database/util/Constant.kt
rename to modules/database/src/nonJsMain/kotlin/com/mshdabiola/database/util/Constant.kt
diff --git a/modules/datastore/build.gradle.kts b/modules/datastore/build.gradle.kts
index 2614c6d5..744e94b0 100644
--- a/modules/datastore/build.gradle.kts
+++ b/modules/datastore/build.gradle.kts
@@ -19,9 +19,22 @@ kotlin {
implementation(libs.kotlinx.serialization.json)
implementation(libs.kotlinx.coroutines.core)
+
+
+ }
+ }
+ wasmJsMain.dependencies{
+ api(libs.kstore.storage)
+ api(libs.kstore)
+ api("org.jetbrains.kotlinx:kotlinx-browser:0.3")
+
+
+
+ }
+ val nonJsMain by getting {
+ dependencies {
api(libs.androidx.dataStore.core)
api(libs.androidx.datastore.core.okio)
-
}
}
}
diff --git a/modules/datastore/src/commonMain/kotlin/com/mshdabiola/datastore/JsonSerializer.kt b/modules/datastore/src/nonJsMain/kotlin/com/mshdabiola/datastore/JsonSerializer.kt
similarity index 100%
rename from modules/datastore/src/commonMain/kotlin/com/mshdabiola/datastore/JsonSerializer.kt
rename to modules/datastore/src/nonJsMain/kotlin/com/mshdabiola/datastore/JsonSerializer.kt
diff --git a/modules/datastore/src/commonMain/kotlin/com/mshdabiola/datastore/StoreImpl.kt b/modules/datastore/src/nonJsMain/kotlin/com/mshdabiola/datastore/StoreImpl.kt
similarity index 100%
rename from modules/datastore/src/commonMain/kotlin/com/mshdabiola/datastore/StoreImpl.kt
rename to modules/datastore/src/nonJsMain/kotlin/com/mshdabiola/datastore/StoreImpl.kt
diff --git a/modules/datastore/src/commonMain/kotlin/com/mshdabiola/datastore/di/SettintModule.kt b/modules/datastore/src/nonJsMain/kotlin/com/mshdabiola/datastore/di/SettintModule.kt
similarity index 100%
rename from modules/datastore/src/commonMain/kotlin/com/mshdabiola/datastore/di/SettintModule.kt
rename to modules/datastore/src/nonJsMain/kotlin/com/mshdabiola/datastore/di/SettintModule.kt
diff --git a/modules/datastore/src/wasmJsMain/kotlin/com/mshdabiola/datastore/StoreImple.kt b/modules/datastore/src/wasmJsMain/kotlin/com/mshdabiola/datastore/StoreImple.kt
new file mode 100644
index 00000000..cced2a09
--- /dev/null
+++ b/modules/datastore/src/wasmJsMain/kotlin/com/mshdabiola/datastore/StoreImple.kt
@@ -0,0 +1,20 @@
+package com.mshdabiola.datastore
+
+import com.mshdabiola.model.UserData
+import io.github.xxfast.kstore.KStore
+import io.github.xxfast.kstore.storage.storeOf
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.first
+import kotlinx.coroutines.flow.map
+
+class StoreImple : Store {
+ private val store: KStore = storeOf(key = "my_cats", default = UserData())
+ override val userData: Flow
+ get() = store.updates.map { it ?: UserData() }
+
+ override suspend fun updateUserData(transform: suspend (UserData) -> UserData): UserData {
+ val data = transform(userData.first())
+ store.update { data }
+ return data
+ }
+}
diff --git a/modules/datastore/src/wasmJsMain/kotlin/com/mshdabiola/datastore/di/PlatformModule.wasmJs.kt b/modules/datastore/src/wasmJsMain/kotlin/com/mshdabiola/datastore/di/PlatformModule.wasmJs.kt
new file mode 100644
index 00000000..d79c4a36
--- /dev/null
+++ b/modules/datastore/src/wasmJsMain/kotlin/com/mshdabiola/datastore/di/PlatformModule.wasmJs.kt
@@ -0,0 +1,14 @@
+package com.mshdabiola.datastore.di
+
+import com.mshdabiola.datastore.Store
+import com.mshdabiola.datastore.StoreImple
+import org.koin.core.module.Module
+import org.koin.dsl.bind
+import org.koin.dsl.module
+
+actual val datastoreModule: Module
+ get() = module {
+ single {
+ StoreImple()
+ } bind Store::class
+ }
diff --git a/modules/designsystem/src/commonMain/composeResources/drawable/icon.png b/modules/designsystem/src/commonMain/composeResources/drawable/icon.png
index 64ac1844..5847a150 100644
Binary files a/modules/designsystem/src/commonMain/composeResources/drawable/icon.png and b/modules/designsystem/src/commonMain/composeResources/drawable/icon.png differ
diff --git a/modules/designsystem/src/commonMain/kotlin/com/mshdabiola/designsystem/component/Background.kt b/modules/designsystem/src/commonMain/kotlin/com/mshdabiola/designsystem/component/Background.kt
index eab3ad90..505d12b6 100644
--- a/modules/designsystem/src/commonMain/kotlin/com/mshdabiola/designsystem/component/Background.kt
+++ b/modules/designsystem/src/commonMain/kotlin/com/mshdabiola/designsystem/component/Background.kt
@@ -81,8 +81,7 @@ fun SkGradientBackground(
// Compute the start and end coordinates such that the gradients are angled 11.06
// degrees off the vertical axis
val offset = size.height * tan(
- Math
- .toRadians(11.06)
+ radiansToDegrees(11.06)
.toFloat(),
)
@@ -123,3 +122,5 @@ fun SkGradientBackground(
}
}
}
+
+expect fun radiansToDegrees(radians: Double): Double
diff --git a/modules/designsystem/src/commonMain/kotlin/com/mshdabiola/designsystem/component/scrollbar/Scrollbar.kt b/modules/designsystem/src/commonMain/kotlin/com/mshdabiola/designsystem/component/scrollbar/Scrollbar.kt
index 84cf43ee..b91f134c 100644
--- a/modules/designsystem/src/commonMain/kotlin/com/mshdabiola/designsystem/component/scrollbar/Scrollbar.kt
+++ b/modules/designsystem/src/commonMain/kotlin/com/mshdabiola/designsystem/component/scrollbar/Scrollbar.kt
@@ -44,6 +44,7 @@ import androidx.compose.ui.util.unpackFloat2
import kotlinx.coroutines.TimeoutCancellationException
import kotlinx.coroutines.delay
import kotlinx.coroutines.withTimeout
+import kotlin.jvm.JvmInline
import kotlin.math.max
import kotlin.math.min
import kotlin.math.roundToInt
diff --git a/modules/designsystem/src/nonJsMain/kotlin/com/mshdabiola/designsystem/component/Background.nonJs.kt b/modules/designsystem/src/nonJsMain/kotlin/com/mshdabiola/designsystem/component/Background.nonJs.kt
new file mode 100644
index 00000000..635cb639
--- /dev/null
+++ b/modules/designsystem/src/nonJsMain/kotlin/com/mshdabiola/designsystem/component/Background.nonJs.kt
@@ -0,0 +1,5 @@
+package com.mshdabiola.designsystem.component
+
+actual fun radiansToDegrees(radians: Double): Double {
+ return Math.toRadians(radians)
+}
diff --git a/modules/designsystem/src/wasmJsMain/kotlin/com/mshdabiola/designsystem/component/Background.wasmJs.kt b/modules/designsystem/src/wasmJsMain/kotlin/com/mshdabiola/designsystem/component/Background.wasmJs.kt
new file mode 100644
index 00000000..5a442ec4
--- /dev/null
+++ b/modules/designsystem/src/wasmJsMain/kotlin/com/mshdabiola/designsystem/component/Background.wasmJs.kt
@@ -0,0 +1,5 @@
+package com.mshdabiola.designsystem.component
+
+actual fun radiansToDegrees(radians: Double): Double {
+ return radians * (3.141592653589793 / 180.0)
+}
diff --git a/modules/designsystem/src/wasmJsMain/kotlin/com/mshdabiola/designsystem/theme/Theme.wasmJs.kt b/modules/designsystem/src/wasmJsMain/kotlin/com/mshdabiola/designsystem/theme/Theme.wasmJs.kt
new file mode 100644
index 00000000..d0ac6b0e
--- /dev/null
+++ b/modules/designsystem/src/wasmJsMain/kotlin/com/mshdabiola/designsystem/theme/Theme.wasmJs.kt
@@ -0,0 +1,14 @@
+package com.mshdabiola.designsystem.theme
+
+import androidx.compose.material3.ColorScheme
+import androidx.compose.material3.darkColorScheme
+import androidx.compose.runtime.Composable
+
+actual fun supportsDynamicTheming(): Boolean {
+ return false
+}
+
+@Composable
+actual fun getDynamicColor(darkTheme: Boolean): ColorScheme {
+ return darkColorScheme()
+}
diff --git a/modules/designsystem/src/wasmJsMain/kotlin/com/mshdabiola/designsystem/theme/Type.wasmJs.kt b/modules/designsystem/src/wasmJsMain/kotlin/com/mshdabiola/designsystem/theme/Type.wasmJs.kt
new file mode 100644
index 00000000..5848d5d3
--- /dev/null
+++ b/modules/designsystem/src/wasmJsMain/kotlin/com/mshdabiola/designsystem/theme/Type.wasmJs.kt
@@ -0,0 +1,100 @@
+package com.mshdabiola.designsystem.theme
+
+import androidx.compose.material3.Typography
+import androidx.compose.ui.text.TextStyle
+import androidx.compose.ui.text.font.FontWeight
+import androidx.compose.ui.unit.sp
+
+internal actual val SkTypography: Typography
+ get() = Typography(
+ displayLarge = TextStyle(
+ fontWeight = FontWeight.Normal,
+ fontSize = 57.sp,
+ lineHeight = 64.sp,
+ letterSpacing = (-0.25).sp,
+ ),
+ displayMedium = TextStyle(
+ fontWeight = FontWeight.Normal,
+ fontSize = 45.sp,
+ lineHeight = 52.sp,
+ letterSpacing = 0.sp,
+ ),
+ displaySmall = TextStyle(
+ fontWeight = FontWeight.Normal,
+ fontSize = 36.sp,
+ lineHeight = 44.sp,
+ letterSpacing = 0.sp,
+ ),
+ headlineLarge = TextStyle(
+ fontWeight = FontWeight.Normal,
+ fontSize = 32.sp,
+ lineHeight = 40.sp,
+ letterSpacing = 0.sp,
+ ),
+ headlineMedium = TextStyle(
+ fontWeight = FontWeight.Normal,
+ fontSize = 28.sp,
+ lineHeight = 36.sp,
+ letterSpacing = 0.sp,
+ ),
+ headlineSmall = TextStyle(
+ fontWeight = FontWeight.Normal,
+ fontSize = 24.sp,
+ lineHeight = 32.sp,
+ letterSpacing = 0.sp,
+ ),
+ titleLarge = TextStyle(
+ fontWeight = FontWeight.Bold,
+ fontSize = 22.sp,
+ lineHeight = 28.sp,
+ letterSpacing = 0.sp,
+ ),
+ titleMedium = TextStyle(
+ fontWeight = FontWeight.Bold,
+ fontSize = 18.sp,
+ lineHeight = 24.sp,
+ letterSpacing = 0.1.sp,
+ ),
+ titleSmall = TextStyle(
+ fontWeight = FontWeight.Medium,
+ fontSize = 14.sp,
+ lineHeight = 20.sp,
+ letterSpacing = 0.1.sp,
+ ),
+ bodyLarge = TextStyle(
+ fontWeight = FontWeight.Normal,
+ fontSize = 16.sp,
+ lineHeight = 24.sp,
+ letterSpacing = 0.5.sp,
+ ),
+ bodyMedium = TextStyle(
+ fontWeight = FontWeight.Normal,
+ fontSize = 14.sp,
+ lineHeight = 20.sp,
+ letterSpacing = 0.25.sp,
+ ),
+ bodySmall = TextStyle(
+ fontWeight = FontWeight.Normal,
+ fontSize = 12.sp,
+ lineHeight = 16.sp,
+ letterSpacing = 0.4.sp,
+ ),
+ labelLarge = TextStyle(
+ fontWeight = FontWeight.Medium,
+ fontSize = 14.sp,
+ lineHeight = 20.sp,
+ letterSpacing = 0.1.sp,
+ ),
+ labelMedium = TextStyle(
+ fontWeight = FontWeight.Medium,
+ fontSize = 12.sp,
+ lineHeight = 16.sp,
+ letterSpacing = 0.5.sp,
+ ),
+ labelSmall = TextStyle(
+ fontWeight = FontWeight.Medium,
+ fontSize = 10.sp,
+ lineHeight = 16.sp,
+ letterSpacing = 0.sp,
+ ),
+ )
diff --git a/modules/model/src/commonMain/kotlin/com/mshdabiola/model/Note.kt b/modules/model/src/commonMain/kotlin/com/mshdabiola/model/Note.kt
index d8e54d41..8c84769e 100644
--- a/modules/model/src/commonMain/kotlin/com/mshdabiola/model/Note.kt
+++ b/modules/model/src/commonMain/kotlin/com/mshdabiola/model/Note.kt
@@ -1,5 +1,8 @@
package com.mshdabiola.model
+import kotlinx.serialization.Serializable
+
+@Serializable
data class Note(
val id: Long = -1,
val title: String = "",
diff --git a/modules/model/src/commonMain/kotlin/com/mshdabiola/model/Platform.kt b/modules/model/src/commonMain/kotlin/com/mshdabiola/model/Platform.kt
index 5b2d4b50..11c48ce3 100644
--- a/modules/model/src/commonMain/kotlin/com/mshdabiola/model/Platform.kt
+++ b/modules/model/src/commonMain/kotlin/com/mshdabiola/model/Platform.kt
@@ -6,4 +6,5 @@ enum class Platform {
Linux,
MacOS,
Windows,
+ Web,
}
diff --git a/modules/model/src/wasmJsMain/kotlin/com/mshdabiola/model/GeneralPath.wasmJs.kt b/modules/model/src/wasmJsMain/kotlin/com/mshdabiola/model/GeneralPath.wasmJs.kt
new file mode 100644
index 00000000..5dc48503
--- /dev/null
+++ b/modules/model/src/wasmJsMain/kotlin/com/mshdabiola/model/GeneralPath.wasmJs.kt
@@ -0,0 +1,4 @@
+package com.mshdabiola.model
+
+actual val generalPath: String
+ get() = ""
diff --git a/modules/model/src/wasmJsMain/kotlin/com/mshdabiola/model/PlatformUtil.wasmJs.kt b/modules/model/src/wasmJsMain/kotlin/com/mshdabiola/model/PlatformUtil.wasmJs.kt
new file mode 100644
index 00000000..932d3673
--- /dev/null
+++ b/modules/model/src/wasmJsMain/kotlin/com/mshdabiola/model/PlatformUtil.wasmJs.kt
@@ -0,0 +1,4 @@
+package com.mshdabiola.model
+
+actual val currentPlatform: Platform
+ get() = Platform.Web
diff --git a/modules/network/build.gradle.kts b/modules/network/build.gradle.kts
index a2e98c77..65f6ea6e 100644
--- a/modules/network/build.gradle.kts
+++ b/modules/network/build.gradle.kts
@@ -26,6 +26,11 @@ kotlin {
implementation(libs.ktor.client.resources)
}
}
+ val nonJsMain by getting {
+ dependencies {
+
+ }
+ }
val commonTest by getting {
dependencies {
diff --git a/modules/network/src/wasmJsMain/kotlin/com/mshdabiola/network/di/HttpClient1.wasmJs.kt b/modules/network/src/wasmJsMain/kotlin/com/mshdabiola/network/di/HttpClient1.wasmJs.kt
new file mode 100644
index 00000000..0396e32f
--- /dev/null
+++ b/modules/network/src/wasmJsMain/kotlin/com/mshdabiola/network/di/HttpClient1.wasmJs.kt
@@ -0,0 +1,14 @@
+package com.mshdabiola.network.di
+
+import io.ktor.client.HttpClient
+import io.ktor.client.HttpClientConfig
+import io.ktor.client.engine.HttpClientEngineConfig
+import io.ktor.client.engine.js.Js
+
+actual val httpClient: HttpClient
+ get() = HttpClient(Js) {
+ init()
+ }
+
+actual fun HttpClientConfig.initPlatform() {
+}
diff --git a/modules/testing/build.gradle.kts b/modules/testing/build.gradle.kts
index f0395e82..a466df0e 100644
--- a/modules/testing/build.gradle.kts
+++ b/modules/testing/build.gradle.kts
@@ -32,6 +32,10 @@ kotlin {
api(libs.kotlinx.coroutines.test)
api(libs.turbine)
api(libs.koin.test)
+ }
+ }
+ val nonJsMain by getting {
+ dependencies {
api(libs.koin.test.junit)
}
}
diff --git a/modules/ui/src/commonMain/kotlin/com/mshdabiola/ui/Navigation.kt b/modules/ui/src/commonMain/kotlin/com/mshdabiola/ui/Navigation.kt
index 713c8841..b9a1f248 100644
--- a/modules/ui/src/commonMain/kotlin/com/mshdabiola/ui/Navigation.kt
+++ b/modules/ui/src/commonMain/kotlin/com/mshdabiola/ui/Navigation.kt
@@ -201,6 +201,3 @@ fun CommonBar(
}
}
}
-
-@Composable
-expect fun NavigationPreview()
diff --git a/modules/ui/src/commonMain/kotlin/com/mshdabiola/ui/ProfileCard.kt b/modules/ui/src/commonMain/kotlin/com/mshdabiola/ui/ProfileCard.kt
index f51f1acd..acc98083 100644
--- a/modules/ui/src/commonMain/kotlin/com/mshdabiola/ui/ProfileCard.kt
+++ b/modules/ui/src/commonMain/kotlin/com/mshdabiola/ui/ProfileCard.kt
@@ -25,6 +25,3 @@ fun ProfileCard(
trailingContent = { Icon(Icons.AutoMirrored.Filled.Logout, "out", tint = Color.Red) },
)
}
-
-@Composable
-expect fun ProfileCardPreview()
diff --git a/modules/ui/src/commonMain/kotlin/com/mshdabiola/ui/SpashScreen.kt b/modules/ui/src/commonMain/kotlin/com/mshdabiola/ui/SpashScreen.kt
index 374e2641..e5528cbb 100644
--- a/modules/ui/src/commonMain/kotlin/com/mshdabiola/ui/SpashScreen.kt
+++ b/modules/ui/src/commonMain/kotlin/com/mshdabiola/ui/SpashScreen.kt
@@ -1,7 +1,43 @@
package com.mshdabiola.ui
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.sizeIn
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Surface
+import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
+import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.unit.dp
+import com.mshdabiola.designsystem.drawable.defaultAppIcon
+import com.mshdabiola.designsystem.string.appName
@Composable
-expect fun SplashScreen(modifier: Modifier = Modifier)
+fun SplashScreen(modifier: Modifier = Modifier) {
+ Surface(
+ modifier = modifier,
+ color = Color(142, 77, 49),
+ ) {
+ Column(
+ modifier = Modifier
+ .fillMaxSize(),
+ verticalArrangement = Arrangement.Center,
+ horizontalAlignment = Alignment.CenterHorizontally,
+ ) {
+ Image(
+ modifier = Modifier.sizeIn(maxWidth = 200.dp, maxHeight = 200.dp),
+ painter = defaultAppIcon,
+ contentDescription = "app icon",
+ )
+
+ Spacer(Modifier.height(32.dp))
+ Text(text = appName, style = MaterialTheme.typography.headlineSmall, color = Color.White)
+ }
+ }
+}
diff --git a/modules/ui/src/jvmMain/kotlin/com/mshdabiola/ui/Navigation.jvm.kt b/modules/ui/src/jvmMain/kotlin/com/mshdabiola/ui/Navigation.jvm.kt
index f1a2fe3a..dfe6321e 100644
--- a/modules/ui/src/jvmMain/kotlin/com/mshdabiola/ui/Navigation.jvm.kt
+++ b/modules/ui/src/jvmMain/kotlin/com/mshdabiola/ui/Navigation.jvm.kt
@@ -19,7 +19,7 @@ fun NavigationBarPreview() {
@Preview
@Composable
-actual fun NavigationPreview() {
+fun NavigationPreview() {
// CommonNavigation()
Drawer { }
}
diff --git a/modules/ui/src/jvmMain/kotlin/com/mshdabiola/ui/ProfileCard.desktop.kt b/modules/ui/src/jvmMain/kotlin/com/mshdabiola/ui/ProfileCard.desktop.kt
index 21c7af73..71acd87c 100644
--- a/modules/ui/src/jvmMain/kotlin/com/mshdabiola/ui/ProfileCard.desktop.kt
+++ b/modules/ui/src/jvmMain/kotlin/com/mshdabiola/ui/ProfileCard.desktop.kt
@@ -5,6 +5,6 @@ import androidx.compose.runtime.Composable
@Preview
@Composable
-actual fun ProfileCardPreview() {
+fun ProfileCardPreview() {
ProfileCard()
}
diff --git a/modules/ui/src/jvmMain/kotlin/com/mshdabiola/ui/SpashScreen.jvm.kt b/modules/ui/src/jvmMain/kotlin/com/mshdabiola/ui/SpashScreen.jvm.kt
deleted file mode 100644
index e96c8013..00000000
--- a/modules/ui/src/jvmMain/kotlin/com/mshdabiola/ui/SpashScreen.jvm.kt
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.mshdabiola.ui
-
-import androidx.compose.desktop.ui.tooling.preview.Preview
-import androidx.compose.foundation.Image
-import androidx.compose.foundation.layout.Arrangement
-import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.Spacer
-import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.foundation.layout.height
-import androidx.compose.foundation.layout.sizeIn
-import androidx.compose.material3.MaterialTheme
-import androidx.compose.material3.Surface
-import androidx.compose.material3.Text
-import androidx.compose.runtime.Composable
-import androidx.compose.ui.Alignment
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.unit.dp
-import com.mshdabiola.designsystem.drawable.defaultAppIcon
-import com.mshdabiola.designsystem.string.appName
-
-@Composable
-actual fun SplashScreen(modifier: Modifier) {
- Surface(
- modifier = modifier,
- color = MaterialTheme.colorScheme.primary,
- ) {
- Column(
- modifier = Modifier
- .fillMaxSize(),
- verticalArrangement = Arrangement.Center,
- horizontalAlignment = Alignment.CenterHorizontally,
- ) {
- Image(
- modifier = Modifier.sizeIn(maxWidth = 200.dp, maxHeight = 200.dp),
- painter = defaultAppIcon,
- contentDescription = "app icon",
- )
-
- Spacer(Modifier.height(32.dp))
- Text(text = appName, style = MaterialTheme.typography.headlineSmall)
- }
- }
-}
-
-@Preview
-@Composable
-fun SplashPreview() {
- SplashScreen()
-}
diff --git a/modules/ui/src/main/kotlin/com/mshdabiola/ui/Navigation.android.kt b/modules/ui/src/main/kotlin/com/mshdabiola/ui/Navigation.android.kt
index bc448a3a..9a1efbe6 100644
--- a/modules/ui/src/main/kotlin/com/mshdabiola/ui/Navigation.android.kt
+++ b/modules/ui/src/main/kotlin/com/mshdabiola/ui/Navigation.android.kt
@@ -5,7 +5,7 @@ import androidx.compose.ui.tooling.preview.Preview
@Preview
@Composable
-actual fun NavigationPreview() {
+fun NavigationPreview() {
Drawer()
// Text("aboiola")
}
diff --git a/modules/ui/src/main/kotlin/com/mshdabiola/ui/ProfileCard.android.kt b/modules/ui/src/main/kotlin/com/mshdabiola/ui/ProfileCard.android.kt
index 6d1478f9..644c1670 100644
--- a/modules/ui/src/main/kotlin/com/mshdabiola/ui/ProfileCard.android.kt
+++ b/modules/ui/src/main/kotlin/com/mshdabiola/ui/ProfileCard.android.kt
@@ -7,7 +7,7 @@ import com.mshdabiola.designsystem.theme.SkTheme
@DevicePreviews
@ThemePreviews
@Composable
-actual fun ProfileCardPreview() {
+fun ProfileCardPreview() {
SkTheme {
Surface {
ProfileCard()
diff --git a/modules/ui/src/main/kotlin/com/mshdabiola/ui/SpashScreen.android.kt b/modules/ui/src/main/kotlin/com/mshdabiola/ui/SpashScreen.android.kt
deleted file mode 100644
index 334719a7..00000000
--- a/modules/ui/src/main/kotlin/com/mshdabiola/ui/SpashScreen.android.kt
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.mshdabiola.ui
-
-import androidx.compose.runtime.Composable
-import androidx.compose.ui.Modifier
-
-@Composable
-actual fun SplashScreen(modifier: Modifier) {
-}
diff --git a/modules/ui/src/wasmJsMain/kotlin/com/mshdabiola/ui/FlowExt.wasmJs.kt b/modules/ui/src/wasmJsMain/kotlin/com/mshdabiola/ui/FlowExt.wasmJs.kt
new file mode 100644
index 00000000..c580358f
--- /dev/null
+++ b/modules/ui/src/wasmJsMain/kotlin/com/mshdabiola/ui/FlowExt.wasmJs.kt
@@ -0,0 +1,12 @@
+package com.mshdabiola.ui
+
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.semantics.SemanticsPropertyReceiver
+import androidx.compose.ui.semantics.semantics
+
+actual fun Modifier.semanticsCommon(
+ mergeDescendants: Boolean,
+ properties: SemanticsPropertyReceiver.() -> Unit,
+): Modifier {
+ return this.semantics(mergeDescendants, properties)
+}