@foblex/ng-mediator
Version:
A mediator library for Angular facilitating a clean architecture with a better command-query separation.
18 lines • 2.95 kB
JavaScript
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=