@dataswift/hat-js
Version:
HAT JavaScript SDK for web and Node.js
66 lines (65 loc) • 2.32 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.State = void 0;
var HatTokenValidation_1 = require("./utils/HatTokenValidation");
var Utils_1 = require("./utils/Utils");
var HatCustomError_1 = require("./utils/HatCustomError");
var State = /** @class */ (function () {
function State(state) {
this.apiVersion = '';
this.hatDomain = '';
this.token = '';
this.secure = true;
this.authenticated = false;
this.observers = [];
this.validateConfig(state);
}
State.prototype.setToken = function (token) {
this.token = token;
this.notifyObservers();
};
State.prototype.signOut = function () {
this.apiVersion = '';
this.hatDomain = '';
this.token = '';
this.secure = true;
this.authenticated = false;
this.notifyObservers();
};
State.prototype.addObserver = function (o) {
this.observers.push(o);
};
State.prototype.notifyObservers = function () {
for (var _i = 0, _a = this.observers; _i < _a.length; _i++) {
var obs = _a[_i];
obs.update(this);
}
};
State.prototype.validateConfig = function (config) {
var apiVersion = config.apiVersion, token = config.token, secure = config.secure;
if (!token) {
return;
}
if (config.onTokenChange) {
this.onTokenChange = config.onTokenChange;
}
if (apiVersion) {
this.apiVersion = apiVersion;
}
if (secure === false) {
this.secure = secure;
}
var decodedToken = HatTokenValidation_1.HatTokenValidation.decodeToken(token);
if (HatTokenValidation_1.HatTokenValidation.isExpired(decodedToken) || !decodedToken.iss) {
console.error(new HatCustomError_1.HatCustomError(HatCustomError_1.HatCustomErrorCauses.tokenValidation, HatCustomError_1.HatCustomErrorMessages.tokenIsNotValidOrExpired));
return;
}
var httpProtocol = Utils_1.Utils.getProtocol(secure);
this.authenticated = true;
this.hatDomain = "" + (httpProtocol + decodedToken.iss);
this.token = token;
this.notifyObservers();
};
return State;
}());
exports.State = State;