Skip to content

gunshi / default / plugin

Function: plugin()

Define a plugin

Param

plugin options

Since

v0.27.0

Call Signature

ts
function plugin<Context, Id, Deps, Extension, ResolvedDepExtensions, PluginExt, MergedExtensions>(options): PluginWithExtension<Awaited<ReturnType<PluginExt>>>;

Define a plugin with extension compatibility and typed dependency extensions

Type Parameters

Type ParameterDefault typeDescription
Context extends ExtendContextobjectA type extending ExtendContext to specify the shape of plugin dependency extensions.
Id extends stringstringA string type to specify the plugin ID.
Deps extends readonly (string | PluginDependency)[][]A readonly array of PluginDependency or string to specify the plugin dependencies.
Extension extends objectobjectA type to specify the shape of the plugin extension object.
ResolvedDepExtensions extends GunshiParams<{ args: Args; extensions: { }; }>GunshiParams<{ args: Args; extensions: InferDependencyExtensions<Deps, Context>; }>-
PluginExt extends PluginExtension<Extension, DefaultGunshiParams>PluginExtension<Extension, ResolvedDepExtensions>-
MergedExtensions extends GunshiParams<{ args: Args; extensions: { }; }>GunshiParams<{ args: Args; extensions: MergeExtension<Id, InferDependencyExtensions<Deps, Context>, Awaited<ReturnType<PluginExt>>>; }>-

Parameters

ParameterTypeDescription
options{ dependencies?: Deps; extension: PluginExt; id: Id; name?: string; onExtension?: OnPluginExtension<MergedExtensions>; setup?: (ctx) => Awaitable<void>; }plugin options
options.dependencies?Deps-
options.extensionPluginExt-
options.idId-
options.name?string-
options.onExtension?OnPluginExtension<MergedExtensions>-
options.setup?(ctx) => Awaitable<void>-

Returns

PluginWithExtension<Awaited<ReturnType<PluginExt>>>

A defined plugin with extension

Since

v0.27.0

Call Signature

ts
function plugin<Context, Id, Deps, Extension, ResolvedDepExtensions, PluginExt, MergedExtensions>(options): PluginWithoutExtension<{
}>;

Define a plugin without extension and typed dependency extensions

Type Parameters

Type ParameterDefault typeDescription
Context extends ExtendContextobjectA type extending ExtendContext to specify the shape of plugin dependency extensions.
Id extends stringstringA string type to specify the plugin ID.
Deps extends readonly (string | PluginDependency)[][]A readonly array of PluginDependency or string to specify the plugin dependencies.
Extension extends Record<string, unknown>objectA type to specify the shape of the plugin extension object.
ResolvedDepExtensions extends GunshiParams<{ args: Args; extensions: { }; }>GunshiParams<{ args: Args; extensions: InferDependencyExtensions<Deps, Context>; }>-
PluginExt extends PluginExtension<Extension, DefaultGunshiParams>PluginExtension<Extension, ResolvedDepExtensions>-
MergedExtensions extends GunshiParams<{ args: Args; extensions: { }; }>GunshiParams<{ args: Args; extensions: MergeExtension<Id, InferDependencyExtensions<Deps, Context>, Awaited<ReturnType<PluginExt>>>; }>-

Parameters

ParameterTypeDescription
options{ dependencies?: Deps; id: Id; name?: string; onExtension?: OnPluginExtension<MergedExtensions>; setup?: (ctx) => Awaitable<void>; }plugin options without extension
options.dependencies?Deps-
options.idId-
options.name?string-
options.onExtension?OnPluginExtension<MergedExtensions>-
options.setup?(ctx) => Awaitable<void>-

Returns

PluginWithoutExtension<{ }>

A defined plugin without extension

Since

v0.27.0

Released under the MIT License.