'use strict'; const assert = require('node:assert'); const { createSubscribers } = require('../lib/notify-fanout.js'); let passed = 0; function check(name, fn) { try { fn(); console.log(' ok -', name); passed++; } catch (e) { console.error(' FAIL -', name, e.message); process.exitCode = 1; } } const subs = createSubscribers(); const wcA = { id: 'A', send: function (ch, payload) { this._last = [ch, payload]; } }; const wcB = { id: 'B', send: function (ch, payload) { this._last = [ch, payload]; } }; subs.addClip(wcA); subs.addFav(wcB); check('notifyClip only sends to clip subs', () => { subs.notifyClip('clips:added', { id: 1 }); assert.deepStrictEqual(wcA._last, ['clips:added', { id: 1 }]); assert.strictEqual(wcB._last, undefined); }); check('notifyFav only sends to fav subs', () => { subs.notifyFav('favorites:changed'); assert.strictEqual(wcA._last[0], 'clips:added', 'A untouched'); assert.strictEqual(wcB._last[0], 'favorites:changed'); });