From c475a6a2044115dd80ead81b11d5016fc9ecb8a5 Mon Sep 17 00:00:00 2001 From: Martin Gropp Date: Tue, 15 Oct 2024 09:03:56 +0200 Subject: [PATCH 1/6] =?UTF-8?q?=E2=9C=A8=20NonEmpty{List,Set}:=20make=20@J?= =?UTF-8?q?sExport=20-=20KOCHA-1924?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nonEmptyCollection/NonEmptyCollection.kt | 6 ++++++ .../nonEmptyCollection/list/NonEmptyList.kt | 9 +++++++++ .../nonEmptyCollection/set/NonEmptySet.kt | 10 ++++++++++ 3 files changed, 25 insertions(+) diff --git a/src/commonMain/kotlin/com/quickbirdstudios/nonEmptyCollection/NonEmptyCollection.kt b/src/commonMain/kotlin/com/quickbirdstudios/nonEmptyCollection/NonEmptyCollection.kt index 772a3e6..b73c63b 100644 --- a/src/commonMain/kotlin/com/quickbirdstudios/nonEmptyCollection/NonEmptyCollection.kt +++ b/src/commonMain/kotlin/com/quickbirdstudios/nonEmptyCollection/NonEmptyCollection.kt @@ -1,5 +1,11 @@ +@file:OptIn(ExperimentalJsExport::class) + package com.quickbirdstudios.nonEmptyCollection +import kotlin.js.ExperimentalJsExport +import kotlin.js.JsExport + +@JsExport interface NonEmptyCollection : Collection { @Deprecated( diff --git a/src/commonMain/kotlin/com/quickbirdstudios/nonEmptyCollection/list/NonEmptyList.kt b/src/commonMain/kotlin/com/quickbirdstudios/nonEmptyCollection/list/NonEmptyList.kt index d5166c7..43e5d09 100644 --- a/src/commonMain/kotlin/com/quickbirdstudios/nonEmptyCollection/list/NonEmptyList.kt +++ b/src/commonMain/kotlin/com/quickbirdstudios/nonEmptyCollection/list/NonEmptyList.kt @@ -1,7 +1,12 @@ +@file:OptIn(ExperimentalJsExport::class) + package com.quickbirdstudios.nonEmptyCollection.list import com.quickbirdstudios.nonEmptyCollection.NonEmptyCollection +import kotlin.js.ExperimentalJsExport +import kotlin.js.JsExport +@JsExport class NonEmptyList internal constructor( internal val full: List ) : List by full, NonEmptyCollection { @@ -27,4 +32,8 @@ class NonEmptyList internal constructor( override fun equals(other: Any?): Boolean = full == other override fun hashCode(): Int = full.hashCode() + + companion object { + fun fromArray(array: Array): NonEmptyList = NonEmptyList(array.first(), array.drop(1)) + } } diff --git a/src/commonMain/kotlin/com/quickbirdstudios/nonEmptyCollection/set/NonEmptySet.kt b/src/commonMain/kotlin/com/quickbirdstudios/nonEmptyCollection/set/NonEmptySet.kt index 4bdedd8..3fec12c 100644 --- a/src/commonMain/kotlin/com/quickbirdstudios/nonEmptyCollection/set/NonEmptySet.kt +++ b/src/commonMain/kotlin/com/quickbirdstudios/nonEmptyCollection/set/NonEmptySet.kt @@ -1,7 +1,12 @@ +@file:OptIn(ExperimentalJsExport::class) + package com.quickbirdstudios.nonEmptyCollection.set import com.quickbirdstudios.nonEmptyCollection.NonEmptyCollection +import kotlin.js.ExperimentalJsExport +import kotlin.js.JsExport +@JsExport class NonEmptySet internal constructor( internal val full: Set ) : Set by full, NonEmptyCollection { @@ -27,4 +32,9 @@ class NonEmptySet internal constructor( "Fatal Error! This is a bug. Please contact the library author." } } + + companion object { + fun fromArray(array: Array): NonEmptySet = + array.toSet().let { NonEmptySet(it.first(), it - it.first()) } + } } From d8f3494e43bedeeb650d56ddb2e544b89c9843ac Mon Sep 17 00:00:00 2001 From: Martin Gropp Date: Tue, 15 Oct 2024 09:18:00 +0200 Subject: [PATCH 2/6] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20=20publish.yml:=20upda?= =?UTF-8?q?te=20actions=20-=20during=20KOCHA-1924?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/publish.yml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 1e8742f..b4207d2 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -7,21 +7,23 @@ jobs: runs-on: ubuntu-22.04 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - - name: Set up JDK 11 - uses: actions/setup-java@v1 + - name: Set up JDK + uses: actions/setup-java@v4 with: - java-version: '11' + java-version: '21' + distribution: corretto + architecture: x64 - name: Set up Gradle - uses: gradle/actions/setup-gradle@v3 + uses: gradle/actions/setup-gradle@v4 - name: Run linters and unit tests run: ./gradlew check --stacktrace - name: Publish test reports - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: test-reports path: build/reports/tests From 9a8a7277a5558172de511e7d7d895e38625066db Mon Sep 17 00:00:00 2001 From: Martin Gropp Date: Tue, 15 Oct 2024 10:05:02 +0200 Subject: [PATCH 3/6] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20=20kotlin:=20update=20?= =?UTF-8?q?to=202.0.20=20-=20KOCHA-1924?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle.kts | 2 +- .../nonEmptyCollection/list/NonEmptyListOperatorsTest.kt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 3dc5a11..a9ea857 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,7 +1,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompileCommon plugins { - kotlin("multiplatform") version "1.9.22" + kotlin("multiplatform") version "2.0.20" `maven-publish` } diff --git a/src/jvmTest/kotlin/com/quickbirdstudios/nonEmptyCollection/list/NonEmptyListOperatorsTest.kt b/src/jvmTest/kotlin/com/quickbirdstudios/nonEmptyCollection/list/NonEmptyListOperatorsTest.kt index ca4c0a5..01ea23b 100644 --- a/src/jvmTest/kotlin/com/quickbirdstudios/nonEmptyCollection/list/NonEmptyListOperatorsTest.kt +++ b/src/jvmTest/kotlin/com/quickbirdstudios/nonEmptyCollection/list/NonEmptyListOperatorsTest.kt @@ -133,7 +133,7 @@ class NonEmptyListOperatorsTest { @Test fun flatMap() { assertOperationEquals( - Iterable::flatMap, + { transform: (String) -> Iterable -> flatMap(transform) }, NonEmptyCollection::flatMap, { value -> nonEmptyListOf(value, value) }, "dffd", "324334", "3434", "Stefan", "234234" @@ -143,7 +143,7 @@ class NonEmptyListOperatorsTest { @Test fun flatMapIndexed() { assertOperationEquals( - Iterable::flatMapIndexed, + { transform: (Int, String) -> Iterable -> flatMapIndexed(transform) }, NonEmptyCollection::flatMapIndexed, { index, _ -> nonEmptyListOf(index * 2) }, "dffd", "324334", "3434", "Stefan", "234234" From 9ae5e39d5d77b9e51b3e590c5f623c9b53aeaa60 Mon Sep 17 00:00:00 2001 From: Martin Gropp Date: Mon, 6 May 2024 09:19:37 +0200 Subject: [PATCH 4/6] =?UTF-8?q?=F0=9F=90=9B=20toNonEmptyOrNull:=20fix=20me?= =?UTF-8?q?thod=20name=20-=20during=20KOCHA-682?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../quickbirdstudios/nonEmptyCollection/toNonEmptyOrNull.kt | 2 +- .../nonEmptyCollection/ToNonEmptyOrNullTest.kt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/commonMain/kotlin/com/quickbirdstudios/nonEmptyCollection/toNonEmptyOrNull.kt b/src/commonMain/kotlin/com/quickbirdstudios/nonEmptyCollection/toNonEmptyOrNull.kt index 964d24d..bf52c0e 100644 --- a/src/commonMain/kotlin/com/quickbirdstudios/nonEmptyCollection/toNonEmptyOrNull.kt +++ b/src/commonMain/kotlin/com/quickbirdstudios/nonEmptyCollection/toNonEmptyOrNull.kt @@ -10,6 +10,6 @@ import com.quickbirdstudios.nonEmptyCollection.unsafe.toNonEmptySet fun List.toNonEmptyListOrNull() = if (isEmpty()) null else toNonEmptyList() -fun Set.toNonEmptyMapOrNull() = if (isEmpty()) null else toNonEmptySet() +fun Set.toNonEmptySetOrNull() = if (isEmpty()) null else toNonEmptySet() fun Map.toNonEmptyMapOrNull() = if (isEmpty()) null else toNonEmptyMap() diff --git a/src/jvmTest/kotlin/com/quickbirdstudios/nonEmptyCollection/ToNonEmptyOrNullTest.kt b/src/jvmTest/kotlin/com/quickbirdstudios/nonEmptyCollection/ToNonEmptyOrNullTest.kt index 0d9e80c..324cd96 100644 --- a/src/jvmTest/kotlin/com/quickbirdstudios/nonEmptyCollection/ToNonEmptyOrNullTest.kt +++ b/src/jvmTest/kotlin/com/quickbirdstudios/nonEmptyCollection/ToNonEmptyOrNullTest.kt @@ -12,7 +12,7 @@ class ToNonEmptyOrNullTest { val map = mapOf() assertNull(list.toNonEmptyListOrNull()) - assertNull(set.toNonEmptyMapOrNull()) + assertNull(set.toNonEmptySetOrNull()) assertNull(map.toNonEmptyMapOrNull()) } @@ -23,7 +23,7 @@ class ToNonEmptyOrNullTest { val map = mapOf(69 to "430", -12 to "Hallo") assertEquals?>(list, list.toNonEmptyListOrNull()) - assertEquals?>(set, set.toNonEmptyMapOrNull()) + assertEquals?>(set, set.toNonEmptySetOrNull()) assertEquals?>(map, map.toNonEmptyMapOrNull()) } } From 479dbc1792069b8b3f5ea690d69e9ff12caa89df Mon Sep 17 00:00:00 2001 From: Martin Gropp Date: Tue, 15 Oct 2024 09:37:49 +0200 Subject: [PATCH 5/6] =?UTF-8?q?=F0=9F=94=A8=20build:=20bump=20version=20-?= =?UTF-8?q?=20KOCHA-1924?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle.kts | 2 +- settings.gradle.kts | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index a9ea857..0a1afef 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } group = "com.eidu" -version = "1.1.1" +version = "1.1.1-eidu-2" repositories { mavenCentral() diff --git a/settings.gradle.kts b/settings.gradle.kts index f45412e..836f8f5 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,3 +1 @@ - rootProject.name = "nonemptycollections" - From d4f0332c912ba6507d7488860fb153000a35de4b Mon Sep 17 00:00:00 2001 From: Martin Gropp Date: Tue, 15 Oct 2024 11:22:14 +0200 Subject: [PATCH 6/6] =?UTF-8?q?=E2=9C=A8=20fromArray:=20make=20@JsStatic?= =?UTF-8?q?=20-=20KOCHA-1924?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle.kts | 2 +- .../quickbirdstudios/nonEmptyCollection/list/NonEmptyList.kt | 4 ++++ .../quickbirdstudios/nonEmptyCollection/set/NonEmptySet.kt | 4 ++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 0a1afef..d45a844 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } group = "com.eidu" -version = "1.1.1-eidu-2" +version = "1.1.1-eidu-3" repositories { mavenCentral() diff --git a/src/commonMain/kotlin/com/quickbirdstudios/nonEmptyCollection/list/NonEmptyList.kt b/src/commonMain/kotlin/com/quickbirdstudios/nonEmptyCollection/list/NonEmptyList.kt index 43e5d09..08ce504 100644 --- a/src/commonMain/kotlin/com/quickbirdstudios/nonEmptyCollection/list/NonEmptyList.kt +++ b/src/commonMain/kotlin/com/quickbirdstudios/nonEmptyCollection/list/NonEmptyList.kt @@ -4,7 +4,9 @@ package com.quickbirdstudios.nonEmptyCollection.list import com.quickbirdstudios.nonEmptyCollection.NonEmptyCollection import kotlin.js.ExperimentalJsExport +import kotlin.js.ExperimentalJsStatic import kotlin.js.JsExport +import kotlin.js.JsStatic @JsExport class NonEmptyList internal constructor( @@ -34,6 +36,8 @@ class NonEmptyList internal constructor( override fun hashCode(): Int = full.hashCode() companion object { + @OptIn(ExperimentalJsStatic::class) + @JsStatic fun fromArray(array: Array): NonEmptyList = NonEmptyList(array.first(), array.drop(1)) } } diff --git a/src/commonMain/kotlin/com/quickbirdstudios/nonEmptyCollection/set/NonEmptySet.kt b/src/commonMain/kotlin/com/quickbirdstudios/nonEmptyCollection/set/NonEmptySet.kt index 3fec12c..537d403 100644 --- a/src/commonMain/kotlin/com/quickbirdstudios/nonEmptyCollection/set/NonEmptySet.kt +++ b/src/commonMain/kotlin/com/quickbirdstudios/nonEmptyCollection/set/NonEmptySet.kt @@ -4,7 +4,9 @@ package com.quickbirdstudios.nonEmptyCollection.set import com.quickbirdstudios.nonEmptyCollection.NonEmptyCollection import kotlin.js.ExperimentalJsExport +import kotlin.js.ExperimentalJsStatic import kotlin.js.JsExport +import kotlin.js.JsStatic @JsExport class NonEmptySet internal constructor( @@ -34,6 +36,8 @@ class NonEmptySet internal constructor( } companion object { + @OptIn(ExperimentalJsStatic::class) + @JsStatic fun fromArray(array: Array): NonEmptySet = array.toSet().let { NonEmptySet(it.first(), it - it.first()) } }