Class: abstract BasePlugin
Defined in: src/plugins/builtin/base-plugin.ts:61
Base class for builtin plugins.
Remarks
Provides common functionality for Chive's builtin plugins:
- Lifecycle state management
- Logging
- Caching
- Metrics
- Event subscriptions
Subclasses should override:
onInitialize()- Custom initialization logiconShutdown()- Custom shutdown logic (optional)
Example
export class MyPlugin extends BasePlugin {
readonly id = 'pub.chive.plugin.my';
readonly manifest: IPluginManifest = {
id: 'pub.chive.plugin.my',
name: 'My Plugin',
// ...
};
protected async onInitialize(): Promise<void> {
this.context.eventBus.on('preprint.indexed', this.handleIndexed.bind(this));
}
private async handleIndexed(data: { uri: string }): Promise<void> {
this.logger.info('Preprint indexed', { uri: data.uri });
}
}
Extended by
ImportingPluginGitHubIntegrationPluginOrcidLinkingPluginDoiRegistrationPluginSemanticScholarPluginOpenAlexPlugin
Implements
Constructors
new BasePlugin()
new BasePlugin():
BasePlugin
Returns
Properties
cache
protectedcache:ICacheProvider
Defined in: src/plugins/builtin/base-plugin.ts:88
Cache provider (available after initialization).
context
protectedcontext:IPluginContext
Defined in: src/plugins/builtin/base-plugin.ts:78
Plugin context (available after initialization).
id
abstractreadonlyid:string
Defined in: src/plugins/builtin/base-plugin.ts:68
Unique plugin identifier.
Remarks
Must match manifest.id.
Implementation of
logger
protectedlogger:ILogger
Defined in: src/plugins/builtin/base-plugin.ts:83
Logger instance (available after initialization).
manifest
abstractreadonlymanifest:IPluginManifest
Defined in: src/plugins/builtin/base-plugin.ts:73
Plugin manifest.
Implementation of
metrics
protectedmetrics:IMetrics
Defined in: src/plugins/builtin/base-plugin.ts:93
Metrics provider (available after initialization).
Methods
getConfig()
protectedgetConfig<T>(key):undefined|T
Defined in: src/plugins/builtin/base-plugin.ts:226
Gets a configuration value with type safety.
Type Parameters
• T
Parameters
key
string
Configuration key
Returns
undefined | T
Configuration value or undefined
Example
const apiKey = this.getConfig<string>('apiKey');
getRequiredConfig()
protectedgetRequiredConfig<T>(key):T
Defined in: src/plugins/builtin/base-plugin.ts:242
Gets a required configuration value.
Type Parameters
• T
Parameters
key
string
Configuration key
Returns
T
Configuration value
Throws
Error if key not found
Example
const apiKey = this.getRequiredConfig<string>('apiKey');
getState()
getState():
PluginState
Defined in: src/plugins/builtin/base-plugin.ts:162
Gets current plugin state.
Returns
Current lifecycle state
Implementation of
initialize()
initialize(
context):Promise<void>
Defined in: src/plugins/builtin/base-plugin.ts:111
Initializes the plugin.
Parameters
context
Plugin context with injected dependencies
Returns
Promise<void>
Remarks
Sets up context and calls onInitialize(). Subclasses should
override onInitialize() instead of this method.
Implementation of
onInitialize()
abstractprotectedonInitialize():Promise<void>
Defined in: src/plugins/builtin/base-plugin.ts:190
Override in subclass for initialization logic.
Returns
Promise<void>
Remarks
Called during initialize() after context is set up.
Use this to:
- Subscribe to event hooks
- Initialize plugin state
- Validate configuration
Example
protected async onInitialize(): Promise<void> {
// Subscribe to events
this.context.eventBus.on('preprint.indexed', this.handleIndexed.bind(this));
// Load cached state
const state = await this.cache.get('state');
if (state) {
this.restoreState(state);
}
}
onShutdown()
protectedonShutdown():Promise<void>
Defined in: src/plugins/builtin/base-plugin.ts:211
Override in subclass for shutdown logic.
Returns
Promise<void>
Remarks
Called during shutdown(). Use this to:
- Save state
- Close connections
- Clean up resources
Default implementation does nothing.
Example
protected async onShutdown(): Promise<void> {
await this.saveState();
this.connection?.close();
}
recordCounter()
protectedrecordCounter(name,labels?,value?):void
Defined in: src/plugins/builtin/base-plugin.ts:257
Records a counter metric.
Parameters
name
string
Metric name
labels?
Record<string, string>
Optional labels
value?
number
Optional increment value (default 1)
Returns
void
recordGauge()
protectedrecordGauge(name,value,labels?):void
Defined in: src/plugins/builtin/base-plugin.ts:268
Records a gauge metric.
Parameters
name
string
Metric name
value
number
Gauge value
labels?
Record<string, string>
Optional labels
Returns
void
shutdown()
shutdown():
Promise<void>
Defined in: src/plugins/builtin/base-plugin.ts:142
Shuts down the plugin.
Returns
Promise<void>
Remarks
Calls onShutdown() and updates state. Subclasses should
override onShutdown() instead of this method.
Implementation of
startTimer()
protectedstartTimer(name,labels?): () =>void
Defined in: src/plugins/builtin/base-plugin.ts:286
Starts a timer for histogram metrics.
Parameters
name
string
Metric name
labels?
Record<string, string>
Optional labels
Returns
Function
Function to call when operation completes
Returns
void
Example
const endTimer = this.startTimer('api_request');
await this.fetchData();
endTimer(); // Records duration