1 package expo.modules.devlauncher.koin
2 
3 import org.koin.core.Koin
4 import org.koin.core.component.KoinComponent
5 import org.koin.core.component.get
6 import org.koin.core.parameter.ParametersDefinition
7 import org.koin.core.qualifier.Qualifier
8 import org.koin.mp.KoinPlatformTools
9 
10 interface DevLauncherKoinComponent : KoinComponent {
getKoinnull11   override fun getKoin(): Koin = devLauncherKoin()
12 }
13 
14 inline fun <reified T : Any> DevLauncherKoinComponent.optInject(
15   qualifier: Qualifier? = null,
16   mode: LazyThreadSafetyMode = KoinPlatformTools.defaultLazyMode(),
17   noinline parameters: ParametersDefinition? = null
18 ): Lazy<T?> =
19   lazy(mode) {
20     try {
21       get(qualifier, parameters)
22     } catch (e: Exception) {
23       return@lazy null
24     }
25   }
26