@descope/web-component 3.33.0 → 3.34.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.
Files changed (104) hide show
  1. package/README.md +64 -13
  2. package/dist/cjs/constants/content.js +1 -0
  3. package/dist/cjs/constants/content.js.map +1 -0
  4. package/dist/cjs/constants/customScreens.js +2 -0
  5. package/dist/cjs/constants/customScreens.js.map +1 -0
  6. package/dist/cjs/constants/general.js +1 -0
  7. package/dist/cjs/constants/general.js.map +1 -0
  8. package/dist/cjs/constants/index.js +1 -0
  9. package/dist/cjs/constants/index.js.map +1 -0
  10. package/dist/cjs/constants/uiComponents.js +1 -0
  11. package/dist/cjs/constants/uiComponents.js.map +1 -0
  12. package/dist/cjs/debugger-wc.js +1 -0
  13. package/dist/cjs/debugger-wc.js.map +1 -0
  14. package/dist/cjs/descope-wc/BaseDescopeWc.js +2 -1
  15. package/dist/cjs/descope-wc/BaseDescopeWc.js.map +1 -0
  16. package/dist/cjs/descope-wc/DescopeWc.js +2 -1
  17. package/dist/cjs/descope-wc/DescopeWc.js.map +1 -0
  18. package/dist/cjs/descope-wc/index.js +1 -0
  19. package/dist/cjs/descope-wc/index.js.map +1 -0
  20. package/dist/cjs/descope-wc/initTemplate.js +2 -1
  21. package/dist/cjs/descope-wc/initTemplate.js.map +1 -0
  22. package/dist/cjs/descope-wc/sdkScripts/fingerprint.js +1 -0
  23. package/dist/cjs/descope-wc/sdkScripts/fingerprint.js.map +1 -0
  24. package/dist/cjs/descope-wc/sdkScripts/fingerprintDescope.js +1 -0
  25. package/dist/cjs/descope-wc/sdkScripts/fingerprintDescope.js.map +1 -0
  26. package/dist/cjs/descope-wc/sdkScripts/forter.js +1 -0
  27. package/dist/cjs/descope-wc/sdkScripts/forter.js.map +1 -0
  28. package/dist/cjs/descope-wc/sdkScripts/index.js +1 -0
  29. package/dist/cjs/descope-wc/sdkScripts/index.js.map +1 -0
  30. package/dist/cjs/helpers/abTestingKey.js +1 -0
  31. package/dist/cjs/helpers/abTestingKey.js.map +1 -0
  32. package/dist/cjs/helpers/conditions.js +2 -1
  33. package/dist/cjs/helpers/conditions.js.map +1 -0
  34. package/dist/cjs/helpers/flowInputs.js +1 -0
  35. package/dist/cjs/helpers/flowInputs.js.map +1 -0
  36. package/dist/cjs/helpers/helpers.js +2 -1
  37. package/dist/cjs/helpers/helpers.js.map +1 -0
  38. package/dist/cjs/helpers/lastAuth.js +1 -0
  39. package/dist/cjs/helpers/lastAuth.js.map +1 -0
  40. package/dist/cjs/helpers/positionHelpers.js +1 -0
  41. package/dist/cjs/helpers/positionHelpers.js.map +1 -0
  42. package/dist/cjs/helpers/state.js +2 -1
  43. package/dist/cjs/helpers/state.js.map +1 -0
  44. package/dist/cjs/helpers/templates.js +1 -0
  45. package/dist/cjs/helpers/templates.js.map +1 -0
  46. package/dist/cjs/helpers/webauthn.js +1 -0
  47. package/dist/cjs/helpers/webauthn.js.map +1 -0
  48. package/dist/cjs/mixins/formMountMixin.js +1 -0
  49. package/dist/cjs/mixins/formMountMixin.js.map +1 -0
  50. package/dist/cjs/types.js +1 -0
  51. package/dist/cjs/types.js.map +1 -0
  52. package/dist/esm/constants/content.js +1 -0
  53. package/dist/esm/constants/content.js.map +1 -0
  54. package/dist/esm/constants/customScreens.js +2 -0
  55. package/dist/esm/constants/customScreens.js.map +1 -0
  56. package/dist/esm/constants/general.js +1 -0
  57. package/dist/esm/constants/general.js.map +1 -0
  58. package/dist/esm/constants/index.js +1 -0
  59. package/dist/esm/constants/index.js.map +1 -0
  60. package/dist/esm/constants/uiComponents.js +1 -0
  61. package/dist/esm/constants/uiComponents.js.map +1 -0
  62. package/dist/esm/debugger-wc.js +1 -0
  63. package/dist/esm/debugger-wc.js.map +1 -0
  64. package/dist/esm/descope-wc/BaseDescopeWc.js +2 -1
  65. package/dist/esm/descope-wc/BaseDescopeWc.js.map +1 -0
  66. package/dist/esm/descope-wc/DescopeWc.js +2 -1
  67. package/dist/esm/descope-wc/DescopeWc.js.map +1 -0
  68. package/dist/esm/descope-wc/index.js +1 -0
  69. package/dist/esm/descope-wc/index.js.map +1 -0
  70. package/dist/esm/descope-wc/initTemplate.js +2 -1
  71. package/dist/esm/descope-wc/initTemplate.js.map +1 -0
  72. package/dist/esm/descope-wc/sdkScripts/fingerprint.js +1 -0
  73. package/dist/esm/descope-wc/sdkScripts/fingerprint.js.map +1 -0
  74. package/dist/esm/descope-wc/sdkScripts/fingerprintDescope.js +1 -0
  75. package/dist/esm/descope-wc/sdkScripts/fingerprintDescope.js.map +1 -0
  76. package/dist/esm/descope-wc/sdkScripts/forter.js +1 -0
  77. package/dist/esm/descope-wc/sdkScripts/forter.js.map +1 -0
  78. package/dist/esm/descope-wc/sdkScripts/index.js +1 -0
  79. package/dist/esm/descope-wc/sdkScripts/index.js.map +1 -0
  80. package/dist/esm/helpers/abTestingKey.js +1 -0
  81. package/dist/esm/helpers/abTestingKey.js.map +1 -0
  82. package/dist/esm/helpers/conditions.js +2 -1
  83. package/dist/esm/helpers/conditions.js.map +1 -0
  84. package/dist/esm/helpers/flowInputs.js +1 -0
  85. package/dist/esm/helpers/flowInputs.js.map +1 -0
  86. package/dist/esm/helpers/helpers.js +2 -1
  87. package/dist/esm/helpers/helpers.js.map +1 -0
  88. package/dist/esm/helpers/lastAuth.js +1 -0
  89. package/dist/esm/helpers/lastAuth.js.map +1 -0
  90. package/dist/esm/helpers/positionHelpers.js +1 -0
  91. package/dist/esm/helpers/positionHelpers.js.map +1 -0
  92. package/dist/esm/helpers/state.js +2 -1
  93. package/dist/esm/helpers/state.js.map +1 -0
  94. package/dist/esm/helpers/templates.js +1 -0
  95. package/dist/esm/helpers/templates.js.map +1 -0
  96. package/dist/esm/helpers/webauthn.js +1 -0
  97. package/dist/esm/helpers/webauthn.js.map +1 -0
  98. package/dist/esm/mixins/formMountMixin.js +1 -0
  99. package/dist/esm/mixins/formMountMixin.js.map +1 -0
  100. package/dist/esm/types.js +1 -0
  101. package/dist/esm/types.js.map +1 -0
  102. package/dist/index.d.ts +78 -46
  103. package/dist/index.js +2 -2
  104. package/package.json +4 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sources":["../../../src/lib/helpers/templates.ts"],"sourcesContent":["import { escapeMarkdown } from '@descope/escape-markdown';\nimport {\n ELEMENT_TYPE_ATTRIBUTE,\n DESCOPE_ATTRIBUTE_EXCLUDE_FIELD,\n HAS_DYNAMIC_VALUES_ATTR_NAME,\n} from '../constants';\nimport { ComponentsConfig, CssVars, ScreenState } from '../types';\nimport { shouldHandleMarkdown } from './helpers';\n\nconst ALLOWED_INPUT_CONFIG_ATTRS = ['disabled'];\n\nconst replaceElementMessage = (\n baseEle: DocumentFragment,\n eleType: string,\n message = '',\n) => {\n const eleList = baseEle.querySelectorAll(\n `[${ELEMENT_TYPE_ATTRIBUTE}=\"${eleType}\"]`,\n );\n eleList.forEach((ele: HTMLElement) => {\n // eslint-disable-next-line no-param-reassign\n ele.textContent = message;\n ele.classList[message ? 'remove' : 'add']('hide');\n });\n};\n\n/**\n * Replace the 'value' attribute of screen inputs with screen state's inputs.\n * For example: if base element contains '<input name=\"key1\" ...>' and screen input is in form of { key1: 'val1' },\n * it will add 'val1' as the input value\n */\nconst replaceElementInputs = (\n baseEle: HTMLElement,\n screenInputs: Record<string, string>,\n) => {\n Object.entries(screenInputs || {}).forEach(([name, value]) => {\n const inputEls = Array.from(\n baseEle.querySelectorAll(\n `*[name=\"${name}\"]:not([${DESCOPE_ATTRIBUTE_EXCLUDE_FIELD}])`,\n ),\n ) as HTMLInputElement[];\n inputEls.forEach((inputEle) => {\n // eslint-disable-next-line no-param-reassign\n inputEle.value = value;\n });\n });\n};\n\n/**\n * Get object nested path.\n * Examples:\n * - getByPath({ { a { b: 'rob' } }, 'a.b') => 'hey rob'\n * - getByPath({}, 'a.b') => ''\n */\nconst getByPath = (obj: Record<string, any>, path: string) =>\n path.split('.').reduce((prev, next) => prev?.[next] || '', obj);\n\n/**\n * Apply template language on text, based on screen state.\n * Examples:\n * - 'hey {{a.b}}', { a { b: 'rob' }} => 'hey rob'\n * - 'hey {{not.exists}}', {} => 'hey '\n */\nconst applyTemplates = (\n text: string,\n screenState?: Record<string, any>,\n handleMarkdown?: boolean,\n): string =>\n text.replace(/{{(.+?)}}/g, (_, match) =>\n handleMarkdown\n ? escapeMarkdown(getByPath(screenState, match))\n : getByPath(screenState, match),\n );\n\n/**\n * Replace the templates of content of inner text/link elements with screen state data\n */\nconst replaceElementTemplates = (\n baseEle: DocumentFragment,\n screenState?: Record<string, any>,\n) => {\n const eleList = baseEle.querySelectorAll(\n 'descope-text,descope-link,descope-enriched-text,descope-code-snippet',\n );\n eleList.forEach((inEle: HTMLElement) => {\n const handleMarkdown = shouldHandleMarkdown(inEle.localName);\n // eslint-disable-next-line no-param-reassign\n inEle.textContent = applyTemplates(\n inEle.textContent,\n screenState,\n handleMarkdown,\n );\n const href = inEle.getAttribute('href');\n if (href) {\n inEle.setAttribute('href', applyTemplates(href, screenState));\n }\n });\n};\n\nconst replaceTemplateDynamicAttrValues = (\n baseEle: DocumentFragment,\n screenState?: Record<string, any>,\n) => {\n const eleList = baseEle.querySelectorAll(`[${HAS_DYNAMIC_VALUES_ATTR_NAME}]`);\n eleList.forEach((ele: HTMLElement) => {\n Array.from(ele.attributes).forEach((attr) => {\n // eslint-disable-next-line no-param-reassign\n attr.value = applyTemplates(attr.value, screenState);\n });\n });\n};\n\nconst replaceHrefByDataType = (\n baseEle: DocumentFragment,\n dataType: string,\n provisionUrl?: string,\n) => {\n const eleList = baseEle.querySelectorAll(\n `[${ELEMENT_TYPE_ATTRIBUTE}=\"${dataType}\"]`,\n );\n eleList.forEach((ele: HTMLLinkElement) => {\n // eslint-disable-next-line no-param-reassign\n ele.setAttribute('href', provisionUrl);\n });\n};\n\nconst setFormConfigValues = (\n baseEle: DocumentFragment,\n formData: Record<string, string>,\n) => {\n Object.entries(formData).forEach(([name, config]) => {\n const eles = baseEle.querySelectorAll(`[name=\"${name}\"]`);\n\n eles.forEach((ele) => {\n Object.entries(config).forEach(([attrName, attrValue]) => {\n if (ALLOWED_INPUT_CONFIG_ATTRS.includes(attrName)) {\n ele.setAttribute(attrName, attrValue);\n }\n });\n });\n });\n};\n\nexport const setCssVars = (\n rootEle: HTMLElement,\n nextPageTemplate: DocumentFragment,\n cssVars: CssVars,\n logger: {\n error: (message: string, description: string) => void;\n info: (message: string, description: string) => void;\n debug: (message: string, description: string) => void;\n },\n) => {\n if (!cssVars) {\n return;\n }\n\n Object.keys(cssVars).forEach((componentName) => {\n if (!nextPageTemplate.querySelector(componentName)) {\n logger.debug(\n `Skipping css vars for component \"${componentName}}\"`,\n `Got css vars for component ${componentName} but Could not find it on next page`,\n );\n }\n const componentClass:\n | (CustomElementConstructor & { cssVarList: CssVars })\n | undefined = customElements.get(componentName) as any;\n\n if (!componentClass) {\n logger.info(\n `Could not find component class for ${componentName}`,\n 'Check if the component is registered',\n );\n return;\n }\n\n Object.keys(cssVars[componentName]).forEach((cssVarKey) => {\n const componentCssVars = cssVars[componentName];\n const varName = componentClass?.cssVarList?.[cssVarKey];\n\n if (!varName) {\n logger.info(\n `Could not find css variable name for ${cssVarKey} in ${componentName}`,\n 'Check if the css variable is defined in the component',\n );\n return;\n }\n\n const value = componentCssVars[cssVarKey];\n\n rootEle.style.setProperty(varName, value);\n });\n });\n};\n\nconst setElementConfig = (\n baseEle: DocumentFragment,\n componentsConfig: ComponentsConfig,\n logger?: { error: (message: string, description: string) => void },\n) => {\n if (!componentsConfig) {\n return;\n }\n // collect components that needs configuration from DOM\n Object.keys(componentsConfig).forEach((componentName) => {\n baseEle.querySelectorAll(`[name=${componentName}]`).forEach((comp) => {\n const config = componentsConfig[componentName];\n\n Object.keys(config).forEach((attr) => {\n let value = config[attr];\n\n if (typeof value !== 'string') {\n try {\n value = JSON.stringify(value);\n } catch (e) {\n logger.error(\n `Could not stringify value \"${value}\" for \"${attr}\"`,\n e.message,\n );\n value = '';\n }\n }\n\n comp.setAttribute(attr, value);\n });\n });\n });\n};\n\nconst setImageVariable = (\n rootEle: HTMLElement,\n name: string,\n image?: string,\n) => {\n const imageVarName = (\n customElements.get(name) as CustomElementConstructor & {\n cssVarList: Record<string, string>;\n }\n )?.cssVarList.url;\n\n if (image && imageVarName) {\n rootEle?.style?.setProperty(\n imageVarName,\n `url(data:image/jpg;base64,${image})`,\n );\n }\n};\n\n/**\n * Update a screen template based on the screen state\n * - Show/hide error messages\n * - Replace element templates ({{...}} syntax) with screen state object\n */\nexport const updateTemplateFromScreenState = (\n baseEle: DocumentFragment,\n screenState?: ScreenState,\n componentsConfig?: ComponentsConfig,\n flowInputs?: Record<string, string>,\n errorTransformer?: (error: { text: string; type: string }) => string,\n logger?: { error: (message: string, description: string) => void },\n) => {\n let errorText = screenState?.errorText;\n try {\n errorText =\n errorTransformer?.({\n text: screenState?.errorText,\n type: screenState?.errorType,\n }) || screenState?.errorText;\n } catch (e) {\n logger.error('Error transforming error message', e.message);\n }\n replaceElementMessage(baseEle, 'error-message', errorText);\n replaceHrefByDataType(baseEle, 'totp-link', screenState?.totp?.provisionUrl);\n replaceHrefByDataType(baseEle, 'notp-link', screenState?.notp?.redirectUrl);\n replaceElementTemplates(baseEle, screenState);\n setElementConfig(baseEle, componentsConfig, logger);\n replaceTemplateDynamicAttrValues(baseEle, screenState);\n setFormConfigValues(baseEle, flowInputs);\n};\n\n/**\n * Update a screen based on a screen state\n * - Replace values of element inputs with screen state's inputs\n */\nexport const updateScreenFromScreenState = (\n baseEle: HTMLElement,\n screenState?: ScreenState,\n) => {\n replaceElementInputs(baseEle, screenState?.inputs);\n replaceElementInputs(baseEle, screenState?.form);\n};\n\nexport const setTOTPVariable = (rootEle: HTMLElement, image?: string) => {\n setImageVariable(rootEle, 'descope-totp-image', image);\n};\n\nexport const setNOTPVariable = (rootEle: HTMLElement, image?: string) => {\n setImageVariable(rootEle, 'descope-notp-image', image);\n};\n\nexport const setPhoneAutoDetectDefaultCode = (\n fragment: DocumentFragment,\n autoDetectCode?: string,\n) => {\n Array.from(fragment.querySelectorAll('[default-code=\"autoDetect\"]')).forEach(\n (phoneEle) => {\n phoneEle.setAttribute('default-code', autoDetectCode);\n },\n );\n};\n\nexport const disableWebauthnButtons = (fragment: DocumentFragment) => {\n const webauthnButtons = fragment.querySelectorAll(\n `descope-button[${ELEMENT_TYPE_ATTRIBUTE}=\"biometrics\"]`,\n );\n webauthnButtons.forEach((button) => button.setAttribute('disabled', 'true'));\n};\n\nexport const getDescopeUiComponentsList = (clone: DocumentFragment) => [\n ...Array.from(clone.querySelectorAll('*')).reduce<Set<string>>(\n (acc, el: HTMLElement) =>\n el.tagName.startsWith('DESCOPE-')\n ? acc.add(el.tagName.toLocaleLowerCase())\n : acc,\n new Set(),\n ),\n];\n"],"names":["ALLOWED_INPUT_CONFIG_ATTRS","replaceElementInputs","baseEle","screenInputs","Object","entries","forEach","name","value","Array","from","querySelectorAll","DESCOPE_ATTRIBUTE_EXCLUDE_FIELD","inputEle","getByPath","obj","path","split","reduce","prev","next","applyTemplates","text","screenState","handleMarkdown","replace","_","match","escapeMarkdown","replaceHrefByDataType","dataType","provisionUrl","ELEMENT_TYPE_ATTRIBUTE","ele","setAttribute","setCssVars","rootEle","nextPageTemplate","cssVars","logger","keys","componentName","querySelector","debug","componentClass","customElements","get","cssVarKey","componentCssVars","varName","_a","cssVarList","info","style","setProperty","setImageVariable","image","imageVarName","url","_b","updateTemplateFromScreenState","componentsConfig","flowInputs","errorTransformer","errorText","type","errorType","e","error","message","eleType","textContent","classList","replaceElementMessage","totp","notp","redirectUrl","inEle","shouldHandleMarkdown","localName","href","getAttribute","replaceElementTemplates","comp","config","attr","JSON","stringify","setElementConfig","HAS_DYNAMIC_VALUES_ATTR_NAME","attributes","replaceTemplateDynamicAttrValues","formData","attrName","attrValue","includes","setFormConfigValues","updateScreenFromScreenState","inputs","form","setTOTPVariable","setNOTPVariable","setPhoneAutoDetectDefaultCode","fragment","autoDetectCode","phoneEle","disableWebauthnButtons","button"],"mappings":"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"}
@@ -1 +1,2 @@
1
1
  import{__awaiter as i}from"tslib";import{withMemCache as e,getChromiumVersion as l,timeoutPromise as o}from"./helpers.js";const n=e((()=>i(void 0,void 0,void 0,(function*(){var i,e;if(!window.PublicKeyCredential||!PublicKeyCredential.isConditionalMediationAvailable||!PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable)return!1;try{const n=Promise.all([null===(i=window.PublicKeyCredential)||void 0===i?void 0:i.isConditionalMediationAvailable(),null===(e=window.PublicKeyCredential)||void 0===e?void 0:e.isUserVerifyingPlatformAuthenticatorAvailable()]).then((i=>i.every((i=>!!i)))),r=l()>=108;return yield o(100,n,r)}catch(i){return console.error("Conditional login check failed",i),!1}}))));export{n as isConditionalLoginSupported};
2
+ //# sourceMappingURL=webauthn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webauthn.js","sources":["../../../src/lib/helpers/webauthn.ts"],"sourcesContent":["/* eslint @typescript-eslint/no-use-before-define: 0 */\n\nimport { withMemCache, timeoutPromise, getChromiumVersion } from './helpers';\n\nconst CHROMIUM_VERSION_THAT_SUPPORTS_PASSKEYS = 108;\n\n// eslint-disable-next-line import/prefer-default-export\nexport const isConditionalLoginSupported = withMemCache(async () => {\n if (\n !window.PublicKeyCredential ||\n !(<any>PublicKeyCredential).isConditionalMediationAvailable ||\n !PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable\n ) {\n return false;\n }\n try {\n const isSupported = Promise.all([\n (<any>window.PublicKeyCredential)?.isConditionalMediationAvailable(),\n window.PublicKeyCredential?.isUserVerifyingPlatformAuthenticatorAvailable(),\n ]).then((arr) => arr.every((value) => !!value));\n\n // when using Dashlane Chrome extension, \"isConditionalMediationAvailable\" never resolved and the app hangs\n // if timeout exceeded, we are deciding if passkeys are supported based on the Chromium version\n const isChromiumSupported =\n getChromiumVersion() >= CHROMIUM_VERSION_THAT_SUPPORTS_PASSKEYS;\n\n return await timeoutPromise(100, isSupported, isChromiumSupported);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Conditional login check failed', err);\n return false;\n }\n});\n"],"names":["isConditionalLoginSupported","withMemCache","__awaiter","window","PublicKeyCredential","isConditionalMediationAvailable","isUserVerifyingPlatformAuthenticatorAvailable","isSupported","Promise","all","_a","_b","then","arr","every","value","isChromiumSupported","getChromiumVersion","timeoutPromise","err","console","error"],"mappings":"0HAIA,MAGaA,EAA8BC,GAAa,IAAWC,OAAA,OAAA,OAAA,GAAA,oBACjE,IACGC,OAAOC,sBACDA,oBAAqBC,kCAC3BD,oBAAoBE,8CAErB,OAAO,EAET,IACE,MAAMC,EAAcC,QAAQC,IAAI,CACG,QAAjCC,EAAMP,OAAOC,2BAAoB,IAAAM,OAAA,EAAAA,EAAEL,kCACT,QAA1BM,EAAAR,OAAOC,2BAAmB,IAAAO,OAAA,EAAAA,EAAEL,kDAC3BM,MAAMC,GAAQA,EAAIC,OAAOC,KAAYA,MAIlCC,EACJC,KApB0C,IAsB5C,aAAaC,EAAe,IAAKX,EAAaS,EAC/C,CAAC,MAAOG,GAGP,OADAC,QAAQC,MAAM,iCAAkCF,IACzC,CACR,CACH"}
@@ -1 +1,2 @@
1
1
  import{__classPrivateFieldGet as t}from"tslib";import{createSingletonMixin as e}from"@descope/sdk-helpers";import{isChromium as s}from"../helpers/helpers.js";import"../helpers/state.js";import"@descope/escape-markdown";import"../constants/content.js";import"../constants/uiComponents.js";import"../helpers/webauthn.js";const o=e((e=>{var o,n,r,l;return l=class extends e{constructor(){super(...arguments),o.add(this)}connectedCallback(){var e;t(this,o,"m",n).call(this)&&t(this,o,"m",r).call(this),null===(e=super.connectedCallback)||void 0===e||e.call(this)}},o=new WeakSet,n=function(){return!this.shadowRoot.host.closest("form")&&s()},r=function(){const t=this.shadowRoot.host,e=document.createElement("form");e.style.width="100%",e.style.height="100%",t.parentElement.appendChild(e),e.appendChild(t)},l}));export{o as formMountMixin};
2
+ //# sourceMappingURL=formMountMixin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formMountMixin.js","sources":["../../../src/lib/mixins/formMountMixin.ts"],"sourcesContent":["/* eslint-disable import/prefer-default-export */\nimport { createSingletonMixin } from '@descope/sdk-helpers';\nimport { isChromium } from '../helpers';\n\nexport const formMountMixin = createSingletonMixin(\n <T extends CustomElementConstructor>(superclass: T) =>\n class FormMountMixin extends superclass {\n #shouldMountInFormEle() {\n const wc = this.shadowRoot.host;\n return !wc.closest('form') && isChromium();\n }\n\n // we want to make sure the web-component is wrapped with on outer form element\n // this is needed in order to support webauthn conditional UI (which currently supported only in Chrome when input is inside a web-component)\n // for more info see here: https://github.com/descope/etc/issues/733\n #handleOuterForm() {\n const wc = this.shadowRoot.host;\n const form = document.createElement('form');\n form.style.width = '100%';\n form.style.height = '100%';\n wc.parentElement.appendChild(form);\n form.appendChild(wc);\n }\n\n connectedCallback() {\n if (this.#shouldMountInFormEle()) {\n this.#handleOuterForm();\n }\n super.connectedCallback?.();\n }\n },\n);\n"],"names":["formMountMixin","createSingletonMixin","superclass","_FormMountMixin_instances","_FormMountMixin_shouldMountInFormEle","_FormMountMixin_handleOuterForm","_a","constructor","connectedCallback","__classPrivateFieldGet","this","call","_b","super","shadowRoot","host","closest","isChromium","wc","form","document","createElement","style","width","height","parentElement","appendChild"],"mappings":"+TAIO,MAAMA,EAAiBC,GACSC,IAAiB,IAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAAA,EACpD,cAA6BJ,EAA7B,WAAAK,kCAwBC,CANC,iBAAAC,SACMC,EAAAC,KAAIP,EAAA,IAAAC,QAAJM,OACFD,EAAAC,KAAIP,EAAA,IAAAE,GAAJM,KAAAD,MAEqB,QAAvBE,EAAAC,MAAML,yBAAiB,IAAAI,GAAAA,EAAAD,KAAAD,KACxB,8BApBC,OADWA,KAAKI,WAAWC,KAChBC,QAAQ,SAAWC,GAC/B,eAMC,MAAMC,EAAKR,KAAKI,WAAWC,KACrBI,EAAOC,SAASC,cAAc,QACpCF,EAAKG,MAAMC,MAAQ,OACnBJ,EAAKG,MAAME,OAAS,OACpBN,EAAGO,cAAcC,YAAYP,GAC7BA,EAAKO,YAAYR,EAClB,EAQFZ,CAAA"}
package/dist/esm/types.js CHANGED
@@ -1 +1,2 @@
1
1
  var r;!function(r){r.backward="backward",r.forward="forward"}(r||(r={}));export{r as Direction};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sources":["../../src/lib/types.ts"],"sourcesContent":["/* istanbul ignore file */\n\nimport createSdk from '@descope/web-js-sdk';\n\nexport type SdkConfig = Parameters<typeof createSdk>[0];\nexport type Sdk = ReturnType<typeof createSdk>;\n\nexport type SdkFlowNext = Sdk['flow']['next'];\n\nexport type ComponentsConfig = Record<string, any>;\nexport type CssVars = Record<string, any>;\n\ntype KeepArgsByIndex<F, Indices extends readonly number[]> = F extends (\n ...args: infer A\n) => infer R\n ? (...args: PickArgsByIndex<A, Indices>) => R\n : never;\n\ntype PickArgsByIndex<\n All extends readonly any[],\n Indices extends readonly number[],\n> = {\n [K in keyof Indices]: Indices[K] extends keyof All ? All[Indices[K]] : never;\n};\n\ntype Project = {\n name: string;\n};\n\nexport enum Direction {\n backward = 'backward',\n forward = 'forward',\n}\n\nexport interface LastAuthState {\n loginId?: string;\n name?: string;\n}\n\nexport interface ScreenState {\n errorText?: string;\n errorType?: string;\n componentsConfig?: ComponentsConfig;\n cssVars?: CssVars;\n form?: Record<string, string>;\n inputs?: Record<string, string>; // Backward compatibility\n lastAuth?: LastAuthState;\n project?: Project;\n totp?: { image?: string; provisionUrl?: string };\n notp?: { image?: string; redirectUrl?: string };\n clientScripts?: unknown;\n selfProvisionDomains?: unknown;\n user?: unknown;\n sso?: unknown;\n dynamicSelects?: unknown;\n keysInUse?: unknown;\n genericForm?: unknown;\n linkId?: unknown;\n sentTo?: unknown;\n}\n\nexport type SSOQueryParams = {\n oidcIdpStateId?: string;\n samlIdpStateId?: string;\n samlIdpUsername?: string;\n descopeIdpInitiated?: boolean;\n ssoAppId?: string;\n thirdPartyAppId: string;\n thirdPartyAppStateId?: string;\n applicationScopes?: string;\n} & OIDCOptions;\n\nexport type OIDCOptions = {\n oidcLoginHint?: string;\n oidcPrompt?: string;\n oidcErrorRedirectUri?: string;\n};\n\nexport type Locale = {\n locale: string;\n fallback: string;\n};\n\nexport type FlowState = {\n flowId: string;\n projectId: string;\n baseUrl: string;\n tenant: string;\n stepId: string;\n stepName: string;\n executionId: string;\n action: string;\n redirectTo: string;\n openInNewTabUrl?: string;\n redirectUrl: string;\n screenId: string;\n screenState: ScreenState;\n token: string;\n code: string;\n exchangeError: string;\n webauthnTransactionId: string;\n webauthnOptions: string;\n redirectAuthCodeChallenge: string;\n redirectAuthCallbackUrl: string;\n redirectAuthBackupCallbackUri: string;\n redirectAuthInitiator: string;\n deferredRedirect: boolean;\n locale: string;\n samlIdpResponseUrl: string;\n samlIdpResponseSamlResponse: string;\n samlIdpResponseRelayState: string;\n nativeResponseType: string;\n nativePayload: Record<string, any>;\n} & SSOQueryParams;\n\nexport type StepState = {\n screenState: ScreenState;\n screenId: string;\n stepName: string;\n htmlFilename: string;\n htmlLocaleFilename: string;\n next: NextFn;\n direction: Direction | undefined;\n samlIdpUsername: string;\n openInNewTabUrl?: string;\n} & OIDCOptions;\n\nexport type CustomScreenState = Omit<\n ScreenState,\n 'cssVars' | 'componentsConfig' | 'inputs'\n> & {\n error?: {\n text: ScreenState['errorText'];\n type: ScreenState['errorType'];\n };\n};\n\nexport type DebugState = {\n isDebug: boolean;\n};\n\nexport type NextFn = KeepArgsByIndex<SdkFlowNext, [2, 5]>;\nexport type NextFnReturnPromiseValue = Awaited<ReturnType<NextFn>>;\n\nexport type DebuggerMessage = {\n title: string;\n description?: string;\n};\n\nexport type FlowStateUpdateFn = (state: FlowState) => void;\n\ntype Operator =\n | 'equal'\n | 'not-equal'\n | 'contains'\n | 'greater-than'\n | 'less-than'\n | 'empty'\n | 'not-empty'\n | 'is-true'\n | 'is-false'\n | 'in'\n | 'not-in';\n\nexport interface ClientConditionResult {\n screenId: string;\n screenName: string;\n interactionId: string;\n}\n\nexport interface ClientCondition {\n operator: Operator;\n key: string;\n predicate?: string | number;\n met: ClientConditionResult;\n unmet?: ClientConditionResult;\n}\n\nexport type AutoFocusOptions = true | false | 'skipFirstScreen';\n\nexport type ThemeOptions = 'light' | 'dark' | 'os';\n\nexport type Key =\n | 'lastAuth.loginId'\n | 'idpInitiated'\n | 'externalToken'\n | 'abTestingKey';\n\ntype CheckFunction = (ctx: Context, predicate?: string | number) => boolean;\n\nexport type ConditionsMap = {\n [key in Key]: {\n [operator in Operator]?: CheckFunction;\n };\n};\n\nexport interface Context {\n loginId?: string;\n code?: string;\n token?: string;\n abTestingKey?: number;\n}\n\nexport type DescopeUI = Record<string, () => Promise<void>> & {\n componentsThemeManager: Record<string, any>;\n};\n\ntype Font = {\n family: string[];\n label: string;\n url?: string;\n};\n\ntype ThemeTemplate = {\n fonts: {\n font1: Font;\n font2: Font;\n };\n};\n\nexport type FlowConfig = {\n startScreenId?: string;\n startScreenName?: string;\n version: number;\n targetLocales?: string[];\n conditions?: ClientCondition[];\n condition?: ClientCondition;\n fingerprintEnabled?: boolean;\n fingerprintKey?: string;\n sdkScripts?: [\n {\n id: string;\n initArgs: Record<string, any>;\n resultKey?: string;\n },\n ];\n};\n\nexport interface ProjectConfiguration {\n componentsVersion: string;\n cssTemplate: {\n dark: ThemeTemplate;\n light: ThemeTemplate;\n };\n flows: {\n [key: string]: FlowConfig; // dynamic key names for flows\n };\n}\n\nexport type FlowStatus = 'loading' | 'error' | 'success' | 'ready' | 'initial';\n"],"names":["Direction"],"mappings":"IA6BYA,GAAZ,SAAYA,GACVA,EAAA,SAAA,WACAA,EAAA,QAAA,SACD,CAHD,CAAYA,IAAAA,EAGX,CAAA"}
package/dist/index.d.ts CHANGED
@@ -6,7 +6,13 @@ type Sdk = ReturnType<typeof createSdk>;
6
6
  type SdkFlowNext = Sdk['flow']['next'];
7
7
  type ComponentsConfig = Record<string, any>;
8
8
  type CssVars = Record<string, any>;
9
- type OmitFirstArg<F> = F extends (x: any, ...args: infer P) => infer R ? (...args: P) => R : never;
9
+ type KeepArgsByIndex<F, Indices extends readonly number[]> = F extends (...args: infer A) => infer R ? (...args: PickArgsByIndex<A, Indices>) => R : never;
10
+ type PickArgsByIndex<All extends readonly any[], Indices extends readonly number[]> = {
11
+ [K in keyof Indices]: Indices[K] extends keyof All ? All[Indices[K]] : never;
12
+ };
13
+ type Project = {
14
+ name: string;
15
+ };
10
16
  declare enum Direction {
11
17
  backward = "backward",
12
18
  forward = "forward"
@@ -23,6 +29,7 @@ interface ScreenState {
23
29
  form?: Record<string, string>;
24
30
  inputs?: Record<string, string>;
25
31
  lastAuth?: LastAuthState;
32
+ project?: Project;
26
33
  totp?: {
27
34
  image?: string;
28
35
  provisionUrl?: string;
@@ -31,6 +38,15 @@ interface ScreenState {
31
38
  image?: string;
32
39
  redirectUrl?: string;
33
40
  };
41
+ clientScripts?: unknown;
42
+ selfProvisionDomains?: unknown;
43
+ user?: unknown;
44
+ sso?: unknown;
45
+ dynamicSelects?: unknown;
46
+ keysInUse?: unknown;
47
+ genericForm?: unknown;
48
+ linkId?: unknown;
49
+ sentTo?: unknown;
34
50
  }
35
51
  type SSOQueryParams = {
36
52
  oidcIdpStateId?: string;
@@ -53,6 +69,7 @@ type FlowState = {
53
69
  baseUrl: string;
54
70
  tenant: string;
55
71
  stepId: string;
72
+ stepName: string;
56
73
  executionId: string;
57
74
  action: string;
58
75
  redirectTo: string;
@@ -79,6 +96,8 @@ type FlowState = {
79
96
  } & SSOQueryParams;
80
97
  type StepState = {
81
98
  screenState: ScreenState;
99
+ screenId: string;
100
+ stepName: string;
82
101
  htmlFilename: string;
83
102
  htmlLocaleFilename: string;
84
103
  next: NextFn;
@@ -86,11 +105,18 @@ type StepState = {
86
105
  samlIdpUsername: string;
87
106
  openInNewTabUrl?: string;
88
107
  } & OIDCOptions;
89
- type NextFn = OmitFirstArg<OmitFirstArg<SdkFlowNext>>;
108
+ type CustomScreenState = Omit<ScreenState, 'cssVars' | 'componentsConfig' | 'inputs'> & {
109
+ error?: {
110
+ text: ScreenState['errorText'];
111
+ type: ScreenState['errorType'];
112
+ };
113
+ };
114
+ type NextFn = KeepArgsByIndex<SdkFlowNext, [2, 5]>;
90
115
  type FlowStateUpdateFn = (state: FlowState) => void;
91
116
  type Operator = 'equal' | 'not-equal' | 'contains' | 'greater-than' | 'less-than' | 'empty' | 'not-empty' | 'is-true' | 'is-false' | 'in' | 'not-in';
92
117
  interface ClientConditionResult {
93
118
  screenId: string;
119
+ screenName: string;
94
120
  interactionId: string;
95
121
  }
96
122
  interface ClientCondition {
@@ -118,6 +144,7 @@ type ThemeTemplate = {
118
144
  };
119
145
  type FlowConfig = {
120
146
  startScreenId?: string;
147
+ startScreenName?: string;
121
148
  version: number;
122
149
  targetLocales?: string[];
123
150
  conditions?: ClientCondition[];
@@ -152,10 +179,11 @@ type UpdateStateCb<T> = (state: T) => Partial<T>;
152
179
  type IsChanged<T> = Parameters<SubscribeCb<T>>[2];
153
180
  declare class State<T extends StateObject> {
154
181
  #private;
155
- constructor(init?: T, { updateOnlyOnChange }?: {
156
- updateOnlyOnChange?: boolean;
182
+ constructor(init?: T, { forceUpdate }?: {
183
+ forceUpdate?: boolean;
157
184
  });
158
185
  get current(): T;
186
+ set forceUpdate(forceUpdate: boolean);
159
187
  update: (newState: Partial<T> | UpdateStateCb<T>) => void;
160
188
  subscribe(cb: SubscribeCb<T>): string;
161
189
  unsubscribe(token: string): boolean;
@@ -494,9 +522,9 @@ declare const BaseClass: {
494
522
  focus(options?: FocusOptions): void;
495
523
  };
496
524
  } & (new (...params: any[]) => {
497
- "__#27129@#lastBaseUrl"?: string;
498
- "__#27129@#workingBaseUrl"?: string;
499
- "__#27129@#getResourceUrls"(filename: string): (URL & {
525
+ "__#27115@#lastBaseUrl"?: string;
526
+ "__#27115@#workingBaseUrl"?: string;
527
+ "__#27115@#getResourceUrls"(filename: string): (URL & {
500
528
  baseUrl: string;
501
529
  }) | (URL & {
502
530
  baseUrl: string;
@@ -834,39 +862,39 @@ declare const BaseClass: {
834
862
  blur(): void;
835
863
  focus(options?: FocusOptions): void;
836
864
  readonly projectId: string;
837
- "__#27128@#handleError"(attrName: string, newValue: string): void;
865
+ "__#27114@#handleError"(attrName: string, newValue: string): void;
838
866
  init(): Promise<void>;
839
- "__#27127@#observeMappings": {};
867
+ "__#27113@#observeMappings": {};
840
868
  observeAttribute(attrName: string, onAttrChange: (attrName: string, value: string) => void): () => any;
841
869
  observeAttributes(attrs: string[], cb: (attrName: string, value: string) => void): () => void;
842
- "__#27126@#isInit": boolean;
843
- "__#27125@#logger": _descope_sdk_mixins_static_resources_mixin.Logger;
844
- "__#27125@#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);
870
+ "__#27112@#isInit": boolean;
871
+ "__#27111@#logger": _descope_sdk_mixins_static_resources_mixin.Logger;
872
+ "__#27111@#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);
845
873
  get logger(): _descope_sdk_mixins_static_resources_mixin.Logger;
846
874
  set logger(logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>);
847
875
  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);
848
876
  }) & (new (...params: any[]) => {
849
- "__#27140@#globalStyleTag": HTMLStyleElement;
877
+ "__#27126@#globalStyleTag": HTMLStyleElement;
850
878
  readonly theme: _descope_sdk_mixins_static_resources_mixin.ThemeOptions;
851
879
  readonly styleId: string;
852
- "__#27140@#_themeResource": Promise<void | Record<string, any>>;
853
- "__#27140@#fetchTheme"(): Promise<Record<string, any>>;
854
- readonly "__#27140@#themeResource": Promise<void | Record<string, any>>;
855
- "__#27140@#loadGlobalStyle"(): Promise<void>;
856
- "__#27140@#loadComponentsStyle"(): Promise<void>;
857
- "__#27140@#getFontsConfig"(): Promise<Record<string, {
880
+ "__#27126@#_themeResource": Promise<void | Record<string, any>>;
881
+ "__#27126@#fetchTheme"(): Promise<Record<string, any>>;
882
+ readonly "__#27126@#themeResource": Promise<void | Record<string, any>>;
883
+ "__#27126@#loadGlobalStyle"(): Promise<void>;
884
+ "__#27126@#loadComponentsStyle"(): Promise<void>;
885
+ "__#27126@#getFontsConfig"(): Promise<Record<string, {
858
886
  url?: string;
859
887
  }>>;
860
- "__#27140@#loadFonts"(): Promise<void>;
861
- "__#27140@#applyTheme"(): Promise<void>;
862
- "__#27140@#onThemeChange": () => void;
863
- "__#27140@#loadTheme"(): void;
864
- "__#27140@#toggleOsThemeChangeListener": (listen: boolean) => void;
888
+ "__#27126@#loadFonts"(): Promise<void>;
889
+ "__#27126@#applyTheme"(): Promise<void>;
890
+ "__#27126@#onThemeChange": () => void;
891
+ "__#27126@#loadTheme"(): void;
892
+ "__#27126@#toggleOsThemeChangeListener": (listen: boolean) => void;
865
893
  init(): Promise<void>;
866
- "__#27127@#observeMappings": {};
894
+ "__#27113@#observeMappings": {};
867
895
  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);
868
896
  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);
869
- "__#27126@#isInit": boolean;
897
+ "__#27112@#isInit": boolean;
870
898
  connectedCallback: (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void) & (() => void);
871
899
  accessKey: string;
872
900
  readonly accessKeyLabel: string;
@@ -1193,24 +1221,24 @@ declare const BaseClass: {
1193
1221
  tabIndex: number;
1194
1222
  blur(): void;
1195
1223
  focus(options?: FocusOptions): void;
1196
- "__#27125@#logger": _descope_sdk_mixins_static_resources_mixin.Logger;
1197
- "__#27125@#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);
1224
+ "__#27111@#logger": _descope_sdk_mixins_static_resources_mixin.Logger;
1225
+ "__#27111@#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);
1198
1226
  get logger(): _descope_sdk_mixins_static_resources_mixin.Logger;
1199
1227
  set logger(logger: Partial<_descope_sdk_mixins_static_resources_mixin.Logger>);
1200
1228
  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);
1201
1229
  contentRootElement: HTMLElement;
1202
1230
  rootElement: HTMLElement;
1203
1231
  readonly config: Promise<_descope_sdk_mixins_static_resources_mixin.Config>;
1204
- "__#27131@#configCacheClear": (() => void) & (() => void);
1205
- "__#27131@#_configResource": Promise<_descope_sdk_mixins_static_resources_mixin.Config>;
1206
- "__#27131@#fetchConfig": (() => Promise<_descope_sdk_mixins_static_resources_mixin.Config>) & (() => Promise<_descope_sdk_mixins_static_resources_mixin.Config>);
1207
- "__#27130@#callbacks": Map<string, () => void> & Map<string, () => void>;
1232
+ "__#27117@#configCacheClear": (() => void) & (() => void);
1233
+ "__#27117@#_configResource": Promise<_descope_sdk_mixins_static_resources_mixin.Config>;
1234
+ "__#27117@#fetchConfig": (() => Promise<_descope_sdk_mixins_static_resources_mixin.Config>) & (() => Promise<_descope_sdk_mixins_static_resources_mixin.Config>);
1235
+ "__#27116@#callbacks": Map<string, () => void> & Map<string, () => void>;
1208
1236
  onReset: ((sectionId: string, callback: () => void | Promise<void>) => () => void) & ((sectionId: string, callback: () => void | Promise<void>) => () => void);
1209
1237
  reset: ((...sectionIds: string[]) => Promise<void>) & ((...sectionIds: string[]) => Promise<void>);
1210
- "__#27128@#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);
1211
- "__#27129@#lastBaseUrl"?: string;
1212
- "__#27129@#workingBaseUrl"?: string;
1213
- "__#27129@#getResourceUrls": ((filename: string) => (URL & {
1238
+ "__#27114@#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);
1239
+ "__#27115@#lastBaseUrl"?: string;
1240
+ "__#27115@#workingBaseUrl"?: string;
1241
+ "__#27115@#getResourceUrls": ((filename: string) => (URL & {
1214
1242
  baseUrl: string;
1215
1243
  }) | (URL & {
1216
1244
  baseUrl: string;
@@ -1236,18 +1264,18 @@ declare const BaseClass: {
1236
1264
  readonly baseStaticUrl: string;
1237
1265
  readonly baseUrl: string;
1238
1266
  readonly projectId: string;
1239
- "__#27134@#errorCbsSym": symbol;
1240
- "__#27134@#loadCbsSym": symbol;
1241
- "__#27134@#getComponentsVersion"(): Promise<string>;
1242
- "__#27134@#exposeAlternateEvents"(scriptEle: HTMLScriptElement): void;
1243
- "__#27134@#handleFallbackScript"(errorCbs: ((error: string) => void)[], loadCbs: (() => void)[], elemId: string, scriptUrl: string): Promise<void>;
1244
- "__#27134@#registerEvents"(scriptEle: HTMLScriptElement): void;
1245
- "__#27134@#getDescopeUiLoadingScript"(): Promise<HTMLElement>;
1246
- "__#27134@#descopeUi": Promise<any>;
1267
+ "__#27120@#errorCbsSym": symbol;
1268
+ "__#27120@#loadCbsSym": symbol;
1269
+ "__#27120@#getComponentsVersion"(): Promise<string>;
1270
+ "__#27120@#exposeAlternateEvents"(scriptEle: HTMLScriptElement): void;
1271
+ "__#27120@#handleFallbackScript"(errorCbs: ((error: string) => void)[], loadCbs: (() => void)[], elemId: string, scriptUrl: string): Promise<void>;
1272
+ "__#27120@#registerEvents"(scriptEle: HTMLScriptElement): void;
1273
+ "__#27120@#getDescopeUiLoadingScript"(): Promise<HTMLElement>;
1274
+ "__#27120@#descopeUi": Promise<any>;
1247
1275
  readonly descopeUi: Promise<any>;
1248
- "__#27134@#loadDescopeUiComponent"(componentName: string): Promise<any>;
1276
+ "__#27120@#loadDescopeUiComponent"(componentName: string): Promise<any>;
1249
1277
  loadDescopeUiComponents(templateOrComponentNames: string[] | HTMLTemplateElement): Promise<any[]>;
1250
- "__#27134@#getDescopeUi"(): Promise<unknown>;
1278
+ "__#27120@#getDescopeUi"(): Promise<unknown>;
1251
1279
  readonly baseCdnUrl: string;
1252
1280
  }) & {
1253
1281
  new (): HTMLElement;
@@ -1269,6 +1297,8 @@ declare class BaseDescopeWc extends BaseClass {
1269
1297
  isLoading: boolean;
1270
1298
  }>;
1271
1299
  rootElement: HTMLDivElement;
1300
+ contentRootElement: HTMLDivElement;
1301
+ slotElement: HTMLSlotElement;
1272
1302
  sdk: ReturnType<typeof createSdk>;
1273
1303
  descopeUI: Promise<DescopeUI>;
1274
1304
  constructor(updateExecState: FlowStateUpdateFn);
@@ -1316,6 +1346,7 @@ declare class DescopeWc extends BaseDescopeWc {
1316
1346
  static get sdkConfigOverrides(): Partial<SdkConfig>;
1317
1347
  flowState: State<FlowState>;
1318
1348
  stepState: State<StepState>;
1349
+ onScreenUpdate: (screenName: string, context: CustomScreenState, next: StepState['next'], ref: typeof this) => boolean | Promise<boolean>;
1319
1350
  constructor();
1320
1351
  bridgeVersion: number;
1321
1352
  nativeComplete: (input: Record<string, any>) => Promise<void>;
@@ -1330,6 +1361,7 @@ declare class DescopeWc extends BaseDescopeWc {
1330
1361
  } | undefined;
1331
1362
  loadSdkScripts(): Promise<void>;
1332
1363
  init(): Promise<void>;
1364
+ _init(): Promise<void>;
1333
1365
  disconnectedCallback(): void;
1334
1366
  getHtmlFilenameWithLocale(locale: string, screenId: string): Promise<string>;
1335
1367
  getPageContent(htmlFilename: string, htmlLocaleFilename: string): Promise<string>;