@authowl/core 0.18.2 → 0.20.0
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/chunk-KZCWYFAX.js +1 -0
- package/dist/{client-BfXYqxAr.d.ts → client-C76hiQOA.d.ts} +29 -1
- package/dist/{client-C1rudBpQ.d.cts → client-N1yD-Tvm.d.cts} +29 -1
- package/dist/index.cjs +3 -3
- package/dist/index.d.cts +80 -3
- package/dist/index.d.ts +80 -3
- package/dist/index.js +3 -3
- package/dist/messages.cjs +1 -1
- package/dist/messages.d.cts +1 -0
- package/dist/messages.d.ts +1 -0
- package/dist/messages.js +1 -1
- package/dist/native.cjs +2 -2
- package/dist/native.d.cts +2 -2
- package/dist/native.d.ts +2 -2
- package/dist/native.js +1 -1
- package/dist/server.cjs +2 -2
- package/dist/server.d.cts +66 -1
- package/dist/server.d.ts +66 -1
- package/dist/server.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-PYXM7X2H.js +0 -1
package/dist/index.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
'use strict';var Hi=Object.defineProperty;var Tt=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(i){throw n=[i],i}};var Vi=(e,t)=>{for(var n in t)Hi(e,n,{get:t[n],enumerable:true});};function pe(){return typeof window<"u"&&typeof document<"u"&&typeof crypto<"u"&&typeof crypto.subtle?.digest=="function"}var Qe=Tt(()=>{"use strict";});var De={};Vi(De,{beginCrossSiteSignIn:()=>Dr,challengeFor:()=>gi,completeCrossSiteSignIn:()=>_r,takeHandoffCode:()=>gt});function mi(e){let t="";for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function gi(e){let t=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(e));return mi(new Uint8Array(t))}function Cr(){return mi(crypto.getRandomValues(new Uint8Array(Ir)))}function hi(e,t){let n=window.location.protocol==="https:"?"; Secure":"";document.cookie=`${fi}=${e}; Path=/; Max-Age=${t}; SameSite=Lax${n}`;}function xr(){for(let e of document.cookie.split(";")){let t=e.indexOf("=");if(!(t<0)&&e.slice(0,t).trim()===fi)return e.slice(t+1).trim()||null}return null}function vr(){hi("",0);}function pi(e){return new URL(e,window.location.href).toString()}async function Dr(e,t){let n=t.callbackURL?pi(t.callbackURL):null;if(n&&new URL(n).origin!==window.location.origin)return null;let i=Cr(),o=new URL(`${e.projectBaseURL}/session/start`);if(o.searchParams.set("pk",e.publishableKey),o.searchParams.set("kind",t.kind),t.kind==="social")o.searchParams.set("provider",t.provider),t.scopes?.length&&o.searchParams.set("scopes",t.scopes.join(",")),t.loginHint&&o.searchParams.set("loginHint",t.loginHint),t.requestSignUp!==void 0&&o.searchParams.set("requestSignUp",t.requestSignUp?"1":"0");else for(let c of Pr){let l=t[c];l&&o.searchParams.set(c,l);}let s=`${window.location.origin}${window.location.pathname}${window.location.search}`;o.searchParams.set("cb",n??s);for(let[c,l]of [["err",t.errorCallbackURL],["new",t.newUserCallbackURL]])l&&o.searchParams.set(c,pi(l));return o.searchParams.set("challenge",await gi(i)),hi(i,Er),o.toString()}function gt(e){if(typeof window>"u")return null;let t=window.location.hash;if(!t.includes(mt))return null;let n=new URLSearchParams(t.replace(/^#/,"")),i=n.get(mt);if(!i||e!==void 0&&i!==e)return null;n.delete(mt);let o=n.toString();return window.history.replaceState(window.history.state,"",`${window.location.pathname}${window.location.search}${o?`#${o}`:""}`),i}async function _r(e,t,n){if(!pe())return false;let i=n??gt();if(!i)return false;n&>(n);let o=xr();if(vr(),!o)return false;t.beginSession({remember:true});let{error:s}=await e.request("/session/exchange",{method:"POST",body:{code:i,verifier:o}});return s===null}var fi,mt,Ir,Er,Pr,_e=Tt(()=>{"use strict";Qe();fi="authowl_handoff_verifier",mt="authowl_code",Ir=32,Er=900,Pr=["email","providerId","domain","organizationSlug"];});var qi=/^(pk_(live|test))_([0-9a-f-]{36})_([A-Za-z0-9]{20,})$/i,Ki=/^sk_/i;function Me(e){if(typeof e!="string"||e.length===0)throw new Error("publishableKey is required");if(Ki.test(e))throw new Error("A secret key was passed where a publishable key was expected. Never embed secret keys in client code.");let t=qi.exec(e);if(!t)throw new Error("publishableKey is malformed; expected pk_(live|test)_<uuid>_<base62>");return {prefix:t[1].toLowerCase(),env:t[2].toLowerCase(),projectId:t[3].toLowerCase()}}function Bi(e,t){let n=`p_${e.toLowerCase().replace(/-/g,"")}`;return `${t?.secure?"__Secure-":""}${n}.session_token`}var It=/^http:\/\/(?:(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*localhost|127\.0\.0\.1|\[::1\])(?::\d+)?(?:\/|$)/i;function Fe(e,t){throw new Error(`${e}: ${t}`)}function Et(e,t){let n;try{n=new URL(String(e));}catch{throw new TypeError("Transport URL must be absolute.")}if(n.username||n.password||n.hash)throw new TypeError("Transport URL must not contain credentials or a fragment.");let i=n.toString();if(n.protocol!=="https:"&&!(n.protocol==="http:"&&t.allowHttpLoopback&&It.test(i)))throw new TypeError("Transport URL must use HTTPS except on approved loopback.");return n}function Pt(e,t){(typeof e!="string"||!/^https?:\/\/[^/?#@\\\s]+\/?$/i.test(e))&&Fe("apiUrl","origin required");let n;try{n=new URL(e);}catch{Fe("apiUrl","origin required");}return n.protocol==="http:"&&(!t.allowHttpLoopback||!It.test(e))&&Fe("apiUrl","HTTPS required except exact loopback"),n.origin}function Y(e,t){try{return e?.getItem(t)??null}catch{return null}}function K(e,t,n){try{n===null?e?.removeItem(t):e?.setItem(t,n);}catch{}}function V(){try{return globalThis.localStorage}catch{return}}function X(){try{return globalThis.sessionStorage}catch{return}}var ji="authowl.session-challenge",Ji=e=>`${ji}.${e}`,Gi="set-auth-challenge",He="x-authowl-challenge";function $i(e){let t=e.get(He);return ae(t)?vt(t).some(([n,i])=>n.endsWith(".dont_remember")&&i.length>0):false}var xt="INVALID_TWO_FACTOR_COOKIE",Wi=2048,ae=e=>e!==null&&e.length<=Wi,Ct=/^[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]+$/;function vt(e){let t=[];for(let n of e.split(";")){let i=n.trimStart(),o=i.indexOf("=");o<=0||t.push([i.slice(0,o).trimEnd(),i.slice(o+1)]);}return t}function Dt(e){let t=Ji(e),n=new Map;function i(){return n.size===0?null:[...n].map(([l,a])=>`${l}=${a}`).join("; ")}function o(){let l=i();K(X(),t,ae(l)?l:null);}function s(l){for(let[a,h]of vt(l))Ct.test(a)&&(h===""?n.delete(a):Ct.test(h)&&n.set(a,h));}let c=Y(X(),t);return ae(c)&&s(c),{presentOn(l){let a=i();l.delete(He),ae(a)&&l.set(He,a);},observe(l){let a=l.get(Gi);ae(a)&&(s(a),o());},clear(){n.clear(),o();}}}var Ve="set-auth-token",qe="x-authowl-session-transport",Ke="bearer";var Yi="authowl.session-token",Xi="authowl.cookie-transport",Ut="ok",zt="bearer",Qi=e=>`${Yi}.${e}`,Zi=e=>`${Xi}.${e}`;function eo(e){return e===Ut?"cookies":e===zt?"bearer":"unknown"}function to(e){return e==="cookies"?Ut:e==="bearer"?zt:null}function no(e){let t=Qi(e),n=Zi(e),i=Dt(e),o=null,s=false,c=null,l=eo(Y(V(),n)),a=()=>l==="unknown",h=0,r=null,d=false;function p(){let y=Y(X(),t);if(y!==null)return s=true,y;let b=Y(V(),t);return b!==null?(s=false,b):null}o=p(),o!==null&&a()&&(d=true);function O(){if(!(!d||!r)){d=false;try{r();}catch{}}}function u(){let y=l==="bearer"?o:null,[b,H]=s?[X(),V()]:[V(),X()];K(H,t,null),K(b,t,y);}function m(y){y!==null&&c!==null&&(s=c,c=null),o=y,u(),y!==null&&a()&&(d=true,O());}function A(y){l=y,K(V(),n,to(y));}function w(){A("unknown"),d=false;}function S(){return o===null&&(o=p()),o}function _(){let y=p();return y!==null&&(o=y),o}function F(y){_()===y&&u();}function U(){h+=1,c=null,s=false,m(null),i.clear(),w();}let W=()=>l!=="cookies";return {hasToken:()=>S()!==null,declareOn(y){if(y.has("authorization"))return false;let b=S();return !b&&!W()?false:(b&&y.set("authorization",`Bearer ${b}`),y.set(qe,Ke),i.presentOn(y),true)},wantsToken:W,needsProbe:a,observe(y){let b=y.get(Ve);b&&m(b),i.observe(y);},dropChallenge:i.clear,measureWith(y){r=y,O();},beginRead(){let y=S(),b=h;return {carriedToken:y!==null,endIfDead(){y!==null&&_()===y&&h===b&&U();},recordCookieVerdict(H){if(h===b&&a()){if(A(H?"cookies":"bearer"),H){m(null);return}F(y);}}}},beginSession({remember:y}){h+=1,c=!y,i.clear(),w();},endSession:U}}var _t=new Map;function Nt(e){let t=_t.get(e);if(t)return t;let n=no(e);return _t.set(e,n),n}function io(e,t){return t?.headers?new Headers(t.headers):typeof e=="object"&&e!==null&&"headers"in e?new Headers(e.headers):new Headers}function Lt(e,t){let n=Nt(e),i=(c,l)=>(t??globalThis.fetch)(c,l);return {fetch:async(c,l)=>{if(l?.credentials==="omit"||!n.wantsToken())return i(c,l);let a=io(c,l),h=n.declareOn(a),r=await i(c,{...l,headers:a});return h&&n.observe(r.headers),r},probe:i,tokens:n}}function Mt(e){if(!e||typeof e!="object")throw new Error("AuthConfig is required");let t=Me(e.publishableKey),n=Pt(e.apiUrl,{allowHttpLoopback:t.env==="test"});return {publishableKey:e.publishableKey,apiUrl:n,decoded:t,projectBaseURL:`${n}/api/projects/${t.projectId}/auth`}}function oo(e){let t=Mt(e),{fetch:n,...i}=Lt(t.decoded.projectId,e.fetch);return {...e,...t,fetch:n,session:i}}var Be="authowl_invitation",je="authowl.invitation-claim",Ft=/^[A-Za-z0-9_-]{1,128}$/,Ht=10080*60*1e3;function ro(e=Date.now()){if(typeof window>"u")return ce(e);let t;try{t=new URL(window.location.href);}catch{return ce(e)}let n=t.searchParams.get(Be);if(n===null)return ce(e);t.searchParams.delete(Be);try{window.history.replaceState(window.history.state,"",t.toString());}catch{}if(!Ft.test(n))return ce(e);let i={id:n,capturedAt:e};return K(V(),je,JSON.stringify(i)),i}function ce(e=Date.now()){let t=Y(V(),je);if(t===null)return null;let n;try{n=JSON.parse(t);}catch{return ue(),null}if(typeof n!="object"||n===null)return ue(),null;let{id:i,capturedAt:o}=n;return typeof i!="string"||!Ft.test(i)||typeof o!="number"||e-o>Ht?(ue(),null):{id:i,capturedAt:o}}function ue(){K(V(),je,null);}function so(e){let t=e?.enabledMethods??["password"],n=t.includes("password"),i=t.includes("passkey"),o=e?.authentication,s=e?.mfa;return {emailSignUp:o?.email.signUp??t.some(c=>c==="password"||c==="magic_link"||c==="email_otp"),passwordSignUp:o?.password.signUp??n,phoneSignUp:o?.phone.signUp??t.includes("phone_otp"),passwordSignIn:o?.email.signIn.includes("password")??n,passwordMinLength:o?.password.minLength??8,passwordMaxLength:o?.password.maxLength??128,magicLinkSignIn:o?.email.signIn.includes("magic_link")??t.includes("magic_link"),emailOtpSignIn:o?.email.signIn.includes("email_otp")??t.includes("email_otp"),phoneSignIn:o?.phone.signIn??t.includes("phone_otp"),usernameSignIn:o?.username.signIn??false,collectUsername:o?.username.collectOnSignUp??false,passkeySignIn:o?.passkey.signIn??i,passkeyAdd:o?.passkey.add??i,firstLastName:e?.userModel?.firstLastName??false,emailChange:e===null?false:e.userModel?.emailChange??true,accountDeletion:e?.userModel?.accountDeletion??e?.accountDeletion??false,emailVerificationRequired:e?.emailVerification?.required??e?.requireEmailVerification??false,emailVerificationMethod:e?.emailVerification?.method??"link",totp:s?.totp??e?.twoFactor??false,mfaRequired:s?.required??e?.mfaRequired??false,backupCodes:s?.backupCodes??e?.twoFactor??false,legacyNameField:e?.authentication===void 0}}var ao=1e4,co=1024*1024,x=class extends Error{kind;requestId;constructor(t,n){super(yo(t)),this.name="TransportError",this.kind=t,this.requestId=n;}},Kt=new WeakSet;function v(e,t){let n=new x(e,t);return Kt.add(n),n}async function Bt({fetchImpl:e,url:t,init:n={},timeoutMs:i=ao,maxResponseBytes:o=co,allowHttpLoopback:s=false,decode:c}){qt(i,"timeoutMs"),qt(o,"maxResponseBytes");let l=Et(t,{allowHttpLoopback:s}),a=n.signal,h=new AbortController,r=null,d,p=new Promise(A=>{d=A;}),O=A=>{r===null&&(r=A,d({type:"abort",kind:A}),h.abort());},u=()=>O("aborted");a?.addEventListener("abort",u,{once:true});let m=setTimeout(()=>O("timeout"),i);a?.aborted&&u();try{if(r!==null)throw v(r);let A;try{A=await Promise.race([e(l.toString(),{...n,redirect:"error",signal:h.signal}).then(W=>({type:"response",response:W})),p]);}catch{throw v(r??"network")}if(A.type==="abort")throw v(A.kind);if(!uo(A.response))throw v("invalid_response");let w=A.response,S=ho(w.headers),_=await lo(w,o,p,()=>r,S),F=mo(w,_,S),U;try{U=w.ok&&c?c(F,Object.freeze({status:w.status})):F;}catch{throw v("invalid_response",S)}return {response:w,data:U,...S===void 0?{}:{requestId:S}}}catch(A){throw A instanceof x&&Kt.has(A)?A:v(r??"network")}finally{clearTimeout(m),a?.removeEventListener("abort",u);}}function uo(e){if(!e||typeof e!="object")return false;let t=e;return Number.isInteger(t.status)&&t.status>=0&&t.status<=599&&typeof t.statusText=="string"&&typeof t.ok=="boolean"&&typeof t.headers?.get=="function"&&(t.body===null||typeof t.body=="object"&&typeof t.body?.getReader=="function"&&typeof t.body.cancel=="function")}async function lo(e,t,n,i,o){let s=e.headers.get("content-length");if(s!==null){if(!/^\d+$/.test(s))throw Vt(e.body),v("invalid_response",o);if(Number(s)>t)throw Vt(e.body),v("response_too_large",o)}if(!e.body)return "";let c;try{c=e.body.getReader();}catch{throw v("network",o)}let l=[],a=0,h=null;try{for(;;){let p;try{p=await Promise.race([c.read(),n]);}catch{h=v(i()??"network",o);break}if(po(p)){h=v(p.kind,o);break}let{done:O,value:u}=p;if(O)break;if(u.byteLength!==0){if(a+=u.byteLength,a>t){h=v("response_too_large",o);break}l.push(u);}}}finally{h&&fo(c);try{c.releaseLock();}catch{}}if(h)throw h;let r=new Uint8Array(a),d=0;for(let p of l)r.set(p,d),d+=p.byteLength;try{return new TextDecoder("utf-8",{fatal:!0}).decode(r)}catch{throw v("invalid_response",o)}}function po(e){return "type"in e&&e.type==="abort"}function Vt(e){if(e)try{e.cancel().catch(()=>{});}catch{}}function fo(e){try{e.cancel().catch(()=>{});}catch{}}function mo(e,t,n){if(e.status===204||e.status===205)return null;let i=go(e.headers.get("content-type"));if(!e.ok&&(!i||t.length===0))return null;if(!i||t.length===0)throw v("invalid_response",n);try{return JSON.parse(t)}catch{if(!e.ok)return null;throw v("invalid_response",n)}}function go(e){if(e===null)return false;let t=e.split(";",1)[0]?.trim().toLowerCase();return t==="application/json"||t?.endsWith("+json")===true}function ho(e){let t=e.get("x-request-id")?.trim();if(!(!t||t.length>256||!/^[A-Za-z0-9._:-]+$/.test(t)))return t}function qt(e,t){if(!Number.isInteger(e)||e<=0)throw new TypeError(`${t} must be a positive integer.`)}function yo(e){switch(e){case "aborted":return "The request was cancelled.";case "timeout":return "The request timed out.";case "response_too_large":return "The response exceeded the allowed size.";case "invalid_response":return "The service returned an invalid response.";case "network":return "The network request could not be completed."}}var we=class extends Error{status;requestId;constructor(t,n,i){super(`${t} request failed with status ${n.status}.`),this.name="AuthOwlHttpError",this.status=n.status,this.requestId=i;}};function B(e,t,n={}){let i=new Headers(n.init?.headers);return i.set("x-publishable-key",e.publishableKey),Bt({fetchImpl:e.fetch,url:t,init:{...n.init,headers:i},allowHttpLoopback:e.decoded.env==="test",...n.timeoutMs===void 0?{}:{timeoutMs:n.timeoutMs},...n.maxResponseBytes===void 0?{}:{maxResponseBytes:n.maxResponseBytes},...n.decode===void 0?{}:{decode:n.decode}})}function Q(e,t){if(!e.response.ok)throw new we(t,e.response,e.requestId);return e.data}var Gt="x-authowl-turnstile-token",Ao=1e4,Oo=32,bo=2e4;function ne(e,t){return {post:(n,i,o,s)=>e.request(n,{method:"POST",body:i,fetchOptions:o,decode:s}),mutation:async(n,i)=>{let o=await n;return o.error===null&&(i===void 0||o.data!==null&&i(o.data))&&t(),o}}}function de(e,t=e.projectBaseURL){return {async request(n,i={}){let o=So(t,n,i.query),s=i.method??(i.body===void 0?"GET":"POST"),c=new Headers(i.fetchOptions?.headers);i.fetchOptions?.authChallengeToken&&c.set(Gt,i.fetchOptions.authChallengeToken),i.body!==void 0&&c.set("content-type","application/json");let l={method:s,headers:c,credentials:i.credentials??"include",...i.body===void 0?{}:{body:JSON.stringify(i.body)}},a=Object.freeze({method:s,path:n});await i.fetchOptions?.onRequest?.(a);let h=Ro(s,i.fetchOptions),r;try{r=await wo(e,o,{...l,signal:i.fetchOptions?.signal},h);}catch(A){let w=Jt(A);return await i.fetchOptions?.onError?.(Je(a,w,Io(A))),{data:null,error:w}}let{response:d,requestId:p}=r,O=Co(n,r.data),u=O;if(d.ok)try{u=$e(O),i.decode&&(u=i.decode(u));}catch{let A=Jt(new x("invalid_response",p));return await i.fetchOptions?.onError?.(Je(a,A,"invalid_response")),{data:null,error:A}}let m=Object.freeze({...a,status:d.status,...p===void 0?{}:{requestId:p}});if(await i.fetchOptions?.onResponse?.(m),!d.ok){let A=ko(d,O,p);return A.code===xt&&e.session.tokens.dropChallenge(),await i.fetchOptions?.onError?.(Je(a,A,"api")),{data:null,error:A}}return await i.fetchOptions?.onSuccess?.(m),{data:u,error:null}}}}async function wo(e,t,n,i){let o=Date.now()+Ao;for(let s=0;s<i;s+=1){let c=o-Date.now();if(c<=0)throw new x("timeout");try{let l=await B(e,t,{init:n,timeoutMs:Math.max(1,Math.ceil(c))});if(l.response.status<500||s===i-1)return l}catch(l){if(s===i-1||!(l instanceof x)||l.kind!=="network")throw l}await Eo(50*2**s,n.signal,o);}throw new x("network")}function Ro(e,t){if(e!=="GET"||t?.authChallengeToken)return 1;let n=t?.retry;return typeof n!="number"||!Number.isFinite(n)?1:Math.min(Math.max(Math.trunc(n),0),3)+1}function So(e,t,n){let i=new URL(`${e}${t.startsWith("/")?t:`/${t}`}`);for(let[o,s]of Object.entries(n??{}))s!==void 0&&i.searchParams.set(o,String(s));return i.toString()}function ko(e,t,n){let i=le(t)?t:{},o=To(i,e.headers);return {status:e.status,statusText:e.statusText,code:typeof i.code=="string"?i.code:void 0,...n===void 0?{}:{requestId:n},...typeof i.current_version=="number"?{currentVersion:i.current_version}:{},...o!==void 0?{retryAfterSeconds:o}:{},message:typeof i.message=="string"?i.message:typeof i.error=="string"?i.error:typeof i.detail=="string"?i.detail:e.statusText||"Request failed"}}function To(e,t){let n=(typeof e.retryAfterSeconds=="number"&&Number.isFinite(e.retryAfterSeconds)?e.retryAfterSeconds:void 0)??jt(t.get("retry-after"))??jt(t.get("x-retry-after"));if(n!==void 0)return Math.min(Math.max(Math.trunc(n),1),86400)}function jt(e){if(!e)return;let t=e.trim();if(!/^\d+$/.test(t))return;let n=Number(t);return Number.isFinite(n)?n:void 0}function Jt(e){let t=e instanceof x?e.kind:"network";return {status:0,...{aborted:{statusText:"ABORTED",code:"REQUEST_ABORTED",message:"The request was cancelled."},timeout:{statusText:"TIMEOUT",code:"REQUEST_TIMEOUT",message:"The request timed out."},response_too_large:{statusText:"INVALID_RESPONSE",code:"RESPONSE_TOO_LARGE",message:"The service response was too large."},invalid_response:{statusText:"INVALID_RESPONSE",code:"INVALID_RESPONSE",message:"The service returned an invalid response."},network:{statusText:"FETCH_ERROR",code:"FETCH_ERROR",message:"Network request failed."}}[t],...e instanceof x&&e.requestId?{requestId:e.requestId}:{}}}function Je(e,t,n){return Object.freeze({...e,status:t.status??0,...t.requestId===void 0?{}:{requestId:t.requestId},failure:n})}function Io(e){return e instanceof x?e.kind:"network"}function Eo(e,t,n){return new Promise((i,o)=>{if(t?.aborted){o(new x("aborted"));return}let s=n-Date.now();if(s<=0){o(new x("timeout"));return}let c=Math.min(e,s),l=()=>{clearTimeout(a),o(new x("aborted"));},a=setTimeout(()=>{t?.removeEventListener("abort",l),Date.now()>=n?o(new x("timeout")):i();},c);t?.addEventListener("abort",l,{once:true}),t?.aborted&&l();})}function $e(e,t="",n=0,i={nodes:0}){if(i.nodes+=1,n>Oo||i.nodes>bo)throw new Error("response traversal limit exceeded");if(typeof e=="string"&&/^(?:createdAt|updatedAt|expiresAt)$/.test(t)){let o=new Date(e);return Number.isNaN(o.getTime())?e:o}return Array.isArray(e)?e.map(o=>$e(o,"",n+1,i)):le(e)?Object.fromEntries(Object.entries(e).map(([o,s])=>[o,Po(o)?s:$e(s,o,n+1,i)])):e}function Po(e){return e==="metadata"||e==="public_metadata"||e==="unsafe_metadata"||e==="private_metadata"||e==="publicMetadata"||e==="unsafeMetadata"||e==="privateMetadata"}function Co(e,t){if(e==="/list-sessions"&&Array.isArray(t))return t.map(o=>le(o)?Ge(o):o);if(!le(t))return t;let i=e==="/change-password"||e==="/passkey/verify-authentication"||e==="/phone-otp/verify"||e==="/sign-up/email"||e.startsWith("/sign-in/")||e.startsWith("/two-factor/verify-")?Ge(t):t;return e==="/sign-up/email"&&!("sessionCreated"in i)&&(i={...i,sessionCreated:typeof t.token=="string"&&t.token.length>0}),(e==="/get-session"||e==="/passkey/verify-authentication")&&le(i.session)&&(i={...i,session:Ge(i.session)}),i}function Ge(e){if(!Object.hasOwn(e,"token"))return e;let t={...e};return delete t.token,t}function le(e){return !!e&&typeof e=="object"&&!Array.isArray(e)}var xo=new Set(["__proto__","constructor","prototype"]);function g(e){(!e||typeof e!="object"||Array.isArray(e))&&f();let t=Object.getPrototypeOf(e);return t!==Object.prototype&&t!==null&&f(),e}function R(e){return typeof e!="string"&&f(),e}function k(e){return typeof e!="boolean"&&f(),e}function E(e){return (!(e instanceof Date)||Number.isNaN(e.getTime()))&&f(),e}function Z(e){return (!Array.isArray(e)||!e.every(t=>typeof t=="string"))&&f(),[...e]}function P(e,t){let n=e[t];return n==null||typeof n=="string"?n:f()}function $t(e,t){let n=e[t];return n==null||typeof n=="boolean"?n:f()}function N(e){let t=g(e),n=t.email;return n!==null&&typeof n!="string"&&f(),{id:R(t.id),email:n,emailVerified:k(t.emailVerified),createdAt:E(t.createdAt),updatedAt:E(t.updatedAt),...z("phoneNumber",P(t,"phoneNumber")),...z("username",P(t,"username")),...z("displayUsername",P(t,"displayUsername")),...z("firstName",P(t,"firstName")),...z("lastName",P(t,"lastName")),...z("name",P(t,"name")),...z("image",P(t,"image")),...z("twoFactorEnabled",$t(t,"twoFactorEnabled"))}}function Re(e){let t=g(e),n=t.membership;return {id:R(t.id),userId:R(t.userId),expiresAt:E(t.expiresAt),...z("activeOrganizationId",P(t,"activeOrganizationId")),...z("activeTeamId",P(t,"activeTeamId")),...z("membership",n==null?n:vo(n)),...z("pendingMfaEnrollment",$t(t,"pendingMfaEnrollment"))}}function f(){throw new TypeError("AuthOwl response does not match its runtime contract.")}function j(e,t=20,n=1e4){return (!e||typeof e!="object"||Array.isArray(e))&&f(),Ye(e,t,n)}function Ye(e,t=20,n=1e4){return We(e,0,{nodes:0},t,n)}function vo(e){let t=g(e);return {role:R(t.role),...t.roles===void 0?{}:{roles:Z(t.roles)},permissions:Z(t.permissions),...t.teams===void 0?{}:{teams:Z(t.teams)}}}function We(e,t,n,i,o){if(n.nodes+=1,(t>i||n.nodes>o)&&f(),e===null||typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)||f(),e;if(Array.isArray(e))return e.map(l=>We(l,t+1,n,i,o));(!e||typeof e!="object")&&f();let s=Object.getPrototypeOf(e);s!==Object.prototype&&s!==null&&f();let c={};for(let[l,a]of Object.entries(e))xo.has(l)&&f(),c[l]=We(a,t+1,n,i,o);return c}function z(e,t){return t===void 0?{}:{[e]:t}}function Wt({http:e,probe:t,tokens:n,channelName:i}){let o=new Set,s=null,c=null,l=null,a=null,h=null,r=null,d,p=y=>{m(y);};d={data:null,isPending:true,isRefetching:false,error:null,refetch:p};function O(y){d=y;for(let b of o)b();}async function u(y){return e.request("/get-session",{query:y?.query,decode:Xe})}function m(y){if(y?.query?.disableCookieCache===true)return w(y);if(a)return a;if(h)return h;let b=w(y).finally(()=>{h===b&&(h=null);});return h=b,b}function A(){if(a)return a;let y=w({query:{disableCookieCache:true}}).finally(()=>{a===y&&(a=null);});return a=y,y}async function w(y){l?.abort();let b=new AbortController;l=b,O({...d,isPending:d.data===null&&d.error===null,isRefetching:d.data!==null});let H=n.beginRead(),be=await e.request("/get-session",{query:y?.query,fetchOptions:{signal:b.signal},decode:Xe});if(l===b&&(l=null,O({data:be.data,error:be.error,isPending:false,isRefetching:false,refetch:p}),be.error===null)){if(be.data===null){H.endIfDead();return}await S(H);}}async function S(y){if(n.needsProbe()){if(!y.carriedToken){y.recordCookieVerdict(true);return}return r||_(y)}}function _(y){let b=t.request("/get-session",{query:{disableCookieCache:true},decode:Xe}).then(H=>{r===b&&H.error===null&&y.recordCookieVerdict(H.data!==null);}).finally(()=>{r===b&&(r=null);});return r=b,b}function F(){s?.postMessage({type:"session-changed"});}function U(){if(typeof window>"u"||c)return;let y=()=>{m();},b=()=>{document.visibilityState==="visible"&&m();};window.addEventListener("focus",y),document.addEventListener("visibilitychange",b),typeof BroadcastChannel<"u"&&(s=new BroadcastChannel(i),s.addEventListener("message",y)),c=()=>{window.removeEventListener("focus",y),document.removeEventListener("visibilitychange",b),s?.close(),s=null,c=null;};}function W(y){return o.add(y),o.size===1&&(U(),m()),()=>{if(o.delete(y),o.size===0){let b=l;l=null,h=null,a=null,b?.abort(),c?.();}}}return n.measureWith(()=>{n.needsProbe()&&_(n.beginRead());}),{store:{subscribe:W,getSnapshot:()=>d,refresh:A},getSession:u,notifyMutation(){F(),r&&r.catch(()=>{}).then(()=>{!n.needsProbe()&&n.hasToken()&&F();}),o.size>0&&m({query:{disableCookieCache:true}});}}}function Xe(e){if(e===null)return null;let t=g(e);return (t.session===void 0||t.user===void 0)&&f(),{session:Re(t.session),user:N(t.user)}}Qe();function Ze(){let e=globalThis.crypto.getRandomValues(new Uint8Array(16));e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t=Array.from(e,n=>n.toString(16).padStart(2,"0")).join("");return `${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}async function Yt(e,t){return e.request("/user/metadata",{fetchOptions:t,decode:Qt})}async function Xt(e,t,n){return e.request("/user/metadata",{method:"PATCH",body:{expected_version:t.expectedVersion,unsafe_metadata:t.unsafeMetadata},fetchOptions:n,decode:Qt})}function Qt(e){let t=g(e),n=j(t.public_metadata),i=j(t.unsafe_metadata);if(!Number.isSafeInteger(t.metadata_version)||t.metadata_version<0)throw new TypeError("Invalid AuthOwl metadata response");return {publicMetadata:n,unsafeMetadata:i,metadataVersion:t.metadata_version}}function en(e,t){let{post:n,mutation:i}=ne(e,t);return {getMetadata:o=>Yt(e,o),updateUnsafeMetadata:(o,s)=>Xt(e,o,s),updateProfile:(o,s)=>i(n("/update-user",o,s,fe)),changeEmail:(o,s)=>i(n("/change-email",o,s,fe)),changePassword:(o,s)=>i(n("/change-password",o,s,Do)),listSessions:o=>e.request("/list-sessions",{fetchOptions:o,decode:_o}),revokeSession:({sessionId:o},s)=>i(n("/revoke-session",{sessionId:o},s,fe)),revokeOtherSessions:o=>i(n("/revoke-other-sessions",{},o,fe)),listSocialAccounts:async o=>{let s=await e.request("/list-accounts",{fetchOptions:o,decode:Uo});if(!s.data)return {data:null,error:s.error};let c=s.data.length>1;return {...s,data:s.data.filter(l=>l.providerId!=="credential").map(l=>({...l,canUnlink:c}))}},linkSocial:(o,s)=>n("/link-social",o,s,zo),unlinkSocial:(o,s)=>i(n("/unlink-account",o,s,fe)),delete:(o={},s)=>i(n("/delete-user",o,s,No))}}function fe(e){let t=g(e);return {status:k(t.status)}}function Do(e){let t=g(e);return {user:N(t.user)}}function _o(e){return Array.isArray(e)||f(),e.map(t=>{let n=g(t);return {id:R(n.id),userId:R(n.userId),createdAt:E(n.createdAt),updatedAt:E(n.updatedAt),expiresAt:E(n.expiresAt),...Zt("ipAddress",P(n,"ipAddress")),...Zt("userAgent",P(n,"userAgent"))}})}function Uo(e){return Array.isArray(e)||f(),e.map(t=>{let n=g(t);return {id:R(n.id),userId:R(n.userId),providerId:R(n.providerId),accountId:R(n.accountId),scopes:Z(n.scopes),createdAt:E(n.createdAt),updatedAt:E(n.updatedAt)}})}function zo(e){let t=g(e);return {url:R(t.url),redirect:k(t.redirect)}}function No(e){let t=g(e);return {success:k(t.success),message:R(t.message)}}function Zt(e,t){return t===void 0?{}:{[e]:t}}function Se(e,t){return !e||!t?false:e.permissions.includes(t)}function tn(e,t){return !e||!t?false:e.teams?.includes(t)??false}function nn(e,t){return e?e.roles===void 0?e.role===t:e.roles.includes(t):false}function ke(e,t){if(!e)return false;let{role:n,permission:i,teamId:o}=t;return !(n===void 0&&i===void 0&&o===void 0||n!==void 0&&!nn(e,n)||i!==void 0&&!e.permissions.includes(i)||o!==void 0&&!tn(e,o))}function Lo(e){return {has:t=>ke(e,t),hasPermission:t=>Se(e,t.permission)}}var Mo=new Set(["pending","accepted","rejected","canceled"]),et=1e4;function on(e){let t=g(e);return t.recipientHint!==null&&t.recipientHint!=="new_user"&&f(),{recipientHint:t.recipientHint}}function ie(e,t,n){let i=g(e),o={id:T(i.id),name:T(i.name),slug:T(i.slug),createdAt:E(i.createdAt),...me("logo",P(i,"logo")),...me("metadata",i.metadata===void 0?void 0:Ye(i.metadata))};return q(o.id,t),q(o.slug,n),o}function rn(e){return J(e,ie)}function tt(e,t,n){return e===null?null:(t===null&&f(),ie(e,t,n))}function sn(e,t,n){if(e===null)return null;let i=g(e),o=ie(i,t,n);return {...o,members:J(i.members,s=>An(s,o.id)),invitations:J(i.invitations,s=>G(s,void 0,o.id))}}function nt(e,t,n=false){let i=J(e,o=>ge(o));return n||ye(i.map(o=>o.organizationId),t),i}function an(e,t){let n=J(e,i=>it(i));return ye(n.map(i=>i.teamId),t),n}function it(e,t,n){let i=g(e),o={id:T(i.id),teamId:T(i.teamId),userId:T(i.userId),createdAt:E(i.createdAt)};return q(o.teamId,t),q(o.userId,n),o}function cn(e,t,n){return e===null?null:(t===null&&f(),ge(e,t,n))}function un(e,t){let n=g(e);return (!Number.isSafeInteger(n.total)||n.total<0)&&f(),{members:Fo(n.members,t),total:n.total}}function G(e,t,n){let i=g(e),o=T(i.status);Mo.has(o)||f();let s={id:T(i.id),organizationId:T(i.organizationId),email:he(i.email),role:T(i.role),status:o,inviterId:T(i.inviterId),expiresAt:E(i.expiresAt),createdAt:E(i.createdAt)};return q(s.id,t),q(s.organizationId,n),s}function ln(e,t){let n=J(e,i=>G(i));return ye(n.map(i=>i.organizationId),t),n}function dn(e){return J(e,t=>{let n=g(t);return {...G(n),organizationName:he(n.organizationName)}})}function pn(e,t){let n=g(e);return {...G(n,t),organizationName:T(n.organizationName),organizationSlug:T(n.organizationSlug),inviterEmail:On(n.inviterEmail)}}function fn(e,t){let n=g(e),i=G(n.invitation,t);return {invitation:i,member:oe(n.member,void 0,i.organizationId)}}function mn(e,t){let n=g(e);return n.member!==null&&f(),{invitation:n.invitation===null?null:G(n.invitation,t),member:null}}function gn(e,t){return e===null?null:G(e,t)}function hn(e,t,n){let i=g(e);return {member:oe(i.member,n,t)}}function oe(e,t,n){let i=g(e),o={id:T(i.id),organizationId:T(i.organizationId),userId:T(i.userId),role:T(i.role),createdAt:E(i.createdAt),...i.user===void 0?{}:{user:bn(i.user)}};return q(o.id,t),q(o.organizationId,n),o}function yn(e,t){let n=J(e,i=>{let o=g(i);return {organizationId:T(o.organizationId),data:{role:T(o.role),...me("permission",o.permission===void 0?void 0:Ho(o.permission)),...me("customPermissionKeys",o.customPermissionKeys===void 0?void 0:Z(o.customPermissionKeys))}}});return ye(n.map(i=>i.organizationId),t),n.map(i=>i.data)}function ge(e,t,n){let i=g(e),o=i.updatedAt,s={id:T(i.id),name:he(i.name),organizationId:T(i.organizationId),createdAt:E(i.createdAt),...o===void 0?{}:{updatedAt:E(o)}};return q(s.id,t),q(s.organizationId,n),s}function ot(e){let t=g(e);return {message:he(t.message)}}function An(e,t){let n=g(e);return {...oe(n,void 0,t),user:bn(n.user)}}function Fo(e,t){let n=J(e,i=>An(i));return ye(n.map(i=>i.organizationId),t),n}function Ho(e){let t=g(e),n={};for(let[i,o]of Object.entries(t))(i==="__proto__"||i==="constructor"||i==="prototype"||i.length===0||i.length>et||!Array.isArray(o))&&f(),n[i]=o.map(s=>T(s));return n}function T(e){let t=R(e);return (t.length===0||t.length>et)&&f(),t}function he(e){if(e==null)return "";let t=R(e);return t.length>et&&f(),t}function On(e){return e===null?null:T(e)}function q(e,t){t!==void 0&&e!==t&&f();}function ye(e,t){let n=t??e[0];n!==void 0&&e.some(i=>i!==n)&&f();}function bn(e){let t=g(e);return {id:T(t.id),name:he(t.name),email:On(t.email),...me("image",P(t,"image"))}}function J(e,t){return Array.isArray(e)||f(),e.map(n=>t(n))}function me(e,t){return t===void 0?{}:{[e]:t}}function wn(e,t,n=()=>null){let{post:i,mutation:o}=ne(e,t),s=new Set,c=()=>{for(let r of s)try{r();}catch{}},l=new Map,a=(r,d,p,O)=>{if(p)return e.request(r,{query:d,fetchOptions:p,decode:O});let u=`${r}\0${JSON.stringify(d??null)}`,m=l.get(u);if(m)return m;let A=e.request(r,{query:d,decode:O}).finally(()=>{l.delete(u);});return l.set(u,A),A},h=async r=>{let d=await o(r).finally(()=>l.clear());return d.error===null&&c(),d};return {subscribe(r){return s.add(r),()=>s.delete(r)},create:(r,d)=>h(i("/organization/create",r,d,ie)),list:r=>a("/organization/list",void 0,r,rn),get:(r={},d)=>a("/organization/get-full-organization",{organizationId:r.organizationId,organizationSlug:r.organizationSlug,membersLimit:r.membersLimit},d,p=>sn(p,r.organizationId,r.organizationSlug)),setActive:(r,d)=>h(i("/organization/set-active",r,d,p=>tt(p,r.organizationId,r.organizationSlug))),createTeam:(r,d)=>h(i("/organization/create-team",r,d,p=>ge(p,void 0,r.organizationId))),listTeams:(r={},d)=>a("/organization/list-teams",{organizationId:r.organizationId},d,p=>nt(p,r.organizationId)),updateTeam:(r,d)=>h(i("/organization/update-team",r,d,p=>ge(p,r.teamId,r.data.organizationId))),removeTeam:(r,d)=>h(i("/organization/remove-team",r,d,ot)),listUserTeams:r=>a("/organization/list-user-teams",void 0,r,d=>nt(d,void 0,true)),listTeamMembers:(r={},d)=>a("/organization/list-team-members",{teamId:r.teamId},d,p=>an(p,r.teamId)),addTeamMember:(r,d)=>h(i("/organization/add-team-member",r,d,p=>it(p,r.teamId,r.userId))),removeTeamMember:(r,d)=>h(i("/organization/remove-team-member",r,d,ot)),setActiveTeam:(r,d)=>h(i("/organization/set-active-team",r,d,p=>cn(p,r.teamId))),update:(r,d)=>h(i("/organization/update",r,d,p=>tt(p,r.organizationId))),delete:(r,d)=>h(i("/organization/delete",r,d,p=>ie(p,r.organizationId))),listMembers:(r={},d)=>a("/organization/list-members",{organizationId:r.organizationId,organizationSlug:r.organizationSlug,limit:r.limit,offset:r.offset,sortBy:r.sortBy,sortDirection:r.sortDirection,filterField:r.filterField,filterValue:r.filterValue,filterOperator:r.filterOperator},d,p=>un(p,r.organizationId)),inviteMember:(r,d)=>h(i("/organization/invite-member",r,d,p=>G(p,void 0,r.organizationId))),listInvitations:(r={},d)=>a("/organization/list-invitations",{organizationId:r.organizationId},d,p=>ln(p,r.organizationId)),listUserInvitations:r=>a("/organization/list-user-invitations",void 0,r,dn),getInvitation:(r,d)=>a("/organization/get-invitation",{id:r.id},d,p=>pn(p,r.id)),getInvitationRecipientHint:(r,d)=>a("/organization/invitation-recipient-hint",{invitationId:r.invitationId},d,on),acceptInvitation:(r,d)=>h(i("/organization/accept-invitation",r,d,p=>fn(p,r.invitationId))),rejectInvitation:(r,d)=>h(i("/organization/reject-invitation",r,d,p=>mn(p,r.invitationId))),cancelInvitation:(r,d)=>h(i("/organization/cancel-invitation",r,d,p=>gn(p,r.invitationId))),removeMember:(r,d)=>h(i("/organization/remove-member",r,d,p=>hn(p,r.organizationId,r.memberIdOrEmail.includes("@")?void 0:r.memberIdOrEmail))),updateMemberRole:(r,d)=>h(i("/organization/update-member-role",r,d,p=>oe(p,r.memberId,r.organizationId))),leave:(r,d)=>h(i("/organization/leave",r,d,p=>oe(p,void 0,r.organizationId))),listRoles:(r={},d)=>a("/organization/list-roles",{organizationId:r.organizationId},d,p=>yn(p,r.organizationId)),has:r=>ke(n(),r),hasPermission:r=>Se(n(),r.permission)}}var Rn=4096,Vo=4096,qo=100,Ko=256,Bo=16,jo=64,Jo=12;function st(e){let t=g(e);return t.twoFactorRedirect===true?((t.user!==void 0||t.redirect!==void 0||t.url!==void 0)&&f(),{twoFactorRedirect:true,...t.twoFactorMethods===void 0?{}:{twoFactorMethods:Hn(t.twoFactorMethods,Bo,jo)}}):(t.twoFactorRedirect!==void 0&&f(),{redirect:k(t.redirect),...Xo(t,"url"),user:N(t.user)})}function Sn(e){let t=g(e);return {user:N(t.user)}}function kn(e){let t=g(e);return {sessionCreated:k(t.sessionCreated),user:N(t.user)}}function Tn(e,t){let n=g(e),i=k(n.redirect);n.user===null&&f();let o=n.user!==void 0&&n.user!==null,s=n.url!==void 0&&n.url!==null;return i?((o||!s)&&f(),{redirect:true,url:rt(n.url,t)}):(o===s&&f(),o?{redirect:false,user:N(n.user)}:{redirect:false,url:rt(n.url,t)})}function In(e,t){let n=g(e);return (n.redirect!==true||n.user!==void 0)&&f(),{redirect:true,url:rt(n.url,t)}}function En(e){return {status:k(g(e).status)}}function Pn(e){return {success:k(g(e).success)}}function Cn(e){return g(e).status!=="pending"&&f(),{status:"pending"}}function xn(e){let t=g(e);if(t.kind==="authowl_turnstile")return {kind:"authowl_turnstile"};t.kind!=="akedly_shield_v1_2"&&f();let n=g(t.turnstile),i=n.siteKey===null?null:R(n.siteKey);return {kind:"akedly_shield_v1_2",connectionId:R(t.connectionId),challenge:R(t.challenge),difficulty:Go(t.difficulty),challengeToken:R(t.challengeToken),challengeRequired:k(t.challengeRequired),turnstile:{required:k(n.required),siteKey:i}}}function Go(e){return (!Number.isSafeInteger(e)||Number(e)<0||Number(e)>Jo)&&f(),Number(e)}function vn(e){let t=g(e);return (t.status!==true||t.sessionCreated!==true)&&f(),{status:true,sessionCreated:true,user:$o(t.user)}}function at(e){return {status:k(g(e).status)}}function Dn(e){return {status:k(g(e).status)}}function _n(e){let t=g(e);return {status:k(t.status),user:N(t.user)}}function Un(e){return {success:k(g(e).success)}}function zn(e){let t=g(e);return {totpURI:Yo(t.totpURI),backupCodes:Fn(t.backupCodes)}}function Nn(e){return {status:k(g(e).status)}}function Te(e){return g(e).status!==true&&f(),{status:true}}function Ln(e){return {status:k(g(e).status)}}function Mn(e){let t=g(e);return t.status!==void 0&&t.status!==true&&f(),{backupCodes:Fn(t.backupCodes)}}function $o(e){let t=g(e);return {id:re(t.id,512),...Qo(t,"name",1024),phoneNumber:re(t.phoneNumber,64),phoneNumberVerified:k(t.phoneNumberVerified),...t.createdAt===void 0?{}:{createdAt:E(t.createdAt)},...t.updatedAt===void 0?{}:{updatedAt:E(t.updatedAt)}}}function rt(e,t){let n=re(e,Rn);/[\u0000-\u0020\u007f]/u.test(n)&&f();let i;try{i=new URL(n);}catch{return f()}return (i.username||i.password)&&f(),i.protocol==="https:"||t&&i.protocol==="http:"&&Wo(i.hostname)?i.href:f()}function Wo(e){let t=e.toLowerCase();return t==="localhost"||t==="127.0.0.1"||t==="[::1]"}function Yo(e){let t=re(e,Vo),n;try{n=new URL(t);}catch{return f()}let i=n.searchParams.get("secret");return (n.protocol!=="otpauth:"||n.hostname.toLowerCase()!=="totp"||n.username||n.password||n.hash||i===null||i.length===0||i.length>512||/\s/u.test(i))&&f(),t}function Fn(e){return Hn(e,qo,Ko)}function Hn(e,t,n){(!Array.isArray(e)||e.length===0||e.length>t)&&f();let i=e.map(o=>re(o,n));return i.some(o=>o.trim().length===0)&&f(),new Set(i).size!==i.length&&f(),i}function re(e,t){let n=R(e);return (n.length===0||n.length>t)&&f(),n}function Xo(e,t){let n=e[t];return n==null?{}:{[t]:re(n,Rn)}}function Qo(e,t,n){let i=P(e,t);return i===void 0?{}:(i!==null&&i.length>n&&f(),{[t]:i})}var Vn=new Set([1564,8206,8207,8234,8235,8236,8237,8238,8294,8295,8296,8297]),Ie=new Set([9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288,65279]);function Ee(e){if(e===void 0)return {valid:true,value:void 0};for(let n of e){let i=n.codePointAt(0);if(i===void 0||Kn(n,i)||qn(i)||Vn.has(i))return {valid:false}}let t=Zo(e);return ct(t)?{valid:true,value:t}:{valid:false}}function ct(e){let t=0,n,i;for(let o of e){if(t+=1,t>256)return false;let s=o.codePointAt(0);if(s===void 0||Kn(o,s)||qn(s)||Vn.has(s))return false;n??=s,i=s;}return t>0&&n!==void 0&&i!==void 0&&!Ie.has(n)&&!Ie.has(i)}function Pe(){return {data:null,error:{status:400,statusText:"BAD_REQUEST",code:"INVALID_PASSKEY_NAME",message:"Passkey names must contain 1 to 256 safe Unicode characters."}}}function Zo(e){let t=0,n=e.length;for(;t<n;){let i=e.codePointAt(t);if(i===void 0||!Ie.has(i))break;t+=i>65535?2:1;}for(;n>t;){let i=e.codePointAt(n-1);if(i===void 0)break;let s=i>=56320&&i<=57343?n-2:n-1,c=e.codePointAt(s);if(c===void 0||!Ie.has(c))break;n=s;}return e.slice(t,n)}function qn(e){return e>=0&&e<=31||e>=127&&e<=159}function Kn(e,t){return e.length===1&&t>=55296&&t<=57343}var Jn=12,Gn=5e3,er=8,tr=1e3,nr=16,Bn=512,$n=100,Wn=8192,ir=32768,ut=1024,jn=256,dt=64,or=6e5,rr=/^[A-Za-z0-9_-]+$/u,sr=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/u,ar=/[\u0000-\u001f\u007f-\u009f\u061c\u200e\u200f\u202a-\u202e\u2066-\u2069]/u,cr=/^[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?$/u,ur=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/iu,Yn=new Set(["discouraged","preferred","required"]),lr=new Set(["singleDevice","multiDevice"]),Xn=new Set(["ble","cable","hybrid","internal","nfc","smart-card","usb"]),Qn=new Set(["hybrid","security-key","client-device"]),dr=new Set(["none","indirect","direct","enterprise"]),pr=new Set(["fido-u2f","packed","android-safetynet","android-key","tpm","apple","none"]),fr=new Set(["platform","cross-platform"]),mr=new Set(["discouraged","preferred","required"]),gr=new Set([-8,-7,-257]);function Zn(e){let t=j(e,Jn,Gn);return {challenge:ui(t.challenge),...C("timeout",ai(t.timeout)),...C("rpId",li(t.rpId)),...C("allowCredentials",si(t.allowCredentials)),...C("userVerification",Ae(t.userVerification,Yn)),...C("hints",Ce(t.hints,Qn)),...C("extensions",ci(t.extensions))}}function ei(e){let t=j(e,Jn,Gn);return {challenge:ui(t.challenge),rp:hr(t.rp),user:yr(t.user),pubKeyCredParams:Ar(t.pubKeyCredParams),...C("timeout",ai(t.timeout)),...C("excludeCredentials",si(t.excludeCredentials)),...C("authenticatorSelection",Or(t.authenticatorSelection)),...C("attestation",Ae(t.attestation,dr)),...C("attestationFormats",Ce(t.attestationFormats,pr)),...C("hints",Ce(t.hints,Qn)),...C("extensions",ci(t.extensions))}}function ti(e){let t=g(e),n=Re(t.session),i=N(t.user);return n.userId!==i.id&&f(),{session:n,user:i}}function pt(e){let t=g(e),n=t.counter;(!Number.isSafeInteger(n)||n<0)&&f();let i=ft(t.deviceType,lr),o=k(t.backedUp);return o&&i!=="multiDevice"&&f(),{id:se(t.id,jn),...Rr(t),publicKey:br(t.publicKey,ir),userId:se(t.userId,jn),credentialID:ve(t.credentialID,Wn),counter:n,deviceType:i,backedUp:o,...Sr(t),createdAt:E(t.createdAt),...kr(t)}}function ni(e,t,n){let i=pt(e);return (i.credentialID!==t||(n===void 0?i.name!==void 0&&i.name!==null:i.name!==n))&&f(),i}function ii(e){(!Array.isArray(e)||e.length>$n)&&f();let t=e.map(pt);return xe(t.map(n=>n.id)),xe(t.map(n=>n.credentialID)),t.length>1&&t.some(n=>n.userId!==t[0]?.userId)&&f(),t}function oi(e,t,n){let i=g(e),o=pt(i.passkey);return (o.id!==t||o.name!==n)&&f(),{passkey:o}}function ri(e){return g(e).status!==true&&f(),{status:true}}function hr(e){let t=g(e);return {name:lt(t.name,ut),...C("id",li(t.id))}}function yr(e){let t=g(e);return {id:ve(t.id,128,1,64),name:lt(t.name,ut),displayName:lt(t.displayName,ut)}}function Ar(e){(!Array.isArray(e)||e.length===0||e.length>dt)&&f();let t=e.map(n=>{let i=g(n);return (i.type!=="public-key"||!Number.isSafeInteger(i.alg)||!gr.has(i.alg))&&f(),{type:"public-key",alg:i.alg}});return Tr(t.map(n=>n.alg)),t}function si(e){if(e===void 0)return;(!Array.isArray(e)||e.length>$n)&&f();let t=e.map(n=>{let i=g(n);return i.type!=="public-key"&&f(),{type:"public-key",id:ve(i.id,Wn),...C("transports",Ce(i.transports,Xn))}});return xe(t.map(n=>n.id)),t}function Or(e){if(e===void 0)return;let t=g(e);t.requireResidentKey!==void 0&&typeof t.requireResidentKey!="boolean"&&f();let n=Ae(t.residentKey,mr);return t.requireResidentKey!==void 0&&n!==void 0&&t.requireResidentKey!==(n==="required")&&f(),{...C("authenticatorAttachment",Ae(t.authenticatorAttachment,fr)),...C("residentKey",n),...C("requireResidentKey",t.requireResidentKey),...C("userVerification",Ae(t.userVerification,Yn))}}function ai(e){return e!==void 0&&(typeof e!="number"||!Number.isFinite(e)||e<0||e>or)&&f(),e}function ci(e){return e===void 0?void 0:j(e,er,tr)}function Ce(e,t){if(e===void 0)return;(!Array.isArray(e)||e.length>dt)&&f();let n=e.map(i=>ft(i,t));return xe(n),n}function Ae(e,t){if(e!==void 0)return ft(e,t)}function ui(e){return ve(e,Math.ceil(Bn*4/3),nr,Bn)}function ve(e,t,n=1,i=Number.POSITIVE_INFINITY){let o=se(e,t),s=o.length%4,c=wr(o.at(-1)??""),l=Math.floor(o.length*3/4);return (!rr.test(o)||s===1||s===2&&(c&15)!==0||s===3&&(c&3)!==0||l<n||l>i)&&f(),o}function se(e,t){let n=R(e);return (n.length===0||n.length>t)&&f(),n}function lt(e,t){let n=se(e,t);return ar.test(n)&&f(),n}function li(e){if(e===void 0)return;let t=se(e,253);return t!=="localhost"&&(t.endsWith(".")||!t.includes(".")||t.split(".").some(n=>!cr.test(n)))&&f(),t}function br(e,t){let n=se(e,t),i=n.endsWith("=="),o=!i&&n.endsWith("="),s=n.at(i?-3:o?-2:-1)??"",c=di(s);return (n.length%4!==0||!sr.test(n)||i&&(c&15)!==0||o&&(c&3)!==0)&&f(),n}function wr(e){return di(e,true)}function di(e,t=false){return (t?"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_":"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/").indexOf(e)}function Rr(e){let t=P(e,"name");return t===void 0?{}:(t!==null&&!ct(t)&&f(),{name:t})}function Sr(e){let t=P(e,"transports");if(t==null||t==="")return t===void 0?{}:{transports:t};let n=t.split(",");return (n.length>dt||n.some(i=>!Xn.has(i))||new Set(n).size!==n.length)&&f(),{transports:t}}function kr(e){let t=P(e,"aaguid");return t==null?t===void 0?{}:{aaguid:null}:(ur.test(t)||f(),{aaguid:t})}function ft(e,t){let n=R(e);return t.has(n)||f(),n}function C(e,t){return t===void 0?{}:{[e]:t}}function xe(e){new Set(e).size!==e.length&&f();}function Tr(e){new Set(e).size!==e.length&&f();}function Ur(e,t){if(!t)return e;let n=t.catch(()=>{});return n.then(()=>{n=null;}),{async request(i,o){return n&&await n,e.request(i,o)}}}var yi=new Map;function zr(e,t,n){let i=yi.get(n);if(!i){let o=new URLSearchParams(window.location.hash.slice(1)).get("authowl_code");if(!o)return;i=Promise.resolve().then(()=>(_e(),De)).then(s=>s.completeCrossSiteSignIn(e,t,o)),yi.set(n,i);}return i}function Ai(e){return !pe()||e.idToken||e.disableRedirect?"legacy":"first-party"}function bi(e,t=()=>{},n=Nr){let i=de(e),o=e.session.tokens,s=pe()?zr(i,o,e.decoded.projectId):void 0,c=Ur(i,s),l=Wt({http:c,probe:de({...e,fetch:e.session.probe}),tokens:o,channelName:`authowl:${e.decoded.projectId}`}),a=n(c,l.notifyMutation),h=()=>{l.notifyMutation(),t();},{post:r,mutation:d}=ne(c,h),p=e.decoded.env==="test",O=u=>{o.beginSession({remember:u?.rememberMe!==false});};return {sessionStore:l.store,getSession:l.getSession,account:en(c,h),organization:wn(c,h,()=>l.store.getSnapshot().data?.session.membership??null),signIn:{email:(u,m)=>(O(u),d(r("/sign-in/email",u,m,st),A=>!("twoFactorRedirect"in A))),username:(u,m)=>(O(u),d(r("/sign-in/username",u,m,st),A=>!("twoFactorRedirect"in A))),social:async(u,m)=>{if(O(),Ai(u)==="first-party"){let{beginCrossSiteSignIn:w}=await Promise.resolve().then(()=>(_e(),De)),S=await w(e,{kind:"social",provider:u.provider,callbackURL:u.callbackURL,errorCallbackURL:u.errorCallbackURL,newUserCallbackURL:u.newUserCallbackURL,scopes:u.scopes,loginHint:u.loginHint,requestSignUp:u.requestSignUp});if(S)return window.location.assign(S),{data:{redirect:true,url:S},error:null}}let A=await d(r("/sign-in/social",u,m,w=>Tn(w,p)),w=>"user"in w);return A.error!==null||A.data===null||"url"in A.data&&A.data.redirect&&!u.disableRedirect&&typeof window<"u"&&window.location.assign(A.data.url),A},sso:async(u,m)=>{if(Ai(u)==="first-party"){let{beginCrossSiteSignIn:w}=await Promise.resolve().then(()=>(_e(),De)),S=await w(e,{kind:"sso",email:u.email,providerId:u.providerId,domain:u.domain,organizationSlug:u.organizationSlug,callbackURL:u.callbackURL,errorCallbackURL:u.errorCallbackURL,newUserCallbackURL:u.newUserCallbackURL});if(S)return window.location.assign(S),{data:{url:S,redirect:true},error:null}}let A=await r("/sign-in/sso",u,m,w=>In(w,p));return A.error!==null||A.data===null||typeof window<"u"&&window.location.assign(A.data.url),A},magicLink:(u,m)=>r("/sign-in/magic-link",u,m,En),emailOtp:(u,m)=>(O(),d(r("/sign-in/email-otp",u,m,Sn))),passkey:(u,m)=>(O(),a.signIn(u,m))},signUp:{email:(u,m)=>(O(),d(r("/sign-up/email",u,m,kn),A=>A.sessionCreated))},emailOtp:{sendVerificationOtp:(u,m)=>r("/email-otp/send-verification-otp",u,m,Pn),verifyEmail:(u,m)=>(O(),d(r("/email-otp/verify-email",u,m,_n)))},phoneOtp:{prepare:u=>r("/phone-otp/challenge",{},u,xn),start:(u,m)=>r("/phone-otp/start",{...u,idempotencyKey:u.idempotencyKey??Ze()},m,Cn),verify:(u,m)=>(O(),d(r("/phone-otp/verify",u,m,vn)))},requestPasswordReset:(u,m)=>r("/request-password-reset",u,m,at),resetPassword:(u,m)=>r("/reset-password",u,m,at),sendVerificationEmail:(u,m)=>r("/send-verification-email",u,m,Dn),passkey:{addPasskey:(u,m)=>a.add(u,m),listUserPasskeys:()=>c.request("/passkey/list-user-passkeys",{decode:ii}),updatePasskey:async(u,m)=>{let A=Ee(u.name);if(!A.valid||A.value===void 0)return Pe();let w=A.value;return r("/passkey/update-passkey",{...u,name:w},m,S=>oi(S,u.id,w))},deletePasskey:(u,m)=>r("/passkey/delete-passkey",u,m,ri)},twoFactor:{enable:(u,m)=>r("/two-factor/enable",u,m,zn),disable:(u,m)=>d(r("/two-factor/disable",u,m,Nn),A=>A.status),verifyTotp:(u,m)=>d(r("/two-factor/verify-totp",u,m,Te)),verifyBackupCode:(u,m)=>d(r("/two-factor/verify-backup-code",u,m,Te)),sendOtp:(u={},m)=>r("/two-factor/send-otp",u,m,Ln),verifyOtp:(u,m)=>d(r("/two-factor/verify-otp",u,m,Te)),generateBackupCodes:(u,m)=>r("/two-factor/generate-backup-codes",u,m,Mn)},signOut:u=>d(c.request("/sign-out",{method:"POST",body:{},fetchOptions:u,decode:Un}).then(m=>(o.endSession(),m)),m=>m.success)}}function Nr(){return {signIn:()=>Oi(),add:()=>Oi()}}function Oi(){return Promise.resolve({data:null,error:{status:400,statusText:"BAD_REQUEST",code:"PASSKEY_BROWSER_REQUIRED",message:"This passkey ceremony requires a browser with WebAuthn."}})}function Ii(e,t,n){let i=new Map;return {async signIn(o={},s){let c=await e.request("/passkey/generate-authenticate-options");if(!c.data)return Si(c.error);let l;try{l=Zn(c.data);}catch{return wi()}let a;try{a=await n.authenticate({optionsJSON:l,useBrowserAutofill:o.autoFill});}catch(O){return ki(n,O,"AUTH_CANCELLED","Passkey authentication was cancelled.")}if(!Lr(a))return Ri();let{clientExtensionResults:h,...r}=a,d=i.get(a.id);if(d)return d;let p=(async()=>{let O=await e.request("/passkey/verify-authentication",{method:"POST",body:{response:r},fetchOptions:s,decode:ti});return O.data&&t(),O})();i.set(a.id,p);try{return await p}finally{i.get(a.id)===p&&i.delete(a.id);}},async add(o={},s){let c=Ee(o.name);if(!c.valid)return Pe();let l=await e.request("/passkey/generate-register-options",{query:{name:c.value,authenticatorAttachment:o.authenticatorAttachment}});if(!l.data)return Si(l.error);let a;try{a=ei(l.data);}catch{return wi()}let h;try{h=await n.register({optionsJSON:a});}catch(O){return ki(n,O,"REGISTRATION_CANCELLED","Passkey registration was cancelled.")}if(!Mr(h))return Ri();let{clientExtensionResults:r,...d}=h,p=await e.request("/passkey/verify-registration",{method:"POST",body:{response:d,name:c.value},fetchOptions:s,decode:O=>ni(O,h.id,c.value)});return p.data&&t(),p}}}function wi(){return {data:null,error:{status:502,statusText:"BAD_GATEWAY",code:"INVALID_WEBAUTHN_OPTIONS",message:"The server returned invalid WebAuthn options."}}}function Ri(){return {data:null,error:{status:400,statusText:"BAD_REQUEST",code:"INVALID_WEBAUTHN_RESPONSE",message:"The platform returned an invalid passkey response."}}}function Ei(e){if(!e||typeof e!="object")return false;let t=e;return typeof t.id=="string"&&t.id.length>0&&typeof t.rawId=="string"&&t.rawId.length>0&&t.type==="public-key"&&!!t.response&&typeof t.response=="object"}function Lr(e){if(!Ei(e))return false;let t=e.response;return typeof t.clientDataJSON=="string"&&typeof t.authenticatorData=="string"&&typeof t.signature=="string"&&(t.userHandle===void 0||typeof t.userHandle=="string")}function Mr(e){if(!Ei(e))return false;let t=e.response;return typeof t.clientDataJSON=="string"&&typeof t.attestationObject=="string"}function Si(e){return {data:null,error:e??{status:502,statusText:"BAD_GATEWAY",code:"INVALID_WEBAUTHN_OPTIONS",message:"The server returned no WebAuthn options."}}}function ki(e,t,n,i){let o=Hr(t,"page does not have focus"),s=e.errorCode?.(t),c=s!==void 0?s==="ERROR_CEREMONY_ABORTED":Ti(t)==="AbortError",l=n!=="AUTH_CANCELLED",a=Fr(s,Ti(t),l);return {data:null,error:{status:400,statusText:"BAD_REQUEST",code:o?"PASSKEY_PAGE_NOT_FOCUSED":c?n:s??"PASSKEY_BROWSER_ERROR",message:o?"Keep this page focused while completing the passkey prompt.":c?i:a}}}function Fr(e,t,n){switch(e){case "ERROR_INVALID_DOMAIN":case "ERROR_INVALID_RP_ID":return "Passkeys are not set up for this site\u2019s domain.";case "ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED":return "This device already has a passkey for this account.";case "ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEY_ALGS":case "ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT":case "ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT":return "This device cannot create a passkey for this site.";}return t==="NotAllowedError"?n?"No passkey was created. The prompt was dismissed or timed out.":"No passkey was used. This device may not have one saved for this site yet, or the prompt was dismissed.":t==="SecurityError"?"Passkeys are not set up for this site\u2019s domain.":n?"Passkey registration did not complete.":"Passkey sign-in did not complete."}function Ti(e){return e&&typeof e=="object"&&"name"in e&&typeof e.name=="string"?e.name:void 0}function Hr(e,t){let n=t.toLowerCase(),i=new Set,o=e;for(;o&&typeof o=="object"&&!i.has(o);){if(i.add(o),"message"in o&&typeof o.message=="string"&&o.message.toLowerCase().includes(n))return true;o="cause"in o?o.cause:void 0;}return false}function L(e){let t=new Uint8Array(e),n="";for(let o of t)n+=String.fromCharCode(o);return btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function ee(e){let t=e.replace(/-/g,"+").replace(/_/g,"/"),n=(4-t.length%4)%4,i=t.padEnd(t.length+n,"="),o=atob(i),s=new ArrayBuffer(o.length),c=new Uint8Array(s);for(let l=0;l<o.length;l++)c[l]=o.charCodeAt(l);return s}function te(){return Vr.stubThis(globalThis?.PublicKeyCredential!==void 0&&typeof globalThis.PublicKeyCredential=="function")}var Vr={stubThis:e=>e};function Ue(e){let{id:t}=e;return {...e,id:ee(t),transports:e.transports}}function ze(e){return e==="localhost"||/^((xn--[a-z0-9-]+|[a-z0-9]+(-[a-z0-9]+)*)\.)+([a-z]{2,}|xn--[a-z0-9-]+)$/i.test(e)}var I=class extends Error{constructor({message:t,code:n,cause:i,name:o}){super(t,{cause:i}),Object.defineProperty(this,"code",{enumerable:true,configurable:true,writable:true,value:void 0}),this.name=o??i.name,this.code=n;}};function Pi({error:e,options:t}){let{publicKey:n}=t;if(!n)throw Error("options was missing required publicKey property");if(e.name==="AbortError"){if(t.signal instanceof AbortSignal)return new I({message:"Registration ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:e})}else if(e.name==="ConstraintError"){if(n.authenticatorSelection?.requireResidentKey===true)return new I({message:"Discoverable credentials were required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT",cause:e});if(t.mediation==="conditional"&&n.authenticatorSelection?.userVerification==="required")return new I({message:"User verification was required during automatic registration but it could not be performed",code:"ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE",cause:e});if(n.authenticatorSelection?.userVerification==="required")return new I({message:"User verification was required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT",cause:e})}else {if(e.name==="InvalidStateError")return new I({message:"The authenticator was previously registered",code:"ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED",cause:e});if(e.name==="NotAllowedError")return new I({message:e.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e});if(e.name==="NotSupportedError")return n.pubKeyCredParams.filter(o=>o.type==="public-key").length===0?new I({message:'No entry in pubKeyCredParams was of type "public-key"',code:"ERROR_MALFORMED_PUBKEYCREDPARAMS",cause:e}):new I({message:"No available authenticator supported any of the specified pubKeyCredParams algorithms",code:"ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG",cause:e});if(e.name==="SecurityError"){let i=globalThis.location.hostname;if(ze(i)){if(n.rp.id!==i)return new I({message:`The RP ID "${n.rp.id}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:e})}else return new I({message:`${globalThis.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e})}else if(e.name==="TypeError"){if(n.user.id.byteLength<1||n.user.id.byteLength>64)return new I({message:"User ID was not between 1 and 64 characters",code:"ERROR_INVALID_USER_ID_LENGTH",cause:e})}else if(e.name==="UnknownError")return new I({message:"The authenticator was unable to process the specified options, or could not create a new credential",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:e})}return e}var ht=class{constructor(){Object.defineProperty(this,"controller",{enumerable:true,configurable:true,writable:true,value:void 0});}createNewAbortSignal(){if(this.controller){let n=new Error("Cancelling existing WebAuthn API call for new one");n.name="AbortError",this.controller.abort(n);}let t=new AbortController;return this.controller=t,t.signal}cancelCeremony(){if(this.controller){let t=new Error("Manually cancelling existing WebAuthn API call");t.name="AbortError",this.controller.abort(t),this.controller=void 0;}}},Ne=new ht;var qr=["cross-platform","platform"];function Le(e){if(e&&!(qr.indexOf(e)<0))return e}async function Ci(e){!e.optionsJSON&&e.challenge&&(console.warn("startRegistration() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information."),e={optionsJSON:e});let{optionsJSON:t,useAutoRegister:n=false}=e;if(!te())throw new Error("WebAuthn is not supported in this browser");let i={...t,challenge:ee(t.challenge),user:{...t.user,id:ee(t.user.id)},excludeCredentials:t.excludeCredentials?.map(Ue)},o={};n&&(o.mediation="conditional"),o.publicKey=i,o.signal=Ne.createNewAbortSignal();let s;try{s=await navigator.credentials.create(o);}catch(u){throw Pi({error:u,options:o})}if(!s)throw new Error("Registration was not completed");let{id:c,rawId:l,response:a,type:h}=s,r;typeof a.getTransports=="function"&&(r=a.getTransports());let d;if(typeof a.getPublicKeyAlgorithm=="function")try{d=a.getPublicKeyAlgorithm();}catch(u){yt("getPublicKeyAlgorithm()",u);}let p;if(typeof a.getPublicKey=="function")try{let u=a.getPublicKey();u!==null&&(p=L(u));}catch(u){yt("getPublicKey()",u);}let O;if(typeof a.getAuthenticatorData=="function")try{O=L(a.getAuthenticatorData());}catch(u){yt("getAuthenticatorData()",u);}return {id:c,rawId:L(l),response:{attestationObject:L(a.attestationObject),clientDataJSON:L(a.clientDataJSON),transports:r,publicKeyAlgorithm:d,publicKey:p,authenticatorData:O},type:h,clientExtensionResults:s.getClientExtensionResults(),authenticatorAttachment:Le(s.authenticatorAttachment)}}function yt(e,t){console.warn(`The browser extension that intercepted this WebAuthn API call incorrectly implemented ${e}. You should report this error to them.
|
|
2
|
-
`,t);}function xi(){if(!te())return At.stubThis(new Promise(t=>t(false)));let e=globalThis.PublicKeyCredential;return e?.isConditionalMediationAvailable===void 0?At.stubThis(new Promise(t=>t(false))):At.stubThis(e.isConditionalMediationAvailable())}var At={stubThis:e=>e};function vi({error:e,options:t}){let{publicKey:n}=t;if(!n)throw Error("options was missing required publicKey property");if(e.name==="AbortError"){if(t.signal instanceof AbortSignal)return new I({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:e})}else {if(e.name==="NotAllowedError")return new I({message:e.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e});if(e.name==="SecurityError"){let i=globalThis.location.hostname;if(ze(i)){if(n.rpId!==i)return new I({message:`The RP ID "${n.rpId}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:e})}else return new I({message:`${globalThis.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e})}else if(e.name==="UnknownError")return new I({message:"The authenticator was unable to process the specified options, or could not create a new assertion signature",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:e})}return e}async function Di(e){!e.optionsJSON&&e.challenge&&(console.warn("startAuthentication() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information."),e={optionsJSON:e});let{optionsJSON:t,useBrowserAutofill:n=false,verifyBrowserAutofillInput:i=true}=e;if(!te())throw new Error("WebAuthn is not supported in this browser");let o;t.allowCredentials?.length!==0&&(o=t.allowCredentials?.map(Ue));let s={...t,challenge:ee(t.challenge),allowCredentials:o},c={};if(n){if(!await xi())throw Error("Browser does not support WebAuthn autofill");if(document.querySelectorAll("input[autocomplete$='webauthn']").length<1&&i)throw Error('No <input> with "webauthn" as the only or last value in its `autocomplete` attribute was detected');c.mediation="conditional",s.allowCredentials=[];}c.publicKey=s,c.signal=Ne.createNewAbortSignal();let l;try{l=await navigator.credentials.get(c);}catch(O){throw vi({error:O,options:c})}if(!l)throw new Error("Authentication was not completed");let{id:a,rawId:h,response:r,type:d}=l,p;return r.userHandle&&(p=L(r.userHandle)),{id:a,rawId:L(h),response:{authenticatorData:L(r.authenticatorData),clientDataJSON:L(r.clientDataJSON),signature:L(r.signature),userHandle:p},type:d,clientExtensionResults:l.getClientExtensionResults(),authenticatorAttachment:Le(l.authenticatorAttachment)}}var _i={authenticate:e=>Di(e),register:e=>Ci(e),errorCode:e=>e instanceof I?e.code:void 0};function zi(e){return `${new URL(e.apiUrl).origin}/api/projects/${e.decoded.projectId}/consent`}async function Ot(e){let t=await B(e,zi(e),{init:{method:"GET",credentials:"include"},maxResponseBytes:65536,decode:Kr});return t.response.status===401?{required:false}:Q(t,"consent status")}async function bt(e,t){if(!Number.isSafeInteger(t)||t<1)throw new TypeError("Consent version must be a positive integer.");return Q(await B(e,zi(e),{init:{method:"POST",headers:{"content-type":"application/json"},credentials:"include",body:JSON.stringify({version:t})},maxResponseBytes:64*1024,decode:Br}),"consent accept")}function Kr(e){let t=g(e),n=k(t.required),i=jr(t.needsConsent),o=Ni(t.version),s=Ui(t.termsUrl),c=Ui(t.privacyUrl);return {required:n,...i===void 0?{}:{needsConsent:i},...o===void 0?{}:{version:o},...s===void 0?{}:{termsUrl:s},...c===void 0?{}:{privacyUrl:c}}}function Br(e){let t=g(e),n=Ni(t.version);return {ok:k(t.ok),...n===void 0?{}:{version:n}}}function jr(e){if(e===void 0||typeof e=="boolean")return e;throw new TypeError("Invalid consent response.")}function Ni(e){if(e===void 0||Number.isSafeInteger(e)&&e>=1)return e;throw new TypeError("Invalid consent response.")}function Ui(e){if(e===void 0||typeof e=="string"&&e.length<=4096)return e;throw new TypeError("Invalid consent response.")}var Jr=30;function Gr(e){return typeof e?.exp=="number"?e.exp:null}function $r(e){let t=e.split(".")[1];if(!t)return null;try{let n=t.replace(/-/g,"+").replace(/_/g,"/"),i=JSON.parse(atob(n));return typeof i=="object"&&i!==null?i:null}catch{return null}}function wt(e){let t=new Map;async function n(s={}){let c=s.template===void 0?null:s.template.trim().toLowerCase();if(c==="")throw new TypeError("Template missing");let l=c??"",a=t.get(l);a||(a={activeKey:null,cachedByKey:new Map,inflight:null,sequence:0},t.set(l,a));let h=s.forceRefresh===true;if(!h){let u=a.activeKey?a.cachedByKey.get(a.activeKey):null;if(u&&u.exp-Date.now()/1e3>Jr)return u.token;if(a.inflight)return a.inflight}let r=++a.sequence,d=()=>t.get(l)===a&&a.sequence===r,p=(async()=>{let u=c?`${e.projectBaseURL}/token/${encodeURIComponent(c)}`:`${e.projectBaseURL}/token`,m=await B(e,u,{init:{method:"GET",credentials:"include"},maxResponseBytes:64*1024,decode:U=>Wr(U,c!==null)});if(m.response.status===401)return d()&&i(),null;let A=Q(m,"token"),w=A.policyVersion,S=A.token,_=$r(S),F=Gr(_);if(d())if(F!==null){let U=typeof _?.sub=="string"?_.sub:null,W=typeof _?.org_id=="string"?_.org_id:null;if(!c||U){let y=JSON.stringify([e.projectBaseURL,U,W,c,w]);a.cachedByKey.clear(),a.cachedByKey.set(y,{token:S,exp:F}),a.activeKey=y;}else o(a);}else o(a);return S})();if(h)return p;let O=p.finally(()=>{a.inflight===O&&(a.inflight=null);});return a.inflight=O,O}function i(){t.clear();}function o(s){s.cachedByKey.clear(),s.activeKey=null;}return {getToken:n,clear:i}}function Wr(e,t){let n=g(e),i=R(n.token);if(i.length===0||i.length>32*1024)throw new TypeError("Invalid token response.");if(!t)return {token:i,policyVersion:0};let o=g(n.template);if(!Number.isSafeInteger(o.policyVersion)||o.policyVersion<1)throw new TypeError("Invalid token response.");return {token:i,policyVersion:o.policyVersion}}function Yr(e){let t=wt(e),n=bi(e,t.clear,(c,l)=>Ii(c,l,_i)),i=de(e,`${new URL(e.apiUrl).origin}/api/projects/${e.decoded.projectId}`),o=c=>(...l)=>(t.clear(),c(...l)),s={getConsentStatus:()=>Ot(e),acceptConsent:c=>bt(e,c),getToken:t.getToken,waitlist:{join:(c,l)=>i.request("/waitlist",{method:"POST",body:c,fetchOptions:l,credentials:"omit"})},account:{...n.account,updateUnsafeMetadata:o(n.account.updateUnsafeMetadata),updateProfile:o(n.account.updateProfile),changeEmail:o(n.account.changeEmail),changePassword:o(n.account.changePassword),revokeSession:o(n.account.revokeSession),delete:o(n.account.delete)},signIn:{email:o(n.signIn.email),username:o(n.signIn.username),social:o(n.signIn.social),sso:n.signIn.sso,magicLink:n.signIn.magicLink,emailOtp:o(n.signIn.emailOtp),passkey:o(n.signIn.passkey)},signUp:{email:o(n.signUp.email)},emailOtp:{...n.emailOtp,verifyEmail:o(n.emailOtp.verifyEmail)},twoFactor:{enable:n.twoFactor.enable,disable:o(n.twoFactor.disable),verifyTotp:o(n.twoFactor.verifyTotp),verifyBackupCode:o(n.twoFactor.verifyBackupCode),sendOtp:n.twoFactor.sendOtp,verifyOtp:o(n.twoFactor.verifyOtp),generateBackupCodes:n.twoFactor.generateBackupCodes},phoneOtp:{prepare:n.phoneOtp.prepare,start:n.phoneOtp.start,verify:o(n.phoneOtp.verify)},signOut:o(n.signOut)};return {...n,...s}}async function Xr(e){if(typeof window>"u")throw new Error("Akedly Shield challenges must be solved in a browser.");let t=await Qr(),n=e.challengeRequired?await t.solvePow(e.challenge,e.difficulty):null,i=e.turnstile.required?await t.getTurnstileToken(Zr(e.turnstile.siteKey)):void 0;return {connectionId:e.connectionId,...n?{challengeToken:e.challengeToken,nonce:n.nonce}:{},...i?{turnstileToken:i}:{}}}async function Qr(){return import('@akedly/shield')}function Zr(e){if(!e)throw new Error("Akedly Shield did not provide a Turnstile site key.");return e}async function es(e){let n=`${new URL(e.apiUrl).origin}/api/projects/${e.decoded.projectId}/public-config`;return Q(await B(e,n,{init:{method:"GET",credentials:"omit"},maxResponseBytes:256*1024,decode:i=>ts(i,e)}),"public-config")}function ts(e,t){let n=j(e),i=n.environmentId,o=n.environmentType,s=`${new URL(t.apiUrl).origin}/api/projects/${t.decoded.projectId}/auth`;if(typeof n.applicationId!="string"||!ns(n.applicationId)||i!==t.decoded.projectId||o!=="development"&&o!=="production"||n.authBaseUrl!==s)throw M();let c=D(n.branding),l=D(n.legal);if(!Rt(n.enabledMethods,64)||!Rt(n.socialProviders,64)||!Mi(c,["appName","logoUrl","primaryColor"])||c.showAppName!==void 0&&typeof c.showAppName!="boolean"||c.alignment!==void 0&&c.alignment!=="left"&&c.alignment!=="center"&&c.alignment!=="right"||c.theme!==void 0&&c.theme!=="light"&&c.theme!=="dark"&&c.theme!=="system"||!Mi(l,["termsUrl","privacyUrl"])||!Number.isSafeInteger(l.version)||l.version<0||typeof l.required!="boolean")throw M();if(n.socialProviderClientIds!==void 0){let a=D(n.socialProviderClientIds);if(Object.keys(a).length>64||Object.values(a).some(h=>typeof h!="string"||h.length>2048))throw M()}if(!$(n,["requireEmailVerification","twoFactor","mfaRequired","accountDeletion","organizations","sso","badge"])||!Li(n.turnstileSiteKey)||!Li(n.authTurnstileSiteKey)||typeof n.locale!="string"||n.locale.length===0||n.locale.length>64||!Number.isSafeInteger(n.configVersion)||n.configVersion<0)throw M();if(n.jwtIssuer!==null){let a=D(n.jwtIssuer);if(a.issuer!==s||a.jwksUrl!==`${s}/jwks`||a.aud!==t.decoded.projectId)throw M()}if(n.signUp!==void 0){let a=D(n.signUp).mode;if(typeof a!="string"||!["open","restricted","allowlist","waitlist"].includes(a))throw M()}if(n.authentication!==void 0&&is(n.authentication),n.emailVerification!==void 0){let a=D(n.emailVerification);if(!$(a,["required"])||a.method!=="link"&&a.method!=="code")throw M()}if(n.userModel!==void 0&&!$(D(n.userModel),["requireEmail","firstLastName","emailChange","accountDeletion"]))throw M();if(n.mfa!==void 0){let a=D(n.mfa);if(!$(a,["totp","required","backupCodes"])||(a.required===true||a.backupCodes===true)&&a.totp!==true)throw M()}return n}function ns(e){return /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e)}function M(){return new TypeError("public-config returned an invalid response")}function D(e){if(!e||typeof e!="object"||Array.isArray(e))throw M();return e}function Li(e){return e===null||typeof e=="string"&&e.length<=4096}function is(e){let t=D(e),n=D(t.email),i=D(t.password),o=i.minLength!==void 0||i.maxLength!==void 0;if(!$(n,["signUp"])||!Rt(n.signIn,3)||n.signIn.some(s=>s!=="password"&&s!=="magic_link"&&s!=="email_otp")||!$(D(t.phone),["signUp","signIn"])||!$(i,["signUp","add"])||o&&(!Number.isSafeInteger(i.minLength)||!Number.isSafeInteger(i.maxLength)||i.minLength<1||i.maxLength>4096||i.minLength>i.maxLength)||!$(D(t.passkey),["signIn","add"])||!os(D(t.passkey).relyingPartyId)||!$(D(t.username),["collectOnSignUp","signIn"]))throw M()}function os(e){return e==null||typeof e=="string"}function $(e,t){return t.every(n=>typeof e[n]=="boolean")}function Mi(e,t){return t.every(n=>e[n]===void 0||typeof e[n]=="string"&&e[n].length<=4096)}function Rt(e,t){return Array.isArray(e)&&e.length<=t&&e.every(n=>typeof n=="string"&&n.length<=128)&&new Set(e).size===e.length}var Oe=class extends Error{constructor(n,i){super(n);this.cause=i;this.name="AuthOwlError";}cause},St=class extends Oe{constructor(n,i){super(`Rate limited. Retry after ${n}s.`,i);this.retryAfterSeconds=n;this.name="RateLimitedError";}retryAfterSeconds},kt=class extends Oe{constructor(t="invalid publishable key",n){super(t,n),this.name="InvalidKeyError";}};var Fi=["en","ar"];function rs(e){return e==="ar"?"rtl":"ltr"}function ss(e){return typeof e=="string"&&Fi.includes(e)}
|
|
3
|
-
exports.AUTH_CHALLENGE_HEADER=
|
|
1
|
+
'use strict';var Gi=Object.defineProperty;var xt=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(i){throw n=[i],i}};var $i=(e,t)=>{for(var n in t)Gi(e,n,{get:t[n],enumerable:true});};function fe(){return typeof window<"u"&&typeof document<"u"&&typeof crypto<"u"&&typeof crypto.subtle?.digest=="function"}var it=xt(()=>{"use strict";});var ze={};$i(ze,{beginCrossSiteSignIn:()=>Jr,challengeFor:()=>Ri,completeCrossSiteSignIn:()=>Gr,takeHandoffCode:()=>bt});function wi(e){let t="";for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function Ri(e){let t=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(e));return wi(new Uint8Array(t))}function qr(){return wi(crypto.getRandomValues(new Uint8Array(Hr)))}function Si(e,t){let n=window.location.protocol==="https:"?"; Secure":"";document.cookie=`${bi}=${e}; Path=/; Max-Age=${t}; SameSite=Lax${n}`;}function Br(){for(let e of document.cookie.split(";")){let t=e.indexOf("=");if(!(t<0)&&e.slice(0,t).trim()===bi)return e.slice(t+1).trim()||null}return null}function jr(){Si("",0);}function Oi(e){return new URL(e,window.location.href).toString()}async function Jr(e,t){let n=t.callbackURL?Oi(t.callbackURL):null;if(n&&new URL(n).origin!==window.location.origin)return null;let i=qr(),o=new URL(`${e.projectBaseURL}/session/start`);if(o.searchParams.set("pk",e.publishableKey),o.searchParams.set("kind",t.kind),t.kind==="social")o.searchParams.set("provider",t.provider),t.scopes?.length&&o.searchParams.set("scopes",t.scopes.join(",")),t.loginHint&&o.searchParams.set("loginHint",t.loginHint),t.requestSignUp!==void 0&&o.searchParams.set("requestSignUp",t.requestSignUp?"1":"0");else for(let c of Kr){let u=t[c];u&&o.searchParams.set(c,u);}let s=`${window.location.origin}${window.location.pathname}${window.location.search}`;o.searchParams.set("cb",n??s);for(let[c,u]of [["err",t.errorCallbackURL],["new",t.newUserCallbackURL]])u&&o.searchParams.set(c,Oi(u));return o.searchParams.set("challenge",await Ri(i)),Si(i,Vr),o.toString()}function bt(e){if(typeof window>"u")return null;let t=window.location.hash;if(!t.includes(Ot))return null;let n=new URLSearchParams(t.replace(/^#/,"")),i=n.get(Ot);if(!i||e!==void 0&&i!==e)return null;n.delete(Ot);let o=n.toString();return window.history.replaceState(window.history.state,"",`${window.location.pathname}${window.location.search}${o?`#${o}`:""}`),i}async function Gr(e,t,n){if(!fe())return false;let i=n??bt();if(!i)return false;n&&bt(n);let o=Br();if(jr(),!o)return false;t.beginSession({remember:true});let{error:s}=await e.request("/session/exchange",{method:"POST",body:{code:i,verifier:o}});return s===null}var bi,Ot,Hr,Vr,Kr,Ne=xt(()=>{"use strict";it();bi="authowl_handoff_verifier",Ot="authowl_code",Hr=32,Vr=900,Kr=["email","providerId","domain","organizationSlug"];});var Wi=/^(pk_(live|test))_([0-9a-f-]{36})_([A-Za-z0-9]{20,})$/i,Yi=/^sk_/i;function Ve(e){if(typeof e!="string"||e.length===0)throw new Error("publishableKey is required");if(Yi.test(e))throw new Error("A secret key was passed where a publishable key was expected. Never embed secret keys in client code.");let t=Wi.exec(e);if(!t)throw new Error("publishableKey is malformed; expected pk_(live|test)_<uuid>_<base62>");return {prefix:t[1].toLowerCase(),env:t[2].toLowerCase(),projectId:t[3].toLowerCase()}}function Xi(e,t){let n=`p_${e.toLowerCase().replace(/-/g,"")}`;return `${t?.secure?"__Secure-":""}${n}.session_token`}var vt=/^http:\/\/(?:(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*localhost|127\.0\.0\.1|\[::1\])(?::\d+)?(?:\/|$)/i;function Ke(e,t){throw new Error(`${e}: ${t}`)}function Dt(e,t){let n;try{n=new URL(String(e));}catch{throw new TypeError("Transport URL must be absolute.")}if(n.username||n.password||n.hash)throw new TypeError("Transport URL must not contain credentials or a fragment.");let i=n.toString();if(n.protocol!=="https:"&&!(n.protocol==="http:"&&t.allowHttpLoopback&&vt.test(i)))throw new TypeError("Transport URL must use HTTPS except on approved loopback.");return n}function _t(e,t){(typeof e!="string"||!/^https?:\/\/[^/?#@\\\s]+\/?$/i.test(e))&&Ke("apiUrl","origin required");let n;try{n=new URL(e);}catch{Ke("apiUrl","origin required");}return n.protocol==="http:"&&(!t.allowHttpLoopback||!vt.test(e))&&Ke("apiUrl","HTTPS required except exact loopback"),n.origin}function V(e,t){try{return e?.getItem(t)??null}catch{return null}}function _(e,t,n){try{n===null?e?.removeItem(t):e?.setItem(t,n);}catch{}}function x(){try{return globalThis.localStorage}catch{return}}function X(){try{return globalThis.sessionStorage}catch{return}}var Qi="authowl.session-challenge",Zi=e=>`${Qi}.${e}`,eo="set-auth-challenge",qe="x-authowl-challenge";function to(e){let t=e.get(qe);return ce(t)?Nt(t).some(([n,i])=>n.endsWith(".dont_remember")&&i.length>0):false}var zt="INVALID_TWO_FACTOR_COOKIE",no=2048,ce=e=>e!==null&&e.length<=no,Ut=/^[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]+$/;function Nt(e){let t=[];for(let n of e.split(";")){let i=n.trimStart(),o=i.indexOf("=");o<=0||t.push([i.slice(0,o).trimEnd(),i.slice(o+1)]);}return t}function Lt(e){let t=Zi(e),n=new Map;function i(){return n.size===0?null:[...n].map(([u,a])=>`${u}=${a}`).join("; ")}function o(){let u=i();_(X(),t,ce(u)?u:null);}function s(u){for(let[a,m]of Nt(u))Ut.test(a)&&(m===""?n.delete(a):Ut.test(m)&&n.set(a,m));}let c=V(X(),t);return ce(c)&&s(c),{presentOn(u){let a=i();u.delete(qe),ce(a)&&u.set(qe,a);},observe(u){let a=u.get(eo);ce(a)&&(s(a),o());},clear(){n.clear(),o();}}}var Be="set-auth-token",je="x-authowl-session-transport",Je="bearer";var io="authowl.session-token",oo="authowl.cookie-transport",Ft="ok",Ht="bearer",ro=e=>`${io}.${e}`,so=e=>`${oo}.${e}`;function ao(e){return e===Ft?"cookies":e===Ht?"bearer":"unknown"}function co(e){return e==="cookies"?Ft:e==="bearer"?Ht:null}function uo(e){let t=ro(e),n=so(e),i=Lt(e),o=null,s=false,c=null,u=ao(V(x(),n)),a=()=>u==="unknown",m=0,r=null,d=false;function p(){let y=V(X(),t);if(y!==null)return s=true,y;let w=V(x(),t);return w!==null?(s=false,w):null}o=p(),o!==null&&a()&&(d=true);function O(){if(!(!d||!r)){d=false;try{r();}catch{}}}function l(){let y=u==="bearer"?o:null,[w,q]=s?[X(),x()]:[x(),X()];_(q,t,null),_(w,t,y);}function g(y){y!==null&&c!==null&&(s=c,c=null),o=y,l(),y!==null&&a()&&(d=true,O());}function A(y){u=y,_(x(),n,co(y));}function b(){A("unknown"),d=false;}function R(){return o===null&&(o=p()),o}function z(){let y=p();return y!==null&&(o=y),o}function K(y){z()===y&&l();}function L(){m+=1,c=null,s=false,g(null),i.clear(),b();}let Y=()=>u!=="cookies";return {hasToken:()=>R()!==null,declareOn(y){if(y.has("authorization"))return false;let w=R();return !w&&!Y()?false:(w&&y.set("authorization",`Bearer ${w}`),y.set(je,Je),i.presentOn(y),true)},wantsToken:Y,needsProbe:a,observe(y){let w=y.get(Be);w&&g(w),i.observe(y);},dropChallenge:i.clear,measureWith(y){r=y,O();},beginRead(){let y=R(),w=m;return {carriedToken:y!==null,endIfDead(){y!==null&&z()===y&&m===w&&L();},recordCookieVerdict(q){if(m===w&&a()){if(A(q?"cookies":"bearer"),q){g(null);return}K(y);}}}},beginSession({remember:y}){m+=1,c=!y,i.clear(),b();},endSession:L}}var Mt=new Map;function Vt(e){let t=Mt.get(e);if(t)return t;let n=uo(e);return Mt.set(e,n),n}function lo(e,t){return t?.headers?new Headers(t.headers):typeof e=="object"&&e!==null&&"headers"in e?new Headers(e.headers):new Headers}function Kt(e,t){let n=Vt(e),i=(c,u)=>(t??globalThis.fetch)(c,u);return {fetch:async(c,u)=>{if(u?.credentials==="omit"||!n.wantsToken())return i(c,u);let a=lo(c,u),m=n.declareOn(a),r=await i(c,{...u,headers:a});return m&&n.observe(r.headers),r},probe:i,tokens:n}}function qt(e){if(!e||typeof e!="object")throw new Error("AuthConfig is required");let t=Ve(e.publishableKey),n=_t(e.apiUrl,{allowHttpLoopback:t.env==="test"});return {publishableKey:e.publishableKey,apiUrl:n,decoded:t,projectBaseURL:`${n}/api/projects/${t.projectId}/auth`}}function po(e){let t=qt(e),{fetch:n,...i}=Kt(t.decoded.projectId,e.fetch);return {...e,...t,fetch:n,session:i}}var Ge="authowl_invitation",$e="authowl.invitation-claim",Bt=/^[A-Za-z0-9_-]{1,128}$/,jt=10080*60*1e3;function fo(e=Date.now()){if(typeof window>"u")return ue(e);let t;try{t=new URL(window.location.href);}catch{return ue(e)}let n=t.searchParams.get(Ge);if(n===null)return ue(e);t.searchParams.delete(Ge);try{window.history.replaceState(window.history.state,"",t.toString());}catch{}if(!Bt.test(n))return ue(e);let i={id:n,capturedAt:e};return _(x(),$e,JSON.stringify(i)),i}function ue(e=Date.now()){let t=V(x(),$e);if(t===null)return null;let n;try{n=JSON.parse(t);}catch{return le(),null}if(typeof n!="object"||n===null)return le(),null;let{id:i,capturedAt:o}=n;return typeof i!="string"||!Bt.test(i)||typeof o!="number"||e-o>jt?(le(),null):{id:i,capturedAt:o}}function le(){_(x(),$e,null);}var Jt="authowl.last-used-method",go=/^(password|username|magic-link|email-otp|phone-otp|passkey|sso|social:[a-z0-9][a-z0-9_-]{0,63})$/,We=e=>`${Jt}.${e}`;function Se(e){return go.test(e)}function mo(e){let t=V(x(),We(e));return t===null||!Se(t)?null:t}function ho(e,t){Se(t)&&(_(x(),Re(e),null),_(x(),We(e),t));}var Re=e=>`${Jt}.pending.${e}`;function yo(e,t){Se(t)&&_(x(),Re(e),t);}function Ao(e,t){let n=V(x(),Re(e));_(x(),Re(e),null),t&&n!==null&&Se(n)&&_(x(),We(e),n);}function Oo(e){let t=e?.enabledMethods??["password"],n=t.includes("password"),i=t.includes("passkey"),o=e?.authentication,s=e?.mfa;return {emailSignUp:o?.email.signUp??t.some(c=>c==="password"||c==="magic_link"||c==="email_otp"),passwordSignUp:o?.password.signUp??n,phoneSignUp:o?.phone.signUp??t.includes("phone_otp"),passwordSignIn:o?.email.signIn.includes("password")??n,passwordMinLength:o?.password.minLength??8,passwordMaxLength:o?.password.maxLength??128,magicLinkSignIn:o?.email.signIn.includes("magic_link")??t.includes("magic_link"),emailOtpSignIn:o?.email.signIn.includes("email_otp")??t.includes("email_otp"),phoneSignIn:o?.phone.signIn??t.includes("phone_otp"),usernameSignIn:o?.username.signIn??false,collectUsername:o?.username.collectOnSignUp??false,passkeySignIn:o?.passkey.signIn??i,passkeyAdd:o?.passkey.add??i,firstLastName:e?.userModel?.firstLastName??false,emailChange:e===null?false:e.userModel?.emailChange??true,accountDeletion:e?.userModel?.accountDeletion??e?.accountDeletion??false,emailVerificationRequired:e?.emailVerification?.required??e?.requireEmailVerification??false,emailVerificationMethod:e?.emailVerification?.method??"link",totp:s?.totp??e?.twoFactor??false,mfaRequired:s?.required??e?.mfaRequired??false,backupCodes:s?.backupCodes??e?.twoFactor??false,legacyNameField:e?.authentication===void 0}}var bo=1e4,wo=1024*1024,v=class extends Error{kind;requestId;constructor(t,n){super(Co(t)),this.name="TransportError",this.kind=t,this.requestId=n;}},Wt=new WeakSet;function U(e,t){let n=new v(e,t);return Wt.add(n),n}async function Yt({fetchImpl:e,url:t,init:n={},timeoutMs:i=bo,maxResponseBytes:o=wo,allowHttpLoopback:s=false,decode:c}){$t(i,"timeoutMs"),$t(o,"maxResponseBytes");let u=Dt(t,{allowHttpLoopback:s}),a=n.signal,m=new AbortController,r=null,d,p=new Promise(A=>{d=A;}),O=A=>{r===null&&(r=A,d({type:"abort",kind:A}),m.abort());},l=()=>O("aborted");a?.addEventListener("abort",l,{once:true});let g=setTimeout(()=>O("timeout"),i);a?.aborted&&l();try{if(r!==null)throw U(r);let A;try{A=await Promise.race([e(u.toString(),{...n,redirect:"error",signal:m.signal}).then(Y=>({type:"response",response:Y})),p]);}catch{throw U(r??"network")}if(A.type==="abort")throw U(A.kind);if(!Ro(A.response))throw U("invalid_response");let b=A.response,R=Po(b.headers),z=await So(b,o,p,()=>r,R),K=Io(b,z,R),L;try{L=b.ok&&c?c(K,Object.freeze({status:b.status})):K;}catch{throw U("invalid_response",R)}return {response:b,data:L,...R===void 0?{}:{requestId:R}}}catch(A){throw A instanceof v&&Wt.has(A)?A:U(r??"network")}finally{clearTimeout(g),a?.removeEventListener("abort",l);}}function Ro(e){if(!e||typeof e!="object")return false;let t=e;return Number.isInteger(t.status)&&t.status>=0&&t.status<=599&&typeof t.statusText=="string"&&typeof t.ok=="boolean"&&typeof t.headers?.get=="function"&&(t.body===null||typeof t.body=="object"&&typeof t.body?.getReader=="function"&&typeof t.body.cancel=="function")}async function So(e,t,n,i,o){let s=e.headers.get("content-length");if(s!==null){if(!/^\d+$/.test(s))throw Gt(e.body),U("invalid_response",o);if(Number(s)>t)throw Gt(e.body),U("response_too_large",o)}if(!e.body)return "";let c;try{c=e.body.getReader();}catch{throw U("network",o)}let u=[],a=0,m=null;try{for(;;){let p;try{p=await Promise.race([c.read(),n]);}catch{m=U(i()??"network",o);break}if(ko(p)){m=U(p.kind,o);break}let{done:O,value:l}=p;if(O)break;if(l.byteLength!==0){if(a+=l.byteLength,a>t){m=U("response_too_large",o);break}u.push(l);}}}finally{m&&To(c);try{c.releaseLock();}catch{}}if(m)throw m;let r=new Uint8Array(a),d=0;for(let p of u)r.set(p,d),d+=p.byteLength;try{return new TextDecoder("utf-8",{fatal:!0}).decode(r)}catch{throw U("invalid_response",o)}}function ko(e){return "type"in e&&e.type==="abort"}function Gt(e){if(e)try{e.cancel().catch(()=>{});}catch{}}function To(e){try{e.cancel().catch(()=>{});}catch{}}function Io(e,t,n){if(e.status===204||e.status===205)return null;let i=Eo(e.headers.get("content-type"));if(!e.ok&&(!i||t.length===0))return null;if(!i||t.length===0)throw U("invalid_response",n);try{return JSON.parse(t)}catch{if(!e.ok)return null;throw U("invalid_response",n)}}function Eo(e){if(e===null)return false;let t=e.split(";",1)[0]?.trim().toLowerCase();return t==="application/json"||t?.endsWith("+json")===true}function Po(e){let t=e.get("x-request-id")?.trim();if(!(!t||t.length>256||!/^[A-Za-z0-9._:-]+$/.test(t)))return t}function $t(e,t){if(!Number.isInteger(e)||e<=0)throw new TypeError(`${t} must be a positive integer.`)}function Co(e){switch(e){case "aborted":return "The request was cancelled.";case "timeout":return "The request timed out.";case "response_too_large":return "The response exceeded the allowed size.";case "invalid_response":return "The service returned an invalid response.";case "network":return "The network request could not be completed."}}var ke=class extends Error{status;requestId;constructor(t,n,i){super(`${t} request failed with status ${n.status}.`),this.name="AuthOwlHttpError",this.status=n.status,this.requestId=i;}};function j(e,t,n={}){let i=new Headers(n.init?.headers);return i.set("x-publishable-key",e.publishableKey),Yt({fetchImpl:e.fetch,url:t,init:{...n.init,headers:i},allowHttpLoopback:e.decoded.env==="test",...n.timeoutMs===void 0?{}:{timeoutMs:n.timeoutMs},...n.maxResponseBytes===void 0?{}:{maxResponseBytes:n.maxResponseBytes},...n.decode===void 0?{}:{decode:n.decode}})}function Q(e,t){if(!e.response.ok)throw new ke(t,e.response,e.requestId);return e.data}var Z=new Map,xo=/^[a-z]{2}$/;function vo(e,t){if(typeof window>"u")return ()=>{};if(t===null)return Z.delete(e),()=>{};let n=t.trim().toLowerCase();if(!xo.test(n))return ()=>{};let i=Symbol(e),o=Z.get(e)??[];return o.push({token:i,locale:n}),Z.set(e,o),()=>{let s=Z.get(e);if(!s)return;let c=s.filter(u=>u.token!==i);c.length===0?Z.delete(e):Z.set(e,c);}}function Ye(e){return typeof window>"u"?null:Z.get(e)?.at(-1)?.locale??null}var Zt="x-authowl-turnstile-token",en="x-authowl-locale",Do=1e4,_o=32,Uo=2e4;function ie(e,t){return {post:(n,i,o,s)=>e.request(n,{method:"POST",body:i,fetchOptions:o,decode:s}),mutation:async(n,i)=>{let o=await n;return o.error===null&&(i===void 0||o.data!==null&&i(o.data))&&t(),o}}}function pe(e,t=e.projectBaseURL){return {async request(n,i={}){let o=Lo(t,n,i.query),s=i.method??(i.body===void 0?"GET":"POST"),c=new Headers(i.fetchOptions?.headers);i.fetchOptions?.authChallengeToken&&c.set(Zt,i.fetchOptions.authChallengeToken);let u=Ye(e.decoded.projectId);u&&c.set(en,u),i.body!==void 0&&c.set("content-type","application/json");let a={method:s,headers:c,credentials:i.credentials??"include",...i.body===void 0?{}:{body:JSON.stringify(i.body)}},m=Object.freeze({method:s,path:n});await i.fetchOptions?.onRequest?.(m);let r=No(s,i.fetchOptions),d;try{d=await zo(e,o,{...a,signal:i.fetchOptions?.signal},r);}catch(b){let R=Qt(b);return await i.fetchOptions?.onError?.(Xe(m,R,Ho(b))),{data:null,error:R}}let{response:p,requestId:O}=d,l=qo(n,d.data),g=l;if(p.ok)try{g=Ze(l),i.decode&&(g=i.decode(g));}catch{let b=Qt(new v("invalid_response",O));return await i.fetchOptions?.onError?.(Xe(m,b,"invalid_response")),{data:null,error:b}}let A=Object.freeze({...m,status:p.status,...O===void 0?{}:{requestId:O}});if(await i.fetchOptions?.onResponse?.(A),!p.ok){let b=Mo(p,l,O);return b.code===zt&&e.session.tokens.dropChallenge(),await i.fetchOptions?.onError?.(Xe(m,b,"api")),{data:null,error:b}}return await i.fetchOptions?.onSuccess?.(A),{data:g,error:null}}}}async function zo(e,t,n,i){let o=Date.now()+Do;for(let s=0;s<i;s+=1){let c=o-Date.now();if(c<=0)throw new v("timeout");try{let u=await j(e,t,{init:n,timeoutMs:Math.max(1,Math.ceil(c))});if(u.response.status<500||s===i-1)return u}catch(u){if(s===i-1||!(u instanceof v)||u.kind!=="network")throw u}await Vo(50*2**s,n.signal,o);}throw new v("network")}function No(e,t){if(e!=="GET"||t?.authChallengeToken)return 1;let n=t?.retry;return typeof n!="number"||!Number.isFinite(n)?1:Math.min(Math.max(Math.trunc(n),0),3)+1}function Lo(e,t,n){let i=new URL(`${e}${t.startsWith("/")?t:`/${t}`}`);for(let[o,s]of Object.entries(n??{}))s!==void 0&&i.searchParams.set(o,String(s));return i.toString()}function Mo(e,t,n){let i=de(t)?t:{},o=Fo(i,e.headers);return {status:e.status,statusText:e.statusText,code:typeof i.code=="string"?i.code:void 0,...n===void 0?{}:{requestId:n},...typeof i.current_version=="number"?{currentVersion:i.current_version}:{},...o!==void 0?{retryAfterSeconds:o}:{},message:typeof i.message=="string"?i.message:typeof i.error=="string"?i.error:typeof i.detail=="string"?i.detail:e.statusText||"Request failed"}}function Fo(e,t){let n=(typeof e.retryAfterSeconds=="number"&&Number.isFinite(e.retryAfterSeconds)?e.retryAfterSeconds:void 0)??Xt(t.get("retry-after"))??Xt(t.get("x-retry-after"));if(n!==void 0)return Math.min(Math.max(Math.trunc(n),1),86400)}function Xt(e){if(!e)return;let t=e.trim();if(!/^\d+$/.test(t))return;let n=Number(t);return Number.isFinite(n)?n:void 0}function Qt(e){let t=e instanceof v?e.kind:"network";return {status:0,...{aborted:{statusText:"ABORTED",code:"REQUEST_ABORTED",message:"The request was cancelled."},timeout:{statusText:"TIMEOUT",code:"REQUEST_TIMEOUT",message:"The request timed out."},response_too_large:{statusText:"INVALID_RESPONSE",code:"RESPONSE_TOO_LARGE",message:"The service response was too large."},invalid_response:{statusText:"INVALID_RESPONSE",code:"INVALID_RESPONSE",message:"The service returned an invalid response."},network:{statusText:"FETCH_ERROR",code:"FETCH_ERROR",message:"Network request failed."}}[t],...e instanceof v&&e.requestId?{requestId:e.requestId}:{}}}function Xe(e,t,n){return Object.freeze({...e,status:t.status??0,...t.requestId===void 0?{}:{requestId:t.requestId},failure:n})}function Ho(e){return e instanceof v?e.kind:"network"}function Vo(e,t,n){return new Promise((i,o)=>{if(t?.aborted){o(new v("aborted"));return}let s=n-Date.now();if(s<=0){o(new v("timeout"));return}let c=Math.min(e,s),u=()=>{clearTimeout(a),o(new v("aborted"));},a=setTimeout(()=>{t?.removeEventListener("abort",u),Date.now()>=n?o(new v("timeout")):i();},c);t?.addEventListener("abort",u,{once:true}),t?.aborted&&u();})}function Ze(e,t="",n=0,i={nodes:0}){if(i.nodes+=1,n>_o||i.nodes>Uo)throw new Error("response traversal limit exceeded");if(typeof e=="string"&&/^(?:createdAt|updatedAt|expiresAt)$/.test(t)){let o=new Date(e);return Number.isNaN(o.getTime())?e:o}return Array.isArray(e)?e.map(o=>Ze(o,"",n+1,i)):de(e)?Object.fromEntries(Object.entries(e).map(([o,s])=>[o,Ko(o)?s:Ze(s,o,n+1,i)])):e}function Ko(e){return e==="metadata"||e==="public_metadata"||e==="unsafe_metadata"||e==="private_metadata"||e==="publicMetadata"||e==="unsafeMetadata"||e==="privateMetadata"}function qo(e,t){if(e==="/list-sessions"&&Array.isArray(t))return t.map(o=>de(o)?Qe(o):o);if(!de(t))return t;let i=e==="/change-password"||e==="/passkey/verify-authentication"||e==="/phone-otp/verify"||e==="/sign-up/email"||e.startsWith("/sign-in/")||e.startsWith("/two-factor/verify-")?Qe(t):t;return e==="/sign-up/email"&&!("sessionCreated"in i)&&(i={...i,sessionCreated:typeof t.token=="string"&&t.token.length>0}),(e==="/get-session"||e==="/passkey/verify-authentication")&&de(i.session)&&(i={...i,session:Qe(i.session)}),i}function Qe(e){if(!Object.hasOwn(e,"token"))return e;let t={...e};return delete t.token,t}function de(e){return !!e&&typeof e=="object"&&!Array.isArray(e)}var Bo=new Set(["__proto__","constructor","prototype"]);function h(e){(!e||typeof e!="object"||Array.isArray(e))&&f();let t=Object.getPrototypeOf(e);return t!==Object.prototype&&t!==null&&f(),e}function S(e){return typeof e!="string"&&f(),e}function k(e){return typeof e!="boolean"&&f(),e}function E(e){return (!(e instanceof Date)||Number.isNaN(e.getTime()))&&f(),e}function ee(e){return (!Array.isArray(e)||!e.every(t=>typeof t=="string"))&&f(),[...e]}function P(e,t){let n=e[t];return n==null||typeof n=="string"?n:f()}function tn(e,t){let n=e[t];return n==null||typeof n=="boolean"?n:f()}function F(e){let t=h(e),n=t.email;return n!==null&&typeof n!="string"&&f(),{id:S(t.id),email:n,emailVerified:k(t.emailVerified),createdAt:E(t.createdAt),updatedAt:E(t.updatedAt),...M("phoneNumber",P(t,"phoneNumber")),...M("username",P(t,"username")),...M("displayUsername",P(t,"displayUsername")),...M("firstName",P(t,"firstName")),...M("lastName",P(t,"lastName")),...M("name",P(t,"name")),...M("image",P(t,"image")),...M("twoFactorEnabled",tn(t,"twoFactorEnabled"))}}function Te(e){let t=h(e),n=t.membership;return {id:S(t.id),userId:S(t.userId),expiresAt:E(t.expiresAt),...M("activeOrganizationId",P(t,"activeOrganizationId")),...M("activeTeamId",P(t,"activeTeamId")),...M("membership",n==null?n:jo(n)),...M("pendingMfaEnrollment",tn(t,"pendingMfaEnrollment"))}}function f(){throw new TypeError("AuthOwl response does not match its runtime contract.")}function J(e,t=20,n=1e4){return (!e||typeof e!="object"||Array.isArray(e))&&f(),tt(e,t,n)}function tt(e,t=20,n=1e4){return et(e,0,{nodes:0},t,n)}function jo(e){let t=h(e);return {role:S(t.role),...t.roles===void 0?{}:{roles:ee(t.roles)},permissions:ee(t.permissions),...t.teams===void 0?{}:{teams:ee(t.teams)}}}function et(e,t,n,i,o){if(n.nodes+=1,(t>i||n.nodes>o)&&f(),e===null||typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)||f(),e;if(Array.isArray(e))return e.map(u=>et(u,t+1,n,i,o));(!e||typeof e!="object")&&f();let s=Object.getPrototypeOf(e);s!==Object.prototype&&s!==null&&f();let c={};for(let[u,a]of Object.entries(e))Bo.has(u)&&f(),c[u]=et(a,t+1,n,i,o);return c}function M(e,t){return t===void 0?{}:{[e]:t}}function nn({http:e,probe:t,tokens:n,channelName:i}){let o=new Set,s=null,c=null,u=null,a=null,m=null,r=null,d,p=y=>{g(y);};d={data:null,isPending:true,isRefetching:false,error:null,refetch:p};function O(y){d=y;for(let w of o)w();}async function l(y){return e.request("/get-session",{query:y?.query,decode:nt})}function g(y){if(y?.query?.disableCookieCache===true)return b(y);if(a)return a;if(m)return m;let w=b(y).finally(()=>{m===w&&(m=null);});return m=w,w}function A(){if(a)return a;let y=b({query:{disableCookieCache:true}}).finally(()=>{a===y&&(a=null);});return a=y,y}async function b(y){u?.abort();let w=new AbortController;u=w,O({...d,isPending:d.data===null&&d.error===null,isRefetching:d.data!==null});let q=n.beginRead(),we=await e.request("/get-session",{query:y?.query,fetchOptions:{signal:w.signal},decode:nt});if(u===w&&(u=null,O({data:we.data,error:we.error,isPending:false,isRefetching:false,refetch:p}),we.error===null)){if(we.data===null){q.endIfDead();return}await R(q);}}async function R(y){if(n.needsProbe()){if(!y.carriedToken){y.recordCookieVerdict(true);return}return r||z(y)}}function z(y){let w=t.request("/get-session",{query:{disableCookieCache:true},decode:nt}).then(q=>{r===w&&q.error===null&&y.recordCookieVerdict(q.data!==null);}).finally(()=>{r===w&&(r=null);});return r=w,w}function K(){s?.postMessage({type:"session-changed"});}function L(){if(typeof window>"u"||c)return;let y=()=>{g();},w=()=>{document.visibilityState==="visible"&&g();};window.addEventListener("focus",y),document.addEventListener("visibilitychange",w),typeof BroadcastChannel<"u"&&(s=new BroadcastChannel(i),s.addEventListener("message",y)),c=()=>{window.removeEventListener("focus",y),document.removeEventListener("visibilitychange",w),s?.close(),s=null,c=null;};}function Y(y){return o.add(y),o.size===1&&(L(),g()),()=>{if(o.delete(y),o.size===0){let w=u;u=null,m=null,a=null,w?.abort(),c?.();}}}return n.measureWith(()=>{n.needsProbe()&&z(n.beginRead());}),{store:{subscribe:Y,getSnapshot:()=>d,refresh:A},getSession:l,notifyMutation(){K(),r&&r.catch(()=>{}).then(()=>{!n.needsProbe()&&n.hasToken()&&K();}),o.size>0&&g({query:{disableCookieCache:true}});}}}function nt(e){if(e===null)return null;let t=h(e);return (t.session===void 0||t.user===void 0)&&f(),{session:Te(t.session),user:F(t.user)}}it();function ot(){let e=globalThis.crypto.getRandomValues(new Uint8Array(16));e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t=Array.from(e,n=>n.toString(16).padStart(2,"0")).join("");return `${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}async function on(e,t){return e.request("/user/metadata",{fetchOptions:t,decode:sn})}async function rn(e,t,n){return e.request("/user/metadata",{method:"PATCH",body:{expected_version:t.expectedVersion,unsafe_metadata:t.unsafeMetadata},fetchOptions:n,decode:sn})}function sn(e){let t=h(e),n=J(t.public_metadata),i=J(t.unsafe_metadata);if(!Number.isSafeInteger(t.metadata_version)||t.metadata_version<0)throw new TypeError("Invalid AuthOwl metadata response");return {publicMetadata:n,unsafeMetadata:i,metadataVersion:t.metadata_version}}function cn(e,t){let{post:n,mutation:i}=ie(e,t);return {getMetadata:o=>on(e,o),updateUnsafeMetadata:(o,s)=>rn(e,o,s),updateProfile:(o,s)=>i(n("/update-user",o,s,ge)),changeEmail:(o,s)=>i(n("/change-email",o,s,ge)),changePassword:(o,s)=>i(n("/change-password",o,s,Jo)),listSessions:o=>e.request("/list-sessions",{fetchOptions:o,decode:Go}),revokeSession:({sessionId:o},s)=>i(n("/revoke-session",{sessionId:o},s,ge)),revokeOtherSessions:o=>i(n("/revoke-other-sessions",{},o,ge)),listSocialAccounts:async o=>{let s=await e.request("/list-accounts",{fetchOptions:o,decode:$o});if(!s.data)return {data:null,error:s.error};let c=s.data.length>1;return {...s,data:s.data.filter(u=>u.providerId!=="credential").map(u=>({...u,canUnlink:c}))}},linkSocial:(o,s)=>n("/link-social",o,s,Wo),unlinkSocial:(o,s)=>i(n("/unlink-account",o,s,ge)),delete:(o={},s)=>i(n("/delete-user",o,s,Yo))}}function ge(e){let t=h(e);return {status:k(t.status)}}function Jo(e){let t=h(e);return {user:F(t.user)}}function Go(e){return Array.isArray(e)||f(),e.map(t=>{let n=h(t);return {id:S(n.id),userId:S(n.userId),createdAt:E(n.createdAt),updatedAt:E(n.updatedAt),expiresAt:E(n.expiresAt),...an("ipAddress",P(n,"ipAddress")),...an("userAgent",P(n,"userAgent"))}})}function $o(e){return Array.isArray(e)||f(),e.map(t=>{let n=h(t);return {id:S(n.id),userId:S(n.userId),providerId:S(n.providerId),accountId:S(n.accountId),scopes:ee(n.scopes),createdAt:E(n.createdAt),updatedAt:E(n.updatedAt)}})}function Wo(e){let t=h(e);return {url:S(t.url),redirect:k(t.redirect)}}function Yo(e){let t=h(e);return {success:k(t.success),message:S(t.message)}}function an(e,t){return t===void 0?{}:{[e]:t}}function Ie(e,t){return !e||!t?false:e.permissions.includes(t)}function un(e,t){return !e||!t?false:e.teams?.includes(t)??false}function ln(e,t){return e?e.roles===void 0?e.role===t:e.roles.includes(t):false}function Ee(e,t){if(!e)return false;let{role:n,permission:i,teamId:o}=t;return !(n===void 0&&i===void 0&&o===void 0||n!==void 0&&!ln(e,n)||i!==void 0&&!e.permissions.includes(i)||o!==void 0&&!un(e,o))}function Xo(e){return {has:t=>Ee(e,t),hasPermission:t=>Ie(e,t.permission)}}var Qo=new Set(["pending","accepted","rejected","canceled"]),rt=1e4;function dn(e){let t=h(e);return t.recipientHint!==null&&t.recipientHint!=="new_user"&&f(),{recipientHint:t.recipientHint}}function oe(e,t,n){let i=h(e),o={id:T(i.id),name:T(i.name),slug:T(i.slug),createdAt:E(i.createdAt),...me("logo",P(i,"logo")),...me("metadata",i.metadata===void 0?void 0:tt(i.metadata))};return B(o.id,t),B(o.slug,n),o}function pn(e){return G(e,oe)}function st(e,t,n){return e===null?null:(t===null&&f(),oe(e,t,n))}function fn(e,t,n){if(e===null)return null;let i=h(e),o=oe(i,t,n);return {...o,members:G(i.members,s=>Tn(s,o.id)),invitations:G(i.invitations,s=>$(s,void 0,o.id))}}function at(e,t,n=false){let i=G(e,o=>he(o));return n||Ae(i.map(o=>o.organizationId),t),i}function gn(e,t){let n=G(e,i=>ct(i));return Ae(n.map(i=>i.teamId),t),n}function ct(e,t,n){let i=h(e),o={id:T(i.id),teamId:T(i.teamId),userId:T(i.userId),createdAt:E(i.createdAt)};return B(o.teamId,t),B(o.userId,n),o}function mn(e,t,n){return e===null?null:(t===null&&f(),he(e,t,n))}function hn(e,t){let n=h(e);return (!Number.isSafeInteger(n.total)||n.total<0)&&f(),{members:Zo(n.members,t),total:n.total}}function $(e,t,n){let i=h(e),o=T(i.status);Qo.has(o)||f();let s={id:T(i.id),organizationId:T(i.organizationId),email:ye(i.email),role:T(i.role),status:o,inviterId:T(i.inviterId),expiresAt:E(i.expiresAt),createdAt:E(i.createdAt)};return B(s.id,t),B(s.organizationId,n),s}function yn(e,t){let n=G(e,i=>$(i));return Ae(n.map(i=>i.organizationId),t),n}function An(e){return G(e,t=>{let n=h(t);return {...$(n),organizationName:ye(n.organizationName)}})}function On(e,t){let n=h(e);return {...$(n,t),organizationName:T(n.organizationName),organizationSlug:T(n.organizationSlug),inviterEmail:In(n.inviterEmail)}}function bn(e,t){let n=h(e),i=$(n.invitation,t);return {invitation:i,member:re(n.member,void 0,i.organizationId)}}function wn(e,t){let n=h(e);return n.member!==null&&f(),{invitation:n.invitation===null?null:$(n.invitation,t),member:null}}function Rn(e,t){return e===null?null:$(e,t)}function Sn(e,t,n){let i=h(e);return {member:re(i.member,n,t)}}function re(e,t,n){let i=h(e),o={id:T(i.id),organizationId:T(i.organizationId),userId:T(i.userId),role:T(i.role),createdAt:E(i.createdAt),...i.user===void 0?{}:{user:En(i.user)}};return B(o.id,t),B(o.organizationId,n),o}function kn(e,t){let n=G(e,i=>{let o=h(i);return {organizationId:T(o.organizationId),data:{role:T(o.role),...me("permission",o.permission===void 0?void 0:er(o.permission)),...me("customPermissionKeys",o.customPermissionKeys===void 0?void 0:ee(o.customPermissionKeys))}}});return Ae(n.map(i=>i.organizationId),t),n.map(i=>i.data)}function he(e,t,n){let i=h(e),o=i.updatedAt,s={id:T(i.id),name:ye(i.name),organizationId:T(i.organizationId),createdAt:E(i.createdAt),...o===void 0?{}:{updatedAt:E(o)}};return B(s.id,t),B(s.organizationId,n),s}function ut(e){let t=h(e);return {message:ye(t.message)}}function Tn(e,t){let n=h(e);return {...re(n,void 0,t),user:En(n.user)}}function Zo(e,t){let n=G(e,i=>Tn(i));return Ae(n.map(i=>i.organizationId),t),n}function er(e){let t=h(e),n={};for(let[i,o]of Object.entries(t))(i==="__proto__"||i==="constructor"||i==="prototype"||i.length===0||i.length>rt||!Array.isArray(o))&&f(),n[i]=o.map(s=>T(s));return n}function T(e){let t=S(e);return (t.length===0||t.length>rt)&&f(),t}function ye(e){if(e==null)return "";let t=S(e);return t.length>rt&&f(),t}function In(e){return e===null?null:T(e)}function B(e,t){t!==void 0&&e!==t&&f();}function Ae(e,t){let n=t??e[0];n!==void 0&&e.some(i=>i!==n)&&f();}function En(e){let t=h(e);return {id:T(t.id),name:ye(t.name),email:In(t.email),...me("image",P(t,"image"))}}function G(e,t){return Array.isArray(e)||f(),e.map(n=>t(n))}function me(e,t){return t===void 0?{}:{[e]:t}}function Pn(e,t,n=()=>null){let{post:i,mutation:o}=ie(e,t),s=new Set,c=()=>{for(let r of s)try{r();}catch{}},u=new Map,a=(r,d,p,O)=>{if(p)return e.request(r,{query:d,fetchOptions:p,decode:O});let l=`${r}\0${JSON.stringify(d??null)}`,g=u.get(l);if(g)return g;let A=e.request(r,{query:d,decode:O}).finally(()=>{u.delete(l);});return u.set(l,A),A},m=async r=>{let d=await o(r).finally(()=>u.clear());return d.error===null&&c(),d};return {subscribe(r){return s.add(r),()=>s.delete(r)},create:(r,d)=>m(i("/organization/create",r,d,oe)),list:r=>a("/organization/list",void 0,r,pn),get:(r={},d)=>a("/organization/get-full-organization",{organizationId:r.organizationId,organizationSlug:r.organizationSlug,membersLimit:r.membersLimit},d,p=>fn(p,r.organizationId,r.organizationSlug)),setActive:(r,d)=>m(i("/organization/set-active",r,d,p=>st(p,r.organizationId,r.organizationSlug))),createTeam:(r,d)=>m(i("/organization/create-team",r,d,p=>he(p,void 0,r.organizationId))),listTeams:(r={},d)=>a("/organization/list-teams",{organizationId:r.organizationId},d,p=>at(p,r.organizationId)),updateTeam:(r,d)=>m(i("/organization/update-team",r,d,p=>he(p,r.teamId,r.data.organizationId))),removeTeam:(r,d)=>m(i("/organization/remove-team",r,d,ut)),listUserTeams:r=>a("/organization/list-user-teams",void 0,r,d=>at(d,void 0,true)),listTeamMembers:(r={},d)=>a("/organization/list-team-members",{teamId:r.teamId},d,p=>gn(p,r.teamId)),addTeamMember:(r,d)=>m(i("/organization/add-team-member",r,d,p=>ct(p,r.teamId,r.userId))),removeTeamMember:(r,d)=>m(i("/organization/remove-team-member",r,d,ut)),setActiveTeam:(r,d)=>m(i("/organization/set-active-team",r,d,p=>mn(p,r.teamId))),update:(r,d)=>m(i("/organization/update",r,d,p=>st(p,r.organizationId))),delete:(r,d)=>m(i("/organization/delete",r,d,p=>oe(p,r.organizationId))),listMembers:(r={},d)=>a("/organization/list-members",{organizationId:r.organizationId,organizationSlug:r.organizationSlug,limit:r.limit,offset:r.offset,sortBy:r.sortBy,sortDirection:r.sortDirection,filterField:r.filterField,filterValue:r.filterValue,filterOperator:r.filterOperator},d,p=>hn(p,r.organizationId)),inviteMember:(r,d)=>m(i("/organization/invite-member",r,d,p=>$(p,void 0,r.organizationId))),listInvitations:(r={},d)=>a("/organization/list-invitations",{organizationId:r.organizationId},d,p=>yn(p,r.organizationId)),listUserInvitations:r=>a("/organization/list-user-invitations",void 0,r,An),getInvitation:(r,d)=>a("/organization/get-invitation",{id:r.id},d,p=>On(p,r.id)),getInvitationRecipientHint:(r,d)=>a("/organization/invitation-recipient-hint",{invitationId:r.invitationId},d,dn),acceptInvitation:(r,d)=>m(i("/organization/accept-invitation",r,d,p=>bn(p,r.invitationId))),rejectInvitation:(r,d)=>m(i("/organization/reject-invitation",r,d,p=>wn(p,r.invitationId))),cancelInvitation:(r,d)=>m(i("/organization/cancel-invitation",r,d,p=>Rn(p,r.invitationId))),removeMember:(r,d)=>m(i("/organization/remove-member",r,d,p=>Sn(p,r.organizationId,r.memberIdOrEmail.includes("@")?void 0:r.memberIdOrEmail))),updateMemberRole:(r,d)=>m(i("/organization/update-member-role",r,d,p=>re(p,r.memberId,r.organizationId))),leave:(r,d)=>m(i("/organization/leave",r,d,p=>re(p,void 0,r.organizationId))),listRoles:(r={},d)=>a("/organization/list-roles",{organizationId:r.organizationId},d,p=>kn(p,r.organizationId)),has:r=>Ee(n(),r),hasPermission:r=>Ie(n(),r.permission)}}var Cn=4096,tr=4096,nr=100,ir=256,or=16,rr=64,sr=12;function dt(e){let t=h(e);return t.twoFactorRedirect===true?((t.user!==void 0||t.redirect!==void 0||t.url!==void 0)&&f(),{twoFactorRedirect:true,...t.twoFactorMethods===void 0?{}:{twoFactorMethods:Gn(t.twoFactorMethods,or,rr)}}):(t.twoFactorRedirect!==void 0&&f(),{redirect:k(t.redirect),...dr(t,"url"),user:F(t.user)})}function xn(e){let t=h(e);return {user:F(t.user)}}function vn(e){let t=h(e);return {sessionCreated:k(t.sessionCreated),user:F(t.user)}}function Dn(e,t){let n=h(e),i=k(n.redirect);n.user===null&&f();let o=n.user!==void 0&&n.user!==null,s=n.url!==void 0&&n.url!==null;return i?((o||!s)&&f(),{redirect:true,url:lt(n.url,t)}):(o===s&&f(),o?{redirect:false,user:F(n.user)}:{redirect:false,url:lt(n.url,t)})}function _n(e,t){let n=h(e);return (n.redirect!==true||n.user!==void 0)&&f(),{redirect:true,url:lt(n.url,t)}}function Un(e){return {status:k(h(e).status)}}function zn(e){return {success:k(h(e).success)}}function Nn(e){return h(e).status!=="pending"&&f(),{status:"pending"}}function Ln(e){let t=h(e);if(t.kind==="authowl_turnstile")return {kind:"authowl_turnstile"};t.kind!=="akedly_shield_v1_2"&&f();let n=h(t.turnstile),i=n.siteKey===null?null:S(n.siteKey);return {kind:"akedly_shield_v1_2",connectionId:S(t.connectionId),challenge:S(t.challenge),difficulty:ar(t.difficulty),challengeToken:S(t.challengeToken),challengeRequired:k(t.challengeRequired),turnstile:{required:k(n.required),siteKey:i}}}function ar(e){return (!Number.isSafeInteger(e)||Number(e)<0||Number(e)>sr)&&f(),Number(e)}function Mn(e){let t=h(e);return (t.status!==true||t.sessionCreated!==true)&&f(),{status:true,sessionCreated:true,user:cr(t.user)}}function pt(e){return {status:k(h(e).status)}}function Fn(e){return {status:k(h(e).status)}}function Hn(e){let t=h(e);return {status:k(t.status),user:F(t.user)}}function Vn(e){return {success:k(h(e).success)}}function Kn(e){let t=h(e);return {totpURI:lr(t.totpURI),backupCodes:Jn(t.backupCodes)}}function qn(e){return {status:k(h(e).status)}}function Pe(e){return h(e).status!==true&&f(),{status:true}}function Bn(e){return {status:k(h(e).status)}}function jn(e){let t=h(e);return t.status!==void 0&&t.status!==true&&f(),{backupCodes:Jn(t.backupCodes)}}function cr(e){let t=h(e);return {id:se(t.id,512),...pr(t,"name",1024),phoneNumber:se(t.phoneNumber,64),phoneNumberVerified:k(t.phoneNumberVerified),...t.createdAt===void 0?{}:{createdAt:E(t.createdAt)},...t.updatedAt===void 0?{}:{updatedAt:E(t.updatedAt)}}}function lt(e,t){let n=se(e,Cn);/[\u0000-\u0020\u007f]/u.test(n)&&f();let i;try{i=new URL(n);}catch{return f()}return (i.username||i.password)&&f(),i.protocol==="https:"||t&&i.protocol==="http:"&&ur(i.hostname)?i.href:f()}function ur(e){let t=e.toLowerCase();return t==="localhost"||t==="127.0.0.1"||t==="[::1]"}function lr(e){let t=se(e,tr),n;try{n=new URL(t);}catch{return f()}let i=n.searchParams.get("secret");return (n.protocol!=="otpauth:"||n.hostname.toLowerCase()!=="totp"||n.username||n.password||n.hash||i===null||i.length===0||i.length>512||/\s/u.test(i))&&f(),t}function Jn(e){return Gn(e,nr,ir)}function Gn(e,t,n){(!Array.isArray(e)||e.length===0||e.length>t)&&f();let i=e.map(o=>se(o,n));return i.some(o=>o.trim().length===0)&&f(),new Set(i).size!==i.length&&f(),i}function se(e,t){let n=S(e);return (n.length===0||n.length>t)&&f(),n}function dr(e,t){let n=e[t];return n==null?{}:{[t]:se(n,Cn)}}function pr(e,t,n){let i=P(e,t);return i===void 0?{}:(i!==null&&i.length>n&&f(),{[t]:i})}var $n=new Set([1564,8206,8207,8234,8235,8236,8237,8238,8294,8295,8296,8297]),Ce=new Set([9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288,65279]);function xe(e){if(e===void 0)return {valid:true,value:void 0};for(let n of e){let i=n.codePointAt(0);if(i===void 0||Yn(n,i)||Wn(i)||$n.has(i))return {valid:false}}let t=fr(e);return ft(t)?{valid:true,value:t}:{valid:false}}function ft(e){let t=0,n,i;for(let o of e){if(t+=1,t>256)return false;let s=o.codePointAt(0);if(s===void 0||Yn(o,s)||Wn(s)||$n.has(s))return false;n??=s,i=s;}return t>0&&n!==void 0&&i!==void 0&&!Ce.has(n)&&!Ce.has(i)}function ve(){return {data:null,error:{status:400,statusText:"BAD_REQUEST",code:"INVALID_PASSKEY_NAME",message:"Passkey names must contain 1 to 256 safe Unicode characters."}}}function fr(e){let t=0,n=e.length;for(;t<n;){let i=e.codePointAt(t);if(i===void 0||!Ce.has(i))break;t+=i>65535?2:1;}for(;n>t;){let i=e.codePointAt(n-1);if(i===void 0)break;let s=i>=56320&&i<=57343?n-2:n-1,c=e.codePointAt(s);if(c===void 0||!Ce.has(c))break;n=s;}return e.slice(t,n)}function Wn(e){return e>=0&&e<=31||e>=127&&e<=159}function Yn(e,t){return e.length===1&&t>=55296&&t<=57343}var Zn=12,ei=5e3,gr=8,mr=1e3,hr=16,Xn=512,ti=100,ni=8192,yr=32768,gt=1024,Qn=256,ht=64,Ar=6e5,Or=/^[A-Za-z0-9_-]+$/u,br=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/u,wr=/[\u0000-\u001f\u007f-\u009f\u061c\u200e\u200f\u202a-\u202e\u2066-\u2069]/u,Rr=/^[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?$/u,Sr=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/iu,ii=new Set(["discouraged","preferred","required"]),kr=new Set(["singleDevice","multiDevice"]),oi=new Set(["ble","cable","hybrid","internal","nfc","smart-card","usb"]),ri=new Set(["hybrid","security-key","client-device"]),Tr=new Set(["none","indirect","direct","enterprise"]),Ir=new Set(["fido-u2f","packed","android-safetynet","android-key","tpm","apple","none"]),Er=new Set(["platform","cross-platform"]),Pr=new Set(["discouraged","preferred","required"]),Cr=new Set([-8,-7,-257]);function si(e){let t=J(e,Zn,ei);return {challenge:hi(t.challenge),...C("timeout",gi(t.timeout)),...C("rpId",yi(t.rpId)),...C("allowCredentials",fi(t.allowCredentials)),...C("userVerification",Oe(t.userVerification,ii)),...C("hints",De(t.hints,ri)),...C("extensions",mi(t.extensions))}}function ai(e){let t=J(e,Zn,ei);return {challenge:hi(t.challenge),rp:xr(t.rp),user:vr(t.user),pubKeyCredParams:Dr(t.pubKeyCredParams),...C("timeout",gi(t.timeout)),...C("excludeCredentials",fi(t.excludeCredentials)),...C("authenticatorSelection",_r(t.authenticatorSelection)),...C("attestation",Oe(t.attestation,Tr)),...C("attestationFormats",De(t.attestationFormats,Ir)),...C("hints",De(t.hints,ri)),...C("extensions",mi(t.extensions))}}function ci(e){let t=h(e),n=Te(t.session),i=F(t.user);return n.userId!==i.id&&f(),{session:n,user:i}}function yt(e){let t=h(e),n=t.counter;(!Number.isSafeInteger(n)||n<0)&&f();let i=At(t.deviceType,kr),o=k(t.backedUp);return o&&i!=="multiDevice"&&f(),{id:ae(t.id,Qn),...Nr(t),publicKey:Ur(t.publicKey,yr),userId:ae(t.userId,Qn),credentialID:Ue(t.credentialID,ni),counter:n,deviceType:i,backedUp:o,...Lr(t),createdAt:E(t.createdAt),...Mr(t)}}function ui(e,t,n){let i=yt(e);return (i.credentialID!==t||(n===void 0?i.name!==void 0&&i.name!==null:i.name!==n))&&f(),i}function li(e){(!Array.isArray(e)||e.length>ti)&&f();let t=e.map(yt);return _e(t.map(n=>n.id)),_e(t.map(n=>n.credentialID)),t.length>1&&t.some(n=>n.userId!==t[0]?.userId)&&f(),t}function di(e,t,n){let i=h(e),o=yt(i.passkey);return (o.id!==t||o.name!==n)&&f(),{passkey:o}}function pi(e){return h(e).status!==true&&f(),{status:true}}function xr(e){let t=h(e);return {name:mt(t.name,gt),...C("id",yi(t.id))}}function vr(e){let t=h(e);return {id:Ue(t.id,128,1,64),name:mt(t.name,gt),displayName:mt(t.displayName,gt)}}function Dr(e){(!Array.isArray(e)||e.length===0||e.length>ht)&&f();let t=e.map(n=>{let i=h(n);return (i.type!=="public-key"||!Number.isSafeInteger(i.alg)||!Cr.has(i.alg))&&f(),{type:"public-key",alg:i.alg}});return Fr(t.map(n=>n.alg)),t}function fi(e){if(e===void 0)return;(!Array.isArray(e)||e.length>ti)&&f();let t=e.map(n=>{let i=h(n);return i.type!=="public-key"&&f(),{type:"public-key",id:Ue(i.id,ni),...C("transports",De(i.transports,oi))}});return _e(t.map(n=>n.id)),t}function _r(e){if(e===void 0)return;let t=h(e);t.requireResidentKey!==void 0&&typeof t.requireResidentKey!="boolean"&&f();let n=Oe(t.residentKey,Pr);return t.requireResidentKey!==void 0&&n!==void 0&&t.requireResidentKey!==(n==="required")&&f(),{...C("authenticatorAttachment",Oe(t.authenticatorAttachment,Er)),...C("residentKey",n),...C("requireResidentKey",t.requireResidentKey),...C("userVerification",Oe(t.userVerification,ii))}}function gi(e){return e!==void 0&&(typeof e!="number"||!Number.isFinite(e)||e<0||e>Ar)&&f(),e}function mi(e){return e===void 0?void 0:J(e,gr,mr)}function De(e,t){if(e===void 0)return;(!Array.isArray(e)||e.length>ht)&&f();let n=e.map(i=>At(i,t));return _e(n),n}function Oe(e,t){if(e!==void 0)return At(e,t)}function hi(e){return Ue(e,Math.ceil(Xn*4/3),hr,Xn)}function Ue(e,t,n=1,i=Number.POSITIVE_INFINITY){let o=ae(e,t),s=o.length%4,c=zr(o.at(-1)??""),u=Math.floor(o.length*3/4);return (!Or.test(o)||s===1||s===2&&(c&15)!==0||s===3&&(c&3)!==0||u<n||u>i)&&f(),o}function ae(e,t){let n=S(e);return (n.length===0||n.length>t)&&f(),n}function mt(e,t){let n=ae(e,t);return wr.test(n)&&f(),n}function yi(e){if(e===void 0)return;let t=ae(e,253);return t!=="localhost"&&(t.endsWith(".")||!t.includes(".")||t.split(".").some(n=>!Rr.test(n)))&&f(),t}function Ur(e,t){let n=ae(e,t),i=n.endsWith("=="),o=!i&&n.endsWith("="),s=n.at(i?-3:o?-2:-1)??"",c=Ai(s);return (n.length%4!==0||!br.test(n)||i&&(c&15)!==0||o&&(c&3)!==0)&&f(),n}function zr(e){return Ai(e,true)}function Ai(e,t=false){return (t?"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_":"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/").indexOf(e)}function Nr(e){let t=P(e,"name");return t===void 0?{}:(t!==null&&!ft(t)&&f(),{name:t})}function Lr(e){let t=P(e,"transports");if(t==null||t==="")return t===void 0?{}:{transports:t};let n=t.split(",");return (n.length>ht||n.some(i=>!oi.has(i))||new Set(n).size!==n.length)&&f(),{transports:t}}function Mr(e){let t=P(e,"aaguid");return t==null?t===void 0?{}:{aaguid:null}:(Sr.test(t)||f(),{aaguid:t})}function At(e,t){let n=S(e);return t.has(n)||f(),n}function C(e,t){return t===void 0?{}:{[e]:t}}function _e(e){new Set(e).size!==e.length&&f();}function Fr(e){new Set(e).size!==e.length&&f();}function $r(e,t){if(!t)return e;let n=t.catch(()=>{});return n.then(()=>{n=null;}),{async request(i,o){return n&&await n,e.request(i,o)}}}var ki=new Map;function Wr(e,t,n){let i=ki.get(n);if(!i){let o=new URLSearchParams(window.location.hash.slice(1)).get("authowl_code");if(!o)return;i=Promise.resolve().then(()=>(Ne(),ze)).then(s=>s.completeCrossSiteSignIn(e,t,o)),ki.set(n,i);}return i}function Ti(e){return !fe()||e.idToken||e.disableRedirect?"legacy":"first-party"}function Ei(e,t=()=>{},n=Yr){let i=pe(e),o=e.session.tokens,s=fe()?Wr(i,o,e.decoded.projectId):void 0,c=$r(i,s),u=nn({http:c,probe:pe({...e,fetch:e.session.probe}),tokens:o,channelName:`authowl:${e.decoded.projectId}`}),a=n(c,u.notifyMutation),m=()=>{u.notifyMutation(),t();},{post:r,mutation:d}=ie(c,m),p=e.decoded.env==="test",O=l=>{o.beginSession({remember:l?.rememberMe!==false});};return {sessionStore:u.store,getSession:u.getSession,account:cn(c,m),organization:Pn(c,m,()=>u.store.getSnapshot().data?.session.membership??null),signIn:{email:(l,g)=>(O(l),d(r("/sign-in/email",l,g,dt),A=>!("twoFactorRedirect"in A))),username:(l,g)=>(O(l),d(r("/sign-in/username",l,g,dt),A=>!("twoFactorRedirect"in A))),social:async(l,g)=>{if(O(),Ti(l)==="first-party"){let{beginCrossSiteSignIn:b}=await Promise.resolve().then(()=>(Ne(),ze)),R=await b(e,{kind:"social",provider:l.provider,callbackURL:l.callbackURL,errorCallbackURL:l.errorCallbackURL,newUserCallbackURL:l.newUserCallbackURL,scopes:l.scopes,loginHint:l.loginHint,requestSignUp:l.requestSignUp});if(R)return window.location.assign(R),{data:{redirect:true,url:R},error:null}}let A=await d(r("/sign-in/social",l,g,b=>Dn(b,p)),b=>"user"in b);return A.error!==null||A.data===null||"url"in A.data&&A.data.redirect&&!l.disableRedirect&&typeof window<"u"&&window.location.assign(A.data.url),A},sso:async(l,g)=>{if(Ti(l)==="first-party"){let{beginCrossSiteSignIn:b}=await Promise.resolve().then(()=>(Ne(),ze)),R=await b(e,{kind:"sso",email:l.email,providerId:l.providerId,domain:l.domain,organizationSlug:l.organizationSlug,callbackURL:l.callbackURL,errorCallbackURL:l.errorCallbackURL,newUserCallbackURL:l.newUserCallbackURL});if(R)return window.location.assign(R),{data:{url:R,redirect:true},error:null}}let A=await r("/sign-in/sso",l,g,b=>_n(b,p));return A.error!==null||A.data===null||typeof window<"u"&&window.location.assign(A.data.url),A},magicLink:(l,g)=>r("/sign-in/magic-link",l,g,Un),emailOtp:(l,g)=>(O(),d(r("/sign-in/email-otp",l,g,xn))),passkey:(l,g)=>(O(),a.signIn(l,g))},signUp:{email:(l,g)=>(O(),d(r("/sign-up/email",l,g,vn),A=>A.sessionCreated))},emailOtp:{sendVerificationOtp:(l,g)=>r("/email-otp/send-verification-otp",l,g,zn),verifyEmail:(l,g)=>(O(),d(r("/email-otp/verify-email",l,g,Hn)))},phoneOtp:{prepare:l=>r("/phone-otp/challenge",{},l,Ln),start:(l,g)=>r("/phone-otp/start",{...l,idempotencyKey:l.idempotencyKey??ot()},g,Nn),verify:(l,g)=>(O(),d(r("/phone-otp/verify",l,g,Mn)))},requestPasswordReset:(l,g)=>r("/request-password-reset",l,g,pt),resetPassword:(l,g)=>r("/reset-password",l,g,pt),sendVerificationEmail:(l,g)=>r("/send-verification-email",l,g,Fn),passkey:{addPasskey:(l,g)=>a.add(l,g),listUserPasskeys:()=>c.request("/passkey/list-user-passkeys",{decode:li}),updatePasskey:async(l,g)=>{let A=xe(l.name);if(!A.valid||A.value===void 0)return ve();let b=A.value;return r("/passkey/update-passkey",{...l,name:b},g,R=>di(R,l.id,b))},deletePasskey:(l,g)=>r("/passkey/delete-passkey",l,g,pi)},twoFactor:{enable:(l,g)=>r("/two-factor/enable",l,g,Kn),disable:(l,g)=>d(r("/two-factor/disable",l,g,qn),A=>A.status),verifyTotp:(l,g)=>d(r("/two-factor/verify-totp",l,g,Pe)),verifyBackupCode:(l,g)=>d(r("/two-factor/verify-backup-code",l,g,Pe)),sendOtp:(l={},g)=>r("/two-factor/send-otp",l,g,Bn),verifyOtp:(l,g)=>d(r("/two-factor/verify-otp",l,g,Pe)),generateBackupCodes:(l,g)=>r("/two-factor/generate-backup-codes",l,g,jn)},signOut:l=>d(c.request("/sign-out",{method:"POST",body:{},fetchOptions:l,decode:Vn}).then(g=>(o.endSession(),g)),g=>g.success)}}function Yr(){return {signIn:()=>Ii(),add:()=>Ii()}}function Ii(){return Promise.resolve({data:null,error:{status:400,statusText:"BAD_REQUEST",code:"PASSKEY_BROWSER_REQUIRED",message:"This passkey ceremony requires a browser with WebAuthn."}})}function _i(e,t,n){let i=new Map;return {async signIn(o={},s){let c=await e.request("/passkey/generate-authenticate-options");if(!c.data)return xi(c.error);let u;try{u=si(c.data);}catch{return Pi()}let a;try{a=await n.authenticate({optionsJSON:u,useBrowserAutofill:o.autoFill});}catch(O){return vi(n,O,"AUTH_CANCELLED","Passkey authentication was cancelled.")}if(!Xr(a))return Ci();let{clientExtensionResults:m,...r}=a,d=i.get(a.id);if(d)return d;let p=(async()=>{let O=await e.request("/passkey/verify-authentication",{method:"POST",body:{response:r},fetchOptions:s,decode:ci});return O.data&&t(),O})();i.set(a.id,p);try{return await p}finally{i.get(a.id)===p&&i.delete(a.id);}},async add(o={},s){let c=xe(o.name);if(!c.valid)return ve();let u=await e.request("/passkey/generate-register-options",{query:{name:c.value,authenticatorAttachment:o.authenticatorAttachment}});if(!u.data)return xi(u.error);let a;try{a=ai(u.data);}catch{return Pi()}let m;try{m=await n.register({optionsJSON:a});}catch(O){return vi(n,O,"REGISTRATION_CANCELLED","Passkey registration was cancelled.")}if(!Qr(m))return Ci();let{clientExtensionResults:r,...d}=m,p=await e.request("/passkey/verify-registration",{method:"POST",body:{response:d,name:c.value},fetchOptions:s,decode:O=>ui(O,m.id,c.value)});return p.data&&t(),p}}}function Pi(){return {data:null,error:{status:502,statusText:"BAD_GATEWAY",code:"INVALID_WEBAUTHN_OPTIONS",message:"The server returned invalid WebAuthn options."}}}function Ci(){return {data:null,error:{status:400,statusText:"BAD_REQUEST",code:"INVALID_WEBAUTHN_RESPONSE",message:"The platform returned an invalid passkey response."}}}function Ui(e){if(!e||typeof e!="object")return false;let t=e;return typeof t.id=="string"&&t.id.length>0&&typeof t.rawId=="string"&&t.rawId.length>0&&t.type==="public-key"&&!!t.response&&typeof t.response=="object"}function Xr(e){if(!Ui(e))return false;let t=e.response;return typeof t.clientDataJSON=="string"&&typeof t.authenticatorData=="string"&&typeof t.signature=="string"&&(t.userHandle===void 0||typeof t.userHandle=="string")}function Qr(e){if(!Ui(e))return false;let t=e.response;return typeof t.clientDataJSON=="string"&&typeof t.attestationObject=="string"}function xi(e){return {data:null,error:e??{status:502,statusText:"BAD_GATEWAY",code:"INVALID_WEBAUTHN_OPTIONS",message:"The server returned no WebAuthn options."}}}function vi(e,t,n,i){let o=es(t,"page does not have focus"),s=e.errorCode?.(t),c=s!==void 0?s==="ERROR_CEREMONY_ABORTED":Di(t)==="AbortError",u=n!=="AUTH_CANCELLED",a=Zr(s,Di(t),u);return {data:null,error:{status:400,statusText:"BAD_REQUEST",code:o?"PASSKEY_PAGE_NOT_FOCUSED":c?n:s??"PASSKEY_BROWSER_ERROR",message:o?"Keep this page focused while completing the passkey prompt.":c?i:a}}}function Zr(e,t,n){switch(e){case "ERROR_INVALID_DOMAIN":case "ERROR_INVALID_RP_ID":return "Passkeys are not set up for this site\u2019s domain.";case "ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED":return "This device already has a passkey for this account.";case "ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEY_ALGS":case "ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT":case "ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT":return "This device cannot create a passkey for this site.";}return t==="NotAllowedError"?n?"No passkey was created. The prompt was dismissed or timed out.":"No passkey was used. This device may not have one saved for this site yet, or the prompt was dismissed.":t==="SecurityError"?"Passkeys are not set up for this site\u2019s domain.":n?"Passkey registration did not complete.":"Passkey sign-in did not complete."}function Di(e){return e&&typeof e=="object"&&"name"in e&&typeof e.name=="string"?e.name:void 0}function es(e,t){let n=t.toLowerCase(),i=new Set,o=e;for(;o&&typeof o=="object"&&!i.has(o);){if(i.add(o),"message"in o&&typeof o.message=="string"&&o.message.toLowerCase().includes(n))return true;o="cause"in o?o.cause:void 0;}return false}function H(e){let t=new Uint8Array(e),n="";for(let o of t)n+=String.fromCharCode(o);return btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function te(e){let t=e.replace(/-/g,"+").replace(/_/g,"/"),n=(4-t.length%4)%4,i=t.padEnd(t.length+n,"="),o=atob(i),s=new ArrayBuffer(o.length),c=new Uint8Array(s);for(let u=0;u<o.length;u++)c[u]=o.charCodeAt(u);return s}function ne(){return ts.stubThis(globalThis?.PublicKeyCredential!==void 0&&typeof globalThis.PublicKeyCredential=="function")}var ts={stubThis:e=>e};function Le(e){let{id:t}=e;return {...e,id:te(t),transports:e.transports}}function Me(e){return e==="localhost"||/^((xn--[a-z0-9-]+|[a-z0-9]+(-[a-z0-9]+)*)\.)+([a-z]{2,}|xn--[a-z0-9-]+)$/i.test(e)}var I=class extends Error{constructor({message:t,code:n,cause:i,name:o}){super(t,{cause:i}),Object.defineProperty(this,"code",{enumerable:true,configurable:true,writable:true,value:void 0}),this.name=o??i.name,this.code=n;}};function zi({error:e,options:t}){let{publicKey:n}=t;if(!n)throw Error("options was missing required publicKey property");if(e.name==="AbortError"){if(t.signal instanceof AbortSignal)return new I({message:"Registration ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:e})}else if(e.name==="ConstraintError"){if(n.authenticatorSelection?.requireResidentKey===true)return new I({message:"Discoverable credentials were required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT",cause:e});if(t.mediation==="conditional"&&n.authenticatorSelection?.userVerification==="required")return new I({message:"User verification was required during automatic registration but it could not be performed",code:"ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE",cause:e});if(n.authenticatorSelection?.userVerification==="required")return new I({message:"User verification was required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT",cause:e})}else {if(e.name==="InvalidStateError")return new I({message:"The authenticator was previously registered",code:"ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED",cause:e});if(e.name==="NotAllowedError")return new I({message:e.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e});if(e.name==="NotSupportedError")return n.pubKeyCredParams.filter(o=>o.type==="public-key").length===0?new I({message:'No entry in pubKeyCredParams was of type "public-key"',code:"ERROR_MALFORMED_PUBKEYCREDPARAMS",cause:e}):new I({message:"No available authenticator supported any of the specified pubKeyCredParams algorithms",code:"ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG",cause:e});if(e.name==="SecurityError"){let i=globalThis.location.hostname;if(Me(i)){if(n.rp.id!==i)return new I({message:`The RP ID "${n.rp.id}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:e})}else return new I({message:`${globalThis.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e})}else if(e.name==="TypeError"){if(n.user.id.byteLength<1||n.user.id.byteLength>64)return new I({message:"User ID was not between 1 and 64 characters",code:"ERROR_INVALID_USER_ID_LENGTH",cause:e})}else if(e.name==="UnknownError")return new I({message:"The authenticator was unable to process the specified options, or could not create a new credential",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:e})}return e}var wt=class{constructor(){Object.defineProperty(this,"controller",{enumerable:true,configurable:true,writable:true,value:void 0});}createNewAbortSignal(){if(this.controller){let n=new Error("Cancelling existing WebAuthn API call for new one");n.name="AbortError",this.controller.abort(n);}let t=new AbortController;return this.controller=t,t.signal}cancelCeremony(){if(this.controller){let t=new Error("Manually cancelling existing WebAuthn API call");t.name="AbortError",this.controller.abort(t),this.controller=void 0;}}},Fe=new wt;var ns=["cross-platform","platform"];function He(e){if(e&&!(ns.indexOf(e)<0))return e}async function Ni(e){!e.optionsJSON&&e.challenge&&(console.warn("startRegistration() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information."),e={optionsJSON:e});let{optionsJSON:t,useAutoRegister:n=false}=e;if(!ne())throw new Error("WebAuthn is not supported in this browser");let i={...t,challenge:te(t.challenge),user:{...t.user,id:te(t.user.id)},excludeCredentials:t.excludeCredentials?.map(Le)},o={};n&&(o.mediation="conditional"),o.publicKey=i,o.signal=Fe.createNewAbortSignal();let s;try{s=await navigator.credentials.create(o);}catch(l){throw zi({error:l,options:o})}if(!s)throw new Error("Registration was not completed");let{id:c,rawId:u,response:a,type:m}=s,r;typeof a.getTransports=="function"&&(r=a.getTransports());let d;if(typeof a.getPublicKeyAlgorithm=="function")try{d=a.getPublicKeyAlgorithm();}catch(l){Rt("getPublicKeyAlgorithm()",l);}let p;if(typeof a.getPublicKey=="function")try{let l=a.getPublicKey();l!==null&&(p=H(l));}catch(l){Rt("getPublicKey()",l);}let O;if(typeof a.getAuthenticatorData=="function")try{O=H(a.getAuthenticatorData());}catch(l){Rt("getAuthenticatorData()",l);}return {id:c,rawId:H(u),response:{attestationObject:H(a.attestationObject),clientDataJSON:H(a.clientDataJSON),transports:r,publicKeyAlgorithm:d,publicKey:p,authenticatorData:O},type:m,clientExtensionResults:s.getClientExtensionResults(),authenticatorAttachment:He(s.authenticatorAttachment)}}function Rt(e,t){console.warn(`The browser extension that intercepted this WebAuthn API call incorrectly implemented ${e}. You should report this error to them.
|
|
2
|
+
`,t);}function Li(){if(!ne())return St.stubThis(new Promise(t=>t(false)));let e=globalThis.PublicKeyCredential;return e?.isConditionalMediationAvailable===void 0?St.stubThis(new Promise(t=>t(false))):St.stubThis(e.isConditionalMediationAvailable())}var St={stubThis:e=>e};function Mi({error:e,options:t}){let{publicKey:n}=t;if(!n)throw Error("options was missing required publicKey property");if(e.name==="AbortError"){if(t.signal instanceof AbortSignal)return new I({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:e})}else {if(e.name==="NotAllowedError")return new I({message:e.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e});if(e.name==="SecurityError"){let i=globalThis.location.hostname;if(Me(i)){if(n.rpId!==i)return new I({message:`The RP ID "${n.rpId}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:e})}else return new I({message:`${globalThis.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e})}else if(e.name==="UnknownError")return new I({message:"The authenticator was unable to process the specified options, or could not create a new assertion signature",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:e})}return e}async function Fi(e){!e.optionsJSON&&e.challenge&&(console.warn("startAuthentication() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information."),e={optionsJSON:e});let{optionsJSON:t,useBrowserAutofill:n=false,verifyBrowserAutofillInput:i=true}=e;if(!ne())throw new Error("WebAuthn is not supported in this browser");let o;t.allowCredentials?.length!==0&&(o=t.allowCredentials?.map(Le));let s={...t,challenge:te(t.challenge),allowCredentials:o},c={};if(n){if(!await Li())throw Error("Browser does not support WebAuthn autofill");if(document.querySelectorAll("input[autocomplete$='webauthn']").length<1&&i)throw Error('No <input> with "webauthn" as the only or last value in its `autocomplete` attribute was detected');c.mediation="conditional",s.allowCredentials=[];}c.publicKey=s,c.signal=Fe.createNewAbortSignal();let u;try{u=await navigator.credentials.get(c);}catch(O){throw Mi({error:O,options:c})}if(!u)throw new Error("Authentication was not completed");let{id:a,rawId:m,response:r,type:d}=u,p;return r.userHandle&&(p=H(r.userHandle)),{id:a,rawId:H(m),response:{authenticatorData:H(r.authenticatorData),clientDataJSON:H(r.clientDataJSON),signature:H(r.signature),userHandle:p},type:d,clientExtensionResults:u.getClientExtensionResults(),authenticatorAttachment:He(u.authenticatorAttachment)}}var Hi={authenticate:e=>Fi(e),register:e=>Ni(e),errorCode:e=>e instanceof I?e.code:void 0};function Ki(e){return `${new URL(e.apiUrl).origin}/api/projects/${e.decoded.projectId}/consent`}async function kt(e){let t=await j(e,Ki(e),{init:{method:"GET",credentials:"include"},maxResponseBytes:65536,decode:is});return t.response.status===401?{required:false}:Q(t,"consent status")}async function Tt(e,t){if(!Number.isSafeInteger(t)||t<1)throw new TypeError("Consent version must be a positive integer.");return Q(await j(e,Ki(e),{init:{method:"POST",headers:{"content-type":"application/json"},credentials:"include",body:JSON.stringify({version:t})},maxResponseBytes:64*1024,decode:os}),"consent accept")}function is(e){let t=h(e),n=k(t.required),i=rs(t.needsConsent),o=qi(t.version),s=Vi(t.termsUrl),c=Vi(t.privacyUrl);return {required:n,...i===void 0?{}:{needsConsent:i},...o===void 0?{}:{version:o},...s===void 0?{}:{termsUrl:s},...c===void 0?{}:{privacyUrl:c}}}function os(e){let t=h(e),n=qi(t.version);return {ok:k(t.ok),...n===void 0?{}:{version:n}}}function rs(e){if(e===void 0||typeof e=="boolean")return e;throw new TypeError("Invalid consent response.")}function qi(e){if(e===void 0||Number.isSafeInteger(e)&&e>=1)return e;throw new TypeError("Invalid consent response.")}function Vi(e){if(e===void 0||typeof e=="string"&&e.length<=4096)return e;throw new TypeError("Invalid consent response.")}var ss=30;function as(e){return typeof e?.exp=="number"?e.exp:null}function cs(e){let t=e.split(".")[1];if(!t)return null;try{let n=t.replace(/-/g,"+").replace(/_/g,"/"),i=JSON.parse(atob(n));return typeof i=="object"&&i!==null?i:null}catch{return null}}function It(e){let t=new Map;async function n(s={}){let c=s.template===void 0?null:s.template.trim().toLowerCase();if(c==="")throw new TypeError("Template missing");let u=c??"",a=t.get(u);a||(a={activeKey:null,cachedByKey:new Map,inflight:null,sequence:0},t.set(u,a));let m=s.forceRefresh===true;if(!m){let l=a.activeKey?a.cachedByKey.get(a.activeKey):null;if(l&&l.exp-Date.now()/1e3>ss)return l.token;if(a.inflight)return a.inflight}let r=++a.sequence,d=()=>t.get(u)===a&&a.sequence===r,p=(async()=>{let l=c?`${e.projectBaseURL}/token/${encodeURIComponent(c)}`:`${e.projectBaseURL}/token`,g=await j(e,l,{init:{method:"GET",credentials:"include"},maxResponseBytes:64*1024,decode:L=>us(L,c!==null)});if(g.response.status===401)return d()&&i(),null;let A=Q(g,"token"),b=A.policyVersion,R=A.token,z=cs(R),K=as(z);if(d())if(K!==null){let L=typeof z?.sub=="string"?z.sub:null,Y=typeof z?.org_id=="string"?z.org_id:null;if(!c||L){let y=JSON.stringify([e.projectBaseURL,L,Y,c,b]);a.cachedByKey.clear(),a.cachedByKey.set(y,{token:R,exp:K}),a.activeKey=y;}else o(a);}else o(a);return R})();if(m)return p;let O=p.finally(()=>{a.inflight===O&&(a.inflight=null);});return a.inflight=O,O}function i(){t.clear();}function o(s){s.cachedByKey.clear(),s.activeKey=null;}return {getToken:n,clear:i}}function us(e,t){let n=h(e),i=S(n.token);if(i.length===0||i.length>32*1024)throw new TypeError("Invalid token response.");if(!t)return {token:i,policyVersion:0};let o=h(n.template);if(!Number.isSafeInteger(o.policyVersion)||o.policyVersion<1)throw new TypeError("Invalid token response.");return {token:i,policyVersion:o.policyVersion}}function ls(e){let t=It(e),n=Ei(e,t.clear,(c,u)=>_i(c,u,Hi)),i=pe(e,`${new URL(e.apiUrl).origin}/api/projects/${e.decoded.projectId}`),o=c=>(...u)=>(t.clear(),c(...u)),s={getConsentStatus:()=>kt(e),acceptConsent:c=>Tt(e,c),getToken:t.getToken,waitlist:{join:(c,u)=>i.request("/waitlist",{method:"POST",body:c,fetchOptions:u,credentials:"omit"})},account:{...n.account,updateUnsafeMetadata:o(n.account.updateUnsafeMetadata),updateProfile:o(n.account.updateProfile),changeEmail:o(n.account.changeEmail),changePassword:o(n.account.changePassword),revokeSession:o(n.account.revokeSession),delete:o(n.account.delete)},signIn:{email:o(n.signIn.email),username:o(n.signIn.username),social:o(n.signIn.social),sso:n.signIn.sso,magicLink:n.signIn.magicLink,emailOtp:o(n.signIn.emailOtp),passkey:o(n.signIn.passkey)},signUp:{email:o(n.signUp.email)},emailOtp:{...n.emailOtp,verifyEmail:o(n.emailOtp.verifyEmail)},twoFactor:{enable:n.twoFactor.enable,disable:o(n.twoFactor.disable),verifyTotp:o(n.twoFactor.verifyTotp),verifyBackupCode:o(n.twoFactor.verifyBackupCode),sendOtp:n.twoFactor.sendOtp,verifyOtp:o(n.twoFactor.verifyOtp),generateBackupCodes:n.twoFactor.generateBackupCodes},phoneOtp:{prepare:n.phoneOtp.prepare,start:n.phoneOtp.start,verify:o(n.phoneOtp.verify)},signOut:o(n.signOut)};return {...n,...s}}async function ds(e){if(typeof window>"u")throw new Error("Akedly Shield challenges must be solved in a browser.");let t=await ps(),n=e.challengeRequired?await t.solvePow(e.challenge,e.difficulty):null,i=e.turnstile.required?await t.getTurnstileToken(fs(e.turnstile.siteKey)):void 0;return {connectionId:e.connectionId,...n?{challengeToken:e.challengeToken,nonce:n.nonce}:{},...i?{turnstileToken:i}:{}}}async function ps(){return import('@akedly/shield')}function fs(e){if(!e)throw new Error("Akedly Shield did not provide a Turnstile site key.");return e}async function gs(e){let n=`${new URL(e.apiUrl).origin}/api/projects/${e.decoded.projectId}/public-config`;return Q(await j(e,n,{init:{method:"GET",credentials:"omit"},maxResponseBytes:256*1024,decode:i=>ms(i,e)}),"public-config")}function ms(e,t){let n=J(e),i=n.environmentId,o=n.environmentType,s=`${new URL(t.apiUrl).origin}/api/projects/${t.decoded.projectId}/auth`;if(typeof n.applicationId!="string"||!hs(n.applicationId)||i!==t.decoded.projectId||o!=="development"&&o!=="production"||n.authBaseUrl!==s)throw N();let c=D(n.branding),u=D(n.legal);if(!Et(n.enabledMethods,64)||!Et(n.socialProviders,64)||!ji(c,["appName","logoUrl","primaryColor"])||c.showAppName!==void 0&&typeof c.showAppName!="boolean"||c.alignment!==void 0&&c.alignment!=="left"&&c.alignment!=="center"&&c.alignment!=="right"||c.theme!==void 0&&c.theme!=="light"&&c.theme!=="dark"&&c.theme!=="system"||!ji(u,["termsUrl","privacyUrl"])||!Number.isSafeInteger(u.version)||u.version<0||typeof u.required!="boolean")throw N();if(n.socialProviderClientIds!==void 0){let a=D(n.socialProviderClientIds);if(Object.keys(a).length>64||Object.values(a).some(m=>typeof m!="string"||m.length>2048))throw N()}if(!W(n,["requireEmailVerification","twoFactor","mfaRequired","accountDeletion","organizations","sso","badge"])||!Bi(n.turnstileSiteKey)||!Bi(n.authTurnstileSiteKey)||typeof n.locale!="string"||n.locale.length===0||n.locale.length>64||!Number.isSafeInteger(n.configVersion)||n.configVersion<0)throw N();if(n.jwtIssuer!==null){let a=D(n.jwtIssuer);if(a.issuer!==s||a.jwksUrl!==`${s}/jwks`||a.aud!==t.decoded.projectId)throw N()}if(n.signUp!==void 0){let a=D(n.signUp).mode;if(typeof a!="string"||!["open","restricted","allowlist","waitlist"].includes(a))throw N()}if(n.authentication!==void 0&&ys(n.authentication),n.emailVerification!==void 0){let a=D(n.emailVerification);if(!W(a,["required"])||a.method!=="link"&&a.method!=="code")throw N()}if(n.userModel!==void 0&&!W(D(n.userModel),["requireEmail","firstLastName","emailChange","accountDeletion"]))throw N();if(n.mfa!==void 0){let a=D(n.mfa);if(!W(a,["totp","required","backupCodes"])||(a.required===true||a.backupCodes===true)&&a.totp!==true)throw N()}if(n.captcha===void 0||n.captcha===null)n.captcha=typeof n.authTurnstileSiteKey=="string"&&n.authTurnstileSiteKey.length>0?{provider:"turnstile",siteKey:n.authTurnstileSiteKey}:null;else {let a=D(n.captcha);if(typeof a.provider!="string"||a.provider.length===0||a.provider.length>64||typeof a.siteKey!="string"||a.siteKey.length===0||a.siteKey.length>512)throw N();n.captcha={provider:a.provider,siteKey:a.siteKey};}return n}function hs(e){return /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e)}function N(){return new TypeError("public-config returned an invalid response")}function D(e){if(!e||typeof e!="object"||Array.isArray(e))throw N();return e}function Bi(e){return e===null||typeof e=="string"&&e.length<=4096}function ys(e){let t=D(e),n=D(t.email),i=D(t.password),o=i.minLength!==void 0||i.maxLength!==void 0;if(!W(n,["signUp"])||!Et(n.signIn,3)||n.signIn.some(s=>s!=="password"&&s!=="magic_link"&&s!=="email_otp")||!W(D(t.phone),["signUp","signIn"])||!W(i,["signUp","add"])||o&&(!Number.isSafeInteger(i.minLength)||!Number.isSafeInteger(i.maxLength)||i.minLength<1||i.maxLength>4096||i.minLength>i.maxLength)||!W(D(t.passkey),["signIn","add"])||!As(D(t.passkey).relyingPartyId)||!W(D(t.username),["collectOnSignUp","signIn"]))throw N()}function As(e){return e==null||typeof e=="string"}function W(e,t){return t.every(n=>typeof e[n]=="boolean")}function ji(e,t){return t.every(n=>e[n]===void 0||typeof e[n]=="string"&&e[n].length<=4096)}function Et(e,t){return Array.isArray(e)&&e.length<=t&&e.every(n=>typeof n=="string"&&n.length<=128)&&new Set(e).size===e.length}var be=class extends Error{constructor(n,i){super(n);this.cause=i;this.name="AuthOwlError";}cause},Pt=class extends be{constructor(n,i){super(`Rate limited. Retry after ${n}s.`,i);this.retryAfterSeconds=n;this.name="RateLimitedError";}retryAfterSeconds},Ct=class extends be{constructor(t="invalid publishable key",n){super(t,n),this.name="InvalidKeyError";}};var Ji=["en","ar"];function Os(e){return e==="ar"?"rtl":"ltr"}function bs(e){return typeof e=="string"&&Ji.includes(e)}
|
|
3
|
+
exports.AUTH_CHALLENGE_HEADER=Zt;exports.AUTH_LOCALE_HEADER=en;exports.AuthOwlError=be;exports.AuthOwlHttpError=ke;exports.INVITATION_CLAIM_MAX_AGE_MS=jt;exports.INVITATION_QUERY_PARAM=Ge;exports.InvalidKeyError=Ct;exports.LOCALES=Ji;exports.RateLimitedError=Pt;exports.SESSION_TOKEN_HEADER=Be;exports.SESSION_TRANSPORT_BEARER=Je;exports.SESSION_TRANSPORT_HEADER=je;exports.TransportError=v;exports.acceptConsent=Tt;exports.activeLocale=Ye;exports.captureInvitationClaim=fo;exports.clearInvitationClaim=le;exports.createAuthOwlClient=ls;exports.createIdempotencyKey=ot;exports.createMembershipHas=Xo;exports.createTokenClient=It;exports.decodePublishableKey=Ve;exports.directionFor=Os;exports.getConsentStatus=kt;exports.getPublicConfig=gs;exports.isLocale=bs;exports.membershipHas=Ee;exports.membershipHasPermission=Ie;exports.membershipHasRole=ln;exports.membershipHasTeam=un;exports.readInvitationClaim=ue;exports.readLastUsedSignInMethod=mo;exports.recordLastUsedSignInMethod=ho;exports.rememberPendingSignInMethod=yo;exports.resolveAuthTarget=qt;exports.resolveConfig=po;exports.resolveProjectCapabilities=Oo;exports.sessionChallengeIsEphemeral=to;exports.sessionCookieName=Xi;exports.setActiveLocale=vo;exports.settlePendingSignInMethod=Ao;exports.solvePhoneOtpChallenge=ds;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { A as AuthConfig, D as DecodedPublishableKey, H as HasParams, O as OrganizationMembership, R as ResolvedAuthConfig, a as ResolvedAuthTarget, T as TransportError, b as TransportErrorKind, c as createMembershipHas, d as decodePublishableKey, m as membershipHas, e as membershipHasPermission, f as membershipHasRole, g as membershipHasTeam, r as resolveAuthTarget, h as resolveConfig, s as sessionCookieName } from './organization-membership-B05mzhtA.cjs';
|
|
2
|
-
import { P as PhoneOtpChallengeData, A as AkedlyShieldStartProof } from './client-
|
|
3
|
-
export { a as AUTH_CHALLENGE_HEADER, b as
|
|
2
|
+
import { P as PhoneOtpChallengeData, A as AkedlyShieldStartProof } from './client-N1yD-Tvm.cjs';
|
|
3
|
+
export { a as AUTH_CHALLENGE_HEADER, b as AUTH_LOCALE_HEADER, c as AcceptOrganizationInvitationData, d as AccountClient, e as AccountSession, f as AccountStatusData, g as ActionFetchOptions, h as AddOrganizationTeamMemberOptions, i as AddPasskeyOptions, j as AuthActionResult, k as AuthClientError, l as AuthErrorContext, m as AuthOwlClient, n as AuthOwlErrorCode, o as AuthPasskey, p as AuthRequestContext, q as AuthResponseContext, r as AuthSession, s as AuthUser, C as ChangeEmailOptions, t as ChangePasswordData, u as ChangePasswordOptions, v as ConsentAcceptResult, w as ConsentStatus, x as CreateOrganizationOptions, y as CreateOrganizationTeamOptions, D as DeleteAccountData, z as DeleteAccountOptions, B as DeleteOrganizationOptions, E as DeletePasskeyData, F as DeletePasskeyOptions, G as DisableTwoFactorOptions, H as EmailAuthData, I as EmailOtpAuthData, J as EmailOtpSignInOptions, K as EmailOtpType, L as EmailSignInOptions, M as EmailSignUpData, N as EmailSignUpOptions, O as EnableTwoFactorOptions, Q as EnvironmentType, R as GenerateBackupCodesOptions, S as GetOrganizationInvitationOptions, T as GetOrganizationOptions, U as GetToken, V as GetTokenOptions, W as INVITATION_CLAIM_MAX_AGE_MS, X as INVITATION_QUERY_PARAM, Y as InvitationClaim, Z as InvitationRecipientHint, _ as InviteOrganizationMemberOptions, $ as JsonObject, a0 as JsonPrimitive, a1 as JsonValue, a2 as LeaveOrganizationOptions, a3 as LinkSocialData, a4 as LinkSocialOptions, a5 as ListOrganizationInvitationsOptions, a6 as ListOrganizationMembersOptions, a7 as ListOrganizationRolesOptions, a8 as ListOrganizationTeamMembersOptions, a9 as ListOrganizationTeamsOptions, aa as MagicLinkData, ab as MagicLinkSignInOptions, ac as Organization, ad as OrganizationClient, ae as OrganizationDetails, af as OrganizationFilterOperator, ag as OrganizationInvitation, ah as OrganizationInvitationActionOptions, ai as OrganizationInvitationDetails, aj as OrganizationInvitationStatus, ak as OrganizationMember, al as OrganizationMemberUser, am as OrganizationMemberWithUser, an as OrganizationMembersData, ao as OrganizationRoleSummary, ap as OrganizationSelector, aq as OrganizationTeam, ar as OrganizationTeamMember, as as OrganizationUserInvitation, at as PasskeyAuthData, au as PasskeySignInOptions, av as PasswordResetData, aw as PhoneAuthUser, ax as PhoneOtpStartData, ay as PhoneOtpStartOptions, az as PhoneOtpVerifyData, aA as PhoneOtpVerifyOptions, aB as ProjectCapabilities, aC as PublicConfig, aD as RejectOrganizationInvitationData, aE as RemoveOrganizationMemberData, aF as RemoveOrganizationMemberOptions, aG as RemoveOrganizationTeamData, aH as RemoveOrganizationTeamMemberData, aI as RemoveOrganizationTeamMemberOptions, aJ as RemoveOrganizationTeamOptions, aK as RequestPasswordResetOptions, aL as ResetPasswordOptions, aM as RevokeSessionOptions, aN as SendOtpData, aO as SendTwoFactorOtpData, aP as SendTwoFactorOtpOptions, aQ as SendVerificationOtpOptions, aR as SessionState, aS as SessionStore, aT as SetActiveOrganizationOptions, aU as SetActiveTeamOptions, aV as SignOutData, aW as SocialAccount, aX as SocialAuthData, aY as SocialIdTokenOptions, aZ as SocialSignInOptions, a_ as TokenClient, a$ as TwoFactorBackupCodesData, b0 as TwoFactorEnableData, b1 as TwoFactorRedirectData, b2 as TwoFactorStatusData, b3 as TwoFactorVerifyData, b4 as UnlinkSocialOptions, b5 as UpdateOrganizationMemberRoleOptions, b6 as UpdateOrganizationOptions, b7 as UpdateOrganizationTeamOptions, b8 as UpdatePasskeyData, b9 as UpdatePasskeyOptions, ba as UpdateProfileOptions, bb as UpdateUnsafeMetadataOptions, bc as UserMetadata, bd as UsernameSignInOptions, be as VerifyBackupCodeOptions, bf as VerifyEmailOtpData, bg as VerifyEmailOtpOptions, bh as VerifyTotpOptions, bi as VerifyTwoFactorOtpOptions, bj as WaitlistJoinData, bk as WaitlistJoinOptions, bl as acceptConsent, bm as captureInvitationClaim, bn as clearInvitationClaim, bo as createAuthOwlClient, bp as createTokenClient, bq as getConsentStatus, br as getPublicConfig, bs as readInvitationClaim, bt as resolveProjectCapabilities } from './client-N1yD-Tvm.cjs';
|
|
4
4
|
export { S as SESSION_TOKEN_HEADER, a as SESSION_TRANSPORT_BEARER, b as SESSION_TRANSPORT_HEADER } from './session-transport-contract-HDPYRum8.cjs';
|
|
5
5
|
export { L as LOCALES, a as Locale, d as directionFor, i as isLocale } from './index-hIdXOzRp.cjs';
|
|
6
6
|
|
|
@@ -10,6 +10,80 @@ export { L as LOCALES, a as Locale, d as directionFor, i as isLocale } from './i
|
|
|
10
10
|
*/
|
|
11
11
|
declare function sessionChallengeIsEphemeral(headers: Headers): boolean;
|
|
12
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Which sign-in method last worked IN THIS BROWSER.
|
|
15
|
+
*
|
|
16
|
+
* A returning user usually has one habit, and a form that shows five equal
|
|
17
|
+
* options makes them re-derive it every visit. Remembering it is a small thing
|
|
18
|
+
* that removes a real hesitation.
|
|
19
|
+
*
|
|
20
|
+
* WHY THIS IS NOT THE `last-login-method` PLUGIN. That plugin sets a
|
|
21
|
+
* non-httpOnly cookie and reads it from `document.cookie`. In AuthOwl's SPA
|
|
22
|
+
* architecture that cookie lands on the ENGINE's domain, invisible to the
|
|
23
|
+
* tenant's page; in the server architecture it lands on the tenant server's
|
|
24
|
+
* fetch, which the session bridge does not forward. Unreadable in both. The SDK
|
|
25
|
+
* does not need it told anyway - it executed the call, so it already knows.
|
|
26
|
+
*
|
|
27
|
+
* THE LINE THIS MUST NOT CROSS. What is stored is a property of this BROWSER,
|
|
28
|
+
* never of an address. Nothing here may be keyed by, derived from, or exposed
|
|
29
|
+
* alongside an email or username: "which method does a@b.com use" is an account
|
|
30
|
+
* enumeration and targeted-phishing surface, and answering it before
|
|
31
|
+
* authentication would hand an attacker the cheapest possible reconnaissance.
|
|
32
|
+
* The value is written only AFTER a method has already succeeded here, so it
|
|
33
|
+
* reveals nothing that this browser did not already do.
|
|
34
|
+
*
|
|
35
|
+
* Best-effort storage, deliberately: a browser refusing `localStorage` degrades
|
|
36
|
+
* to "no badge", which is invisible, rather than to a sign-in that throws.
|
|
37
|
+
*/
|
|
38
|
+
/**
|
|
39
|
+
* The methods worth remembering, as a closed set.
|
|
40
|
+
*
|
|
41
|
+
* A closed set rather than a free string because this value is read back from
|
|
42
|
+
* storage a user can edit, and it decides what a form highlights. An unknown
|
|
43
|
+
* value is discarded rather than rendered.
|
|
44
|
+
*
|
|
45
|
+
* Social providers collapse to `social:<id>` so a returning Google user is
|
|
46
|
+
* pointed at the Google button rather than at "social" generally.
|
|
47
|
+
*/
|
|
48
|
+
type LastUsedSignInMethod = 'password' | 'username' | 'magic-link' | 'email-otp' | 'phone-otp' | 'passkey' | 'sso' | `social:${string}`;
|
|
49
|
+
/**
|
|
50
|
+
* Read what last worked here, or null.
|
|
51
|
+
*
|
|
52
|
+
* Null covers every uncertainty identically - never used, storage refused,
|
|
53
|
+
* value unrecognised, value tampered with - because a caller has exactly one
|
|
54
|
+
* sensible response to all of them, which is to show no badge.
|
|
55
|
+
*/
|
|
56
|
+
declare function readLastUsedSignInMethod(projectId: string): LastUsedSignInMethod | null;
|
|
57
|
+
/**
|
|
58
|
+
* Record a method that JUST SUCCEEDED.
|
|
59
|
+
*
|
|
60
|
+
* Never call this at the start of an attempt for a method that completes
|
|
61
|
+
* in-page: a failed password attempt would then teach the form to recommend
|
|
62
|
+
* the method that just did not work.
|
|
63
|
+
*
|
|
64
|
+
* Redirect methods are the exception and are handled by
|
|
65
|
+
* `rememberPendingSignInMethod`, because the page that would record success is
|
|
66
|
+
* one the browser leaves before reaching.
|
|
67
|
+
*/
|
|
68
|
+
declare function recordLastUsedSignInMethod(projectId: string, method: LastUsedSignInMethod): void;
|
|
69
|
+
/**
|
|
70
|
+
* Note that a REDIRECT method is being attempted, without recording it as used.
|
|
71
|
+
*
|
|
72
|
+
* Social and SSO leave the page before anything can observe success, so the
|
|
73
|
+
* attempt is parked here and promoted only once the user comes back signed in.
|
|
74
|
+
* Kept separate from the recorded value on purpose: a user who bounces off a
|
|
75
|
+
* provider's consent screen and returns unauthenticated must not be told that
|
|
76
|
+
* provider is what worked last, because it did not.
|
|
77
|
+
*/
|
|
78
|
+
declare function rememberPendingSignInMethod(projectId: string, method: LastUsedSignInMethod): void;
|
|
79
|
+
/**
|
|
80
|
+
* Settle a parked redirect attempt once the returning session has loaded.
|
|
81
|
+
*
|
|
82
|
+
* A signed-in return promotes it. A signed-out return clears it, so a cancelled
|
|
83
|
+
* redirect cannot be mistaken for an unrelated sign-in later.
|
|
84
|
+
*/
|
|
85
|
+
declare function settlePendingSignInMethod(projectId: string, signedIn: boolean): void;
|
|
86
|
+
|
|
13
87
|
/**
|
|
14
88
|
* Complete Akedly Shield's browser-only proof ceremony. The provider package is
|
|
15
89
|
* lazy-loaded only when the server-selected route requires it.
|
|
@@ -40,4 +114,7 @@ declare class AuthOwlHttpError extends Error {
|
|
|
40
114
|
constructor(label: string, response: Response, requestId?: string);
|
|
41
115
|
}
|
|
42
116
|
|
|
43
|
-
|
|
117
|
+
declare function setActiveLocale(projectId: string, locale: string | null): () => void;
|
|
118
|
+
declare function activeLocale(projectId: string): string | null;
|
|
119
|
+
|
|
120
|
+
export { AkedlyShieldStartProof, AuthOwlError, AuthOwlHttpError, InvalidKeyError, type LastUsedSignInMethod, PhoneOtpChallengeData, RateLimitedError, activeLocale, createIdempotencyKey, readLastUsedSignInMethod, recordLastUsedSignInMethod, rememberPendingSignInMethod, sessionChallengeIsEphemeral, setActiveLocale, settlePendingSignInMethod, solvePhoneOtpChallenge };
|