function TwitchCollector(interval = 2e4) { const _hooks = { update: [] }; let _data = null; async function _getData() { const response = await fetch('/data'); const data = await response.json(); _update(data); } function _update(data) { _data = data; for (const hook of _hooks.update) { hook(data); } } function registerHooks(kind, callback) { if (kind in _hooks) { _hooks.kind.push(callback); } } function data() { return _data; } async function start() { await _getData(); setInterval(_getData, interval); } return { data, registerHooks, start }; }