@terminus/ngx-tools
Version:
[![CircleCI][circle-badge]][circle-link] [![codecov][codecov-badge]][codecov-project] [![semantic-release][semantic-release-badge]][semantic-release] [![MIT License][license-image]][license-url] <br> [![NPM version][npm-version-image]][npm-url] [![Github
48 lines • 5.82 kB
JavaScript
import { __decorate } from "tslib";
import { Injectable } from '@angular/core';
import { RetryWithEscalation, } from '@terminus/ngx-tools/jwt';
import { throwError, } from 'rxjs';
import { mergeMap, retryWhen, } from 'rxjs/operators';
let RetryWithEscalationMock = class RetryWithEscalationMock extends RetryWithEscalation {
constructor() {
super(...arguments);
this.tokenEscalationsRequested = [];
this.escalationSuccessful = true;
}
static forTestBed() {
return {
provide: RetryWithEscalation,
useFactory: retryWithEscalationFactory,
};
}
retryWithEscalation(tokenName) {
return (source) => source.pipe(retryWhen((errors) => {
let tries = 0;
return errors.pipe(mergeMap(err => {
if (tries > 0
|| err instanceof Error
|| err.status !== 403) {
return throwError(err);
}
tries += 1;
this.tokenEscalationsRequested.push(tokenName);
if (this.escalationSuccessful) {
return 'complete';
}
return throwError(new Error('Failed to escalate token'));
}));
}));
}
};
RetryWithEscalationMock = __decorate([
Injectable()
], RetryWithEscalationMock);
export { RetryWithEscalationMock };
/**
* Return mock
*/
// eslint-disable-next-line prefer-arrow/prefer-arrow-functions
export function retryWithEscalationFactory() {
return new RetryWithEscalationMock(undefined, undefined, undefined, undefined);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0cnktd2l0aC1lc2NhbGF0aW9uLm1vY2suanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGVybWludXMvbmd4LXRvb2xzL2p3dC90ZXN0aW5nLyIsInNvdXJjZXMiOlsicmV0cnktd2l0aC1lc2NhbGF0aW9uLm1vY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUVMLG1CQUFtQixHQUNwQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFFTCxVQUFVLEdBQ1gsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ0wsUUFBUSxFQUNSLFNBQVMsR0FDVixNQUFNLGdCQUFnQixDQUFDO0FBR3hCLElBQWEsdUJBQXVCLEdBQXBDLE1BQWEsdUJBQXVDLFNBQVEsbUJBQW1CO0lBQS9FOztRQUNTLDhCQUF5QixHQUFhLEVBQUUsQ0FBQztRQUN6Qyx5QkFBb0IsR0FBRyxJQUFJLENBQUM7SUFxQ3JDLENBQUM7SUFuQ1EsTUFBTSxDQUFDLFVBQVU7UUFDdEIsT0FBTztZQUNMLE9BQU8sRUFBRSxtQkFBbUI7WUFDNUIsVUFBVSxFQUFFLDBCQUEwQjtTQUN2QyxDQUFDO0lBQ0osQ0FBQztJQUVNLG1CQUFtQixDQUFDLFNBQW9DO1FBQzdELE9BQU8sQ0FBQyxNQUF1QixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUM3QyxTQUFTLENBQUMsQ0FBQyxNQUE2QyxFQUFFLEVBQUU7WUFDMUQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUNoQixRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2IsSUFDRSxLQUFLLEdBQUcsQ0FBQzt1QkFDSixHQUFHLFlBQVksS0FBSzt1QkFDcEIsR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQ3ZCO29CQUNBLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUN4QjtnQkFFRCxLQUFLLElBQUksQ0FBQyxDQUFDO2dCQUVYLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBRS9DLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO29CQUM3QixPQUFPLFVBQVUsQ0FBQztpQkFDbkI7Z0JBRUQsT0FBTyxVQUFVLENBQUMsSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO1lBQzNELENBQUMsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztDQUNGLENBQUE7QUF2Q1ksdUJBQXVCO0lBRG5DLFVBQVUsRUFBRTtHQUNBLHVCQUF1QixDQXVDbkM7U0F2Q1ksdUJBQXVCO0FBeUNwQzs7R0FFRztBQUNILCtEQUErRDtBQUMvRCxNQUFNLFVBQVUsMEJBQTBCO0lBQ3hDLE9BQU8sSUFBSSx1QkFBdUIsQ0FBQyxTQUFnQixFQUFFLFNBQWdCLEVBQUUsU0FBZ0IsRUFBRSxTQUFnQixDQUFDLENBQUM7QUFDN0csQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ2xhaW1NYXAsXG4gIFJldHJ5V2l0aEVzY2FsYXRpb24sXG59IGZyb20gJ0B0ZXJtaW51cy9uZ3gtdG9vbHMvand0JztcbmltcG9ydCB7XG4gIE9ic2VydmFibGUsXG4gIHRocm93RXJyb3IsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgbWVyZ2VNYXAsXG4gIHJldHJ5V2hlbixcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUmV0cnlXaXRoRXNjYWxhdGlvbk1vY2s8Q00gPSBDbGFpbU1hcD4gZXh0ZW5kcyBSZXRyeVdpdGhFc2NhbGF0aW9uIGltcGxlbWVudHMgUmV0cnlXaXRoRXNjYWxhdGlvbiB7XG4gIHB1YmxpYyB0b2tlbkVzY2FsYXRpb25zUmVxdWVzdGVkOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgZXNjYWxhdGlvblN1Y2Nlc3NmdWwgPSB0cnVlO1xuXG4gIHB1YmxpYyBzdGF0aWMgZm9yVGVzdEJlZCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcHJvdmlkZTogUmV0cnlXaXRoRXNjYWxhdGlvbixcbiAgICAgIHVzZUZhY3Rvcnk6IHJldHJ5V2l0aEVzY2FsYXRpb25GYWN0b3J5LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgcmV0cnlXaXRoRXNjYWxhdGlvbih0b2tlbk5hbWU6IEV4dHJhY3Q8a2V5b2YgQ00sIHN0cmluZz4pIHtcbiAgICByZXR1cm4gKHNvdXJjZTogT2JzZXJ2YWJsZTxhbnk+KSA9PiBzb3VyY2UucGlwZShcbiAgICAgIHJldHJ5V2hlbigoZXJyb3JzOiBPYnNlcnZhYmxlPEh0dHBFcnJvclJlc3BvbnNlIHwgRXJyb3I+KSA9PiB7XG4gICAgICAgIGxldCB0cmllcyA9IDA7XG4gICAgICAgIHJldHVybiBlcnJvcnMucGlwZShcbiAgICAgICAgICBtZXJnZU1hcChlcnIgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICB0cmllcyA+IDBcbiAgICAgICAgICAgICAgICB8fCBlcnIgaW5zdGFuY2VvZiBFcnJvclxuICAgICAgICAgICAgICAgIHx8IGVyci5zdGF0dXMgIT09IDQwM1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRyaWVzICs9IDE7XG5cbiAgICAgICAgICAgIHRoaXMudG9rZW5Fc2NhbGF0aW9uc1JlcXVlc3RlZC5wdXNoKHRva2VuTmFtZSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmVzY2FsYXRpb25TdWNjZXNzZnVsKSB7XG4gICAgICAgICAgICAgIHJldHVybiAnY29tcGxldGUnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihuZXcgRXJyb3IoJ0ZhaWxlZCB0byBlc2NhbGF0ZSB0b2tlbicpKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm4gbW9ja1xuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWFycm93L3ByZWZlci1hcnJvdy1mdW5jdGlvbnNcbmV4cG9ydCBmdW5jdGlvbiByZXRyeVdpdGhFc2NhbGF0aW9uRmFjdG9yeSgpIHtcbiAgcmV0dXJuIG5ldyBSZXRyeVdpdGhFc2NhbGF0aW9uTW9jayh1bmRlZmluZWQgYXMgYW55LCB1bmRlZmluZWQgYXMgYW55LCB1bmRlZmluZWQgYXMgYW55LCB1bmRlZmluZWQgYXMgYW55KTtcbn1cbiJdfQ==