mirror of
https://github.com/InsanusMokrassar/MicroUtils.git
synced 2024-11-22 16:23:50 +00:00
create koin module
This commit is contained in:
parent
1d8ded8fd3
commit
1e1f7df86d
@ -2,6 +2,9 @@
|
|||||||
|
|
||||||
## 0.12.13
|
## 0.12.13
|
||||||
|
|
||||||
|
* `Koin`:
|
||||||
|
* Module inited :)
|
||||||
|
|
||||||
## 0.12.12
|
## 0.12.12
|
||||||
|
|
||||||
* `Common`:
|
* `Common`:
|
||||||
|
@ -15,6 +15,8 @@ ktor = "2.1.1"
|
|||||||
|
|
||||||
gh-release = "2.4.1"
|
gh-release = "2.4.1"
|
||||||
|
|
||||||
|
koin = "3.2.0"
|
||||||
|
|
||||||
android-gradle = "7.2.2"
|
android-gradle = "7.2.2"
|
||||||
dexcount = "3.1.0"
|
dexcount = "3.1.0"
|
||||||
|
|
||||||
@ -31,6 +33,7 @@ android-props-buildTools = "32.0.0"
|
|||||||
[libraries]
|
[libraries]
|
||||||
|
|
||||||
kt-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kt" }
|
kt-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kt" }
|
||||||
|
kt-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect", version.ref = "kt" }
|
||||||
|
|
||||||
kt-serialization = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kt-serialization" }
|
kt-serialization = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kt-serialization" }
|
||||||
kt-serialization-cbor = { module = "org.jetbrains.kotlinx:kotlinx-serialization-cbor", version.ref = "kt-serialization" }
|
kt-serialization-cbor = { module = "org.jetbrains.kotlinx:kotlinx-serialization-cbor", version.ref = "kt-serialization" }
|
||||||
@ -59,6 +62,7 @@ ktor-server-content-negotiation = { module = "io.ktor:ktor-server-content-negoti
|
|||||||
|
|
||||||
klock = { module = "com.soywiz.korlibs.klock:klock", version.ref = "klock" }
|
klock = { module = "com.soywiz.korlibs.klock:klock", version.ref = "klock" }
|
||||||
uuid = { module = "com.benasher44:uuid", version.ref = "uuid" }
|
uuid = { module = "com.benasher44:uuid", version.ref = "uuid" }
|
||||||
|
koin = { module = "io.insert-koin:koin-core", version.ref = "koin" }
|
||||||
|
|
||||||
|
|
||||||
jb-exposed = { module = "org.jetbrains.exposed:exposed-core", version.ref = "jb-exposed" }
|
jb-exposed = { module = "org.jetbrains.exposed:exposed-core", version.ref = "jb-exposed" }
|
||||||
|
23
koin/build.gradle
Normal file
23
koin/build.gradle
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
plugins {
|
||||||
|
id "org.jetbrains.kotlin.multiplatform"
|
||||||
|
id "org.jetbrains.kotlin.plugin.serialization"
|
||||||
|
id "com.android.library"
|
||||||
|
}
|
||||||
|
|
||||||
|
apply from: "$mppProjectWithSerializationPresetPath"
|
||||||
|
|
||||||
|
kotlin {
|
||||||
|
sourceSets {
|
||||||
|
commonMain {
|
||||||
|
dependencies {
|
||||||
|
api libs.koin
|
||||||
|
api libs.uuid
|
||||||
|
}
|
||||||
|
}
|
||||||
|
jvmMain {
|
||||||
|
dependencies {
|
||||||
|
api libs.kt.reflect
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
15
koin/src/commonMain/kotlin/FactoryWithRandomQualifier.kt
Normal file
15
koin/src/commonMain/kotlin/FactoryWithRandomQualifier.kt
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
package dev.inmo.micro_utils.koin
|
||||||
|
|
||||||
|
import com.benasher44.uuid.uuid4
|
||||||
|
import org.koin.core.definition.Definition
|
||||||
|
import org.koin.core.instance.InstanceFactory
|
||||||
|
import org.koin.core.module.Module
|
||||||
|
import org.koin.core.qualifier.StringQualifier
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Will be useful in case you need to declare some singles with one type several types, but need to separate them and do
|
||||||
|
* not care about how :)
|
||||||
|
*/
|
||||||
|
inline fun <reified T : Any> Module.factoryWithRandomQualifier(
|
||||||
|
noinline definition: Definition<T>
|
||||||
|
) = factory(uuid4().toString(), definition)
|
12
koin/src/commonMain/kotlin/FactoryWithStringQualifier.kt
Normal file
12
koin/src/commonMain/kotlin/FactoryWithStringQualifier.kt
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
package dev.inmo.micro_utils.koin
|
||||||
|
|
||||||
|
import org.koin.core.definition.Definition
|
||||||
|
import org.koin.core.module.Module
|
||||||
|
import org.koin.core.qualifier.StringQualifier
|
||||||
|
|
||||||
|
inline fun <reified T : Any> Module.factory(
|
||||||
|
qualifier: String,
|
||||||
|
noinline definition: Definition<T>
|
||||||
|
) = factory(StringQualifier(qualifier), definition)
|
||||||
|
|
||||||
|
|
8
koin/src/commonMain/kotlin/GetAllDistinct.kt
Normal file
8
koin/src/commonMain/kotlin/GetAllDistinct.kt
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
package dev.inmo.micro_utils.koin
|
||||||
|
|
||||||
|
import org.koin.core.Koin
|
||||||
|
import org.koin.core.scope.Scope
|
||||||
|
|
||||||
|
inline fun <reified T : Any> Scope.getAllDistinct() = getAll<T>().distinct()
|
||||||
|
inline fun <reified T : Any> Koin.getAllDistinct() = getAll<T>().distinct()
|
||||||
|
|
8
koin/src/commonMain/kotlin/GetAny.kt
Normal file
8
koin/src/commonMain/kotlin/GetAny.kt
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
package dev.inmo.micro_utils.koin
|
||||||
|
|
||||||
|
import org.koin.core.Koin
|
||||||
|
import org.koin.core.scope.Scope
|
||||||
|
|
||||||
|
inline fun <reified T : Any> Scope.getAny() = getAll<T>().first()
|
||||||
|
inline fun <reified T : Any> Koin.getAny() = getAll<T>().first()
|
||||||
|
|
16
koin/src/commonMain/kotlin/SingleWithRandomQualifier.kt
Normal file
16
koin/src/commonMain/kotlin/SingleWithRandomQualifier.kt
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
package dev.inmo.micro_utils.koin
|
||||||
|
|
||||||
|
import com.benasher44.uuid.uuid4
|
||||||
|
import org.koin.core.definition.Definition
|
||||||
|
import org.koin.core.instance.InstanceFactory
|
||||||
|
import org.koin.core.module.Module
|
||||||
|
import org.koin.core.qualifier.StringQualifier
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Will be useful in case you need to declare some singles with one type several types, but need to separate them and do
|
||||||
|
* not care about how :)
|
||||||
|
*/
|
||||||
|
inline fun <reified T : Any> Module.singleWithRandomQualifier(
|
||||||
|
createdAtStart: Boolean = false,
|
||||||
|
noinline definition: Definition<T>
|
||||||
|
) = single(uuid4().toString(), createdAtStart, definition)
|
12
koin/src/commonMain/kotlin/SingleWithStringQualifier.kt
Normal file
12
koin/src/commonMain/kotlin/SingleWithStringQualifier.kt
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
package dev.inmo.micro_utils.koin
|
||||||
|
|
||||||
|
import org.koin.core.definition.Definition
|
||||||
|
import org.koin.core.module.Module
|
||||||
|
import org.koin.core.qualifier.StringQualifier
|
||||||
|
|
||||||
|
inline fun <reified T : Any> Module.single(
|
||||||
|
qualifier: String,
|
||||||
|
createdAtStart: Boolean = false,
|
||||||
|
noinline definition: Definition<T>
|
||||||
|
) = single(StringQualifier(qualifier), createdAtStart, definition)
|
||||||
|
|
27
koin/src/jvmMain/kotlin/FactoryWithBinds.kt
Normal file
27
koin/src/jvmMain/kotlin/FactoryWithBinds.kt
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
package dev.inmo.micro_utils.koin
|
||||||
|
|
||||||
|
import org.koin.core.definition.Definition
|
||||||
|
import org.koin.core.instance.InstanceFactory
|
||||||
|
import org.koin.core.module.Module
|
||||||
|
import org.koin.core.qualifier.Qualifier
|
||||||
|
import org.koin.dsl.binds
|
||||||
|
import kotlin.reflect.KClass
|
||||||
|
import kotlin.reflect.full.allSuperclasses
|
||||||
|
|
||||||
|
|
||||||
|
inline fun <reified T : Any> Module.factoryWithBinds(
|
||||||
|
qualifier: Qualifier? = null,
|
||||||
|
bindFilter: (KClass<*>) -> Boolean = { true },
|
||||||
|
noinline definition: Definition<T>
|
||||||
|
): Pair<Module, InstanceFactory<*>> {
|
||||||
|
return factory(qualifier, definition) binds (T::class.allSuperclasses.filter(bindFilter).toTypedArray())
|
||||||
|
}
|
||||||
|
|
||||||
|
inline fun <reified T : Any> Module.factoryWithBinds(
|
||||||
|
qualifier: String,
|
||||||
|
bindFilter: (KClass<*>) -> Boolean = { true },
|
||||||
|
noinline definition: Definition<T>
|
||||||
|
): Pair<Module, InstanceFactory<*>> {
|
||||||
|
return factory(qualifier, definition) binds (T::class.allSuperclasses.filter(bindFilter).toTypedArray())
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,16 @@
|
|||||||
|
package dev.inmo.micro_utils.koin
|
||||||
|
|
||||||
|
import com.benasher44.uuid.uuid4
|
||||||
|
import org.koin.core.definition.Definition
|
||||||
|
import org.koin.core.instance.InstanceFactory
|
||||||
|
import org.koin.core.module.Module
|
||||||
|
import org.koin.dsl.binds
|
||||||
|
import kotlin.reflect.KClass
|
||||||
|
import kotlin.reflect.full.allSuperclasses
|
||||||
|
|
||||||
|
inline fun <reified T : Any> Module.factoryWithRandomQualifierAndBinds(
|
||||||
|
bindFilter: (KClass<*>) -> Boolean = { true },
|
||||||
|
noinline definition: Definition<T>
|
||||||
|
): Pair<Module, InstanceFactory<*>> {
|
||||||
|
return factoryWithBinds(uuid4().toString(), bindFilter, definition)
|
||||||
|
}
|
30
koin/src/jvmMain/kotlin/SignleWithBinds.kt
Normal file
30
koin/src/jvmMain/kotlin/SignleWithBinds.kt
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
package dev.inmo.micro_utils.koin
|
||||||
|
|
||||||
|
import org.koin.core.definition.Definition
|
||||||
|
import org.koin.core.instance.InstanceFactory
|
||||||
|
import org.koin.core.module.Module
|
||||||
|
import org.koin.core.qualifier.Qualifier
|
||||||
|
import org.koin.dsl.binds
|
||||||
|
import kotlin.reflect.KClass
|
||||||
|
import kotlin.reflect.full.allSuperclasses
|
||||||
|
|
||||||
|
|
||||||
|
inline fun <reified T : Any> Module.singleWithBinds(
|
||||||
|
qualifier: Qualifier? = null,
|
||||||
|
createdAtStart: Boolean = false,
|
||||||
|
bindFilter: (KClass<*>) -> Boolean = { true },
|
||||||
|
noinline definition: Definition<T>
|
||||||
|
): Pair<Module, InstanceFactory<*>> {
|
||||||
|
return single(qualifier, createdAtStart, definition) binds (T::class.allSuperclasses.filter(bindFilter).toTypedArray())
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
inline fun <reified T : Any> Module.singleWithBinds(
|
||||||
|
qualifier: String,
|
||||||
|
createdAtStart: Boolean = false,
|
||||||
|
bindFilter: (KClass<*>) -> Boolean = { true },
|
||||||
|
noinline definition: Definition<T>
|
||||||
|
): Pair<Module, InstanceFactory<*>> {
|
||||||
|
return single(qualifier, createdAtStart, definition) binds (T::class.allSuperclasses.filter(bindFilter).toTypedArray())
|
||||||
|
}
|
||||||
|
|
15
koin/src/jvmMain/kotlin/SingleWithBindsAndRandomQualifier.kt
Normal file
15
koin/src/jvmMain/kotlin/SingleWithBindsAndRandomQualifier.kt
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
package dev.inmo.micro_utils.koin
|
||||||
|
|
||||||
|
import com.benasher44.uuid.uuid4
|
||||||
|
import org.koin.core.definition.Definition
|
||||||
|
import org.koin.core.instance.InstanceFactory
|
||||||
|
import org.koin.core.module.Module
|
||||||
|
import kotlin.reflect.KClass
|
||||||
|
|
||||||
|
inline fun <reified T : Any> Module.singleWithRandomQualifierAndBinds(
|
||||||
|
createdAtStart: Boolean = false,
|
||||||
|
bindFilter: (KClass<*>) -> Boolean = { true },
|
||||||
|
noinline definition: Definition<T>
|
||||||
|
): Pair<Module, InstanceFactory<*>> {
|
||||||
|
return singleWithBinds(uuid4().toString(), createdAtStart, bindFilter, definition)
|
||||||
|
}
|
1
koin/src/main/AndroidManifest.xml
Normal file
1
koin/src/main/AndroidManifest.xml
Normal file
@ -0,0 +1 @@
|
|||||||
|
<manifest package="dev.inmo.micro_utils.koin"/>
|
@ -5,6 +5,7 @@ String[] includes = [
|
|||||||
":common:compose",
|
":common:compose",
|
||||||
":matrix",
|
":matrix",
|
||||||
":crypto",
|
":crypto",
|
||||||
|
":koin",
|
||||||
":selector:common",
|
":selector:common",
|
||||||
":pagination:common",
|
":pagination:common",
|
||||||
":pagination:exposed",
|
":pagination:exposed",
|
||||||
|
Loading…
Reference in New Issue
Block a user