UNPKG

@venly/connect

Version:

Venly Connect SDK

154 lines 7.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.VenlyConnect = void 0; var tslib_1 = require("tslib"); var Security_1 = require("./Security"); var Api_1 = require("../api/Api"); var WindowMode_1 = require("../models/WindowMode"); var Signer_1 = require("../signer/Signer"); var Utils_1 = tslib_1.__importDefault(require("../utils/Utils")); var Flows_1 = require("./Flows"); var DialogWindow_1 = require("../dialog/DialogWindow"); var VenlyConnect = /** @class */ (function () { function VenlyConnect(clientId, options) { var _this = this; this.clientId = clientId; this.windowMode = (options && options.windowMode) || WindowMode_1.WindowMode.POPUP; this.signUsing = (options && options.signUsing) || this.windowMode; this.useOverlayWithPopup = (options && options.useOverlayWithPopup != undefined) ? options.useOverlayWithPopup : true; Utils_1.default.rawEnvironment = options && options.environment || 'prod'; this._bearerTokenProvider = options && options.bearerTokenProvider || (function () { return _this.loginResult && _this.loginResult.authenticated && _this.auth && _this.auth.token || ''; }); if (this._bearerTokenProvider) { this.api = new Api_1.Api(Utils_1.default.urls.api, this._bearerTokenProvider); } this.flows = new Flows_1.Flows(this, this.clientId); DialogWindow_1.DialogWindow.addFonts(); } Object.defineProperty(VenlyConnect.prototype, "signer", { get: function () { return Signer_1.SignerFactory.createSignerFor(this.windowMode, this._bearerTokenProvider, this.clientId, { useOverlay: this.useOverlayWithPopup }); }, enumerable: false, configurable: true }); VenlyConnect.prototype.checkAuthenticated = function (options) { return tslib_1.__awaiter(this, void 0, void 0, function () { var authOptions, loginResult; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: if (!this.loginResult) return [3 /*break*/, 1]; return [2 /*return*/, this.afterAuthentication(this.loginResult)]; case 1: authOptions = tslib_1.__assign({}, options); authOptions.windowMode = authOptions.windowMode || this.windowMode; return [4 /*yield*/, Security_1.Security.checkAuthenticated(this.clientId, authOptions)]; case 2: loginResult = _a.sent(); return [2 /*return*/, this.afterAuthentication(loginResult)]; } }); }); }; VenlyConnect.prototype.logout = function (options) { var _this = this; this.loginResult = undefined; var windowMode = options && options.windowMode || this.windowMode; if (windowMode === WindowMode_1.WindowMode.REDIRECT) { return new Promise(function (resolve, reject) { var logoutOptions = {}; if (_this.auth) { if (options && options.redirectUri) { logoutOptions.post_logout_redirect_uri = options.redirectUri; } else { logoutOptions.post_logout_redirect_uri = window.location.href; } if (_this.auth.clientId) { logoutOptions.client_id = _this.auth.clientId; } if (_this.auth.idToken) { logoutOptions.id_token_hint = _this.auth.idToken; } var searchParams = new URLSearchParams(logoutOptions).toString(); var logoutURL = Utils_1.default.urls.login + "/realms/Arkane/protocol/openid-connect/logout"; Utils_1.default.openExternalUrl(searchParams ? logoutURL + "?" + searchParams : logoutURL, false); } else { if (options && options.redirectUri) { Utils_1.default.openExternalUrl(options.redirectUri, false); } else { resolve(); } } }); } else { if (this.auth) { return Security_1.Security.logout(this.auth).then(function () { return _this.auth = undefined; }); } else { return Promise.resolve(); } } }; VenlyConnect.prototype.addOnTokenRefreshCallback = function (tokenRefreshCallback) { if (tokenRefreshCallback) { Security_1.Security.onTokenUpdate = tokenRefreshCallback; } }; /* Deprecated - Use VenlyConnect.signer directly instead */ VenlyConnect.prototype.createSigner = function (windowMode, popupOptions) { if (!popupOptions || popupOptions.useOverlay == undefined) { popupOptions = { useOverlay: this.useOverlayWithPopup }; } return Signer_1.SignerFactory.createSignerFor(windowMode || this.signUsing || this.windowMode, this._bearerTokenProvider, this.clientId, popupOptions); }; VenlyConnect.prototype.isPopupSigner = function (signer) { return typeof signer.closePopup !== 'undefined'; }; /* Deprecated - Use flows.authenticate instead */ VenlyConnect.prototype.authenticate = function (options) { return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { return [2 /*return*/, this.flows.authenticate(options)]; }); }); }; /* Deprecated - Use flows.manageWallets instead */ VenlyConnect.prototype.manageWallets = function (chain, options) { return this.flows.manageWallets(chain, options); }; /* Deprecated - Use flows.linkWallets instead */ VenlyConnect.prototype.linkWallets = function (options) { return this.flows.linkWallets(options); }; VenlyConnect.prototype._afterAuthenticationForFlowUse = function (loginResult) { return this.afterAuthentication(loginResult); }; VenlyConnect.prototype.afterAuthentication = function (loginResult) { // this.auth is needed for the bearerTokenProvider this.loginResult = loginResult; this.auth = loginResult.keycloak; return { auth: this.auth, isAuthenticated: loginResult.authenticated, authenticated: function (callback) { if (loginResult.authenticated && loginResult.keycloak) { callback(loginResult.keycloak); } return this; }, notAuthenticated: function (callback) { if (!loginResult.authenticated) { callback(loginResult.keycloak); } return this; }, }; }; return VenlyConnect; }()); exports.VenlyConnect = VenlyConnect; //# sourceMappingURL=connect.js.map