UNPKG

@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

53 lines 6.47 kB
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 const TOKEN_NOT_FOUND_ERROR = new Error('Token Not found in response'); let TokenExtractor = class TokenExtractor { constructor( // eslint-disable-next-line @typescript-eslint/no-explicit-any store) { this.store = store; } // eslint-disable-next-line @typescript-eslint/no-explicit-any extractJwtToken({ tokenName, isDefaultToken }) { return (source) => source.pipe(tap(request => { const token = this.extractTokenFromResponse(request); if (token === '') { throw TOKEN_NOT_FOUND_ERROR; } else { this.store.dispatch(new StoreToken({ tokenName, token, isDefaultToken, })); } })); } // eslint-disable-next-line @typescript-eslint/no-explicit-any extractTokenFromResponse(input) { let token = ''; if (isTokenResponse(input)) { token = input.token; } else if (isHttpResponse(input)) { const authHeader = input.headers.get('Authorization'); const tokenStartsAtChar = 7; if (authHeader && authHeader.startsWith('Bearer ')) { token = authHeader.substr(tokenStartsAtChar); } } return token; } }; TokenExtractor.ctorParameters = () => [ { type: Store } ]; TokenExtractor = __decorate([ Injectable() ], TokenExtractor); export { TokenExtractor }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tZXh0cmFjdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRlcm1pbnVzL25neC10b29scy9qd3QvIiwic291cmNlcyI6WyJqd3QtdG9rZW4tbWFuYWdtZW50L3V0aWxpdGllcy90b2tlbi1leHRyYWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsY0FBYyxFQUNkLGVBQWUsR0FDaEIsTUFBTSxpQ0FBaUMsQ0FBQztBQUV6QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUNMLFVBQVUsR0FFWCxNQUFNLFlBQVksQ0FBQztBQVNwQixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0FBSTlFLElBQWEsY0FBYyxHQUEzQixNQUFhLGNBQWM7SUFzQ3pCO0lBQ0UsOERBQThEO0lBQ3ZELEtBQWlCO1FBQWpCLFVBQUssR0FBTCxLQUFLLENBQVk7SUFDdkIsQ0FBQztJQXhDSiw4REFBOEQ7SUFDdkQsZUFBZSxDQUF1QyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQTBCO1FBQ2hILE9BQU8sQ0FBQyxNQUFxQixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUMzQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDWixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFckQsSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFO2dCQUNoQixNQUFNLHFCQUFxQixDQUFDO2FBQzdCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksVUFBVSxDQUFLO29CQUNyQyxTQUFTO29CQUNULEtBQUs7b0JBQ0wsY0FBYztpQkFDZixDQUFDLENBQUMsQ0FBQzthQUNMO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCw4REFBOEQ7SUFDdkQsd0JBQXdCLENBQXVDLEtBQVE7UUFDNUUsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBRWYsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDMUIsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7U0FDckI7YUFBTSxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNoQyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUN0RCxNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQztZQUU1QixJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUNsRCxLQUFLLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2FBQzlDO1NBQ0Y7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FPRixDQUFBOztZQUhpQixLQUFLOztBQXhDVixjQUFjO0lBRDFCLFVBQVUsRUFBRTtHQUNBLGNBQWMsQ0EyQzFCO1NBM0NZLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIGlzSHR0cFJlc3BvbnNlLFxuICBpc1Rva2VuUmVzcG9uc2UsXG59IGZyb20gJ0B0ZXJtaW51cy9uZ3gtdG9vbHMvdHlwZS1ndWFyZHMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBTdG9yZVRva2VuLFxuICBTdG9yZVRva2VuQ29uc3RydWN0b3IsXG59IGZyb20gJy4uL2FjdGlvbnMnO1xuaW1wb3J0IHsgQ2xhaW1NYXAgfSBmcm9tICcuLi9jbGFpbS1tYXAnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0cmFjdFRva2VuUGFyYW1zPEMgPSBDbGFpbU1hcD4gZXh0ZW5kcyBQYXJ0aWFsPFN0b3JlVG9rZW5Db25zdHJ1Y3RvcjxDPj4ge1xuICB0b2tlbk5hbWU6IEV4dHJhY3Q8a2V5b2YgQywgc3RyaW5nPjtcbn1cblxuXG5leHBvcnQgY29uc3QgVE9LRU5fTk9UX0ZPVU5EX0VSUk9SID0gbmV3IEVycm9yKCdUb2tlbiBOb3QgZm91bmQgaW4gcmVzcG9uc2UnKTtcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVG9rZW5FeHRyYWN0b3I8Q00gPSBDbGFpbU1hcD4ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBwdWJsaWMgZXh0cmFjdEp3dFRva2VuPFQgZXh0ZW5kcyBPYmplY3QgfCBIdHRwUmVzcG9uc2U8YW55Pj4oeyB0b2tlbk5hbWUsIGlzRGVmYXVsdFRva2VuIH06IEV4dHJhY3RUb2tlblBhcmFtczxDTT4pIHtcbiAgICByZXR1cm4gKHNvdXJjZTogT2JzZXJ2YWJsZTxUPikgPT4gc291cmNlLnBpcGUoXG4gICAgICB0YXAocmVxdWVzdCA9PiB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5leHRyYWN0VG9rZW5Gcm9tUmVzcG9uc2UocmVxdWVzdCk7XG5cbiAgICAgICAgaWYgKHRva2VuID09PSAnJykge1xuICAgICAgICAgIHRocm93IFRPS0VOX05PVF9GT1VORF9FUlJPUjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTdG9yZVRva2VuPENNPih7XG4gICAgICAgICAgICB0b2tlbk5hbWUsXG4gICAgICAgICAgICB0b2tlbixcbiAgICAgICAgICAgIGlzRGVmYXVsdFRva2VuLFxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHB1YmxpYyBleHRyYWN0VG9rZW5Gcm9tUmVzcG9uc2U8VCBleHRlbmRzIE9iamVjdCB8IEh0dHBSZXNwb25zZTxhbnk+PihpbnB1dDogVCk6IHN0cmluZyB7XG4gICAgbGV0IHRva2VuID0gJyc7XG5cbiAgICBpZiAoaXNUb2tlblJlc3BvbnNlKGlucHV0KSkge1xuICAgICAgdG9rZW4gPSBpbnB1dC50b2tlbjtcbiAgICB9IGVsc2UgaWYgKGlzSHR0cFJlc3BvbnNlKGlucHV0KSkge1xuICAgICAgY29uc3QgYXV0aEhlYWRlciA9IGlucHV0LmhlYWRlcnMuZ2V0KCdBdXRob3JpemF0aW9uJyk7XG4gICAgICBjb25zdCB0b2tlblN0YXJ0c0F0Q2hhciA9IDc7XG5cbiAgICAgIGlmIChhdXRoSGVhZGVyICYmIGF1dGhIZWFkZXIuc3RhcnRzV2l0aCgnQmVhcmVyICcpKSB7XG4gICAgICAgIHRva2VuID0gYXV0aEhlYWRlci5zdWJzdHIodG9rZW5TdGFydHNBdENoYXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0b2tlbjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIHN0b3JlOiBTdG9yZTxhbnk+LFxuICApIHt9XG5cbn1cbiJdfQ==