@sedeapp/sede-broker

Just a simple message broker.

Usage no npm install needed!

<script type="module">
  import sedeappSedeBroker from 'https://cdn.skypack.dev/@sedeapp/sede-broker';
</script>

README

Sede Broker

Just a simple message broker.

Instantiate a new broker

const broker = new SedeBroker()

Specify your messages

class HelloMessage {
    constructor(name) {
        this._name = name
    }

    get name() {
        return this._name
    }
}

Subscribe

const ticket = broker.subscribe(HelloMessage, message => {
    console.log(`Hello ${message.name}!`)
})

Publish

broker.publish(new HelloMessage('World'))

Unsubscribe

ticket.unsubscribe()

Resubscribe

ticket.subscribe()

Remove all subscriptions

broker.clear()

Update message with backward compatibility

// add optional arguments (keep safe)
class HelloMessageV2 extends HelloMessage {
    constructor(name, greeting = 'Hello') {
        super(name)
        this._greeting = greeting        
    }

    get greeting() {
        return this._greeting
    }
}

// transform all new instances of HelloMessage to HelloMessage2
HelloMessage = HelloMessageV2

// you don't need to change old subscribers (services)
const oldSystem = broker.subscribe(HelloMessage, message => {
    console.log(`Hello ${message.name}!`)
})

// and you can write new ones
const newSystem = broker.subscribe(HelloMessageV2, message => {
    console.log(`${message.greeting} ${message.name}!`)
})

// dont need to change old producers
broker.publish(new HelloMessage('World'))

// and you can write new ones as well ;)
broker.publish(new HelloMessageV2('World', 'Hi'))