convokit
Version:
A flexible TypeScript framework for ingesting, processing, and exporting chat/conversation data for LLM training and analysis.
44 lines • 1.32 kB
JavaScript
/**
* Registry for all available ConvoKit providers.
*/
export class ProviderRegistry {
static registry = new Map();
/**
* Registers a provider with a unique ID.
* @param id Unique provider identifier.
* @param ctor Provider constructor.
* @param info Provider metadata.
*/
static register(id, ctor, info) {
if (ProviderRegistry.registry.has(id)) {
throw new Error(`Provider with id "${id}" is already registered.`);
}
ProviderRegistry.registry.set(id, { id, ctor, info });
}
/**
* Retrieves a registered provider entry by ID.
*/
static get(id) {
return ProviderRegistry.registry.get(id);
}
/**
* Lists all registered provider entries.
*/
static list() {
return Array.from(ProviderRegistry.registry.values());
}
/**
* Finds the registered ID for a given provider constructor.
* @param ctor The provider constructor to find the ID for.
* @returns The ID if found, otherwise undefined.
*/
static findIdByConstructor(ctor) {
for (const [id, entry] of this.registry.entries()) {
if (entry.ctor === ctor) {
return id;
}
}
return undefined;
}
}
//# sourceMappingURL=ProviderRegistry.js.map