[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-wallet-kotlin] branch master updated: Add Taler common multiplatf
From: |
gnunet |
Subject: |
[taler-wallet-kotlin] branch master updated: Add Taler common multiplatform library to project |
Date: |
Fri, 14 Aug 2020 15:13:13 +0200 |
This is an automated email from the git hooks/post-receive script.
torsten-grote pushed a commit to branch master
in repository wallet-kotlin.
The following commit(s) were added to refs/heads/master by this push:
new 2ac13b1 Add Taler common multiplatform library to project
2ac13b1 is described below
commit 2ac13b19a5c7fc3531447333fe1772a78ca35795
Author: Torsten Grote <t@grobox.de>
AuthorDate: Fri Aug 14 10:05:51 2020 -0300
Add Taler common multiplatform library to project
---
.idea/.gitignore | 8 +-
.idea/codeStyles/Project.xml | 5 +
.idea/compiler.xml | 4 +
.idea/modules.xml | 16 --
.idea/wallet-kotlin.iml | 19 +++
build.gradle | 178 +--------------------
common/.gitignore | 1 +
common/.gradle/5.5.1/fileChanges/last-build.bin | Bin 0 -> 1 bytes
common/.gradle/5.5.1/fileHashes/fileHashes.lock | Bin 0 -> 17 bytes
common/.gradle/5.5.1/gc.properties | 0
.../buildOutputCleanup/buildOutputCleanup.lock | Bin 0 -> 17 bytes
common/.gradle/buildOutputCleanup/cache.properties | 2 +
common/.gradle/vcs-1/gc.properties | 0
common/build.gradle | 99 ++++++++++++
.../commonMain/kotlin/net/taler/common}/Amount.kt | 50 +++---
.../kotlin/net/taler/common}/TalerUri.kt | 2 +-
.../commonMain/kotlin/net/taler/common}/Time.kt | 43 +++--
.../commonMain/kotlin/net/taler/common/Version.kt | 70 ++++++++
.../kotlin/net/taler/common}/AmountTest.kt | 52 +-----
.../kotlin/net/taler/common}/TalerUriTest.kt | 9 +-
.../kotlin/net/taler/common}/TestUtils.kt | 15 +-
.../commonTest/kotlin/net/taler/common/TimeTest.kt | 49 ++++++
.../kotlin/net/taler/common/VersionTest.kt | 65 ++++++++
.../src/jsMain/kotlin/net/taler/common/Time.kt | 10 +-
.../src/jvmMain/kotlin/net/taler/common/Time.kt | 8 +-
.../src/nativeMain/kotlin/net/taler/common/Time.kt | 10 +-
gradle.properties | 5 +-
settings.gradle | 7 +-
wallet/.gitignore | 1 +
build.gradle => wallet/build.gradle | 34 ++--
.../src}/androidMain/AndroidManifest.xml | 0
.../kotlin/net/taler/wallet/kotlin/Db.kt | 0
.../taler/wallet/kotlin/crypto/CryptoFactory.kt | 0
.../net/taler/wallet/kotlin/crypto/RsaBlinding.kt | 0
.../net/taler/wallet/kotlin/TestUtilsAndroid.kt | 0
.../net/taler/wallet/kotlin/crypto/PlanchetTest.kt | 0
.../net/taler/wallet/kotlin/crypto/RefreshTest.kt | 0
.../taler/wallet/kotlin/crypto/RsaBlindingTest.kt | 0
.../kotlin/net/taler/wallet/kotlin/Amount.kt | 0
.../net/taler/wallet/kotlin/Base32Crockford.kt | 0
.../kotlin/net/taler/wallet/kotlin/Db.kt | 0
.../kotlin/net/taler/wallet/kotlin/PaytoUri.kt | 0
.../kotlin/net/taler/wallet/kotlin/TalerUri.kt | 0
.../kotlin/net/taler/wallet/kotlin/Time.kt | 0
.../kotlin/net/taler/wallet/kotlin/Types.kt | 0
.../kotlin/net/taler/wallet/kotlin/Utils.kt | 0
.../kotlin/net/taler/wallet/kotlin/Version.kt | 0
.../kotlin/net/taler/wallet/kotlin/WalletApi.kt | 0
.../net/taler/wallet/kotlin/crypto/Crypto.kt | 0
.../net/taler/wallet/kotlin/crypto/CryptoImpl.kt | 0
.../net/taler/wallet/kotlin/crypto/Deposit.kt | 0
.../kotlin/net/taler/wallet/kotlin/crypto/Kdf.kt | 0
.../net/taler/wallet/kotlin/crypto/Planchet.kt | 0
.../net/taler/wallet/kotlin/crypto/Recoup.kt | 0
.../net/taler/wallet/kotlin/crypto/Refresh.kt | 0
.../net/taler/wallet/kotlin/crypto/Signature.kt | 0
.../net/taler/wallet/kotlin/exchange/Auditor.kt | 0
.../taler/wallet/kotlin/exchange/Denomination.kt | 0
.../net/taler/wallet/kotlin/exchange/Exchange.kt | 0
.../taler/wallet/kotlin/exchange/ExchangeRecord.kt | 0
.../net/taler/wallet/kotlin/exchange/Keys.kt | 0
.../net/taler/wallet/kotlin/exchange/Wire.kt | 0
.../net/taler/wallet/kotlin/operations/Withdraw.kt | 0
.../kotlin/net/taler/wallet/kotlin/AmountTest.kt | 0
.../net/taler/wallet/kotlin/Base32CrockfordTest.kt | 0
.../kotlin/net/taler/wallet/kotlin/DbTest.kt | 0
.../kotlin/net/taler/wallet/kotlin/PaytoUriTest.kt | 0
.../kotlin/net/taler/wallet/kotlin/TalerUriTest.kt | 0
.../kotlin/net/taler/wallet/kotlin/TestUtils.kt | 0
.../net/taler/wallet/kotlin/TimestampTest.kt | 0
.../kotlin/net/taler/wallet/kotlin/VersionTest.kt | 0
.../net/taler/wallet/kotlin/WalletApiTest.kt | 0
.../net/taler/wallet/kotlin/crypto/DepositTest.kt | 0
.../wallet/kotlin/crypto/EllipticCurveTest.kt | 0
.../net/taler/wallet/kotlin/crypto/KdfTest.kt | 0
.../net/taler/wallet/kotlin/crypto/RecoupTest.kt | 0
.../wallet/kotlin/crypto/RefreshPlanchetTest.kt | 0
.../net/taler/wallet/kotlin/crypto/Sha256Test.kt | 0
.../net/taler/wallet/kotlin/crypto/Sha512Test.kt | 0
.../taler/wallet/kotlin/crypto/SignatureTest.kt | 0
.../wallet/kotlin/exchange/DenominationTest.kt | 0
.../taler/wallet/kotlin/exchange/Denominations.kt | 0
.../net/taler/wallet/kotlin/exchange/KeysTest.kt | 0
.../net/taler/wallet/kotlin/exchange/UpdateTest.kt | 0
.../net/taler/wallet/kotlin/exchange/WireTest.kt | 0
.../taler/wallet/kotlin/operations/WithdrawTest.kt | 0
.../jsMain/kotlin/net/taler/wallet/kotlin/Db.kt | 0
.../taler/wallet/kotlin/crypto/CryptoFactory.kt | 0
.../kotlin/net/taler/wallet/kotlin/TestUtils.kt | 0
.../src}/nativeInterop/cinterop/sodium-static.def | 0
.../src}/nativeInterop/cinterop/sodium.def | 0
.../kotlin/net/taler/wallet/kotlin/Db.kt | 0
.../taler/wallet/kotlin/crypto/CryptoFactory.kt | 0
.../kotlin/net/taler/wallet/kotlin/TestUtils.kt | 0
94 files changed, 432 insertions(+), 330 deletions(-)
diff --git a/.idea/.gitignore b/.idea/.gitignore
index 3127cf3..8eae92b 100644
--- a/.idea/.gitignore
+++ b/.idea/.gitignore
@@ -1,10 +1,14 @@
# Default ignored files
/shelf/
/artifacts
-/modules
+/modules*
/workspace.xml
/gradle.xml
/libraries
/caches
/runConfigurations.xml
-/encodings.xml
\ No newline at end of file
+/encodings.xml
+/vcs.xml
+/compiler.xml
+/jarRepositories.xml
+/misc.xml
\ No newline at end of file
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
index 61a2480..69cf9a7 100644
--- a/.idea/codeStyles/Project.xml
+++ b/.idea/codeStyles/Project.xml
@@ -1,6 +1,11 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<JetCodeStyleSettings>
+ <option name="PACKAGES_TO_USE_STAR_IMPORTS">
+ <value>
+ <package name="kotlinx.android.synthetic" withSubpackages="true"
static="false" />
+ </value>
+ </option>
<option name="NAME_COUNT_TO_USE_STAR_IMPORT" value="2147483647" />
<option name="NAME_COUNT_TO_USE_STAR_IMPORT_FOR_MEMBERS"
value="2147483647" />
<option name="IMPORT_NESTED_CLASSES" value="true" />
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index ad4fc3c..72e41ea 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -12,6 +12,10 @@
<entry name="!?*.clj" />
</wildcardResourcePatterns>
<bytecodeTargetLevel target="1.8">
+ <module name="wallet-kotlin.common.jvmMain" target="1.6" />
+ <module name="wallet-kotlin.common.jvmMain~1" target="1.6" />
+ <module name="wallet-kotlin.common.jvmTest" target="1.6" />
+ <module name="wallet-kotlin.common.jvmTest~1" target="1.6" />
<module name="wallet-kotlin_androidMain" target="1.6" />
<module name="wallet-kotlin_androidTest" target="1.6" />
</bytecodeTargetLevel>
diff --git a/.idea/modules.xml b/.idea/modules.xml
deleted file mode 100644
index d8c63dd..0000000
--- a/.idea/modules.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="ProjectModuleManager">
- <modules>
- <module fileurl="file://$PROJECT_DIR$/.idea/modules/wallet-kotlin.iml"
filepath="$PROJECT_DIR$/.idea/modules/wallet-kotlin.iml" group="wallet-kotlin"
/>
- <module
fileurl="file://$PROJECT_DIR$/.idea/modules/wallet-kotlin_androidMain.iml"
filepath="$PROJECT_DIR$/.idea/modules/wallet-kotlin_androidMain.iml"
group="wallet-kotlin" />
- <module
fileurl="file://$PROJECT_DIR$/.idea/modules/wallet-kotlin_androidTest.iml"
filepath="$PROJECT_DIR$/.idea/modules/wallet-kotlin_androidTest.iml"
group="wallet-kotlin" />
- <module
fileurl="file://$PROJECT_DIR$/.idea/modules/wallet-kotlin_commonMain.iml"
filepath="$PROJECT_DIR$/.idea/modules/wallet-kotlin_commonMain.iml"
group="wallet-kotlin" />
- <module
fileurl="file://$PROJECT_DIR$/.idea/modules/wallet-kotlin_commonTest.iml"
filepath="$PROJECT_DIR$/.idea/modules/wallet-kotlin_commonTest.iml"
group="wallet-kotlin" />
- <module
fileurl="file://$PROJECT_DIR$/.idea/modules/wallet-kotlin_jsMain.iml"
filepath="$PROJECT_DIR$/.idea/modules/wallet-kotlin_jsMain.iml"
group="wallet-kotlin" />
- <module
fileurl="file://$PROJECT_DIR$/.idea/modules/wallet-kotlin_jsTest.iml"
filepath="$PROJECT_DIR$/.idea/modules/wallet-kotlin_jsTest.iml"
group="wallet-kotlin" />
- <module
fileurl="file://$PROJECT_DIR$/.idea/modules/wallet-kotlin_linuxMain.iml"
filepath="$PROJECT_DIR$/.idea/modules/wallet-kotlin_linuxMain.iml"
group="wallet-kotlin" />
- <module
fileurl="file://$PROJECT_DIR$/.idea/modules/wallet-kotlin_linuxTest.iml"
filepath="$PROJECT_DIR$/.idea/modules/wallet-kotlin_linuxTest.iml"
group="wallet-kotlin" />
- </modules>
- </component>
-</project>
\ No newline at end of file
diff --git a/.idea/wallet-kotlin.iml b/.idea/wallet-kotlin.iml
new file mode 100644
index 0000000..57eb384
--- /dev/null
+++ b/.idea/wallet-kotlin.iml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module external.linked.project.id="wallet-kotlin"
external.linked.project.path="$MODULE_DIR$"
external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE"
external.system.module.group="" external.system.module.version="unspecified"
type="JAVA_MODULE" version="4">
+ <component name="FacetManager">
+ <facet type="java-gradle" name="Java-Gradle">
+ <configuration>
+ <option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" />
+ <option name="BUILDABLE" value="false" />
+ </configuration>
+ </facet>
+ </component>
+ <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7"
inherit-compiler-output="true">
+ <exclude-output />
+ <content url="file://$MODULE_DIR$">
+ <excludeFolder url="file://$MODULE_DIR$/.gradle" />
+ </content>
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ </component>
+</module>
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index e0b1a1b..c6c9e9f 100644
--- a/build.gradle
+++ b/build.gradle
@@ -21,181 +21,15 @@ buildscript {
jcenter()
}
dependencies {
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+ classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
classpath 'com.android.tools.build:gradle:4.0.1'
}
}
-plugins {
- id 'org.jetbrains.kotlin.multiplatform' version "$kotlin_version"
- id 'org.jetbrains.kotlin.plugin.serialization' version "$kotlin_version"
-}
-
-repositories {
- mavenCentral()
- jcenter()
- google()
- maven { url "https://dl.bintray.com/terl/lazysodium-maven" }
-}
-group 'net.taler'
-version '0.0.1'
-
-apply plugin: 'com.android.library'
-apply plugin: 'maven-publish'
-
-
-kotlin {
- android {}
- js {
- browser {
- }
- nodejs {
- }
- }
- // For ARM, should be changed to iosArm32 or iosArm64
- ios {
- compilations.main.cinterops {
- sodium {
- packageName 'org.libsodium'
- defFile
project.file("src/nativeInterop/cinterop/sodium-static.def")
- }
- }
- binaries {
- framework {
- baseName = "TalerWallet"
- }
- }
- }
- // For Linux, should be changed to e.g. linuxX64
- // For MacOS, should be changed to e.g. macosX64
- // For Windows, should be changed to e.g. mingwX64
- linuxX64("linux") {
- compilations.main.cinterops {
- sodium {
- packageName 'org.libsodium'
- }
- }
- }
- sourceSets {
- def coroutines_version = "1.3.8"
- def ktor_version = "1.3.2"
- all {
- languageSettings {
- useExperimentalAnnotation('kotlin.ExperimentalStdlibApi')
- }
- }
- commonMain {
- dependencies {
- implementation kotlin('stdlib-common')
- implementation
"org.jetbrains.kotlinx:kotlinx-coroutines-core-common:$coroutines_version"
- implementation "io.ktor:ktor-client-core:$ktor_version"
- implementation "io.ktor:ktor-client-logging:$ktor_version"
- implementation
"io.ktor:ktor-client-serialization:$ktor_version"
- implementation "com.soywiz.korlibs.klock:klock:1.11.12"
- }
- }
- commonTest {
- dependencies {
- implementation kotlin('test-common')
- implementation kotlin('test-annotations-common')
- implementation "io.ktor:ktor-client-mock:$ktor_version"
- }
- }
- androidMain {
- dependencies {
- implementation kotlin('stdlib-jdk8')
- implementation
"org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version"
- implementation "io.ktor:ktor-client-android:$ktor_version"
- implementation "io.ktor:ktor-client-logging-jvm:$ktor_version"
- implementation
"io.ktor:ktor-client-serialization-jvm:$ktor_version"
- // TODO Android
-//
implementation("com.goterl.lazycode:lazysodium-android:4.2.0@aar") {
- implementation("com.goterl.lazycode:lazysodium-java:4.3.0") {
- exclude group: "org.slf4j"
- }
- implementation 'net.java.dev.jna:jna:5.6.0@aar'
- }
- }
- androidTest {
- dependencies {
- implementation kotlin('test')
- implementation kotlin('test-junit')
- implementation "io.ktor:ktor-client-mock-jvm:$ktor_version"
- implementation "org.slf4j:slf4j-simple:1.7.30"
- }
- }
- jsMain {
- dependencies {
- implementation kotlin('stdlib-js')
- implementation
"org.jetbrains.kotlinx:kotlinx-coroutines-core-js:$coroutines_version"
- implementation "io.ktor:ktor-client-js:$ktor_version"
- implementation "io.ktor:ktor-client-logging-js:$ktor_version"
- implementation
"io.ktor:ktor-client-serialization-js:$ktor_version"
- // bug: https://github.com/ktorio/ktor/issues/1822
- api npm("text-encoding", '0.7.0') // work-around for above bug
- api npm("bufferutil", '4.0.1') // work-around for above bug
- api npm("utf-8-validate", '5.0.2') // work-around for above bug
- api npm("abort-controller", '3.0.0') // work-around for above
bug
- api npm("node-fetch", '2.6.0') // work-around for above bug
- api npm("fs", '*') // work-around for above bug
-
- implementation npm('tweetnacl', '1.0.3')
- implementation npm('ed2curve', '0.3.0')
- implementation npm('hash.js', '1.1.7')
- }
- }
- jsTest {
- dependencies {
- implementation kotlin('test-js')
- implementation "io.ktor:ktor-client-mock-js:$ktor_version"
- }
- }
- nativeMain {
- dependsOn commonMain
- dependencies {
- implementation
"org.jetbrains.kotlinx:kotlinx-coroutines-core-native:$coroutines_version"
- implementation
"io.ktor:ktor-client-logging-native:$ktor_version"
- implementation
"io.ktor:ktor-client-serialization-native:$ktor_version"
- }
- }
- nativeTest {
- dependsOn commonTest
- dependencies {
- implementation "io.ktor:ktor-client-mock-native:$ktor_version"
- }
- }
- linuxMain {
- dependsOn nativeMain
- dependencies {
- implementation "io.ktor:ktor-client-curl:$ktor_version"
- }
- }
- iosMain {
- dependsOn nativeMain
- dependencies {
- implementation "io.ktor:ktor-client-ios:$ktor_version"
- }
- }
- configure([targets.linux, targets.iosArm64, targets.iosX64]) {
- compilations.main.source(sourceSets.nativeMain)
- compilations.test.source(sourceSets.nativeTest)
- }
- }
-}
-
-android {
- compileSdkVersion 29
- //noinspection GradleDependency
- buildToolsVersion "29.0.2"
-
- defaultConfig {
- minSdkVersion 21
- targetSdkVersion 29
- versionCode 1
- versionName "0.1"
- }
- sourceSets {
- main {
- manifest.srcFile 'src/androidMain/AndroidManifest.xml'
- }
+allprojects {
+ repositories {
+ mavenCentral()
+ jcenter()
}
}
diff --git a/common/.gitignore b/common/.gitignore
new file mode 100644
index 0000000..796b96d
--- /dev/null
+++ b/common/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/common/.gradle/5.5.1/fileChanges/last-build.bin
b/common/.gradle/5.5.1/fileChanges/last-build.bin
new file mode 100644
index 0000000..f76dd23
Binary files /dev/null and b/common/.gradle/5.5.1/fileChanges/last-build.bin
differ
diff --git a/common/.gradle/5.5.1/fileHashes/fileHashes.lock
b/common/.gradle/5.5.1/fileHashes/fileHashes.lock
new file mode 100644
index 0000000..34525bf
Binary files /dev/null and b/common/.gradle/5.5.1/fileHashes/fileHashes.lock
differ
diff --git a/common/.gradle/5.5.1/gc.properties
b/common/.gradle/5.5.1/gc.properties
new file mode 100644
index 0000000..e69de29
diff --git a/common/.gradle/buildOutputCleanup/buildOutputCleanup.lock
b/common/.gradle/buildOutputCleanup/buildOutputCleanup.lock
new file mode 100644
index 0000000..04431dd
Binary files /dev/null and
b/common/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/common/.gradle/buildOutputCleanup/cache.properties
b/common/.gradle/buildOutputCleanup/cache.properties
new file mode 100644
index 0000000..df9e847
--- /dev/null
+++ b/common/.gradle/buildOutputCleanup/cache.properties
@@ -0,0 +1,2 @@
+#Thu Jul 30 09:16:47 BRT 2020
+gradle.version=5.5.1
diff --git a/common/.gradle/vcs-1/gc.properties
b/common/.gradle/vcs-1/gc.properties
new file mode 100644
index 0000000..e69de29
diff --git a/common/build.gradle b/common/build.gradle
new file mode 100644
index 0000000..efc1fe0
--- /dev/null
+++ b/common/build.gradle
@@ -0,0 +1,99 @@
+/*
+ * This file is part of GNU Taler
+ * (C) 2020 Taler Systems S.A.
+ *
+ * GNU Taler is free software; you can redistribute it and/or modify it under
the
+ * terms of the GNU General Public License as published by the Free Software
+ * Foundation; either version 3, or (at your option) any later version.
+ *
+ * GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR
+ * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+ */
+
+plugins {
+ id 'org.jetbrains.kotlin.multiplatform'
+ id 'org.jetbrains.kotlin.plugin.serialization'
+}
+
+group 'net.taler'
+version '0.0.1'
+
+apply plugin: 'maven-publish'
+
+kotlin {
+ jvm()
+ js {
+ browser {
+ }
+ nodejs {
+ }
+ }
+ // This is for iPhone simulator
+ // Switch here to iosArm64 (or iosArm32) to build library for iPhone device
+ ios {
+ binaries {
+ framework()
+ }
+ }
+ linuxX64("linux")
+
+ sourceSets {
+ def serialization_version = "0.20.0"
+ commonMain {
+ dependencies {
+ implementation kotlin('stdlib-common')
+ implementation
"org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:$serialization_version"
+ }
+ }
+ commonTest {
+ dependencies {
+ implementation kotlin('test-common')
+ implementation kotlin('test-annotations-common')
+ }
+ }
+ jvmMain {
+ dependencies {
+ implementation kotlin('stdlib-jdk8')
+ implementation
"org.jetbrains.kotlinx:kotlinx-serialization-runtime:$serialization_version"
+ }
+ }
+ jvmTest {
+ dependencies {
+ implementation kotlin('test')
+ implementation kotlin('test-junit')
+ }
+ }
+ jsMain {
+ dependencies {
+ implementation kotlin('stdlib-js')
+ implementation
"org.jetbrains.kotlinx:kotlinx-serialization-runtime-js:$serialization_version"
+ }
+ }
+ jsTest {
+ dependencies {
+ implementation kotlin('test-js')
+ }
+ }
+ nativeMain {
+ dependsOn commonMain
+ dependencies {
+ implementation
"org.jetbrains.kotlinx:kotlinx-serialization-runtime-native:$serialization_version"
+ }
+ }
+ nativeTest {
+ dependsOn commonTest
+ }
+ configure([targets.linux, targets.iosArm64, targets.iosX64]) {
+ compilations.main.source(sourceSets.nativeMain)
+ compilations.test.source(sourceSets.nativeTest)
+ }
+ }
+}
+
+configurations {
+ compileClasspath
+}
diff --git a/src/commonMain/kotlin/net/taler/wallet/kotlin/Amount.kt
b/common/src/commonMain/kotlin/net/taler/common/Amount.kt
similarity index 81%
copy from src/commonMain/kotlin/net/taler/wallet/kotlin/Amount.kt
copy to common/src/commonMain/kotlin/net/taler/common/Amount.kt
index 2d39bb3..84d10c5 100644
--- a/src/commonMain/kotlin/net/taler/wallet/kotlin/Amount.kt
+++ b/common/src/commonMain/kotlin/net/taler/common/Amount.kt
@@ -14,14 +14,13 @@
* GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-package net.taler.wallet.kotlin
+package net.taler.common
import kotlinx.serialization.Decoder
import kotlinx.serialization.Encoder
import kotlinx.serialization.KSerializer
import kotlinx.serialization.Serializable
import kotlinx.serialization.Serializer
-import net.taler.wallet.kotlin.crypto.CryptoImpl.Companion.toByteArray
import kotlin.math.floor
import kotlin.math.pow
import kotlin.math.roundToInt
@@ -29,7 +28,7 @@ import kotlin.math.roundToInt
class AmountParserException(msg: String? = null, cause: Throwable? = null) :
Exception(msg, cause)
class AmountOverflowException(msg: String? = null, cause: Throwable? = null) :
Exception(msg, cause)
-@Serializable
+@Serializable(with = KotlinXAmountSerializer::class)
data class Amount(
/**
* name of the currency using either a three-character ISO 4217 currency
code,
@@ -54,17 +53,14 @@ data class Amount(
val fraction: Int
) : Comparable<Amount> {
- @Serializer(forClass = Amount::class)
- companion object : KSerializer<Amount> {
+ companion object {
private const val FRACTIONAL_BASE: Int = 100000000 // 1e8
- @Suppress("unused")
- private val REGEX =
Regex("""^[-_*A-Za-z0-9]{1,12}:([0-9]+)\.?([0-9]+)?$""")
private val REGEX_CURRENCY = Regex("""^[-_*A-Za-z0-9]{1,12}$""")
- internal val MAX_VALUE = 2.0.pow(52).toLong()
+ val MAX_VALUE = 2.0.pow(52).toLong()
private const val MAX_FRACTION_LENGTH = 8
- internal const val MAX_FRACTION = 99_999_999
+ const val MAX_FRACTION = 99_999_999
fun zero(currency: String): Amount {
return Amount(checkCurrency(currency), 0, 0)
@@ -96,38 +92,25 @@ data class Amount(
fun min(currency: String): Amount = Amount(currency, 0, 1)
fun max(currency: String): Amount = Amount(currency, MAX_VALUE,
MAX_FRACTION)
-// fun fromJsonObject(json: JSONObject): Amount {
-// val currency = checkCurrency(json.optString("currency"))
-// val value = checkValue(json.optString("value").toLongOrNull())
-// val fraction =
checkFraction(json.optString("fraction").toIntOrNull())
-// return Amount(currency, value, fraction)
-// }
- private fun checkCurrency(currency: String): String {
+ internal fun checkCurrency(currency: String): String {
if (!REGEX_CURRENCY.matches(currency))
throw AmountParserException("Invalid currency: $currency")
return currency
}
- private fun checkValue(value: Long?): Long {
+ internal fun checkValue(value: Long?): Long {
if (value == null || value > MAX_VALUE)
throw AmountParserException("Value $value greater than
$MAX_VALUE")
return value
}
- private fun checkFraction(fraction: Int?): Int {
+ internal fun checkFraction(fraction: Int?): Int {
if (fraction == null || fraction > MAX_FRACTION)
throw AmountParserException("Fraction $fraction greater than
$MAX_FRACTION")
return fraction
}
- override fun serialize(encoder: Encoder, value: Amount) {
- encoder.encodeString(value.toJSONString())
- }
-
- override fun deserialize(decoder: Decoder): Amount {
- return fromJSONString(decoder.decodeString())
- }
}
val amountStr: String
@@ -184,12 +167,6 @@ data class Amount(
return "$currency:$amountStr"
}
- fun toByteArray() = ByteArray(8 + 4 + 12).apply {
- value.toByteArray().copyInto(this, 0, 0, 8)
- fraction.toByteArray().copyInto(this, 8, 0, 4)
- currency.encodeToByteArray().copyInto(this, 12)
- }
-
override fun toString(): String {
return "$amountStr $currency"
}
@@ -208,3 +185,14 @@ data class Amount(
}
}
+
+@Serializer(forClass = Amount::class)
+object KotlinXAmountSerializer: KSerializer<Amount> {
+ override fun serialize(encoder: Encoder, value: Amount) {
+ encoder.encodeString(value.toJSONString())
+ }
+
+ override fun deserialize(decoder: Decoder): Amount {
+ return Amount.fromJSONString(decoder.decodeString())
+ }
+}
diff --git a/src/commonMain/kotlin/net/taler/wallet/kotlin/TalerUri.kt
b/common/src/commonMain/kotlin/net/taler/common/TalerUri.kt
similarity index 98%
copy from src/commonMain/kotlin/net/taler/wallet/kotlin/TalerUri.kt
copy to common/src/commonMain/kotlin/net/taler/common/TalerUri.kt
index c489d71..9f121d3 100644
--- a/src/commonMain/kotlin/net/taler/wallet/kotlin/TalerUri.kt
+++ b/common/src/commonMain/kotlin/net/taler/common/TalerUri.kt
@@ -14,7 +14,7 @@
* GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-package net.taler.wallet.kotlin
+package net.taler.common
internal object TalerUri {
diff --git a/src/commonMain/kotlin/net/taler/wallet/kotlin/Time.kt
b/common/src/commonMain/kotlin/net/taler/common/Time.kt
similarity index 62%
copy from src/commonMain/kotlin/net/taler/wallet/kotlin/Time.kt
copy to common/src/commonMain/kotlin/net/taler/common/Time.kt
index 4143389..37b6606 100644
--- a/src/commonMain/kotlin/net/taler/wallet/kotlin/Time.kt
+++ b/common/src/commonMain/kotlin/net/taler/common/Time.kt
@@ -14,24 +14,31 @@
* GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-package net.taler.wallet.kotlin
+package net.taler.common
-import com.soywiz.klock.DateTime
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
-import net.taler.wallet.kotlin.Duration.Companion.FOREVER
-import net.taler.wallet.kotlin.crypto.CryptoImpl.Companion.toByteArray
+import kotlinx.serialization.builtins.serializer
+import kotlinx.serialization.json.JsonElement
+import kotlinx.serialization.json.JsonPrimitive
+import kotlinx.serialization.json.JsonTransformingSerializer
+import kotlinx.serialization.json.contentOrNull
+import kotlinx.serialization.json.longOrNull
+import net.taler.common.Duration.Companion.FOREVER
import kotlin.math.max
+expect fun nowMillis(): Long
+
@Serializable
data class Timestamp(
@SerialName("t_ms")
+ @Serializable(NeverSerializer::class)
val ms: Long
) : Comparable<Timestamp> {
companion object {
- const val NEVER: Long = -1 // TODO or UINT64_MAX?
- fun now(): Timestamp = Timestamp(DateTime.now().unixMillisLong)
+ const val NEVER: Long = -1
+ fun now(): Timestamp = Timestamp(nowMillis())
}
/**
@@ -42,10 +49,6 @@ data class Timestamp(
return Timestamp((ms / 1000L) * 1000L)
}
- fun roundedToByteArray(): ByteArray = ByteArray(8).apply {
- (truncateSeconds().ms * 1000L).toByteArray().copyInto(this)
- }
-
operator fun minus(other: Timestamp): Duration = when {
ms == NEVER -> Duration(FOREVER)
other.ms == NEVER -> throw Error("Invalid argument for timestamp
comparision")
@@ -77,9 +80,27 @@ data class Duration(
* Duration in milliseconds.
*/
@SerialName("d_ms")
+ @Serializable(ForeverSerializer::class)
val ms: Long
) {
companion object {
- const val FOREVER: Long = -1 // TODO or UINT64_MAX?
+ const val FOREVER: Long = -1
+ }
+}
+
+abstract class MinusOneSerializer(private val keyword: String) :
+ JsonTransformingSerializer<Long>(Long.serializer(), keyword) {
+
+ override fun readTransform(element: JsonElement): JsonElement {
+ return if (element.contentOrNull == keyword) return JsonPrimitive(-1)
+ else super.readTransform(element)
+ }
+
+ override fun writeTransform(element: JsonElement): JsonElement {
+ return if (element.longOrNull == -1L) return JsonPrimitive(keyword)
+ else element
}
}
+
+object NeverSerializer : MinusOneSerializer("never")
+object ForeverSerializer : MinusOneSerializer("forever")
diff --git a/common/src/commonMain/kotlin/net/taler/common/Version.kt
b/common/src/commonMain/kotlin/net/taler/common/Version.kt
new file mode 100644
index 0000000..8774115
--- /dev/null
+++ b/common/src/commonMain/kotlin/net/taler/common/Version.kt
@@ -0,0 +1,70 @@
+/*
+ * This file is part of GNU Taler
+ * (C) 2020 Taler Systems S.A.
+ *
+ * GNU Taler is free software; you can redistribute it and/or modify it under
the
+ * terms of the GNU General Public License as published by the Free Software
+ * Foundation; either version 3, or (at your option) any later version.
+ *
+ * GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR
+ * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+ */
+
+package net.taler.common
+
+import kotlin.math.sign
+
+/**
+ * Semantic versioning, but libtool-style.
+ * See
https://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html
+ */
+data class Version(
+ val current: Int,
+ val revision: Int,
+ val age: Int
+) {
+ companion object {
+ fun parse(v: String): Version? {
+ val elements = v.split(":")
+ if (elements.size != 3) return null
+ val (currentStr, revisionStr, ageStr) = elements
+ val current = currentStr.toIntOrNull()
+ val revision = revisionStr.toIntOrNull()
+ val age = ageStr.toIntOrNull()
+ if (current == null || revision == null || age == null) return null
+ return Version(current, revision, age)
+ }
+ }
+
+ /**
+ * Compare two libtool-style versions.
+ *
+ * Returns a [VersionMatchResult] or null if the given version was null.
+ */
+ fun compare(other: Version?): VersionMatchResult? {
+ if (other == null) return null
+ val compatible = current - age <= other.current &&
+ current >= other.current - other.age
+ val currentCmp = sign((current - other.current).toDouble()).toInt()
+ return VersionMatchResult(compatible, currentCmp)
+ }
+
+ /**
+ * Result of comparing two libtool versions.
+ */
+ data class VersionMatchResult(
+ /**
+ * Is the first version compatible with the second?
+ */
+ val compatible: Boolean,
+ /**
+ * Is the first version older (-1), newer (+1) or identical (0)?
+ */
+ val currentCmp: Int
+ )
+
+}
diff --git a/src/commonTest/kotlin/net/taler/wallet/kotlin/AmountTest.kt
b/common/src/commonTest/kotlin/net/taler/common/AmountTest.kt
similarity index 73%
copy from src/commonTest/kotlin/net/taler/wallet/kotlin/AmountTest.kt
copy to common/src/commonTest/kotlin/net/taler/common/AmountTest.kt
index 08ee618..e184307 100644
--- a/src/commonTest/kotlin/net/taler/wallet/kotlin/AmountTest.kt
+++ b/common/src/commonTest/kotlin/net/taler/common/AmountTest.kt
@@ -14,7 +14,7 @@
* GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-package net.taler.wallet.kotlin
+package net.taler.common
import kotlin.random.Random
import kotlin.test.Test
@@ -26,14 +26,7 @@ import kotlin.test.fail
class AmountTest {
companion object {
- private val charPool: List<Char> = ('a'..'z') + ('A'..'Z') + ('0'..'9')
- fun getRandomString(minLength: Int = 1, maxLength: Int =
Random.nextInt(0, 1337)) = (minLength..maxLength)
- .map { Random.nextInt(0, charPool.size) }
- .map(charPool::get)
- .joinToString("")
-
fun getRandomAmount() = getRandomAmount(getRandomString(1,
Random.nextInt(1, 12)))
-
fun getRandomAmount(currency: String): Amount {
val value = Random.nextLong(0, Amount.MAX_VALUE)
val fraction = Random.nextInt(0, Amount.MAX_FRACTION)
@@ -210,7 +203,10 @@ class AmountTest {
assertTrue(Amount.fromJSONString("EUR:0") <
Amount.fromJSONString("EUR:1"))
assertEquals(Amount.fromJSONString("EUR:0"),
Amount.fromJSONString("EUR:0"))
assertEquals(Amount.fromJSONString("EUR:42"),
Amount.fromJSONString("EUR:42"))
- assertEquals(Amount.fromJSONString("EUR:42.00000001"),
Amount.fromJSONString("EUR:42.00000001"))
+ assertEquals(
+ Amount.fromJSONString("EUR:42.00000001"),
+ Amount.fromJSONString("EUR:42.00000001")
+ )
assertTrue(Amount.fromJSONString("EUR:42.00000001") >=
Amount.fromJSONString("EUR:42.00000001"))
assertTrue(Amount.fromJSONString("EUR:42.00000002") >=
Amount.fromJSONString("EUR:42.00000001"))
assertTrue(Amount.fromJSONString("EUR:42.00000002") >
Amount.fromJSONString("EUR:42.00000001"))
@@ -223,44 +219,6 @@ class AmountTest {
}
}
- @Test
- fun testToByteArray() {
- val vectors = listOf(
- Pair("ceicWVf9GhJ:3902026702525079.40496378",
"006XSQV3G899E0K9XKX66SB9CDBNCSHS8XM4M00"),
- Pair("asYDLuK2A:3800267550024600.02072907",
"006R0MNXBVHSG00ZM55P2WTS8H67AJSJ8400000"),
- Pair("pV1m:1347558259914570.09786232",
"002CK66VCNVMM04NADW70NHHDM0000000000000"),
- Pair("geO82l:553744321840253.41004983",
"000ZF855K627T0KHNYVPESAF70S6R0000000000"),
- Pair("B9bWK7WPEO:3663912678613976.12122563",
"006G8KS5P9HXG05RZ71M4EB2AX5KENTG8N7G000"),
- Pair("X:1537372109907438.77850768",
"002QCETPFYJYW153X285G000000000000000000"),
- Pair("5:4271492725553118.39728399",
"007JSSK6J4VXW0JY6M7KA000000000000000000"),
- Pair("OSdV:801656289790342.08256189",
"001DJ6H6CA4RC03XZAYMYMV4AR0000000000000"),
- Pair("Y6:2908617536334646.94126271",
"0055AQTB19NKC1CW82ZNJDG0000000000000000"),
- Pair("kSHoOZj:2610656582865206.00292046",
"004MCR6T828KC004EK76PMT8DX7NMTG00000000"),
- Pair("GkhLXrlGES:4246330707533398.83874252",
"007HC0Z9DFF5C17ZT764ETV89HC74V278N9G000"),
- Pair("CNS09:738124490298524.71259462",
"0019YMG01DA9R11ZAN346KJK60WG00000000000"),
- Pair("sw0b1tKXZym:2132978464977419.28199478",
"003S7VNZPZS0P0DE98V76XSGC8RQ8JTRB9WPT00"),
- Pair("fC:1275322307696988.17178522",
"0028FSGX3ZCNR0863YD6CGR0000000000000000"),
- Pair("cRai6j:166032749022734.69444771",
"0009E0C30V70W113MJHP6MK1D4V6M0000000000"),
- Pair("KOADwTb3:3932974019564218.48282023",
"006ZJ16ZB39BM0Q0Q6KMPKT18HVN8RHK0000000"),
- Pair("9Fi9wcLgDe:1268366772151214.97268853",
"002834N6WRHTW1EC6HTKJHK975VP6K378HJG000"),
- Pair("SDN:3370670470236379.88943272",
"005ZK6V0124DP1AD5AM56H2E000000000000000"),
- Pair("zGCP5V:4010014441349620.76121145",
"0073Y5HYA8GZ8149GGWQMHT3A0TNC0000000000"),
- Pair("VsW1JjBLn:2037070181191907.99717275",
"003KSD2WH18E61FHJ2DNCWTQ6556MGJCDR00000"),
- Pair("A:1806895799429502.00887758",
"0036PQ5P8NMQW00DHF742000000000000000000"),
- Pair("njA8:4015261148004966.43708687",
"00747PYPD116C0MTY47PWTJ1700000000000000"),
- Pair("Bwq:3562876074139250.28829179",
"006AGTNTRWF740DQWQXM4XVH000000000000000"),
- Pair("8e75v8:3716241006992995.95213823",
"006K7SP93WF661DCV3ZKGS9Q6NV3G0000000000"),
- Pair("XrnbQTTn:3887603772953949.94721267",
"006WZGA9X8ANT1D5AKSNGWKEC98N8N3E0000000"),
- Pair("MIN:0.00000001", "0000000000000000000MTJAE000000000000000"),
- Pair("MAX:4503599627370496.99999999",
"00800000000001FNW3ZMTGAR000000000000000")
- )
- for (v in vectors) {
- val amount = Amount.fromJSONString(v.first)
- val encodedBytes = Base32Crockford.encode(amount.toByteArray())
- assertEquals(v.second, encodedBytes)
- }
- }
-
private inline fun <reified T : Throwable> assertThrows(
msg: String? = null,
function: () -> Any
diff --git a/src/commonTest/kotlin/net/taler/wallet/kotlin/TalerUriTest.kt
b/common/src/commonTest/kotlin/net/taler/common/TalerUriTest.kt
similarity index 90%
copy from src/commonTest/kotlin/net/taler/wallet/kotlin/TalerUriTest.kt
copy to common/src/commonTest/kotlin/net/taler/common/TalerUriTest.kt
index cfcc8bd..f996fa9 100644
--- a/src/commonTest/kotlin/net/taler/wallet/kotlin/TalerUriTest.kt
+++ b/common/src/commonTest/kotlin/net/taler/common/TalerUriTest.kt
@@ -14,10 +14,10 @@
* GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-package net.taler.wallet.kotlin
+package net.taler.common
-import net.taler.wallet.kotlin.TalerUri.WithdrawUriResult
-import net.taler.wallet.kotlin.TalerUri.parseWithdrawUri
+import net.taler.common.TalerUri.WithdrawUriResult
+import net.taler.common.TalerUri.parseWithdrawUri
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertNull
@@ -38,7 +38,8 @@ class TalerUriTest {
// correct parsing with long path
uri = "taler://withdraw/bank.example.com/foo/bar/23/42/1337/1234567890"
- expected =
WithdrawUriResult("https://bank.example.com/foo/bar/23/42/1337", "1234567890")
+ expected =
+ WithdrawUriResult("https://bank.example.com/foo/bar/23/42/1337",
"1234567890")
assertEquals(expected, parseWithdrawUri(uri))
// rejects incorrect scheme
diff --git a/src/jsTest/kotlin/net/taler/wallet/kotlin/TestUtils.kt
b/common/src/commonTest/kotlin/net/taler/common/TestUtils.kt
similarity index 67%
copy from src/jsTest/kotlin/net/taler/wallet/kotlin/TestUtils.kt
copy to common/src/commonTest/kotlin/net/taler/common/TestUtils.kt
index 49466e0..e3a6c17 100644
--- a/src/jsTest/kotlin/net/taler/wallet/kotlin/TestUtils.kt
+++ b/common/src/commonTest/kotlin/net/taler/common/TestUtils.kt
@@ -14,12 +14,13 @@
* GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-package net.taler.wallet.kotlin
+package net.taler.common
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.GlobalScope
-import kotlinx.coroutines.promise
+import kotlin.random.Random
-actual fun runCoroutine(block: suspend (scope : CoroutineScope) -> Unit):
dynamic = GlobalScope.promise { block(this) }
-
-actual fun getPlatformTarget(): PlatformTarget = PlatformTarget.JS
+private val charPool: List<Char> = ('a'..'z') + ('A'..'Z') + ('0'..'9')
+fun getRandomString(minLength: Int = 1, maxLength: Int = Random.nextInt(0,
1337)) =
+ (minLength..maxLength)
+ .map { Random.nextInt(0, charPool.size) }
+ .map(charPool::get)
+ .joinToString("")
diff --git a/common/src/commonTest/kotlin/net/taler/common/TimeTest.kt
b/common/src/commonTest/kotlin/net/taler/common/TimeTest.kt
new file mode 100644
index 0000000..3ee0a99
--- /dev/null
+++ b/common/src/commonTest/kotlin/net/taler/common/TimeTest.kt
@@ -0,0 +1,49 @@
+/*
+ * This file is part of GNU Taler
+ * (C) 2020 Taler Systems S.A.
+ *
+ * GNU Taler is free software; you can redistribute it and/or modify it under
the
+ * terms of the GNU General Public License as published by the Free Software
+ * Foundation; either version 3, or (at your option) any later version.
+ *
+ * GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR
+ * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+ */
+
+package net.taler.common
+
+import kotlinx.serialization.UnstableDefault
+import kotlinx.serialization.json.Json.Default.parse
+import kotlinx.serialization.json.Json.Default.stringify
+import net.taler.common.Timestamp.Companion.NEVER
+import kotlin.random.Random
+import kotlin.test.Test
+import kotlin.test.assertEquals
+
+// TODO test other functionality of Timestamp and Duration
+@UnstableDefault
+class TimeTest {
+
+ @Test
+ fun testSerialize() {
+ for (i in 0 until 42) {
+ val t = Random.nextLong()
+ assertEquals("""{"t_ms":$t}""", stringify(Timestamp.serializer(),
Timestamp(t)))
+ }
+ assertEquals("""{"t_ms":"never"}""", stringify(Timestamp.serializer(),
Timestamp(NEVER)))
+ }
+
+ @Test
+ fun testDeserialize() {
+ for (i in 0 until 42) {
+ val t = Random.nextLong()
+ assertEquals(Timestamp(t), parse(Timestamp.serializer(), """{
"t_ms": $t }"""))
+ }
+ assertEquals(Timestamp(NEVER), parse(Timestamp.serializer(), """{
"t_ms": "never" }"""))
+ }
+
+}
diff --git a/common/src/commonTest/kotlin/net/taler/common/VersionTest.kt
b/common/src/commonTest/kotlin/net/taler/common/VersionTest.kt
new file mode 100644
index 0000000..f4f17ea
--- /dev/null
+++ b/common/src/commonTest/kotlin/net/taler/common/VersionTest.kt
@@ -0,0 +1,65 @@
+/*
+ * This file is part of GNU Taler
+ * (C) 2020 Taler Systems S.A.
+ *
+ * GNU Taler is free software; you can redistribute it and/or modify it under
the
+ * terms of the GNU General Public License as published by the Free Software
+ * Foundation; either version 3, or (at your option) any later version.
+ *
+ * GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR
+ * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+ */
+
+package net.taler.common
+
+import kotlin.test.Test
+import kotlin.test.assertEquals
+import kotlin.test.assertNull
+
+class VersionTest {
+
+ @Test
+ fun testParse() {
+ assertNull(Version.parse(""))
+ assertNull(Version.parse("foo"))
+ assertNull(Version.parse("foo:bar:foo"))
+ assertNull(Version.parse("0:0:0:"))
+ assertNull(Version.parse("0:0:"))
+ assertEquals(Version(0, 0, 0), Version.parse("0:0:0"))
+ assertEquals(Version(1, 2, 3), Version.parse("1:2:3"))
+ assertEquals(Version(1337, 42, 23), Version.parse("1337:42:23"))
+ }
+
+ @Test
+ fun testComparision() {
+ assertEquals(
+ Version.VersionMatchResult(true, 0),
+ Version.parse("0:0:0")!!.compare(Version.parse("0:0:0"))
+ )
+ assertEquals(
+ Version.VersionMatchResult(true, -1),
+ Version.parse("0:0:0")!!.compare(Version.parse("1:0:1"))
+ )
+ assertEquals(
+ Version.VersionMatchResult(true, -1),
+ Version.parse("0:0:0")!!.compare(Version.parse("1:5:1"))
+ )
+ assertEquals(
+ Version.VersionMatchResult(false, -1),
+ Version.parse("0:0:0")!!.compare(Version.parse("1:5:0"))
+ )
+ assertEquals(
+ Version.VersionMatchResult(false, 1),
+ Version.parse("1:0:0")!!.compare(Version.parse("0:5:0"))
+ )
+ assertEquals(
+ Version.VersionMatchResult(true, 0),
+ Version.parse("1:0:1")!!.compare(Version.parse("1:5:1"))
+ )
+ }
+
+}
diff --git a/src/jsMain/kotlin/net/taler/wallet/kotlin/Db.kt
b/common/src/jsMain/kotlin/net/taler/common/Time.kt
similarity index 85%
copy from src/jsMain/kotlin/net/taler/wallet/kotlin/Db.kt
copy to common/src/jsMain/kotlin/net/taler/common/Time.kt
index 45cbfc3..b114022 100644
--- a/src/jsMain/kotlin/net/taler/wallet/kotlin/Db.kt
+++ b/common/src/jsMain/kotlin/net/taler/common/Time.kt
@@ -14,10 +14,10 @@
* GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-package net.taler.wallet.kotlin
+package net.taler.common
-internal actual class DbFactory {
- actual fun openDb(): Db {
- return FakeDb()
- }
+import kotlin.js.Date
+
+actual fun nowMillis(): Long {
+ return Date().getMilliseconds().toLong()
}
diff --git a/src/jsMain/kotlin/net/taler/wallet/kotlin/Db.kt
b/common/src/jvmMain/kotlin/net/taler/common/Time.kt
similarity index 85%
copy from src/jsMain/kotlin/net/taler/wallet/kotlin/Db.kt
copy to common/src/jvmMain/kotlin/net/taler/common/Time.kt
index 45cbfc3..6cd9040 100644
--- a/src/jsMain/kotlin/net/taler/wallet/kotlin/Db.kt
+++ b/common/src/jvmMain/kotlin/net/taler/common/Time.kt
@@ -14,10 +14,8 @@
* GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-package net.taler.wallet.kotlin
+package net.taler.common
-internal actual class DbFactory {
- actual fun openDb(): Db {
- return FakeDb()
- }
+actual fun nowMillis(): Long {
+ return System.currentTimeMillis()
}
diff --git a/src/jsMain/kotlin/net/taler/wallet/kotlin/Db.kt
b/common/src/nativeMain/kotlin/net/taler/common/Time.kt
similarity index 85%
copy from src/jsMain/kotlin/net/taler/wallet/kotlin/Db.kt
copy to common/src/nativeMain/kotlin/net/taler/common/Time.kt
index 45cbfc3..8a4091a 100644
--- a/src/jsMain/kotlin/net/taler/wallet/kotlin/Db.kt
+++ b/common/src/nativeMain/kotlin/net/taler/common/Time.kt
@@ -14,10 +14,10 @@
* GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-package net.taler.wallet.kotlin
+package net.taler.common
-internal actual class DbFactory {
- actual fun openDb(): Db {
- return FakeDb()
- }
+import kotlin.system.getTimeMillis
+
+actual fun nowMillis(): Long {
+ return getTimeMillis()
}
diff --git a/gradle.properties b/gradle.properties
index 29e08e8..aaf152a 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1 +1,4 @@
-kotlin.code.style=official
\ No newline at end of file
+kotlin.code.style=official
+
+# prevent parallel execution of several compiler instances
+kotlin.native.disableCompilerDaemon=true
diff --git a/settings.gradle b/settings.gradle
index bf5e773..b22748a 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,3 +1,6 @@
-rootProject.name = 'wallet-kotlin'
-
enableFeaturePreview("GRADLE_METADATA")
+
+include ':common'
+project(':common').projectDir = file('./common')
+
+include ':wallet'
diff --git a/wallet/.gitignore b/wallet/.gitignore
new file mode 100644
index 0000000..796b96d
--- /dev/null
+++ b/wallet/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/build.gradle b/wallet/build.gradle
similarity index 93%
copy from build.gradle
copy to wallet/build.gradle
index e0b1a1b..aacd0b3 100644
--- a/build.gradle
+++ b/wallet/build.gradle
@@ -14,37 +14,24 @@
* GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-buildscript {
- ext.kotlin_version = '1.3.72'
- repositories {
- google()
- jcenter()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:4.0.1'
- }
-}
-
plugins {
- id 'org.jetbrains.kotlin.multiplatform' version "$kotlin_version"
- id 'org.jetbrains.kotlin.plugin.serialization' version "$kotlin_version"
+ id 'org.jetbrains.kotlin.multiplatform'
+ id 'org.jetbrains.kotlin.plugin.serialization'
}
-repositories {
- mavenCentral()
- jcenter()
- google()
- maven { url "https://dl.bintray.com/terl/lazysodium-maven" }
-}
group 'net.taler'
version '0.0.1'
apply plugin: 'com.android.library'
apply plugin: 'maven-publish'
-
kotlin {
- android {}
+ android {
+ repositories {
+ google()
+ maven { url "https://dl.bintray.com/terl/lazysodium-maven" }
+ }
+ }
js {
browser {
}
@@ -75,6 +62,7 @@ kotlin {
}
}
}
+
sourceSets {
def coroutines_version = "1.3.8"
def ktor_version = "1.3.2"
@@ -82,10 +70,14 @@ kotlin {
languageSettings {
useExperimentalAnnotation('kotlin.ExperimentalStdlibApi')
}
+ dependencies {
+ }
}
commonMain {
dependencies {
implementation kotlin('stdlib-common')
+ implementation project(":common")
+
implementation
"org.jetbrains.kotlinx:kotlinx-coroutines-core-common:$coroutines_version"
implementation "io.ktor:ktor-client-core:$ktor_version"
implementation "io.ktor:ktor-client-logging:$ktor_version"
diff --git a/src/androidMain/AndroidManifest.xml
b/wallet/src/androidMain/AndroidManifest.xml
similarity index 100%
rename from src/androidMain/AndroidManifest.xml
rename to wallet/src/androidMain/AndroidManifest.xml
diff --git a/src/androidMain/kotlin/net/taler/wallet/kotlin/Db.kt
b/wallet/src/androidMain/kotlin/net/taler/wallet/kotlin/Db.kt
similarity index 100%
rename from src/androidMain/kotlin/net/taler/wallet/kotlin/Db.kt
rename to wallet/src/androidMain/kotlin/net/taler/wallet/kotlin/Db.kt
diff --git
a/src/androidMain/kotlin/net/taler/wallet/kotlin/crypto/CryptoFactory.kt
b/wallet/src/androidMain/kotlin/net/taler/wallet/kotlin/crypto/CryptoFactory.kt
similarity index 100%
rename from
src/androidMain/kotlin/net/taler/wallet/kotlin/crypto/CryptoFactory.kt
rename to
wallet/src/androidMain/kotlin/net/taler/wallet/kotlin/crypto/CryptoFactory.kt
diff --git
a/src/androidMain/kotlin/net/taler/wallet/kotlin/crypto/RsaBlinding.kt
b/wallet/src/androidMain/kotlin/net/taler/wallet/kotlin/crypto/RsaBlinding.kt
similarity index 100%
rename from src/androidMain/kotlin/net/taler/wallet/kotlin/crypto/RsaBlinding.kt
rename to
wallet/src/androidMain/kotlin/net/taler/wallet/kotlin/crypto/RsaBlinding.kt
diff --git a/src/androidTest/kotlin/net/taler/wallet/kotlin/TestUtilsAndroid.kt
b/wallet/src/androidTest/kotlin/net/taler/wallet/kotlin/TestUtilsAndroid.kt
similarity index 100%
rename from src/androidTest/kotlin/net/taler/wallet/kotlin/TestUtilsAndroid.kt
rename to
wallet/src/androidTest/kotlin/net/taler/wallet/kotlin/TestUtilsAndroid.kt
diff --git
a/src/androidTest/kotlin/net/taler/wallet/kotlin/crypto/PlanchetTest.kt
b/wallet/src/androidTest/kotlin/net/taler/wallet/kotlin/crypto/PlanchetTest.kt
similarity index 100%
rename from
src/androidTest/kotlin/net/taler/wallet/kotlin/crypto/PlanchetTest.kt
rename to
wallet/src/androidTest/kotlin/net/taler/wallet/kotlin/crypto/PlanchetTest.kt
diff --git
a/src/androidTest/kotlin/net/taler/wallet/kotlin/crypto/RefreshTest.kt
b/wallet/src/androidTest/kotlin/net/taler/wallet/kotlin/crypto/RefreshTest.kt
similarity index 100%
rename from src/androidTest/kotlin/net/taler/wallet/kotlin/crypto/RefreshTest.kt
rename to
wallet/src/androidTest/kotlin/net/taler/wallet/kotlin/crypto/RefreshTest.kt
diff --git
a/src/androidTest/kotlin/net/taler/wallet/kotlin/crypto/RsaBlindingTest.kt
b/wallet/src/androidTest/kotlin/net/taler/wallet/kotlin/crypto/RsaBlindingTest.kt
similarity index 100%
rename from
src/androidTest/kotlin/net/taler/wallet/kotlin/crypto/RsaBlindingTest.kt
rename to
wallet/src/androidTest/kotlin/net/taler/wallet/kotlin/crypto/RsaBlindingTest.kt
diff --git a/src/commonMain/kotlin/net/taler/wallet/kotlin/Amount.kt
b/wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/Amount.kt
similarity index 100%
rename from src/commonMain/kotlin/net/taler/wallet/kotlin/Amount.kt
rename to wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/Amount.kt
diff --git a/src/commonMain/kotlin/net/taler/wallet/kotlin/Base32Crockford.kt
b/wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/Base32Crockford.kt
similarity index 100%
rename from src/commonMain/kotlin/net/taler/wallet/kotlin/Base32Crockford.kt
rename to
wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/Base32Crockford.kt
diff --git a/src/commonMain/kotlin/net/taler/wallet/kotlin/Db.kt
b/wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/Db.kt
similarity index 100%
rename from src/commonMain/kotlin/net/taler/wallet/kotlin/Db.kt
rename to wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/Db.kt
diff --git a/src/commonMain/kotlin/net/taler/wallet/kotlin/PaytoUri.kt
b/wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/PaytoUri.kt
similarity index 100%
rename from src/commonMain/kotlin/net/taler/wallet/kotlin/PaytoUri.kt
rename to wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/PaytoUri.kt
diff --git a/src/commonMain/kotlin/net/taler/wallet/kotlin/TalerUri.kt
b/wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/TalerUri.kt
similarity index 100%
rename from src/commonMain/kotlin/net/taler/wallet/kotlin/TalerUri.kt
rename to wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/TalerUri.kt
diff --git a/src/commonMain/kotlin/net/taler/wallet/kotlin/Time.kt
b/wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/Time.kt
similarity index 100%
rename from src/commonMain/kotlin/net/taler/wallet/kotlin/Time.kt
rename to wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/Time.kt
diff --git a/src/commonMain/kotlin/net/taler/wallet/kotlin/Types.kt
b/wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/Types.kt
similarity index 100%
rename from src/commonMain/kotlin/net/taler/wallet/kotlin/Types.kt
rename to wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/Types.kt
diff --git a/src/commonMain/kotlin/net/taler/wallet/kotlin/Utils.kt
b/wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/Utils.kt
similarity index 100%
rename from src/commonMain/kotlin/net/taler/wallet/kotlin/Utils.kt
rename to wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/Utils.kt
diff --git a/src/commonMain/kotlin/net/taler/wallet/kotlin/Version.kt
b/wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/Version.kt
similarity index 100%
rename from src/commonMain/kotlin/net/taler/wallet/kotlin/Version.kt
rename to wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/Version.kt
diff --git a/src/commonMain/kotlin/net/taler/wallet/kotlin/WalletApi.kt
b/wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/WalletApi.kt
similarity index 100%
rename from src/commonMain/kotlin/net/taler/wallet/kotlin/WalletApi.kt
rename to wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/WalletApi.kt
diff --git a/src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/Crypto.kt
b/wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/Crypto.kt
similarity index 100%
rename from src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/Crypto.kt
rename to wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/Crypto.kt
diff --git a/src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/CryptoImpl.kt
b/wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/CryptoImpl.kt
similarity index 100%
rename from src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/CryptoImpl.kt
rename to
wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/CryptoImpl.kt
diff --git a/src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/Deposit.kt
b/wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/Deposit.kt
similarity index 100%
rename from src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/Deposit.kt
rename to wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/Deposit.kt
diff --git a/src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/Kdf.kt
b/wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/Kdf.kt
similarity index 100%
rename from src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/Kdf.kt
rename to wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/Kdf.kt
diff --git a/src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/Planchet.kt
b/wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/Planchet.kt
similarity index 100%
rename from src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/Planchet.kt
rename to
wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/Planchet.kt
diff --git a/src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/Recoup.kt
b/wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/Recoup.kt
similarity index 100%
rename from src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/Recoup.kt
rename to wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/Recoup.kt
diff --git a/src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/Refresh.kt
b/wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/Refresh.kt
similarity index 100%
rename from src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/Refresh.kt
rename to wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/Refresh.kt
diff --git a/src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/Signature.kt
b/wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/Signature.kt
similarity index 100%
rename from src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/Signature.kt
rename to
wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/crypto/Signature.kt
diff --git a/src/commonMain/kotlin/net/taler/wallet/kotlin/exchange/Auditor.kt
b/wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/exchange/Auditor.kt
similarity index 100%
rename from src/commonMain/kotlin/net/taler/wallet/kotlin/exchange/Auditor.kt
rename to
wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/exchange/Auditor.kt
diff --git
a/src/commonMain/kotlin/net/taler/wallet/kotlin/exchange/Denomination.kt
b/wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/exchange/Denomination.kt
similarity index 100%
rename from
src/commonMain/kotlin/net/taler/wallet/kotlin/exchange/Denomination.kt
rename to
wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/exchange/Denomination.kt
diff --git a/src/commonMain/kotlin/net/taler/wallet/kotlin/exchange/Exchange.kt
b/wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/exchange/Exchange.kt
similarity index 100%
rename from src/commonMain/kotlin/net/taler/wallet/kotlin/exchange/Exchange.kt
rename to
wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/exchange/Exchange.kt
diff --git
a/src/commonMain/kotlin/net/taler/wallet/kotlin/exchange/ExchangeRecord.kt
b/wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/exchange/ExchangeRecord.kt
similarity index 100%
rename from
src/commonMain/kotlin/net/taler/wallet/kotlin/exchange/ExchangeRecord.kt
rename to
wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/exchange/ExchangeRecord.kt
diff --git a/src/commonMain/kotlin/net/taler/wallet/kotlin/exchange/Keys.kt
b/wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/exchange/Keys.kt
similarity index 100%
rename from src/commonMain/kotlin/net/taler/wallet/kotlin/exchange/Keys.kt
rename to wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/exchange/Keys.kt
diff --git a/src/commonMain/kotlin/net/taler/wallet/kotlin/exchange/Wire.kt
b/wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/exchange/Wire.kt
similarity index 100%
rename from src/commonMain/kotlin/net/taler/wallet/kotlin/exchange/Wire.kt
rename to wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/exchange/Wire.kt
diff --git
a/src/commonMain/kotlin/net/taler/wallet/kotlin/operations/Withdraw.kt
b/wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/operations/Withdraw.kt
similarity index 100%
rename from src/commonMain/kotlin/net/taler/wallet/kotlin/operations/Withdraw.kt
rename to
wallet/src/commonMain/kotlin/net/taler/wallet/kotlin/operations/Withdraw.kt
diff --git a/src/commonTest/kotlin/net/taler/wallet/kotlin/AmountTest.kt
b/wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/AmountTest.kt
similarity index 100%
rename from src/commonTest/kotlin/net/taler/wallet/kotlin/AmountTest.kt
rename to wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/AmountTest.kt
diff --git
a/src/commonTest/kotlin/net/taler/wallet/kotlin/Base32CrockfordTest.kt
b/wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/Base32CrockfordTest.kt
similarity index 100%
rename from src/commonTest/kotlin/net/taler/wallet/kotlin/Base32CrockfordTest.kt
rename to
wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/Base32CrockfordTest.kt
diff --git a/src/commonTest/kotlin/net/taler/wallet/kotlin/DbTest.kt
b/wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/DbTest.kt
similarity index 100%
rename from src/commonTest/kotlin/net/taler/wallet/kotlin/DbTest.kt
rename to wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/DbTest.kt
diff --git a/src/commonTest/kotlin/net/taler/wallet/kotlin/PaytoUriTest.kt
b/wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/PaytoUriTest.kt
similarity index 100%
rename from src/commonTest/kotlin/net/taler/wallet/kotlin/PaytoUriTest.kt
rename to wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/PaytoUriTest.kt
diff --git a/src/commonTest/kotlin/net/taler/wallet/kotlin/TalerUriTest.kt
b/wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/TalerUriTest.kt
similarity index 100%
rename from src/commonTest/kotlin/net/taler/wallet/kotlin/TalerUriTest.kt
rename to wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/TalerUriTest.kt
diff --git a/src/commonTest/kotlin/net/taler/wallet/kotlin/TestUtils.kt
b/wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/TestUtils.kt
similarity index 100%
rename from src/commonTest/kotlin/net/taler/wallet/kotlin/TestUtils.kt
rename to wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/TestUtils.kt
diff --git a/src/commonTest/kotlin/net/taler/wallet/kotlin/TimestampTest.kt
b/wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/TimestampTest.kt
similarity index 100%
rename from src/commonTest/kotlin/net/taler/wallet/kotlin/TimestampTest.kt
rename to wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/TimestampTest.kt
diff --git a/src/commonTest/kotlin/net/taler/wallet/kotlin/VersionTest.kt
b/wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/VersionTest.kt
similarity index 100%
rename from src/commonTest/kotlin/net/taler/wallet/kotlin/VersionTest.kt
rename to wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/VersionTest.kt
diff --git a/src/commonTest/kotlin/net/taler/wallet/kotlin/WalletApiTest.kt
b/wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/WalletApiTest.kt
similarity index 100%
rename from src/commonTest/kotlin/net/taler/wallet/kotlin/WalletApiTest.kt
rename to wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/WalletApiTest.kt
diff --git
a/src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/DepositTest.kt
b/wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/DepositTest.kt
similarity index 100%
rename from src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/DepositTest.kt
rename to
wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/DepositTest.kt
diff --git
a/src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/EllipticCurveTest.kt
b/wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/EllipticCurveTest.kt
similarity index 100%
rename from
src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/EllipticCurveTest.kt
rename to
wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/EllipticCurveTest.kt
diff --git a/src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/KdfTest.kt
b/wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/KdfTest.kt
similarity index 100%
rename from src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/KdfTest.kt
rename to wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/KdfTest.kt
diff --git a/src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/RecoupTest.kt
b/wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/RecoupTest.kt
similarity index 100%
rename from src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/RecoupTest.kt
rename to
wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/RecoupTest.kt
diff --git
a/src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/RefreshPlanchetTest.kt
b/wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/RefreshPlanchetTest.kt
similarity index 100%
rename from
src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/RefreshPlanchetTest.kt
rename to
wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/RefreshPlanchetTest.kt
diff --git a/src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/Sha256Test.kt
b/wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/Sha256Test.kt
similarity index 100%
rename from src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/Sha256Test.kt
rename to
wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/Sha256Test.kt
diff --git a/src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/Sha512Test.kt
b/wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/Sha512Test.kt
similarity index 100%
rename from src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/Sha512Test.kt
rename to
wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/Sha512Test.kt
diff --git
a/src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/SignatureTest.kt
b/wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/SignatureTest.kt
similarity index 100%
rename from
src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/SignatureTest.kt
rename to
wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/crypto/SignatureTest.kt
diff --git
a/src/commonTest/kotlin/net/taler/wallet/kotlin/exchange/DenominationTest.kt
b/wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/exchange/DenominationTest.kt
similarity index 100%
rename from
src/commonTest/kotlin/net/taler/wallet/kotlin/exchange/DenominationTest.kt
rename to
wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/exchange/DenominationTest.kt
diff --git
a/src/commonTest/kotlin/net/taler/wallet/kotlin/exchange/Denominations.kt
b/wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/exchange/Denominations.kt
similarity index 100%
rename from
src/commonTest/kotlin/net/taler/wallet/kotlin/exchange/Denominations.kt
rename to
wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/exchange/Denominations.kt
diff --git a/src/commonTest/kotlin/net/taler/wallet/kotlin/exchange/KeysTest.kt
b/wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/exchange/KeysTest.kt
similarity index 100%
rename from src/commonTest/kotlin/net/taler/wallet/kotlin/exchange/KeysTest.kt
rename to
wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/exchange/KeysTest.kt
diff --git
a/src/commonTest/kotlin/net/taler/wallet/kotlin/exchange/UpdateTest.kt
b/wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/exchange/UpdateTest.kt
similarity index 100%
rename from src/commonTest/kotlin/net/taler/wallet/kotlin/exchange/UpdateTest.kt
rename to
wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/exchange/UpdateTest.kt
diff --git a/src/commonTest/kotlin/net/taler/wallet/kotlin/exchange/WireTest.kt
b/wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/exchange/WireTest.kt
similarity index 100%
rename from src/commonTest/kotlin/net/taler/wallet/kotlin/exchange/WireTest.kt
rename to
wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/exchange/WireTest.kt
diff --git
a/src/commonTest/kotlin/net/taler/wallet/kotlin/operations/WithdrawTest.kt
b/wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/operations/WithdrawTest.kt
similarity index 100%
rename from
src/commonTest/kotlin/net/taler/wallet/kotlin/operations/WithdrawTest.kt
rename to
wallet/src/commonTest/kotlin/net/taler/wallet/kotlin/operations/WithdrawTest.kt
diff --git a/src/jsMain/kotlin/net/taler/wallet/kotlin/Db.kt
b/wallet/src/jsMain/kotlin/net/taler/wallet/kotlin/Db.kt
similarity index 100%
rename from src/jsMain/kotlin/net/taler/wallet/kotlin/Db.kt
rename to wallet/src/jsMain/kotlin/net/taler/wallet/kotlin/Db.kt
diff --git a/src/jsMain/kotlin/net/taler/wallet/kotlin/crypto/CryptoFactory.kt
b/wallet/src/jsMain/kotlin/net/taler/wallet/kotlin/crypto/CryptoFactory.kt
similarity index 100%
rename from src/jsMain/kotlin/net/taler/wallet/kotlin/crypto/CryptoFactory.kt
rename to
wallet/src/jsMain/kotlin/net/taler/wallet/kotlin/crypto/CryptoFactory.kt
diff --git a/src/jsTest/kotlin/net/taler/wallet/kotlin/TestUtils.kt
b/wallet/src/jsTest/kotlin/net/taler/wallet/kotlin/TestUtils.kt
similarity index 100%
rename from src/jsTest/kotlin/net/taler/wallet/kotlin/TestUtils.kt
rename to wallet/src/jsTest/kotlin/net/taler/wallet/kotlin/TestUtils.kt
diff --git a/src/nativeInterop/cinterop/sodium-static.def
b/wallet/src/nativeInterop/cinterop/sodium-static.def
similarity index 100%
rename from src/nativeInterop/cinterop/sodium-static.def
rename to wallet/src/nativeInterop/cinterop/sodium-static.def
diff --git a/src/nativeInterop/cinterop/sodium.def
b/wallet/src/nativeInterop/cinterop/sodium.def
similarity index 100%
rename from src/nativeInterop/cinterop/sodium.def
rename to wallet/src/nativeInterop/cinterop/sodium.def
diff --git a/src/nativeMain/kotlin/net/taler/wallet/kotlin/Db.kt
b/wallet/src/nativeMain/kotlin/net/taler/wallet/kotlin/Db.kt
similarity index 100%
rename from src/nativeMain/kotlin/net/taler/wallet/kotlin/Db.kt
rename to wallet/src/nativeMain/kotlin/net/taler/wallet/kotlin/Db.kt
diff --git
a/src/nativeMain/kotlin/net/taler/wallet/kotlin/crypto/CryptoFactory.kt
b/wallet/src/nativeMain/kotlin/net/taler/wallet/kotlin/crypto/CryptoFactory.kt
similarity index 100%
rename from
src/nativeMain/kotlin/net/taler/wallet/kotlin/crypto/CryptoFactory.kt
rename to
wallet/src/nativeMain/kotlin/net/taler/wallet/kotlin/crypto/CryptoFactory.kt
diff --git a/src/nativeTest/kotlin/net/taler/wallet/kotlin/TestUtils.kt
b/wallet/src/nativeTest/kotlin/net/taler/wallet/kotlin/TestUtils.kt
similarity index 100%
rename from src/nativeTest/kotlin/net/taler/wallet/kotlin/TestUtils.kt
rename to wallet/src/nativeTest/kotlin/net/taler/wallet/kotlin/TestUtils.kt
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [taler-wallet-kotlin] branch master updated: Add Taler common multiplatform library to project,
gnunet <=