sinch-rtc
Version:
RTC JavaScript/Web SDK
36 lines • 1.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.JWT = void 0;
const utils_1 = require("../utils");
const Errors_1 = require("../utils/Errors");
class JWT {
constructor(claims) {
this.claims = claims;
}
static parse(token) {
const parts = token.split(".");
if (parts.length != 3)
throw new Errors_1.ArgumentError(`Inavlid JWT: ${token}`, (0, utils_1.nameof)(token));
const payload = JSON.parse(new TextDecoder().decode(utils_1.Base64Helper.decodeUrlSafeToUint8Array(parts[1])));
return new JWT(payload);
}
getClaim(key) {
return this.claims[key];
}
get instanceExpireAt() {
const expireAt = this.getClaim(JWT.INSTANCE_EXP_KEY);
return expireAt ? new Date(expireAt * 1000) : undefined;
}
get iat() {
return this.getClaim(JWT.ISSUED_AT_KEY);
}
get instanceTtl() {
var _a;
return ((((_a = this.getClaim(JWT.INSTANCE_EXP_KEY)) !== null && _a !== void 0 ? _a : Number.MAX_VALUE) - this.iat) *
1000);
}
}
exports.JWT = JWT;
JWT.INSTANCE_EXP_KEY = "sinch:rtc:instance:exp";
JWT.ISSUED_AT_KEY = "iat";
//# sourceMappingURL=jwt.js.map