@descope/react-sdk
Advanced tools
Comparing version 0.0.52-alpha.15 to 0.0.52-alpha.16
@@ -56,4 +56,7 @@ /// <reference types="react" /> | ||
sessionToken?: string; | ||
logoutAll: Sdk['logoutAll']; | ||
logout: Sdk['logout']; | ||
me: Sdk['me']; | ||
getJwtRoles: Sdk['getJwtRoles']; | ||
getJwtPermissions: Sdk['getJwtPermissions']; | ||
} | ||
@@ -60,0 +63,0 @@ interface DescopeProps { |
@@ -1,1 +0,1 @@ | ||
import e from"@descope/web-js-sdk";import o,{useState as r,useMemo as t,useEffect as s,useRef as n,useImperativeHandle as c,useCallback as i}from"react";import"@descope/web-component";const u=o.createContext(void 0),d=({projectId:n,baseUrl:c,children:i})=>{const[d,a]=r({}),[l,p]=r(""),f=t((()=>{if(n)return e({projectId:n,baseUrl:c,hooks:{beforeRequest:e=>{const o=e;return o.headers={...o.headers,"x-descope-sdk-name":"react","x-descope-sdk-version":"0.0.52-alpha.15"},o}}})}),[n,c]);s((()=>{if(!f)return;const e=f.onSessionTokenChange(p),o=f.onUserChange(a);return()=>{e?.(),o?.()}}),[f]);const m=t((()=>({sdk:f,projectId:n,baseUrl:c,user:d,sessionToken:l,setUser:a,setSessionToken:p})),[l,d,n,c]);return o.createElement(u.Provider,{value:m},i)};d.defaultProps={baseUrl:"",children:void 0};const a=o.forwardRef((({flowId:e,onSuccess:r,onError:t,tenant:d},a)=>{const l=n();c(a,(()=>l.current));const{projectId:p,baseUrl:f,setUser:m,setSessionToken:h}=o.useContext(u),k=i((e=>{m(e.detail?.user);const o=e.detail?.sessionJwt;h(o),r&&r(e)}),[m,h,r]);return s((()=>{const e=l.current;return e?.addEventListener("success",k),t&&e?.addEventListener("error",t),()=>{t&&e?.removeEventListener("error",t),e?.removeEventListener("success",k)}}),[l,t,k]),o.createElement("descope-wc",{"project-id":p,"flow-id":e,"base-url":f,ref:l,tenant:d})}));a.defaultProps={onError:void 0,onSuccess:void 0};const l=e=>o.createElement(a,{...e,flowId:"sign-in"}),p=e=>o.createElement(a,{...e,flowId:"sign-up"}),f=e=>o.createElement(a,{...e,flowId:"sign-up-or-in"}),m=()=>{const e=o.useContext(u);if(!e)throw Error("You can only use 'useAuth' in the context of <AuthProvider />");const{user:r,sessionToken:s,sdk:n}=e,c=i(((...e)=>{if(!n)throw Error("You can only use 'logout' after sdk initialization. Make sure to supply 'projectId' to <AuthProvider /> component");return n.logout(...e)}),[n]),d=i(((...e)=>{if(!n)throw Error("You can only use 'me' after sdk initialization. Make sure to supply 'projectId' to <AuthProvider /> component");return n.me(...e)}),[n]);return t((()=>({authenticated:!!s,user:r,sessionToken:s,logout:c,me:d})),[r,s,n])};export{d as AuthProvider,a as Descope,l as SignInFlow,p as SignUpFlow,f as SignUpOrInFlow,m as useAuth}; | ||
import e from"@descope/web-js-sdk";import o,{useState as t,useMemo as r,useEffect as s,useRef as n,useImperativeHandle as c,useCallback as i}from"react";import"@descope/web-component";const u=o.createContext(void 0),d=({projectId:n,baseUrl:c,children:i})=>{const[d,a]=t({}),[l,p]=t(""),f=r((()=>{if(n)return e({projectId:n,baseUrl:c,hooks:{beforeRequest:e=>{const o=e;return o.headers={...o.headers,"x-descope-sdk-name":"react","x-descope-sdk-version":"0.0.52-alpha.16"},o}}})}),[n,c]);s((()=>{if(!f)return;const e=f.onSessionTokenChange(p),o=f.onUserChange(a);return()=>{e?.(),o?.()}}),[f]);const m=r((()=>({sdk:f,projectId:n,baseUrl:c,user:d,sessionToken:l,setUser:a,setSessionToken:p})),[l,d,n,c]);return o.createElement(u.Provider,{value:m},i)};d.defaultProps={baseUrl:"",children:void 0};const a=o.forwardRef((({flowId:e,onSuccess:t,onError:r,tenant:d},a)=>{const l=n();c(a,(()=>l.current));const{projectId:p,baseUrl:f,setUser:m,setSessionToken:h}=o.useContext(u),w=i((e=>{m(e.detail?.user);const o=e.detail?.sessionJwt;h(o),t&&t(e)}),[m,h,t]);return s((()=>{const e=l.current;return e?.addEventListener("success",w),r&&e?.addEventListener("error",r),()=>{r&&e?.removeEventListener("error",r),e?.removeEventListener("success",w)}}),[l,r,w]),o.createElement("descope-wc",{"project-id":p,"flow-id":e,"base-url":f,ref:l,tenant:d})}));a.defaultProps={onError:void 0,onSuccess:void 0};const l=e=>o.createElement(a,{...e,flowId:"sign-in"}),p=e=>o.createElement(a,{...e,flowId:"sign-up"}),f=e=>o.createElement(a,{...e,flowId:"sign-up-or-in"}),m=e=>(...o)=>{if(!e)throw Error("You can only use this function after sdk initialization. Make sure to supply 'projectId' to <AuthProvider /> component");return e(...o)},h=()=>{const e=o.useContext(u);if(!e)throw Error("You can only use 'useAuth' in the context of <AuthProvider />");const{user:t,sessionToken:s,sdk:n}=e,c=i(m(n?.logoutAll),[n]),d=i(m(n?.logout),[n]),a=i(m(n?.me),[n]),l=i(m(n?.getJwtPermissions),[n]),p=i(m(n?.getJwtRoles),[n]);return r((()=>({authenticated:!!s,user:t,sessionToken:s,logoutAll:c,logout:d,me:a,getJwtPermissions:l,getJwtRoles:p})),[t,s,n])};export{d as AuthProvider,a as Descope,l as SignInFlow,p as SignUpFlow,f as SignUpOrInFlow,h as useAuth}; |
{ | ||
"name": "@descope/react-sdk", | ||
"version": "0.0.52-alpha.15", | ||
"version": "0.0.52-alpha.16", | ||
"main": "dist/index.js", | ||
@@ -19,4 +19,4 @@ "types": "dist/index.d.ts", | ||
"devDependencies": { | ||
"@babel/core": "7.19.6", | ||
"@babel/preset-env": "7.19.4", | ||
"@babel/core": "7.20.2", | ||
"@babel/preset-env": "7.20.2", | ||
"@babel/preset-react": "7.18.6", | ||
@@ -33,3 +33,3 @@ "@babel/preset-typescript": "7.18.6", | ||
"@types/jest": "^27.0.2", | ||
"@types/react": "18.0.17", | ||
"@types/react": "18.0.25", | ||
"@types/react-dom": "18.0.8", | ||
@@ -36,0 +36,0 @@ "babel-jest": "27.5.1", |
12504
81