Class: ArxivPlugin
Defined in: src/plugins/builtin/arxiv.ts:133
arXiv integration plugin.
Remarks
Fetches preprints from arXiv using OAI-PMH protocol and imports them into the Chive AppView cache. Users can claim preprints they authored.
Extends ImportingPlugin for standardized import/claiming workflow.
Example
const plugin = new ArxivPlugin();
await manager.loadBuiltinPlugin(plugin);
// Fetch recent linguistics papers
const result = await plugin.runImportCycle({
categories: ['cs.CL'], // Computational Linguistics
fromDate: '2024-01-01',
});
Extends
Implements
Constructors
new ArxivPlugin()
new ArxivPlugin():
ArxivPlugin
Returns
Inherited from
Properties
cache
protectedcache:ICacheProvider
Defined in: src/plugins/builtin/base-plugin.ts:88
Cache provider (available after initialization).
Inherited from
context
protectedcontext:IPluginContext
Defined in: src/plugins/builtin/base-plugin.ts:78
Plugin context (available after initialization).
Inherited from
id
readonlyid:"pub.chive.plugin.arxiv"='pub.chive.plugin.arxiv'
Defined in: src/plugins/builtin/arxiv.ts:137
Plugin ID.
Implementation of
Overrides
importService
protectedimportService:IImportService
Defined in: src/plugins/core/importing-plugin.ts:83
Import service instance.
Remarks
Set during initialization via dependency injection from context.
Inherited from
logger
protectedlogger:ILogger
Defined in: src/plugins/builtin/base-plugin.ts:83
Logger instance (available after initialization).
Inherited from
manifest
readonlymanifest:IPluginManifest
Defined in: src/plugins/builtin/arxiv.ts:156
Plugin manifest.
Implementation of
Overrides
metrics
protectedmetrics:IMetrics
Defined in: src/plugins/builtin/base-plugin.ts:93
Metrics provider (available after initialization).
Inherited from
rateLimitDelayMs
protectedrateLimitDelayMs:number=1000
Defined in: src/plugins/core/importing-plugin.ts:97
Minimum delay between requests in milliseconds.
Remarks
Override in subclass to set source-specific rate limit. Default: 1000ms (1 request per second)
Inherited from
ImportingPlugin.rateLimitDelayMs
source
readonlysource:"arxiv"
Defined in: src/plugins/builtin/arxiv.ts:142
Import source identifier.
Overrides
supportsSearch
readonlysupportsSearch:true
Defined in: src/plugins/builtin/arxiv.ts:151
Indicates this plugin supports on-demand search.
Remarks
When true, the plugin can be used for real-time search queries against the external arXiv API rather than bulk import.
Implementation of
SearchablePlugin.supportsSearch
Methods
buildPdfUrl()
buildPdfUrl(
externalId):null|string
Defined in: src/plugins/builtin/arxiv.ts:481
Builds the PDF URL for an arXiv paper.
Parameters
externalId
string
arXiv ID
Returns
null | string
PDF URL
Overrides
buildPreprintUrl()
buildPreprintUrl(
externalId):string
Defined in: src/plugins/builtin/arxiv.ts:471
Builds the canonical URL for an arXiv paper.
Parameters
externalId
string
arXiv ID
Returns
string
Full URL to the abstract page
Overrides
ImportingPlugin.buildPreprintUrl
fetchPaperDetails()
fetchPaperDetails(
arxivId):Promise<null|ArxivPaper>
Defined in: src/plugins/builtin/arxiv.ts:511
Fetches paper details from arXiv API.
Parameters
arxivId
string
arXiv identifier
Returns
Promise<null | ArxivPaper>
Paper metadata or null
fetchPreprints()
fetchPreprints(
options?):AsyncIterable<ExternalPreprint>
Defined in: src/plugins/builtin/arxiv.ts:225
Fetches preprints from arXiv via OAI-PMH.
Parameters
options?
Fetch options (limit, cursor is resumptionToken)
Returns
AsyncIterable<ExternalPreprint>
Async iterable of external preprints
Overrides
ImportingPlugin.fetchPreprints
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');
Inherited from
getExistingImport()
getExistingImport(
externalId):Promise<null|ImportedPreprint>
Defined in: src/plugins/core/importing-plugin.ts:167
Gets an existing import by external ID.
Parameters
externalId
string
Source-specific identifier
Returns
Promise<null | ImportedPreprint>
Imported preprint or null if not found
Inherited from
ImportingPlugin.getExistingImport
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');
Inherited from
ImportingPlugin.getRequiredConfig
getState()
getState():
PluginState
Defined in: src/plugins/builtin/base-plugin.ts:162
Gets current plugin state.
Returns
Current lifecycle state
Implementation of
Inherited from
importPreprint()
importPreprint(
preprint):Promise<ImportedPreprint>
Defined in: src/plugins/core/importing-plugin.ts:185
Imports a preprint into the AppView cache.
Parameters
preprint
External preprint data
Returns
Promise<ImportedPreprint>
Created or existing imported preprint
Remarks
Performs deduplication and emits import.created event on success.
Throws
Error if import service unavailable
Inherited from
ImportingPlugin.importPreprint
initialize()
initialize(
context):Promise<void>
Defined in: src/plugins/core/importing-plugin.ts:107
Initializes the importing plugin.
Parameters
context
Plugin context with injected dependencies
Returns
Promise<void>
Remarks
Retrieves import service from context and calls onInitialize().
Implementation of
Inherited from
isImported()
isImported(
externalId):Promise<boolean>
Defined in: src/plugins/core/importing-plugin.ts:153
Checks if a preprint has already been imported.
Parameters
externalId
string
Source-specific identifier
Returns
Promise<boolean>
True if already imported
Inherited from
onInitialize()
protectedonInitialize():Promise<void>
Defined in: src/plugins/builtin/arxiv.ts:207
Initializes the plugin.
Returns
Promise<void>
Remarks
Sets up rate limiting for arXiv API requests. No startup bulk import since this plugin uses on-demand search via the search() method.
Overrides
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();
}
Inherited from
parseExternalId()
parseExternalId(
url):null|string
Defined in: src/plugins/builtin/arxiv.ts:491
Parses external ID from an arXiv URL.
Parameters
url
string
arXiv URL
Returns
null | string
arXiv ID or null
Overrides
ImportingPlugin.parseExternalId
rateLimit()
protectedrateLimit():Promise<void>
Defined in: src/plugins/core/importing-plugin.ts:342
Enforces rate limiting for external requests.
Returns
Promise<void>
Remarks
Call this before making external API/HTTP requests. Delays execution if needed to respect rate limit.
Inherited from
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
Inherited from
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
Inherited from
runImportCycle()
runImportCycle(
options?):Promise<ImportCycleResult>
Defined in: src/plugins/core/importing-plugin.ts:285
Runs a full import cycle.
Parameters
options?
Fetch options
Returns
Promise<ImportCycleResult>
Import statistics
Remarks
Fetches preprints and imports new ones, updating existing ones. Respects rate limits and handles errors gracefully.
Inherited from
ImportingPlugin.runImportCycle
search()
search(
query):Promise<readonlyExternalPreprint[]>
Defined in: src/plugins/builtin/arxiv.ts:584
Searches arXiv for preprints matching the query.
Parameters
query
Search parameters (author, title, externalId, doi)
Returns
Promise<readonly ExternalPreprint[]>
Matching preprints from arXiv
Throws
If the search request fails
Remarks
Uses the arXiv Atom API for search queries. Supports searching by:
- Author name (au: prefix)
- Title text (ti: prefix)
- arXiv ID (id_list parameter for exact match)
- Categories (cat: prefix)
Rate limiting: Enforces 3 second delay between requests as required by arXiv.
Example
const results = await arxivPlugin.search({
author: 'Vaswani',
title: 'Attention Is All You Need',
limit: 5,
});
Implementation of
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
Inherited from
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
Inherited from
updateImport()
updateImport(
id,preprint):Promise<ImportedPreprint>
Defined in: src/plugins/core/importing-plugin.ts:243
Updates an existing import with new data.
Parameters
id
number
Internal import ID
preprint
Partial<ExternalPreprint>
Updated preprint data
Returns
Promise<ImportedPreprint>
Updated imported preprint