@descope/web-component 3.43.3 → 3.43.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/debugger-wc.js +1 -1
- package/dist/cjs/debugger-wc.js.map +1 -1
- package/dist/cjs/descope-wc/BaseDescopeWc.js +1 -1
- package/dist/cjs/descope-wc/BaseDescopeWc.js.map +1 -1
- package/dist/cjs/descope-wc/DescopeWc.js +1 -1
- package/dist/cjs/descope-wc/DescopeWc.js.map +1 -1
- package/dist/esm/debugger-wc.js +1 -1
- package/dist/esm/debugger-wc.js.map +1 -1
- package/dist/esm/descope-wc/BaseDescopeWc.js +1 -1
- package/dist/esm/descope-wc/BaseDescopeWc.js.map +1 -1
- package/dist/esm/descope-wc/DescopeWc.js +1 -1
- package/dist/esm/descope-wc/DescopeWc.js.map +1 -1
- package/dist/index.d.ts +436 -74
- package/dist/index.js +2 -2
- package/package.json +4 -4
package/dist/cjs/debugger-wc.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("tslib");require("./constants/content.js"),require("./constants/uiComponents.js"),require("./types.js");var
|
|
1
|
+
"use strict";var e=require("tslib"),t=require("@descope/sdk-helpers"),s=require("@descope/sdk-mixins/inject-style-mixin");require("./constants/content.js"),require("./constants/uiComponents.js"),require("./types.js");var i=require("./helpers/state.js");require("@descope/escape-markdown"),require("./helpers/webauthn.js");var n,l,a,r,o,d,c,p,h,g,v,m=require("./helpers/positionHelpers.js");const _=document.createElement("template");_.innerHTML='\n<div class="debugger">\n <div class="header">\n <span>Debugger messages</span>\n </div>\n <div class="content">\n <div class="empty-state">\n No errors detected 👀\n </div>\n </div>\n</div>\n';const u=t.compose(s.injectStyleMixin)(HTMLElement);class f extends u{constructor(){super(),n.add(this),l.set(this,new i({messages:[]})),a.set(this,void 0),r.set(this,void 0),o.set(this,void 0),d.set(this,{resize:e.__classPrivateFieldGet(this,n,"m",v).bind(this)}),this.attachShadow({mode:"open"}),this.shadowRoot.appendChild(_.content.cloneNode(!0)),e.__classPrivateFieldSet(this,a,this.shadowRoot.querySelector(".debugger"),"f"),e.__classPrivateFieldSet(this,r,e.__classPrivateFieldGet(this,a,"f").querySelector(".content"),"f"),e.__classPrivateFieldSet(this,o,e.__classPrivateFieldGet(this,a,"f").querySelector(".header"),"f"),e.__classPrivateFieldGet(this,n,"m",c).call(this)}updateData(t){e.__classPrivateFieldGet(this,l,"f").update((e=>({messages:e.messages.concat(t)})))}init(){const t=Object.create(null,{init:{get:()=>super.init}});return e.__awaiter(this,void 0,void 0,(function*(){var s;null===(s=t.init)||void 0===s||s.call(this),m.dragElement(e.__classPrivateFieldGet(this,a,"f"),e.__classPrivateFieldGet(this,o,"f"),{top:"all",bottom:100,left:100,right:100}),window.addEventListener("resize",e.__classPrivateFieldGet(this,d,"f").resize),m.addOnResize(e.__classPrivateFieldGet(this,a,"f")),e.__classPrivateFieldGet(this,a,"f").onresize=e.__classPrivateFieldGet(this,n,"m",g).bind(this),e.__classPrivateFieldGet(this,l,"f").subscribe(e.__classPrivateFieldGet(this,n,"m",p).bind(this))}))}disconnectedCallback(){e.__classPrivateFieldGet(this,l,"f").unsubscribeAll(),window.removeEventListener("resize",e.__classPrivateFieldGet(this,d,"f").resize)}}l=new WeakMap,a=new WeakMap,r=new WeakMap,o=new WeakMap,d=new WeakMap,n=new WeakSet,c=function(){this.injectStyle('\n .debugger {\n all: initial;\n width: 300px;\n height: 200px;\n background-color: #FAFAFA;\n position: fixed;\n font-family: "Helvetica Neue", sans-serif;\n box-shadow: rgba(0, 0, 0, 0.1) 0px 5px 10px;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid lightgrey;\n pointer-events: initial;\n display: flex;\n flex-direction: column;\n min-width: 200px;\n max-width: 600px;\n max-height: calc(100% - 64px);\n min-height: 200px;\n resize: both;\n }\n\n .header {\n padding: 8px 16px;\n display: flex;\n align-items: center;\n background-color: #EEEEEE;\n cursor: move;\n border-bottom: 1px solid #e0e0e0;\n }\n\n .content {\n font-size: 14px;\n flex-grow: 1;\n overflow: auto;\n }\n\n .msg {\n border-bottom: 1px solid lightgrey;\n padding: 8px 16px;\n display: flex;\n gap: 5px;\n background-color: #FAFAFA;\n }\n\n .msg.collapsible {\n cursor: pointer;\n }\n\n .empty-state {\n padding: 8px 16px;\n background-color: #FAFAFA;\n }\n\n\n .msg.collapsible:not(.collapsed) {\n background-color: #F5F5F5;\n }\n\n .msg_title {\n padding-bottom: 5px;\n display: flex;\n gap: 8px;\n font-weight: 500;\n }\n\n .msg svg {\n padding: 1px;\n flex-shrink: 0;\n margin-top: -2px;\n }\n\n .msg_content {\n overflow: hidden;\n flex-grow: 1;\n margin-right:5px;\n }\n\n .msg_desc {\n color: #646464;\n cursor: initial;\n word-wrap: break-word;\n }\n\n .msg.collapsed .msg_desc {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .msg.collapsible.collapsed .chevron {\n transform: rotate(-45deg) translateX(-2px);\n }\n\n .msg.collapsible .chevron {\n content: "";\n width:6px;\n height:6px;\n border-bottom: 2px solid grey;\n border-right: 2px solid grey;\n transform: rotate(45deg) translateX(-1px);\n margin: 5px;\n flex-shrink:0;\n }\n'),e.__classPrivateFieldGet(this,a,"f").style.top="32px",e.__classPrivateFieldGet(this,a,"f").style.left=window.innerWidth-300-32+"px"},p=function(t){e.__classPrivateFieldGet(this,n,"m",h).call(this,t),e.__classPrivateFieldGet(this,n,"m",g).call(this)},h=function(t){e.__classPrivateFieldGet(this,r,"f").innerHTML=t.messages.map((e=>`\n <div class="msg">\n <svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">\n<path d="M5.99984 13.167L8.99984 10.167L11.9998 13.167L13.1665 12.0003L10.1665 9.00033L13.1665 6.00033L11.9998 4.83366L8.99984 7.83366L5.99984 4.83366L4.83317 6.00033L7.83317 9.00033L4.83317 12.0003L5.99984 13.167ZM8.99984 17.3337C7.84706 17.3337 6.76373 17.1148 5.74984 16.677C4.73595 16.2398 3.854 15.6462 3.104 14.8962C2.354 14.1462 1.76039 13.2642 1.32317 12.2503C0.885393 11.2364 0.666504 10.1531 0.666504 9.00033C0.666504 7.84755 0.885393 6.76421 1.32317 5.75033C1.76039 4.73644 2.354 3.85449 3.104 3.10449C3.854 2.35449 4.73595 1.7606 5.74984 1.32283C6.76373 0.885603 7.84706 0.666992 8.99984 0.666992C10.1526 0.666992 11.2359 0.885603 12.2498 1.32283C13.2637 1.7606 14.1457 2.35449 14.8957 3.10449C15.6457 3.85449 16.2393 4.73644 16.6765 5.75033C17.1143 6.76421 17.3332 7.84755 17.3332 9.00033C17.3332 10.1531 17.1143 11.2364 16.6765 12.2503C16.2393 13.2642 15.6457 14.1462 14.8957 14.8962C14.1457 15.6462 13.2637 16.2398 12.2498 16.677C11.2359 17.1148 10.1526 17.3337 8.99984 17.3337ZM8.99984 15.667C10.8609 15.667 12.4373 15.0212 13.729 13.7295C15.0207 12.4378 15.6665 10.8614 15.6665 9.00033C15.6665 7.13921 15.0207 5.56283 13.729 4.27116C12.4373 2.97949 10.8609 2.33366 8.99984 2.33366C7.13873 2.33366 5.56234 2.97949 4.27067 4.27116C2.979 5.56283 2.33317 7.13921 2.33317 9.00033C2.33317 10.8614 2.979 12.4378 4.27067 13.7295C5.56234 15.0212 7.13873 15.667 8.99984 15.667Z" fill="#ED404A"/>\n</svg>\n\n <div class="msg_content">\n <div class="msg_title">\n ${e.title}\n </div>\n <div class="msg_desc">\n ${e.description}\n </div>\n </div>\n <div class="chevron"></div>\n </div>\n `)).join("")},g=function(){e.__classPrivateFieldGet(this,r,"f").querySelectorAll(".msg").forEach((e=>{const t=e.querySelector(".msg_desc"),s=t.scrollWidth>t.clientWidth,i=t.clientHeight>20;s||i?(e.classList.add("collapsible"),e.onclick=t=>{t.target.classList.contains("msg_desc")||e.classList.toggle("collapsed")}):(e.classList.remove("collapsible"),e.onclick=null)}))},v=function(){const[t,s]=m.limitCoordinateToScreenBoundaries(e.__classPrivateFieldGet(this,a,"f"),Number.parseInt(e.__classPrivateFieldGet(this,a,"f").style.left,10),Number.parseInt(e.__classPrivateFieldGet(this,a,"f").style.top,10),{top:"all",bottom:100,left:100,right:100});e.__classPrivateFieldGet(this,a,"f").style.top=`${s}px`,e.__classPrivateFieldGet(this,a,"f").style.left=`${t}px`},customElements.get("descope-debugger")||customElements.define("descope-debugger",f),module.exports=f;
|
|
2
2
|
//# sourceMappingURL=debugger-wc.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debugger-wc.js","sources":["../../src/lib/debugger-wc.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport {\n addOnResize,\n dragElement,\n limitCoordinateToScreenBoundaries,\n State,\n} from './helpers';\nimport { DebuggerMessage } from './types';\n\nconst INITIAL_POS_THRESHOLD = 32;\nconst INITIAL_WIDTH = 300;\nconst INITIAL_HEIGHT = 200;\nconst MIN_SIZE = 200;\n\nconst template = document.createElement('template');\ntemplate.innerHTML = `\n<div class=\"debugger\">\n <div class=\"header\">\n <span>Debugger messages</span>\n </div>\n <div class=\"content\">\n <div class=\"empty-state\">\n No errors detected 👀\n </div>\n </div>\n</div>\n`;\n\nconst icon = `<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M5.99984 13.167L8.99984 10.167L11.9998 13.167L13.1665 12.0003L10.1665 9.00033L13.1665 6.00033L11.9998 4.83366L8.99984 7.83366L5.99984 4.83366L4.83317 6.00033L7.83317 9.00033L4.83317 12.0003L5.99984 13.167ZM8.99984 17.3337C7.84706 17.3337 6.76373 17.1148 5.74984 16.677C4.73595 16.2398 3.854 15.6462 3.104 14.8962C2.354 14.1462 1.76039 13.2642 1.32317 12.2503C0.885393 11.2364 0.666504 10.1531 0.666504 9.00033C0.666504 7.84755 0.885393 6.76421 1.32317 5.75033C1.76039 4.73644 2.354 3.85449 3.104 3.10449C3.854 2.35449 4.73595 1.7606 5.74984 1.32283C6.76373 0.885603 7.84706 0.666992 8.99984 0.666992C10.1526 0.666992 11.2359 0.885603 12.2498 1.32283C13.2637 1.7606 14.1457 2.35449 14.8957 3.10449C15.6457 3.85449 16.2393 4.73644 16.6765 5.75033C17.1143 6.76421 17.3332 7.84755 17.3332 9.00033C17.3332 10.1531 17.1143 11.2364 16.6765 12.2503C16.2393 13.2642 15.6457 14.1462 14.8957 14.8962C14.1457 15.6462 13.2637 16.2398 12.2498 16.677C11.2359 17.1148 10.1526 17.3337 8.99984 17.3337ZM8.99984 15.667C10.8609 15.667 12.4373 15.0212 13.729 13.7295C15.0207 12.4378 15.6665 10.8614 15.6665 9.00033C15.6665 7.13921 15.0207 5.56283 13.729 4.27116C12.4373 2.97949 10.8609 2.33366 8.99984 2.33366C7.13873 2.33366 5.56234 2.97949 4.27067 4.27116C2.979 5.56283 2.33317 7.13921 2.33317 9.00033C2.33317 10.8614 2.979 12.4378 4.27067 13.7295C5.56234 15.0212 7.13873 15.667 8.99984 15.667Z\" fill=\"#ED404A\"/>\n</svg>\n`;\n\nconst style = `\n .debugger {\n all: initial;\n width: ${INITIAL_WIDTH}px;\n height: ${INITIAL_HEIGHT}px;\n background-color: #FAFAFA;\n position: fixed;\n font-family: \"Helvetica Neue\", sans-serif;\n box-shadow: rgba(0, 0, 0, 0.1) 0px 5px 10px;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid lightgrey;\n pointer-events: initial;\n display: flex;\n flex-direction: column;\n min-width: ${MIN_SIZE}px;\n max-width: 600px;\n max-height: calc(100% - ${INITIAL_POS_THRESHOLD * 2}px);\n min-height: ${MIN_SIZE}px;\n resize: both;\n }\n\n .header {\n padding: 8px 16px;\n display: flex;\n align-items: center;\n background-color: #EEEEEE;\n cursor: move;\n border-bottom: 1px solid #e0e0e0;\n }\n\n .content {\n font-size: 14px;\n flex-grow: 1;\n overflow: auto;\n }\n\n .msg {\n border-bottom: 1px solid lightgrey;\n padding: 8px 16px;\n display: flex;\n gap: 5px;\n background-color: #FAFAFA;\n }\n\n .msg.collapsible {\n cursor: pointer;\n }\n\n .empty-state {\n padding: 8px 16px;\n background-color: #FAFAFA;\n }\n\n\n .msg.collapsible:not(.collapsed) {\n background-color: #F5F5F5;\n }\n\n .msg_title {\n padding-bottom: 5px;\n display: flex;\n gap: 8px;\n font-weight: 500;\n }\n\n .msg svg {\n padding: 1px;\n flex-shrink: 0;\n margin-top: -2px;\n }\n\n .msg_content {\n overflow: hidden;\n flex-grow: 1;\n margin-right:5px;\n }\n\n .msg_desc {\n color: #646464;\n cursor: initial;\n word-wrap: break-word;\n }\n\n .msg.collapsed .msg_desc {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .msg.collapsible.collapsed .chevron {\n transform: rotate(-45deg) translateX(-2px);\n }\n\n .msg.collapsible .chevron {\n content: \"\";\n width:6px;\n height:6px;\n border-bottom: 2px solid grey;\n border-right: 2px solid grey;\n transform: rotate(45deg) translateX(-1px);\n margin: 5px;\n flex-shrink:0;\n }\n`;\n\ntype MessagesState = { messages: DebuggerMessage[] };\n\nclass Debugger extends HTMLElement {\n #messagesState = new State<MessagesState>({ messages: [] });\n\n #rootEle: HTMLDivElement;\n\n #contentEle: HTMLDivElement;\n\n #headerEle: HTMLDivElement;\n\n #eventsCbRefs = {\n resize: this.#onWindowResize.bind(this),\n };\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' });\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n\n this.#rootEle = this.shadowRoot.querySelector<HTMLDivElement>('.debugger');\n this.#contentEle = this.#rootEle.querySelector<HTMLDivElement>('.content');\n this.#headerEle = this.#rootEle.querySelector<HTMLDivElement>('.header');\n\n this.#initStyle();\n }\n\n #initStyle() {\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(style);\n this.shadowRoot.adoptedStyleSheets ??= [];\n this.shadowRoot.adoptedStyleSheets = [\n ...this.shadowRoot.adoptedStyleSheets,\n sheet,\n ];\n\n this.#rootEle.style.top = `${INITIAL_POS_THRESHOLD}px`;\n this.#rootEle.style.left = `${\n window.innerWidth - INITIAL_WIDTH - INITIAL_POS_THRESHOLD\n }px`;\n }\n\n updateData(data: DebuggerMessage | DebuggerMessage[]) {\n this.#messagesState.update((state) => ({\n messages: state.messages.concat(data),\n }));\n }\n\n #onNewMessages(data: MessagesState) {\n this.#renderMessages(data);\n this.#setCollapsibleMessages();\n }\n\n #renderMessages(data: MessagesState) {\n this.#contentEle.innerHTML = data.messages\n .map(\n (message) => `\n <div class=\"msg\">\n ${icon}\n <div class=\"msg_content\">\n <div class=\"msg_title\">\n ${message.title}\n </div>\n <div class=\"msg_desc\">\n ${message.description}\n </div>\n </div>\n <div class=\"chevron\"></div>\n </div>\n `,\n )\n .join('');\n }\n\n #setCollapsibleMessages() {\n this.#contentEle.querySelectorAll('.msg').forEach((ele: HTMLElement) => {\n const descEle = ele.querySelector('.msg_desc');\n const lineHeight = 20;\n const isScroll = descEle.scrollWidth > descEle.clientWidth;\n const isMultiLine = descEle.clientHeight > lineHeight;\n const isCollapsible = isScroll || isMultiLine;\n\n if (isCollapsible) {\n ele.classList.add('collapsible');\n ele.onclick = (e: MouseEvent) => {\n // message description should not toggle collapse\n if (!(e.target as HTMLElement).classList.contains('msg_desc')) {\n ele.classList.toggle('collapsed');\n }\n };\n } else {\n ele.classList.remove('collapsible');\n ele.onclick = null;\n }\n });\n }\n\n #onWindowResize() {\n // when window is resizing we want to make sure debugger is still visible\n const [left, top] = limitCoordinateToScreenBoundaries(\n this.#rootEle,\n Number.parseInt(this.#rootEle.style.left, 10),\n Number.parseInt(this.#rootEle.style.top, 10),\n { top: 'all', bottom: 100, left: 100, right: 100 },\n );\n this.#rootEle.style.top = `${top}px`;\n this.#rootEle.style.left = `${left}px`;\n }\n\n connectedCallback() {\n dragElement(this.#rootEle, this.#headerEle, {\n top: 'all',\n bottom: 100,\n left: 100,\n right: 100,\n });\n\n window.addEventListener('resize', this.#eventsCbRefs.resize);\n\n addOnResize(this.#rootEle);\n this.#rootEle.onresize = this.#setCollapsibleMessages.bind(this);\n\n this.#messagesState.subscribe(this.#onNewMessages.bind(this));\n }\n\n disconnectedCallback() {\n this.#messagesState.unsubscribeAll();\n window.removeEventListener('resize', this.#eventsCbRefs.resize);\n }\n}\n\nif (!customElements.get('descope-debugger')) {\n customElements.define('descope-debugger', Debugger);\n}\nexport default Debugger;\n"],"names":["template","document","createElement","innerHTML","Debugger","HTMLElement","constructor","super","_Debugger_messagesState","set","this","State","messages","_Debugger_rootEle","_Debugger_contentEle","_Debugger_headerEle","_Debugger_eventsCbRefs","resize","__classPrivateFieldGet","_Debugger_instances","_Debugger_onWindowResize","bind","attachShadow","mode","shadowRoot","appendChild","content","cloneNode","__classPrivateFieldSet","querySelector","_Debugger_initStyle","call","updateData","data","update","state","concat","connectedCallback","dragElement","top","bottom","left","right","window","addEventListener","addOnResize","onresize","_Debugger_setCollapsibleMessages","subscribe","_Debugger_onNewMessages","disconnectedCallback","unsubscribeAll","removeEventListener","sheet","CSSStyleSheet","replaceSync","_a","_b","adoptedStyleSheets","style","innerWidth","_Debugger_renderMessages","map","message","title","description","join","querySelectorAll","forEach","ele","descEle","isScroll","scrollWidth","clientWidth","isMultiLine","clientHeight","classList","add","onclick","e","target","contains","toggle","remove","limitCoordinateToScreenBoundaries","Number","parseInt","customElements","get","define"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"debugger-wc.js","sources":["../../src/lib/debugger-wc.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport { compose } from '@descope/sdk-helpers';\nimport { injectStyleMixin } from '@descope/sdk-mixins/inject-style-mixin';\nimport {\n addOnResize,\n dragElement,\n limitCoordinateToScreenBoundaries,\n State,\n} from './helpers';\nimport { DebuggerMessage } from './types';\n\nconst INITIAL_POS_THRESHOLD = 32;\nconst INITIAL_WIDTH = 300;\nconst INITIAL_HEIGHT = 200;\nconst MIN_SIZE = 200;\n\nconst template = document.createElement('template');\ntemplate.innerHTML = `\n<div class=\"debugger\">\n <div class=\"header\">\n <span>Debugger messages</span>\n </div>\n <div class=\"content\">\n <div class=\"empty-state\">\n No errors detected 👀\n </div>\n </div>\n</div>\n`;\n\nconst icon = `<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M5.99984 13.167L8.99984 10.167L11.9998 13.167L13.1665 12.0003L10.1665 9.00033L13.1665 6.00033L11.9998 4.83366L8.99984 7.83366L5.99984 4.83366L4.83317 6.00033L7.83317 9.00033L4.83317 12.0003L5.99984 13.167ZM8.99984 17.3337C7.84706 17.3337 6.76373 17.1148 5.74984 16.677C4.73595 16.2398 3.854 15.6462 3.104 14.8962C2.354 14.1462 1.76039 13.2642 1.32317 12.2503C0.885393 11.2364 0.666504 10.1531 0.666504 9.00033C0.666504 7.84755 0.885393 6.76421 1.32317 5.75033C1.76039 4.73644 2.354 3.85449 3.104 3.10449C3.854 2.35449 4.73595 1.7606 5.74984 1.32283C6.76373 0.885603 7.84706 0.666992 8.99984 0.666992C10.1526 0.666992 11.2359 0.885603 12.2498 1.32283C13.2637 1.7606 14.1457 2.35449 14.8957 3.10449C15.6457 3.85449 16.2393 4.73644 16.6765 5.75033C17.1143 6.76421 17.3332 7.84755 17.3332 9.00033C17.3332 10.1531 17.1143 11.2364 16.6765 12.2503C16.2393 13.2642 15.6457 14.1462 14.8957 14.8962C14.1457 15.6462 13.2637 16.2398 12.2498 16.677C11.2359 17.1148 10.1526 17.3337 8.99984 17.3337ZM8.99984 15.667C10.8609 15.667 12.4373 15.0212 13.729 13.7295C15.0207 12.4378 15.6665 10.8614 15.6665 9.00033C15.6665 7.13921 15.0207 5.56283 13.729 4.27116C12.4373 2.97949 10.8609 2.33366 8.99984 2.33366C7.13873 2.33366 5.56234 2.97949 4.27067 4.27116C2.979 5.56283 2.33317 7.13921 2.33317 9.00033C2.33317 10.8614 2.979 12.4378 4.27067 13.7295C5.56234 15.0212 7.13873 15.667 8.99984 15.667Z\" fill=\"#ED404A\"/>\n</svg>\n`;\n\nconst style = `\n .debugger {\n all: initial;\n width: ${INITIAL_WIDTH}px;\n height: ${INITIAL_HEIGHT}px;\n background-color: #FAFAFA;\n position: fixed;\n font-family: \"Helvetica Neue\", sans-serif;\n box-shadow: rgba(0, 0, 0, 0.1) 0px 5px 10px;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid lightgrey;\n pointer-events: initial;\n display: flex;\n flex-direction: column;\n min-width: ${MIN_SIZE}px;\n max-width: 600px;\n max-height: calc(100% - ${INITIAL_POS_THRESHOLD * 2}px);\n min-height: ${MIN_SIZE}px;\n resize: both;\n }\n\n .header {\n padding: 8px 16px;\n display: flex;\n align-items: center;\n background-color: #EEEEEE;\n cursor: move;\n border-bottom: 1px solid #e0e0e0;\n }\n\n .content {\n font-size: 14px;\n flex-grow: 1;\n overflow: auto;\n }\n\n .msg {\n border-bottom: 1px solid lightgrey;\n padding: 8px 16px;\n display: flex;\n gap: 5px;\n background-color: #FAFAFA;\n }\n\n .msg.collapsible {\n cursor: pointer;\n }\n\n .empty-state {\n padding: 8px 16px;\n background-color: #FAFAFA;\n }\n\n\n .msg.collapsible:not(.collapsed) {\n background-color: #F5F5F5;\n }\n\n .msg_title {\n padding-bottom: 5px;\n display: flex;\n gap: 8px;\n font-weight: 500;\n }\n\n .msg svg {\n padding: 1px;\n flex-shrink: 0;\n margin-top: -2px;\n }\n\n .msg_content {\n overflow: hidden;\n flex-grow: 1;\n margin-right:5px;\n }\n\n .msg_desc {\n color: #646464;\n cursor: initial;\n word-wrap: break-word;\n }\n\n .msg.collapsed .msg_desc {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .msg.collapsible.collapsed .chevron {\n transform: rotate(-45deg) translateX(-2px);\n }\n\n .msg.collapsible .chevron {\n content: \"\";\n width:6px;\n height:6px;\n border-bottom: 2px solid grey;\n border-right: 2px solid grey;\n transform: rotate(45deg) translateX(-1px);\n margin: 5px;\n flex-shrink:0;\n }\n`;\n\ntype MessagesState = { messages: DebuggerMessage[] };\n\nconst BaseClass = compose(injectStyleMixin)(HTMLElement);\n\nclass Debugger extends BaseClass {\n #messagesState = new State<MessagesState>({ messages: [] });\n\n #rootEle: HTMLDivElement;\n\n #contentEle: HTMLDivElement;\n\n #headerEle: HTMLDivElement;\n\n #eventsCbRefs = {\n resize: this.#onWindowResize.bind(this),\n };\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' });\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n\n this.#rootEle = this.shadowRoot.querySelector<HTMLDivElement>('.debugger');\n this.#contentEle = this.#rootEle.querySelector<HTMLDivElement>('.content');\n this.#headerEle = this.#rootEle.querySelector<HTMLDivElement>('.header');\n\n this.#initStyle();\n }\n\n #initStyle() {\n this.injectStyle(style);\n\n this.#rootEle.style.top = `${INITIAL_POS_THRESHOLD}px`;\n this.#rootEle.style.left = `${\n window.innerWidth - INITIAL_WIDTH - INITIAL_POS_THRESHOLD\n }px`;\n }\n\n updateData(data: DebuggerMessage | DebuggerMessage[]) {\n this.#messagesState.update((state) => ({\n messages: state.messages.concat(data),\n }));\n }\n\n #onNewMessages(data: MessagesState) {\n this.#renderMessages(data);\n this.#setCollapsibleMessages();\n }\n\n #renderMessages(data: MessagesState) {\n this.#contentEle.innerHTML = data.messages\n .map(\n (message) => `\n <div class=\"msg\">\n ${icon}\n <div class=\"msg_content\">\n <div class=\"msg_title\">\n ${message.title}\n </div>\n <div class=\"msg_desc\">\n ${message.description}\n </div>\n </div>\n <div class=\"chevron\"></div>\n </div>\n `,\n )\n .join('');\n }\n\n #setCollapsibleMessages() {\n this.#contentEle.querySelectorAll('.msg').forEach((ele: HTMLElement) => {\n const descEle = ele.querySelector('.msg_desc');\n const lineHeight = 20;\n const isScroll = descEle.scrollWidth > descEle.clientWidth;\n const isMultiLine = descEle.clientHeight > lineHeight;\n const isCollapsible = isScroll || isMultiLine;\n\n if (isCollapsible) {\n ele.classList.add('collapsible');\n ele.onclick = (e: MouseEvent) => {\n // message description should not toggle collapse\n if (!(e.target as HTMLElement).classList.contains('msg_desc')) {\n ele.classList.toggle('collapsed');\n }\n };\n } else {\n ele.classList.remove('collapsible');\n ele.onclick = null;\n }\n });\n }\n\n #onWindowResize() {\n // when window is resizing we want to make sure debugger is still visible\n const [left, top] = limitCoordinateToScreenBoundaries(\n this.#rootEle,\n Number.parseInt(this.#rootEle.style.left, 10),\n Number.parseInt(this.#rootEle.style.top, 10),\n { top: 'all', bottom: 100, left: 100, right: 100 },\n );\n this.#rootEle.style.top = `${top}px`;\n this.#rootEle.style.left = `${left}px`;\n }\n\n async init() {\n super.init?.();\n dragElement(this.#rootEle, this.#headerEle, {\n top: 'all',\n bottom: 100,\n left: 100,\n right: 100,\n });\n\n window.addEventListener('resize', this.#eventsCbRefs.resize);\n\n addOnResize(this.#rootEle);\n this.#rootEle.onresize = this.#setCollapsibleMessages.bind(this);\n\n this.#messagesState.subscribe(this.#onNewMessages.bind(this));\n }\n\n disconnectedCallback() {\n this.#messagesState.unsubscribeAll();\n window.removeEventListener('resize', this.#eventsCbRefs.resize);\n }\n}\n\nif (!customElements.get('descope-debugger')) {\n customElements.define('descope-debugger', Debugger);\n}\nexport default Debugger;\n"],"names":["template","document","createElement","innerHTML","BaseClass","compose","injectStyleMixin","HTMLElement","Debugger","constructor","super","_Debugger_messagesState","set","this","State","messages","_Debugger_rootEle","_Debugger_contentEle","_Debugger_headerEle","_Debugger_eventsCbRefs","resize","__classPrivateFieldGet","_Debugger_instances","_Debugger_onWindowResize","bind","attachShadow","mode","shadowRoot","appendChild","content","cloneNode","__classPrivateFieldSet","querySelector","_Debugger_initStyle","call","updateData","data","update","state","concat","init","_a","_super","dragElement","top","bottom","left","right","window","addEventListener","addOnResize","onresize","_Debugger_setCollapsibleMessages","subscribe","_Debugger_onNewMessages","disconnectedCallback","unsubscribeAll","removeEventListener","injectStyle","style","innerWidth","_Debugger_renderMessages","map","message","title","description","join","querySelectorAll","forEach","ele","descEle","isScroll","scrollWidth","clientWidth","isMultiLine","clientHeight","classList","add","onclick","e","target","contains","toggle","remove","limitCoordinateToScreenBoundaries","Number","parseInt","customElements","get","define"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var t=require("tslib"),e=require("@descope/sdk-helpers"),i=require("@descope/sdk-mixins/static-resources-mixin"),s=require("@descope/sdk-mixins/theme-mixin"),r=require("@descope/web-js-sdk"),o=require("../constants/index.js"),n=require("../helpers/helpers.js"),a=require("../helpers/state.js");require("@descope/escape-markdown"),require("../helpers/webauthn.js");var l,d,u,c,h,g,f,p,v,_,b,m,w,C,A,F,k,P,E,x,y,I,G,S=require("../helpers/flowInputs.js"),j=require("../mixins/formMountMixin.js"),O=require("../constants/content.js"),U=require("../constants/general.js");function L(t){return Object.freeze({__proto__:null,default:t})}const M=e.compose(s.themeMixin,i.staticResourcesMixin,j.formMountMixin)(HTMLElement);class R extends M{static get observedAttributes(){return["project-id","flow-id","base-url","tenant","locale","debug","storage-prefix","preview","redirect-url","auto-focus","store-last-authenticated-user","refresh-cookie-name","keep-last-authenticated-user-after-logout","validate-on-blur","style-id","nonce"]}constructor(e){super(),l.add(this),u.set(this,!1),this.flowStatus="initial",this.loggerWrapper={error:(e,i="")=>{this.logger.error(e,i,new Error),t.__classPrivateFieldGet(this,l,"m",y).call(this,e,i)},warn:(t,e="")=>{this.logger.warn(t,e)},info:(t,e="",i={})=>{this.logger.info(t,e,i)},debug:(t,e="")=>{this.logger.debug(t,e)}},c.set(this,new a),h.set(this,new a),g.set(this,{}),this.getComponentsContext=()=>t.__classPrivateFieldGet(this,g,"f"),this.nextRequestStatus=new a({isLoading:!1}),f.set(this,void 0),p.set(this,{popstate:t.__classPrivateFieldGet(this,l,"m",w).bind(this),componentsContext:t.__classPrivateFieldGet(this,l,"m",P).bind(this)}),v.set(this,void 0),this.getConfig=()=>t.__awaiter(this,void 0,void 0,(function*(){return(yield this.config)||{isMissingConfig:!0}})),t.__classPrivateFieldSet(this,v,e,"f"),t.__classPrivateFieldGet(this,l,"m",b).call(this)}get flowId(){return this.getAttribute("flow-id")}get client(){try{return JSON.parse(this.getAttribute("client"))||{}}catch(t){return{}}}get tenantId(){return this.getAttribute("tenant")||void 0}get redirectUrl(){return this.getAttribute("redirect-url")||void 0}get debug(){return"true"===this.getAttribute("debug")}get locale(){return this.getAttribute("locale")||void 0}get autoFocus(){var t;const e=null!==(t=this.getAttribute("auto-focus"))&&void 0!==t?t:"true";return"skipFirstScreen"===e?e:"true"===e}get validateOnBlur(){return"true"===this.getAttribute("validate-on-blur")}get storeLastAuthenticatedUser(){var t;return"true"===(null!==(t=this.getAttribute("store-last-authenticated-user"))&&void 0!==t?t:"true")}get refreshCookieName(){return this.getAttribute("refresh-cookie-name")||""}get keepLastAuthenticatedUserAfterLogout(){return"true"===this.getAttribute("keep-last-authenticated-user-after-logout")}get storagePrefix(){return this.getAttribute("storage-prefix")||""}get preview(){return!!this.getAttribute("preview")}get formConfig(){return S.transformFlowInputFormData(this.form)}get form(){return this.getAttribute("form")}get formConfigValues(){return S.extractNestedAttribute(this.formConfig,"value")}get outboundAppId(){return this.getAttribute("outbound-app-id")}get outboundAppScopes(){try{const t=JSON.parse(this.getAttribute("outbound-app-scopes"));return t||null}catch(t){return null}}get isRestartOnError(){return"true"===this.getAttribute("restart-on-error")}getExecutionContext(){return t.__awaiter(this,void 0,void 0,(function*(){const t=yield this.getConfig();return"executionContext"in t?t.executionContext:void 0}))}getProjectConfig(){return t.__awaiter(this,void 0,void 0,(function*(){const t=yield this.getConfig();return"projectConfig"in t?t.projectConfig:void 0}))}getFlowConfig(){return t.__awaiter(this,void 0,void 0,(function*(){var t,e;const i=yield this.getProjectConfig(),s=(null===(t=null==i?void 0:i.flows)||void 0===t?void 0:t[this.flowId])||{};return null!==(e=s.version)&&void 0!==e||(s.version=0),s}))}getTargetLocales(){return t.__awaiter(this,void 0,void 0,(function*(){const t=yield this.getFlowConfig();return((null==t?void 0:t.targetLocales)||[]).map((t=>t.toLowerCase()))}))}getComponentsVersion(){return t.__awaiter(this,void 0,void 0,(function*(){var t;const e=yield this.getConfig(),i="projectConfig"in e?null===(t=e.projectConfig)||void 0===t?void 0:t.componentsVersion:{};return i||(this.logger.error("Did not get components version, using latest version"),"latest")}))}init(){const e=Object.create(null,{init:{get:()=>super.init}});return t.__awaiter(this,void 0,void 0,(function*(){var i;if(this.flowStatus="loading",["ready","error","success"].forEach((t=>this.addEventListener(t,(()=>{this.flowStatus=t})))),yield null===(i=e.init)||void 0===i?void 0:i.call(this),t.__classPrivateFieldGet(this,h,"f").subscribe(t.__classPrivateFieldGet(this,l,"m",x).bind(this)),t.__classPrivateFieldGet(this,h,"f").update({isDebug:this.debug}),t.__classPrivateFieldGet(this,l,"m",m).call(this),t.__classPrivateFieldGet(this,l,"m",G).call(this),yield t.__classPrivateFieldGet(this,l,"m",F).call(this))return void this.loggerWrapper.error("This SDK version does not support your flows version","Make sure to upgrade your flows to the latest version or use an older SDK version");const s=yield this.getConfig();if("isMissingConfig"in s&&s.isMissingConfig)return void this.loggerWrapper.error("Cannot get config file","Make sure that your projectId & flowId are correct");t.__classPrivateFieldGet(this,l,"m",I).call(this);const{executionId:r,stepId:o,token:a,code:d,exchangeError:g,redirectAuthCallbackUrl:f,redirectAuthBackupCallbackUri:v,redirectAuthCodeChallenge:_,redirectAuthInitiator:b,ssoQueryParams:w}=n.handleUrlParams(this.flowId,this.loggerWrapper);window.addEventListener("popstate",t.__classPrivateFieldGet(this,p,"f").popstate),window.addEventListener("components-context",t.__classPrivateFieldGet(this,p,"f").componentsContext),t.__classPrivateFieldGet(this,c,"f").subscribe(t.__classPrivateFieldGet(this,l,"m",A).bind(this)),t.__classPrivateFieldGet(this,c,"f").update(Object.assign({projectId:this.projectId,flowId:this.flowId,baseUrl:this.baseUrl,tenant:this.tenantId,redirectUrl:this.redirectUrl,locale:this.locale,stepId:o,executionId:r,token:a,code:d,exchangeError:g,redirectAuthCallbackUrl:f,redirectAuthBackupCallbackUri:v,redirectAuthCodeChallenge:_,redirectAuthInitiator:b},w)),t.__classPrivateFieldSet(this,u,!0,"f")}))}disconnectedCallback(){t.__classPrivateFieldGet(this,c,"f").unsubscribeAll(),t.__classPrivateFieldGet(this,h,"f").unsubscribeAll(),t.__classPrivateFieldGet(this,l,"m",E).call(this),window.removeEventListener("popstate",t.__classPrivateFieldGet(this,p,"f").popstate),window.removeEventListener("components-context",t.__classPrivateFieldGet(this,p,"f").componentsContext)}attributeChangedCallback(e,i,s){if(this.shadowRoot.isConnected&&t.__classPrivateFieldGet(this,u,"f")&&i!==s&&d.observedAttributes.includes(e)){t.__classPrivateFieldGet(this,l,"m",m).call(this);const r=null===i;"nonce"===e&&t.__classPrivateFieldGet(this,l,"m",G).call(this),t.__classPrivateFieldGet(this,c,"f").update((({stepId:t,executionId:i})=>{let o=t,a=i;return r||(a=null,o=null,n.clearRunIdsFromUrl()),{[n.camelCase(e)]:s,stepId:o,executionId:a}})),t.__classPrivateFieldGet(this,h,"f").update({isDebug:this.debug})}}}d=R,u=new WeakMap,c=new WeakMap,h=new WeakMap,g=new WeakMap,f=new WeakMap,p=new WeakMap,v=new WeakMap,l=new WeakSet,_=function(){var t,e;const i=new CSSStyleSheet;i.replaceSync("\n :host {\n\t\t\twidth: 100%;\n display: block;\n\t\t}\n\n\t\t#root {\n\t\t\theight: 100%;\n display: flex;\n flex-direction: column;\n\t\t}\n\n #content-root {\n all: initial;\n transition: opacity 200ms ease-in-out;\n }\n\n\t\t#root[data-theme] {\n\t\t\tbackground-color: transparent;\n\t\t}\n\n\t\t.fade-out {\n\t\t\topacity: 0.1!important;\n\t\t}\n\n .hidden {\n display: none;\n }\n "),null!==(t=(e=this.shadowRoot).adoptedStyleSheets)&&void 0!==t||(e.adoptedStyleSheets=[]),this.shadowRoot.adoptedStyleSheets=[...this.shadowRoot.adoptedStyleSheets,i]},b=function(){t.__classPrivateFieldGet(this,l,"m",_).call(this),this.slotElement=document.createElement("slot"),this.slotElement.classList.add("hidden"),this.rootElement.appendChild(this.slotElement)},m=function(){const t=["base-url","tenant","locale","debug","redirect-url","auto-focus","store-last-authenticated-user","refresh-cookie-name","keep-last-authenticated-user-after-logout","preview","storage-prefix","form","client","validate-on-blur","style-id","nonce","outbound-app-id","outbound-app-scopes"];d.observedAttributes.forEach((e=>{if(!t.includes(e)&&!this[n.camelCase(e)])throw Error(`${e} cannot be empty`)}))},w=function(){const{stepId:e,executionId:i}=n.getRunIdsFromUrl(this.flowId);t.__classPrivateFieldGet(this,c,"f").update({stepId:e,executionId:i})},C=function(e,i){this.sdk=r(Object.assign(Object.assign({persistTokens:!0,preview:this.preview,storagePrefix:this.storagePrefix,storeLastAuthenticatedUser:this.storeLastAuthenticatedUser,keepLastAuthenticatedUserAfterLogout:this.keepLastAuthenticatedUserAfterLogout,refreshCookieName:this.refreshCookieName},d.sdkConfigOverrides),{projectId:e,baseUrl:i})),["start","next"].forEach((e=>{const i=this.sdk.flow[e];this.sdk.flow[e]=(...e)=>t.__awaiter(this,void 0,void 0,(function*(){try{return yield i(...e)}catch(t){return{error:{errorCode:U.FETCH_EXCEPTION_ERROR_CODE,errorDescription:t.toString()}}}}))}))},A=function(e,i,s){return t.__awaiter(this,void 0,void 0,(function*(){const{projectId:i,baseUrl:r}=e;if(s("projectId")||s("baseUrl")){if(!i)return;t.__classPrivateFieldGet(this,l,"m",C).call(this,i,r)}t.__classPrivateFieldGet(this,v,"f").call(this,e)}))},F=function(){return t.__awaiter(this,void 0,void 0,(function*(){const e=yield this.getConfig();return"isMissingConfig"in e&&e.isMissingConfig&&(yield t.__classPrivateFieldGet(this,l,"m",k).call(this))}))},k=function(){return t.__awaiter(this,void 0,void 0,(function*(){const t=n.getContentUrl({projectId:this.projectId,filename:O.CONFIG_FILENAME,assetsFolder:O.PREV_VER_ASSETS_FOLDER,baseUrl:this.baseStaticUrl});try{return yield n.fetchContent(t,"json"),!0}catch(t){return!1}}))},P=function(e){t.__classPrivateFieldSet(this,g,Object.assign(Object.assign({},t.__classPrivateFieldGet(this,g,"f")),e.detail),"f")},E=function(){var e;null===(e=t.__classPrivateFieldGet(this,f,"f"))||void 0===e||e.remove(),t.__classPrivateFieldSet(this,f,null,"f")},x=function(e){return t.__awaiter(this,arguments,void 0,(function*({isDebug:e}){e?(t.__classPrivateFieldSet(this,f,document.createElement("descope-debugger"),"f"),Object.assign(t.__classPrivateFieldGet(this,f,"f").style,{position:"fixed",top:"0",right:"0",height:"100vh",width:"100vw",pointerEvents:"none",zIndex:99999}),yield Promise.resolve().then((function(){return L(require("../debugger-wc.js"))})),document.body.appendChild(t.__classPrivateFieldGet(this,f,"f"))):t.__classPrivateFieldGet(this,l,"m",E).call(this)}))},y=function(e,i){var s;e&&this.debug&&(null===(s=t.__classPrivateFieldGet(this,f,"f"))||void 0===s||s.updateData({title:e,description:i}))},I=function(){this.rootElement.onkeydown=t=>{var e,i,s;const r=!!(null===(e=this.shadowRoot.activeElement)||void 0===e?void 0:e.getAttribute("href")),n=o.ELEMENTS_TO_IGNORE_ENTER_KEY_ON.includes(null!==(s=null===(i=this.shadowRoot.activeElement)||void 0===i?void 0:i.localName)&&void 0!==s?s:"");if("Enter"!==t.key||r||n)return;t.preventDefault();const a=this.rootElement.querySelectorAll("descope-button");if(1===a.length&&"false"!==a[0].getAttribute("auto-submit"))return void a[0].click();const l=Array.from(a).filter((t=>"true"===t.getAttribute("auto-submit")));if(1===l.length)return void l[0].click();const d=Array.from(a).filter((t=>"button"===t.getAttribute("data-type")));if(1===d.length)"false"!==d[0].getAttribute("auto-submit")&&d[0].click();else if(0===d.length){const t=Array.from(a).filter((t=>"sso"===t.getAttribute("data-type")));1===t.length&&"false"!==t[0].getAttribute("auto-submit")&&t[0].click()}}},G=function(){this.getAttribute("nonce")&&(window.DESCOPE_NONCE=this.getAttribute("nonce"))},R.sdkConfigOverrides={baseHeaders:{"x-descope-sdk-name":"web-component","x-descope-sdk-version":"3.43.3"}},module.exports=R;
|
|
1
|
+
"use strict";var t=require("tslib"),e=require("@descope/sdk-helpers"),i=require("@descope/sdk-mixins/static-resources-mixin"),s=require("@descope/sdk-mixins/theme-mixin"),r=require("@descope/sdk-mixins/inject-style-mixin"),n=require("@descope/web-js-sdk"),o=require("../constants/index.js"),a=require("../helpers/helpers.js"),l=require("../helpers/state.js");require("@descope/escape-markdown"),require("../helpers/webauthn.js");var u,d,c,h,g,f,p,v,_,b,m,w,C,k,A,F,P,x,E,y,I,G,j=require("../helpers/flowInputs.js"),S=require("../mixins/formMountMixin.js"),M=require("../constants/content.js"),U=require("../constants/general.js");function L(t){return Object.freeze({__proto__:null,default:t})}const O=e.compose(s.themeMixin,i.staticResourcesMixin,S.formMountMixin,r.injectStyleMixin)(HTMLElement);class q extends O{static get observedAttributes(){return["project-id","flow-id","base-url","tenant","locale","debug","storage-prefix","preview","redirect-url","auto-focus","store-last-authenticated-user","refresh-cookie-name","keep-last-authenticated-user-after-logout","validate-on-blur","style-id"]}constructor(e){super(),u.add(this),c.set(this,!1),this.flowStatus="initial",this.loggerWrapper={error:(e,i="")=>{this.logger.error(e,i,new Error),t.__classPrivateFieldGet(this,u,"m",I).call(this,e,i)},warn:(t,e="")=>{this.logger.warn(t,e)},info:(t,e="",i={})=>{this.logger.info(t,e,i)},debug:(t,e="")=>{this.logger.debug(t,e)}},h.set(this,new l),g.set(this,new l),f.set(this,{}),this.getComponentsContext=()=>t.__classPrivateFieldGet(this,f,"f"),this.nextRequestStatus=new l({isLoading:!1}),p.set(this,void 0),v.set(this,{popstate:t.__classPrivateFieldGet(this,u,"m",C).bind(this),componentsContext:t.__classPrivateFieldGet(this,u,"m",x).bind(this)}),_.set(this,void 0),this.getConfig=()=>t.__awaiter(this,void 0,void 0,(function*(){return(yield this.config)||{isMissingConfig:!0}})),t.__classPrivateFieldSet(this,_,e,"f"),t.__classPrivateFieldGet(this,u,"m",m).call(this)}get flowId(){return this.getAttribute("flow-id")}get client(){try{return JSON.parse(this.getAttribute("client"))||{}}catch(t){return{}}}get tenantId(){return this.getAttribute("tenant")||void 0}get redirectUrl(){return this.getAttribute("redirect-url")||void 0}get debug(){return"true"===this.getAttribute("debug")}get locale(){return this.getAttribute("locale")||void 0}get autoFocus(){var t;const e=null!==(t=this.getAttribute("auto-focus"))&&void 0!==t?t:"true";return"skipFirstScreen"===e?e:"true"===e}get validateOnBlur(){return"true"===this.getAttribute("validate-on-blur")}get storeLastAuthenticatedUser(){var t;return"true"===(null!==(t=this.getAttribute("store-last-authenticated-user"))&&void 0!==t?t:"true")}get refreshCookieName(){return this.getAttribute("refresh-cookie-name")||""}get keepLastAuthenticatedUserAfterLogout(){return"true"===this.getAttribute("keep-last-authenticated-user-after-logout")}get storagePrefix(){return this.getAttribute("storage-prefix")||""}get preview(){return!!this.getAttribute("preview")}get formConfig(){return j.transformFlowInputFormData(this.form)}get form(){return this.getAttribute("form")}get formConfigValues(){return j.extractNestedAttribute(this.formConfig,"value")}get outboundAppId(){return this.getAttribute("outbound-app-id")}get outboundAppScopes(){try{const t=JSON.parse(this.getAttribute("outbound-app-scopes"));return t||null}catch(t){return null}}get isRestartOnError(){return"true"===this.getAttribute("restart-on-error")}getExecutionContext(){return t.__awaiter(this,void 0,void 0,(function*(){const t=yield this.getConfig();return"executionContext"in t?t.executionContext:void 0}))}getProjectConfig(){return t.__awaiter(this,void 0,void 0,(function*(){const t=yield this.getConfig();return"projectConfig"in t?t.projectConfig:void 0}))}getFlowConfig(){return t.__awaiter(this,void 0,void 0,(function*(){var t,e;const i=yield this.getProjectConfig(),s=(null===(t=null==i?void 0:i.flows)||void 0===t?void 0:t[this.flowId])||{};return null!==(e=s.version)&&void 0!==e||(s.version=0),s}))}getTargetLocales(){return t.__awaiter(this,void 0,void 0,(function*(){const t=yield this.getFlowConfig();return((null==t?void 0:t.targetLocales)||[]).map((t=>t.toLowerCase()))}))}getComponentsVersion(){return t.__awaiter(this,void 0,void 0,(function*(){var t;const e=yield this.getConfig(),i="projectConfig"in e?null===(t=e.projectConfig)||void 0===t?void 0:t.componentsVersion:{};return i||(this.logger.error("Did not get components version, using latest version"),"latest")}))}init(){const e=Object.create(null,{init:{get:()=>super.init}});return t.__awaiter(this,void 0,void 0,(function*(){var i;if(this.flowStatus="loading",["ready","error","success"].forEach((t=>this.addEventListener(t,(()=>{this.flowStatus=t})))),yield null===(i=e.init)||void 0===i?void 0:i.call(this),t.__classPrivateFieldGet(this,g,"f").subscribe(t.__classPrivateFieldGet(this,u,"m",y).bind(this)),t.__classPrivateFieldGet(this,g,"f").update({isDebug:this.debug}),t.__classPrivateFieldGet(this,u,"m",w).call(this),yield t.__classPrivateFieldGet(this,u,"m",F).call(this))return void this.loggerWrapper.error("This SDK version does not support your flows version","Make sure to upgrade your flows to the latest version or use an older SDK version");const s=yield this.getConfig();if("isMissingConfig"in s&&s.isMissingConfig)return void this.loggerWrapper.error("Cannot get config file","Make sure that your projectId & flowId are correct");t.__classPrivateFieldGet(this,u,"m",G).call(this);const{executionId:r,stepId:n,token:o,code:l,exchangeError:d,redirectAuthCallbackUrl:f,redirectAuthBackupCallbackUri:p,redirectAuthCodeChallenge:_,redirectAuthInitiator:b,ssoQueryParams:m}=a.handleUrlParams(this.flowId,this.loggerWrapper);window.addEventListener("popstate",t.__classPrivateFieldGet(this,v,"f").popstate),window.addEventListener("components-context",t.__classPrivateFieldGet(this,v,"f").componentsContext),t.__classPrivateFieldGet(this,h,"f").subscribe(t.__classPrivateFieldGet(this,u,"m",A).bind(this)),t.__classPrivateFieldGet(this,h,"f").update(Object.assign({projectId:this.projectId,flowId:this.flowId,baseUrl:this.baseUrl,tenant:this.tenantId,redirectUrl:this.redirectUrl,locale:this.locale,stepId:n,executionId:r,token:o,code:l,exchangeError:d,redirectAuthCallbackUrl:f,redirectAuthBackupCallbackUri:p,redirectAuthCodeChallenge:_,redirectAuthInitiator:b},m)),t.__classPrivateFieldSet(this,c,!0,"f")}))}disconnectedCallback(){t.__classPrivateFieldGet(this,h,"f").unsubscribeAll(),t.__classPrivateFieldGet(this,g,"f").unsubscribeAll(),t.__classPrivateFieldGet(this,u,"m",E).call(this),window.removeEventListener("popstate",t.__classPrivateFieldGet(this,v,"f").popstate),window.removeEventListener("components-context",t.__classPrivateFieldGet(this,v,"f").componentsContext)}attributeChangedCallback(e,i,s){if(this.shadowRoot.isConnected&&t.__classPrivateFieldGet(this,c,"f")&&i!==s&&d.observedAttributes.includes(e)){t.__classPrivateFieldGet(this,u,"m",w).call(this);const r=null===i;t.__classPrivateFieldGet(this,h,"f").update((({stepId:t,executionId:i})=>{let n=t,o=i;return r||(o=null,n=null,a.clearRunIdsFromUrl()),{[a.camelCase(e)]:s,stepId:n,executionId:o}})),t.__classPrivateFieldGet(this,g,"f").update({isDebug:this.debug})}}}d=q,c=new WeakMap,h=new WeakMap,g=new WeakMap,f=new WeakMap,p=new WeakMap,v=new WeakMap,_=new WeakMap,u=new WeakSet,b=function(){this.injectStyle("\n :host {\n\t\t\twidth: 100%;\n display: block;\n\t\t}\n\n\t\t#root {\n\t\t\theight: 100%;\n display: flex;\n flex-direction: column;\n\t\t}\n\n #content-root {\n all: initial;\n transition: opacity 200ms ease-in-out;\n }\n\n\t\t#root[data-theme] {\n\t\t\tbackground-color: transparent;\n\t\t}\n\n\t\t.fade-out {\n\t\t\topacity: 0.1!important;\n\t\t}\n\n .hidden {\n display: none;\n }\n ")},m=function(){t.__classPrivateFieldGet(this,u,"m",b).call(this),this.slotElement=document.createElement("slot"),this.slotElement.classList.add("hidden"),this.rootElement.appendChild(this.slotElement)},w=function(){const t=["base-url","tenant","locale","debug","redirect-url","auto-focus","store-last-authenticated-user","refresh-cookie-name","keep-last-authenticated-user-after-logout","preview","storage-prefix","form","client","validate-on-blur","style-id","outbound-app-id","outbound-app-scopes"];d.observedAttributes.forEach((e=>{if(!t.includes(e)&&!this[a.camelCase(e)])throw Error(`${e} cannot be empty`)}))},C=function(){const{stepId:e,executionId:i}=a.getRunIdsFromUrl(this.flowId);t.__classPrivateFieldGet(this,h,"f").update({stepId:e,executionId:i})},k=function(e,i){this.sdk=n(Object.assign(Object.assign({persistTokens:!0,preview:this.preview,storagePrefix:this.storagePrefix,storeLastAuthenticatedUser:this.storeLastAuthenticatedUser,keepLastAuthenticatedUserAfterLogout:this.keepLastAuthenticatedUserAfterLogout,refreshCookieName:this.refreshCookieName},d.sdkConfigOverrides),{projectId:e,baseUrl:i})),["start","next"].forEach((e=>{const i=this.sdk.flow[e];this.sdk.flow[e]=(...e)=>t.__awaiter(this,void 0,void 0,(function*(){try{return yield i(...e)}catch(t){return{error:{errorCode:U.FETCH_EXCEPTION_ERROR_CODE,errorDescription:t.toString()}}}}))}))},A=function(e,i,s){return t.__awaiter(this,void 0,void 0,(function*(){const{projectId:i,baseUrl:r}=e;if(s("projectId")||s("baseUrl")){if(!i)return;t.__classPrivateFieldGet(this,u,"m",k).call(this,i,r)}t.__classPrivateFieldGet(this,_,"f").call(this,e)}))},F=function(){return t.__awaiter(this,void 0,void 0,(function*(){const e=yield this.getConfig();return"isMissingConfig"in e&&e.isMissingConfig&&(yield t.__classPrivateFieldGet(this,u,"m",P).call(this))}))},P=function(){return t.__awaiter(this,void 0,void 0,(function*(){const t=a.getContentUrl({projectId:this.projectId,filename:M.CONFIG_FILENAME,assetsFolder:M.PREV_VER_ASSETS_FOLDER,baseUrl:this.baseStaticUrl});try{return yield a.fetchContent(t,"json"),!0}catch(t){return!1}}))},x=function(e){t.__classPrivateFieldSet(this,f,Object.assign(Object.assign({},t.__classPrivateFieldGet(this,f,"f")),e.detail),"f")},E=function(){var e;null===(e=t.__classPrivateFieldGet(this,p,"f"))||void 0===e||e.remove(),t.__classPrivateFieldSet(this,p,null,"f")},y=function(e){return t.__awaiter(this,arguments,void 0,(function*({isDebug:e}){e?(t.__classPrivateFieldSet(this,p,document.createElement("descope-debugger"),"f"),Object.assign(t.__classPrivateFieldGet(this,p,"f").style,{position:"fixed",top:"0",right:"0",height:"100vh",width:"100vw",pointerEvents:"none",zIndex:99999}),yield Promise.resolve().then((function(){return L(require("../debugger-wc.js"))})),document.body.appendChild(t.__classPrivateFieldGet(this,p,"f"))):t.__classPrivateFieldGet(this,u,"m",E).call(this)}))},I=function(e,i){var s;e&&this.debug&&(null===(s=t.__classPrivateFieldGet(this,p,"f"))||void 0===s||s.updateData({title:e,description:i}))},G=function(){this.rootElement.onkeydown=t=>{var e,i,s;const r=!!(null===(e=this.shadowRoot.activeElement)||void 0===e?void 0:e.getAttribute("href")),n=o.ELEMENTS_TO_IGNORE_ENTER_KEY_ON.includes(null!==(s=null===(i=this.shadowRoot.activeElement)||void 0===i?void 0:i.localName)&&void 0!==s?s:"");if("Enter"!==t.key||r||n)return;t.preventDefault();const a=this.rootElement.querySelectorAll("descope-button");if(1===a.length&&"false"!==a[0].getAttribute("auto-submit"))return void a[0].click();const l=Array.from(a).filter((t=>"true"===t.getAttribute("auto-submit")));if(1===l.length)return void l[0].click();const u=Array.from(a).filter((t=>"button"===t.getAttribute("data-type")));if(1===u.length)"false"!==u[0].getAttribute("auto-submit")&&u[0].click();else if(0===u.length){const t=Array.from(a).filter((t=>"sso"===t.getAttribute("data-type")));1===t.length&&"false"!==t[0].getAttribute("auto-submit")&&t[0].click()}}},q.sdkConfigOverrides={baseHeaders:{"x-descope-sdk-name":"web-component","x-descope-sdk-version":"3.43.5"}},module.exports=q;
|
|
2
2
|
//# sourceMappingURL=BaseDescopeWc.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseDescopeWc.js","sources":["../../../src/lib/descope-wc/BaseDescopeWc.ts"],"sourcesContent":["import { compose } from '@descope/sdk-helpers';\n// eslint-disable-next-line import/no-duplicates\nimport { staticResourcesMixin } from '@descope/sdk-mixins/static-resources-mixin';\n// eslint-disable-next-line import/no-duplicates\nimport { themeMixin } from '@descope/sdk-mixins/theme-mixin';\nimport createSdk from '@descope/web-js-sdk';\nimport {\n CONFIG_FILENAME,\n ELEMENTS_TO_IGNORE_ENTER_KEY_ON,\n FETCH_EXCEPTION_ERROR_CODE,\n PREV_VER_ASSETS_FOLDER,\n} from '../constants';\nimport {\n camelCase,\n clearRunIdsFromUrl,\n fetchContent,\n getContentUrl,\n getRunIdsFromUrl,\n handleUrlParams,\n State,\n} from '../helpers';\nimport {\n extractNestedAttribute,\n transformFlowInputFormData,\n} from '../helpers/flowInputs';\nimport { IsChanged } from '../helpers/state';\nimport { formMountMixin } from '../mixins';\nimport {\n AutoFocusOptions,\n DebuggerMessage,\n DebugState,\n DescopeUI,\n FlowConfig,\n FlowState,\n FlowStateUpdateFn,\n FlowStatus,\n ProjectConfiguration,\n SdkConfig,\n} from '../types';\n\n// this is replaced in build time\ndeclare const BUILD_VERSION: string;\n\nconst BaseClass = compose(\n themeMixin,\n staticResourcesMixin,\n formMountMixin,\n)(HTMLElement);\n\n// this base class is responsible for WC initialization\nclass BaseDescopeWc extends BaseClass {\n static get observedAttributes() {\n return [\n 'project-id',\n 'flow-id',\n 'base-url',\n 'tenant',\n 'locale',\n 'debug',\n 'storage-prefix',\n 'preview',\n 'redirect-url',\n 'auto-focus',\n 'store-last-authenticated-user',\n 'refresh-cookie-name',\n 'keep-last-authenticated-user-after-logout',\n 'validate-on-blur',\n 'style-id',\n 'nonce',\n ];\n }\n\n // this is a way for extending the sdk config from outside\n static sdkConfigOverrides: Partial<SdkConfig> = {\n baseHeaders: {\n 'x-descope-sdk-name': 'web-component',\n 'x-descope-sdk-version': BUILD_VERSION,\n },\n };\n\n #init = false;\n\n flowStatus: FlowStatus = 'initial';\n\n loggerWrapper = {\n error: (message: string, description = '') => {\n this.logger.error(message, description, new Error());\n this.#updateDebuggerMessages(message, description);\n },\n warn: (message: string, description = '') => {\n this.logger.warn(message, description);\n },\n info: (message: string, description = '', state: any = {}) => {\n this.logger.info(message, description, state);\n },\n debug: (message: string, description = '') => {\n this.logger.debug(message, description);\n },\n };\n\n #flowState = new State<FlowState>();\n\n #debugState = new State<DebugState>();\n\n #componentsContext = {};\n\n getComponentsContext = () => this.#componentsContext;\n\n nextRequestStatus = new State<{ isLoading: boolean }>({ isLoading: false });\n\n rootElement: HTMLDivElement;\n\n contentRootElement: HTMLDivElement;\n\n slotElement: HTMLSlotElement;\n\n #debuggerEle: HTMLElement & {\n updateData: (data: DebuggerMessage | DebuggerMessage[]) => void;\n };\n\n #eventsCbRefs = {\n popstate: this.#syncStateIdFromUrl.bind(this),\n componentsContext: this.#handleComponentsContext.bind(this),\n };\n\n sdk: ReturnType<typeof createSdk>;\n\n #updateExecState: FlowStateUpdateFn;\n\n descopeUI: Promise<DescopeUI>;\n\n constructor(updateExecState: FlowStateUpdateFn) {\n super();\n this.#updateExecState = updateExecState;\n\n this.#initShadowDom();\n }\n\n #loadInitStyle() {\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(`\n :host {\n\t\t\twidth: 100%;\n display: block;\n\t\t}\n\n\t\t#root {\n\t\t\theight: 100%;\n display: flex;\n flex-direction: column;\n\t\t}\n\n #content-root {\n all: initial;\n transition: opacity 200ms ease-in-out;\n }\n\n\t\t#root[data-theme] {\n\t\t\tbackground-color: transparent;\n\t\t}\n\n\t\t.fade-out {\n\t\t\topacity: 0.1!important;\n\t\t}\n\n .hidden {\n display: none;\n }\n `);\n this.shadowRoot.adoptedStyleSheets ??= [];\n this.shadowRoot.adoptedStyleSheets = [\n ...this.shadowRoot.adoptedStyleSheets,\n sheet,\n ];\n }\n\n #initShadowDom() {\n this.#loadInitStyle();\n this.slotElement = document.createElement('slot');\n this.slotElement.classList.add('hidden');\n this.rootElement.appendChild(this.slotElement);\n }\n\n get flowId() {\n return this.getAttribute('flow-id');\n }\n\n get client() {\n try {\n return (JSON.parse(this.getAttribute('client')) || {}) as Record<\n string,\n any\n >;\n } catch (e) {\n return {};\n }\n }\n\n get tenantId() {\n return this.getAttribute('tenant') || undefined;\n }\n\n get redirectUrl() {\n return this.getAttribute('redirect-url') || undefined;\n }\n\n get debug() {\n return this.getAttribute('debug') === 'true';\n }\n\n get locale() {\n return this.getAttribute('locale') || undefined;\n }\n\n get autoFocus(): AutoFocusOptions {\n const res = this.getAttribute('auto-focus') ?? 'true';\n if (res === 'skipFirstScreen') {\n return res;\n }\n return res === 'true';\n }\n\n get validateOnBlur() {\n return this.getAttribute('validate-on-blur') === 'true';\n }\n\n get storeLastAuthenticatedUser() {\n const res = this.getAttribute('store-last-authenticated-user') ?? 'true';\n return res === 'true';\n }\n\n get refreshCookieName() {\n return this.getAttribute('refresh-cookie-name') || '';\n }\n\n get keepLastAuthenticatedUserAfterLogout() {\n const res = this.getAttribute('keep-last-authenticated-user-after-logout');\n return res === 'true';\n }\n\n get storagePrefix() {\n return this.getAttribute('storage-prefix') || '';\n }\n\n get preview() {\n return !!this.getAttribute('preview');\n }\n\n get formConfig() {\n return transformFlowInputFormData(this.form);\n }\n\n get form() {\n return this.getAttribute('form');\n }\n\n get formConfigValues() {\n return extractNestedAttribute(this.formConfig, 'value');\n }\n\n get outboundAppId() {\n return this.getAttribute('outbound-app-id');\n }\n\n get outboundAppScopes() {\n try {\n const scopes = JSON.parse(this.getAttribute('outbound-app-scopes'));\n if (!scopes) return null;\n return scopes;\n } catch (err) {\n return null;\n }\n }\n\n #validateAttrs() {\n const optionalAttributes = [\n 'base-url',\n 'tenant',\n 'locale',\n 'debug',\n 'redirect-url',\n 'auto-focus',\n 'store-last-authenticated-user',\n 'refresh-cookie-name',\n 'keep-last-authenticated-user-after-logout',\n 'preview',\n 'storage-prefix',\n 'form',\n 'client',\n 'validate-on-blur',\n 'style-id',\n 'nonce',\n 'outbound-app-id',\n 'outbound-app-scopes',\n ];\n\n BaseDescopeWc.observedAttributes.forEach((attr: string) => {\n if (!optionalAttributes.includes(attr) && !this[camelCase(attr)])\n throw Error(`${attr} cannot be empty`);\n });\n }\n\n #syncStateIdFromUrl() {\n const { stepId, executionId } = getRunIdsFromUrl(this.flowId);\n this.#flowState.update({ stepId, executionId });\n }\n\n #createSdk(projectId: string, baseUrl: string) {\n this.sdk = createSdk({\n // Use persist tokens options in order to add existing tokens in outgoing requests (if they exists)\n persistTokens: true,\n preview: this.preview,\n storagePrefix: this.storagePrefix,\n storeLastAuthenticatedUser: this.storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout:\n this.keepLastAuthenticatedUserAfterLogout,\n refreshCookieName: this.refreshCookieName,\n ...BaseDescopeWc.sdkConfigOverrides,\n projectId,\n baseUrl,\n });\n\n // we are wrapping the next & start function so we can indicate the request status\n ['start', 'next'].forEach((key) => {\n const origFn = this.sdk.flow[key];\n\n this.sdk.flow[key] = async (...args: Parameters<typeof origFn>) => {\n try {\n const resp = await origFn(...args);\n return resp;\n } catch (e) {\n // return a generic error object in case of an error\n return {\n error: {\n errorCode: FETCH_EXCEPTION_ERROR_CODE,\n errorDescription: e.toString(),\n },\n };\n }\n };\n });\n }\n\n async #onFlowChange(\n currentState: FlowState,\n _prevState: FlowState,\n isChanged: IsChanged<FlowState>,\n ) {\n const { projectId, baseUrl } = currentState;\n\n const shouldCreateSdkInstance =\n isChanged('projectId') || isChanged('baseUrl');\n\n if (shouldCreateSdkInstance) {\n if (!projectId) return;\n // Initialize the sdk when got a new project id\n this.#createSdk(projectId, baseUrl);\n }\n\n // update runtime state\n this.#updateExecState(currentState);\n }\n\n async #getIsFlowsVersionMismatch() {\n const config = await this.getConfig();\n\n return (\n 'isMissingConfig' in config &&\n config.isMissingConfig &&\n (await this.#isPrevVerConfig())\n );\n }\n\n // we are not using fetchStaticResource here\n // because we do not want to use the fallbacks mechanism\n async #isPrevVerConfig() {\n const prevVerConfigUrl = getContentUrl({\n projectId: this.projectId,\n filename: CONFIG_FILENAME,\n assetsFolder: PREV_VER_ASSETS_FOLDER,\n baseUrl: this.baseStaticUrl,\n });\n try {\n await fetchContent(prevVerConfigUrl, 'json');\n return true;\n } catch (e) {\n return false;\n }\n }\n\n getConfig = async () => (await this.config) || { isMissingConfig: true };\n\n #handleComponentsContext(e: CustomEvent) {\n this.#componentsContext = { ...this.#componentsContext, ...e.detail };\n }\n\n get isRestartOnError() {\n return this.getAttribute('restart-on-error') === 'true';\n }\n\n async getExecutionContext() {\n const config = await this.getConfig();\n return 'executionContext' in config ? config.executionContext : undefined;\n }\n\n #disableDebugger() {\n this.#debuggerEle?.remove();\n this.#debuggerEle = null;\n }\n\n async #handleDebugMode({ isDebug }) {\n if (isDebug) {\n this.#debuggerEle = document.createElement(\n 'descope-debugger',\n ) as HTMLElement & {\n updateData: (data: DebuggerMessage | DebuggerMessage[]) => void;\n };\n\n Object.assign(this.#debuggerEle.style, {\n position: 'fixed',\n top: '0',\n right: '0',\n height: '100vh',\n width: '100vw',\n pointerEvents: 'none',\n zIndex: 99999,\n });\n\n // we are importing the debugger dynamically so we won't load it when it's not needed\n await import('../debugger-wc');\n\n document.body.appendChild(this.#debuggerEle);\n } else {\n this.#disableDebugger();\n }\n }\n\n #updateDebuggerMessages(title: string, description: string) {\n if (title && this.debug)\n this.#debuggerEle?.updateData({ title, description });\n }\n\n async getProjectConfig(): Promise<ProjectConfiguration> {\n const config = await this.getConfig();\n return 'projectConfig' in config ? config.projectConfig : undefined;\n }\n\n async getFlowConfig(): Promise<FlowConfig> {\n const projectConfig = await this.getProjectConfig();\n\n const flowConfig =\n projectConfig?.flows?.[this.flowId] || ({} as FlowConfig);\n flowConfig.version ??= 0;\n return flowConfig;\n }\n\n async getTargetLocales() {\n const flowConfig = await this.getFlowConfig();\n return (flowConfig?.targetLocales || []).map((locale: string) =>\n locale.toLowerCase(),\n );\n }\n\n #handleKeyPress() {\n // we want to simulate submit when the user presses Enter\n this.rootElement.onkeydown = (e) => {\n // we do not want to submit the form if the focus is on a link element\n const isLinkEleFocused =\n !!this.shadowRoot.activeElement?.getAttribute('href');\n const isIgnoredElementFocused = ELEMENTS_TO_IGNORE_ENTER_KEY_ON.includes(\n this.shadowRoot.activeElement?.localName ?? '',\n );\n\n if (e.key !== 'Enter' || isLinkEleFocused || isIgnoredElementFocused)\n return;\n\n e.preventDefault();\n const buttons: NodeListOf<HTMLButtonElement> =\n this.rootElement.querySelectorAll('descope-button');\n\n // in case there is a single button on the page, click on it\n if (\n buttons.length === 1 &&\n buttons[0].getAttribute('auto-submit') !== 'false'\n ) {\n buttons[0].click();\n return;\n }\n\n const autoSubmitButtons = Array.from(buttons).filter(\n (button) => button.getAttribute('auto-submit') === 'true',\n );\n if (autoSubmitButtons.length === 1) {\n autoSubmitButtons[0].click();\n return;\n }\n\n const genericButtons = Array.from(buttons).filter(\n (button) => button.getAttribute('data-type') === 'button',\n );\n\n // in case there is a single \"generic\" button on the page, click on it\n if (genericButtons.length === 1) {\n if (genericButtons[0].getAttribute('auto-submit') !== 'false') {\n genericButtons[0].click();\n }\n } else if (genericButtons.length === 0) {\n const ssoButtons = Array.from(buttons).filter(\n (button) => button.getAttribute('data-type') === 'sso',\n );\n\n // in case there is a single \"sso\" button on the page, click on it\n if (ssoButtons.length === 1) {\n if (ssoButtons[0].getAttribute('auto-submit') !== 'false') {\n ssoButtons[0].click();\n }\n }\n }\n };\n }\n\n async getComponentsVersion() {\n const config = await this.getConfig();\n const version =\n 'projectConfig' in config ? config.projectConfig?.componentsVersion : {};\n\n if (version) return version;\n\n this.logger.error('Did not get components version, using latest version');\n\n return 'latest';\n }\n\n static descopeUI: any;\n\n #handleNonce() {\n if (this.getAttribute('nonce')) {\n // the key name \"DESCOPE_NONCE\" is in use also by the web-components-ui\n // it's used to set Vaadins style tags nonce\n (window as any).DESCOPE_NONCE = this.getAttribute('nonce');\n }\n }\n\n async init() {\n this.flowStatus = 'loading';\n ['ready', 'error', 'success'].forEach((status: FlowStatus) =>\n this.addEventListener(status, () => {\n this.flowStatus = status;\n }),\n );\n\n await super.init?.();\n this.#debugState.subscribe(this.#handleDebugMode.bind(this));\n this.#debugState.update({ isDebug: this.debug });\n\n this.#validateAttrs();\n this.#handleNonce();\n\n if (await this.#getIsFlowsVersionMismatch()) {\n this.loggerWrapper.error(\n 'This SDK version does not support your flows version',\n 'Make sure to upgrade your flows to the latest version or use an older SDK version',\n );\n\n return;\n }\n\n const config = await this.getConfig();\n if ('isMissingConfig' in config && config.isMissingConfig) {\n this.loggerWrapper.error(\n 'Cannot get config file',\n 'Make sure that your projectId & flowId are correct',\n );\n\n return;\n }\n\n this.#handleKeyPress();\n\n const {\n executionId,\n stepId,\n token,\n code,\n exchangeError,\n redirectAuthCallbackUrl,\n redirectAuthBackupCallbackUri,\n redirectAuthCodeChallenge,\n redirectAuthInitiator,\n ssoQueryParams,\n } = handleUrlParams(this.flowId, this.loggerWrapper);\n\n // we want to update the state when user clicks on back in the browser\n window.addEventListener('popstate', this.#eventsCbRefs.popstate);\n\n // adding event to listen to events coming from components (e.g. recaptcha risk token) that want to add data to the context\n // this data will be sent to the server on the next request\n window.addEventListener(\n 'components-context',\n this.#eventsCbRefs.componentsContext,\n );\n\n this.#flowState.subscribe(this.#onFlowChange.bind(this));\n\n this.#flowState.update({\n projectId: this.projectId,\n flowId: this.flowId,\n baseUrl: this.baseUrl,\n tenant: this.tenantId,\n redirectUrl: this.redirectUrl,\n locale: this.locale,\n stepId,\n executionId,\n token,\n code,\n exchangeError,\n redirectAuthCallbackUrl,\n redirectAuthBackupCallbackUri,\n redirectAuthCodeChallenge,\n redirectAuthInitiator,\n ...ssoQueryParams,\n });\n\n this.#init = true;\n }\n\n disconnectedCallback() {\n this.#flowState.unsubscribeAll();\n this.#debugState.unsubscribeAll();\n this.#disableDebugger();\n window.removeEventListener('popstate', this.#eventsCbRefs.popstate);\n window.removeEventListener(\n 'components-context',\n this.#eventsCbRefs.componentsContext,\n );\n }\n\n attributeChangedCallback(\n attrName: string,\n oldValue: string,\n newValue: string,\n ) {\n if (!this.shadowRoot.isConnected || !this.#init) return;\n\n if (\n oldValue !== newValue &&\n BaseDescopeWc.observedAttributes.includes(attrName)\n ) {\n this.#validateAttrs();\n\n const isInitialRun = oldValue === null;\n\n if (attrName === 'nonce') {\n this.#handleNonce();\n }\n\n this.#flowState.update(({ stepId, executionId }) => {\n let newStepId = stepId;\n let newExecutionId = executionId;\n\n // If not initial run and we got a new project/flow, we want to restart the step\n if (!isInitialRun) {\n newExecutionId = null;\n newStepId = null;\n clearRunIdsFromUrl();\n }\n\n return {\n [camelCase(attrName)]: newValue,\n stepId: newStepId,\n executionId: newExecutionId,\n };\n });\n\n this.#debugState.update({ isDebug: this.debug });\n }\n }\n}\n\nexport default BaseDescopeWc;\n"],"names":["BaseClass","compose","themeMixin","staticResourcesMixin","formMountMixin","HTMLElement","BaseDescopeWc","observedAttributes","constructor","updateExecState","super","_BaseDescopeWc_init","set","this","flowStatus","loggerWrapper","error","message","description","logger","Error","__classPrivateFieldGet","call","warn","info","state","debug","_BaseDescopeWc_flowState","State","_BaseDescopeWc_debugState","_BaseDescopeWc_componentsContext","getComponentsContext","nextRequestStatus","isLoading","_BaseDescopeWc_debuggerEle","_BaseDescopeWc_eventsCbRefs","popstate","_BaseDescopeWc_instances","_BaseDescopeWc_syncStateIdFromUrl","bind","componentsContext","_BaseDescopeWc_handleComponentsContext","_BaseDescopeWc_updateExecState","getConfig","config","isMissingConfig","__classPrivateFieldSet","_BaseDescopeWc_initShadowDom","flowId","getAttribute","client","JSON","parse","e","tenantId","undefined","redirectUrl","locale","autoFocus","res","_b","validateOnBlur","storeLastAuthenticatedUser","refreshCookieName","keepLastAuthenticatedUserAfterLogout","storagePrefix","preview","formConfig","transformFlowInputFormData","form","formConfigValues","extractNestedAttribute","outboundAppId","outboundAppScopes","scopes","err","isRestartOnError","getExecutionContext","executionContext","getProjectConfig","projectConfig","getFlowConfig","flowConfig","flows","_c","version","getTargetLocales","targetLocales","map","toLowerCase","getComponentsVersion","componentsVersion","init","forEach","status","addEventListener","_super","subscribe","_BaseDescopeWc_handleDebugMode","update","isDebug","_BaseDescopeWc_validateAttrs","_BaseDescopeWc_handleNonce","_BaseDescopeWc_getIsFlowsVersionMismatch","_BaseDescopeWc_handleKeyPress","executionId","stepId","token","code","exchangeError","redirectAuthCallbackUrl","redirectAuthBackupCallbackUri","redirectAuthCodeChallenge","redirectAuthInitiator","ssoQueryParams","handleUrlParams","window","_BaseDescopeWc_onFlowChange","Object","assign","projectId","baseUrl","tenant","disconnectedCallback","unsubscribeAll","_BaseDescopeWc_disableDebugger","removeEventListener","attributeChangedCallback","attrName","oldValue","newValue","shadowRoot","isConnected","_a","includes","isInitialRun","newStepId","newExecutionId","clearRunIdsFromUrl","camelCase","sheet","CSSStyleSheet","replaceSync","adoptedStyleSheets","_BaseDescopeWc_loadInitStyle","slotElement","document","createElement","classList","add","rootElement","appendChild","optionalAttributes","attr","getRunIdsFromUrl","_BaseDescopeWc_createSdk","sdk","createSdk","persistTokens","sdkConfigOverrides","key","origFn","flow","args","__awaiter","errorCode","FETCH_EXCEPTION_ERROR_CODE","errorDescription","toString","currentState","_prevState","isChanged","_BaseDescopeWc_isPrevVerConfig","prevVerConfigUrl","getContentUrl","filename","CONFIG_FILENAME","assetsFolder","PREV_VER_ASSETS_FOLDER","baseStaticUrl","fetchContent","detail","remove","arguments","style","position","top","right","height","width","pointerEvents","zIndex","Promise","resolve","then","_interopNamespaceDefaultOnly","require","body","_BaseDescopeWc_updateDebuggerMessages","title","updateData","onkeydown","isLinkEleFocused","activeElement","isIgnoredElementFocused","ELEMENTS_TO_IGNORE_ENTER_KEY_ON","localName","_d","preventDefault","buttons","querySelectorAll","length","click","autoSubmitButtons","Array","from","filter","button","genericButtons","ssoButtons","DESCOPE_NONCE","baseHeaders"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BaseDescopeWc.js","sources":["../../../src/lib/descope-wc/BaseDescopeWc.ts"],"sourcesContent":["import { compose } from '@descope/sdk-helpers';\n// eslint-disable-next-line import/no-duplicates\nimport { staticResourcesMixin } from '@descope/sdk-mixins/static-resources-mixin';\n// eslint-disable-next-line import/no-duplicates\nimport { themeMixin } from '@descope/sdk-mixins/theme-mixin';\n// eslint-disable-next-line import/no-duplicates\nimport { injectStyleMixin } from '@descope/sdk-mixins/inject-style-mixin';\nimport createSdk from '@descope/web-js-sdk';\nimport {\n CONFIG_FILENAME,\n ELEMENTS_TO_IGNORE_ENTER_KEY_ON,\n FETCH_EXCEPTION_ERROR_CODE,\n PREV_VER_ASSETS_FOLDER,\n} from '../constants';\nimport {\n camelCase,\n clearRunIdsFromUrl,\n fetchContent,\n getContentUrl,\n getRunIdsFromUrl,\n handleUrlParams,\n State,\n} from '../helpers';\nimport {\n extractNestedAttribute,\n transformFlowInputFormData,\n} from '../helpers/flowInputs';\nimport { IsChanged } from '../helpers/state';\nimport { formMountMixin } from '../mixins';\nimport {\n AutoFocusOptions,\n DebuggerMessage,\n DebugState,\n DescopeUI,\n FlowConfig,\n FlowState,\n FlowStateUpdateFn,\n FlowStatus,\n ProjectConfiguration,\n SdkConfig,\n} from '../types';\n\n// this is replaced in build time\ndeclare const BUILD_VERSION: string;\n\nconst BaseClass = compose(\n themeMixin,\n staticResourcesMixin,\n formMountMixin,\n injectStyleMixin,\n)(HTMLElement);\n\n// this base class is responsible for WC initialization\nclass BaseDescopeWc extends BaseClass {\n static get observedAttributes() {\n return [\n 'project-id',\n 'flow-id',\n 'base-url',\n 'tenant',\n 'locale',\n 'debug',\n 'storage-prefix',\n 'preview',\n 'redirect-url',\n 'auto-focus',\n 'store-last-authenticated-user',\n 'refresh-cookie-name',\n 'keep-last-authenticated-user-after-logout',\n 'validate-on-blur',\n 'style-id',\n ];\n }\n\n // this is a way for extending the sdk config from outside\n static sdkConfigOverrides: Partial<SdkConfig> = {\n baseHeaders: {\n 'x-descope-sdk-name': 'web-component',\n 'x-descope-sdk-version': BUILD_VERSION,\n },\n };\n\n #init = false;\n\n flowStatus: FlowStatus = 'initial';\n\n loggerWrapper = {\n error: (message: string, description = '') => {\n this.logger.error(message, description, new Error());\n this.#updateDebuggerMessages(message, description);\n },\n warn: (message: string, description = '') => {\n this.logger.warn(message, description);\n },\n info: (message: string, description = '', state: any = {}) => {\n this.logger.info(message, description, state);\n },\n debug: (message: string, description = '') => {\n this.logger.debug(message, description);\n },\n };\n\n #flowState = new State<FlowState>();\n\n #debugState = new State<DebugState>();\n\n #componentsContext = {};\n\n getComponentsContext = () => this.#componentsContext;\n\n nextRequestStatus = new State<{ isLoading: boolean }>({ isLoading: false });\n\n rootElement: HTMLDivElement;\n\n contentRootElement: HTMLDivElement;\n\n slotElement: HTMLSlotElement;\n\n #debuggerEle: HTMLElement & {\n updateData: (data: DebuggerMessage | DebuggerMessage[]) => void;\n };\n\n #eventsCbRefs = {\n popstate: this.#syncStateIdFromUrl.bind(this),\n componentsContext: this.#handleComponentsContext.bind(this),\n };\n\n sdk: ReturnType<typeof createSdk>;\n\n #updateExecState: FlowStateUpdateFn;\n\n descopeUI: Promise<DescopeUI>;\n\n constructor(updateExecState: FlowStateUpdateFn) {\n super();\n this.#updateExecState = updateExecState;\n\n this.#initShadowDom();\n }\n\n #loadInitStyle() {\n this.injectStyle(`\n :host {\n\t\t\twidth: 100%;\n display: block;\n\t\t}\n\n\t\t#root {\n\t\t\theight: 100%;\n display: flex;\n flex-direction: column;\n\t\t}\n\n #content-root {\n all: initial;\n transition: opacity 200ms ease-in-out;\n }\n\n\t\t#root[data-theme] {\n\t\t\tbackground-color: transparent;\n\t\t}\n\n\t\t.fade-out {\n\t\t\topacity: 0.1!important;\n\t\t}\n\n .hidden {\n display: none;\n }\n `);\n }\n\n #initShadowDom() {\n this.#loadInitStyle();\n this.slotElement = document.createElement('slot');\n this.slotElement.classList.add('hidden');\n this.rootElement.appendChild(this.slotElement);\n }\n\n get flowId() {\n return this.getAttribute('flow-id');\n }\n\n get client() {\n try {\n return (JSON.parse(this.getAttribute('client')) || {}) as Record<\n string,\n any\n >;\n } catch (e) {\n return {};\n }\n }\n\n get tenantId() {\n return this.getAttribute('tenant') || undefined;\n }\n\n get redirectUrl() {\n return this.getAttribute('redirect-url') || undefined;\n }\n\n get debug() {\n return this.getAttribute('debug') === 'true';\n }\n\n get locale() {\n return this.getAttribute('locale') || undefined;\n }\n\n get autoFocus(): AutoFocusOptions {\n const res = this.getAttribute('auto-focus') ?? 'true';\n if (res === 'skipFirstScreen') {\n return res;\n }\n return res === 'true';\n }\n\n get validateOnBlur() {\n return this.getAttribute('validate-on-blur') === 'true';\n }\n\n get storeLastAuthenticatedUser() {\n const res = this.getAttribute('store-last-authenticated-user') ?? 'true';\n return res === 'true';\n }\n\n get refreshCookieName() {\n return this.getAttribute('refresh-cookie-name') || '';\n }\n\n get keepLastAuthenticatedUserAfterLogout() {\n const res = this.getAttribute('keep-last-authenticated-user-after-logout');\n return res === 'true';\n }\n\n get storagePrefix() {\n return this.getAttribute('storage-prefix') || '';\n }\n\n get preview() {\n return !!this.getAttribute('preview');\n }\n\n get formConfig() {\n return transformFlowInputFormData(this.form);\n }\n\n get form() {\n return this.getAttribute('form');\n }\n\n get formConfigValues() {\n return extractNestedAttribute(this.formConfig, 'value');\n }\n\n get outboundAppId() {\n return this.getAttribute('outbound-app-id');\n }\n\n get outboundAppScopes() {\n try {\n const scopes = JSON.parse(this.getAttribute('outbound-app-scopes'));\n if (!scopes) return null;\n return scopes;\n } catch (err) {\n return null;\n }\n }\n\n #validateAttrs() {\n const optionalAttributes = [\n 'base-url',\n 'tenant',\n 'locale',\n 'debug',\n 'redirect-url',\n 'auto-focus',\n 'store-last-authenticated-user',\n 'refresh-cookie-name',\n 'keep-last-authenticated-user-after-logout',\n 'preview',\n 'storage-prefix',\n 'form',\n 'client',\n 'validate-on-blur',\n 'style-id',\n 'outbound-app-id',\n 'outbound-app-scopes',\n ];\n\n BaseDescopeWc.observedAttributes.forEach((attr: string) => {\n if (!optionalAttributes.includes(attr) && !this[camelCase(attr)])\n throw Error(`${attr} cannot be empty`);\n });\n }\n\n #syncStateIdFromUrl() {\n const { stepId, executionId } = getRunIdsFromUrl(this.flowId);\n this.#flowState.update({ stepId, executionId });\n }\n\n #createSdk(projectId: string, baseUrl: string) {\n this.sdk = createSdk({\n // Use persist tokens options in order to add existing tokens in outgoing requests (if they exists)\n persistTokens: true,\n preview: this.preview,\n storagePrefix: this.storagePrefix,\n storeLastAuthenticatedUser: this.storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout:\n this.keepLastAuthenticatedUserAfterLogout,\n refreshCookieName: this.refreshCookieName,\n ...BaseDescopeWc.sdkConfigOverrides,\n projectId,\n baseUrl,\n });\n\n // we are wrapping the next & start function so we can indicate the request status\n ['start', 'next'].forEach((key) => {\n const origFn = this.sdk.flow[key];\n\n this.sdk.flow[key] = async (...args: Parameters<typeof origFn>) => {\n try {\n const resp = await origFn(...args);\n return resp;\n } catch (e) {\n // return a generic error object in case of an error\n return {\n error: {\n errorCode: FETCH_EXCEPTION_ERROR_CODE,\n errorDescription: e.toString(),\n },\n };\n }\n };\n });\n }\n\n async #onFlowChange(\n currentState: FlowState,\n _prevState: FlowState,\n isChanged: IsChanged<FlowState>,\n ) {\n const { projectId, baseUrl } = currentState;\n\n const shouldCreateSdkInstance =\n isChanged('projectId') || isChanged('baseUrl');\n\n if (shouldCreateSdkInstance) {\n if (!projectId) return;\n // Initialize the sdk when got a new project id\n this.#createSdk(projectId, baseUrl);\n }\n\n // update runtime state\n this.#updateExecState(currentState);\n }\n\n async #getIsFlowsVersionMismatch() {\n const config = await this.getConfig();\n\n return (\n 'isMissingConfig' in config &&\n config.isMissingConfig &&\n (await this.#isPrevVerConfig())\n );\n }\n\n // we are not using fetchStaticResource here\n // because we do not want to use the fallbacks mechanism\n async #isPrevVerConfig() {\n const prevVerConfigUrl = getContentUrl({\n projectId: this.projectId,\n filename: CONFIG_FILENAME,\n assetsFolder: PREV_VER_ASSETS_FOLDER,\n baseUrl: this.baseStaticUrl,\n });\n try {\n await fetchContent(prevVerConfigUrl, 'json');\n return true;\n } catch (e) {\n return false;\n }\n }\n\n getConfig = async () => (await this.config) || { isMissingConfig: true };\n\n #handleComponentsContext(e: CustomEvent) {\n this.#componentsContext = { ...this.#componentsContext, ...e.detail };\n }\n\n get isRestartOnError() {\n return this.getAttribute('restart-on-error') === 'true';\n }\n\n async getExecutionContext() {\n const config = await this.getConfig();\n return 'executionContext' in config ? config.executionContext : undefined;\n }\n\n #disableDebugger() {\n this.#debuggerEle?.remove();\n this.#debuggerEle = null;\n }\n\n async #handleDebugMode({ isDebug }) {\n if (isDebug) {\n this.#debuggerEle = document.createElement(\n 'descope-debugger',\n ) as HTMLElement & {\n updateData: (data: DebuggerMessage | DebuggerMessage[]) => void;\n };\n\n Object.assign(this.#debuggerEle.style, {\n position: 'fixed',\n top: '0',\n right: '0',\n height: '100vh',\n width: '100vw',\n pointerEvents: 'none',\n zIndex: 99999,\n });\n\n // we are importing the debugger dynamically so we won't load it when it's not needed\n await import('../debugger-wc');\n\n document.body.appendChild(this.#debuggerEle);\n } else {\n this.#disableDebugger();\n }\n }\n\n #updateDebuggerMessages(title: string, description: string) {\n if (title && this.debug)\n this.#debuggerEle?.updateData({ title, description });\n }\n\n async getProjectConfig(): Promise<ProjectConfiguration> {\n const config = await this.getConfig();\n return 'projectConfig' in config ? config.projectConfig : undefined;\n }\n\n async getFlowConfig(): Promise<FlowConfig> {\n const projectConfig = await this.getProjectConfig();\n\n const flowConfig =\n projectConfig?.flows?.[this.flowId] || ({} as FlowConfig);\n flowConfig.version ??= 0;\n return flowConfig;\n }\n\n async getTargetLocales() {\n const flowConfig = await this.getFlowConfig();\n return (flowConfig?.targetLocales || []).map((locale: string) =>\n locale.toLowerCase(),\n );\n }\n\n #handleKeyPress() {\n // we want to simulate submit when the user presses Enter\n this.rootElement.onkeydown = (e) => {\n // we do not want to submit the form if the focus is on a link element\n const isLinkEleFocused =\n !!this.shadowRoot.activeElement?.getAttribute('href');\n const isIgnoredElementFocused = ELEMENTS_TO_IGNORE_ENTER_KEY_ON.includes(\n this.shadowRoot.activeElement?.localName ?? '',\n );\n\n if (e.key !== 'Enter' || isLinkEleFocused || isIgnoredElementFocused)\n return;\n\n e.preventDefault();\n const buttons: NodeListOf<HTMLButtonElement> =\n this.rootElement.querySelectorAll('descope-button');\n\n // in case there is a single button on the page, click on it\n if (\n buttons.length === 1 &&\n buttons[0].getAttribute('auto-submit') !== 'false'\n ) {\n buttons[0].click();\n return;\n }\n\n const autoSubmitButtons = Array.from(buttons).filter(\n (button) => button.getAttribute('auto-submit') === 'true',\n );\n if (autoSubmitButtons.length === 1) {\n autoSubmitButtons[0].click();\n return;\n }\n\n const genericButtons = Array.from(buttons).filter(\n (button) => button.getAttribute('data-type') === 'button',\n );\n\n // in case there is a single \"generic\" button on the page, click on it\n if (genericButtons.length === 1) {\n if (genericButtons[0].getAttribute('auto-submit') !== 'false') {\n genericButtons[0].click();\n }\n } else if (genericButtons.length === 0) {\n const ssoButtons = Array.from(buttons).filter(\n (button) => button.getAttribute('data-type') === 'sso',\n );\n\n // in case there is a single \"sso\" button on the page, click on it\n if (ssoButtons.length === 1) {\n if (ssoButtons[0].getAttribute('auto-submit') !== 'false') {\n ssoButtons[0].click();\n }\n }\n }\n };\n }\n\n async getComponentsVersion() {\n const config = await this.getConfig();\n const version =\n 'projectConfig' in config ? config.projectConfig?.componentsVersion : {};\n\n if (version) return version;\n\n this.logger.error('Did not get components version, using latest version');\n\n return 'latest';\n }\n\n static descopeUI: any;\n\n async init() {\n this.flowStatus = 'loading';\n ['ready', 'error', 'success'].forEach((status: FlowStatus) =>\n this.addEventListener(status, () => {\n this.flowStatus = status;\n }),\n );\n\n await super.init?.();\n this.#debugState.subscribe(this.#handleDebugMode.bind(this));\n this.#debugState.update({ isDebug: this.debug });\n\n this.#validateAttrs();\n\n if (await this.#getIsFlowsVersionMismatch()) {\n this.loggerWrapper.error(\n 'This SDK version does not support your flows version',\n 'Make sure to upgrade your flows to the latest version or use an older SDK version',\n );\n\n return;\n }\n\n const config = await this.getConfig();\n if ('isMissingConfig' in config && config.isMissingConfig) {\n this.loggerWrapper.error(\n 'Cannot get config file',\n 'Make sure that your projectId & flowId are correct',\n );\n\n return;\n }\n\n this.#handleKeyPress();\n\n const {\n executionId,\n stepId,\n token,\n code,\n exchangeError,\n redirectAuthCallbackUrl,\n redirectAuthBackupCallbackUri,\n redirectAuthCodeChallenge,\n redirectAuthInitiator,\n ssoQueryParams,\n } = handleUrlParams(this.flowId, this.loggerWrapper);\n\n // we want to update the state when user clicks on back in the browser\n window.addEventListener('popstate', this.#eventsCbRefs.popstate);\n\n // adding event to listen to events coming from components (e.g. recaptcha risk token) that want to add data to the context\n // this data will be sent to the server on the next request\n window.addEventListener(\n 'components-context',\n this.#eventsCbRefs.componentsContext,\n );\n\n this.#flowState.subscribe(this.#onFlowChange.bind(this));\n\n this.#flowState.update({\n projectId: this.projectId,\n flowId: this.flowId,\n baseUrl: this.baseUrl,\n tenant: this.tenantId,\n redirectUrl: this.redirectUrl,\n locale: this.locale,\n stepId,\n executionId,\n token,\n code,\n exchangeError,\n redirectAuthCallbackUrl,\n redirectAuthBackupCallbackUri,\n redirectAuthCodeChallenge,\n redirectAuthInitiator,\n ...ssoQueryParams,\n });\n\n this.#init = true;\n }\n\n disconnectedCallback() {\n this.#flowState.unsubscribeAll();\n this.#debugState.unsubscribeAll();\n this.#disableDebugger();\n window.removeEventListener('popstate', this.#eventsCbRefs.popstate);\n window.removeEventListener(\n 'components-context',\n this.#eventsCbRefs.componentsContext,\n );\n }\n\n attributeChangedCallback(\n attrName: string,\n oldValue: string,\n newValue: string,\n ) {\n if (!this.shadowRoot.isConnected || !this.#init) return;\n\n if (\n oldValue !== newValue &&\n BaseDescopeWc.observedAttributes.includes(attrName)\n ) {\n this.#validateAttrs();\n\n const isInitialRun = oldValue === null;\n\n this.#flowState.update(({ stepId, executionId }) => {\n let newStepId = stepId;\n let newExecutionId = executionId;\n\n // If not initial run and we got a new project/flow, we want to restart the step\n if (!isInitialRun) {\n newExecutionId = null;\n newStepId = null;\n clearRunIdsFromUrl();\n }\n\n return {\n [camelCase(attrName)]: newValue,\n stepId: newStepId,\n executionId: newExecutionId,\n };\n });\n\n this.#debugState.update({ isDebug: this.debug });\n }\n }\n}\n\nexport default BaseDescopeWc;\n"],"names":["BaseClass","compose","themeMixin","staticResourcesMixin","formMountMixin","injectStyleMixin","HTMLElement","BaseDescopeWc","observedAttributes","constructor","updateExecState","super","_BaseDescopeWc_init","set","this","flowStatus","loggerWrapper","error","message","description","logger","Error","__classPrivateFieldGet","call","warn","info","state","debug","_BaseDescopeWc_flowState","State","_BaseDescopeWc_debugState","_BaseDescopeWc_componentsContext","getComponentsContext","nextRequestStatus","isLoading","_BaseDescopeWc_debuggerEle","_BaseDescopeWc_eventsCbRefs","popstate","_BaseDescopeWc_instances","_BaseDescopeWc_syncStateIdFromUrl","bind","componentsContext","_BaseDescopeWc_handleComponentsContext","_BaseDescopeWc_updateExecState","getConfig","config","isMissingConfig","__classPrivateFieldSet","_BaseDescopeWc_initShadowDom","flowId","getAttribute","client","JSON","parse","e","tenantId","undefined","redirectUrl","locale","autoFocus","res","_b","validateOnBlur","storeLastAuthenticatedUser","refreshCookieName","keepLastAuthenticatedUserAfterLogout","storagePrefix","preview","formConfig","transformFlowInputFormData","form","formConfigValues","extractNestedAttribute","outboundAppId","outboundAppScopes","scopes","err","isRestartOnError","getExecutionContext","executionContext","getProjectConfig","projectConfig","getFlowConfig","flowConfig","flows","_c","version","getTargetLocales","targetLocales","map","toLowerCase","getComponentsVersion","componentsVersion","init","forEach","status","addEventListener","_super","subscribe","_BaseDescopeWc_handleDebugMode","update","isDebug","_BaseDescopeWc_validateAttrs","_BaseDescopeWc_getIsFlowsVersionMismatch","_BaseDescopeWc_handleKeyPress","executionId","stepId","token","code","exchangeError","redirectAuthCallbackUrl","redirectAuthBackupCallbackUri","redirectAuthCodeChallenge","redirectAuthInitiator","ssoQueryParams","handleUrlParams","window","_BaseDescopeWc_onFlowChange","Object","assign","projectId","baseUrl","tenant","disconnectedCallback","unsubscribeAll","_BaseDescopeWc_disableDebugger","removeEventListener","attributeChangedCallback","attrName","oldValue","newValue","shadowRoot","isConnected","_a","includes","isInitialRun","newStepId","newExecutionId","clearRunIdsFromUrl","camelCase","injectStyle","_BaseDescopeWc_loadInitStyle","slotElement","document","createElement","classList","add","rootElement","appendChild","optionalAttributes","attr","getRunIdsFromUrl","_BaseDescopeWc_createSdk","sdk","createSdk","persistTokens","sdkConfigOverrides","key","origFn","flow","args","__awaiter","errorCode","FETCH_EXCEPTION_ERROR_CODE","errorDescription","toString","currentState","_prevState","isChanged","_BaseDescopeWc_isPrevVerConfig","prevVerConfigUrl","getContentUrl","filename","CONFIG_FILENAME","assetsFolder","PREV_VER_ASSETS_FOLDER","baseStaticUrl","fetchContent","detail","remove","arguments","style","position","top","right","height","width","pointerEvents","zIndex","Promise","resolve","then","_interopNamespaceDefaultOnly","require","body","_BaseDescopeWc_updateDebuggerMessages","title","updateData","onkeydown","isLinkEleFocused","activeElement","isIgnoredElementFocused","ELEMENTS_TO_IGNORE_ENTER_KEY_ON","localName","_d","preventDefault","buttons","querySelectorAll","length","click","autoSubmitButtons","Array","from","filter","button","genericButtons","ssoButtons","baseHeaders"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e,t,i,s,r,o,n,a,l,d,c,h,u,p,v,g,m,_,f,b,S,w,E,I,C,P,O,R,T,y,F,A,k,N,x=require("tslib"),G=require("@descope/web-js-sdk"),U=require("../constants/index.js"),j=require("../helpers/helpers.js"),W=require("../helpers/state.js"),L=require("../helpers/templates.js"),D=require("../helpers/webauthn.js"),q=require("../helpers/abTestingKey.js"),M=require("../helpers/conditions.js"),$=require("../helpers/lastAuth.js"),V=require("./BaseDescopeWc.js"),B=require("../constants/general.js");t=new WeakMap,i=new WeakMap,s=new WeakMap,r=new WeakMap,p=new WeakMap,g=new WeakMap,_=new WeakMap,f=new WeakMap,b=new WeakMap,S=new WeakMap,F=new WeakMap,e=new WeakSet,o=function(){document.hidden||setTimeout((()=>{this.flowState.update({deferredRedirect:!1})}),300)},n=function(t,i,s){return x.__awaiter(this,void 0,void 0,(function*(){var r;return(null===(r=this.nativeOptions)||void 0===r?void 0:r.bridgeVersion)>=2&&new Promise((r=>{this.nativeCallbacks.screenNext=s,this.nativeCallbacks.screenResolve=r,x.__classPrivateFieldGet(this,e,"m",l).call(this,"beforeScreen",{screen:t,context:i})}))}))},a=function(t){var i;(null===(i=this.nativeOptions)||void 0===i?void 0:i.bridgeVersion)>=2&&x.__classPrivateFieldGet(this,e,"m",l).call(this,"afterScreen",{screen:t})},l=function(t,i){x.__classPrivateFieldGet(this,e,"m",N).call(this,"bridge",{type:t,payload:i})},d=function({errorText:e,errorType:t}){const i=()=>{var i;let s=e;try{s=(null===(i=this.errorTransformer)||void 0===i?void 0:i.call(this,{text:e,type:t}))||e}catch(e){this.loggerWrapper.error("Error transforming error message",e.message)}L.replaceElementMessage(this.contentRootElement,"error-message",s)};this.addEventListener("screen-updated",i,{once:!0}),i()},c=function(){var t,i,s;null===(t=this.stepState)||void 0===t||t.subscribe(this.onStepChange.bind(this),(e=>{var t=e.screenState,i=void 0===t?{}:t,s=x.__rest(i,["errorText","errorType"]),r=x.__rest(e,["screenState"]);return Object.assign(Object.assign({},r),{screenState:s})})),null===(i=this.stepState)||void 0===i||i.subscribe(x.__classPrivateFieldGet(this,e,"m",d).bind(this),(e=>{var t,i;return{errorText:null===(t=null==e?void 0:e.screenState)||void 0===t?void 0:t.errorText,errorType:null===(i=null==e?void 0:e.screenState)||void 0===i?void 0:i.errorType}})),null===(s=this.stepState)||void 0===s||s.subscribe(x.__classPrivateFieldGet(this,e,"m",h).bind(this),(e=>{var t,i;return{errorText:null===(t=null==e?void 0:e.screenState)||void 0===t?void 0:t.errorText,errorType:null===(i=null==e?void 0:e.screenState)||void 0===i?void 0:i.errorType}}),{forceUpdate:!0})},h=function({errorText:e,errorType:t}){(t||e)&&(this.contentRootElement.querySelectorAll('descope-passcode[data-auto-submit="true"]').forEach((e=>{e.shadowRoot.querySelectorAll("descope-text-field[data-id]").forEach((e=>{e.value=""}))})),j.handleAutoFocus(this.contentRootElement,this.autoFocus,!1))},u=function(){return x.__awaiter(this,void 0,void 0,(function*(){this.loggerWrapper.debug("Trying to restart the flow");const e=yield this.getComponentsVersion();this.reset();e===(yield this.getComponentsVersion())?(this.loggerWrapper.debug("Components version was not changed, restarting flow"),this.flowState.update({stepId:null,executionId:null})):this.loggerWrapper.error("Components version mismatch, please reload the page")}))},v=function(t){return x.__awaiter(this,void 0,void 0,(function*(){var i;const s=Object.assign(Object.assign({},this.stepState.current),t),{next:r,stepName:o}=s,a=x.__rest(s,["next","stepName"]),l=j.transformStepStateForCustomScreen(a);let d=yield x.__classPrivateFieldGet(this,e,"m",n).call(this,o,l,r);d||(d=Boolean(yield null===(i=this.onScreenUpdate)||void 0===i?void 0:i.call(this,o,l,r,this)));const h=!this.stepState.current.htmlFilename;if(x.__classPrivateFieldGet(this,g,"f").call(this,d),x.__classPrivateFieldGet(this,p,"f")!==d){const[t,i]=["flow","custom"].sort((()=>d?-1:1));this.loggerWrapper.debug(`Switching from ${i} screen to ${t} screen`),x.__classPrivateFieldSet(this,p,d,"f"),d?this.stepState.unsubscribeAll():x.__classPrivateFieldGet(this,e,"m",c).call(this)}d&&(this.loggerWrapper.debug("Showing a custom screen"),x.__classPrivateFieldGet(this,e,"m",I).call(this,{isFirstScreen:h,isCustomScreen:d,stepName:t.stepName})),this.stepState.forceUpdate=d}))},m=function(e){this.contentRootElement.addEventListener("transitionend",(()=>{this.loggerWrapper.debug("page switch transition end"),this.contentRootElement.classList.remove("fade-out"),e()}),{once:!0}),this.loggerWrapper.debug("page switch transition start"),this.contentRootElement.classList.add("fade-out")},w=function(e){const t=e.getAttribute("name");if(!["email"].includes(t)){const i=`user-${t}`;e.setAttribute("name",i),e.addEventListener("input",(()=>{e.setAttribute("name",e.value?t:i)}))}},E=function(t,s){return x.__awaiter(this,void 0,void 0,(function*(){var r;null===(r=x.__classPrivateFieldGet(this,i,"f"))||void 0===r||r.abort();const o=t.querySelector('*[autocomplete="webauthn"]');if(o&&(yield D.isConditionalLoginSupported())){const{options:t,transactionId:r}=(yield x.__classPrivateFieldGet(this,S,"f").call(this))||{};t&&r&&(x.__classPrivateFieldGet(this,e,"m",w).call(this,o),x.__classPrivateFieldSet(this,i,new AbortController,"f"),this.sdk.webauthn.helpers.conditional(t,x.__classPrivateFieldGet(this,i,"f")).then((e=>x.__awaiter(this,void 0,void 0,(function*(){s(o.id,{transactionId:r,response:e})})))).catch((e=>{"AbortError"!==e.name&&this.loggerWrapper.error("Conditional login failed",e.message)})))}}))},I=function({isFirstScreen:t,isCustomScreen:i,stepName:s}){t&&x.__classPrivateFieldGet(this,e,"m",N).call(this,"ready",{}),i||x.__classPrivateFieldGet(this,e,"m",a).call(this,s),x.__classPrivateFieldGet(this,e,"m",N).call(this,"page-updated",{screenName:s}),x.__classPrivateFieldGet(this,e,"m",N).call(this,"screen-updated",{screenName:s})},C=function(){let e=!0;return Array.from(this.shadowRoot.querySelectorAll("*[name]")).reverse().forEach((t=>{var i,s;"slot"!==t.localName&&(null===(i=t.reportValidity)||void 0===i||i.call(t),e&&(e=null===(s=t.checkValidity)||void 0===s?void 0:s.call(t)))})),e},P=function(){return x.__awaiter(this,void 0,void 0,(function*(){const e=Array.from(this.shadowRoot.querySelectorAll(`*[name]:not([${U.DESCOPE_ATTRIBUTE_EXCLUDE_FIELD}])`));return(yield Promise.all(e.map((e=>x.__awaiter(this,void 0,void 0,(function*(){return{name:e.getAttribute("name"),value:e.value}})))))).reduce(((e,t)=>Object.assign(Object.assign({},e),{[t.name]:t.value})),{})}))},O=function(e){const t=this.nextRequestStatus.subscribe((({isLoading:i})=>{i?e.setAttribute("loading","true"):(this.nextRequestStatus.unsubscribe(t),e.removeAttribute("loading"))}))},R=function(e={}){var t,i;const s=j.getFirstNonEmptyValue(e,["externalId","email","phone"]),r=j.getFirstNonEmptyValue(e,["newPassword","password"]);if(s&&r)try{if(!globalThis.PasswordCredential)return;const e=new globalThis.PasswordCredential({id:s,password:r});null===(i=null===(t=null===navigator||void 0===navigator?void 0:navigator.credentials)||void 0===t?void 0:t.store)||void 0===i||i.call(t,e)}catch(e){this.loggerWrapper.error("Could not store credentials",e.message)}},T=function(){j.clearPreviousExternalInputs();this.contentRootElement.querySelectorAll('[external-input="true"]').forEach((t=>x.__classPrivateFieldGet(this,e,"m",y).call(this,t)))},y=function(e){if(!e)return;e.querySelectorAll("input").forEach((t=>{const i=t.getAttribute("slot"),s=`input-${e.id}-${i}`,r=document.createElement("slot");r.setAttribute("name",s),r.setAttribute("slot",i),e.appendChild(r),t.setAttribute("slot",s),this.appendChild(t)}))},A=function(e){this.contentRootElement.querySelectorAll('descope-passcode[data-auto-submit="true"]').forEach((t=>{t.addEventListener("input",(()=>{var i;(null===(i=t.checkValidity)||void 0===i?void 0:i.call(t))&&x.__classPrivateFieldGet(this,F,"f").call(this,t,e)}))}))},k=function(t){this.contentRootElement.querySelectorAll(`descope-button:not([${U.DESCOPE_ATTRIBUTE_EXCLUDE_NEXT_BUTTON}]), [data-type="button"]:not([${U.DESCOPE_ATTRIBUTE_EXCLUDE_NEXT_BUTTON}]`).forEach((e=>{e.onclick=()=>{x.__classPrivateFieldGet(this,F,"f").call(this,e,t)}})),x.__classPrivateFieldGet(this,e,"m",A).call(this,t),this.isDismissScreenErrorOnInput&&this.contentRootElement.querySelectorAll(`*[name]:not([${U.DESCOPE_ATTRIBUTE_EXCLUDE_FIELD}])`).forEach((e=>{e.addEventListener("input",(()=>{this.stepState.update((e=>Object.assign(Object.assign({},e),{screenState:Object.assign(Object.assign({},e.screenState),{errorText:"",errorType:""})})))}))}))},N=function(e,t){this.dispatchEvent(new CustomEvent(e,{detail:t}))},module.exports=class extends V{static set sdkConfigOverrides(e){V.sdkConfigOverrides=e}static get sdkConfigOverrides(){return V.sdkConfigOverrides}constructor(){const n=new W({deferredRedirect:!1});super(n.update.bind(n)),e.add(this),this.stepState=new W({}),t.set(this,void 0),i.set(this,null),s.set(this,null),r.set(this,{visibilitychange:x.__classPrivateFieldGet(this,e,"m",o).bind(this)}),this.bridgeVersion=2,this.nativeCallbacks={},p.set(this,!1),g.set(this,(t=>{const i=()=>{this.contentRootElement.classList.toggle("hidden",t),this.slotElement.classList.toggle("hidden",!t),t&&(this.contentRootElement.innerHTML="")};t&&this.contentRootElement.hasChildNodes()?x.__classPrivateFieldGet(this,e,"m",m).call(this,i):i()})),_.set(this,((e,i,s,r,o=!1)=>{if(this.flowState.current.action===U.RESPONSE_ACTIONS.poll){this.logger.debug("polling - Scheduling polling request");const n=Date.now(),a=o?500:2e3;x.__classPrivateFieldSet(this,t,setTimeout((()=>x.__awaiter(this,void 0,void 0,(function*(){var t;this.logger.debug("polling - Calling next");const l=this.sdk.flow.next(e,i,U.CUSTOM_INTERACTIONS.polling,s,r,{}),d=document.hidden&&!o&&Date.now()-n>a+500;let c;d&&this.logger.debug("polling - The polling seems to be throttled");try{const e=d?1e3:6e3;c=yield j.timeoutPromise(e,l)}catch(t){return this.logger.warn(`polling - The ${d?"throttled fetch":"fetch"} call timed out or was aborted`),void x.__classPrivateFieldGet(this,_,"f").call(this,e,i,s,r,d)}if((null===(t=null==c?void 0:c.error)||void 0===t?void 0:t.errorCode)===B.FETCH_EXCEPTION_ERROR_CODE)return this.logger.debug("polling - Got a generic error due to exception in fetch call"),void x.__classPrivateFieldGet(this,_,"f").call(this,e,i,s,r);this.logger.debug("polling - Got a response"),(null==c?void 0:c.error)&&this.logger.debug("polling - Response has an error",JSON.stringify(c.error,null,4)),x.__classPrivateFieldGet(this,_,"f").call(this,e,i,s,r),x.__classPrivateFieldGet(this,b,"f").call(this,c)}))),a),"f")}})),f.set(this,(()=>{clearTimeout(x.__classPrivateFieldGet(this,t,"f")),x.__classPrivateFieldSet(this,t,null,"f")})),b.set(this,(t=>{var i,r,o,n,a,l,d,c,h,p,v,g,m;if(!(null==t?void 0:t.ok)){const s=null===(i=null==t?void 0:t.response)||void 0===i?void 0:i.url,d=`${null===(r=null==t?void 0:t.response)||void 0===r?void 0:r.status} - ${null===(o=null==t?void 0:t.response)||void 0===o?void 0:o.statusText}`;x.__classPrivateFieldGet(this,e,"m",N).call(this,"error",(null==t?void 0:t.error)||{errorCode:B.FETCH_ERROR_RESPONSE_ERROR_CODE,errorDescription:d,errorMessage:s}),this.loggerWrapper.error((null===(n=null==t?void 0:t.error)||void 0===n?void 0:n.errorDescription)||s,(null===(a=null==t?void 0:t.error)||void 0===a?void 0:a.errorMessage)||d);const c=null===(l=null==t?void 0:t.error)||void 0===l?void 0:l.errorCode;return void("E102004"!==c&&"E103205"!==c||!this.isRestartOnError||x.__classPrivateFieldGet(this,e,"m",u).call(this))}null===(c=null===(d=t.data)||void 0===d?void 0:d.runnerLogs)||void 0===c||c.forEach((e=>{const{level:t,title:i,log:s}=e;t&&this.loggerWrapper[t]?this.loggerWrapper[t](i,s):this.loggerWrapper.info(i,s)}));const _=null===(v=null===(p=null===(h=t.data)||void 0===h?void 0:h.screen)||void 0===p?void 0:p.state)||void 0===v?void 0:v.errorText;(null===(g=t.data)||void 0===g?void 0:g.error)?this.loggerWrapper.error(`[${t.data.error.code}]: ${t.data.error.description}`,`${_?`${_} - `:""}${t.data.error.message}`):_&&this.loggerWrapper.error(_);const{status:b,authInfo:S,lastAuth:w,action:E,openInNewTabUrl:I}=t.data;if(E!==U.RESPONSE_ACTIONS.poll&&x.__classPrivateFieldGet(this,f,"f").call(this),"completed"===b)return this.storeLastAuthenticatedUser&&$.setLastAuth(w),void x.__classPrivateFieldGet(this,e,"m",N).call(this,"success",S);I&&window.open(I,"_blank");const{executionId:C,stepId:P,stepName:O,screen:R,redirect:T,webauthn:y,error:F,samlIdpResponse:A,nativeResponse:k}=t.data,G=Date.now();E!==U.RESPONSE_ACTIONS.poll?(this.loggerWrapper.info(`Step "${O||`#${P}`}" is ${b}`,"",{screen:R,status:b,stepId:P,stepName:O,action:E,error:F}),(null===(m=R.state)||void 0===m?void 0:m.clientScripts)&&x.__classPrivateFieldSet(this,s,this.loadSdkScripts(R.state.clientScripts),"f"),this.flowState.update({stepId:P,stepName:O,executionId:C,action:E,redirectTo:null==T?void 0:T.url,screenId:null==R?void 0:R.id,screenState:null==R?void 0:R.state,webauthnTransactionId:null==y?void 0:y.transactionId,webauthnOptions:null==y?void 0:y.options,samlIdpResponseUrl:null==A?void 0:A.url,samlIdpResponseSamlResponse:null==A?void 0:A.samlResponse,samlIdpResponseRelayState:null==A?void 0:A.relayState,nativeResponseType:null==k?void 0:k.type,nativePayload:null==k?void 0:k.payload,reqTimestamp:G})):this.flowState.update({action:E,reqTimestamp:G})})),S.set(this,j.withMemCache((()=>x.__awaiter(this,void 0,void 0,(function*(){var e;try{const t=yield this.sdk.webauthn.signIn.start("",window.location.origin);return t.ok||this.loggerWrapper.warn("Webauthn start failed",null===(e=null==t?void 0:t.error)||void 0===e?void 0:e.errorMessage),t.data}catch(e){this.loggerWrapper.warn("Webauthn start failed",e.message)}}))))),F.set(this,j.leadingDebounce(((t,i)=>x.__awaiter(this,void 0,void 0,(function*(){var r;if("true"===t.getAttribute("formnovalidate")||x.__classPrivateFieldGet(this,e,"m",C).call(this)){const o=null==t?void 0:t.getAttribute("id");x.__classPrivateFieldGet(this,e,"m",O).call(this,t);const n=yield x.__classPrivateFieldGet(this,e,"m",P).call(this),a=j.getElementDescopeAttributes(t);if(this.nextRequestStatus.update({isLoading:!0}),x.__classPrivateFieldGet(this,s,"f")){this.loggerWrapper.debug("Waiting for sdk scripts to load");const e=Date.now();yield x.__classPrivateFieldGet(this,s,"f"),this.loggerWrapper.debug("Sdk scripts loaded for",(Date.now()-e).toString())}const l=this.loadSdkScriptsModules();if(l.length>0){const e=l.filter((e=>"function"==typeof e.refresh)).map((e=>e.refresh()));e.length>0&&(yield j.timeoutPromise(U.SDK_SCRIPTS_LOAD_TIMEOUT,Promise.all(e),null))}const d=this.getComponentsContext(),c=Object.assign(Object.assign(Object.assign(Object.assign({},d),a),n),{origin:(null===(r=this.nativeOptions)||void 0===r?void 0:r.origin)||window.location.origin});yield i(o,c),this.nextRequestStatus.update({isLoading:!1}),x.__classPrivateFieldGet(this,e,"m",R).call(this,n)}}))))),this.flowState=n}nativeResume(e,t){var i,s,r,o,n;const a=JSON.parse(t);if("oauthWeb"===e||"sso"===e){let{exchangeCode:e}=a;if(!e){e=null===(i=new URL(a.url).searchParams)||void 0===i?void 0:i.get(U.URL_CODE_PARAM_NAME)}null===(r=(s=this.nativeCallbacks).complete)||void 0===r||r.call(s,{exchangeCode:e,idpInitiated:!0})}else if("magicLink"===e){const e=new URL(a.url),t=e.searchParams.get(U.URL_TOKEN_PARAM_NAME),i=e.searchParams.get(U.URL_RUN_IDS_PARAM_NAME).split("_").pop();x.__classPrivateFieldGet(this,f,"f").call(this),this.flowState.update({token:t,stepId:i,action:void 0})}else if("beforeScreen"===e){const e=this.nativeCallbacks.screenResolve;this.nativeCallbacks.screenResolve=null;const{override:t}=a;t||(this.nativeCallbacks.screenNext=null),null==e||e(t)}else if("resumeScreen"===e){const{interactionId:e,form:t}=a,i=this.nativeCallbacks.screenNext;this.nativeCallbacks.screenNext=null,null==i||i(e,t)}else null===(n=(o=this.nativeCallbacks).complete)||void 0===n||n.call(o,a)}loadSdkScriptsModules(){const e=this.shadowRoot.querySelectorAll("div[data-script-id]");return Array.from(e).map((e=>e.moduleRes)).filter((e=>!!e))}loadSdkScripts(e){if(!(null==e?void 0:e.length))return null;const t=(e,t)=>i=>{this.dispatchEvent(new CustomEvent("components-context",{detail:{[j.getScriptResultPath(e.id,e.resultKey)]:i},bubbles:!0,composed:!0})),t(e.id)};this.loggerWrapper.debug(`Preparing to load scripts: ${e.map((e=>e.id)).join(", ")}`);const i=Promise.all(null==e?void 0:e.map((e=>x.__awaiter(this,void 0,void 0,(function*(){var i,s;const r=this.shadowRoot.querySelector(`[data-script-id="${e.id}"]`);if(r){this.loggerWrapper.debug("Script already loaded",e.id);const{moduleRes:t}=r;return null===(i=null==t?void 0:t.start)||void 0===i||i.call(t),t}yield this.injectNpmLib("@descope/flow-scripts","1.0.4",`dist/${e.id}.js`);const o=null===(s=globalThis.descope)||void 0===s?void 0:s[e.id];return new Promise(((i,s)=>{try{const s=o(e.initArgs,{baseUrl:this.baseUrl},t(e,i));if(s){const t=document.createElement("div");t.setAttribute("data-script-id",e.id),t.moduleRes=s,this.shadowRoot.appendChild(t),this.nextRequestStatus.subscribe((()=>{var t;this.loggerWrapper.debug("Unloading script",e.id),null===(t=s.stop)||void 0===t||t.call(s)}))}}catch(e){s(e)}}))}))))),s=new Promise((e=>{setTimeout((()=>{this.loggerWrapper.warn("SDK scripts loading timeout"),e(!0)}),U.SDK_SCRIPTS_LOAD_TIMEOUT)}));return Promise.race([i,s])}get isDismissScreenErrorOnInput(){return"true"===this.getAttribute("dismiss-screen-error-on-input")}init(){if(!window.descopeBridge)return this._init();this.lazyInit=this._init}_init(){const t=Object.create(null,{init:{get:()=>super.init}});return x.__awaiter(this,void 0,void 0,(function*(){var i,s;this.shadowRoot.isConnected&&(null===(i=this.flowState)||void 0===i||i.subscribe(this.onFlowChange.bind(this)),x.__classPrivateFieldGet(this,e,"m",c).call(this),window.addEventListener("visibilitychange",x.__classPrivateFieldGet(this,r,"f").visibilitychange)),yield null===(s=t.init)||void 0===s?void 0:s.call(this)}))}disconnectedCallback(){var e;super.disconnectedCallback(),this.flowState.unsubscribeAll(),this.stepState.unsubscribeAll(),null===(e=x.__classPrivateFieldGet(this,i,"f"))||void 0===e||e.abort(),x.__classPrivateFieldSet(this,i,null,"f"),window.removeEventListener("visibilitychange",x.__classPrivateFieldGet(this,r,"f").visibilitychange)}getHtmlFilenameWithLocale(e,t){return x.__awaiter(this,void 0,void 0,(function*(){let i;const s=j.getUserLocale(e),r=yield this.getTargetLocales();return r.includes(s.locale)?i=`${t}-${s.locale}.html`:r.includes(s.fallback)&&(i=`${t}-${s.fallback}.html`),i}))}getPageContent(e,t){return x.__awaiter(this,void 0,void 0,(function*(){if(t)try{const{body:e}=yield this.fetchStaticResource(t,"text");return e}catch(i){this.loggerWrapper.error(`Failed to fetch flow page from ${t}. Fallback to url ${e}`,i)}try{const{body:t}=yield this.fetchStaticResource(e,"text");return t}catch(e){this.loggerWrapper.error("Failed to fetch flow page",e.message)}return null}))}onFlowChange(t,r,o){return x.__awaiter(this,void 0,void 0,(function*(){var n,a;const{projectId:d,flowId:c,tenant:h,stepId:u,executionId:p,action:g,screenId:m,screenState:f,redirectTo:S,redirectUrl:w,token:E,code:I,exchangeError:C,webauthnTransactionId:P,webauthnOptions:O,redirectAuthCodeChallenge:R,redirectAuthCallbackUrl:T,redirectAuthBackupCallbackUri:y,redirectAuthInitiator:F,locale:A,samlIdpResponseUrl:k,samlIdpResponseSamlResponse:N,samlIdpResponseRelayState:W,nativeResponseType:L,nativePayload:D,reqTimestamp:V}=t,B=x.__rest(t,["projectId","flowId","tenant","stepId","executionId","action","screenId","screenState","redirectTo","redirectUrl","token","code","exchangeError","webauthnTransactionId","webauthnOptions","redirectAuthCodeChallenge","redirectAuthCallbackUrl","redirectAuthBackupCallbackUri","redirectAuthInitiator","locale","samlIdpResponseUrl","samlIdpResponseSamlResponse","samlIdpResponseRelayState","nativeResponseType","nativePayload","reqTimestamp"]);let K,H,X;const J=q.getABTestingKey(),z=this.outboundAppId,Y=this.outboundAppScopes,Q=this.sdk.getLastUserLoginId(),Z=yield this.getFlowConfig(),ee=yield this.getProjectConfig(),te=Object.entries(ee.flows||{}).reduce(((e,[t,i])=>(e[t]=i.version,e)),{}),ie=T&&R?{callbackUrl:T,codeChallenge:R,backupCallbackUri:y}:void 0,se=this.nativeOptions?{platform:this.nativeOptions.platform,bridgeVersion:this.nativeOptions.bridgeVersion,oauthProvider:this.nativeOptions.oauthProvider,oauthRedirect:this.nativeOptions.oauthRedirect,magicLinkRedirect:this.nativeOptions.magicLinkRedirect,ssoRedirect:this.nativeOptions.ssoRedirect}:void 0;let re={};if(!p){const e=[...Z.clientScripts||[],...Z.sdkScripts||[]];if(Z.conditions){let t=[];({startScreenId:K,conditionInteractionId:X,startScreenName:H,clientScripts:t,componentsConfig:re}=M.calculateConditions({loginId:Q,code:I,token:E,abTestingKey:J},Z.conditions)),e.push(...t||[])}else Z.condition?({startScreenId:K,conditionInteractionId:X}=M.calculateCondition(Z.condition,{loginId:Q,code:I,token:E,abTestingKey:J})):(H=Z.startScreenName,K=Z.startScreenId);if(x.__classPrivateFieldSet(this,s,this.loadSdkScripts(e),"f"),Z.fingerprintEnabled&&Z.fingerprintKey?yield G.ensureFingerprintIds(Z.fingerprintKey,this.baseUrl):G.clearFingerprintData(),!j.showFirstScreenOnExecutionInit(K,B)){const e=yield this.sdk.flow.start(c,Object.assign(Object.assign(Object.assign(Object.assign({tenant:h,redirectAuth:ie},B),{client:this.client}),w&&{redirectUrl:w}),{lastAuth:$.getLastAuth(Q),abTestingKey:J,locale:j.getUserLocale(A).locale,nativeOptions:se,outboundAppId:z,outboundAppScopes:Y}),X,"",ee.componentsVersion,te,Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},this.formConfigValues),I?{exchangeCode:I,idpInitiated:!0}:{}),B.descopeIdpInitiated&&{idpInitiated:!0}),E?{token:E}:{}),B.oidcLoginHint?{externalId:B.oidcLoginHint}:{}));return x.__classPrivateFieldGet(this,b,"f").call(this,e),void("completed"!==(null===(n=null==e?void 0:e.data)||void 0===n?void 0:n.status)&&this.flowState.update({code:void 0,token:void 0}))}}if(p&&(o("token")&&E||o("code")&&I||o("exchangeError")&&C)){const e=yield this.sdk.flow.next(p,u,U.CUSTOM_INTERACTIONS.submit,Z.version,ee.componentsVersion,{token:E,exchangeCode:I,exchangeError:C});return x.__classPrivateFieldGet(this,b,"f").call(this,e),void this.flowState.update({token:void 0,code:void 0,exchangeError:void 0})}if(g===U.RESPONSE_ACTIONS.loadForm&&["samlIdpResponseUrl","samlIdpResponseSamlResponse","samlIdpResponseRelayState"].some((e=>o(e)))){if(!k||!N)return void this.loggerWrapper.error("Did not get saml idp params data to load");j.injectSamlIdpForm(k,N,W||"",j.submitForm)}if(g===U.RESPONSE_ACTIONS.redirect&&(o("redirectTo")||o("deferredRedirect")))return S?"android"===F&&document.hidden?void this.flowState.update({deferredRedirect:!0}):void window.location.assign(S):void this.loggerWrapper.error("Did not get redirect url");if(g===U.RESPONSE_ACTIONS.webauthnCreate||g===U.RESPONSE_ACTIONS.webauthnGet){if(!P||!O)return void this.loggerWrapper.error("Did not get webauthn transaction id or options");let e,t;null===(a=x.__classPrivateFieldGet(this,i,"f"))||void 0===a||a.abort(),x.__classPrivateFieldSet(this,i,null,"f");try{e=g===U.RESPONSE_ACTIONS.webauthnCreate?yield this.sdk.webauthn.helpers.create(O):yield this.sdk.webauthn.helpers.get(O)}catch(e){"InvalidStateError"===e.name?this.loggerWrapper.warn("WebAuthn operation failed",e.message):"NotAllowedError"!==e.name&&this.loggerWrapper.error(e.message),t=e.name}const s=yield this.sdk.flow.next(p,u,U.CUSTOM_INTERACTIONS.submit,Z.version,ee.componentsVersion,{transactionId:P,response:e,failure:t});x.__classPrivateFieldGet(this,b,"f").call(this,s)}if(g===U.RESPONSE_ACTIONS.nativeBridge)return this.nativeCallbacks.complete=e=>x.__awaiter(this,void 0,void 0,(function*(){const t=yield this.sdk.flow.next(p,u,U.CUSTOM_INTERACTIONS.submit,Z.version,ee.componentsVersion,e);x.__classPrivateFieldGet(this,b,"f").call(this,t)})),void x.__classPrivateFieldGet(this,e,"m",l).call(this,L,D);if(o("action")&&x.__classPrivateFieldGet(this,_,"f").call(this,p,u,Z.version,ee.componentsVersion),!m&&!K)return void this.loggerWrapper.warn("No screen was found to show");const oe=K||m,ne=yield this.getHtmlFilenameWithLocale(A,oe),{oidcLoginHint:ae,oidcPrompt:le,oidcErrorRedirectUri:de,samlIdpUsername:ce}=B,he={direction:j.getAnimationDirection(u,r.stepId),screenState:Object.assign(Object.assign({},f),{form:Object.assign(Object.assign({},this.formConfigValues),null==f?void 0:f.form),lastAuth:{loginId:Q,name:this.sdk.getLastUserDisplayName()||Q},componentsConfig:Object.assign(Object.assign(Object.assign({},Z.componentsConfig),re),null==f?void 0:f.componentsConfig)}),htmlFilename:`${oe}.html`,htmlLocaleFilename:ne,screenId:oe,stepName:t.stepName||H,samlIdpUsername:ce,oidcLoginHint:ae,oidcPrompt:le,oidcErrorRedirectUri:de,action:g},ue=$.getLastAuth(Q);j.showFirstScreenOnExecutionInit(K,B)?he.next=(e,t)=>x.__awaiter(this,void 0,void 0,(function*(){const i=yield this.sdk.flow.start(c,Object.assign(Object.assign(Object.assign(Object.assign({tenant:h,redirectAuth:ie},B),{lastAuth:ue,preview:this.preview,abTestingKey:J,client:this.client}),w&&{redirectUrl:w}),{locale:j.getUserLocale(A).locale,nativeOptions:se,outboundAppId:z,outboundAppScopes:Y}),X,e,ee.componentsVersion,te,Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},this.formConfigValues),t),I&&{exchangeCode:I,idpInitiated:!0}),B.descopeIdpInitiated&&{idpInitiated:!0}),E&&{token:E}));return x.__classPrivateFieldGet(this,b,"f").call(this,i),i})):(o("projectId")||o("baseUrl")||o("executionId")||o("stepId"))&&(he.next=(e,t)=>x.__awaiter(this,void 0,void 0,(function*(){const i=yield this.sdk.flow.next(p,u,e,Z.version,ee.componentsVersion,t);return x.__classPrivateFieldGet(this,b,"f").call(this,i),i}))),this.loggerWrapper.debug("Got a screen with id",he.screenId),yield x.__classPrivateFieldGet(this,e,"m",v).call(this,he),this.stepState.update(he)}))}onStepChange(t,i){return x.__awaiter(this,void 0,void 0,(function*(){var s,r;const{htmlFilename:o,htmlLocaleFilename:n,direction:a,next:l,screenState:d}=t;this.loggerWrapper.debug("Rendering a flow screen");const c=document.createElement("template");c.innerHTML=yield this.getPageContent(o,n);const h=c.content.cloneNode(!0),u=this.loadDescopeUiComponents(c);this.sdk.webauthn.helpers.isSupported()?yield x.__classPrivateFieldGet(this,e,"m",E).call(this,h,l):L.disableWebauthnButtons(h),!t.samlIdpUsername||(null===(s=d.form)||void 0===s?void 0:s.loginId)||(null===(r=d.form)||void 0===r?void 0:r.email)||(d.form||(d.form={}),d.form.loginId=t.samlIdpUsername,d.form.email=t.samlIdpUsername),L.updateTemplateFromScreenState(h,d,d.componentsConfig,this.formConfig,this.loggerWrapper);const{geo:p}=yield this.getExecutionContext();L.setPhoneAutoDetectDefaultCode(h,p);const v=()=>x.__awaiter(this,void 0,void 0,(function*(){var s,r;yield u;const o=this.contentRootElement;L.setTOTPVariable(o,null===(s=null==d?void 0:d.totp)||void 0===s?void 0:s.image),L.setNOTPVariable(o,null===(r=null==d?void 0:d.notp)||void 0===r?void 0:r.image),L.setCssVars(o,h,d.cssVars,this.loggerWrapper),o.replaceChildren(h);const n=!i.htmlFilename;setTimeout((()=>{x.__classPrivateFieldGet(this,e,"m",T).call(this),this.validateOnBlur&&j.handleReportValidityOnBlur(o),L.updateScreenFromScreenState(o,d),x.__classPrivateFieldGet(this,e,"m",I).call(this,{isFirstScreen:n,isCustomScreen:!1,stepName:t.stepName}),j.handleAutoFocus(o,this.autoFocus,n)})),x.__classPrivateFieldGet(this,e,"m",k).call(this,l);o.querySelector(`[${U.ELEMENT_TYPE_ATTRIBUTE}="polling"]`)&&l(U.CUSTOM_INTERACTIONS.polling,{})}));a?x.__classPrivateFieldGet(this,e,"m",m).call(this,v):v()}))}};
|
|
1
|
+
"use strict";var e,t,i,s,r,o,n,a,l,d,c,h,u,p,v,g,m,_,f,b,S,w,E,I,C,P,O,R,T,y,F,A,k,N,x=require("tslib"),G=require("@descope/web-js-sdk"),U=require("../constants/index.js"),j=require("../helpers/helpers.js"),W=require("../helpers/state.js"),L=require("../helpers/templates.js"),D=require("../helpers/webauthn.js"),q=require("../helpers/abTestingKey.js"),M=require("../helpers/conditions.js"),$=require("../helpers/lastAuth.js"),V=require("./BaseDescopeWc.js"),B=require("../constants/general.js");t=new WeakMap,i=new WeakMap,s=new WeakMap,r=new WeakMap,p=new WeakMap,g=new WeakMap,_=new WeakMap,f=new WeakMap,b=new WeakMap,S=new WeakMap,F=new WeakMap,e=new WeakSet,o=function(){document.hidden||setTimeout((()=>{this.flowState.update({deferredRedirect:!1})}),300)},n=function(t,i,s){return x.__awaiter(this,void 0,void 0,(function*(){var r;return(null===(r=this.nativeOptions)||void 0===r?void 0:r.bridgeVersion)>=2&&new Promise((r=>{this.nativeCallbacks.screenNext=s,this.nativeCallbacks.screenResolve=r,x.__classPrivateFieldGet(this,e,"m",l).call(this,"beforeScreen",{screen:t,context:i})}))}))},a=function(t){var i;(null===(i=this.nativeOptions)||void 0===i?void 0:i.bridgeVersion)>=2&&x.__classPrivateFieldGet(this,e,"m",l).call(this,"afterScreen",{screen:t})},l=function(t,i){x.__classPrivateFieldGet(this,e,"m",N).call(this,"bridge",{type:t,payload:i})},d=function({errorText:e,errorType:t}){const i=()=>{var i;let s=e;try{s=(null===(i=this.errorTransformer)||void 0===i?void 0:i.call(this,{text:e,type:t}))||e}catch(e){this.loggerWrapper.error("Error transforming error message",e.message)}L.replaceElementMessage(this.contentRootElement,"error-message",s)};this.addEventListener("screen-updated",i,{once:!0}),i()},c=function(){var t,i,s;null===(t=this.stepState)||void 0===t||t.subscribe(this.onStepChange.bind(this),(e=>{var t=e.screenState,i=void 0===t?{}:t,s=x.__rest(i,["errorText","errorType"]),r=x.__rest(e,["screenState"]);return Object.assign(Object.assign({},r),{screenState:s})})),null===(i=this.stepState)||void 0===i||i.subscribe(x.__classPrivateFieldGet(this,e,"m",d).bind(this),(e=>{var t,i;return{errorText:null===(t=null==e?void 0:e.screenState)||void 0===t?void 0:t.errorText,errorType:null===(i=null==e?void 0:e.screenState)||void 0===i?void 0:i.errorType}})),null===(s=this.stepState)||void 0===s||s.subscribe(x.__classPrivateFieldGet(this,e,"m",h).bind(this),(e=>{var t,i;return{errorText:null===(t=null==e?void 0:e.screenState)||void 0===t?void 0:t.errorText,errorType:null===(i=null==e?void 0:e.screenState)||void 0===i?void 0:i.errorType}}),{forceUpdate:!0})},h=function({errorText:e,errorType:t}){(t||e)&&(this.contentRootElement.querySelectorAll('descope-passcode[data-auto-submit="true"]').forEach((e=>{e.shadowRoot.querySelectorAll("descope-text-field[data-id]").forEach((e=>{e.value=""}))})),j.handleAutoFocus(this.contentRootElement,this.autoFocus,!1))},u=function(){return x.__awaiter(this,void 0,void 0,(function*(){this.loggerWrapper.debug("Trying to restart the flow");const e=yield this.getComponentsVersion();this.reset();e===(yield this.getComponentsVersion())?(this.loggerWrapper.debug("Components version was not changed, restarting flow"),this.flowState.update({stepId:null,executionId:null})):this.loggerWrapper.error("Components version mismatch, please reload the page")}))},v=function(t){return x.__awaiter(this,void 0,void 0,(function*(){var i;const s=Object.assign(Object.assign({},this.stepState.current),t),{next:r,stepName:o}=s,a=x.__rest(s,["next","stepName"]),l=j.transformStepStateForCustomScreen(a);let d=yield x.__classPrivateFieldGet(this,e,"m",n).call(this,o,l,r);d||(d=Boolean(yield null===(i=this.onScreenUpdate)||void 0===i?void 0:i.call(this,o,l,r,this)));const h=!this.stepState.current.htmlFilename;if(x.__classPrivateFieldGet(this,g,"f").call(this,d),x.__classPrivateFieldGet(this,p,"f")!==d){const[t,i]=["flow","custom"].sort((()=>d?-1:1));this.loggerWrapper.debug(`Switching from ${i} screen to ${t} screen`),x.__classPrivateFieldSet(this,p,d,"f"),d?this.stepState.unsubscribeAll():x.__classPrivateFieldGet(this,e,"m",c).call(this)}d&&(this.loggerWrapper.debug("Showing a custom screen"),x.__classPrivateFieldGet(this,e,"m",I).call(this,{isFirstScreen:h,isCustomScreen:d,stepName:t.stepName})),this.stepState.forceUpdate=d}))},m=function(e){this.contentRootElement.addEventListener("transitionend",(()=>{this.loggerWrapper.debug("page switch transition end"),this.contentRootElement.classList.remove("fade-out"),e()}),{once:!0}),this.loggerWrapper.debug("page switch transition start"),this.contentRootElement.classList.add("fade-out")},w=function(e){const t=e.getAttribute("name");if(!["email"].includes(t)){const i=`user-${t}`;e.setAttribute("name",i),e.addEventListener("input",(()=>{e.setAttribute("name",e.value?t:i)}))}},E=function(t,s){return x.__awaiter(this,void 0,void 0,(function*(){var r;null===(r=x.__classPrivateFieldGet(this,i,"f"))||void 0===r||r.abort();const o=t.querySelector('*[autocomplete="webauthn"]');if(o&&(yield D.isConditionalLoginSupported())){const{options:t,transactionId:r}=(yield x.__classPrivateFieldGet(this,S,"f").call(this))||{};t&&r&&(x.__classPrivateFieldGet(this,e,"m",w).call(this,o),x.__classPrivateFieldSet(this,i,new AbortController,"f"),this.sdk.webauthn.helpers.conditional(t,x.__classPrivateFieldGet(this,i,"f")).then((e=>x.__awaiter(this,void 0,void 0,(function*(){s(o.id,{transactionId:r,response:e})})))).catch((e=>{"AbortError"!==e.name&&this.loggerWrapper.error("Conditional login failed",e.message)})))}}))},I=function({isFirstScreen:t,isCustomScreen:i,stepName:s}){t&&x.__classPrivateFieldGet(this,e,"m",N).call(this,"ready",{}),i||x.__classPrivateFieldGet(this,e,"m",a).call(this,s),x.__classPrivateFieldGet(this,e,"m",N).call(this,"page-updated",{screenName:s}),x.__classPrivateFieldGet(this,e,"m",N).call(this,"screen-updated",{screenName:s})},C=function(){let e=!0;return Array.from(this.shadowRoot.querySelectorAll("*[name]")).reverse().forEach((t=>{var i,s;"slot"!==t.localName&&(null===(i=t.reportValidity)||void 0===i||i.call(t),e&&(e=null===(s=t.checkValidity)||void 0===s?void 0:s.call(t)))})),e},P=function(){return x.__awaiter(this,void 0,void 0,(function*(){const e=Array.from(this.shadowRoot.querySelectorAll(`*[name]:not([${U.DESCOPE_ATTRIBUTE_EXCLUDE_FIELD}])`));return(yield Promise.all(e.map((e=>x.__awaiter(this,void 0,void 0,(function*(){return{name:e.getAttribute("name"),value:e.value}})))))).reduce(((e,t)=>Object.assign(Object.assign({},e),{[t.name]:t.value})),{})}))},O=function(e){const t=this.nextRequestStatus.subscribe((({isLoading:i})=>{i?e.setAttribute("loading","true"):(this.nextRequestStatus.unsubscribe(t),e.removeAttribute("loading"))}))},R=function(e={}){var t,i;const s=j.getFirstNonEmptyValue(e,["externalId","email","phone"]),r=j.getFirstNonEmptyValue(e,["newPassword","password"]);if(s&&r)try{if(!globalThis.PasswordCredential)return;const e=new globalThis.PasswordCredential({id:s,password:r});null===(i=null===(t=null===navigator||void 0===navigator?void 0:navigator.credentials)||void 0===t?void 0:t.store)||void 0===i||i.call(t,e)}catch(e){this.loggerWrapper.error("Could not store credentials",e.message)}},T=function(){j.clearPreviousExternalInputs();this.contentRootElement.querySelectorAll('[external-input="true"]').forEach((t=>x.__classPrivateFieldGet(this,e,"m",y).call(this,t)))},y=function(e){if(!e)return;e.querySelectorAll("input").forEach((t=>{const i=t.getAttribute("slot"),s=`input-${e.id}-${i}`,r=document.createElement("slot");r.setAttribute("name",s),r.setAttribute("slot",i),e.appendChild(r),t.setAttribute("slot",s),this.appendChild(t)}))},A=function(e){this.contentRootElement.querySelectorAll('descope-passcode[data-auto-submit="true"]').forEach((t=>{t.addEventListener("input",(()=>{var i;(null===(i=t.checkValidity)||void 0===i?void 0:i.call(t))&&x.__classPrivateFieldGet(this,F,"f").call(this,t,e)}))}))},k=function(t){this.contentRootElement.querySelectorAll(`descope-button:not([${U.DESCOPE_ATTRIBUTE_EXCLUDE_NEXT_BUTTON}]), [data-type="button"]:not([${U.DESCOPE_ATTRIBUTE_EXCLUDE_NEXT_BUTTON}]`).forEach((e=>{e.onclick=()=>{x.__classPrivateFieldGet(this,F,"f").call(this,e,t)}})),x.__classPrivateFieldGet(this,e,"m",A).call(this,t),this.isDismissScreenErrorOnInput&&this.contentRootElement.querySelectorAll(`*[name]:not([${U.DESCOPE_ATTRIBUTE_EXCLUDE_FIELD}])`).forEach((e=>{e.addEventListener("input",(()=>{this.stepState.update((e=>Object.assign(Object.assign({},e),{screenState:Object.assign(Object.assign({},e.screenState),{errorText:"",errorType:""})})))}))}))},N=function(e,t){this.dispatchEvent(new CustomEvent(e,{detail:t}))},module.exports=class extends V{static set sdkConfigOverrides(e){V.sdkConfigOverrides=e}static get sdkConfigOverrides(){return V.sdkConfigOverrides}constructor(){const n=new W({deferredRedirect:!1});super(n.update.bind(n)),e.add(this),this.stepState=new W({}),t.set(this,void 0),i.set(this,null),s.set(this,null),r.set(this,{visibilitychange:x.__classPrivateFieldGet(this,e,"m",o).bind(this)}),this.bridgeVersion=2,this.nativeCallbacks={},p.set(this,!1),g.set(this,(t=>{const i=()=>{this.contentRootElement.classList.toggle("hidden",t),this.slotElement.classList.toggle("hidden",!t),t&&(this.contentRootElement.innerHTML="")};t&&this.contentRootElement.hasChildNodes()?x.__classPrivateFieldGet(this,e,"m",m).call(this,i):i()})),_.set(this,((e,i,s,r,o=!1)=>{if(this.flowState.current.action===U.RESPONSE_ACTIONS.poll){this.logger.debug("polling - Scheduling polling request");const n=Date.now(),a=o?500:2e3;x.__classPrivateFieldSet(this,t,setTimeout((()=>x.__awaiter(this,void 0,void 0,(function*(){var t;this.logger.debug("polling - Calling next");const l=this.sdk.flow.next(e,i,U.CUSTOM_INTERACTIONS.polling,s,r,{}),d=document.hidden&&!o&&Date.now()-n>a+500;let c;d&&this.logger.debug("polling - The polling seems to be throttled");try{const e=d?1e3:6e3;c=yield j.timeoutPromise(e,l)}catch(t){return this.logger.warn(`polling - The ${d?"throttled fetch":"fetch"} call timed out or was aborted`),void x.__classPrivateFieldGet(this,_,"f").call(this,e,i,s,r,d)}if((null===(t=null==c?void 0:c.error)||void 0===t?void 0:t.errorCode)===B.FETCH_EXCEPTION_ERROR_CODE)return this.logger.debug("polling - Got a generic error due to exception in fetch call"),void x.__classPrivateFieldGet(this,_,"f").call(this,e,i,s,r);this.logger.debug("polling - Got a response"),(null==c?void 0:c.error)&&this.logger.debug("polling - Response has an error",JSON.stringify(c.error,null,4)),x.__classPrivateFieldGet(this,_,"f").call(this,e,i,s,r),x.__classPrivateFieldGet(this,b,"f").call(this,c)}))),a),"f")}})),f.set(this,(()=>{clearTimeout(x.__classPrivateFieldGet(this,t,"f")),x.__classPrivateFieldSet(this,t,null,"f")})),b.set(this,(t=>{var i,r,o,n,a,l,d,c,h,p,v,g,m;if(!(null==t?void 0:t.ok)){const s=null===(i=null==t?void 0:t.response)||void 0===i?void 0:i.url,d=`${null===(r=null==t?void 0:t.response)||void 0===r?void 0:r.status} - ${null===(o=null==t?void 0:t.response)||void 0===o?void 0:o.statusText}`;x.__classPrivateFieldGet(this,e,"m",N).call(this,"error",(null==t?void 0:t.error)||{errorCode:B.FETCH_ERROR_RESPONSE_ERROR_CODE,errorDescription:d,errorMessage:s}),this.loggerWrapper.error((null===(n=null==t?void 0:t.error)||void 0===n?void 0:n.errorDescription)||s,(null===(a=null==t?void 0:t.error)||void 0===a?void 0:a.errorMessage)||d);const c=null===(l=null==t?void 0:t.error)||void 0===l?void 0:l.errorCode;return void("E102004"!==c&&"E103205"!==c||!this.isRestartOnError||x.__classPrivateFieldGet(this,e,"m",u).call(this))}null===(c=null===(d=t.data)||void 0===d?void 0:d.runnerLogs)||void 0===c||c.forEach((e=>{const{level:t,title:i,log:s}=e;t&&this.loggerWrapper[t]?this.loggerWrapper[t](i,s):this.loggerWrapper.info(i,s)}));const _=null===(v=null===(p=null===(h=t.data)||void 0===h?void 0:h.screen)||void 0===p?void 0:p.state)||void 0===v?void 0:v.errorText;(null===(g=t.data)||void 0===g?void 0:g.error)?this.loggerWrapper.error(`[${t.data.error.code}]: ${t.data.error.description}`,`${_?`${_} - `:""}${t.data.error.message}`):_&&this.loggerWrapper.error(_);const{status:b,authInfo:S,lastAuth:w,action:E,openInNewTabUrl:I}=t.data;if(E!==U.RESPONSE_ACTIONS.poll&&x.__classPrivateFieldGet(this,f,"f").call(this),"completed"===b)return this.storeLastAuthenticatedUser&&$.setLastAuth(w),void x.__classPrivateFieldGet(this,e,"m",N).call(this,"success",S);I&&window.open(I,"_blank");const{executionId:C,stepId:P,stepName:O,screen:R,redirect:T,webauthn:y,error:F,samlIdpResponse:A,nativeResponse:k}=t.data,G=Date.now();E!==U.RESPONSE_ACTIONS.poll?(this.loggerWrapper.info(`Step "${O||`#${P}`}" is ${b}`,"",{screen:R,status:b,stepId:P,stepName:O,action:E,error:F}),(null===(m=R.state)||void 0===m?void 0:m.clientScripts)&&x.__classPrivateFieldSet(this,s,this.loadSdkScripts(R.state.clientScripts),"f"),this.flowState.update({stepId:P,stepName:O,executionId:C,action:E,redirectTo:null==T?void 0:T.url,screenId:null==R?void 0:R.id,screenState:null==R?void 0:R.state,webauthnTransactionId:null==y?void 0:y.transactionId,webauthnOptions:null==y?void 0:y.options,samlIdpResponseUrl:null==A?void 0:A.url,samlIdpResponseSamlResponse:null==A?void 0:A.samlResponse,samlIdpResponseRelayState:null==A?void 0:A.relayState,nativeResponseType:null==k?void 0:k.type,nativePayload:null==k?void 0:k.payload,reqTimestamp:G})):this.flowState.update({action:E,reqTimestamp:G})})),S.set(this,j.withMemCache((()=>x.__awaiter(this,void 0,void 0,(function*(){var e;try{const t=yield this.sdk.webauthn.signIn.start("",window.location.origin);return t.ok||this.loggerWrapper.warn("Webauthn start failed",null===(e=null==t?void 0:t.error)||void 0===e?void 0:e.errorMessage),t.data}catch(e){this.loggerWrapper.warn("Webauthn start failed",e.message)}}))))),F.set(this,j.leadingDebounce(((t,i)=>x.__awaiter(this,void 0,void 0,(function*(){var r;if("true"===t.getAttribute("formnovalidate")||x.__classPrivateFieldGet(this,e,"m",C).call(this)){const o=null==t?void 0:t.getAttribute("id");x.__classPrivateFieldGet(this,e,"m",O).call(this,t);const n=yield x.__classPrivateFieldGet(this,e,"m",P).call(this),a=j.getElementDescopeAttributes(t);if(this.nextRequestStatus.update({isLoading:!0}),x.__classPrivateFieldGet(this,s,"f")){this.loggerWrapper.debug("Waiting for sdk scripts to load");const e=Date.now();yield x.__classPrivateFieldGet(this,s,"f"),this.loggerWrapper.debug("Sdk scripts loaded for",(Date.now()-e).toString())}const l=this.loadSdkScriptsModules();if(l.length>0){const e=l.filter((e=>"function"==typeof e.refresh)).map((e=>e.refresh()));e.length>0&&(yield j.timeoutPromise(U.SDK_SCRIPTS_LOAD_TIMEOUT,Promise.all(e),null))}const d=this.getComponentsContext(),c=Object.assign(Object.assign(Object.assign(Object.assign({},d),a),n),{origin:(null===(r=this.nativeOptions)||void 0===r?void 0:r.origin)||window.location.origin});yield i(o,c),this.nextRequestStatus.update({isLoading:!1}),x.__classPrivateFieldGet(this,e,"m",R).call(this,n)}}))))),this.flowState=n}nativeResume(e,t){var i,s,r,o,n;const a=JSON.parse(t);if("oauthWeb"===e||"sso"===e){let{exchangeCode:e}=a;if(!e){e=null===(i=new URL(a.url).searchParams)||void 0===i?void 0:i.get(U.URL_CODE_PARAM_NAME)}null===(r=(s=this.nativeCallbacks).complete)||void 0===r||r.call(s,{exchangeCode:e,idpInitiated:!0})}else if("magicLink"===e){const e=new URL(a.url),t=e.searchParams.get(U.URL_TOKEN_PARAM_NAME),i=e.searchParams.get(U.URL_RUN_IDS_PARAM_NAME).split("_").pop();x.__classPrivateFieldGet(this,f,"f").call(this),this.flowState.update({token:t,stepId:i,action:void 0})}else if("beforeScreen"===e){const e=this.nativeCallbacks.screenResolve;this.nativeCallbacks.screenResolve=null;const{override:t}=a;t||(this.nativeCallbacks.screenNext=null),null==e||e(t)}else if("resumeScreen"===e){const{interactionId:e,form:t}=a,i=this.nativeCallbacks.screenNext;this.nativeCallbacks.screenNext=null,null==i||i(e,t)}else null===(n=(o=this.nativeCallbacks).complete)||void 0===n||n.call(o,a)}loadSdkScriptsModules(){const e=this.shadowRoot.querySelectorAll("div[data-script-id]");return Array.from(e).map((e=>e.moduleRes)).filter((e=>!!e))}loadSdkScripts(e){if(!(null==e?void 0:e.length))return null;const t=(e,t)=>i=>{this.dispatchEvent(new CustomEvent("components-context",{detail:{[j.getScriptResultPath(e.id,e.resultKey)]:i},bubbles:!0,composed:!0})),t(e.id)};this.loggerWrapper.debug(`Preparing to load scripts: ${e.map((e=>e.id)).join(", ")}`);const i=Promise.all(null==e?void 0:e.map((e=>x.__awaiter(this,void 0,void 0,(function*(){var i,s;const r=this.shadowRoot.querySelector(`[data-script-id="${e.id}"]`);if(r){this.loggerWrapper.debug("Script already loaded",e.id);const{moduleRes:t}=r;return null===(i=null==t?void 0:t.start)||void 0===i||i.call(t),t}yield this.injectNpmLib("@descope/flow-scripts","1.0.6",`dist/${e.id}.js`);const o=null===(s=globalThis.descope)||void 0===s?void 0:s[e.id];return new Promise(((i,s)=>{try{const s=o(e.initArgs,{baseUrl:this.baseUrl},t(e,i));if(s){const t=document.createElement("div");t.setAttribute("data-script-id",e.id),t.moduleRes=s,this.shadowRoot.appendChild(t),this.nextRequestStatus.subscribe((()=>{var t;this.loggerWrapper.debug("Unloading script",e.id),null===(t=s.stop)||void 0===t||t.call(s)}))}}catch(e){s(e)}}))}))))),s=new Promise((e=>{setTimeout((()=>{this.loggerWrapper.warn("SDK scripts loading timeout"),e(!0)}),U.SDK_SCRIPTS_LOAD_TIMEOUT)}));return Promise.race([i,s])}get isDismissScreenErrorOnInput(){return"true"===this.getAttribute("dismiss-screen-error-on-input")}init(){if(!window.descopeBridge)return this._init();this.lazyInit=this._init}_init(){const t=Object.create(null,{init:{get:()=>super.init}});return x.__awaiter(this,void 0,void 0,(function*(){var i,s;this.shadowRoot.isConnected&&(null===(i=this.flowState)||void 0===i||i.subscribe(this.onFlowChange.bind(this)),x.__classPrivateFieldGet(this,e,"m",c).call(this),window.addEventListener("visibilitychange",x.__classPrivateFieldGet(this,r,"f").visibilitychange)),yield null===(s=t.init)||void 0===s?void 0:s.call(this)}))}disconnectedCallback(){var e;super.disconnectedCallback(),this.flowState.unsubscribeAll(),this.stepState.unsubscribeAll(),null===(e=x.__classPrivateFieldGet(this,i,"f"))||void 0===e||e.abort(),x.__classPrivateFieldSet(this,i,null,"f"),window.removeEventListener("visibilitychange",x.__classPrivateFieldGet(this,r,"f").visibilitychange)}getHtmlFilenameWithLocale(e,t){return x.__awaiter(this,void 0,void 0,(function*(){let i;const s=j.getUserLocale(e),r=yield this.getTargetLocales();return r.includes(s.locale)?i=`${t}-${s.locale}.html`:r.includes(s.fallback)&&(i=`${t}-${s.fallback}.html`),i}))}getPageContent(e,t){return x.__awaiter(this,void 0,void 0,(function*(){if(t)try{const{body:e}=yield this.fetchStaticResource(t,"text");return e}catch(i){this.loggerWrapper.error(`Failed to fetch flow page from ${t}. Fallback to url ${e}`,i)}try{const{body:t}=yield this.fetchStaticResource(e,"text");return t}catch(e){this.loggerWrapper.error("Failed to fetch flow page",e.message)}return null}))}onFlowChange(t,r,o){return x.__awaiter(this,void 0,void 0,(function*(){var n,a;const{projectId:d,flowId:c,tenant:h,stepId:u,executionId:p,action:g,screenId:m,screenState:f,redirectTo:S,redirectUrl:w,token:E,code:I,exchangeError:C,webauthnTransactionId:P,webauthnOptions:O,redirectAuthCodeChallenge:R,redirectAuthCallbackUrl:T,redirectAuthBackupCallbackUri:y,redirectAuthInitiator:F,locale:A,samlIdpResponseUrl:k,samlIdpResponseSamlResponse:N,samlIdpResponseRelayState:W,nativeResponseType:L,nativePayload:D,reqTimestamp:V}=t,B=x.__rest(t,["projectId","flowId","tenant","stepId","executionId","action","screenId","screenState","redirectTo","redirectUrl","token","code","exchangeError","webauthnTransactionId","webauthnOptions","redirectAuthCodeChallenge","redirectAuthCallbackUrl","redirectAuthBackupCallbackUri","redirectAuthInitiator","locale","samlIdpResponseUrl","samlIdpResponseSamlResponse","samlIdpResponseRelayState","nativeResponseType","nativePayload","reqTimestamp"]);let K,H,X;const J=q.getABTestingKey(),z=this.outboundAppId,Y=this.outboundAppScopes,Q=this.sdk.getLastUserLoginId(),Z=yield this.getFlowConfig(),ee=yield this.getProjectConfig(),te=Object.entries(ee.flows||{}).reduce(((e,[t,i])=>(e[t]=i.version,e)),{}),ie=T&&R?{callbackUrl:T,codeChallenge:R,backupCallbackUri:y}:void 0,se=this.nativeOptions?{platform:this.nativeOptions.platform,bridgeVersion:this.nativeOptions.bridgeVersion,oauthProvider:this.nativeOptions.oauthProvider,oauthRedirect:this.nativeOptions.oauthRedirect,magicLinkRedirect:this.nativeOptions.magicLinkRedirect,ssoRedirect:this.nativeOptions.ssoRedirect}:void 0;let re={};if(!p){const e=[...Z.clientScripts||[],...Z.sdkScripts||[]];if(Z.conditions){let t=[];({startScreenId:K,conditionInteractionId:X,startScreenName:H,clientScripts:t,componentsConfig:re}=M.calculateConditions({loginId:Q,code:I,token:E,abTestingKey:J},Z.conditions)),e.push(...t||[])}else Z.condition?({startScreenId:K,conditionInteractionId:X}=M.calculateCondition(Z.condition,{loginId:Q,code:I,token:E,abTestingKey:J})):(H=Z.startScreenName,K=Z.startScreenId);if(x.__classPrivateFieldSet(this,s,this.loadSdkScripts(e),"f"),Z.fingerprintEnabled&&Z.fingerprintKey?yield G.ensureFingerprintIds(Z.fingerprintKey,this.baseUrl):G.clearFingerprintData(),!j.showFirstScreenOnExecutionInit(K,B)){const e=yield this.sdk.flow.start(c,Object.assign(Object.assign(Object.assign(Object.assign({tenant:h,redirectAuth:ie},B),{client:this.client}),w&&{redirectUrl:w}),{lastAuth:$.getLastAuth(Q),abTestingKey:J,locale:j.getUserLocale(A).locale,nativeOptions:se,outboundAppId:z,outboundAppScopes:Y}),X,"",ee.componentsVersion,te,Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},this.formConfigValues),I?{exchangeCode:I,idpInitiated:!0}:{}),B.descopeIdpInitiated&&{idpInitiated:!0}),E?{token:E}:{}),B.oidcLoginHint?{externalId:B.oidcLoginHint}:{}));return x.__classPrivateFieldGet(this,b,"f").call(this,e),void("completed"!==(null===(n=null==e?void 0:e.data)||void 0===n?void 0:n.status)&&this.flowState.update({code:void 0,token:void 0}))}}if(p&&(o("token")&&E||o("code")&&I||o("exchangeError")&&C)){const e=yield this.sdk.flow.next(p,u,U.CUSTOM_INTERACTIONS.submit,Z.version,ee.componentsVersion,{token:E,exchangeCode:I,exchangeError:C});return x.__classPrivateFieldGet(this,b,"f").call(this,e),void this.flowState.update({token:void 0,code:void 0,exchangeError:void 0})}if(g===U.RESPONSE_ACTIONS.loadForm&&["samlIdpResponseUrl","samlIdpResponseSamlResponse","samlIdpResponseRelayState"].some((e=>o(e)))){if(!k||!N)return void this.loggerWrapper.error("Did not get saml idp params data to load");j.injectSamlIdpForm(k,N,W||"",j.submitForm)}if(g===U.RESPONSE_ACTIONS.redirect&&(o("redirectTo")||o("deferredRedirect")))return S?"android"===F&&document.hidden?void this.flowState.update({deferredRedirect:!0}):void window.location.assign(S):void this.loggerWrapper.error("Did not get redirect url");if(g===U.RESPONSE_ACTIONS.webauthnCreate||g===U.RESPONSE_ACTIONS.webauthnGet){if(!P||!O)return void this.loggerWrapper.error("Did not get webauthn transaction id or options");let e,t;null===(a=x.__classPrivateFieldGet(this,i,"f"))||void 0===a||a.abort(),x.__classPrivateFieldSet(this,i,null,"f");try{e=g===U.RESPONSE_ACTIONS.webauthnCreate?yield this.sdk.webauthn.helpers.create(O):yield this.sdk.webauthn.helpers.get(O)}catch(e){"InvalidStateError"===e.name?this.loggerWrapper.warn("WebAuthn operation failed",e.message):"NotAllowedError"!==e.name&&this.loggerWrapper.error(e.message),t=e.name}const s=yield this.sdk.flow.next(p,u,U.CUSTOM_INTERACTIONS.submit,Z.version,ee.componentsVersion,{transactionId:P,response:e,failure:t});x.__classPrivateFieldGet(this,b,"f").call(this,s)}if(g===U.RESPONSE_ACTIONS.nativeBridge)return this.nativeCallbacks.complete=e=>x.__awaiter(this,void 0,void 0,(function*(){const t=yield this.sdk.flow.next(p,u,U.CUSTOM_INTERACTIONS.submit,Z.version,ee.componentsVersion,e);x.__classPrivateFieldGet(this,b,"f").call(this,t)})),void x.__classPrivateFieldGet(this,e,"m",l).call(this,L,D);if(o("action")&&x.__classPrivateFieldGet(this,_,"f").call(this,p,u,Z.version,ee.componentsVersion),!m&&!K)return void this.loggerWrapper.warn("No screen was found to show");const oe=K||m,ne=yield this.getHtmlFilenameWithLocale(A,oe),{oidcLoginHint:ae,oidcPrompt:le,oidcErrorRedirectUri:de,samlIdpUsername:ce}=B,he={direction:j.getAnimationDirection(u,r.stepId),screenState:Object.assign(Object.assign({},f),{form:Object.assign(Object.assign({},this.formConfigValues),null==f?void 0:f.form),lastAuth:{loginId:Q,name:this.sdk.getLastUserDisplayName()||Q},componentsConfig:Object.assign(Object.assign(Object.assign({},Z.componentsConfig),re),null==f?void 0:f.componentsConfig)}),htmlFilename:`${oe}.html`,htmlLocaleFilename:ne,screenId:oe,stepName:t.stepName||H,samlIdpUsername:ce,oidcLoginHint:ae,oidcPrompt:le,oidcErrorRedirectUri:de,action:g},ue=$.getLastAuth(Q);j.showFirstScreenOnExecutionInit(K,B)?he.next=(e,t)=>x.__awaiter(this,void 0,void 0,(function*(){const i=yield this.sdk.flow.start(c,Object.assign(Object.assign(Object.assign(Object.assign({tenant:h,redirectAuth:ie},B),{lastAuth:ue,preview:this.preview,abTestingKey:J,client:this.client}),w&&{redirectUrl:w}),{locale:j.getUserLocale(A).locale,nativeOptions:se,outboundAppId:z,outboundAppScopes:Y}),X,e,ee.componentsVersion,te,Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},this.formConfigValues),t),I&&{exchangeCode:I,idpInitiated:!0}),B.descopeIdpInitiated&&{idpInitiated:!0}),E&&{token:E}));return x.__classPrivateFieldGet(this,b,"f").call(this,i),i})):(o("projectId")||o("baseUrl")||o("executionId")||o("stepId"))&&(he.next=(e,t)=>x.__awaiter(this,void 0,void 0,(function*(){const i=yield this.sdk.flow.next(p,u,e,Z.version,ee.componentsVersion,t);return x.__classPrivateFieldGet(this,b,"f").call(this,i),i}))),this.loggerWrapper.debug("Got a screen with id",he.screenId),yield x.__classPrivateFieldGet(this,e,"m",v).call(this,he),this.stepState.update(he)}))}onStepChange(t,i){return x.__awaiter(this,void 0,void 0,(function*(){var s,r;const{htmlFilename:o,htmlLocaleFilename:n,direction:a,next:l,screenState:d}=t;this.loggerWrapper.debug("Rendering a flow screen");const c=document.createElement("template");c.innerHTML=yield this.getPageContent(o,n);const h=c.content.cloneNode(!0),u=this.loadDescopeUiComponents(c);this.sdk.webauthn.helpers.isSupported()?yield x.__classPrivateFieldGet(this,e,"m",E).call(this,h,l):L.disableWebauthnButtons(h),!t.samlIdpUsername||(null===(s=d.form)||void 0===s?void 0:s.loginId)||(null===(r=d.form)||void 0===r?void 0:r.email)||(d.form||(d.form={}),d.form.loginId=t.samlIdpUsername,d.form.email=t.samlIdpUsername),L.updateTemplateFromScreenState(h,d,d.componentsConfig,this.formConfig,this.loggerWrapper);const{geo:p}=yield this.getExecutionContext();L.setPhoneAutoDetectDefaultCode(h,p);const v=()=>x.__awaiter(this,void 0,void 0,(function*(){var s,r;yield u;const o=this.contentRootElement;L.setTOTPVariable(o,null===(s=null==d?void 0:d.totp)||void 0===s?void 0:s.image),L.setNOTPVariable(o,null===(r=null==d?void 0:d.notp)||void 0===r?void 0:r.image),L.setCssVars(o,h,d.cssVars,this.loggerWrapper),o.replaceChildren(h);const n=!i.htmlFilename;setTimeout((()=>{x.__classPrivateFieldGet(this,e,"m",T).call(this),this.validateOnBlur&&j.handleReportValidityOnBlur(o),L.updateScreenFromScreenState(o,d),x.__classPrivateFieldGet(this,e,"m",I).call(this,{isFirstScreen:n,isCustomScreen:!1,stepName:t.stepName}),j.handleAutoFocus(o,this.autoFocus,n)})),x.__classPrivateFieldGet(this,e,"m",k).call(this,l);o.querySelector(`[${U.ELEMENT_TYPE_ATTRIBUTE}="polling"]`)&&l(U.CUSTOM_INTERACTIONS.polling,{})}));a?x.__classPrivateFieldGet(this,e,"m",m).call(this,v):v()}))}};
|
|
2
2
|
//# sourceMappingURL=DescopeWc.js.map
|