@yaagoub/decorators
Version:
Angular decorators
33 lines • 4.93 kB
JavaScript
import { of } from 'rxjs';
import { catchError, mergeMap } from 'rxjs/operators';
import { YgbInjector } from '../../global/ygb-injector';
import { InterceptorStore } from './interceptor.store';
export class InterceptorManager {
static applyBefore(request$, interceptors) {
return [
...this.run().getInterceptors(),
...interceptors
].reduce((obs$, interceptor) => {
return obs$.pipe(mergeMap(req => interceptor.before ? interceptor.before(req) : of(req)));
}, request$);
}
static applyAfter(response$, interceptors) {
let result$ = response$;
for (const interceptor of [
...this.run().getInterceptors(),
...interceptors
]) {
if (interceptor.after) {
result$ = result$.pipe(mergeMap(res => interceptor.after(res)));
}
if (interceptor.onError) {
result$ = result$.pipe(catchError(err => interceptor.onError(err)));
}
}
return result$;
}
static run() {
return YgbInjector.inject(InterceptorStore);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJjZXB0b3ItbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVjb3JhdG9ycy9zcmMvaHR0cC9pbnRlcmNlcHRvcnMvaW50ZXJjZXB0b3ItbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBS3ZELE1BQU0sT0FBTyxrQkFBa0I7SUFFN0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFpQyxFQUFFLFlBQTJCO1FBQy9FLE9BQU87WUFDTCxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLEVBQUU7WUFDL0IsR0FBRyxZQUFZO1NBQ2hCLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFO1lBQzdCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FDZCxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDeEUsQ0FBQztRQUNKLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQTBCLEVBQUUsWUFBMkI7UUFDdkUsSUFBSSxPQUFPLEdBQUcsU0FBUyxDQUFDO1FBRXhCLEtBQUssTUFBTSxXQUFXLElBQUk7WUFDRSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLEVBQUU7WUFDL0IsR0FBRyxZQUFZO1NBQ2hCLEVBQUUsQ0FBQztZQUM1QixJQUFJLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDdEIsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEtBQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkUsQ0FBQztZQUNELElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUN4QixPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsT0FBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2RSxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBRztRQUNSLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBcUIsQ0FBQztJQUNsRSxDQUFDO0NBR0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWVyZ2VNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIdHRwUmVxdWVzdCB9IGZyb20gJy4uL3R5cGVzL2h0dHAtcmVxdWVzdCc7XG5pbXBvcnQgeyBJbnRlcmNlcHRvciB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IFlnYkluamVjdG9yIH0gZnJvbSAnLi4vLi4vZ2xvYmFsL3lnYi1pbmplY3Rvcic7XG5pbXBvcnQgeyBJbnRlcmNlcHRvclN0b3JlIH0gZnJvbSAnLi9pbnRlcmNlcHRvci5zdG9yZSc7XG5cblxuXG5cbmV4cG9ydCBjbGFzcyBJbnRlcmNlcHRvck1hbmFnZXIge1xuXG4gIHN0YXRpYyBhcHBseUJlZm9yZShyZXF1ZXN0JDogT2JzZXJ2YWJsZTxIdHRwUmVxdWVzdD4sIGludGVyY2VwdG9yczogSW50ZXJjZXB0b3JbXSk6IE9ic2VydmFibGU8SHR0cFJlcXVlc3Q+IHtcbiAgICByZXR1cm4gW1xuICAgICAgLi4udGhpcy5ydW4oKS5nZXRJbnRlcmNlcHRvcnMoKSxcbiAgICAgIC4uLmludGVyY2VwdG9yc1xuICAgIF0ucmVkdWNlKChvYnMkLCBpbnRlcmNlcHRvcikgPT4ge1xuICAgICAgcmV0dXJuIG9icyQucGlwZShcbiAgICAgICAgbWVyZ2VNYXAocmVxID0+IGludGVyY2VwdG9yLmJlZm9yZSA/IGludGVyY2VwdG9yLmJlZm9yZShyZXEpIDogb2YocmVxKSlcbiAgICAgICk7XG4gICAgfSwgcmVxdWVzdCQpO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5QWZ0ZXIocmVzcG9uc2UkOiBPYnNlcnZhYmxlPGFueT4sIGludGVyY2VwdG9yczogSW50ZXJjZXB0b3JbXSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHJlc3VsdCQgPSByZXNwb25zZSQ7XG5cbiAgICBmb3IgKGNvbnN0IGludGVyY2VwdG9yIG9mIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5ydW4oKS5nZXRJbnRlcmNlcHRvcnMoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaW50ZXJjZXB0b3JzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSB7XG4gICAgICBpZiAoaW50ZXJjZXB0b3IuYWZ0ZXIpIHtcbiAgICAgICAgcmVzdWx0JCA9IHJlc3VsdCQucGlwZShtZXJnZU1hcChyZXMgPT4gaW50ZXJjZXB0b3IuYWZ0ZXIhKHJlcykpKTtcbiAgICAgIH1cbiAgICAgIGlmIChpbnRlcmNlcHRvci5vbkVycm9yKSB7XG4gICAgICAgIHJlc3VsdCQgPSByZXN1bHQkLnBpcGUoY2F0Y2hFcnJvcihlcnIgPT4gaW50ZXJjZXB0b3Iub25FcnJvciEoZXJyKSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQkO1xuICB9XG5cbiAgc3RhdGljIHJ1bigpIHtcbiAgICByZXR1cm4gWWdiSW5qZWN0b3IuaW5qZWN0KEludGVyY2VwdG9yU3RvcmUpIGFzIEludGVyY2VwdG9yU3RvcmU7XG4gIH1cblxuXG59XG4iXX0=