diff --git a/.run/ChiaChat.run.xml b/.run/ChiaChat.run.xml
new file mode 100644
index 00000000..34fa3a64
--- /dev/null
+++ b/.run/ChiaChat.run.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.run/desktopApp.run.xml b/.run/desktopApp.run.xml
new file mode 100644
index 00000000..7af7e15f
--- /dev/null
+++ b/.run/desktopApp.run.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ true
+ false
+
+
+
\ No newline at end of file
diff --git a/.run/webApp-run .run.xml b/.run/webApp-run .run.xml
new file mode 100644
index 00000000..1e939ed2
--- /dev/null
+++ b/.run/webApp-run .run.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ true
+ false
+
+
+
\ No newline at end of file
diff --git a/README.md b/README.md
deleted file mode 100644
index b3e97eca..00000000
--- a/README.md
+++ /dev/null
@@ -1 +0,0 @@
-# ChiaChat
diff --git a/androidApp/build.gradle.kts b/androidApp/build.gradle.kts
index fb1c8dd0..0e2b047c 100644
--- a/androidApp/build.gradle.kts
+++ b/androidApp/build.gradle.kts
@@ -1,50 +1,33 @@
plugins {
- id("com.android.application")
- kotlin("android")
- id("org.jetbrains.compose") version Versions.composeMultiplatform
+ kotlin("multiplatform")
+ id("com.android.application")
+ id("org.jetbrains.compose")
}
-val resPath = "src/commonMain/resources"
-
-android {
- compileSdk = 33
- defaultConfig {
- applicationId = "org.chiachat.app.android"
- minSdk = 26
- targetSdk = 33
- versionCode = 1
- versionName = "1.0"
-
- testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
- }
- compileOptions {
- sourceCompatibility = JavaVersion.VERSION_17
- targetCompatibility = JavaVersion.VERSION_17
- }
-
- kotlinOptions { jvmTarget = "17" }
-
- buildTypes {
- getByName("release") {
- isMinifyEnabled = true
- isShrinkResources = true
- proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
+kotlin {
+ android()
+ sourceSets {
+ val androidMain by getting {
+ dependencies {
+ implementation(project(":shared"))
+ implementation("androidx.appcompat:appcompat:1.5.1")
+ implementation("androidx.activity:activity-compose:1.6.1")
+ }
+ }
}
- }
- sourceSets["main"].apply {
- assets.srcDirs(project(":ui").file(resPath), project(":shared").file(resPath))
- }
}
-dependencies {
- implementation(project(":ui"))
- implementation("androidx.activity:activity-compose:1.6.1")
- implementation(Deps.Koin.compose)
-
- /*testImplementation(Deps.Test.junitApi)
- testRuntimeOnly(Deps.Test.junitEngine)
- androidTestImplementation("androidx.test:runner:1.4.0")
- androidTestImplementation(Deps.Test.junitApi)
- androidTestImplementation("de.mannodermaus.junit5:android-test-core:1.3.0")
- androidTestRuntimeOnly("de.mannodermaus.junit5:android-test-runner:1.3.0")*/
+android {
+ compileSdk = 33
+ defaultConfig {
+ applicationId = "org.chiachat.app"
+ minSdk = 24
+ targetSdk = 33
+ versionCode = 1
+ versionName = "1.0"
+ }
+ compileOptions {
+ sourceCompatibility = JavaVersion.VERSION_1_8
+ targetCompatibility = JavaVersion.VERSION_1_8
+ }
}
diff --git a/androidApp/proguard-rules.pro b/androidApp/proguard-rules.pro
deleted file mode 100644
index 481bb434..00000000
--- a/androidApp/proguard-rules.pro
+++ /dev/null
@@ -1,21 +0,0 @@
-# Add project specific ProGuard rules here.
-# You can control the set of applied configuration files using the
-# proguardFiles setting in build.gradle.
-#
-# For more details, see
-# http://developer.android.com/guide/developing/tools/proguard.html
-
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-# public *;
-#}
-
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
-
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/androidApp/src/main/AndroidManifest.xml b/androidApp/src/main/AndroidManifest.xml
index b6228691..0e1eb5f4 100644
--- a/androidApp/src/main/AndroidManifest.xml
+++ b/androidApp/src/main/AndroidManifest.xml
@@ -4,20 +4,20 @@
+ android:theme="@style/Theme.AppCompat.Light.NoActionBar">
+ android:name="org.chiachat.app.android.MainActivity"
+ >
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/androidApp/src/main/ic_launcher-playstore.png b/androidApp/src/main/ic_launcher-playstore.png
deleted file mode 100644
index 539f4dc5..00000000
Binary files a/androidApp/src/main/ic_launcher-playstore.png and /dev/null differ
diff --git a/androidApp/src/main/java/org/chiachat/app/android/AndroidModules.kt b/androidApp/src/main/java/org/chiachat/app/android/AndroidModules.kt
deleted file mode 100644
index 60d82c24..00000000
--- a/androidApp/src/main/java/org/chiachat/app/android/AndroidModules.kt
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.chiachat.app.android
-
-import android.content.Context
-import com.soywiz.korio.android.AndroidCoroutineContext
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.Dispatchers
-import org.koin.core.qualifier.named
-import org.koin.dsl.module
-
-class AndroidModules(androidContext: Context) {
- val ioContext = Dispatchers.IO + AndroidCoroutineContext(androidContext)
- val vmContext = Dispatchers.Default + AndroidCoroutineContext(androidContext)
-
- val context = module { single { androidContext } }
-
- val scopes = module {
- factory(named("ioScope")) { CoroutineScope(ioContext) }
- factory(named("vmScope")) { CoroutineScope(vmContext) }
- }
-
- val all = context + scopes
-}
diff --git a/androidApp/src/main/java/org/chiachat/app/android/MainActivity.kt b/androidApp/src/main/java/org/chiachat/app/android/MainActivity.kt
deleted file mode 100644
index 6876b27a..00000000
--- a/androidApp/src/main/java/org/chiachat/app/android/MainActivity.kt
+++ /dev/null
@@ -1,50 +0,0 @@
-package org.chiachat.app.android
-
-import android.content.Context
-import android.os.Bundle
-import androidx.activity.ComponentActivity
-import androidx.activity.addCallback
-import androidx.activity.compose.setContent
-import kotlinx.coroutines.runBlocking
-import org.chiachat.app.SharedAppModules
-import org.chiachat.app.compose.ComposeAppModules
-import org.chiachat.app.compose.ComposeRoot
-import org.chiachat.app.compose.services.NavigationService
-import org.chiachat.app.db.PlatformDb
-import org.koin.core.component.KoinComponent
-import org.koin.core.component.inject
-import org.koin.core.context.startKoin
-import org.koin.core.context.stopKoin
-
-class MainActivity : ComponentActivity(), KoinComponent {
- val context: Context = this
-
- val app = ComposeRoot()
-
- init {
- runBlocking {
- val androidModules = AndroidModules(context)
- startKoin { modules(androidModules.all) }
- val driver = PlatformDb().getDriver()
- val sharedModules = SharedAppModules(driver)
- val composeModules = ComposeAppModules()
- stopKoin()
-
- startKoin {
- modules(androidModules.all + composeModules.all + sharedModules.all)
- allowOverride(false)
- }
- }
- }
-
- override fun onCreate(savedInstanceState: Bundle?) {
-
- super.onCreate(savedInstanceState)
- setContent { app.View() }
-
- val navigationService: NavigationService by inject()
- val callback = onBackPressedDispatcher.addCallback(this) { navigationService.back() }
-
- callback.isEnabled = true
- }
-}
diff --git a/androidApp/src/main/kotlin/org/chiachat/app/android/MainActivity.kt b/androidApp/src/main/kotlin/org/chiachat/app/android/MainActivity.kt
new file mode 100644
index 00000000..d25db0c2
--- /dev/null
+++ b/androidApp/src/main/kotlin/org/chiachat/app/android/MainActivity.kt
@@ -0,0 +1,22 @@
+package org.chiachat.app.android
+
+import AndroidRoot
+import android.os.Bundle
+import androidx.activity.compose.setContent
+import androidx.appcompat.app.AppCompatActivity
+import org.koin.core.context.stopKoin
+
+class MainActivity : AppCompatActivity() {
+ val root = AndroidRoot(this)
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContent {
+ root.View()
+ }
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ stopKoin()
+ }
+}
diff --git a/androidApp/src/main/res/drawable-v24/ic_launcher_background.xml b/androidApp/src/main/res/drawable-v24/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/androidApp/src/main/res/drawable-v24/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/androidApp/src/main/res/drawable-v24/ic_launcher_foreground.xml b/androidApp/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/androidApp/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/androidApp/src/main/res/values-night/themes.xml b/androidApp/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..710bfabb
--- /dev/null
+++ b/androidApp/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/androidApp/src/main/res/values/themes.xml b/androidApp/src/main/res/values/themes.xml
new file mode 100644
index 00000000..50dcf6d3
--- /dev/null
+++ b/androidApp/src/main/res/values/themes.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
index 0f1bd39f..e370bc66 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -1,34 +1,24 @@
-buildscript {
- repositories {
- gradlePluginPortal()
- google()
- mavenCentral()
- maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
- }
- dependencies {
- classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.kotlin}")
- classpath("com.android.tools.build:gradle:7.2.2")
- classpath(Plugin.kotlin)
- classpath(Plugin.kotlinxSerialization)
- classpath(Plugin.proguard)
- classpath(Plugin.junitAndroid)
- }
-}
-
plugins {
- id(Plugin.Id.detekt) version Versions.detekt
- id(Plugin.Id.kover) version Versions.kover
- id(Plugin.Id.ktfmt) version Versions.ktfmtGradle
+ // this is necessary to avoid the plugins to be loaded multiple times
+ // in each subproject's classloader
+ kotlin("jvm") apply false
+ kotlin("multiplatform") apply false
+ kotlin("android") apply false
+ id("com.android.application") apply false
+ id("com.android.library") apply false
+ id("org.jetbrains.compose") apply false
+
+ id(Plugin.Id.detekt) version Versions.detekt
+ id(Plugin.Id.kover) version Versions.kover
+ id(Plugin.Id.ktfmt) version Versions.ktfmtGradle
}
-group = "org.chiachat"
-version = "1.0.0"
tasks {
- val checkAndDetekt by
- registering(io.gitlab.arturbosch.detekt.Detekt::class) {
- dependsOn("check")
+ val detektAndCheck by
+ registering(io.gitlab.arturbosch.detekt.Detekt::class) {
+ dependsOn(":check")
description = "Runs detekt static code analysis on all modules"
buildUponDefaultConfig = true
allRules = true
@@ -41,13 +31,13 @@ tasks {
config.setFrom("$rootDir/config/detekt/detekt.yml")
baseline.set(file("$rootDir/config/detekt/baseline.xml"))
reports {
- html.required.set(true)
- xml.required.set(true)
- sarif.required.set(true)
+ html.required.set(true)
+ xml.required.set(true)
+ sarif.required.set(true)
}
- }
- val detektProjectBaseline by
- registering(io.gitlab.arturbosch.detekt.DetektCreateBaselineTask::class) {
+ }
+ val detektProjectBaseline by
+ registering(io.gitlab.arturbosch.detekt.DetektCreateBaselineTask::class) {
description = "Overrides current baseline."
buildUponDefaultConfig.set(true)
ignoreFailures.set(true)
@@ -58,120 +48,51 @@ tasks {
include("**/*.kt")
exclude("**/resources/**")
exclude("**/build/**")
- }
+ }
}
val detektReportMergeSarif by
- tasks.registering(io.gitlab.arturbosch.detekt.report.ReportMergeTask::class) {
- output.set(rootProject.layout.buildDirectory.file("reports/detekt/merge.sarif"))
- }
-
-allprojects {
- repositories {
- mavenCentral()
- mavenLocal()
- google()
- maven { url = uri("https://jitpack.io") }
- maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
- }
+tasks.registering(io.gitlab.arturbosch.detekt.report.ReportMergeTask::class) {
+ output.set(rootProject.layout.buildDirectory.file("reports/detekt/merge.sarif"))
}
subprojects {
- apply(plugin = Plugin.Id.detekt)
-
- detekt {
- source =
- objects
- .fileCollection()
- .from(
- io.gitlab.arturbosch.detekt.extensions.DetektExtension.DEFAULT_SRC_DIR_JAVA,
- io.gitlab.arturbosch.detekt.extensions.DetektExtension.DEFAULT_TEST_SRC_DIR_JAVA,
- io.gitlab.arturbosch.detekt.extensions.DetektExtension.DEFAULT_SRC_DIR_KOTLIN,
- io.gitlab.arturbosch.detekt.extensions.DetektExtension.DEFAULT_TEST_SRC_DIR_KOTLIN,
- )
- buildUponDefaultConfig = true
- baseline = file("$rootDir/config/detekt/baseline.xml")
- }
-
- tasks.withType detekt@{
- jvmTarget = "17"
- reports {
- xml.required.set(true)
- html.required.set(true)
- txt.required.set(true)
- sarif.required.set(true)
- md.required.set(true)
+ repositories {
+ google()
+ mavenCentral()
+ maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
}
- basePath = rootProject.projectDir.absolutePath
- finalizedBy(detektReportMergeSarif)
- detektReportMergeSarif.configure { input.from(this@detekt.sarifReportFile) }
- }
- tasks.withType().configureEach {
- jvmTarget = "17"
- }
- tasks {
- whenTaskAdded {
- if (name == "testDebugUnitTest") {
- this.enabled = false
- }
- }
- }
-}
-val rootPackage = "org.chiachat.app"
-val basePackage = listOf("*", "compose").map { "$rootPackage.$it" }
-val excludedPackages =
- listOf("type", "selections", "adapter", "apollo", "test", "android.test", "compose").map {
- "$rootPackage.$it.*"
- } + "*.BuildConfig" + "*.MainActivity" + "*.**Test" + "*.**Module**" + "*.ChiaChatDbImpl*"
-
-koverMerged {
- enable() // create Kover merged report tasks from this project and subprojects with enabled Kover
- // plugin
-
- filters {
- classes {
- includes += basePackage
- excludes += excludedPackages
+ apply(plugin = Plugin.Id.detekt)
+
+ detekt {
+ source =
+ objects
+ .fileCollection()
+ .from(
+ io.gitlab.arturbosch.detekt.extensions.DetektExtension.DEFAULT_SRC_DIR_JAVA,
+ io.gitlab.arturbosch.detekt.extensions.DetektExtension.DEFAULT_TEST_SRC_DIR_JAVA,
+ io.gitlab.arturbosch.detekt.extensions.DetektExtension.DEFAULT_SRC_DIR_KOTLIN,
+ io.gitlab.arturbosch.detekt.extensions.DetektExtension.DEFAULT_TEST_SRC_DIR_KOTLIN,
+ )
+ buildUponDefaultConfig = true
+ baseline = file("$rootDir/config/detekt/baseline.xml")
}
- projects { excludes += listOf(":androidApp", ":desktopApp", ":iosApp", ":webApp") }
- }
-
- xmlReport {
- enable()
- onCheck.set(true)
- reportFile.set(layout.buildDirectory.file("reports/kover/xml/report.xml"))
- }
-
- htmlReport {
- enable()
- onCheck.set(true)
- reportDir.set(layout.buildDirectory.dir("reports/kover/html"))
- }
- verify {
-
- // set to true to run koverMergedVerify task during the execution of the check task
- // (if it exists) of the current project
- onCheck.set(true)
- rule { // add verification rule
- // set to false to disable rule checking
- isEnabled = true
- // custom name for the rule
- name = "Minimum Test Coverage"
- // specify by which entity the code for separate coverage evaluation will be
- target = kotlinx.kover.api.VerificationTarget.ALL
- // grouped
-
- bound { // add rule bound
- minValue = 25
- maxValue = 100
- // change coverage metric to evaluate (LINE, INSTRUCTION, BRANCH)
- counter = kotlinx.kover.api.CounterType.LINE
- // change counter value (COVERED_COUNT, MISSED_COUNT,
- // COVERED_PERCENTAGE, MISSED_PERCENTAGE)
- valueType = kotlinx.kover.api.VerificationValueType.COVERED_PERCENTAGE
- }
+ tasks.withType detekt@{
+ jvmTarget = "17"
+ reports {
+ xml.required.set(true)
+ html.required.set(true)
+ txt.required.set(true)
+ sarif.required.set(true)
+ md.required.set(true)
+ }
+ basePath = rootProject.projectDir.absolutePath
+ finalizedBy(detektReportMergeSarif)
+ detektReportMergeSarif.configure { input.from(this@detekt.sarifReportFile) }
+ }
+ tasks.withType().configureEach {
+ jvmTarget = "17"
}
- }
}
diff --git a/buildSrc/src/main/kotlin/Deps.kt b/buildSrc/src/main/kotlin/Deps.kt
index 3ff75f7e..031b69a3 100644
--- a/buildSrc/src/main/kotlin/Deps.kt
+++ b/buildSrc/src/main/kotlin/Deps.kt
@@ -20,14 +20,15 @@ object Versions {
const val activityCompose = "1.4.0-beta01"
const val navCompose = "2.4.2"
const val accompanist = "0.24.11-rc"
- const val composeMultiplatform = "1.2.1-rc03"
+ const val composeMultiplatform = "1.2.1"
const val nativeCoroutines = "0.12.5"
const val kor = "3.3.0"
const val ktfmtGradle = "0.11.0"
const val conveyor = "1.2"
const val kotlinxSerialization = "1.4.1"
const val mpsettings = "1.0.0-RC"
- const val trixnity = "3.0.0-beta3"
+ const val trixnity = "3.0.0"
+ const val circuit = "0.4.0"
}
object Plugin {
@@ -70,7 +71,7 @@ object Deps {
const val uiGraphics = "androidx.compose.ui:ui-graphics:${Versions.compose}"
const val uiTooling = "androidx.compose.ui:ui-tooling:${Versions.compose}"
const val foundationLayout = "androidx.compose.foundation:foundation-layout:${Versions.compose}"
- const val material = "androidx.compose.material3:material:${Versions.compose}"
+ const val material = "androidx.compose.material:material:${Versions.compose}"
const val navigation = "androidx.navigation:navigation-compose:${Versions.navCompose}"
const val coilCompose = "io.coil-kt:coil-compose:2.0.0"
@@ -78,6 +79,7 @@ object Deps {
"com.google.accompanist:accompanist-navigation-animation:${Versions.accompanist}"
const val accompanistSwipeRefresh =
"com.google.accompanist:accompanist-swiperefresh:${Versions.accompanist}"
+ const val circuit = "com.slack.circuit:circuit-core:${Versions.circuit}"
}
object Kor {
diff --git a/conveyor.conf b/conveyor.conf
deleted file mode 100644
index a4815b23..00000000
--- a/conveyor.conf
+++ /dev/null
@@ -1,22 +0,0 @@
-// This is a hashbang include. You can run the command after the #! to see what
-// configuration is being extracted from the Gradle build using the Conveyor plugin.
-include "#!./gradlew -q printConveyorConfig"
-
-// This just adds a few nice-to-haves like telling the JVM to use system proxy settings.
-include required("/stdlib/jvm/enhancements/client/v1.conf")
-
-app {
- // The base URL is where the download site will be placed. Packages will check here for updates.
- site.base-url = "downloads.chiachat.org"
-
- // This is optional. If not specified the last component of the rdns name will be turned into a display name.
- display-name = "ChiaChat"
- version = "0.0.1"
-
- icons = "shared/src/commonMain/resources/icons/chiachat-*.png"
- vcs-url = "https://github.com/chiachat/chiachat"
-}
-
-conveyor.compatibility-level = 4
-
-conveyor.license-key = "zduw-wncj"
diff --git a/desktopApp/build.gradle.kts b/desktopApp/build.gradle.kts
index df0c2a36..066d6c69 100644
--- a/desktopApp/build.gradle.kts
+++ b/desktopApp/build.gradle.kts
@@ -1,96 +1,40 @@
import org.jetbrains.compose.desktop.application.dsl.TargetFormat
plugins {
- kotlin("multiplatform")
- id("org.jetbrains.compose") version Versions.composeMultiplatform
- // id(Plugin.Id.conveyor) version Versions.conveyor
+ kotlin("multiplatform")
+ id("org.jetbrains.compose")
}
-repositories {
- mavenCentral()
- google()
- maven { url = uri("https://jitpack.io") }
- maven { url = uri("https://maven.pkg.jetbrains.space/public/p/compose/dev") }
-}
-
-java { toolchain { languageVersion.set(JavaLanguageVersion.of(17)) } }
-
kotlin {
- jvm {
- compilations.all { kotlinOptions.jvmTarget = "11" }
- withJava()
- }
-
- sourceSets {
- val jvmMain by getting {
- dependencies {
- implementation(project(":ui"))
- implementation(compose.desktop.currentOs)
- }
+ jvm {}
+ sourceSets {
+ val jvmMain by getting {
+ dependencies {
+ implementation(compose.desktop.currentOs)
+ implementation(project(":shared"))
+ }
+ }
}
- val jvmTest by getting
- }
}
-/*dependencies {
- // Use the configurations created by the Conveyor plugin to tell Gradle/Conveyor where to find the
- // artifacts for each platform.
- linuxAmd64(compose.desktop.linux_x64)
- macAmd64(compose.desktop.macos_x64)
- macAarch64(compose.desktop.macos_arm64)
- windowsAmd64(compose.desktop.windows_x64)
-}*/
-
-val ico = File("../ui/src/commonMain/resources/icons/chiachat/chiachat-trans-256x256.ico")
-val icns = File("../ui/src/commonMain/resources/icons/chiachat/chiachat-trans-256x256.icns")
-val png = File("../ui/src/commonMain/resources/icons/chiachat/chiachat-trans-256x256.png")
-
compose.desktop {
- application {
- mainClass = "org.chiachat.app.desktop.MainKt"
-
- buildTypes.release.proguard {
- this.isEnabled.set(true)
- configurationFiles.from(project.file("compose-desktop.pro"))
+ application {
+ mainClass = "org.jetbrains.compose.demo.widgets.MainKt"
+
+ nativeDistributions {
+ targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
+ packageName = "ComposeChiaChat"
+ packageVersion = "1.0.0"
+
+ windows {
+ menu = true
+ // see https://wixtoolset.org/documentation/manual/v3/howtos/general/generate_guids.html
+ upgradeUuid = "a61b72be-1b0c-4de5-9607-791c17687428"
+ }
+
+ macOS {
+ bundleID = "org.chiachat.app"
+ }
+ }
}
-
- nativeDistributions {
- targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
- packageName = "ChiaChat"
- packageVersion = "1.0.0"
-
- modules("java.sql")
-
- macOS { iconFile.set(icns) }
- windows {
- iconFile.set(ico)
- console = true
- }
- linux {
- iconFile.set(png)
- packageName = "chia-chat"
- debMaintainer = "andrea@chiachat.org"
- }
- }
- }
}
-
-configurations.all {
- attributes {
- // https://github.com/JetBrains/compose-jb/issues/1404#issuecomment-1146894731
- attribute(Attribute.of("ui", String::class.java), "awt")
- }
-}
-
-/*dependencies {
- // Force override the Kotlin stdlib version used by Compose to 1.7 in the machine specific
- // configurations, as otherwise we can end up
- // with a mix of 1.6 and 1.7 on our classpath. This is the same logic as is applied to the regular
- // Compose configurations normally.
- val v = "1.7.10"
- for (m in setOf("linuxAmd64", "macAmd64", "macAarch64", "windowsAmd64")) {
- m("org.jetbrains.kotlin:kotlin-stdlib:$v")
- m("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$v")
- m("org.jetbrains.kotlin:kotlin-stdlib-jdk7:$v")
- }
- }*/
diff --git a/desktopApp/compose-desktop.pro b/desktopApp/compose-desktop.pro
deleted file mode 100644
index 2ddd624c..00000000
--- a/desktopApp/compose-desktop.pro
+++ /dev/null
@@ -1,7 +0,0 @@
--optimizationpasses 3
--overloadaggressively
--repackageclasses ''
--allowaccessmodification
-
--keep class app.cash.sqldelight.driver.jdbc.sqlite.** { *; }
--keep class org.sqlite.** { *; }
\ No newline at end of file
diff --git a/desktopApp/src/jvmMain/kotlin/org/chiachat/app/desktop/DesktopApp.kt b/desktopApp/src/jvmMain/kotlin/org/chiachat/app/desktop/DesktopApp.kt
deleted file mode 100644
index a91cca52..00000000
--- a/desktopApp/src/jvmMain/kotlin/org/chiachat/app/desktop/DesktopApp.kt
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.chiachat.app.desktop
-
-import app.cash.sqldelight.db.SqlDriver
-import org.chiachat.app.SharedAppModules
-import org.chiachat.app.compose.ComposeAppModules
-import org.chiachat.app.compose.ComposeRoot
-import org.koin.core.context.startKoin
-
-class DesktopApp(driver: SqlDriver) {
- val composeRoot = ComposeRoot()
-
- init {
- startKoin {
- val desktopModules = DesktopModules()
- val composeModules = ComposeAppModules()
- val sharedModules = SharedAppModules(driver)
- modules(desktopModules.all + composeModules.all + sharedModules.all)
- allowOverride(false)
- }
- }
-}
diff --git a/desktopApp/src/jvmMain/kotlin/org/chiachat/app/desktop/DesktopModules.kt b/desktopApp/src/jvmMain/kotlin/org/chiachat/app/desktop/DesktopModules.kt
deleted file mode 100644
index b956fded..00000000
--- a/desktopApp/src/jvmMain/kotlin/org/chiachat/app/desktop/DesktopModules.kt
+++ /dev/null
@@ -1,15 +0,0 @@
-package org.chiachat.app.desktop
-
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.Dispatchers
-import org.koin.core.qualifier.named
-import org.koin.dsl.module
-
-class DesktopModules {
- val scopes = module {
- factory(named("ioScope")) { CoroutineScope(Dispatchers.IO) }
- factory(named("vmScope")) { CoroutineScope(Dispatchers.Default) }
- }
-
- val all = scopes
-}
diff --git a/desktopApp/src/jvmMain/kotlin/org/chiachat/app/desktop/Main.kt b/desktopApp/src/jvmMain/kotlin/org/chiachat/app/desktop/Main.kt
deleted file mode 100644
index c5308c4e..00000000
--- a/desktopApp/src/jvmMain/kotlin/org/chiachat/app/desktop/Main.kt
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.chiachat.app.desktop
-
-import androidx.compose.ui.res.painterResource
-import androidx.compose.ui.window.Window
-import androidx.compose.ui.window.application
-import kotlinx.coroutines.runBlocking
-import org.chiachat.app.db.PlatformDb
-
-fun main() {
- val sqlDriver = runBlocking { PlatformDb().getDriver() }
- val desktopApp = DesktopApp(sqlDriver)
- application {
- val icon = painterResource("icons/chiachat/chiachat-trans-256x256.png")
- Window(onCloseRequest = ::exitApplication, icon = icon) { desktopApp.composeRoot.View() }
- }
-}
diff --git a/desktopApp/src/jvmMain/kotlin/org/jetbrains/compose/demo/widgets/main.kt b/desktopApp/src/jvmMain/kotlin/org/jetbrains/compose/demo/widgets/main.kt
new file mode 100644
index 00000000..640bf2bf
--- /dev/null
+++ b/desktopApp/src/jvmMain/kotlin/org/jetbrains/compose/demo/widgets/main.kt
@@ -0,0 +1,14 @@
+package org.jetbrains.compose.demo.widgets
+
+import DesktopRoot
+import androidx.compose.ui.unit.DpSize
+import androidx.compose.ui.unit.dp
+import androidx.compose.ui.window.WindowState
+import androidx.compose.ui.window.singleWindowApplication
+
+fun main() {
+ val desktopRoot = DesktopRoot()
+ singleWindowApplication(title = "ChiaChat", state = WindowState(size = DpSize(800.dp, 600.dp))) {
+ desktopRoot.View()
+ }
+}
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index 48c79097..d589487b 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,18 +1,17 @@
-#Gradle
-org.gradle.jvmargs=-Xmx2048M -Dkotlin.daemon.jvm.options\="-Xmx2048M"
-#Kotlin
kotlin.code.style=official
-#Android
+xcodeproj=./iosApp
+kotlin.native.cocoapods.generate.wrapper=true
android.useAndroidX=true
-#MPP
-kotlin.mpp.enableCInteropCommonization=true
-kotlin.mpp.stability.nowarn=true
-#https://github.com/JetBrains/compose-jb/issues/2046
+org.gradle.jvmargs=-Xmx3g
+org.jetbrains.compose.experimental.jscanvas.enabled=true
+org.jetbrains.compose.experimental.macos.enabled=true
+org.jetbrains.compose.experimental.uikit.enabled=true
kotlin.native.cacheKind=none
kotlin.native.useEmbeddableCompilerJar=true
+kotlin.native.enableDependencyPropagation=false
+kotlin.mpp.enableGranularSourceSetsMetadata=true
# Enable kotlin/native experimental memory model
kotlin.native.binary.memoryModel=experimental
-compose.desktop.verbose=true
-org.jetbrains.compose.experimental.uikit.enabled=true
-org.jetbrains.compose.experimental.jscanvas.enabled=true
-kotlin.native.ignoreDisabledTargets=true
\ No newline at end of file
+kotlin.version=1.7.20
+agp.version=7.1.3
+compose.version=1.2.1
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 41d9927a..249e5832 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradlew b/gradlew
index 1b6c7873..a69d9cb6 100755
--- a/gradlew
+++ b/gradlew
@@ -205,6 +205,12 @@ set -- \
org.gradle.wrapper.GradleWrapperMain \
"$@"
+# Stop when "xargs" is not available.
+if ! command -v xargs >/dev/null 2>&1
+then
+ die "xargs is not available"
+fi
+
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
diff --git a/gradlew.bat b/gradlew.bat
old mode 100755
new mode 100644
index 107acd32..53a6b238
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -1,89 +1,91 @@
-@rem
-@rem Copyright 2015 the original author or authors.
-@rem
-@rem Licensed under the Apache License, Version 2.0 (the "License");
-@rem you may not use this file except in compliance with the License.
-@rem You may obtain a copy of the License at
-@rem
-@rem https://www.apache.org/licenses/LICENSE-2.0
-@rem
-@rem Unless required by applicable law or agreed to in writing, software
-@rem distributed under the License is distributed on an "AS IS" BASIS,
-@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@rem See the License for the specific language governing permissions and
-@rem limitations under the License.
-@rem
-
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Resolve any "." and ".." in APP_HOME to make it shorter.
-for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto execute
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto execute
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%"=="" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%"=="" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if %ERRORLEVEL% equ 0 goto execute
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
+
+:end
+@rem End local scope for the variables with windows NT shell
+if %ERRORLEVEL% equ 0 goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+set EXIT_CODE=%ERRORLEVEL%
+if %EXIT_CODE% equ 0 set EXIT_CODE=1
+if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
+exit /b %EXIT_CODE%
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json b/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 00000000..82409539
--- /dev/null
+++ b/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,14 @@
+{
+ "images" : [
+ {
+ "filename" : "chiachat-trans-1024x1024.png",
+ "idiom" : "universal",
+ "platform" : "ios",
+ "size" : "1024x1024"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/iosApp/Assets.xcassets/AppIcon.appiconset/chiachat-trans-1024x1024.png b/iosApp/Assets.xcassets/AppIcon.appiconset/chiachat-trans-1024x1024.png
new file mode 100644
index 00000000..27c8f188
Binary files /dev/null and b/iosApp/Assets.xcassets/AppIcon.appiconset/chiachat-trans-1024x1024.png differ
diff --git a/iosApp/Assets.xcassets/Contents.json b/iosApp/Assets.xcassets/Contents.json
new file mode 100644
index 00000000..73c00596
--- /dev/null
+++ b/iosApp/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/iosApp/Assets.xcassets/light_mode.imageset/Contents.json b/iosApp/Assets.xcassets/light_mode.imageset/Contents.json
new file mode 100644
index 00000000..8ecea54c
--- /dev/null
+++ b/iosApp/Assets.xcassets/light_mode.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "filename" : "light_mode.png",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/ui/src/commonMain/resources/icons/material/light_mode.png b/iosApp/Assets.xcassets/light_mode.imageset/light_mode.png
similarity index 100%
rename from ui/src/commonMain/resources/icons/material/light_mode.png
rename to iosApp/Assets.xcassets/light_mode.imageset/light_mode.png
diff --git a/iosApp/ChiaChat.xcodeproj/project.pbxproj b/iosApp/ChiaChat.xcodeproj/project.pbxproj
new file mode 100644
index 00000000..2a93bc7f
--- /dev/null
+++ b/iosApp/ChiaChat.xcodeproj/project.pbxproj
@@ -0,0 +1,384 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 2152FB042600AC8F00CF470E /* iosApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2152FB032600AC8F00CF470E /* iosApp.swift */; };
+ C1FC908188C4E8695729CB06 /* Pods_ChiaChat.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8DE96E47030356CE6AD9794A /* Pods_ChiaChat.framework */; };
+ FDD7544929449AFE00D7B589 /* assets in Resources */ = {isa = PBXBuildFile; fileRef = FDD7544829449AFE00D7B589 /* assets */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ 1EB65E27D2C0F884D0A1A133 /* Pods-ChiaChat.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ChiaChat.debug.xcconfig"; path = "Target Support Files/Pods-ChiaChat/Pods-ChiaChat.debug.xcconfig"; sourceTree = ""; };
+ 2152FB032600AC8F00CF470E /* iosApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iosApp.swift; sourceTree = ""; };
+ 3D7A606AB0AD7636269BD9D0 /* Pods-ChiaChat.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ChiaChat.release.xcconfig"; path = "Target Support Files/Pods-ChiaChat/Pods-ChiaChat.release.xcconfig"; sourceTree = ""; };
+ 7555FF7B242A565900829871 /* ChiaChat.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ChiaChat.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 7555FF8C242A565B00829871 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 8DE96E47030356CE6AD9794A /* Pods_ChiaChat.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ChiaChat.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ AB3632DC29227652001CCB65 /* TeamId.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = TeamId.xcconfig; sourceTree = ""; };
+ FDD7544829449AFE00D7B589 /* assets */ = {isa = PBXFileReference; lastKnownFileType = folder; name = assets; path = ../shared/src/commonMain/resources/assets; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 9964867F0862B4D9FB6ABFC7 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ C1FC908188C4E8695729CB06 /* Pods_ChiaChat.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 7555FF72242A565900829871 = {
+ isa = PBXGroup;
+ children = (
+ FDD7544829449AFE00D7B589 /* assets */,
+ AB1DB47929225F7C00F7AF9C /* Configuration */,
+ 7555FF7D242A565900829871 /* iosApp */,
+ 7555FF7C242A565900829871 /* Products */,
+ E1DAFBE8E1CFC0878361EF0E /* Pods */,
+ B62309C7396AD7BF607A63B2 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ 7555FF7C242A565900829871 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 7555FF7B242A565900829871 /* ChiaChat.app */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 7555FF7D242A565900829871 /* iosApp */ = {
+ isa = PBXGroup;
+ children = (
+ 7555FF8C242A565B00829871 /* Info.plist */,
+ 2152FB032600AC8F00CF470E /* iosApp.swift */,
+ );
+ path = iosApp;
+ sourceTree = "";
+ };
+ AB1DB47929225F7C00F7AF9C /* Configuration */ = {
+ isa = PBXGroup;
+ children = (
+ AB3632DC29227652001CCB65 /* TeamId.xcconfig */,
+ );
+ path = Configuration;
+ sourceTree = "";
+ };
+ B62309C7396AD7BF607A63B2 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 8DE96E47030356CE6AD9794A /* Pods_ChiaChat.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ E1DAFBE8E1CFC0878361EF0E /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 1EB65E27D2C0F884D0A1A133 /* Pods-ChiaChat.debug.xcconfig */,
+ 3D7A606AB0AD7636269BD9D0 /* Pods-ChiaChat.release.xcconfig */,
+ );
+ path = Pods;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 7555FF7A242A565900829871 /* ChiaChat */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 7555FFA5242A565B00829871 /* Build configuration list for PBXNativeTarget "ChiaChat" */;
+ buildPhases = (
+ E8D673591E7196AEA2EA10E2 /* [CP] Check Pods Manifest.lock */,
+ 7555FF77242A565900829871 /* Sources */,
+ 7555FF79242A565900829871 /* Resources */,
+ 9964867F0862B4D9FB6ABFC7 /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = ChiaChat;
+ productName = iosApp;
+ productReference = 7555FF7B242A565900829871 /* ChiaChat.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 7555FF73242A565900829871 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastSwiftUpdateCheck = 1130;
+ LastUpgradeCheck = 1130;
+ ORGANIZATIONNAME = org.jetbrains;
+ TargetAttributes = {
+ 7555FF7A242A565900829871 = {
+ CreatedOnToolsVersion = 11.3.1;
+ };
+ };
+ };
+ buildConfigurationList = 7555FF76242A565900829871 /* Build configuration list for PBXProject "ChiaChat" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 7555FF72242A565900829871;
+ productRefGroup = 7555FF7C242A565900829871 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 7555FF7A242A565900829871 /* ChiaChat */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 7555FF79242A565900829871 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ FDD7544929449AFE00D7B589 /* assets in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ E8D673591E7196AEA2EA10E2 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-ChiaChat-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 7555FF77242A565900829871 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 2152FB042600AC8F00CF470E /* iosApp.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ 7555FFA3242A565B00829871 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = AB3632DC29227652001CCB65 /* TeamId.xcconfig */;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 14.1;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ };
+ name = Debug;
+ };
+ 7555FFA4242A565B00829871 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = AB3632DC29227652001CCB65 /* TeamId.xcconfig */;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 14.1;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 7555FFA6242A565B00829871 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 1EB65E27D2C0F884D0A1A133 /* Pods-ChiaChat.debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_ASSET_PATHS = "";
+ DEVELOPMENT_TEAM = 78ZJNJ7ZJW;
+ ENABLE_PREVIEWS = YES;
+ INFOPLIST_FILE = iosApp/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 14.1;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = org.chiachat.app;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 7555FFA7242A565B00829871 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 3D7A606AB0AD7636269BD9D0 /* Pods-ChiaChat.release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_ASSET_PATHS = "";
+ DEVELOPMENT_TEAM = 78ZJNJ7ZJW;
+ ENABLE_PREVIEWS = YES;
+ INFOPLIST_FILE = iosApp/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 14.1;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = org.chiachat.app;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 7555FF76242A565900829871 /* Build configuration list for PBXProject "ChiaChat" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 7555FFA3242A565B00829871 /* Debug */,
+ 7555FFA4242A565B00829871 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 7555FFA5242A565B00829871 /* Build configuration list for PBXNativeTarget "ChiaChat" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 7555FFA6242A565B00829871 /* Debug */,
+ 7555FFA7242A565B00829871 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 7555FF73242A565900829871 /* Project object */;
+}
diff --git a/iosApp/ChiaChat.xcodeproj/xcshareddata/xcschemes/ChiaChat.xcscheme b/iosApp/ChiaChat.xcodeproj/xcshareddata/xcschemes/ChiaChat.xcscheme
new file mode 100644
index 00000000..2e9f17ae
--- /dev/null
+++ b/iosApp/ChiaChat.xcodeproj/xcshareddata/xcschemes/ChiaChat.xcscheme
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/iosApp/ChiaChat.xcworkspace/contents.xcworkspacedata b/iosApp/ChiaChat.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 00000000..79fc8bd2
--- /dev/null
+++ b/iosApp/ChiaChat.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/iosApp/ChiaChat.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/iosApp/ChiaChat.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 00000000..18d98100
--- /dev/null
+++ b/iosApp/ChiaChat.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/iosApp/Configuration/TeamId.xcconfig b/iosApp/Configuration/TeamId.xcconfig
new file mode 100644
index 00000000..bf06eb27
--- /dev/null
+++ b/iosApp/Configuration/TeamId.xcconfig
@@ -0,0 +1 @@
+TEAM_ID=
diff --git a/iosApp/Podfile b/iosApp/Podfile
new file mode 100644
index 00000000..6a00cbc2
--- /dev/null
+++ b/iosApp/Podfile
@@ -0,0 +1,5 @@
+target 'ChiaChat' do
+ use_frameworks!
+ platform :ios, '14.1'
+ pod 'shared', :path => '../shared'
+end
\ No newline at end of file
diff --git a/iosApp/Podfile.lock b/iosApp/Podfile.lock
new file mode 100644
index 00000000..a87aeb44
--- /dev/null
+++ b/iosApp/Podfile.lock
@@ -0,0 +1,16 @@
+PODS:
+ - shared (1.0-SNAPSHOT)
+
+DEPENDENCIES:
+ - shared (from `../shared`)
+
+EXTERNAL SOURCES:
+ shared:
+ :path: "../shared"
+
+SPEC CHECKSUMS:
+ shared: d9d94ec92543b22346402b01c0a18449cd889bfd
+
+PODFILE CHECKSUM: a9425edeb81ed1c960f25f2ddc683bc2ba0e29cd
+
+COCOAPODS: 1.11.3
diff --git a/iosApp/build.gradle.kts b/iosApp/build.gradle.kts
deleted file mode 100644
index c069b89e..00000000
--- a/iosApp/build.gradle.kts
+++ /dev/null
@@ -1,99 +0,0 @@
-import org.jetbrains.compose.experimental.dsl.IOSDevices
-import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
-import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
-
-plugins {
- kotlin("multiplatform")
- id("org.jetbrains.compose") version Versions.composeMultiplatform
-}
-
-version = "1.0-SNAPSHOT"
-
-kotlin {
- iosX64("uikitX64") {
- binaries {
- executable() {
- entryPoint = "main"
- freeCompilerArgs +=
- listOf(
- "-linker-option",
- "-framework",
- "-linker-option",
- "Metal",
- "-linker-option",
- "-framework",
- "-linker-option",
- "CoreText",
- "-linker-option",
- "-framework",
- "-linker-option",
- "CoreGraphics")
- }
- }
- }
- iosArm64("uikitArm64") {
- binaries {
- executable() {
- entryPoint = "main"
- freeCompilerArgs +=
- listOf(
- "-linker-option",
- "-framework",
- "-linker-option",
- "Metal",
- "-linker-option",
- "-framework",
- "-linker-option",
- "CoreText",
- "-linker-option",
- "-framework",
- "-linker-option",
- "CoreGraphics")
- // TODO: the current compose binary surprises LLVM, so disable checks for now.
- freeCompilerArgs += "-Xdisable-phases=VerifyBitcode"
- }
- }
- }
-
- sourceSets {
- val commonMain by getting { dependencies { implementation(project(":ui")) } }
-
- val nativeMain by creating { dependsOn(commonMain) }
- val uikitMain by creating { dependsOn(nativeMain) }
- val uikitX64Main by getting { dependsOn(uikitMain) }
- val uikitArm64Main by getting { dependsOn(uikitMain) }
- }
-}
-
-compose.experimental {
- web.application {}
- uikit.application {
- bundleIdPrefix = "org.chiachat.app"
- projectName = "ChiaChat"
- deployConfigurations {
- simulator("IPhone13Pro") {
- // Usage: ./gradlew iosDeployIPhone8Debug
- device = IOSDevices.IPHONE_13_PRO
- }
- simulator("IPad") {
- // Usage: ./gradlew iosDeployIPadDebug
- device = IOSDevices.IPAD_MINI_6th_Gen
- }
- connectedDevice("Device") {
- // Usage: ./gradlew iosDeployDeviceRelease
- this.teamId = "***"
- }
- }
- }
-}
-
-tasks.withType { kotlinOptions.jvmTarget = "17" }
-
-kotlin {
- targets.withType {
- binaries.all {
- // TODO: the current compose binary surprises LLVM, so disable checks for now.
- freeCompilerArgs += "-Xdisable-phases=VerifyBitcode"
- }
- }
-}
diff --git a/iosApp/iosApp/Info.plist b/iosApp/iosApp/Info.plist
new file mode 100644
index 00000000..9a269f5e
--- /dev/null
+++ b/iosApp/iosApp/Info.plist
@@ -0,0 +1,48 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ $(PRODUCT_BUNDLE_PACKAGE_TYPE)
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+ LSRequiresIPhoneOS
+
+ UIApplicationSceneManifest
+
+ UIApplicationSupportsMultipleScenes
+
+
+ UILaunchScreen
+
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+
+
diff --git a/iosApp/iosApp/iosApp.swift b/iosApp/iosApp/iosApp.swift
new file mode 100644
index 00000000..b42016a6
--- /dev/null
+++ b/iosApp/iosApp/iosApp.swift
@@ -0,0 +1,15 @@
+import UIKit
+import shared
+
+@UIApplicationMain
+class AppDelegate: UIResponder, UIApplicationDelegate {
+ var window: UIWindow?
+
+ func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
+ window = UIWindow(frame: UIScreen.main.bounds)
+ let mainViewController = Main_iosKt.MainViewController()
+ window?.rootViewController = mainViewController
+ window?.makeKeyAndVisible()
+ return true
+ }
+}
diff --git a/iosApp/src/uikitMain/kotlin/IosAppModules.kt b/iosApp/src/uikitMain/kotlin/IosAppModules.kt
deleted file mode 100644
index afcedef6..00000000
--- a/iosApp/src/uikitMain/kotlin/IosAppModules.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.Dispatchers
-import org.koin.core.qualifier.named
-import org.koin.dsl.module
-
-class IosAppModules {
- val scopes = module {
- factory(named("ioScope")) { CoroutineScope(Dispatchers.Default) }
- factory(named("vmScope")) { CoroutineScope(Dispatchers.Default) }
- }
-
- val all = scopes
-}
diff --git a/iosApp/src/uikitMain/kotlin/main.uikit.kt b/iosApp/src/uikitMain/kotlin/main.uikit.kt
deleted file mode 100644
index ab1fb35b..00000000
--- a/iosApp/src/uikitMain/kotlin/main.uikit.kt
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright 2020-2022 JetBrains s.r.o. and respective authors and developers.
- * Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE.txt file.
- */
-
-// Use `xcodegen` first, then `open ./ComposeMinesweeper.xcodeproj` and then Run button in XCode.
-import androidx.compose.foundation.layout.*
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.unit.dp
-import androidx.compose.ui.window.Application
-import kotlinx.cinterop.*
-import kotlinx.coroutines.runBlocking
-import org.chiachat.app.SharedAppModules
-import org.chiachat.app.compose.ComposeAppModules
-import org.chiachat.app.compose.ComposeRoot
-import org.chiachat.app.db.PlatformDb
-import org.koin.core.context.startKoin
-import platform.Foundation.*
-import platform.UIKit.*
-
-fun main() {
- val args = emptyArray()
- memScoped {
- val argc = args.size + 1
- val argv = (arrayOf("skikoApp") + args).map { it.cstr.ptr }.toCValues()
- autoreleasepool { UIApplicationMain(argc, argv, null, NSStringFromClass(SkikoAppDelegate)) }
- }
-}
-
-class SkikoAppDelegate : UIResponder, UIApplicationDelegateProtocol {
- companion object : UIResponderMeta(), UIApplicationDelegateProtocolMeta
-
- @ObjCObjectBase.OverrideInit constructor() : super()
-
- private var _window: UIWindow? = null
- override fun window() = _window
- override fun setWindow(window: UIWindow?) {
- _window = window
- }
-
- override fun application(
- application: UIApplication,
- didFinishLaunchingWithOptions: Map?
- ): Boolean {
- runBlocking {
- val iosModules = IosAppModules()
- val composeModules = ComposeAppModules()
- val sharedModules = SharedAppModules(PlatformDb().getDriver())
-
- startKoin {
- modules(iosModules.all + composeModules.all + sharedModules.all)
- allowOverride(false)
- }
- }
- window = UIWindow(frame = UIScreen.mainScreen.bounds)
- val mainComponent = ComposeRoot()
- window!!.rootViewController =
- Application("chiachat") {
- Column {
- Spacer(modifier = Modifier.size(48.dp))
- mainComponent.View()
- }
- }
- window!!.makeKeyAndVisible()
- return true
- }
-}
diff --git a/kotlin-js-store/yarn.lock b/kotlin-js-store/yarn.lock
index 7e33332f..74ab099e 100644
--- a/kotlin-js-store/yarn.lock
+++ b/kotlin-js-store/yarn.lock
@@ -129,9 +129,11 @@
integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==
"@types/cors@^2.8.12":
- version "2.8.12"
- resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080"
- integrity sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==
+ version "2.8.13"
+ resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.13.tgz#b8ade22ba455a1b8cb3b5d3f35910fd204f84f94"
+ integrity sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==
+ dependencies:
+ "@types/node" "*"
"@types/eslint-scope@^3.7.3":
version "3.7.4"
@@ -142,9 +144,9 @@
"@types/estree" "*"
"@types/eslint@*":
- version "8.4.8"
- resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.8.tgz#720dd6a32b8219b9aba1a07b13e9d03b622695fd"
- integrity sha512-zUCKQI1bUCTi+0kQs5ZQzQ/XILWRLIlh15FXWNykJ+NG3TMKMVvwwC6GP3DR1Ylga15fB7iAExSzc4PNlR5i3w==
+ version "8.4.10"
+ resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.10.tgz#19731b9685c19ed1552da7052b6f668ed7eb64bb"
+ integrity sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==
dependencies:
"@types/estree" "*"
"@types/json-schema" "*"
@@ -196,9 +198,9 @@
integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==
"@types/node@*", "@types/node@>=10.0.0":
- version "18.11.7"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.7.tgz#8ccef136f240770c1379d50100796a6952f01f94"
- integrity sha512-LhFTglglr63mNXUSRYD8A+ZAIu5sFqNJ4Y2fPuY7UlrySJH87rRRlhtVmMHplmfk5WkoJGmDjE9oiTfyX94CpQ==
+ version "18.11.12"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.12.tgz#89e7f8aa8c88abf432f9bd594888144d7dba10aa"
+ integrity sha512-FgD3NtTAKvyMmD44T07zz2fEf+OKwutgBCEVM8GcvMGVGaDktiLNTDvPwC/LUe3PinMW+X6CuLOF2Ui1mAlSXg==
"@types/qs@*":
version "6.9.7"
@@ -427,6 +429,14 @@ acorn@^8.4.1, acorn@^8.5.0:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73"
integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==
+aggregate-error@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
+ integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==
+ dependencies:
+ clean-stack "^2.0.0"
+ indent-string "^4.0.0"
+
ajv-formats@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520"
@@ -457,9 +467,9 @@ ajv@^6.12.5:
uri-js "^4.2.2"
ajv@^8.0.0, ajv@^8.8.0:
- version "8.11.0"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f"
- integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==
+ version "8.11.2"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.2.tgz#aecb20b50607acf2569b6382167b65a96008bb78"
+ integrity sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==
dependencies:
fast-deep-equal "^3.1.1"
json-schema-traverse "^1.0.0"
@@ -476,11 +486,21 @@ ansi-html-community@^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-html@^0.0.7:
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e"
+ integrity sha512-JoAxEa1DfP9m2xfB/y2r/aKcwXNlltr4+0QSBC4TrLfcxyvepX2Pv0t/xpgGV5bGsDzCYV8SzjWgyCW0T9yYbA==
+
ansi-regex@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
+ansi-regex@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a"
+ integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
+
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"
@@ -489,9 +509,9 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0:
color-convert "^2.0.1"
anymatch@~3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
- integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
+ 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"
@@ -506,11 +526,23 @@ array-flatten@1.1.1:
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==
-array-flatten@^2.1.2:
+array-flatten@^2.1.0, array-flatten@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099"
integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==
+array-union@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
+ integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
+
+async@^2.6.4:
+ version "2.6.4"
+ resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221"
+ integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==
+ dependencies:
+ lodash "^4.17.14"
+
balanced-match@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
@@ -559,6 +591,18 @@ bonjour-service@^1.0.11:
fast-deep-equal "^3.1.3"
multicast-dns "^7.2.5"
+bonjour@^3.5.0:
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5"
+ integrity sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==
+ dependencies:
+ array-flatten "^2.1.0"
+ deep-equal "^1.0.1"
+ dns-equal "^1.0.0"
+ dns-txt "^2.0.2"
+ multicast-dns "^6.0.1"
+ multicast-dns-service-types "^1.1.0"
+
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
@@ -601,6 +645,11 @@ buffer-from@^1.0.0:
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
+buffer-indexof@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c"
+ integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==
+
bytes@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
@@ -611,7 +660,7 @@ bytes@3.1.2:
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
-call-bind@^1.0.0:
+call-bind@^1.0.0, call-bind@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
@@ -625,9 +674,9 @@ camelcase@^6.0.0:
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
caniuse-lite@^1.0.30001400:
- version "1.0.30001426"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001426.tgz#58da20446ccd0cb1dfebd11d2350c907ee7c2eaa"
- integrity sha512-n7cosrHLl8AWt0wwZw/PJZgUg3lV0gk9LMI7ikGJwhyhgsd2Nb65vKvmSexCqq/J7rbH3mFG6yZZiPR5dLPW5A==
+ version "1.0.30001436"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001436.tgz#22d7cbdbbbb60cdc4ca1030ccd6dea9f5de4848b"
+ integrity sha512-ZmWkKsnC2ifEPoWUvSAIGyOYwT+keAaaWPHiQ9DfMqS1t6tfuyFYoWR78TeZtznkEQ64+vGXH9cZrElwR2Mrxg==
chalk@^4.1.0:
version "4.1.2"
@@ -657,6 +706,11 @@ chrome-trace-event@^1.0.2:
resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac"
integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==
+clean-stack@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
+ integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
+
cliui@^7.0.2:
version "7.0.4"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
@@ -687,6 +741,11 @@ color-name@~1.1.4:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+colorette@^1.2.2:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40"
+ integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==
+
colorette@^2.0.10, colorette@^2.0.14:
version "2.0.19"
resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798"
@@ -803,25 +862,6 @@ cross-spawn@^7.0.3:
shebang-command "^2.0.0"
which "^2.0.1"
-css-loader@6.7.1:
- version "6.7.1"
- resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.1.tgz#e98106f154f6e1baf3fc3bc455cb9981c1d5fd2e"
- integrity sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==
- dependencies:
- icss-utils "^5.1.0"
- postcss "^8.4.7"
- postcss-modules-extract-imports "^3.0.0"
- postcss-modules-local-by-default "^4.0.0"
- postcss-modules-scope "^3.0.0"
- postcss-modules-values "^4.0.0"
- postcss-value-parser "^4.2.0"
- semver "^7.3.5"
-
-cssesc@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
- integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
-
custom-event@~1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425"
@@ -846,12 +886,31 @@ debug@4.3.4, debug@^4.1.0, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2:
dependencies:
ms "2.1.2"
+debug@^3.2.7:
+ version "3.2.7"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
+ integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
+ dependencies:
+ ms "^2.1.1"
+
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:
+deep-equal@^1.0.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a"
+ integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==
+ dependencies:
+ is-arguments "^1.0.4"
+ is-date-object "^1.0.1"
+ is-regex "^1.0.4"
+ object-is "^1.0.1"
+ object-keys "^1.1.1"
+ regexp.prototype.flags "^1.2.0"
+
+default-gateway@^6.0.0, 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==
@@ -863,6 +922,28 @@ define-lazy-prop@^2.0.0:
resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f"
integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==
+define-properties@^1.1.3:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1"
+ integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==
+ dependencies:
+ has-property-descriptors "^1.0.0"
+ object-keys "^1.1.1"
+
+del@^6.0.0:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a"
+ integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==
+ dependencies:
+ globby "^11.0.1"
+ graceful-fs "^4.2.4"
+ is-glob "^4.0.1"
+ is-path-cwd "^2.2.0"
+ is-path-inside "^3.0.2"
+ p-map "^4.0.0"
+ rimraf "^3.0.2"
+ slash "^3.0.0"
+
depd@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
@@ -905,6 +986,14 @@ dns-equal@^1.0.0:
resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==
+dns-packet@^1.3.1:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f"
+ integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==
+ dependencies:
+ ip "^1.1.0"
+ safe-buffer "^5.0.1"
+
dns-packet@^5.2.2:
version "5.4.0"
resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.4.0.tgz#1f88477cf9f27e78a213fb6d118ae38e759a879b"
@@ -912,6 +1001,13 @@ dns-packet@^5.2.2:
dependencies:
"@leichtgewicht/ip-codec" "^2.0.1"
+dns-txt@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6"
+ integrity sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==
+ dependencies:
+ buffer-indexof "^1.0.0"
+
dom-serialize@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b"
@@ -955,10 +1051,10 @@ engine.io-parser@~5.0.3:
resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.0.4.tgz#0b13f704fa9271b3ec4f33112410d8f3f41d0fc0"
integrity sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==
-engine.io@~6.2.0:
- version "6.2.0"
- resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.2.0.tgz#003bec48f6815926f2b1b17873e576acd54f41d0"
- integrity sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==
+engine.io@~6.2.1:
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.2.1.tgz#e3f7826ebc4140db9bbaa9021ad6b1efb175878f"
+ integrity sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==
dependencies:
"@types/cookie" "^0.4.1"
"@types/cors" "^2.8.12"
@@ -972,9 +1068,9 @@ engine.io@~6.2.0:
ws "~8.2.3"
enhanced-resolve@^5.9.3:
- version "5.10.0"
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz#0dc579c3bb2a1032e357ac45b8f3a6f3ad4fb1e6"
- integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==
+ version "5.12.0"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz#300e1c90228f5b570c4d35babf263f6da7155634"
+ integrity sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==
dependencies:
graceful-fs "^4.2.4"
tapable "^2.2.0"
@@ -1069,7 +1165,7 @@ execa@^5.0.0:
signal-exit "^3.0.3"
strip-final-newline "^2.0.0"
-express@^4.17.3:
+express@^4.17.1, express@^4.17.3:
version "4.18.2"
resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59"
integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==
@@ -1116,7 +1212,7 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
-fast-glob@^3.2.11:
+fast-glob@^3.2.11, fast-glob@^3.2.9:
version "3.2.12"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80"
integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==
@@ -1138,9 +1234,9 @@ fastest-levenshtein@^1.0.12:
integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==
fastq@^1.6.0:
- version "1.13.0"
- resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c"
- integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==
+ version "1.14.0"
+ resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.14.0.tgz#107f69d7295b11e0fccc264e1fc6389f623731ce"
+ integrity sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==
dependencies:
reusify "^1.0.4"
@@ -1259,12 +1355,17 @@ function-bind@^1.1.1:
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+functions-have-names@^1.2.2:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
+ integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
+
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.0.2:
+get-intrinsic@^1.0.2, get-intrinsic@^1.1.1:
version "1.1.3"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385"
integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==
@@ -1321,6 +1422,18 @@ glob@^7.1.3, glob@^7.1.7:
once "^1.3.0"
path-is-absolute "^1.0.0"
+globby@^11.0.1:
+ version "11.1.0"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
+ integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
+ dependencies:
+ array-union "^2.1.0"
+ dir-glob "^3.0.1"
+ fast-glob "^3.2.9"
+ ignore "^5.2.0"
+ merge2 "^1.4.1"
+ slash "^3.0.0"
+
globby@^13.1.1:
version "13.1.2"
resolved "https://registry.yarnpkg.com/globby/-/globby-13.1.2.tgz#29047105582427ab6eca4f905200667b056da515"
@@ -1352,11 +1465,25 @@ has-flag@^4.0.0:
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
-has-symbols@^1.0.3:
+has-property-descriptors@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861"
+ integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==
+ dependencies:
+ get-intrinsic "^1.1.1"
+
+has-symbols@^1.0.2, has-symbols@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
+has-tostringtag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25"
+ integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==
+ dependencies:
+ has-symbols "^1.0.2"
+
has@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
@@ -1415,7 +1542,7 @@ http-parser-js@>=0.5.1:
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:
+http-proxy-middleware@^2.0.0, http-proxy-middleware@^2.0.3:
version "2.0.6"
resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f"
integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==
@@ -1454,15 +1581,10 @@ iconv-lite@^0.6.3:
dependencies:
safer-buffer ">= 2.1.2 < 3.0.0"
-icss-utils@^5.0.0, icss-utils@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae"
- integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==
-
ignore@^5.2.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
- integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.1.tgz#c2b1f76cb999ede1502f3a226a9310fdfe88d46c"
+ integrity sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==
import-local@^3.0.2:
version "3.1.0"
@@ -1472,6 +1594,11 @@ import-local@^3.0.2:
pkg-dir "^4.2.0"
resolve-cwd "^3.0.0"
+indent-string@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
+ integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
+
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
@@ -1490,12 +1617,32 @@ inherits@2.0.3:
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==
+internal-ip@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-6.2.0.tgz#d5541e79716e406b74ac6b07b856ef18dc1621c1"
+ integrity sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg==
+ dependencies:
+ default-gateway "^6.0.0"
+ ipaddr.js "^1.9.1"
+ is-ip "^3.1.0"
+ p-event "^4.2.0"
+
interpret@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9"
integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==
-ipaddr.js@1.9.1:
+ip-regex@^4.0.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5"
+ integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==
+
+ip@^1.1.0:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48"
+ integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==
+
+ipaddr.js@1.9.1, 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==
@@ -1505,6 +1652,14 @@ ipaddr.js@^2.0.1:
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0"
integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==
+is-arguments@^1.0.4:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b"
+ integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
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"
@@ -1519,6 +1674,13 @@ is-core-module@^2.9.0:
dependencies:
has "^1.0.3"
+is-date-object@^1.0.1:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f"
+ integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
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"
@@ -1541,11 +1703,28 @@ is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
dependencies:
is-extglob "^2.1.1"
+is-ip@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-3.1.0.tgz#2ae5ddfafaf05cb8008a62093cf29734f657c5d8"
+ integrity sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==
+ dependencies:
+ ip-regex "^4.0.0"
+
is-number@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+is-path-cwd@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb"
+ integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==
+
+is-path-inside@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
+ integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
+
is-plain-obj@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287"
@@ -1563,6 +1742,14 @@ is-plain-object@^2.0.4:
dependencies:
isobject "^3.0.1"
+is-regex@^1.0.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
+ integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
is-stream@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
@@ -1722,7 +1909,7 @@ locate-path@^6.0.0:
dependencies:
p-locate "^5.0.0"
-lodash@^4.17.15, lodash@^4.17.21:
+lodash@^4.17.14, 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==
@@ -1736,9 +1923,9 @@ log-symbols@4.1.0:
is-unicode-supported "^0.1.0"
log4js@^6.4.1:
- version "6.7.0"
- resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.7.0.tgz#fff671a74b2f6e956d135c3c756c79072809a23b"
- integrity sha512-KA0W9ffgNBLDj6fZCq/lRbgR6ABAodRIDHrZnS48vOtfKa4PzWImb0Md1lmGCdO3n3sbCm/n1/WmrNlZ8kCI3Q==
+ version "6.7.1"
+ resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.7.1.tgz#06e12b1ac915dd1067146ffad8215f666f7d2c51"
+ integrity sha512-lzbd0Eq1HRdWM2abSD7mk6YIVY0AogGJzb/z+lqzRk+8+XJP+M6L1MS5FUSc3jjGru4dbKjEMJmqlsoYYpuivQ==
dependencies:
date-format "^4.0.14"
debug "^4.3.4"
@@ -1746,22 +1933,15 @@ log4js@^6.4.1:
rfdc "^1.3.0"
streamroller "^3.1.3"
-lru-cache@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
- integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
- dependencies:
- yallist "^4.0.0"
-
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.4.8"
- resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.8.tgz#4204fbd4cb72e2bbcf5941d784c6b6ce2be3dd52"
- integrity sha512-E8QAFfd4csESWOqKIpN+khILPFSAZwPR9S+DO/5UtJNcuanF1jLZz0oWUAPF7xd2c1r6dGjGx+jH1st+MFWufA==
+ version "3.4.12"
+ resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.12.tgz#d00f8ad8dab132dc277c659dc85bfd14b07d03bd"
+ integrity sha512-BcjuQn6vfqP+k100e0E9m61Hyqa//Brp+I3f0OBmN0ATHlFA8vx3Lt8z57R3u2bPqe3WGDBC+nF72fTH7isyEw==
dependencies:
fs-monkey "^1.0.3"
@@ -1844,7 +2024,7 @@ minimist@^1.2.3, minimist@^1.2.6:
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18"
integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==
-mkdirp@^0.5.5:
+mkdirp@^0.5.5, mkdirp@^0.5.6:
version "0.5.6"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
@@ -1889,11 +2069,24 @@ ms@2.1.2:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
-ms@2.1.3:
+ms@2.1.3, ms@^2.1.1:
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-service-types@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
+ integrity sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==
+
+multicast-dns@^6.0.1:
+ version "6.2.3"
+ resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229"
+ integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==
+ dependencies:
+ dns-packet "^1.3.1"
+ thunky "^1.0.2"
+
multicast-dns@^7.2.5:
version "7.2.5"
resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced"
@@ -1907,11 +2100,6 @@ nanoid@3.3.3:
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25"
integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==
-nanoid@^3.3.4:
- version "3.3.4"
- resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab"
- integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==
-
negotiator@0.6.3:
version "0.6.3"
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
@@ -1929,6 +2117,11 @@ node-fetch@2.6.7:
dependencies:
whatwg-url "^5.0.0"
+node-forge@^0.10.0:
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3"
+ integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==
+
node-forge@^1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3"
@@ -1961,6 +2154,19 @@ object-inspect@^1.9.0:
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea"
integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==
+object-is@^1.0.1:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac"
+ integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+
+object-keys@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
+
obuf@^1.0.0, obuf@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
@@ -2008,6 +2214,18 @@ open@^8.0.9:
is-docker "^2.1.1"
is-wsl "^2.2.0"
+p-event@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/p-event/-/p-event-4.2.0.tgz#af4b049c8acd91ae81083ebd1e6f5cae2044c1b5"
+ integrity sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==
+ dependencies:
+ p-timeout "^3.1.0"
+
+p-finally@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
+ integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==
+
p-limit@^2.2.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
@@ -2036,6 +2254,13 @@ p-locate@^5.0.0:
dependencies:
p-limit "^3.0.2"
+p-map@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b"
+ integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==
+ dependencies:
+ aggregate-error "^3.0.0"
+
p-retry@^4.5.0:
version "4.6.2"
resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16"
@@ -2044,6 +2269,13 @@ p-retry@^4.5.0:
"@types/retry" "0.12.0"
retry "^0.13.1"
+p-timeout@^3.1.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe"
+ integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==
+ dependencies:
+ p-finally "^1.0.0"
+
p-try@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
@@ -2101,55 +2333,14 @@ pkg-dir@^4.2.0:
dependencies:
find-up "^4.0.0"
-postcss-modules-extract-imports@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d"
- integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==
-
-postcss-modules-local-by-default@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c"
- integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==
- dependencies:
- icss-utils "^5.0.0"
- postcss-selector-parser "^6.0.2"
- postcss-value-parser "^4.1.0"
-
-postcss-modules-scope@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06"
- integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==
- dependencies:
- postcss-selector-parser "^6.0.4"
-
-postcss-modules-values@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c"
- integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==
- dependencies:
- icss-utils "^5.0.0"
-
-postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4:
- version "6.0.10"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d"
- integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==
+portfinder@^1.0.28:
+ version "1.0.32"
+ resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.32.tgz#2fe1b9e58389712429dc2bea5beb2146146c7f81"
+ integrity sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==
dependencies:
- cssesc "^3.0.0"
- util-deprecate "^1.0.2"
-
-postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
- integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
-
-postcss@^8.4.7:
- version "8.4.18"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.18.tgz#6d50046ea7d3d66a85e0e782074e7203bc7fbca2"
- integrity sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==
- dependencies:
- nanoid "^3.3.4"
- picocolors "^1.0.0"
- source-map-js "^1.0.2"
+ async "^2.6.4"
+ debug "^3.2.7"
+ mkdirp "^0.5.6"
process-nextick-args@~2.0.0:
version "2.0.1"
@@ -2164,6 +2355,11 @@ proxy-addr@~2.0.7:
forwarded "0.2.0"
ipaddr.js "1.9.1"
+punycode@1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
+ integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==
+
punycode@^2.1.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
@@ -2181,6 +2377,11 @@ qs@6.11.0:
dependencies:
side-channel "^1.0.4"
+querystring@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
+ integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==
+
queue-microtask@^1.2.2:
version "1.2.3"
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
@@ -2244,6 +2445,15 @@ rechoir@^0.7.0:
dependencies:
resolve "^1.9.0"
+regexp.prototype.flags@^1.2.0:
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac"
+ integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+ functions-have-names "^1.2.2"
+
require-directory@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
@@ -2314,7 +2524,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
-safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0:
+safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, 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==
@@ -2348,6 +2558,13 @@ select-hose@^2.0.0:
resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==
+selfsigned@^1.10.11:
+ version "1.10.14"
+ resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.14.tgz#ee51d84d9dcecc61e07e4aba34f229ab525c1574"
+ integrity sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==
+ dependencies:
+ node-forge "^0.10.0"
+
selfsigned@^2.0.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.1.1.tgz#18a7613d714c0cd3385c48af0075abf3f266af61"
@@ -2355,13 +2572,6 @@ selfsigned@^2.0.1:
dependencies:
node-forge "^1"
-semver@^7.3.5:
- version "7.3.8"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798"
- integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==
- dependencies:
- lru-cache "^6.0.0"
-
send@0.18.0:
version "0.18.0"
resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be"
@@ -2454,6 +2664,11 @@ signal-exit@^3.0.3:
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
+slash@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
+ integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
+
slash@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7"
@@ -2464,7 +2679,7 @@ socket.io-adapter@~2.4.0:
resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz#b50a4a9ecdd00c34d4c8c808224daa1a786152a6"
integrity sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==
-socket.io-parser@~4.2.0:
+socket.io-parser@~4.2.1:
version "4.2.1"
resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.1.tgz#01c96efa11ded938dcb21cbe590c26af5eff65e5"
integrity sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==
@@ -2473,18 +2688,18 @@ socket.io-parser@~4.2.0:
debug "~4.3.1"
socket.io@^4.4.1:
- version "4.5.3"
- resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.5.3.tgz#44dffea48d7f5aa41df4a66377c386b953bc521c"
- integrity sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg==
+ version "4.5.4"
+ resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.5.4.tgz#a4513f06e87451c17013b8d13fdfaf8da5a86a90"
+ integrity sha512-m3GC94iK9MfIEeIBfbhJs5BqFibMtkRk8ZpKwG2QwxV0m/eEhPIV4ara6XCF1LWNAus7z58RodiZlAH71U3EhQ==
dependencies:
accepts "~1.3.4"
base64id "~2.0.0"
debug "~4.3.2"
- engine.io "~6.2.0"
+ engine.io "~6.2.1"
socket.io-adapter "~2.4.0"
- socket.io-parser "~4.2.0"
+ socket.io-parser "~4.2.1"
-sockjs@^0.3.24:
+sockjs@^0.3.21, 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==
@@ -2597,6 +2812,13 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1:
dependencies:
ansi-regex "^5.0.1"
+strip-ansi@^7.0.0:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2"
+ integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==
+ dependencies:
+ ansi-regex "^6.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"
@@ -2607,11 +2829,6 @@ strip-json-comments@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==
-style-loader@3.3.1:
- version "3.3.1"
- resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.1.tgz#057dfa6b3d4d7c7064462830f9113ed417d38575"
- integrity sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==
-
supports-color@8.1.1, supports-color@^8.0.0:
version "8.1.1"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
@@ -2648,9 +2865,9 @@ terser-webpack-plugin@^5.1.3:
terser "^5.14.1"
terser@^5.14.1:
- version "5.15.1"
- resolved "https://registry.yarnpkg.com/terser/-/terser-5.15.1.tgz#8561af6e0fd6d839669c73b92bdd5777d870ed6c"
- integrity sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==
+ version "5.16.1"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.1.tgz#5af3bc3d0f24241c7fb2024199d5c461a1075880"
+ integrity sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==
dependencies:
"@jridgewell/source-map" "^0.3.2"
acorn "^8.5.0"
@@ -2729,7 +2946,15 @@ uri-js@^4.2.2:
dependencies:
punycode "^2.1.0"
-util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
+url@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
+ integrity sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==
+ dependencies:
+ punycode "1.3.2"
+ querystring "0.2.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==
@@ -2792,7 +3017,7 @@ webpack-cli@4.10.0:
rechoir "^0.7.0"
webpack-merge "^5.7.3"
-webpack-dev-middleware@^5.3.1:
+webpack-dev-middleware@^5.0.0, webpack-dev-middleware@^5.3.1:
version "5.3.3"
resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f"
integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==
@@ -2803,6 +3028,37 @@ webpack-dev-middleware@^5.3.1:
range-parser "^1.2.1"
schema-utils "^4.0.0"
+webpack-dev-server@4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.0.0.tgz#fb4906e91182154bba54a66e6e06f84c1e3c0a80"
+ integrity sha512-ya5cjoBSf3LqrshZn2HMaRZQx8YRNBE+tx+CQNFGaLLHrvs4Y1aik0sl5SFhLz2cW1O9/NtyaZhthc+8UiuvkQ==
+ dependencies:
+ ansi-html "^0.0.7"
+ bonjour "^3.5.0"
+ chokidar "^3.5.1"
+ colorette "^1.2.2"
+ compression "^1.7.4"
+ connect-history-api-fallback "^1.6.0"
+ del "^6.0.0"
+ express "^4.17.1"
+ graceful-fs "^4.2.6"
+ html-entities "^2.3.2"
+ http-proxy-middleware "^2.0.0"
+ internal-ip "^6.2.0"
+ ipaddr.js "^2.0.1"
+ open "^8.0.9"
+ p-retry "^4.5.0"
+ portfinder "^1.0.28"
+ schema-utils "^3.1.0"
+ selfsigned "^1.10.11"
+ serve-index "^1.9.1"
+ sockjs "^0.3.21"
+ spdy "^4.0.2"
+ strip-ansi "^7.0.0"
+ url "^0.11.0"
+ webpack-dev-middleware "^5.0.0"
+ ws "^8.1.0"
+
webpack-dev-server@4.9.2:
version "4.9.2"
resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.9.2.tgz#c188db28c7bff12f87deda2a5595679ebbc3c9bc"
@@ -2953,10 +3209,10 @@ ws@8.5.0:
resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f"
integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==
-ws@^8.4.2:
- version "8.10.0"
- resolved "https://registry.yarnpkg.com/ws/-/ws-8.10.0.tgz#00a28c09dfb76eae4eb45c3b565f771d6951aa51"
- integrity sha512-+s49uSmZpvtAsd2h37vIPy1RBusaLawVe8of+GyEPsaJTCMpj/2v8NpeK1SHXjBlQ95lQTmQofOJnFiLoaN3yw==
+ws@^8.1.0, ws@^8.4.2:
+ version "8.11.0"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143"
+ integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==
ws@~8.2.3:
version "8.2.3"
@@ -2968,11 +3224,6 @@ y18n@^5.0.5:
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
-yallist@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
- integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
-
yargs-parser@20.2.4:
version "20.2.4"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54"
diff --git a/package.space.kts b/package.space.kts
deleted file mode 100644
index 6ab5985c..00000000
--- a/package.space.kts
+++ /dev/null
@@ -1,5 +0,0 @@
-job("Check Pull Request") {
- container(displayName = "Check Pull Request", image = "gradle:jdk17-jammy") {
- sequential { kotlinScript { api -> api.gradle("build") } }
- }
-}
diff --git a/run-configurations.png b/run-configurations.png
new file mode 100644
index 00000000..0840602f
Binary files /dev/null and b/run-configurations.png differ
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 8051453e..79cb592a 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -1,26 +1,28 @@
pluginManagement {
- repositories {
- mavenCentral()
- google()
- gradlePluginPortal()
- maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
- maven("https://maven.hq.hydraulic.software")
- }
+ repositories {
+ gradlePluginPortal()
+ maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
+ google()
+ }
+
+ plugins {
+ val kotlinVersion = extra["kotlin.version"] as String
+ val agpVersion = extra["agp.version"] as String
+ val composeVersion = extra["compose.version"] as String
+
+ kotlin("jvm").version(kotlinVersion)
+ kotlin("multiplatform").version(kotlinVersion)
+ kotlin("android").version(kotlinVersion)
+ id("com.android.base").version(agpVersion)
+ id("com.android.application").version(agpVersion)
+ id("com.android.library").version(agpVersion)
+ id("org.jetbrains.compose").version(composeVersion)
+ }
}
rootProject.name = "chiachat"
-// include(":androidApp")
-
include(":androidApp")
-
-include(":iosApp")
-
+include(":shared")
include(":desktopApp")
-
include(":webApp")
-
-include(":ui")
-
-include(":shared")
-
diff --git a/shared/build.gradle.kts b/shared/build.gradle.kts
index 3ec05104..535bd7a5 100644
--- a/shared/build.gradle.kts
+++ b/shared/build.gradle.kts
@@ -1,110 +1,92 @@
plugins {
kotlin("multiplatform")
- id("app.cash.sqldelight") version "2.0.0-alpha04"
+ kotlin("native.cocoapods")
id("com.android.library")
- id(Plugin.Id.kover)
- // id("com.google.devtools.ksp") version "1.7.20-1.0.8"
+ id("org.jetbrains.compose")
}
-version = "1.0"
+version = "1.0-SNAPSHOT"
kotlin {
- jvm()
- js(IR) { browser {} }
android()
- iosArm64()
- iosX64()
+
+ jvm("desktop")
+ js(IR) { browser() }
+
+ ios()
iosSimulatorArm64()
+ cocoapods {
+ summary = "Shared code for the sample"
+ homepage = "https://github.com/JetBrains/compose-jb"
+ ios.deploymentTarget = "14.1"
+ podfile = project.file("../iosApp/Podfile")
+ framework {
+ baseName = "shared"
+ isStatic = true
+ }
+ }
+
sourceSets {
val commonMain by getting {
dependencies {
+ implementation(compose.runtime)
+ implementation(compose.foundation)
+ implementation(compose.material)
+// implementation(Deps.Compose.circuit)
api(Deps.Log.kermit)
api(Deps.Kotlinx.coroutines)
api(Deps.Koin.core)
api(Deps.Kor.korio)
- api(Deps.Matrix.Client)
+
+ implementation(Deps.Matrix.Client)
with(Deps.Utility) {
api(mpsettings)
api(mpsettingsNoArgs)
+ api(compose.ui)
}
}
}
- val commonTest by getting {
+ val androidMain by getting {
dependencies {
- implementation(kotlin("test"))
- // implementation("io.mockative:mockative:1.2.3")
- with(Deps.Test) {
- implementation(koin)
- implementation(coroutines)
- }
+ implementation("androidx.appcompat:appcompat:1.5.1")
+ implementation("androidx.core:core-ktx:1.8.0")
}
}
- val jvmMain by getting { dependencies { implementation(Deps.Sqldelight.sqliteJvmDriver) } }
- val jvmTest by getting {}
- val jsMain by getting { dependencies { implementation(Deps.Sqldelight.sqliteJsDriver) } }
- val jsTest by getting
- val androidMain by getting {
- dependencies { implementation(Deps.Sqldelight.sqliteAndroidDriver) }
- }
- val androidTest by getting { dependencies { implementation("junit:junit:4.13.2") } }
- val iosX64Main by getting
- val iosArm64Main by getting
- val iosSimulatorArm64Main by getting
- val iosMain by creating {
- dependsOn(commonMain)
- iosX64Main.dependsOn(this)
- iosArm64Main.dependsOn(this)
- iosSimulatorArm64Main.dependsOn(this)
-
- dependencies { implementation(Deps.Sqldelight.sqliteNativeDriver) }
+ val iosMain by getting
+ val iosTest by getting
+ val iosSimulatorArm64Main by getting {
+ dependsOn(iosMain)
}
- val iosX64Test by getting
- val iosArm64Test by getting
- val iosSimulatorArm64Test by getting
- val iosTest by creating {
- dependsOn(commonTest)
- iosX64Test.dependsOn(this)
- iosArm64Test.dependsOn(this)
- iosSimulatorArm64Test.dependsOn(this)
+ val iosSimulatorArm64Test by getting {
+ dependsOn(iosTest)
}
- }
-}
-dependencies {
- configurations
- .filter { it.name.startsWith("ksp") && it.name.contains("Test") }
- .forEach {
- add(it.name, "io.mockative:mockative-processor:1.2.3")
+ val desktopMain by getting {
+ dependencies {
+ implementation(compose.desktop.common)
+ }
}
-}
-
-sqldelight {
- database("ChiaChatDb") { // This will be the name of the generated database class.
- packageName = "org.chiachat.app"
- dialect(Deps.Sqldelight.sqliteDialect)
- deriveSchemaFromMigrations = true
- verifyMigrations = true
+ val jsMain by getting {
+ dependencies {
+ npm("@matrix-org/olm", "3.2.13")
+ }
+ }
+ val jsTest by getting {}
}
}
android {
compileSdk = 33
+ sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
+ sourceSets["main"].res.srcDirs("src/androidMain/res")
+ sourceSets["main"].assets.srcDirs("src/commonMain/resources")
defaultConfig {
- minSdk = 26
+ minSdk = 24
targetSdk = 33
- testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
compileOptions {
- sourceCompatibility = JavaVersion.VERSION_17
- targetCompatibility = JavaVersion.VERSION_17
- }
-
- sourceSets {
- named("main") {
- manifest.srcFile("src/androidMain/AndroidManifest.xml")
- res.srcDirs("src/androidMain/res")
- }
+ sourceCompatibility = JavaVersion.VERSION_1_8
+ targetCompatibility = JavaVersion.VERSION_1_8
}
- namespace = "org.chiachat.app.shared"
}
diff --git a/shared/shared.podspec b/shared/shared.podspec
index dc7dcd0d..10ff481c 100644
--- a/shared/shared.podspec
+++ b/shared/shared.podspec
@@ -1,14 +1,14 @@
Pod::Spec.new do |spec|
spec.name = 'shared'
- spec.version = '1.0'
- spec.homepage = 'Link to the shared Module homepage'
+ spec.version = '1.0-SNAPSHOT'
+ spec.homepage = 'https://github.com/JetBrains/compose-jb'
spec.source = { :http=> ''}
spec.authors = ''
spec.license = ''
- spec.summary = 'Some description for the shared Module'
+ spec.summary = 'Shared code for the sample'
spec.vendored_frameworks = 'build/cocoapods/framework/shared.framework'
spec.libraries = 'c++'
- spec.ios.deployment_target = '14.0'
+ spec.ios.deployment_target = '14.1'
spec.pod_target_xcconfig = {
@@ -22,8 +22,8 @@ Pod::Spec.new do |spec|
:execution_position => :before_compile,
:shell_path => '/bin/sh',
:script => <<-SCRIPT
- if [ "YES" = "$COCOAPODS_SKIP_KOTLIN_BUILD" ]; then
- echo "Skipping Gradle build task invocation due to COCOAPODS_SKIP_KOTLIN_BUILD environment variable set to \"YES\""
+ if [ "YES" = "$OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED" ]; then
+ echo "Skipping Gradle build task invocation due to OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED environment variable set to \"YES\""
exit 0
fi
set -ev
diff --git a/shared/src/androidMain/kotlin/org/chiachat/app/AndroidRoot.kt b/shared/src/androidMain/kotlin/org/chiachat/app/AndroidRoot.kt
new file mode 100644
index 00000000..38b782b8
--- /dev/null
+++ b/shared/src/androidMain/kotlin/org/chiachat/app/AndroidRoot.kt
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2020-2021 JetBrains s.r.o. and respective authors and developers.
+ * Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE.txt file.
+ */
+
+import android.content.Context
+import androidx.compose.runtime.Composable
+import com.soywiz.korio.android.AndroidCoroutineContext
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import org.chiachat.app.SharedAppModules
+import org.chiachat.app.ui.ComposeAppModules
+import org.chiachat.app.ui.ComposeRoot
+import org.koin.core.KoinApplication
+import org.koin.core.context.startKoin
+import org.koin.core.qualifier.named
+import org.koin.dsl.module
+
+
+class AndroidRoot(androidContext: Context) {
+ private val root = ComposeRoot()
+ private val androidModule = module {
+ factory(named("ioScope")) {
+ CoroutineScope(Dispatchers.IO + AndroidCoroutineContext(androidContext))
+ }
+ factory(named("vmScope")) {
+ CoroutineScope(Dispatchers.Default + AndroidCoroutineContext(androidContext))
+ }
+ }
+
+ init {
+ startKoin {
+ val composeModules = ComposeAppModules()
+ val sharedModules = SharedAppModules()
+ modules(androidModule + composeModules.all + sharedModules.all)
+ allowOverride(false)
+ }
+ }
+
+ @Composable
+ fun View() {
+ root.View()
+ }
+
+}
\ No newline at end of file
diff --git a/shared/src/androidMain/kotlin/org/chiachat/app/db/PlatformDb.kt b/shared/src/androidMain/kotlin/org/chiachat/app/db/PlatformDb.kt
index 2409592d..29cf4931 100644
--- a/shared/src/androidMain/kotlin/org/chiachat/app/db/PlatformDb.kt
+++ b/shared/src/androidMain/kotlin/org/chiachat/app/db/PlatformDb.kt
@@ -1,16 +1,16 @@
package org.chiachat.app.db
import android.content.Context
-import app.cash.sqldelight.db.SqlDriver
-import app.cash.sqldelight.driver.android.AndroidSqliteDriver
-import org.chiachat.app.ChiaChatDb
+//import app.cash.sqldelight.db.SqlDriver
+//import app.cash.sqldelight.driver.android.AndroidSqliteDriver
+//import org.chiachat.app.ChiaChatDb
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject
-actual class PlatformDb : KoinComponent {
- val context: Context by inject()
- actual suspend fun getDriver(): SqlDriver {
- val driver: SqlDriver = AndroidSqliteDriver(ChiaChatDb.Schema, context, "chiachat.db")
- return driver
- }
-}
+//actual class PlatformDb : KoinComponent {
+// val context: Context by inject()
+// actual suspend fun getDriver(): SqlDriver {
+// val driver: SqlDriver = AndroidSqliteDriver(ChiaChatDb.Schema, context, "chiachat.db")
+// return driver
+// }
+//}
diff --git a/ui/src/androidMain/kotlin/org/chiachat/app/compose/util/readImageBitmap.kt b/shared/src/androidMain/kotlin/org/chiachat/app/util/readImageBitmap.kt
similarity index 89%
rename from ui/src/androidMain/kotlin/org/chiachat/app/compose/util/readImageBitmap.kt
rename to shared/src/androidMain/kotlin/org/chiachat/app/util/readImageBitmap.kt
index 8ac524b2..37380548 100644
--- a/ui/src/androidMain/kotlin/org/chiachat/app/compose/util/readImageBitmap.kt
+++ b/shared/src/androidMain/kotlin/org/chiachat/app/util/readImageBitmap.kt
@@ -1,4 +1,4 @@
-package org.chiachat.app.compose.util
+package org.chiachat.app.util
import android.graphics.BitmapFactory
import androidx.compose.ui.graphics.ImageBitmap
diff --git a/shared/src/commonMain/kotlin/org/chiachat/app/SharedAppModules.kt b/shared/src/commonMain/kotlin/org/chiachat/app/SharedAppModules.kt
index 1c2bd7a4..1ec1d489 100644
--- a/shared/src/commonMain/kotlin/org/chiachat/app/SharedAppModules.kt
+++ b/shared/src/commonMain/kotlin/org/chiachat/app/SharedAppModules.kt
@@ -1,24 +1,24 @@
package org.chiachat.app
-import app.cash.sqldelight.db.SqlDriver
+//import app.cash.sqldelight.db.SqlDriver
import co.touchlab.kermit.Logger
-import org.chiachat.app.db.DbService
+//import org.chiachat.app.db.DbService
import org.chiachat.app.toast.ToastService
import org.chiachat.app.util.MpSettings
import org.koin.core.module.dsl.singleOf
import org.koin.core.qualifier.named
import org.koin.dsl.module
-class SharedAppModules(driver: SqlDriver) {
- // val repositoriesModule = createInMemoryRepositoriesModule()
- // val matrixClient = MatrixClient.fromStore(
- // )
+class SharedAppModules() {
+// val repositoriesModule = createInMemoryRepositoriesModule()
+// val matrixClient = MatrixClient.fromStore(
+// )
val services = module {
- single { DbService(driver) }
+// single { DbService(driver) }
single { ToastService(ioScope = get(named("ioScope")), logger = Logger) }
singleOf(::MpSettings)
}
val all = services
-}
+}
\ No newline at end of file
diff --git a/shared/src/commonMain/kotlin/org/chiachat/app/db/DbService.kt b/shared/src/commonMain/kotlin/org/chiachat/app/db/DbService.kt
index c3685b16..ff733681 100644
--- a/shared/src/commonMain/kotlin/org/chiachat/app/db/DbService.kt
+++ b/shared/src/commonMain/kotlin/org/chiachat/app/db/DbService.kt
@@ -1,9 +1,10 @@
package org.chiachat.app.db
-import app.cash.sqldelight.db.SqlDriver
-import co.touchlab.kermit.Logger
-import org.chiachat.app.ChiaChatDb
+//import app.cash.sqldelight.db.SqlDriver
+//import co.touchlab.kermit.Logger
+//import org.chiachat.app.ChiaChatDb
+/*
class DbService(val driver: SqlDriver) {
var db: ChiaChatDb = ChiaChatDb.invoke(driver)
@@ -57,3 +58,4 @@ class DbService(val driver: SqlDriver) {
class FailedToSetDbVersionException : Exception()
class MigrationException : Exception("Critical Error: Failed to run database migration")
+*/
diff --git a/shared/src/commonMain/kotlin/org/chiachat/app/db/PlatformDb.kt b/shared/src/commonMain/kotlin/org/chiachat/app/db/PlatformDb.kt
index 598cac39..ce42eba6 100644
--- a/shared/src/commonMain/kotlin/org/chiachat/app/db/PlatformDb.kt
+++ b/shared/src/commonMain/kotlin/org/chiachat/app/db/PlatformDb.kt
@@ -1,7 +1,7 @@
package org.chiachat.app.db
-import app.cash.sqldelight.db.SqlDriver
+//import app.cash.sqldelight.db.SqlDriver
-expect class PlatformDb() {
- suspend fun getDriver(): SqlDriver
-}
+//expect class PlatformDb() {
+// suspend fun getDriver(): SqlDriver
+//}
diff --git a/shared/src/commonMain/kotlin/org/chiachat/app/ui/ComposeAppModules.kt b/shared/src/commonMain/kotlin/org/chiachat/app/ui/ComposeAppModules.kt
new file mode 100644
index 00000000..f626ec9f
--- /dev/null
+++ b/shared/src/commonMain/kotlin/org/chiachat/app/ui/ComposeAppModules.kt
@@ -0,0 +1,25 @@
+package org.chiachat.app.ui
+
+import org.chiachat.app.ui.components.login.LoginComponent
+import org.chiachat.app.ui.components.login.LoginViewModel
+import org.chiachat.app.ui.services.NavigationService
+import org.chiachat.app.ui.services.ResourceService
+import org.chiachat.app.ui.services.ThemeService
+import org.koin.core.module.dsl.singleOf
+import org.koin.core.qualifier.named
+import org.koin.dsl.module
+
+class ComposeAppModules {
+ val components = module {
+ singleOf(::LoginComponent)
+ singleOf(::LoginViewModel)
+ }
+
+ val services = module {
+ single { NavigationService(get()) }
+ single { ResourceService(get(named("ioScope"))) }
+ singleOf(::ThemeService)
+ }
+
+ val all = services + components
+}
diff --git a/ui/src/commonMain/kotlin/org/chiachat/app/compose/ComposeRoot.kt b/shared/src/commonMain/kotlin/org/chiachat/app/ui/ComposeRoot.kt
similarity index 54%
rename from ui/src/commonMain/kotlin/org/chiachat/app/compose/ComposeRoot.kt
rename to shared/src/commonMain/kotlin/org/chiachat/app/ui/ComposeRoot.kt
index 7d0367cb..4dadab9b 100644
--- a/ui/src/commonMain/kotlin/org/chiachat/app/compose/ComposeRoot.kt
+++ b/shared/src/commonMain/kotlin/org/chiachat/app/ui/ComposeRoot.kt
@@ -1,9 +1,10 @@
-package org.chiachat.app.compose
+package org.chiachat.app.ui
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.material3.MaterialTheme
+import androidx.compose.material.MaterialTheme
+import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
@@ -12,26 +13,19 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.launch
-import org.chiachat.app.compose.services.NavigationService
-import org.chiachat.app.compose.services.ThemeService
-import org.chiachat.app.compose.theme.AppTheme
-import org.chiachat.app.compose.theme.ThemeResources
+import org.chiachat.app.ui.services.NavigationService
+import org.chiachat.app.ui.services.ThemeService
+import org.chiachat.app.ui.theme.ChiaChatTheme.AppTheme
+import org.chiachat.app.ui.theme.ThemeResources
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject
-fun loadResourcesDefault(resources: MutableStateFlow) {
- CoroutineScope(Dispatchers.Default).launch { resources.value = ThemeResources() }
-}
-
-class ComposeRoot : KoinComponent {
+internal class ComposeRoot : KoinComponent {
val navigationService: NavigationService by inject()
- val themeService: ThemeService by inject()
-
@Composable
fun View() {
- val darkMode by themeService.darkMode.collectAsState()
- AppTheme(darkMode) {
- Box(modifier = Modifier.fillMaxSize().background(MaterialTheme.colorScheme.background)) {
+ AppTheme() {
+ Box(modifier = Modifier.fillMaxSize().background(MaterialTheme.colors.background)) {
navigationService.currentView()
}
}
diff --git a/shared/src/commonMain/kotlin/org/chiachat/app/ui/components/Component.kt b/shared/src/commonMain/kotlin/org/chiachat/app/ui/components/Component.kt
new file mode 100644
index 00000000..449bc050
--- /dev/null
+++ b/shared/src/commonMain/kotlin/org/chiachat/app/ui/components/Component.kt
@@ -0,0 +1,9 @@
+package org.chiachat.app.ui.components
+
+import androidx.compose.runtime.Composable
+import org.koin.core.component.KoinComponent
+
+internal interface Component: KoinComponent {
+ val vm: IViewModel
+ @Composable fun View()
+}
diff --git a/ui/src/commonMain/kotlin/org/chiachat/app/compose/components/ViewModel.kt b/shared/src/commonMain/kotlin/org/chiachat/app/ui/components/ViewModel.kt
similarity index 90%
rename from ui/src/commonMain/kotlin/org/chiachat/app/compose/components/ViewModel.kt
rename to shared/src/commonMain/kotlin/org/chiachat/app/ui/components/ViewModel.kt
index c7b0f80a..466c2a6b 100644
--- a/ui/src/commonMain/kotlin/org/chiachat/app/compose/components/ViewModel.kt
+++ b/shared/src/commonMain/kotlin/org/chiachat/app/ui/components/ViewModel.kt
@@ -1,4 +1,4 @@
-package org.chiachat.app.compose.components
+package org.chiachat.app.ui.components
import kotlinx.coroutines.CoroutineScope
import org.koin.core.component.KoinComponent
diff --git a/shared/src/commonMain/kotlin/org/chiachat/app/ui/components/homefeed/HomeFeed.kt b/shared/src/commonMain/kotlin/org/chiachat/app/ui/components/homefeed/HomeFeed.kt
new file mode 100644
index 00000000..27ab9ac3
--- /dev/null
+++ b/shared/src/commonMain/kotlin/org/chiachat/app/ui/components/homefeed/HomeFeed.kt
@@ -0,0 +1,128 @@
+package org.chiachat.app.ui.components.homefeed
+
+import androidx.compose.foundation.layout.*
+import androidx.compose.foundation.lazy.LazyColumn
+import androidx.compose.material.Surface
+import androidx.compose.material.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.text.TextStyle
+import androidx.compose.ui.text.font.FontWeight
+import androidx.compose.ui.unit.dp
+import org.chiachat.app.ui.composables.Graphics.GraphicButton
+import org.chiachat.app.ui.theme.CchGraphics
+
+data class Post(
+ val user: User,
+ val text: String,
+ val timestamp: String,
+ val likes: Int,
+ val replies: Int,
+ val retweets: Int
+)
+
+data class User(
+ val name: String,
+ val handle: String,
+)
+
+
+internal object HomeFeed {
+ @Composable
+ fun HomeFeedScreen(posts: List) {
+ TopNavBar(menuClick = {}, homeClick = {}, notificationsClick = {})
+ LazyColumn {
+ posts.forEach { tweet ->
+ item {
+ TweetCard(tweet)
+ }
+ }
+ }
+ }
+
+ @Composable
+ fun TopNavBar(
+ modifier: Modifier = Modifier,
+ menuClick: () -> Unit,
+ homeClick: () -> Unit,
+ notificationsClick: () -> Unit
+ ) {
+ Row(
+ modifier = modifier
+ .fillMaxWidth()
+ .height(64.dp)
+ .padding(16.dp),
+ horizontalArrangement = Arrangement.SpaceBetween
+ ) {
+ MenuButton(menuClick)
+ HomeButton(homeClick)
+ NotificationButton(notificationsClick)
+ }
+ }
+
+ @Composable
+ fun MenuButton(onClick: () -> Unit) {
+ GraphicButton(graphic = CchGraphics.MENU, contentDescription = "menu", onClick = onClick)
+ }
+
+ @Composable
+ fun HomeButton(onClick: () -> Unit) {
+ GraphicButton(graphic = CchGraphics.CHIACHAT_ICON, contentDescription = "home", onClick = onClick)
+ }
+
+ @Composable
+ fun NotificationButton(onClick: () -> Unit) {
+ GraphicButton(graphic = CchGraphics.NOTIFICATION_BELL, contentDescription = "notifications", onClick = onClick)
+ }
+
+
+ // create a side drawer that pops open when you click the hamburger menu
+ @Composable
+ fun SideDrawer() {
+ Column {
+ // profile picture
+ // name
+ // handle
+ // bio
+ // location
+ // website
+ // join date
+ // number of tweets
+ // number of following
+ // number of followers
+ }
+ }
+
+ @Composable
+ fun TweetCard(post: Post) {
+ Surface(modifier = Modifier.padding(16.dp)) {
+ Row(modifier = Modifier.padding(16.dp)) {
+ /* Avatar image */
+ Column(modifier = Modifier.padding(start = 16.dp)) {
+ /* User name and handle */
+ Row {
+ Text(
+ text = post.user.name,
+ style = TextStyle(fontWeight = FontWeight.Bold)
+ )
+ Text(
+ text = post.user.handle,
+ style = TextStyle(color = Color.Gray)
+ )
+ }
+ /* Tweet text */
+ Text(text = post.text)
+ /* Tweet metadata (time, likes, replies, etc.) */
+ Row {
+ Text(
+ text = post.timestamp,
+ style = TextStyle(color = Color.Gray)
+ )
+ /* Other tweet metadata */
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/shared/src/commonMain/kotlin/org/chiachat/app/ui/components/login/AuthInputs.kt b/shared/src/commonMain/kotlin/org/chiachat/app/ui/components/login/AuthInputs.kt
new file mode 100644
index 00000000..a0c9d5f9
--- /dev/null
+++ b/shared/src/commonMain/kotlin/org/chiachat/app/ui/components/login/AuthInputs.kt
@@ -0,0 +1,131 @@
+package org.chiachat.app.ui.components.login
+
+import androidx.compose.foundation.layout.*
+import androidx.compose.material.*
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.text.font.FontWeight
+import androidx.compose.ui.text.input.PasswordVisualTransformation
+import androidx.compose.ui.unit.dp
+import androidx.compose.ui.unit.sp
+import org.chiachat.app.ui.composables.Graphics.Graphic
+import org.chiachat.app.ui.theme.CchGraphics
+
+
+internal object AuthInputs {
+ private val textFieldModifier = Modifier.height(60.dp).width(300.dp)
+ private fun isValidEmail(email: String): Boolean {
+ return email.contains("@") && email.contains(".")
+ }
+
+ private fun isPasswordValid(password: String): Boolean {
+ return password.length > 8
+ }
+
+
+ @Composable
+ fun Logo() {
+ Graphic(CchGraphics.CHIACHAT_LOGO, "ChiaChat Logo", modifier = Modifier.width(300.dp))
+ }
+
+ @Composable
+ fun TextFieldLabel(label: String) {
+ Text(label, color = MaterialTheme.colors.onBackground)
+ }
+
+
+ @Composable
+ fun Username(username: String, onUsernameChange: (String) -> Unit) {
+ OutlinedTextField(
+ label = { TextFieldLabel("Username") },
+ value = username,
+ onValueChange = onUsernameChange,
+ modifier = textFieldModifier,
+ colors = TextFieldDefaults.outlinedTextFieldColors(
+ textColor = MaterialTheme.colors.primary,
+ )
+ )
+ }
+
+
+ @Composable
+ fun Email(email: String, onEmailChange: (String) -> Unit) {
+ val error = !isValidEmail(email) && email.isNotBlank()
+
+ if (error) {
+ Text(
+ "Invalid email address",
+ color = MaterialTheme.colors.error
+ )
+ Spacer(Modifier.size(5.dp))
+ }
+
+ OutlinedTextField(
+ label = { TextFieldLabel("Email") },
+ value = email,
+ onValueChange = onEmailChange,
+ modifier = textFieldModifier,
+ colors = TextFieldDefaults.outlinedTextFieldColors(
+ textColor = MaterialTheme.colors.primary,
+ ),
+ isError = error
+ )
+
+ }
+
+ @Composable
+ fun Password(password: String, onPasswordChange: (String) -> Unit) {
+ val error = !isPasswordValid(password) && password.isNotBlank()
+ if (error) {
+ Text(
+ "Password must be at least 8 characters",
+ color = MaterialTheme.colors.error
+ )
+ Spacer(Modifier.size(5.dp))
+ }
+ OutlinedTextField(
+ label = { TextFieldLabel("Password") },
+ value = password,
+ onValueChange = onPasswordChange,
+ visualTransformation = PasswordVisualTransformation(),
+ modifier = textFieldModifier,
+ colors = TextFieldDefaults.outlinedTextFieldColors(
+ textColor = MaterialTheme.colors.primary,
+ ),
+ isError = error
+ )
+ }
+
+ @Composable
+ fun ConfirmPassword(password: String, confirmPassword: String, onConfirmPasswordChange: (String) -> Unit) {
+ val error = password.isNotBlank() && confirmPassword.isNotBlank() && password != confirmPassword
+ if (error) {
+ Text(
+ "Passwords do not match",
+ color = MaterialTheme.colors.error
+ )
+ Spacer(modifier = Modifier.size(5.dp))
+ }
+ OutlinedTextField(
+ label = { TextFieldLabel("Confirm Password") },
+ value = confirmPassword,
+ onValueChange = onConfirmPasswordChange,
+ visualTransformation = PasswordVisualTransformation(),
+ isError = error,
+ modifier = textFieldModifier,
+ colors = TextFieldDefaults.outlinedTextFieldColors(
+ textColor = MaterialTheme.colors.primary,
+ )
+ )
+ }
+
+ @Composable
+ fun ActionButton(text: String, onClick: () -> Unit) {
+ Button(
+ onClick = onClick,
+ modifier = Modifier.width(300.dp)
+ ) {
+ Text(text, fontWeight = FontWeight.W700, fontSize = 18.sp, color = MaterialTheme.colors.onPrimary)
+ }
+ }
+}
diff --git a/shared/src/commonMain/kotlin/org/chiachat/app/ui/components/login/LoginComponent.kt b/shared/src/commonMain/kotlin/org/chiachat/app/ui/components/login/LoginComponent.kt
new file mode 100644
index 00000000..f32f2559
--- /dev/null
+++ b/shared/src/commonMain/kotlin/org/chiachat/app/ui/components/login/LoginComponent.kt
@@ -0,0 +1,144 @@
+package org.chiachat.app.ui.components.login
+
+import androidx.compose.runtime.*
+import org.chiachat.app.ui.components.Component
+import org.chiachat.app.ui.components.homefeed.Post
+import org.chiachat.app.ui.components.homefeed.User
+import org.chiachat.app.ui.components.register.RegistrationComposables
+import org.chiachat.app.ui.services.ResourceService
+import org.koin.core.component.inject
+
+internal class LoginComponent : Component {
+
+ override val vm: ILoginViewModel = LoginViewModel()
+
+ val resources: ResourceService by inject()
+
+ val posts = listOf(
+ Post(
+ user = User(
+ name = "Jane Doe",
+ handle = "@janedoe"
+ ),
+ text = "Just learned about Jetpack Compose! It looks like a great way to build Android UIs.",
+ timestamp = "5m",
+ likes = 23,
+ replies = 4,
+ retweets = 12
+ ),
+ Post(
+ user = User(
+ name = "John Doe",
+ handle = "@johndoe"
+ ),
+ text = "I've been using Jetpack Compose for a while now and it's really changed the way I approach Android development.",
+ timestamp = "23m",
+ likes = 45,
+ replies = 9,
+ retweets = 19
+ ),
+ Post(
+ user = User(
+ name = "Jetpack Compose",
+ handle = "@jetpackcompose"
+ ),
+ text = "Jetpack Compose is a modern toolkit for building native Android UIs.",
+ timestamp = "1h",
+ likes = 103,
+ replies = 20,
+ retweets = 37
+ ),
+ Post(
+ user = User(
+ name = "Jane Doe",
+ handle = "@janedoe"
+ ),
+ text = "Just learned about Jetpack Compose! It looks like a great way to build Android UIs.",
+ timestamp = "5m",
+ likes = 23,
+ replies = 4,
+ retweets = 12
+ ),
+ Post(
+ user = User(
+ name = "John Doe",
+ handle = "@johndoe"
+ ),
+ text = "I've been using Jetpack Compose for a while now and it's really changed the way I approach Android development.",
+ timestamp = "23m",
+ likes = 45,
+ replies = 9,
+ retweets = 19
+ ),
+ Post(
+ user = User(
+ name = "Jetpack Compose",
+ handle = "@jetpackcompose"
+ ),
+ text = "Jetpack Compose is a modern toolkit for building native Android UIs.",
+ timestamp = "1h",
+ likes = 103,
+ replies = 20,
+ retweets = 37
+ ),
+ Post(
+ user = User(
+ name = "Jane Doe",
+ handle = "@janedoe"
+ ),
+ text = "Just learned about Jetpack Compose! It looks like a great way to build Android UIs.",
+ timestamp = "5m",
+ likes = 23,
+ replies = 4,
+ retweets = 12
+ ),
+ Post(
+ user = User(
+ name = "John Doe",
+ handle = "@johndoe"
+ ),
+ text = "I've been using Jetpack Compose for a while now and it's really changed the way I approach Android development.",
+ timestamp = "23m",
+ likes = 45,
+ replies = 9,
+ retweets = 19
+ ),
+ Post(
+ user = User(
+ name = "Jetpack Compose",
+ handle = "@jetpackcompose"
+ ),
+ text = "Jetpack Compose is a modern toolkit for building native Android UIs.",
+ timestamp = "1h",
+ likes = 103,
+ replies = 20,
+ retweets = 37
+ ),
+ )
+
+ @Composable
+ override fun View() {
+// Column {
+// HomeFeed.HomeFeedScreen(posts)
+// }
+ var register by remember { mutableStateOf(true) }
+ if (register) {
+ RegistrationComposables.RegistrationScreen(resources) { register = false }
+ } else {
+ LoginComposables.LoginScreen(resources)
+ }
+ /*Box(modifier = Modifier.padding(40.dp).fillMaxSize()) {
+ ToggleDarkModeButton(vm.themeService, vm.resourceService, Modifier.align(Alignment.TopEnd))
+ Column(
+ verticalArrangement = Arrangement.spacedBy(15.dp),
+ horizontalAlignment = Alignment.CenterHorizontally,
+ modifier = Modifier.align(Alignment.Center).padding(40.dp).width(320.dp)
+ ) {
+ CchTextField(vm.server, "server", "chiachat.org")
+ CchTextField(vm.username, "username", "@username")
+ CchTextField(vm.password, "password")
+ CchActionButton("Login", onClick = vm::onLogin)
+ }
+ }*/
+ }
+}
diff --git a/shared/src/commonMain/kotlin/org/chiachat/app/ui/components/login/LoginComposables.kt b/shared/src/commonMain/kotlin/org/chiachat/app/ui/components/login/LoginComposables.kt
new file mode 100644
index 00000000..3f24b91c
--- /dev/null
+++ b/shared/src/commonMain/kotlin/org/chiachat/app/ui/components/login/LoginComposables.kt
@@ -0,0 +1,36 @@
+package org.chiachat.app.ui.components.login
+
+import androidx.compose.foundation.layout.*
+import androidx.compose.runtime.*
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import org.chiachat.app.ui.services.ResourceService
+
+internal object LoginComposables {
+
+ @Composable
+ fun LoginScreen(resources: ResourceService) {
+ var username by remember { mutableStateOf("") }
+ var password by remember { mutableStateOf("") }
+
+ Box(
+ modifier = Modifier.fillMaxSize()
+ ) {
+ Column(
+ modifier = Modifier.padding(16.dp).fillMaxWidth(0.75f).align(Alignment.Center),
+ horizontalAlignment = Alignment.CenterHorizontally
+ ) {
+ AuthInputs.Logo()
+ Spacer(Modifier.height(16.dp))
+ AuthInputs.Username(username, onUsernameChange = { username = it })
+ Spacer(Modifier.height(16.dp))
+ AuthInputs.Password(password, onPasswordChange = { password = it })
+ Spacer(Modifier.height(32.dp))
+ AuthInputs.ActionButton("Login") {}
+ }
+ }
+ }
+
+}
+
diff --git a/ui/src/commonMain/kotlin/org/chiachat/app/compose/components/LoginViewModel.kt b/shared/src/commonMain/kotlin/org/chiachat/app/ui/components/login/LoginViewModel.kt
similarity index 67%
rename from ui/src/commonMain/kotlin/org/chiachat/app/compose/components/LoginViewModel.kt
rename to shared/src/commonMain/kotlin/org/chiachat/app/ui/components/login/LoginViewModel.kt
index e373864a..d7753dc9 100644
--- a/ui/src/commonMain/kotlin/org/chiachat/app/compose/components/LoginViewModel.kt
+++ b/shared/src/commonMain/kotlin/org/chiachat/app/ui/components/login/LoginViewModel.kt
@@ -1,12 +1,14 @@
-package org.chiachat.app.compose.components
+package org.chiachat.app.ui.components.login
import co.touchlab.kermit.Logger
import kotlinx.coroutines.flow.MutableStateFlow
-import org.chiachat.app.compose.services.ResourceService
-import org.chiachat.app.compose.services.ThemeService
+import org.chiachat.app.ui.components.IViewModel
+import org.chiachat.app.ui.components.ViewModel
+import org.chiachat.app.ui.services.ResourceService
+import org.chiachat.app.ui.services.ThemeService
import org.koin.core.component.inject
-interface ILoginViewModel : IViewModel {
+internal interface ILoginViewModel : IViewModel {
val themeService: ThemeService
val resourceService: ResourceService
@@ -17,7 +19,7 @@ interface ILoginViewModel : IViewModel {
fun onLogin()
}
-class LoginViewModel : ViewModel(), ILoginViewModel {
+internal class LoginViewModel : ViewModel(), ILoginViewModel {
override val themeService: ThemeService by inject()
override val resourceService: ResourceService by inject()
diff --git a/shared/src/commonMain/kotlin/org/chiachat/app/ui/components/register/RegistrationComposables.kt b/shared/src/commonMain/kotlin/org/chiachat/app/ui/components/register/RegistrationComposables.kt
new file mode 100644
index 00000000..69ebd8c2
--- /dev/null
+++ b/shared/src/commonMain/kotlin/org/chiachat/app/ui/components/register/RegistrationComposables.kt
@@ -0,0 +1,44 @@
+package org.chiachat.app.ui.components.register
+
+import androidx.compose.foundation.layout.*
+import androidx.compose.runtime.*
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import org.chiachat.app.ui.components.login.AuthInputs
+import org.chiachat.app.ui.services.ResourceService
+
+internal object RegistrationComposables {
+
+ @Composable
+ fun RegistrationScreen(resources: ResourceService, onRegister: () -> Unit) {
+ var username by remember { mutableStateOf("") }
+ var email by remember { mutableStateOf("") }
+ var password by remember { mutableStateOf("") }
+ var confirmPassword by remember { mutableStateOf("") }
+
+ Box(
+ modifier = Modifier.fillMaxSize()
+ ) {
+ Column(
+ modifier = Modifier.padding(16.dp).fillMaxWidth(0.75f).align(Alignment.Center),
+ horizontalAlignment = Alignment.CenterHorizontally
+ ) {
+ AuthInputs.Logo()
+ Spacer(Modifier.height(16.dp))
+ AuthInputs.Username(username, onUsernameChange = { username = it })
+ Spacer(Modifier.height(16.dp))
+ AuthInputs.Email(email, onEmailChange = { email = it })
+ Spacer(Modifier.height(16.dp))
+ AuthInputs.Password(password, onPasswordChange = { password = it })
+ Spacer(Modifier.height(16.dp))
+ AuthInputs.ConfirmPassword(
+ password,
+ confirmPassword,
+ onConfirmPasswordChange = { confirmPassword = it })
+ Spacer(Modifier.height(32.dp))
+ AuthInputs.ActionButton("Create Account", onRegister)
+ }
+ }
+ }
+}
diff --git a/shared/src/commonMain/kotlin/org/chiachat/app/ui/composables/Graphics.kt b/shared/src/commonMain/kotlin/org/chiachat/app/ui/composables/Graphics.kt
new file mode 100644
index 00000000..b04b5c81
--- /dev/null
+++ b/shared/src/commonMain/kotlin/org/chiachat/app/ui/composables/Graphics.kt
@@ -0,0 +1,60 @@
+package org.chiachat.app.ui.composables
+
+import androidx.compose.foundation.layout.size
+import androidx.compose.material.Icon
+import androidx.compose.material.IconButton
+import androidx.compose.material.MaterialTheme
+import androidx.compose.runtime.*
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.ImageBitmap
+import androidx.compose.ui.unit.dp
+import org.chiachat.app.ui.services.ResourceService
+import org.chiachat.app.ui.theme.CchGraphics
+import org.koin.core.component.KoinComponent
+import org.koin.core.component.inject
+
+
+internal object Graphics : KoinComponent {
+
+ val resources: ResourceService by inject()
+
+ @Composable
+ fun Graphic(
+ graphic: CchGraphics,
+ contentDescription: String,
+ tint: Color = MaterialTheme.colors.primary,
+ modifier: Modifier = Modifier
+ ) {
+
+ var graphicBitmap by remember { mutableStateOf(null) }
+
+ LaunchedEffect(true) {
+ resources.loadGraphic(graphic) {
+ graphicBitmap = it
+ }
+ }
+
+ graphicBitmap?.let {
+ Icon(
+ bitmap = it,
+ contentDescription = contentDescription,
+ tint = tint,
+ modifier = modifier
+ )
+ }
+ }
+
+ // wraps the above function inside of an IconButton and passes in the onclick
+ @Composable
+ fun GraphicButton(
+ graphic: CchGraphics,
+ tint: Color = MaterialTheme.colors.primary,
+ contentDescription: String,
+ onClick: () -> Unit
+ ) {
+ IconButton(onClick = onClick) {
+ Graphic(graphic, contentDescription, tint = tint, modifier = Modifier.size(64.dp))
+ }
+ }
+}
\ No newline at end of file
diff --git a/shared/src/commonMain/kotlin/org/chiachat/app/ui/composables/Inputs.kt b/shared/src/commonMain/kotlin/org/chiachat/app/ui/composables/Inputs.kt
new file mode 100644
index 00000000..afa31c5d
--- /dev/null
+++ b/shared/src/commonMain/kotlin/org/chiachat/app/ui/composables/Inputs.kt
@@ -0,0 +1,61 @@
+package org.chiachat.app.ui.composables
+
+import androidx.compose.foundation.isSystemInDarkTheme
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.material.*
+import androidx.compose.runtime.*
+import androidx.compose.ui.Modifier
+import kotlinx.coroutines.flow.MutableStateFlow
+import org.chiachat.app.ui.composables.Graphics.Graphic
+import org.chiachat.app.ui.services.ThemeService
+import org.chiachat.app.ui.theme.CchGraphics
+import org.koin.core.component.KoinComponent
+import org.koin.core.component.inject
+
+internal object Inputs : KoinComponent {
+ @Composable
+ fun CchTextField(
+ textProperty: MutableStateFlow,
+ label: String? = null,
+ placeholder: String? = label,
+ modifier: Modifier = Modifier
+ ) {
+ val text: String by textProperty.collectAsState()
+ OutlinedTextField(
+ value = text,
+ label = @Composable { label?.let { Text(it) } },
+ placeholder = @Composable { placeholder?.let { Text(it) } },
+ onValueChange = { newText: String -> textProperty.value = newText },
+ modifier = Modifier.fillMaxWidth().then(modifier)
+ )
+ }
+
+
+ @Composable
+ fun CchActionButton(text: String, onClick: () -> Unit, modifier: Modifier = Modifier) {
+ OutlinedButton(
+ onClick,
+ colors =
+ ButtonDefaults.outlinedButtonColors(
+ backgroundColor = MaterialTheme.colors.secondary,
+ contentColor = MaterialTheme.colors.onSecondary
+ ),
+ modifier = Modifier.fillMaxWidth().then(modifier)
+ ) {
+ Text(text)
+ }
+ }
+
+ val themeService: ThemeService by inject()
+
+ @Composable
+ fun ToggleDarkModeButton() {
+ val systemInDarkTheme = isSystemInDarkTheme()
+ IconButton(onClick = { themeService.toggleDarkTheme(systemInDarkTheme) }) {
+ if (themeService.isDarkMode())
+ Graphic(CchGraphics.LIGHT_MODE, "Enable light mode")
+ else
+ Graphic(CchGraphics.DARK_MODE, "Enable Dark Mode")
+ }
+ }
+}
diff --git a/shared/src/commonMain/kotlin/org/chiachat/app/ui/composables/ProfileCard.kt b/shared/src/commonMain/kotlin/org/chiachat/app/ui/composables/ProfileCard.kt
new file mode 100644
index 00000000..1f1416bd
--- /dev/null
+++ b/shared/src/commonMain/kotlin/org/chiachat/app/ui/composables/ProfileCard.kt
@@ -0,0 +1,46 @@
+package org.chiachat.app.ui.composables
+
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.layout.*
+import androidx.compose.foundation.shape.RoundedCornerShape
+import androidx.compose.material.*
+import androidx.compose.runtime.*
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.ImageBitmap
+import androidx.compose.ui.graphics.painter.BitmapPainter
+import androidx.compose.ui.layout.ContentScale
+import androidx.compose.ui.unit.dp
+
+@Composable
+internal fun ProfileCard(item: ProfileCardItem) {
+ Card(
+ shape = RoundedCornerShape(8.dp),
+ backgroundColor = MaterialTheme.colors.secondary,
+ modifier =
+ Modifier.padding(horizontal = 40.dp)
+ .padding(vertical = 10.dp)
+ .fillMaxWidth(0.75f)
+ .fillMaxHeight(0.1f),
+ ) {
+ Row(
+ horizontalArrangement = Arrangement.Start,
+ verticalAlignment = Alignment.CenterVertically,
+ modifier = Modifier.fillMaxWidth()
+ ) {
+ if (item.image != null) {
+ Image(
+ painter = BitmapPainter(item.image),
+ contentDescription = "Sample",
+ modifier = Modifier.size(36.dp),
+ contentScale = ContentScale.Fit
+ )
+ } else {
+ Text("Loading Image")
+ }
+ Column(verticalArrangement = Arrangement.spacedBy(10.dp)) { Text(item.name) }
+ }
+ }
+}
+
+data class ProfileCardItem(val name: String, val image: ImageBitmap?)
diff --git a/ui/src/commonMain/kotlin/org/chiachat/app/compose/services/NavigationService.kt b/shared/src/commonMain/kotlin/org/chiachat/app/ui/services/NavigationService.kt
similarity index 90%
rename from ui/src/commonMain/kotlin/org/chiachat/app/compose/services/NavigationService.kt
rename to shared/src/commonMain/kotlin/org/chiachat/app/ui/services/NavigationService.kt
index 8fcc2e2f..e3d4b3e9 100644
--- a/ui/src/commonMain/kotlin/org/chiachat/app/compose/services/NavigationService.kt
+++ b/shared/src/commonMain/kotlin/org/chiachat/app/ui/services/NavigationService.kt
@@ -1,13 +1,13 @@
-package org.chiachat.app.compose.services
+package org.chiachat.app.ui.services
import androidx.compose.runtime.Composable
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.State
import androidx.compose.runtime.mutableStateOf
-import org.chiachat.app.compose.components.Component
+import org.chiachat.app.ui.components.Component
import org.koin.core.component.KoinComponent
-class NavigationService(initialScreen: Component, val maxScreens: Int = 10) : KoinComponent {
+internal class NavigationService(initialScreen: Component, val maxScreens: Int = 10) : KoinComponent {
private val screenTree: MutableList = mutableListOf()
private val currentScreenIndex: MutableState = mutableStateOf(0)
diff --git a/ui/src/commonMain/kotlin/org/chiachat/app/compose/services/NavigationState.kt b/shared/src/commonMain/kotlin/org/chiachat/app/ui/services/NavigationState.kt
similarity index 66%
rename from ui/src/commonMain/kotlin/org/chiachat/app/compose/services/NavigationState.kt
rename to shared/src/commonMain/kotlin/org/chiachat/app/ui/services/NavigationState.kt
index 062a4d71..1cb26729 100644
--- a/ui/src/commonMain/kotlin/org/chiachat/app/compose/services/NavigationState.kt
+++ b/shared/src/commonMain/kotlin/org/chiachat/app/ui/services/NavigationState.kt
@@ -1,3 +1,3 @@
-package org.chiachat.app.compose.services
+package org.chiachat.app.ui.services
data class NavigationState(val title: String? = null, val showHud: Boolean = false)
diff --git a/ui/src/commonMain/kotlin/org/chiachat/app/compose/services/ResourceService.kt b/shared/src/commonMain/kotlin/org/chiachat/app/ui/services/ResourceService.kt
similarity index 66%
rename from ui/src/commonMain/kotlin/org/chiachat/app/compose/services/ResourceService.kt
rename to shared/src/commonMain/kotlin/org/chiachat/app/ui/services/ResourceService.kt
index 7fd4aecf..ffb5e5b8 100644
--- a/ui/src/commonMain/kotlin/org/chiachat/app/compose/services/ResourceService.kt
+++ b/shared/src/commonMain/kotlin/org/chiachat/app/ui/services/ResourceService.kt
@@ -1,17 +1,17 @@
-package org.chiachat.app.compose.services
+package org.chiachat.app.ui.services
import androidx.compose.ui.graphics.ImageBitmap
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.launch
-import org.chiachat.app.compose.theme.CchIcons
-import org.chiachat.app.compose.util.readImageBitmap
+import org.chiachat.app.ui.theme.CchGraphics
+import org.chiachat.app.util.readImageBitmap
class ResourceService(private val ioScope: CoroutineScope) {
- private val iconCache = MutableStateFlow