Skip to main content

Interface: IChivePlugin

Defined in: src/types/interfaces/plugin.interface.ts:385

Base plugin interface.

Remarks​

All Chive plugins must implement this interface.

Since​

0.1.0

Extended by​

Properties​

id​

readonly id: string

Defined in: src/types/interfaces/plugin.interface.ts:392

Unique plugin identifier.

Remarks​

Must match manifest.id.


manifest​

readonly manifest: IPluginManifest

Defined in: src/types/interfaces/plugin.interface.ts:397

Plugin manifest.

Methods​

getState()​

getState(): PluginState

Defined in: src/types/interfaces/plugin.interface.ts:467

Gets current plugin state.

Returns​

PluginState

Current lifecycle state

Example​

getState(): PluginState {
return this.state;
}

initialize()​

initialize(context): Promise<void>

Defined in: src/types/interfaces/plugin.interface.ts:427

Initializes the plugin.

Parameters​

context​

IPluginContext

Plugin context with injected dependencies

Returns​

Promise<void>

Promise resolving when initialization complete

Remarks​

Called once when plugin is loaded. Use this to:

  • Subscribe to event hooks
  • Initialize plugin state
  • Validate configuration

If initialization fails, throw an error to prevent plugin from loading.

Example​

async initialize(context: IPluginContext): Promise<void> {
this.logger = context.logger;
this.cache = context.cache;

context.eventBus.on('eprint.indexed', this.handleIndexed.bind(this));

this.logger.info('Plugin initialized');
}

shutdown()​

shutdown(): Promise<void>

Defined in: src/types/interfaces/plugin.interface.ts:451

Shuts down the plugin.

Returns​

Promise<void>

Promise resolving when shutdown complete

Remarks​

Called when Chive is shutting down or plugin is being unloaded. Use this to:

  • Unsubscribe from event hooks
  • Close connections
  • Save state

Example​

async shutdown(): Promise<void> {
this.logger.info('Plugin shutting down');
await this.saveState();
}