@xlit/mediator
TypeScript icon, indicating that this package has built-in type declarations

2.8.1 • Public • Published

@xlit/mediator

Command and query mediator

Installation

npm i @xlit/mediator

Getting started

Define command handler with decorator.

import { commandHandler } from '@xlit/mediator';

class FooCommand {
  kind = 'FooCommand';
}

@commandHandler('FooCommand')
class FooCommandHandler {
  handle(cmd: FooCommand): Promise<void> {
    // do something
  }
}

Define query handler with decorator.

import { queryHandler } from '@xlit/mediator';

class BarQuery {
  kind = 'BarQuery';
}

type BarDto = string;

@queryHandler('BarQuery')
class BarQueryHandler {
  handle(query: BarQuery): Promise<BarDto> {
    // do something
    return Promise.resolve('barbar');
  }
}

Send command and query

import { FooCommand } from './FooCommand.js';
import { BarQuery } from './BarQuery.js';

const mediator = Mediator.instance();

await mediator.send(new FooCommand()); // send command
const result = await mediator.send(new BarQuery()); // send query

Package Sidebar

Install

npm i @xlit/mediator

Weekly Downloads

0

Version

2.8.1

License

MIT

Unpacked Size

8.82 kB

Total Files

10

Last publish

Collaborators

  • reekoheek