Context provided to plugins during initialization.

Allows plugins to register services and access the application container.

class DatabasePlugin implements Plugin {
async initialize(context: PluginContext): Promise<void> {
const config = context.getConfig<DatabaseConfig>();
const database = new Database(config);

context.container.register('database', () => database, {
lifetime: ServiceLifetime.SINGLETON
});
}
}
interface PluginContext {
    container: Container;
    logger: Logger;
    getConfig<T = Record<string, unknown>>(): T;
    getService<T>(name: string): undefined | T;
}

Methods

  • Gets configuration for this plugin.

    Type Parameters

    • T = Record<string, unknown>

      The configuration type

    Returns T

    The plugin configuration

    const config = context.getConfig<DatabaseConfig>();
    console.log(config.host, config.port);
  • Gets a service from the container if it exists.

    Type Parameters

    • T

      The service type

    Parameters

    • name: string

      The service name

    Returns undefined | T

    The service instance if it exists, undefined otherwise

    const metrics = context.getService<Metrics>('metrics');
    if (metrics) {
    metrics.increment('database.connections');
    }

Properties

container: Container

The dependency injection container. Plugins can register services here.

logger: Logger

Logger instance for the plugin.