UNPKG

pandora-hub

Version:

pandora.js messenge hub

57 lines 1.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const const_1 = require("../const"); class ConfigManager { constructor() { this.config = {}; this.callbackStore = new Map(); } static async create(providerManager) { const configManager = new ConfigManager(); await providerManager.publish(configManager, { name: const_1.PANDORA_HUB_CONFIG_MANAGER }); return configManager; } getConfig(topic) { if (topic) { return this.config[topic]; } return this.config; } subscribe(topic, cb) { this.callbackStore.set(topic, cb); } unsubscribe(topic, cb) { this.callbackStore.delete(topic); } async publish(topic, config) { this.config[topic] = config; const cb = this.callbackStore.get(topic); if (cb) { await cb(config); } } getAllTopics(prefix) { const topics = Object.keys(this.config); const ret = []; for (const topic of topics) { if (!prefix || topic.startsWith(prefix)) { ret.push(topic); } } return ret; } getAllSubscribedTopics(prefix) { const topics = this.callbackStore.keys(); const ret = []; for (const topic of topics) { if (!prefix || topic.startsWith(prefix)) { ret.push(topic); } } return ret; } } exports.ConfigManager = ConfigManager; //# sourceMappingURL=ConfigManager.js.map