PluginManager @kubb/core ​
The PluginManager
instance contains the building blocks for executing plugins(in a specific order). This contains a queue system, the FileManager
, resolvePath
that will be used to retrieve a path needed for plugin x and also resolveName
to retrieve a name that can be used for a function/file/type.
TIP
Here we also create the core plugin with the link(see this.
) to the PluginManager
.
pluginManager.plugins ​
An array of plugins with the lifecycle hooks included. This also adds the core plugin. Behind the scene, we also convert the API prop from a function to an object.
- Type:
KubbPluginWithLifeCycle
pluginManager.fileManager ​
Instance of the FileManager.
- Type:
FileManager
pluginManager.events ​
The PluginManager
triggers some events when a plugin will be executed(execute
), when a plugin has been executed (executed
) and when something goes wrong (error
).
type Events = {
execute: [executer: Executer]
executed: [executer: Executer]
error: [error: Error]
}
- Type:
Events
pluginManager.queue ​
Instance of the queue.
- Type:
Queue
pluginManager.config ​
The config that has been set in kubb.config.ts
.
- Type:
KubbConfig
pluginManager.executed ​
Array of all executed plugins.
- Type:
Array<Executer>
pluginManager.logger ​
Instance of the logger.
- Type:
Logger
pluginManager.resolvePath ​
Every plugin can set resolvePath
and when you then call pluginManager.resolvePath
it will try to find the first resolvePath(based on the plugins array) and use that return value as the path.
It is also possible to set pluginKey
as an option. If that's the case it will try to find the plugin with that pluginKey
and use the return value of that specific plugin as the path.
- Type:
(params: ResolvePathParams): KubbFile.OptionalPath
pluginManager.resolveName ​
Every plugin can set resolveName
and when you then call pluginManager.resolveName
it will try to find the first resolveName(based on the plugins array) and use that return value as the name(function, file or type).
It is also possible to set pluginKey
as an option. If that's the case it will try to find the plugin with that pluginKey
and use the return value of that specific plugin as the name.
- Type:
(params: ResolveNameParams): string
pluginManager.on ​
Instead of calling pluginManager.events.on
you can use pluginManager.on
. This one also has better types.
- Type:
(eventName: keyof Events, handler: (...eventArg: any) => void
pluginManager.hookForPlugin ​
Run a specific hookName for plugin x.
pluginManager.hookForPluginSync ​
Run a specific hookName for plugin x.
pluginManager.hookFirst ​
First non-null result stops and will return its value.
pluginManager.hookFirstSync ​
First non-null result stops and will return its value.
pluginManager.hookParallel ​
Run all plugins in parallel(order will be based on this.plugin
and if pre
or post
is set).
pluginManager.hookReduceArg0 ​
Chain all plugins, reduce
can be passed through to handle every returned value. The return value of the first plugin will be used as the first parameter for the plugin after that.
pluginManager.hookParallel ​
Run all plugins in sequential(order will be based on this.plugin
and if pre
or post
is set).