mirror of
https://github.com/InsanusMokrassar/MicroUtils.git
synced 2025-09-05 08:09:33 +00:00
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,4 +1,5 @@
|
||||
.idea
|
||||
.vscode
|
||||
.kotlin
|
||||
out/*
|
||||
*.iml
|
||||
|
14
CHANGELOG.md
14
CHANGELOG.md
@@ -1,5 +1,19 @@
|
||||
# Changelog
|
||||
|
||||
## 0.26.0
|
||||
|
||||
**WARNING!!! SINCE THIS VERSION IF YOU WANT TO USE SOME OF KSP MODULES, SET `ksp.useKSP2=false` IN YOUR `gradle.properties`** (see [gh issue 2491](https://github.com/google/ksp/issues/2491))
|
||||
|
||||
* `Versions`:
|
||||
* `Kotlin`: `2.1.21` -> `2.2.0`
|
||||
* `Serialization`: `1.8.1` -> `1.9.0`
|
||||
* `KSLog`: `1.4.2` -> `1.5.0`
|
||||
* `Ktor`: `3.1.3` -> `3.2.1`
|
||||
* `Koin`: `4.0.4` -> `4.1.0`
|
||||
* `Okio`: `3.12.0` -> `3.15.0`
|
||||
* `KSP`: `2.1.20-1.0.31` -> `2.2.0-2.0.2`
|
||||
* `kotlin-poet`: `1.18.1` -> `2.2.0`
|
||||
|
||||
## 0.25.8
|
||||
|
||||
* `Pagination`:
|
||||
|
@@ -28,7 +28,7 @@ if ((project.hasProperty('SONATYPE_USER') || System.getenv('SONATYPE_USER') != n
|
||||
centralPortal {
|
||||
username = project.hasProperty('SONATYPE_USER') ? project.property('SONATYPE_USER') : System.getenv('SONATYPE_USER')
|
||||
password = project.hasProperty('SONATYPE_PASSWORD') ? project.property('SONATYPE_PASSWORD') : System.getenv('SONATYPE_PASSWORD')
|
||||
verificationTimeout = Duration.ofHours(4)
|
||||
validationTimeout = Duration.ofHours(4)
|
||||
publishingType = System.getenv('PUBLISHING_TYPE') != "" ? System.getenv('PUBLISHING_TYPE') : "USER_MANAGED"
|
||||
}
|
||||
|
||||
|
@@ -8,6 +8,9 @@ android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=2g
|
||||
|
||||
# https://github.com/google/ksp/issues/2491
|
||||
ksp.useKSP2=false
|
||||
|
||||
# JS NPM
|
||||
|
||||
crypto_js_version=4.1.1
|
||||
@@ -15,5 +18,5 @@ crypto_js_version=4.1.1
|
||||
# Project data
|
||||
|
||||
group=dev.inmo
|
||||
version=0.25.8
|
||||
android_code_version=298
|
||||
version=0.26.0
|
||||
android_code_version=299
|
||||
|
@@ -1,12 +1,12 @@
|
||||
[versions]
|
||||
|
||||
kt = "2.1.21"
|
||||
kt-serialization = "1.8.1"
|
||||
kt = "2.2.0"
|
||||
kt-serialization = "1.9.0"
|
||||
kt-coroutines = "1.10.2"
|
||||
|
||||
kotlinx-browser = "0.3"
|
||||
|
||||
kslog = "1.4.2"
|
||||
kslog = "1.5.0"
|
||||
|
||||
jb-compose = "1.8.1"
|
||||
jb-exposed = "0.61.0"
|
||||
@@ -17,19 +17,19 @@ sqlite = "3.50.1.0"
|
||||
korlibs = "5.4.0"
|
||||
uuid = "0.8.4"
|
||||
|
||||
ktor = "3.1.3"
|
||||
ktor = "3.2.1"
|
||||
|
||||
gh-release = "2.5.2"
|
||||
|
||||
koin = "4.0.4"
|
||||
koin = "4.1.0"
|
||||
|
||||
okio = "3.12.0"
|
||||
okio = "3.15.0"
|
||||
|
||||
ksp = "2.1.20-1.0.31"
|
||||
kotlin-poet = "1.18.1"
|
||||
ksp = "2.2.0-2.0.2"
|
||||
kotlin-poet = "2.2.0"
|
||||
|
||||
versions = "0.51.0"
|
||||
nmcp = "0.1.5"
|
||||
nmcp = "1.0.1"
|
||||
|
||||
android-gradle = "8.9.+"
|
||||
dexcount = "4.0.0"
|
||||
|
@@ -10,6 +10,7 @@ repositories {
|
||||
|
||||
dependencies {
|
||||
api project(":micro_utils.koin")
|
||||
api project(":micro_utils.ksp.generator")
|
||||
api libs.kotlin.poet
|
||||
api libs.ksp
|
||||
}
|
||||
|
@@ -26,6 +26,7 @@ import com.squareup.kotlinpoet.asTypeName
|
||||
import com.squareup.kotlinpoet.ksp.toClassName
|
||||
import com.squareup.kotlinpoet.ksp.toTypeName
|
||||
import com.squareup.kotlinpoet.ksp.writeTo
|
||||
import dev.inmo.micro_ksp.generator.safeClassName
|
||||
import dev.inmo.micro_utils.koin.annotations.GenerateGenericKoinDefinition
|
||||
import dev.inmo.micro_utils.koin.annotations.GenerateKoinDefinition
|
||||
import org.koin.core.Koin
|
||||
@@ -237,15 +238,7 @@ class Processor(
|
||||
""".trimIndent()
|
||||
)
|
||||
ksFile.getAnnotationsByType(GenerateKoinDefinition::class).forEach {
|
||||
val type = runCatching {
|
||||
it.type.asTypeName()
|
||||
}.getOrElse { e ->
|
||||
if (e is KSTypeNotPresentException) {
|
||||
e.ksType.toClassName()
|
||||
} else {
|
||||
throw e
|
||||
}
|
||||
}
|
||||
val type = safeClassName { it.type }
|
||||
val targetType = runCatching {
|
||||
type.parameterizedBy(*(it.typeArgs.takeIf { it.isNotEmpty() } ?.map { it.asTypeName() } ?.toTypedArray() ?: return@runCatching type))
|
||||
}.getOrElse { e ->
|
||||
|
@@ -5,7 +5,6 @@ package dev.inmo.micro_utils.koin.generator.test
|
||||
|
||||
import kotlin.Any
|
||||
import kotlin.Boolean
|
||||
import kotlin.Deprecated
|
||||
import kotlin.String
|
||||
import org.koin.core.Koin
|
||||
import org.koin.core.definition.Definition
|
||||
@@ -30,95 +29,59 @@ public val Koin.sampleInfo: Test<String>
|
||||
/**
|
||||
* @return Definition by key "sampleInfo" with [parameters]
|
||||
*/
|
||||
public inline fun Scope.sampleInfo(noinline parameters: ParametersDefinition): Test<String> =
|
||||
get(named("sampleInfo"), parameters)
|
||||
public inline fun Scope.sampleInfo(noinline parameters: ParametersDefinition): Test<String> = get(named("sampleInfo"), parameters)
|
||||
|
||||
/**
|
||||
* @return Definition by key "sampleInfo" with [parameters]
|
||||
*/
|
||||
public inline fun Koin.sampleInfo(noinline parameters: ParametersDefinition): Test<String> =
|
||||
get(named("sampleInfo"), parameters)
|
||||
public inline fun Koin.sampleInfo(noinline parameters: ParametersDefinition): Test<String> = get(named("sampleInfo"), parameters)
|
||||
|
||||
/**
|
||||
* Will register [definition] with [org.koin.core.module.Module.single] and key "sampleInfo"
|
||||
*/
|
||||
@Deprecated(
|
||||
"This definition is old style and should not be used anymore. Use singleSampleInfo instead",
|
||||
ReplaceWith("singleSampleInfo"),
|
||||
)
|
||||
public fun Module.sampleInfoSingle(createdAtStart: Boolean = false,
|
||||
definition: Definition<Test<String>>): KoinDefinition<Test<String>> =
|
||||
single(named("sampleInfo"), createdAtStart = createdAtStart, definition = definition)
|
||||
|
||||
/**
|
||||
* Will register [definition] with [org.koin.core.module.Module.single] and key "sampleInfo"
|
||||
*/
|
||||
public fun Module.singleSampleInfo(createdAtStart: Boolean = false,
|
||||
definition: Definition<Test<String>>): KoinDefinition<Test<String>> =
|
||||
single(named("sampleInfo"), createdAtStart = createdAtStart, definition = definition)
|
||||
public fun Module.singleSampleInfo(createdAtStart: Boolean = false, definition: Definition<Test<String>>): KoinDefinition<Test<String>> = single(named("sampleInfo"), createdAtStart = createdAtStart, definition = definition)
|
||||
|
||||
/**
|
||||
* Will register [definition] with [org.koin.core.module.Module.factory] and key "sampleInfo"
|
||||
*/
|
||||
@Deprecated(
|
||||
"This definition is old style and should not be used anymore. Use factorySampleInfo instead",
|
||||
ReplaceWith("factorySampleInfo"),
|
||||
)
|
||||
public fun Module.sampleInfoFactory(definition: Definition<Test<String>>):
|
||||
KoinDefinition<Test<String>> = factory(named("sampleInfo"), definition = definition)
|
||||
|
||||
/**
|
||||
* Will register [definition] with [org.koin.core.module.Module.factory] and key "sampleInfo"
|
||||
*/
|
||||
public fun Module.factorySampleInfo(definition: Definition<Test<String>>):
|
||||
KoinDefinition<Test<String>> = factory(named("sampleInfo"), definition = definition)
|
||||
public fun Module.factorySampleInfo(definition: Definition<Test<String>>): KoinDefinition<Test<String>> = factory(named("sampleInfo"), definition = definition)
|
||||
|
||||
/**
|
||||
* @return Definition by key "test" with [parameters]
|
||||
*/
|
||||
public inline fun <reified T : Any> Scope.test(noinline parameters: ParametersDefinition? = null): T
|
||||
= get(named("test"), parameters)
|
||||
public inline fun <reified T : Any> Scope.test(noinline parameters: ParametersDefinition? = null): T = get(named("test"), parameters)
|
||||
|
||||
/**
|
||||
* @return Definition by key "test" with [parameters]
|
||||
*/
|
||||
public inline fun <reified T : Any> Koin.test(noinline parameters: ParametersDefinition? = null): T
|
||||
= get(named("test"), parameters)
|
||||
public inline fun <reified T : Any> Koin.test(noinline parameters: ParametersDefinition? = null): T = get(named("test"), parameters)
|
||||
|
||||
/**
|
||||
* Will register [definition] with [org.koin.core.module.Module.single] and key "test"
|
||||
*/
|
||||
public inline fun <reified T : Any> Module.singleTest(createdAtStart: Boolean = false, noinline
|
||||
definition: Definition<T>): KoinDefinition<T> = single(named("test"), createdAtStart =
|
||||
createdAtStart, definition = definition)
|
||||
public inline fun <reified T : Any> Module.singleTest(createdAtStart: Boolean = false, noinline definition: Definition<T>): KoinDefinition<T> = single(named("test"), createdAtStart = createdAtStart, definition = definition)
|
||||
|
||||
/**
|
||||
* Will register [definition] with [org.koin.core.module.Module.factory] and key "test"
|
||||
*/
|
||||
public inline fun <reified T : Any> Module.factoryTest(noinline definition: Definition<T>):
|
||||
KoinDefinition<T> = factory(named("test"), definition = definition)
|
||||
public inline fun <reified T : Any> Module.factoryTest(noinline definition: Definition<T>): KoinDefinition<T> = factory(named("test"), definition = definition)
|
||||
|
||||
/**
|
||||
* @return Definition by key "testNullable" with [parameters]
|
||||
*/
|
||||
public inline fun <reified T : Any> Scope.testNullable(noinline parameters: ParametersDefinition? =
|
||||
null): T? = getOrNull(named("testNullable"), parameters)
|
||||
public inline fun <reified T : Any> Scope.testNullable(noinline parameters: ParametersDefinition? = null): T? = getOrNull(named("testNullable"), parameters)
|
||||
|
||||
/**
|
||||
* @return Definition by key "testNullable" with [parameters]
|
||||
*/
|
||||
public inline fun <reified T : Any> Koin.testNullable(noinline parameters: ParametersDefinition? =
|
||||
null): T? = getOrNull(named("testNullable"), parameters)
|
||||
public inline fun <reified T : Any> Koin.testNullable(noinline parameters: ParametersDefinition? = null): T? = getOrNull(named("testNullable"), parameters)
|
||||
|
||||
/**
|
||||
* Will register [definition] with [org.koin.core.module.Module.single] and key "testNullable"
|
||||
*/
|
||||
public inline fun <reified T : Any> Module.singleTestNullable(createdAtStart: Boolean = false,
|
||||
noinline definition: Definition<T>): KoinDefinition<T> = single(named("testNullable"),
|
||||
createdAtStart = createdAtStart, definition = definition)
|
||||
public inline fun <reified T : Any> Module.singleTestNullable(createdAtStart: Boolean = false, noinline definition: Definition<T>): KoinDefinition<T> = single(named("testNullable"), createdAtStart = createdAtStart, definition = definition)
|
||||
|
||||
/**
|
||||
* Will register [definition] with [org.koin.core.module.Module.factory] and key "testNullable"
|
||||
*/
|
||||
public inline fun <reified T : Any> Module.factoryTestNullable(noinline definition: Definition<T>):
|
||||
KoinDefinition<T> = factory(named("testNullable"), definition = definition)
|
||||
public inline fun <reified T : Any> Module.factoryTestNullable(noinline definition: Definition<T>): KoinDefinition<T> = factory(named("testNullable"), definition = definition)
|
||||
|
23
ksp/generator/src/main/kotlin/KClassTypeName.kt
Normal file
23
ksp/generator/src/main/kotlin/KClassTypeName.kt
Normal file
@@ -0,0 +1,23 @@
|
||||
package dev.inmo.micro_ksp.generator
|
||||
|
||||
import com.google.devtools.ksp.KSTypeNotPresentException
|
||||
import com.google.devtools.ksp.KspExperimental
|
||||
import com.squareup.kotlinpoet.ClassName
|
||||
import com.squareup.kotlinpoet.asTypeName
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
@Suppress("NOTHING_TO_INLINE")
|
||||
@OptIn(KspExperimental::class)
|
||||
inline fun safeClassName(classnameGetter: () -> KClass<*>) = runCatching {
|
||||
classnameGetter().asTypeName()
|
||||
}.getOrElse { e ->
|
||||
if (e is KSTypeNotPresentException) {
|
||||
ClassName(
|
||||
e.ksType.declaration.packageName.asString(),
|
||||
e.ksType.declaration.qualifiedName ?.asString() ?.replaceFirst(e.ksType.declaration.packageName.asString(), "")
|
||||
?: e.ksType.declaration.simpleName.asString()
|
||||
)
|
||||
} else {
|
||||
throw e
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user