diff --git a/artifacts/src/mosip-plugins/sign-in-button-plugin.js b/artifacts/src/mosip-plugins/sign-in-button-plugin.js
new file mode 100644
index 00000000..9d61e22d
--- /dev/null
+++ b/artifacts/src/mosip-plugins/sign-in-button-plugin.js
@@ -0,0 +1,687 @@
+/******************************************************************************
+Thu Aug 28 2025 10:39:44 GMT+0000 (Coordinated Universal Time)
+sign-in-with-esignet v0.9.0
+A vanilla javascript component for rendering “Sign in with..” button on mosip client’s web page for oidc integration.
+Copyright 2025
+MPL-2.0 license
+******************************************************************************/
+var SignInWithEsignetButton = (function (exports) {
+ 'use strict';
+
+ /******************************************************************************
+ Copyright (c) Microsoft Corporation.
+
+ Permission to use, copy, modify, and/or distribute this software for any
+ purpose with or without fee is hereby granted.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+ ***************************************************************************** */
+
+ function __rest(s, e) {
+ var t = {};
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+ t[p] = s[p];
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+ t[p[i]] = s[p[i]];
+ }
+ return t;
+ }
+
+ function __awaiter(thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+ }
+
+ function __generator(thisArg, body) {
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+ function verb(n) { return function (v) { return step([n, v]); }; }
+ function step(op) {
+ if (f) throw new TypeError("Generator is already executing.");
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+ if (y = 0, t) op = [op[0] & 2, t.value];
+ switch (op[0]) {
+ case 0: case 1: t = op; break;
+ case 4: _.label++; return { value: op[1], done: false };
+ case 5: _.label++; y = op[1]; op = [0]; continue;
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
+ default:
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+ if (t[2]) _.ops.pop();
+ _.trys.pop(); continue;
+ }
+ op = body.call(thisArg, _);
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+ }
+ }
+
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
+ var e = new Error(message);
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
+ };
+
+ var img = "data:image/png;base64,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";
+
+ var validResponseTypes = ["code"];
+ var validDisplays = ["page", "popup", "touch", "wap"];
+ var validPrompt = ["none", "login", "consent", "select_account"];
+ var defaultThemes = {
+ outline: "outline",
+ filledOrange: "filled_orange",
+ filledBlack: "filled_black",
+ custom: "custom",
+ };
+ var defaultShapes = {
+ sharpEdges: "sharp_edges",
+ softEdges: "soft_edges",
+ roundedEdges: "rounded_edges",
+ };
+ var buttonTypes = {
+ standard: "standard",
+ icon: "icon",
+ };
+ var errorMessage = {
+ requestUriTimeout: "Request timed out while fetching Request URI. Please try again later.",
+ requestUriFailed: "Failed to get Request URI. Please try again later.",
+ clientIdMissing: "Client ID missing.",
+ generic: "An unexpected error occurred. Please try again.",
+ dpopFailed: "DPoP callback failed. Please try again."
+ };
+ var defaultButtonLabel = "Sign in with e-Signet";
+
+ function styleInject(css, ref) {
+ if ( ref === void 0 ) ref = {};
+ var insertAt = ref.insertAt;
+
+ if (!css || typeof document === 'undefined') { return; }
+
+ var head = document.head || document.getElementsByTagName('head')[0];
+ var style = document.createElement('style');
+ style.type = 'text/css';
+
+ if (insertAt === 'top') {
+ if (head.firstChild) {
+ head.insertBefore(style, head.firstChild);
+ } else {
+ head.appendChild(style);
+ }
+ } else {
+ head.appendChild(style);
+ }
+
+ if (style.styleSheet) {
+ style.styleSheet.cssText = css;
+ } else {
+ style.appendChild(document.createTextNode(css));
+ }
+ }
+
+ var css_248z = "/* Theme specific css */\n.SignInWithEsignet-module_standardOutline__la5Rh {\n border: 2px solid #d8d8d8;\n background: #ffffff 0% 0% no-repeat padding-box;\n color: black;\n font: normal normal 600 14px/17px arial;\n}\n\n.SignInWithEsignet-module_filledOrange__0uQsC {\n border: 2px solid #eb6f2d;\n background: #eb6f2d 0% 0% no-repeat padding-box;\n color: white;\n font: normal normal 600 14px/17px arial;\n}\n\n.SignInWithEsignet-module_filledBlack__fo-0k {\n border: 2px solid #333333;\n background: #333333 0% 0% no-repeat padding-box;\n color: white;\n font: normal normal 600 14px/17px arial;\n}\n\n/* Common css */\n.SignInWithEsignet-module_sharpRectBox__jYEvo {\n width: 400px;\n height: 48px;\n display: flex;\n align-items: center;\n padding-left: 2px;\n padding-right: 2px;\n}\n\n.SignInWithEsignet-module_softRectBox__hXT5v {\n width: 400px;\n height: 48px;\n display: flex;\n align-items: center;\n border-radius: 8px;\n padding-left: 2px;\n padding-right: 2px;\n}\n\n.SignInWithEsignet-module_roundedRectBox__Gxr6n {\n width: 400px;\n height: 48px;\n display: flex;\n align-items: center;\n border-radius: 46px;\n padding-left: 3px;\n padding-right: 3px;\n}\n\n.SignInWithEsignet-module_sharpRectIcon__ux3fm {\n display: inline-block;\n}\n\n.SignInWithEsignet-module_softRectIcon__3TVEe {\n display: inline-block;\n border-radius: 8px;\n}\n\n.SignInWithEsignet-module_roundedRectIcon__dfq2Q {\n display: inline-block;\n border-radius: 46px;\n}\n\n.SignInWithEsignet-module_sharpLogoBox__DYo-n {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 44px;\n height: 44px;\n background: #ffffff 0% 0% no-repeat padding-box;\n}\n\n.SignInWithEsignet-module_softLogoBox__jj7aZ {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 44px;\n height: 44px;\n background: #ffffff 0% 0% no-repeat padding-box;\n border-radius: 6px;\n}\n\n.SignInWithEsignet-module_roundedLogoBox__KiQM1 {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 38px;\n height: 38px;\n background: #ffffff 0% 0% no-repeat padding-box;\n border-radius: 36px;\n}\n\n.SignInWithEsignet-module_sharpLogo__wyaBH {\n width: 38px;\n height: 38px;\n object-fit: contain;\n}\n\n.SignInWithEsignet-module_softLogo__Gk5mu {\n width: 38px;\n height: 38px;\n object-fit: contain;\n}\n\n.SignInWithEsignet-module_roundedLogo__cwx4t {\n width: 28px;\n height: 28px;\n object-fit: contain;\n}\n\n.SignInWithEsignet-module_textbox__k2CkO {\n text-align: left;\n padding-left: 16px;\n padding-right: 16px;\n letter-spacing: 0px;\n}\n";
+ var styles = {"standardOutline":"SignInWithEsignet-module_standardOutline__la5Rh","filledOrange":"SignInWithEsignet-module_filledOrange__0uQsC","filledBlack":"SignInWithEsignet-module_filledBlack__fo-0k","sharpRectBox":"SignInWithEsignet-module_sharpRectBox__jYEvo","softRectBox":"SignInWithEsignet-module_softRectBox__hXT5v","roundedRectBox":"SignInWithEsignet-module_roundedRectBox__Gxr6n","sharpRectIcon":"SignInWithEsignet-module_sharpRectIcon__ux3fm","softRectIcon":"SignInWithEsignet-module_softRectIcon__3TVEe","roundedRectIcon":"SignInWithEsignet-module_roundedRectIcon__dfq2Q","sharpLogoBox":"SignInWithEsignet-module_sharpLogoBox__DYo-n","softLogoBox":"SignInWithEsignet-module_softLogoBox__jj7aZ","roundedLogoBox":"SignInWithEsignet-module_roundedLogoBox__KiQM1","sharpLogo":"SignInWithEsignet-module_sharpLogo__wyaBH","softLogo":"SignInWithEsignet-module_softLogo__Gk5mu","roundedLogo":"SignInWithEsignet-module_roundedLogo__cwx4t","textbox":"SignInWithEsignet-module_textbox__k2CkO"};
+ styleInject(css_248z);
+
+ var defaultResponseType = "code";
+ /**
+ * Validates oidc configuration for required params and valid values
+ * @param oidcConfig oidc configuration prop
+ * @returns Error object with error code and error msg.
+ */
+ function validateInput(oidcConfig) {
+ //Required parameters
+ if (!oidcConfig ||
+ !oidcConfig.authorizeUri ||
+ !oidcConfig.redirect_uri ||
+ !oidcConfig.client_id ||
+ !oidcConfig.scope) {
+ return "Required parameter is missing";
+ }
+ //if the param is not null and has and an invalid value return error msg.
+ if (oidcConfig.response_type &&
+ !validResponseTypes.includes(oidcConfig.response_type)) {
+ return "Invalid Response Type";
+ }
+ if (oidcConfig.display && !validDisplays.includes(oidcConfig.display)) {
+ return "Invalid display value";
+ }
+ if (oidcConfig.prompt && !validPrompt.includes(oidcConfig.prompt)) {
+ return "Invalid prompt value";
+ }
+ return "";
+ }
+ /**
+ * Builds redirect URL to navigate to id provider's portal.
+ * @param oidcConfig
+ * @returns URL
+ */
+ function buildRedirectURL(oidcConfig, dpop_jkt) {
+ var urlToNavigate = (oidcConfig === null || oidcConfig === void 0 ? void 0 : oidcConfig.authorizeUri) + "?";
+ if (oidcConfig === null || oidcConfig === void 0 ? void 0 : oidcConfig.nonce)
+ urlToNavigate += "nonce=" + oidcConfig.nonce + "&";
+ //Generating random state if not provided
+ if (oidcConfig === null || oidcConfig === void 0 ? void 0 : oidcConfig.state) {
+ urlToNavigate += "state=" + oidcConfig.state;
+ }
+ else {
+ var randomNum = window.crypto.getRandomValues(new Uint32Array(1));
+ var randomState = randomNum[0].toString(36).substring(5);
+ urlToNavigate += "state=" + randomState;
+ }
+ if (oidcConfig === null || oidcConfig === void 0 ? void 0 : oidcConfig.client_id)
+ urlToNavigate += "&client_id=" + oidcConfig.client_id;
+ if (oidcConfig === null || oidcConfig === void 0 ? void 0 : oidcConfig.redirect_uri)
+ urlToNavigate += "&redirect_uri=" + oidcConfig.redirect_uri;
+ if (oidcConfig === null || oidcConfig === void 0 ? void 0 : oidcConfig.scope)
+ urlToNavigate += "&scope=" + oidcConfig.scope;
+ if (oidcConfig === null || oidcConfig === void 0 ? void 0 : oidcConfig.response_type) {
+ urlToNavigate += "&response_type=" + oidcConfig.response_type;
+ }
+ else {
+ urlToNavigate += "&response_type=" + defaultResponseType;
+ }
+ if (oidcConfig === null || oidcConfig === void 0 ? void 0 : oidcConfig.acr_values)
+ urlToNavigate += "&acr_values=" + (oidcConfig === null || oidcConfig === void 0 ? void 0 : oidcConfig.acr_values);
+ if (oidcConfig === null || oidcConfig === void 0 ? void 0 : oidcConfig.claims)
+ urlToNavigate += "&claims=" + encodeURI(JSON.stringify(oidcConfig.claims));
+ if (oidcConfig === null || oidcConfig === void 0 ? void 0 : oidcConfig.claims_locales)
+ urlToNavigate += "&claims_locales=" + oidcConfig.claims_locales;
+ if (oidcConfig === null || oidcConfig === void 0 ? void 0 : oidcConfig.display)
+ urlToNavigate += "&display=" + oidcConfig.display;
+ if (oidcConfig === null || oidcConfig === void 0 ? void 0 : oidcConfig.prompt)
+ urlToNavigate += "&prompt=" + oidcConfig.prompt;
+ if (oidcConfig === null || oidcConfig === void 0 ? void 0 : oidcConfig.max_age)
+ urlToNavigate += "&max_age=" + oidcConfig.max_age;
+ if (oidcConfig === null || oidcConfig === void 0 ? void 0 : oidcConfig.ui_locales)
+ urlToNavigate += "&ui_locales=" + oidcConfig.ui_locales;
+ if (dpop_jkt) {
+ urlToNavigate += "&dpop_jkt=" + dpop_jkt;
+ }
+ return urlToNavigate;
+ }
+ /**
+ * builds classes based on input shape, theme and button type.
+ *
+ * if theme is 'custom' then standard classes are applied and these clases
+ * are expected to be added by the button implementer.
+ *
+ * @param buttonConfig
+ * @returns classes
+ */
+ function buildButtonClasses(buttonConfig) {
+ var outerDivClasses = "";
+ var logoDivClasses = "";
+ var logoImgClasses = "";
+ var labelSpanClasses = styles.textbox;
+ if (buttonConfig.theme == defaultThemes.custom) {
+ return {
+ outerDivClasses: (outerDivClasses =
+ buttonConfig.type == buttonTypes.icon
+ ? "sign-in-outer-div-container-icon"
+ : "sign-in-outer-div-container-standard"),
+ logoDivClasses: "sign-in-logo-div-container",
+ logoImgClasses: "sign-in-logo-img",
+ labelSpanClasses: "sign-in-label-span",
+ };
+ }
+ //theme based styling
+ switch (buttonConfig.theme) {
+ case defaultThemes.outline:
+ outerDivClasses = styles.standardOutline;
+ break;
+ case defaultThemes.filledOrange:
+ outerDivClasses = styles.filledOrange;
+ break;
+ case defaultThemes.filledBlack:
+ outerDivClasses = styles.filledBlack;
+ break;
+ default: //default theme outline
+ outerDivClasses = styles.standardOutline;
+ }
+ //shaped based styling
+ switch (buttonConfig.shape) {
+ case defaultShapes.sharpEdges:
+ //default button type is standard. Setting shape based on button type
+ outerDivClasses +=
+ " " +
+ (buttonConfig.type == buttonTypes.icon
+ ? styles.sharpRectIcon
+ : styles.sharpRectBox);
+ logoDivClasses = styles.sharpLogoBox;
+ logoImgClasses = styles.sharpLogo;
+ break;
+ case defaultShapes.softEdges:
+ outerDivClasses +=
+ " " +
+ (buttonConfig.type == buttonTypes.icon
+ ? styles.softRectIcon
+ : styles.softRectBox);
+ logoDivClasses = styles.softLogoBox;
+ logoImgClasses = styles.softLogo;
+ break;
+ case defaultShapes.roundedEdges:
+ outerDivClasses +=
+ " " +
+ (buttonConfig.type == buttonTypes.icon
+ ? styles.roundedRectIcon
+ : styles.roundedRectBox);
+ logoDivClasses = styles.roundedLogoBox;
+ logoImgClasses = styles.roundedLogo;
+ break;
+ default: //default shaped SharpEdges
+ outerDivClasses +=
+ " " +
+ (buttonConfig.type == buttonTypes.icon
+ ? styles.sharpRectIcon
+ : styles.sharpRectBox);
+ logoDivClasses = styles.sharpLogoBox;
+ logoImgClasses = styles.sharpLogo;
+ }
+ return {
+ outerDivClasses: outerDivClasses,
+ logoDivClasses: logoDivClasses,
+ logoImgClasses: logoImgClasses,
+ labelSpanClasses: labelSpanClasses,
+ };
+ }
+ /**
+ * builds style for the outer div by updating baseStyle by adding/overriding
+ * button config styling parameters.
+ * @param baseStyle
+ * @param buttonConfig
+ * @returns style
+ */
+ function buildButtonStyles(baseStyle, buttonConfig) {
+ if (buttonConfig === null || buttonConfig === void 0 ? void 0 : buttonConfig.width)
+ baseStyle["width"] = buttonConfig.width;
+ if (buttonConfig === null || buttonConfig === void 0 ? void 0 : buttonConfig.background)
+ baseStyle["background"] = buttonConfig.background;
+ if (buttonConfig === null || buttonConfig === void 0 ? void 0 : buttonConfig.textColor)
+ baseStyle["color"] = buttonConfig.textColor;
+ if (buttonConfig === null || buttonConfig === void 0 ? void 0 : buttonConfig.borderWidth)
+ baseStyle["border-width"] = buttonConfig.borderWidth;
+ if (buttonConfig === null || buttonConfig === void 0 ? void 0 : buttonConfig.borderColor)
+ baseStyle["border-color"] = buttonConfig.borderColor;
+ if (buttonConfig === null || buttonConfig === void 0 ? void 0 : buttonConfig.font)
+ baseStyle["font"] = buttonConfig.font;
+ if (buttonConfig === null || buttonConfig === void 0 ? void 0 : buttonConfig.fontFamily) {
+ baseStyle["font-family"] = buttonConfig.fontFamily;
+ }
+ else {
+ //default font-family
+ baseStyle["font-family"] =
+ "-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen','Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',sans-serif";
+ }
+ return baseStyle;
+ }
+ /**
+ * builds style based on button type and custom style.
+ *
+ * if theme is 'custom' then standard classes are applied and these clases
+ * are expected to be added by the button implementer.
+ * @param baseStyle
+ * @param buttonConfig
+ * @returns
+ */
+ function buildButtonCustomStyles(baseStyle, buttonConfig) {
+ if (!buttonConfig.customStyle) {
+ return {};
+ }
+ var outerDiv = buttonConfig.type == buttonTypes.icon
+ ? buttonConfig.customStyle.outerDivStyleIcon
+ : buttonConfig.customStyle.outerDivStyleStandard;
+ Object.assign(baseStyle, outerDiv);
+ return {
+ outerDivStyle: buildButtonStyles(baseStyle, buttonConfig),
+ logoDivStyle: buttonConfig.customStyle.logoDivStyle,
+ logoImgStyle: buttonConfig.customStyle.logoImgStyle,
+ labelSpanStyle: buttonConfig.customStyle.labelSpanStyle,
+ };
+ }
+ /**
+ * style attrs applied on the element
+ * @param element
+ * @param attrs
+ */
+ var setStyleAttribute = function (element, attrs) {
+ if (attrs !== undefined) {
+ Object.keys(attrs).forEach(function (key) {
+ element.style.setProperty(key, attrs[key]);
+ });
+ }
+ };
+ /**
+ *
+ * Builds button while adding styles and classes on individual element
+ *
+ * In case of buttonClasses, the button should render like this.
+ * --conditional
+ * {errorObj + ". Please report to site admin"}
+ *
+ *
+ *
+ *
+ *

+ *
+ *
{buttonLabel} --conditional
+ *
+ *
+ * @param buttonLabel
+ * @param urlToNavigate
+ * @param buttonCustomStyle
+ * @param buttonClasses
+ * @param buttonStyle
+ * @param logoPath
+ * @param errorMsg
+ * @param type
+ * @returns
+ */
+ var createButton = function (buttonLabel, urlToNavigate, buttonCustomStyle, buttonClasses, buttonStyle, logoPath, errorMsg, type, onClickHandler) {
+ var _a, _b, _c, _d;
+ //Button
+ var anchor;
+ if (onClickHandler) {
+ anchor = document.createElement("button");
+ anchor.type = "button";
+ anchor.addEventListener("click", onClickHandler);
+ }
+ else {
+ anchor = document.createElement("a");
+ anchor.href = urlToNavigate;
+ anchor.style.textDecoration = "none";
+ }
+ var outerDiv = document.createElement("div");
+ var logoDiv = document.createElement("div");
+ var logoImg = document.createElement("img");
+ logoImg.src = logoPath;
+ var labelSpan = document.createElement("span");
+ labelSpan.innerHTML = buttonLabel;
+ if (buttonCustomStyle) {
+ //apply custom style
+ if (buttonCustomStyle.outerDivStyle)
+ anchor.style.width = buttonCustomStyle.outerDivStyle["width"];
+ setStyleAttribute(outerDiv, buttonCustomStyle.outerDivStyle);
+ setStyleAttribute(logoDiv, buttonCustomStyle.logoDivStyle);
+ setStyleAttribute(logoImg, buttonCustomStyle.logoImgStyle);
+ setStyleAttribute(labelSpan, buttonCustomStyle.labelSpanStyle);
+ }
+ else if (buttonClasses) {
+ //or apply classes
+ if (buttonStyle)
+ anchor.style.width = buttonStyle["width"];
+ setStyleAttribute(outerDiv, buttonStyle);
+ (_a = outerDiv.classList).add.apply(_a, buttonClasses.outerDivClasses.split(" "));
+ (_b = logoDiv.classList).add.apply(_b, buttonClasses.logoDivClasses.split(" "));
+ (_c = logoImg.classList).add.apply(_c, buttonClasses.logoImgClasses.split(" "));
+ (_d = labelSpan.classList).add.apply(_d, buttonClasses.labelSpanClasses.split(" "));
+ }
+ logoDiv.appendChild(logoImg);
+ outerDiv.appendChild(logoDiv);
+ //Do not add label span for icon button
+ if (type != buttonTypes.icon) {
+ outerDiv.appendChild(labelSpan);
+ }
+ if (errorMsg) {
+ //adding error span
+ var errorSpan = document.createElement("span");
+ errorSpan.style.color = "red";
+ errorSpan.style.color = "14px";
+ errorSpan.innerHTML = errorMsg + ". Please report to site admin";
+ anchor.appendChild(errorSpan);
+ }
+ anchor.appendChild(outerDiv);
+ return anchor;
+ };
+ function rerenderButton(signInElement, label, buttonCustomStyle, buttonClasses, buttonStyle, logoPath, errorMsg, buttonType) {
+ signInElement.innerHTML = "";
+ signInElement.appendChild(createButton(label, "", buttonCustomStyle, buttonClasses, buttonStyle, logoPath, errorMsg, buttonType));
+ }
+ function buildErrorRedirectUrl(errorDescription, errorCode, oidcConfig) {
+ if (!oidcConfig.redirect_uri)
+ return false;
+ var params = new URLSearchParams();
+ if (errorDescription)
+ params.set("error_description", errorDescription);
+ params.set("error", errorCode);
+ window.location.replace("".concat(oidcConfig.redirect_uri, "?").concat(params.toString()));
+ return true;
+ }
+ function promiseWithTimeout(promise, ms) {
+ return Promise.race([
+ promise,
+ new Promise(function (resolve) {
+ return setTimeout(function () { return resolve("timeout"); }, ms);
+ }),
+ ]);
+ }
+ function par_callback(callbackFunction, oidcConfig, dpop_jkt) {
+ return __awaiter(this, void 0, void 0, function () {
+ return __generator(this, function (_a) {
+ switch (_a.label) {
+ case 0:
+ if (!oidcConfig.client_id) {
+ return [2 /*return*/, errorMessage.clientIdMissing];
+ }
+ _a.label = 1;
+ case 1:
+ _a.trys.push([1, 3, , 4]);
+ return [4 /*yield*/, callbackFunction(oidcConfig.client_id, oidcConfig.state, oidcConfig.ui_locales, dpop_jkt)];
+ case 2: return [2 /*return*/, _a.sent()];
+ case 3:
+ _a.sent();
+ return [2 /*return*/, errorMessage.requestUriFailed];
+ case 4: return [2 /*return*/];
+ }
+ });
+ });
+ }
+ function dpop_callback(callbackFunction, oidcConfig) {
+ return __awaiter(this, void 0, void 0, function () {
+ return __generator(this, function (_a) {
+ switch (_a.label) {
+ case 0:
+ if (!oidcConfig.client_id) {
+ return [2 /*return*/, errorMessage.clientIdMissing];
+ }
+ _a.label = 1;
+ case 1:
+ _a.trys.push([1, 3, , 4]);
+ return [4 /*yield*/, callbackFunction(oidcConfig.client_id, oidcConfig.state)];
+ case 2: return [2 /*return*/, _a.sent()];
+ case 3:
+ _a.sent();
+ return [2 /*return*/, errorMessage.dpopFailed];
+ case 4: return [2 /*return*/];
+ }
+ });
+ });
+ }
+ function getTimeoutMs(timeout, fallback) {
+ if (fallback === void 0) { fallback = 5000; }
+ var parsed = typeof timeout === "string" ? parseInt(timeout, 10) : timeout;
+ return typeof parsed === "number" && Number.isFinite(parsed) && parsed > 0
+ ? parsed
+ : fallback;
+ }
+ var SignInWithEsignet = function (_a) { return __awaiter(void 0, void 0, void 0, function () {
+ var oidcConfig, buttonConfig, signInElement, style, hasFunction, hasDpopCallback, hasParCallback, errorMsg, urlToNavigate, handleParCallback, handleDPopCallback, onClickHandler, label, logoPath, baseStyle, buttonCustomStyle, buttonClasses, buttonStyle, button;
+ var _b, _c;
+ var props = __rest(_a, []);
+ return __generator(this, function (_d) {
+ oidcConfig = props.oidcConfig, buttonConfig = props.buttonConfig, signInElement = props.signInElement, style = props.style;
+ hasFunction = function (fn) { return typeof fn === "function"; };
+ hasDpopCallback = oidcConfig && hasFunction(oidcConfig.dpop_callback);
+ hasParCallback = oidcConfig && hasFunction(oidcConfig.par_callback);
+ if (signInElement == null) {
+ return [2 /*return*/, signInElement];
+ }
+ errorMsg = validateInput(oidcConfig);
+ urlToNavigate = "#";
+ handleParCallback = function (event, dpop_jkt) { return __awaiter(void 0, void 0, void 0, function () {
+ var timeoutMs, result, redirected_1, redirected;
+ return __generator(this, function (_a) {
+ switch (_a.label) {
+ case 0:
+ event.preventDefault();
+ timeoutMs = getTimeoutMs(oidcConfig.par_callback_timeout, 5000);
+ return [4 /*yield*/, promiseWithTimeout(par_callback(oidcConfig.par_callback, oidcConfig, dpop_jkt), timeoutMs)];
+ case 1:
+ result = _a.sent();
+ if (result === "timeout") {
+ redirected_1 = buildErrorRedirectUrl(errorMessage.requestUriTimeout, "request_uri_timeout", oidcConfig);
+ if (!redirected_1) {
+ errorMsg = errorMessage.requestUriTimeout;
+ rerenderButton(signInElement, label, buttonCustomStyle, buttonClasses, buttonStyle, logoPath, errorMsg, buttonConfig.type);
+ }
+ return [2 /*return*/];
+ }
+ if (typeof result === "string" &&
+ result.startsWith("urn:ietf:params:oauth:request_uri:")) {
+ urlToNavigate = "".concat(oidcConfig.authorizeUri, "?client_id=").concat(encodeURIComponent(oidcConfig.client_id), "&request_uri=").concat(encodeURIComponent(result));
+ window.location.href = urlToNavigate;
+ return [2 /*return*/];
+ }
+ redirected = buildErrorRedirectUrl(errorMessage.requestUriFailed, "request_uri_error", oidcConfig);
+ if (!redirected) {
+ errorMsg = errorMessage.requestUriFailed;
+ rerenderButton(signInElement, label, buttonCustomStyle, buttonClasses, buttonStyle, logoPath, errorMsg, buttonConfig.type);
+ }
+ return [2 /*return*/];
+ }
+ });
+ }); };
+ handleDPopCallback = function (event) { return __awaiter(void 0, void 0, void 0, function () {
+ return __generator(this, function (_a) {
+ switch (_a.label) {
+ case 0:
+ event.preventDefault();
+ return [4 /*yield*/, dpop_callback(oidcConfig.dpop_callback, oidcConfig)];
+ case 1: return [2 /*return*/, _a.sent()];
+ }
+ });
+ }); };
+ onClickHandler = function (event) { return __awaiter(void 0, void 0, void 0, function () {
+ var dpop_jkt, dpop_response, redirected, err_1;
+ return __generator(this, function (_a) {
+ switch (_a.label) {
+ case 0:
+ event.preventDefault();
+ _a.label = 1;
+ case 1:
+ _a.trys.push([1, 10, , 11]);
+ dpop_jkt = "";
+ if (!hasDpopCallback) return [3 /*break*/, 6];
+ return [4 /*yield*/, handleDPopCallback(event)];
+ case 2:
+ dpop_response = _a.sent();
+ if (dpop_response && !Object.values(errorMessage).includes(dpop_response)) {
+ dpop_jkt = dpop_response;
+ }
+ else {
+ redirected = buildErrorRedirectUrl(dpop_response, "dpop_failed", oidcConfig);
+ if (!redirected) {
+ errorMsg = errorMessage.dpopFailed;
+ rerenderButton(signInElement, label, buttonCustomStyle, buttonClasses, buttonStyle, logoPath, errorMsg, buttonConfig.type);
+ }
+ return [2 /*return*/];
+ }
+ if (!hasParCallback) return [3 /*break*/, 4];
+ // Then handle PAR if available
+ return [4 /*yield*/, handleParCallback(event, dpop_jkt)];
+ case 3:
+ // Then handle PAR if available
+ _a.sent();
+ return [3 /*break*/, 5];
+ case 4:
+ if (!errorMsg) {
+ urlToNavigate = buildRedirectURL(oidcConfig, dpop_jkt);
+ window.location.href = urlToNavigate;
+ }
+ _a.label = 5;
+ case 5: return [3 /*break*/, 9];
+ case 6:
+ if (!hasParCallback) return [3 /*break*/, 8];
+ // Only PAR
+ return [4 /*yield*/, handleParCallback(event)];
+ case 7:
+ // Only PAR
+ _a.sent();
+ return [3 /*break*/, 9];
+ case 8:
+ if (!errorMsg) {
+ // Fallback redirect
+ urlToNavigate = buildRedirectURL(oidcConfig);
+ window.location.href = urlToNavigate;
+ }
+ _a.label = 9;
+ case 9: return [3 /*break*/, 11];
+ case 10:
+ err_1 = _a.sent();
+ console.error("Error in button handler:", err_1);
+ return [3 /*break*/, 11];
+ case 11: return [2 /*return*/];
+ }
+ });
+ }); };
+ if (!buttonConfig) {
+ //default values
+ buttonConfig = {
+ type: buttonTypes.standard,
+ theme: defaultThemes.outline,
+ labelText: defaultButtonLabel,
+ shape: defaultShapes.sharpEdges,
+ };
+ }
+ label = (_b = buttonConfig.labelText) !== null && _b !== void 0 ? _b : defaultButtonLabel;
+ logoPath = (_c = buttonConfig.logoPath) !== null && _c !== void 0 ? _c : img;
+ baseStyle = style || {};
+ buttonCustomStyle = null;
+ buttonClasses = null;
+ buttonStyle = {};
+ // customStyle has precedence over buttonClasses
+ if (buttonConfig.customStyle) {
+ buttonCustomStyle = buildButtonCustomStyles(baseStyle, buttonConfig);
+ }
+ else {
+ buttonClasses = buildButtonClasses(buttonConfig);
+ buttonStyle = buildButtonStyles(baseStyle, buttonConfig);
+ }
+ button = createButton(label, urlToNavigate, buttonCustomStyle, buttonClasses, buttonStyle, logoPath, errorMsg, buttonConfig.type, onClickHandler);
+ signInElement.innerHTML = "";
+ signInElement.appendChild(button);
+ return [2 /*return*/, signInElement];
+ });
+ }); };
+ var init = function (_a) { return __awaiter(void 0, void 0, void 0, function () {
+ var props = __rest(_a, []);
+ return __generator(this, function (_b) {
+ switch (_b.label) {
+ case 0: return [4 /*yield*/, SignInWithEsignet(props)];
+ case 1: return [2 /*return*/, _b.sent()];
+ }
+ });
+ }); };
+
+ exports.init = init;
+
+ Object.defineProperty(exports, '__esModule', { value: true });
+
+ return exports;
+
+})({});