@venly/connect
Version:
Venly Connect SDK
154 lines • 7.21 kB
JavaScript
"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