import type { Connector, Parser } from "./types.js"; import type { ConnectorConfig } from "./config.js"; /** Code-backed parsers (referenced by name from YAML `extractors..parser`). */ const parsers = new Map(); export function registerParser(p: Parser): void { if (parsers.has(p.name)) throw new Error(`parser ${p.name} already registered`); parsers.set(p.name, p); } export function getParser(name: string): Parser { const p = parsers.get(name); if (!p) throw new Error(`unknown parser ${name}`); return p; } export function listParsers(): Parser[] { return [...parsers.values()]; } /** Code-backed connector implementations (referenced from YAML `implementation:`), built from the config. */ type Factory = (cfg: ConnectorConfig) => Connector; const implementations = new Map(); export function registerImplementation(name: string, f: Factory): void { implementations.set(name, f); } export function getImplementation(name: string): Factory | undefined { return implementations.get(name); } export function listImplementations(): string[] { return [...implementations.keys()]; }