@descope/react-sdk 2.10.0 → 2.11.1

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
@@ -377,8 +377,8 @@ Note:
377
377
  The session token cookie is set as a [`Secure`](https://datatracker.ietf.org/doc/html/rfc6265#section-5.2.5) cookie. It will be sent only over HTTPS connections.
378
378
  In addition, some browsers (e.g. Safari) may not store `Secure` cookie if the hosted page is running on an HTTP protocol.
379
379
 
380
- The session token cookie is set to [`SameSite=Strict`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#samesitesamesite-value) by default.
381
- If you need to customize this, you can set `sessionTokenViaCookie={sameSite: 'Lax'}`
380
+ The session token cookie is set to [`SameSite=Strict; Secure;`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie) by default.
381
+ If you need to customize this, you can set `sessionTokenViaCookie={sameSite: 'Lax', secure: false}` (if you pass only `sameSite`, `secure` will be set to `true` by default).
382
382
 
383
383
  #### 3. Configure Descope project to manage session token in cookies
384
384
 
@@ -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 Context from '../../hooks/Context';\nimport { IContext, User } from '../../types';\nimport { withValidation } from '../../utils';\nimport useSdk from './useSdk';\n\ntype SameSite = 'Strict' | 'Lax' | 'None';\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 // 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?: boolean | { sameSite: SameSite };\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 children?: React.ReactNode;\n}\n\nconst AuthProvider: FC<IAuthProviderProps> = ({\n projectId,\n baseUrl = '',\n baseStaticUrl = '',\n sessionTokenViaCookie = false,\n persistTokens = true,\n storeLastAuthenticatedUser = true,\n keepLastAuthenticatedUserAfterLogout = false,\n refreshCookieName = '',\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 const sdk = useSdk({\n projectId,\n baseUrl,\n persistTokens,\n sessionTokenViaCookie,\n storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout,\n refreshCookieName,\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 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 isSessionFetched: isSessionFetched.current,\n projectId,\n baseUrl,\n baseStaticUrl,\n storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout,\n refreshCookieName,\n setUser,\n setSession,\n sdk,\n }),\n [\n fetchUser,\n user,\n isUserLoading,\n isUserFetched.current,\n fetchSession,\n session,\n isAuthenticated,\n isSessionLoading,\n isSessionFetched.current,\n projectId,\n baseUrl,\n baseStaticUrl,\n keepLastAuthenticatedUserAfterLogout,\n refreshCookieName,\n setUser,\n setSession,\n sdk,\n ],\n );\n return <Context.Provider value={value}>{children}</Context.Provider>;\n};\n\nexport default AuthProvider;\n"],"names":["projectId","baseUrl","baseStaticUrl","sessionTokenViaCookie","persistTokens","storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout","refreshCookieName","children","user","setUser","useState","session","setSession","isAuthenticated","setIsAuthenticated","isUserLoading","setIsUserLoading","isSessionLoading","setIsSessionLoading","sdk","useSdk","useEffect","unsubscribeSessionToken","onSessionTokenChange","unsubscribeUser","onUserChange","unsubscribeIsAuthenticated","onIsAuthenticatedChange","isSessionFetched","useRef","isUserFetched","fetchSession","useCallback","current","withValidation","refresh","then","fetchUser","me","value","useMemo","React","default","createElement","Context","Provider"],"mappings":"kQAoC6C,EAC3CA,YACAC,UAAU,GACVC,gBAAgB,GAChBC,yBAAwB,EACxBC,iBAAgB,EAChBC,8BAA6B,EAC7BC,wCAAuC,EACvCC,oBAAoB,GACpBC,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,GAEnDS,EAAMC,EAAAA,QAAO,CACjBrB,YACAC,UACAG,gBACAD,wBACAE,6BACAC,uCACAC,sBAGFe,EAAAA,WAAU,KACR,GAAIF,EAAK,CACP,MAAMG,EAA0BH,EAAII,qBAAqBX,GACnDY,EAAkBL,EAAIM,aAAahB,GACnCiB,EACJP,EAAIQ,wBAAwBb,GAE9B,MAAO,KACLQ,IACAE,IACAE,GAA4B,CAE/B,CACe,GACf,CAACP,IAEJ,MAAMS,EAAmBC,UAAO,GAC1BC,EAAgBD,UAAO,GAEvBE,EAAeC,EAAAA,aAAY,KAE3BJ,EAAiBK,UACrBL,EAAiBK,SAAU,EAE3Bf,GAAoB,GACpBgB,EAAAA,eAAef,eAAAA,EAAKgB,QAApBD,GAA+BE,MAAK,KAClClB,GAAoB,EAAM,IAC1B,GACD,CAACC,IAEEkB,EAAYL,EAAAA,aAAY,KAExBF,EAAcG,UAClBH,EAAcG,SAAU,EAExBjB,GAAiB,GACjBkB,EAAAA,eAAef,EAAImB,GAAnBJ,GAAyBE,MAAK,KAC5BpB,GAAiB,EAAM,IACvB,GACD,CAACG,IAEEoB,EAAQC,EAAAA,SACZ,KAAO,CACLH,YACA7B,OACAO,gBACAe,cAAeA,EAAcG,QAC7BF,eACApB,UACAE,kBACAI,mBACAW,iBAAkBA,EAAiBK,QACnClC,YACAC,UACAC,gBACAG,6BACAC,uCACAC,oBACAG,UACAG,aACAO,SAEF,CACEkB,EACA7B,EACAO,EACAe,EAAcG,QACdF,EACApB,EACAE,EACAI,EACAW,EAAiBK,QACjBlC,EACAC,EACAC,EACAI,EACAC,EACAG,EACAG,EACAO,IAGJ,OAAOsB,EAAAC,QAAAC,cAACC,UAAQC,SAAQ,CAACN,MAAOA,GAAQhC,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 } 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 // 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 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 children?: React.ReactNode;\n}\n\nconst AuthProvider: FC<IAuthProviderProps> = ({\n projectId,\n baseUrl = '',\n baseStaticUrl = '',\n sessionTokenViaCookie = false,\n persistTokens = true,\n storeLastAuthenticatedUser = true,\n keepLastAuthenticatedUserAfterLogout = false,\n refreshCookieName = '',\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 const sdk = useSdk({\n projectId,\n baseUrl,\n persistTokens,\n sessionTokenViaCookie,\n storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout,\n refreshCookieName,\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 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 isSessionFetched: isSessionFetched.current,\n projectId,\n baseUrl,\n baseStaticUrl,\n storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout,\n refreshCookieName,\n setUser,\n setSession,\n sdk,\n }),\n [\n fetchUser,\n user,\n isUserLoading,\n isUserFetched.current,\n fetchSession,\n session,\n isAuthenticated,\n isSessionLoading,\n isSessionFetched.current,\n projectId,\n baseUrl,\n baseStaticUrl,\n keepLastAuthenticatedUserAfterLogout,\n refreshCookieName,\n setUser,\n setSession,\n sdk,\n ],\n );\n return <Context.Provider value={value}>{children}</Context.Provider>;\n};\n\nexport default AuthProvider;\n"],"names":["projectId","baseUrl","baseStaticUrl","sessionTokenViaCookie","persistTokens","storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout","refreshCookieName","children","user","setUser","useState","session","setSession","isAuthenticated","setIsAuthenticated","isUserLoading","setIsUserLoading","isSessionLoading","setIsSessionLoading","sdk","useSdk","useEffect","unsubscribeSessionToken","onSessionTokenChange","unsubscribeUser","onUserChange","unsubscribeIsAuthenticated","onIsAuthenticatedChange","isSessionFetched","useRef","isUserFetched","fetchSession","useCallback","current","withValidation","refresh","then","fetchUser","me","value","useMemo","React","default","createElement","Context","Provider"],"mappings":"kQAoC6C,EAC3CA,YACAC,UAAU,GACVC,gBAAgB,GAChBC,yBAAwB,EACxBC,iBAAgB,EAChBC,8BAA6B,EAC7BC,wCAAuC,EACvCC,oBAAoB,GACpBC,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,GAEnDS,EAAMC,EAAAA,QAAO,CACjBrB,YACAC,UACAG,gBACAD,wBACAE,6BACAC,uCACAC,sBAGFe,EAAAA,WAAU,KACR,GAAIF,EAAK,CACP,MAAMG,EAA0BH,EAAII,qBAAqBX,GACnDY,EAAkBL,EAAIM,aAAahB,GACnCiB,EACJP,EAAIQ,wBAAwBb,GAE9B,MAAO,KACLQ,IACAE,IACAE,GAA4B,CAE/B,CACe,GACf,CAACP,IAEJ,MAAMS,EAAmBC,UAAO,GAC1BC,EAAgBD,UAAO,GAEvBE,EAAeC,EAAAA,aAAY,KAE3BJ,EAAiBK,UACrBL,EAAiBK,SAAU,EAE3Bf,GAAoB,GACpBgB,EAAAA,eAAef,eAAAA,EAAKgB,QAApBD,GAA+BE,MAAK,KAClClB,GAAoB,EAAM,IAC1B,GACD,CAACC,IAEEkB,EAAYL,EAAAA,aAAY,KAExBF,EAAcG,UAClBH,EAAcG,SAAU,EAExBjB,GAAiB,GACjBkB,EAAAA,eAAef,EAAImB,GAAnBJ,GAAyBE,MAAK,KAC5BpB,GAAiB,EAAM,IACvB,GACD,CAACG,IAEEoB,EAAQC,EAAAA,SACZ,KAAO,CACLH,YACA7B,OACAO,gBACAe,cAAeA,EAAcG,QAC7BF,eACApB,UACAE,kBACAI,mBACAW,iBAAkBA,EAAiBK,QACnClC,YACAC,UACAC,gBACAG,6BACAC,uCACAC,oBACAG,UACAG,aACAO,SAEF,CACEkB,EACA7B,EACAO,EACAe,EAAcG,QACdF,EACApB,EACAE,EACAI,EACAW,EAAiBK,QACjBlC,EACAC,EACAC,EACAI,EACAC,EACAG,EACAG,EACAO,IAGJ,OAAOsB,EAAAC,QAAAC,cAACC,UAAQC,SAAQ,CAACN,MAAOA,GAAQhC,EAA4B"}
@@ -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.10.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.11.1"};
2
2
  //# sourceMappingURL=constants.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 Context from '../../hooks/Context';\nimport { IContext, User } from '../../types';\nimport { withValidation } from '../../utils';\nimport useSdk from './useSdk';\n\ntype SameSite = 'Strict' | 'Lax' | 'None';\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 // 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?: boolean | { sameSite: SameSite };\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 children?: React.ReactNode;\n}\n\nconst AuthProvider: FC<IAuthProviderProps> = ({\n projectId,\n baseUrl = '',\n baseStaticUrl = '',\n sessionTokenViaCookie = false,\n persistTokens = true,\n storeLastAuthenticatedUser = true,\n keepLastAuthenticatedUserAfterLogout = false,\n refreshCookieName = '',\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 const sdk = useSdk({\n projectId,\n baseUrl,\n persistTokens,\n sessionTokenViaCookie,\n storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout,\n refreshCookieName,\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 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 isSessionFetched: isSessionFetched.current,\n projectId,\n baseUrl,\n baseStaticUrl,\n storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout,\n refreshCookieName,\n setUser,\n setSession,\n sdk,\n }),\n [\n fetchUser,\n user,\n isUserLoading,\n isUserFetched.current,\n fetchSession,\n session,\n isAuthenticated,\n isSessionLoading,\n isSessionFetched.current,\n projectId,\n baseUrl,\n baseStaticUrl,\n keepLastAuthenticatedUserAfterLogout,\n refreshCookieName,\n setUser,\n setSession,\n sdk,\n ],\n );\n return <Context.Provider value={value}>{children}</Context.Provider>;\n};\n\nexport default AuthProvider;\n"],"names":["AuthProvider","projectId","baseUrl","baseStaticUrl","sessionTokenViaCookie","persistTokens","storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout","refreshCookieName","children","user","setUser","useState","session","setSession","isAuthenticated","setIsAuthenticated","isUserLoading","setIsUserLoading","isSessionLoading","setIsSessionLoading","sdk","useSdk","useEffect","unsubscribeSessionToken","onSessionTokenChange","unsubscribeUser","onUserChange","unsubscribeIsAuthenticated","onIsAuthenticatedChange","isSessionFetched","useRef","isUserFetched","fetchSession","useCallback","current","withValidation","refresh","then","fetchUser","me","value","useMemo","React","createElement","Context","Provider"],"mappings":"8MAoCA,MAAMA,EAAuC,EAC3CC,YACAC,UAAU,GACVC,gBAAgB,GAChBC,yBAAwB,EACxBC,iBAAgB,EAChBC,8BAA6B,EAC7BC,wCAAuC,EACvCC,oBAAoB,GACpBC,eAEA,MAAOC,EAAMC,GAAWC,KACjBC,EAASC,GAAcF,KACvBG,EAAiBC,GAAsBJ,GAAS,IAEhDK,EAAeC,GAAoBN,GAAS,IAC5CO,EAAkBC,GAAuBR,GAAS,GAEnDS,EAAMC,EAAO,CACjBrB,YACAC,UACAG,gBACAD,wBACAE,6BACAC,uCACAC,sBAGFe,GAAU,KACR,GAAIF,EAAK,CACP,MAAMG,EAA0BH,EAAII,qBAAqBX,GACnDY,EAAkBL,EAAIM,aAAahB,GACnCiB,EACJP,EAAIQ,wBAAwBb,GAE9B,MAAO,KACLQ,IACAE,IACAE,GAA4B,CAE/B,CACe,GACf,CAACP,IAEJ,MAAMS,EAAmBC,GAAO,GAC1BC,EAAgBD,GAAO,GAEvBE,EAAeC,GAAY,KAE3BJ,EAAiBK,UACrBL,EAAiBK,SAAU,EAE3Bf,GAAoB,GACpBgB,EAAef,eAAAA,EAAKgB,QAApBD,GAA+BE,MAAK,KAClClB,GAAoB,EAAM,IAC1B,GACD,CAACC,IAEEkB,EAAYL,GAAY,KAExBF,EAAcG,UAClBH,EAAcG,SAAU,EAExBjB,GAAiB,GACjBkB,EAAef,EAAImB,GAAnBJ,GAAyBE,MAAK,KAC5BpB,GAAiB,EAAM,IACvB,GACD,CAACG,IAEEoB,EAAQC,GACZ,KAAO,CACLH,YACA7B,OACAO,gBACAe,cAAeA,EAAcG,QAC7BF,eACApB,UACAE,kBACAI,mBACAW,iBAAkBA,EAAiBK,QACnClC,YACAC,UACAC,gBACAG,6BACAC,uCACAC,oBACAG,UACAG,aACAO,SAEF,CACEkB,EACA7B,EACAO,EACAe,EAAcG,QACdF,EACApB,EACAE,EACAI,EACAW,EAAiBK,QACjBlC,EACAC,EACAC,EACAI,EACAC,EACAG,EACAG,EACAO,IAGJ,OAAOsB,EAAAC,cAACC,EAAQC,SAAQ,CAACL,MAAOA,GAAQhC,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 } 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 // 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 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 children?: React.ReactNode;\n}\n\nconst AuthProvider: FC<IAuthProviderProps> = ({\n projectId,\n baseUrl = '',\n baseStaticUrl = '',\n sessionTokenViaCookie = false,\n persistTokens = true,\n storeLastAuthenticatedUser = true,\n keepLastAuthenticatedUserAfterLogout = false,\n refreshCookieName = '',\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 const sdk = useSdk({\n projectId,\n baseUrl,\n persistTokens,\n sessionTokenViaCookie,\n storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout,\n refreshCookieName,\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 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 isSessionFetched: isSessionFetched.current,\n projectId,\n baseUrl,\n baseStaticUrl,\n storeLastAuthenticatedUser,\n keepLastAuthenticatedUserAfterLogout,\n refreshCookieName,\n setUser,\n setSession,\n sdk,\n }),\n [\n fetchUser,\n user,\n isUserLoading,\n isUserFetched.current,\n fetchSession,\n session,\n isAuthenticated,\n isSessionLoading,\n isSessionFetched.current,\n projectId,\n baseUrl,\n baseStaticUrl,\n keepLastAuthenticatedUserAfterLogout,\n refreshCookieName,\n setUser,\n setSession,\n sdk,\n ],\n );\n return <Context.Provider value={value}>{children}</Context.Provider>;\n};\n\nexport default AuthProvider;\n"],"names":["AuthProvider","projectId","baseUrl","baseStaticUrl","sessionTokenViaCookie","persistTokens","storeLastAuthenticatedUser","keepLastAuthenticatedUserAfterLogout","refreshCookieName","children","user","setUser","useState","session","setSession","isAuthenticated","setIsAuthenticated","isUserLoading","setIsUserLoading","isSessionLoading","setIsSessionLoading","sdk","useSdk","useEffect","unsubscribeSessionToken","onSessionTokenChange","unsubscribeUser","onUserChange","unsubscribeIsAuthenticated","onIsAuthenticatedChange","isSessionFetched","useRef","isUserFetched","fetchSession","useCallback","current","withValidation","refresh","then","fetchUser","me","value","useMemo","React","createElement","Context","Provider"],"mappings":"8MAoCA,MAAMA,EAAuC,EAC3CC,YACAC,UAAU,GACVC,gBAAgB,GAChBC,yBAAwB,EACxBC,iBAAgB,EAChBC,8BAA6B,EAC7BC,wCAAuC,EACvCC,oBAAoB,GACpBC,eAEA,MAAOC,EAAMC,GAAWC,KACjBC,EAASC,GAAcF,KACvBG,EAAiBC,GAAsBJ,GAAS,IAEhDK,EAAeC,GAAoBN,GAAS,IAC5CO,EAAkBC,GAAuBR,GAAS,GAEnDS,EAAMC,EAAO,CACjBrB,YACAC,UACAG,gBACAD,wBACAE,6BACAC,uCACAC,sBAGFe,GAAU,KACR,GAAIF,EAAK,CACP,MAAMG,EAA0BH,EAAII,qBAAqBX,GACnDY,EAAkBL,EAAIM,aAAahB,GACnCiB,EACJP,EAAIQ,wBAAwBb,GAE9B,MAAO,KACLQ,IACAE,IACAE,GAA4B,CAE/B,CACe,GACf,CAACP,IAEJ,MAAMS,EAAmBC,GAAO,GAC1BC,EAAgBD,GAAO,GAEvBE,EAAeC,GAAY,KAE3BJ,EAAiBK,UACrBL,EAAiBK,SAAU,EAE3Bf,GAAoB,GACpBgB,EAAef,eAAAA,EAAKgB,QAApBD,GAA+BE,MAAK,KAClClB,GAAoB,EAAM,IAC1B,GACD,CAACC,IAEEkB,EAAYL,GAAY,KAExBF,EAAcG,UAClBH,EAAcG,SAAU,EAExBjB,GAAiB,GACjBkB,EAAef,EAAImB,GAAnBJ,GAAyBE,MAAK,KAC5BpB,GAAiB,EAAM,IACvB,GACD,CAACG,IAEEoB,EAAQC,GACZ,KAAO,CACLH,YACA7B,OACAO,gBACAe,cAAeA,EAAcG,QAC7BF,eACApB,UACAE,kBACAI,mBACAW,iBAAkBA,EAAiBK,QACnClC,YACAC,UACAC,gBACAG,6BACAC,uCACAC,oBACAG,UACAG,aACAO,SAEF,CACEkB,EACA7B,EACAO,EACAe,EAAcG,QACdF,EACApB,EACAE,EACAI,EACAW,EAAiBK,QACjBlC,EACAC,EACAC,EACAI,EACAC,EACAG,EACAG,EACAO,IAGJ,OAAOsB,EAAAC,cAACC,EAAQC,SAAQ,CAACL,MAAOA,GAAQhC,EAA4B"}
@@ -1,2 +1,2 @@
1
- const e={"x-descope-sdk-name":"react","x-descope-sdk-version":"2.10.0"},d="undefined"!=typeof window;export{d as IS_BROWSER,e as baseHeaders};
1
+ const e={"x-descope-sdk-name":"react","x-descope-sdk-version":"2.11.1"},d="undefined"!=typeof window;export{d as IS_BROWSER,e as baseHeaders};
2
2
  //# sourceMappingURL=constants.js.map
package/dist/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  import React, { FC, DOMAttributes } from 'react';
2
+ import * as _descope_web_js_sdk from '@descope/web-js-sdk';
3
+ import { CookieConfig } from '@descope/web-js-sdk';
2
4
  import * as _descope_web_component from '@descope/web-component';
3
5
  import _descope_web_component__default, { ILogger, ThemeOptions, AutoFocusOptions } from '@descope/web-component';
4
6
  export { ILogger } from '@descope/web-component';
@@ -8,18 +10,14 @@ import AccessKeyManagementWidget from '@descope/access-key-management-widget';
8
10
  import AuditManagementWidget from '@descope/audit-management-widget';
9
11
  import UserProfileWidget from '@descope/user-profile-widget';
10
12
  import ApplicationsPortalWidget from '@descope/applications-portal-widget';
11
- import * as _descope_web_js_sdk from '@descope/web-js-sdk';
12
13
  import * as _1 from '@descope/core-js-sdk';
13
14
 
14
- type SameSite = 'Strict' | 'Lax' | 'None';
15
15
  interface IAuthProviderProps {
16
16
  projectId: string;
17
17
  baseUrl?: string;
18
18
  baseStaticUrl?: string;
19
19
  persistTokens?: boolean;
20
- sessionTokenViaCookie?: boolean | {
21
- sameSite: SameSite;
22
- };
20
+ sessionTokenViaCookie?: CookieConfig;
23
21
  storeLastAuthenticatedUser?: boolean;
24
22
  keepLastAuthenticatedUserAfterLogout?: boolean;
25
23
  refreshCookieName?: string;
@@ -72,14 +70,10 @@ declare const createSdkWrapper: <P extends Omit<{
72
70
  storeLastAuthenticatedUser?: boolean;
73
71
  keepLastAuthenticatedUserAfterLogout?: boolean;
74
72
  } & {
75
- persistTokens?: boolean | {
76
- sameSite: "Strict" | "Lax" | "None";
77
- };
73
+ persistTokens?: _descope_web_js_sdk.CookieConfig;
78
74
  storagePrefix?: string;
79
75
  preview?: boolean;
80
- sessionTokenViaCookie?: boolean | {
81
- sameSite: "Strict" | "Lax" | "None";
82
- };
76
+ sessionTokenViaCookie?: _descope_web_js_sdk.CookieConfig;
83
77
  }>(config: P) => ((({
84
78
  refresh: (token?: string) => Promise<_1.SdkResponse<_1.JWTResponse>>;
85
79
  flow: {