@descope/react-sdk 2.22.0 → 2.23.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
@@ -30,6 +30,26 @@ const AppRoot = () => {
30
30
  // must be configured (e.g., https://auth.app.example.com)
31
31
  // and should be set as the baseUrl property.
32
32
  // baseUrl = "https://auth.app.example.com"
33
+
34
+ // Optional: Hooks object for SDK lifecycle events
35
+ // hooks={{
36
+ // beforeRequest: (req) => {
37
+ // console.log('Before request', {
38
+ // method: req.method,
39
+ // path: req.path,
40
+ // queryParams: req.queryParams,
41
+ // });
42
+ // // Modify the request as needed
43
+ // return req;
44
+ // },
45
+ // afterRequest: async (req, res) => {
46
+ // console.log('After request', {
47
+ // reqMethod: req.method,
48
+ // reqPath: req.path,
49
+ // resStatus: res.status,
50
+ // });
51
+ // },
52
+ // }}
33
53
  >
34
54
  <App />
35
55
  </AuthProvider>
@@ -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 o(e){return e&&e.__esModule?e:{default:e}}var n=o(e);exports.default=({projectId:o,baseUrl:a="",baseStaticUrl:i="",baseCdnUrl:u="",sessionTokenViaCookie:c=!1,persistTokens:d=!0,autoRefresh:l=!0,oidcConfig:f,storeLastAuthenticatedUser:h=!0,keepLastAuthenticatedUserAfterLogout:k=!1,refreshCookieName:g="",getExternalToken:S,customStorage:U,children:C})=>{const[L,A]=e.useState(),[m,p]=e.useState(),[b,j]=e.useState(),[v,T]=e.useState(!1),[I,x]=e.useState(!1),[E,R]=e.useState(!1),[q,N]=e.useState(!!f),V=e.useRef(!1),_=r.default({projectId:o,baseUrl:a,persistTokens:d,autoRefresh:l,sessionTokenViaCookie:c,oidcConfig:f,storeLastAuthenticatedUser:h,keepLastAuthenticatedUserAfterLogout:k,refreshCookieName:g,getExternalToken:S,customStorage:U});e.useEffect((()=>{if(_){const e=_.onSessionTokenChange(p),t=_.onUserChange(A),s=_.onIsAuthenticatedChange(T),r=_.onClaimsChange(j);return()=>{e(),t(),s(),r()}}}),[_]);const M=e.useRef(!1),w=e.useRef(!1);e.useEffect((()=>{_&&f&&!V.current&&(V.current=!0,_.oidc.finishLoginIfNeed().finally((()=>{N(!1),M.current=!0})))}),[]);const y=e.useCallback((()=>{M.current||(M.current=!0,R(!0),s.withValidation(null==_?void 0:_.refresh)(void 0,!0).then((()=>{R(!1)})))}),[_]),F=e.useCallback((()=>{w.current||(w.current=!0,x(!0),s.withValidation(_.me)().then((()=>{x(!1)})))}),[_]),O=e.useMemo((()=>({fetchUser:F,user:L,isUserLoading:I,isUserFetched:w.current,fetchSession:y,session:m,isAuthenticated:v,isSessionLoading:E,isOidcLoading:q,isSessionFetched:M.current,projectId:o,baseUrl:a,baseStaticUrl:i,baseCdnUrl:u,storeLastAuthenticatedUser:h,keepLastAuthenticatedUserAfterLogout:k,refreshCookieName:g,customStorage:U,setUser:A,setSession:p,setIsAuthenticated:T,claims:b,sdk:_})),[F,L,I,w.current,y,m,v,E,q,M.current,o,a,i,u,k,g,U,A,p,T,b,_]);return n.default.createElement(t.default.Provider,{value:O},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 o(e){return e&&e.__esModule?e:{default:e}}var n=o(e);exports.default=({projectId:o,baseUrl:a="",baseStaticUrl:i="",baseCdnUrl:u="",sessionTokenViaCookie:c=!1,hooks:d,persistTokens:l=!0,autoRefresh:h=!0,oidcConfig:f,storeLastAuthenticatedUser:k=!0,keepLastAuthenticatedUserAfterLogout:g=!1,refreshCookieName:S="",getExternalToken:U,customStorage:C,children:L})=>{const[A,m]=e.useState(),[p,b]=e.useState(),[j,v]=e.useState(),[T,I]=e.useState(!1),[x,E]=e.useState(!1),[R,q]=e.useState(!1),[N,V]=e.useState(!!f),_=e.useRef(!1),M=r.default({projectId:o,baseUrl:a,persistTokens:l,autoRefresh:h,sessionTokenViaCookie:c,hooks:d,oidcConfig:f,storeLastAuthenticatedUser:k,keepLastAuthenticatedUserAfterLogout:g,refreshCookieName:S,getExternalToken:U,customStorage:C});e.useEffect((()=>{if(M){const e=M.onSessionTokenChange(b),t=M.onUserChange(m),s=M.onIsAuthenticatedChange(I),r=M.onClaimsChange(v);return()=>{e(),t(),s(),r()}}}),[M]);const w=e.useRef(!1),y=e.useRef(!1);e.useEffect((()=>{M&&f&&!_.current&&(_.current=!0,M.oidc.finishLoginIfNeed().finally((()=>{V(!1),w.current=!0})))}),[]);const F=e.useCallback((()=>{w.current||(w.current=!0,q(!0),s.withValidation(null==M?void 0:M.refresh)(void 0,!0).then((()=>{q(!1)})))}),[M]),O=e.useCallback((()=>{y.current||(y.current=!0,E(!0),s.withValidation(M.me)().then((()=>{E(!1)})))}),[M]),P=e.useMemo((()=>({fetchUser:O,user:A,isUserLoading:x,isUserFetched:y.current,fetchSession:F,session:p,isAuthenticated:T,isSessionLoading:R,isOidcLoading:N,isSessionFetched:w.current,projectId:o,baseUrl:a,baseStaticUrl:i,baseCdnUrl:u,storeLastAuthenticatedUser:k,keepLastAuthenticatedUserAfterLogout:g,refreshCookieName:S,customStorage:C,setUser:m,setSession:b,setIsAuthenticated:I,claims:j,sdk:M})),[O,A,x,y.current,F,p,T,R,N,w.current,o,a,i,u,g,S,C,m,b,I,j,M]);return n.default.createElement(t.default.Provider,{value:P},L)};
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 { Claims } from '@descope/core-js-sdk';\nimport { CustomStorage } from '@descope/web-component';\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 // Custom storage object for authentication related data\n customStorage?: CustomStorage;\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 customStorage = undefined,\n children = undefined,\n}) => {\n const [user, setUser] = useState<User>();\n const [session, setSession] = useState<string>();\n const [claims, setClaims] = useState<Claims>();\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 customStorage,\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 const unsubscribeClaims = sdk.onClaimsChange(setClaims);\n\n return () => {\n unsubscribeSessionToken();\n unsubscribeUser();\n unsubscribeIsAuthenticated();\n unsubscribeClaims();\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)(undefined, true).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 customStorage,\n setUser,\n setSession,\n setIsAuthenticated,\n claims,\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 customStorage,\n setUser,\n setSession,\n setIsAuthenticated,\n claims,\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","customStorage","children","user","setUser","useState","session","setSession","claims","setClaims","isAuthenticated","setIsAuthenticated","isUserLoading","setIsUserLoading","isSessionLoading","setIsSessionLoading","isOidcLoading","setIsOidcLoading","isOidcFinishedLogin","useRef","sdk","useSdk","useEffect","unsubscribeSessionToken","onSessionTokenChange","unsubscribeUser","onUserChange","unsubscribeIsAuthenticated","onIsAuthenticatedChange","unsubscribeClaims","onClaimsChange","isSessionFetched","isUserFetched","current","oidc","finishLoginIfNeed","finally","fetchSession","useCallback","withValidation","refresh","undefined","then","fetchUser","me","value","useMemo","React","default","createElement","Context","Provider"],"mappings":"kQAiD6C,EAC3CA,YACAC,UAAU,GACVC,gBAAgB,GAChBC,aAAa,GACbC,yBAAwB,EACxBC,iBAAgB,EAChBC,eAAc,EACdC,aACAC,8BAA6B,EAC7BC,wCAAuC,EACvCC,oBAAoB,GACpBC,mBACAC,gBACAC,eAEA,MAAOC,EAAMC,GAAWC,EAAQA,YACzBC,EAASC,GAAcF,EAAQA,YAC/BG,EAAQC,GAAaJ,EAAQA,YAC7BK,EAAiBC,GAAsBN,EAAQA,UAAC,IAEhDO,EAAeC,GAAoBR,EAAQA,UAAC,IAC5CS,EAAkBC,GAAuBV,EAAQA,UAAC,IAGlDW,EAAeC,GAAoBZ,EAAAA,WAAWT,GAC/CsB,EAAsBC,UAAO,GAE7BC,EAAMC,EAAAA,QAAO,CACjBhC,YACAC,UACAI,gBACAC,cACAF,wBACAG,aACAC,6BACAC,uCACAC,oBACAC,mBACAC,kBAGFqB,EAAAA,WAAU,KACR,GAAIF,EAAK,CACP,MAAMG,EAA0BH,EAAII,qBAAqBjB,GACnDkB,EAAkBL,EAAIM,aAAatB,GACnCuB,EACJP,EAAIQ,wBAAwBjB,GACxBkB,EAAoBT,EAAIU,eAAerB,GAE7C,MAAO,KACLc,IACAE,IACAE,IACAE,GAAmB,CAEtB,CACe,GACf,CAACT,IAEJ,MAAMW,EAAmBZ,UAAO,GAC1Ba,EAAgBb,UAAO,GAI7BG,EAAAA,WAAU,KACJF,GAAOxB,IAAesB,EAAoBe,UAC5Cf,EAAoBe,SAAU,EAC9Bb,EAAIc,KAAKC,oBAAoBC,SAAQ,KACnCnB,GAAiB,GAEjBc,EAAiBE,SAAU,CAAI,IAElC,GACA,IAEH,MAAMI,EAAeC,EAAAA,aAAY,KAE3BP,EAAiBE,UACrBF,EAAiBE,SAAU,EAE3BlB,GAAoB,GACpBwB,EAAAA,eAAenB,aAAA,EAAAA,EAAKoB,QAApBD,MAA6BE,GAAW,GAAMC,MAAK,KACjD3B,GAAoB,EAAM,IAC1B,GACD,CAACK,IAEEuB,EAAYL,EAAAA,aAAY,KAExBN,EAAcC,UAClBD,EAAcC,SAAU,EAExBpB,GAAiB,GACjB0B,EAAAA,eAAenB,EAAIwB,GAAnBL,GAAyBG,MAAK,KAC5B7B,GAAiB,EAAM,IACvB,GACD,CAACO,IAEEyB,EAAQC,EAAAA,SACZ,KAAO,CACLH,YACAxC,OACAS,gBACAoB,cAAeA,EAAcC,QAC7BI,eACA/B,UACAI,kBACAI,mBACAE,gBACAe,iBAAkBA,EAAiBE,QACnC5C,YACAC,UACAC,gBACAC,aACAK,6BACAC,uCACAC,oBACAE,gBACAG,UACAG,aACAI,qBACAH,SACAY,SAEF,CACEuB,EACAxC,EACAS,EACAoB,EAAcC,QACdI,EACA/B,EACAI,EACAI,EACAE,EACAe,EAAiBE,QACjB5C,EACAC,EACAC,EACAC,EACAM,EACAC,EACAE,EACAG,EACAG,EACAI,EACAH,EACAY,IAGJ,OAAO2B,EAAAC,QAAAC,cAACC,UAAQC,SAAQ,CAACN,MAAOA,GAAQ3C,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 { Claims } from '@descope/core-js-sdk';\nimport { CustomStorage } from '@descope/web-component';\nimport Context from '../../hooks/Context';\nimport { IContext, User } from '../../types';\nimport { withValidation } from '../../utils';\nimport useSdk from './useSdk';\n\ntype Hooks = Parameters<typeof useSdk>[0]['hooks'];\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 hooks?: Hooks;\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 // Custom storage object for authentication related data\n customStorage?: CustomStorage;\n children?: React.ReactNode;\n}\n\nconst AuthProvider: FC<IAuthProviderProps> = ({\n projectId,\n baseUrl = '',\n baseStaticUrl = '',\n baseCdnUrl = '',\n sessionTokenViaCookie = false,\n hooks = undefined,\n persistTokens = true,\n autoRefresh = true,\n oidcConfig = undefined,\n storeLastAuthenticatedUser = true,\n keepLastAuthenticatedUserAfterLogout = false,\n refreshCookieName = '',\n getExternalToken = undefined,\n customStorage = undefined,\n children = undefined,\n}) => {\n const [user, setUser] = useState<User>();\n const [session, setSession] = useState<string>();\n const [claims, setClaims] = useState<Claims>();\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 hooks,\n oidcConfig,\n storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout,\n refreshCookieName,\n getExternalToken,\n customStorage,\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 const unsubscribeClaims = sdk.onClaimsChange(setClaims);\n\n return () => {\n unsubscribeSessionToken();\n unsubscribeUser();\n unsubscribeIsAuthenticated();\n unsubscribeClaims();\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)(undefined, true).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 customStorage,\n setUser,\n setSession,\n setIsAuthenticated,\n claims,\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 customStorage,\n setUser,\n setSession,\n setIsAuthenticated,\n claims,\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","hooks","persistTokens","autoRefresh","oidcConfig","storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout","refreshCookieName","getExternalToken","customStorage","children","user","setUser","useState","session","setSession","claims","setClaims","isAuthenticated","setIsAuthenticated","isUserLoading","setIsUserLoading","isSessionLoading","setIsSessionLoading","isOidcLoading","setIsOidcLoading","isOidcFinishedLogin","useRef","sdk","useSdk","useEffect","unsubscribeSessionToken","onSessionTokenChange","unsubscribeUser","onUserChange","unsubscribeIsAuthenticated","onIsAuthenticatedChange","unsubscribeClaims","onClaimsChange","isSessionFetched","isUserFetched","current","oidc","finishLoginIfNeed","finally","fetchSession","useCallback","withValidation","refresh","undefined","then","fetchUser","me","value","useMemo","React","default","createElement","Context","Provider"],"mappings":"kQAoD6C,EAC3CA,YACAC,UAAU,GACVC,gBAAgB,GAChBC,aAAa,GACbC,yBAAwB,EACxBC,QACAC,iBAAgB,EAChBC,eAAc,EACdC,aACAC,8BAA6B,EAC7BC,wCAAuC,EACvCC,oBAAoB,GACpBC,mBACAC,gBACAC,eAEA,MAAOC,EAAMC,GAAWC,EAAQA,YACzBC,EAASC,GAAcF,EAAQA,YAC/BG,EAAQC,GAAaJ,EAAQA,YAC7BK,EAAiBC,GAAsBN,EAAQA,UAAC,IAEhDO,EAAeC,GAAoBR,EAAQA,UAAC,IAC5CS,EAAkBC,GAAuBV,EAAQA,UAAC,IAGlDW,EAAeC,GAAoBZ,EAAAA,WAAWT,GAC/CsB,EAAsBC,UAAO,GAE7BC,EAAMC,EAAAA,QAAO,CACjBjC,YACAC,UACAK,gBACAC,cACAH,wBACAC,QACAG,aACAC,6BACAC,uCACAC,oBACAC,mBACAC,kBAGFqB,EAAAA,WAAU,KACR,GAAIF,EAAK,CACP,MAAMG,EAA0BH,EAAII,qBAAqBjB,GACnDkB,EAAkBL,EAAIM,aAAatB,GACnCuB,EACJP,EAAIQ,wBAAwBjB,GACxBkB,EAAoBT,EAAIU,eAAerB,GAE7C,MAAO,KACLc,IACAE,IACAE,IACAE,GAAmB,CAEtB,CACe,GACf,CAACT,IAEJ,MAAMW,EAAmBZ,UAAO,GAC1Ba,EAAgBb,UAAO,GAI7BG,EAAAA,WAAU,KACJF,GAAOxB,IAAesB,EAAoBe,UAC5Cf,EAAoBe,SAAU,EAC9Bb,EAAIc,KAAKC,oBAAoBC,SAAQ,KACnCnB,GAAiB,GAEjBc,EAAiBE,SAAU,CAAI,IAElC,GACA,IAEH,MAAMI,EAAeC,EAAAA,aAAY,KAE3BP,EAAiBE,UACrBF,EAAiBE,SAAU,EAE3BlB,GAAoB,GACpBwB,EAAAA,eAAenB,aAAA,EAAAA,EAAKoB,QAApBD,MAA6BE,GAAW,GAAMC,MAAK,KACjD3B,GAAoB,EAAM,IAC1B,GACD,CAACK,IAEEuB,EAAYL,EAAAA,aAAY,KAExBN,EAAcC,UAClBD,EAAcC,SAAU,EAExBpB,GAAiB,GACjB0B,EAAAA,eAAenB,EAAIwB,GAAnBL,GAAyBG,MAAK,KAC5B7B,GAAiB,EAAM,IACvB,GACD,CAACO,IAEEyB,EAAQC,EAAAA,SACZ,KAAO,CACLH,YACAxC,OACAS,gBACAoB,cAAeA,EAAcC,QAC7BI,eACA/B,UACAI,kBACAI,mBACAE,gBACAe,iBAAkBA,EAAiBE,QACnC7C,YACAC,UACAC,gBACAC,aACAM,6BACAC,uCACAC,oBACAE,gBACAG,UACAG,aACAI,qBACAH,SACAY,SAEF,CACEuB,EACAxC,EACAS,EACAoB,EAAcC,QACdI,EACA/B,EACAI,EACAI,EACAE,EACAe,EAAiBE,QACjB7C,EACAC,EACAC,EACAC,EACAO,EACAC,EACAE,EACAG,EACAG,EACAI,EACAH,EACAY,IAGJ,OAAO2B,EAAAC,QAAAC,cAACC,UAAQC,SAAQ,CAACN,MAAOA,GAAQ3C,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,autoRefresh:i,sessionTokenViaCookie:n,refreshCookieName:u,oidcConfig:d,storeLastAuthenticatedUser:c,keepLastAuthenticatedUserAfterLogout:f,getExternalToken:k,customStorage:g})=>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:c,keepLastAuthenticatedUserAfterLogout:f,getExternalToken:k,customStorage:g})}),[r,o,JSON.stringify(n),k,g]);
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("../../constants.js"),s=require("../../sdk.js");exports.default=({projectId:o,baseUrl:r,persistTokens:a,autoRefresh:i,sessionTokenViaCookie:n,refreshCookieName:u,oidcConfig:d,storeLastAuthenticatedUser:k,keepLastAuthenticatedUserAfterLogout:c,getExternalToken:f,hooks:h,customStorage:g})=>e.useMemo((()=>{if(o)return s.default({projectId:o,baseUrl:r,sessionTokenViaCookie:n,baseHeaders:t.baseHeaders,persistTokens:a,autoRefresh:i,refreshCookieName:u,oidcConfig:d,storeLastAuthenticatedUser:k,keepLastAuthenticatedUserAfterLogout:c,hooks:h,getExternalToken:f,customStorage:g})}),[o,r,JSON.stringify(n),f,g]);
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 | 'autoRefresh'\n | 'sessionTokenViaCookie'\n | 'storeLastAuthenticatedUser'\n | 'oidcConfig'\n | 'keepLastAuthenticatedUserAfterLogout'\n | 'refreshCookieName'\n | 'getExternalToken'\n | 'customStorage'\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 customStorage,\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 customStorage,\n });\n }, [\n projectId,\n baseUrl,\n // NOTE: Avoid creating another instance of the SDK if the consumer of this\n // component forgot to `useMemo` the object.\n // This is also necessary for a workaround with Next.js SSR when including AuthProvider\n // in RootLayout with another component that forces rerenders.\n //\n // See: https://github.com/descope/etc/issues/11965\n JSON.stringify(sessionTokenViaCookie),\n getExternalToken,\n customStorage,\n ]);\n"],"names":["projectId","baseUrl","persistTokens","autoRefresh","sessionTokenViaCookie","refreshCookieName","oidcConfig","storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout","getExternalToken","customStorage","useMemo","createSdk","baseHeaders","JSON","stringify"],"mappings":"qKAmBe,EACbA,YACAC,UACAC,gBACAC,cACAC,wBACAC,oBACAC,aACAC,6BACAC,uCACAC,mBACAC,mBAEAC,EAAOA,SAAC,KACN,GAAKX,EAGL,OAAOY,UAAU,CACfZ,YACAC,UACAG,oCACAS,EAAWA,YACXX,gBACAC,cACAE,oBACAC,aACAC,6BACAC,uCACAC,mBACAC,iBACA,GACD,CACDV,EACAC,EAOAa,KAAKC,UAAUX,GACfK,EACAC"}
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 | 'hooks'\n | 'oidcConfig'\n | 'keepLastAuthenticatedUserAfterLogout'\n | 'refreshCookieName'\n | 'getExternalToken'\n | 'customStorage'\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 hooks,\n customStorage,\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 hooks,\n getExternalToken,\n customStorage,\n });\n }, [\n projectId,\n baseUrl,\n // NOTE: Avoid creating another instance of the SDK if the consumer of this\n // component forgot to `useMemo` the object.\n // This is also necessary for a workaround with Next.js SSR when including AuthProvider\n // in RootLayout with another component that forces rerenders.\n //\n // See: https://github.com/descope/etc/issues/11965\n JSON.stringify(sessionTokenViaCookie),\n getExternalToken,\n customStorage,\n ]);\n"],"names":["projectId","baseUrl","persistTokens","autoRefresh","sessionTokenViaCookie","refreshCookieName","oidcConfig","storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout","getExternalToken","hooks","customStorage","useMemo","createSdk","baseHeaders","JSON","stringify"],"mappings":"qKAoBe,EACbA,YACAC,UACAC,gBACAC,cACAC,wBACAC,oBACAC,aACAC,6BACAC,uCACAC,mBACAC,QACAC,mBAEAC,EAAAA,SAAQ,KACN,GAAKZ,EAGL,OAAOa,UAAU,CACfb,YACAC,UACAG,oCACAU,EAAWA,YACXZ,gBACAC,cACAE,oBACAC,aACAC,6BACAC,uCACAE,QACAD,mBACAE,iBACA,GACD,CACDX,EACAC,EAOAc,KAAKC,UAAUZ,GACfK,EACAE"}
@@ -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.22.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.23.0"};
2
2
  //# sourceMappingURL=constants.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:l=!1,persistTokens:g=!0,autoRefresh:k=!0,oidcConfig:m,storeLastAuthenticatedUser:U=!0,keepLastAuthenticatedUserAfterLogout:C=!1,refreshCookieName:p="",getExternalToken:L,customStorage:A,children:S})=>{const[b,T]=t(),[j,I]=t(),[v,x]=t(),[N,E]=t(!1),[F,R]=t(!1),[V,y]=t(!1),[O,P]=t(!!m),q=s(!1),w=c({projectId:u,baseUrl:d,persistTokens:g,autoRefresh:k,sessionTokenViaCookie:l,oidcConfig:m,storeLastAuthenticatedUser:U,keepLastAuthenticatedUserAfterLogout:C,refreshCookieName:p,getExternalToken:L,customStorage:A});r((()=>{if(w){const e=w.onSessionTokenChange(I),t=w.onUserChange(T),s=w.onIsAuthenticatedChange(E),r=w.onClaimsChange(x);return()=>{e(),t(),s(),r()}}}),[w]);const z=s(!1),B=s(!1);r((()=>{w&&m&&!q.current&&(q.current=!0,w.oidc.finishLoginIfNeed().finally((()=>{P(!1),z.current=!0})))}),[]);const D=o((()=>{z.current||(z.current=!0,y(!0),a(null==w?void 0:w.refresh)(void 0,!0).then((()=>{y(!1)})))}),[w]),G=o((()=>{B.current||(B.current=!0,R(!0),a(w.me)().then((()=>{R(!1)})))}),[w]),H=n((()=>({fetchUser:G,user:b,isUserLoading:F,isUserFetched:B.current,fetchSession:D,session:j,isAuthenticated:N,isSessionLoading:V,isOidcLoading:O,isSessionFetched:z.current,projectId:u,baseUrl:d,baseStaticUrl:h,baseCdnUrl:f,storeLastAuthenticatedUser:U,keepLastAuthenticatedUserAfterLogout:C,refreshCookieName:p,customStorage:A,setUser:T,setSession:I,setIsAuthenticated:E,claims:v,sdk:w})),[G,b,F,B.current,D,j,N,V,O,z.current,u,d,h,f,C,p,A,T,I,E,v,w]);return e.createElement(i.Provider,{value:H},S)};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,hooks:l,persistTokens:g=!0,autoRefresh:m=!0,oidcConfig:U,storeLastAuthenticatedUser:C=!0,keepLastAuthenticatedUserAfterLogout:p=!1,refreshCookieName:L="",getExternalToken:A,customStorage:S,children:b})=>{const[T,j]=t(),[I,v]=t(),[x,N]=t(),[E,F]=t(!1),[R,V]=t(!1),[y,O]=t(!1),[P,q]=t(!!U),w=s(!1),z=c({projectId:u,baseUrl:d,persistTokens:g,autoRefresh:m,sessionTokenViaCookie:k,hooks:l,oidcConfig:U,storeLastAuthenticatedUser:C,keepLastAuthenticatedUserAfterLogout:p,refreshCookieName:L,getExternalToken:A,customStorage:S});r((()=>{if(z){const e=z.onSessionTokenChange(v),t=z.onUserChange(j),s=z.onIsAuthenticatedChange(F),r=z.onClaimsChange(N);return()=>{e(),t(),s(),r()}}}),[z]);const B=s(!1),D=s(!1);r((()=>{z&&U&&!w.current&&(w.current=!0,z.oidc.finishLoginIfNeed().finally((()=>{q(!1),B.current=!0})))}),[]);const G=o((()=>{B.current||(B.current=!0,O(!0),a(null==z?void 0:z.refresh)(void 0,!0).then((()=>{O(!1)})))}),[z]),H=o((()=>{D.current||(D.current=!0,V(!0),a(z.me)().then((()=>{V(!1)})))}),[z]),J=n((()=>({fetchUser:H,user:T,isUserLoading:R,isUserFetched:D.current,fetchSession:G,session:I,isAuthenticated:E,isSessionLoading:y,isOidcLoading:P,isSessionFetched:B.current,projectId:u,baseUrl:d,baseStaticUrl:h,baseCdnUrl:f,storeLastAuthenticatedUser:C,keepLastAuthenticatedUserAfterLogout:p,refreshCookieName:L,customStorage:S,setUser:j,setSession:v,setIsAuthenticated:F,claims:x,sdk:z})),[H,T,R,D.current,G,I,E,y,P,B.current,u,d,h,f,p,L,S,j,v,F,x,z]);return e.createElement(i.Provider,{value:J},b)};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 { Claims } from '@descope/core-js-sdk';\nimport { CustomStorage } from '@descope/web-component';\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 // Custom storage object for authentication related data\n customStorage?: CustomStorage;\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 customStorage = undefined,\n children = undefined,\n}) => {\n const [user, setUser] = useState<User>();\n const [session, setSession] = useState<string>();\n const [claims, setClaims] = useState<Claims>();\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 customStorage,\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 const unsubscribeClaims = sdk.onClaimsChange(setClaims);\n\n return () => {\n unsubscribeSessionToken();\n unsubscribeUser();\n unsubscribeIsAuthenticated();\n unsubscribeClaims();\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)(undefined, true).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 customStorage,\n setUser,\n setSession,\n setIsAuthenticated,\n claims,\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 customStorage,\n setUser,\n setSession,\n setIsAuthenticated,\n claims,\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","customStorage","children","user","setUser","useState","session","setSession","claims","setClaims","isAuthenticated","setIsAuthenticated","isUserLoading","setIsUserLoading","isSessionLoading","setIsSessionLoading","isOidcLoading","setIsOidcLoading","isOidcFinishedLogin","useRef","sdk","useSdk","useEffect","unsubscribeSessionToken","onSessionTokenChange","unsubscribeUser","onUserChange","unsubscribeIsAuthenticated","onIsAuthenticatedChange","unsubscribeClaims","onClaimsChange","isSessionFetched","isUserFetched","current","oidc","finishLoginIfNeed","finally","fetchSession","useCallback","withValidation","refresh","undefined","then","fetchUser","me","value","useMemo","React","createElement","Context","Provider"],"mappings":"8MAiDM,MAAAA,EAAuC,EAC3CC,YACAC,UAAU,GACVC,gBAAgB,GAChBC,aAAa,GACbC,yBAAwB,EACxBC,iBAAgB,EAChBC,eAAc,EACdC,aACAC,8BAA6B,EAC7BC,wCAAuC,EACvCC,oBAAoB,GACpBC,mBACAC,gBACAC,eAEA,MAAOC,EAAMC,GAAWC,KACjBC,EAASC,GAAcF,KACvBG,EAAQC,GAAaJ,KACrBK,EAAiBC,GAAsBN,GAAS,IAEhDO,EAAeC,GAAoBR,GAAS,IAC5CS,EAAkBC,GAAuBV,GAAS,IAGlDW,EAAeC,GAAoBZ,IAAWT,GAC/CsB,EAAsBC,GAAO,GAE7BC,EAAMC,EAAO,CACjBhC,YACAC,UACAI,gBACAC,cACAF,wBACAG,aACAC,6BACAC,uCACAC,oBACAC,mBACAC,kBAGFqB,GAAU,KACR,GAAIF,EAAK,CACP,MAAMG,EAA0BH,EAAII,qBAAqBjB,GACnDkB,EAAkBL,EAAIM,aAAatB,GACnCuB,EACJP,EAAIQ,wBAAwBjB,GACxBkB,EAAoBT,EAAIU,eAAerB,GAE7C,MAAO,KACLc,IACAE,IACAE,IACAE,GAAmB,CAEtB,CACe,GACf,CAACT,IAEJ,MAAMW,EAAmBZ,GAAO,GAC1Ba,EAAgBb,GAAO,GAI7BG,GAAU,KACJF,GAAOxB,IAAesB,EAAoBe,UAC5Cf,EAAoBe,SAAU,EAC9Bb,EAAIc,KAAKC,oBAAoBC,SAAQ,KACnCnB,GAAiB,GAEjBc,EAAiBE,SAAU,CAAI,IAElC,GACA,IAEH,MAAMI,EAAeC,GAAY,KAE3BP,EAAiBE,UACrBF,EAAiBE,SAAU,EAE3BlB,GAAoB,GACpBwB,EAAenB,aAAA,EAAAA,EAAKoB,QAApBD,MAA6BE,GAAW,GAAMC,MAAK,KACjD3B,GAAoB,EAAM,IAC1B,GACD,CAACK,IAEEuB,EAAYL,GAAY,KAExBN,EAAcC,UAClBD,EAAcC,SAAU,EAExBpB,GAAiB,GACjB0B,EAAenB,EAAIwB,GAAnBL,GAAyBG,MAAK,KAC5B7B,GAAiB,EAAM,IACvB,GACD,CAACO,IAEEyB,EAAQC,GACZ,KAAO,CACLH,YACAxC,OACAS,gBACAoB,cAAeA,EAAcC,QAC7BI,eACA/B,UACAI,kBACAI,mBACAE,gBACAe,iBAAkBA,EAAiBE,QACnC5C,YACAC,UACAC,gBACAC,aACAK,6BACAC,uCACAC,oBACAE,gBACAG,UACAG,aACAI,qBACAH,SACAY,SAEF,CACEuB,EACAxC,EACAS,EACAoB,EAAcC,QACdI,EACA/B,EACAI,EACAI,EACAE,EACAe,EAAiBE,QACjB5C,EACAC,EACAC,EACAC,EACAM,EACAC,EACAE,EACAG,EACAG,EACAI,EACAH,EACAY,IAGJ,OAAO2B,EAAAC,cAACC,EAAQC,SAAQ,CAACL,MAAOA,GAAQ3C,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 { Claims } from '@descope/core-js-sdk';\nimport { CustomStorage } from '@descope/web-component';\nimport Context from '../../hooks/Context';\nimport { IContext, User } from '../../types';\nimport { withValidation } from '../../utils';\nimport useSdk from './useSdk';\n\ntype Hooks = Parameters<typeof useSdk>[0]['hooks'];\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 hooks?: Hooks;\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 // Custom storage object for authentication related data\n customStorage?: CustomStorage;\n children?: React.ReactNode;\n}\n\nconst AuthProvider: FC<IAuthProviderProps> = ({\n projectId,\n baseUrl = '',\n baseStaticUrl = '',\n baseCdnUrl = '',\n sessionTokenViaCookie = false,\n hooks = undefined,\n persistTokens = true,\n autoRefresh = true,\n oidcConfig = undefined,\n storeLastAuthenticatedUser = true,\n keepLastAuthenticatedUserAfterLogout = false,\n refreshCookieName = '',\n getExternalToken = undefined,\n customStorage = undefined,\n children = undefined,\n}) => {\n const [user, setUser] = useState<User>();\n const [session, setSession] = useState<string>();\n const [claims, setClaims] = useState<Claims>();\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 hooks,\n oidcConfig,\n storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout,\n refreshCookieName,\n getExternalToken,\n customStorage,\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 const unsubscribeClaims = sdk.onClaimsChange(setClaims);\n\n return () => {\n unsubscribeSessionToken();\n unsubscribeUser();\n unsubscribeIsAuthenticated();\n unsubscribeClaims();\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)(undefined, true).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 customStorage,\n setUser,\n setSession,\n setIsAuthenticated,\n claims,\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 customStorage,\n setUser,\n setSession,\n setIsAuthenticated,\n claims,\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","hooks","persistTokens","autoRefresh","oidcConfig","storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout","refreshCookieName","getExternalToken","customStorage","children","user","setUser","useState","session","setSession","claims","setClaims","isAuthenticated","setIsAuthenticated","isUserLoading","setIsUserLoading","isSessionLoading","setIsSessionLoading","isOidcLoading","setIsOidcLoading","isOidcFinishedLogin","useRef","sdk","useSdk","useEffect","unsubscribeSessionToken","onSessionTokenChange","unsubscribeUser","onUserChange","unsubscribeIsAuthenticated","onIsAuthenticatedChange","unsubscribeClaims","onClaimsChange","isSessionFetched","isUserFetched","current","oidc","finishLoginIfNeed","finally","fetchSession","useCallback","withValidation","refresh","undefined","then","fetchUser","me","value","useMemo","React","createElement","Context","Provider"],"mappings":"8MAoDA,MAAMA,EAAuC,EAC3CC,YACAC,UAAU,GACVC,gBAAgB,GAChBC,aAAa,GACbC,yBAAwB,EACxBC,QACAC,iBAAgB,EAChBC,eAAc,EACdC,aACAC,8BAA6B,EAC7BC,wCAAuC,EACvCC,oBAAoB,GACpBC,mBACAC,gBACAC,eAEA,MAAOC,EAAMC,GAAWC,KACjBC,EAASC,GAAcF,KACvBG,EAAQC,GAAaJ,KACrBK,EAAiBC,GAAsBN,GAAS,IAEhDO,EAAeC,GAAoBR,GAAS,IAC5CS,EAAkBC,GAAuBV,GAAS,IAGlDW,EAAeC,GAAoBZ,IAAWT,GAC/CsB,EAAsBC,GAAO,GAE7BC,EAAMC,EAAO,CACjBjC,YACAC,UACAK,gBACAC,cACAH,wBACAC,QACAG,aACAC,6BACAC,uCACAC,oBACAC,mBACAC,kBAGFqB,GAAU,KACR,GAAIF,EAAK,CACP,MAAMG,EAA0BH,EAAII,qBAAqBjB,GACnDkB,EAAkBL,EAAIM,aAAatB,GACnCuB,EACJP,EAAIQ,wBAAwBjB,GACxBkB,EAAoBT,EAAIU,eAAerB,GAE7C,MAAO,KACLc,IACAE,IACAE,IACAE,GAAmB,CAEtB,CACe,GACf,CAACT,IAEJ,MAAMW,EAAmBZ,GAAO,GAC1Ba,EAAgBb,GAAO,GAI7BG,GAAU,KACJF,GAAOxB,IAAesB,EAAoBe,UAC5Cf,EAAoBe,SAAU,EAC9Bb,EAAIc,KAAKC,oBAAoBC,SAAQ,KACnCnB,GAAiB,GAEjBc,EAAiBE,SAAU,CAAI,IAElC,GACA,IAEH,MAAMI,EAAeC,GAAY,KAE3BP,EAAiBE,UACrBF,EAAiBE,SAAU,EAE3BlB,GAAoB,GACpBwB,EAAenB,aAAA,EAAAA,EAAKoB,QAApBD,MAA6BE,GAAW,GAAMC,MAAK,KACjD3B,GAAoB,EAAM,IAC1B,GACD,CAACK,IAEEuB,EAAYL,GAAY,KAExBN,EAAcC,UAClBD,EAAcC,SAAU,EAExBpB,GAAiB,GACjB0B,EAAenB,EAAIwB,GAAnBL,GAAyBG,MAAK,KAC5B7B,GAAiB,EAAM,IACvB,GACD,CAACO,IAEEyB,EAAQC,GACZ,KAAO,CACLH,YACAxC,OACAS,gBACAoB,cAAeA,EAAcC,QAC7BI,eACA/B,UACAI,kBACAI,mBACAE,gBACAe,iBAAkBA,EAAiBE,QACnC7C,YACAC,UACAC,gBACAC,aACAM,6BACAC,uCACAC,oBACAE,gBACAG,UACAG,aACAI,qBACAH,SACAY,SAEF,CACEuB,EACAxC,EACAS,EACAoB,EAAcC,QACdI,EACA/B,EACAI,EACAI,EACAE,EACAe,EAAiBE,QACjB7C,EACAC,EACAC,EACAC,EACAO,EACAC,EACAE,EACAG,EACAG,EACAI,EACAH,EACAY,IAGJ,OAAO2B,EAAAC,cAACC,EAAQC,SAAQ,CAACL,MAAOA,GAAQ3C,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,autoRefresh:i,sessionTokenViaCookie:n,refreshCookieName:f,oidcConfig:k,storeLastAuthenticatedUser:c,keepLastAuthenticatedUserAfterLogout:u,getExternalToken:d,customStorage:m})=>e((()=>{if(s)return o({projectId:s,baseUrl:r,sessionTokenViaCookie:n,baseHeaders:t,persistTokens:a,autoRefresh:i,refreshCookieName:f,oidcConfig:k,storeLastAuthenticatedUser:c,keepLastAuthenticatedUserAfterLogout:u,getExternalToken:d,customStorage:m})}),[s,r,JSON.stringify(n),d,m]);export{s as default};
1
+ import{useMemo as e}from"react";import{baseHeaders as o}from"../../constants.js";import t from"../../sdk.js";var s=({projectId:s,baseUrl:r,persistTokens:a,autoRefresh:i,sessionTokenViaCookie:n,refreshCookieName:k,oidcConfig:f,storeLastAuthenticatedUser:c,keepLastAuthenticatedUserAfterLogout:u,getExternalToken:d,hooks:h,customStorage:m})=>e((()=>{if(s)return t({projectId:s,baseUrl:r,sessionTokenViaCookie:n,baseHeaders:o,persistTokens:a,autoRefresh:i,refreshCookieName:k,oidcConfig:f,storeLastAuthenticatedUser:c,keepLastAuthenticatedUserAfterLogout:u,hooks:h,getExternalToken:d,customStorage:m})}),[s,r,JSON.stringify(n),d,m]);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 | 'autoRefresh'\n | 'sessionTokenViaCookie'\n | 'storeLastAuthenticatedUser'\n | 'oidcConfig'\n | 'keepLastAuthenticatedUserAfterLogout'\n | 'refreshCookieName'\n | 'getExternalToken'\n | 'customStorage'\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 customStorage,\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 customStorage,\n });\n }, [\n projectId,\n baseUrl,\n // NOTE: Avoid creating another instance of the SDK if the consumer of this\n // component forgot to `useMemo` the object.\n // This is also necessary for a workaround with Next.js SSR when including AuthProvider\n // in RootLayout with another component that forces rerenders.\n //\n // See: https://github.com/descope/etc/issues/11965\n JSON.stringify(sessionTokenViaCookie),\n getExternalToken,\n customStorage,\n ]);\n"],"names":["useSdk","projectId","baseUrl","persistTokens","autoRefresh","sessionTokenViaCookie","refreshCookieName","oidcConfig","storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout","getExternalToken","customStorage","useMemo","createSdk","baseHeaders","JSON","stringify"],"mappings":"6GAmBA,IAAeA,EAAA,EACbC,YACAC,UACAC,gBACAC,cACAC,wBACAC,oBACAC,aACAC,6BACAC,uCACAC,mBACAC,mBAEAC,GAAQ,KACN,GAAKX,EAGL,OAAOY,EAAU,CACfZ,YACAC,UACAG,wBACAS,cACAX,gBACAC,cACAE,oBACAC,aACAC,6BACAC,uCACAC,mBACAC,iBACA,GACD,CACDV,EACAC,EAOAa,KAAKC,UAAUX,GACfK,EACAC"}
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 | 'hooks'\n | 'oidcConfig'\n | 'keepLastAuthenticatedUserAfterLogout'\n | 'refreshCookieName'\n | 'getExternalToken'\n | 'customStorage'\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 hooks,\n customStorage,\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 hooks,\n getExternalToken,\n customStorage,\n });\n }, [\n projectId,\n baseUrl,\n // NOTE: Avoid creating another instance of the SDK if the consumer of this\n // component forgot to `useMemo` the object.\n // This is also necessary for a workaround with Next.js SSR when including AuthProvider\n // in RootLayout with another component that forces rerenders.\n //\n // See: https://github.com/descope/etc/issues/11965\n JSON.stringify(sessionTokenViaCookie),\n getExternalToken,\n customStorage,\n ]);\n"],"names":["useSdk","projectId","baseUrl","persistTokens","autoRefresh","sessionTokenViaCookie","refreshCookieName","oidcConfig","storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout","getExternalToken","hooks","customStorage","useMemo","createSdk","baseHeaders","JSON","stringify"],"mappings":"6GAoBA,IAAAA,EAAe,EACbC,YACAC,UACAC,gBACAC,cACAC,wBACAC,oBACAC,aACAC,6BACAC,uCACAC,mBACAC,QACAC,mBAEAC,GAAQ,KACN,GAAKZ,EAGL,OAAOa,EAAU,CACfb,YACAC,UACAG,wBACAU,cACAZ,gBACAC,cACAE,oBACAC,aACAC,6BACAC,uCACAE,QACAD,mBACAE,iBACA,GACD,CACDX,EACAC,EAOAc,KAAKC,UAAUZ,GACfK,EACAE"}
@@ -1,2 +1,2 @@
1
- const e={"x-descope-sdk-name":"react","x-descope-sdk-version":"2.22.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.23.0"},d="undefined"!=typeof window;export{d as IS_BROWSER,e as baseHeaders};
2
2
  //# sourceMappingURL=constants.js.map
package/dist/index.d.ts CHANGED
@@ -4,6 +4,8 @@ import { CookieConfig, OidcConfig } from '@descope/web-js-sdk';
4
4
  import * as _descope_web_component from '@descope/web-component';
5
5
  import _descope_web_component__default, { CustomStorage, ILogger, ThemeOptions, FlowJWTResponse, AutoFocusOptions } from '@descope/web-component';
6
6
  export { ILogger } from '@descope/web-component';
7
+ import * as _1 from '@descope/core-js-sdk';
8
+ import * as _2 from 'oidc-client-ts';
7
9
  import AccessKeyManagementWidget from '@descope/access-key-management-widget';
8
10
  import ApplicationsPortalWidget from '@descope/applications-portal-widget';
9
11
  import AuditManagementWidget from '@descope/audit-management-widget';
@@ -11,26 +13,6 @@ import RoleManagementWidget from '@descope/role-management-widget';
11
13
  import TenantProfileWidget from '@descope/tenant-profile-widget';
12
14
  import UserManagementWidget from '@descope/user-management-widget';
13
15
  import UserProfileWidget from '@descope/user-profile-widget';
14
- import * as _1 from '@descope/core-js-sdk';
15
- import * as _2 from 'oidc-client-ts';
16
-
17
- interface IAuthProviderProps {
18
- projectId: string;
19
- baseUrl?: string;
20
- baseStaticUrl?: string;
21
- baseCdnUrl?: string;
22
- persistTokens?: boolean;
23
- autoRefresh?: boolean;
24
- sessionTokenViaCookie?: CookieConfig;
25
- oidcConfig?: OidcConfig;
26
- storeLastAuthenticatedUser?: boolean;
27
- keepLastAuthenticatedUserAfterLogout?: boolean;
28
- refreshCookieName?: string;
29
- getExternalToken?: () => Promise<string>;
30
- customStorage?: CustomStorage;
31
- children?: React.ReactNode;
32
- }
33
- declare const AuthProvider: FC<IAuthProviderProps>;
34
16
 
35
17
  declare const createSdkWrapper: <P extends {
36
18
  projectId: string;
@@ -2041,6 +2023,29 @@ declare const getJwtRoles: (token?: any, tenant?: string) => string[];
2041
2023
  declare const getCurrentTenant: (token?: any) => string;
2042
2024
  declare const refresh: (token?: string) => Promise<_1.SdkResponse<_1.JWTResponse>>;
2043
2025
 
2026
+ type Config = Pick<Parameters<typeof createSdkWrapper>[0], 'projectId' | 'baseUrl' | 'persistTokens' | 'autoRefresh' | 'sessionTokenViaCookie' | 'storeLastAuthenticatedUser' | 'hooks' | 'oidcConfig' | 'keepLastAuthenticatedUserAfterLogout' | 'refreshCookieName' | 'getExternalToken' | 'customStorage'>;
2027
+ declare const _default: ({ projectId, baseUrl, persistTokens, autoRefresh, sessionTokenViaCookie, refreshCookieName, oidcConfig, storeLastAuthenticatedUser, keepLastAuthenticatedUserAfterLogout, getExternalToken, hooks, customStorage, }: Config) => ReturnType<typeof createSdkWrapper>;
2028
+
2029
+ type Hooks = Parameters<typeof _default>[0]['hooks'];
2030
+ interface IAuthProviderProps {
2031
+ projectId: string;
2032
+ baseUrl?: string;
2033
+ baseStaticUrl?: string;
2034
+ baseCdnUrl?: string;
2035
+ persistTokens?: boolean;
2036
+ autoRefresh?: boolean;
2037
+ sessionTokenViaCookie?: CookieConfig;
2038
+ hooks?: Hooks;
2039
+ oidcConfig?: OidcConfig;
2040
+ storeLastAuthenticatedUser?: boolean;
2041
+ keepLastAuthenticatedUserAfterLogout?: boolean;
2042
+ refreshCookieName?: string;
2043
+ getExternalToken?: () => Promise<string>;
2044
+ customStorage?: CustomStorage;
2045
+ children?: React.ReactNode;
2046
+ }
2047
+ declare const AuthProvider: FC<IAuthProviderProps>;
2048
+
2044
2049
  declare global {
2045
2050
  namespace JSX {
2046
2051
  interface IntrinsicElements {