@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
52 lines • 6.19 kB
JavaScript
import { __decorate, __extends } from "tslib";
import { Injectable } from '@angular/core';
import { RetryWithEscalation, } from '@terminus/ngx-tools/jwt';
import { throwError, } from 'rxjs';
import { mergeMap, retryWhen, } from 'rxjs/operators';
var RetryWithEscalationMock = /** @class */ (function (_super) {
__extends(RetryWithEscalationMock, _super);
function RetryWithEscalationMock() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.tokenEscalationsRequested = [];
_this.escalationSuccessful = true;
return _this;
}
RetryWithEscalationMock.forTestBed = function () {
return {
provide: RetryWithEscalation,
useFactory: retryWithEscalationFactory,
};
};
RetryWithEscalationMock.prototype.retryWithEscalation = function (tokenName) {
var _this = this;
return function (source) { return source.pipe(retryWhen(function (errors) {
var tries = 0;
return errors.pipe(mergeMap(function (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);
return RetryWithEscalationMock;
}(RetryWithEscalation));
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0cnktd2l0aC1lc2NhbGF0aW9uLm1vY2suanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGVybWludXMvbmd4LXRvb2xzL2p3dC90ZXN0aW5nLyIsInNvdXJjZXMiOlsicmV0cnktd2l0aC1lc2NhbGF0aW9uLm1vY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUVMLG1CQUFtQixHQUNwQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFFTCxVQUFVLEdBQ1gsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ0wsUUFBUSxFQUNSLFNBQVMsR0FDVixNQUFNLGdCQUFnQixDQUFDO0FBR3hCO0lBQTRELDJDQUFtQjtJQUEvRTtRQUFBLHFFQXVDQztRQXRDUSwrQkFBeUIsR0FBYSxFQUFFLENBQUM7UUFDekMsMEJBQW9CLEdBQUcsSUFBSSxDQUFDOztJQXFDckMsQ0FBQztJQW5DZSxrQ0FBVSxHQUF4QjtRQUNFLE9BQU87WUFDTCxPQUFPLEVBQUUsbUJBQW1CO1lBQzVCLFVBQVUsRUFBRSwwQkFBMEI7U0FDdkMsQ0FBQztJQUNKLENBQUM7SUFFTSxxREFBbUIsR0FBMUIsVUFBMkIsU0FBb0M7UUFBL0QsaUJBMkJDO1FBMUJDLE9BQU8sVUFBQyxNQUF1QixJQUFLLE9BQUEsTUFBTSxDQUFDLElBQUksQ0FDN0MsU0FBUyxDQUFDLFVBQUMsTUFBNkM7WUFDdEQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUNoQixRQUFRLENBQUMsVUFBQSxHQUFHO2dCQUNWLElBQ0UsS0FBSyxHQUFHLENBQUM7dUJBQ0osR0FBRyxZQUFZLEtBQUs7dUJBQ3BCLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUN2QjtvQkFDQSxPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDeEI7Z0JBRUQsS0FBSyxJQUFJLENBQUMsQ0FBQztnQkFFWCxLQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUUvQyxJQUFJLEtBQUksQ0FBQyxvQkFBb0IsRUFBRTtvQkFDN0IsT0FBTyxVQUFVLENBQUM7aUJBQ25CO2dCQUVELE9BQU8sVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQztZQUMzRCxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsRUF6Qm1DLENBeUJuQyxDQUFDO0lBQ0osQ0FBQztJQXRDVSx1QkFBdUI7UUFEbkMsVUFBVSxFQUFFO09BQ0EsdUJBQXVCLENBdUNuQztJQUFELDhCQUFDO0NBQUEsQUF2Q0QsQ0FBNEQsbUJBQW1CLEdBdUM5RTtTQXZDWSx1QkFBdUI7QUF5Q3BDOztHQUVHO0FBQ0gsK0RBQStEO0FBQy9ELE1BQU0sVUFBVSwwQkFBMEI7SUFDeEMsT0FBTyxJQUFJLHVCQUF1QixDQUFDLFNBQWdCLEVBQUUsU0FBZ0IsRUFBRSxTQUFnQixFQUFFLFNBQWdCLENBQUMsQ0FBQztBQUM3RyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDbGFpbU1hcCxcbiAgUmV0cnlXaXRoRXNjYWxhdGlvbixcbn0gZnJvbSAnQHRlcm1pbnVzL25neC10b29scy9qd3QnO1xuaW1wb3J0IHtcbiAgT2JzZXJ2YWJsZSxcbiAgdGhyb3dFcnJvcixcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBtZXJnZU1hcCxcbiAgcmV0cnlXaGVuLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSZXRyeVdpdGhFc2NhbGF0aW9uTW9jazxDTSA9IENsYWltTWFwPiBleHRlbmRzIFJldHJ5V2l0aEVzY2FsYXRpb24gaW1wbGVtZW50cyBSZXRyeVdpdGhFc2NhbGF0aW9uIHtcbiAgcHVibGljIHRva2VuRXNjYWxhdGlvbnNSZXF1ZXN0ZWQ6IHN0cmluZ1tdID0gW107XG4gIHB1YmxpYyBlc2NhbGF0aW9uU3VjY2Vzc2Z1bCA9IHRydWU7XG5cbiAgcHVibGljIHN0YXRpYyBmb3JUZXN0QmVkKCkge1xuICAgIHJldHVybiB7XG4gICAgICBwcm92aWRlOiBSZXRyeVdpdGhFc2NhbGF0aW9uLFxuICAgICAgdXNlRmFjdG9yeTogcmV0cnlXaXRoRXNjYWxhdGlvbkZhY3RvcnksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyByZXRyeVdpdGhFc2NhbGF0aW9uKHRva2VuTmFtZTogRXh0cmFjdDxrZXlvZiBDTSwgc3RyaW5nPikge1xuICAgIHJldHVybiAoc291cmNlOiBPYnNlcnZhYmxlPGFueT4pID0+IHNvdXJjZS5waXBlKFxuICAgICAgcmV0cnlXaGVuKChlcnJvcnM6IE9ic2VydmFibGU8SHR0cEVycm9yUmVzcG9uc2UgfCBFcnJvcj4pID0+IHtcbiAgICAgICAgbGV0IHRyaWVzID0gMDtcbiAgICAgICAgcmV0dXJuIGVycm9ycy5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKGVyciA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHRyaWVzID4gMFxuICAgICAgICAgICAgICAgIHx8IGVyciBpbnN0YW5jZW9mIEVycm9yXG4gICAgICAgICAgICAgICAgfHwgZXJyLnN0YXR1cyAhPT0gNDAzXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdHJpZXMgKz0gMTtcblxuICAgICAgICAgICAgdGhpcy50b2tlbkVzY2FsYXRpb25zUmVxdWVzdGVkLnB1c2godG9rZW5OYW1lKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZXNjYWxhdGlvblN1Y2Nlc3NmdWwpIHtcbiAgICAgICAgICAgICAgcmV0dXJuICdjb21wbGV0ZSc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKG5ldyBFcnJvcignRmFpbGVkIHRvIGVzY2FsYXRlIHRva2VuJykpO1xuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybiBtb2NrXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItYXJyb3cvcHJlZmVyLWFycm93LWZ1bmN0aW9uc1xuZXhwb3J0IGZ1bmN0aW9uIHJldHJ5V2l0aEVzY2FsYXRpb25GYWN0b3J5KCkge1xuICByZXR1cm4gbmV3IFJldHJ5V2l0aEVzY2FsYXRpb25Nb2NrKHVuZGVmaW5lZCBhcyBhbnksIHVuZGVmaW5lZCBhcyBhbnksIHVuZGVmaW5lZCBhcyBhbnksIHVuZGVmaW5lZCBhcyBhbnkpO1xufVxuIl19