@descope/react-sdk 2.0.7 → 2.0.9

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.
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("@descope/web-js-sdk");function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function s(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var s=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,s.get?s:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var n=r(e),o=r(t);const u=n.default.createContext(void 0),i=e=>(...t)=>{if(!e)throw Error("You can only use this function after sdk initialization. Make sure to supply 'projectId' to <AuthProvider /> component");return e(...t)},a=e=>(...t)=>{let r;try{r=e(...t)}catch(e){console.error(e)}return r},l={"x-descope-sdk-name":"react","x-descope-sdk-version":"2.0.7"},c="undefined"!=typeof window;let d;const f=e=>{const t=o.default(Object.assign(Object.assign({},e),{persistTokens:c,autoRefresh:c}));return d=t,t};d=f({projectId:"temp pid"});const p=()=>c?null==d?void 0:d.getSessionToken():(console.warn("Get session token is not supported in SSR"),""),m=()=>c?null==d?void 0:d.getRefreshToken():(console.warn("Get refresh token is not supported in SSR"),""),g=a(((e=p(),t)=>null==d?void 0:d.getJwtPermissions(e,t))),h=a(((e=p(),t)=>null==d?void 0:d.getJwtRoles(e,t)));const b=e.lazy((async()=>((await Promise.resolve().then((function(){return s(require("@descope/web-component"))}))).default.sdkConfigOverrides={baseHeaders:l,persistTokens:!1,hooks:{get beforeRequest(){return d.httpClient.hooks.beforeRequest},set beforeRequest(e){}}},{default:({projectId:e,flowId:t,baseUrl:r,innerRef:s,tenant:o,theme:u,locale:i,debug:a,redirectUrl:l,client:c,form:d,autoFocus:f})=>n.default.createElement("descope-wc",{"project-id":e,"flow-id":t,"base-url":r,ref:s,tenant:o,theme:u,locale:i,debug:a,client:c,form:d,"redirect-url":l,"auto-focus":f})}))),v=n.default.forwardRef((({flowId:t,onSuccess:r,onError:s,onReady:o,logger:i,tenant:a,theme:l,locale:c,debug:d,client:f,form:p,telemetryKey:m,redirectUrl:g,autoFocus:h,errorTransformer:v},k)=>{const[w,E]=e.useState(null);e.useImperativeHandle(k,(()=>w));const{projectId:y,baseUrl:S,sdk:j}=n.default.useContext(u),I=e.useCallback((async e=>{await j.httpClient.hooks.afterRequest({},new Response(JSON.stringify(e.detail))),r&&r(e)}),[r]);e.useEffect((()=>{const e=w;return null==e||e.addEventListener("success",I),s&&(null==e||e.addEventListener("error",s)),o&&(null==e||e.addEventListener("ready",o)),()=>{s&&(null==e||e.removeEventListener("error",s)),o&&(null==e||e.removeEventListener("ready",o)),null==e||e.removeEventListener("success",I)}}),[w,s,I]),e.useEffect((()=>{const e=w;return null==e||e.addEventListener("success",I),()=>{null==e||e.removeEventListener("success",I)}}),[w,I]),e.useEffect((()=>{const e=w;return s&&(null==e||e.addEventListener("error",s)),()=>{s&&(null==e||e.removeEventListener("error",s))}}),[w,s]),e.useEffect((()=>{const e=w;return o&&(null==e||e.addEventListener("ready",o)),()=>{o&&(null==e||e.removeEventListener("error",o))}}),[w,o]),e.useEffect((()=>{w&&(w.errorTransformer=v)}),[w,v]),e.useEffect((()=>{w&&i&&(w.logger=i)}),[w,i]);const{form:x,client:U}=e.useMemo((()=>({form:JSON.stringify(p||{}),client:JSON.stringify(f||{})})),[p,f]);return n.default.createElement("form",null,n.default.createElement(e.Suspense,{fallback:null},n.default.createElement(b,{projectId:y,flowId:t,baseUrl:S,innerRef:E,tenant:a,theme:l,locale:c,debug:d,form:x,client:U,telemetryKey:m,redirectUrl:g,autoFocus:h})))})),k=e.lazy((async()=>(await Promise.resolve().then((function(){return s(require("@descope/user-management-widget"))})),{default:({projectId:e,baseUrl:t,innerRef:r,tenant:s,widgetId:o,theme:u,debug:i})=>n.default.createElement("descope-user-management-widget",{"project-id":e,"widget-id":o,"base-url":t,theme:u,tenant:s,debug:i,ref:r})}))),w=n.default.forwardRef((({logger:t,tenant:r,theme:s,debug:o,widgetId:i},a)=>{const[l,c]=e.useState(null);e.useImperativeHandle(a,(()=>l));const{projectId:d,baseUrl:f}=n.default.useContext(u);return e.useEffect((()=>{l&&t&&(l.logger=t)}),[l,t]),n.default.createElement(e.Suspense,{fallback:null},n.default.createElement(k,{projectId:d,widgetId:i,baseUrl:f,innerRef:c,tenant:r,theme:s,debug:o}))}));var E=()=>{const t=e.useContext(u);if(!t)throw Error("You can only use this hook in the context of <AuthProvider />");return t};const y=e=>`You can only use this ${e} after sdk initialization. Make sure to supply 'projectId' to <AuthProvider /> component`,S={get(e,t){if("object"==typeof e[t]&&null!==e[t])return new Proxy(e[t],S);if("function"==typeof e[t])return()=>{throw Error(y("function"))};throw Error(y("attribute"))}};exports.AuthProvider=({projectId:t,baseUrl:r="",sessionTokenViaCookie:s=!1,children:o})=>{const[a,c]=e.useState(),[d,p]=e.useState(),[m,g]=e.useState(!1),[h,b]=e.useState(!1),v=(({projectId:t,baseUrl:r,sessionTokenViaCookie:s})=>e.useMemo((()=>{if(t)return f({projectId:t,baseUrl:r,sessionTokenViaCookie:s,baseHeaders:l,persistToken:!0,autoRefresh:!0})}),[t,r,s]))({projectId:t,baseUrl:r,sessionTokenViaCookie:s});e.useEffect((()=>{if(v){const e=v.onSessionTokenChange(p),t=v.onUserChange(c);return()=>{e(),t()}}}),[v]);const k=e.useRef(!1),w=e.useCallback((()=>{k.current||(k.current=!0,b(!0),i(null==v?void 0:v.refresh)().then((()=>{b(!1)})))}),[v]),E=e.useCallback((()=>{g(!0),i(v.me)().then((()=>{g(!1)}))}),[v]),y=e.useMemo((()=>({fetchUser:E,user:a,isUserLoading:m,fetchSession:w,session:d,isSessionLoading:h,isSessionFetched:k.current,projectId:t,baseUrl:r,setUser:c,setSession:p,sdk:v})),[E,a,m,w,d,h,k.current,t,r,c,p,v]);return n.default.createElement(u.Provider,{value:y},o)},exports.Descope=v,exports.SignInFlow=e=>n.default.createElement(v,Object.assign({},e,{flowId:"sign-in"})),exports.SignUpFlow=e=>n.default.createElement(v,Object.assign({},e,{flowId:"sign-up"})),exports.SignUpOrInFlow=e=>n.default.createElement(v,Object.assign({},e,{flowId:"sign-up-or-in"})),exports.UserManagement=w,exports.baseHeaders=l,exports.getJwtPermissions=g,exports.getJwtRoles=h,exports.getRefreshToken=m,exports.getSessionToken=p,exports.refresh=(e=m())=>null==d?void 0:d.refresh(e),exports.useDescope=()=>{const{sdk:t}=E();return e.useMemo((()=>t||new Proxy(f({projectId:"dummy"}),S)),[t])},exports.useSession=()=>{const{session:t,isSessionLoading:r,fetchSession:s,isSessionFetched:n}=E(),o=e.useRef(r);e.useMemo((()=>{o.current=r}),[r]);const u=!t&&!r;return e.useMemo((()=>{u&&!n&&(o.current=!0)}),[n]),e.useEffect((()=>{u&&s()}),[s]),{isSessionLoading:o.current,sessionToken:t,isAuthenticated:!!t}},exports.useUser=()=>{const{user:t,fetchUser:r,isUserLoading:s,session:n}=E(),[o,u]=e.useState(!1),i=e.useRef(s),a=e.useMemo((()=>!t&&!s&&n&&!o),[r,n,o]);return e.useMemo((()=>{i.current=s}),[s]),e.useMemo((()=>{a&&(i.current=!0)}),[a]),e.useEffect((()=>{a&&(u(!0),r())}),[a]),{isUserLoading:i.current,user:t}};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("@descope/web-js-sdk");function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function s(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var s=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,s.get?s:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var n=r(e),o=r(t);const u=n.default.createContext(void 0),i=e=>(...t)=>{if(!e)throw Error("You can only use this function after sdk initialization. Make sure to supply 'projectId' to <AuthProvider /> component");return e(...t)},a=e=>(...t)=>{let r;try{r=e(...t)}catch(e){console.error(e)}return r},l={"x-descope-sdk-name":"react","x-descope-sdk-version":"2.0.9"},c="undefined"!=typeof window;let d;const f=e=>{const t=o.default(Object.assign(Object.assign({},e),{persistTokens:c,autoRefresh:c}));return d=t,t};d=f({projectId:"temp pid"});const p=()=>c?null==d?void 0:d.getSessionToken():(console.warn("Get session token is not supported in SSR"),""),m=()=>c?null==d?void 0:d.getRefreshToken():(console.warn("Get refresh token is not supported in SSR"),""),g=a(((e=p(),t)=>null==d?void 0:d.getJwtPermissions(e,t))),h=a(((e=p(),t)=>null==d?void 0:d.getJwtRoles(e,t)));const b=e.lazy((async()=>((await Promise.resolve().then((function(){return s(require("@descope/web-component"))}))).default.sdkConfigOverrides={baseHeaders:l,persistTokens:!1,hooks:{get beforeRequest(){return d.httpClient.hooks.beforeRequest},set beforeRequest(e){}}},{default:({projectId:e,flowId:t,baseUrl:r,innerRef:s,tenant:o,theme:u,locale:i,debug:a,redirectUrl:l,client:c,form:d,autoFocus:f})=>n.default.createElement("descope-wc",{"project-id":e,"flow-id":t,"base-url":r,ref:s,tenant:o,theme:u,locale:i,debug:a,client:c,form:d,"redirect-url":l,"auto-focus":f})}))),v=n.default.forwardRef((({flowId:t,onSuccess:r,onError:s,onReady:o,logger:i,tenant:a,theme:l,locale:c,debug:d,client:f,form:p,telemetryKey:m,redirectUrl:g,autoFocus:h,errorTransformer:v},k)=>{const[w,E]=e.useState(null);e.useImperativeHandle(k,(()=>w));const{projectId:y,baseUrl:S,sdk:j}=n.default.useContext(u),I=e.useCallback((async e=>{await j.httpClient.hooks.afterRequest({},new Response(JSON.stringify(e.detail))),r&&r(e)}),[r]);e.useEffect((()=>{const e=w;return null==e||e.addEventListener("success",I),s&&(null==e||e.addEventListener("error",s)),o&&(null==e||e.addEventListener("ready",o)),()=>{s&&(null==e||e.removeEventListener("error",s)),o&&(null==e||e.removeEventListener("ready",o)),null==e||e.removeEventListener("success",I)}}),[w,s,I]),e.useEffect((()=>{const e=w;return null==e||e.addEventListener("success",I),()=>{null==e||e.removeEventListener("success",I)}}),[w,I]),e.useEffect((()=>{const e=w;return s&&(null==e||e.addEventListener("error",s)),()=>{s&&(null==e||e.removeEventListener("error",s))}}),[w,s]),e.useEffect((()=>{const e=w;return o&&(null==e||e.addEventListener("ready",o)),()=>{o&&(null==e||e.removeEventListener("error",o))}}),[w,o]),e.useEffect((()=>{w&&(w.errorTransformer=v)}),[w,v]),e.useEffect((()=>{w&&i&&(w.logger=i)}),[w,i]);const{form:x,client:U}=e.useMemo((()=>({form:JSON.stringify(p||{}),client:JSON.stringify(f||{})})),[p,f]);return n.default.createElement("form",null,n.default.createElement(e.Suspense,{fallback:null},n.default.createElement(b,{projectId:y,flowId:t,baseUrl:S,innerRef:E,tenant:a,theme:l,locale:c,debug:d,form:x,client:U,telemetryKey:m,redirectUrl:g,autoFocus:h})))})),k=e.lazy((async()=>(await Promise.resolve().then((function(){return s(require("@descope/user-management-widget"))})),{default:({projectId:e,baseUrl:t,innerRef:r,tenant:s,widgetId:o,theme:u,debug:i})=>n.default.createElement("descope-user-management-widget",{"project-id":e,"widget-id":o,"base-url":t,theme:u,tenant:s,debug:i,ref:r})}))),w=n.default.forwardRef((({logger:t,tenant:r,theme:s,debug:o,widgetId:i},a)=>{const[l,c]=e.useState(null);e.useImperativeHandle(a,(()=>l));const{projectId:d,baseUrl:f}=n.default.useContext(u);return e.useEffect((()=>{l&&t&&(l.logger=t)}),[l,t]),n.default.createElement(e.Suspense,{fallback:null},n.default.createElement(k,{projectId:d,widgetId:i,baseUrl:f,innerRef:c,tenant:r,theme:s,debug:o}))}));var E=()=>{const t=e.useContext(u);if(!t)throw Error("You can only use this hook in the context of <AuthProvider />");return t};const y=e=>`You can only use this ${e} after sdk initialization. Make sure to supply 'projectId' to <AuthProvider /> component`,S={get(e,t){if("object"==typeof e[t]&&null!==e[t])return new Proxy(e[t],S);if("function"==typeof e[t])return()=>{throw Error(y("function"))};throw Error(y("attribute"))}};exports.AuthProvider=({projectId:t,baseUrl:r="",sessionTokenViaCookie:s=!1,children:o})=>{const[a,c]=e.useState(),[d,p]=e.useState(),[m,g]=e.useState(!1),[h,b]=e.useState(!1),v=(({projectId:t,baseUrl:r,sessionTokenViaCookie:s})=>e.useMemo((()=>{if(t)return f({projectId:t,baseUrl:r,sessionTokenViaCookie:s,baseHeaders:l,persistToken:!0,autoRefresh:!0})}),[t,r,s]))({projectId:t,baseUrl:r,sessionTokenViaCookie:s});e.useEffect((()=>{if(v){const e=v.onSessionTokenChange(p),t=v.onUserChange(c);return()=>{e(),t()}}}),[v]);const k=e.useRef(!1),w=e.useCallback((()=>{k.current||(k.current=!0,b(!0),i(null==v?void 0:v.refresh)().then((()=>{b(!1)})))}),[v]),E=e.useCallback((()=>{g(!0),i(v.me)().then((()=>{g(!1)}))}),[v]),y=e.useMemo((()=>({fetchUser:E,user:a,isUserLoading:m,fetchSession:w,session:d,isSessionLoading:h,isSessionFetched:k.current,projectId:t,baseUrl:r,setUser:c,setSession:p,sdk:v})),[E,a,m,w,d,h,k.current,t,r,c,p,v]);return n.default.createElement(u.Provider,{value:y},o)},exports.Descope=v,exports.SignInFlow=e=>n.default.createElement(v,Object.assign({},e,{flowId:"sign-in"})),exports.SignUpFlow=e=>n.default.createElement(v,Object.assign({},e,{flowId:"sign-up"})),exports.SignUpOrInFlow=e=>n.default.createElement(v,Object.assign({},e,{flowId:"sign-up-or-in"})),exports.UserManagement=w,exports.baseHeaders=l,exports.getJwtPermissions=g,exports.getJwtRoles=h,exports.getRefreshToken=m,exports.getSessionToken=p,exports.refresh=(e=m())=>null==d?void 0:d.refresh(e),exports.useDescope=()=>{const{sdk:t}=E();return e.useMemo((()=>t||new Proxy(f({projectId:"dummy"}),S)),[t])},exports.useSession=()=>{const{session:t,isSessionLoading:r,fetchSession:s,isSessionFetched:n}=E(),o=e.useRef(r);e.useMemo((()=>{o.current=r}),[r]);const u=!t&&!r;return e.useMemo((()=>{u&&!n&&(o.current=!0)}),[n]),e.useEffect((()=>{u&&s()}),[s]),{isSessionLoading:o.current,sessionToken:t,isAuthenticated:!!t}},exports.useUser=()=>{const{user:t,fetchUser:r,isUserLoading:s,session:n}=E(),[o,u]=e.useState(!1),i=e.useRef(s),a=e.useMemo((()=>!t&&!s&&n&&!o),[r,n,o]);return e.useMemo((()=>{i.current=s}),[s]),e.useMemo((()=>{a&&(i.current=!0)}),[a]),e.useEffect((()=>{a&&(u(!0),r())}),[a]),{isUserLoading:i.current,user:t}};
2
2
  //# sourceMappingURL=index.cjs.js.map
package/dist/index.esm.js CHANGED
@@ -1,2 +1,2 @@
1
- import e,{useMemo as t,useState as r,useEffect as n,useRef as o,useCallback as s,lazy as i,useImperativeHandle as c,Suspense as l,useContext as a}from"react";import u from"@descope/web-js-sdk";const d=e.createContext(void 0),f=e=>(...t)=>{if(!e)throw Error("You can only use this function after sdk initialization. Make sure to supply 'projectId' to <AuthProvider /> component");return e(...t)},m=e=>(...t)=>{let r;try{r=e(...t)}catch(e){console.error(e)}return r},p={"x-descope-sdk-name":"react","x-descope-sdk-version":"2.0.7"},g="undefined"!=typeof window;let h;const b=e=>{const t=u(Object.assign(Object.assign({},e),{persistTokens:g,autoRefresh:g}));return h=t,t};h=b({projectId:"temp pid"});const k=()=>g?null==h?void 0:h.getSessionToken():(console.warn("Get session token is not supported in SSR"),""),w=()=>g?null==h?void 0:h.getRefreshToken():(console.warn("Get refresh token is not supported in SSR"),""),v=m(((e=k(),t)=>null==h?void 0:h.getJwtPermissions(e,t))),E=m(((e=k(),t)=>null==h?void 0:h.getJwtRoles(e,t))),y=(e=w())=>null==h?void 0:h.refresh(e);const j=({projectId:i,baseUrl:c="",sessionTokenViaCookie:l=!1,children:a})=>{const[u,m]=r(),[g,h]=r(),[k,w]=r(!1),[v,E]=r(!1),y=(({projectId:e,baseUrl:r,sessionTokenViaCookie:n})=>t((()=>{if(e)return b({projectId:e,baseUrl:r,sessionTokenViaCookie:n,baseHeaders:p,persistToken:!0,autoRefresh:!0})}),[e,r,n]))({projectId:i,baseUrl:c,sessionTokenViaCookie:l});n((()=>{if(y){const e=y.onSessionTokenChange(h),t=y.onUserChange(m);return()=>{e(),t()}}}),[y]);const j=o(!1),I=s((()=>{j.current||(j.current=!0,E(!0),f(null==y?void 0:y.refresh)().then((()=>{E(!1)})))}),[y]),U=s((()=>{w(!0),f(y.me)().then((()=>{w(!1)}))}),[y]),L=t((()=>({fetchUser:U,user:u,isUserLoading:k,fetchSession:I,session:g,isSessionLoading:v,isSessionFetched:j.current,projectId:i,baseUrl:c,setUser:m,setSession:h,sdk:y})),[U,u,k,I,g,v,j.current,i,c,m,h,y]);return e.createElement(d.Provider,{value:L},a)},I=i((async()=>((await import("@descope/web-component")).default.sdkConfigOverrides={baseHeaders:p,persistTokens:!1,hooks:{get beforeRequest(){return h.httpClient.hooks.beforeRequest},set beforeRequest(e){}}},{default:({projectId:t,flowId:r,baseUrl:n,innerRef:o,tenant:s,theme:i,locale:c,debug:l,redirectUrl:a,client:u,form:d,autoFocus:f})=>e.createElement("descope-wc",{"project-id":t,"flow-id":r,"base-url":n,ref:o,tenant:s,theme:i,locale:c,debug:l,client:u,form:d,"redirect-url":a,"auto-focus":f})}))),U=e.forwardRef((({flowId:o,onSuccess:i,onError:a,onReady:u,logger:f,tenant:m,theme:p,locale:g,debug:h,client:b,form:k,telemetryKey:w,redirectUrl:v,autoFocus:E,errorTransformer:y},j)=>{const[U,L]=r(null);c(j,(()=>U));const{projectId:R,baseUrl:S,sdk:C}=e.useContext(d),T=s((async e=>{await C.httpClient.hooks.afterRequest({},new Response(JSON.stringify(e.detail))),i&&i(e)}),[i]);n((()=>{const e=U;return null==e||e.addEventListener("success",T),a&&(null==e||e.addEventListener("error",a)),u&&(null==e||e.addEventListener("ready",u)),()=>{a&&(null==e||e.removeEventListener("error",a)),u&&(null==e||e.removeEventListener("ready",u)),null==e||e.removeEventListener("success",T)}}),[U,a,T]),n((()=>{const e=U;return null==e||e.addEventListener("success",T),()=>{null==e||e.removeEventListener("success",T)}}),[U,T]),n((()=>{const e=U;return a&&(null==e||e.addEventListener("error",a)),()=>{a&&(null==e||e.removeEventListener("error",a))}}),[U,a]),n((()=>{const e=U;return u&&(null==e||e.addEventListener("ready",u)),()=>{u&&(null==e||e.removeEventListener("error",u))}}),[U,u]),n((()=>{U&&(U.errorTransformer=y)}),[U,y]),n((()=>{U&&f&&(U.logger=f)}),[U,f]);const{form:x,client:O}=t((()=>({form:JSON.stringify(k||{}),client:JSON.stringify(b||{})})),[k,b]);return e.createElement("form",null,e.createElement(l,{fallback:null},e.createElement(I,{projectId:R,flowId:o,baseUrl:S,innerRef:L,tenant:m,theme:p,locale:g,debug:h,form:x,client:O,telemetryKey:w,redirectUrl:v,autoFocus:E})))})),L=t=>e.createElement(U,Object.assign({},t,{flowId:"sign-in"})),R=t=>e.createElement(U,Object.assign({},t,{flowId:"sign-up"})),S=t=>e.createElement(U,Object.assign({},t,{flowId:"sign-up-or-in"})),C=i((async()=>(await import("@descope/user-management-widget"),{default:({projectId:t,baseUrl:r,innerRef:n,tenant:o,widgetId:s,theme:i,debug:c})=>e.createElement("descope-user-management-widget",{"project-id":t,"widget-id":s,"base-url":r,theme:i,tenant:o,debug:c,ref:n})}))),T=e.forwardRef((({logger:t,tenant:o,theme:s,debug:i,widgetId:a},u)=>{const[f,m]=r(null);c(u,(()=>f));const{projectId:p,baseUrl:g}=e.useContext(d);return n((()=>{f&&t&&(f.logger=t)}),[f,t]),e.createElement(l,{fallback:null},e.createElement(C,{projectId:p,widgetId:a,baseUrl:g,innerRef:m,tenant:o,theme:s,debug:i}))}));var x=()=>{const e=a(d);if(!e)throw Error("You can only use this hook in the context of <AuthProvider />");return e};const O=e=>`You can only use this ${e} after sdk initialization. Make sure to supply 'projectId' to <AuthProvider /> component`,P={get(e,t){if("object"==typeof e[t]&&null!==e[t])return new Proxy(e[t],P);if("function"==typeof e[t])return()=>{throw Error(O("function"))};throw Error(O("attribute"))}},F=()=>{const{sdk:e}=x();return t((()=>e||new Proxy(b({projectId:"dummy"}),P)),[e])},J=()=>{const{session:e,isSessionLoading:r,fetchSession:s,isSessionFetched:i}=x(),c=o(r);t((()=>{c.current=r}),[r]);const l=!e&&!r;return t((()=>{l&&!i&&(c.current=!0)}),[i]),n((()=>{l&&s()}),[s]),{isSessionLoading:c.current,sessionToken:e,isAuthenticated:!!e}},q=()=>{const{user:e,fetchUser:s,isUserLoading:i,session:c}=x(),[l,a]=r(!1),u=o(i),d=t((()=>!e&&!i&&c&&!l),[s,c,l]);return t((()=>{u.current=i}),[i]),t((()=>{d&&(u.current=!0)}),[d]),n((()=>{d&&(a(!0),s())}),[d]),{isUserLoading:u.current,user:e}};export{j as AuthProvider,U as Descope,L as SignInFlow,R as SignUpFlow,S as SignUpOrInFlow,T as UserManagement,p as baseHeaders,v as getJwtPermissions,E as getJwtRoles,w as getRefreshToken,k as getSessionToken,y as refresh,F as useDescope,J as useSession,q as useUser};
1
+ import e,{useMemo as t,useState as r,useEffect as n,useRef as o,useCallback as s,lazy as i,useImperativeHandle as c,Suspense as l,useContext as a}from"react";import u from"@descope/web-js-sdk";const d=e.createContext(void 0),f=e=>(...t)=>{if(!e)throw Error("You can only use this function after sdk initialization. Make sure to supply 'projectId' to <AuthProvider /> component");return e(...t)},m=e=>(...t)=>{let r;try{r=e(...t)}catch(e){console.error(e)}return r},p={"x-descope-sdk-name":"react","x-descope-sdk-version":"2.0.9"},g="undefined"!=typeof window;let h;const b=e=>{const t=u(Object.assign(Object.assign({},e),{persistTokens:g,autoRefresh:g}));return h=t,t};h=b({projectId:"temp pid"});const k=()=>g?null==h?void 0:h.getSessionToken():(console.warn("Get session token is not supported in SSR"),""),w=()=>g?null==h?void 0:h.getRefreshToken():(console.warn("Get refresh token is not supported in SSR"),""),v=m(((e=k(),t)=>null==h?void 0:h.getJwtPermissions(e,t))),E=m(((e=k(),t)=>null==h?void 0:h.getJwtRoles(e,t))),y=(e=w())=>null==h?void 0:h.refresh(e);const j=({projectId:i,baseUrl:c="",sessionTokenViaCookie:l=!1,children:a})=>{const[u,m]=r(),[g,h]=r(),[k,w]=r(!1),[v,E]=r(!1),y=(({projectId:e,baseUrl:r,sessionTokenViaCookie:n})=>t((()=>{if(e)return b({projectId:e,baseUrl:r,sessionTokenViaCookie:n,baseHeaders:p,persistToken:!0,autoRefresh:!0})}),[e,r,n]))({projectId:i,baseUrl:c,sessionTokenViaCookie:l});n((()=>{if(y){const e=y.onSessionTokenChange(h),t=y.onUserChange(m);return()=>{e(),t()}}}),[y]);const j=o(!1),I=s((()=>{j.current||(j.current=!0,E(!0),f(null==y?void 0:y.refresh)().then((()=>{E(!1)})))}),[y]),U=s((()=>{w(!0),f(y.me)().then((()=>{w(!1)}))}),[y]),L=t((()=>({fetchUser:U,user:u,isUserLoading:k,fetchSession:I,session:g,isSessionLoading:v,isSessionFetched:j.current,projectId:i,baseUrl:c,setUser:m,setSession:h,sdk:y})),[U,u,k,I,g,v,j.current,i,c,m,h,y]);return e.createElement(d.Provider,{value:L},a)},I=i((async()=>((await import("@descope/web-component")).default.sdkConfigOverrides={baseHeaders:p,persistTokens:!1,hooks:{get beforeRequest(){return h.httpClient.hooks.beforeRequest},set beforeRequest(e){}}},{default:({projectId:t,flowId:r,baseUrl:n,innerRef:o,tenant:s,theme:i,locale:c,debug:l,redirectUrl:a,client:u,form:d,autoFocus:f})=>e.createElement("descope-wc",{"project-id":t,"flow-id":r,"base-url":n,ref:o,tenant:s,theme:i,locale:c,debug:l,client:u,form:d,"redirect-url":a,"auto-focus":f})}))),U=e.forwardRef((({flowId:o,onSuccess:i,onError:a,onReady:u,logger:f,tenant:m,theme:p,locale:g,debug:h,client:b,form:k,telemetryKey:w,redirectUrl:v,autoFocus:E,errorTransformer:y},j)=>{const[U,L]=r(null);c(j,(()=>U));const{projectId:R,baseUrl:S,sdk:C}=e.useContext(d),T=s((async e=>{await C.httpClient.hooks.afterRequest({},new Response(JSON.stringify(e.detail))),i&&i(e)}),[i]);n((()=>{const e=U;return null==e||e.addEventListener("success",T),a&&(null==e||e.addEventListener("error",a)),u&&(null==e||e.addEventListener("ready",u)),()=>{a&&(null==e||e.removeEventListener("error",a)),u&&(null==e||e.removeEventListener("ready",u)),null==e||e.removeEventListener("success",T)}}),[U,a,T]),n((()=>{const e=U;return null==e||e.addEventListener("success",T),()=>{null==e||e.removeEventListener("success",T)}}),[U,T]),n((()=>{const e=U;return a&&(null==e||e.addEventListener("error",a)),()=>{a&&(null==e||e.removeEventListener("error",a))}}),[U,a]),n((()=>{const e=U;return u&&(null==e||e.addEventListener("ready",u)),()=>{u&&(null==e||e.removeEventListener("error",u))}}),[U,u]),n((()=>{U&&(U.errorTransformer=y)}),[U,y]),n((()=>{U&&f&&(U.logger=f)}),[U,f]);const{form:x,client:O}=t((()=>({form:JSON.stringify(k||{}),client:JSON.stringify(b||{})})),[k,b]);return e.createElement("form",null,e.createElement(l,{fallback:null},e.createElement(I,{projectId:R,flowId:o,baseUrl:S,innerRef:L,tenant:m,theme:p,locale:g,debug:h,form:x,client:O,telemetryKey:w,redirectUrl:v,autoFocus:E})))})),L=t=>e.createElement(U,Object.assign({},t,{flowId:"sign-in"})),R=t=>e.createElement(U,Object.assign({},t,{flowId:"sign-up"})),S=t=>e.createElement(U,Object.assign({},t,{flowId:"sign-up-or-in"})),C=i((async()=>(await import("@descope/user-management-widget"),{default:({projectId:t,baseUrl:r,innerRef:n,tenant:o,widgetId:s,theme:i,debug:c})=>e.createElement("descope-user-management-widget",{"project-id":t,"widget-id":s,"base-url":r,theme:i,tenant:o,debug:c,ref:n})}))),T=e.forwardRef((({logger:t,tenant:o,theme:s,debug:i,widgetId:a},u)=>{const[f,m]=r(null);c(u,(()=>f));const{projectId:p,baseUrl:g}=e.useContext(d);return n((()=>{f&&t&&(f.logger=t)}),[f,t]),e.createElement(l,{fallback:null},e.createElement(C,{projectId:p,widgetId:a,baseUrl:g,innerRef:m,tenant:o,theme:s,debug:i}))}));var x=()=>{const e=a(d);if(!e)throw Error("You can only use this hook in the context of <AuthProvider />");return e};const O=e=>`You can only use this ${e} after sdk initialization. Make sure to supply 'projectId' to <AuthProvider /> component`,P={get(e,t){if("object"==typeof e[t]&&null!==e[t])return new Proxy(e[t],P);if("function"==typeof e[t])return()=>{throw Error(O("function"))};throw Error(O("attribute"))}},F=()=>{const{sdk:e}=x();return t((()=>e||new Proxy(b({projectId:"dummy"}),P)),[e])},J=()=>{const{session:e,isSessionLoading:r,fetchSession:s,isSessionFetched:i}=x(),c=o(r);t((()=>{c.current=r}),[r]);const l=!e&&!r;return t((()=>{l&&!i&&(c.current=!0)}),[i]),n((()=>{l&&s()}),[s]),{isSessionLoading:c.current,sessionToken:e,isAuthenticated:!!e}},q=()=>{const{user:e,fetchUser:s,isUserLoading:i,session:c}=x(),[l,a]=r(!1),u=o(i),d=t((()=>!e&&!i&&c&&!l),[s,c,l]);return t((()=>{u.current=i}),[i]),t((()=>{d&&(u.current=!0)}),[d]),n((()=>{d&&(a(!0),s())}),[d]),{isUserLoading:u.current,user:e}};export{j as AuthProvider,U as Descope,L as SignInFlow,R as SignUpFlow,S as SignUpOrInFlow,T as UserManagement,p as baseHeaders,v as getJwtPermissions,E as getJwtRoles,w as getRefreshToken,k as getSessionToken,y as refresh,F as useDescope,J as useSession,q as useUser};
2
2
  //# sourceMappingURL=index.esm.js.map