Compare commits

..

15 Commits

Author SHA1 Message Date
6c843c4dd4 migrate onto new android dsl 2026-08-28 23:04:25 +06:00
9381e7d057 migrate build toolchain 2026-08-28 22:12:57 +06:00
9ffc171c04 update dependencies 2026-08-28 14:03:40 +06:00
6104d4917c start 0.31.0 2026-08-28 12:55:11 +06:00
faa3ac728f Merge pull request #677 from InsanusMokrassar/0.30.1
0.30.1
2026-08-13 13:26:20 +06:00
b00e93372d temporarily disable inmo nexus 2026-08-13 13:23:43 +06:00
8f51cd4d60 update kslog 2026-08-13 13:22:55 +06:00
f618ea05f7 fix in generate sealed workaround 2026-08-13 13:18:09 +06:00
2b053dfedb update dependencies 2026-08-13 13:18:09 +06:00
f6ab406ffa start 0.30.1 2026-08-13 13:18:09 +06:00
fe635835a5 update dependencies 2026-08-13 13:17:08 +06:00
795bc4e09e start 0.30.0 2026-08-13 13:17:08 +06:00
d431446da0 fix dokka build :( 2026-08-13 13:17:08 +06:00
362821e4d7 add meta 2026-08-13 13:17:08 +06:00
2045db9cd0 start 0.29.4 2026-08-13 13:17:08 +06:00
64 changed files with 307 additions and 155 deletions

View File

@@ -12,7 +12,7 @@ jobs:
with:
java-version: 17
- name: Build
run: ./gradlew build && ./gradlew dokkaHtml
run: ./gradlew build && ./gradlew :micro_utils.dokka:dokkaGenerate
- name: Publish KDocs
uses: peaceiris/actions-gh-pages@v3
with:

View File

@@ -1,5 +1,38 @@
# Changelog
## 0.31.0
* `Versions`:
* `SQLite`: `3.53.2.1` -> `3.53.4.0`
* `KSP`: `2.3.9` -> `2.3.11`
* `Exposed`: `1.3.0` -> `1.5.0`
* `NMCP`: `1.5.0` -> `1.6.1`
* `AndroidX AppCompat`: `1.7.1` -> `1.8.0`
* `AndroidX Fragment`: `1.8.9` -> `1.9.0`
## 0.30.1
* `Versions`:
* `KSLog`: `1.6.1` -> `1.7.0`
* `SQLite`: `3.53.2.0` -> `3.53.2.1`
* `Ktor`: `3.5.1` -> `3.5.2`
* `Okio`: `3.17.0` -> `3.18.1`
## 0.30.0
* `Versions`:
* `Compose`: `1.11.0` -> `1.11.1`
* `KSP`: `2.3.8` -> `2.3.9`
* `Ktor`: `3.5.0` -> `3.5.1`
* `Koin`: `4.2.1` -> `4.2.2`
* `SQLite`: `3.53.1.0` -> `3.53.2.0`
* `AndroidX Core KTX`: `1.18.0` -> `1.19.0`
## 0.29.4
* `Meta`:
* Inited
## 0.29.3
* `Versions`:

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppAndroidProject"

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppAndroidProject"

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
alias(libs.plugins.jb.compose)
alias(libs.plugins.kt.jb.compose)
}

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppAndroidProject"

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
alias(libs.plugins.jb.compose)
alias(libs.plugins.kt.jb.compose)
}

View File

@@ -41,7 +41,7 @@ allprojects {
mavenCentral()
google()
maven { url "https://maven.pkg.jetbrains.space/public/p/compose/dev" }
maven { url "https://nexus.inmo.dev/repository/maven-releases/" }
// maven { url "https://nexus.inmo.dev/repository/maven-releases/" }
mavenLocal()
}

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"
@@ -13,7 +13,7 @@ kotlin {
api libs.klock
}
}
jvmMain {
jvmAndAndroidMain {
dependencies {
api project(":micro_utils.coroutines")
}

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
alias(libs.plugins.jb.compose)
alias(libs.plugins.kt.jb.compose)
}

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
alias(libs.plugins.jb.compose)
alias(libs.plugins.kt.jb.compose)
}

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"
@@ -21,11 +21,3 @@ kotlin {
}
}
}
android {
sourceSets {
main {
java.srcDirs += [ "src/jvmMain/kotlin" ]
}
}
}

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
id "org.jetbrains.dokka"
}
@@ -11,13 +11,17 @@ repositories {
mavenCentral()
}
apply from: "$defaultAndroidSettings"
kotlin {
jvm()
js(IR) {
browser()
nodejs()
}
android {}
android {
project.ext.configureAndroidTarget(delegate)
}
sourceSets {
commonMain {
@@ -91,7 +95,7 @@ kotlin {
private List<SourceDirectorySet> findSourcesWithName(String... approximateNames) {
return parent.subprojects
.findAll { it != project && it.hasProperty("kotlin") }
.findAll { it != project && it.hasProperty("kotlin") && (it.name.contains("dokka") == false) }
.collectMany { it.kotlin.sourceSets }
.findAll { sourceSet ->
approximateNames.any { nameToFilter ->
@@ -100,14 +104,14 @@ private List<SourceDirectorySet> findSourcesWithName(String... approximateNames)
}.collect { it.kotlin }
}
tasks.dokkaHtml {
dokka {
dokkaSourceSets {
configureEach {
skipDeprecated.set(true)
sourceLink {
localDirectory.set(file("../"))
remoteUrl.set(new URL("https://github.com/InsanusMokrassar/MicroUtils/blob/master/"))
remoteUrl.set(new URI("https://github.com/InsanusMokrassar/MicroUtils/blob/master/"))
remoteLineSuffix.set("#L")
}
}
@@ -130,4 +134,10 @@ tasks.dokkaHtml {
}
}
apply from: "$defaultAndroidSettings"
//dependencies {
// project.parent.subprojects.forEach {
// if (it != project) {
// dokka(it)
// }
// }
//}

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"

View File

@@ -1,11 +1,9 @@
kotlin.code.style=official
org.gradle.parallel=true
kotlin.js.generate.externals=true
kotlin.incremental=true
kotlin.incremental.js=true
#kotlin.experimental.tryK2=true
android.useAndroidX=true
android.enableJetifier=true
org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=2g
## https://github.com/google/ksp/issues/2491
@@ -18,5 +16,5 @@ crypto_js_version=4.1.1
# Project data
group=dev.inmo
version=0.29.3
android_code_version=313
version=0.31.0
android_code_version=317

View File

@@ -1,51 +1,51 @@
[versions]
kt = "2.3.21"
kt = "2.4.10"
kt-serialization = "1.11.0"
kt-coroutines = "1.11.0"
kotlinx-browser = "0.5.0"
kslog = "1.6.1"
kslog = "1.7.0"
jb-compose = "1.11.0"
jb-compose = "1.12.0"
jb-compose-material3 = "1.11.0-alpha07"
jb-compose-icons = "1.7.8"
jb-exposed = "1.3.0"
jb-exposed = "1.5.0"
jb-dokka = "2.2.0"
sqlite = "3.53.1.0"
sqlite = "3.53.4.0"
korlibs = "5.4.0"
uuid = "0.8.4"
ktor = "3.5.0"
ktor = "3.5.2"
gh-release = "2.5.2"
koin = "4.2.1"
koin = "4.2.2"
okio = "3.17.0"
okio = "3.18.1"
ksp = "2.3.8"
ksp = "2.3.11"
kotlin-poet = "2.3.0"
versions = "0.54.0"
nmcp = "1.5.0"
versions = "0.61.0"
nmcp = "1.6.1"
android-gradle = "8.13.+"
android-gradle = "9.1.1"
dexcount = "4.0.0"
android-coreKtx = "1.18.0"
android-coreKtx = "1.19.0"
android-recyclerView = "1.4.0"
android-appCompat = "1.7.1"
android-fragment = "1.8.9"
android-appCompat = "1.8.0"
android-fragment = "1.9.0"
android-espresso = "3.7.0"
android-test = "1.3.0"
android-props-minSdk = "21"
android-props-compileSdk = "36"
android-props-buildTools = "36.0.0"
android-props-compileSdk = "37"
android-props-buildTools = "37.0.0"
[libraries]
@@ -126,5 +126,5 @@ buildscript-android-dexcount = { module = "com.getkeepsafe.dexcount:dexcount-gra
jb-compose = { id = "org.jetbrains.compose", version.ref = "jb-compose" }
kt-jb-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kt" }
versions = { id = "com.github.ben-manes.versions", version.ref = "versions" }
versions = { id = "io.github.ben-manes.versions", version.ref = "versions" }
nmcp-aggregation = { id = "com.gradleup.nmcp.aggregation", version.ref = "nmcp" }

View File

@@ -1,6 +1,6 @@
kotlin {
sourceSets {
androidUnitTest {
androidHostTest {
dependencies {
implementation compose.uiTest
}

View File

@@ -1,34 +1,18 @@
apply plugin: 'com.getkeepsafe.dexcount'
android {
compileSdkVersion libs.versions.android.props.compileSdk.get().toInteger()
buildToolsVersion libs.versions.android.props.buildTools.get()
defaultConfig {
minSdkVersion libs.versions.android.props.minSdk.get().toInteger()
compileSdkVersion libs.versions.android.props.compileSdk.get().toInteger()
targetSdkVersion libs.versions.android.props.compileSdk.get().toInteger()
versionCode "${android_code_version}".toInteger()
versionName "$version"
namespace "${project.group}.${project.name}"
}
buildTypes {
release {
minifyEnabled false
}
debug {
debuggable true
ext.configureAndroidTarget = { target ->
target.compileSdk = libs.versions.android.props.compileSdk.get().toInteger()
target.buildToolsVersion = libs.versions.android.props.buildTools.get()
target.minSdk = libs.versions.android.props.minSdk.get().toInteger()
target.namespace = "${project.group}.${project.name}"
target.packaging {
resources {
excludes.add 'META-INF/kotlinx-serialization-runtime.kotlin_module'
excludes.add 'META-INF/kotlinx-serialization-cbor.kotlin_module'
excludes.add 'META-INF/kotlinx-serialization-properties.kotlin_module'
}
}
packagingOptions {
exclude 'META-INF/kotlinx-serialization-runtime.kotlin_module'
exclude 'META-INF/kotlinx-serialization-cbor.kotlin_module'
exclude 'META-INF/kotlinx-serialization-properties.kotlin_module'
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
target.compilerOptions.jvmTarget.set(
target.compilerOptions.jvmTarget.get().class.fromTarget("17")
)
}

View File

@@ -1,6 +1,8 @@
project.version = "$version"
project.group = "$group"
apply plugin: 'org.jetbrains.dokka'
kotlin {
sourceSets {
commonMain {

View File

@@ -1,25 +1,31 @@
apply from: "$defaultAndroidSettings"
kotlin {
androidTarget {
publishLibraryVariants(
"release",
"debug",
)
compilations.all {
kotlinOptions {
jvmTarget = "17"
}
}
android {
project.ext.configureAndroidTarget(delegate)
withHostTest {}
withDeviceTest {}
}
sourceSets {
androidUnitTest {
jvmAndAndroidMain {
dependsOn commonMain
kotlin.srcDir("src/jvmMain/kotlin")
resources.srcDir("src/jvmMain/resources")
}
jvmMain {
dependsOn jvmAndAndroidMain
kotlin.setSrcDirs([])
resources.setSrcDirs([])
}
androidHostTest {
dependencies {
implementation kotlin('test-junit')
implementation libs.android.test.junit
implementation libs.android.espresso
}
}
androidInstrumentedTest {
androidDeviceTest {
dependencies {
implementation kotlin('test-junit')
implementation libs.android.test.junit
@@ -27,8 +33,6 @@ kotlin {
}
}
androidMain.dependsOn jvmMain
androidMain.dependsOn jvmAndAndroidMain
}
}
apply from: "$defaultAndroidSettings"

View File

@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.0-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"
@@ -14,7 +14,7 @@ kotlin {
api libs.uuid
}
}
jvmMain {
jvmAndAndroidMain {
dependencies {
api libs.kt.reflect
api project(":micro_utils.coroutines")

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
id "com.google.devtools.ksp"
}

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
id "com.google.devtools.ksp"
}

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"

View File

@@ -53,7 +53,7 @@ class Processor(
val annotation = ksClassDeclaration.getGenerateSealedWorkaroundAnnotation
val subClasses = ksClassDeclaration.resolveSubclasses(
searchIn = resolver.getAllFiles(),
allowNonSealed = annotation ?.includeNonSealedSubTypes ?: false
allowNonSealed = withNoSuchElementWorkaround(null) { annotation ?.includeNonSealedSubTypes } ?: false
).distinct()
val subClassesNames = subClasses.filter {
when (it.classKind) {
@@ -165,15 +165,7 @@ class Processor(
@OptIn(KspExperimental::class)
override fun process(resolver: Resolver): List<KSAnnotated> {
(resolver.getSymbolsWithAnnotation(GenerateSealedWorkaround::class.qualifiedName!!)).filterIsInstance<KSClassDeclaration>().forEach {
val prefix = runCatching {
(it.getGenerateSealedWorkaroundAnnotation) ?.prefix
}.getOrElse {
if (it is NoSuchElementException) {
""
} else {
throw it
}
} ?.takeIf {
val prefix = withNoSuchElementWorkaround(null) { (it.getGenerateSealedWorkaroundAnnotation) ?.prefix } ?.takeIf {
it.isNotEmpty()
} ?: it.buildSubFileName.replaceFirst(it.simpleName.asString(), "")
it.writeFile(prefix = prefix, suffix = "SealedWorkaround") {

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
id "com.google.devtools.ksp"
}

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
id "com.google.devtools.ksp"
}

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"

12
meta/build.gradle Normal file
View File

@@ -0,0 +1,12 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"
kotlin {
sourceSets {
}
}

View File

@@ -0,0 +1,94 @@
package dev.inmo.micro_utils.meta
import kotlinx.serialization.Polymorphic
import kotlinx.serialization.Serializable
/**
* A polymorphic container for storing heterogeneous key-value pairs with type-safe retrieval.
* Each key is bound to a specific type, enabling type-safe access to stored values.
*
* @property map The underlying map storing key-value pairs with polymorphic values.
*/
@Serializable
data class MetaContainer(
@MetaContainerRootMapWarning
val map: Map<Key<*>, @Polymorphic Any>
) {
/**
* A marker interface for type-safe keys in [MetaContainer].
*
* @param T The type of value associated with this key.
*/
interface Key<T : Any>
/**
* Retrieves a value from the container by its key.
*
* @param key The type-safe key to look up.
* @return The value associated with the key, or null if not present.
*/
@Suppress("UNCHECKED_CAST", "OPT_IN_USAGE")
operator fun <T : Any> get(key: Key<T>): T? = map[key] as? T?
/**
* Checks whether a value exists for the given key.
*
* @param key The type-safe key to check.
* @return true if the key exists and has a non-null value, false otherwise.
*/
operator fun <T : Any> contains(key: Key<T>): Boolean = get(key) != null
/**
* Builder for constructing [MetaContainer] instances with a fluent API.
*/
class Builder(
@MetaContainerRootMapWarning
private val map: MutableMap<Key<*>, Any> = mutableMapOf<Key<*>, Any>()
) {
/**
* Puts a value associated with the given key into the builder.
*
* @param k The type-safe key.
* @param v The value to store.
*/
fun <T : Any> put(k: Key<T>, v: T) {
map[k] = v
}
/**
* Retrieves a value from the builder by its key.
*
* @param key The type-safe key to look up.
* @return The value associated with the key, or null if not present.
*/
@Suppress("UNCHECKED_CAST")
operator fun <T : Any> get(key: Key<T>): T? = map[key] as T?
/**
* Checks whether a value exists for the given key in the builder.
*
* @param key The type-safe key to check.
* @return true if the key exists and has a non-null value, false otherwise.
*/
operator fun <T : Any> contains(key: Key<T>): Boolean = get(key) != null
/**
* Builds and returns the immutable [MetaContainer] instance.
*
* @return A new [MetaContainer] with the accumulated key-value pairs.
*/
fun build(): MetaContainer = MetaContainer(map.toMap())
}
companion object {
/**
* An empty [MetaContainer] instance with no entries.
*/
val EMPTY = MetaContainer(emptyMap())
}
}

View File

@@ -0,0 +1,17 @@
package dev.inmo.micro_utils.meta
/**
* Marks the direct use of [MetaContainer.map] as requiring explicit opt-in.
*
* This annotation warns against direct manipulation of the internal map without using
* the type-safe accessors, which could break type safety guarantees.
*/
@RequiresOptIn(
"Do not use this directly without any special reason",
RequiresOptIn.Level.WARNING
)
@Target(
AnnotationTarget.PROPERTY,
)
@Retention(AnnotationRetention.BINARY)
annotation class MetaContainerRootMapWarning

View File

@@ -0,0 +1,13 @@
package dev.inmo.micro_utils.meta
/**
* DSL builder function for creating a [MetaContainer] with a lambda block.
*
* @param block A lambda with receiver ([MetaContainer.Builder]) to configure the container.
* @return A new [MetaContainer] instance built from the DSL block.
*/
fun buildMetaContainer(block: MetaContainer.Builder.() -> Unit): MetaContainer {
val builder = MetaContainer.Builder()
builder.block()
return builder.build()
}

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
alias(libs.plugins.jb.compose)
alias(libs.plugins.kt.jb.compose)
}

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"
@@ -17,7 +17,7 @@ kotlin {
}
}
jvmMain {
jvmAndAndroidMain {
dependencies {
api internalProject("micro_utils.common")
}

View File

@@ -1,12 +1,14 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
project.version = "$version"
project.group = "$group"
apply from: "$defaultAndroidSettings"
kotlin {
jvm {
compilations.main {
@@ -23,12 +25,8 @@ kotlin {
browser()
nodejs()
}
androidTarget {
compilations.all {
kotlinOptions {
jvmTarget = "17"
}
}
android {
project.ext.configureAndroidTarget(delegate)
}
linuxX64()
mingwX64()
@@ -51,6 +49,11 @@ kotlin {
implementation kotlin('test-junit')
}
}
androidMain {
dependencies {
implementation kotlin('test-junit')
}
}
jsMain {
dependencies {
implementation kotlin('test-js')
@@ -61,13 +64,10 @@ kotlin {
mingwX64Main.dependsOn nativeMain
linuxArm64Main.dependsOn nativeMain
androidMain.dependsOn jvmMain
}
}
apply from: "$defaultAndroidSettings"
java {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
}

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
id "com.google.devtools.ksp"
}

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"
@@ -20,4 +20,4 @@ kotlin {
}
}
}
}
}

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"

View File

@@ -1,6 +1,7 @@
rootProject.name='micro_utils'
String[] includes = [
":meta",
":common",
":common:compose",
":transactions",

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
alias(libs.plugins.compose)
}

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"

View File

@@ -1,7 +1,7 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
id "com.android.kotlin.multiplatform.library"
}
apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project"