Interface: ImportingPlugin
Defined in: src/types/interfaces/plugin.interface.ts:1400
Plugin that supports bulk import from external sources.
Remarks
For sources without search APIs (LingBuzz, Semantics Archive), plugins must implement bulk fetching. The ImportScheduler periodically triggers imports for these plugins.
Since
0.1.0
Extends
Properties
id
readonlyid:string
Defined in: src/types/interfaces/plugin.interface.ts:378
Unique plugin identifier.
Remarks
Must match manifest.id.
Inherited from
manifest
readonlymanifest:IPluginManifest
Defined in: src/types/interfaces/plugin.interface.ts:383
Plugin manifest.
Inherited from
source
readonlysource:string
Defined in: src/types/interfaces/plugin.interface.ts:1409
Source identifier for this plugin.
supportsSearch
readonlysupportsSearch:false
Defined in: src/types/interfaces/plugin.interface.ts:1404
Discriminator to identify importing plugins.
Methods
fetchPreprints()
fetchPreprints(
options?):AsyncIterable<ExternalPreprint>
Defined in: src/types/interfaces/plugin.interface.ts:1421
Fetches preprints from the external source.
Parameters
options?
Fetch options (pagination, filters)
Returns
AsyncIterable<ExternalPreprint>
Yields
External preprints from the source
Remarks
Use async generator for memory-efficient bulk fetching. Implementations must respect rate limits.
getState()
getState():
PluginState
Defined in: src/types/interfaces/plugin.interface.ts:453
Gets current plugin state.
Returns
Current lifecycle state
Example
getState(): PluginState {
return this.state;
}
Inherited from
initialize()
initialize(
context):Promise<void>
Defined in: src/types/interfaces/plugin.interface.ts:413
Initializes the plugin.
Parameters
context
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('preprint.indexed', this.handleIndexed.bind(this));
this.logger.info('Plugin initialized');
}
Inherited from
shutdown()
shutdown():
Promise<void>
Defined in: src/types/interfaces/plugin.interface.ts:437
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();
}