{"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":["/**\n * @public\n */\nexport interface Subscriber<Event> {\n  (event: Event): void\n}\n/**\n * @public\n */\nexport interface PubSub<Message> {\n  publish: (message: Message) => void\n  subscribe: (subscriber: Subscriber<Message>) => () => void\n}\n\n/**\n * @public\n */\nexport default function createPubSub<Message = void>(): PubSub<Message> {\n  const subscribers: {[id: string]: Subscriber<Message>} = Object.create(null)\n  let nextId = 0\n  function subscribe(subscriber: Subscriber<Message>) {\n    const id = nextId++\n    subscribers[id] = subscriber\n    return function unsubscribe() {\n      delete subscribers[id]\n    }\n  }\n\n  function publish(event: Message) {\n    for (const id in subscribers) {\n      subscribers[id](event)\n    }\n  }\n\n  return {\n    publish,\n    subscribe,\n  }\n}\n"],"names":[],"mappings":";AAiBA,SAAwB,eAAgD;AAChE,QAAA,cAA0D,uBAAA,OAAO,IAAI;AAC3E,MAAI,SAAS;AACb,WAAS,UAAU,YAAiC;AAClD,UAAM,KAAK;AACC,WAAA,YAAA,EAAE,IAAI,YACX,WAAuB;AAC5B,aAAO,YAAY,EAAE;AAAA,IAAA;AAAA,EAEzB;AAEA,WAAS,QAAQ,OAAgB;AAC/B,eAAW,MAAM;AACH,kBAAA,EAAE,EAAE,KAAK;AAAA,EAEzB;AAEO,SAAA;AAAA,IACL;AAAA,IACA;AAAA,EAAA;AAEJ;;"}