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 type
Context extends ExtendContextobject
Id extends stringstring
Deps extends readonly (string | PluginDependency)[][]
Extension extends objectobject
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 type
Context extends ExtendContextobject
Id extends stringstring
Deps extends readonly (string | PluginDependency)[][]
Extension extends Record<string, unknown>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.