get-it
Version:
Generic HTTP request library for node, browsers and workers
27 lines (22 loc) • 619 B
text/typescript
// Code borrowed from https://github.com/bjoerge/nano-pubsub
import type {PubSub, Subscriber} from 'get-it'
export function createPubSub<Message = void>(): PubSub<Message> {
const subscribers: {[id: string]: Subscriber<Message>} = Object.create(null)
let nextId = 0
function subscribe(subscriber: Subscriber<Message>) {
const id = nextId++
subscribers[id] = subscriber
return function unsubscribe() {
delete subscribers[id]
}
}
function publish(event: Message) {
for (const id in subscribers) {
subscribers[id](event)
}
}
return {
publish,
subscribe,
}
}