UNPKG

baqend

Version:

Baqend JavaScript SDK

110 lines 8.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TokenStorage = void 0; var util_1 = require("../util"); var TokenStorage = /** @class */ (function () { /** * @param origin The origin where the token belongs to * @param token The initial token * @param temporary If the token should be saved temporary or permanently */ function TokenStorage(origin, token, temporary) { this.tokenData = token ? TokenStorage.parse(token) : null; this.origin = origin; this.temporary = !!temporary; } /** * Parse a token string in its components * @param token The token string to parse, time values are returned as timestamps * @return The parsed token data */ TokenStorage.parse = function (token) { return { val: token, createdAt: parseInt(token.substring(0, 8), 16) * 1000, expireAt: parseInt(token.substring(8, 16), 16) * 1000, sig: token.substring(token.length - 40), data: token.substring(0, token.length - 40), }; }; Object.defineProperty(TokenStorage.prototype, "token", { /** * Get the stored token * @return The token or undefined, if no token is available */ get: function () { return this.tokenData ? this.tokenData.val : null; }, enumerable: false, configurable: true }); TokenStorage.create = function (origin) { return Promise.resolve(new TokenStorage(origin)); }; /** * Use the underlying storage implementation to save the token * @param origin The origin where the token belongs to * @param token The initial token * @param temporary If the token should be saved temporary or permanently * @return */ TokenStorage.prototype.saveToken = function (origin, token, temporary) { // eslint-disable-next-line no-underscore-dangle if (this._saveToken !== TokenStorage.prototype._saveToken) { // eslint-disable-next-line no-console console.log('Using deprecated TokenStorage._saveToken implementation.'); // eslint-disable-next-line no-underscore-dangle this._saveToken(origin, token, temporary); } }; /** * Use the underlying storage implementation to save the token * @param origin The origin where the token belongs to * @param token The initial token * @param temporary If the token should be saved temporary or permanently * @return * @deprecated Use TokenStorage#saveToken instead * @protected */ // eslint-disable-next-line @typescript-eslint/no-unused-vars TokenStorage.prototype._saveToken = function (origin, token, temporary) { }; /** * Update the token for the givin origin, the operation may be asynchronous * @param token The token to store or <code>null</code> to remove the token */ TokenStorage.prototype.update = function (token) { var t = token ? TokenStorage.parse(token) : null; if (this.tokenData && t && this.tokenData.expireAt > t.expireAt) { // an older token was fetched from the cache, so ignore it return; } this.tokenData = t; this.saveToken(this.origin, token, this.temporary); }; /** * Derives a resource token from the stored origin token and signs the resource with the generated resource token * * @param resource The resource which will be accessible with the returned token * @param sign Sign the given resource with a token, if sign is false the resource will only be encoded to a path * @return A resource token which can only be used to access the specified resource */ TokenStorage.prototype.signPath = function (resource, sign) { if (sign === void 0) { sign = true; } var tokenData = this.tokenData; var result = Promise.resolve(resource.split('/').map(encodeURIComponent).join('/')); if (!tokenData || !sign) { return result; } return result.then(function (path) { return TokenStorage.hmac(path + tokenData.data, tokenData.sig) .then(function (hash) { return "".concat(path, "?BAT=").concat(tokenData.data + hash); }); }) .catch(function (e) { // eslint-disable-next-line no-console console.warn('Can\'t sign the resource, run the SDK on a secured origin, or provide an alternative hmac implementation on TokenStorage.hmac', e); return result; }); }; TokenStorage.hmac = util_1.hmac; return TokenStorage; }()); exports.TokenStorage = TokenStorage; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVG9rZW5TdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2ludGVyc2VjdGlvbi9Ub2tlblN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0NBQStCO0FBcUIvQjtJQWlERTs7OztPQUlHO0lBQ0gsc0JBQVksTUFBYyxFQUFFLEtBQXFCLEVBQUUsU0FBbUI7UUFDcEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMxRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDL0IsQ0FBQztJQXBDRDs7OztPQUlHO0lBQ0ksa0JBQUssR0FBWixVQUFhLEtBQWE7UUFDeEIsT0FBTztZQUNMLEdBQUcsRUFBRSxLQUFLO1lBQ1YsU0FBUyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJO1lBQ3JELFFBQVEsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSTtZQUNyRCxHQUFHLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUN2QyxJQUFJLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7U0FDNUMsQ0FBQztJQUNKLENBQUM7SUFNRCxzQkFBSSwrQkFBSztRQUpUOzs7V0FHRzthQUNIO1lBQ0UsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMs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