Class: LingBuzzPlugin
Defined in: src/plugins/builtin/lingbuzz.ts:115
LingBuzz integration plugin.
Remarks
Fetches linguistics preprints from LingBuzz via RSS feed 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 LingBuzzPlugin();
await manager.loadBuiltinPlugin(plugin);
Extends
Constructors
new LingBuzzPlugin()
new LingBuzzPlugin():
LingBuzzPlugin
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.lingbuzz"='pub.chive.plugin.lingbuzz'
Defined in: src/plugins/builtin/lingbuzz.ts:119
Plugin ID.
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/lingbuzz.ts:139
Plugin manifest.
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:"lingbuzz"
Defined in: src/plugins/builtin/lingbuzz.ts:124
Import source identifier.
Overrides
supportsSearch
readonlysupportsSearch:false
Defined in: src/plugins/builtin/lingbuzz.ts:134
Indicates this plugin does NOT support on-demand search.
Remarks
LingBuzz has no search API, so this plugin requires periodic bulk import via RSS feed and web scraping. Use ImportScheduler to schedule periodic imports.
Methods
buildPdfUrl()
buildPdfUrl(
externalId):null|string
Defined in: src/plugins/builtin/lingbuzz.ts:294
Builds the PDF URL for a LingBuzz paper.
Parameters
externalId
string
LingBuzz paper ID
Returns
null | string
PDF URL
Overrides
buildPreprintUrl()
buildPreprintUrl(
externalId):string
Defined in: src/plugins/builtin/lingbuzz.ts:284
Builds the canonical URL for a LingBuzz paper.
Parameters
externalId
string
LingBuzz paper ID
Returns
string
Full URL to the paper
Overrides
ImportingPlugin.buildPreprintUrl
fetchPaperDetails()
fetchPaperDetails(
paperId):Promise<null|LingBuzzPaper>
Defined in: src/plugins/builtin/lingbuzz.ts:461
Fetches additional metadata for a paper via web scraping.
Parameters
paperId
string
LingBuzz paper ID
Returns
Promise<null | LingBuzzPaper>
Enhanced paper metadata or null if scraping fails
Remarks
This method is rate-limited to be respectful to the server. Only call when additional metadata (abstract, etc.) is needed.
fetchPreprints()
fetchPreprints(
options?):AsyncIterable<ExternalPreprint>
Defined in: src/plugins/builtin/lingbuzz.ts:244
Fetches preprints from LingBuzz RSS feed.
Parameters
options?
Fetch options (limit, cursor)
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
getPaper()
getPaper(
id):Promise<null|LingBuzzPaper>
Defined in: src/plugins/builtin/lingbuzz.ts:645
Gets a cached paper by ID.
Parameters
id
string
Paper ID
Returns
Promise<null | LingBuzzPaper>
Paper metadata or null
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
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/builtin/lingbuzz.ts:187
Initializes the plugin.
Parameters
context
Plugin context with dependencies
Returns
Promise<void>
Overrides
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/lingbuzz.ts:201
Initializes the plugin after base setup.
Returns
Promise<void>
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/lingbuzz.ts:304
Parses external ID from a LingBuzz URL.
Parameters
url
string
LingBuzz URL
Returns
null | string
Paper 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
searchPapers()
searchPapers(
query,limit):Promise<readonlyLingBuzzPaper[]>
Defined in: src/plugins/builtin/lingbuzz.ts:658
Searches papers using the external paper search service.
Parameters
query
string
Search query
limit
number = 20
Maximum number of results
Returns
Promise<readonly LingBuzzPaper[]>
Matching papers
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.
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