@descope/web-component 3.35.0 → 3.36.0
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.
|
@@ -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,v,p,_,b,m,w,C,F,A,P,k,x,E,I,G=require("../helpers/flowInputs.js"),j=require("../mixins/formMountMixin.js"),y=require("./initTemplate.js"),U=require("../constants/content.js"),L=require("../constants/general.js");function M(t){return Object.freeze({__proto__:null,default:t})}const O=e.compose(s.themeMixin,i.staticResourcesMixin,j.formMountMixin)(HTMLElement);class S 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","keep-last-authenticated-user-after-logout","validate-on-blur","style-id"]}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",E).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),v.set(this,{popstate:t.__classPrivateFieldGet(this,l,"m",m).bind(this),componentsContext:t.__classPrivateFieldGet(this,l,"m",P).bind(this)}),p.set(this,void 0),this.getConfig=()=>t.__awaiter(this,void 0,void 0,(function*(){return(yield this.config)||{isMissingConfig:!0}})),t.__classPrivateFieldSet(this,p,e,"f"),t.__classPrivateFieldGet(this,l,"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 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 G.transformFlowInputFormData(this.form)}get form(){return this.getAttribute("form")}get formConfigValues(){return G.extractNestedAttribute(this.formConfig,"value")}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",b).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:p,redirectAuthCodeChallenge:_,redirectAuthInitiator:m,ssoQueryParams:w}=n.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,c,"f").subscribe(t.__classPrivateFieldGet(this,l,"m",C).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:p,redirectAuthCodeChallenge:_,redirectAuthInitiator:m},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",k).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,u,"f")&&i!==s&&d.observedAttributes.includes(e)){t.__classPrivateFieldGet(this,l,"m",b).call(this);const r=null===i;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=S,u=new WeakMap,c=new WeakMap,h=new WeakMap,g=new WeakMap,f=new WeakMap,v=new WeakMap,p=new WeakMap,l=new WeakSet,_=function(){this.shadowRoot.appendChild(y.content.cloneNode(!0)),this.slotElement=document.createElement("slot"),this.slotElement.classList.add("hidden"),this.rootElement.appendChild(this.slotElement)},b=function(){const t=["base-url","tenant","locale","debug","redirect-url","auto-focus","store-last-authenticated-user","keep-last-authenticated-user-after-logout","preview","storage-prefix","form","client","validate-on-blur","style-id"];d.observedAttributes.forEach((e=>{if(!t.includes(e)&&!this[n.camelCase(e)])throw Error(`${e} cannot be empty`)}))},m=function(){const{stepId:e,executionId:i}=n.getRunIdsFromUrl(this.flowId);t.__classPrivateFieldGet(this,c,"f").update({stepId:e,executionId:i})},w=function(e,i){this.sdk=r(Object.assign(Object.assign({persistTokens:!0,preview:this.preview,storagePrefix:this.storagePrefix,storeLastAuthenticatedUser:this.storeLastAuthenticatedUser,keepLastAuthenticatedUserAfterLogout:this.keepLastAuthenticatedUserAfterLogout},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:L.FETCH_EXCEPTION_ERROR_CODE,errorDescription:t.toString()}}}}))}))},C=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",w).call(this,i,r)}t.__classPrivateFieldGet(this,p,"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",A).call(this))}))},A=function(){return t.__awaiter(this,void 0,void 0,(function*(){const t=n.getContentUrl({projectId:this.projectId,filename:U.CONFIG_FILENAME,assetsFolder:U.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")},k=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 M(require("../debugger-wc.js"))})),document.body.appendChild(t.__classPrivateFieldGet(this,f,"f"))):t.__classPrivateFieldGet(this,l,"m",k).call(this)}))},E=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()}}},S.sdkConfigOverrides={baseHeaders:{"x-descope-sdk-name":"web-component","x-descope-sdk-version":"3.35.0"}},module.exports=S;
|
|
1
|
+
"use strict";var e=require("tslib"),t=require("@descope/sdk-helpers"),i=require("@descope/sdk-mixins/static-resources-mixin"),r=require("@descope/sdk-mixins/theme-mixin"),s=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,v,p,_,b,m,w,C,F,k,A,P,x,E,I,G=require("../helpers/flowInputs.js"),j=require("../mixins/formMountMixin.js"),y=require("./initTemplate.js"),U=require("../constants/content.js"),L=require("../constants/general.js");function M(e){return Object.freeze({__proto__:null,default:e})}const O=t.compose(r.themeMixin,i.staticResourcesMixin,j.formMountMixin)(HTMLElement);class S 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(t){super(),l.add(this),u.set(this,!1),this.flowStatus="initial",this.loggerWrapper={error:(t,i="")=>{this.logger.error(t,i,new Error),e.__classPrivateFieldGet(this,l,"m",E).call(this,t,i)},warn:(e,t="")=>{this.logger.warn(e,t)},info:(e,t="",i={})=>{this.logger.info(e,t,i)},debug:(e,t="")=>{this.logger.debug(e,t)}},c.set(this,new a),h.set(this,new a),g.set(this,{}),this.getComponentsContext=()=>e.__classPrivateFieldGet(this,g,"f"),this.nextRequestStatus=new a({isLoading:!1}),f.set(this,void 0),v.set(this,{popstate:e.__classPrivateFieldGet(this,l,"m",m).bind(this),componentsContext:e.__classPrivateFieldGet(this,l,"m",A).bind(this)}),p.set(this,void 0),this.getConfig=()=>e.__awaiter(this,void 0,void 0,(function*(){return(yield this.config)||{isMissingConfig:!0}})),e.__classPrivateFieldSet(this,p,t,"f"),e.__classPrivateFieldGet(this,l,"m",_).call(this)}get flowId(){return this.getAttribute("flow-id")}get client(){try{return JSON.parse(this.getAttribute("client"))||{}}catch(e){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 e;const t=null!==(e=this.getAttribute("auto-focus"))&&void 0!==e?e:"true";return"skipFirstScreen"===t?t:"true"===t}get validateOnBlur(){return"true"===this.getAttribute("validate-on-blur")}get storeLastAuthenticatedUser(){var e;return"true"===(null!==(e=this.getAttribute("store-last-authenticated-user"))&&void 0!==e?e:"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 G.transformFlowInputFormData(this.form)}get form(){return this.getAttribute("form")}get formConfigValues(){return G.extractNestedAttribute(this.formConfig,"value")}get isRestartOnError(){return"true"===this.getAttribute("restart-on-error")}getExecutionContext(){return e.__awaiter(this,void 0,void 0,(function*(){const e=yield this.getConfig();return"executionContext"in e?e.executionContext:void 0}))}getProjectConfig(){return e.__awaiter(this,void 0,void 0,(function*(){const e=yield this.getConfig();return"projectConfig"in e?e.projectConfig:void 0}))}getFlowConfig(){return e.__awaiter(this,void 0,void 0,(function*(){var e,t;const i=yield this.getProjectConfig(),r=(null===(e=null==i?void 0:i.flows)||void 0===e?void 0:e[this.flowId])||{};return null!==(t=r.version)&&void 0!==t||(r.version=0),r}))}getTargetLocales(){return e.__awaiter(this,void 0,void 0,(function*(){const e=yield this.getFlowConfig();return((null==e?void 0:e.targetLocales)||[]).map((e=>e.toLowerCase()))}))}getComponentsVersion(){return e.__awaiter(this,void 0,void 0,(function*(){var e;const t=yield this.getConfig(),i="projectConfig"in t?null===(e=t.projectConfig)||void 0===e?void 0:e.componentsVersion:{};return i||(this.logger.error("Did not get components version, using latest version"),"latest")}))}init(){const t=Object.create(null,{init:{get:()=>super.init}});return e.__awaiter(this,void 0,void 0,(function*(){var i;if(this.flowStatus="loading",["ready","error","success"].forEach((e=>this.addEventListener(e,(()=>{this.flowStatus=e})))),yield null===(i=t.init)||void 0===i?void 0:i.call(this),e.__classPrivateFieldGet(this,h,"f").subscribe(e.__classPrivateFieldGet(this,l,"m",x).bind(this)),e.__classPrivateFieldGet(this,h,"f").update({isDebug:this.debug}),e.__classPrivateFieldGet(this,l,"m",b).call(this),yield e.__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 r=yield this.getConfig();if("isMissingConfig"in r&&r.isMissingConfig)return void this.loggerWrapper.error("Cannot get config file","Make sure that your projectId & flowId are correct");e.__classPrivateFieldGet(this,l,"m",I).call(this);const{executionId:s,stepId:o,token:a,code:d,exchangeError:g,redirectAuthCallbackUrl:f,redirectAuthBackupCallbackUri:p,redirectAuthCodeChallenge:_,redirectAuthInitiator:m,ssoQueryParams:w}=n.handleUrlParams(this.flowId,this.loggerWrapper);window.addEventListener("popstate",e.__classPrivateFieldGet(this,v,"f").popstate),window.addEventListener("components-context",e.__classPrivateFieldGet(this,v,"f").componentsContext),e.__classPrivateFieldGet(this,c,"f").subscribe(e.__classPrivateFieldGet(this,l,"m",C).bind(this)),e.__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:s,token:a,code:d,exchangeError:g,redirectAuthCallbackUrl:f,redirectAuthBackupCallbackUri:p,redirectAuthCodeChallenge:_,redirectAuthInitiator:m},w)),e.__classPrivateFieldSet(this,u,!0,"f")}))}disconnectedCallback(){e.__classPrivateFieldGet(this,c,"f").unsubscribeAll(),e.__classPrivateFieldGet(this,h,"f").unsubscribeAll(),e.__classPrivateFieldGet(this,l,"m",P).call(this),window.removeEventListener("popstate",e.__classPrivateFieldGet(this,v,"f").popstate),window.removeEventListener("components-context",e.__classPrivateFieldGet(this,v,"f").componentsContext)}attributeChangedCallback(t,i,r){if(this.shadowRoot.isConnected&&e.__classPrivateFieldGet(this,u,"f")&&i!==r&&d.observedAttributes.includes(t)){e.__classPrivateFieldGet(this,l,"m",b).call(this);const s=null===i;e.__classPrivateFieldGet(this,c,"f").update((({stepId:e,executionId:i})=>{let o=e,a=i;return s||(a=null,o=null,n.clearRunIdsFromUrl()),{[n.camelCase(t)]:r,stepId:o,executionId:a}})),e.__classPrivateFieldGet(this,h,"f").update({isDebug:this.debug})}}}d=S,u=new WeakMap,c=new WeakMap,h=new WeakMap,g=new WeakMap,f=new WeakMap,v=new WeakMap,p=new WeakMap,l=new WeakSet,_=function(){this.shadowRoot.appendChild(y.content.cloneNode(!0)),this.slotElement=document.createElement("slot"),this.slotElement.classList.add("hidden"),this.rootElement.appendChild(this.slotElement)},b=function(){const e=["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"];d.observedAttributes.forEach((t=>{if(!e.includes(t)&&!this[n.camelCase(t)])throw Error(`${t} cannot be empty`)}))},m=function(){const{stepId:t,executionId:i}=n.getRunIdsFromUrl(this.flowId);e.__classPrivateFieldGet(this,c,"f").update({stepId:t,executionId:i})},w=function(t,i){this.sdk=s(Object.assign(Object.assign({persistTokens:!0,preview:this.preview,storagePrefix:this.storagePrefix,storeLastAuthenticatedUser:this.storeLastAuthenticatedUser,keepLastAuthenticatedUserAfterLogout:this.keepLastAuthenticatedUserAfterLogout,refreshCookieName:this.refreshCookieName},d.sdkConfigOverrides),{projectId:t,baseUrl:i})),["start","next"].forEach((t=>{const i=this.sdk.flow[t];this.sdk.flow[t]=(...t)=>e.__awaiter(this,void 0,void 0,(function*(){try{return yield i(...t)}catch(e){return{error:{errorCode:L.FETCH_EXCEPTION_ERROR_CODE,errorDescription:e.toString()}}}}))}))},C=function(t,i,r){return e.__awaiter(this,void 0,void 0,(function*(){const{projectId:i,baseUrl:s}=t;if(r("projectId")||r("baseUrl")){if(!i)return;e.__classPrivateFieldGet(this,l,"m",w).call(this,i,s)}e.__classPrivateFieldGet(this,p,"f").call(this,t)}))},F=function(){return e.__awaiter(this,void 0,void 0,(function*(){const t=yield this.getConfig();return"isMissingConfig"in t&&t.isMissingConfig&&(yield e.__classPrivateFieldGet(this,l,"m",k).call(this))}))},k=function(){return e.__awaiter(this,void 0,void 0,(function*(){const e=n.getContentUrl({projectId:this.projectId,filename:U.CONFIG_FILENAME,assetsFolder:U.PREV_VER_ASSETS_FOLDER,baseUrl:this.baseStaticUrl});try{return yield n.fetchContent(e,"json"),!0}catch(e){return!1}}))},A=function(t){e.__classPrivateFieldSet(this,g,Object.assign(Object.assign({},e.__classPrivateFieldGet(this,g,"f")),t.detail),"f")},P=function(){var t;null===(t=e.__classPrivateFieldGet(this,f,"f"))||void 0===t||t.remove(),e.__classPrivateFieldSet(this,f,null,"f")},x=function(t){return e.__awaiter(this,arguments,void 0,(function*({isDebug:t}){t?(e.__classPrivateFieldSet(this,f,document.createElement("descope-debugger"),"f"),Object.assign(e.__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 M(require("../debugger-wc.js"))})),document.body.appendChild(e.__classPrivateFieldGet(this,f,"f"))):e.__classPrivateFieldGet(this,l,"m",P).call(this)}))},E=function(t,i){var r;t&&this.debug&&(null===(r=e.__classPrivateFieldGet(this,f,"f"))||void 0===r||r.updateData({title:t,description:i}))},I=function(){this.rootElement.onkeydown=e=>{var t,i,r;const s=!!(null===(t=this.shadowRoot.activeElement)||void 0===t?void 0:t.getAttribute("href")),n=o.ELEMENTS_TO_IGNORE_ENTER_KEY_ON.includes(null!==(r=null===(i=this.shadowRoot.activeElement)||void 0===i?void 0:i.localName)&&void 0!==r?r:"");if("Enter"!==e.key||s||n)return;e.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((e=>"true"===e.getAttribute("auto-submit")));if(1===l.length)return void l[0].click();const d=Array.from(a).filter((e=>"button"===e.getAttribute("data-type")));if(1===d.length)"false"!==d[0].getAttribute("auto-submit")&&d[0].click();else if(0===d.length){const e=Array.from(a).filter((e=>"sso"===e.getAttribute("data-type")));1===e.length&&"false"!==e[0].getAttribute("auto-submit")&&e[0].click()}}},S.sdkConfigOverrides={baseHeaders:{"x-descope-sdk-name":"web-component","x-descope-sdk-version":"3.36.0"}},module.exports=S;
|
|
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';\nimport initTemplate from './initTemplate';\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 '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 #initShadowDom() {\n this.shadowRoot.appendChild(initTemplate.content.cloneNode(true));\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 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 #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 'keep-last-authenticated-user-after-logout',\n 'preview',\n 'storage-prefix',\n 'form',\n 'client',\n 'validate-on-blur',\n 'style-id',\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 ...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","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","keepLastAuthenticatedUserAfterLogout","storagePrefix","preview","formConfig","transformFlowInputFormData","form","formConfigValues","extractNestedAttribute","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","appendChild","initTemplate","content","cloneNode","slotElement","document","createElement","classList","add","rootElement","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
|
+
{"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';\nimport initTemplate from './initTemplate';\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 ];\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 #initShadowDom() {\n this.shadowRoot.appendChild(initTemplate.content.cloneNode(true));\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 #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 ];\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","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","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","appendChild","initTemplate","content","cloneNode","slotElement","document","createElement","classList","add","rootElement","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
|
-
import{__classPrivateFieldGet as t,__awaiter as e,__classPrivateFieldSet as i}from"tslib";import{compose as r}from"@descope/sdk-helpers";import{staticResourcesMixin as s}from"@descope/sdk-mixins/static-resources-mixin";import{themeMixin as o}from"@descope/sdk-mixins/theme-mixin";import n from"@descope/web-js-sdk";import{ELEMENTS_TO_IGNORE_ENTER_KEY_ON as u}from"../constants/index.js";import{handleUrlParams as a,clearRunIdsFromUrl as l,camelCase as d,getRunIdsFromUrl as c,getContentUrl as h,fetchContent as f}from"../helpers/helpers.js";import g from"../helpers/state.js";import"@descope/escape-markdown";import"../helpers/webauthn.js";import{transformFlowInputFormData as p,extractNestedAttribute as v}from"../helpers/flowInputs.js";import{formMountMixin as m}from"../mixins/formMountMixin.js";import b from"./initTemplate.js";import{CONFIG_FILENAME as w,PREV_VER_ASSETS_FOLDER as C}from"../constants/content.js";import{FETCH_EXCEPTION_ERROR_CODE as A}from"../constants/general.js";var k,x,y,j,I,E,L,U,M,O,S,W,D,P,R,F,T,B,N,V,q;const H=r(o,s,m)(HTMLElement);class K extends H{static get observedAttributes(){return["project-id","flow-id","base-url","tenant","locale","debug","storage-prefix","preview","redirect-url","auto-focus","store-last-authenticated-user","keep-last-authenticated-user-after-logout","validate-on-blur","style-id"]}constructor(r){super(),k.add(this),y.set(this,!1),this.flowStatus="initial",this.loggerWrapper={error:(e,i="")=>{this.logger.error(e,i,new Error),t(this,k,"m",V).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)}},j.set(this,new g),I.set(this,new g),E.set(this,{}),this.getComponentsContext=()=>t(this,E,"f"),this.nextRequestStatus=new g({isLoading:!1}),L.set(this,void 0),U.set(this,{popstate:t(this,k,"m",W).bind(this),componentsContext:t(this,k,"m",T).bind(this)}),M.set(this,void 0),this.getConfig=()=>e(this,void 0,void 0,(function*(){return(yield this.config)||{isMissingConfig:!0}})),i(this,M,r,"f"),t(this,k,"m",O).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 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 p(this.form)}get form(){return this.getAttribute("form")}get formConfigValues(){return v(this.formConfig,"value")}get isRestartOnError(){return"true"===this.getAttribute("restart-on-error")}getExecutionContext(){return e(this,void 0,void 0,(function*(){const t=yield this.getConfig();return"executionContext"in t?t.executionContext:void 0}))}getProjectConfig(){return e(this,void 0,void 0,(function*(){const t=yield this.getConfig();return"projectConfig"in t?t.projectConfig:void 0}))}getFlowConfig(){return e(this,void 0,void 0,(function*(){var t,e;const i=yield this.getProjectConfig(),r=(null===(t=null==i?void 0:i.flows)||void 0===t?void 0:t[this.flowId])||{};return null!==(e=r.version)&&void 0!==e||(r.version=0),r}))}getTargetLocales(){return e(this,void 0,void 0,(function*(){const t=yield this.getFlowConfig();return((null==t?void 0:t.targetLocales)||[]).map((t=>t.toLowerCase()))}))}getComponentsVersion(){return e(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 r=Object.create(null,{init:{get:()=>super.init}});return e(this,void 0,void 0,(function*(){var e;if(this.flowStatus="loading",["ready","error","success"].forEach((t=>this.addEventListener(t,(()=>{this.flowStatus=t})))),yield null===(e=r.init)||void 0===e?void 0:e.call(this),t(this,I,"f").subscribe(t(this,k,"m",N).bind(this)),t(this,I,"f").update({isDebug:this.debug}),t(this,k,"m",S).call(this),yield t(this,k,"m",R).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(this,k,"m",q).call(this);const{executionId:o,stepId:n,token:u,code:l,exchangeError:d,redirectAuthCallbackUrl:c,redirectAuthBackupCallbackUri:h,redirectAuthCodeChallenge:f,redirectAuthInitiator:g,ssoQueryParams:p}=a(this.flowId,this.loggerWrapper);window.addEventListener("popstate",t(this,U,"f").popstate),window.addEventListener("components-context",t(this,U,"f").componentsContext),t(this,j,"f").subscribe(t(this,k,"m",P).bind(this)),t(this,j,"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:o,token:u,code:l,exchangeError:d,redirectAuthCallbackUrl:c,redirectAuthBackupCallbackUri:h,redirectAuthCodeChallenge:f,redirectAuthInitiator:g},p)),i(this,y,!0,"f")}))}disconnectedCallback(){t(this,j,"f").unsubscribeAll(),t(this,I,"f").unsubscribeAll(),t(this,k,"m",B).call(this),window.removeEventListener("popstate",t(this,U,"f").popstate),window.removeEventListener("components-context",t(this,U,"f").componentsContext)}attributeChangedCallback(e,i,r){if(this.shadowRoot.isConnected&&t(this,y,"f")&&i!==r&&x.observedAttributes.includes(e)){t(this,k,"m",S).call(this);const s=null===i;t(this,j,"f").update((({stepId:t,executionId:i})=>{let o=t,n=i;return s||(n=null,o=null,l()),{[d(e)]:r,stepId:o,executionId:n}})),t(this,I,"f").update({isDebug:this.debug})}}}x=K,y=new WeakMap,j=new WeakMap,I=new WeakMap,E=new WeakMap,L=new WeakMap,U=new WeakMap,M=new WeakMap,k=new WeakSet,O=function(){this.shadowRoot.appendChild(b.content.cloneNode(!0)),this.slotElement=document.createElement("slot"),this.slotElement.classList.add("hidden"),this.rootElement.appendChild(this.slotElement)},S=function(){const t=["base-url","tenant","locale","debug","redirect-url","auto-focus","store-last-authenticated-user","keep-last-authenticated-user-after-logout","preview","storage-prefix","form","client","validate-on-blur","style-id"];x.observedAttributes.forEach((e=>{if(!t.includes(e)&&!this[d(e)])throw Error(`${e} cannot be empty`)}))},W=function(){const{stepId:e,executionId:i}=c(this.flowId);t(this,j,"f").update({stepId:e,executionId:i})},D=function(t,i){this.sdk=n(Object.assign(Object.assign({persistTokens:!0,preview:this.preview,storagePrefix:this.storagePrefix,storeLastAuthenticatedUser:this.storeLastAuthenticatedUser,keepLastAuthenticatedUserAfterLogout:this.keepLastAuthenticatedUserAfterLogout},x.sdkConfigOverrides),{projectId:t,baseUrl:i})),["start","next"].forEach((t=>{const i=this.sdk.flow[t];this.sdk.flow[t]=(...t)=>e(this,void 0,void 0,(function*(){try{return yield i(...t)}catch(t){return{error:{errorCode:A,errorDescription:t.toString()}}}}))}))},P=function(i,r,s){return e(this,void 0,void 0,(function*(){const{projectId:e,baseUrl:r}=i;if(s("projectId")||s("baseUrl")){if(!e)return;t(this,k,"m",D).call(this,e,r)}t(this,M,"f").call(this,i)}))},R=function(){return e(this,void 0,void 0,(function*(){const e=yield this.getConfig();return"isMissingConfig"in e&&e.isMissingConfig&&(yield t(this,k,"m",F).call(this))}))},F=function(){return e(this,void 0,void 0,(function*(){const t=h({projectId:this.projectId,filename:w,assetsFolder:C,baseUrl:this.baseStaticUrl});try{return yield f(t,"json"),!0}catch(t){return!1}}))},T=function(e){i(this,E,Object.assign(Object.assign({},t(this,E,"f")),e.detail),"f")},B=function(){var e;null===(e=t(this,L,"f"))||void 0===e||e.remove(),i(this,L,null,"f")},N=function(r){return e(this,arguments,void 0,(function*({isDebug:e}){e?(i(this,L,document.createElement("descope-debugger"),"f"),Object.assign(t(this,L,"f").style,{position:"fixed",top:"0",right:"0",height:"100vh",width:"100vw",pointerEvents:"none",zIndex:99999}),yield import("../debugger-wc.js"),document.body.appendChild(t(this,L,"f"))):t(this,k,"m",B).call(this)}))},V=function(e,i){var r;e&&this.debug&&(null===(r=t(this,L,"f"))||void 0===r||r.updateData({title:e,description:i}))},q=function(){this.rootElement.onkeydown=t=>{var e,i,r;const s=!!(null===(e=this.shadowRoot.activeElement)||void 0===e?void 0:e.getAttribute("href")),o=u.includes(null!==(r=null===(i=this.shadowRoot.activeElement)||void 0===i?void 0:i.localName)&&void 0!==r?r:"");if("Enter"!==t.key||s||o)return;t.preventDefault();const n=this.rootElement.querySelectorAll("descope-button");if(1===n.length&&"false"!==n[0].getAttribute("auto-submit"))return void n[0].click();const a=Array.from(n).filter((t=>"true"===t.getAttribute("auto-submit")));if(1===a.length)return void a[0].click();const l=Array.from(n).filter((t=>"button"===t.getAttribute("data-type")));if(1===l.length)"false"!==l[0].getAttribute("auto-submit")&&l[0].click();else if(0===l.length){const t=Array.from(n).filter((t=>"sso"===t.getAttribute("data-type")));1===t.length&&"false"!==t[0].getAttribute("auto-submit")&&t[0].click()}}},K.sdkConfigOverrides={baseHeaders:{"x-descope-sdk-name":"web-component","x-descope-sdk-version":"3.35.0"}};export{K as default};
|
|
1
|
+
import{__classPrivateFieldGet as t,__awaiter as e,__classPrivateFieldSet as i}from"tslib";import{compose as r}from"@descope/sdk-helpers";import{staticResourcesMixin as s}from"@descope/sdk-mixins/static-resources-mixin";import{themeMixin as o}from"@descope/sdk-mixins/theme-mixin";import n from"@descope/web-js-sdk";import{ELEMENTS_TO_IGNORE_ENTER_KEY_ON as a}from"../constants/index.js";import{handleUrlParams as u,clearRunIdsFromUrl as l,camelCase as d,getRunIdsFromUrl as c,getContentUrl as h,fetchContent as f}from"../helpers/helpers.js";import g from"../helpers/state.js";import"@descope/escape-markdown";import"../helpers/webauthn.js";import{transformFlowInputFormData as p,extractNestedAttribute as m}from"../helpers/flowInputs.js";import{formMountMixin as v}from"../mixins/formMountMixin.js";import b from"./initTemplate.js";import{CONFIG_FILENAME as w,PREV_VER_ASSETS_FOLDER as C}from"../constants/content.js";import{FETCH_EXCEPTION_ERROR_CODE as k}from"../constants/general.js";var A,x,y,j,I,E,L,U,M,O,S,W,D,N,P,R,F,T,B,V,q;const H=r(o,s,v)(HTMLElement);class K extends H{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(r){super(),A.add(this),y.set(this,!1),this.flowStatus="initial",this.loggerWrapper={error:(e,i="")=>{this.logger.error(e,i,new Error),t(this,A,"m",V).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)}},j.set(this,new g),I.set(this,new g),E.set(this,{}),this.getComponentsContext=()=>t(this,E,"f"),this.nextRequestStatus=new g({isLoading:!1}),L.set(this,void 0),U.set(this,{popstate:t(this,A,"m",W).bind(this),componentsContext:t(this,A,"m",F).bind(this)}),M.set(this,void 0),this.getConfig=()=>e(this,void 0,void 0,(function*(){return(yield this.config)||{isMissingConfig:!0}})),i(this,M,r,"f"),t(this,A,"m",O).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 p(this.form)}get form(){return this.getAttribute("form")}get formConfigValues(){return m(this.formConfig,"value")}get isRestartOnError(){return"true"===this.getAttribute("restart-on-error")}getExecutionContext(){return e(this,void 0,void 0,(function*(){const t=yield this.getConfig();return"executionContext"in t?t.executionContext:void 0}))}getProjectConfig(){return e(this,void 0,void 0,(function*(){const t=yield this.getConfig();return"projectConfig"in t?t.projectConfig:void 0}))}getFlowConfig(){return e(this,void 0,void 0,(function*(){var t,e;const i=yield this.getProjectConfig(),r=(null===(t=null==i?void 0:i.flows)||void 0===t?void 0:t[this.flowId])||{};return null!==(e=r.version)&&void 0!==e||(r.version=0),r}))}getTargetLocales(){return e(this,void 0,void 0,(function*(){const t=yield this.getFlowConfig();return((null==t?void 0:t.targetLocales)||[]).map((t=>t.toLowerCase()))}))}getComponentsVersion(){return e(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 r=Object.create(null,{init:{get:()=>super.init}});return e(this,void 0,void 0,(function*(){var e;if(this.flowStatus="loading",["ready","error","success"].forEach((t=>this.addEventListener(t,(()=>{this.flowStatus=t})))),yield null===(e=r.init)||void 0===e?void 0:e.call(this),t(this,I,"f").subscribe(t(this,A,"m",B).bind(this)),t(this,I,"f").update({isDebug:this.debug}),t(this,A,"m",S).call(this),yield t(this,A,"m",P).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(this,A,"m",q).call(this);const{executionId:o,stepId:n,token:a,code:l,exchangeError:d,redirectAuthCallbackUrl:c,redirectAuthBackupCallbackUri:h,redirectAuthCodeChallenge:f,redirectAuthInitiator:g,ssoQueryParams:p}=u(this.flowId,this.loggerWrapper);window.addEventListener("popstate",t(this,U,"f").popstate),window.addEventListener("components-context",t(this,U,"f").componentsContext),t(this,j,"f").subscribe(t(this,A,"m",N).bind(this)),t(this,j,"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:o,token:a,code:l,exchangeError:d,redirectAuthCallbackUrl:c,redirectAuthBackupCallbackUri:h,redirectAuthCodeChallenge:f,redirectAuthInitiator:g},p)),i(this,y,!0,"f")}))}disconnectedCallback(){t(this,j,"f").unsubscribeAll(),t(this,I,"f").unsubscribeAll(),t(this,A,"m",T).call(this),window.removeEventListener("popstate",t(this,U,"f").popstate),window.removeEventListener("components-context",t(this,U,"f").componentsContext)}attributeChangedCallback(e,i,r){if(this.shadowRoot.isConnected&&t(this,y,"f")&&i!==r&&x.observedAttributes.includes(e)){t(this,A,"m",S).call(this);const s=null===i;t(this,j,"f").update((({stepId:t,executionId:i})=>{let o=t,n=i;return s||(n=null,o=null,l()),{[d(e)]:r,stepId:o,executionId:n}})),t(this,I,"f").update({isDebug:this.debug})}}}x=K,y=new WeakMap,j=new WeakMap,I=new WeakMap,E=new WeakMap,L=new WeakMap,U=new WeakMap,M=new WeakMap,A=new WeakSet,O=function(){this.shadowRoot.appendChild(b.content.cloneNode(!0)),this.slotElement=document.createElement("slot"),this.slotElement.classList.add("hidden"),this.rootElement.appendChild(this.slotElement)},S=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"];x.observedAttributes.forEach((e=>{if(!t.includes(e)&&!this[d(e)])throw Error(`${e} cannot be empty`)}))},W=function(){const{stepId:e,executionId:i}=c(this.flowId);t(this,j,"f").update({stepId:e,executionId:i})},D=function(t,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},x.sdkConfigOverrides),{projectId:t,baseUrl:i})),["start","next"].forEach((t=>{const i=this.sdk.flow[t];this.sdk.flow[t]=(...t)=>e(this,void 0,void 0,(function*(){try{return yield i(...t)}catch(t){return{error:{errorCode:k,errorDescription:t.toString()}}}}))}))},N=function(i,r,s){return e(this,void 0,void 0,(function*(){const{projectId:e,baseUrl:r}=i;if(s("projectId")||s("baseUrl")){if(!e)return;t(this,A,"m",D).call(this,e,r)}t(this,M,"f").call(this,i)}))},P=function(){return e(this,void 0,void 0,(function*(){const e=yield this.getConfig();return"isMissingConfig"in e&&e.isMissingConfig&&(yield t(this,A,"m",R).call(this))}))},R=function(){return e(this,void 0,void 0,(function*(){const t=h({projectId:this.projectId,filename:w,assetsFolder:C,baseUrl:this.baseStaticUrl});try{return yield f(t,"json"),!0}catch(t){return!1}}))},F=function(e){i(this,E,Object.assign(Object.assign({},t(this,E,"f")),e.detail),"f")},T=function(){var e;null===(e=t(this,L,"f"))||void 0===e||e.remove(),i(this,L,null,"f")},B=function(r){return e(this,arguments,void 0,(function*({isDebug:e}){e?(i(this,L,document.createElement("descope-debugger"),"f"),Object.assign(t(this,L,"f").style,{position:"fixed",top:"0",right:"0",height:"100vh",width:"100vw",pointerEvents:"none",zIndex:99999}),yield import("../debugger-wc.js"),document.body.appendChild(t(this,L,"f"))):t(this,A,"m",T).call(this)}))},V=function(e,i){var r;e&&this.debug&&(null===(r=t(this,L,"f"))||void 0===r||r.updateData({title:e,description:i}))},q=function(){this.rootElement.onkeydown=t=>{var e,i,r;const s=!!(null===(e=this.shadowRoot.activeElement)||void 0===e?void 0:e.getAttribute("href")),o=a.includes(null!==(r=null===(i=this.shadowRoot.activeElement)||void 0===i?void 0:i.localName)&&void 0!==r?r:"");if("Enter"!==t.key||s||o)return;t.preventDefault();const n=this.rootElement.querySelectorAll("descope-button");if(1===n.length&&"false"!==n[0].getAttribute("auto-submit"))return void n[0].click();const u=Array.from(n).filter((t=>"true"===t.getAttribute("auto-submit")));if(1===u.length)return void u[0].click();const l=Array.from(n).filter((t=>"button"===t.getAttribute("data-type")));if(1===l.length)"false"!==l[0].getAttribute("auto-submit")&&l[0].click();else if(0===l.length){const t=Array.from(n).filter((t=>"sso"===t.getAttribute("data-type")));1===t.length&&"false"!==t[0].getAttribute("auto-submit")&&t[0].click()}}},K.sdkConfigOverrides={baseHeaders:{"x-descope-sdk-name":"web-component","x-descope-sdk-version":"3.36.0"}};export{K as default};
|
|
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';\nimport initTemplate from './initTemplate';\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 '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 #initShadowDom() {\n this.shadowRoot.appendChild(initTemplate.content.cloneNode(true));\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 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 #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 'keep-last-authenticated-user-after-logout',\n 'preview',\n 'storage-prefix',\n 'form',\n 'client',\n 'validate-on-blur',\n 'style-id',\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 ...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","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","keepLastAuthenticatedUserAfterLogout","storagePrefix","preview","formConfig","transformFlowInputFormData","form","formConfigValues","extractNestedAttribute","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","appendChild","initTemplate","content","cloneNode","slotElement","document","createElement","classList","add","rootElement","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","import","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
|
+
{"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';\nimport initTemplate from './initTemplate';\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 ];\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 #initShadowDom() {\n this.shadowRoot.appendChild(initTemplate.content.cloneNode(true));\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 #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 ];\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","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","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","appendChild","initTemplate","content","cloneNode","slotElement","document","createElement","classList","add","rootElement","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","import","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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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -529,9 +529,9 @@ declare const BaseClass: {
|
|
|
529
529
|
focus(options?: FocusOptions): void;
|
|
530
530
|
};
|
|
531
531
|
} & (new (...params: any[]) => {
|
|
532
|
-
"__#
|
|
533
|
-
"__#
|
|
534
|
-
"__#
|
|
532
|
+
"__#27145@#lastBaseUrl"?: string;
|
|
533
|
+
"__#27145@#workingBaseUrl"?: string;
|
|
534
|
+
"__#27145@#getResourceUrls"(filename: string): (URL & {
|
|
535
535
|
baseUrl: string;
|
|
536
536
|
}) | (URL & {
|
|
537
537
|
baseUrl: string;
|
|
@@ -869,39 +869,39 @@ declare const BaseClass: {
|
|
|
869
869
|
blur(): void;
|
|
870
870
|
focus(options?: FocusOptions): void;
|
|
871
871
|
readonly projectId: string;
|
|
872
|
-
"__#
|
|
872
|
+
"__#27144@#handleError"(attrName: string, newValue: string): void;
|
|
873
873
|
init(): Promise<void>;
|
|
874
|
-
"__#
|
|
874
|
+
"__#27143@#observeMappings": {};
|
|
875
875
|
observeAttribute(attrName: string, onAttrChange: (attrName: string, value: string) => void): () => any;
|
|
876
876
|
observeAttributes(attrs: string[], cb: (attrName: string, value: string) => void): () => void;
|
|
877
|
-
"__#
|
|
878
|
-
"__#
|
|
879
|
-
"__#
|
|
877
|
+
"__#27142@#isInit": boolean;
|
|
878
|
+
"__#27141@#logger": _descope_sdk_mixins_static_resources_mixin.Logger;
|
|
879
|
+
"__#27141@#wrapLogger": ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger);
|
|
880
880
|
get logger(): _descope_sdk_mixins_static_resources_mixin.Logger;
|
|
881
881
|
set logger(logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>);
|
|
882
882
|
onLogEvent: ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void);
|
|
883
883
|
}) & (new (...params: any[]) => {
|
|
884
|
-
"__#
|
|
884
|
+
"__#27156@#globalStyleTag": HTMLStyleElement;
|
|
885
885
|
readonly theme: _descope_sdk_mixins_static_resources_mixin.ThemeOptions;
|
|
886
886
|
readonly styleId: string;
|
|
887
|
-
"__#
|
|
888
|
-
"__#
|
|
889
|
-
readonly "__#
|
|
890
|
-
"__#
|
|
891
|
-
"__#
|
|
892
|
-
"__#
|
|
887
|
+
"__#27156@#_themeResource": Promise<void | Record<string, any>>;
|
|
888
|
+
"__#27156@#fetchTheme"(): Promise<Record<string, any>>;
|
|
889
|
+
readonly "__#27156@#themeResource": Promise<void | Record<string, any>>;
|
|
890
|
+
"__#27156@#loadGlobalStyle"(): Promise<void>;
|
|
891
|
+
"__#27156@#loadComponentsStyle"(): Promise<void>;
|
|
892
|
+
"__#27156@#getFontsConfig"(): Promise<Record<string, {
|
|
893
893
|
url?: string;
|
|
894
894
|
}>>;
|
|
895
|
-
"__#
|
|
896
|
-
"__#
|
|
897
|
-
"__#
|
|
898
|
-
"__#
|
|
899
|
-
"__#
|
|
895
|
+
"__#27156@#loadFonts"(): Promise<void>;
|
|
896
|
+
"__#27156@#applyTheme"(): Promise<void>;
|
|
897
|
+
"__#27156@#onThemeChange": () => void;
|
|
898
|
+
"__#27156@#loadTheme"(): void;
|
|
899
|
+
"__#27156@#toggleOsThemeChangeListener": (listen: boolean) => void;
|
|
900
900
|
init(): Promise<void>;
|
|
901
|
-
"__#
|
|
901
|
+
"__#27143@#observeMappings": {};
|
|
902
902
|
observeAttribute: ((attrName: string, onAttrChange: (attrName: string, value: string) => void) => () => any) & ((attrName: string, onAttrChange: (attrName: string, value: string) => void) => () => any) & ((attrName: string, onAttrChange: (attrName: string, value: string) => void) => () => any) & ((attrName: string, onAttrChange: (attrName: string, value: string) => void) => () => any) & ((attrName: string, onAttrChange: (attrName: string, value: string) => void) => () => any) & ((attrName: string, onAttrChange: (attrName: string, value: string) => void) => () => any) & ((attrName: string, onAttrChange: (attrName: string, value: string) => void) => () => any);
|
|
903
903
|
observeAttributes: ((attrs: string[], cb: (attrName: string, value: string) => void) => () => void) & ((attrs: string[], cb: (attrName: string, value: string) => void) => () => void) & ((attrs: string[], cb: (attrName: string, value: string) => void) => () => void) & ((attrs: string[], cb: (attrName: string, value: string) => void) => () => void) & ((attrs: string[], cb: (attrName: string, value: string) => void) => () => void) & ((attrs: string[], cb: (attrName: string, value: string) => void) => () => void) & ((attrs: string[], cb: (attrName: string, value: string) => void) => () => void);
|
|
904
|
-
"__#
|
|
904
|
+
"__#27142@#isInit": boolean;
|
|
905
905
|
connectedCallback: (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void);
|
|
906
906
|
accessKey: string;
|
|
907
907
|
readonly accessKeyLabel: string;
|
|
@@ -1228,24 +1228,24 @@ declare const BaseClass: {
|
|
|
1228
1228
|
tabIndex: number;
|
|
1229
1229
|
blur(): void;
|
|
1230
1230
|
focus(options?: FocusOptions): void;
|
|
1231
|
-
"__#
|
|
1232
|
-
"__#
|
|
1231
|
+
"__#27141@#logger": _descope_sdk_mixins_static_resources_mixin.Logger;
|
|
1232
|
+
"__#27141@#wrapLogger": ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger) & ((logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>) => _descope_sdk_mixins_static_resources_mixin.Logger);
|
|
1233
1233
|
get logger(): _descope_sdk_mixins_static_resources_mixin.Logger;
|
|
1234
1234
|
set logger(logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>);
|
|
1235
1235
|
onLogEvent: ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void) & ((logLevel: "error" | "warn" | "info" | "debug", data: any[]) => void);
|
|
1236
1236
|
contentRootElement: HTMLElement;
|
|
1237
1237
|
rootElement: HTMLElement;
|
|
1238
1238
|
readonly config: Promise<_descope_sdk_mixins_static_resources_mixin.Config>;
|
|
1239
|
-
"__#
|
|
1240
|
-
"__#
|
|
1241
|
-
"__#
|
|
1242
|
-
"__#
|
|
1239
|
+
"__#27147@#configCacheClear": (() => void) & (() => void);
|
|
1240
|
+
"__#27147@#_configResource": Promise<_descope_sdk_mixins_static_resources_mixin.Config>;
|
|
1241
|
+
"__#27147@#fetchConfig": (() => Promise<_descope_sdk_mixins_static_resources_mixin.Config>) & (() => Promise<_descope_sdk_mixins_static_resources_mixin.Config>);
|
|
1242
|
+
"__#27146@#callbacks": Map<string, () => void> & Map<string, () => void>;
|
|
1243
1243
|
onReset: ((sectionId: string, callback: () => void | Promise<void>) => () => void) & ((sectionId: string, callback: () => void | Promise<void>) => () => void);
|
|
1244
1244
|
reset: ((...sectionIds: string[]) => Promise<void>) & ((...sectionIds: string[]) => Promise<void>);
|
|
1245
|
-
"__#
|
|
1246
|
-
"__#
|
|
1247
|
-
"__#
|
|
1248
|
-
"__#
|
|
1245
|
+
"__#27144@#handleError": ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void) & ((attrName: string, newValue: string) => void);
|
|
1246
|
+
"__#27145@#lastBaseUrl"?: string;
|
|
1247
|
+
"__#27145@#workingBaseUrl"?: string;
|
|
1248
|
+
"__#27145@#getResourceUrls": ((filename: string) => (URL & {
|
|
1249
1249
|
baseUrl: string;
|
|
1250
1250
|
}) | (URL & {
|
|
1251
1251
|
baseUrl: string;
|
|
@@ -1271,18 +1271,18 @@ declare const BaseClass: {
|
|
|
1271
1271
|
readonly baseStaticUrl: string;
|
|
1272
1272
|
readonly baseUrl: string;
|
|
1273
1273
|
readonly projectId: string;
|
|
1274
|
-
"__#
|
|
1275
|
-
"__#
|
|
1276
|
-
"__#
|
|
1277
|
-
"__#
|
|
1278
|
-
"__#
|
|
1279
|
-
"__#
|
|
1280
|
-
"__#
|
|
1281
|
-
"__#
|
|
1274
|
+
"__#27150@#errorCbsSym": symbol;
|
|
1275
|
+
"__#27150@#loadCbsSym": symbol;
|
|
1276
|
+
"__#27150@#getComponentsVersion"(): Promise<string>;
|
|
1277
|
+
"__#27150@#exposeAlternateEvents"(scriptEle: HTMLScriptElement): void;
|
|
1278
|
+
"__#27150@#handleFallbackScript"(errorCbs: ((error: string) => void)[], loadCbs: (() => void)[], elemId: string, scriptUrl: string): Promise<void>;
|
|
1279
|
+
"__#27150@#registerEvents"(scriptEle: HTMLScriptElement): void;
|
|
1280
|
+
"__#27150@#getDescopeUiLoadingScript"(): Promise<HTMLElement>;
|
|
1281
|
+
"__#27150@#descopeUi": Promise<any>;
|
|
1282
1282
|
readonly descopeUi: Promise<any>;
|
|
1283
|
-
"__#
|
|
1283
|
+
"__#27150@#loadDescopeUiComponent"(componentName: string): Promise<any>;
|
|
1284
1284
|
loadDescopeUiComponents(templateOrComponentNames: string[] | HTMLTemplateElement): Promise<any[]>;
|
|
1285
|
-
"__#
|
|
1285
|
+
"__#27150@#getDescopeUi"(): Promise<unknown>;
|
|
1286
1286
|
readonly baseCdnUrl: string;
|
|
1287
1287
|
}) & {
|
|
1288
1288
|
new (): HTMLElement;
|
|
@@ -1318,6 +1318,7 @@ declare class BaseDescopeWc extends BaseClass {
|
|
|
1318
1318
|
get autoFocus(): AutoFocusOptions;
|
|
1319
1319
|
get validateOnBlur(): boolean;
|
|
1320
1320
|
get storeLastAuthenticatedUser(): boolean;
|
|
1321
|
+
get refreshCookieName(): string;
|
|
1321
1322
|
get keepLastAuthenticatedUserAfterLogout(): boolean;
|
|
1322
1323
|
get storagePrefix(): string;
|
|
1323
1324
|
get preview(): boolean;
|