@descope/core-js-sdk 1.0.9 → 1.0.11
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/cjs/index.cjs.js +1 -1
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/index.d.ts +60 -86
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.map +1 -1
- package/package.json +1 -1
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
|
-
/**
|
|
107
|
-
declare enum
|
|
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>
|
|
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
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
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
|
-
|
|
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
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
}
|
|
419
|
-
signUp: {
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
}
|
|
424
|
-
signUpOrIn: {
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
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<
|
|
431
|
-
phone:
|
|
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:
|
|
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,
|
|
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=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.clone?e.clone().text():e.text());return e.text=()=>Promise.resolve(t),e.json=()=>Promise.resolve(JSON.parse(t)),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.9"},(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.11"},(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
|