Add TypeScript integrations package
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
import type { BaseIntegration } from './classes.baseintegration.js';
|
||||
import type { DiscoveryDescriptor } from './classes.discoverydescriptor.js';
|
||||
|
||||
export class IntegrationRegistry {
|
||||
private readonly integrations = new Map<string, BaseIntegration>();
|
||||
|
||||
public register(integrationArg: BaseIntegration): void {
|
||||
if (this.integrations.has(integrationArg.domain)) {
|
||||
throw new Error(`Integration already registered: ${integrationArg.domain}`);
|
||||
}
|
||||
this.integrations.set(integrationArg.domain, integrationArg);
|
||||
}
|
||||
|
||||
public get(domainArg: string): BaseIntegration | undefined {
|
||||
return this.integrations.get(domainArg);
|
||||
}
|
||||
|
||||
public list(): BaseIntegration[] {
|
||||
return [...this.integrations.values()];
|
||||
}
|
||||
|
||||
public getDiscoveryDescriptors(): DiscoveryDescriptor[] {
|
||||
return this.list().map((integrationArg) => integrationArg.discoveryDescriptor);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user