buildscript {
    repositories {
        mavenLocal()
        mavenCentral()
    }

    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
    }
}

plugins {
    id "org.jetbrains.kotlin.multiplatform"
    id "org.jetbrains.kotlin.plugin.serialization"
}

project.version = "$library_version"
project.group = "$library_group"
project.description = "Core part of tgbotapi with all (and only) required functionality for working with Telegram Bot API"

apply from: "../publish.gradle"

repositories {
    mavenLocal()
    mavenCentral()
}

kotlin {
    jvm {
        compilations.main {
            kotlinOptions {
                jvmTarget = "1.8"
            }
        }
    }
    js(IR) {
        browser()
        nodejs()
    }

    sourceSets {
        commonMain {
            dependencies {
                implementation kotlin('stdlib')
                api "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlin_coroutines_version"
                api "org.jetbrains.kotlinx:kotlinx-serialization-json:$kotlin_serialisation_runtime_version"
                api "org.jetbrains.kotlinx:kotlinx-serialization-properties:$kotlin_serialisation_runtime_version"

                api "com.soywiz.korlibs.klock:klock:$klock_version"
                api "com.benasher44:uuid:$uuid_version"

                api "dev.inmo:micro_utils.crypto:$micro_utils_version"
                api "dev.inmo:micro_utils.coroutines:$micro_utils_version"
                api "dev.inmo:micro_utils.serialization.base64:$micro_utils_version"
                api "dev.inmo:micro_utils.serialization.encapsulator:$micro_utils_version"
                api "dev.inmo:micro_utils.serialization.typed_serializer:$micro_utils_version"
                api "dev.inmo:micro_utils.ktor.common:$micro_utils_version"
                api "dev.inmo:micro_utils.language_codes:$micro_utils_version"

                api "io.ktor:ktor-client-core:$ktor_version"
            }
        }
        commonTest {
            dependencies {
                implementation kotlin('test-common')
                implementation kotlin('test-annotations-common')
                implementation project(":tgbotapi.utils")
            }
        }

        jvmMain {
            dependencies {
                api "io.ktor:ktor-server:$ktor_version"
                api "io.ktor:ktor-server-host-common:$ktor_version"

                api "io.ktor:ktor-client-cio:$ktor_version"

                api "javax.activation:activation:$javax_activation_version"
            }
        }
        jvmTest {
            dependencies {
                implementation kotlin('test-junit')
            }
        }
        jsTest {
            dependencies {
                implementation kotlin('test-junit')
                implementation kotlin('test-js')
            }
        }
    }

    targets.all {
        compilations.all {
            kotlinOptions {
                freeCompilerArgs += ["-Xuse-experimental=kotlinx.coroutines.ExperimentalCoroutinesApi", "-Xopt-in=kotlin.RequiresOptIn"]
            }
        }
    }
}

java {
    sourceCompatibility = JavaVersion.VERSION_1_8
    targetCompatibility = JavaVersion.VERSION_1_8
}