@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
36 lines • 3.65 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';
export class InvalidTokenError {
constructor(message) {
this.message = message;
}
}
// 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 || {};
const 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LWRlY29kZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0ZXJtaW51cy9uZ3gtdG9vbHMvand0LyIsInNvdXJjZXMiOlsiand0LWRlY29kZS9qd3QtZGVjb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdHQUFnRztBQUNoRyxxQ0FBcUM7QUFDckMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHeEQsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixZQUFtQixPQUFlO1FBQWYsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUFHLENBQUM7Q0FDdkM7QUFFRCw4REFBOEQ7QUFDN0QsaUJBQWlCLENBQUMsU0FBaUIsQ0FBQyxJQUFJLEdBQUcsbUJBQW1CLENBQUM7QUFHaEU7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBSSxLQUFhLEVBQUUsT0FBNEI7SUFDdEUsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDN0IsTUFBTSxJQUFJLGlCQUFpQixDQUFDLHlCQUF5QixDQUFDLENBQUM7S0FDeEQ7SUFFRCxPQUFPLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztJQUN4QixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUMsSUFBSTtRQUNGLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sQ0FBQztLQUNsRTtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsSUFBSSxDQUFDLFlBQVksS0FBSyxFQUFFO1lBQ3RCLE1BQU0sSUFBSSxpQkFBaUIsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDdEU7YUFBTTtZQUNMLE1BQU0sQ0FBQyxDQUFDO1NBQ1Q7S0FDRjtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBSZXdyaXR0ZW4gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYXV0aDAvand0LWRlY29kZS90cmVlL21hc3Rlci9saWIgdG8gYmUgdHlwZXNjcmlwdCBjb21wbGlhbnRcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjYW1lbGNhc2VcbmltcG9ydCB7IGJhc2U2NF91cmxfZGVjb2RlIH0gZnJvbSAnLi9iYXNlNjQtdXJsLWRlY29kZSc7XG5cblxuZXhwb3J0IGNsYXNzIEludmFsaWRUb2tlbkVycm9yIHtcbiAgY29uc3RydWN0b3IocHVibGljIG1lc3NhZ2U6IHN0cmluZykge31cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbihJbnZhbGlkVG9rZW5FcnJvci5wcm90b3R5cGUgYXMgYW55KS5uYW1lID0gJ0ludmFsaWRUb2tlbkVycm9yJztcblxuXG4vKipcbiAqIERlY29kZSBKV1QgdG9rZW5cbiAqXG4gKiBAcGFyYW0gdG9rZW5cbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcmV0dXJucyBUb2tlblxuICovXG5leHBvcnQgZnVuY3Rpb24gand0RGVjb2RlPFQ+KHRva2VuOiBzdHJpbmcsIG9wdGlvbnM/OiB7aGVhZGVyPzogYm9vbGVhbn0pOiBUIHtcbiAgaWYgKHR5cGVvZiB0b2tlbiAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZFRva2VuRXJyb3IoJ0ludmFsaWQgdG9rZW4gc3BlY2lmaWVkJyk7XG4gIH1cblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgY29uc3QgcG9zID0gb3B0aW9ucy5oZWFkZXIgPT09IHRydWUgPyAwIDogMTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShiYXNlNjRfdXJsX2RlY29kZSh0b2tlbi5zcGxpdCgnLicpW3Bvc10pKSBhcyBUO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUb2tlbkVycm9yKGBJbnZhbGlkIHRva2VuIHNwZWNpZmllZDogJHtlLm1lc3NhZ2V9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG59XG4iXX0=