'use strict'; const { getClient, getPrefix, publish } = require('./client'); const { getConfig, patchConfig, on: onConfigChange } = require('../config'); const poller = require('../poller'); function subscribe() { const client = getClient(); if (!client) return; const prefix = getPrefix(); const setTopic = `${prefix}/$config/set`; client.subscribe(setTopic); client.on('message', (topic, buf) => { if (topic !== setTopic) return; let patch; try { patch = JSON.parse(buf.toString()); } catch { console.warn('[config-bridge] Invalid JSON on $config/set'); return; } patchConfig(patch); console.log('[config-bridge] Config updated:', JSON.stringify(patch)); }); // Republish current config on connect publishConfig(); // Republish + reload poller when config changes onConfigChange('change', () => { publishConfig(); poller.reload(); }); } function publishConfig() { publish('$config', getConfig()); } module.exports = { subscribe, publishConfig };