UNPKG

sinch-rtc

Version:

RTC JavaScript/Web SDK

36 lines 1.22 kB
"use strict"; 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