hhariri
val DataTransformationPlugin = createApplicationPlugin(name = "DataTransformationPlugin", ::Config) {
// ...
}
It turns out that if the library mode is enabled, it becomes a bit more complicated to read because of the type:
public val DataTransformationPlugin: ApplicationPlugin<Application, Config, PluginInstance> = createApplicationPlugin(name = "DataTransformationPlugin", ::Config) {
}
where Application and PluginInstance are fixed.
We’re thinking about several options on how we can solve this:
First option
Drop obsolete generic parameters from ApplicationPlugin
and keep it as ApplicationPlugin<Config>
We need to introduce _NAME_ApplicationPlugin<Application, Config, PluginInstance>
replacement for existing plugins, so it will be a breaking change.
public val DataTransformationPlugin: ApplicationPlugin<Config> = createApplicationPlugin(name = "DataTransformationPlugin", ::Config) { // ...
}
Second Option
Introduce typealias _NAME_<Config>
and keep ApplicationPlugin
as it is.
public val DataTransformationPlugin: NAME<Config> = createApplicationPlugin(name = "DataTransformationPlugin", ::Config) {
// ...
}
Third Option
Keep ApplicationPlugin<Application, Config, Instance>
as it is.
The problem with introducing NAME is precisely what we could call something that actually already has a name, i.e. ApplicationPlugin. Anything along the lines of “Default”, “Simple” or similar incorrectly could lead to the wrong assumptions.
What are your thoughts on this?Big Chungus
02/02/2022, 7:57 AMsimon.vergauwen
02/02/2022, 10:20 AMhhariri