import type ExtensionPointRegistry from "../../api/registry/ExtensionPointRegistry.ts"; /** * Simple implementation of an {@link ExtensionPointRegistry} using an in-memory Set. */ export default class InMemoryExtensionPointRegistry implements ExtensionPointRegistry { private readonly extensionPoints: Set = new Set(); /** * @inheritDoc * * @throws *Error* if the specified Extension Point has already been registered */ public async register(extensionPoint: string): Promise { if (await this.isRegistered(extensionPoint)) { throw new Error(`Extension Point ${extensionPoint} already registered`); } this.extensionPoints.add(extensionPoint); } public getAll(): Promise> { return Promise.resolve(this.extensionPoints); } public isRegistered(extensionPoint: string): Promise { return Promise.resolve(this.extensionPoints.has(extensionPoint)); } }