@descope/core-js-sdk 1.0.10 → 1.0.12

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/dist/index.d.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  declare type JSONSerializable = string | number | boolean | null | Array<JSONSerializable>;
2
2
  declare type FlowInput = Record<string, JSONSerializable>;
3
3
 
4
- declare type SdkFn$1 = (...args: any[]) => Promise<SdkResponse<ResponseData>>;
5
4
  declare type DeviceInfo = {
6
5
  webAuthnSupport?: boolean;
7
6
  };
@@ -12,6 +11,7 @@ declare type LastAuth = {
12
11
  loginId?: string;
13
12
  };
14
13
  declare type AuthMethod = 'magiclink' | 'enchantedlink' | 'otp' | 'totp' | 'oauth' | 'saml' | 'webauthn';
14
+ declare type SdkFn$1 = (...args: any[]) => Promise<SdkResponse<ResponseData>>;
15
15
  declare type MaskedPhone = {
16
16
  maskedPhone: string;
17
17
  };
@@ -77,7 +77,6 @@ declare type EnchantedLinkResponse = {
77
77
  /** Email to which the link was sent to */
78
78
  maskedEmail: string;
79
79
  };
80
- declare type MaskedAddress<T> = T extends DeliveryMethods.email ? MaskedEmail : T extends DeliveryMethods.sms ? MaskedPhone : T extends DeliveryMethods.whatsapp ? MaskedPhone : never;
81
80
  /** URL response to redirect user in case of OAuth or SSO */
82
81
  declare type URLResponse = {
83
82
  url: string;
@@ -103,12 +102,21 @@ declare type PasswordPolicyResponse = {
103
102
  number: boolean;
104
103
  nonAlphanumeric: boolean;
105
104
  };
106
- /** All delivery methods currently supported */
107
- declare enum DeliveryMethods {
108
- email = "email",
105
+ /** Phone delivery methods which are currently supported */
106
+ declare enum DeliveryPhone {
109
107
  sms = "sms",
110
108
  whatsapp = "whatsapp"
111
109
  }
110
+ declare enum DeliveryEmail {
111
+ email = "email"
112
+ }
113
+ /** All delivery methods currently supported */
114
+ declare type DeliveryMethods = DeliveryPhone | DeliveryEmail;
115
+ declare const DeliveryMethods: {
116
+ readonly email: DeliveryEmail.email;
117
+ readonly sms: DeliveryPhone.sms;
118
+ readonly whatsapp: DeliveryPhone.whatsapp;
119
+ };
112
120
  /** All flow execution statuses
113
121
  * - waiting - flow execution is waiting for user interaction
114
122
  * - running - flow execution is currently running
@@ -179,7 +187,12 @@ declare type SdkResponse<T extends ResponseData> = {
179
187
  data?: T;
180
188
  };
181
189
  /** Different delivery method */
182
- declare type Deliveries<T extends SdkFn$1> = Record<keyof typeof DeliveryMethods, T>;
190
+ declare type Deliveries<T extends Record<DeliveryMethods, SdkFn$1> | SdkFn$1> = {
191
+ [S in DeliveryMethods]: T extends Record<DeliveryMethods, SdkFn$1> ? T[S] : T;
192
+ };
193
+ declare type DeliveriesPhone<T extends Record<DeliveryPhone, SdkFn$1> | SdkFn$1> = {
194
+ [S in DeliveryPhone]: T extends Record<DeliveryPhone, SdkFn$1> ? T[S] : T;
195
+ };
183
196
  /** Logger type that supports the given levels (debug, log, error) */
184
197
  declare type Logger = Pick<Console, 'debug' | 'log' | 'error' | 'warn'>;
185
198
 
@@ -191,10 +204,6 @@ declare type WaitForSessionConfig = {
191
204
  timeoutMs: number;
192
205
  };
193
206
 
194
- declare type SignInFn<T> = (loginId: string, uri: string) => Promise<SdkResponse<MaskedAddress<T>>>;
195
- declare type SignUpFn<T> = (loginId: string, uri: string, user?: User) => Promise<SdkResponse<MaskedAddress<T>>>;
196
- declare type UpdatePhoneFn = (loginId: string, phone: string) => Promise<SdkResponse<MaskedAddress<DeliveryMethods.sms>>>;
197
-
198
207
  /** Request configuration including headers, query params and token */
199
208
  declare type HttpClientReqConfig = {
200
209
  headers?: HeadersInit;
@@ -310,24 +319,6 @@ declare type SdkFnWrapper<Z extends ResponseData> = <A extends any[], R extends
310
319
  */
311
320
  declare const wrapWith: <Obj extends object, Paths extends readonly SdkFnsPaths<Obj>[], WrapperData extends ResponseData>(obj: Obj, paths: Paths, wrapper: SdkFnWrapper<WrapperData>) => ReplacePaths<Obj, Paths, WrapperData>;
312
321
 
313
- /**
314
- * Add hooks to an existing core-sdk config
315
- */
316
- declare const addHooksToConfig: <Config extends Omit<{
317
- projectId: string;
318
- logger?: Logger;
319
- baseUrl?: string;
320
- hooks?: Hooks;
321
- cookiePolicy?: RequestCredentials;
322
- baseHeaders?: HeadersInit;
323
- fetch?: typeof fetch;
324
- }, "hooks"> & {
325
- hooks?: {
326
- beforeRequest?: BeforeRequest | BeforeRequest[];
327
- afterRequest?: AfterRequest | AfterRequest[];
328
- };
329
- }>(config: Config, hooks: Config["hooks"]) => Config;
330
-
331
322
  declare const _default$1: {
332
323
  TOO_MANY_REQUESTS: number;
333
324
  };
@@ -367,68 +358,47 @@ declare const _default: ((config: Omit<{
367
358
  };
368
359
  otp: {
369
360
  verify: Deliveries<(loginId: string, code: string) => Promise<SdkResponse<JWTResponse>>>;
370
- signIn: {
371
- email: (loginId: string) => Promise<SdkResponse<{
372
- maskedEmail: string;
373
- }>>;
374
- sms: (loginId: string) => Promise<SdkResponse<{
375
- maskedPhone: string;
376
- }>>;
377
- whatsapp: (loginId: string) => Promise<SdkResponse<{
378
- maskedPhone: string;
379
- }>>;
380
- };
381
- signUp: {
382
- email: (loginId: string, user?: User) => Promise<SdkResponse<{
383
- maskedEmail: string;
384
- }>>;
385
- sms: (loginId: string, user?: User) => Promise<SdkResponse<{
386
- maskedPhone: string;
387
- }>>;
388
- whatsapp: (loginId: string, user?: User) => Promise<SdkResponse<{
389
- maskedPhone: string;
390
- }>>;
391
- };
392
- signUpOrIn: {
393
- email: (loginId: string) => Promise<SdkResponse<{
394
- maskedEmail: string;
395
- }>>;
396
- sms: (loginId: string) => Promise<SdkResponse<{
397
- maskedPhone: string;
398
- }>>;
399
- whatsapp: (loginId: string) => Promise<SdkResponse<{
400
- maskedPhone: string;
401
- }>>;
402
- };
361
+ /** Type to restrict to valid OAuth providers */
362
+ signIn: Deliveries<{
363
+ sms: (loginId: string) => Promise<SdkResponse<MaskedPhone>>;
364
+ whatsapp: (loginId: string) => Promise<SdkResponse<MaskedPhone>>;
365
+ email: (loginId: string) => Promise<SdkResponse<MaskedEmail>>;
366
+ }>;
367
+ signUp: Deliveries<{
368
+ sms: (loginId: string, user?: User) => Promise<SdkResponse<MaskedPhone>>;
369
+ whatsapp: (loginId: string, user?: User) => Promise<SdkResponse<MaskedPhone>>;
370
+ email: (loginId: string, user?: User) => Promise<SdkResponse<MaskedEmail>>;
371
+ }>;
372
+ signUpOrIn: Deliveries<{
373
+ sms: (loginId: string) => Promise<SdkResponse<MaskedPhone>>;
374
+ whatsapp: (loginId: string) => Promise<SdkResponse<MaskedPhone>>;
375
+ email: (loginId: string) => Promise<SdkResponse<MaskedEmail>>;
376
+ }>;
403
377
  update: {
404
- email: (loginId: string, email: string, token?: string) => Promise<SdkResponse<{
405
- maskedEmail: string;
406
- }>>;
407
- phone: Deliveries<(loginId: string, phone: string) => Promise<SdkResponse<{
408
- maskedPhone: string;
409
- }>>>;
378
+ email: (loginId: string, email: string, token?: string) => Promise<SdkResponse<MaskedEmail>>;
379
+ phone: DeliveriesPhone<(loginId: string, phone: string, token?: string) => Promise<SdkResponse<MaskedPhone>>>;
410
380
  };
411
381
  };
412
382
  magicLink: {
413
383
  verify: (token: string) => Promise<SdkResponse<JWTResponse>>;
414
- signIn: {
415
- email: SignInFn<DeliveryMethods.email>;
416
- sms: SignInFn<DeliveryMethods.sms>;
417
- whatsapp: SignInFn<DeliveryMethods.whatsapp>;
418
- };
419
- signUp: {
420
- email: SignUpFn<DeliveryMethods.email>;
421
- sms: SignUpFn<DeliveryMethods.sms>;
422
- whatsapp: SignUpFn<DeliveryMethods.whatsapp>;
423
- };
424
- signUpOrIn: {
425
- email: SignInFn<DeliveryMethods.email>;
426
- sms: SignInFn<DeliveryMethods.sms>;
427
- whatsapp: SignInFn<DeliveryMethods.whatsapp>;
428
- };
384
+ signIn: Deliveries<{
385
+ sms: (loginId: string, uri: string) => Promise<SdkResponse<MaskedPhone>>;
386
+ whatsapp: (loginId: string, uri: string) => Promise<SdkResponse<MaskedPhone>>;
387
+ email: (loginId: string, uri: string) => Promise<SdkResponse<MaskedEmail>>;
388
+ }>;
389
+ signUp: Deliveries<{
390
+ sms: (loginId: string, uri: string, user?: User) => Promise<SdkResponse<MaskedPhone>>;
391
+ whatsapp: (loginId: string, uri: string, user?: User) => Promise<SdkResponse<MaskedPhone>>;
392
+ email: (loginId: string, uri: string, user?: User) => Promise<SdkResponse<MaskedEmail>>;
393
+ }>;
394
+ signUpOrIn: Deliveries<{
395
+ sms: (loginId: string, uri: string) => Promise<SdkResponse<MaskedPhone>>;
396
+ whatsapp: (loginId: string, uri: string) => Promise<SdkResponse<MaskedPhone>>;
397
+ email: (loginId: string, uri: string) => Promise<SdkResponse<MaskedEmail>>;
398
+ }>;
429
399
  update: {
430
- email: (loginId: string, email: string, URI?: string, token?: string) => Promise<SdkResponse<never>>;
431
- phone: Deliveries<UpdatePhoneFn>;
400
+ email: (loginId: string, email: string, URI?: string, token?: string) => Promise<SdkResponse<MaskedEmail>>;
401
+ phone: DeliveriesPhone<(loginId: string, phone: string, URI?: string, token?: string) => Promise<SdkResponse<MaskedPhone>>>;
432
402
  };
433
403
  };
434
404
  enchantedLink: {
@@ -537,7 +507,11 @@ declare const _default: ((config: Omit<{
537
507
  getJwtRoles: (token: string, tenant?: string) => string[];
538
508
  httpClient: HttpClient;
539
509
  }) & {
540
- DeliveryMethods: typeof DeliveryMethods;
510
+ DeliveryMethods: {
511
+ readonly email: DeliveryEmail.email;
512
+ readonly sms: DeliveryPhone.sms;
513
+ readonly whatsapp: DeliveryPhone.whatsapp;
514
+ };
541
515
  };
542
516
 
543
517
  /** Type to restrict to valid delivery methods */
@@ -545,4 +519,4 @@ declare type DeliveryMethod = keyof typeof DeliveryMethods;
545
519
  /** Type to restrict to valid OAuth providers */
546
520
  declare type OAuthProvider = keyof typeof OAuthProviders;
547
521
 
548
- export { DeliveryMethod, EnchantedLinkResponse, ExchangeAccessKeyResponse, FlowAction, FlowResponse, FlowStatus, HTTPMethods, _default$1 as HttpStatusCodes, JWTResponse, OAuthProvider, RequestConfig, ResponseData, SdkFnWrapper, SdkResponse, TOTPResponse, URLResponse, UserResponse, addHooksToConfig, _default as default, transformResponse, wrapWith };
522
+ export { DeliveryMethod, EnchantedLinkResponse, ExchangeAccessKeyResponse, FlowAction, FlowResponse, FlowStatus, HTTPMethods, _default$1 as HttpStatusCodes, JWTResponse, OAuthProvider, RequestConfig, ResponseData, SdkFnWrapper, SdkResponse, TOTPResponse, URLResponse, UserResponse, _default as default, transformResponse, wrapWith };
package/dist/index.esm.js CHANGED
@@ -1,2 +1,2 @@
1
- import e from"jwt-decode";import t from"lodash.get";var n={exchange:"/v1/auth/accesskey/exchange"},s={verify:"/v1/auth/otp/verify",signIn:"/v1/auth/otp/signin",signUp:"/v1/auth/otp/signup",update:{email:"/v1/auth/otp/update/email",phone:"/v1/auth/otp/update/phone"},signUpOrIn:"/v1/auth/otp/signup-in"},o={verify:"/v1/auth/magiclink/verify",signIn:"/v1/auth/magiclink/signin",signUp:"/v1/auth/magiclink/signup",update:{email:"/v1/auth/magiclink/update/email",phone:"/v1/auth/magiclink/update/phone"},signUpOrIn:"/v1/auth/magiclink/signup-in"},i={verify:"/v1/auth/enchantedlink/verify",signIn:"/v1/auth/enchantedlink/signin",signUp:"/v1/auth/enchantedlink/signup",session:"/v1/auth/enchantedlink/pending-session",update:{email:"/v1/auth/enchantedlink/update/email"},signUpOrIn:"/v1/auth/enchantedlink/signup-in"},a={start:"/v1/auth/oauth/authorize",exchange:"/v1/auth/oauth/exchange"},r={start:"/v1/auth/saml/authorize",exchange:"/v1/auth/saml/exchange"},d={verify:"/v1/auth/totp/verify",signUp:"/v1/auth/totp/signup",update:"/v1/auth/totp/update"},u={signUp:{start:"/v1/auth/webauthn/signup/start",finish:"/v1/auth/webauthn/signup/finish"},signIn:{start:"/v1/auth/webauthn/signin/start",finish:"/v1/auth/webauthn/signin/finish"},signUpOrIn:{start:"/v1/auth/webauthn/signup-in/start"},update:{start:"v1/auth/webauthn/update/start",finish:"/v1/auth/webauthn/update/finish"}},l={signUp:"/v1/auth/password/signup",signIn:"/v1/auth/password/signin",sendReset:"/v1/auth/password/reset",update:"/v1/auth/password/update",replace:"/v1/auth/password/replace",policy:"/v1/auth/password/policy"},p="/v1/auth/refresh",c="/v1/auth/logout",g="/v1/auth/logoutall",h="/v1/auth/me",v={start:"/v1/flow/start",next:"/v1/flow/next"};const f=1e3,m=6e5,I=()=>{const e={};return{headers(t){const n="function"==typeof t.entries?Object.fromEntries(t.entries()):t;return e.Headers=JSON.stringify(n),this},body(t){return e.Body=t,this},url(t){return e.Url=t.toString(),this},method(t){return e.Method=t,this},title(t){return e.Title=t,this},status(t){return e.Status=t,this},build:()=>Object.keys(e).flatMap((t=>e[t]?[`${"Title"!==t?`${t}: `:""}${e[t]}`]:[])).join("\n")}},y=(e,t)=>{const n=(e=>async(...t)=>{const n=await e(...t),s=await n.text();return n.text=()=>Promise.resolve(s),n.json=()=>Promise.resolve(JSON.parse(s)),n.clone=()=>n,n})(t||fetch);return n||null==e||e.warn("Fetch is not defined, you will not be able to send http requests, if you are running in a test, make sure fetch is defined globally"),e?async(...t)=>{if(!n)throw Error("Cannot send http request, fetch is not defined, if you are running in a test, make sure fetch is defined globally");e.log((e=>I().title("Request").url(e[0]).method(e[1].method).headers(e[1].headers).body(e[1].body).build())(t));const s=await n(...t);return e[s.ok?"log":"error"](await(async e=>{const t=await e.text();return I().title("Response").url(e.url.toString()).status(`${e.status} ${e.statusText}`).headers(e.headers).body(t).build()})(s)),s}:n};var b;!function(e){e.get="GET",e.delete="DELETE",e.post="POST",e.put="PUT"}(b||(b={}));const k=(...e)=>new Headers(e.reduce(((e,t)=>{const n=(e=>Array.isArray(e)?e:e instanceof Headers?Array.from(e.entries()):e?Object.entries(e):[])(t);return n.reduce(((t,[n,s])=>(e[n]=s,e)),e),e}),{})),w=e=>void 0===e?void 0:JSON.stringify(e),O=(e,t="")=>{let n=e;return t&&(n=n+":"+t),{Authorization:`Bearer ${n}`}},U=({baseUrl:e,projectId:t,baseConfig:n,logger:s,hooks:o,cookiePolicy:i,fetch:a})=>{const r=y(s,a),d=async s=>{const a=(null==o?void 0:o.beforeRequest)?o.beforeRequest(s):s,{path:d,body:u,headers:l,queryParams:p,method:c,token:g}=a,h=await r((({path:e,baseUrl:t,queryParams:n})=>{const s=new URL(e,t);return n&&(s.search=new URLSearchParams(n).toString()),s})({path:d,baseUrl:e,queryParams:p}),{headers:k(O(t,g),{"x-descope-sdk-name":"core-js","x-descope-sdk-version":"1.0.10"},(null==n?void 0:n.baseHeaders)||{},l),method:c,body:w(u),credentials:i||"include"});return(null==o?void 0:o.afterRequest)&&await o.afterRequest(s,null==h?void 0:h.clone()),h};return{get:(e,{headers:t,queryParams:n,token:s}={})=>d({path:e,headers:t,queryParams:n,body:void 0,method:b.get,token:s}),post:(e,t,{headers:n,queryParams:s,token:o}={})=>d({path:e,headers:n,queryParams:s,body:t,method:b.post,token:o}),put:(e,t,{headers:n,queryParams:s,token:o}={})=>d({path:e,headers:n,queryParams:s,body:t,method:b.put,token:o}),delete:(e,t,{headers:n,queryParams:s,token:o}={})=>d({path:e,headers:n,queryParams:s,body:t,method:b.delete,token:o}),hooks:o}};var j={TOO_MANY_REQUESTS:429};function P(e,t,n){var s;let o=R(e);t&&(o=null===(s=null==o?void 0:o.tenants)||void 0===s?void 0:s[t]);const i=null==o?void 0:o[n];return Array.isArray(i)?i:[]}function R(t){if("string"!=typeof t||!t)throw new Error("Invalid token provided");return e(t)}function x(e){const{exp:t}=R(e);return(new Date).getTime()/1e3>t}function q(e,t){return P(e,t,"permissions")}function E(e,t){return P(e,t,"roles")}const $=(...e)=>e.join("/").replace(/\/{2,}/g,"/");async function S(e,t){var n;const s=await e,o={code:s.status,ok:s.ok,response:s},i=await s.clone().json();return s.ok?o.data=t?t(i):i:(o.error=i,s.status===j.TOO_MANY_REQUESTS&&Object.assign(o.error,{retryAfter:Number.parseInt(null===(n=s.headers)||void 0===n?void 0:n.get("retry-after"))||0})),o}const M=(e,t)=>(n=t)=>t=>!e(t)&&n.replace("{val}",t),T=(...e)=>({validate:t=>(e.forEach((e=>{const n=e(t);if(n)throw new Error(n)})),!0)}),A=e=>t=>e.test(t),L=A(/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/),z=A(/^\+[1-9]{1}[0-9]{3,14}$/),H=M(L,'"{val}" is not a valid email'),J=M(z,'"{val}" is not a valid phone number'),N=M((C=1,e=>e.length>=C),"Minimum length is 1");var C;const _=M((e=>"string"==typeof e),"Input is not a string"),D=(...e)=>t=>(...n)=>(e.forEach(((e,t)=>T(...e).validate(n[t]))),t(...n)),Z=e=>[_(`"${e}" must be a string`),N(`"${e}" must not be empty`)],B=e=>[_(`"${e}" must be a string`),H()],F=e=>[_(`"${e}" must be a string`),J()],K=D(Z("accessKey")),Q=e=>({exchange:K((t=>S(e.post(n.exchange,{},{token:t}))))});var Y,G,V,W;!function(e){e.sms="sms",e.whatsapp="whatsapp"}(Y||(Y={})),function(e){e.email="email",e.sms="sms",e.whatsapp="whatsapp"}(G||(G={})),function(e){e.waiting="waiting",e.running="running",e.completed="completed",e.failed="failed"}(V||(V={})),function(e){e.signUp="signup",e.signIn="signin",e.verify="verify"}(W||(W={}));const X=Z("loginId"),ee=D(Z("token")),te=D(X),ne=D(Z("pendingRef")),se=D(X,B("email")),oe=e=>({verify:ee((t=>S(e.post(i.verify,{token:t})))),signIn:te(((t,n,s,o)=>S(e.post($(i.signIn,G.email),{loginId:t,URI:n,loginOptions:s},{token:o})))),signUpOrIn:te(((t,n)=>S(e.post($(i.signUpOrIn,G.email),{loginId:t,URI:n})))),signUp:te(((t,n,s)=>S(e.post($(i.signUp,G.email),{loginId:t,URI:n,user:s})))),waitForSession:ne(((t,n)=>new Promise((s=>{const{pollingIntervalMs:o,timeoutMs:a}=(({pollingIntervalMs:e=1e3,timeoutMs:t=6e5}={})=>({pollingIntervalMs:Math.max(e||f,f),timeoutMs:Math.min(t||m,m)}))(n);let r;const d=setInterval((async()=>{const n=await e.post(i.session,{pendingRef:t});n.ok&&(clearInterval(d),r&&clearTimeout(r),s(S(Promise.resolve(n))))}),o);r=setTimeout((()=>{s({error:{errorDescription:`Session polling timeout exceeded: ${a}ms`,errorCode:"0"},ok:!1}),clearInterval(d)}),a)})))),update:{email:se(((t,n,s,o)=>S(e.post(i.update.email,{loginId:t,email:n,URI:s},{token:o}))))}}),ie=D(Z("flowId")),ae=D(Z("executionId"),Z("stepId"),Z("interactionId")),re=e=>({start:ie(((t,n,s,o,i)=>S(e.post(v.start,{flowId:t,options:n,conditionInteractionId:s,interactionId:o,input:i})))),next:ae(((t,n,s,o)=>S(e.post(v.next,{executionId:t,stepId:n,interactionId:s,input:o}))))}),de=Z("loginId"),ue=D(Z("token")),le=D(de),pe=D(de,F("phone")),ce=D(de,B("email")),ge=e=>({verify:ue((t=>S(e.post(o.verify,{token:t})))),signIn:Object.keys(G).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:le(((t,s,i,a)=>S(e.post($(o.signIn,n),{loginId:t,URI:s,loginOptions:i},{token:a}))))})),{}),signUp:Object.keys(G).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:le(((t,s,i)=>S(e.post($(o.signUp,n),{loginId:t,URI:s,user:i}))))})),{}),signUpOrIn:Object.keys(G).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:le(((t,s)=>S(e.post($(o.signUpOrIn,n),{loginId:t,URI:s}))))})),{}),update:{email:ce(((t,n,s,i)=>S(e.post(o.update.email,{loginId:t,email:n,URI:s},{token:i})))),phone:Object.keys(Y).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:pe(((t,s,i,a)=>S(e.post($(o.update.phone,n),{loginId:t,phone:s,URI:i},{token:a}))))})),{})}});var he;!function(e){e.facebook="facebook",e.github="github",e.google="google",e.microsoft="microsoft",e.gitlab="gitlab",e.apple="apple",e.discord="discord",e.linkedin="linkedin"}(he||(he={}));const ve=D(Z("code")),fe=e=>({start:Object.keys(he).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:async(t,{redirect:s=!1}={},o,i)=>{const r=await e.post(a.start,o||{},{queryParams:Object.assign({provider:n},t&&{redirectURL:t}),token:i});if(!s||!r.ok)return S(Promise.resolve(r));const{url:d}=await r.json();window.location.href=d}})),{}),exchange:ve((t=>S(e.post(a.exchange,{code:t}))))});var me;!function(e){e.signUp="signup",e.signIn="signin",e.verify="verify",e.updatePhone="updatePhone"}(me||(me={}));const Ie=Z("loginId"),ye=D(Ie,Z("code")),be=D(Ie),ke=D(Ie,F("phone")),we=D(Ie,B("email")),Oe=e=>({verify:Object.keys(G).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:ye(((t,o)=>S(e.post($(s.verify,n),{code:o,loginId:t}))))})),{}),signIn:Object.keys(G).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:be(((t,o,i)=>S(e.post($(s.signIn,n),{loginId:t,loginOptions:o},{token:i}))))})),{}),signUp:Object.keys(G).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:be(((t,o)=>S(e.post($(s.signUp,n),{loginId:t,user:o}))))})),{}),signUpOrIn:Object.keys(G).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:be((t=>S(e.post($(s.signUpOrIn,n),{loginId:t}))))})),{}),update:{email:we(((t,n,o)=>S(e.post(s.update.email,{loginId:t,email:n},{token:o})))),phone:Object.keys(Y).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:ke(((t,o,i)=>S(e.post($(s.update.phone,n),{loginId:t,phone:o},{token:i}))))})),{})}}),Ue=D(Z("tenant")),je=D(Z("code")),Pe=e=>({start:Ue((async(t,n,{redirect:s=!1}={},o,i)=>{const a=await e.post(r.start,o||{},{queryParams:{tenant:t,redirectURL:n},token:i});if(!s||!a.ok)return S(Promise.resolve(a));const{url:d}=await a.json();window.location.href=d})),exchange:je((t=>S(e.post(r.exchange,{code:t}))))}),Re=Z("loginId"),xe=D(Re,Z("code")),qe=D(Re),Ee=D(Re),$e=e=>({signUp:qe(((t,n)=>S(e.post(d.signUp,{loginId:t,user:n})))),verify:xe(((t,n,s,o)=>S(e.post(d.verify,{loginId:t,code:n,loginOptions:s},{token:o})))),update:Ee(((t,n)=>S(e.post(d.update,{loginId:t},{token:n}))))}),Se=Z("loginId"),Me=Z("newPassword"),Te=D(Se,Z("password")),Ae=D(Se),Le=D(Se,Me),ze=D(Se,Z("oldPassword"),Me),He=e=>({signUp:Te(((t,n,s)=>S(e.post(l.signUp,{loginId:t,password:n,user:s})))),signIn:Te(((t,n)=>S(e.post(l.signIn,{loginId:t,password:n})))),sendReset:Ae(((t,n)=>S(e.post(l.sendReset,{loginId:t,redirectUrl:n})))),update:Le(((t,n,s)=>S(e.post(l.update,{loginId:t,newPassword:n},{token:s})))),replace:ze(((t,n,s)=>S(e.post(l.replace,{loginId:t,oldPassword:n,newPassword:s})))),policy:()=>S(e.get(l.policy))}),Je=[_(`"${"loginId"}" must be a string`)];const Ne=Z("loginId"),Ce=Z("origin"),_e=D(Ne,Ce,Z("name")),De=D(Ne,Ce),Ze=D(Je,Ce),Be=D(Ne,Ce,Z("token")),Fe=D(Z("transactionId"),Z("response")),Ke=e=>({signUp:{start:_e(((t,n,s)=>S(e.post(u.signUp.start,{user:{loginId:t,name:s},origin:n})))),finish:Fe(((t,n)=>S(e.post(u.signUp.finish,{transactionId:t,response:n}))))},signIn:{start:Ze(((t,n,s,o)=>S(e.post(u.signIn.start,{loginId:t,origin:n,loginOptions:s},{token:o})))),finish:Fe(((t,n)=>S(e.post(u.signIn.finish,{transactionId:t,response:n}))))},signUpOrIn:{start:De(((t,n)=>S(e.post(u.signUpOrIn.start,{loginId:t,origin:n}))))},update:{start:Be(((t,n,s)=>S(e.post(u.update.start,{loginId:t,origin:n},{token:s})))),finish:Fe(((t,n)=>S(e.post(u.update.finish,{transactionId:t,response:n}))))}}),Qe=D(Z("token"));var Ye,Ge;var Ve=D([(Ye="projectId",Ge=Z("projectId"),M(((e,n)=>s=>T(...n).validate(t(s,e)))(Ye,Ge))())])((e=>t=>{var n,s;const o=[].concat((null===(n=t.hooks)||void 0===n?void 0:n.beforeRequest)||[]),i=[].concat((null===(s=t.hooks)||void 0===s?void 0:s.afterRequest)||[]);return e(Object.assign(Object.assign({},t),{hooks:{beforeRequest:e=>null==o?void 0:o.reduce(((e,t)=>t(e)),e),afterRequest:async(e,n)=>{(await Promise.allSettled(null==i?void 0:i.map((t=>t(e,null==n?void 0:n.clone()))))).forEach((e=>{var n;return"rejected"===e.status&&(null===(n=t.logger)||void 0===n?void 0:n.error(e.reason))}))}}}))})((({projectId:e,logger:t,baseUrl:n,hooks:s,cookiePolicy:o,baseHeaders:i={},fetch:a})=>{return r=U({baseUrl:n||"https://api.descope.com",projectId:e,logger:t,hooks:s,cookiePolicy:o,baseConfig:{baseHeaders:i},fetch:a}),{accessKey:Q(r),otp:Oe(r),magicLink:ge(r),enchantedLink:oe(r),oauth:fe(r),saml:Pe(r),totp:$e(r),webauthn:Ke(r),password:He(r),flow:re(r),refresh:e=>S(r.post(p,{},{token:e})),logout:e=>S(r.post(c,{},{token:e})),logoutAll:e=>S(r.post(g,{},{token:e})),me:e=>S(r.get(h,{token:e})),isJwtExpired:Qe(x),getJwtPermissions:Qe(q),getJwtRoles:Qe(E),httpClient:r};var r})));const We=(e,t,n)=>(t.forEach((t=>{const s=t.split(".");let o=s.shift(),i=e;for(;s.length>0;){if(i=i[o],!o||!i)throw Error(`Invalid path "${t}", "${o}" is missing or has no value`);o=s.shift()}if("function"!=typeof i[o])throw Error(`"${t}" is not a function`);const a=i[o];i[o]=n(a)})),e),Xe=(e,t)=>{var n;return["beforeRequest","afterRequest"].reduce(((n,s)=>{var o;return n[s]=[].concat((null===(o=e.hooks)||void 0===o?void 0:o[s])||[]).concat((null==t?void 0:t[s])||[]),n}),null!==(n=e.hooks)&&void 0!==n?n:e.hooks={}),e};var et=Object.assign(Ve,{DeliveryMethods:G});export{j as HttpStatusCodes,Xe as addHooksToConfig,et as default,S as transformResponse,We as wrapWith};
1
+ import e from"jwt-decode";import t from"lodash.get";var n={exchange:"/v1/auth/accesskey/exchange"},s={verify:"/v1/auth/otp/verify",signIn:"/v1/auth/otp/signin",signUp:"/v1/auth/otp/signup",update:{email:"/v1/auth/otp/update/email",phone:"/v1/auth/otp/update/phone"},signUpOrIn:"/v1/auth/otp/signup-in"},o={verify:"/v1/auth/magiclink/verify",signIn:"/v1/auth/magiclink/signin",signUp:"/v1/auth/magiclink/signup",update:{email:"/v1/auth/magiclink/update/email",phone:"/v1/auth/magiclink/update/phone"},signUpOrIn:"/v1/auth/magiclink/signup-in"},i={verify:"/v1/auth/enchantedlink/verify",signIn:"/v1/auth/enchantedlink/signin",signUp:"/v1/auth/enchantedlink/signup",session:"/v1/auth/enchantedlink/pending-session",update:{email:"/v1/auth/enchantedlink/update/email"},signUpOrIn:"/v1/auth/enchantedlink/signup-in"},a={start:"/v1/auth/oauth/authorize",exchange:"/v1/auth/oauth/exchange"},r={start:"/v1/auth/saml/authorize",exchange:"/v1/auth/saml/exchange"},d={verify:"/v1/auth/totp/verify",signUp:"/v1/auth/totp/signup",update:"/v1/auth/totp/update"},u={signUp:{start:"/v1/auth/webauthn/signup/start",finish:"/v1/auth/webauthn/signup/finish"},signIn:{start:"/v1/auth/webauthn/signin/start",finish:"/v1/auth/webauthn/signin/finish"},signUpOrIn:{start:"/v1/auth/webauthn/signup-in/start"},update:{start:"v1/auth/webauthn/update/start",finish:"/v1/auth/webauthn/update/finish"}},l={signUp:"/v1/auth/password/signup",signIn:"/v1/auth/password/signin",sendReset:"/v1/auth/password/reset",update:"/v1/auth/password/update",replace:"/v1/auth/password/replace",policy:"/v1/auth/password/policy"},p="/v1/auth/refresh",c="/v1/auth/logout",g="/v1/auth/logoutall",h="/v1/auth/me",v={start:"/v1/flow/start",next:"/v1/flow/next"};const f=1e3,m=6e5,I=()=>{const e={};return{headers(t){const n="function"==typeof t.entries?Object.fromEntries(t.entries()):t;return e.Headers=JSON.stringify(n),this},body(t){return e.Body=t,this},url(t){return e.Url=t.toString(),this},method(t){return e.Method=t,this},title(t){return e.Title=t,this},status(t){return e.Status=t,this},build:()=>Object.keys(e).flatMap((t=>e[t]?[`${"Title"!==t?`${t}: `:""}${e[t]}`]:[])).join("\n")}},b=(e,t)=>{const n=(e=>async(...t)=>{const n=await e(...t),s=await n.text();return n.text=()=>Promise.resolve(s),n.json=()=>Promise.resolve(JSON.parse(s)),n.clone=()=>n,n})(t||fetch);return n||null==e||e.warn("Fetch is not defined, you will not be able to send http requests, if you are running in a test, make sure fetch is defined globally"),e?async(...t)=>{if(!n)throw Error("Cannot send http request, fetch is not defined, if you are running in a test, make sure fetch is defined globally");e.log((e=>I().title("Request").url(e[0]).method(e[1].method).headers(e[1].headers).body(e[1].body).build())(t));const s=await n(...t);return e[s.ok?"log":"error"](await(async e=>{const t=await e.text();return I().title("Response").url(e.url.toString()).status(`${e.status} ${e.statusText}`).headers(e.headers).body(t).build()})(s)),s}:n};var y;!function(e){e.get="GET",e.delete="DELETE",e.post="POST",e.put="PUT"}(y||(y={}));const k=(...e)=>new Headers(e.reduce(((e,t)=>{const n=(e=>Array.isArray(e)?e:e instanceof Headers?Array.from(e.entries()):e?Object.entries(e):[])(t);return n.reduce(((t,[n,s])=>(e[n]=s,e)),e),e}),{})),w=e=>void 0===e?void 0:JSON.stringify(e),O=(e,t="")=>{let n=e;return t&&(n=n+":"+t),{Authorization:`Bearer ${n}`}},j=({baseUrl:e,projectId:t,baseConfig:n,logger:s,hooks:o,cookiePolicy:i,fetch:a})=>{const r=b(s,a),d=async s=>{const a=(null==o?void 0:o.beforeRequest)?o.beforeRequest(s):s,{path:d,body:u,headers:l,queryParams:p,method:c,token:g}=a,h=await r((({path:e,baseUrl:t,queryParams:n})=>{const s=new URL(e,t);return n&&(s.search=new URLSearchParams(n).toString()),s})({path:d,baseUrl:e,queryParams:p}),{headers:k(O(t,g),{"x-descope-sdk-name":"core-js","x-descope-sdk-version":"1.0.12"},(null==n?void 0:n.baseHeaders)||{},l),method:c,body:w(u),credentials:i||"include"});return(null==o?void 0:o.afterRequest)&&await o.afterRequest(s,null==h?void 0:h.clone()),h};return{get:(e,{headers:t,queryParams:n,token:s}={})=>d({path:e,headers:t,queryParams:n,body:void 0,method:y.get,token:s}),post:(e,t,{headers:n,queryParams:s,token:o}={})=>d({path:e,headers:n,queryParams:s,body:t,method:y.post,token:o}),put:(e,t,{headers:n,queryParams:s,token:o}={})=>d({path:e,headers:n,queryParams:s,body:t,method:y.put,token:o}),delete:(e,t,{headers:n,queryParams:s,token:o}={})=>d({path:e,headers:n,queryParams:s,body:t,method:y.delete,token:o}),hooks:o}};var U={TOO_MANY_REQUESTS:429};function P(e,t,n){var s;let o=R(e);t&&(o=null===(s=null==o?void 0:o.tenants)||void 0===s?void 0:s[t]);const i=null==o?void 0:o[n];return Array.isArray(i)?i:[]}function R(t){if("string"!=typeof t||!t)throw new Error("Invalid token provided");return e(t)}function x(e){const{exp:t}=R(e);return(new Date).getTime()/1e3>t}function q(e,t){return P(e,t,"permissions")}function E(e,t){return P(e,t,"roles")}const $=(...e)=>e.join("/").replace(/\/{2,}/g,"/");async function S(e,t){var n;const s=await e,o={code:s.status,ok:s.ok,response:s},i=await s.clone().json();return s.ok?o.data=t?t(i):i:(o.error=i,s.status===U.TOO_MANY_REQUESTS&&Object.assign(o.error,{retryAfter:Number.parseInt(null===(n=s.headers)||void 0===n?void 0:n.get("retry-after"))||0})),o}const M=(e,t)=>(n=t)=>t=>!e(t)&&n.replace("{val}",t),T=(...e)=>({validate:t=>(e.forEach((e=>{const n=e(t);if(n)throw new Error(n)})),!0)}),A=e=>t=>e.test(t),L=A(/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/),z=A(/^\+[1-9]{1}[0-9]{3,14}$/),H=M(L,'"{val}" is not a valid email'),J=M(z,'"{val}" is not a valid phone number'),N=M((C=1,e=>e.length>=C),"Minimum length is 1");var C;const _=M((e=>"string"==typeof e),"Input is not a string"),D=(...e)=>t=>(...n)=>(e.forEach(((e,t)=>T(...e).validate(n[t]))),t(...n)),Z=e=>[_(`"${e}" must be a string`),N(`"${e}" must not be empty`)],B=e=>[_(`"${e}" must be a string`),H()],F=e=>[_(`"${e}" must be a string`),J()],K=D(Z("accessKey")),Q=e=>({exchange:K((t=>S(e.post(n.exchange,{},{token:t}))))});var Y,G;!function(e){e.sms="sms",e.whatsapp="whatsapp"}(Y||(Y={})),function(e){e.email="email"}(G||(G={}));const V=Object.assign(Object.assign({},Y),G);var W;!function(e){e.waiting="waiting",e.running="running",e.completed="completed",e.failed="failed"}(W||(W={}));const X=Z("loginId"),ee=D(Z("token")),te=D(X),ne=D(Z("pendingRef")),se=D(X,B("email")),oe=e=>({verify:ee((t=>S(e.post(i.verify,{token:t})))),signIn:te(((t,n,s,o)=>S(e.post($(i.signIn,V.email),{loginId:t,URI:n,loginOptions:s},{token:o})))),signUpOrIn:te(((t,n)=>S(e.post($(i.signUpOrIn,V.email),{loginId:t,URI:n})))),signUp:te(((t,n,s)=>S(e.post($(i.signUp,V.email),{loginId:t,URI:n,user:s})))),waitForSession:ne(((t,n)=>new Promise((s=>{const{pollingIntervalMs:o,timeoutMs:a}=(({pollingIntervalMs:e=1e3,timeoutMs:t=6e5}={})=>({pollingIntervalMs:Math.max(e||f,f),timeoutMs:Math.min(t||m,m)}))(n);let r;const d=setInterval((async()=>{const n=await e.post(i.session,{pendingRef:t});n.ok&&(clearInterval(d),r&&clearTimeout(r),s(S(Promise.resolve(n))))}),o);r=setTimeout((()=>{s({error:{errorDescription:`Session polling timeout exceeded: ${a}ms`,errorCode:"0"},ok:!1}),clearInterval(d)}),a)})))),update:{email:se(((t,n,s,o)=>S(e.post(i.update.email,{loginId:t,email:n,URI:s},{token:o}))))}}),ie=D(Z("flowId")),ae=D(Z("executionId"),Z("stepId"),Z("interactionId")),re=e=>({start:ie(((t,n,s,o,i)=>S(e.post(v.start,{flowId:t,options:n,conditionInteractionId:s,interactionId:o,input:i})))),next:ae(((t,n,s,o)=>S(e.post(v.next,{executionId:t,stepId:n,interactionId:s,input:o}))))}),de=Z("loginId"),ue=D(Z("token")),le=D(de),pe=D(de,F("phone")),ce=D(de,B("email")),ge=e=>({verify:ue((t=>S(e.post(o.verify,{token:t})))),signIn:Object.keys(V).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:le(((t,s,i,a)=>S(e.post($(o.signIn,n),{loginId:t,URI:s,loginOptions:i},{token:a}))))})),{}),signUp:Object.keys(V).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:le(((t,s,i)=>S(e.post($(o.signUp,n),{loginId:t,URI:s,user:i}))))})),{}),signUpOrIn:Object.keys(V).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:le(((t,s)=>S(e.post($(o.signUpOrIn,n),{loginId:t,URI:s}))))})),{}),update:{email:ce(((t,n,s,i)=>S(e.post(o.update.email,{loginId:t,email:n,URI:s},{token:i})))),phone:Object.keys(Y).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:pe(((t,s,i,a)=>S(e.post($(o.update.phone,n),{loginId:t,phone:s,URI:i},{token:a}))))})),{})}});var he;!function(e){e.facebook="facebook",e.github="github",e.google="google",e.microsoft="microsoft",e.gitlab="gitlab",e.apple="apple",e.discord="discord",e.linkedin="linkedin"}(he||(he={}));const ve=D(Z("code")),fe=e=>({start:Object.keys(he).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:async(t,{redirect:s=!1}={},o,i)=>{const r=await e.post(a.start,o||{},{queryParams:Object.assign({provider:n},t&&{redirectURL:t}),token:i});if(!s||!r.ok)return S(Promise.resolve(r));const{url:d}=await r.json();window.location.href=d}})),{}),exchange:ve((t=>S(e.post(a.exchange,{code:t}))))}),me=Z("loginId"),Ie=D(me,Z("code")),be=D(me),ye=D(me,F("phone")),ke=D(me,B("email")),we=e=>({verify:Object.keys(V).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:Ie(((t,o)=>S(e.post($(s.verify,n),{code:o,loginId:t}))))})),{}),signIn:Object.keys(V).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:be(((t,o,i)=>S(e.post($(s.signIn,n),{loginId:t,loginOptions:o},{token:i}))))})),{}),signUp:Object.keys(V).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:be(((t,o)=>S(e.post($(s.signUp,n),{loginId:t,user:o}))))})),{}),signUpOrIn:Object.keys(V).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:be((t=>S(e.post($(s.signUpOrIn,n),{loginId:t}))))})),{}),update:{email:ke(((t,n,o)=>S(e.post(s.update.email,{loginId:t,email:n},{token:o})))),phone:Object.keys(Y).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:ye(((t,o,i)=>S(e.post($(s.update.phone,n),{loginId:t,phone:o},{token:i}))))})),{})}}),Oe=D(Z("tenant")),je=D(Z("code")),Ue=e=>({start:Oe((async(t,n,{redirect:s=!1}={},o,i)=>{const a=await e.post(r.start,o||{},{queryParams:{tenant:t,redirectURL:n},token:i});if(!s||!a.ok)return S(Promise.resolve(a));const{url:d}=await a.json();window.location.href=d})),exchange:je((t=>S(e.post(r.exchange,{code:t}))))}),Pe=Z("loginId"),Re=D(Pe,Z("code")),xe=D(Pe),qe=D(Pe),Ee=e=>({signUp:xe(((t,n)=>S(e.post(d.signUp,{loginId:t,user:n})))),verify:Re(((t,n,s,o)=>S(e.post(d.verify,{loginId:t,code:n,loginOptions:s},{token:o})))),update:qe(((t,n)=>S(e.post(d.update,{loginId:t},{token:n}))))}),$e=Z("loginId"),Se=Z("newPassword"),Me=D($e,Z("password")),Te=D($e),Ae=D($e,Se),Le=D($e,Z("oldPassword"),Se),ze=e=>({signUp:Me(((t,n,s)=>S(e.post(l.signUp,{loginId:t,password:n,user:s})))),signIn:Me(((t,n)=>S(e.post(l.signIn,{loginId:t,password:n})))),sendReset:Te(((t,n)=>S(e.post(l.sendReset,{loginId:t,redirectUrl:n})))),update:Ae(((t,n,s)=>S(e.post(l.update,{loginId:t,newPassword:n},{token:s})))),replace:Le(((t,n,s)=>S(e.post(l.replace,{loginId:t,oldPassword:n,newPassword:s})))),policy:()=>S(e.get(l.policy))}),He=[_(`"${"loginId"}" must be a string`)];const Je=Z("loginId"),Ne=Z("origin"),Ce=D(Je,Ne,Z("name")),_e=D(Je,Ne),De=D(He,Ne),Ze=D(Je,Ne,Z("token")),Be=D(Z("transactionId"),Z("response")),Fe=e=>({signUp:{start:Ce(((t,n,s)=>S(e.post(u.signUp.start,{user:{loginId:t,name:s},origin:n})))),finish:Be(((t,n)=>S(e.post(u.signUp.finish,{transactionId:t,response:n}))))},signIn:{start:De(((t,n,s,o)=>S(e.post(u.signIn.start,{loginId:t,origin:n,loginOptions:s},{token:o})))),finish:Be(((t,n)=>S(e.post(u.signIn.finish,{transactionId:t,response:n}))))},signUpOrIn:{start:_e(((t,n)=>S(e.post(u.signUpOrIn.start,{loginId:t,origin:n}))))},update:{start:Ze(((t,n,s)=>S(e.post(u.update.start,{loginId:t,origin:n},{token:s})))),finish:Be(((t,n)=>S(e.post(u.update.finish,{transactionId:t,response:n}))))}}),Ke=D(Z("token"));var Qe,Ye;var Ge=D([(Qe="projectId",Ye=Z("projectId"),M(((e,n)=>s=>T(...n).validate(t(s,e)))(Qe,Ye))())])((e=>t=>{var n,s;const o=[].concat((null===(n=t.hooks)||void 0===n?void 0:n.beforeRequest)||[]),i=[].concat((null===(s=t.hooks)||void 0===s?void 0:s.afterRequest)||[]);return e(Object.assign(Object.assign({},t),{hooks:{beforeRequest:e=>null==o?void 0:o.reduce(((e,t)=>t(e)),e),afterRequest:async(e,n)=>{(await Promise.allSettled(null==i?void 0:i.map((t=>t(e,null==n?void 0:n.clone()))))).forEach((e=>{var n;return"rejected"===e.status&&(null===(n=t.logger)||void 0===n?void 0:n.error(e.reason))}))}}}))})((({projectId:e,logger:t,baseUrl:n,hooks:s,cookiePolicy:o,baseHeaders:i={},fetch:a})=>{return r=j({baseUrl:n||"https://api.descope.com",projectId:e,logger:t,hooks:s,cookiePolicy:o,baseConfig:{baseHeaders:i},fetch:a}),{accessKey:Q(r),otp:we(r),magicLink:ge(r),enchantedLink:oe(r),oauth:fe(r),saml:Ue(r),totp:Ee(r),webauthn:Fe(r),password:ze(r),flow:re(r),refresh:e=>S(r.post(p,{},{token:e})),logout:e=>S(r.post(c,{},{token:e})),logoutAll:e=>S(r.post(g,{},{token:e})),me:e=>S(r.get(h,{token:e})),isJwtExpired:Ke(x),getJwtPermissions:Ke(q),getJwtRoles:Ke(E),httpClient:r};var r})));const Ve=(e,t,n)=>(t.forEach((t=>{const s=t.split(".");let o=s.shift(),i=e;for(;s.length>0;){if(i=i[o],!o||!i)throw Error(`Invalid path "${t}", "${o}" is missing or has no value`);o=s.shift()}if("function"!=typeof i[o])throw Error(`"${t}" is not a function`);const a=i[o];i[o]=n(a)})),e);var We=Object.assign(Ge,{DeliveryMethods:V});export{U as HttpStatusCodes,We as default,S as transformResponse,Ve as wrapWith};
2
2
  //# sourceMappingURL=index.esm.js.map