@descope/react-sdk 2.8.1 → 2.10.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 +5 -0
- package/dist/cjs/components/Descope.js +1 -1
- package/dist/cjs/components/Descope.js.map +1 -1
- package/dist/cjs/constants.js +1 -1
- package/dist/cjs/flows.js +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/sdk.js +1 -1
- package/dist/cjs/sdk.js.map +1 -1
- package/dist/esm/components/Descope.js +1 -1
- package/dist/esm/components/Descope.js.map +1 -1
- package/dist/esm/constants.js +1 -1
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/flows.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/sdk.js +1 -1
- package/dist/esm/sdk.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.umd.js +2 -2
- package/dist/index.umd.js.map +1 -1
- package/dist/types/flows.d.ts +1 -1
- package/dist/types/sdk.d.ts +7 -0
- package/dist/types/types.d.ts +2 -0
- package/package.json +11 -11
package/README.md
CHANGED
|
@@ -160,7 +160,11 @@ const App = () => {
|
|
|
160
160
|
|
|
161
161
|
// Use a custom style name or keep empty to use the default style.
|
|
162
162
|
// styleId="my-awesome-style"
|
|
163
|
+
// Set a CSP nonce that will be used for style and script tags
|
|
164
|
+
//nonce="rAnd0m"
|
|
163
165
|
|
|
166
|
+
// Clear screen error message on user input
|
|
167
|
+
//dismissScreenErrorOnInput={true}
|
|
164
168
|
/>
|
|
165
169
|
)
|
|
166
170
|
}
|
|
@@ -392,6 +396,7 @@ You can also use the following functions to assist with various actions managing
|
|
|
392
396
|
`isRefreshTokenExpired(token = getRefreshToken())` - Check whether the current refresh token is expired. Provide a refresh token if is not persisted (see [token persistence](#token-persistence)).
|
|
393
397
|
`getJwtRoles(token = getSessionToken(), tenant = '')` - Get current roles from an existing session token. Provide tenant id for specific tenant roles.
|
|
394
398
|
`getJwtPermissions(token = getSessionToken(), tenant = '')` - Fet current permissions from an existing session token. Provide tenant id for specific tenant permissions.
|
|
399
|
+
`getCurrentTenant(token = getSessionToken())` - Get current tenant id from an existing session token (from the `dct` claim).
|
|
395
400
|
|
|
396
401
|
### Refresh token lifecycle
|
|
397
402
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("../constants.js"),r=require("../hooks/Context.js"),s=require("../sdk.js"),n=require("./withPropsMapping/index.js");function a(e){return e&&e.__esModule?e:{default:e}}var o=a(e);const l=e.lazy((async()=>(((null===customElements||void 0===customElements?void 0:customElements.get("descope-wc"))||await import("@descope/web-component").then((e=>e.default))).sdkConfigOverrides={baseHeaders:t.baseHeaders,persistTokens:!1,hooks:{get beforeRequest(){return s.getGlobalSdk().httpClient.hooks.beforeRequest},set beforeRequest(e){}}},{default:n.default(o.default.forwardRef(((e,t)=>o.default.createElement("descope-wc",Object.assign({ref:t},e)))))}))),u=o.default.forwardRef((({flowId:t,onSuccess:s,onError:n,onReady:a,logger:u,tenant:d,theme:c,
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("../constants.js"),r=require("../hooks/Context.js"),s=require("../sdk.js"),n=require("./withPropsMapping/index.js");function a(e){return e&&e.__esModule?e:{default:e}}var o=a(e);const l=e.lazy((async()=>(((null===customElements||void 0===customElements?void 0:customElements.get("descope-wc"))||await import("@descope/web-component").then((e=>e.default))).sdkConfigOverrides={baseHeaders:t.baseHeaders,persistTokens:!1,hooks:{get beforeRequest(){return s.getGlobalSdk().httpClient.hooks.beforeRequest},set beforeRequest(e){}}},{default:n.default(o.default.forwardRef(((e,t)=>o.default.createElement("descope-wc",Object.assign({ref:t},e)))))}))),u=o.default.forwardRef((({flowId:t,onSuccess:s,onError:n,onReady:a,logger:u,tenant:d,theme:c,nonce:i,locale:f,debug:m,client:p,form:v,telemetryKey:E,redirectUrl:b,autoFocus:h,validateOnBlur:L,restartOnError:g,errorTransformer:k,styleId:y,onScreenUpdate:U,dismissScreenErrorOnInput:w,children:C},S)=>{const[q,O]=e.useState(null);e.useImperativeHandle(S,(()=>q));const{projectId:j,baseUrl:I,baseStaticUrl:R,baseCdnUrl:x,storeLastAuthenticatedUser:A,keepLastAuthenticatedUserAfterLogout:_,refreshCookieName:H,sdk:M}=o.default.useContext(r.default),N=e.useCallback((async e=>{await M.httpClient.hooks.afterRequest({},new Response(JSON.stringify(e.detail))),s&&s(e)}),[s]);return e.useEffect((()=>{const e=q;return null==e||e.addEventListener("success",N),n&&(null==e||e.addEventListener("error",n)),a&&(null==e||e.addEventListener("ready",a)),()=>{n&&(null==e||e.removeEventListener("error",n)),a&&(null==e||e.removeEventListener("ready",a)),null==e||e.removeEventListener("success",N)}}),[q,n,N]),e.useEffect((()=>{const e=q;return null==e||e.addEventListener("success",N),()=>{null==e||e.removeEventListener("success",N)}}),[q,N]),e.useEffect((()=>{const e=q;return n&&(null==e||e.addEventListener("error",n)),()=>{n&&(null==e||e.removeEventListener("error",n))}}),[q,n]),e.useEffect((()=>{const e=q;return a&&(null==e||e.addEventListener("ready",a)),()=>{a&&(null==e||e.removeEventListener("error",a))}}),[q,a]),o.default.createElement("form",null,o.default.createElement(e.Suspense,{fallback:null},o.default.createElement(l,{projectId:j,flowId:t,baseUrl:I,baseStaticUrl:R,baseCdnUrl:x,ref:O,telemetryKey:E,redirectUrl:b,autoFocus:h,styleId:y,validateOnBlur:L,restartOnError:g,keepLastAuthenticatedUserAfterLogout:_,tenant:d,"theme.attr":c,"nonce.attr":i,"locale.attr":f,"form.attr":v,"client.attr":p,"debug.attr":m,"store-last-authenticated-user.attr":A,"refreshCookieName.attr":H,"dismiss-screen-error-on-input.attr":w,"errorTransformer.prop":k,"logger.prop":u,"onScreenUpdate.prop":U},C)))}));exports.default=u;
|
|
2
2
|
//# sourceMappingURL=Descope.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Descope.js","sources":["../../../src/components/Descope.tsx"],"sourcesContent":["import React, {\n lazy,\n Suspense,\n useCallback,\n useEffect,\n useImperativeHandle,\n useState,\n} from 'react';\nimport { baseHeaders } from '../constants';\nimport Context from '../hooks/Context';\nimport { DescopeProps } from '../types';\nimport { getGlobalSdk } from '../sdk';\nimport withPropsMapping from './withPropsMapping';\n\n// web-component code uses browser API, but can be used in SSR apps, hence the lazy loading\nconst DescopeWC = lazy(async () => {\n const WebComponent: any =\n customElements?.get('descope-wc') ||\n (await import('@descope/web-component').then((module) => module.default));\n\n WebComponent.sdkConfigOverrides = {\n // Overrides the web-component's base headers to indicate usage via the React SDK\n baseHeaders,\n // Disables token persistence within the web-component to delegate token management\n // to the global SDK hooks. This ensures token handling aligns with the SDK's configuration,\n // and web-component requests leverage the global SDK's beforeRequest hooks for consistency\n persistTokens: false,\n hooks: {\n get beforeRequest() {\n // Retrieves the beforeRequest hook from the global SDK, which is initialized\n // within the AuthProvider using the desired configuration. This approach ensures\n // the web-component utilizes the same beforeRequest hooks as the global SDK\n return getGlobalSdk().httpClient.hooks.beforeRequest;\n },\n set beforeRequest(_) {\n // The empty setter prevents runtime errors when attempts are made to assign a value to 'beforeRequest'.\n // JavaScript objects default to having both getters and setters\n },\n },\n };\n\n return {\n default: withPropsMapping(\n React.forwardRef<HTMLElement>((props, ref) => (\n\t<descope-wc ref={ref} {...props} />\n )),\n ),\n };\n});\n\nconst Descope = React.forwardRef<HTMLElement, DescopeProps>(\n (\n {\n flowId,\n onSuccess,\n onError,\n onReady,\n logger,\n tenant,\n theme,\n locale,\n debug,\n client,\n form,\n telemetryKey,\n redirectUrl,\n autoFocus,\n validateOnBlur,\n restartOnError,\n errorTransformer,\n styleId,\n onScreenUpdate,\n children,\n },\n ref,\n ) => {\n const [innerRef, setInnerRef] = useState(null);\n\n useImperativeHandle(ref, () => innerRef);\n\n const {\n projectId,\n baseUrl,\n baseStaticUrl,\n baseCdnUrl,\n storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout,\n refreshCookieName,\n sdk,\n } = React.useContext(Context);\n\n const handleSuccess = useCallback(\n async (e: CustomEvent) => {\n // In order to make sure all the after-hooks are running with the success response\n // we are generating a fake response with the success data and calling the http client after hook fn with it\n await sdk.httpClient.hooks.afterRequest(\n {} as any,\n new Response(JSON.stringify(e.detail)),\n );\n if (onSuccess) {\n onSuccess(e);\n }\n },\n [onSuccess],\n );\n\n useEffect(() => {\n const ele = innerRef;\n ele?.addEventListener('success', handleSuccess);\n if (onError) ele?.addEventListener('error', onError);\n if (onReady) ele?.addEventListener('ready', onReady);\n\n return () => {\n if (onError) ele?.removeEventListener('error', onError);\n if (onReady) ele?.removeEventListener('ready', onReady);\n\n ele?.removeEventListener('success', handleSuccess);\n };\n }, [innerRef, onError, handleSuccess]);\n\n // Success event\n useEffect(() => {\n const ele = innerRef;\n ele?.addEventListener('success', handleSuccess);\n return () => {\n ele?.removeEventListener('success', handleSuccess);\n };\n }, [innerRef, handleSuccess]);\n\n // Error event\n useEffect(() => {\n const ele = innerRef;\n if (onError) ele?.addEventListener('error', onError);\n\n return () => {\n if (onError) ele?.removeEventListener('error', onError);\n };\n }, [innerRef, onError]);\n\n // Ready event\n useEffect(() => {\n const ele = innerRef;\n if (onReady) ele?.addEventListener('ready', onReady);\n\n return () => {\n if (onReady) ele?.removeEventListener('error', onReady);\n };\n }, [innerRef, onReady]);\n\n return (\n /**\n * in order to avoid redundant remounting of the WC, we are wrapping it with a form element\n * this workaround is done in order to support webauthn passkeys\n * it can be removed once this issue will be solved\n * https://bugs.chromium.org/p/chromium/issues/detail?id=1404106#c2\n */\n\t<form>\n\t\t<Suspense fallback={null}>\n\t\t\t<DescopeWC\n projectId={projectId}\n flowId={flowId}\n baseUrl={baseUrl}\n baseStaticUrl={baseStaticUrl}\n baseCdnUrl={baseCdnUrl}\n ref={setInnerRef}\n telemetryKey={telemetryKey}\n redirectUrl={redirectUrl}\n autoFocus={autoFocus}\n styleId={styleId}\n validateOnBlur={validateOnBlur}\n restartOnError={restartOnError}\n keepLastAuthenticatedUserAfterLogout={\n keepLastAuthenticatedUserAfterLogout\n }\n tenant={tenant}\n {...{\n // attributes\n 'theme.attr': theme,\n 'locale.attr': locale,\n 'form.attr': form,\n 'client.attr': client,\n 'debug.attr': debug,\n 'store-last-authenticated-user.attr': storeLastAuthenticatedUser,\n 'refreshCookieName.attr': refreshCookieName,\n // props\n 'errorTransformer.prop': errorTransformer,\n 'logger.prop': logger,\n 'onScreenUpdate.prop': onScreenUpdate,\n }}\n >\n\t\t\t\t{children}\n\t\t\t</DescopeWC>\n\t\t</Suspense>\n\t</form>\n );\n },\n);\n\nexport default Descope;\n"],"names":["DescopeWC","lazy","async","customElements","get","import","then","module","default","sdkConfigOverrides","baseHeaders","persistTokens","hooks","beforeRequest","getGlobalSdk","httpClient","_","withPropsMapping","React","forwardRef","props","ref","createElement","Object","assign","Descope","flowId","onSuccess","onError","onReady","logger","tenant","theme","locale","debug","client","form","telemetryKey","redirectUrl","autoFocus","validateOnBlur","restartOnError","errorTransformer","styleId","onScreenUpdate","children","innerRef","setInnerRef","useState","useImperativeHandle","projectId","baseUrl","baseStaticUrl","baseCdnUrl","storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout","refreshCookieName","sdk","useContext","Context","handleSuccess","useCallback","e","afterRequest","Response","JSON","stringify","detail","useEffect","ele","addEventListener","removeEventListener","Suspense","fallback"],"mappings":"uRAeA,MAAMA,EAAYC,EAAIA,MAACC,YAEnB,OAAAC,qBAAA,IAAAA,oBAAA,EAAAA,eAAgBC,IAAI,sBACbC,OAAO,0BAA0BC,MAAMC,GAAWA,EAAOC,WAErDC,mBAAqB,aAEhCC,EAAWA,YAIXC,eAAe,EACfC,MAAO,CACL,iBAAIC,GAIF,OAAOC,iBAAeC,WAAWH,MAAMC,aACxC,EACD,iBAAIA,CAAcG,GAGjB,IAIE,CACLR,QAASS,EAAgBT,QACvBU,UAAMC,YAAwB,CAACC,EAAOC,IAC3CH,EAAAA,QAAYI,cAAA,aAAAC,OAAAC,OAAA,CAAAH,IAAKA,GAASD,WAMrBK,EAAUP,
|
|
1
|
+
{"version":3,"file":"Descope.js","sources":["../../../src/components/Descope.tsx"],"sourcesContent":["import React, {\n lazy,\n Suspense,\n useCallback,\n useEffect,\n useImperativeHandle,\n useState,\n} from 'react';\nimport { baseHeaders } from '../constants';\nimport Context from '../hooks/Context';\nimport { DescopeProps } from '../types';\nimport { getGlobalSdk } from '../sdk';\nimport withPropsMapping from './withPropsMapping';\n\n// web-component code uses browser API, but can be used in SSR apps, hence the lazy loading\nconst DescopeWC = lazy(async () => {\n const WebComponent: any =\n customElements?.get('descope-wc') ||\n (await import('@descope/web-component').then((module) => module.default));\n\n WebComponent.sdkConfigOverrides = {\n // Overrides the web-component's base headers to indicate usage via the React SDK\n baseHeaders,\n // Disables token persistence within the web-component to delegate token management\n // to the global SDK hooks. This ensures token handling aligns with the SDK's configuration,\n // and web-component requests leverage the global SDK's beforeRequest hooks for consistency\n persistTokens: false,\n hooks: {\n get beforeRequest() {\n // Retrieves the beforeRequest hook from the global SDK, which is initialized\n // within the AuthProvider using the desired configuration. This approach ensures\n // the web-component utilizes the same beforeRequest hooks as the global SDK\n return getGlobalSdk().httpClient.hooks.beforeRequest;\n },\n set beforeRequest(_) {\n // The empty setter prevents runtime errors when attempts are made to assign a value to 'beforeRequest'.\n // JavaScript objects default to having both getters and setters\n },\n },\n };\n\n return {\n default: withPropsMapping(\n React.forwardRef<HTMLElement>((props, ref) => (\n\t<descope-wc ref={ref} {...props} />\n )),\n ),\n };\n});\n\nconst Descope = React.forwardRef<HTMLElement, DescopeProps>(\n (\n {\n flowId,\n onSuccess,\n onError,\n onReady,\n logger,\n tenant,\n theme,\n nonce,\n locale,\n debug,\n client,\n form,\n telemetryKey,\n redirectUrl,\n autoFocus,\n validateOnBlur,\n restartOnError,\n errorTransformer,\n styleId,\n onScreenUpdate,\n dismissScreenErrorOnInput,\n children,\n },\n ref,\n ) => {\n const [innerRef, setInnerRef] = useState(null);\n\n useImperativeHandle(ref, () => innerRef);\n\n const {\n projectId,\n baseUrl,\n baseStaticUrl,\n baseCdnUrl,\n storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout,\n refreshCookieName,\n sdk,\n } = React.useContext(Context);\n\n const handleSuccess = useCallback(\n async (e: CustomEvent) => {\n // In order to make sure all the after-hooks are running with the success response\n // we are generating a fake response with the success data and calling the http client after hook fn with it\n await sdk.httpClient.hooks.afterRequest(\n {} as any,\n new Response(JSON.stringify(e.detail)),\n );\n if (onSuccess) {\n onSuccess(e);\n }\n },\n [onSuccess],\n );\n\n useEffect(() => {\n const ele = innerRef;\n ele?.addEventListener('success', handleSuccess);\n if (onError) ele?.addEventListener('error', onError);\n if (onReady) ele?.addEventListener('ready', onReady);\n\n return () => {\n if (onError) ele?.removeEventListener('error', onError);\n if (onReady) ele?.removeEventListener('ready', onReady);\n\n ele?.removeEventListener('success', handleSuccess);\n };\n }, [innerRef, onError, handleSuccess]);\n\n // Success event\n useEffect(() => {\n const ele = innerRef;\n ele?.addEventListener('success', handleSuccess);\n return () => {\n ele?.removeEventListener('success', handleSuccess);\n };\n }, [innerRef, handleSuccess]);\n\n // Error event\n useEffect(() => {\n const ele = innerRef;\n if (onError) ele?.addEventListener('error', onError);\n\n return () => {\n if (onError) ele?.removeEventListener('error', onError);\n };\n }, [innerRef, onError]);\n\n // Ready event\n useEffect(() => {\n const ele = innerRef;\n if (onReady) ele?.addEventListener('ready', onReady);\n\n return () => {\n if (onReady) ele?.removeEventListener('error', onReady);\n };\n }, [innerRef, onReady]);\n\n return (\n /**\n * in order to avoid redundant remounting of the WC, we are wrapping it with a form element\n * this workaround is done in order to support webauthn passkeys\n * it can be removed once this issue will be solved\n * https://bugs.chromium.org/p/chromium/issues/detail?id=1404106#c2\n */\n\t<form>\n\t\t<Suspense fallback={null}>\n\t\t\t<DescopeWC\n projectId={projectId}\n flowId={flowId}\n baseUrl={baseUrl}\n baseStaticUrl={baseStaticUrl}\n baseCdnUrl={baseCdnUrl}\n ref={setInnerRef}\n telemetryKey={telemetryKey}\n redirectUrl={redirectUrl}\n autoFocus={autoFocus}\n styleId={styleId}\n validateOnBlur={validateOnBlur}\n restartOnError={restartOnError}\n keepLastAuthenticatedUserAfterLogout={\n keepLastAuthenticatedUserAfterLogout\n }\n tenant={tenant}\n {...{\n // attributes\n 'theme.attr': theme,\n 'nonce.attr': nonce,\n 'locale.attr': locale,\n 'form.attr': form,\n 'client.attr': client,\n 'debug.attr': debug,\n 'store-last-authenticated-user.attr': storeLastAuthenticatedUser,\n 'refreshCookieName.attr': refreshCookieName,\n 'dismiss-screen-error-on-input.attr': dismissScreenErrorOnInput,\n // props\n 'errorTransformer.prop': errorTransformer,\n 'logger.prop': logger,\n 'onScreenUpdate.prop': onScreenUpdate,\n }}\n >\n\t\t\t\t{children}\n\t\t\t</DescopeWC>\n\t\t</Suspense>\n\t</form>\n );\n },\n);\n\nexport default Descope;\n"],"names":["DescopeWC","lazy","async","customElements","get","import","then","module","default","sdkConfigOverrides","baseHeaders","persistTokens","hooks","beforeRequest","getGlobalSdk","httpClient","_","withPropsMapping","React","forwardRef","props","ref","createElement","Object","assign","Descope","flowId","onSuccess","onError","onReady","logger","tenant","theme","nonce","locale","debug","client","form","telemetryKey","redirectUrl","autoFocus","validateOnBlur","restartOnError","errorTransformer","styleId","onScreenUpdate","dismissScreenErrorOnInput","children","innerRef","setInnerRef","useState","useImperativeHandle","projectId","baseUrl","baseStaticUrl","baseCdnUrl","storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout","refreshCookieName","sdk","useContext","Context","handleSuccess","useCallback","e","afterRequest","Response","JSON","stringify","detail","useEffect","ele","addEventListener","removeEventListener","Suspense","fallback"],"mappings":"uRAeA,MAAMA,EAAYC,EAAIA,MAACC,YAEnB,OAAAC,qBAAA,IAAAA,oBAAA,EAAAA,eAAgBC,IAAI,sBACbC,OAAO,0BAA0BC,MAAMC,GAAWA,EAAOC,WAErDC,mBAAqB,aAEhCC,EAAWA,YAIXC,eAAe,EACfC,MAAO,CACL,iBAAIC,GAIF,OAAOC,iBAAeC,WAAWH,MAAMC,aACxC,EACD,iBAAIA,CAAcG,GAGjB,IAIE,CACLR,QAASS,EAAgBT,QACvBU,UAAMC,YAAwB,CAACC,EAAOC,IAC3CH,EAAAA,QAAYI,cAAA,aAAAC,OAAAC,OAAA,CAAAH,IAAKA,GAASD,WAMrBK,EAAUP,EAAAA,QAAMC,YACpB,EAEIO,SACAC,YACAC,UACAC,UACAC,SACAC,SACAC,QACAC,QACAC,SACAC,QACAC,SACAC,OACAC,eACAC,cACAC,YACAC,iBACAC,iBACAC,mBACAC,UACAC,iBACAC,4BACAC,YAEF1B,KAEA,MAAO2B,EAAUC,GAAeC,EAAQA,SAAC,MAEzCC,sBAAoB9B,GAAK,IAAM2B,IAE/B,MAAMI,UACJA,EAASC,QACTA,EAAOC,cACPA,EAAaC,WACbA,EAAUC,2BACVA,EAA0BC,qCAC1BA,EAAoCC,kBACpCA,EAAiBC,IACjBA,GACEzC,EAAKV,QAACoD,WAAWC,EAAOrD,SAEtBsD,EAAgBC,eACpB7D,MAAO8D,UAGCL,EAAI5C,WAAWH,MAAMqD,aACzB,CAAA,EACA,IAAIC,SAASC,KAAKC,UAAUJ,EAAEK,UAE5B1C,GACFA,EAAUqC,EACX,GAEH,CAACrC,IA8CH,OA3CA2C,EAAAA,WAAU,KACR,MAAMC,EAAMvB,EAKZ,OAJAuB,SAAAA,EAAKC,iBAAiB,UAAWV,GAC7BlC,IAAS2C,SAAAA,EAAKC,iBAAiB,QAAS5C,IACxCC,IAAS0C,SAAAA,EAAKC,iBAAiB,QAAS3C,IAErC,KACDD,IAAS2C,SAAAA,EAAKE,oBAAoB,QAAS7C,IAC3CC,IAAS0C,SAAAA,EAAKE,oBAAoB,QAAS5C,IAE/C0C,SAAAA,EAAKE,oBAAoB,UAAWX,EAAc,CACnD,GACA,CAACd,EAAUpB,EAASkC,IAGvBQ,EAAAA,WAAU,KACR,MAAMC,EAAMvB,EAEZ,OADAuB,SAAAA,EAAKC,iBAAiB,UAAWV,GAC1B,KACLS,SAAAA,EAAKE,oBAAoB,UAAWX,EAAc,CACnD,GACA,CAACd,EAAUc,IAGdQ,EAAAA,WAAU,KACR,MAAMC,EAAMvB,EAGZ,OAFIpB,IAAS2C,SAAAA,EAAKC,iBAAiB,QAAS5C,IAErC,KACDA,IAAS2C,SAAAA,EAAKE,oBAAoB,QAAS7C,GAAQ,CACxD,GACA,CAACoB,EAAUpB,IAGd0C,EAAAA,WAAU,KACR,MAAMC,EAAMvB,EAGZ,OAFInB,IAAS0C,SAAAA,EAAKC,iBAAiB,QAAS3C,IAErC,KACDA,IAAS0C,SAAAA,EAAKE,oBAAoB,QAAS5C,GAAQ,CACxD,GACA,CAACmB,EAAUnB,IASjBX,UAAAI,cAAA,OAAA,KACCJ,EAAAA,QAAAI,cAACoD,EAAAA,SAAQ,CAACC,SAAU,MACnBzD,EAACV,QAAAc,cAAAtB,EACQ,CAAAoD,UAAWA,EACX1B,OAAQA,EACR2B,QAASA,EACTC,cAAeA,EACfC,WAAYA,EACZlC,IAAK4B,EACLX,aAAcA,EACdC,YAAaA,EACbC,UAAWA,EACXI,QAASA,EACTH,eAAgBA,EAChBC,eAAgBA,EAChBe,qCACEA,EAEF1B,OAAQA,EAGN,aAAcC,EACd,aAAcC,EACd,cAAeC,EACf,YAAaG,EACb,cAAeD,EACf,aAAcD,EACd,qCAAsCqB,EACtC,yBAA0BE,EAC1B,qCAAsCZ,EAEtC,wBAAyBH,EACzB,cAAeb,EACf,sBAAuBe,GAGhCE,IAIC"}
|
package/dist/cjs/constants.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const e="undefined"!=typeof window;exports.IS_BROWSER=e,exports.baseHeaders={"x-descope-sdk-name":"react","x-descope-sdk-version":"2.
|
|
1
|
+
"use strict";const e="undefined"!=typeof window;exports.IS_BROWSER=e,exports.baseHeaders={"x-descope-sdk-name":"react","x-descope-sdk-version":"2.10.0"};
|
|
2
2
|
//# sourceMappingURL=constants.js.map
|
package/dist/cjs/flows.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("./components/AuthProvider/AuthProvider.js"),s=require("./components/DefaultFlows.js"),
|
|
1
|
+
"use strict";var e=require("./components/AuthProvider/AuthProvider.js"),s=require("./components/DefaultFlows.js"),r=require("./components/Descope.js"),o=require("./hooks/useDescope.js"),t=require("./hooks/useSession.js"),n=require("./hooks/useUser.js"),i=require("./sdk.js"),p=require("./constants.js");exports.AuthProvider=e.default,exports.SignInFlow=s.SignInFlow,exports.SignUpFlow=s.SignUpFlow,exports.SignUpOrInFlow=s.SignUpOrInFlow,exports.Descope=r.default,exports.useDescope=o.default,exports.useSession=t.default,exports.useUser=n.default,exports.getCurrentTenant=i.getCurrentTenant,exports.getJwtPermissions=i.getJwtPermissions,exports.getJwtRoles=i.getJwtRoles,exports.getRefreshToken=i.getRefreshToken,exports.getSessionToken=i.getSessionToken,exports.isRefreshTokenExpired=i.isRefreshTokenExpired,exports.isSessionTokenExpired=i.isSessionTokenExpired,exports.refresh=i.refresh,exports.baseHeaders=p.baseHeaders;
|
|
2
2
|
//# sourceMappingURL=flows.js.map
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("./components/AuthProvider/AuthProvider.js"),s=require("./components/DefaultFlows.js"),
|
|
1
|
+
"use strict";var e=require("./components/AuthProvider/AuthProvider.js"),s=require("./components/DefaultFlows.js"),r=require("./components/Descope.js"),o=require("./hooks/useDescope.js"),t=require("./hooks/useSession.js"),n=require("./hooks/useUser.js"),i=require("./sdk.js"),p=require("./constants.js"),a=require("./components/UserManagement.js"),u=require("./components/RoleManagement.js"),l=require("./components/AccessKeyManagement.js"),x=require("./components/AuditManagement.js"),g=require("./components/UserProfile.js"),d=require("./components/ApplicationsPortal.js");exports.AuthProvider=e.default,exports.SignInFlow=s.SignInFlow,exports.SignUpFlow=s.SignUpFlow,exports.SignUpOrInFlow=s.SignUpOrInFlow,exports.Descope=r.default,exports.useDescope=o.default,exports.useSession=t.default,exports.useUser=n.default,exports.getCurrentTenant=i.getCurrentTenant,exports.getJwtPermissions=i.getJwtPermissions,exports.getJwtRoles=i.getJwtRoles,exports.getRefreshToken=i.getRefreshToken,exports.getSessionToken=i.getSessionToken,exports.isRefreshTokenExpired=i.isRefreshTokenExpired,exports.isSessionTokenExpired=i.isSessionTokenExpired,exports.refresh=i.refresh,exports.baseHeaders=p.baseHeaders,exports.UserManagement=a.default,exports.RoleManagement=u.default,exports.AccessKeyManagement=l.default,exports.AuditManagement=x.default,exports.UserProfile=g.default,exports.ApplicationsPortal=d.default;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/sdk.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@descope/web-js-sdk"),s=require("./constants.js"),t=require("./utils.js");function
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@descope/web-js-sdk"),s=require("./constants.js"),t=require("./utils.js");function r(e){return e&&e.__esModule?e:{default:e}}var o=r(e);let n;const i=e=>{const t=o.default(Object.assign({persistTokens:s.IS_BROWSER,autoRefresh:s.IS_BROWSER},e));return n=t,t},p=()=>i({projectId:"temp pid",persistTokens:!1,autoRefresh:!1,storeLastAuthenticatedUser:!1});n=p();const l=()=>s.IS_BROWSER?null==n?void 0:n.getSessionToken():(console.warn("Get session token is not supported in SSR"),""),u=()=>s.IS_BROWSER?null==n?void 0:n.getRefreshToken():(console.warn("Get refresh token is not supported in SSR"),""),d=t.wrapInTry(((e=l(),s)=>null==n?void 0:n.getJwtPermissions(e,s))),a=t.wrapInTry(((e=l(),s)=>null==n?void 0:n.getJwtRoles(e,s))),R=t.wrapInTry(((e=l())=>null==n?void 0:n.getCurrentTenant(e)));exports.createTempSdk=p,exports.default=i,exports.getCurrentTenant=R,exports.getGlobalSdk=()=>n,exports.getJwtPermissions=d,exports.getJwtRoles=a,exports.getRefreshToken=u,exports.getSessionToken=l,exports.isRefreshTokenExpired=(e=u())=>null==n?void 0:n.isJwtExpired(e),exports.isSessionTokenExpired=(e=l())=>null==n?void 0:n.isJwtExpired(e),exports.refresh=(e=u())=>null==n?void 0:n.refresh(e);
|
|
2
2
|
//# sourceMappingURL=sdk.js.map
|
package/dist/cjs/sdk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk.js","sources":["../../src/sdk.ts"],"sourcesContent":["// workaround for TS issue https://github.com/microsoft/TypeScript/issues/42873\n// eslint-disable-next-line\nimport type * as _1 from '@descope/core-js-sdk';\nimport createSdk from '@descope/web-js-sdk';\nimport { IS_BROWSER } from './constants';\nimport { wrapInTry } from './utils';\n\ntype Sdk = ReturnType<typeof createSdkWrapper>;\nlet globalSdk: Sdk;\n\nconst createSdkWrapper = <P extends Parameters<typeof createSdk>[0]>(\n config: P,\n) => {\n const sdk = createSdk({\n persistTokens: IS_BROWSER as true,\n autoRefresh: IS_BROWSER as true,\n ...config,\n });\n globalSdk = sdk;\n\n return sdk;\n};\n\n// eslint-disable-next-line import/exports-last\nexport const createTempSdk = () =>\n createSdkWrapper({\n projectId: 'temp pid',\n persistTokens: false,\n autoRefresh: false,\n storeLastAuthenticatedUser: false,\n });\n\n/**\n * We want to make sure the getSessionToken fn is used only when persistTokens is on\n *\n * So we are keeping the SDK init in a single place,\n * and we are creating a temp instance in order to export the getSessionToken\n * even before the SDK was init\n */\nglobalSdk = createTempSdk();\n\nexport const getSessionToken = () => {\n if (IS_BROWSER) {\n return globalSdk?.getSessionToken();\n }\n\n // eslint-disable-next-line no-console\n console.warn('Get session token is not supported in SSR');\n return '';\n};\n\nexport const getRefreshToken = () => {\n if (IS_BROWSER) {\n return globalSdk?.getRefreshToken();\n }\n // eslint-disable-next-line no-console\n console.warn('Get refresh token is not supported in SSR');\n return '';\n};\n\nexport const isSessionTokenExpired = (token = getSessionToken()) =>\n globalSdk?.isJwtExpired(token);\n\nexport const isRefreshTokenExpired = (token = getRefreshToken()) =>\n globalSdk?.isJwtExpired(token);\n\nexport const getJwtPermissions = wrapInTry(\n (token = getSessionToken(), tenant?: string) =>\n globalSdk?.getJwtPermissions(token, tenant),\n);\n\nexport const getJwtRoles = wrapInTry(\n (token = getSessionToken(), tenant?: string) =>\n globalSdk?.getJwtRoles(token, tenant),\n);\n\nexport const refresh = (token = getRefreshToken()) => globalSdk?.refresh(token);\n\nexport const getGlobalSdk = () => globalSdk;\n\nexport default createSdkWrapper;\n"],"names":["globalSdk","createSdkWrapper","config","sdk","createSdk","Object","assign","persistTokens","IS_BROWSER","autoRefresh","createTempSdk","projectId","storeLastAuthenticatedUser","getSessionToken","console","warn","getRefreshToken","getJwtPermissions","wrapInTry","token","tenant","getJwtRoles","isJwtExpired","refresh"],"mappings":"2NAQA,IAAIA,EAEJ,MAAMC,EACJC,IAEA,MAAMC,EAAMC,EAAAA,QAASC,OAAAC,OAAA,CACnBC,cAAeC,EAAkBA,WACjCC,YAAaD,EAAAA,YACVN,IAIL,OAFAF,EAAYG,EAELA,CAAG,EAICO,EAAgB,IAC3BT,EAAiB,CACfU,UAAW,WACXJ,eAAe,EACfE,aAAa,EACbG,4BAA4B,IAUhCZ,EAAYU,IAEL,MAAMG,EAAkB,IACzBL,aACKR,aAAS,EAATA,EAAWa,mBAIpBC,QAAQC,KAAK,6CACN,IAGIC,EAAkB,IACzBR,aACKR,aAAS,EAATA,EAAWgB,mBAGpBF,QAAQC,KAAK,6CACN,IASIE,EAAoBC,EAASA,WACxC,CAACC,EAAQN,IAAmBO,IAC1BpB,aAAS,EAATA,EAAWiB,kBAAkBE,EAAOC,KAG3BC,EAAcH,EAASA,WAClC,CAACC,EAAQN,IAAmBO,IAC1BpB,aAAS,EAATA,EAAWqB,YAAYF,EAAOC,
|
|
1
|
+
{"version":3,"file":"sdk.js","sources":["../../src/sdk.ts"],"sourcesContent":["// workaround for TS issue https://github.com/microsoft/TypeScript/issues/42873\n// eslint-disable-next-line\nimport type * as _1 from '@descope/core-js-sdk';\nimport createSdk from '@descope/web-js-sdk';\nimport { IS_BROWSER } from './constants';\nimport { wrapInTry } from './utils';\n\ntype Sdk = ReturnType<typeof createSdkWrapper>;\nlet globalSdk: Sdk;\n\nconst createSdkWrapper = <P extends Parameters<typeof createSdk>[0]>(\n config: P,\n) => {\n const sdk = createSdk({\n persistTokens: IS_BROWSER as true,\n autoRefresh: IS_BROWSER as true,\n ...config,\n });\n globalSdk = sdk;\n\n return sdk;\n};\n\n// eslint-disable-next-line import/exports-last\nexport const createTempSdk = () =>\n createSdkWrapper({\n projectId: 'temp pid',\n persistTokens: false,\n autoRefresh: false,\n storeLastAuthenticatedUser: false,\n });\n\n/**\n * We want to make sure the getSessionToken fn is used only when persistTokens is on\n *\n * So we are keeping the SDK init in a single place,\n * and we are creating a temp instance in order to export the getSessionToken\n * even before the SDK was init\n */\nglobalSdk = createTempSdk();\n\nexport const getSessionToken = () => {\n if (IS_BROWSER) {\n return globalSdk?.getSessionToken();\n }\n\n // eslint-disable-next-line no-console\n console.warn('Get session token is not supported in SSR');\n return '';\n};\n\nexport const getRefreshToken = () => {\n if (IS_BROWSER) {\n return globalSdk?.getRefreshToken();\n }\n // eslint-disable-next-line no-console\n console.warn('Get refresh token is not supported in SSR');\n return '';\n};\n\nexport const isSessionTokenExpired = (token = getSessionToken()) =>\n globalSdk?.isJwtExpired(token);\n\nexport const isRefreshTokenExpired = (token = getRefreshToken()) =>\n globalSdk?.isJwtExpired(token);\n\nexport const getJwtPermissions = wrapInTry(\n (token = getSessionToken(), tenant?: string) =>\n globalSdk?.getJwtPermissions(token, tenant),\n);\n\nexport const getJwtRoles = wrapInTry(\n (token = getSessionToken(), tenant?: string) =>\n globalSdk?.getJwtRoles(token, tenant),\n);\n\nexport const getCurrentTenant = wrapInTry(\n (token = getSessionToken()) => globalSdk?.getCurrentTenant(token),\n);\n\nexport const refresh = (token = getRefreshToken()) => globalSdk?.refresh(token);\n\nexport const getGlobalSdk = () => globalSdk;\n\nexport default createSdkWrapper;\n"],"names":["globalSdk","createSdkWrapper","config","sdk","createSdk","Object","assign","persistTokens","IS_BROWSER","autoRefresh","createTempSdk","projectId","storeLastAuthenticatedUser","getSessionToken","console","warn","getRefreshToken","getJwtPermissions","wrapInTry","token","tenant","getJwtRoles","getCurrentTenant","isJwtExpired","refresh"],"mappings":"2NAQA,IAAIA,EAEJ,MAAMC,EACJC,IAEA,MAAMC,EAAMC,EAAAA,QAASC,OAAAC,OAAA,CACnBC,cAAeC,EAAkBA,WACjCC,YAAaD,EAAAA,YACVN,IAIL,OAFAF,EAAYG,EAELA,CAAG,EAICO,EAAgB,IAC3BT,EAAiB,CACfU,UAAW,WACXJ,eAAe,EACfE,aAAa,EACbG,4BAA4B,IAUhCZ,EAAYU,IAEL,MAAMG,EAAkB,IACzBL,aACKR,aAAS,EAATA,EAAWa,mBAIpBC,QAAQC,KAAK,6CACN,IAGIC,EAAkB,IACzBR,aACKR,aAAS,EAATA,EAAWgB,mBAGpBF,QAAQC,KAAK,6CACN,IASIE,EAAoBC,EAASA,WACxC,CAACC,EAAQN,IAAmBO,IAC1BpB,aAAS,EAATA,EAAWiB,kBAAkBE,EAAOC,KAG3BC,EAAcH,EAASA,WAClC,CAACC,EAAQN,IAAmBO,IAC1BpB,aAAS,EAATA,EAAWqB,YAAYF,EAAOC,KAGrBE,EAAmBJ,EAASA,WACvC,CAACC,EAAQN,MAAsBb,aAAA,EAAAA,EAAWsB,iBAAiBH,+FAKjC,IAAMnB,sIAnBG,CAACmB,EAAQH,MAC5ChB,aAAA,EAAAA,EAAWuB,aAAaJ,iCAJW,CAACA,EAAQN,MAC5Cb,aAAA,EAAAA,EAAWuB,aAAaJ,mBAmBH,CAACA,EAAQH,MAAsBhB,aAAA,EAAAA,EAAWwB,QAAQL"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e,{lazy as t,useState as r,useImperativeHandle as n,useCallback as s,useEffect as o,Suspense as a}from"react";import{baseHeaders as l}from"../constants.js";import c from"../hooks/Context.js";import{getGlobalSdk as d}from"../sdk.js";import u from"./withPropsMapping/index.js";const i=t((async()=>(((null===customElements||void 0===customElements?void 0:customElements.get("descope-wc"))||await import("@descope/web-component").then((e=>e.default))).sdkConfigOverrides={baseHeaders:l,persistTokens:!1,hooks:{get beforeRequest(){return d().httpClient.hooks.beforeRequest},set beforeRequest(e){}}},{default:u(e.forwardRef(((t,r)=>e.createElement("descope-wc",Object.assign({ref:r},t)))))}))),m=e.forwardRef((({flowId:t,onSuccess:l,onError:d,onReady:u,logger:m,tenant:f,theme:p,
|
|
1
|
+
import e,{lazy as t,useState as r,useImperativeHandle as n,useCallback as s,useEffect as o,Suspense as a}from"react";import{baseHeaders as l}from"../constants.js";import c from"../hooks/Context.js";import{getGlobalSdk as d}from"../sdk.js";import u from"./withPropsMapping/index.js";const i=t((async()=>(((null===customElements||void 0===customElements?void 0:customElements.get("descope-wc"))||await import("@descope/web-component").then((e=>e.default))).sdkConfigOverrides={baseHeaders:l,persistTokens:!1,hooks:{get beforeRequest(){return d().httpClient.hooks.beforeRequest},set beforeRequest(e){}}},{default:u(e.forwardRef(((t,r)=>e.createElement("descope-wc",Object.assign({ref:r},t)))))}))),m=e.forwardRef((({flowId:t,onSuccess:l,onError:d,onReady:u,logger:m,tenant:f,theme:p,nonce:v,locale:E,debug:h,client:L,form:b,telemetryKey:g,redirectUrl:k,autoFocus:y,validateOnBlur:U,restartOnError:w,errorTransformer:C,styleId:O,onScreenUpdate:R,dismissScreenErrorOnInput:j,children:I},S)=>{const[A,q]=r(null);n(S,(()=>A));const{projectId:x,baseUrl:N,baseStaticUrl:T,baseCdnUrl:B,storeLastAuthenticatedUser:F,keepLastAuthenticatedUserAfterLogout:K,refreshCookieName:H,sdk:J}=e.useContext(c),M=s((async e=>{await J.httpClient.hooks.afterRequest({},new Response(JSON.stringify(e.detail))),l&&l(e)}),[l]);return o((()=>{const e=A;return null==e||e.addEventListener("success",M),d&&(null==e||e.addEventListener("error",d)),u&&(null==e||e.addEventListener("ready",u)),()=>{d&&(null==e||e.removeEventListener("error",d)),u&&(null==e||e.removeEventListener("ready",u)),null==e||e.removeEventListener("success",M)}}),[A,d,M]),o((()=>{const e=A;return null==e||e.addEventListener("success",M),()=>{null==e||e.removeEventListener("success",M)}}),[A,M]),o((()=>{const e=A;return d&&(null==e||e.addEventListener("error",d)),()=>{d&&(null==e||e.removeEventListener("error",d))}}),[A,d]),o((()=>{const e=A;return u&&(null==e||e.addEventListener("ready",u)),()=>{u&&(null==e||e.removeEventListener("error",u))}}),[A,u]),e.createElement("form",null,e.createElement(a,{fallback:null},e.createElement(i,{projectId:x,flowId:t,baseUrl:N,baseStaticUrl:T,baseCdnUrl:B,ref:q,telemetryKey:g,redirectUrl:k,autoFocus:y,styleId:O,validateOnBlur:U,restartOnError:w,keepLastAuthenticatedUserAfterLogout:K,tenant:f,"theme.attr":p,"nonce.attr":v,"locale.attr":E,"form.attr":b,"client.attr":L,"debug.attr":h,"store-last-authenticated-user.attr":F,"refreshCookieName.attr":H,"dismiss-screen-error-on-input.attr":j,"errorTransformer.prop":C,"logger.prop":m,"onScreenUpdate.prop":R},I)))}));export{m as default};
|
|
2
2
|
//# sourceMappingURL=Descope.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Descope.js","sources":["../../../src/components/Descope.tsx"],"sourcesContent":["import React, {\n lazy,\n Suspense,\n useCallback,\n useEffect,\n useImperativeHandle,\n useState,\n} from 'react';\nimport { baseHeaders } from '../constants';\nimport Context from '../hooks/Context';\nimport { DescopeProps } from '../types';\nimport { getGlobalSdk } from '../sdk';\nimport withPropsMapping from './withPropsMapping';\n\n// web-component code uses browser API, but can be used in SSR apps, hence the lazy loading\nconst DescopeWC = lazy(async () => {\n const WebComponent: any =\n customElements?.get('descope-wc') ||\n (await import('@descope/web-component').then((module) => module.default));\n\n WebComponent.sdkConfigOverrides = {\n // Overrides the web-component's base headers to indicate usage via the React SDK\n baseHeaders,\n // Disables token persistence within the web-component to delegate token management\n // to the global SDK hooks. This ensures token handling aligns with the SDK's configuration,\n // and web-component requests leverage the global SDK's beforeRequest hooks for consistency\n persistTokens: false,\n hooks: {\n get beforeRequest() {\n // Retrieves the beforeRequest hook from the global SDK, which is initialized\n // within the AuthProvider using the desired configuration. This approach ensures\n // the web-component utilizes the same beforeRequest hooks as the global SDK\n return getGlobalSdk().httpClient.hooks.beforeRequest;\n },\n set beforeRequest(_) {\n // The empty setter prevents runtime errors when attempts are made to assign a value to 'beforeRequest'.\n // JavaScript objects default to having both getters and setters\n },\n },\n };\n\n return {\n default: withPropsMapping(\n React.forwardRef<HTMLElement>((props, ref) => (\n\t<descope-wc ref={ref} {...props} />\n )),\n ),\n };\n});\n\nconst Descope = React.forwardRef<HTMLElement, DescopeProps>(\n (\n {\n flowId,\n onSuccess,\n onError,\n onReady,\n logger,\n tenant,\n theme,\n locale,\n debug,\n client,\n form,\n telemetryKey,\n redirectUrl,\n autoFocus,\n validateOnBlur,\n restartOnError,\n errorTransformer,\n styleId,\n onScreenUpdate,\n children,\n },\n ref,\n ) => {\n const [innerRef, setInnerRef] = useState(null);\n\n useImperativeHandle(ref, () => innerRef);\n\n const {\n projectId,\n baseUrl,\n baseStaticUrl,\n baseCdnUrl,\n storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout,\n refreshCookieName,\n sdk,\n } = React.useContext(Context);\n\n const handleSuccess = useCallback(\n async (e: CustomEvent) => {\n // In order to make sure all the after-hooks are running with the success response\n // we are generating a fake response with the success data and calling the http client after hook fn with it\n await sdk.httpClient.hooks.afterRequest(\n {} as any,\n new Response(JSON.stringify(e.detail)),\n );\n if (onSuccess) {\n onSuccess(e);\n }\n },\n [onSuccess],\n );\n\n useEffect(() => {\n const ele = innerRef;\n ele?.addEventListener('success', handleSuccess);\n if (onError) ele?.addEventListener('error', onError);\n if (onReady) ele?.addEventListener('ready', onReady);\n\n return () => {\n if (onError) ele?.removeEventListener('error', onError);\n if (onReady) ele?.removeEventListener('ready', onReady);\n\n ele?.removeEventListener('success', handleSuccess);\n };\n }, [innerRef, onError, handleSuccess]);\n\n // Success event\n useEffect(() => {\n const ele = innerRef;\n ele?.addEventListener('success', handleSuccess);\n return () => {\n ele?.removeEventListener('success', handleSuccess);\n };\n }, [innerRef, handleSuccess]);\n\n // Error event\n useEffect(() => {\n const ele = innerRef;\n if (onError) ele?.addEventListener('error', onError);\n\n return () => {\n if (onError) ele?.removeEventListener('error', onError);\n };\n }, [innerRef, onError]);\n\n // Ready event\n useEffect(() => {\n const ele = innerRef;\n if (onReady) ele?.addEventListener('ready', onReady);\n\n return () => {\n if (onReady) ele?.removeEventListener('error', onReady);\n };\n }, [innerRef, onReady]);\n\n return (\n /**\n * in order to avoid redundant remounting of the WC, we are wrapping it with a form element\n * this workaround is done in order to support webauthn passkeys\n * it can be removed once this issue will be solved\n * https://bugs.chromium.org/p/chromium/issues/detail?id=1404106#c2\n */\n\t<form>\n\t\t<Suspense fallback={null}>\n\t\t\t<DescopeWC\n projectId={projectId}\n flowId={flowId}\n baseUrl={baseUrl}\n baseStaticUrl={baseStaticUrl}\n baseCdnUrl={baseCdnUrl}\n ref={setInnerRef}\n telemetryKey={telemetryKey}\n redirectUrl={redirectUrl}\n autoFocus={autoFocus}\n styleId={styleId}\n validateOnBlur={validateOnBlur}\n restartOnError={restartOnError}\n keepLastAuthenticatedUserAfterLogout={\n keepLastAuthenticatedUserAfterLogout\n }\n tenant={tenant}\n {...{\n // attributes\n 'theme.attr': theme,\n 'locale.attr': locale,\n 'form.attr': form,\n 'client.attr': client,\n 'debug.attr': debug,\n 'store-last-authenticated-user.attr': storeLastAuthenticatedUser,\n 'refreshCookieName.attr': refreshCookieName,\n // props\n 'errorTransformer.prop': errorTransformer,\n 'logger.prop': logger,\n 'onScreenUpdate.prop': onScreenUpdate,\n }}\n >\n\t\t\t\t{children}\n\t\t\t</DescopeWC>\n\t\t</Suspense>\n\t</form>\n );\n },\n);\n\nexport default Descope;\n"],"names":["DescopeWC","lazy","async","customElements","get","import","then","module","default","sdkConfigOverrides","baseHeaders","persistTokens","hooks","beforeRequest","getGlobalSdk","httpClient","_","withPropsMapping","React","forwardRef","props","ref","createElement","Object","assign","Descope","flowId","onSuccess","onError","onReady","logger","tenant","theme","locale","debug","client","form","telemetryKey","redirectUrl","autoFocus","validateOnBlur","restartOnError","errorTransformer","styleId","onScreenUpdate","children","innerRef","setInnerRef","useState","useImperativeHandle","projectId","baseUrl","baseStaticUrl","baseCdnUrl","storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout","refreshCookieName","sdk","useContext","Context","handleSuccess","useCallback","e","afterRequest","Response","JSON","stringify","detail","useEffect","ele","addEventListener","removeEventListener","Suspense","fallback"],"mappings":"0RAeA,MAAMA,EAAYC,GAAKC,YAEnB,OAAAC,qBAAA,IAAAA,oBAAA,EAAAA,eAAgBC,IAAI,sBACbC,OAAO,0BAA0BC,MAAMC,GAAWA,EAAOC,WAErDC,mBAAqB,CAEhCC,cAIAC,eAAe,EACfC,MAAO,CACL,iBAAIC,GAIF,OAAOC,IAAeC,WAAWH,MAAMC,aACxC,EACD,iBAAIA,CAAcG,GAGjB,IAIE,CACLR,QAASS,EACPC,EAAMC,YAAwB,CAACC,EAAOC,IAC3CH,EAAYI,cAAA,aAAAC,OAAAC,OAAA,CAAAH,IAAKA,GAASD,WAMrBK,EAAUP,EAAMC,YACpB,EAEIO,SACAC,YACAC,UACAC,UACAC,SACAC,SACAC,QACAC,SACAC,QACAC,SACAC,OACAC,eACAC,cACAC,YACAC,iBACAC,iBACAC,mBACAC,UACAC,iBACAC,
|
|
1
|
+
{"version":3,"file":"Descope.js","sources":["../../../src/components/Descope.tsx"],"sourcesContent":["import React, {\n lazy,\n Suspense,\n useCallback,\n useEffect,\n useImperativeHandle,\n useState,\n} from 'react';\nimport { baseHeaders } from '../constants';\nimport Context from '../hooks/Context';\nimport { DescopeProps } from '../types';\nimport { getGlobalSdk } from '../sdk';\nimport withPropsMapping from './withPropsMapping';\n\n// web-component code uses browser API, but can be used in SSR apps, hence the lazy loading\nconst DescopeWC = lazy(async () => {\n const WebComponent: any =\n customElements?.get('descope-wc') ||\n (await import('@descope/web-component').then((module) => module.default));\n\n WebComponent.sdkConfigOverrides = {\n // Overrides the web-component's base headers to indicate usage via the React SDK\n baseHeaders,\n // Disables token persistence within the web-component to delegate token management\n // to the global SDK hooks. This ensures token handling aligns with the SDK's configuration,\n // and web-component requests leverage the global SDK's beforeRequest hooks for consistency\n persistTokens: false,\n hooks: {\n get beforeRequest() {\n // Retrieves the beforeRequest hook from the global SDK, which is initialized\n // within the AuthProvider using the desired configuration. This approach ensures\n // the web-component utilizes the same beforeRequest hooks as the global SDK\n return getGlobalSdk().httpClient.hooks.beforeRequest;\n },\n set beforeRequest(_) {\n // The empty setter prevents runtime errors when attempts are made to assign a value to 'beforeRequest'.\n // JavaScript objects default to having both getters and setters\n },\n },\n };\n\n return {\n default: withPropsMapping(\n React.forwardRef<HTMLElement>((props, ref) => (\n\t<descope-wc ref={ref} {...props} />\n )),\n ),\n };\n});\n\nconst Descope = React.forwardRef<HTMLElement, DescopeProps>(\n (\n {\n flowId,\n onSuccess,\n onError,\n onReady,\n logger,\n tenant,\n theme,\n nonce,\n locale,\n debug,\n client,\n form,\n telemetryKey,\n redirectUrl,\n autoFocus,\n validateOnBlur,\n restartOnError,\n errorTransformer,\n styleId,\n onScreenUpdate,\n dismissScreenErrorOnInput,\n children,\n },\n ref,\n ) => {\n const [innerRef, setInnerRef] = useState(null);\n\n useImperativeHandle(ref, () => innerRef);\n\n const {\n projectId,\n baseUrl,\n baseStaticUrl,\n baseCdnUrl,\n storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout,\n refreshCookieName,\n sdk,\n } = React.useContext(Context);\n\n const handleSuccess = useCallback(\n async (e: CustomEvent) => {\n // In order to make sure all the after-hooks are running with the success response\n // we are generating a fake response with the success data and calling the http client after hook fn with it\n await sdk.httpClient.hooks.afterRequest(\n {} as any,\n new Response(JSON.stringify(e.detail)),\n );\n if (onSuccess) {\n onSuccess(e);\n }\n },\n [onSuccess],\n );\n\n useEffect(() => {\n const ele = innerRef;\n ele?.addEventListener('success', handleSuccess);\n if (onError) ele?.addEventListener('error', onError);\n if (onReady) ele?.addEventListener('ready', onReady);\n\n return () => {\n if (onError) ele?.removeEventListener('error', onError);\n if (onReady) ele?.removeEventListener('ready', onReady);\n\n ele?.removeEventListener('success', handleSuccess);\n };\n }, [innerRef, onError, handleSuccess]);\n\n // Success event\n useEffect(() => {\n const ele = innerRef;\n ele?.addEventListener('success', handleSuccess);\n return () => {\n ele?.removeEventListener('success', handleSuccess);\n };\n }, [innerRef, handleSuccess]);\n\n // Error event\n useEffect(() => {\n const ele = innerRef;\n if (onError) ele?.addEventListener('error', onError);\n\n return () => {\n if (onError) ele?.removeEventListener('error', onError);\n };\n }, [innerRef, onError]);\n\n // Ready event\n useEffect(() => {\n const ele = innerRef;\n if (onReady) ele?.addEventListener('ready', onReady);\n\n return () => {\n if (onReady) ele?.removeEventListener('error', onReady);\n };\n }, [innerRef, onReady]);\n\n return (\n /**\n * in order to avoid redundant remounting of the WC, we are wrapping it with a form element\n * this workaround is done in order to support webauthn passkeys\n * it can be removed once this issue will be solved\n * https://bugs.chromium.org/p/chromium/issues/detail?id=1404106#c2\n */\n\t<form>\n\t\t<Suspense fallback={null}>\n\t\t\t<DescopeWC\n projectId={projectId}\n flowId={flowId}\n baseUrl={baseUrl}\n baseStaticUrl={baseStaticUrl}\n baseCdnUrl={baseCdnUrl}\n ref={setInnerRef}\n telemetryKey={telemetryKey}\n redirectUrl={redirectUrl}\n autoFocus={autoFocus}\n styleId={styleId}\n validateOnBlur={validateOnBlur}\n restartOnError={restartOnError}\n keepLastAuthenticatedUserAfterLogout={\n keepLastAuthenticatedUserAfterLogout\n }\n tenant={tenant}\n {...{\n // attributes\n 'theme.attr': theme,\n 'nonce.attr': nonce,\n 'locale.attr': locale,\n 'form.attr': form,\n 'client.attr': client,\n 'debug.attr': debug,\n 'store-last-authenticated-user.attr': storeLastAuthenticatedUser,\n 'refreshCookieName.attr': refreshCookieName,\n 'dismiss-screen-error-on-input.attr': dismissScreenErrorOnInput,\n // props\n 'errorTransformer.prop': errorTransformer,\n 'logger.prop': logger,\n 'onScreenUpdate.prop': onScreenUpdate,\n }}\n >\n\t\t\t\t{children}\n\t\t\t</DescopeWC>\n\t\t</Suspense>\n\t</form>\n );\n },\n);\n\nexport default Descope;\n"],"names":["DescopeWC","lazy","async","customElements","get","import","then","module","default","sdkConfigOverrides","baseHeaders","persistTokens","hooks","beforeRequest","getGlobalSdk","httpClient","_","withPropsMapping","React","forwardRef","props","ref","createElement","Object","assign","Descope","flowId","onSuccess","onError","onReady","logger","tenant","theme","nonce","locale","debug","client","form","telemetryKey","redirectUrl","autoFocus","validateOnBlur","restartOnError","errorTransformer","styleId","onScreenUpdate","dismissScreenErrorOnInput","children","innerRef","setInnerRef","useState","useImperativeHandle","projectId","baseUrl","baseStaticUrl","baseCdnUrl","storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout","refreshCookieName","sdk","useContext","Context","handleSuccess","useCallback","e","afterRequest","Response","JSON","stringify","detail","useEffect","ele","addEventListener","removeEventListener","Suspense","fallback"],"mappings":"0RAeA,MAAMA,EAAYC,GAAKC,YAEnB,OAAAC,qBAAA,IAAAA,oBAAA,EAAAA,eAAgBC,IAAI,sBACbC,OAAO,0BAA0BC,MAAMC,GAAWA,EAAOC,WAErDC,mBAAqB,CAEhCC,cAIAC,eAAe,EACfC,MAAO,CACL,iBAAIC,GAIF,OAAOC,IAAeC,WAAWH,MAAMC,aACxC,EACD,iBAAIA,CAAcG,GAGjB,IAIE,CACLR,QAASS,EACPC,EAAMC,YAAwB,CAACC,EAAOC,IAC3CH,EAAYI,cAAA,aAAAC,OAAAC,OAAA,CAAAH,IAAKA,GAASD,WAMrBK,EAAUP,EAAMC,YACpB,EAEIO,SACAC,YACAC,UACAC,UACAC,SACAC,SACAC,QACAC,QACAC,SACAC,QACAC,SACAC,OACAC,eACAC,cACAC,YACAC,iBACAC,iBACAC,mBACAC,UACAC,iBACAC,4BACAC,YAEF1B,KAEA,MAAO2B,EAAUC,GAAeC,EAAS,MAEzCC,EAAoB9B,GAAK,IAAM2B,IAE/B,MAAMI,UACJA,EAASC,QACTA,EAAOC,cACPA,EAAaC,WACbA,EAAUC,2BACVA,EAA0BC,qCAC1BA,EAAoCC,kBACpCA,EAAiBC,IACjBA,GACEzC,EAAM0C,WAAWC,GAEfC,EAAgBC,GACpB7D,MAAO8D,UAGCL,EAAI5C,WAAWH,MAAMqD,aACzB,CAAA,EACA,IAAIC,SAASC,KAAKC,UAAUJ,EAAEK,UAE5B1C,GACFA,EAAUqC,EACX,GAEH,CAACrC,IA8CH,OA3CA2C,GAAU,KACR,MAAMC,EAAMvB,EAKZ,OAJAuB,SAAAA,EAAKC,iBAAiB,UAAWV,GAC7BlC,IAAS2C,SAAAA,EAAKC,iBAAiB,QAAS5C,IACxCC,IAAS0C,SAAAA,EAAKC,iBAAiB,QAAS3C,IAErC,KACDD,IAAS2C,SAAAA,EAAKE,oBAAoB,QAAS7C,IAC3CC,IAAS0C,SAAAA,EAAKE,oBAAoB,QAAS5C,IAE/C0C,SAAAA,EAAKE,oBAAoB,UAAWX,EAAc,CACnD,GACA,CAACd,EAAUpB,EAASkC,IAGvBQ,GAAU,KACR,MAAMC,EAAMvB,EAEZ,OADAuB,SAAAA,EAAKC,iBAAiB,UAAWV,GAC1B,KACLS,SAAAA,EAAKE,oBAAoB,UAAWX,EAAc,CACnD,GACA,CAACd,EAAUc,IAGdQ,GAAU,KACR,MAAMC,EAAMvB,EAGZ,OAFIpB,IAAS2C,SAAAA,EAAKC,iBAAiB,QAAS5C,IAErC,KACDA,IAAS2C,SAAAA,EAAKE,oBAAoB,QAAS7C,GAAQ,CACxD,GACA,CAACoB,EAAUpB,IAGd0C,GAAU,KACR,MAAMC,EAAMvB,EAGZ,OAFInB,IAAS0C,SAAAA,EAAKC,iBAAiB,QAAS3C,IAErC,KACDA,IAAS0C,SAAAA,EAAKE,oBAAoB,QAAS5C,GAAQ,CACxD,GACA,CAACmB,EAAUnB,IASjBX,EAAAI,cAAA,OAAA,KACCJ,EAAAI,cAACoD,EAAQ,CAACC,SAAU,MACnBzD,EAACI,cAAAtB,EACQ,CAAAoD,UAAWA,EACX1B,OAAQA,EACR2B,QAASA,EACTC,cAAeA,EACfC,WAAYA,EACZlC,IAAK4B,EACLX,aAAcA,EACdC,YAAaA,EACbC,UAAWA,EACXI,QAASA,EACTH,eAAgBA,EAChBC,eAAgBA,EAChBe,qCACEA,EAEF1B,OAAQA,EAGN,aAAcC,EACd,aAAcC,EACd,cAAeC,EACf,YAAaG,EACb,cAAeD,EACf,aAAcD,EACd,qCAAsCqB,EACtC,yBAA0BE,EAC1B,qCAAsCZ,EAEtC,wBAAyBH,EACzB,cAAeb,EACf,sBAAuBe,GAGhCE,IAIC"}
|
package/dist/esm/constants.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e={"x-descope-sdk-name":"react","x-descope-sdk-version":"2.
|
|
1
|
+
const e={"x-descope-sdk-name":"react","x-descope-sdk-version":"2.10.0"},d="undefined"!=typeof window;export{d as IS_BROWSER,e as baseHeaders};
|
|
2
2
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sources":["../../src/constants.ts"],"sourcesContent":["declare const BUILD_VERSION: string;\n\nexport const baseHeaders = {\n 'x-descope-sdk-name': 'react',\n 'x-descope-sdk-version': BUILD_VERSION,\n};\n\n// This sdk can be used in SSR apps\nexport const IS_BROWSER = typeof window !== 'undefined';\n"],"names":["baseHeaders","IS_BROWSER","window"],"mappings":"AAEa,MAAAA,EAAc,CACzB,qBAAsB,QACtB,wBAAyB,
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../src/constants.ts"],"sourcesContent":["declare const BUILD_VERSION: string;\n\nexport const baseHeaders = {\n 'x-descope-sdk-name': 'react',\n 'x-descope-sdk-version': BUILD_VERSION,\n};\n\n// This sdk can be used in SSR apps\nexport const IS_BROWSER = typeof window !== 'undefined';\n"],"names":["baseHeaders","IS_BROWSER","window"],"mappings":"AAEa,MAAAA,EAAc,CACzB,qBAAsB,QACtB,wBAAyB,UAIdC,EAA+B,oBAAXC"}
|
package/dist/esm/flows.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{default as AuthProvider}from"./components/AuthProvider/AuthProvider.js";export{SignInFlow,SignUpFlow,SignUpOrInFlow}from"./components/DefaultFlows.js";export{default as Descope}from"./components/Descope.js";export{default as useDescope}from"./hooks/useDescope.js";export{default as useSession}from"./hooks/useSession.js";export{default as useUser}from"./hooks/useUser.js";export{getJwtPermissions,getJwtRoles,getRefreshToken,getSessionToken,isRefreshTokenExpired,isSessionTokenExpired,refresh}from"./sdk.js";export{baseHeaders}from"./constants.js";
|
|
1
|
+
export{default as AuthProvider}from"./components/AuthProvider/AuthProvider.js";export{SignInFlow,SignUpFlow,SignUpOrInFlow}from"./components/DefaultFlows.js";export{default as Descope}from"./components/Descope.js";export{default as useDescope}from"./hooks/useDescope.js";export{default as useSession}from"./hooks/useSession.js";export{default as useUser}from"./hooks/useUser.js";export{getCurrentTenant,getJwtPermissions,getJwtRoles,getRefreshToken,getSessionToken,isRefreshTokenExpired,isSessionTokenExpired,refresh}from"./sdk.js";export{baseHeaders}from"./constants.js";
|
|
2
2
|
//# sourceMappingURL=flows.js.map
|
package/dist/esm/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{default as AuthProvider}from"./components/AuthProvider/AuthProvider.js";export{SignInFlow,SignUpFlow,SignUpOrInFlow}from"./components/DefaultFlows.js";export{default as Descope}from"./components/Descope.js";export{default as useDescope}from"./hooks/useDescope.js";export{default as useSession}from"./hooks/useSession.js";export{default as useUser}from"./hooks/useUser.js";export{getJwtPermissions,getJwtRoles,getRefreshToken,getSessionToken,isRefreshTokenExpired,isSessionTokenExpired,refresh}from"./sdk.js";export{baseHeaders}from"./constants.js";export{default as UserManagement}from"./components/UserManagement.js";export{default as RoleManagement}from"./components/RoleManagement.js";export{default as AccessKeyManagement}from"./components/AccessKeyManagement.js";export{default as AuditManagement}from"./components/AuditManagement.js";export{default as UserProfile}from"./components/UserProfile.js";export{default as ApplicationsPortal}from"./components/ApplicationsPortal.js";
|
|
1
|
+
export{default as AuthProvider}from"./components/AuthProvider/AuthProvider.js";export{SignInFlow,SignUpFlow,SignUpOrInFlow}from"./components/DefaultFlows.js";export{default as Descope}from"./components/Descope.js";export{default as useDescope}from"./hooks/useDescope.js";export{default as useSession}from"./hooks/useSession.js";export{default as useUser}from"./hooks/useUser.js";export{getCurrentTenant,getJwtPermissions,getJwtRoles,getRefreshToken,getSessionToken,isRefreshTokenExpired,isSessionTokenExpired,refresh}from"./sdk.js";export{baseHeaders}from"./constants.js";export{default as UserManagement}from"./components/UserManagement.js";export{default as RoleManagement}from"./components/RoleManagement.js";export{default as AccessKeyManagement}from"./components/AccessKeyManagement.js";export{default as AuditManagement}from"./components/AuditManagement.js";export{default as UserProfile}from"./components/UserProfile.js";export{default as ApplicationsPortal}from"./components/ApplicationsPortal.js";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/sdk.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"@descope/web-js-sdk";import{IS_BROWSER as s}from"./constants.js";import{wrapInTry as
|
|
1
|
+
import e from"@descope/web-js-sdk";import{IS_BROWSER as s}from"./constants.js";import{wrapInTry as t}from"./utils.js";let o;const n=t=>{const n=e(Object.assign({persistTokens:s,autoRefresh:s},t));return o=n,n},r=()=>n({projectId:"temp pid",persistTokens:!1,autoRefresh:!1,storeLastAuthenticatedUser:!1});o=r();const i=()=>s?null==o?void 0:o.getSessionToken():(console.warn("Get session token is not supported in SSR"),""),l=()=>s?null==o?void 0:o.getRefreshToken():(console.warn("Get refresh token is not supported in SSR"),""),d=(e=i())=>null==o?void 0:o.isJwtExpired(e),u=(e=l())=>null==o?void 0:o.isJwtExpired(e),p=t(((e=i(),s)=>null==o?void 0:o.getJwtPermissions(e,s))),a=t(((e=i(),s)=>null==o?void 0:o.getJwtRoles(e,s))),c=t(((e=i())=>null==o?void 0:o.getCurrentTenant(e))),f=(e=l())=>null==o?void 0:o.refresh(e),m=()=>o;export{r as createTempSdk,n as default,c as getCurrentTenant,m as getGlobalSdk,p as getJwtPermissions,a as getJwtRoles,l as getRefreshToken,i as getSessionToken,u as isRefreshTokenExpired,d as isSessionTokenExpired,f as refresh};
|
|
2
2
|
//# sourceMappingURL=sdk.js.map
|
package/dist/esm/sdk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk.js","sources":["../../src/sdk.ts"],"sourcesContent":["// workaround for TS issue https://github.com/microsoft/TypeScript/issues/42873\n// eslint-disable-next-line\nimport type * as _1 from '@descope/core-js-sdk';\nimport createSdk from '@descope/web-js-sdk';\nimport { IS_BROWSER } from './constants';\nimport { wrapInTry } from './utils';\n\ntype Sdk = ReturnType<typeof createSdkWrapper>;\nlet globalSdk: Sdk;\n\nconst createSdkWrapper = <P extends Parameters<typeof createSdk>[0]>(\n config: P,\n) => {\n const sdk = createSdk({\n persistTokens: IS_BROWSER as true,\n autoRefresh: IS_BROWSER as true,\n ...config,\n });\n globalSdk = sdk;\n\n return sdk;\n};\n\n// eslint-disable-next-line import/exports-last\nexport const createTempSdk = () =>\n createSdkWrapper({\n projectId: 'temp pid',\n persistTokens: false,\n autoRefresh: false,\n storeLastAuthenticatedUser: false,\n });\n\n/**\n * We want to make sure the getSessionToken fn is used only when persistTokens is on\n *\n * So we are keeping the SDK init in a single place,\n * and we are creating a temp instance in order to export the getSessionToken\n * even before the SDK was init\n */\nglobalSdk = createTempSdk();\n\nexport const getSessionToken = () => {\n if (IS_BROWSER) {\n return globalSdk?.getSessionToken();\n }\n\n // eslint-disable-next-line no-console\n console.warn('Get session token is not supported in SSR');\n return '';\n};\n\nexport const getRefreshToken = () => {\n if (IS_BROWSER) {\n return globalSdk?.getRefreshToken();\n }\n // eslint-disable-next-line no-console\n console.warn('Get refresh token is not supported in SSR');\n return '';\n};\n\nexport const isSessionTokenExpired = (token = getSessionToken()) =>\n globalSdk?.isJwtExpired(token);\n\nexport const isRefreshTokenExpired = (token = getRefreshToken()) =>\n globalSdk?.isJwtExpired(token);\n\nexport const getJwtPermissions = wrapInTry(\n (token = getSessionToken(), tenant?: string) =>\n globalSdk?.getJwtPermissions(token, tenant),\n);\n\nexport const getJwtRoles = wrapInTry(\n (token = getSessionToken(), tenant?: string) =>\n globalSdk?.getJwtRoles(token, tenant),\n);\n\nexport const refresh = (token = getRefreshToken()) => globalSdk?.refresh(token);\n\nexport const getGlobalSdk = () => globalSdk;\n\nexport default createSdkWrapper;\n"],"names":["globalSdk","createSdkWrapper","config","sdk","createSdk","Object","assign","persistTokens","IS_BROWSER","autoRefresh","createTempSdk","projectId","storeLastAuthenticatedUser","getSessionToken","console","warn","getRefreshToken","isSessionTokenExpired","token","isJwtExpired","isRefreshTokenExpired","getJwtPermissions","wrapInTry","tenant","getJwtRoles","refresh","getGlobalSdk"],"mappings":"sHAQA,IAAIA,EAEJ,MAAMC,EACJC,IAEA,MAAMC,EAAMC,EAASC,OAAAC,OAAA,CACnBC,cAAeC,EACfC,YAAaD,GACVN,IAIL,OAFAF,EAAYG,EAELA,CAAG,EAICO,EAAgB,IAC3BT,EAAiB,CACfU,UAAW,WACXJ,eAAe,EACfE,aAAa,EACbG,4BAA4B,IAUhCZ,EAAYU,IAEL,MAAMG,EAAkB,IACzBL,EACKR,aAAS,EAATA,EAAWa,mBAIpBC,QAAQC,KAAK,6CACN,IAGIC,EAAkB,IACzBR,EACKR,aAAS,EAATA,EAAWgB,mBAGpBF,QAAQC,KAAK,6CACN,IAGIE,EAAwB,CAACC,EAAQL,MAC5Cb,aAAA,EAAAA,EAAWmB,aAAaD,GAEbE,EAAwB,CAACF,EAAQF,MAC5ChB,aAAA,EAAAA,EAAWmB,aAAaD,GAEbG,EAAoBC,GAC/B,CAACJ,EAAQL,IAAmBU,IAC1BvB,aAAS,EAATA,EAAWqB,kBAAkBH,EAAOK,KAG3BC,EAAcF,GACzB,CAACJ,EAAQL,IAAmBU,IAC1BvB,aAAS,EAATA,EAAWwB,YAAYN,EAAOK,KAGrBE,EAAU,
|
|
1
|
+
{"version":3,"file":"sdk.js","sources":["../../src/sdk.ts"],"sourcesContent":["// workaround for TS issue https://github.com/microsoft/TypeScript/issues/42873\n// eslint-disable-next-line\nimport type * as _1 from '@descope/core-js-sdk';\nimport createSdk from '@descope/web-js-sdk';\nimport { IS_BROWSER } from './constants';\nimport { wrapInTry } from './utils';\n\ntype Sdk = ReturnType<typeof createSdkWrapper>;\nlet globalSdk: Sdk;\n\nconst createSdkWrapper = <P extends Parameters<typeof createSdk>[0]>(\n config: P,\n) => {\n const sdk = createSdk({\n persistTokens: IS_BROWSER as true,\n autoRefresh: IS_BROWSER as true,\n ...config,\n });\n globalSdk = sdk;\n\n return sdk;\n};\n\n// eslint-disable-next-line import/exports-last\nexport const createTempSdk = () =>\n createSdkWrapper({\n projectId: 'temp pid',\n persistTokens: false,\n autoRefresh: false,\n storeLastAuthenticatedUser: false,\n });\n\n/**\n * We want to make sure the getSessionToken fn is used only when persistTokens is on\n *\n * So we are keeping the SDK init in a single place,\n * and we are creating a temp instance in order to export the getSessionToken\n * even before the SDK was init\n */\nglobalSdk = createTempSdk();\n\nexport const getSessionToken = () => {\n if (IS_BROWSER) {\n return globalSdk?.getSessionToken();\n }\n\n // eslint-disable-next-line no-console\n console.warn('Get session token is not supported in SSR');\n return '';\n};\n\nexport const getRefreshToken = () => {\n if (IS_BROWSER) {\n return globalSdk?.getRefreshToken();\n }\n // eslint-disable-next-line no-console\n console.warn('Get refresh token is not supported in SSR');\n return '';\n};\n\nexport const isSessionTokenExpired = (token = getSessionToken()) =>\n globalSdk?.isJwtExpired(token);\n\nexport const isRefreshTokenExpired = (token = getRefreshToken()) =>\n globalSdk?.isJwtExpired(token);\n\nexport const getJwtPermissions = wrapInTry(\n (token = getSessionToken(), tenant?: string) =>\n globalSdk?.getJwtPermissions(token, tenant),\n);\n\nexport const getJwtRoles = wrapInTry(\n (token = getSessionToken(), tenant?: string) =>\n globalSdk?.getJwtRoles(token, tenant),\n);\n\nexport const getCurrentTenant = wrapInTry(\n (token = getSessionToken()) => globalSdk?.getCurrentTenant(token),\n);\n\nexport const refresh = (token = getRefreshToken()) => globalSdk?.refresh(token);\n\nexport const getGlobalSdk = () => globalSdk;\n\nexport default createSdkWrapper;\n"],"names":["globalSdk","createSdkWrapper","config","sdk","createSdk","Object","assign","persistTokens","IS_BROWSER","autoRefresh","createTempSdk","projectId","storeLastAuthenticatedUser","getSessionToken","console","warn","getRefreshToken","isSessionTokenExpired","token","isJwtExpired","isRefreshTokenExpired","getJwtPermissions","wrapInTry","tenant","getJwtRoles","getCurrentTenant","refresh","getGlobalSdk"],"mappings":"sHAQA,IAAIA,EAEJ,MAAMC,EACJC,IAEA,MAAMC,EAAMC,EAASC,OAAAC,OAAA,CACnBC,cAAeC,EACfC,YAAaD,GACVN,IAIL,OAFAF,EAAYG,EAELA,CAAG,EAICO,EAAgB,IAC3BT,EAAiB,CACfU,UAAW,WACXJ,eAAe,EACfE,aAAa,EACbG,4BAA4B,IAUhCZ,EAAYU,IAEL,MAAMG,EAAkB,IACzBL,EACKR,aAAS,EAATA,EAAWa,mBAIpBC,QAAQC,KAAK,6CACN,IAGIC,EAAkB,IACzBR,EACKR,aAAS,EAATA,EAAWgB,mBAGpBF,QAAQC,KAAK,6CACN,IAGIE,EAAwB,CAACC,EAAQL,MAC5Cb,aAAA,EAAAA,EAAWmB,aAAaD,GAEbE,EAAwB,CAACF,EAAQF,MAC5ChB,aAAA,EAAAA,EAAWmB,aAAaD,GAEbG,EAAoBC,GAC/B,CAACJ,EAAQL,IAAmBU,IAC1BvB,aAAS,EAATA,EAAWqB,kBAAkBH,EAAOK,KAG3BC,EAAcF,GACzB,CAACJ,EAAQL,IAAmBU,IAC1BvB,aAAS,EAATA,EAAWwB,YAAYN,EAAOK,KAGrBE,EAAmBH,GAC9B,CAACJ,EAAQL,MAAsBb,aAAA,EAAAA,EAAWyB,iBAAiBP,KAGhDQ,EAAU,CAACR,EAAQF,MAAsBhB,aAAA,EAAAA,EAAW0B,QAAQR,GAE5DS,EAAe,IAAM3B"}
|
package/dist/index.d.ts
CHANGED
|
@@ -645,6 +645,7 @@ declare const createSdkWrapper: <P extends Omit<{
|
|
|
645
645
|
getTenants: (token: string) => string[];
|
|
646
646
|
getJwtPermissions: (token: string, tenant?: string) => string[];
|
|
647
647
|
getJwtRoles: (token: string, tenant?: string) => string[];
|
|
648
|
+
getCurrentTenant: (token: string) => string;
|
|
648
649
|
httpClient: {
|
|
649
650
|
get: (path: string, config?: {
|
|
650
651
|
headers?: HeadersInit;
|
|
@@ -1255,6 +1256,7 @@ declare const createSdkWrapper: <P extends Omit<{
|
|
|
1255
1256
|
getTenants: (token: string) => string[];
|
|
1256
1257
|
getJwtPermissions: (token: string, tenant?: string) => string[];
|
|
1257
1258
|
getJwtRoles: (token: string, tenant?: string) => string[];
|
|
1259
|
+
getCurrentTenant: (token: string) => string;
|
|
1258
1260
|
httpClient: {
|
|
1259
1261
|
get: (path: string, config?: {
|
|
1260
1262
|
headers?: HeadersInit;
|
|
@@ -1317,6 +1319,7 @@ declare const isSessionTokenExpired: (token?: string) => boolean;
|
|
|
1317
1319
|
declare const isRefreshTokenExpired: (token?: string) => boolean;
|
|
1318
1320
|
declare const getJwtPermissions: (token?: any, tenant?: string) => string[];
|
|
1319
1321
|
declare const getJwtRoles: (token?: any, tenant?: string) => string[];
|
|
1322
|
+
declare const getCurrentTenant: (token?: any) => string;
|
|
1320
1323
|
declare const refresh: (token?: string) => Promise<_1.SdkResponse<_1.JWTResponse>>;
|
|
1321
1324
|
|
|
1322
1325
|
declare global {
|
|
@@ -1365,6 +1368,7 @@ type DescopeProps = {
|
|
|
1365
1368
|
tenant?: string;
|
|
1366
1369
|
theme?: ThemeOptions;
|
|
1367
1370
|
locale?: string;
|
|
1371
|
+
nonce?: string;
|
|
1368
1372
|
autoFocus?: AutoFocusOptions;
|
|
1369
1373
|
validateOnBlur?: boolean;
|
|
1370
1374
|
restartOnError?: boolean;
|
|
@@ -1378,6 +1382,7 @@ type DescopeProps = {
|
|
|
1378
1382
|
form?: Record<string, any>;
|
|
1379
1383
|
client?: Record<string, any>;
|
|
1380
1384
|
styleId?: string;
|
|
1385
|
+
dismissScreenErrorOnInput?: boolean;
|
|
1381
1386
|
onScreenUpdate?: (screenName: string, context: Record<string, any>, next: (interactionId: string, form: Record<string, any>) => Promise<unknown>, ref: HTMLElement) => boolean | Promise<boolean>;
|
|
1382
1387
|
children?: React.ReactNode;
|
|
1383
1388
|
};
|
|
@@ -1476,4 +1481,4 @@ declare const ApplicationsPortal: React.ForwardRefExoticComponent<Omit<{
|
|
|
1476
1481
|
onLogout?: (e: CustomEvent<any>) => void;
|
|
1477
1482
|
} & React.RefAttributes<HTMLElement>>;
|
|
1478
1483
|
|
|
1479
|
-
export { AccessKeyManagement, ApplicationsPortal, AuditManagement, AuthProvider, Descope, RoleManagement, SignInFlow, SignUpFlow, SignUpOrInFlow, UserManagement, UserProfile, baseHeaders, getJwtPermissions, getJwtRoles, getRefreshToken, getSessionToken, isRefreshTokenExpired, isSessionTokenExpired, refresh, useDescope, useSession, useUser };
|
|
1484
|
+
export { AccessKeyManagement, ApplicationsPortal, AuditManagement, AuthProvider, Descope, RoleManagement, SignInFlow, SignUpFlow, SignUpOrInFlow, UserManagement, UserProfile, baseHeaders, getCurrentTenant, getJwtPermissions, getJwtRoles, getRefreshToken, getSessionToken, isRefreshTokenExpired, isSessionTokenExpired, refresh, useDescope, useSession, useUser };
|