From 7e3d4dbaff529fc7444d5f3d0253987ae7e7d360 Mon Sep 17 00:00:00 2001 From: Nek-12 Date: Sun, 5 Jan 2025 16:35:16 +0100 Subject: [PATCH 1/4] update deps and build configuration --- .github/changelog_config.json | 2 +- .github/ci-gradle.properties | 33 ++++-- .github/workflows/ci.yml | 2 +- .github/workflows/docs.yml | 9 +- .github/workflows/publish.yml | 20 +++- .github/workflows/pull-request.yml | 2 +- build.gradle.kts | 107 +++++++----------- buildSrc/build.gradle.kts | 1 + buildSrc/src/main/kotlin/Config.kt | 35 +++--- .../src/main/kotlin/ConfigureMultiplatform.kt | 32 ++++-- buildSrc/src/main/kotlin/Util.kt | 17 ++- .../main/kotlin/dokkaDocumentation.gradle.kts | 37 ++++++ .../pro.respawn.android-library.gradle.kts | 16 +++ .../pro.respawn.shared-library.gradle.kts | 12 +- common/build.gradle.kts | 1 + compose/build.gradle.kts | 4 +- coroutines/build.gradle.kts | 1 + datetime/build.gradle.kts | 1 + gradle.properties | 21 +++- gradle/libs.versions.toml | 31 ++--- gradle/wrapper/gradle-wrapper.jar | Bin 43504 -> 43583 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 3 +- inputforms/build.gradle.kts | 1 + system/build.gradle.kts | 3 +- 25 files changed, 260 insertions(+), 133 deletions(-) create mode 100644 buildSrc/src/main/kotlin/dokkaDocumentation.gradle.kts create mode 100644 buildSrc/src/main/kotlin/pro.respawn.android-library.gradle.kts diff --git a/.github/changelog_config.json b/.github/changelog_config.json index c53db87..2d8f82d 100644 --- a/.github/changelog_config.json +++ b/.github/changelog_config.json @@ -50,7 +50,7 @@ ], "label_extractor" : [ { - "pattern" : "^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test){1}(\\([\\w\\-\\.]+\\))?(!)?: ([\\w ])+([\\s\\S]*)", + "pattern" : "^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test|feat!|breaking|api){1}(\\([\\w\\-\\.]+\\))?(!)?: ([\\w ])+([\\s\\S]*)", "target" : "$1" } ] diff --git a/.github/ci-gradle.properties b/.github/ci-gradle.properties index 6489d6c..b517966 100644 --- a/.github/ci-gradle.properties +++ b/.github/ci-gradle.properties @@ -1,5 +1,6 @@ -org.gradle.jvmargs=-Xmx3g -Xms1g -XX:+UseParallelGC -XX:+UseStringDeduplication -Dfile.encoding=UTF-8 -kotlin.daemon.jvmargs=-Xmx3g -Xms1g -XX:+UseParallelGC -XX:+UseStringDeduplication -XX:MaxMetaspaceSize=1g +# suppress inspection "UnusedProperty" for whole file +org.gradle.jvmargs=-Xmx6g -Xms1g -XX:+UseParallelGC -XX:+UseStringDeduplication -Dfile.encoding=UTF-8 +kotlin.daemon.jvmargs=-Xmx6g -Xms1g -XX:+UseParallelGC -XX:+UseStringDeduplication -XX:MaxMetaspaceSize=2g android.useAndroidX=true kotlin.code.style=official org.gradle.caching=true @@ -8,21 +9,37 @@ android.enableR8.fullMode=true org.gradle.configureondemand=true android.enableJetifier=false kotlin.incremental.usePreciseJavaTracking=true +org.gradle.configuration-cache.problems=warn android.nonTransitiveRClass=true android.experimental.enableSourceSetPathsMap=true android.experimental.cacheCompileLibResources=true kotlin.mpp.enableCInteropCommonization=true kotlin.mpp.stability.nowarn=true -kotlin.mpp.androidGradlePluginCompatibility.nowarn=true org.gradle.unsafe.configuration-cache=true kotlin.mpp.androidSourceSetLayoutVersion=2 android.disableResourceValidation=false -org.gradle.daemon=true +org.gradle.daemon=false android.nonFinalResIds=true -kotlin.native.ignoreIncorrectDependencies=true kotlinx.atomicfu.enableJvmIrTransformation=true -org.jetbrains.compose.experimental.macos.enabled=true -org.gradle.configuration-cache.problems=warn +android.lint.useK2Uast=true nl.littlerobots.vcu.resolver=true -org.gradle.console=plain +org.jetbrains.compose.experimental.jscanvas.enabled=true +org.jetbrains.compose.experimental.wasm.enabled=true +org.jetbrains.compose.experimental.macos.enabled=true +# Do not garbage collect on timeout on native when appExtensions are used and app is in bacground +kotlin.native.binary.appStateTracking=enabled +# Lift main thread suspending function invocation restriction +kotlin.native.binary.objcExportSuspendFunctionLaunchThreadRestriction=none +# Native incremental compilation +kotlin.incremental.native=true +android.experimental.additionalArtifactsInModel=true +kotlin.apple.xcodeCompatibility.nowarn=true +# Enable new k/n GC +kotlin.native.binary.gc=cms +org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled +org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true +org.gradle.configuration-cache.parallel=true release=true +#kotlin.kmp.isolated-projects.support=enable +kotlin.incremental.wasm=true +#org.gradle.unsafe.isolated-projects=true diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cf42574..fc20b40 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,7 +25,7 @@ jobs: with: distribution: 'zulu' check-latest: true - java-version: 22 + java-version: 23 cache: 'gradle' - name: Validate gradle wrapper diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 230acc8..a2e02d4 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -29,7 +29,7 @@ jobs: with: distribution: 'zulu' check-latest: true - java-version: 22 + java-version: 23 cache: 'gradle' - name: Validate gradle wrapper @@ -39,10 +39,13 @@ jobs: run: cp ./README.md ./docs/README.md - name: Generate docs - run: ./gradlew :dokkaHtmlMultiModule --no-configuration-cache + run: ./gradlew dokkaGenerate + + - name: Make javadoc dir + run: mkdir -p ./docs/javadocs - name: Move docs to the parent docs dir - run: cp -r ./build/dokka/htmlMultiModule/ ./docs/javadocs/ + run: cp -r ./build/dokka/html/ ./docs/javadocs - name: Setup Pages uses: actions/configure-pages@v5 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 2089086..0a889fc 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -21,17 +21,18 @@ jobs: environment: publishing steps: - - uses: actions/checkout@v4 + - name: Checkout + uses: actions/checkout@v4 - name: Copy CI gradle.properties run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties - - name: set up JDK + - name: Set up JDK uses: actions/setup-java@v4 with: distribution: 'zulu' check-latest: true - java-version: 22 + java-version: 23 cache: 'gradle' - name: Validate gradle wrapper @@ -41,6 +42,19 @@ jobs: with: xcode-version: latest + - name: Create local properties + env: + LOCAL_PROPERTIES: ${{ secrets.LOCAL_PROPERTIES }} + run: echo "$LOCAL_PROPERTIES" | base64 --decode > local.properties + + - name: Cache konan directory + uses: actions/cache@v4 + with: + path: ~/.konan + key: ${{ runner.os }}-konan-${{ hashFiles('*.gradle.kts', 'buildSrc/*') }} + restore-keys: | + ${{ runner.os }}-konan- + - name: Publish to sonatype env: ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.SONATYPE_USERNAME }} diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 3b7cb78..eec6ccd 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -8,6 +8,6 @@ jobs: assign_author: runs-on: macos-latest steps: - - uses: samspills/assign-pr-to-author@v1 + - uses: samspills/assign-pr-to-author@v1.0.2 with: repo-token: '${{ secrets.GITHUB_TOKEN }}' diff --git a/build.gradle.kts b/build.gradle.kts index 365aac2..05108dc 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,86 +1,42 @@ +import com.vanniktech.maven.publish.JavadocJar +import com.vanniktech.maven.publish.KotlinMultiplatform import com.vanniktech.maven.publish.MavenPublishBaseExtension +import com.vanniktech.maven.publish.MavenPublishBasePlugin import com.vanniktech.maven.publish.SonatypeHost import nl.littlerobots.vcu.plugin.versionCatalogUpdate import nl.littlerobots.vcu.plugin.versionSelector import org.jetbrains.kotlin.compose.compiler.gradle.ComposeCompilerGradlePluginExtension import org.jetbrains.kotlin.compose.compiler.gradle.ComposeCompilerGradleSubplugin -import org.jetbrains.kotlin.compose.compiler.gradle.ComposeFeatureFlag.Companion.OptimizeNonSkippingGroups +import org.jetbrains.kotlin.compose.compiler.gradle.ComposeFeatureFlag import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnLockMismatchReport import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnPlugin import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnRootExtension -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { alias(libs.plugins.detekt) alias(libs.plugins.gradleDoctor) alias(libs.plugins.version.catalog.update) - alias(libs.plugins.dokka) - alias(libs.plugins.dependencyAnalysis) - alias(libs.plugins.atomicfu) - alias(libs.plugins.maven.publish) apply false alias(libs.plugins.compose.compiler) apply false - alias(libs.plugins.compose) apply false - alias(libs.plugins.serialization) apply false + alias(libs.plugins.maven.publish) apply false + // alias(libs.plugins.atomicfu) apply false + dokkaDocumentation // plugins already on a classpath (conventions) + // alias(libs.plugins.dokka) apply false // alias(libs.plugins.androidApplication) apply false // alias(libs.plugins.androidLibrary) apply false // alias(libs.plugins.kotlinMultiplatform) apply false } -buildscript { - dependencies { - classpath(libs.android.gradle) - classpath(libs.kotlin.gradle) - classpath(libs.detekt.gradle) - } -} - allprojects { group = Config.artifactId version = Config.versionName - - tasks.withType().configureEach { - compilerOptions { - jvmTarget.set(Config.jvmTarget) - freeCompilerArgs.addAll(Config.jvmCompilerArgs) - optIn.addAll(Config.optIns) - } - } -} - -atomicfu { - dependenciesVersion = rootProject.libs.versions.kotlinx.atomicfu.get() - transformJvm = false - jvmVariant = "VH" - transformJs = false } subprojects { - apply(plugin = rootProject.libs.plugins.dokka.id) - - dependencies { - dokkaPlugin(rootProject.libs.dokka.android) - } - - tasks { - withType().configureEach { - useJUnitPlatform() - filter { isFailOnNoMatchingTests = true } - } - register("dokkaJavadocJar") { - dependsOn(dokkaJavadoc) - from(dokkaJavadoc.flatMap { it.outputDirectory }) - archiveClassifier.set("javadoc") - } - - register("emptyJavadocJar") { - archiveClassifier.set("javadoc") - } - } plugins.withType().configureEach { the().apply { - featureFlags.addAll(OptimizeNonSkippingGroups) - stabilityConfigurationFile = rootProject.layout.projectDirectory.file("stability_definitions.txt") + featureFlags.addAll(ComposeFeatureFlag.OptimizeNonSkippingGroups) + stabilityConfigurationFiles.add(rootProject.layout.projectDirectory.file("stability_definitions.txt")) if (properties["enableComposeCompilerReports"] == "true") { val metricsDir = layout.buildDirectory.dir("compose_metrics") metricsDestination = metricsDir @@ -88,9 +44,16 @@ subprojects { } } } - afterEvaluate { - extensions.findByType()?.run { + plugins.withType { + the().apply { val isReleaseBuild = properties["release"]?.toString().toBoolean() + configure( + KotlinMultiplatform( + javadocJar = JavadocJar.Empty(), + sourcesJar = true, + androidVariantsToPublish = listOf("release"), + ) + ) publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL, false) if (isReleaseBuild) signAllPublications() coordinates(Config.artifactId, name, Config.version(isReleaseBuild)) @@ -120,6 +83,12 @@ subprojects { } } } + tasks { + withType().configureEach { + useJUnitPlatform() + filter { isFailOnNoMatchingTests = true } + } + } } doctor { @@ -128,12 +97,6 @@ doctor { } } -dependencyAnalysis { - structure { - ignoreKtx(true) - } -} - dependencies { detektPlugins(rootProject.libs.detekt.formatting) detektPlugins(rootProject.libs.detekt.compose) @@ -152,11 +115,12 @@ versionCatalogUpdate { } } +// atomicfu { +// dependenciesVersion = libs.versions.atomicfu.get() +// jvmVariant = "VH" +// } + tasks { - dokkaHtmlMultiModule.configure { - moduleName.set(rootProject.name) - } - // needed to generate compose compiler reports. See /scripts withType().configureEach { buildUponDefaultConfig = true parallel = true @@ -197,3 +161,14 @@ rootProject.plugins.withType().configureEach { yarnLockAutoReplace = true } } + +dependencies { + detektPlugins(rootProject.libs.detekt.formatting) + detektPlugins(rootProject.libs.detekt.compose) + detektPlugins(rootProject.libs.detekt.libraries) + projects.run { + listOf( + common, compose, coroutines, datetime, inputforms + ).forEach { dokka(it) } + } +} diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 133166f..0a525a1 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -8,4 +8,5 @@ plugins { dependencies { implementation(libs.android.gradle) implementation(libs.kotlin.gradle) + implementation(libs.dokka.gradle) } diff --git a/buildSrc/src/main/kotlin/Config.kt b/buildSrc/src/main/kotlin/Config.kt index 1e0ca07..d540712 100644 --- a/buildSrc/src/main/kotlin/Config.kt +++ b/buildSrc/src/main/kotlin/Config.kt @@ -17,8 +17,8 @@ object Config { const val artifactId = "$group.$artifact" const val majorRelease = 1 - const val minorRelease = 4 - const val patch = 4 + const val minorRelease = 5 + const val patch = 0 const val postfix = "" const val versionName = "$majorRelease.$minorRelease.$patch$postfix" @@ -34,31 +34,40 @@ object Config { const val name = "KMPUtils" // kotlin + val jvmTarget = JvmTarget.JVM_11 + val javaVersion = JavaVersion.VERSION_11 + const val compileSdk = 35 + const val targetSdk = compileSdk + const val minSdk = 21 + const val appMinSdk = 26 + const val publishingVariant = "release" + val optIns = listOf( "kotlinx.coroutines.ExperimentalCoroutinesApi", "kotlinx.coroutines.FlowPreview", "kotlin.RequiresOptIn", "kotlin.experimental.ExperimentalTypeInference", - "kotlin.contracts.ExperimentalContracts" + "kotlin.uuid.ExperimentalUuidApi", + "kotlin.contracts.ExperimentalContracts", ) val compilerArgs = listOf( + "-Xbackend-threads=0", // parallel IR compilation + "-Xexpect-actual-classes", + "-Xwasm-use-new-exception-proposal", "-Xconsistent-data-class-copy-visibility", + "-Xsuppress-warning=NOTHING_TO_INLINE", + "-Xsuppress-warning=UNUSED_ANONYMOUS_PARAMETER", + "-Xwasm-debugger-custom-formatters" ) val jvmCompilerArgs = buildList { + addAll(compilerArgs) add("-Xjvm-default=all") // enable all jvm optimizations + add("-Xcontext-receivers") add("-Xstring-concat=inline") - add("-Xbackend-threads=0") // parallel IR compilation - addAll(optIns.map { "-opt-in=$it" }) + add("-Xlambdas=indy") + add("-Xjdk-release=${jvmTarget.target}") } - val jvmTarget = JvmTarget.JVM_11 - val javaVersion = JavaVersion.VERSION_11 - const val compileSdk = 35 - const val targetSdk = compileSdk - const val minSdk = 21 - const val appMinSdk = 26 - const val publishingVariant = "release" - // android const val namespace = artifactId const val testRunner = "androidx.test.runner.AndroidJUnitRunner" diff --git a/buildSrc/src/main/kotlin/ConfigureMultiplatform.kt b/buildSrc/src/main/kotlin/ConfigureMultiplatform.kt index f7c01f8..356935b 100644 --- a/buildSrc/src/main/kotlin/ConfigureMultiplatform.kt +++ b/buildSrc/src/main/kotlin/ConfigureMultiplatform.kt @@ -1,4 +1,4 @@ -@file:Suppress("MissingPackageDeclaration", "unused", "UndocumentedPublicFunction", "LongMethod") +@file:Suppress("MissingPackageDeclaration", "unused", "UndocumentedPublicFunction", "LongMethod", "UnusedImports") import org.gradle.api.Project import org.gradle.kotlin.dsl.getValue @@ -8,11 +8,11 @@ import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension import org.jetbrains.kotlin.gradle.plugin.KotlinHierarchyBuilder -@OptIn(ExperimentalWasmDsl::class, ExperimentalKotlinGradlePluginApi::class) +@OptIn(ExperimentalKotlinGradlePluginApi::class, ExperimentalWasmDsl::class) fun Project.configureMultiplatform( ext: KotlinMultiplatformExtension, jvm: Boolean = true, - android: Boolean = false, + android: Boolean = true, linux: Boolean = true, iOs: Boolean = true, js: Boolean = true, @@ -21,17 +21,19 @@ fun Project.configureMultiplatform( watchOs: Boolean = true, windows: Boolean = true, wasmJs: Boolean = true, - wasmWasi: Boolean = false, // TODO: Coroutines do not support wasmWasi yet + wasmWasi: Boolean = false, + explicitApi: Boolean = true, configure: KotlinHierarchyBuilder.Root.() -> Unit = {}, ) = ext.apply { val libs by versionCatalog - explicitApi() + if (explicitApi) explicitApi() applyDefaultHierarchyTemplate(configure) withSourcesJar(true) - compilerOptions { + extraWarnings.set(true) freeCompilerArgs.addAll(Config.compilerArgs) optIn.addAll(Config.optIns) + progressiveMode.set(true) } if (linux) { @@ -54,13 +56,24 @@ fun Project.configureMultiplatform( binaries.library() } - if (wasmWasi) wasmWasi() + if (wasmWasi) wasmWasi { + nodejs() + } if (android) androidTarget { - publishLibraryVariants("release") + publishLibraryVariants(Config.publishingVariant) + compilerOptions { + jvmTarget.set(Config.jvmTarget) + freeCompilerArgs.addAll(Config.jvmCompilerArgs) + } } - if (jvm) jvm() + if (jvm) jvm { + compilerOptions { + jvmTarget.set(Config.jvmTarget) + freeCompilerArgs.addAll(Config.jvmCompilerArgs) + } + } sequence { if (iOs) { @@ -96,6 +109,7 @@ fun Project.configureMultiplatform( all { languageSettings { progressiveMode = true + Config.optIns.forEach { optIn(it) } } } } diff --git a/buildSrc/src/main/kotlin/Util.kt b/buildSrc/src/main/kotlin/Util.kt index 9e93d23..08154cc 100644 --- a/buildSrc/src/main/kotlin/Util.kt +++ b/buildSrc/src/main/kotlin/Util.kt @@ -5,7 +5,10 @@ import org.gradle.api.artifacts.VersionCatalog import org.gradle.api.artifacts.VersionCatalogsExtension import org.gradle.kotlin.dsl.getByType import org.gradle.plugin.use.PluginDependency +import java.io.File +import java.io.FileInputStream import java.util.Base64 +import java.util.Properties /** * Load version catalog for usage in places where it is not available yet with gradle 7.x. @@ -46,6 +49,17 @@ fun List.toJavaArrayString() = buildString { fun String.toBase64() = Base64.getEncoder().encodeToString(toByteArray()) +fun Project.localProperties() = lazy { + Properties().apply { + val file = File(rootProject.rootDir.absolutePath, "local.properties") + if (!file.exists()) { + println("w: Local.properties file does not exist. You may be missing some publishing keys") + return@apply + } + load(FileInputStream(file)) + } +} + fun stabilityLevel(version: String): Int { Config.stabilityLevels.forEachIndexed { index, postfix -> val regex = """.*[.\-]$postfix[.\-\d]*""".toRegex(RegexOption.IGNORE_CASE) @@ -53,8 +67,9 @@ fun stabilityLevel(version: String): Int { } return Config.stabilityLevels.size } - fun Config.version(isRelease: Boolean) = buildString { append(versionName) if (!isRelease) append("-SNAPSHOT") } + +fun Project.namespaceByPath() = "${Config.namespace}.${path.replace(":", ".").removePrefix(".")}" diff --git a/buildSrc/src/main/kotlin/dokkaDocumentation.gradle.kts b/buildSrc/src/main/kotlin/dokkaDocumentation.gradle.kts new file mode 100644 index 0000000..35cc93b --- /dev/null +++ b/buildSrc/src/main/kotlin/dokkaDocumentation.gradle.kts @@ -0,0 +1,37 @@ +import org.jetbrains.dokka.gradle.engine.parameters.VisibilityModifier + +plugins { + id("org.jetbrains.dokka") + // id("org.jetbrains.dokka-javadoc") +} + +val libs by versionCatalog + +dokka { + dokkaGeneratorIsolation = ClassLoaderIsolation() + moduleName = project.name + moduleVersion = project.version.toString() + pluginsConfiguration.html { + footerMessage = "© ${Config.vendorName}" + homepageLink = Config.url + } + dokkaPublications.configureEach { + suppressInheritedMembers = false + suppressObviousFunctions = true + } + dokkaSourceSets.configureEach { + reportUndocumented = false + enableJdkDocumentationLink = true + enableAndroidDocumentationLink = true + enableKotlinStdLibDocumentationLink = true + skipEmptyPackages = true + skipDeprecated = true + jdkVersion = Config.javaVersion.majorVersion.toInt() + documentedVisibilities(VisibilityModifier.Public) + } + // remoteUrl = Config.docsUrl +} + +dependencies { + dokkaPlugin(libs.requireLib("dokka-android")) +} diff --git a/buildSrc/src/main/kotlin/pro.respawn.android-library.gradle.kts b/buildSrc/src/main/kotlin/pro.respawn.android-library.gradle.kts new file mode 100644 index 0000000..36d0e87 --- /dev/null +++ b/buildSrc/src/main/kotlin/pro.respawn.android-library.gradle.kts @@ -0,0 +1,16 @@ +plugins { + kotlin("android") + id("com.android.library") +} + +kotlin { + explicitApi() +} + +android { + configureAndroidLibrary(this) + + kotlinOptions { + jvmTarget = Config.jvmTarget.target + } +} diff --git a/buildSrc/src/main/kotlin/pro.respawn.shared-library.gradle.kts b/buildSrc/src/main/kotlin/pro.respawn.shared-library.gradle.kts index 9eb6ecf..9a6be11 100644 --- a/buildSrc/src/main/kotlin/pro.respawn.shared-library.gradle.kts +++ b/buildSrc/src/main/kotlin/pro.respawn.shared-library.gradle.kts @@ -1,12 +1,16 @@ +import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi + plugins { kotlin("multiplatform") - // id("com.android.library") + id("com.android.library") } kotlin { + @OptIn(ExperimentalKotlinGradlePluginApi::class) configureMultiplatform(this) } -// android { -// configureAndroidLibrary(this) -// } +android { + namespace = namespaceByPath() + configureAndroidLibrary(this) +} diff --git a/common/build.gradle.kts b/common/build.gradle.kts index cb04b03..58216ca 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -1,4 +1,5 @@ plugins { id("pro.respawn.shared-library") alias(libs.plugins.maven.publish) + dokkaDocumentation } diff --git a/compose/build.gradle.kts b/compose/build.gradle.kts index 4d70443..2470acf 100644 --- a/compose/build.gradle.kts +++ b/compose/build.gradle.kts @@ -6,11 +6,12 @@ plugins { alias(libs.plugins.compose) alias(libs.plugins.compose.compiler) alias(libs.plugins.maven.publish) + dokkaDocumentation } android { configureAndroidLibrary(this) - namespace = "${Config.namespace}.compose" + namespace = namespaceByPath() buildFeatures { compose = true @@ -31,6 +32,7 @@ kotlin { js = true, wasmJs = true, windows = false, + wasmWasi = false, ) { common { group("web") { diff --git a/coroutines/build.gradle.kts b/coroutines/build.gradle.kts index 3119646..894b2a4 100644 --- a/coroutines/build.gradle.kts +++ b/coroutines/build.gradle.kts @@ -2,6 +2,7 @@ plugins { id("pro.respawn.shared-library") alias(libs.plugins.atomicfu) alias(libs.plugins.maven.publish) + dokkaDocumentation } dependencies { commonMainApi(libs.kotlinx.coroutines.core) diff --git a/datetime/build.gradle.kts b/datetime/build.gradle.kts index deb71bf..83d63c1 100644 --- a/datetime/build.gradle.kts +++ b/datetime/build.gradle.kts @@ -1,6 +1,7 @@ plugins { id("pro.respawn.shared-library") alias(libs.plugins.maven.publish) + dokkaDocumentation } dependencies { diff --git a/gradle.properties b/gradle.properties index ed26c10..b183749 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,16 +15,31 @@ android.experimental.enableSourceSetPathsMap=true android.experimental.cacheCompileLibResources=true kotlin.mpp.enableCInteropCommonization=true kotlin.mpp.stability.nowarn=true -kotlin.mpp.androidGradlePluginCompatibility.nowarn=true org.gradle.unsafe.configuration-cache=true kotlin.mpp.androidSourceSetLayoutVersion=2 android.disableResourceValidation=true org.gradle.daemon=true android.nonFinalResIds=true -kotlin.native.ignoreIncorrectDependencies=true kotlinx.atomicfu.enableJvmIrTransformation=true android.lint.useK2Uast=true nl.littlerobots.vcu.resolver=true -org.jetbrains.compose.experimental.macos.enabled=true org.jetbrains.compose.experimental.jscanvas.enabled=true org.jetbrains.compose.experimental.wasm.enabled=true +org.jetbrains.compose.experimental.macos.enabled=true +# Do not garbage collect on timeout on native when appExtensions are used and app is in bacground +kotlin.native.binary.appStateTracking=enabled +# Lift main thread suspending function invocation restriction +kotlin.native.binary.objcExportSuspendFunctionLaunchThreadRestriction=none +# Native incremental compilation +kotlin.incremental.native=true +android.experimental.additionalArtifactsInModel=true +kotlin.apple.xcodeCompatibility.nowarn=true +# Enable new k/n GC +kotlin.native.binary.gc=cms +org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled +org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true +org.gradle.configuration-cache.parallel=true +release=false +#kotlin.kmp.isolated-projects.support=enable +kotlin.incremental.wasm=true +#org.gradle.unsafe.isolated-projects=true diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 1869a3a..22a4be5 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,23 +1,23 @@ [versions] -androidx-activity = "1.9.1" -androidx-core = "1.13.1" -compose = "1.7.0-alpha03" +androidx-activity = "1.10.0-rc01" +androidx-core = "1.15.0" +compose = "1.7.3" composeDetektPlugin = "1.4.0" -coroutines = "1.9.0-RC.2" +coroutines = "1.10.1" datetime = "0.6.1" dependencyAnalysisPlugin = "1.32.0" -detekt = "1.23.6" -dokka = "1.9.20" -gradleAndroid = "8.6.0-rc01" +detekt = "1.23.7" +dokka = "2.0.0" +gradleAndroid = "8.8.0-rc02" gradleDoctorPlugin = "0.10.0" junit = "4.13.2" -kotest = "5.9.1" +kotest = "6.0.0.M1" # @pin -kotlin = "2.0.20" -kotlinx-atomicfu = "0.25.0" -lifecycle = "2.8.0" +kotlin = "2.1.0" +kotlinx-atomicfu = "0.26.1" +lifecycle = "2.8.4" maven-publish-plugin = "0.29.0" -turbine = "1.1.0" +turbine = "1.2.0" versionCatalogUpdatePlugin = "0.8.4" [libraries] @@ -25,7 +25,8 @@ android-gradle = { module = "com.android.tools.build:gradle", version.ref = "gra androidx-activity = { module = "androidx.activity:activity-ktx", version.ref = "androidx-activity" } androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity" } androidx-core = { module = "androidx.core:core-ktx", version.ref = "androidx-core" } -androidx-lifecycle-viewmodel = { module = "androidx.lifecycle:lifecycle-viewmodel-compose-android", version.ref = "lifecycle" } +androidx-lifecycle-viewmodel = "androidx.lifecycle:lifecycle-viewmodel-compose-android:2.8.7" +compose-window-size = { module = "org.jetbrains.compose.material3:material3-window-size-class", version.ref = "compose" } detekt-compose = { module = "ru.kode:detekt-rules-compose", version.ref = "composeDetektPlugin" } detekt-formatting = { module = "io.gitlab.arturbosch.detekt:detekt-formatting", version.ref = "detekt" } detekt-gradle = { module = "io.gitlab.arturbosch.detekt:detekt-gradle-plugin", version.ref = "detekt" } @@ -43,11 +44,11 @@ kotlinx-atomicfu = { module = "org.jetbrains.kotlinx:atomicfu", version.ref = "k kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" } kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutines" } kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "datetime" } +lifecycle-compose = { module = "org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose", version.ref = "lifecycle" } lifecycle-runtime = { module = "org.jetbrains.androidx.lifecycle:lifecycle-runtime", version.ref = "lifecycle" } lifecycle-viewmodel = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel", version.ref = "lifecycle" } -lifecycle-compose = { module = "org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose", version.ref = "lifecycle" } -compose-window-size = { module = "org.jetbrains.compose.material3:material3-window-size-class", version.ref = "compose" } turbine = { module = "app.cash.turbine:turbine", version.ref = "turbine" } +dokka-gradle = { module = "org.jetbrains.dokka:dokka-gradle-plugin", version.ref = "dokka" } [bundles] unittest = [ diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 2c3521197d7c4586c843d1d3e9090525f1898cde..a4b76b9530d66f5e68d973ea569d8e19de379189 100644 GIT binary patch delta 3990 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 09523c0..cea7a79 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index f5feea6..f3b75f3 100755 --- a/gradlew +++ b/gradlew @@ -86,8 +86,7 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s -' "$PWD" ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum diff --git a/inputforms/build.gradle.kts b/inputforms/build.gradle.kts index 60093a7..2ec19ea 100644 --- a/inputforms/build.gradle.kts +++ b/inputforms/build.gradle.kts @@ -1,6 +1,7 @@ plugins { id("pro.respawn.shared-library") alias(libs.plugins.maven.publish) + dokkaDocumentation } dependencies { commonMainApi(projects.common) diff --git a/system/build.gradle.kts b/system/build.gradle.kts index 92d8460..5588ba2 100644 --- a/system/build.gradle.kts +++ b/system/build.gradle.kts @@ -2,6 +2,7 @@ plugins { kotlin("multiplatform") id("com.android.library") alias(libs.plugins.maven.publish) + dokkaDocumentation } kotlin { @@ -17,6 +18,6 @@ kotlin { } android { - namespace = "${Config.namespace}.system" + namespace = namespaceByPath() configureAndroidLibrary(this) } From 712922e52b8c2762f3a45781bd43768bf4bacac4 Mon Sep 17 00:00:00 2001 From: Nek-12 Date: Sun, 5 Jan 2025 16:37:57 +0100 Subject: [PATCH 2/4] update gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 6661414..00e4996 100644 --- a/.gitignore +++ b/.gitignore @@ -167,3 +167,5 @@ hs_err_pid* !gradle/gradle-wrapper.jar /.idea/appInsightsSettings.xml /.idea/migrations.xml +.kotlin +kotlin-js-store/yarn.lock From 9ad19932b394990f539c023c7a6e5e56e2dbce8c Mon Sep 17 00:00:00 2001 From: Nek-12 Date: Sun, 5 Jan 2025 16:48:04 +0100 Subject: [PATCH 3/4] fix lint --- .../kotlin/pro/respawn/kmmutils/compose/modifier/FadingEdge.kt | 1 + .../kotlin/pro/respawn/kmmutils/compose/modifier/Flip.kt | 1 + .../commonMain/kotlin/pro/respawn/kmmutils/inputforms/Form.kt | 1 + .../commonMain/kotlin/pro/respawn/kmmutils/inputforms/Input.kt | 1 + .../commonMain/kotlin/pro/respawn/kmmutils/inputforms/Rule.kt | 1 + .../kotlin/pro/respawn/kmmutils/inputforms/ValidationError.kt | 1 + .../pro/respawn/kmmutils/inputforms/ValidationStrategy.kt | 1 + .../kotlin/pro/respawn/kmmutils/system/android/NetworkExt.kt | 2 ++ 8 files changed, 9 insertions(+) diff --git a/compose/src/commonMain/kotlin/pro/respawn/kmmutils/compose/modifier/FadingEdge.kt b/compose/src/commonMain/kotlin/pro/respawn/kmmutils/compose/modifier/FadingEdge.kt index 55a5f4a..3e3d0b5 100644 --- a/compose/src/commonMain/kotlin/pro/respawn/kmmutils/compose/modifier/FadingEdge.kt +++ b/compose/src/commonMain/kotlin/pro/respawn/kmmutils/compose/modifier/FadingEdge.kt @@ -14,6 +14,7 @@ import androidx.compose.ui.unit.LayoutDirection /** * The edge to use with [fadingEdge] modifier. */ +@Suppress("UndocumentedPublicProperty") // what's here to document? public enum class FadingEdge { Start, End, Top, Bottom } diff --git a/compose/src/commonMain/kotlin/pro/respawn/kmmutils/compose/modifier/Flip.kt b/compose/src/commonMain/kotlin/pro/respawn/kmmutils/compose/modifier/Flip.kt index f697404..3d91b08 100644 --- a/compose/src/commonMain/kotlin/pro/respawn/kmmutils/compose/modifier/Flip.kt +++ b/compose/src/commonMain/kotlin/pro/respawn/kmmutils/compose/modifier/Flip.kt @@ -10,6 +10,7 @@ import androidx.compose.ui.graphics.drawscope.withTransform /** * Defines available modes for the [flip] modifier */ +@Suppress("UndocumentedPublicProperty") // what's here to document? public enum class FlipDirection(internal val x: Float, internal val y: Float) { Vertical(1f, -1f), Horizontal(-1f, 1f) diff --git a/inputforms/src/commonMain/kotlin/pro/respawn/kmmutils/inputforms/Form.kt b/inputforms/src/commonMain/kotlin/pro/respawn/kmmutils/inputforms/Form.kt index c576ef2..574b66d 100644 --- a/inputforms/src/commonMain/kotlin/pro/respawn/kmmutils/inputforms/Form.kt +++ b/inputforms/src/commonMain/kotlin/pro/respawn/kmmutils/inputforms/Form.kt @@ -24,5 +24,6 @@ public open class Form( */ public open fun validate(input: String): Input = rules(input, strategy).fold(input) + @Suppress("UndocumentedPublicClass") // what's here to document? public companion object } diff --git a/inputforms/src/commonMain/kotlin/pro/respawn/kmmutils/inputforms/Input.kt b/inputforms/src/commonMain/kotlin/pro/respawn/kmmutils/inputforms/Input.kt index a5af91b..c172c59 100644 --- a/inputforms/src/commonMain/kotlin/pro/respawn/kmmutils/inputforms/Input.kt +++ b/inputforms/src/commonMain/kotlin/pro/respawn/kmmutils/inputforms/Input.kt @@ -51,5 +51,6 @@ public sealed interface Input { is Valid -> Valid(value) } + @Suppress("UndocumentedPublicClass") // what's here to document? public companion object } diff --git a/inputforms/src/commonMain/kotlin/pro/respawn/kmmutils/inputforms/Rule.kt b/inputforms/src/commonMain/kotlin/pro/respawn/kmmutils/inputforms/Rule.kt index a02eb44..0a994ba 100644 --- a/inputforms/src/commonMain/kotlin/pro/respawn/kmmutils/inputforms/Rule.kt +++ b/inputforms/src/commonMain/kotlin/pro/respawn/kmmutils/inputforms/Rule.kt @@ -13,5 +13,6 @@ public fun interface Rule { */ public operator fun invoke(value: String): Sequence + @Suppress("UndocumentedPublicClass") // what's here to document? public companion object } diff --git a/inputforms/src/commonMain/kotlin/pro/respawn/kmmutils/inputforms/ValidationError.kt b/inputforms/src/commonMain/kotlin/pro/respawn/kmmutils/inputforms/ValidationError.kt index d326a6f..e6239b5 100644 --- a/inputforms/src/commonMain/kotlin/pro/respawn/kmmutils/inputforms/ValidationError.kt +++ b/inputforms/src/commonMain/kotlin/pro/respawn/kmmutils/inputforms/ValidationError.kt @@ -224,5 +224,6 @@ public sealed interface ValidationError { @JvmInline public value class NoUppercaseLetters(override val value: String) : ValidationError + @Suppress("UndocumentedPublicClass") // what's here to document? public companion object } diff --git a/inputforms/src/commonMain/kotlin/pro/respawn/kmmutils/inputforms/ValidationStrategy.kt b/inputforms/src/commonMain/kotlin/pro/respawn/kmmutils/inputforms/ValidationStrategy.kt index fc244fc..79bf546 100644 --- a/inputforms/src/commonMain/kotlin/pro/respawn/kmmutils/inputforms/ValidationStrategy.kt +++ b/inputforms/src/commonMain/kotlin/pro/respawn/kmmutils/inputforms/ValidationStrategy.kt @@ -21,5 +21,6 @@ public sealed interface ValidationStrategy { */ public data object LazyEval : ValidationStrategy + @Suppress("UndocumentedPublicClass") // what's here to document? public companion object } diff --git a/system/src/androidMain/kotlin/pro/respawn/kmmutils/system/android/NetworkExt.kt b/system/src/androidMain/kotlin/pro/respawn/kmmutils/system/android/NetworkExt.kt index d174c91..b840846 100644 --- a/system/src/androidMain/kotlin/pro/respawn/kmmutils/system/android/NetworkExt.kt +++ b/system/src/androidMain/kotlin/pro/respawn/kmmutils/system/android/NetworkExt.kt @@ -47,6 +47,7 @@ public val Uri.linkType: LinkType /** * Type of the [Uri]'s scheme */ +@Suppress("UndocumentedPublicProperty") // what's here to document? public enum class LinkType { Web, Mail, @@ -85,6 +86,7 @@ public data class Email( val body: String? = null, ) { + @Suppress("UndocumentedPublicClass") // what's here to document? public companion object { /** From f92abf96e60b4e0fd895b674e3af7bb24a0dda39 Mon Sep 17 00:00:00 2001 From: Nek-12 Date: Sun, 5 Jan 2025 16:54:57 +0100 Subject: [PATCH 4/4] fix `requireNotNull` function message --- .../commonMain/kotlin/pro/respawn/kmmutils/common/CommonExt.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/src/commonMain/kotlin/pro/respawn/kmmutils/common/CommonExt.kt b/common/src/commonMain/kotlin/pro/respawn/kmmutils/common/CommonExt.kt index 674a43e..d284cbf 100644 --- a/common/src/commonMain/kotlin/pro/respawn/kmmutils/common/CommonExt.kt +++ b/common/src/commonMain/kotlin/pro/respawn/kmmutils/common/CommonExt.kt @@ -110,7 +110,7 @@ public fun T?.requireNotNull(): T & Any = requireNotNull(this) /** * Calls [requireNotNull] on this value and returns it */ -public inline fun T?.requireNotNull(lazyMessage: () -> Unit): T & Any = requireNotNull(this, lazyMessage) +public inline fun T?.requireNotNull(lazyMessage: () -> Any): T & Any = requireNotNull(this, lazyMessage) /** * If this is an [Error], throws it, otherwise returns [this] as an [Exception]