@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
56 lines • 6.82 kB
JavaScript
import { __decorate } from "tslib";
import { Injectable } from '@angular/core';
import { Store } from '@ngrx/store';
import { isHttpResponse, isTokenResponse, } from '@terminus/ngx-tools/type-guards';
import { tap } from 'rxjs/operators';
import { StoreToken, } from '../actions';
export var TOKEN_NOT_FOUND_ERROR = new Error('Token Not found in response');
var TokenExtractor = /** @class */ (function () {
function TokenExtractor(
// eslint-disable-next-line @typescript-eslint/no-explicit-any
store) {
this.store = store;
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
TokenExtractor.prototype.extractJwtToken = function (_a) {
var _this = this;
var tokenName = _a.tokenName, isDefaultToken = _a.isDefaultToken;
return function (source) { return source.pipe(tap(function (request) {
var token = _this.extractTokenFromResponse(request);
if (token === '') {
throw TOKEN_NOT_FOUND_ERROR;
}
else {
_this.store.dispatch(new StoreToken({
tokenName: tokenName,
token: token,
isDefaultToken: isDefaultToken,
}));
}
})); };
};
// eslint-disable-next-line @typescript-eslint/no-explicit-any
TokenExtractor.prototype.extractTokenFromResponse = function (input) {
var token = '';
if (isTokenResponse(input)) {
token = input.token;
}
else if (isHttpResponse(input)) {
var authHeader = input.headers.get('Authorization');
var tokenStartsAtChar = 7;
if (authHeader && authHeader.startsWith('Bearer ')) {
token = authHeader.substr(tokenStartsAtChar);
}
}
return token;
};
TokenExtractor.ctorParameters = function () { return [
{ type: Store }
]; };
TokenExtractor = __decorate([
Injectable()
], TokenExtractor);
return TokenExtractor;
}());
export { TokenExtractor };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tZXh0cmFjdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRlcm1pbnVzL25neC10b29scy9qd3QvIiwic291cmNlcyI6WyJqd3QtdG9rZW4tbWFuYWdtZW50L3V0aWxpdGllcy90b2tlbi1leHRyYWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsY0FBYyxFQUNkLGVBQWUsR0FDaEIsTUFBTSxpQ0FBaUMsQ0FBQztBQUV6QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUNMLFVBQVUsR0FFWCxNQUFNLFlBQVksQ0FBQztBQVNwQixNQUFNLENBQUMsSUFBTSxxQkFBcUIsR0FBRyxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0FBSTlFO0lBc0NFO0lBQ0UsOERBQThEO0lBQ3ZELEtBQWlCO1FBQWpCLFVBQUssR0FBTCxLQUFLLENBQVk7SUFDdkIsQ0FBQztJQXhDSiw4REFBOEQ7SUFDdkQsd0NBQWUsR0FBdEIsVUFBNkQsRUFBcUQ7UUFBbEgsaUJBZ0JDO1lBaEI4RCx3QkFBUyxFQUFFLGtDQUFjO1FBQ3RGLE9BQU8sVUFBQyxNQUFxQixJQUFLLE9BQUEsTUFBTSxDQUFDLElBQUksQ0FDM0MsR0FBRyxDQUFDLFVBQUEsT0FBTztZQUNULElBQU0sS0FBSyxHQUFHLEtBQUksQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUVyRCxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUU7Z0JBQ2hCLE1BQU0scUJBQXFCLENBQUM7YUFDN0I7aUJBQU07Z0JBQ0wsS0FBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxVQUFVLENBQUs7b0JBQ3JDLFNBQVMsV0FBQTtvQkFDVCxLQUFLLE9BQUE7b0JBQ0wsY0FBYyxnQkFBQTtpQkFDZixDQUFDLENBQUMsQ0FBQzthQUNMO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsRUFkaUMsQ0FjakMsQ0FBQztJQUNKLENBQUM7SUFFRCw4REFBOEQ7SUFDdkQsaURBQXdCLEdBQS9CLFVBQXNFLEtBQVE7UUFDNUUsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBRWYsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDMUIsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7U0FDckI7YUFBTSxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNoQyxJQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUN0RCxJQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQztZQUU1QixJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUNsRCxLQUFLLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2FBQzlDO1NBQ0Y7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7O2dCQUllLEtBQUs7O0lBeENWLGNBQWM7UUFEMUIsVUFBVSxFQUFFO09BQ0EsY0FBYyxDQTJDMUI7SUFBRCxxQkFBQztDQUFBLEFBM0NELElBMkNDO1NBM0NZLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIGlzSHR0cFJlc3BvbnNlLFxuICBpc1Rva2VuUmVzcG9uc2UsXG59IGZyb20gJ0B0ZXJtaW51cy9uZ3gtdG9vbHMvdHlwZS1ndWFyZHMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBTdG9yZVRva2VuLFxuICBTdG9yZVRva2VuQ29uc3RydWN0b3IsXG59IGZyb20gJy4uL2FjdGlvbnMnO1xuaW1wb3J0IHsgQ2xhaW1NYXAgfSBmcm9tICcuLi9jbGFpbS1tYXAnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0cmFjdFRva2VuUGFyYW1zPEMgPSBDbGFpbU1hcD4gZXh0ZW5kcyBQYXJ0aWFsPFN0b3JlVG9rZW5Db25zdHJ1Y3RvcjxDPj4ge1xuICB0b2tlbk5hbWU6IEV4dHJhY3Q8a2V5b2YgQywgc3RyaW5nPjtcbn1cblxuXG5leHBvcnQgY29uc3QgVE9LRU5fTk9UX0ZPVU5EX0VSUk9SID0gbmV3IEVycm9yKCdUb2tlbiBOb3QgZm91bmQgaW4gcmVzcG9uc2UnKTtcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVG9rZW5FeHRyYWN0b3I8Q00gPSBDbGFpbU1hcD4ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBwdWJsaWMgZXh0cmFjdEp3dFRva2VuPFQgZXh0ZW5kcyBPYmplY3QgfCBIdHRwUmVzcG9uc2U8YW55Pj4oeyB0b2tlbk5hbWUsIGlzRGVmYXVsdFRva2VuIH06IEV4dHJhY3RUb2tlblBhcmFtczxDTT4pIHtcbiAgICByZXR1cm4gKHNvdXJjZTogT2JzZXJ2YWJsZTxUPikgPT4gc291cmNlLnBpcGUoXG4gICAgICB0YXAocmVxdWVzdCA9PiB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5leHRyYWN0VG9rZW5Gcm9tUmVzcG9uc2UocmVxdWVzdCk7XG5cbiAgICAgICAgaWYgKHRva2VuID09PSAnJykge1xuICAgICAgICAgIHRocm93IFRPS0VOX05PVF9GT1VORF9FUlJPUjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTdG9yZVRva2VuPENNPih7XG4gICAgICAgICAgICB0b2tlbk5hbWUsXG4gICAgICAgICAgICB0b2tlbixcbiAgICAgICAgICAgIGlzRGVmYXVsdFRva2VuLFxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHB1YmxpYyBleHRyYWN0VG9rZW5Gcm9tUmVzcG9uc2U8VCBleHRlbmRzIE9iamVjdCB8IEh0dHBSZXNwb25zZTxhbnk+PihpbnB1dDogVCk6IHN0cmluZyB7XG4gICAgbGV0IHRva2VuID0gJyc7XG5cbiAgICBpZiAoaXNUb2tlblJlc3BvbnNlKGlucHV0KSkge1xuICAgICAgdG9rZW4gPSBpbnB1dC50b2tlbjtcbiAgICB9IGVsc2UgaWYgKGlzSHR0cFJlc3BvbnNlKGlucHV0KSkge1xuICAgICAgY29uc3QgYXV0aEhlYWRlciA9IGlucHV0LmhlYWRlcnMuZ2V0KCdBdXRob3JpemF0aW9uJyk7XG4gICAgICBjb25zdCB0b2tlblN0YXJ0c0F0Q2hhciA9IDc7XG5cbiAgICAgIGlmIChhdXRoSGVhZGVyICYmIGF1dGhIZWFkZXIuc3RhcnRzV2l0aCgnQmVhcmVyICcpKSB7XG4gICAgICAgIHRva2VuID0gYXV0aEhlYWRlci5zdWJzdHIodG9rZW5TdGFydHNBdENoYXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0b2tlbjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIHN0b3JlOiBTdG9yZTxhbnk+LFxuICApIHt9XG5cbn1cbiJdfQ==