@descope/react-sdk 2.0.12 → 2.0.13

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