Function: plugin()
Define a plugin
Since
v0.27.0
Call Signature
ts
export function plugin<
Context extends ExtendContext = DefaultGunshiParams['extensions'], // for plugin dependency extensions
Id extends string = string, // for plugin id
Deps extends ReadonlyArray<PluginDependency | string> = [], // for plugin dependencies
Extension extends {} = {}, // for plugin extension type
ResolvedDepExtensions extends GunshiParams = DependencyParams<Deps, Context>,
PluginExt extends PluginExtension<Extension, DefaultGunshiParams> = PluginExtension<
Extension,
ResolvedDepExtensions
>,
MergedExtensions extends GunshiParams = MergedPluginParams<
Id,
Deps,
Context,
Awaited<ReturnType<PluginExt>>
>
>(options: {
id: Id
name?: string
dependencies?: Deps
setup?: (
ctx: Readonly<
PluginContext<MergedPluginParams<Id, Deps, Context, Awaited<ReturnType<PluginExt>>>>
>
) => Awaitable<void>
extension: PluginExt
onExtension?: OnPluginExtension<MergedExtensions>
}): PluginWithExtension<Awaited<ReturnType<PluginExt>>>Define a plugin with extension compatibility and typed dependency extensions
Since
v0.27.0
Type Parameters
| Name | Description |
|---|---|
Context extends ExtendContext = DefaultGunshiParams['extensions'] | A type extending ExtendContext to specify the shape of plugin dependency extensions. |
Id extends string = string | A string type to specify the plugin ID. |
Deps extends ReadonlyArray<PluginDependency | string> = [] | A readonly array of PluginDependency or string to specify the plugin dependencies. |
Extension extends {} = {} | A type to specify the shape of the plugin extension object. |
ResolvedDepExtensions extends GunshiParams = DependencyParams<Deps, Context> | - |
PluginExt extends PluginExtension<Extension, DefaultGunshiParams> = PluginExtension<Extension, ResolvedDepExtensions> | - |
MergedExtensions extends GunshiParams = MergedPluginParams<Id, Deps, Context, Awaited<ReturnType<PluginExt>>> | - |
Parameters
| Name | Type | Description |
|---|---|---|
options | { id: Id; name?: string; dependencies?: Deps; setup?: (ctx: Readonly<PluginContext<MergedPluginParams<Id, Deps, Context, Awaited<ReturnType<PluginExt>>>>>) => Awaitable<void>; extension: PluginExt; onExtension?: OnPluginExtension<MergedExtensions> } | plugin options |
options.id | Id | |
options.name? | string | optional |
options.dependencies? | Deps | optional |
options.setup? | (ctx: Readonly<PluginContext<MergedPluginParams<Id, Deps, Context, Awaited<ReturnType<PluginExt>>>>>) => Awaitable<void> | optional |
options.extension | PluginExt | |
options.onExtension? | OnPluginExtension<MergedExtensions> | optional |
Returns
PluginWithExtension<Awaited<ReturnType<PluginExt>>> — A defined plugin with extension
Call Signature
ts
export function plugin<
Context extends ExtendContext = DefaultGunshiParams['extensions'], // for plugin dependency extensions
Id extends string = string, // for plugin id
Deps extends ReadonlyArray<PluginDependency | string> = [], // for plugin dependencies
Extension extends Record<string, unknown> = {}, // for plugin extension type
ResolvedDepExtensions extends GunshiParams = DependencyParams<Deps, Context>,
PluginExt extends PluginExtension<Extension, DefaultGunshiParams> = PluginExtension<
Extension,
ResolvedDepExtensions
>,
MergedExtensions extends GunshiParams = MergedPluginParams<
Id,
Deps,
Context,
Awaited<ReturnType<PluginExt>>
>
>(options: {
id: Id
name?: string
dependencies?: Deps
setup?: (
ctx: Readonly<
PluginContext<MergedPluginParams<Id, Deps, Context, Awaited<ReturnType<PluginExt>>>>
>
) => Awaitable<void>
onExtension?: OnPluginExtension<MergedExtensions>
}): PluginWithoutExtension<DefaultGunshiParams['extensions']>Define a plugin without extension and typed dependency extensions
Since
v0.27.0
Type Parameters
| Name | Description |
|---|---|
Context extends ExtendContext = DefaultGunshiParams['extensions'] | A type extending ExtendContext to specify the shape of plugin dependency extensions. |
Id extends string = string | A string type to specify the plugin ID. |
Deps extends ReadonlyArray<PluginDependency | string> = [] | A readonly array of PluginDependency or string to specify the plugin dependencies. |
Extension extends Record<string, unknown> = {} | A type to specify the shape of the plugin extension object. |
ResolvedDepExtensions extends GunshiParams = DependencyParams<Deps, Context> | - |
PluginExt extends PluginExtension<Extension, DefaultGunshiParams> = PluginExtension<Extension, ResolvedDepExtensions> | - |
MergedExtensions extends GunshiParams = MergedPluginParams<Id, Deps, Context, Awaited<ReturnType<PluginExt>>> | - |
Parameters
| Name | Type | Description |
|---|---|---|
options | { id: Id; name?: string; dependencies?: Deps; setup?: (ctx: Readonly<PluginContext<MergedPluginParams<Id, Deps, Context, Awaited<ReturnType<PluginExt>>>>>) => Awaitable<void>; onExtension?: OnPluginExtension<MergedExtensions> } | plugin options without extension |
options.id | Id | |
options.name? | string | optional |
options.dependencies? | Deps | optional |
options.setup? | (ctx: Readonly<PluginContext<MergedPluginParams<Id, Deps, Context, Awaited<ReturnType<PluginExt>>>>>) => Awaitable<void> | optional |
options.onExtension? | OnPluginExtension<MergedExtensions> | optional |
Returns
PluginWithoutExtension<DefaultGunshiParams['extensions']> — A defined plugin without extension
