rs-jwt
Version:
A really simple JSON Web Token reader.
34 lines (33 loc) • 1.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const js_base64_1 = require("js-base64");
const split_token_1 = require("./split-token");
const jwt_1 = require("./jwt");
class RSJwt {
parse(token) {
const split = this.splitToken(token);
return new jwt_1.Jwt(JSON.parse(this.decode(split.getHeader())), JSON.parse(this.decode(split.getPayload())), split.getSignature());
}
splitToken(token) {
const parts = token.split('.');
return new split_token_1.SplitToken(parts[0], parts[1], parts[2]);
}
decode(base64Url) {
let base64 = this.toBase64(base64Url);
base64 = this.addPadding(base64);
return this.base64Decode(base64);
}
toBase64(base64Url) {
return base64Url.replace('-', '+').replace('_', '/');
}
addPadding(base64) {
if (base64.length % 4 !== 0) {
return this.addPadding(base64 + '=');
}
return base64;
}
base64Decode(base64) {
return js_base64_1.Base64.decode(base64);
}
}
exports.RSJwt = RSJwt;