From fff32308bd8505a3b323107ed219014cda3c8711 Mon Sep 17 00:00:00 2001 From: Philip Wedemann <22521688+hfhbd@users.noreply.github.com> Date: Thu, 29 Aug 2024 19:54:22 +0200 Subject: [PATCH 1/2] Add klib api (#393) --- build.gradle.kts | 7 +++ .../api/kotlinx-uuid-core.klib.api | 52 +++++++++++++++++++ .../api/kotlinx-uuid-datetime.klib.api | 12 +++++ .../api/kotlinx-uuid-sqldelight.klib.api | 23 ++++++++ 4 files changed, 94 insertions(+) create mode 100644 kotlinx-uuid-core/api/kotlinx-uuid-core.klib.api create mode 100644 kotlinx-uuid-datetime/api/kotlinx-uuid-datetime.klib.api create mode 100644 kotlinx-uuid-sqldelight/api/kotlinx-uuid-sqldelight.klib.api diff --git a/build.gradle.kts b/build.gradle.kts index 94adf32..cf9bb70 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -55,3 +55,10 @@ tasks { } } } + +apiValidation { + @OptIn(kotlinx.validation.ExperimentalBCVApi::class) + klib { + enabled = true + } +} diff --git a/kotlinx-uuid-core/api/kotlinx-uuid-core.klib.api b/kotlinx-uuid-core/api/kotlinx-uuid-core.klib.api new file mode 100644 index 0000000..d3dea44 --- /dev/null +++ b/kotlinx-uuid-core/api/kotlinx-uuid-core.klib.api @@ -0,0 +1,52 @@ +// Klib ABI Dump +// Targets: [androidNativeArm32, androidNativeArm64, androidNativeX64, androidNativeX86, iosArm64, iosSimulatorArm64, iosX64, js, linuxArm64, linuxX64, macosArm64, macosX64, mingwX64, tvosArm64, tvosSimulatorArm64, tvosX64, watchosArm32, watchosArm64, watchosDeviceArm64, watchosSimulatorArm64, watchosX64] +// Alias: apple => [iosArm64, iosSimulatorArm64, iosX64, macosArm64, macosX64, tvosArm64, tvosSimulatorArm64, tvosX64, watchosArm32, watchosArm64, watchosDeviceArm64, watchosSimulatorArm64, watchosX64] +// Rendering settings: +// - Signature version: 2 +// - Show manifest properties: true +// - Show declarations: true + +// Library unique name: +final object app.softwork.uuid/BinarySerializer : kotlinx.serialization/KSerializer { // app.softwork.uuid/BinarySerializer|null[0] + final val descriptor // app.softwork.uuid/BinarySerializer.descriptor|{}descriptor[0] + final fun (): kotlinx.serialization.descriptors/SerialDescriptor // app.softwork.uuid/BinarySerializer.descriptor.|(){}[0] + + final fun deserialize(kotlinx.serialization.encoding/Decoder): kotlin.uuid/Uuid // app.softwork.uuid/BinarySerializer.deserialize|deserialize(kotlinx.serialization.encoding.Decoder){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // app.softwork.uuid/BinarySerializer.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // app.softwork.uuid/BinarySerializer.hashCode|hashCode(){}[0] + final fun serialize(kotlinx.serialization.encoding/Encoder, kotlin.uuid/Uuid) // app.softwork.uuid/BinarySerializer.serialize|serialize(kotlinx.serialization.encoding.Encoder;kotlin.uuid.Uuid){}[0] + final fun toString(): kotlin/String // app.softwork.uuid/BinarySerializer.toString|toString(){}[0] +} + +final val app.softwork.uuid/MAX // app.softwork.uuid/MAX|@kotlin.uuid.Uuid.Companion{}MAX[0] + final fun (kotlin.uuid/Uuid.Companion).(): kotlin.uuid/Uuid // app.softwork.uuid/MAX.|@kotlin.uuid.Uuid.Companion(){}[0] +final val app.softwork.uuid/clockSequence // app.softwork.uuid/clockSequence|@kotlin.uuid.Uuid{}clockSequence[0] + final fun (kotlin.uuid/Uuid).(): kotlin/Int // app.softwork.uuid/clockSequence.|@kotlin.uuid.Uuid(){}[0] +final val app.softwork.uuid/isRfcVariant // app.softwork.uuid/isRfcVariant|@kotlin.uuid.Uuid{}isRfcVariant[0] + final fun (kotlin.uuid/Uuid).(): kotlin/Boolean // app.softwork.uuid/isRfcVariant.|@kotlin.uuid.Uuid(){}[0] +final val app.softwork.uuid/node // app.softwork.uuid/node|@kotlin.uuid.Uuid{}node[0] + final fun (kotlin.uuid/Uuid).(): kotlin/Long // app.softwork.uuid/node.|@kotlin.uuid.Uuid(){}[0] +final val app.softwork.uuid/timeStamp // app.softwork.uuid/timeStamp|@kotlin.uuid.Uuid{}timeStamp[0] + final fun (kotlin.uuid/Uuid).(): kotlin/Long // app.softwork.uuid/timeStamp.|@kotlin.uuid.Uuid(){}[0] +final val app.softwork.uuid/unixTimeStamp // app.softwork.uuid/unixTimeStamp|@kotlin.uuid.Uuid{}unixTimeStamp[0] + final fun (kotlin.uuid/Uuid).(): kotlin/Long // app.softwork.uuid/unixTimeStamp.|@kotlin.uuid.Uuid(){}[0] +final val app.softwork.uuid/variant // app.softwork.uuid/variant|@kotlin.uuid.Uuid{}variant[0] + final fun (kotlin.uuid/Uuid).(): kotlin/Int // app.softwork.uuid/variant.|@kotlin.uuid.Uuid(){}[0] +final val app.softwork.uuid/versionNumber // app.softwork.uuid/versionNumber|@kotlin.uuid.Uuid{}versionNumber[0] + final fun (kotlin.uuid/Uuid).(): kotlin/Int // app.softwork.uuid/versionNumber.|@kotlin.uuid.Uuid(){}[0] + +final fun (kotlin.random/Random).app.softwork.uuid/nextUuid(): kotlin.uuid/Uuid // app.softwork.uuid/nextUuid|nextUuid@kotlin.random.Random(){}[0] +final fun (kotlin.uuid/Uuid.Companion).app.softwork.uuid/from(kotlin/Int, kotlin/Long, kotlin/Int, kotlin/Long, kotlin/Int = ...): kotlin.uuid/Uuid // app.softwork.uuid/from|from@kotlin.uuid.Uuid.Companion(kotlin.Int;kotlin.Long;kotlin.Int;kotlin.Long;kotlin.Int){}[0] +final fun (kotlin.uuid/Uuid.Companion).app.softwork.uuid/generateUuid(kotlin.uuid/Uuid, kotlin/String): kotlin.uuid/Uuid // app.softwork.uuid/generateUuid|generateUuid@kotlin.uuid.Uuid.Companion(kotlin.uuid.Uuid;kotlin.String){}[0] +final fun (kotlin.uuid/Uuid.Companion).app.softwork.uuid/generateUuid(kotlin/ByteArray): kotlin.uuid/Uuid // app.softwork.uuid/generateUuid|generateUuid@kotlin.uuid.Uuid.Companion(kotlin.ByteArray){}[0] +final fun (kotlin.uuid/Uuid.Companion).app.softwork.uuid/isValidUuidString(kotlin/String): kotlin/Boolean // app.softwork.uuid/isValidUuidString|isValidUuidString@kotlin.uuid.Uuid.Companion(kotlin.String){}[0] +final fun (kotlin.uuid/Uuid.Companion).app.softwork.uuid/random(kotlin.random/Random): kotlin.uuid/Uuid // app.softwork.uuid/random|random@kotlin.uuid.Uuid.Companion(kotlin.random.Random){}[0] +final fun (kotlin/String).app.softwork.uuid/toUuid(): kotlin.uuid/Uuid // app.softwork.uuid/toUuid|toUuid@kotlin.String(){}[0] +final fun (kotlin/String).app.softwork.uuid/toUuidOrNull(): kotlin.uuid/Uuid? // app.softwork.uuid/toUuidOrNull|toUuidOrNull@kotlin.String(){}[0] +final fun app.softwork.uuid/Uuidv7(kotlin/Long, kotlin.random/Random): kotlin.uuid/Uuid // app.softwork.uuid/Uuidv7|Uuidv7(kotlin.Long;kotlin.random.Random){}[0] + +// Targets: [apple] +final fun (kotlin.uuid/Uuid).app.softwork.uuid/toNsUUID(): platform.Foundation/NSUUID // app.softwork.uuid/toNsUUID|toNsUUID@kotlin.uuid.Uuid(){}[0] + +// Targets: [apple] +final fun (platform.Foundation/NSUUID).app.softwork.uuid/toKotlinUuid(): kotlin.uuid/Uuid // app.softwork.uuid/toKotlinUuid|toKotlinUuid@platform.Foundation.NSUUID(){}[0] diff --git a/kotlinx-uuid-datetime/api/kotlinx-uuid-datetime.klib.api b/kotlinx-uuid-datetime/api/kotlinx-uuid-datetime.klib.api new file mode 100644 index 0000000..4159c55 --- /dev/null +++ b/kotlinx-uuid-datetime/api/kotlinx-uuid-datetime.klib.api @@ -0,0 +1,12 @@ +// Klib ABI Dump +// Targets: [androidNativeArm32, androidNativeArm64, androidNativeX64, androidNativeX86, iosArm64, iosSimulatorArm64, iosX64, js, linuxArm64, linuxX64, macosArm64, macosX64, mingwX64, tvosArm64, tvosSimulatorArm64, tvosX64, watchosArm32, watchosArm64, watchosDeviceArm64, watchosSimulatorArm64, watchosX64] +// Rendering settings: +// - Signature version: 2 +// - Show manifest properties: true +// - Show declarations: true + +// Library unique name: +final val app.softwork.uuid.datetime/instant // app.softwork.uuid.datetime/instant|@kotlin.uuid.Uuid{}instant[0] + final fun (kotlin.uuid/Uuid).(): kotlinx.datetime/Instant // app.softwork.uuid.datetime/instant.|@kotlin.uuid.Uuid(){}[0] + +final fun app.softwork.uuid.datetime/Uuidv7(kotlinx.datetime/Instant = ..., kotlin.random/Random): kotlin.uuid/Uuid // app.softwork.uuid.datetime/Uuidv7|Uuidv7(kotlinx.datetime.Instant;kotlin.random.Random){}[0] diff --git a/kotlinx-uuid-sqldelight/api/kotlinx-uuid-sqldelight.klib.api b/kotlinx-uuid-sqldelight/api/kotlinx-uuid-sqldelight.klib.api new file mode 100644 index 0000000..6c628e8 --- /dev/null +++ b/kotlinx-uuid-sqldelight/api/kotlinx-uuid-sqldelight.klib.api @@ -0,0 +1,23 @@ +// Klib ABI Dump +// Targets: [androidNativeArm32, androidNativeArm64, androidNativeX64, androidNativeX86, iosArm64, iosSimulatorArm64, iosX64, js, linuxArm64, linuxX64, macosArm64, macosX64, mingwX64, tvosArm64, tvosSimulatorArm64, tvosX64, watchosArm32, watchosArm64, watchosDeviceArm64, watchosSimulatorArm64, watchosX64] +// Rendering settings: +// - Signature version: 2 +// - Show manifest properties: true +// - Show declarations: true + +// Library unique name: +final object app.softwork.uuid.sqldelight/UuidByteArrayAdapter : app.cash.sqldelight/ColumnAdapter { // app.softwork.uuid.sqldelight/UuidByteArrayAdapter|null[0] + final fun decode(kotlin/ByteArray): kotlin.uuid/Uuid // app.softwork.uuid.sqldelight/UuidByteArrayAdapter.decode|decode(kotlin.ByteArray){}[0] + final fun encode(kotlin.uuid/Uuid): kotlin/ByteArray // app.softwork.uuid.sqldelight/UuidByteArrayAdapter.encode|encode(kotlin.uuid.Uuid){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // app.softwork.uuid.sqldelight/UuidByteArrayAdapter.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // app.softwork.uuid.sqldelight/UuidByteArrayAdapter.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // app.softwork.uuid.sqldelight/UuidByteArrayAdapter.toString|toString(){}[0] +} + +final object app.softwork.uuid.sqldelight/UuidStringAdapter : app.cash.sqldelight/ColumnAdapter { // app.softwork.uuid.sqldelight/UuidStringAdapter|null[0] + final fun decode(kotlin/String): kotlin.uuid/Uuid // app.softwork.uuid.sqldelight/UuidStringAdapter.decode|decode(kotlin.String){}[0] + final fun encode(kotlin.uuid/Uuid): kotlin/String // app.softwork.uuid.sqldelight/UuidStringAdapter.encode|encode(kotlin.uuid.Uuid){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // app.softwork.uuid.sqldelight/UuidStringAdapter.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // app.softwork.uuid.sqldelight/UuidStringAdapter.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // app.softwork.uuid.sqldelight/UuidStringAdapter.toString|toString(){}[0] +} From 1f7d72a28b90d1f7d4b0bd7859727838c6f2a09a Mon Sep 17 00:00:00 2001 From: Philip Wedemann <22521688+hfhbd@users.noreply.github.com> Date: Thu, 29 Aug 2024 19:54:34 +0200 Subject: [PATCH 2/2] Simplify Gradle setup (#394) * Add klib api * Simplify Gradle setup --- gradle/build-logic/src/main/kotlin/KotlinConfig.kt | 14 -------------- .../src/main/kotlin/kotlinMPP.gradle.kts | 10 +++++++++- .../build-logic/src/main/kotlin/publish.gradle.kts | 8 ++------ kotlinx-uuid-core/build.gradle.kts | 2 -- kotlinx-uuid-datetime/build.gradle.kts | 2 -- kotlinx-uuid-sqldelight/build.gradle.kts | 2 -- 6 files changed, 11 insertions(+), 27 deletions(-) delete mode 100644 gradle/build-logic/src/main/kotlin/KotlinConfig.kt diff --git a/gradle/build-logic/src/main/kotlin/KotlinConfig.kt b/gradle/build-logic/src/main/kotlin/KotlinConfig.kt deleted file mode 100644 index 86fe3f2..0000000 --- a/gradle/build-logic/src/main/kotlin/KotlinConfig.kt +++ /dev/null @@ -1,14 +0,0 @@ -import org.jetbrains.kotlin.gradle.dsl.* - -fun KotlinProjectExtension.kotlinConfig() { - explicitApi() - - jvmToolchain(8) - - sourceSets.configureEach { - languageSettings { - progressiveMode = true - optIn("kotlin.uuid.ExperimentalUuidApi") - } - } -} diff --git a/gradle/build-logic/src/main/kotlin/kotlinMPP.gradle.kts b/gradle/build-logic/src/main/kotlin/kotlinMPP.gradle.kts index a947124..5dc1e92 100644 --- a/gradle/build-logic/src/main/kotlin/kotlinMPP.gradle.kts +++ b/gradle/build-logic/src/main/kotlin/kotlinMPP.gradle.kts @@ -1,8 +1,12 @@ plugins { kotlin("multiplatform") + id("publish") + id("dokkaLicensee") } kotlin { + jvmToolchain(8) + jvm() js(IR) { browser() @@ -35,5 +39,9 @@ kotlin { mingwX64() watchosDeviceArm64() - kotlinConfig() + explicitApi() + compilerOptions { + progressiveMode.set(true) + optIn.add("kotlin.uuid.ExperimentalUuidApi") + } } diff --git a/gradle/build-logic/src/main/kotlin/publish.gradle.kts b/gradle/build-logic/src/main/kotlin/publish.gradle.kts index 60aef65..724391a 100644 --- a/gradle/build-logic/src/main/kotlin/publish.gradle.kts +++ b/gradle/build-logic/src/main/kotlin/publish.gradle.kts @@ -1,5 +1,3 @@ -import java.util.* - plugins { id("maven-publish") id("signing") @@ -10,10 +8,8 @@ val emptyJar by tasks.registering(Jar::class) publishing { publications.configureEach { this as MavenPublication - if (project.name != "kotlinx-uuid-exposed") { - artifact(emptyJar) { - classifier = "javadoc" - } + artifact(emptyJar) { + classifier = "javadoc" } pom { name.set("app.softwork UUID Library") diff --git a/kotlinx-uuid-core/build.gradle.kts b/kotlinx-uuid-core/build.gradle.kts index 55b985e..3a7a271 100644 --- a/kotlinx-uuid-core/build.gradle.kts +++ b/kotlinx-uuid-core/build.gradle.kts @@ -7,8 +7,6 @@ import org.jetbrains.kotlin.gradle.plugin.* plugins { id("kotlinMPP") - id("publish") - id("dokkaLicensee") id("kover") id("com.android.library") kotlin("plugin.parcelize") diff --git a/kotlinx-uuid-datetime/build.gradle.kts b/kotlinx-uuid-datetime/build.gradle.kts index b30df21..adf0627 100644 --- a/kotlinx-uuid-datetime/build.gradle.kts +++ b/kotlinx-uuid-datetime/build.gradle.kts @@ -5,8 +5,6 @@ plugins { id("kotlinMPP") - id("publish") - id("dokkaLicensee") } kotlin.sourceSets { diff --git a/kotlinx-uuid-sqldelight/build.gradle.kts b/kotlinx-uuid-sqldelight/build.gradle.kts index 11b9f06..1ebca8c 100644 --- a/kotlinx-uuid-sqldelight/build.gradle.kts +++ b/kotlinx-uuid-sqldelight/build.gradle.kts @@ -3,8 +3,6 @@ */ plugins { id("kotlinMPP") - id("publish") - id("dokkaLicensee") } kotlin {