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

1.1.0 • Public • Published

ngMediator Library

ngMediator is a mediator library for Angular that facilitates a clean architecture with a better command-query separation. It helps in orchestrating the handling of commands and queries in a simple, extendable, and maintainable manner.

Installation

Install the ngMediator library via npm:

npm install @foblex/ng-mediator

Usage

ngMediator simplifies the handling of commands and queries within your Angular applications, ensuring a clean and maintainable architecture. Below are the steps on how to utilize ngMediator in your project:

  1. Define Requests, Validators, and Handlers: Define your requests, validators, and handlers using the provided decorators and interfaces from the ngMediator library.

    Example:

    import { IRequest, FValidatorBase, FCommandBase, FQueryBase } from '@foblex/ng-mediator';
    
    // Define your Request
    class MyRequest implements IRequest<MyResponse> { }
    
     // Define your Response
    class MyResponse { 
     // fields...
    }
    
    // Define your Validator
    @Injectable()
    class MyValidator extends FValidatorBase<MyRequest, MyResponse> {
      validate(request: MyRequest): Observable<Error[]> {
        // validation logic...
      }
    }
    
    // Define your Handler
    @Injectable()
    class MyHandler extends FCommandBase<MyRequest, MyResponse> {
      handle(request: MyRequest): Observable<MyResponse> {
        // handling logic...
      }
    }
    // or
    @Injectable()
    class MyHandler extends FQueryBase<MyRequest, MyResponse> {
      handle(request: MyRequest): Observable<MyResponse> {
        // handling logic...
      }
    }
    
    @NgModule({
       imports: [
         FMediatorModule.forFeature(MyRequest, MyValidator, MyHandler),
       ]
    })
    export class Module { }
  2. Send Requests:

    Utilize the FMediator service to send your requests. The service will ensure that your requests are validated and handled by the appropriate handlers.

    Example:

    import { FMediator } from '@foblex/ng-mediator';
    
    fMediator.send(new MyRequest()).subscribe(response => {
        console.log(response);
    });

Package Sidebar

Install

npm i @foblex/ng-mediator

Weekly Downloads

3

Version

1.1.0

License

MIT

Unpacked Size

62.9 kB

Total Files

47

Last publish

Collaborators

  • siarheihuzarevich