All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.StartPlugin.kt Maven / Gradle / Ivy

package dev.inmo.micro_utils.startup.plugin

import kotlinx.serialization.Serializable
import kotlinx.serialization.json.JsonObject
import org.koin.core.Koin
import org.koin.core.module.Module

/**
 * Default plugin for start of your app
 */
@Serializable(StartPluginSerializer::class)
interface StartPlugin {
    /**
     * This method will be called first to configure [Koin] [Module] related to this plugin. You may use
     * [org.koin.core.scope.Scope.get] in your koin definitions like [Module.single] to retrieve
     * [kotlinx.coroutines.CoroutineScope], [kotlinx.serialization.json.Json] or [dev.inmo.micro_utils.startup.launcher.Config]
     */
    fun Module.setupDI(config: JsonObject) {}

    /**
     * This method will be called after all other [StartPlugin] will [setupDI]
     *
     * It is allowed to lock end of this method in case you require to prevent application to end its run (for example,
     * you are starting some web server)
     *
     * @param koin Will contains everything you will register in [setupDI] (as well as other [StartPlugin]s) and
     * [kotlinx.coroutines.CoroutineScope], [kotlinx.serialization.json.Json] and [dev.inmo.micro_utils.startup.launcher.Config]
     * by their types
     */
    suspend fun startPlugin(koin: Koin) {}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy