UNPKG

@synet/signal

Version:

Experimental Fractal Architecture pattern for Synet development

43 lines (42 loc) 1.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SignalPluginRegistry = void 0; /** * Type-safe plugin registry for Signal system */ class SignalPluginRegistry { constructor() { this.plugins = new Map(); // Private constructor for singleton pattern } static getInstance() { if (!SignalPluginRegistry.instance) { SignalPluginRegistry.instance = new SignalPluginRegistry(); } return SignalPluginRegistry.instance; } register(plugin) { if (this.plugins.has(plugin.id)) { console.warn(`Plugin '${plugin.id}' is already registered. Skipping registration.`); return; } if (plugin.init) { plugin.init(); } this.plugins.set(plugin.id, plugin); } unregister(pluginId) { const plugin = this.plugins.get(pluginId); if (plugin?.cleanup) { plugin.cleanup(); } this.plugins.delete(pluginId); } getPlugin(pluginId) { return this.plugins.get(pluginId); } hasPlugin(pluginId) { return this.plugins.has(pluginId); } } exports.SignalPluginRegistry = SignalPluginRegistry;