registry.ts 665 B

123456789101112131415161718192021222324252627
  1. import type { DataSource } from "./types.js";
  2. const collectors = new Map<string, (config?: Record<string, any>) => DataSource>();
  3. export function registerCollector(
  4. name: string,
  5. factory: (config?: Record<string, any>) => DataSource
  6. ): void {
  7. collectors.set(name, factory);
  8. }
  9. export function getCollector(
  10. name: string,
  11. config?: Record<string, any>
  12. ): DataSource {
  13. const factory = collectors.get(name);
  14. if (!factory) {
  15. throw new Error(
  16. `Unknown collector: ${name}. Available: ${[...collectors.keys()].join(", ")}`
  17. );
  18. }
  19. return factory(config);
  20. }
  21. export function listCollectorNames(): string[] {
  22. return [...collectors.keys()];
  23. }