From 59f2d77890ca913271572d8c575c922b7c6e1d05 Mon Sep 17 00:00:00 2001 From: PlaceboAddict Date: Sat, 28 Dec 2024 00:23:46 +0300 Subject: [PATCH] Problem with 1.9.23 KMP version. It's been fixed in 2.0 so it needs to be updated --- build.gradle.kts | 2 +- multiplatform-crypto-api/build.gradle.kts | 2 +- .../build.gradle.kts | 51 +++++++++---------- .../com/ionspin/kotlin/crypto/SmokeTest.kt | 1 + .../src/wasmJsTest/kotlin/TestTest.kt | 11 ++++ .../kotlin/crypto/debug/WasmSymbolsTest.kt | 8 +-- package-lock.json | 17 +++++++ sample/build.gradle.kts | 50 +++++++++++++++++- .../com/ionspin/kotlin/crypto/sample/App.kt | 0 .../com/ionspin/kotlin/crypto/sample/Main.kt | 12 +++++ sample/src/wasmJsMain/resources/index.html | 12 +++++ 11 files changed, 132 insertions(+), 34 deletions(-) create mode 100644 multiplatform-crypto-libsodium-bindings/src/wasmJsTest/kotlin/TestTest.kt create mode 100644 package-lock.json create mode 100644 sample/src/wasmJsMain/kotlin/com/ionspin/kotlin/crypto/sample/App.kt create mode 100644 sample/src/wasmJsMain/kotlin/com/ionspin/kotlin/crypto/sample/Main.kt create mode 100644 sample/src/wasmJsMain/resources/index.html diff --git a/build.gradle.kts b/build.gradle.kts index 701a712..903e93b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -20,7 +20,7 @@ buildscript { dependencies { classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.23") classpath("com.android.tools.build:gradle:7.2.2") - classpath ("org.jetbrains.dokka:dokka-gradle-plugin:1.9.20") + classpath("org.jetbrains.dokka:dokka-gradle-plugin:1.9.20") } repositories { diff --git a/multiplatform-crypto-api/build.gradle.kts b/multiplatform-crypto-api/build.gradle.kts index 8ea9db2..39cb7ce 100644 --- a/multiplatform-crypto-api/build.gradle.kts +++ b/multiplatform-crypto-api/build.gradle.kts @@ -47,7 +47,7 @@ kotlin { browser { testTask { useKarma { - useChromeHeadless() + useChrome() } } } diff --git a/multiplatform-crypto-libsodium-bindings/build.gradle.kts b/multiplatform-crypto-libsodium-bindings/build.gradle.kts index 10d4636..1d16ecf 100644 --- a/multiplatform-crypto-libsodium-bindings/build.gradle.kts +++ b/multiplatform-crypto-libsodium-bindings/build.gradle.kts @@ -306,7 +306,7 @@ kotlin { implementation(Deps.Common.coroutines) // implementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.9.0") -// implementation(kotlin("test")) + implementation(kotlin("test")) // implementation(kotlin("test-junit")) } } @@ -333,6 +333,24 @@ kotlin { } } + // TODO: это скопипасчено с блока runningOnLinuxx86_64 (примерно 590 строка) + val wasmJsMain by getting { + dependencies { + // implementation(kotlin(Deps.wasmJs.stdLib)) + implementation(npm(Deps.wasmJs.Npm.libsodiumWrappers.first, Deps.wasmJs.Npm.libsodiumWrappers.second)) + } + } + val wasmJsTest by getting { + dependencies { + dependsOn(commonTest) + implementation(npm(Deps.wasmJs.Npm.libsodiumWrappers.first, Deps.wasmJs.Npm.libsodiumWrappers.second)) + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.9.0") + + implementation(kotlin("test")) + } + } + + //Set up shared source sets //linux, linuxArm32Hfp, linuxArm64 val linux64Bit = setOf( @@ -572,25 +590,6 @@ kotlin { runningOnLinuxx86_64 { println("Configuring Linux 64 Bit source sets") - val wasmJsMain by getting { - // TODO: разобраться (и с test) - dependencies { - // implementation(kotlin(Deps.wasmJs.stdLib)) - implementation(npm(Deps.wasmJs.Npm.libsodiumWrappers.first, Deps.wasmJs.Npm.libsodiumWrappers.second)) - } - } - val wasmJsTest by getting { - dependencies { -// implementation(kotlin(Deps.wasmJs.test)) - implementation(npm(Deps.wasmJs.Npm.libsodiumWrappers.first, Deps.wasmJs.Npm.libsodiumWrappers.second)) - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.9.0") -// implementation("kotlinx-coroutines-test") - - implementation(kotlin("test")) - implementation(kotlin("test-junit")) - } - } - val jsMain by getting { dependencies { implementation(kotlin(Deps.Js.stdLib)) @@ -742,12 +741,12 @@ tasks { // } // TODO: ваще не жс тест, помогите -// val wasmJsBrowserTest by getting(KotlinJsTest::class) { -// testLogging { -// events("PASSED", "FAILED", "SKIPPED") -// showStandardStreams = true -// } -// } + val wasmJsBrowserTest by getting(KotlinJsTest::class) { + testLogging { + events("PASSED", "FAILED", "SKIPPED") + showStandardStreams = true + } + } val jsBrowserTest by getting(KotlinJsTest::class) { testLogging { diff --git a/multiplatform-crypto-libsodium-bindings/src/commonTest/kotlin/com/ionspin/kotlin/crypto/SmokeTest.kt b/multiplatform-crypto-libsodium-bindings/src/commonTest/kotlin/com/ionspin/kotlin/crypto/SmokeTest.kt index f43e8c7..6214ac8 100644 --- a/multiplatform-crypto-libsodium-bindings/src/commonTest/kotlin/com/ionspin/kotlin/crypto/SmokeTest.kt +++ b/multiplatform-crypto-libsodium-bindings/src/commonTest/kotlin/com/ionspin/kotlin/crypto/SmokeTest.kt @@ -17,6 +17,7 @@ class SmokeTest { //TODO Browser ignores our testBlocking, node works fine though @Test fun testIfLibraryIsNotOnFire() { + throw Exception("aoaoao") testBlocking { LibsodiumInitializer.initialize() val hashResult = GenericHash.genericHash("Hello".encodeToUByteArray(), 64) diff --git a/multiplatform-crypto-libsodium-bindings/src/wasmJsTest/kotlin/TestTest.kt b/multiplatform-crypto-libsodium-bindings/src/wasmJsTest/kotlin/TestTest.kt new file mode 100644 index 0000000..902727a --- /dev/null +++ b/multiplatform-crypto-libsodium-bindings/src/wasmJsTest/kotlin/TestTest.kt @@ -0,0 +1,11 @@ +//package com.ionspin.kotlin.crypto.debug + +import kotlin.test.Test +import kotlin.test.assertEquals + +class TestTest { + @Test + fun wasmSymbolsTest() { + assertEquals(42, 42) + } +} diff --git a/multiplatform-crypto-libsodium-bindings/src/wasmJsTest/kotlin/com/ionspin/kotlin/crypto/debug/WasmSymbolsTest.kt b/multiplatform-crypto-libsodium-bindings/src/wasmJsTest/kotlin/com/ionspin/kotlin/crypto/debug/WasmSymbolsTest.kt index 766a1ac..1f7b960 100644 --- a/multiplatform-crypto-libsodium-bindings/src/wasmJsTest/kotlin/com/ionspin/kotlin/crypto/debug/WasmSymbolsTest.kt +++ b/multiplatform-crypto-libsodium-bindings/src/wasmJsTest/kotlin/com/ionspin/kotlin/crypto/debug/WasmSymbolsTest.kt @@ -4,8 +4,8 @@ import kotlin.test.Test import kotlin.test.assertEquals class WasmSymbolsTest { -// @Test -// fun wasmSymbolsTest() { -// assertEquals(42, 42) -// } + @Test + fun wasmSymbolsTest() { + assertEquals(42, 42) + } } diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..a2f7fcd --- /dev/null +++ b/package-lock.json @@ -0,0 +1,17 @@ +{ + "name": "kotlin-multiplatform-libsodium", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "libsodium-sumo": "^0.7.15" + } + }, + "node_modules/libsodium-sumo": { + "version": "0.7.15", + "resolved": "https://registry.npmjs.org/libsodium-sumo/-/libsodium-sumo-0.7.15.tgz", + "integrity": "sha512-5tPmqPmq8T8Nikpm1Nqj0hBHvsLFCXvdhBFV7SGOitQPZAA6jso8XoL0r4L7vmfKXr486fiQInvErHtEvizFMw==" + } + } +} diff --git a/sample/build.gradle.kts b/sample/build.gradle.kts index f65e1a9..cc0d7a8 100644 --- a/sample/build.gradle.kts +++ b/sample/build.gradle.kts @@ -17,9 +17,9 @@ @file:Suppress("UnstableApiUsage") -import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest -import org.jetbrains.kotlin.gradle.targets.native.tasks.KotlinNativeTest import org.gradle.api.tasks.testing.logging.TestExceptionFormat +import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl +import org.jetbrains.kotlin.gradle.targets.native.tasks.KotlinNativeTest import org.jetbrains.kotlin.gradle.tasks.FatFrameworkTask plugins { @@ -82,6 +82,36 @@ kotlin { } + @OptIn(ExperimentalWasmDsl::class) + wasmJs { + browser { + webpackTask { + + } + testTask { + useKarma { + useChrome() + } + } + } + binaries.executable() +// browser { +// val rootDirPath = project.rootDir.path +// val projectDirPath = project.projectDir.path +// commonWebpackConfig { +// outputFileName = "composeApp.js" +// devServer = (devServer ?: KotlinWebpackConfig.DevServer()).apply { +//// static = (static ?: mutableListOf()).apply { +//// // Serve sources to debug inside browser +//// add(rootDirPath) +//// add(projectDirPath) +//// } +// } +// } +// } +// binaries.executable() + } + linuxX64("linux") { binaries { @@ -207,6 +237,22 @@ kotlin { } } + val wasmJsMain by getting { + dependencies { + // implementation(kotlin(Deps.wasmJs.stdLib)) + implementation(npm(Deps.wasmJs.Npm.libsodiumWrappers.first, Deps.wasmJs.Npm.libsodiumWrappers.second)) + } + } + val wasmJsTest by getting { + dependencies { + dependsOn(commonTest) + implementation(npm(Deps.wasmJs.Npm.libsodiumWrappers.first, Deps.wasmJs.Npm.libsodiumWrappers.second)) + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.9.0") + + implementation(kotlin("test")) + } + } + // val nativeMain by creating { diff --git a/sample/src/wasmJsMain/kotlin/com/ionspin/kotlin/crypto/sample/App.kt b/sample/src/wasmJsMain/kotlin/com/ionspin/kotlin/crypto/sample/App.kt new file mode 100644 index 0000000..e69de29 diff --git a/sample/src/wasmJsMain/kotlin/com/ionspin/kotlin/crypto/sample/Main.kt b/sample/src/wasmJsMain/kotlin/com/ionspin/kotlin/crypto/sample/Main.kt new file mode 100644 index 0000000..c514c11 --- /dev/null +++ b/sample/src/wasmJsMain/kotlin/com/ionspin/kotlin/crypto/sample/Main.kt @@ -0,0 +1,12 @@ + + +import com.ionspin.kotlin.crypto.LibsodiumInitializer + + +fun main() { + LibsodiumInitializer.initializeWithCallback { +// val hash = Hash.sha512("123".encodeToUByteArray()) +// println("Hash (SHA512) of 123: ${hash.toHexString()}") + println("Hello") + } +} diff --git a/sample/src/wasmJsMain/resources/index.html b/sample/src/wasmJsMain/resources/index.html new file mode 100644 index 0000000..9f04a20 --- /dev/null +++ b/sample/src/wasmJsMain/resources/index.html @@ -0,0 +1,12 @@ + + + + + Libsodium bindings sample app! + + + +
+ + +