Skip to main content

Class: LingBuzzPlugin

Defined in: src/plugins/builtin/lingbuzz.ts:115

LingBuzz integration plugin.

Remarks​

Fetches linguistics eprints from LingBuzz via RSS feed and imports them into the Chive AppView cache. Users can claim eprints 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​

LingBuzzPlugin

Inherited from​

ImportingPlugin.constructor

Properties​

cache​

protected cache: ICacheProvider

Defined in: src/plugins/builtin/base-plugin.ts:88

Cache provider (available after initialization).

Inherited from​

ImportingPlugin.cache


context​

protected context: IPluginContext

Defined in: src/plugins/builtin/base-plugin.ts:78

Plugin context (available after initialization).

Inherited from​

ImportingPlugin.context


id​

readonly id: "pub.chive.plugin.lingbuzz" = 'pub.chive.plugin.lingbuzz'

Defined in: src/plugins/builtin/lingbuzz.ts:119

Plugin ID.

Overrides​

ImportingPlugin.id


importService​

protected importService: IImportService

Defined in: src/plugins/core/importing-plugin.ts:83

Import service instance.

Remarks​

Set during initialization via dependency injection from context.

Inherited from​

ImportingPlugin.importService


logger​

protected logger: ILogger

Defined in: src/plugins/builtin/base-plugin.ts:83

Logger instance (available after initialization).

Inherited from​

ImportingPlugin.logger


manifest​

readonly manifest: IPluginManifest

Defined in: src/plugins/builtin/lingbuzz.ts:139

Plugin manifest.

Overrides​

ImportingPlugin.manifest


metrics​

protected metrics: IMetrics

Defined in: src/plugins/builtin/base-plugin.ts:93

Metrics provider (available after initialization).

Inherited from​

ImportingPlugin.metrics


rateLimitDelayMs​

protected rateLimitDelayMs: 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​

readonly source: "lingbuzz"

Defined in: src/plugins/builtin/lingbuzz.ts:124

Import source identifier.

Overrides​

ImportingPlugin.source


supportsSearch​

readonly supportsSearch: 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​

buildEprintUrl()​

buildEprintUrl(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.buildEprintUrl


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​

ImportingPlugin.buildPdfUrl


fetchEprints()​

fetchEprints(options?): AsyncIterable<ExternalEprint>

Defined in: src/plugins/builtin/lingbuzz.ts:244

Fetches eprints from LingBuzz RSS feed.

Parameters​

options?​

FetchOptions

Fetch options (limit, cursor)

Returns​

AsyncIterable<ExternalEprint>

Async iterable of external eprints

Overrides​

ImportingPlugin.fetchEprints


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.


getConfig()​

protected getConfig<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​

ImportingPlugin.getConfig


getExistingImport()​

getExistingImport(externalId): Promise<null | ImportedEprint>

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 | ImportedEprint>

Imported eprint or null if not found

Inherited from​

ImportingPlugin.getExistingImport


getPaper()​

getPaper(id): Promise<null | LingBuzzPaper>

Defined in: src/plugins/builtin/lingbuzz.ts:653

Gets a cached paper by ID.

Parameters​

id​

string

Paper ID

Returns​

Promise<null | LingBuzzPaper>

Paper metadata or null


getRequiredConfig()​

protected getRequiredConfig<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​

PluginState

Current lifecycle state

Inherited from​

ImportingPlugin.getState


importEprint()​

importEprint(eprint): Promise<ImportedEprint>

Defined in: src/plugins/core/importing-plugin.ts:185

Imports an eprint into the AppView cache.

Parameters​

eprint​

ExternalEprint

External eprint data

Returns​

Promise<ImportedEprint>

Created or existing imported eprint

Remarks​

Performs deduplication and emits import.created event on success.

Throws​

Error if import service unavailable

Inherited from​

ImportingPlugin.importEprint


initialize()​

initialize(context): Promise<void>

Defined in: src/plugins/builtin/lingbuzz.ts:187

Initializes the plugin.

Parameters​

context​

IPluginContext

Plugin context with dependencies

Returns​

Promise<void>

Overrides​

ImportingPlugin.initialize


isImported()​

isImported(externalId): Promise<boolean>

Defined in: src/plugins/core/importing-plugin.ts:153

Checks if an eprint has already been imported.

Parameters​

externalId​

string

Source-specific identifier

Returns​

Promise<boolean>

True if already imported

Inherited from​

ImportingPlugin.isImported


onInitialize()​

protected onInitialize(): Promise<void>

Defined in: src/plugins/builtin/lingbuzz.ts:201

Initializes the plugin after base setup.

Returns​

Promise<void>

Overrides​

ImportingPlugin.onInitialize


onShutdown()​

protected onShutdown(): 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​

ImportingPlugin.onShutdown


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()​

protected rateLimit(): 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​

ImportingPlugin.rateLimit


recordCounter()​

protected recordCounter(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​

ImportingPlugin.recordCounter


recordGauge()​

protected recordGauge(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​

ImportingPlugin.recordGauge


runImportCycle()​

runImportCycle(options?): Promise<ImportCycleResult>

Defined in: src/plugins/core/importing-plugin.ts:285

Runs a full import cycle.

Parameters​

options?​

FetchOptions

Fetch options

Returns​

Promise<ImportCycleResult>

Import statistics

Remarks​

Fetches eprints and imports new ones, updating existing ones. Respects rate limits and handles errors gracefully.

Inherited from​

ImportingPlugin.runImportCycle


searchPapers()​

searchPapers(query, limit): Promise<readonly LingBuzzPaper[]>

Defined in: src/plugins/builtin/lingbuzz.ts:666

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​

ImportingPlugin.shutdown


startTimer()​

protected startTimer(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​

ImportingPlugin.startTimer


updateImport()​

updateImport(id, eprint): Promise<ImportedEprint>

Defined in: src/plugins/core/importing-plugin.ts:243

Updates an existing import with new data.

Parameters​

id​

number

Internal import ID

eprint​

Partial<ExternalEprint>

Updated eprint data

Returns​

Promise<ImportedEprint>

Updated imported eprint

Inherited from​

ImportingPlugin.updateImport