@descope/core-js-sdk
Version:
Descope JavaScript core SDK
3 lines (2 loc) • 21.6 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var e=require("jwt-decode"),t=require("tslib"),n={accessKey:{exchange:"/v1/auth/accesskey/exchange"},otp:{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"},magicLink:{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"},enchantedLink:{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"},oauth:{start:"/v1/auth/oauth/authorize",exchange:"/v1/auth/oauth/exchange",startNative:"v1/auth/oauth/native/start",finishNative:"v1/auth/oauth/native/finish",oneTap:{getOneTapClientId:"/v1/auth/onetap/clientid/{provider}",exchangeOneTapIDToken:"/v1/auth/onetap/idtoken/exchange",verifyOneTapIDToken:"/v1/auth/onetap/idtoken/verify"}},outbound:{connect:"/v1/outbound/oauth/connect"},saml:{start:"/v1/auth/saml/authorize",exchange:"/v1/auth/saml/exchange"},totp:{verify:"/v1/auth/totp/verify",signUp:"/v1/auth/totp/signup",update:"/v1/auth/totp/update"},notp:{signIn:"/v1/auth/notp/whatsapp/signin",signUp:"/v1/auth/notp/whatsapp/signup",signUpOrIn:"/v1/auth/notp/whatsapp/signup-in",session:"/v1/auth/notp/pending-session"},webauthn:{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"}},password:{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"},refresh:"/v1/auth/refresh",tryRefresh:"/v1/auth/try-refresh",selectTenant:"/v1/auth/tenant/select",logout:"/v1/auth/logout",logoutAll:"/v1/auth/logoutall",me:"/v1/auth/me",myTenants:"/v1/auth/me/tenants",history:"/v1/auth/me/history",flow:{start:"/v1/flow/start",next:"/v1/flow/next"}};const o="<region>",s=`https://api.${o}descope.com`,r=1e3,i=6e5,a="dct",d=()=>{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},retries(t){return e.Retries=t,this},build:()=>Object.keys(e).flatMap((t=>e[t]?[`${"Title"!==t?`${t}: `:""}${e[t]}`]:[])).join("\n")}},p=[521,524],u=e=>async(...t)=>{let n=await e(...t);p.includes(n.status)&&(n=await e(...t),n.retries=1);const o=await n.text();return n.text=()=>Promise.resolve(o),n.json=()=>Promise.resolve(JSON.parse(o)),n.clone=()=>n,n},l=(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=>d().title("Request").url(e[0]).method(e[1].method).headers(e[1].headers).body(e[1].body).build())(t));const o=await u(n)(...t);return e[o.ok?"log":"error"](await(async e=>{const t=await e.text();return d().title("Response").url(e.url.toString()).status(`${e.status} ${e.statusText}`).headers(e.headers).body(t).retries(e.retries).build()})(o)),o}:u(n)};let c;const g=()=>{if(c)return c;const e=new Date,t=`${e.getUTCFullYear().toString()}-${(e.getUTCMonth()+1).toString().padStart(2,"0")}-${e.getUTCDate().toString().padStart(2,"0")}-${e.getUTCHours().toString().padStart(2,"0")}:${e.getUTCMinutes().toString().padStart(2,"0")}:${e.getUTCSeconds().toString().padStart(2,"0")}:${e.getUTCMilliseconds().toString()}`,n=Math.floor(1e3+9e3*Math.random());return c=`${t}-${n}`,c};var h;!function(e){e.get="GET",e.delete="DELETE",e.post="POST",e.put="PUT",e.patch="PATCH"}(h||(h={}));const v=({path:e,baseUrl:t,queryParams:n,projectId:s})=>{const r=s.slice(1,-27);t=t.replace(o,r?r+".":"");let i=e?`${t.replace(/\/$/,"")}/${null==e?void 0:e.replace(/^\//,"")}`:t;if(n){const e=Object.keys(n);e.forEach(((t,o)=>{i=`${i}${0===o?"?":""}${t}=${encodeURIComponent(n[t])}${o===e.length-1?"":"&"}`}))}return i},I=(...e)=>new Headers(e.reduce(((e,t)=>((e=>Array.isArray(e)?e:e instanceof Headers?Array.from(e.entries()):e?Object.entries(e):[])(t).forEach((([t,n])=>{e[t]="function"==typeof n?n():n})),e)),{})),f={"Content-Type":"application/json"},m=(e,t="")=>{let n=e;return t&&(n=n+":"+t),{Authorization:`Bearer ${n}`}},k=(e,t)=>{const n={"x-descope-sdk-session-id":g(),"x-descope-sdk-name":"core-js","x-descope-sdk-version":"2.56.0","x-descope-project-id":e};return t&&(n["x-descope-refresh-cookie-name"]=t),n},b=e=>{try{e=JSON.parse(e)}catch(e){return!1}return"object"==typeof e&&null!==e};var y=(e=>t=>{var n;return e(Object.assign(Object.assign({},t),{hooks:{beforeRequest:e=>{var n;const o=[].concat((null===(n=t.hooks)||void 0===n?void 0:n.beforeRequest)||[]);return null==o?void 0:o.reduce(((e,t)=>t(e)),e)},afterRequest:async(e,n)=>{var o;const s=[].concat((null===(o=t.hooks)||void 0===o?void 0:o.afterRequest)||[]);if(0==s.length)return;(await Promise.allSettled(null==s?void 0:s.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))}))},transformResponse:null===(n=t.hooks)||void 0===n?void 0:n.transformResponse}}))})((({baseUrl:e,projectId:t,baseConfig:n,refreshCookieName:o,logger:r,hooks:i,cookiePolicy:a,fetch:d})=>{const p=e||s,u=l(r,d),c=async e=>{var s;const r=(null==i?void 0:i.beforeRequest)?i.beforeRequest(e):e,{path:d,body:l,headers:c,queryParams:g,method:h,token:y}=r,O=(e=>void 0===e?void 0:JSON.stringify(e))(l),w={headers:I(m(t,y),k(t,o),(null==n?void 0:n.baseHeaders)||{},b(O)?f:{},c),method:h,body:O};null!==a&&(w.credentials=a||"include");const j=await u(v({path:d,baseUrl:p,queryParams:g,projectId:t}),w);if((null==i?void 0:i.afterRequest)&&await i.afterRequest(e,null==j?void 0:j.clone()),null==i?void 0:i.transformResponse){const e=await j.json(),t=((null===(s=j.headers)||void 0===s?void 0:s.get("set-cookie"))||"").split(";").reduce(((e,t)=>{const[n,o]=t.split("=");return Object.assign(Object.assign({},e),{[n.trim()]:o})}),{}),n=Object.assign(Object.assign({},j),{json:()=>Promise.resolve(e),cookies:t});return n.clone=()=>n,i.transformResponse(n)}return j};return{get:(e,{headers:t,queryParams:n,token:o}={})=>c({path:e,headers:t,queryParams:n,body:void 0,method:h.get,token:o}),post:(e,t,{headers:n,queryParams:o,token:s}={})=>c({path:e,headers:n,queryParams:o,body:t,method:h.post,token:s}),patch:(e,t,{headers:n,queryParams:o,token:s}={})=>c({path:e,headers:n,queryParams:o,body:t,method:h.patch,token:s}),put:(e,t,{headers:n,queryParams:o,token:s}={})=>c({path:e,headers:n,queryParams:o,body:t,method:h.put,token:s}),delete:(e,{headers:t,queryParams:n,token:o}={})=>c({path:e,headers:t,queryParams:n,body:void 0,method:h.delete,token:o}),hooks:i,buildUrl:(e,n)=>v({projectId:t,baseUrl:p,path:e,queryParams:n})}})),O={TOO_MANY_REQUESTS:429};function w(e,t,n){var o;let s=j(e);if(t){if(!(null==s?void 0:s.tenants)&&(null==s?void 0:s[a])===t)return(null==s?void 0:s[n])||[];s=null===(o=null==s?void 0:s.tenants)||void 0===o?void 0:o[t]}const r=null==s?void 0:s[n];return Array.isArray(r)?r:[]}function j(t){if("string"!=typeof t||!t)throw new Error("Invalid token provided");return e.jwtDecode(t)}function U(e){const{exp:t}=j(e);return(new Date).getTime()/1e3>t}function T(e){let t=j(e);const n=Object.keys(null==t?void 0:t.tenants);return Array.isArray(n)?n:[]}function R(e,t){return w(e,t,"permissions")}function x(e,t){return w(e,t,"roles")}const P=(...e)=>e.join("/").replace(/\/{2,}/g,"/");async function $(e,t){var n;const o=await e,s={code:o.status,ok:o.ok,response:o},r=await o.clone().json();return o.ok?s.data=t?t(r):r:(s.error=r,o.status===O.TOO_MANY_REQUESTS&&Object.assign(s.error,{retryAfter:Number.parseInt(null===(n=o.headers)||void 0===n?void 0:n.get("retry-after"))||0})),s}function q(e){var t;return(null===(t=j(e))||void 0===t?void 0:t[a])||""}const S=(e,t)=>(n=t)=>t=>!e(t)&&n.replace("{val}",t),_=(e,t)=>(n=t)=>t=>{const o=e.filter((e=>e(t)));return!(o.length<e.length)&&(n?n.replace("{val}",t):o.join(" OR "))},C=(...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-]+)*$/),M=A(/^\+[1-9]{1}[0-9]{3,14}$/),E=(e,t)=>n=>C(...t).validate(((e,t,n)=>{const o=(Array.isArray(t)?t.join("."):String(t)).replace(/\[\\?("|')?(\w|d)+\\?("|')?\]/g,((e,t,n)=>"."+n)).split("."),s=o.length;let r=0,i=e===Object(e)?e:void 0;for(;null!=i&&r<s;)i=i[o[r++]];return r&&r===s&&void 0!==i?i:n})(n,e)),N=S(L,'"{val}" is not a valid email'),D=S(M,'"{val}" is not a valid phone number'),H=S((z=1,e=>e.length>=z),"Minimum length is 1");var z;const J=S((e=>"string"==typeof e),"Input is not a string"),F=S((e=>Array.isArray(e)),"Input is not an array"),K=S((e=>"boolean"==typeof e),"Input is not a boolean"),V=S((e=>void 0===e),"Input is defined"),Y=_([J(),V()],"Input is not a string or undefined"),Z=_([F(),K()],"Input is not an array or boolean"),B=(...e)=>t=>(...n)=>(e.forEach(((e,t)=>C(...e).validate(n[t]))),t(...n)),Q=e=>[J(`"${e}" must be a string`)],W=e=>[Y(`"${e}" must be string or undefined`)],G=e=>[J(`"${e}" must be a string`),H(`"${e}" must not be empty`)],X=e=>[J(`"${e}" must be a string`),N()],ee=e=>[J(`"${e}" must be a string`),D()],te=B(G("accessKey")),ne=e=>({exchange:te(((t,o)=>$(e.post(n.accessKey.exchange,{loginOptions:o},{token:t}))))}),oe=({pollingIntervalMs:e=1e3,timeoutMs:t=6e5}={})=>({pollingIntervalMs:Math.max(e||r,r),timeoutMs:Math.min(t||i,i)});var se,re;!function(e){e.sms="sms",e.voice="voice",e.whatsapp="whatsapp",e.instantMessaging="im"}(se||(se={})),function(e){e.email="email"}(re||(re={}));const ie=Object.assign(Object.assign({},se),re);var ae;!function(e){e.waiting="waiting",e.running="running",e.completed="completed",e.failed="failed"}(ae||(ae={}));const de=G("loginId"),pe=B(G("token")),ue=B(de),le=B(G("pendingRef")),ce=B(de,X("email")),ge=e=>({verify:pe((t=>$(e.post(n.enchantedLink.verify,{token:t})))),signIn:ue(((o,s,r={},i)=>{var{providerId:a}=r,d=t.__rest(r,["providerId"]);return $(e.post(P(n.enchantedLink.signIn,ie.email),{loginId:o,URI:s,loginOptions:d,providerId:a},{token:i}))})),signUpOrIn:ue(((o,s,r={})=>{var{providerId:i}=r,a=t.__rest(r,["providerId"]);return $(e.post(P(n.enchantedLink.signUpOrIn,ie.email),{loginId:o,URI:s,loginOptions:a,providerId:i}))})),signUp:ue(((o,s,r,i={})=>{var{providerId:a}=i,d=t.__rest(i,["providerId"]);return $(e.post(P(n.enchantedLink.signUp,ie.email),{loginId:o,URI:s,user:r,loginOptions:d,providerId:a}))})),waitForSession:le(((t,o)=>new Promise((s=>{const{pollingIntervalMs:r,timeoutMs:i}=oe(o);let a;const d=setInterval((async()=>{const o=await e.post(n.enchantedLink.session,{pendingRef:t});o.ok&&(clearInterval(d),a&&clearTimeout(a),s($(Promise.resolve(o))))}),r);a=setTimeout((()=>{s({error:{errorDescription:`Session polling timeout exceeded: ${i}ms`,errorCode:"0"},ok:!1}),clearInterval(d)}),i)})))),update:{email:ce(((t,o,s,r,i)=>$(e.post(n.enchantedLink.update.email,Object.assign({loginId:t,email:o,URI:s},i),{token:r}))))}}),he=B(G("flowId")),ve=B(G("executionId"),G("stepId"),G("interactionId")),Ie=e=>({start:he(((t,o,s,r,i,a,d,p=!1)=>$(e.post(n.flow.start,{flowId:t,options:o,conditionInteractionId:s,interactionId:r,componentsVersion:i,flowVersions:a,input:d,isCustomScreen:p})))),next:ve(((t,o,s,r,i,a,d=!1)=>$(e.post(n.flow.next,{executionId:t,stepId:o,interactionId:s,version:r,componentsVersion:i,input:a,isCustomScreen:d}))))}),fe=G("loginId"),me=B(G("token")),ke=B(fe),be=B(fe,ee("phone")),ye=B(fe,X("email")),Oe=Object.keys(ie).filter((e=>e!==se.voice)),we=e=>({verify:me((t=>$(e.post(n.magicLink.verify,{token:t})))),signIn:Oe.reduce(((o,s)=>Object.assign(Object.assign({},o),{[s]:ke(((o,r,i={},a)=>{var{providerId:d}=i,p=t.__rest(i,["providerId"]);return $(e.post(P(n.magicLink.signIn,s),{loginId:o,URI:r,loginOptions:p,providerId:d},{token:a}))}))})),{}),signUp:Oe.reduce(((o,s)=>Object.assign(Object.assign({},o),{[s]:ke(((o,r,i,a={})=>{var{providerId:d}=a,p=t.__rest(a,["providerId"]);return $(e.post(P(n.magicLink.signUp,s),{loginId:o,URI:r,user:i,loginOptions:p,providerId:d}))}))})),{}),signUpOrIn:Oe.reduce(((o,s)=>Object.assign(Object.assign({},o),{[s]:ke(((o,r,i={})=>{var{providerId:a}=i,d=t.__rest(i,["providerId"]);return $(e.post(P(n.magicLink.signUpOrIn,s),{loginId:o,URI:r,loginOptions:d,providerId:a}))}))})),{}),update:{email:ye(((t,o,s,r,i)=>$(e.post(n.magicLink.update.email,Object.assign({loginId:t,email:o,URI:s},i),{token:r})))),phone:Object.keys(se).filter((e=>e!==se.voice)).reduce(((t,o)=>Object.assign(Object.assign({},t),{[o]:be(((t,s,r,i,a)=>$(e.post(P(n.magicLink.update.phone,o),Object.assign({loginId:t,phone:s,URI:r},a),{token:i}))))})),{})}});var je;!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",e.slack="slack"}(je||(je={}));const Ue=B(G("code")),Te=e=>({start:Object.assign(((t,o,s,r,i)=>$(e.post(n.oauth.start,s||{},{queryParams:Object.assign(Object.assign({provider:t},o&&{redirectURL:o}),i&&{loginHint:i}),token:r}))),Object.keys(je).reduce(((t,o)=>Object.assign(Object.assign({},t),{[o]:(t,s,r,i)=>$(e.post(n.oauth.start,s||{},{queryParams:Object.assign(Object.assign({provider:o},t&&{redirectURL:t}),i&&{loginHint:i}),token:r}))})),{})),exchange:Ue((t=>$(e.post(n.oauth.exchange,{code:t})))),startNative:(t,o,s)=>$(e.post(n.oauth.startNative,{provider:t,loginOptions:o,implicit:s})),finishNative:(t,o,s,r,i)=>$(e.post(n.oauth.finishNative,{provider:t,stateId:o,user:s,code:r,idToken:i})),getOneTapClientId:t=>$(e.get(n.oauth.oneTap.getOneTapClientId.replace("{provider}",t))),verifyOneTapIDToken:(t,o,s,r)=>$(e.post(n.oauth.oneTap.verifyOneTapIDToken,{provider:t,idToken:o,nonce:s,loginOptions:r})),exchangeOneTapIDToken:(t,o,s,r)=>$(e.post(n.oauth.oneTap.exchangeOneTapIDToken,{provider:t,idToken:o,nonce:s,loginOptions:r}))}),Re=G("appId"),xe=B(Re),Pe=e=>({connect:xe(((t,o,s)=>{const r=null==o?void 0:o.tenantId,i=null==o?void 0:o.tenantLevel;return null==o||delete o.tenantId,null==o||delete o.tenantLevel,$(e.post(n.outbound.connect,{appId:t,tenantId:r,tenantLevel:i,options:o},{token:s}))}))}),$e=G("loginId"),qe=B($e,G("code")),Se=B($e),_e=B($e,ee("phone")),Ce=B($e,X("email")),Ae=e=>({verify:Object.keys(ie).reduce(((t,o)=>Object.assign(Object.assign({},t),{[o]:qe(((t,s)=>$(e.post(P(n.otp.verify,o),{code:s,loginId:t}))))})),{}),signIn:Object.keys(ie).reduce(((o,s)=>Object.assign(Object.assign({},o),{[s]:Se(((o,r={},i)=>{var{providerId:a}=r,d=t.__rest(r,["providerId"]);return $(e.post(P(n.otp.signIn,s),{loginId:o,loginOptions:d,providerId:a},{token:i}))}))})),{}),signUp:Object.keys(ie).reduce(((o,s)=>Object.assign(Object.assign({},o),{[s]:Se(((o,r,i={})=>{var{providerId:a}=i,d=t.__rest(i,["providerId"]);return $(e.post(P(n.otp.signUp,s),{loginId:o,user:r,loginOptions:d,providerId:a}))}))})),{}),signUpOrIn:Object.keys(ie).reduce(((o,s)=>Object.assign(Object.assign({},o),{[s]:Se(((o,r={})=>{var{providerId:i}=r,a=t.__rest(r,["providerId"]);return $(e.post(P(n.otp.signUpOrIn,s),{loginId:o,loginOptions:a,providerId:i}))}))})),{}),update:{email:Ce(((t,o,s,r)=>$(e.post(n.otp.update.email,Object.assign({loginId:t,email:o},r),{token:s})))),phone:Object.keys(se).reduce(((t,o)=>Object.assign(Object.assign({},t),{[o]:_e(((t,s,r,i)=>$(e.post(P(n.otp.update.phone,o),Object.assign({loginId:t,phone:s},i),{token:r}))))})),{})}}),Le=B(G("tenant")),Me=B(G("code")),Ee=e=>({start:Le(((t,o,s,r,i,a,d,p)=>$(e.post(n.saml.start,s||{},Object.assign({queryParams:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({tenant:t},o&&{redirectURL:o}),i&&{ssoId:i}),a&&{forceAuthn:"true"}),d&&{loginHint:d}),p&&{initiatedEmail:t})},r&&{token:r}))))),exchange:Me((t=>$(e.post(n.saml.exchange,{code:t}))))}),Ne=G("loginId"),De=B(Ne,G("code")),He=B(Ne),ze=B(Ne),Je=e=>({signUp:He(((t,o)=>$(e.post(n.totp.signUp,{loginId:t,user:o})))),verify:De(((t,o,s,r)=>$(e.post(n.totp.verify,{loginId:t,code:o,loginOptions:s},{token:r})))),update:ze(((t,o)=>$(e.post(n.totp.update,{loginId:t},{token:o}))))}),Fe=G("loginId"),Ke=G("newPassword"),Ve=B(Fe,G("password")),Ye=B(Fe),Ze=B(Fe,Ke),Be=B(Fe,G("oldPassword"),Ke),Qe=e=>({signUp:Ve(((o,s,r,i={})=>{var{providerId:a}=i,d=t.__rest(i,["providerId"]);return $(e.post(n.password.signUp,{loginId:o,password:s,user:r,loginOptions:d,providerId:a}))})),signIn:Ve(((o,s,r={})=>{var{providerId:i}=r,a=t.__rest(r,["providerId"]);return $(e.post(n.password.signIn,{loginId:o,password:s,loginOptions:a,providerId:i}))})),sendReset:Ye(((t,o,s)=>$(e.post(n.password.sendReset,{loginId:t,redirectUrl:o,templateOptions:s})))),update:Ze(((t,o,s)=>$(e.post(n.password.update,{loginId:t,newPassword:o},{token:s})))),replace:Be(((t,o,s)=>$(e.post(n.password.replace,{loginId:t,oldPassword:o,newPassword:s})))),policy:()=>$(e.get(n.password.policy))}),We=Q("loginId"),Ge=G("loginId"),Xe=G("origin"),et=B(Ge,Xe,G("name")),tt=B(Ge,Xe),nt=B(We,Xe),ot=B(Ge,Xe,W("token")),st=B(G("transactionId"),G("response")),rt=e=>({signUp:{start:et(((t,o,s,r)=>$(e.post(n.webauthn.signUp.start,{user:{loginId:t,name:s},origin:o,passkeyOptions:r})))),finish:st(((t,o)=>$(e.post(n.webauthn.signUp.finish,{transactionId:t,response:o}))))},signIn:{start:nt(((t,o,s,r,i)=>$(e.post(n.webauthn.signIn.start,{loginId:t,origin:o,loginOptions:s,passkeyOptions:i},{token:r})))),finish:st(((t,o)=>$(e.post(n.webauthn.signIn.finish,{transactionId:t,response:o}))))},signUpOrIn:{start:tt(((t,o,s)=>$(e.post(n.webauthn.signUpOrIn.start,{loginId:t,origin:o,passkeyOptions:s}))))},update:{start:ot(((t,o,s,r)=>$(e.post(n.webauthn.update.start,{loginId:t,origin:o,passkeyOptions:r},{token:s})))),finish:st(((t,o)=>$(e.post(n.webauthn.update.finish,{transactionId:t,response:o}))))}}),it=Q("loginId"),at=B(it),dt=B(G("pendingRef")),pt=e=>({signUpOrIn:at(((o,s={})=>{var{providerId:r}=s,i=t.__rest(s,["providerId"]);return $(e.post(n.notp.signUpOrIn,{loginId:o,loginOptions:i,providerId:r}))})),signUp:at(((o,s,r={})=>{var{providerId:i}=r,a=t.__rest(r,["providerId"]);return $(e.post(n.notp.signUp,{loginId:o,user:s,providerId:i,loginOptions:a}))})),signIn:at(((o,s={},r)=>{var{providerId:i}=s,a=t.__rest(s,["providerId"]);return $(e.post(n.notp.signIn,{loginId:o,loginOptions:a,providerId:i},{token:r}))})),waitForSession:dt(((t,o)=>new Promise((s=>{const{pollingIntervalMs:r,timeoutMs:i}=oe(o);let a;const d=setInterval((async()=>{const o=await e.post(n.notp.session,{pendingRef:t});o.ok&&(clearInterval(d),a&&clearTimeout(a),s($(Promise.resolve(o))))}),r);a=setTimeout((()=>{s({error:{errorDescription:`Session polling timeout exceeded: ${i}ms`,errorCode:"0"},ok:!1}),clearInterval(d)}),i)}))))}),ut=B(G("token")),lt=B(W("token"));var ct,gt,ht=B([(ct="projectId",gt=G("projectId"),S(E(ct,gt))())])((e=>{const{projectId:t,logger:o,baseUrl:s,cookiePolicy:r,baseHeaders:i={},refreshCookieName:a,fetch:d}=e;return p=y({baseUrl:s,projectId:t,logger:o,hooks:{get beforeRequest(){var t;return null===(t=e.hooks)||void 0===t?void 0:t.beforeRequest},get afterRequest(){var t;return null===(t=e.hooks)||void 0===t?void 0:t.afterRequest},get transformResponse(){var t;return null===(t=e.hooks)||void 0===t?void 0:t.transformResponse}},cookiePolicy:r,baseConfig:{baseHeaders:i},refreshCookieName:a,fetch:d}),{accessKey:ne(p),otp:Ae(p),magicLink:we(p),enchantedLink:ge(p),oauth:Te(p),outbound:Pe(p),saml:Ee(p),totp:Je(p),notp:pt(p),webauthn:rt(p),password:Qe(p),flow:Ie(p),refresh:lt(((e,t,o,s)=>{const r={};o&&(r.externalToken=o);const i=s?n.tryRefresh:n.refresh;return $(p.post(i,r,{token:e,queryParams:t}))})),selectTenant:B([J("tenantId")],[Y('"token" must be string or undefined')])(((e,t)=>$(p.post(n.selectTenant,{tenant:e},{token:t})))),logout:lt((e=>$(p.post(n.logout,{},{token:e})))),logoutAll:lt((e=>$(p.post(n.logoutAll,{},{token:e})))),me:lt((e=>$(p.get(n.me,{token:e})))),myTenants:B([Z('"tenants" must a string array or a boolean')],[Y('"token" must be string or undefined')])(((e,t)=>{const o={};return"boolean"==typeof e?o.dct=e:o.ids=e,$(p.post(n.myTenants,o,{token:t}))})),history:lt((e=>$(p.get(n.history,{token:e})))),isJwtExpired:ut(U),getTenants:ut(T),getJwtPermissions:ut(R),getJwtRoles:ut(x),getCurrentTenant:ut(q),httpClient:p};var p})),vt=Object.assign(ht,{DeliveryMethods:ie});exports.HttpStatusCodes=O,exports.createHttpClient=y,exports.default=vt,exports.normalizeWaitForSessionConfig=oe,exports.transformResponse=$,exports.wrapWith=(e,t,n)=>(t.forEach((t=>{const o=t.split(".");let s=o.shift(),r=e;for(;o.length>0;){if(r=r[s],!s||!r)throw Error(`Invalid path "${t}", "${s}" is missing or has no value`);s=o.shift()}if("function"!=typeof r[s])throw Error(`"${t}" is not a function`);const i=r[s];r[s]=n(i)})),e);
//# sourceMappingURL=index.cjs.js.map