@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.
- package/README.md +64 -13
- package/dist/cjs/constants/content.js +1 -0
- package/dist/cjs/constants/content.js.map +1 -0
- package/dist/cjs/constants/customScreens.js +2 -0
- package/dist/cjs/constants/customScreens.js.map +1 -0
- package/dist/cjs/constants/general.js +1 -0
- package/dist/cjs/constants/general.js.map +1 -0
- package/dist/cjs/constants/index.js +1 -0
- package/dist/cjs/constants/index.js.map +1 -0
- package/dist/cjs/constants/uiComponents.js +1 -0
- package/dist/cjs/constants/uiComponents.js.map +1 -0
- package/dist/cjs/debugger-wc.js +1 -0
- package/dist/cjs/debugger-wc.js.map +1 -0
- package/dist/cjs/descope-wc/BaseDescopeWc.js +2 -1
- package/dist/cjs/descope-wc/BaseDescopeWc.js.map +1 -0
- package/dist/cjs/descope-wc/DescopeWc.js +2 -1
- package/dist/cjs/descope-wc/DescopeWc.js.map +1 -0
- package/dist/cjs/descope-wc/index.js +1 -0
- package/dist/cjs/descope-wc/index.js.map +1 -0
- package/dist/cjs/descope-wc/initTemplate.js +2 -1
- package/dist/cjs/descope-wc/initTemplate.js.map +1 -0
- package/dist/cjs/descope-wc/sdkScripts/fingerprint.js +1 -0
- package/dist/cjs/descope-wc/sdkScripts/fingerprint.js.map +1 -0
- package/dist/cjs/descope-wc/sdkScripts/fingerprintDescope.js +1 -0
- package/dist/cjs/descope-wc/sdkScripts/fingerprintDescope.js.map +1 -0
- package/dist/cjs/descope-wc/sdkScripts/forter.js +1 -0
- package/dist/cjs/descope-wc/sdkScripts/forter.js.map +1 -0
- package/dist/cjs/descope-wc/sdkScripts/index.js +1 -0
- package/dist/cjs/descope-wc/sdkScripts/index.js.map +1 -0
- package/dist/cjs/helpers/abTestingKey.js +1 -0
- package/dist/cjs/helpers/abTestingKey.js.map +1 -0
- package/dist/cjs/helpers/conditions.js +2 -1
- package/dist/cjs/helpers/conditions.js.map +1 -0
- package/dist/cjs/helpers/flowInputs.js +1 -0
- package/dist/cjs/helpers/flowInputs.js.map +1 -0
- package/dist/cjs/helpers/helpers.js +2 -1
- package/dist/cjs/helpers/helpers.js.map +1 -0
- package/dist/cjs/helpers/lastAuth.js +1 -0
- package/dist/cjs/helpers/lastAuth.js.map +1 -0
- package/dist/cjs/helpers/positionHelpers.js +1 -0
- package/dist/cjs/helpers/positionHelpers.js.map +1 -0
- package/dist/cjs/helpers/state.js +2 -1
- package/dist/cjs/helpers/state.js.map +1 -0
- package/dist/cjs/helpers/templates.js +1 -0
- package/dist/cjs/helpers/templates.js.map +1 -0
- package/dist/cjs/helpers/webauthn.js +1 -0
- package/dist/cjs/helpers/webauthn.js.map +1 -0
- package/dist/cjs/mixins/formMountMixin.js +1 -0
- package/dist/cjs/mixins/formMountMixin.js.map +1 -0
- package/dist/cjs/types.js +1 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/esm/constants/content.js +1 -0
- package/dist/esm/constants/content.js.map +1 -0
- package/dist/esm/constants/customScreens.js +2 -0
- package/dist/esm/constants/customScreens.js.map +1 -0
- package/dist/esm/constants/general.js +1 -0
- package/dist/esm/constants/general.js.map +1 -0
- package/dist/esm/constants/index.js +1 -0
- package/dist/esm/constants/index.js.map +1 -0
- package/dist/esm/constants/uiComponents.js +1 -0
- package/dist/esm/constants/uiComponents.js.map +1 -0
- package/dist/esm/debugger-wc.js +1 -0
- package/dist/esm/debugger-wc.js.map +1 -0
- package/dist/esm/descope-wc/BaseDescopeWc.js +2 -1
- package/dist/esm/descope-wc/BaseDescopeWc.js.map +1 -0
- package/dist/esm/descope-wc/DescopeWc.js +2 -1
- package/dist/esm/descope-wc/DescopeWc.js.map +1 -0
- package/dist/esm/descope-wc/index.js +1 -0
- package/dist/esm/descope-wc/index.js.map +1 -0
- package/dist/esm/descope-wc/initTemplate.js +2 -1
- package/dist/esm/descope-wc/initTemplate.js.map +1 -0
- package/dist/esm/descope-wc/sdkScripts/fingerprint.js +1 -0
- package/dist/esm/descope-wc/sdkScripts/fingerprint.js.map +1 -0
- package/dist/esm/descope-wc/sdkScripts/fingerprintDescope.js +1 -0
- package/dist/esm/descope-wc/sdkScripts/fingerprintDescope.js.map +1 -0
- package/dist/esm/descope-wc/sdkScripts/forter.js +1 -0
- package/dist/esm/descope-wc/sdkScripts/forter.js.map +1 -0
- package/dist/esm/descope-wc/sdkScripts/index.js +1 -0
- package/dist/esm/descope-wc/sdkScripts/index.js.map +1 -0
- package/dist/esm/helpers/abTestingKey.js +1 -0
- package/dist/esm/helpers/abTestingKey.js.map +1 -0
- package/dist/esm/helpers/conditions.js +2 -1
- package/dist/esm/helpers/conditions.js.map +1 -0
- package/dist/esm/helpers/flowInputs.js +1 -0
- package/dist/esm/helpers/flowInputs.js.map +1 -0
- package/dist/esm/helpers/helpers.js +2 -1
- package/dist/esm/helpers/helpers.js.map +1 -0
- package/dist/esm/helpers/lastAuth.js +1 -0
- package/dist/esm/helpers/lastAuth.js.map +1 -0
- package/dist/esm/helpers/positionHelpers.js +1 -0
- package/dist/esm/helpers/positionHelpers.js.map +1 -0
- package/dist/esm/helpers/state.js +2 -1
- package/dist/esm/helpers/state.js.map +1 -0
- package/dist/esm/helpers/templates.js +1 -0
- package/dist/esm/helpers/templates.js.map +1 -0
- package/dist/esm/helpers/webauthn.js +1 -0
- package/dist/esm/helpers/webauthn.js.map +1 -0
- package/dist/esm/mixins/formMountMixin.js +1 -0
- package/dist/esm/mixins/formMountMixin.js.map +1 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/index.d.ts +78 -46
- package/dist/index.js +2 -2
- 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
|
@@ -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
|
|
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
|
|
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, {
|
|
156
|
-
|
|
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
|
-
"__#
|
|
498
|
-
"__#
|
|
499
|
-
"__#
|
|
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
|
-
"__#
|
|
865
|
+
"__#27114@#handleError"(attrName: string, newValue: string): void;
|
|
838
866
|
init(): Promise<void>;
|
|
839
|
-
"__#
|
|
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
|
-
"__#
|
|
843
|
-
"__#
|
|
844
|
-
"__#
|
|
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
|
-
"__#
|
|
877
|
+
"__#27126@#globalStyleTag": HTMLStyleElement;
|
|
850
878
|
readonly theme: _descope_sdk_mixins_static_resources_mixin.ThemeOptions;
|
|
851
879
|
readonly styleId: string;
|
|
852
|
-
"__#
|
|
853
|
-
"__#
|
|
854
|
-
readonly "__#
|
|
855
|
-
"__#
|
|
856
|
-
"__#
|
|
857
|
-
"__#
|
|
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
|
-
"__#
|
|
861
|
-
"__#
|
|
862
|
-
"__#
|
|
863
|
-
"__#
|
|
864
|
-
"__#
|
|
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
|
-
"__#
|
|
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
|
-
"__#
|
|
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
|
-
"__#
|
|
1197
|
-
"__#
|
|
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
|
-
"__#
|
|
1205
|
-
"__#
|
|
1206
|
-
"__#
|
|
1207
|
-
"__#
|
|
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
|
-
"__#
|
|
1211
|
-
"__#
|
|
1212
|
-
"__#
|
|
1213
|
-
"__#
|
|
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
|
-
"__#
|
|
1240
|
-
"__#
|
|
1241
|
-
"__#
|
|
1242
|
-
"__#
|
|
1243
|
-
"__#
|
|
1244
|
-
"__#
|
|
1245
|
-
"__#
|
|
1246
|
-
"__#
|
|
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
|
-
"__#
|
|
1276
|
+
"__#27120@#loadDescopeUiComponent"(componentName: string): Promise<any>;
|
|
1249
1277
|
loadDescopeUiComponents(templateOrComponentNames: string[] | HTMLTemplateElement): Promise<any[]>;
|
|
1250
|
-
"__#
|
|
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>;
|