UNPKG

@foblex/ng-mediator

Version:

A mediator library for Angular facilitating a clean architecture with a better command-query separation.

18 lines 2.95 kB
import { throwError } from 'rxjs'; import { catchError, switchMap } from 'rxjs/operators'; export class Pipeline { constructor(requestType, validator, requestHandler) { this.requestType = requestType; this.validator = validator; this.requestHandler = requestHandler; } execute(request) { return this.validator.handle(request).pipe(switchMap((result) => { if (!result.isValid) { return throwError(() => result.errors); } return this.requestHandler.handle(request).pipe(catchError((error) => throwError(() => [error]))); })); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1tZWRpYXRvci9zcmMvbGliL21lZGlhdG9yL3BpcGVsaW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl2RCxNQUFNLE9BQU8sUUFBUTtJQUVuQixZQUNTLFdBQW1CLEVBQ2xCLFNBQThDLEVBQzlDLGNBQW9EO1FBRnJELGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQ2xCLGNBQVMsR0FBVCxTQUFTLENBQXFDO1FBQzlDLG1CQUFjLEdBQWQsY0FBYyxDQUFzQztJQUU5RCxDQUFDO0lBRU0sT0FBTyxDQUFDLE9BQWlCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUN4QyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNwQixPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekMsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEcsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZWYWxpZGF0b3JCYXNlIH0gZnJvbSAnLi92YWxpZGF0b3InO1xuaW1wb3J0IHsgSVJlcXVlc3QsIElSZXF1ZXN0SGFuZGxlciB9IGZyb20gJy4uL2NxcnMnO1xuXG5leHBvcnQgY2xhc3MgUGlwZWxpbmU8VFJlcXVlc3QgZXh0ZW5kcyBJUmVxdWVzdDxUUmVzcG9uc2U+LCBUUmVzcG9uc2U+IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVxdWVzdFR5cGU6IHN0cmluZyxcbiAgICBwcml2YXRlIHZhbGlkYXRvcjogRlZhbGlkYXRvckJhc2U8VFJlcXVlc3QsIFRSZXNwb25zZT4sXG4gICAgcHJpdmF0ZSByZXF1ZXN0SGFuZGxlcjogSVJlcXVlc3RIYW5kbGVyPFRSZXF1ZXN0LCBUUmVzcG9uc2U+XG4gICkge1xuICB9XG5cbiAgcHVibGljIGV4ZWN1dGUocmVxdWVzdDogVFJlcXVlc3QpOiBPYnNlcnZhYmxlPFRSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLnZhbGlkYXRvci5oYW5kbGUocmVxdWVzdCkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmICghcmVzdWx0LmlzVmFsaWQpIHtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiByZXN1bHQuZXJyb3JzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0SGFuZGxlci5oYW5kbGUocmVxdWVzdCkucGlwZShjYXRjaEVycm9yKChlcnJvcikgPT4gdGhyb3dFcnJvcigoKSA9PiBbZXJyb3JdKSkpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=