@descope/react-sdk 2.14.26 → 2.16.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
@@ -293,6 +293,11 @@ useEffect(() => {
293
293
  }, [refresh]);
294
294
  ```
295
295
 
296
+
297
+ ### Auto refresh session token
298
+ Descope SDK automatically refreshes the session token when it is about to expire. This is done in the background using the refresh token, without any additional configuration.
299
+ If you want to disable this behavior, you can pass `autoRefresh={false}` to the `AuthProvider` component. This will prevent the SDK from automatically refreshing the session token.
300
+
296
301
  **For more SDK usage examples refer to [docs](https://docs.descope.com/build/guides/client_sdks/)**
297
302
 
298
303
  ### Session token server validation (pass session token to server API)
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("../../hooks/Context.js"),s=require("../../utils.js"),r=require("./useSdk.js");function n(e){return e&&e.__esModule?e:{default:e}}var o=n(e);exports.default=({projectId:n,baseUrl:i="",baseStaticUrl:a="",baseCdnUrl:u="",sessionTokenViaCookie:c=!1,persistTokens:d=!0,oidcConfig:l,storeLastAuthenticatedUser:f=!0,keepLastAuthenticatedUserAfterLogout:h=!1,refreshCookieName:k="",getExternalToken:U,children:C})=>{const[g,S]=e.useState(),[L,A]=e.useState(),[p,b]=e.useState(!1),[j,T]=e.useState(!1),[m,v]=e.useState(!1),[I,x]=e.useState(!!l),E=e.useRef(!1),q=r.default({projectId:n,baseUrl:i,persistTokens:d,sessionTokenViaCookie:c,oidcConfig:l,storeLastAuthenticatedUser:f,keepLastAuthenticatedUserAfterLogout:h,refreshCookieName:k,getExternalToken:U});e.useEffect((()=>{if(q){const e=q.onSessionTokenChange(A),t=q.onUserChange(S),s=q.onIsAuthenticatedChange(b);return()=>{e(),t(),s()}}}),[q]);const N=e.useRef(!1),V=e.useRef(!1);e.useEffect((()=>{q&&l&&!E.current&&(E.current=!0,q.oidc.finishLoginIfNeed().finally((()=>{x(!1),N.current=!0})))}),[]);const _=e.useCallback((()=>{N.current||(N.current=!0,v(!0),s.withValidation(null==q?void 0:q.refresh)().then((()=>{v(!1)})))}),[q]),M=e.useCallback((()=>{V.current||(V.current=!0,T(!0),s.withValidation(q.me)().then((()=>{T(!1)})))}),[q]),R=e.useMemo((()=>({fetchUser:M,user:g,isUserLoading:j,isUserFetched:V.current,fetchSession:_,session:L,isAuthenticated:p,isSessionLoading:m,isOidcLoading:I,isSessionFetched:N.current,projectId:n,baseUrl:i,baseStaticUrl:a,baseCdnUrl:u,storeLastAuthenticatedUser:f,keepLastAuthenticatedUserAfterLogout:h,refreshCookieName:k,setUser:S,setSession:A,setIsAuthenticated:b,sdk:q})),[M,g,j,V.current,_,L,p,m,I,N.current,n,i,a,u,h,k,S,A,b,q]);return o.default.createElement(t.default.Provider,{value:R},C)};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("../../hooks/Context.js"),s=require("../../utils.js"),r=require("./useSdk.js");function n(e){return e&&e.__esModule?e:{default:e}}var o=n(e);exports.default=({projectId:n,baseUrl:a="",baseStaticUrl:i="",baseCdnUrl:u="",sessionTokenViaCookie:c=!1,persistTokens:d=!0,autoRefresh:f=!0,oidcConfig:l,storeLastAuthenticatedUser:h=!0,keepLastAuthenticatedUserAfterLogout:k=!1,refreshCookieName:U="",getExternalToken:C,children:g})=>{const[S,L]=e.useState(),[A,p]=e.useState(),[b,j]=e.useState(!1),[T,m]=e.useState(!1),[v,I]=e.useState(!1),[x,E]=e.useState(!!l),R=e.useRef(!1),q=r.default({projectId:n,baseUrl:a,persistTokens:d,autoRefresh:f,sessionTokenViaCookie:c,oidcConfig:l,storeLastAuthenticatedUser:h,keepLastAuthenticatedUserAfterLogout:k,refreshCookieName:U,getExternalToken:C});e.useEffect((()=>{if(q){const e=q.onSessionTokenChange(p),t=q.onUserChange(L),s=q.onIsAuthenticatedChange(j);return()=>{e(),t(),s()}}}),[q]);const N=e.useRef(!1),V=e.useRef(!1);e.useEffect((()=>{q&&l&&!R.current&&(R.current=!0,q.oidc.finishLoginIfNeed().finally((()=>{E(!1),N.current=!0})))}),[]);const _=e.useCallback((()=>{N.current||(N.current=!0,I(!0),s.withValidation(null==q?void 0:q.refresh)().then((()=>{I(!1)})))}),[q]),M=e.useCallback((()=>{V.current||(V.current=!0,m(!0),s.withValidation(q.me)().then((()=>{m(!1)})))}),[q]),w=e.useMemo((()=>({fetchUser:M,user:S,isUserLoading:T,isUserFetched:V.current,fetchSession:_,session:A,isAuthenticated:b,isSessionLoading:v,isOidcLoading:x,isSessionFetched:N.current,projectId:n,baseUrl:a,baseStaticUrl:i,baseCdnUrl:u,storeLastAuthenticatedUser:h,keepLastAuthenticatedUserAfterLogout:k,refreshCookieName:U,setUser:L,setSession:p,setIsAuthenticated:j,sdk:q})),[M,S,T,V.current,_,A,b,v,x,N.current,n,a,i,u,k,U,L,p,j,q]);return o.default.createElement(t.default.Provider,{value:w},g)};
2
2
  //# sourceMappingURL=AuthProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AuthProvider.js","sources":["../../../../src/components/AuthProvider/AuthProvider.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { CookieConfig, OidcConfig } from '@descope/web-js-sdk';\nimport Context from '../../hooks/Context';\nimport { IContext, User } from '../../types';\nimport { withValidation } from '../../utils';\nimport useSdk from './useSdk';\n\ninterface IAuthProviderProps {\n projectId: string;\n baseUrl?: string;\n // allows to override the base URL that is used to fetch static files\n baseStaticUrl?: string;\n // allows to override the base URL that is used to fetch external script files\n baseCdnUrl?: string;\n // If true, tokens will be stored on local storage and can accessed with getToken function\n persistTokens?: boolean;\n // If true, session token (jwt) will be stored on cookie. Otherwise, the session token will be\n // stored on local storage and can accessed with getSessionToken function\n // Use this option if session token will stay small (less than 1k)\n // NOTE: Session token can grow, especially in cases of using authorization, or adding custom claims\n sessionTokenViaCookie?: CookieConfig;\n // If truthy he SDK refresh and logout functions will use the OIDC client\n // Accepts boolean or OIDC configuration\n oidcConfig?: OidcConfig;\n // If true, last authenticated user will be stored on local storage and can accessed with getUser function\n storeLastAuthenticatedUser?: boolean;\n // If true, last authenticated user will not be removed after logout\n keepLastAuthenticatedUserAfterLogout?: boolean;\n // Use this option if the authentication is done via cookie, and configured with a different name\n // Currently, this is done using Descope Flows\n refreshCookieName?: string;\n // Function to get external token, for seamless migration from external system\n getExternalToken?: () => Promise<string>;\n children?: React.ReactNode;\n}\n\nconst AuthProvider: FC<IAuthProviderProps> = ({\n projectId,\n baseUrl = '',\n baseStaticUrl = '',\n baseCdnUrl = '',\n sessionTokenViaCookie = false,\n persistTokens = true,\n oidcConfig = undefined,\n storeLastAuthenticatedUser = true,\n keepLastAuthenticatedUserAfterLogout = false,\n refreshCookieName = '',\n getExternalToken = undefined,\n children = undefined,\n}) => {\n const [user, setUser] = useState<User>();\n const [session, setSession] = useState<string>();\n const [isAuthenticated, setIsAuthenticated] = useState(false);\n\n const [isUserLoading, setIsUserLoading] = useState(false);\n const [isSessionLoading, setIsSessionLoading] = useState(false);\n\n // if oidc config is enabled, we attempt to finish the login, so we start as loading\n const [isOidcLoading, setIsOidcLoading] = useState(!!oidcConfig);\n const isOidcFinishedLogin = useRef(false);\n\n const sdk = useSdk({\n projectId,\n baseUrl,\n persistTokens,\n sessionTokenViaCookie,\n oidcConfig,\n storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout,\n refreshCookieName,\n getExternalToken,\n });\n\n useEffect(() => {\n if (sdk) {\n const unsubscribeSessionToken = sdk.onSessionTokenChange(setSession);\n const unsubscribeUser = sdk.onUserChange(setUser);\n const unsubscribeIsAuthenticated =\n sdk.onIsAuthenticatedChange(setIsAuthenticated);\n\n return () => {\n unsubscribeSessionToken();\n unsubscribeUser();\n unsubscribeIsAuthenticated();\n };\n }\n return undefined;\n }, [sdk]);\n\n const isSessionFetched = useRef(false);\n const isUserFetched = useRef(false);\n\n // if oidc config is enabled, and we have oidc params in the url\n // we will finish the login (this should run only once)\n useEffect(() => {\n if (sdk && oidcConfig && !isOidcFinishedLogin.current) {\n isOidcFinishedLogin.current = true;\n sdk.oidc.finishLoginIfNeed().finally(() => {\n setIsOidcLoading(false);\n // We want that the session will fetched only once\n isSessionFetched.current = true;\n });\n }\n }, []);\n\n const fetchSession = useCallback(() => {\n // We want that the session will fetched only once\n if (isSessionFetched.current) return;\n isSessionFetched.current = true;\n\n setIsSessionLoading(true);\n withValidation(sdk?.refresh)().then(() => {\n setIsSessionLoading(false);\n });\n }, [sdk]);\n\n const fetchUser = useCallback(() => {\n // We want that the user will fetched only once\n if (isUserFetched.current) return;\n isUserFetched.current = true;\n\n setIsUserLoading(true);\n withValidation(sdk.me)().then(() => {\n setIsUserLoading(false);\n });\n }, [sdk]);\n\n const value = useMemo<IContext>(\n () => ({\n fetchUser,\n user,\n isUserLoading,\n isUserFetched: isUserFetched.current,\n fetchSession,\n session,\n isAuthenticated,\n isSessionLoading,\n isOidcLoading,\n isSessionFetched: isSessionFetched.current,\n projectId,\n baseUrl,\n baseStaticUrl,\n baseCdnUrl,\n storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout,\n refreshCookieName,\n setUser,\n setSession,\n setIsAuthenticated,\n sdk,\n }),\n [\n fetchUser,\n user,\n isUserLoading,\n isUserFetched.current,\n fetchSession,\n session,\n isAuthenticated,\n isSessionLoading,\n isOidcLoading,\n isSessionFetched.current,\n projectId,\n baseUrl,\n baseStaticUrl,\n baseCdnUrl,\n keepLastAuthenticatedUserAfterLogout,\n refreshCookieName,\n setUser,\n setSession,\n setIsAuthenticated,\n sdk,\n ],\n );\n return <Context.Provider value={value}>{children}</Context.Provider>;\n};\n\nexport default AuthProvider;\n"],"names":["projectId","baseUrl","baseStaticUrl","baseCdnUrl","sessionTokenViaCookie","persistTokens","oidcConfig","storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout","refreshCookieName","getExternalToken","children","user","setUser","useState","session","setSession","isAuthenticated","setIsAuthenticated","isUserLoading","setIsUserLoading","isSessionLoading","setIsSessionLoading","isOidcLoading","setIsOidcLoading","isOidcFinishedLogin","useRef","sdk","useSdk","useEffect","unsubscribeSessionToken","onSessionTokenChange","unsubscribeUser","onUserChange","unsubscribeIsAuthenticated","onIsAuthenticatedChange","isSessionFetched","isUserFetched","current","oidc","finishLoginIfNeed","finally","fetchSession","useCallback","withValidation","refresh","then","fetchUser","me","value","useMemo","React","default","createElement","Context","Provider"],"mappings":"kQA2C6C,EAC3CA,YACAC,UAAU,GACVC,gBAAgB,GAChBC,aAAa,GACbC,yBAAwB,EACxBC,iBAAgB,EAChBC,aACAC,8BAA6B,EAC7BC,wCAAuC,EACvCC,oBAAoB,GACpBC,mBACAC,eAEA,MAAOC,EAAMC,GAAWC,EAAQA,YACzBC,EAASC,GAAcF,EAAQA,YAC/BG,EAAiBC,GAAsBJ,EAAQA,UAAC,IAEhDK,EAAeC,GAAoBN,EAAQA,UAAC,IAC5CO,EAAkBC,GAAuBR,EAAQA,UAAC,IAGlDS,EAAeC,GAAoBV,EAAAA,WAAWR,GAC/CmB,EAAsBC,UAAO,GAE7BC,EAAMC,EAAAA,QAAO,CACjB5B,YACAC,UACAI,gBACAD,wBACAE,aACAC,6BACAC,uCACAC,oBACAC,qBAGFmB,EAAAA,WAAU,KACR,GAAIF,EAAK,CACP,MAAMG,EAA0BH,EAAII,qBAAqBf,GACnDgB,EAAkBL,EAAIM,aAAapB,GACnCqB,EACJP,EAAIQ,wBAAwBjB,GAE9B,MAAO,KACLY,IACAE,IACAE,GAA4B,CAE/B,CACe,GACf,CAACP,IAEJ,MAAMS,EAAmBV,UAAO,GAC1BW,EAAgBX,UAAO,GAI7BG,EAAAA,WAAU,KACJF,GAAOrB,IAAemB,EAAoBa,UAC5Cb,EAAoBa,SAAU,EAC9BX,EAAIY,KAAKC,oBAAoBC,SAAQ,KACnCjB,GAAiB,GAEjBY,EAAiBE,SAAU,CAAI,IAElC,GACA,IAEH,MAAMI,EAAeC,EAAAA,aAAY,KAE3BP,EAAiBE,UACrBF,EAAiBE,SAAU,EAE3BhB,GAAoB,GACpBsB,EAAAA,eAAejB,eAAAA,EAAKkB,QAApBD,GAA+BE,MAAK,KAClCxB,GAAoB,EAAM,IAC1B,GACD,CAACK,IAEEoB,EAAYJ,EAAAA,aAAY,KAExBN,EAAcC,UAClBD,EAAcC,SAAU,EAExBlB,GAAiB,GACjBwB,EAAAA,eAAejB,EAAIqB,GAAnBJ,GAAyBE,MAAK,KAC5B1B,GAAiB,EAAM,IACvB,GACD,CAACO,IAEEsB,EAAQC,EAAAA,SACZ,KAAO,CACLH,YACAnC,OACAO,gBACAkB,cAAeA,EAAcC,QAC7BI,eACA3B,UACAE,kBACAI,mBACAE,gBACAa,iBAAkBA,EAAiBE,QACnCtC,YACAC,UACAC,gBACAC,aACAI,6BACAC,uCACAC,oBACAI,UACAG,aACAE,qBACAS,SAEF,CACEoB,EACAnC,EACAO,EACAkB,EAAcC,QACdI,EACA3B,EACAE,EACAI,EACAE,EACAa,EAAiBE,QACjBtC,EACAC,EACAC,EACAC,EACAK,EACAC,EACAI,EACAG,EACAE,EACAS,IAGJ,OAAOwB,EAAAC,QAAAC,cAACC,UAAQC,SAAQ,CAACN,MAAOA,GAAQtC,EAA4B"}
1
+ {"version":3,"file":"AuthProvider.js","sources":["../../../../src/components/AuthProvider/AuthProvider.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { CookieConfig, OidcConfig } from '@descope/web-js-sdk';\nimport Context from '../../hooks/Context';\nimport { IContext, User } from '../../types';\nimport { withValidation } from '../../utils';\nimport useSdk from './useSdk';\n\ninterface IAuthProviderProps {\n projectId: string;\n baseUrl?: string;\n // allows to override the base URL that is used to fetch static files\n baseStaticUrl?: string;\n // allows to override the base URL that is used to fetch external script files\n baseCdnUrl?: string;\n // Default is true. If true, tokens will be stored on local storage and can accessed with getToken function\n persistTokens?: boolean;\n // Default is true. If true, the SDK will automatically refresh the session token when it is about to expire\n autoRefresh?: boolean;\n // If true, session token (jwt) will be stored on cookie. Otherwise, the session token will be\n // stored on local storage and can accessed with getSessionToken function\n // Use this option if session token will stay small (less than 1k)\n // NOTE: Session token can grow, especially in cases of using authorization, or adding custom claims\n sessionTokenViaCookie?: CookieConfig;\n // If truthy he SDK refresh and logout functions will use the OIDC client\n // Accepts boolean or OIDC configuration\n oidcConfig?: OidcConfig;\n // Default is true. If true, last authenticated user will be stored on local storage and can accessed with getUser function\n storeLastAuthenticatedUser?: boolean;\n // If true, last authenticated user will not be removed after logout\n keepLastAuthenticatedUserAfterLogout?: boolean;\n // Use this option if the authentication is done via cookie, and configured with a different name\n // Currently, this is done using Descope Flows\n refreshCookieName?: string;\n // Function to get external token, for seamless migration from external system\n getExternalToken?: () => Promise<string>;\n children?: React.ReactNode;\n}\n\nconst AuthProvider: FC<IAuthProviderProps> = ({\n projectId,\n baseUrl = '',\n baseStaticUrl = '',\n baseCdnUrl = '',\n sessionTokenViaCookie = false,\n persistTokens = true,\n autoRefresh = true,\n oidcConfig = undefined,\n storeLastAuthenticatedUser = true,\n keepLastAuthenticatedUserAfterLogout = false,\n refreshCookieName = '',\n getExternalToken = undefined,\n children = undefined,\n}) => {\n const [user, setUser] = useState<User>();\n const [session, setSession] = useState<string>();\n const [isAuthenticated, setIsAuthenticated] = useState(false);\n\n const [isUserLoading, setIsUserLoading] = useState(false);\n const [isSessionLoading, setIsSessionLoading] = useState(false);\n\n // if oidc config is enabled, we attempt to finish the login, so we start as loading\n const [isOidcLoading, setIsOidcLoading] = useState(!!oidcConfig);\n const isOidcFinishedLogin = useRef(false);\n\n const sdk = useSdk({\n projectId,\n baseUrl,\n persistTokens,\n autoRefresh,\n sessionTokenViaCookie,\n oidcConfig,\n storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout,\n refreshCookieName,\n getExternalToken,\n });\n\n useEffect(() => {\n if (sdk) {\n const unsubscribeSessionToken = sdk.onSessionTokenChange(setSession);\n const unsubscribeUser = sdk.onUserChange(setUser);\n const unsubscribeIsAuthenticated =\n sdk.onIsAuthenticatedChange(setIsAuthenticated);\n\n return () => {\n unsubscribeSessionToken();\n unsubscribeUser();\n unsubscribeIsAuthenticated();\n };\n }\n return undefined;\n }, [sdk]);\n\n const isSessionFetched = useRef(false);\n const isUserFetched = useRef(false);\n\n // if oidc config is enabled, and we have oidc params in the url\n // we will finish the login (this should run only once)\n useEffect(() => {\n if (sdk && oidcConfig && !isOidcFinishedLogin.current) {\n isOidcFinishedLogin.current = true;\n sdk.oidc.finishLoginIfNeed().finally(() => {\n setIsOidcLoading(false);\n // We want that the session will fetched only once\n isSessionFetched.current = true;\n });\n }\n }, []);\n\n const fetchSession = useCallback(() => {\n // We want that the session will fetched only once\n if (isSessionFetched.current) return;\n isSessionFetched.current = true;\n\n setIsSessionLoading(true);\n withValidation(sdk?.refresh)().then(() => {\n setIsSessionLoading(false);\n });\n }, [sdk]);\n\n const fetchUser = useCallback(() => {\n // We want that the user will fetched only once\n if (isUserFetched.current) return;\n isUserFetched.current = true;\n\n setIsUserLoading(true);\n withValidation(sdk.me)().then(() => {\n setIsUserLoading(false);\n });\n }, [sdk]);\n\n const value = useMemo<IContext>(\n () => ({\n fetchUser,\n user,\n isUserLoading,\n isUserFetched: isUserFetched.current,\n fetchSession,\n session,\n isAuthenticated,\n isSessionLoading,\n isOidcLoading,\n isSessionFetched: isSessionFetched.current,\n projectId,\n baseUrl,\n baseStaticUrl,\n baseCdnUrl,\n storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout,\n refreshCookieName,\n setUser,\n setSession,\n setIsAuthenticated,\n sdk,\n }),\n [\n fetchUser,\n user,\n isUserLoading,\n isUserFetched.current,\n fetchSession,\n session,\n isAuthenticated,\n isSessionLoading,\n isOidcLoading,\n isSessionFetched.current,\n projectId,\n baseUrl,\n baseStaticUrl,\n baseCdnUrl,\n keepLastAuthenticatedUserAfterLogout,\n refreshCookieName,\n setUser,\n setSession,\n setIsAuthenticated,\n sdk,\n ],\n );\n return <Context.Provider value={value}>{children}</Context.Provider>;\n};\n\nexport default AuthProvider;\n"],"names":["projectId","baseUrl","baseStaticUrl","baseCdnUrl","sessionTokenViaCookie","persistTokens","autoRefresh","oidcConfig","storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout","refreshCookieName","getExternalToken","children","user","setUser","useState","session","setSession","isAuthenticated","setIsAuthenticated","isUserLoading","setIsUserLoading","isSessionLoading","setIsSessionLoading","isOidcLoading","setIsOidcLoading","isOidcFinishedLogin","useRef","sdk","useSdk","useEffect","unsubscribeSessionToken","onSessionTokenChange","unsubscribeUser","onUserChange","unsubscribeIsAuthenticated","onIsAuthenticatedChange","isSessionFetched","isUserFetched","current","oidc","finishLoginIfNeed","finally","fetchSession","useCallback","withValidation","refresh","then","fetchUser","me","value","useMemo","React","default","createElement","Context","Provider"],"mappings":"kQA6C6C,EAC3CA,YACAC,UAAU,GACVC,gBAAgB,GAChBC,aAAa,GACbC,yBAAwB,EACxBC,iBAAgB,EAChBC,eAAc,EACdC,aACAC,8BAA6B,EAC7BC,wCAAuC,EACvCC,oBAAoB,GACpBC,mBACAC,eAEA,MAAOC,EAAMC,GAAWC,EAAQA,YACzBC,EAASC,GAAcF,EAAQA,YAC/BG,EAAiBC,GAAsBJ,EAAQA,UAAC,IAEhDK,EAAeC,GAAoBN,EAAQA,UAAC,IAC5CO,EAAkBC,GAAuBR,EAAQA,UAAC,IAGlDS,EAAeC,GAAoBV,EAAAA,WAAWR,GAC/CmB,EAAsBC,UAAO,GAE7BC,EAAMC,EAAAA,QAAO,CACjB7B,YACAC,UACAI,gBACAC,cACAF,wBACAG,aACAC,6BACAC,uCACAC,oBACAC,qBAGFmB,EAAAA,WAAU,KACR,GAAIF,EAAK,CACP,MAAMG,EAA0BH,EAAII,qBAAqBf,GACnDgB,EAAkBL,EAAIM,aAAapB,GACnCqB,EACJP,EAAIQ,wBAAwBjB,GAE9B,MAAO,KACLY,IACAE,IACAE,GAA4B,CAE/B,CACe,GACf,CAACP,IAEJ,MAAMS,EAAmBV,UAAO,GAC1BW,EAAgBX,UAAO,GAI7BG,EAAAA,WAAU,KACJF,GAAOrB,IAAemB,EAAoBa,UAC5Cb,EAAoBa,SAAU,EAC9BX,EAAIY,KAAKC,oBAAoBC,SAAQ,KACnCjB,GAAiB,GAEjBY,EAAiBE,SAAU,CAAI,IAElC,GACA,IAEH,MAAMI,EAAeC,EAAAA,aAAY,KAE3BP,EAAiBE,UACrBF,EAAiBE,SAAU,EAE3BhB,GAAoB,GACpBsB,EAAAA,eAAejB,eAAAA,EAAKkB,QAApBD,GAA+BE,MAAK,KAClCxB,GAAoB,EAAM,IAC1B,GACD,CAACK,IAEEoB,EAAYJ,EAAAA,aAAY,KAExBN,EAAcC,UAClBD,EAAcC,SAAU,EAExBlB,GAAiB,GACjBwB,EAAAA,eAAejB,EAAIqB,GAAnBJ,GAAyBE,MAAK,KAC5B1B,GAAiB,EAAM,IACvB,GACD,CAACO,IAEEsB,EAAQC,EAAAA,SACZ,KAAO,CACLH,YACAnC,OACAO,gBACAkB,cAAeA,EAAcC,QAC7BI,eACA3B,UACAE,kBACAI,mBACAE,gBACAa,iBAAkBA,EAAiBE,QACnCvC,YACAC,UACAC,gBACAC,aACAK,6BACAC,uCACAC,oBACAI,UACAG,aACAE,qBACAS,SAEF,CACEoB,EACAnC,EACAO,EACAkB,EAAcC,QACdI,EACA3B,EACAE,EACAI,EACAE,EACAa,EAAiBE,QACjBvC,EACAC,EACAC,EACAC,EACAM,EACAC,EACAI,EACAG,EACAE,EACAS,IAGJ,OAAOwB,EAAAC,QAAAC,cAACC,UAAQC,SAAQ,CAACN,MAAOA,GAAQtC,EAA4B"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("../../constants.js"),s=require("../../sdk.js");exports.default=({projectId:r,baseUrl:o,persistTokens:a,sessionTokenViaCookie:i,refreshCookieName:n,oidcConfig:u,storeLastAuthenticatedUser:d,keepLastAuthenticatedUserAfterLogout:k,getExternalToken:c})=>e.useMemo((()=>{if(r)return s.default({projectId:r,baseUrl:o,sessionTokenViaCookie:i,baseHeaders:t.baseHeaders,persistTokens:a,refreshCookieName:n,oidcConfig:u,storeLastAuthenticatedUser:d,keepLastAuthenticatedUserAfterLogout:k,autoRefresh:!0,getExternalToken:c})}),[r,o,i,c]);
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("../../constants.js"),s=require("../../sdk.js");exports.default=({projectId:r,baseUrl:o,persistTokens:a,autoRefresh:i,sessionTokenViaCookie:n,refreshCookieName:u,oidcConfig:d,storeLastAuthenticatedUser:k,keepLastAuthenticatedUserAfterLogout:c,getExternalToken:f})=>e.useMemo((()=>{if(r)return s.default({projectId:r,baseUrl:o,sessionTokenViaCookie:n,baseHeaders:t.baseHeaders,persistTokens:a,autoRefresh:i,refreshCookieName:u,oidcConfig:d,storeLastAuthenticatedUser:k,keepLastAuthenticatedUserAfterLogout:c,getExternalToken:f})}),[r,o,n,f]);
2
2
  //# sourceMappingURL=useSdk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSdk.js","sources":["../../../../src/components/AuthProvider/useSdk.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { baseHeaders } from '../../constants';\nimport createSdk from '../../sdk';\n\ntype Config = Pick<\n Parameters<typeof createSdk>[0],\n | 'projectId'\n | 'baseUrl'\n | 'persistTokens'\n | 'sessionTokenViaCookie'\n | 'storeLastAuthenticatedUser'\n | 'oidcConfig'\n | 'keepLastAuthenticatedUserAfterLogout'\n | 'refreshCookieName'\n | 'getExternalToken'\n>;\n\nexport default ({\n projectId,\n baseUrl,\n persistTokens,\n sessionTokenViaCookie,\n refreshCookieName,\n oidcConfig,\n storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout,\n getExternalToken,\n}: Config): ReturnType<typeof createSdk> =>\n useMemo(() => {\n if (!projectId) {\n return undefined;\n }\n return createSdk({\n projectId,\n baseUrl,\n sessionTokenViaCookie,\n baseHeaders,\n persistTokens,\n refreshCookieName,\n oidcConfig,\n storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout,\n autoRefresh: true,\n getExternalToken,\n });\n }, [projectId, baseUrl, sessionTokenViaCookie, getExternalToken]);\n"],"names":["projectId","baseUrl","persistTokens","sessionTokenViaCookie","refreshCookieName","oidcConfig","storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout","getExternalToken","useMemo","createSdk","baseHeaders","autoRefresh"],"mappings":"qKAiBe,EACbA,YACAC,UACAC,gBACAC,wBACAC,oBACAC,aACAC,6BACAC,uCACAC,sBAEAC,EAAOA,SAAC,KACN,GAAKT,EAGL,OAAOU,UAAU,CACfV,YACAC,UACAE,oCACAQ,EAAWA,YACXT,gBACAE,oBACAC,aACAC,6BACAC,uCACAK,aAAa,EACbJ,oBACA,GACD,CAACR,EAAWC,EAASE,EAAuBK"}
1
+ {"version":3,"file":"useSdk.js","sources":["../../../../src/components/AuthProvider/useSdk.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { baseHeaders } from '../../constants';\nimport createSdk from '../../sdk';\n\ntype Config = Pick<\n Parameters<typeof createSdk>[0],\n | 'projectId'\n | 'baseUrl'\n | 'persistTokens'\n | 'autoRefresh'\n | 'sessionTokenViaCookie'\n | 'storeLastAuthenticatedUser'\n | 'oidcConfig'\n | 'keepLastAuthenticatedUserAfterLogout'\n | 'refreshCookieName'\n | 'getExternalToken'\n>;\n\nexport default ({\n projectId,\n baseUrl,\n persistTokens,\n autoRefresh,\n sessionTokenViaCookie,\n refreshCookieName,\n oidcConfig,\n storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout,\n getExternalToken,\n}: Config): ReturnType<typeof createSdk> =>\n useMemo(() => {\n if (!projectId) {\n return undefined;\n }\n return createSdk({\n projectId,\n baseUrl,\n sessionTokenViaCookie,\n baseHeaders,\n persistTokens,\n autoRefresh,\n refreshCookieName,\n oidcConfig,\n storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout,\n getExternalToken,\n });\n }, [projectId, baseUrl, sessionTokenViaCookie, getExternalToken]);\n"],"names":["projectId","baseUrl","persistTokens","autoRefresh","sessionTokenViaCookie","refreshCookieName","oidcConfig","storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout","getExternalToken","useMemo","createSdk","baseHeaders"],"mappings":"qKAkBe,EACbA,YACAC,UACAC,gBACAC,cACAC,wBACAC,oBACAC,aACAC,6BACAC,uCACAC,sBAEAC,EAAOA,SAAC,KACN,GAAKV,EAGL,OAAOW,UAAU,CACfX,YACAC,UACAG,oCACAQ,EAAWA,YACXV,gBACAC,cACAE,oBACAC,aACAC,6BACAC,uCACAC,oBACA,GACD,CAACT,EAAWC,EAASG,EAAuBK"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("../hooks/Context.js"),r=require("./withPropsMapping/index.js");function a(e){return e&&e.__esModule?e:{default:e}}var l=a(e);const d=e.lazy((async()=>(await import("@descope/tenant-profile-widget"),{default:r.default(l.default.forwardRef(((e,t)=>l.default.createElement("descope-tenant-profile-widget",Object.assign({ref:t},e)))))}))),s=l.default.forwardRef((({logger:r,theme:a,debug:s,widgetId:n,styleId:o,tenant:u},f)=>{const[i,c]=e.useState(null);e.useImperativeHandle(f,(()=>i));const{projectId:p,baseUrl:g,baseStaticUrl:b,baseCdnUrl:m,refreshCookieName:w}=l.default.useContext(t.default);return l.default.createElement(e.Suspense,{fallback:null},l.default.createElement(d,{projectId:p,widgetId:n,baseUrl:g,baseStaticUrl:b,baseCdnUrl:m,styleId:o,tenant:u,ref:c,"theme.attr":a,"debug.attr":s,"styleId.attr":o,"tenant.attr":u,"refreshCookieName.attr":w,"logger.prop":r}))}));exports.default=s;
2
+ //# sourceMappingURL=TenantProfile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TenantProfile.js","sources":["../../../src/components/TenantProfile.tsx"],"sourcesContent":["import React, { lazy, Suspense, useImperativeHandle, useState } from 'react';\nimport Context from '../hooks/Context';\nimport { TenantProfileProps } from '../types';\nimport withPropsMapping from './withPropsMapping';\n\nconst TenantProfileWC = lazy(async () => {\n await import('@descope/tenant-profile-widget');\n\n return {\n default: withPropsMapping(\n React.forwardRef<HTMLElement>((props, ref) => (\n\t<descope-tenant-profile-widget ref={ref} {...props} />\n )),\n ),\n };\n});\n\nconst TenantProfile = React.forwardRef<HTMLElement, TenantProfileProps>(\n ({ logger, theme, debug, widgetId, styleId, tenant }, ref) => {\n const [innerRef, setInnerRef] = useState(null);\n\n useImperativeHandle(ref, () => innerRef);\n\n const { projectId, baseUrl, baseStaticUrl, baseCdnUrl, refreshCookieName } =\n React.useContext(Context);\n\n return (\n\t<Suspense fallback={null}>\n\t\t<TenantProfileWC\n projectId={projectId}\n widgetId={widgetId}\n baseUrl={baseUrl}\n baseStaticUrl={baseStaticUrl}\n baseCdnUrl={baseCdnUrl}\n styleId={styleId}\n tenant={tenant}\n ref={setInnerRef}\n {...{\n 'theme.attr': theme,\n 'debug.attr': debug,\n 'styleId.attr': styleId,\n 'tenant.attr': tenant,\n 'refreshCookieName.attr': refreshCookieName,\n 'logger.prop': logger,\n }}\n />\n\t</Suspense>\n );\n },\n);\n\nexport default TenantProfile;\n"],"names":["TenantProfileWC","lazy","async","import","default","withPropsMapping","React","forwardRef","props","ref","createElement","Object","assign","TenantProfile","logger","theme","debug","widgetId","styleId","tenant","innerRef","setInnerRef","useState","useImperativeHandle","projectId","baseUrl","baseStaticUrl","baseCdnUrl","refreshCookieName","useContext","Context","Suspense","fallback"],"mappings":"mOAKA,MAAMA,EAAkBC,EAAIA,MAACC,gBACrBC,OAAO,kCAEN,CACLC,QAASC,EAAgBD,QACvBE,UAAMC,YAAwB,CAACC,EAAOC,IAC3CH,EAAAA,QAA+BI,cAAA,gCAAAC,OAAAC,OAAA,CAAAH,IAAKA,GAASD,WAMxCK,EAAgBP,EAAKF,QAACG,YAC1B,EAAGO,SAAQC,QAAOC,QAAOC,WAAUC,UAASC,UAAUV,KACpD,MAAOW,EAAUC,GAAeC,EAAQA,SAAC,MAEzCC,sBAAoBd,GAAK,IAAMW,IAE/B,MAAMI,UAAEA,EAASC,QAAEA,EAAOC,cAAEA,EAAaC,WAAEA,EAAUC,kBAAEA,GACrDtB,EAAKF,QAACyB,WAAWC,EAAAA,SAEnB,OACHxB,EAACF,QAAAM,cAAAqB,EAAQA,SAAC,CAAAC,SAAU,MACnB1B,UAAAI,cAACV,EACO,CAAAwB,UAAWA,EACXP,SAAUA,EACVQ,QAASA,EACTC,cAAeA,EACfC,WAAYA,EACZT,QAASA,EACTC,OAAQA,EACRV,IAAKY,EAEH,aAAcN,EACd,aAAcC,EACd,eAAgBE,EAChB,cAAeC,EACf,yBAA0BS,EAC1B,cAAed,IAIrB"}
@@ -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.14.26"};
1
+ "use strict";const e="undefined"!=typeof window;exports.IS_BROWSER=e,exports.baseHeaders={"x-descope-sdk-name":"react","x-descope-sdk-version":"2.16.0"};
2
2
  //# sourceMappingURL=constants.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"),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;
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/AccessKeyManagement.js"),u=require("./components/ApplicationsPortal.js"),l=require("./components/AuditManagement.js"),x=require("./components/RoleManagement.js"),d=require("./components/TenantProfile.js"),g=require("./components/UserManagement.js"),f=require("./components/UserProfile.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.AccessKeyManagement=a.default,exports.ApplicationsPortal=u.default,exports.AuditManagement=l.default,exports.RoleManagement=x.default,exports.TenantProfile=d.default,exports.UserManagement=g.default,exports.UserProfile=f.default;
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- import e,{useState as t,useRef as s,useEffect as r,useCallback as o,useMemo as n}from"react";import i from"../../hooks/Context.js";import{withValidation as a}from"../../utils.js";import c from"./useSdk.js";const u=({projectId:u,baseUrl:d="",baseStaticUrl:h="",baseCdnUrl:f="",sessionTokenViaCookie:k=!1,persistTokens:l=!0,oidcConfig:U,storeLastAuthenticatedUser:g=!0,keepLastAuthenticatedUserAfterLogout:m=!1,refreshCookieName:p="",getExternalToken:C,children:L})=>{const[A,S]=t(),[b,T]=t(),[j,I]=t(!1),[x,N]=t(!1),[v,E]=t(!1),[F,V]=t(!!U),y=s(!1),O=c({projectId:u,baseUrl:d,persistTokens:l,sessionTokenViaCookie:k,oidcConfig:U,storeLastAuthenticatedUser:g,keepLastAuthenticatedUserAfterLogout:m,refreshCookieName:p,getExternalToken:C});r((()=>{if(O){const e=O.onSessionTokenChange(T),t=O.onUserChange(S),s=O.onIsAuthenticatedChange(I);return()=>{e(),t(),s()}}}),[O]);const P=s(!1),q=s(!1);r((()=>{O&&U&&!y.current&&(y.current=!0,O.oidc.finishLoginIfNeed().finally((()=>{V(!1),P.current=!0})))}),[]);const w=o((()=>{P.current||(P.current=!0,E(!0),a(null==O?void 0:O.refresh)().then((()=>{E(!1)})))}),[O]),z=o((()=>{q.current||(q.current=!0,N(!0),a(O.me)().then((()=>{N(!1)})))}),[O]),B=n((()=>({fetchUser:z,user:A,isUserLoading:x,isUserFetched:q.current,fetchSession:w,session:b,isAuthenticated:j,isSessionLoading:v,isOidcLoading:F,isSessionFetched:P.current,projectId:u,baseUrl:d,baseStaticUrl:h,baseCdnUrl:f,storeLastAuthenticatedUser:g,keepLastAuthenticatedUserAfterLogout:m,refreshCookieName:p,setUser:S,setSession:T,setIsAuthenticated:I,sdk:O})),[z,A,x,q.current,w,b,j,v,F,P.current,u,d,h,f,m,p,S,T,I,O]);return e.createElement(i.Provider,{value:B},L)};export{u as default};
1
+ import e,{useState as t,useRef as s,useEffect as r,useCallback as o,useMemo as n}from"react";import i from"../../hooks/Context.js";import{withValidation as a}from"../../utils.js";import c from"./useSdk.js";const u=({projectId:u,baseUrl:d="",baseStaticUrl:h="",baseCdnUrl:f="",sessionTokenViaCookie:k=!1,persistTokens:l=!0,autoRefresh:U=!0,oidcConfig:g,storeLastAuthenticatedUser:m=!0,keepLastAuthenticatedUserAfterLogout:p=!1,refreshCookieName:C="",getExternalToken:L,children:A})=>{const[S,b]=t(),[T,j]=t(),[I,x]=t(!1),[N,v]=t(!1),[E,F]=t(!1),[R,V]=t(!!g),y=s(!1),O=c({projectId:u,baseUrl:d,persistTokens:l,autoRefresh:U,sessionTokenViaCookie:k,oidcConfig:g,storeLastAuthenticatedUser:m,keepLastAuthenticatedUserAfterLogout:p,refreshCookieName:C,getExternalToken:L});r((()=>{if(O){const e=O.onSessionTokenChange(j),t=O.onUserChange(b),s=O.onIsAuthenticatedChange(x);return()=>{e(),t(),s()}}}),[O]);const P=s(!1),q=s(!1);r((()=>{O&&g&&!y.current&&(y.current=!0,O.oidc.finishLoginIfNeed().finally((()=>{V(!1),P.current=!0})))}),[]);const w=o((()=>{P.current||(P.current=!0,F(!0),a(null==O?void 0:O.refresh)().then((()=>{F(!1)})))}),[O]),z=o((()=>{q.current||(q.current=!0,v(!0),a(O.me)().then((()=>{v(!1)})))}),[O]),B=n((()=>({fetchUser:z,user:S,isUserLoading:N,isUserFetched:q.current,fetchSession:w,session:T,isAuthenticated:I,isSessionLoading:E,isOidcLoading:R,isSessionFetched:P.current,projectId:u,baseUrl:d,baseStaticUrl:h,baseCdnUrl:f,storeLastAuthenticatedUser:m,keepLastAuthenticatedUserAfterLogout:p,refreshCookieName:C,setUser:b,setSession:j,setIsAuthenticated:x,sdk:O})),[z,S,N,q.current,w,T,I,E,R,P.current,u,d,h,f,p,C,b,j,x,O]);return e.createElement(i.Provider,{value:B},A)};export{u as default};
2
2
  //# sourceMappingURL=AuthProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AuthProvider.js","sources":["../../../../src/components/AuthProvider/AuthProvider.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { CookieConfig, OidcConfig } from '@descope/web-js-sdk';\nimport Context from '../../hooks/Context';\nimport { IContext, User } from '../../types';\nimport { withValidation } from '../../utils';\nimport useSdk from './useSdk';\n\ninterface IAuthProviderProps {\n projectId: string;\n baseUrl?: string;\n // allows to override the base URL that is used to fetch static files\n baseStaticUrl?: string;\n // allows to override the base URL that is used to fetch external script files\n baseCdnUrl?: string;\n // If true, tokens will be stored on local storage and can accessed with getToken function\n persistTokens?: boolean;\n // If true, session token (jwt) will be stored on cookie. Otherwise, the session token will be\n // stored on local storage and can accessed with getSessionToken function\n // Use this option if session token will stay small (less than 1k)\n // NOTE: Session token can grow, especially in cases of using authorization, or adding custom claims\n sessionTokenViaCookie?: CookieConfig;\n // If truthy he SDK refresh and logout functions will use the OIDC client\n // Accepts boolean or OIDC configuration\n oidcConfig?: OidcConfig;\n // If true, last authenticated user will be stored on local storage and can accessed with getUser function\n storeLastAuthenticatedUser?: boolean;\n // If true, last authenticated user will not be removed after logout\n keepLastAuthenticatedUserAfterLogout?: boolean;\n // Use this option if the authentication is done via cookie, and configured with a different name\n // Currently, this is done using Descope Flows\n refreshCookieName?: string;\n // Function to get external token, for seamless migration from external system\n getExternalToken?: () => Promise<string>;\n children?: React.ReactNode;\n}\n\nconst AuthProvider: FC<IAuthProviderProps> = ({\n projectId,\n baseUrl = '',\n baseStaticUrl = '',\n baseCdnUrl = '',\n sessionTokenViaCookie = false,\n persistTokens = true,\n oidcConfig = undefined,\n storeLastAuthenticatedUser = true,\n keepLastAuthenticatedUserAfterLogout = false,\n refreshCookieName = '',\n getExternalToken = undefined,\n children = undefined,\n}) => {\n const [user, setUser] = useState<User>();\n const [session, setSession] = useState<string>();\n const [isAuthenticated, setIsAuthenticated] = useState(false);\n\n const [isUserLoading, setIsUserLoading] = useState(false);\n const [isSessionLoading, setIsSessionLoading] = useState(false);\n\n // if oidc config is enabled, we attempt to finish the login, so we start as loading\n const [isOidcLoading, setIsOidcLoading] = useState(!!oidcConfig);\n const isOidcFinishedLogin = useRef(false);\n\n const sdk = useSdk({\n projectId,\n baseUrl,\n persistTokens,\n sessionTokenViaCookie,\n oidcConfig,\n storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout,\n refreshCookieName,\n getExternalToken,\n });\n\n useEffect(() => {\n if (sdk) {\n const unsubscribeSessionToken = sdk.onSessionTokenChange(setSession);\n const unsubscribeUser = sdk.onUserChange(setUser);\n const unsubscribeIsAuthenticated =\n sdk.onIsAuthenticatedChange(setIsAuthenticated);\n\n return () => {\n unsubscribeSessionToken();\n unsubscribeUser();\n unsubscribeIsAuthenticated();\n };\n }\n return undefined;\n }, [sdk]);\n\n const isSessionFetched = useRef(false);\n const isUserFetched = useRef(false);\n\n // if oidc config is enabled, and we have oidc params in the url\n // we will finish the login (this should run only once)\n useEffect(() => {\n if (sdk && oidcConfig && !isOidcFinishedLogin.current) {\n isOidcFinishedLogin.current = true;\n sdk.oidc.finishLoginIfNeed().finally(() => {\n setIsOidcLoading(false);\n // We want that the session will fetched only once\n isSessionFetched.current = true;\n });\n }\n }, []);\n\n const fetchSession = useCallback(() => {\n // We want that the session will fetched only once\n if (isSessionFetched.current) return;\n isSessionFetched.current = true;\n\n setIsSessionLoading(true);\n withValidation(sdk?.refresh)().then(() => {\n setIsSessionLoading(false);\n });\n }, [sdk]);\n\n const fetchUser = useCallback(() => {\n // We want that the user will fetched only once\n if (isUserFetched.current) return;\n isUserFetched.current = true;\n\n setIsUserLoading(true);\n withValidation(sdk.me)().then(() => {\n setIsUserLoading(false);\n });\n }, [sdk]);\n\n const value = useMemo<IContext>(\n () => ({\n fetchUser,\n user,\n isUserLoading,\n isUserFetched: isUserFetched.current,\n fetchSession,\n session,\n isAuthenticated,\n isSessionLoading,\n isOidcLoading,\n isSessionFetched: isSessionFetched.current,\n projectId,\n baseUrl,\n baseStaticUrl,\n baseCdnUrl,\n storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout,\n refreshCookieName,\n setUser,\n setSession,\n setIsAuthenticated,\n sdk,\n }),\n [\n fetchUser,\n user,\n isUserLoading,\n isUserFetched.current,\n fetchSession,\n session,\n isAuthenticated,\n isSessionLoading,\n isOidcLoading,\n isSessionFetched.current,\n projectId,\n baseUrl,\n baseStaticUrl,\n baseCdnUrl,\n keepLastAuthenticatedUserAfterLogout,\n refreshCookieName,\n setUser,\n setSession,\n setIsAuthenticated,\n sdk,\n ],\n );\n return <Context.Provider value={value}>{children}</Context.Provider>;\n};\n\nexport default AuthProvider;\n"],"names":["AuthProvider","projectId","baseUrl","baseStaticUrl","baseCdnUrl","sessionTokenViaCookie","persistTokens","oidcConfig","storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout","refreshCookieName","getExternalToken","children","user","setUser","useState","session","setSession","isAuthenticated","setIsAuthenticated","isUserLoading","setIsUserLoading","isSessionLoading","setIsSessionLoading","isOidcLoading","setIsOidcLoading","isOidcFinishedLogin","useRef","sdk","useSdk","useEffect","unsubscribeSessionToken","onSessionTokenChange","unsubscribeUser","onUserChange","unsubscribeIsAuthenticated","onIsAuthenticatedChange","isSessionFetched","isUserFetched","current","oidc","finishLoginIfNeed","finally","fetchSession","useCallback","withValidation","refresh","then","fetchUser","me","value","useMemo","React","createElement","Context","Provider"],"mappings":"8MA2CM,MAAAA,EAAuC,EAC3CC,YACAC,UAAU,GACVC,gBAAgB,GAChBC,aAAa,GACbC,yBAAwB,EACxBC,iBAAgB,EAChBC,aACAC,8BAA6B,EAC7BC,wCAAuC,EACvCC,oBAAoB,GACpBC,mBACAC,eAEA,MAAOC,EAAMC,GAAWC,KACjBC,EAASC,GAAcF,KACvBG,EAAiBC,GAAsBJ,GAAS,IAEhDK,EAAeC,GAAoBN,GAAS,IAC5CO,EAAkBC,GAAuBR,GAAS,IAGlDS,EAAeC,GAAoBV,IAAWR,GAC/CmB,EAAsBC,GAAO,GAE7BC,EAAMC,EAAO,CACjB5B,YACAC,UACAI,gBACAD,wBACAE,aACAC,6BACAC,uCACAC,oBACAC,qBAGFmB,GAAU,KACR,GAAIF,EAAK,CACP,MAAMG,EAA0BH,EAAII,qBAAqBf,GACnDgB,EAAkBL,EAAIM,aAAapB,GACnCqB,EACJP,EAAIQ,wBAAwBjB,GAE9B,MAAO,KACLY,IACAE,IACAE,GAA4B,CAE/B,CACe,GACf,CAACP,IAEJ,MAAMS,EAAmBV,GAAO,GAC1BW,EAAgBX,GAAO,GAI7BG,GAAU,KACJF,GAAOrB,IAAemB,EAAoBa,UAC5Cb,EAAoBa,SAAU,EAC9BX,EAAIY,KAAKC,oBAAoBC,SAAQ,KACnCjB,GAAiB,GAEjBY,EAAiBE,SAAU,CAAI,IAElC,GACA,IAEH,MAAMI,EAAeC,GAAY,KAE3BP,EAAiBE,UACrBF,EAAiBE,SAAU,EAE3BhB,GAAoB,GACpBsB,EAAejB,eAAAA,EAAKkB,QAApBD,GAA+BE,MAAK,KAClCxB,GAAoB,EAAM,IAC1B,GACD,CAACK,IAEEoB,EAAYJ,GAAY,KAExBN,EAAcC,UAClBD,EAAcC,SAAU,EAExBlB,GAAiB,GACjBwB,EAAejB,EAAIqB,GAAnBJ,GAAyBE,MAAK,KAC5B1B,GAAiB,EAAM,IACvB,GACD,CAACO,IAEEsB,EAAQC,GACZ,KAAO,CACLH,YACAnC,OACAO,gBACAkB,cAAeA,EAAcC,QAC7BI,eACA3B,UACAE,kBACAI,mBACAE,gBACAa,iBAAkBA,EAAiBE,QACnCtC,YACAC,UACAC,gBACAC,aACAI,6BACAC,uCACAC,oBACAI,UACAG,aACAE,qBACAS,SAEF,CACEoB,EACAnC,EACAO,EACAkB,EAAcC,QACdI,EACA3B,EACAE,EACAI,EACAE,EACAa,EAAiBE,QACjBtC,EACAC,EACAC,EACAC,EACAK,EACAC,EACAI,EACAG,EACAE,EACAS,IAGJ,OAAOwB,EAAAC,cAACC,EAAQC,SAAQ,CAACL,MAAOA,GAAQtC,EAA4B"}
1
+ {"version":3,"file":"AuthProvider.js","sources":["../../../../src/components/AuthProvider/AuthProvider.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { CookieConfig, OidcConfig } from '@descope/web-js-sdk';\nimport Context from '../../hooks/Context';\nimport { IContext, User } from '../../types';\nimport { withValidation } from '../../utils';\nimport useSdk from './useSdk';\n\ninterface IAuthProviderProps {\n projectId: string;\n baseUrl?: string;\n // allows to override the base URL that is used to fetch static files\n baseStaticUrl?: string;\n // allows to override the base URL that is used to fetch external script files\n baseCdnUrl?: string;\n // Default is true. If true, tokens will be stored on local storage and can accessed with getToken function\n persistTokens?: boolean;\n // Default is true. If true, the SDK will automatically refresh the session token when it is about to expire\n autoRefresh?: boolean;\n // If true, session token (jwt) will be stored on cookie. Otherwise, the session token will be\n // stored on local storage and can accessed with getSessionToken function\n // Use this option if session token will stay small (less than 1k)\n // NOTE: Session token can grow, especially in cases of using authorization, or adding custom claims\n sessionTokenViaCookie?: CookieConfig;\n // If truthy he SDK refresh and logout functions will use the OIDC client\n // Accepts boolean or OIDC configuration\n oidcConfig?: OidcConfig;\n // Default is true. If true, last authenticated user will be stored on local storage and can accessed with getUser function\n storeLastAuthenticatedUser?: boolean;\n // If true, last authenticated user will not be removed after logout\n keepLastAuthenticatedUserAfterLogout?: boolean;\n // Use this option if the authentication is done via cookie, and configured with a different name\n // Currently, this is done using Descope Flows\n refreshCookieName?: string;\n // Function to get external token, for seamless migration from external system\n getExternalToken?: () => Promise<string>;\n children?: React.ReactNode;\n}\n\nconst AuthProvider: FC<IAuthProviderProps> = ({\n projectId,\n baseUrl = '',\n baseStaticUrl = '',\n baseCdnUrl = '',\n sessionTokenViaCookie = false,\n persistTokens = true,\n autoRefresh = true,\n oidcConfig = undefined,\n storeLastAuthenticatedUser = true,\n keepLastAuthenticatedUserAfterLogout = false,\n refreshCookieName = '',\n getExternalToken = undefined,\n children = undefined,\n}) => {\n const [user, setUser] = useState<User>();\n const [session, setSession] = useState<string>();\n const [isAuthenticated, setIsAuthenticated] = useState(false);\n\n const [isUserLoading, setIsUserLoading] = useState(false);\n const [isSessionLoading, setIsSessionLoading] = useState(false);\n\n // if oidc config is enabled, we attempt to finish the login, so we start as loading\n const [isOidcLoading, setIsOidcLoading] = useState(!!oidcConfig);\n const isOidcFinishedLogin = useRef(false);\n\n const sdk = useSdk({\n projectId,\n baseUrl,\n persistTokens,\n autoRefresh,\n sessionTokenViaCookie,\n oidcConfig,\n storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout,\n refreshCookieName,\n getExternalToken,\n });\n\n useEffect(() => {\n if (sdk) {\n const unsubscribeSessionToken = sdk.onSessionTokenChange(setSession);\n const unsubscribeUser = sdk.onUserChange(setUser);\n const unsubscribeIsAuthenticated =\n sdk.onIsAuthenticatedChange(setIsAuthenticated);\n\n return () => {\n unsubscribeSessionToken();\n unsubscribeUser();\n unsubscribeIsAuthenticated();\n };\n }\n return undefined;\n }, [sdk]);\n\n const isSessionFetched = useRef(false);\n const isUserFetched = useRef(false);\n\n // if oidc config is enabled, and we have oidc params in the url\n // we will finish the login (this should run only once)\n useEffect(() => {\n if (sdk && oidcConfig && !isOidcFinishedLogin.current) {\n isOidcFinishedLogin.current = true;\n sdk.oidc.finishLoginIfNeed().finally(() => {\n setIsOidcLoading(false);\n // We want that the session will fetched only once\n isSessionFetched.current = true;\n });\n }\n }, []);\n\n const fetchSession = useCallback(() => {\n // We want that the session will fetched only once\n if (isSessionFetched.current) return;\n isSessionFetched.current = true;\n\n setIsSessionLoading(true);\n withValidation(sdk?.refresh)().then(() => {\n setIsSessionLoading(false);\n });\n }, [sdk]);\n\n const fetchUser = useCallback(() => {\n // We want that the user will fetched only once\n if (isUserFetched.current) return;\n isUserFetched.current = true;\n\n setIsUserLoading(true);\n withValidation(sdk.me)().then(() => {\n setIsUserLoading(false);\n });\n }, [sdk]);\n\n const value = useMemo<IContext>(\n () => ({\n fetchUser,\n user,\n isUserLoading,\n isUserFetched: isUserFetched.current,\n fetchSession,\n session,\n isAuthenticated,\n isSessionLoading,\n isOidcLoading,\n isSessionFetched: isSessionFetched.current,\n projectId,\n baseUrl,\n baseStaticUrl,\n baseCdnUrl,\n storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout,\n refreshCookieName,\n setUser,\n setSession,\n setIsAuthenticated,\n sdk,\n }),\n [\n fetchUser,\n user,\n isUserLoading,\n isUserFetched.current,\n fetchSession,\n session,\n isAuthenticated,\n isSessionLoading,\n isOidcLoading,\n isSessionFetched.current,\n projectId,\n baseUrl,\n baseStaticUrl,\n baseCdnUrl,\n keepLastAuthenticatedUserAfterLogout,\n refreshCookieName,\n setUser,\n setSession,\n setIsAuthenticated,\n sdk,\n ],\n );\n return <Context.Provider value={value}>{children}</Context.Provider>;\n};\n\nexport default AuthProvider;\n"],"names":["AuthProvider","projectId","baseUrl","baseStaticUrl","baseCdnUrl","sessionTokenViaCookie","persistTokens","autoRefresh","oidcConfig","storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout","refreshCookieName","getExternalToken","children","user","setUser","useState","session","setSession","isAuthenticated","setIsAuthenticated","isUserLoading","setIsUserLoading","isSessionLoading","setIsSessionLoading","isOidcLoading","setIsOidcLoading","isOidcFinishedLogin","useRef","sdk","useSdk","useEffect","unsubscribeSessionToken","onSessionTokenChange","unsubscribeUser","onUserChange","unsubscribeIsAuthenticated","onIsAuthenticatedChange","isSessionFetched","isUserFetched","current","oidc","finishLoginIfNeed","finally","fetchSession","useCallback","withValidation","refresh","then","fetchUser","me","value","useMemo","React","createElement","Context","Provider"],"mappings":"8MA6CM,MAAAA,EAAuC,EAC3CC,YACAC,UAAU,GACVC,gBAAgB,GAChBC,aAAa,GACbC,yBAAwB,EACxBC,iBAAgB,EAChBC,eAAc,EACdC,aACAC,8BAA6B,EAC7BC,wCAAuC,EACvCC,oBAAoB,GACpBC,mBACAC,eAEA,MAAOC,EAAMC,GAAWC,KACjBC,EAASC,GAAcF,KACvBG,EAAiBC,GAAsBJ,GAAS,IAEhDK,EAAeC,GAAoBN,GAAS,IAC5CO,EAAkBC,GAAuBR,GAAS,IAGlDS,EAAeC,GAAoBV,IAAWR,GAC/CmB,EAAsBC,GAAO,GAE7BC,EAAMC,EAAO,CACjB7B,YACAC,UACAI,gBACAC,cACAF,wBACAG,aACAC,6BACAC,uCACAC,oBACAC,qBAGFmB,GAAU,KACR,GAAIF,EAAK,CACP,MAAMG,EAA0BH,EAAII,qBAAqBf,GACnDgB,EAAkBL,EAAIM,aAAapB,GACnCqB,EACJP,EAAIQ,wBAAwBjB,GAE9B,MAAO,KACLY,IACAE,IACAE,GAA4B,CAE/B,CACe,GACf,CAACP,IAEJ,MAAMS,EAAmBV,GAAO,GAC1BW,EAAgBX,GAAO,GAI7BG,GAAU,KACJF,GAAOrB,IAAemB,EAAoBa,UAC5Cb,EAAoBa,SAAU,EAC9BX,EAAIY,KAAKC,oBAAoBC,SAAQ,KACnCjB,GAAiB,GAEjBY,EAAiBE,SAAU,CAAI,IAElC,GACA,IAEH,MAAMI,EAAeC,GAAY,KAE3BP,EAAiBE,UACrBF,EAAiBE,SAAU,EAE3BhB,GAAoB,GACpBsB,EAAejB,eAAAA,EAAKkB,QAApBD,GAA+BE,MAAK,KAClCxB,GAAoB,EAAM,IAC1B,GACD,CAACK,IAEEoB,EAAYJ,GAAY,KAExBN,EAAcC,UAClBD,EAAcC,SAAU,EAExBlB,GAAiB,GACjBwB,EAAejB,EAAIqB,GAAnBJ,GAAyBE,MAAK,KAC5B1B,GAAiB,EAAM,IACvB,GACD,CAACO,IAEEsB,EAAQC,GACZ,KAAO,CACLH,YACAnC,OACAO,gBACAkB,cAAeA,EAAcC,QAC7BI,eACA3B,UACAE,kBACAI,mBACAE,gBACAa,iBAAkBA,EAAiBE,QACnCvC,YACAC,UACAC,gBACAC,aACAK,6BACAC,uCACAC,oBACAI,UACAG,aACAE,qBACAS,SAEF,CACEoB,EACAnC,EACAO,EACAkB,EAAcC,QACdI,EACA3B,EACAE,EACAI,EACAE,EACAa,EAAiBE,QACjBvC,EACAC,EACAC,EACAC,EACAM,EACAC,EACAI,EACAG,EACAE,EACAS,IAGJ,OAAOwB,EAAAC,cAACC,EAAQC,SAAQ,CAACL,MAAOA,GAAQtC,EAA4B"}
@@ -1,2 +1,2 @@
1
- import{useMemo as e}from"react";import{baseHeaders as t}from"../../constants.js";import o from"../../sdk.js";var s=({projectId:s,baseUrl:r,persistTokens:a,sessionTokenViaCookie:i,refreshCookieName:n,oidcConfig:k,storeLastAuthenticatedUser:f,keepLastAuthenticatedUserAfterLogout:d,getExternalToken:c})=>e((()=>{if(s)return o({projectId:s,baseUrl:r,sessionTokenViaCookie:i,baseHeaders:t,persistTokens:a,refreshCookieName:n,oidcConfig:k,storeLastAuthenticatedUser:f,keepLastAuthenticatedUserAfterLogout:d,autoRefresh:!0,getExternalToken:c})}),[s,r,i,c]);export{s as default};
1
+ import{useMemo as e}from"react";import{baseHeaders as t}from"../../constants.js";import o from"../../sdk.js";var s=({projectId:s,baseUrl:r,persistTokens:a,autoRefresh:i,sessionTokenViaCookie:n,refreshCookieName:f,oidcConfig:k,storeLastAuthenticatedUser:d,keepLastAuthenticatedUserAfterLogout:c,getExternalToken:p})=>e((()=>{if(s)return o({projectId:s,baseUrl:r,sessionTokenViaCookie:n,baseHeaders:t,persistTokens:a,autoRefresh:i,refreshCookieName:f,oidcConfig:k,storeLastAuthenticatedUser:d,keepLastAuthenticatedUserAfterLogout:c,getExternalToken:p})}),[s,r,n,p]);export{s as default};
2
2
  //# sourceMappingURL=useSdk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSdk.js","sources":["../../../../src/components/AuthProvider/useSdk.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { baseHeaders } from '../../constants';\nimport createSdk from '../../sdk';\n\ntype Config = Pick<\n Parameters<typeof createSdk>[0],\n | 'projectId'\n | 'baseUrl'\n | 'persistTokens'\n | 'sessionTokenViaCookie'\n | 'storeLastAuthenticatedUser'\n | 'oidcConfig'\n | 'keepLastAuthenticatedUserAfterLogout'\n | 'refreshCookieName'\n | 'getExternalToken'\n>;\n\nexport default ({\n projectId,\n baseUrl,\n persistTokens,\n sessionTokenViaCookie,\n refreshCookieName,\n oidcConfig,\n storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout,\n getExternalToken,\n}: Config): ReturnType<typeof createSdk> =>\n useMemo(() => {\n if (!projectId) {\n return undefined;\n }\n return createSdk({\n projectId,\n baseUrl,\n sessionTokenViaCookie,\n baseHeaders,\n persistTokens,\n refreshCookieName,\n oidcConfig,\n storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout,\n autoRefresh: true,\n getExternalToken,\n });\n }, [projectId, baseUrl, sessionTokenViaCookie, getExternalToken]);\n"],"names":["useSdk","projectId","baseUrl","persistTokens","sessionTokenViaCookie","refreshCookieName","oidcConfig","storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout","getExternalToken","useMemo","createSdk","baseHeaders","autoRefresh"],"mappings":"6GAiBA,IAAeA,EAAA,EACbC,YACAC,UACAC,gBACAC,wBACAC,oBACAC,aACAC,6BACAC,uCACAC,sBAEAC,GAAQ,KACN,GAAKT,EAGL,OAAOU,EAAU,CACfV,YACAC,UACAE,wBACAQ,cACAT,gBACAE,oBACAC,aACAC,6BACAC,uCACAK,aAAa,EACbJ,oBACA,GACD,CAACR,EAAWC,EAASE,EAAuBK"}
1
+ {"version":3,"file":"useSdk.js","sources":["../../../../src/components/AuthProvider/useSdk.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { baseHeaders } from '../../constants';\nimport createSdk from '../../sdk';\n\ntype Config = Pick<\n Parameters<typeof createSdk>[0],\n | 'projectId'\n | 'baseUrl'\n | 'persistTokens'\n | 'autoRefresh'\n | 'sessionTokenViaCookie'\n | 'storeLastAuthenticatedUser'\n | 'oidcConfig'\n | 'keepLastAuthenticatedUserAfterLogout'\n | 'refreshCookieName'\n | 'getExternalToken'\n>;\n\nexport default ({\n projectId,\n baseUrl,\n persistTokens,\n autoRefresh,\n sessionTokenViaCookie,\n refreshCookieName,\n oidcConfig,\n storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout,\n getExternalToken,\n}: Config): ReturnType<typeof createSdk> =>\n useMemo(() => {\n if (!projectId) {\n return undefined;\n }\n return createSdk({\n projectId,\n baseUrl,\n sessionTokenViaCookie,\n baseHeaders,\n persistTokens,\n autoRefresh,\n refreshCookieName,\n oidcConfig,\n storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout,\n getExternalToken,\n });\n }, [projectId, baseUrl, sessionTokenViaCookie, getExternalToken]);\n"],"names":["useSdk","projectId","baseUrl","persistTokens","autoRefresh","sessionTokenViaCookie","refreshCookieName","oidcConfig","storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout","getExternalToken","useMemo","createSdk","baseHeaders"],"mappings":"6GAkBA,IAAeA,EAAA,EACbC,YACAC,UACAC,gBACAC,cACAC,wBACAC,oBACAC,aACAC,6BACAC,uCACAC,sBAEAC,GAAQ,KACN,GAAKV,EAGL,OAAOW,EAAU,CACfX,YACAC,UACAG,wBACAQ,cACAV,gBACAC,cACAE,oBACAC,aACAC,6BACAC,uCACAC,oBACA,GACD,CAACT,EAAWC,EAASG,EAAuBK"}
@@ -0,0 +1,2 @@
1
+ import e,{lazy as t,useState as r,useImperativeHandle as a,Suspense as o}from"react";import n from"../hooks/Context.js";import s from"./withPropsMapping/index.js";const l=t((async()=>(await import("@descope/tenant-profile-widget"),{default:s(e.forwardRef(((t,r)=>e.createElement("descope-tenant-profile-widget",Object.assign({ref:r},t)))))}))),d=e.forwardRef((({logger:t,theme:s,debug:d,widgetId:i,styleId:c,tenant:f},p)=>{const[m,g]=r(null);a(p,(()=>m));const{projectId:b,baseUrl:u,baseStaticUrl:w,baseCdnUrl:I,refreshCookieName:h}=e.useContext(n);return e.createElement(o,{fallback:null},e.createElement(l,{projectId:b,widgetId:i,baseUrl:u,baseStaticUrl:w,baseCdnUrl:I,styleId:c,tenant:f,ref:g,"theme.attr":s,"debug.attr":d,"styleId.attr":c,"tenant.attr":f,"refreshCookieName.attr":h,"logger.prop":t}))}));export{d as default};
2
+ //# sourceMappingURL=TenantProfile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TenantProfile.js","sources":["../../../src/components/TenantProfile.tsx"],"sourcesContent":["import React, { lazy, Suspense, useImperativeHandle, useState } from 'react';\nimport Context from '../hooks/Context';\nimport { TenantProfileProps } from '../types';\nimport withPropsMapping from './withPropsMapping';\n\nconst TenantProfileWC = lazy(async () => {\n await import('@descope/tenant-profile-widget');\n\n return {\n default: withPropsMapping(\n React.forwardRef<HTMLElement>((props, ref) => (\n\t<descope-tenant-profile-widget ref={ref} {...props} />\n )),\n ),\n };\n});\n\nconst TenantProfile = React.forwardRef<HTMLElement, TenantProfileProps>(\n ({ logger, theme, debug, widgetId, styleId, tenant }, ref) => {\n const [innerRef, setInnerRef] = useState(null);\n\n useImperativeHandle(ref, () => innerRef);\n\n const { projectId, baseUrl, baseStaticUrl, baseCdnUrl, refreshCookieName } =\n React.useContext(Context);\n\n return (\n\t<Suspense fallback={null}>\n\t\t<TenantProfileWC\n projectId={projectId}\n widgetId={widgetId}\n baseUrl={baseUrl}\n baseStaticUrl={baseStaticUrl}\n baseCdnUrl={baseCdnUrl}\n styleId={styleId}\n tenant={tenant}\n ref={setInnerRef}\n {...{\n 'theme.attr': theme,\n 'debug.attr': debug,\n 'styleId.attr': styleId,\n 'tenant.attr': tenant,\n 'refreshCookieName.attr': refreshCookieName,\n 'logger.prop': logger,\n }}\n />\n\t</Suspense>\n );\n },\n);\n\nexport default TenantProfile;\n"],"names":["TenantProfileWC","lazy","async","import","default","withPropsMapping","React","forwardRef","props","ref","createElement","Object","assign","TenantProfile","logger","theme","debug","widgetId","styleId","tenant","innerRef","setInnerRef","useState","useImperativeHandle","projectId","baseUrl","baseStaticUrl","baseCdnUrl","refreshCookieName","useContext","Context","Suspense","fallback"],"mappings":"mKAKA,MAAMA,EAAkBC,GAAKC,gBACrBC,OAAO,kCAEN,CACLC,QAASC,EACPC,EAAMC,YAAwB,CAACC,EAAOC,IAC3CH,EAA+BI,cAAA,gCAAAC,OAAAC,OAAA,CAAAH,IAAKA,GAASD,WAMxCK,EAAgBP,EAAMC,YAC1B,EAAGO,SAAQC,QAAOC,QAAOC,WAAUC,UAASC,UAAUV,KACpD,MAAOW,EAAUC,GAAeC,EAAS,MAEzCC,EAAoBd,GAAK,IAAMW,IAE/B,MAAMI,UAAEA,EAASC,QAAEA,EAAOC,cAAEA,EAAaC,WAAEA,EAAUC,kBAAEA,GACrDtB,EAAMuB,WAAWC,GAEnB,OACHxB,EAACI,cAAAqB,EAAS,CAAAC,SAAU,MACnB1B,EAAAI,cAACV,EACO,CAAAwB,UAAWA,EACXP,SAAUA,EACVQ,QAASA,EACTC,cAAeA,EACfC,WAAYA,EACZT,QAASA,EACTC,OAAQA,EACRV,IAAKY,EAEH,aAAcN,EACd,aAAcC,EACd,eAAgBE,EAChB,cAAeC,EACf,yBAA0BS,EAC1B,cAAed,IAIrB"}
@@ -1,2 +1,2 @@
1
- const e={"x-descope-sdk-name":"react","x-descope-sdk-version":"2.14.26"},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.16.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,WAIdC,EAA+B,oBAAXC"}
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/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{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";
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 AccessKeyManagement}from"./components/AccessKeyManagement.js";export{default as ApplicationsPortal}from"./components/ApplicationsPortal.js";export{default as AuditManagement}from"./components/AuditManagement.js";export{default as RoleManagement}from"./components/RoleManagement.js";export{default as TenantProfile}from"./components/TenantProfile.js";export{default as UserManagement}from"./components/UserManagement.js";export{default as UserProfile}from"./components/UserProfile.js";
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.d.ts CHANGED
@@ -1,15 +1,16 @@
1
1
  import React, { FC, DOMAttributes } from 'react';
2
2
  import * as _descope_web_js_sdk from '@descope/web-js-sdk';
3
3
  import { CookieConfig, OidcConfig } from '@descope/web-js-sdk';
4
- import * as _descope_web_component from '@descope/web-component';
5
- import _descope_web_component__default, { ILogger, ThemeOptions, AutoFocusOptions } from '@descope/web-component';
6
- export { ILogger } from '@descope/web-component';
7
- import UserManagementWidget from '@descope/user-management-widget';
8
- import RoleManagementWidget from '@descope/role-management-widget';
9
4
  import AccessKeyManagementWidget from '@descope/access-key-management-widget';
5
+ import ApplicationsPortalWidget from '@descope/applications-portal-widget';
10
6
  import AuditManagementWidget from '@descope/audit-management-widget';
7
+ import RoleManagementWidget from '@descope/role-management-widget';
8
+ import TenantProfileWidget from '@descope/tenant-profile-widget';
9
+ import UserManagementWidget from '@descope/user-management-widget';
11
10
  import UserProfileWidget from '@descope/user-profile-widget';
12
- import ApplicationsPortalWidget from '@descope/applications-portal-widget';
11
+ import * as _descope_web_component from '@descope/web-component';
12
+ import _descope_web_component__default, { ILogger, ThemeOptions, AutoFocusOptions } from '@descope/web-component';
13
+ export { ILogger } from '@descope/web-component';
13
14
  import * as _1 from '@descope/core-js-sdk';
14
15
  import * as _2 from 'oidc-client-ts';
15
16
 
@@ -19,6 +20,7 @@ interface IAuthProviderProps {
19
20
  baseStaticUrl?: string;
20
21
  baseCdnUrl?: string;
21
22
  persistTokens?: boolean;
23
+ autoRefresh?: boolean;
22
24
  sessionTokenViaCookie?: CookieConfig;
23
25
  oidcConfig?: OidcConfig;
24
26
  storeLastAuthenticatedUser?: boolean;
@@ -2125,6 +2127,7 @@ declare global {
2125
2127
  ['descope-audit-management-widget']: AuditManagementCustomElement;
2126
2128
  ['descope-user-profile-widget']: UserProfileCustomElement;
2127
2129
  ['descope-applications-portal-widget']: ApplicationsPortalCustomElement;
2130
+ ['descope-tenant-profile-widget']: TenantProfileCustomElement;
2128
2131
  }
2129
2132
  }
2130
2133
  }
@@ -2152,6 +2155,7 @@ type AccessKeyManagementCustomElement = CustomElement<typeof AccessKeyManagement
2152
2155
  type AuditManagementCustomElement = CustomElement<typeof AuditManagementWidget & AuditManagementProps>;
2153
2156
  type UserProfileCustomElement = CustomElement<typeof UserProfileWidget & UserProfileProps>;
2154
2157
  type ApplicationsPortalCustomElement = CustomElement<typeof ApplicationsPortalWidget & ApplicationsPortalProps>;
2158
+ type TenantProfileCustomElement = CustomElement<typeof TenantProfileWidget & TenantProfileProps>;
2155
2159
  type DescopeProps = {
2156
2160
  flowId: string;
2157
2161
  onSuccess?: CustomEventCb<JWTResponse>;
@@ -2191,6 +2195,7 @@ type UserProfileProps = Omit<WidgetProps, 'tenant'> & {
2191
2195
  type ApplicationsPortalProps = Omit<WidgetProps, 'tenant'> & {
2192
2196
  onLogout?: (e: CustomEvent) => void;
2193
2197
  };
2198
+ type TenantProfileProps = WidgetProps;
2194
2199
 
2195
2200
  type DefaultFlowProps = Omit<DescopeProps, 'flowId'>;
2196
2201
 
@@ -2218,7 +2223,7 @@ declare const baseHeaders: {
2218
2223
  'x-descope-sdk-version': string;
2219
2224
  };
2220
2225
 
2221
- declare const UserManagement: React.ForwardRefExoticComponent<{
2226
+ declare const AccessKeyManagement: React.ForwardRefExoticComponent<{
2222
2227
  logger?: Partial<any>;
2223
2228
  tenant: string;
2224
2229
  widgetId: string;
@@ -2227,16 +2232,18 @@ declare const UserManagement: React.ForwardRefExoticComponent<{
2227
2232
  styleId?: string;
2228
2233
  } & React.RefAttributes<HTMLElement>>;
2229
2234
 
2230
- declare const RoleManagement: React.ForwardRefExoticComponent<{
2235
+ declare const ApplicationsPortal: React.ForwardRefExoticComponent<Omit<{
2231
2236
  logger?: Partial<any>;
2232
2237
  tenant: string;
2233
2238
  widgetId: string;
2234
2239
  theme?: _descope_web_component.ThemeOptions;
2235
2240
  debug?: boolean;
2236
2241
  styleId?: string;
2242
+ }, "tenant"> & {
2243
+ onLogout?: (e: CustomEvent<any>) => void;
2237
2244
  } & React.RefAttributes<HTMLElement>>;
2238
2245
 
2239
- declare const AccessKeyManagement: React.ForwardRefExoticComponent<{
2246
+ declare const AuditManagement: React.ForwardRefExoticComponent<{
2240
2247
  logger?: Partial<any>;
2241
2248
  tenant: string;
2242
2249
  widgetId: string;
@@ -2245,7 +2252,7 @@ declare const AccessKeyManagement: React.ForwardRefExoticComponent<{
2245
2252
  styleId?: string;
2246
2253
  } & React.RefAttributes<HTMLElement>>;
2247
2254
 
2248
- declare const AuditManagement: React.ForwardRefExoticComponent<{
2255
+ declare const RoleManagement: React.ForwardRefExoticComponent<{
2249
2256
  logger?: Partial<any>;
2250
2257
  tenant: string;
2251
2258
  widgetId: string;
@@ -2254,18 +2261,25 @@ declare const AuditManagement: React.ForwardRefExoticComponent<{
2254
2261
  styleId?: string;
2255
2262
  } & React.RefAttributes<HTMLElement>>;
2256
2263
 
2257
- declare const UserProfile: React.ForwardRefExoticComponent<Omit<{
2264
+ declare const TenantProfile: React.ForwardRefExoticComponent<{
2258
2265
  logger?: Partial<any>;
2259
2266
  tenant: string;
2260
2267
  widgetId: string;
2261
2268
  theme?: _descope_web_component.ThemeOptions;
2262
2269
  debug?: boolean;
2263
2270
  styleId?: string;
2264
- }, "tenant"> & {
2265
- onLogout?: (e: CustomEvent<any>) => void;
2266
2271
  } & React.RefAttributes<HTMLElement>>;
2267
2272
 
2268
- declare const ApplicationsPortal: React.ForwardRefExoticComponent<Omit<{
2273
+ declare const UserManagement: React.ForwardRefExoticComponent<{
2274
+ logger?: Partial<any>;
2275
+ tenant: string;
2276
+ widgetId: string;
2277
+ theme?: _descope_web_component.ThemeOptions;
2278
+ debug?: boolean;
2279
+ styleId?: string;
2280
+ } & React.RefAttributes<HTMLElement>>;
2281
+
2282
+ declare const UserProfile: React.ForwardRefExoticComponent<Omit<{
2269
2283
  logger?: Partial<any>;
2270
2284
  tenant: string;
2271
2285
  widgetId: string;
@@ -2276,4 +2290,4 @@ declare const ApplicationsPortal: React.ForwardRefExoticComponent<Omit<{
2276
2290
  onLogout?: (e: CustomEvent<any>) => void;
2277
2291
  } & React.RefAttributes<HTMLElement>>;
2278
2292
 
2279
- export { AccessKeyManagement, ApplicationsPortal, AuditManagement, AuthProvider, Descope, RoleManagement, SignInFlow, SignUpFlow, SignUpOrInFlow, UserManagement, UserProfile, baseHeaders, getCurrentTenant, getJwtPermissions, getJwtRoles, getRefreshToken, getSessionToken, isRefreshTokenExpired, isSessionTokenExpired, refresh, useDescope, useSession, useUser };
2293
+ export { AccessKeyManagement, ApplicationsPortal, AuditManagement, AuthProvider, Descope, RoleManagement, SignInFlow, SignUpFlow, SignUpOrInFlow, TenantProfile, UserManagement, UserProfile, baseHeaders, getCurrentTenant, getJwtPermissions, getJwtRoles, getRefreshToken, getSessionToken, isRefreshTokenExpired, isSessionTokenExpired, refresh, useDescope, useSession, useUser };