EventBus

EventBus

Package: @vendure/core File: event-bus.ts

The EventBus is used to globally publish events which can then be subscribed to.

Events are published whenever certain actions take place within the Vendure server, for example:

Using the EventBus it is possible to subscribe to an take action when these events occur. This is done with the .ofType() method, which takes an event type and returns an rxjs observable stream of events:

Example

import { OnApplicationBootstrap } from '@nestjs/common';
import { EventBus, PluginCommonModule, VendurePlugin } from '@vendure/core';
import { filter } from 'rxjs/operators';

@VendurePlugin({
    imports: [PluginCommonModule]
})
export class MyPlugin implements OnApplicationBootstrap {

  constructor(private eventBus: EventBus) {}

  async onApplicationBootstrap() {

    this.eventBus
      .ofType(OrderStateTransitionEvent)
      .pipe(
        filter(event => event.toState === 'PaymentSettled'),
      )
      .subscribe((event) => {
        // do some action when this event fires
      });
  }
}

Signature

class EventBus implements OnModuleDestroy {
  publish(event: T) => void;
  ofType(type: Type<T>) => Observable<T>;
}

Implements

  • OnModuleDestroy

Members

publish

method
type:
(event: T) => void
Publish an event which any subscribers can react to.

ofType

method
type:
(type: Type<T>) => Observable<T>
Returns an RxJS Observable stream of events of the given type.