@descope/react-sdk 2.0.4 → 2.0.5

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
@@ -111,7 +111,8 @@ const App = () => {
111
111
 
112
112
 
113
113
  // form is an object the initial form context that is used in screens inputs in the flow execution.
114
- // Used to inject predifined input values on flow start such as custom inputs, custom attrbiutes and other inputs.
114
+ // Used to inject predefined input values on flow start such as custom inputs, custom attributes and other inputs.
115
+ // Keys passed can be accessed in flows actions, conditions and screens prefixed with "form.".
115
116
  // NOTE: form is not required. If not provided, 'form' context key will be empty before user input.
116
117
  // Example:
117
118
  // ...
@@ -120,6 +121,7 @@ const App = () => {
120
121
 
121
122
 
122
123
  // client is an object the initial client context in the flow execution.
124
+ // Keys passed can be accessed in flows actions and conditions prefixed with "client.".
123
125
  // NOTE: client is not required. If not provided, context key will be empty.
124
126
  // Example:
125
127
  // ...
@@ -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 o=r(e),n=r(t);const u=o.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)},c=e=>(...t)=>{let r;try{r=e(...t)}catch(e){console.error(e)}return r},a={"x-descope-sdk-name":"react","x-descope-sdk-version":"2.0.4"},l="undefined"!=typeof window;let f;const d=e=>{const t=n.default({...e,persistTokens:l,autoRefresh:l});return f=t,t};f=d({projectId:"temp pid"});const p=()=>l?f?.getSessionToken():(console.warn("Get session token is not supported in SSR"),""),m=()=>l?f?.getRefreshToken():(console.warn("Get refresh token is not supported in SSR"),""),h=c(((e=p(),t)=>f?.getJwtPermissions(e,t))),g=c(((e=p(),t)=>f?.getJwtRoles(e,t)));const k=e.lazy((async()=>((await Promise.resolve().then((function(){return s(require("@descope/web-component"))}))).default.sdkConfigOverrides={baseHeaders:a},{default:({projectId:e,flowId:t,baseUrl:r,innerRef:s,tenant:n,theme:u,locale:i,debug:c,redirectUrl:a,client:l,form:f,autoFocus:d})=>o.default.createElement("descope-wc",{"project-id":e,"flow-id":t,"base-url":r,ref:s,tenant:n,theme:u,locale:i,debug:c,client:l,form:f,"redirect-url":a,"auto-focus":d})}))),w=o.default.forwardRef((({flowId:t,onSuccess:r,onError:s,logger:n,tenant:i,theme:c,locale:a,debug:l,client:f,form:d,telemetryKey:p,redirectUrl:m,autoFocus:h,errorTransformer:g},w)=>{const[b,S]=e.useState(null);e.useImperativeHandle(w,(()=>b));const{projectId:y,baseUrl:E,sdk:v}=o.default.useContext(u),j=e.useCallback((async e=>{await v.httpClient.hooks.afterRequest({},new Response(JSON.stringify(e.detail))),r&&r(e)}),[r]);e.useEffect((()=>{const e=b;return e?.addEventListener("success",j),s&&e?.addEventListener("error",s),()=>{s&&e?.removeEventListener("error",s),e?.removeEventListener("success",j)}}),[b,s,j]),e.useEffect((()=>{b&&(b.errorTransformer=g)}),[b,g]),e.useEffect((()=>{b&&n&&(b.logger=n)}),[b,n]);const{form:x,client:I}=e.useMemo((()=>({form:JSON.stringify(d||{}),client:JSON.stringify(f||{})})),[d,f]);return o.default.createElement("form",null,o.default.createElement(e.Suspense,{fallback:null},o.default.createElement(k,{projectId:y,flowId:t,baseUrl:E,innerRef:S,tenant:i,theme:c,locale:a,debug:l,form:x,client:I,telemetryKey:p,redirectUrl:m,autoFocus:h})))}));var b=()=>{const t=e.useContext(u);if(!t)throw Error("You can only use this hook in the context of <AuthProvider />");return t};const S=e=>`You can only use this ${e} after sdk initialization. Make sure to supply 'projectId' to <AuthProvider /> component`,y={get(e,t){if("object"==typeof e[t]&&null!==e[t])return new Proxy(e[t],y);if("function"==typeof e[t])return()=>{throw Error(S("function"))};throw Error(S("attribute"))}};exports.AuthProvider=({projectId:t,baseUrl:r="",sessionTokenViaCookie:s=!1,children:n})=>{const[c,l]=e.useState(),[f,p]=e.useState(),[m,h]=e.useState(!1),[g,k]=e.useState(!1),w=(({projectId:t,baseUrl:r,sessionTokenViaCookie:s})=>e.useMemo((()=>{if(t)return d({projectId:t,baseUrl:r,sessionTokenViaCookie:s,baseHeaders:a,persistToken:!0,autoRefresh:!0})}),[t,r,s]))({projectId:t,baseUrl:r,sessionTokenViaCookie:s});e.useEffect((()=>{if(w){const e=w.onSessionTokenChange(p),t=w.onUserChange(l);return()=>{e(),t()}}}),[w]);const b=e.useRef(!1),S=e.useCallback((()=>{b.current||(b.current=!0,k(!0),i(w?.refresh)().then((()=>{k(!1)})))}),[w]),y=e.useCallback((()=>{h(!0),i(w.me)().then((()=>{h(!1)}))}),[w]),E=e.useMemo((()=>({fetchUser:y,user:c,isUserLoading:m,fetchSession:S,session:f,isSessionLoading:g,isSessionFetched:b.current,projectId:t,baseUrl:r,setUser:l,setSession:p,sdk:w})),[y,c,m,S,f,g,b.current,t,r,l,p,w]);return o.default.createElement(u.Provider,{value:E},n)},exports.Descope=w,exports.SignInFlow=e=>o.default.createElement(w,{...e,flowId:"sign-in"}),exports.SignUpFlow=e=>o.default.createElement(w,{...e,flowId:"sign-up"}),exports.SignUpOrInFlow=e=>o.default.createElement(w,{...e,flowId:"sign-up-or-in"}),exports.getJwtPermissions=h,exports.getJwtRoles=g,exports.getRefreshToken=m,exports.getSessionToken=p,exports.refresh=(e=m())=>f?.refresh(e),exports.useDescope=()=>{const{sdk:t}=b();return e.useMemo((()=>t||new Proxy(d({projectId:"dummy"}),y)),[t])},exports.useSession=()=>{const{session:t,isSessionLoading:r,fetchSession:s,isSessionFetched:o}=b(),n=e.useRef(r);return e.useMemo((()=>{n.current=r}),[r]),e.useMemo((()=>{o||(n.current=!0)}),[o]),e.useEffect((()=>{t||r||s()}),[s]),{isSessionLoading:n.current,sessionToken:t,isAuthenticated:!!t}},exports.useUser=()=>{const{user:t,fetchUser:r,isUserLoading:s,session:o}=b(),[n,u]=e.useState(!1),i=e.useRef(s),c=e.useMemo((()=>!t&&!s&&o&&!n),[r,o,n]);return e.useMemo((()=>{i.current=s}),[s]),e.useMemo((()=>{c&&(i.current=!0)}),[c]),e.useEffect((()=>{c&&(u(!0),r())}),[c]),{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 o=r(e),n=r(t);const u=o.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)},c=e=>(...t)=>{let r;try{r=e(...t)}catch(e){console.error(e)}return r},a={"x-descope-sdk-name":"react","x-descope-sdk-version":"2.0.5"},l="undefined"!=typeof window;let f;const d=e=>{const t=n.default({...e,persistTokens:l,autoRefresh:l});return f=t,t};f=d({projectId:"temp pid"});const p=()=>l?f?.getSessionToken():(console.warn("Get session token is not supported in SSR"),""),m=()=>l?f?.getRefreshToken():(console.warn("Get refresh token is not supported in SSR"),""),h=c(((e=p(),t)=>f?.getJwtPermissions(e,t))),g=c(((e=p(),t)=>f?.getJwtRoles(e,t)));const k=e.lazy((async()=>((await Promise.resolve().then((function(){return s(require("@descope/web-component"))}))).default.sdkConfigOverrides={baseHeaders:a},{default:({projectId:e,flowId:t,baseUrl:r,innerRef:s,tenant:n,theme:u,locale:i,debug:c,redirectUrl:a,client:l,form:f,autoFocus:d})=>o.default.createElement("descope-wc",{"project-id":e,"flow-id":t,"base-url":r,ref:s,tenant:n,theme:u,locale:i,debug:c,client:l,form:f,"redirect-url":a,"auto-focus":d})}))),w=o.default.forwardRef((({flowId:t,onSuccess:r,onError:s,logger:n,tenant:i,theme:c,locale:a,debug:l,client:f,form:d,telemetryKey:p,redirectUrl:m,autoFocus:h,errorTransformer:g},w)=>{const[b,S]=e.useState(null);e.useImperativeHandle(w,(()=>b));const{projectId:y,baseUrl:E,sdk:v}=o.default.useContext(u),j=e.useCallback((async e=>{await v.httpClient.hooks.afterRequest({},new Response(JSON.stringify(e.detail))),r&&r(e)}),[r]);e.useEffect((()=>{const e=b;return e?.addEventListener("success",j),s&&e?.addEventListener("error",s),()=>{s&&e?.removeEventListener("error",s),e?.removeEventListener("success",j)}}),[b,s,j]),e.useEffect((()=>{b&&(b.errorTransformer=g)}),[b,g]),e.useEffect((()=>{b&&n&&(b.logger=n)}),[b,n]);const{form:x,client:I}=e.useMemo((()=>({form:JSON.stringify(d||{}),client:JSON.stringify(f||{})})),[d,f]);return o.default.createElement("form",null,o.default.createElement(e.Suspense,{fallback:null},o.default.createElement(k,{projectId:y,flowId:t,baseUrl:E,innerRef:S,tenant:i,theme:c,locale:a,debug:l,form:x,client:I,telemetryKey:p,redirectUrl:m,autoFocus:h})))}));var b=()=>{const t=e.useContext(u);if(!t)throw Error("You can only use this hook in the context of <AuthProvider />");return t};const S=e=>`You can only use this ${e} after sdk initialization. Make sure to supply 'projectId' to <AuthProvider /> component`,y={get(e,t){if("object"==typeof e[t]&&null!==e[t])return new Proxy(e[t],y);if("function"==typeof e[t])return()=>{throw Error(S("function"))};throw Error(S("attribute"))}};exports.AuthProvider=({projectId:t,baseUrl:r="",sessionTokenViaCookie:s=!1,children:n})=>{const[c,l]=e.useState(),[f,p]=e.useState(),[m,h]=e.useState(!1),[g,k]=e.useState(!1),w=(({projectId:t,baseUrl:r,sessionTokenViaCookie:s})=>e.useMemo((()=>{if(t)return d({projectId:t,baseUrl:r,sessionTokenViaCookie:s,baseHeaders:a,persistToken:!0,autoRefresh:!0})}),[t,r,s]))({projectId:t,baseUrl:r,sessionTokenViaCookie:s});e.useEffect((()=>{if(w){const e=w.onSessionTokenChange(p),t=w.onUserChange(l);return()=>{e(),t()}}}),[w]);const b=e.useRef(!1),S=e.useCallback((()=>{b.current||(b.current=!0,k(!0),i(w?.refresh)().then((()=>{k(!1)})))}),[w]),y=e.useCallback((()=>{h(!0),i(w.me)().then((()=>{h(!1)}))}),[w]),E=e.useMemo((()=>({fetchUser:y,user:c,isUserLoading:m,fetchSession:S,session:f,isSessionLoading:g,isSessionFetched:b.current,projectId:t,baseUrl:r,setUser:l,setSession:p,sdk:w})),[y,c,m,S,f,g,b.current,t,r,l,p,w]);return o.default.createElement(u.Provider,{value:E},n)},exports.Descope=w,exports.SignInFlow=e=>o.default.createElement(w,{...e,flowId:"sign-in"}),exports.SignUpFlow=e=>o.default.createElement(w,{...e,flowId:"sign-up"}),exports.SignUpOrInFlow=e=>o.default.createElement(w,{...e,flowId:"sign-up-or-in"}),exports.getJwtPermissions=h,exports.getJwtRoles=g,exports.getRefreshToken=m,exports.getSessionToken=p,exports.refresh=(e=m())=>f?.refresh(e),exports.useDescope=()=>{const{sdk:t}=b();return e.useMemo((()=>t||new Proxy(d({projectId:"dummy"}),y)),[t])},exports.useSession=()=>{const{session:t,isSessionLoading:r,fetchSession:s,isSessionFetched:o}=b(),n=e.useRef(r);return e.useMemo((()=>{n.current=r}),[r]),e.useMemo((()=>{o||(n.current=!0)}),[o]),e.useEffect((()=>{t||r||s()}),[s]),{isSessionLoading:n.current,sessionToken:t,isAuthenticated:!!t}},exports.useUser=()=>{const{user:t,fetchUser:r,isUserLoading:s,session:o}=b(),[n,u]=e.useState(!1),i=e.useRef(s),c=e.useMemo((()=>!t&&!s&&o&&!n),[r,o,n]);return e.useMemo((()=>{i.current=s}),[s]),e.useMemo((()=>{c&&(i.current=!0)}),[c]),e.useEffect((()=>{c&&(u(!0),r())}),[c]),{isUserLoading:i.current,user:t}};
2
2
  //# sourceMappingURL=index.cjs.js.map
package/dist/index.d.ts CHANGED
@@ -78,9 +78,11 @@ declare const createSdkWrapper: <P extends Omit<{
78
78
  samlIdpStateId?: string;
79
79
  samlIdpUsername?: string;
80
80
  ssoAppId?: string;
81
+ oidcLoginHint?: string;
81
82
  abTestingKey?: number;
83
+ startOptionsVersion?: number;
82
84
  client?: Record<string, any>;
83
- }, "tenant" | "redirectUrl" | "redirectAuth" | "oidcIdpStateId" | "samlIdpStateId" | "samlIdpUsername" | "ssoAppId" | "preview" | "abTestingKey" | "client"> & {
85
+ }, "tenant" | "redirectUrl" | "redirectAuth" | "oidcIdpStateId" | "samlIdpStateId" | "samlIdpUsername" | "ssoAppId" | "oidcLoginHint" | "preview" | "abTestingKey" | "client"> & {
84
86
  lastAuth?: Omit<{
85
87
  authMethod?: "webauthn" | "otp" | "oauth" | "saml" | "totp" | "magiclink" | "enchantedlink";
86
88
  oauthProvider?: string;
@@ -104,11 +106,7 @@ declare const createSdkWrapper: <P extends Omit<{
104
106
  finish: (transactionId: string, response: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
105
107
  };
106
108
  signIn: ((identifier: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>) & {
107
- start: (loginId: string, origin: string, loginOptions?: {
108
- stepup?: boolean;
109
- mfa?: boolean;
110
- customClaims?: Record<string, any>;
111
- }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
109
+ start: (loginId: string, origin: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
112
110
  transactionId: string;
113
111
  options: string;
114
112
  create: boolean;
@@ -326,65 +324,21 @@ declare const createSdkWrapper: <P extends Omit<{
326
324
  };
327
325
  };
328
326
  oauth: {
329
- start: ((provider: string, redirectUrl?: string, loginOptions?: {
330
- stepup?: boolean;
331
- mfa?: boolean;
332
- customClaims?: Record<string, any>;
333
- }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
334
- facebook: (redirectURL?: string, loginOptions?: {
335
- stepup?: boolean;
336
- mfa?: boolean;
337
- customClaims?: Record<string, any>;
338
- }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
339
- github: (redirectURL?: string, loginOptions?: {
340
- stepup?: boolean;
341
- mfa?: boolean;
342
- customClaims?: Record<string, any>;
343
- }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
344
- google: (redirectURL?: string, loginOptions?: {
345
- stepup?: boolean;
346
- mfa?: boolean;
347
- customClaims?: Record<string, any>;
348
- }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
349
- microsoft: (redirectURL?: string, loginOptions?: {
350
- stepup?: boolean;
351
- mfa?: boolean;
352
- customClaims?: Record<string, any>;
353
- }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
354
- gitlab: (redirectURL?: string, loginOptions?: {
355
- stepup?: boolean;
356
- mfa?: boolean;
357
- customClaims?: Record<string, any>;
358
- }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
359
- apple: (redirectURL?: string, loginOptions?: {
360
- stepup?: boolean;
361
- mfa?: boolean;
362
- customClaims?: Record<string, any>;
363
- }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
364
- discord: (redirectURL?: string, loginOptions?: {
365
- stepup?: boolean;
366
- mfa?: boolean;
367
- customClaims?: Record<string, any>;
368
- }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
369
- linkedin: (redirectURL?: string, loginOptions?: {
370
- stepup?: boolean;
371
- mfa?: boolean;
372
- customClaims?: Record<string, any>;
373
- }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
374
- slack: (redirectURL?: string, loginOptions?: {
375
- stepup?: boolean;
376
- mfa?: boolean;
377
- customClaims?: Record<string, any>;
378
- }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
327
+ start: ((provider: string, redirectUrl?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
328
+ facebook: (redirectURL?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
329
+ github: (redirectURL?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
330
+ google: (redirectURL?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
331
+ microsoft: (redirectURL?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
332
+ gitlab: (redirectURL?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
333
+ apple: (redirectURL?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
334
+ discord: (redirectURL?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
335
+ linkedin: (redirectURL?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
336
+ slack: (redirectURL?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
379
337
  };
380
338
  exchange: (code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
381
339
  };
382
340
  saml: {
383
- start: (tenantIdOrEmail: string, redirectUrl?: string, loginOptions?: {
384
- stepup?: boolean;
385
- mfa?: boolean;
386
- customClaims?: Record<string, any>;
387
- }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
341
+ start: (tenantIdOrEmail: string, redirectUrl?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
388
342
  exchange: (code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
389
343
  };
390
344
  totp: {
@@ -396,11 +350,7 @@ declare const createSdkWrapper: <P extends Omit<{
396
350
  familyName?: string;
397
351
  phone?: string;
398
352
  }) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.TOTPResponse>>;
399
- verify: (loginId: string, code: string, loginOptions?: {
400
- stepup?: boolean;
401
- mfa?: boolean;
402
- customClaims?: Record<string, any>;
403
- }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
353
+ verify: (loginId: string, code: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
404
354
  update: (loginId: string, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.TOTPResponse>>;
405
355
  };
406
356
  password: {
@@ -496,9 +446,11 @@ declare const createSdkWrapper: <P extends Omit<{
496
446
  samlIdpStateId?: string;
497
447
  samlIdpUsername?: string;
498
448
  ssoAppId?: string;
449
+ oidcLoginHint?: string;
499
450
  abTestingKey?: number;
451
+ startOptionsVersion?: number;
500
452
  client?: Record<string, any>;
501
- }, "tenant" | "redirectUrl" | "redirectAuth" | "oidcIdpStateId" | "samlIdpStateId" | "samlIdpUsername" | "ssoAppId" | "preview" | "abTestingKey" | "client"> & {
453
+ }, "tenant" | "redirectUrl" | "redirectAuth" | "oidcIdpStateId" | "samlIdpStateId" | "samlIdpUsername" | "ssoAppId" | "oidcLoginHint" | "preview" | "abTestingKey" | "client"> & {
502
454
  lastAuth?: Omit<{
503
455
  authMethod?: "webauthn" | "otp" | "oauth" | "saml" | "totp" | "magiclink" | "enchantedlink";
504
456
  oauthProvider?: string;
@@ -522,11 +474,7 @@ declare const createSdkWrapper: <P extends Omit<{
522
474
  finish: (transactionId: string, response: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
523
475
  };
524
476
  signIn: ((identifier: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>) & {
525
- start: (loginId: string, origin: string, loginOptions?: {
526
- stepup?: boolean;
527
- mfa?: boolean;
528
- customClaims?: Record<string, any>;
529
- }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
477
+ start: (loginId: string, origin: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<{
530
478
  transactionId: string;
531
479
  options: string;
532
480
  create: boolean;
@@ -744,65 +692,21 @@ declare const createSdkWrapper: <P extends Omit<{
744
692
  };
745
693
  };
746
694
  oauth: {
747
- start: ((provider: string, redirectUrl?: string, loginOptions?: {
748
- stepup?: boolean;
749
- mfa?: boolean;
750
- customClaims?: Record<string, any>;
751
- }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
752
- facebook: (redirectURL?: string, loginOptions?: {
753
- stepup?: boolean;
754
- mfa?: boolean;
755
- customClaims?: Record<string, any>;
756
- }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
757
- github: (redirectURL?: string, loginOptions?: {
758
- stepup?: boolean;
759
- mfa?: boolean;
760
- customClaims?: Record<string, any>;
761
- }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
762
- google: (redirectURL?: string, loginOptions?: {
763
- stepup?: boolean;
764
- mfa?: boolean;
765
- customClaims?: Record<string, any>;
766
- }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
767
- microsoft: (redirectURL?: string, loginOptions?: {
768
- stepup?: boolean;
769
- mfa?: boolean;
770
- customClaims?: Record<string, any>;
771
- }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
772
- gitlab: (redirectURL?: string, loginOptions?: {
773
- stepup?: boolean;
774
- mfa?: boolean;
775
- customClaims?: Record<string, any>;
776
- }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
777
- apple: (redirectURL?: string, loginOptions?: {
778
- stepup?: boolean;
779
- mfa?: boolean;
780
- customClaims?: Record<string, any>;
781
- }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
782
- discord: (redirectURL?: string, loginOptions?: {
783
- stepup?: boolean;
784
- mfa?: boolean;
785
- customClaims?: Record<string, any>;
786
- }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
787
- linkedin: (redirectURL?: string, loginOptions?: {
788
- stepup?: boolean;
789
- mfa?: boolean;
790
- customClaims?: Record<string, any>;
791
- }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
792
- slack: (redirectURL?: string, loginOptions?: {
793
- stepup?: boolean;
794
- mfa?: boolean;
795
- customClaims?: Record<string, any>;
796
- }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
695
+ start: ((provider: string, redirectUrl?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.ResponseData>>) & {
696
+ facebook: (redirectURL?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
697
+ github: (redirectURL?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
698
+ google: (redirectURL?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
699
+ microsoft: (redirectURL?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
700
+ gitlab: (redirectURL?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
701
+ apple: (redirectURL?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
702
+ discord: (redirectURL?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
703
+ linkedin: (redirectURL?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
704
+ slack: (redirectURL?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
797
705
  };
798
706
  exchange: (code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
799
707
  };
800
708
  saml: {
801
- start: (tenantIdOrEmail: string, redirectUrl?: string, loginOptions?: {
802
- stepup?: boolean;
803
- mfa?: boolean;
804
- customClaims?: Record<string, any>;
805
- }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
709
+ start: (tenantIdOrEmail: string, redirectUrl?: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.URLResponse>>;
806
710
  exchange: (code: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
807
711
  };
808
712
  totp: {
@@ -814,11 +718,7 @@ declare const createSdkWrapper: <P extends Omit<{
814
718
  familyName?: string;
815
719
  phone?: string;
816
720
  }) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.TOTPResponse>>;
817
- verify: (loginId: string, code: string, loginOptions?: {
818
- stepup?: boolean;
819
- mfa?: boolean;
820
- customClaims?: Record<string, any>;
821
- }, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
721
+ verify: (loginId: string, code: string, loginOptions?: _descope_core_js_sdk.LoginOptions, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.JWTResponse>>;
822
722
  update: (loginId: string, token?: string) => Promise<_descope_core_js_sdk.SdkResponse<_descope_core_js_sdk.TOTPResponse>>;
823
723
  };
824
724
  password: {
package/dist/index.esm.js CHANGED
@@ -1,2 +1,2 @@
1
- import e,{useMemo as r,useState as t,useEffect as o,useRef as n,useCallback as s,lazy as i,useImperativeHandle as c,Suspense as a,useContext as u}from"react";import d from"@descope/web-js-sdk";const l=e.createContext(void 0),f=e=>(...r)=>{if(!e)throw Error("You can only use this function after sdk initialization. Make sure to supply 'projectId' to <AuthProvider /> component");return e(...r)},p=e=>(...r)=>{let t;try{t=e(...r)}catch(e){console.error(e)}return t},m={"x-descope-sdk-name":"react","x-descope-sdk-version":"2.0.4"},h="undefined"!=typeof window;let k;const g=e=>{const r=d({...e,persistTokens:h,autoRefresh:h});return k=r,r};k=g({projectId:"temp pid"});const w=()=>h?k?.getSessionToken():(console.warn("Get session token is not supported in SSR"),""),y=()=>h?k?.getRefreshToken():(console.warn("Get refresh token is not supported in SSR"),""),b=p(((e=w(),r)=>k?.getJwtPermissions(e,r))),I=p(((e=w(),r)=>k?.getJwtRoles(e,r))),S=(e=y())=>k?.refresh(e);const U=({projectId:i,baseUrl:c="",sessionTokenViaCookie:a=!1,children:u})=>{const[d,p]=t(),[h,k]=t(),[w,y]=t(!1),[b,I]=t(!1),S=(({projectId:e,baseUrl:t,sessionTokenViaCookie:o})=>r((()=>{if(e)return g({projectId:e,baseUrl:t,sessionTokenViaCookie:o,baseHeaders:m,persistToken:!0,autoRefresh:!0})}),[e,t,o]))({projectId:i,baseUrl:c,sessionTokenViaCookie:a});o((()=>{if(S){const e=S.onSessionTokenChange(k),r=S.onUserChange(p);return()=>{e(),r()}}}),[S]);const U=n(!1),E=s((()=>{U.current||(U.current=!0,I(!0),f(S?.refresh)().then((()=>{I(!1)})))}),[S]),j=s((()=>{y(!0),f(S.me)().then((()=>{y(!1)}))}),[S]),v=r((()=>({fetchUser:j,user:d,isUserLoading:w,fetchSession:E,session:h,isSessionLoading:b,isSessionFetched:U.current,projectId:i,baseUrl:c,setUser:p,setSession:k,sdk:S})),[j,d,w,E,h,b,U.current,i,c,p,k,S]);return e.createElement(l.Provider,{value:v},u)},E=i((async()=>((await import("@descope/web-component")).default.sdkConfigOverrides={baseHeaders:m},{default:({projectId:r,flowId:t,baseUrl:o,innerRef:n,tenant:s,theme:i,locale:c,debug:a,redirectUrl:u,client:d,form:l,autoFocus:f})=>e.createElement("descope-wc",{"project-id":r,"flow-id":t,"base-url":o,ref:n,tenant:s,theme:i,locale:c,debug:a,client:d,form:l,"redirect-url":u,"auto-focus":f})}))),j=e.forwardRef((({flowId:n,onSuccess:i,onError:u,logger:d,tenant:f,theme:p,locale:m,debug:h,client:k,form:g,telemetryKey:w,redirectUrl:y,autoFocus:b,errorTransformer:I},S)=>{const[U,j]=t(null);c(S,(()=>U));const{projectId:v,baseUrl:T,sdk:C}=e.useContext(l),R=s((async e=>{await C.httpClient.hooks.afterRequest({},new Response(JSON.stringify(e.detail))),i&&i(e)}),[i]);o((()=>{const e=U;return e?.addEventListener("success",R),u&&e?.addEventListener("error",u),()=>{u&&e?.removeEventListener("error",u),e?.removeEventListener("success",R)}}),[U,u,R]),o((()=>{U&&(U.errorTransformer=I)}),[U,I]),o((()=>{U&&d&&(U.logger=d)}),[U,d]);const{form:L,client:x}=r((()=>({form:JSON.stringify(g||{}),client:JSON.stringify(k||{})})),[g,k]);return e.createElement("form",null,e.createElement(a,{fallback:null},e.createElement(E,{projectId:v,flowId:n,baseUrl:T,innerRef:j,tenant:f,theme:p,locale:m,debug:h,form:L,client:x,telemetryKey:w,redirectUrl:y,autoFocus:b})))})),v=r=>e.createElement(j,{...r,flowId:"sign-in"}),T=r=>e.createElement(j,{...r,flowId:"sign-up"}),C=r=>e.createElement(j,{...r,flowId:"sign-up-or-in"});var R=()=>{const e=u(l);if(!e)throw Error("You can only use this hook in the context of <AuthProvider />");return e};const L=e=>`You can only use this ${e} after sdk initialization. Make sure to supply 'projectId' to <AuthProvider /> component`,x={get(e,r){if("object"==typeof e[r]&&null!==e[r])return new Proxy(e[r],x);if("function"==typeof e[r])return()=>{throw Error(L("function"))};throw Error(L("attribute"))}},P=()=>{const{sdk:e}=R();return r((()=>e||new Proxy(g({projectId:"dummy"}),x)),[e])},F=()=>{const{session:e,isSessionLoading:t,fetchSession:s,isSessionFetched:i}=R(),c=n(t);return r((()=>{c.current=t}),[t]),r((()=>{i||(c.current=!0)}),[i]),o((()=>{e||t||s()}),[s]),{isSessionLoading:c.current,sessionToken:e,isAuthenticated:!!e}},J=()=>{const{user:e,fetchUser:s,isUserLoading:i,session:c}=R(),[a,u]=t(!1),d=n(i),l=r((()=>!e&&!i&&c&&!a),[s,c,a]);return r((()=>{d.current=i}),[i]),r((()=>{l&&(d.current=!0)}),[l]),o((()=>{l&&(u(!0),s())}),[l]),{isUserLoading:d.current,user:e}};export{U as AuthProvider,j as Descope,v as SignInFlow,T as SignUpFlow,C as SignUpOrInFlow,b as getJwtPermissions,I as getJwtRoles,y as getRefreshToken,w as getSessionToken,S as refresh,P as useDescope,F as useSession,J as useUser};
1
+ import e,{useMemo as r,useState as t,useEffect as o,useRef as n,useCallback as s,lazy as i,useImperativeHandle as c,Suspense as a,useContext as u}from"react";import d from"@descope/web-js-sdk";const l=e.createContext(void 0),f=e=>(...r)=>{if(!e)throw Error("You can only use this function after sdk initialization. Make sure to supply 'projectId' to <AuthProvider /> component");return e(...r)},p=e=>(...r)=>{let t;try{t=e(...r)}catch(e){console.error(e)}return t},m={"x-descope-sdk-name":"react","x-descope-sdk-version":"2.0.5"},h="undefined"!=typeof window;let k;const g=e=>{const r=d({...e,persistTokens:h,autoRefresh:h});return k=r,r};k=g({projectId:"temp pid"});const w=()=>h?k?.getSessionToken():(console.warn("Get session token is not supported in SSR"),""),y=()=>h?k?.getRefreshToken():(console.warn("Get refresh token is not supported in SSR"),""),b=p(((e=w(),r)=>k?.getJwtPermissions(e,r))),I=p(((e=w(),r)=>k?.getJwtRoles(e,r))),S=(e=y())=>k?.refresh(e);const U=({projectId:i,baseUrl:c="",sessionTokenViaCookie:a=!1,children:u})=>{const[d,p]=t(),[h,k]=t(),[w,y]=t(!1),[b,I]=t(!1),S=(({projectId:e,baseUrl:t,sessionTokenViaCookie:o})=>r((()=>{if(e)return g({projectId:e,baseUrl:t,sessionTokenViaCookie:o,baseHeaders:m,persistToken:!0,autoRefresh:!0})}),[e,t,o]))({projectId:i,baseUrl:c,sessionTokenViaCookie:a});o((()=>{if(S){const e=S.onSessionTokenChange(k),r=S.onUserChange(p);return()=>{e(),r()}}}),[S]);const U=n(!1),E=s((()=>{U.current||(U.current=!0,I(!0),f(S?.refresh)().then((()=>{I(!1)})))}),[S]),j=s((()=>{y(!0),f(S.me)().then((()=>{y(!1)}))}),[S]),v=r((()=>({fetchUser:j,user:d,isUserLoading:w,fetchSession:E,session:h,isSessionLoading:b,isSessionFetched:U.current,projectId:i,baseUrl:c,setUser:p,setSession:k,sdk:S})),[j,d,w,E,h,b,U.current,i,c,p,k,S]);return e.createElement(l.Provider,{value:v},u)},E=i((async()=>((await import("@descope/web-component")).default.sdkConfigOverrides={baseHeaders:m},{default:({projectId:r,flowId:t,baseUrl:o,innerRef:n,tenant:s,theme:i,locale:c,debug:a,redirectUrl:u,client:d,form:l,autoFocus:f})=>e.createElement("descope-wc",{"project-id":r,"flow-id":t,"base-url":o,ref:n,tenant:s,theme:i,locale:c,debug:a,client:d,form:l,"redirect-url":u,"auto-focus":f})}))),j=e.forwardRef((({flowId:n,onSuccess:i,onError:u,logger:d,tenant:f,theme:p,locale:m,debug:h,client:k,form:g,telemetryKey:w,redirectUrl:y,autoFocus:b,errorTransformer:I},S)=>{const[U,j]=t(null);c(S,(()=>U));const{projectId:v,baseUrl:T,sdk:C}=e.useContext(l),R=s((async e=>{await C.httpClient.hooks.afterRequest({},new Response(JSON.stringify(e.detail))),i&&i(e)}),[i]);o((()=>{const e=U;return e?.addEventListener("success",R),u&&e?.addEventListener("error",u),()=>{u&&e?.removeEventListener("error",u),e?.removeEventListener("success",R)}}),[U,u,R]),o((()=>{U&&(U.errorTransformer=I)}),[U,I]),o((()=>{U&&d&&(U.logger=d)}),[U,d]);const{form:L,client:x}=r((()=>({form:JSON.stringify(g||{}),client:JSON.stringify(k||{})})),[g,k]);return e.createElement("form",null,e.createElement(a,{fallback:null},e.createElement(E,{projectId:v,flowId:n,baseUrl:T,innerRef:j,tenant:f,theme:p,locale:m,debug:h,form:L,client:x,telemetryKey:w,redirectUrl:y,autoFocus:b})))})),v=r=>e.createElement(j,{...r,flowId:"sign-in"}),T=r=>e.createElement(j,{...r,flowId:"sign-up"}),C=r=>e.createElement(j,{...r,flowId:"sign-up-or-in"});var R=()=>{const e=u(l);if(!e)throw Error("You can only use this hook in the context of <AuthProvider />");return e};const L=e=>`You can only use this ${e} after sdk initialization. Make sure to supply 'projectId' to <AuthProvider /> component`,x={get(e,r){if("object"==typeof e[r]&&null!==e[r])return new Proxy(e[r],x);if("function"==typeof e[r])return()=>{throw Error(L("function"))};throw Error(L("attribute"))}},P=()=>{const{sdk:e}=R();return r((()=>e||new Proxy(g({projectId:"dummy"}),x)),[e])},F=()=>{const{session:e,isSessionLoading:t,fetchSession:s,isSessionFetched:i}=R(),c=n(t);return r((()=>{c.current=t}),[t]),r((()=>{i||(c.current=!0)}),[i]),o((()=>{e||t||s()}),[s]),{isSessionLoading:c.current,sessionToken:e,isAuthenticated:!!e}},J=()=>{const{user:e,fetchUser:s,isUserLoading:i,session:c}=R(),[a,u]=t(!1),d=n(i),l=r((()=>!e&&!i&&c&&!a),[s,c,a]);return r((()=>{d.current=i}),[i]),r((()=>{l&&(d.current=!0)}),[l]),o((()=>{l&&(u(!0),s())}),[l]),{isUserLoading:d.current,user:e}};export{U as AuthProvider,j as Descope,v as SignInFlow,T as SignUpFlow,C as SignUpOrInFlow,b as getJwtPermissions,I as getJwtRoles,y as getRefreshToken,w as getSessionToken,S as refresh,P as useDescope,F as useSession,J as useUser};
2
2
  //# sourceMappingURL=index.esm.js.map