@descope/react-sdk 2.8.0 → 2.9.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 CHANGED
@@ -160,6 +160,8 @@ 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
 
164
166
  />
165
167
  )
@@ -392,6 +394,7 @@ You can also use the following functions to assist with various actions managing
392
394
  `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
395
  `getJwtRoles(token = getSessionToken(), tenant = '')` - Get current roles from an existing session token. Provide tenant id for specific tenant roles.
394
396
  `getJwtPermissions(token = getSessionToken(), tenant = '')` - Fet current permissions from an existing session token. Provide tenant id for specific tenant permissions.
397
+ `getCurrentTenant(token = getSessionToken())` - Get current tenant id from an existing session token (from the `dct` claim).
395
398
 
396
399
  ### Refresh token lifecycle
397
400
 
@@ -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,locale:i,debug:f,client:m,form:p,telemetryKey:v,redirectUrl:E,autoFocus:b,validateOnBlur:h,restartOnError:L,errorTransformer:g,styleId:k,onScreenUpdate:y,children:U},w)=>{const[C,q]=e.useState(null);e.useImperativeHandle(w,(()=>C));const{projectId:S,baseUrl:j,baseStaticUrl:O,baseCdnUrl:R,storeLastAuthenticatedUser:I,keepLastAuthenticatedUserAfterLogout:x,refreshCookieName:A,sdk:_}=o.default.useContext(r.default),H=e.useCallback((async e=>{await _.httpClient.hooks.afterRequest({},new Response(JSON.stringify(e.detail))),s&&s(e)}),[s]);return e.useEffect((()=>{const e=C;return null==e||e.addEventListener("success",H),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",H)}}),[C,n,H]),e.useEffect((()=>{const e=C;return null==e||e.addEventListener("success",H),()=>{null==e||e.removeEventListener("success",H)}}),[C,H]),e.useEffect((()=>{const e=C;return n&&(null==e||e.addEventListener("error",n)),()=>{n&&(null==e||e.removeEventListener("error",n))}}),[C,n]),e.useEffect((()=>{const e=C;return a&&(null==e||e.addEventListener("ready",a)),()=>{a&&(null==e||e.removeEventListener("error",a))}}),[C,a]),o.default.createElement("form",null,o.default.createElement(e.Suspense,{fallback:null},o.default.createElement(l,{projectId:S,flowId:t,baseUrl:j,baseStaticUrl:O,baseCdnUrl:R,ref:q,telemetryKey:v,redirectUrl:E,autoFocus:b,styleId:k,validateOnBlur:h,restartOnError:L,keepLastAuthenticatedUserAfterLogout:x,tenant:d,"theme.attr":c,"locale.attr":i,"form.attr":p,"client.attr":m,"debug.attr":f,"store-last-authenticated-user.attr":I,"refreshCookieName.attr":A,"errorTransformer.prop":g,"logger.prop":u,"onScreenUpdate.prop":y},U)))}));exports.default=u;
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,children:w},C)=>{const[q,S]=e.useState(null);e.useImperativeHandle(C,(()=>q));const{projectId:j,baseUrl:O,baseStaticUrl:R,baseCdnUrl:I,storeLastAuthenticatedUser:x,keepLastAuthenticatedUserAfterLogout:A,refreshCookieName:_,sdk:H}=o.default.useContext(r.default),M=e.useCallback((async e=>{await H.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",M),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",M)}}),[q,n,M]),e.useEffect((()=>{const e=q;return null==e||e.addEventListener("success",M),()=>{null==e||e.removeEventListener("success",M)}}),[q,M]),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:O,baseStaticUrl:R,baseCdnUrl:I,ref:S,telemetryKey:E,redirectUrl:b,autoFocus:h,styleId:y,validateOnBlur:L,restartOnError:g,keepLastAuthenticatedUserAfterLogout:A,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":x,"refreshCookieName.attr":_,"errorTransformer.prop":k,"logger.prop":u,"onScreenUpdate.prop":U},w)))}));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":"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"}
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 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 // 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","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":"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"}
@@ -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.8.0"};
1
+ "use strict";const e="undefined"!=typeof window;exports.IS_BROWSER=e,exports.baseHeaders={"x-descope-sdk-name":"react","x-descope-sdk-version":"2.9.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"),o=require("./components/Descope.js"),r=require("./hooks/useDescope.js"),t=require("./hooks/useSession.js"),i=require("./hooks/useUser.js"),n=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=o.default,exports.useDescope=r.default,exports.useSession=t.default,exports.useUser=i.default,exports.getJwtPermissions=n.getJwtPermissions,exports.getJwtRoles=n.getJwtRoles,exports.getRefreshToken=n.getRefreshToken,exports.getSessionToken=n.getSessionToken,exports.isRefreshTokenExpired=n.isRefreshTokenExpired,exports.isSessionTokenExpired=n.isSessionTokenExpired,exports.refresh=n.refresh,exports.baseHeaders=p.baseHeaders;
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"),o=require("./components/Descope.js"),r=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"),d=require("./components/UserProfile.js"),g=require("./components/ApplicationsPortal.js");exports.AuthProvider=e.default,exports.SignInFlow=s.SignInFlow,exports.SignUpFlow=s.SignUpFlow,exports.SignUpOrInFlow=s.SignUpOrInFlow,exports.Descope=o.default,exports.useDescope=r.default,exports.useSession=t.default,exports.useUser=n.default,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=d.default,exports.ApplicationsPortal=g.default;
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 o(e){return e&&e.__esModule?e:{default:e}}var r=o(e);let n;const i=e=>{const t=r.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"),""),d=()=>s.IS_BROWSER?null==n?void 0:n.getRefreshToken():(console.warn("Get refresh token is not supported in SSR"),""),u=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)));exports.createTempSdk=p,exports.default=i,exports.getGlobalSdk=()=>n,exports.getJwtPermissions=u,exports.getJwtRoles=a,exports.getRefreshToken=d,exports.getSessionToken=l,exports.isRefreshTokenExpired=(e=d())=>null==n?void 0:n.isJwtExpired(e),exports.isSessionTokenExpired=(e=l())=>null==n?void 0:n.isJwtExpired(e),exports.refresh=(e=d())=>null==n?void 0:n.refresh(e);
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
@@ -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,oEAKN,IAAMpB,sIAfG,CAACmB,EAAQH,MAC5ChB,aAAA,EAAAA,EAAWsB,aAAaH,iCAJW,CAACA,EAAQN,MAC5Cb,aAAA,EAAAA,EAAWsB,aAAaH,mBAeH,CAACA,EAAQH,MAAsBhB,aAAA,EAAAA,EAAWuB,QAAQJ"}
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,locale:v,debug:E,client:h,form:L,telemetryKey:b,redirectUrl:g,autoFocus:k,validateOnBlur:y,restartOnError:U,errorTransformer:w,styleId:C,onScreenUpdate:R,children:j},O)=>{const[I,S]=r(null);n(O,(()=>I));const{projectId:A,baseUrl:q,baseStaticUrl:x,baseCdnUrl:N,storeLastAuthenticatedUser:T,keepLastAuthenticatedUserAfterLogout:B,refreshCookieName:F,sdk:K}=e.useContext(c),H=s((async e=>{await K.httpClient.hooks.afterRequest({},new Response(JSON.stringify(e.detail))),l&&l(e)}),[l]);return o((()=>{const e=I;return null==e||e.addEventListener("success",H),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",H)}}),[I,d,H]),o((()=>{const e=I;return null==e||e.addEventListener("success",H),()=>{null==e||e.removeEventListener("success",H)}}),[I,H]),o((()=>{const e=I;return d&&(null==e||e.addEventListener("error",d)),()=>{d&&(null==e||e.removeEventListener("error",d))}}),[I,d]),o((()=>{const e=I;return u&&(null==e||e.addEventListener("ready",u)),()=>{u&&(null==e||e.removeEventListener("error",u))}}),[I,u]),e.createElement("form",null,e.createElement(a,{fallback:null},e.createElement(i,{projectId:A,flowId:t,baseUrl:q,baseStaticUrl:x,baseCdnUrl:N,ref:S,telemetryKey:b,redirectUrl:g,autoFocus:k,styleId:C,validateOnBlur:y,restartOnError:U,keepLastAuthenticatedUserAfterLogout:B,tenant:f,"theme.attr":p,"locale.attr":v,"form.attr":L,"client.attr":h,"debug.attr":E,"store-last-authenticated-user.attr":T,"refreshCookieName.attr":F,"errorTransformer.prop":w,"logger.prop":m,"onScreenUpdate.prop":R},j)))}));export{m as default};
1
+ import e,{lazy as t,useState as r,useImperativeHandle as n,useCallback as o,useEffect as s,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:R,onScreenUpdate:j,children:O},I)=>{const[S,A]=r(null);n(I,(()=>S));const{projectId:q,baseUrl:x,baseStaticUrl:N,baseCdnUrl:T,storeLastAuthenticatedUser:B,keepLastAuthenticatedUserAfterLogout:F,refreshCookieName:K,sdk:H}=e.useContext(c),J=o((async e=>{await H.httpClient.hooks.afterRequest({},new Response(JSON.stringify(e.detail))),l&&l(e)}),[l]);return s((()=>{const e=S;return null==e||e.addEventListener("success",J),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",J)}}),[S,d,J]),s((()=>{const e=S;return null==e||e.addEventListener("success",J),()=>{null==e||e.removeEventListener("success",J)}}),[S,J]),s((()=>{const e=S;return d&&(null==e||e.addEventListener("error",d)),()=>{d&&(null==e||e.removeEventListener("error",d))}}),[S,d]),s((()=>{const e=S;return u&&(null==e||e.addEventListener("ready",u)),()=>{u&&(null==e||e.removeEventListener("error",u))}}),[S,u]),e.createElement("form",null,e.createElement(a,{fallback:null},e.createElement(i,{projectId:q,flowId:t,baseUrl:x,baseStaticUrl:N,baseCdnUrl:T,ref:A,telemetryKey:g,redirectUrl:k,autoFocus:y,styleId:R,validateOnBlur:U,restartOnError:w,keepLastAuthenticatedUserAfterLogout:F,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":B,"refreshCookieName.attr":K,"errorTransformer.prop":C,"logger.prop":m,"onScreenUpdate.prop":j},O)))}));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,YAEFxB,KAEA,MAAOyB,EAAUC,GAAeC,EAAS,MAEzCC,EAAoB5B,GAAK,IAAMyB,IAE/B,MAAMI,UACJA,EAASC,QACTA,EAAOC,cACPA,EAAaC,WACbA,EAAUC,2BACVA,EAA0BC,qCAC1BA,EAAoCC,kBACpCA,EAAiBC,IACjBA,GACEvC,EAAMwC,WAAWC,GAEfC,EAAgBC,GACpB3D,MAAO4D,UAGCL,EAAI1C,WAAWH,MAAMmD,aACzB,CAAA,EACA,IAAIC,SAASC,KAAKC,UAAUJ,EAAEK,UAE5BxC,GACFA,EAAUmC,EACX,GAEH,CAACnC,IA8CH,OA3CAyC,GAAU,KACR,MAAMC,EAAMvB,EAKZ,OAJAuB,SAAAA,EAAKC,iBAAiB,UAAWV,GAC7BhC,IAASyC,SAAAA,EAAKC,iBAAiB,QAAS1C,IACxCC,IAASwC,SAAAA,EAAKC,iBAAiB,QAASzC,IAErC,KACDD,IAASyC,SAAAA,EAAKE,oBAAoB,QAAS3C,IAC3CC,IAASwC,SAAAA,EAAKE,oBAAoB,QAAS1C,IAE/CwC,SAAAA,EAAKE,oBAAoB,UAAWX,EAAc,CACnD,GACA,CAACd,EAAUlB,EAASgC,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,OAFIlB,IAASyC,SAAAA,EAAKC,iBAAiB,QAAS1C,IAErC,KACDA,IAASyC,SAAAA,EAAKE,oBAAoB,QAAS3C,GAAQ,CACxD,GACA,CAACkB,EAAUlB,IAGdwC,GAAU,KACR,MAAMC,EAAMvB,EAGZ,OAFIjB,IAASwC,SAAAA,EAAKC,iBAAiB,QAASzC,IAErC,KACDA,IAASwC,SAAAA,EAAKE,oBAAoB,QAAS1C,GAAQ,CACxD,GACA,CAACiB,EAAUjB,IASjBX,EAAAI,cAAA,OAAA,KACCJ,EAAAI,cAACkD,EAAQ,CAACC,SAAU,MACnBvD,EAACI,cAAAtB,EACQ,CAAAkD,UAAWA,EACXxB,OAAQA,EACRyB,QAASA,EACTC,cAAeA,EACfC,WAAYA,EACZhC,IAAK0B,EACLV,aAAcA,EACdC,YAAaA,EACbC,UAAWA,EACXI,QAASA,EACTH,eAAgBA,EAChBC,eAAgBA,EAChBc,qCACEA,EAEFxB,OAAQA,EAGN,aAAcC,EACd,cAAeC,EACf,YAAaG,EACb,cAAeD,EACf,aAAcD,EACd,qCAAsCoB,EACtC,yBAA0BE,EAE1B,wBAAyBd,EACzB,cAAeZ,EACf,sBAAuBc,GAGhCC,IAIC"}
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 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 // 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","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,YAEFzB,KAEA,MAAO0B,EAAUC,GAAeC,EAAS,MAEzCC,EAAoB7B,GAAK,IAAM0B,IAE/B,MAAMI,UACJA,EAASC,QACTA,EAAOC,cACPA,EAAaC,WACbA,EAAUC,2BACVA,EAA0BC,qCAC1BA,EAAoCC,kBACpCA,EAAiBC,IACjBA,GACExC,EAAMyC,WAAWC,GAEfC,EAAgBC,GACpB5D,MAAO6D,UAGCL,EAAI3C,WAAWH,MAAMoD,aACzB,CAAA,EACA,IAAIC,SAASC,KAAKC,UAAUJ,EAAEK,UAE5BzC,GACFA,EAAUoC,EACX,GAEH,CAACpC,IA8CH,OA3CA0C,GAAU,KACR,MAAMC,EAAMvB,EAKZ,OAJAuB,SAAAA,EAAKC,iBAAiB,UAAWV,GAC7BjC,IAAS0C,SAAAA,EAAKC,iBAAiB,QAAS3C,IACxCC,IAASyC,SAAAA,EAAKC,iBAAiB,QAAS1C,IAErC,KACDD,IAAS0C,SAAAA,EAAKE,oBAAoB,QAAS5C,IAC3CC,IAASyC,SAAAA,EAAKE,oBAAoB,QAAS3C,IAE/CyC,SAAAA,EAAKE,oBAAoB,UAAWX,EAAc,CACnD,GACA,CAACd,EAAUnB,EAASiC,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,OAFInB,IAAS0C,SAAAA,EAAKC,iBAAiB,QAAS3C,IAErC,KACDA,IAAS0C,SAAAA,EAAKE,oBAAoB,QAAS5C,GAAQ,CACxD,GACA,CAACmB,EAAUnB,IAGdyC,GAAU,KACR,MAAMC,EAAMvB,EAGZ,OAFIlB,IAASyC,SAAAA,EAAKC,iBAAiB,QAAS1C,IAErC,KACDA,IAASyC,SAAAA,EAAKE,oBAAoB,QAAS3C,GAAQ,CACxD,GACA,CAACkB,EAAUlB,IASjBX,EAAAI,cAAA,OAAA,KACCJ,EAAAI,cAACmD,EAAQ,CAACC,SAAU,MACnBxD,EAACI,cAAAtB,EACQ,CAAAmD,UAAWA,EACXzB,OAAQA,EACR0B,QAASA,EACTC,cAAeA,EACfC,WAAYA,EACZjC,IAAK2B,EACLV,aAAcA,EACdC,YAAaA,EACbC,UAAWA,EACXI,QAASA,EACTH,eAAgBA,EAChBC,eAAgBA,EAChBc,qCACEA,EAEFzB,OAAQA,EAGN,aAAcC,EACd,aAAcC,EACd,cAAeC,EACf,YAAaG,EACb,cAAeD,EACf,aAAcD,EACd,qCAAsCoB,EACtC,yBAA0BE,EAE1B,wBAAyBd,EACzB,cAAeb,EACf,sBAAuBe,GAGhCC,IAIC"}
@@ -1,2 +1,2 @@
1
- const e={"x-descope-sdk-name":"react","x-descope-sdk-version":"2.8.0"},d="undefined"!=typeof window;export{d as IS_BROWSER,e as baseHeaders};
1
+ const e={"x-descope-sdk-name":"react","x-descope-sdk-version":"2.9.0"},d="undefined"!=typeof window;export{d as IS_BROWSER,e as baseHeaders};
2
2
  //# sourceMappingURL=constants.js.map
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 o}from"./utils.js";let t;const n=o=>{const n=e(Object.assign({persistTokens:s,autoRefresh:s},o));return t=n,n},i=()=>n({projectId:"temp pid",persistTokens:!1,autoRefresh:!1,storeLastAuthenticatedUser:!1});t=i();const r=()=>s?null==t?void 0:t.getSessionToken():(console.warn("Get session token is not supported in SSR"),""),l=()=>s?null==t?void 0:t.getRefreshToken():(console.warn("Get refresh token is not supported in SSR"),""),d=(e=r())=>null==t?void 0:t.isJwtExpired(e),p=(e=l())=>null==t?void 0:t.isJwtExpired(e),u=o(((e=r(),s)=>null==t?void 0:t.getJwtPermissions(e,s))),a=o(((e=r(),s)=>null==t?void 0:t.getJwtRoles(e,s))),c=(e=l())=>null==t?void 0:t.refresh(e),f=()=>t;export{i as createTempSdk,n as default,f as getGlobalSdk,u as getJwtPermissions,a as getJwtRoles,l as getRefreshToken,r as getSessionToken,p as isRefreshTokenExpired,d as isSessionTokenExpired,c as refresh};
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
@@ -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,CAACP,EAAQF,MAAsBhB,aAAA,EAAAA,EAAWyB,QAAQP,GAE5DQ,EAAe,IAAM1B"}
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;
@@ -1476,4 +1480,4 @@ declare const ApplicationsPortal: React.ForwardRefExoticComponent<Omit<{
1476
1480
  onLogout?: (e: CustomEvent<any>) => void;
1477
1481
  } & React.RefAttributes<HTMLElement>>;
1478
1482
 
1479
- export { AccessKeyManagement, ApplicationsPortal, AuditManagement, AuthProvider, Descope, RoleManagement, SignInFlow, SignUpFlow, SignUpOrInFlow, UserManagement, UserProfile, baseHeaders, getJwtPermissions, getJwtRoles, getRefreshToken, getSessionToken, isRefreshTokenExpired, isSessionTokenExpired, refresh, useDescope, useSession, useUser };
1483
+ export { AccessKeyManagement, ApplicationsPortal, AuditManagement, AuthProvider, Descope, RoleManagement, SignInFlow, SignUpFlow, SignUpOrInFlow, UserManagement, UserProfile, baseHeaders, getCurrentTenant, getJwtPermissions, getJwtRoles, getRefreshToken, getSessionToken, isRefreshTokenExpired, isSessionTokenExpired, refresh, useDescope, useSession, useUser };