dependabit / plugins/registry/src / PluginLoader
Class: PluginLoader
Defined in: packages/plugins/registry/src/loader.ts:48
Validates and optionally initialises plugin instances before they are registered.
Remarks
PluginLoader is the recommended way to bring plugins into the registry because it validates metadata and calls initialize atomically.
Use When
Loading plugins from dynamic imports, configuration-driven plugin lists, or test fixtures where you want to confirm a plugin satisfies the contract before registering it.
Avoid When
You control the plugin class directly and prefer to call new and initialize manually — the overhead of validatePlugin is minimal but the extra abstraction may be unnecessary.
Pitfalls
loadcallsinitializeifautoInitializeistrue. Ifinitializethrows, the plugin is not registered — but if the caller has already calledPluginRegistry.register, the registry will hold a broken plugin instance. Always callloadbeforeregister.instantiatecreates a new instance and callsload; the returned instance is fully initialised. Callingnew PluginClass()directly and registering without going through the loader bypasses metadata validation.
Constructors
Constructor
new PluginLoader(config?): PluginLoader;Defined in: packages/plugins/registry/src/loader.ts:51
Parameters
| Parameter | Type |
|---|---|
config | PluginLoaderConfig |
Returns
PluginLoader
Methods
instantiate()
instantiate<T, A>(PluginClass, ...args): Promise<T>;Defined in: packages/plugins/registry/src/loader.ts:109
Instantiate a plugin from a class
Type Parameters
| Type Parameter |
|---|
T extends Plugin |
A extends unknown[] |
Parameters
| Parameter | Type |
|---|---|
PluginClass | (...args) => T |
...args | A |
Returns
Promise<T>
load()
load(plugin): Promise<Plugin>;Defined in: packages/plugins/registry/src/loader.ts:89
Load and validate a plugin
Parameters
| Parameter | Type |
|---|---|
plugin | unknown |
Returns
Promise<Plugin>
loadMany()
loadMany(plugins): Promise<Plugin[]>;Defined in: packages/plugins/registry/src/loader.ts:102
Load multiple plugins
Parameters
| Parameter | Type |
|---|---|
plugins | unknown[] |
Returns
Promise<Plugin[]>
validateMetadata()
validateMetadata(metadata): {
accessMethod: string;
apiVersion?: string;
description?: string;
name: string;
supportedTypes?: string[];
version: string;
};Defined in: packages/plugins/registry/src/loader.ts:61
Validate plugin metadata
Parameters
| Parameter | Type |
|---|---|
metadata | unknown |
Returns
{
accessMethod: string;
apiVersion?: string;
description?: string;
name: string;
supportedTypes?: string[];
version: string;
}| Name | Type | Defined in |
|---|---|---|
accessMethod | string | packages/plugins/registry/src/registry.ts:41 |
apiVersion? | string | packages/plugins/registry/src/registry.ts:43 |
description? | string | packages/plugins/registry/src/registry.ts:40 |
name | string | packages/plugins/registry/src/registry.ts:38 |
supportedTypes? | string[] | packages/plugins/registry/src/registry.ts:42 |
version | string | packages/plugins/registry/src/registry.ts:39 |
validatePlugin()
validatePlugin(plugin): Plugin;Defined in: packages/plugins/registry/src/loader.ts:68
Validate plugin structure
Parameters
| Parameter | Type |
|---|---|
plugin | unknown |