@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
38 lines • 3.76 kB
JavaScript
// Rewritten from https://github.com/auth0/jwt-decode/tree/master/lib to be typescript compliant
// eslint-disable-next-line camelcase
import { base64_url_decode } from './base64-url-decode';
var InvalidTokenError = /** @class */ (function () {
function InvalidTokenError(message) {
this.message = message;
}
return InvalidTokenError;
}());
export { InvalidTokenError };
// eslint-disable-next-line @typescript-eslint/no-explicit-any
InvalidTokenError.prototype.name = 'InvalidTokenError';
/**
* Decode JWT token
*
* @param token
* @param options
* @returns Token
*/
export function jwtDecode(token, options) {
if (typeof token !== 'string') {
throw new InvalidTokenError('Invalid token specified');
}
options = options || {};
var pos = options.header === true ? 0 : 1;
try {
return JSON.parse(base64_url_decode(token.split('.')[pos]));
}
catch (e) {
if (e instanceof Error) {
throw new InvalidTokenError("Invalid token specified: " + e.message);
}
else {
throw e;
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LWRlY29kZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0ZXJtaW51cy9uZ3gtdG9vbHMvand0LyIsInNvdXJjZXMiOlsiand0LWRlY29kZS9qd3QtZGVjb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdHQUFnRztBQUNoRyxxQ0FBcUM7QUFDckMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHeEQ7SUFDRSwyQkFBbUIsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7SUFBRyxDQUFDO0lBQ3hDLHdCQUFDO0FBQUQsQ0FBQyxBQUZELElBRUM7O0FBRUQsOERBQThEO0FBQzdELGlCQUFpQixDQUFDLFNBQWlCLENBQUMsSUFBSSxHQUFHLG1CQUFtQixDQUFDO0FBR2hFOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUksS0FBYSxFQUFFLE9BQTRCO0lBQ3RFLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLE1BQU0sSUFBSSxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0tBQ3hEO0lBRUQsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7SUFDeEIsSUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLElBQUk7UUFDRixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLENBQUM7S0FDbEU7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLElBQUksQ0FBQyxZQUFZLEtBQUssRUFBRTtZQUN0QixNQUFNLElBQUksaUJBQWlCLENBQUMsOEJBQTRCLENBQUMsQ0FBQyxPQUFTLENBQUMsQ0FBQztTQUN0RTthQUFNO1lBQ0wsTUFBTSxDQUFDLENBQUM7U0FDVDtLQUNGO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFJld3JpdHRlbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9hdXRoMC9qd3QtZGVjb2RlL3RyZWUvbWFzdGVyL2xpYiB0byBiZSB0eXBlc2NyaXB0IGNvbXBsaWFudFxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNhbWVsY2FzZVxuaW1wb3J0IHsgYmFzZTY0X3VybF9kZWNvZGUgfSBmcm9tICcuL2Jhc2U2NC11cmwtZGVjb2RlJztcblxuXG5leHBvcnQgY2xhc3MgSW52YWxpZFRva2VuRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgbWVzc2FnZTogc3RyaW5nKSB7fVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuKEludmFsaWRUb2tlbkVycm9yLnByb3RvdHlwZSBhcyBhbnkpLm5hbWUgPSAnSW52YWxpZFRva2VuRXJyb3InO1xuXG5cbi8qKlxuICogRGVjb2RlIEpXVCB0b2tlblxuICpcbiAqIEBwYXJhbSB0b2tlblxuICogQHBhcmFtIG9wdGlvbnNcbiAqIEByZXR1cm5zIFRva2VuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBqd3REZWNvZGU8VD4odG9rZW46IHN0cmluZywgb3B0aW9ucz86IHtoZWFkZXI/OiBib29sZWFufSk6IFQge1xuICBpZiAodHlwZW9mIHRva2VuICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBJbnZhbGlkVG9rZW5FcnJvcignSW52YWxpZCB0b2tlbiBzcGVjaWZpZWQnKTtcbiAgfVxuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBjb25zdCBwb3MgPSBvcHRpb25zLmhlYWRlciA9PT0gdHJ1ZSA/IDAgOiAxO1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGJhc2U2NF91cmxfZGVjb2RlKHRva2VuLnNwbGl0KCcuJylbcG9zXSkpIGFzIFQ7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRva2VuRXJyb3IoYEludmFsaWQgdG9rZW4gc3BlY2lmaWVkOiAke2UubWVzc2FnZX1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==