@authowl/core 0.12.0 → 0.14.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/README.md +3 -2
- package/dist/chunk-MX7KKUAW.js +1 -0
- package/dist/chunk-T5SH3ZZP.js +1 -0
- package/dist/{client-1cjryEHU.d.cts → client-DOOkDLWg.d.cts} +31 -3
- package/dist/{client-CzV2XWt6.d.ts → client-jpaYv3wu.d.ts} +31 -3
- package/dist/index.cjs +3 -3
- package/dist/index.d.cts +11 -2
- package/dist/index.d.ts +11 -2
- 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 -1
- 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 +894 -52
- package/dist/server.d.ts +894 -52
- package/dist/server.js +1 -1
- package/dist/session-handoff-6B5KZXQV.js +2 -0
- package/package.json +5 -1
- package/dist/chunk-SM5LS47O.js +0 -1
package/dist/index.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
'use strict';var Hn=/^(pk_(live|test))_([0-9a-f-]{36})_([A-Za-z0-9]{20,})$/i,Bn=/^sk_/i;function ke(e){if(typeof e!="string"||e.length===0)throw new Error("publishableKey is required");if(Bn.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=Hn.exec(e);if(!t)throw new Error("publishableKey is malformed; expected pk_(live|test)_<uuid>_<base62>");return {prefix:t[1],env:t[2],projectId:t[3]}}function jn(e,t){let n=`p_${e.replace(/-/g,"")}`;return `${t?.secure?"__Secure-":""}${n}.session_token`}var Xe=/^http:\/\/(?:(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*localhost|127\.0\.0\.1|\[::1\])(?::\d+)?(?:\/|$)/i;function Se(e,t){throw new Error(`${e}: ${t}`)}function Qe(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&&Xe.test(i)))throw new TypeError("Transport URL must use HTTPS except on approved loopback.");return n}function Ze(e,t){(typeof e!="string"||!/^https?:\/\/[^/?#@\\\s]+\/?$/i.test(e))&&Se("apiUrl","origin required");let n;try{n=new URL(e);}catch{Se("apiUrl","origin required");}return n.protocol==="http:"&&(!t.allowHttpLoopback||!Xe.test(e))&&Se("apiUrl","HTTPS required except exact loopback"),n.origin}function Jn(e){if(!e||typeof e!="object")throw new Error("AuthConfig is required");let t=ke(e.publishableKey),n=Ze(e.apiUrl,{allowHttpLoopback:t.env==="test"}),i=`${n}/api/projects/${t.projectId}/auth`;return {...e,apiUrl:n,decoded:t,projectBaseURL:i}}function Gn(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(r=>r==="password"||r==="magic_link"||r==="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 Wn=1e4,$n=1024*1024,T=class extends Error{kind;requestId;constructor(t,n){super(ii(t)),this.name="TransportError",this.kind=t,this.requestId=n;}},nt=new WeakSet;function I(e,t){let n=new T(e,t);return nt.add(n),n}async function ne({fetchImpl:e,url:t,init:n={},timeoutMs:i=Wn,maxResponseBytes:o=$n,allowHttpLoopback:s=false,decode:r}){tt(i,"timeoutMs"),tt(o,"maxResponseBytes");let c=Qe(t,{allowHttpLoopback:s}),a=n.signal,h=new AbortController,u=null,d,f=new Promise(y=>{d=y;}),g=y=>{u===null&&(u=y,d({type:"abort",kind:y}),h.abort());},m=()=>g("aborted");a?.addEventListener("abort",m,{once:true});let U=setTimeout(()=>g("timeout"),i);a?.aborted&&m();try{if(u!==null)throw I(u);let y;try{y=await Promise.race([e(c.toString(),{...n,redirect:"error",signal:h.signal}).then(Re=>({type:"response",response:Re})),f]);}catch{throw I(u??"network")}if(y.type==="abort")throw I(y.kind);if(!Yn(y.response))throw I("invalid_response");let v=y.response,z=ni(v.headers),V=await Xn(v,o,f,()=>u,z),X=ei(v,V,z),q;try{q=v.ok&&r?r(X,Object.freeze({status:v.status})):X;}catch{throw I("invalid_response",z)}return {response:v,data:q,...z===void 0?{}:{requestId:z}}}catch(y){throw y instanceof T&&nt.has(y)?y:I(u??"network")}finally{clearTimeout(U),a?.removeEventListener("abort",m);}}function Yn(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 Xn(e,t,n,i,o){let s=e.headers.get("content-length");if(s!==null){if(!/^\d+$/.test(s))throw et(e.body),I("invalid_response",o);if(Number(s)>t)throw et(e.body),I("response_too_large",o)}if(!e.body)return "";let r;try{r=e.body.getReader();}catch{throw I("network",o)}let c=[],a=0,h=null;try{for(;;){let f;try{f=await Promise.race([r.read(),n]);}catch{h=I(i()??"network",o);break}if(Qn(f)){h=I(f.kind,o);break}let{done:g,value:m}=f;if(g)break;if(m.byteLength!==0){if(a+=m.byteLength,a>t){h=I("response_too_large",o);break}c.push(m);}}}finally{h&&Zn(r);try{r.releaseLock();}catch{}}if(h)throw h;let u=new Uint8Array(a),d=0;for(let f of c)u.set(f,d),d+=f.byteLength;try{return new TextDecoder("utf-8",{fatal:!0}).decode(u)}catch{throw I("invalid_response",o)}}function Qn(e){return "type"in e&&e.type==="abort"}function et(e){if(e)try{e.cancel().catch(()=>{});}catch{}}function Zn(e){try{e.cancel().catch(()=>{});}catch{}}function ei(e,t,n){if(e.status===204||e.status===205)return null;let i=ti(e.headers.get("content-type"));if(!e.ok&&(!i||t.length===0))return null;if(!i||t.length===0)throw I("invalid_response",n);try{return JSON.parse(t)}catch{if(!e.ok)return null;throw I("invalid_response",n)}}function ti(e){if(e===null)return false;let t=e.split(";",1)[0]?.trim().toLowerCase();return t==="application/json"||t?.endsWith("+json")===true}function ni(e){let t=e.get("x-request-id")?.trim();if(!(!t||t.length>256||!/^[A-Za-z0-9._:-]+$/.test(t)))return t}function tt(e,t){if(!Number.isInteger(e)||e<=0)throw new TypeError(`${t} must be a positive integer.`)}function ii(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 rt="x-authowl-turnstile-token",oi=1e4,ri=32,si=2e4;function J(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 ie(e,t=e.projectBaseURL){return {async request(n,i={}){let o=ui(t,n,i.query),s=i.method??(i.body===void 0?"GET":"POST"),r=new Headers(i.fetchOptions?.headers);r.set("x-publishable-key",e.publishableKey),i.fetchOptions?.authChallengeToken&&r.set(rt,i.fetchOptions.authChallengeToken),i.body!==void 0&&r.set("content-type","application/json");let c={method:s,headers:r,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=ci(s,i.fetchOptions),u;try{u=await ai(e,o,{...c,signal:i.fetchOptions?.signal},h);}catch(y){let v=ot(y);return await i.fetchOptions?.onError?.(Te(a,v,pi(y))),{data:null,error:v}}let{response:d,requestId:f}=u,g=mi(n,u.data),m=g;if(d.ok)try{m=Pe(g),i.decode&&(m=i.decode(m));}catch{let y=ot(new T("invalid_response",f));return await i.fetchOptions?.onError?.(Te(a,y,"invalid_response")),{data:null,error:y}}let U=Object.freeze({...a,status:d.status,...f===void 0?{}:{requestId:f}});if(await i.fetchOptions?.onResponse?.(U),!d.ok){let y=li(d,g,f);return await i.fetchOptions?.onError?.(Te(a,y,"api")),{data:null,error:y}}return await i.fetchOptions?.onSuccess?.(U),{data:m,error:null}}}}async function ai(e,t,n,i){let o=Date.now()+oi;for(let s=0;s<i;s+=1){let r=o-Date.now();if(r<=0)throw new T("timeout");try{let c=await ne({fetchImpl:e.fetch??fetch,url:t,init:n,timeoutMs:Math.max(1,Math.ceil(r)),allowHttpLoopback:e.decoded.env==="test"});if(c.response.status<500||s===i-1)return c}catch(c){if(s===i-1||!(c instanceof T)||c.kind!=="network")throw c}await fi(50*2**s,n.signal,o);}throw new T("network")}function ci(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 ui(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 li(e,t,n){let i=Q(t)?t:{},o=di(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 di(e,t){let n=(typeof e.retryAfterSeconds=="number"&&Number.isFinite(e.retryAfterSeconds)?e.retryAfterSeconds:void 0)??it(t.get("retry-after"))??it(t.get("x-retry-after"));if(n!==void 0)return Math.min(Math.max(Math.trunc(n),1),86400)}function it(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 ot(e){let t=e instanceof T?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 T&&e.requestId?{requestId:e.requestId}:{}}}function Te(e,t,n){return Object.freeze({...e,status:t.status??0,...t.requestId===void 0?{}:{requestId:t.requestId},failure:n})}function pi(e){return e instanceof T?e.kind:"network"}function fi(e,t,n){return new Promise((i,o)=>{if(t?.aborted){o(new T("aborted"));return}let s=n-Date.now();if(s<=0){o(new T("timeout"));return}let r=Math.min(e,s),c=()=>{clearTimeout(a),o(new T("aborted"));},a=setTimeout(()=>{t?.removeEventListener("abort",c),Date.now()>=n?o(new T("timeout")):i();},r);t?.addEventListener("abort",c,{once:true}),t?.aborted&&c();})}function Pe(e,t="",n=0,i={nodes:0}){if(i.nodes+=1,n>ri||i.nodes>si)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=>Pe(o,"",n+1,i)):Q(e)?Object.fromEntries(Object.entries(e).map(([o,s])=>[o,gi(o)?s:Pe(s,o,n+1,i)])):e}function gi(e){return e==="metadata"||e==="public_metadata"||e==="unsafe_metadata"||e==="private_metadata"||e==="publicMetadata"||e==="unsafeMetadata"||e==="privateMetadata"}function mi(e,t){if(e==="/list-sessions"&&Array.isArray(t))return t.map(o=>Q(o)?Ie(o):o);if(!Q(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-")?Ie(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")&&Q(i.session)&&(i={...i,session:Ie(i.session)}),i}function Ie(e){if(!Object.hasOwn(e,"token"))return e;let t={...e};return delete t.token,t}function Q(e){return !!e&&typeof e=="object"&&!Array.isArray(e)}var hi=new Set(["__proto__","constructor","prototype"]);function p(e){(!e||typeof e!="object"||Array.isArray(e))&&l();let t=Object.getPrototypeOf(e);return t!==Object.prototype&&t!==null&&l(),e}function w(e){return typeof e!="string"&&l(),e}function O(e){return typeof e!="boolean"&&l(),e}function k(e){return (!(e instanceof Date)||Number.isNaN(e.getTime()))&&l(),e}function oe(e){return (!Array.isArray(e)||!e.every(t=>typeof t=="string"))&&l(),[...e]}function R(e,t){let n=e[t];return n==null||typeof n=="string"?n:l()}function st(e,t){let n=e[t];return n==null||typeof n=="boolean"?n:l()}function x(e){let t=p(e),n=t.email;return n!==null&&typeof n!="string"&&l(),{id:w(t.id),email:n,emailVerified:O(t.emailVerified),createdAt:k(t.createdAt),updatedAt:k(t.updatedAt),...E("phoneNumber",R(t,"phoneNumber")),...E("username",R(t,"username")),...E("displayUsername",R(t,"displayUsername")),...E("firstName",R(t,"firstName")),...E("lastName",R(t,"lastName")),...E("name",R(t,"name")),...E("image",R(t,"image")),...E("twoFactorEnabled",st(t,"twoFactorEnabled"))}}function re(e){let t=p(e),n=t.membership;return {id:w(t.id),userId:w(t.userId),expiresAt:k(t.expiresAt),...E("activeOrganizationId",R(t,"activeOrganizationId")),...E("activeTeamId",R(t,"activeTeamId")),...E("membership",n==null?n:yi(n)),...E("pendingMfaEnrollment",st(t,"pendingMfaEnrollment"))}}function l(){throw new TypeError("AuthOwl response does not match its runtime contract.")}function _(e,t=20,n=1e4){return (!e||typeof e!="object"||Array.isArray(e))&&l(),xe(e,t,n)}function xe(e,t=20,n=1e4){return Ee(e,0,{nodes:0},t,n)}function yi(e){let t=p(e);return {role:w(t.role),permissions:oe(t.permissions),...t.teams===void 0?{}:{teams:oe(t.teams)}}}function Ee(e,t,n,i,o){if(n.nodes+=1,(t>i||n.nodes>o)&&l(),e===null||typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)||l(),e;if(Array.isArray(e))return e.map(c=>Ee(c,t+1,n,i,o));(!e||typeof e!="object")&&l();let s=Object.getPrototypeOf(e);s!==Object.prototype&&s!==null&&l();let r={};for(let[c,a]of Object.entries(e))hi.has(c)&&l(),r[c]=Ee(a,t+1,n,i,o);return r}function E(e,t){return t===void 0?{}:{[e]:t}}function ct(e,t){let n=new Set,i=null,o=null,s=null,r,c=g=>{u(g);};r={data:null,isPending:true,isRefetching:false,error:null,refetch:c};function a(g){r=g;for(let m of n)m();}async function h(g){return e.request("/get-session",{query:g?.query,decode:at})}async function u(g){s?.abort();let m=new AbortController;s=m,a({...r,isPending:r.data===null&&r.error===null,isRefetching:r.data!==null});let U=await e.request("/get-session",{query:g?.query,fetchOptions:{signal:m.signal},decode:at});s===m&&(s=null,a({data:U.data,error:U.error,isPending:false,isRefetching:false,refetch:c}));}function d(){if(typeof window>"u"||o)return;let g=()=>{u();},m=()=>{document.visibilityState==="visible"&&u();};window.addEventListener("focus",g),document.addEventListener("visibilitychange",m),typeof BroadcastChannel<"u"&&(i=new BroadcastChannel(`authowl:${t}`),i.addEventListener("message",g)),o=()=>{window.removeEventListener("focus",g),document.removeEventListener("visibilitychange",m),i?.close(),i=null,o=null;};}function f(g){return n.add(g),n.size===1&&(d(),u()),()=>{n.delete(g),n.size===0&&(s?.abort(),s=null,o?.());}}return {store:{subscribe:f,getSnapshot:()=>r},getSession:h,notifyMutation(){i?.postMessage({type:"session-changed"}),n.size>0&&u({query:{disableCookieCache:true}});}}}function at(e){if(e===null)return null;let t=p(e);return (t.session===void 0||t.user===void 0)&&l(),{session:re(t.session),user:x(t.user)}}function Ce(){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 ut(e,t){return e.request("/user/metadata",{fetchOptions:t,decode:dt})}async function lt(e,t,n){return e.request("/user/metadata",{method:"PATCH",body:{expected_version:t.expectedVersion,unsafe_metadata:t.unsafeMetadata},fetchOptions:n,decode:dt})}function dt(e){let t=p(e),n=_(t.public_metadata),i=_(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 ft(e,t){let{post:n,mutation:i}=J(e,t);return {getMetadata:o=>ut(e,o),updateUnsafeMetadata:(o,s)=>lt(e,o,s),updateProfile:(o,s)=>i(n("/update-user",o,s,Z)),changeEmail:(o,s)=>i(n("/change-email",o,s,Z)),changePassword:(o,s)=>i(n("/change-password",o,s,Ai)),listSessions:o=>e.request("/list-sessions",{fetchOptions:o,decode:Oi}),revokeSession:({sessionId:o},s)=>i(n("/revoke-session",{sessionId:o},s,Z)),revokeOtherSessions:o=>i(n("/revoke-other-sessions",{},o,Z)),listSocialAccounts:async o=>{let s=await e.request("/list-accounts",{fetchOptions:o,decode:bi});if(!s.data)return {data:null,error:s.error};let r=s.data.length>1;return {...s,data:s.data.filter(c=>c.providerId!=="credential").map(c=>({...c,canUnlink:r}))}},linkSocial:(o,s)=>n("/link-social",o,s,wi),unlinkSocial:(o,s)=>i(n("/unlink-account",o,s,Z)),delete:(o={},s)=>i(n("/delete-user",o,s,Ri))}}function Z(e){let t=p(e);return {status:O(t.status)}}function Ai(e){let t=p(e);return {user:x(t.user)}}function Oi(e){return Array.isArray(e)||l(),e.map(t=>{let n=p(t);return {id:w(n.id),userId:w(n.userId),createdAt:k(n.createdAt),updatedAt:k(n.updatedAt),expiresAt:k(n.expiresAt),...pt("ipAddress",R(n,"ipAddress")),...pt("userAgent",R(n,"userAgent"))}})}function bi(e){return Array.isArray(e)||l(),e.map(t=>{let n=p(t);return {id:w(n.id),userId:w(n.userId),providerId:w(n.providerId),accountId:w(n.accountId),scopes:oe(n.scopes),createdAt:k(n.createdAt),updatedAt:k(n.updatedAt)}})}function wi(e){let t=p(e);return {url:w(t.url),redirect:O(t.redirect)}}function Ri(e){let t=p(e);return {success:O(t.success),message:w(t.message)}}function pt(e,t){return t===void 0?{}:{[e]:t}}function se(e,t){return !e||!t?false:e.permissions.includes(t)}function gt(e,t){return !e||!t?false:e.teams?.includes(t)??false}function ae(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&&e.role!==n||i!==void 0&&!e.permissions.includes(i)||o!==void 0&&!gt(e,o))}function ki(e){return {has:t=>ae(e,t),hasPermission:t=>se(e,t.permission)}}var Si=new Set(["pending","accepted","rejected","canceled"]),mt=1e4;function G(e,t,n){let i=p(e),o={id:A(i.id),name:A(i.name),slug:A(i.slug),createdAt:k(i.createdAt),...ce("logo",R(i,"logo")),...ce("metadata",i.metadata===void 0?void 0:xe(i.metadata))};return M(o.id,t),M(o.slug,n),o}function ht(e){return F(e,G)}function De(e,t,n){return e===null?null:(t===null&&l(),G(e,t,n))}function yt(e,t,n){if(e===null)return null;let i=p(e),o=G(i,t,n);return {...o,members:F(i.members,s=>Ct(s,o.id)),invitations:F(i.invitations,s=>N(s,void 0,o.id))}}function At(e,t){let n=F(e,i=>xt(i));return ue(n.map(i=>i.organizationId),t),n}function Ot(e,t,n){return e===null?null:(t===null&&l(),xt(e,t,n))}function bt(e,t){let n=p(e);return (!Number.isSafeInteger(n.total)||n.total<0)&&l(),{members:Ti(n.members,t),total:n.total}}function N(e,t,n){let i=p(e),o=A(i.status);Si.has(o)||l();let s={id:A(i.id),organizationId:A(i.organizationId),email:A(i.email),role:A(i.role),status:o,inviterId:A(i.inviterId),expiresAt:k(i.expiresAt),createdAt:k(i.createdAt)};return M(s.id,t),M(s.organizationId,n),s}function wt(e,t){let n=F(e,i=>N(i));return ue(n.map(i=>i.organizationId),t),n}function Rt(e){return F(e,t=>{let n=p(t);return {...N(n),organizationName:A(n.organizationName)}})}function kt(e,t){let n=p(e);return {...N(n,t),organizationName:A(n.organizationName),organizationSlug:A(n.organizationSlug),inviterEmail:A(n.inviterEmail)}}function St(e,t){let n=p(e),i=N(n.invitation,t);return {invitation:i,member:W(n.member,void 0,i.organizationId)}}function Tt(e,t){let n=p(e);return n.member!==null&&l(),{invitation:n.invitation===null?null:N(n.invitation,t),member:null}}function It(e,t){return e===null?null:N(e,t)}function Pt(e,t,n){let i=p(e);return {member:W(i.member,n,t)}}function W(e,t,n){let i=p(e),o={id:A(i.id),organizationId:A(i.organizationId),userId:A(i.userId),role:A(i.role),createdAt:k(i.createdAt),...i.user===void 0?{}:{user:Dt(i.user)}};return M(o.id,t),M(o.organizationId,n),o}function Et(e,t){let n=F(e,i=>{let o=p(i);return {organizationId:A(o.organizationId),data:{role:A(o.role),...ce("permission",o.permission===void 0?void 0:Ii(o.permission))}}});return ue(n.map(i=>i.organizationId),t),n.map(i=>i.data)}function xt(e,t,n){let i=p(e),o=i.updatedAt,s={id:A(i.id),name:A(i.name),organizationId:A(i.organizationId),createdAt:k(i.createdAt),...o===void 0?{}:{updatedAt:k(o)}};return M(s.id,t),M(s.organizationId,n),s}function Ct(e,t){let n=p(e);return {...W(n,void 0,t),user:Dt(n.user)}}function Ti(e,t){let n=F(e,i=>Ct(i));return ue(n.map(i=>i.organizationId),t),n}function Ii(e){let t=p(e),n={};for(let[i,o]of Object.entries(t))(i==="__proto__"||i==="constructor"||i==="prototype"||i.length===0||i.length>mt||!Array.isArray(o))&&l(),n[i]=o.map(s=>A(s));return n}function A(e){let t=w(e);return (t.length===0||t.length>mt)&&l(),t}function M(e,t){t!==void 0&&e!==t&&l();}function ue(e,t){let n=t??e[0];n!==void 0&&e.some(i=>i!==n)&&l();}function Dt(e){let t=p(e);return {id:A(t.id),name:A(t.name),email:A(t.email),...ce("image",R(t,"image"))}}function F(e,t){return Array.isArray(e)||l(),e.map(n=>t(n))}function ce(e,t){return t===void 0?{}:{[e]:t}}function vt(e,t,n=()=>null){let{post:i,mutation:o}=J(e,t),s=(r,c,a,h)=>e.request(r,{query:c,fetchOptions:a,decode:h});return {create:(r,c)=>o(i("/organization/create",r,c,G)),list:r=>s("/organization/list",void 0,r,ht),get:(r={},c)=>s("/organization/get-full-organization",{organizationId:r.organizationId,organizationSlug:r.organizationSlug,membersLimit:r.membersLimit},c,a=>yt(a,r.organizationId,r.organizationSlug)),setActive:(r,c)=>o(i("/organization/set-active",r,c,a=>De(a,r.organizationId,r.organizationSlug))),listTeams:(r={},c)=>s("/organization/list-teams",{organizationId:r.organizationId},c,a=>At(a,r.organizationId)),setActiveTeam:(r,c)=>o(i("/organization/set-active-team",r,c,a=>Ot(a,r.teamId))),update:(r,c)=>o(i("/organization/update",r,c,a=>De(a,r.organizationId))),delete:(r,c)=>o(i("/organization/delete",r,c,a=>G(a,r.organizationId))),listMembers:(r={},c)=>s("/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},c,a=>bt(a,r.organizationId)),inviteMember:(r,c)=>o(i("/organization/invite-member",r,c,a=>N(a,void 0,r.organizationId))),listInvitations:(r={},c)=>s("/organization/list-invitations",{organizationId:r.organizationId},c,a=>wt(a,r.organizationId)),listUserInvitations:r=>s("/organization/list-user-invitations",void 0,r,Rt),getInvitation:(r,c)=>s("/organization/get-invitation",{id:r.id},c,a=>kt(a,r.id)),acceptInvitation:(r,c)=>o(i("/organization/accept-invitation",r,c,a=>St(a,r.invitationId))),rejectInvitation:(r,c)=>o(i("/organization/reject-invitation",r,c,a=>Tt(a,r.invitationId))),cancelInvitation:(r,c)=>o(i("/organization/cancel-invitation",r,c,a=>It(a,r.invitationId))),removeMember:(r,c)=>o(i("/organization/remove-member",r,c,a=>Pt(a,r.organizationId,r.memberIdOrEmail.includes("@")?void 0:r.memberIdOrEmail))),updateMemberRole:(r,c)=>o(i("/organization/update-member-role",r,c,a=>W(a,r.memberId,r.organizationId))),leave:(r,c)=>o(i("/organization/leave",r,c,a=>W(a,void 0,r.organizationId))),listRoles:(r={},c)=>s("/organization/list-roles",{organizationId:r.organizationId},c,a=>Et(a,r.organizationId)),has:r=>ae(n(),r),hasPermission:r=>se(n(),r.permission)}}var Ut=4096,Pi=4096,Ei=100,xi=256,Ci=16,Di=64;function Ue(e){let t=p(e);return t.twoFactorRedirect===true?((t.user!==void 0||t.redirect!==void 0||t.url!==void 0)&&l(),{twoFactorRedirect:true,...t.twoFactorMethods===void 0?{}:{twoFactorMethods:Yt(t.twoFactorMethods,Ci,Di)}}):(t.twoFactorRedirect!==void 0&&l(),{redirect:O(t.redirect),..._i(t,"url"),user:x(t.user)})}function zt(e){let t=p(e);return {user:x(t.user)}}function _t(e){let t=p(e);return {sessionCreated:O(t.sessionCreated),user:x(t.user)}}function Nt(e,t){let n=p(e),i=O(n.redirect);n.user===null&&l();let o=n.user!==void 0&&n.user!==null,s=n.url!==void 0&&n.url!==null;return i?((o||!s)&&l(),{redirect:true,url:ve(n.url,t)}):(o===s&&l(),o?{redirect:false,user:x(n.user)}:{redirect:false,url:ve(n.url,t)})}function Lt(e,t){let n=p(e);return (n.redirect!==true||n.user!==void 0)&&l(),{redirect:true,url:ve(n.url,t)}}function Mt(e){return {status:O(p(e).status)}}function Ft(e){return {success:O(p(e).success)}}function Vt(e){return p(e).status!=="pending"&&l(),{status:"pending"}}function qt(e){let t=p(e);return (t.status!==true||t.sessionCreated!==true)&&l(),{status:true,sessionCreated:true,user:vi(t.user)}}function ze(e){return {status:O(p(e).status)}}function Kt(e){return {status:O(p(e).status)}}function Ht(e){let t=p(e);return {status:O(t.status),user:x(t.user)}}function Bt(e){return {success:O(p(e).success)}}function jt(e){let t=p(e);return {totpURI:zi(t.totpURI),backupCodes:$t(t.backupCodes)}}function Jt(e){return {status:O(p(e).status)}}function le(e){return p(e).status!==true&&l(),{status:true}}function Gt(e){return {status:O(p(e).status)}}function Wt(e){let t=p(e);return t.status!==void 0&&t.status!==true&&l(),{backupCodes:$t(t.backupCodes)}}function vi(e){let t=p(e);return {id:$(t.id,512),...Ni(t,"name",1024),phoneNumber:$(t.phoneNumber,64),phoneNumberVerified:O(t.phoneNumberVerified),...t.createdAt===void 0?{}:{createdAt:k(t.createdAt)},...t.updatedAt===void 0?{}:{updatedAt:k(t.updatedAt)}}}function ve(e,t){let n=$(e,Ut);/[\u0000-\u0020\u007f]/u.test(n)&&l();let i;try{i=new URL(n);}catch{return l()}return (i.username||i.password)&&l(),i.protocol==="https:"||t&&i.protocol==="http:"&&Ui(i.hostname)?i.href:l()}function Ui(e){let t=e.toLowerCase();return t==="localhost"||t==="127.0.0.1"||t==="[::1]"}function zi(e){let t=$(e,Pi),n;try{n=new URL(t);}catch{return l()}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))&&l(),t}function $t(e){return Yt(e,Ei,xi)}function Yt(e,t,n){(!Array.isArray(e)||e.length===0||e.length>t)&&l();let i=e.map(o=>$(o,n));return i.some(o=>o.trim().length===0)&&l(),new Set(i).size!==i.length&&l(),i}function $(e,t){let n=w(e);return (n.length===0||n.length>t)&&l(),n}function _i(e,t){let n=e[t];return n==null?{}:{[t]:$(n,Ut)}}function Ni(e,t,n){let i=R(e,t);return i===void 0?{}:(i!==null&&i.length>n&&l(),{[t]:i})}var Xt=new Set([1564,8206,8207,8234,8235,8236,8237,8238,8294,8295,8296,8297]),de=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 pe(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||Zt(n,i)||Qt(i)||Xt.has(i))return {valid:false}}let t=Li(e);return _e(t)?{valid:true,value:t}:{valid:false}}function _e(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||Zt(o,s)||Qt(s)||Xt.has(s))return false;n??=s,i=s;}return t>0&&n!==void 0&&i!==void 0&&!de.has(n)&&!de.has(i)}function fe(){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 Li(e){let t=0,n=e.length;for(;t<n;){let i=e.codePointAt(t);if(i===void 0||!de.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,r=e.codePointAt(s);if(r===void 0||!de.has(r))break;n=s;}return e.slice(t,n)}function Qt(e){return e>=0&&e<=31||e>=127&&e<=159}function Zt(e,t){return e.length===1&&t>=55296&&t<=57343}var nn=12,on=5e3,Mi=8,Fi=1e3,Vi=16,en=512,rn=100,sn=8192,qi=32768,Ne=1024,tn=256,Me=64,Ki=6e5,Hi=/^[A-Za-z0-9_-]+$/u,Bi=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/u,ji=/[\u0000-\u001f\u007f-\u009f\u061c\u200e\u200f\u202a-\u202e\u2066-\u2069]/u,Ji=/^[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?$/u,Gi=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/iu,an=new Set(["discouraged","preferred","required"]),Wi=new Set(["singleDevice","multiDevice"]),cn=new Set(["ble","cable","hybrid","internal","nfc","smart-card","usb"]),un=new Set(["hybrid","security-key","client-device"]),$i=new Set(["none","indirect","direct","enterprise"]),Yi=new Set(["fido-u2f","packed","android-safetynet","android-key","tpm","apple","none"]),Xi=new Set(["platform","cross-platform"]),Qi=new Set(["discouraged","preferred","required"]),Zi=new Set([-8,-7,-257]);function ln(e){let t=_(e,nn,on);return {challenge:bn(t.challenge),...S("timeout",An(t.timeout)),...S("rpId",wn(t.rpId)),...S("allowCredentials",yn(t.allowCredentials)),...S("userVerification",ee(t.userVerification,an)),...S("hints",ge(t.hints,un)),...S("extensions",On(t.extensions))}}function dn(e){let t=_(e,nn,on);return {challenge:bn(t.challenge),rp:eo(t.rp),user:to(t.user),pubKeyCredParams:no(t.pubKeyCredParams),...S("timeout",An(t.timeout)),...S("excludeCredentials",yn(t.excludeCredentials)),...S("authenticatorSelection",io(t.authenticatorSelection)),...S("attestation",ee(t.attestation,$i)),...S("attestationFormats",ge(t.attestationFormats,Yi)),...S("hints",ge(t.hints,un)),...S("extensions",On(t.extensions))}}function pn(e){let t=p(e),n=re(t.session),i=x(t.user);return n.userId!==i.id&&l(),{session:n,user:i}}function Fe(e){let t=p(e),n=t.counter;(!Number.isSafeInteger(n)||n<0)&&l();let i=Ve(t.deviceType,Wi),o=O(t.backedUp);return o&&i!=="multiDevice"&&l(),{id:Y(t.id,tn),...so(t),publicKey:oo(t.publicKey,qi),userId:Y(t.userId,tn),credentialID:he(t.credentialID,sn),counter:n,deviceType:i,backedUp:o,...ao(t),createdAt:k(t.createdAt),...co(t)}}function fn(e,t,n){let i=Fe(e);return (i.credentialID!==t||(n===void 0?i.name!==void 0&&i.name!==null:i.name!==n))&&l(),i}function gn(e){(!Array.isArray(e)||e.length>rn)&&l();let t=e.map(Fe);return me(t.map(n=>n.id)),me(t.map(n=>n.credentialID)),t.length>1&&t.some(n=>n.userId!==t[0]?.userId)&&l(),t}function mn(e,t,n){let i=p(e),o=Fe(i.passkey);return (o.id!==t||o.name!==n)&&l(),{passkey:o}}function hn(e){return p(e).status!==true&&l(),{status:true}}function eo(e){let t=p(e);return {name:Le(t.name,Ne),...S("id",wn(t.id))}}function to(e){let t=p(e);return {id:he(t.id,128,1,64),name:Le(t.name,Ne),displayName:Le(t.displayName,Ne)}}function no(e){(!Array.isArray(e)||e.length===0||e.length>Me)&&l();let t=e.map(n=>{let i=p(n);return (i.type!=="public-key"||!Number.isSafeInteger(i.alg)||!Zi.has(i.alg))&&l(),{type:"public-key",alg:i.alg}});return uo(t.map(n=>n.alg)),t}function yn(e){if(e===void 0)return;(!Array.isArray(e)||e.length>rn)&&l();let t=e.map(n=>{let i=p(n);return i.type!=="public-key"&&l(),{type:"public-key",id:he(i.id,sn),...S("transports",ge(i.transports,cn))}});return me(t.map(n=>n.id)),t}function io(e){if(e===void 0)return;let t=p(e);t.requireResidentKey!==void 0&&typeof t.requireResidentKey!="boolean"&&l();let n=ee(t.residentKey,Qi);return t.requireResidentKey!==void 0&&n!==void 0&&t.requireResidentKey!==(n==="required")&&l(),{...S("authenticatorAttachment",ee(t.authenticatorAttachment,Xi)),...S("residentKey",n),...S("requireResidentKey",t.requireResidentKey),...S("userVerification",ee(t.userVerification,an))}}function An(e){return e!==void 0&&(typeof e!="number"||!Number.isFinite(e)||e<0||e>Ki)&&l(),e}function On(e){return e===void 0?void 0:_(e,Mi,Fi)}function ge(e,t){if(e===void 0)return;(!Array.isArray(e)||e.length>Me)&&l();let n=e.map(i=>Ve(i,t));return me(n),n}function ee(e,t){if(e!==void 0)return Ve(e,t)}function bn(e){return he(e,Math.ceil(en*4/3),Vi,en)}function he(e,t,n=1,i=Number.POSITIVE_INFINITY){let o=Y(e,t),s=o.length%4,r=ro(o.at(-1)??""),c=Math.floor(o.length*3/4);return (!Hi.test(o)||s===1||s===2&&(r&15)!==0||s===3&&(r&3)!==0||c<n||c>i)&&l(),o}function Y(e,t){let n=w(e);return (n.length===0||n.length>t)&&l(),n}function Le(e,t){let n=Y(e,t);return ji.test(n)&&l(),n}function wn(e){if(e===void 0)return;let t=Y(e,253);return t!=="localhost"&&(t.endsWith(".")||!t.includes(".")||t.split(".").some(n=>!Ji.test(n)))&&l(),t}function oo(e,t){let n=Y(e,t),i=n.endsWith("=="),o=!i&&n.endsWith("="),s=n.at(i?-3:o?-2:-1)??"",r=Rn(s);return (n.length%4!==0||!Bi.test(n)||i&&(r&15)!==0||o&&(r&3)!==0)&&l(),n}function ro(e){return Rn(e,true)}function Rn(e,t=false){return (t?"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_":"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/").indexOf(e)}function so(e){let t=R(e,"name");return t===void 0?{}:(t!==null&&!_e(t)&&l(),{name:t})}function ao(e){let t=R(e,"transports");if(t==null||t==="")return t===void 0?{}:{transports:t};let n=t.split(",");return (n.length>Me||n.some(i=>!cn.has(i))||new Set(n).size!==n.length)&&l(),{transports:t}}function co(e){let t=R(e,"aaguid");return t==null?t===void 0?{}:{aaguid:null}:(Gi.test(t)||l(),{aaguid:t})}function Ve(e,t){let n=w(e);return t.has(n)||l(),n}function S(e,t){return t===void 0?{}:{[e]:t}}function me(e){new Set(e).size!==e.length&&l();}function uo(e){new Set(e).size!==e.length&&l();}function Sn(e,t=()=>{},n=lo){let i=ie(e),o=ct(i,e.decoded.projectId),s=n(i,o.notifyMutation),r=()=>{o.notifyMutation(),t();},{post:c,mutation:a}=J(i,r),h=e.decoded.env==="test";return {sessionStore:o.store,getSession:o.getSession,account:ft(i,r),organization:vt(i,r,()=>o.store.getSnapshot().data?.session.membership??null),signIn:{email:(u,d)=>a(c("/sign-in/email",u,d,Ue),f=>!("twoFactorRedirect"in f)),username:(u,d)=>a(c("/sign-in/username",u,d,Ue),f=>!("twoFactorRedirect"in f)),social:async(u,d)=>{let f=await a(c("/sign-in/social",u,d,g=>Nt(g,h)),g=>"user"in g);return f.error!==null||f.data===null||"url"in f.data&&f.data.redirect&&!u.disableRedirect&&typeof window<"u"&&window.location.assign(f.data.url),f},sso:async(u,d)=>{let f=await c("/sign-in/sso",u,d,g=>Lt(g,h));return f.error!==null||f.data===null||typeof window<"u"&&window.location.assign(f.data.url),f},magicLink:(u,d)=>c("/sign-in/magic-link",u,d,Mt),emailOtp:(u,d)=>a(c("/sign-in/email-otp",u,d,zt)),passkey:(u,d)=>s.signIn(u,d)},signUp:{email:(u,d)=>a(c("/sign-up/email",u,d,_t),f=>f.sessionCreated)},emailOtp:{sendVerificationOtp:(u,d)=>c("/email-otp/send-verification-otp",u,d,Ft),verifyEmail:(u,d)=>a(c("/email-otp/verify-email",u,d,Ht))},phoneOtp:{start:(u,d)=>c("/phone-otp/start",{...u,idempotencyKey:u.idempotencyKey??Ce()},d,Vt),verify:(u,d)=>a(c("/phone-otp/verify",u,d,qt))},requestPasswordReset:(u,d)=>c("/request-password-reset",u,d,ze),resetPassword:(u,d)=>c("/reset-password",u,d,ze),sendVerificationEmail:(u,d)=>c("/send-verification-email",u,d,Kt),passkey:{addPasskey:(u,d)=>s.add(u,d),listUserPasskeys:()=>i.request("/passkey/list-user-passkeys",{decode:gn}),updatePasskey:async(u,d)=>{let f=pe(u.name);if(!f.valid||f.value===void 0)return fe();let g=f.value;return c("/passkey/update-passkey",{...u,name:g},d,m=>mn(m,u.id,g))},deletePasskey:(u,d)=>c("/passkey/delete-passkey",u,d,hn)},twoFactor:{enable:(u,d)=>c("/two-factor/enable",u,d,jt),disable:(u,d)=>a(c("/two-factor/disable",u,d,Jt),f=>f.status),verifyTotp:(u,d)=>a(c("/two-factor/verify-totp",u,d,le)),verifyBackupCode:(u,d)=>a(c("/two-factor/verify-backup-code",u,d,le)),sendOtp:(u={},d)=>c("/two-factor/send-otp",u,d,Gt),verifyOtp:(u,d)=>a(c("/two-factor/verify-otp",u,d,le)),generateBackupCodes:(u,d)=>c("/two-factor/generate-backup-codes",u,d,Wt)},signOut:u=>a(i.request("/sign-out",{method:"POST",body:{},fetchOptions:u,decode:Bt}),d=>d.success)}}function lo(){return {signIn:()=>kn(),add:()=>kn()}}function kn(){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 xn(e,t,n){let i=new Map;return {async signIn(o={},s){let r=await e.request("/passkey/generate-authenticate-options");if(!r.data)return Pn(r.error);let c;try{c=ln(r.data);}catch{return Tn()}let a;try{a=await n.authenticate({optionsJSON:c,useBrowserAutofill:o.autoFill});}catch(g){return En(n,g,"AUTH_CANCELLED","Passkey authentication was cancelled.")}if(!po(a))return In();let{clientExtensionResults:h,...u}=a,d=i.get(a.id);if(d)return d;let f=(async()=>{let g=await e.request("/passkey/verify-authentication",{method:"POST",body:{response:u},fetchOptions:s,decode:pn});return g.data&&t(),g})();i.set(a.id,f);try{return await f}finally{i.get(a.id)===f&&i.delete(a.id);}},async add(o={},s){let r=pe(o.name);if(!r.valid)return fe();let c=await e.request("/passkey/generate-register-options",{query:{name:r.value,authenticatorAttachment:o.authenticatorAttachment}});if(!c.data)return Pn(c.error);let a;try{a=dn(c.data);}catch{return Tn()}let h;try{h=await n.register({optionsJSON:a});}catch(g){return En(n,g,"REGISTRATION_CANCELLED","Passkey registration was cancelled.")}if(!fo(h))return In();let{clientExtensionResults:u,...d}=h,f=await e.request("/passkey/verify-registration",{method:"POST",body:{response:d,name:r.value},fetchOptions:s,decode:g=>fn(g,h.id,r.value)});return f.data&&t(),f}}}function Tn(){return {data:null,error:{status:502,statusText:"BAD_GATEWAY",code:"INVALID_WEBAUTHN_OPTIONS",message:"The server returned invalid WebAuthn options."}}}function In(){return {data:null,error:{status:400,statusText:"BAD_REQUEST",code:"INVALID_WEBAUTHN_RESPONSE",message:"The platform returned an invalid passkey response."}}}function Cn(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 po(e){if(!Cn(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 fo(e){if(!Cn(e))return false;let t=e.response;return typeof t.clientDataJSON=="string"&&typeof t.attestationObject=="string"}function Pn(e){return {data:null,error:e??{status:502,statusText:"BAD_GATEWAY",code:"INVALID_WEBAUTHN_OPTIONS",message:"The server returned no WebAuthn options."}}}function En(e,t,n,i){let o=mo(t,"page does not have focus"),s=e.errorCode?.(t),r=s!==void 0?s==="ERROR_CEREMONY_ABORTED":go(t)==="AbortError";return {data:null,error:{status:400,statusText:"BAD_REQUEST",code:o?"PASSKEY_PAGE_NOT_FOCUSED":r?n:s??"PASSKEY_BROWSER_ERROR",message:o?"Keep this page focused while completing the passkey prompt.":r?i:n==="AUTH_CANCELLED"?"Passkey authentication could not be completed by this browser.":"Passkey registration could not be completed by this browser."}}}function go(e){return e&&typeof e=="object"&&"name"in e&&typeof e.name=="string"?e.name:void 0}function mo(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 C(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 K(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),r=new Uint8Array(s);for(let c=0;c<o.length;c++)r[c]=o.charCodeAt(c);return s}function H(){return ho.stubThis(globalThis?.PublicKeyCredential!==void 0&&typeof globalThis.PublicKeyCredential=="function")}var ho={stubThis:e=>e};function ye(e){let{id:t}=e;return {...e,id:K(t),transports:e.transports}}function Ae(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 b=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 Dn({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 b({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 b({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 b({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 b({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 b({message:"The authenticator was previously registered",code:"ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED",cause:e});if(e.name==="NotAllowedError")return new b({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 b({message:'No entry in pubKeyCredParams was of type "public-key"',code:"ERROR_MALFORMED_PUBKEYCREDPARAMS",cause:e}):new b({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(Ae(i)){if(n.rp.id!==i)return new b({message:`The RP ID "${n.rp.id}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:e})}else return new b({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 b({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 b({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 qe=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;}}},Oe=new qe;var yo=["cross-platform","platform"];function be(e){if(e&&!(yo.indexOf(e)<0))return e}async function vn(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(!H())throw new Error("WebAuthn is not supported in this browser");let i={...t,challenge:K(t.challenge),user:{...t.user,id:K(t.user.id)},excludeCredentials:t.excludeCredentials?.map(ye)},o={};n&&(o.mediation="conditional"),o.publicKey=i,o.signal=Oe.createNewAbortSignal();let s;try{s=await navigator.credentials.create(o);}catch(m){throw Dn({error:m,options:o})}if(!s)throw new Error("Registration was not completed");let{id:r,rawId:c,response:a,type:h}=s,u;typeof a.getTransports=="function"&&(u=a.getTransports());let d;if(typeof a.getPublicKeyAlgorithm=="function")try{d=a.getPublicKeyAlgorithm();}catch(m){Ke("getPublicKeyAlgorithm()",m);}let f;if(typeof a.getPublicKey=="function")try{let m=a.getPublicKey();m!==null&&(f=C(m));}catch(m){Ke("getPublicKey()",m);}let g;if(typeof a.getAuthenticatorData=="function")try{g=C(a.getAuthenticatorData());}catch(m){Ke("getAuthenticatorData()",m);}return {id:r,rawId:C(c),response:{attestationObject:C(a.attestationObject),clientDataJSON:C(a.clientDataJSON),transports:u,publicKeyAlgorithm:d,publicKey:f,authenticatorData:g},type:h,clientExtensionResults:s.getClientExtensionResults(),authenticatorAttachment:be(s.authenticatorAttachment)}}function Ke(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 Un(){if(!H())return He.stubThis(new Promise(t=>t(false)));let e=globalThis.PublicKeyCredential;return e?.isConditionalMediationAvailable===void 0?He.stubThis(new Promise(t=>t(false))):He.stubThis(e.isConditionalMediationAvailable())}var He={stubThis:e=>e};function zn({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 b({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:e})}else {if(e.name==="NotAllowedError")return new b({message:e.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e});if(e.name==="SecurityError"){let i=globalThis.location.hostname;if(Ae(i)){if(n.rpId!==i)return new b({message:`The RP ID "${n.rpId}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:e})}else return new b({message:`${globalThis.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e})}else if(e.name==="UnknownError")return new b({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 _n(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(!H())throw new Error("WebAuthn is not supported in this browser");let o;t.allowCredentials?.length!==0&&(o=t.allowCredentials?.map(ye));let s={...t,challenge:K(t.challenge),allowCredentials:o},r={};if(n){if(!await Un())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');r.mediation="conditional",s.allowCredentials=[];}r.publicKey=s,r.signal=Oe.createNewAbortSignal();let c;try{c=await navigator.credentials.get(r);}catch(g){throw zn({error:g,options:r})}if(!c)throw new Error("Authentication was not completed");let{id:a,rawId:h,response:u,type:d}=c,f;return u.userHandle&&(f=C(u.userHandle)),{id:a,rawId:C(h),response:{authenticatorData:C(u.authenticatorData),clientDataJSON:C(u.clientDataJSON),signature:C(u.signature),userHandle:f},type:d,clientExtensionResults:c.getClientExtensionResults(),authenticatorAttachment:be(c.authenticatorAttachment)}}var Nn={authenticate:e=>_n(e),register:e=>vn(e),errorCode:e=>e instanceof b?e.code:void 0};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),ne({fetchImpl:e.fetch??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 j(e,t){if(!e.response.ok)throw new we(t,e.response,e.requestId);return e.data}function Mn(e){return `${new URL(e.apiUrl).origin}/api/projects/${e.decoded.projectId}/consent`}async function Be(e){let t=await B(e,Mn(e),{init:{method:"GET",credentials:"include"},maxResponseBytes:65536,decode:Ao});return t.response.status===401?{required:false}:j(t,"consent status")}async function je(e,t){if(!Number.isSafeInteger(t)||t<1)throw new TypeError("Consent version must be a positive integer.");return j(await B(e,Mn(e),{init:{method:"POST",headers:{"content-type":"application/json"},credentials:"include",body:JSON.stringify({version:t})},maxResponseBytes:64*1024,decode:Oo}),"consent accept")}function Ao(e){let t=p(e),n=O(t.required),i=bo(t.needsConsent),o=Fn(t.version),s=Ln(t.termsUrl),r=Ln(t.privacyUrl);return {required:n,...i===void 0?{}:{needsConsent:i},...o===void 0?{}:{version:o},...s===void 0?{}:{termsUrl:s},...r===void 0?{}:{privacyUrl:r}}}function Oo(e){let t=p(e),n=Fn(t.version);return {ok:O(t.ok),...n===void 0?{}:{version:n}}}function bo(e){if(e===void 0||typeof e=="boolean")return e;throw new TypeError("Invalid consent response.")}function Fn(e){if(e===void 0||Number.isSafeInteger(e)&&e>=1)return e;throw new TypeError("Invalid consent response.")}function Ln(e){if(e===void 0||typeof e=="string"&&e.length<=4096)return e;throw new TypeError("Invalid consent response.")}var wo=30;function Ro(e){return typeof e?.exp=="number"?e.exp:null}function ko(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 Je(e){let t=new Map;async function n(s={}){let r=s.template===void 0?null:s.template.trim().toLowerCase();if(r==="")throw new TypeError("Template missing");let c=r??"",a=t.get(c);a||(a={activeKey:null,cachedByKey:new Map,inflight:null,sequence:0},t.set(c,a));let h=s.forceRefresh===true;if(!h){let m=a.activeKey?a.cachedByKey.get(a.activeKey):null;if(m&&m.exp-Date.now()/1e3>wo)return m.token;if(a.inflight)return a.inflight}let u=++a.sequence,d=()=>t.get(c)===a&&a.sequence===u,f=(async()=>{let m=r?`${e.projectBaseURL}/token/${encodeURIComponent(r)}`:`${e.projectBaseURL}/token`,U=await B(e,m,{init:{method:"GET",credentials:"include"},maxResponseBytes:64*1024,decode:q=>So(q,r!==null)});if(U.response.status===401)return d()&&i(),null;let y=j(U,"token"),v=y.policyVersion,z=y.token,V=ko(z),X=Ro(V);if(d())if(X!==null){let q=typeof V?.sub=="string"?V.sub:null,Re=typeof V?.org_id=="string"?V.org_id:null;if(!r||q){let Ye=JSON.stringify([e.projectBaseURL,q,Re,r,v]);a.cachedByKey.clear(),a.cachedByKey.set(Ye,{token:z,exp:X}),a.activeKey=Ye;}else o(a);}else o(a);return z})();if(h)return f;let g=f.finally(()=>{a.inflight===g&&(a.inflight=null);});return a.inflight=g,g}function i(){t.clear();}function o(s){s.cachedByKey.clear(),s.activeKey=null;}return {getToken:n,clear:i}}function So(e,t){let n=p(e),i=w(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=p(n.template);if(!Number.isSafeInteger(o.policyVersion)||o.policyVersion<1)throw new TypeError("Invalid token response.");return {token:i,policyVersion:o.policyVersion}}function To(e){let t=Je(e),n=Sn(e,t.clear,(r,c)=>xn(r,c,Nn)),i=ie(e,`${new URL(e.apiUrl).origin}/api/projects/${e.decoded.projectId}`),o=r=>(...c)=>(t.clear(),r(...c)),s={getConsentStatus:()=>Be(e),acceptConsent:r=>je(e,r),getToken:t.getToken,waitlist:{join:(r,c)=>i.request("/waitlist",{method:"POST",body:r,fetchOptions:c,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:{start:n.phoneOtp.start,verify:o(n.phoneOtp.verify)},signOut:o(n.signOut)};return {...n,...s}}async function Io(e){let n=`${new URL(e.apiUrl).origin}/api/projects/${e.decoded.projectId}/public-config`;return j(await B(e,n,{init:{method:"GET",credentials:"omit"},maxResponseBytes:256*1024,decode:i=>Po(i,e)}),"public-config")}function Po(e,t){let n=_(e),i=n.environmentId,o=n.environmentType,s=`${new URL(t.apiUrl).origin}/api/projects/${t.decoded.projectId}/auth`;if(typeof n.applicationId!="string"||!Eo(n.applicationId)||i!==t.decoded.projectId||o!=="development"&&o!=="production"||n.authBaseUrl!==s)throw D();let r=P(n.branding),c=P(n.legal);if(!Ge(n.enabledMethods,64)||!Ge(n.socialProviders,64)||!qn(r,["appName","logoUrl","primaryColor"])||r.showAppName!==void 0&&typeof r.showAppName!="boolean"||r.alignment!==void 0&&r.alignment!=="left"&&r.alignment!=="center"&&r.alignment!=="right"||r.theme!==void 0&&r.theme!=="light"&&r.theme!=="dark"&&r.theme!=="system"||!qn(c,["termsUrl","privacyUrl"])||!Number.isSafeInteger(c.version)||c.version<0||typeof c.required!="boolean")throw D();if(n.socialProviderClientIds!==void 0){let a=P(n.socialProviderClientIds);if(Object.keys(a).length>64||Object.values(a).some(h=>typeof h!="string"||h.length>2048))throw D()}if(!L(n,["requireEmailVerification","twoFactor","mfaRequired","accountDeletion","organizations","sso","badge"])||!Vn(n.turnstileSiteKey)||!Vn(n.authTurnstileSiteKey)||typeof n.locale!="string"||n.locale.length===0||n.locale.length>64||!Number.isSafeInteger(n.configVersion)||n.configVersion<0)throw D();if(n.jwtIssuer!==null){let a=P(n.jwtIssuer);if(a.issuer!==s||a.jwksUrl!==`${s}/jwks`||a.aud!==t.decoded.projectId)throw D()}if(n.signUp!==void 0){let a=P(n.signUp).mode;if(typeof a!="string"||!["open","restricted","allowlist","waitlist"].includes(a))throw D()}if(n.authentication!==void 0&&xo(n.authentication),n.emailVerification!==void 0){let a=P(n.emailVerification);if(!L(a,["required"])||a.method!=="link"&&a.method!=="code")throw D()}if(n.userModel!==void 0&&!L(P(n.userModel),["requireEmail","firstLastName","emailChange","accountDeletion"]))throw D();if(n.mfa!==void 0){let a=P(n.mfa);if(!L(a,["totp","required","backupCodes"])||(a.required===true||a.backupCodes===true)&&a.totp!==true)throw D()}return n}function Eo(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 D(){return new TypeError("public-config returned an invalid response")}function P(e){if(!e||typeof e!="object"||Array.isArray(e))throw D();return e}function Vn(e){return e===null||typeof e=="string"&&e.length<=4096}function xo(e){let t=P(e),n=P(t.email),i=P(t.password),o=i.minLength!==void 0||i.maxLength!==void 0;if(!L(n,["signUp"])||!Ge(n.signIn,3)||n.signIn.some(s=>s!=="password"&&s!=="magic_link"&&s!=="email_otp")||!L(P(t.phone),["signUp","signIn"])||!L(i,["signUp","add"])||o&&(!Number.isSafeInteger(i.minLength)||!Number.isSafeInteger(i.maxLength)||i.minLength<1||i.maxLength>4096||i.minLength>i.maxLength)||!L(P(t.passkey),["signIn","add"])||!L(P(t.username),["collectOnSignUp","signIn"]))throw D()}function L(e,t){return t.every(n=>typeof e[n]=="boolean")}function qn(e,t){return t.every(n=>e[n]===void 0||typeof e[n]=="string"&&e[n].length<=4096)}function Ge(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 te=class extends Error{constructor(n,i){super(n);this.cause=i;this.name="AuthOwlError";}cause},We=class extends te{constructor(n,i){super(`Rate limited. Retry after ${n}s.`,i);this.retryAfterSeconds=n;this.name="RateLimitedError";}retryAfterSeconds},$e=class extends te{constructor(t="invalid publishable key",n){super(t,n),this.name="InvalidKeyError";}};var Kn=["en","ar"];function Co(e){return e==="ar"?"rtl":"ltr"}function Do(e){return typeof e=="string"&&Kn.includes(e)}
|
|
3
|
-
exports.AUTH_CHALLENGE_HEADER=
|
|
1
|
+
'use strict';var oi=Object.defineProperty;var nt=(e,t)=>()=>(e&&(t=e(e=0)),t);var ri=(e,t)=>{for(var n in t)oi(e,n,{get:t[n],enumerable:true});};function Z(){return typeof window<"u"&&typeof document<"u"&&typeof crypto<"u"&&typeof crypto.subtle?.digest=="function"}var Ue=nt(()=>{});var Ae={};ri(Ae,{beginCrossSiteSignIn:()=>No,challengeFor:()=>Un,completeCrossSiteSignIn:()=>Lo,takeHandoffCode:()=>zn});function vn(e){let t="";for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function Un(e){let t=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(e));return vn(new Uint8Array(t))}function Uo(){return vn(crypto.getRandomValues(new Uint8Array(Co)))}function _n(e,t){let n=window.location.protocol==="https:"?"; Secure":"";document.cookie=`${Dn}=${e}; Path=/; Max-Age=${t}; SameSite=Lax${n}`;}function _o(){for(let e of document.cookie.split(";")){let t=e.indexOf("=");if(!(t<0)&&e.slice(0,t).trim()===Dn)return e.slice(t+1).trim()||null}return null}function zo(){_n("",0);}function Cn(e){return new URL(e,window.location.href).toString()}async function No(e,t){let n=t.callbackURL?Cn(t.callbackURL):null;if(n&&new URL(n).origin!==window.location.origin)return null;let i=Uo(),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 r of vo){let c=t[r];c&&o.searchParams.set(r,c);}let s=`${window.location.origin}${window.location.pathname}${window.location.search}`;o.searchParams.set("cb",n??s);for(let[r,c]of [["err",t.errorCallbackURL],["new",t.newUserCallbackURL]])c&&o.searchParams.set(r,Cn(c));return o.searchParams.set("challenge",await Un(i)),_n(i,Do),o.toString()}function zn(){if(typeof window>"u")return null;let e=window.location.hash;if(!e.includes(je))return null;let t=new URLSearchParams(e.replace(/^#/,"")),n=t.get(je);if(!n)return null;t.delete(je);let i=t.toString();return window.history.replaceState(window.history.state,"",`${window.location.pathname}${window.location.search}${i?`#${i}`:""}`),n}async function Lo(e){if(!Z())return false;let t=zn();if(!t)return false;let n=_o();if(zo(),!n)return false;let{error:i}=await e.request("/session/exchange",{method:"POST",body:{code:t,verifier:n}});return i===null}var Dn,je,Co,Do,vo,Oe=nt(()=>{Ue();Dn="authowl_handoff_verifier",je="authowl_code",Co=32,Do=900,vo=["email","providerId","domain","organizationSlug"];});var si=/^(pk_(live|test))_([0-9a-f-]{36})_([A-Za-z0-9]{20,})$/i,ai=/^sk_/i;function Pe(e){if(typeof e!="string"||e.length===0)throw new Error("publishableKey is required");if(ai.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=si.exec(e);if(!t)throw new Error("publishableKey is malformed; expected pk_(live|test)_<uuid>_<base62>");return {prefix:t[1],env:t[2],projectId:t[3]}}function ci(e,t){let n=`p_${e.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 Ie(e,t){throw new Error(`${e}: ${t}`)}function ot(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 rt(e,t){(typeof e!="string"||!/^https?:\/\/[^/?#@\\\s]+\/?$/i.test(e))&&Ie("apiUrl","origin required");let n;try{n=new URL(e);}catch{Ie("apiUrl","origin required");}return n.protocol==="http:"&&(!t.allowHttpLoopback||!it.test(e))&&Ie("apiUrl","HTTPS required except exact loopback"),n.origin}function ui(e){if(!e||typeof e!="object")throw new Error("AuthConfig is required");let t=Pe(e.publishableKey),n=rt(e.apiUrl,{allowHttpLoopback:t.env==="test"}),i=`${n}/api/projects/${t.projectId}/auth`;return {...e,apiUrl:n,decoded:t,projectBaseURL:i}}function li(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(r=>r==="password"||r==="magic_link"||r==="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 di=1e4,pi=1024*1024,P=class extends Error{kind;requestId;constructor(t,n){super(bi(t)),this.name="TransportError",this.kind=t,this.requestId=n;}},ct=new WeakSet;function I(e,t){let n=new P(e,t);return ct.add(n),n}async function ie({fetchImpl:e,url:t,init:n={},timeoutMs:i=di,maxResponseBytes:o=pi,allowHttpLoopback:s=false,decode:r}){at(i,"timeoutMs"),at(o,"maxResponseBytes");let c=ot(t,{allowHttpLoopback:s}),a=n.signal,g=new AbortController,m=null,y,u=new Promise(h=>{y=h;}),l=h=>{m===null&&(m=h,y({type:"abort",kind:h}),g.abort());},f=()=>l("aborted");a?.addEventListener("abort",f,{once:true});let w=setTimeout(()=>l("timeout"),i);a?.aborted&&f();try{if(m!==null)throw I(m);let h;try{h=await Promise.race([e(c.toString(),{...n,redirect:"error",signal:g.signal}).then(Te=>({type:"response",response:Te})),u]);}catch{throw I(m??"network")}if(h.type==="abort")throw I(h.kind);if(!fi(h.response))throw I("invalid_response");let U=h.response,_=Oi(U.headers),V=await gi(U,o,u,()=>m,_),X=yi(U,V,_),q;try{q=U.ok&&r?r(X,Object.freeze({status:U.status})):X;}catch{throw I("invalid_response",_)}return {response:U,data:q,..._===void 0?{}:{requestId:_}}}catch(h){throw h instanceof P&&ct.has(h)?h:I(m??"network")}finally{clearTimeout(w),a?.removeEventListener("abort",f);}}function fi(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 gi(e,t,n,i,o){let s=e.headers.get("content-length");if(s!==null){if(!/^\d+$/.test(s))throw st(e.body),I("invalid_response",o);if(Number(s)>t)throw st(e.body),I("response_too_large",o)}if(!e.body)return "";let r;try{r=e.body.getReader();}catch{throw I("network",o)}let c=[],a=0,g=null;try{for(;;){let u;try{u=await Promise.race([r.read(),n]);}catch{g=I(i()??"network",o);break}if(mi(u)){g=I(u.kind,o);break}let{done:l,value:f}=u;if(l)break;if(f.byteLength!==0){if(a+=f.byteLength,a>t){g=I("response_too_large",o);break}c.push(f);}}}finally{g&&hi(r);try{r.releaseLock();}catch{}}if(g)throw g;let m=new Uint8Array(a),y=0;for(let u of c)m.set(u,y),y+=u.byteLength;try{return new TextDecoder("utf-8",{fatal:!0}).decode(m)}catch{throw I("invalid_response",o)}}function mi(e){return "type"in e&&e.type==="abort"}function st(e){if(e)try{e.cancel().catch(()=>{});}catch{}}function hi(e){try{e.cancel().catch(()=>{});}catch{}}function yi(e,t,n){if(e.status===204||e.status===205)return null;let i=Ai(e.headers.get("content-type"));if(!e.ok&&(!i||t.length===0))return null;if(!i||t.length===0)throw I("invalid_response",n);try{return JSON.parse(t)}catch{if(!e.ok)return null;throw I("invalid_response",n)}}function Ai(e){if(e===null)return false;let t=e.split(";",1)[0]?.trim().toLowerCase();return t==="application/json"||t?.endsWith("+json")===true}function Oi(e){let t=e.get("x-request-id")?.trim();if(!(!t||t.length>256||!/^[A-Za-z0-9._:-]+$/.test(t)))return t}function at(e,t){if(!Number.isInteger(e)||e<=0)throw new TypeError(`${t} must be a positive integer.`)}function bi(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 dt="x-authowl-turnstile-token",wi=1e4,ki=32,Ri=2e4;function J(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 oe(e,t=e.projectBaseURL){return {async request(n,i={}){let o=Pi(t,n,i.query),s=i.method??(i.body===void 0?"GET":"POST"),r=new Headers(i.fetchOptions?.headers);r.set("x-publishable-key",e.publishableKey),i.fetchOptions?.authChallengeToken&&r.set(dt,i.fetchOptions.authChallengeToken),i.body!==void 0&&r.set("content-type","application/json");let c={method:s,headers:r,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 g=Ti(s,i.fetchOptions),m;try{m=await Si(e,o,{...c,signal:i.fetchOptions?.signal},g);}catch(h){let U=lt(h);return await i.fetchOptions?.onError?.(Ee(a,U,xi(h))),{data:null,error:U}}let{response:y,requestId:u}=m,l=vi(n,m.data),f=l;if(y.ok)try{f=Ce(l),i.decode&&(f=i.decode(f));}catch{let h=lt(new P("invalid_response",u));return await i.fetchOptions?.onError?.(Ee(a,h,"invalid_response")),{data:null,error:h}}let w=Object.freeze({...a,status:y.status,...u===void 0?{}:{requestId:u}});if(await i.fetchOptions?.onResponse?.(w),!y.ok){let h=Ii(y,l,u);return await i.fetchOptions?.onError?.(Ee(a,h,"api")),{data:null,error:h}}return await i.fetchOptions?.onSuccess?.(w),{data:f,error:null}}}}async function Si(e,t,n,i){let o=Date.now()+wi;for(let s=0;s<i;s+=1){let r=o-Date.now();if(r<=0)throw new P("timeout");try{let c=await ie({fetchImpl:e.fetch??fetch,url:t,init:n,timeoutMs:Math.max(1,Math.ceil(r)),allowHttpLoopback:e.decoded.env==="test"});if(c.response.status<500||s===i-1)return c}catch(c){if(s===i-1||!(c instanceof P)||c.kind!=="network")throw c}await Ci(50*2**s,n.signal,o);}throw new P("network")}function Ti(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 Pi(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 Ii(e,t,n){let i=Q(t)?t:{},o=Ei(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 Ei(e,t){let n=(typeof e.retryAfterSeconds=="number"&&Number.isFinite(e.retryAfterSeconds)?e.retryAfterSeconds:void 0)??ut(t.get("retry-after"))??ut(t.get("x-retry-after"));if(n!==void 0)return Math.min(Math.max(Math.trunc(n),1),86400)}function ut(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 lt(e){let t=e instanceof P?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 P&&e.requestId?{requestId:e.requestId}:{}}}function Ee(e,t,n){return Object.freeze({...e,status:t.status??0,...t.requestId===void 0?{}:{requestId:t.requestId},failure:n})}function xi(e){return e instanceof P?e.kind:"network"}function Ci(e,t,n){return new Promise((i,o)=>{if(t?.aborted){o(new P("aborted"));return}let s=n-Date.now();if(s<=0){o(new P("timeout"));return}let r=Math.min(e,s),c=()=>{clearTimeout(a),o(new P("aborted"));},a=setTimeout(()=>{t?.removeEventListener("abort",c),Date.now()>=n?o(new P("timeout")):i();},r);t?.addEventListener("abort",c,{once:true}),t?.aborted&&c();})}function Ce(e,t="",n=0,i={nodes:0}){if(i.nodes+=1,n>ki||i.nodes>Ri)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=>Ce(o,"",n+1,i)):Q(e)?Object.fromEntries(Object.entries(e).map(([o,s])=>[o,Di(o)?s:Ce(s,o,n+1,i)])):e}function Di(e){return e==="metadata"||e==="public_metadata"||e==="unsafe_metadata"||e==="private_metadata"||e==="publicMetadata"||e==="unsafeMetadata"||e==="privateMetadata"}function vi(e,t){if(e==="/list-sessions"&&Array.isArray(t))return t.map(o=>Q(o)?xe(o):o);if(!Q(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-")?xe(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")&&Q(i.session)&&(i={...i,session:xe(i.session)}),i}function xe(e){if(!Object.hasOwn(e,"token"))return e;let t={...e};return delete t.token,t}function Q(e){return !!e&&typeof e=="object"&&!Array.isArray(e)}var Ui=new Set(["__proto__","constructor","prototype"]);function p(e){(!e||typeof e!="object"||Array.isArray(e))&&d();let t=Object.getPrototypeOf(e);return t!==Object.prototype&&t!==null&&d(),e}function A(e){return typeof e!="string"&&d(),e}function b(e){return typeof e!="boolean"&&d(),e}function S(e){return (!(e instanceof Date)||Number.isNaN(e.getTime()))&&d(),e}function re(e){return (!Array.isArray(e)||!e.every(t=>typeof t=="string"))&&d(),[...e]}function R(e,t){let n=e[t];return n==null||typeof n=="string"?n:d()}function pt(e,t){let n=e[t];return n==null||typeof n=="boolean"?n:d()}function C(e){let t=p(e),n=t.email;return n!==null&&typeof n!="string"&&d(),{id:A(t.id),email:n,emailVerified:b(t.emailVerified),createdAt:S(t.createdAt),updatedAt:S(t.updatedAt),...x("phoneNumber",R(t,"phoneNumber")),...x("username",R(t,"username")),...x("displayUsername",R(t,"displayUsername")),...x("firstName",R(t,"firstName")),...x("lastName",R(t,"lastName")),...x("name",R(t,"name")),...x("image",R(t,"image")),...x("twoFactorEnabled",pt(t,"twoFactorEnabled"))}}function se(e){let t=p(e),n=t.membership;return {id:A(t.id),userId:A(t.userId),expiresAt:S(t.expiresAt),...x("activeOrganizationId",R(t,"activeOrganizationId")),...x("activeTeamId",R(t,"activeTeamId")),...x("membership",n==null?n:_i(n)),...x("pendingMfaEnrollment",pt(t,"pendingMfaEnrollment"))}}function d(){throw new TypeError("AuthOwl response does not match its runtime contract.")}function z(e,t=20,n=1e4){return (!e||typeof e!="object"||Array.isArray(e))&&d(),ve(e,t,n)}function ve(e,t=20,n=1e4){return De(e,0,{nodes:0},t,n)}function _i(e){let t=p(e);return {role:A(t.role),permissions:re(t.permissions),...t.teams===void 0?{}:{teams:re(t.teams)}}}function De(e,t,n,i,o){if(n.nodes+=1,(t>i||n.nodes>o)&&d(),e===null||typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)||d(),e;if(Array.isArray(e))return e.map(c=>De(c,t+1,n,i,o));(!e||typeof e!="object")&&d();let s=Object.getPrototypeOf(e);s!==Object.prototype&&s!==null&&d();let r={};for(let[c,a]of Object.entries(e))Ui.has(c)&&d(),r[c]=De(a,t+1,n,i,o);return r}function x(e,t){return t===void 0?{}:{[e]:t}}function gt(e,t){let n=new Set,i=null,o=null,s=null,r,c=l=>{m(l);};r={data:null,isPending:true,isRefetching:false,error:null,refetch:c};function a(l){r=l;for(let f of n)f();}async function g(l){return e.request("/get-session",{query:l?.query,decode:ft})}async function m(l){s?.abort();let f=new AbortController;s=f,a({...r,isPending:r.data===null&&r.error===null,isRefetching:r.data!==null});let w=await e.request("/get-session",{query:l?.query,fetchOptions:{signal:f.signal},decode:ft});s===f&&(s=null,a({data:w.data,error:w.error,isPending:false,isRefetching:false,refetch:c}));}function y(){if(typeof window>"u"||o)return;let l=()=>{m();},f=()=>{document.visibilityState==="visible"&&m();};window.addEventListener("focus",l),document.addEventListener("visibilitychange",f),typeof BroadcastChannel<"u"&&(i=new BroadcastChannel(`authowl:${t}`),i.addEventListener("message",l)),o=()=>{window.removeEventListener("focus",l),document.removeEventListener("visibilitychange",f),i?.close(),i=null,o=null;};}function u(l){return n.add(l),n.size===1&&(y(),m()),()=>{n.delete(l),n.size===0&&(s?.abort(),s=null,o?.());}}return {store:{subscribe:u,getSnapshot:()=>r},getSession:g,notifyMutation(){i?.postMessage({type:"session-changed"}),n.size>0&&m({query:{disableCookieCache:true}});}}}function ft(e){if(e===null)return null;let t=p(e);return (t.session===void 0||t.user===void 0)&&d(),{session:se(t.session),user:C(t.user)}}Ue();function _e(){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 mt(e,t){return e.request("/user/metadata",{fetchOptions:t,decode:yt})}async function ht(e,t,n){return e.request("/user/metadata",{method:"PATCH",body:{expected_version:t.expectedVersion,unsafe_metadata:t.unsafeMetadata},fetchOptions:n,decode:yt})}function yt(e){let t=p(e),n=z(t.public_metadata),i=z(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 Ot(e,t){let{post:n,mutation:i}=J(e,t);return {getMetadata:o=>mt(e,o),updateUnsafeMetadata:(o,s)=>ht(e,o,s),updateProfile:(o,s)=>i(n("/update-user",o,s,ee)),changeEmail:(o,s)=>i(n("/change-email",o,s,ee)),changePassword:(o,s)=>i(n("/change-password",o,s,zi)),listSessions:o=>e.request("/list-sessions",{fetchOptions:o,decode:Ni}),revokeSession:({sessionId:o},s)=>i(n("/revoke-session",{sessionId:o},s,ee)),revokeOtherSessions:o=>i(n("/revoke-other-sessions",{},o,ee)),listSocialAccounts:async o=>{let s=await e.request("/list-accounts",{fetchOptions:o,decode:Li});if(!s.data)return {data:null,error:s.error};let r=s.data.length>1;return {...s,data:s.data.filter(c=>c.providerId!=="credential").map(c=>({...c,canUnlink:r}))}},linkSocial:(o,s)=>n("/link-social",o,s,Mi),unlinkSocial:(o,s)=>i(n("/unlink-account",o,s,ee)),delete:(o={},s)=>i(n("/delete-user",o,s,Fi))}}function ee(e){let t=p(e);return {status:b(t.status)}}function zi(e){let t=p(e);return {user:C(t.user)}}function Ni(e){return Array.isArray(e)||d(),e.map(t=>{let n=p(t);return {id:A(n.id),userId:A(n.userId),createdAt:S(n.createdAt),updatedAt:S(n.updatedAt),expiresAt:S(n.expiresAt),...At("ipAddress",R(n,"ipAddress")),...At("userAgent",R(n,"userAgent"))}})}function Li(e){return Array.isArray(e)||d(),e.map(t=>{let n=p(t);return {id:A(n.id),userId:A(n.userId),providerId:A(n.providerId),accountId:A(n.accountId),scopes:re(n.scopes),createdAt:S(n.createdAt),updatedAt:S(n.updatedAt)}})}function Mi(e){let t=p(e);return {url:A(t.url),redirect:b(t.redirect)}}function Fi(e){let t=p(e);return {success:b(t.success),message:A(t.message)}}function At(e,t){return t===void 0?{}:{[e]:t}}function ae(e,t){return !e||!t?false:e.permissions.includes(t)}function bt(e,t){return !e||!t?false:e.teams?.includes(t)??false}function ce(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&&e.role!==n||i!==void 0&&!e.permissions.includes(i)||o!==void 0&&!bt(e,o))}function Vi(e){return {has:t=>ce(e,t),hasPermission:t=>ae(e,t.permission)}}var qi=new Set(["pending","accepted","rejected","canceled"]),wt=1e4;function G(e,t,n){let i=p(e),o={id:O(i.id),name:O(i.name),slug:O(i.slug),createdAt:S(i.createdAt),...ue("logo",R(i,"logo")),...ue("metadata",i.metadata===void 0?void 0:ve(i.metadata))};return M(o.id,t),M(o.slug,n),o}function kt(e){return F(e,G)}function ze(e,t,n){return e===null?null:(t===null&&d(),G(e,t,n))}function Rt(e,t,n){if(e===null)return null;let i=p(e),o=G(i,t,n);return {...o,members:F(i.members,s=>Nt(s,o.id)),invitations:F(i.invitations,s=>N(s,void 0,o.id))}}function St(e,t){let n=F(e,i=>zt(i));return le(n.map(i=>i.organizationId),t),n}function Tt(e,t,n){return e===null?null:(t===null&&d(),zt(e,t,n))}function Pt(e,t){let n=p(e);return (!Number.isSafeInteger(n.total)||n.total<0)&&d(),{members:Ki(n.members,t),total:n.total}}function N(e,t,n){let i=p(e),o=O(i.status);qi.has(o)||d();let s={id:O(i.id),organizationId:O(i.organizationId),email:O(i.email),role:O(i.role),status:o,inviterId:O(i.inviterId),expiresAt:S(i.expiresAt),createdAt:S(i.createdAt)};return M(s.id,t),M(s.organizationId,n),s}function It(e,t){let n=F(e,i=>N(i));return le(n.map(i=>i.organizationId),t),n}function Et(e){return F(e,t=>{let n=p(t);return {...N(n),organizationName:O(n.organizationName)}})}function xt(e,t){let n=p(e);return {...N(n,t),organizationName:O(n.organizationName),organizationSlug:O(n.organizationSlug),inviterEmail:O(n.inviterEmail)}}function Ct(e,t){let n=p(e),i=N(n.invitation,t);return {invitation:i,member:W(n.member,void 0,i.organizationId)}}function Dt(e,t){let n=p(e);return n.member!==null&&d(),{invitation:n.invitation===null?null:N(n.invitation,t),member:null}}function vt(e,t){return e===null?null:N(e,t)}function Ut(e,t,n){let i=p(e);return {member:W(i.member,n,t)}}function W(e,t,n){let i=p(e),o={id:O(i.id),organizationId:O(i.organizationId),userId:O(i.userId),role:O(i.role),createdAt:S(i.createdAt),...i.user===void 0?{}:{user:Lt(i.user)}};return M(o.id,t),M(o.organizationId,n),o}function _t(e,t){let n=F(e,i=>{let o=p(i);return {organizationId:O(o.organizationId),data:{role:O(o.role),...ue("permission",o.permission===void 0?void 0:Hi(o.permission))}}});return le(n.map(i=>i.organizationId),t),n.map(i=>i.data)}function zt(e,t,n){let i=p(e),o=i.updatedAt,s={id:O(i.id),name:O(i.name),organizationId:O(i.organizationId),createdAt:S(i.createdAt),...o===void 0?{}:{updatedAt:S(o)}};return M(s.id,t),M(s.organizationId,n),s}function Nt(e,t){let n=p(e);return {...W(n,void 0,t),user:Lt(n.user)}}function Ki(e,t){let n=F(e,i=>Nt(i));return le(n.map(i=>i.organizationId),t),n}function Hi(e){let t=p(e),n={};for(let[i,o]of Object.entries(t))(i==="__proto__"||i==="constructor"||i==="prototype"||i.length===0||i.length>wt||!Array.isArray(o))&&d(),n[i]=o.map(s=>O(s));return n}function O(e){let t=A(e);return (t.length===0||t.length>wt)&&d(),t}function M(e,t){t!==void 0&&e!==t&&d();}function le(e,t){let n=t??e[0];n!==void 0&&e.some(i=>i!==n)&&d();}function Lt(e){let t=p(e);return {id:O(t.id),name:O(t.name),email:O(t.email),...ue("image",R(t,"image"))}}function F(e,t){return Array.isArray(e)||d(),e.map(n=>t(n))}function ue(e,t){return t===void 0?{}:{[e]:t}}function Mt(e,t,n=()=>null){let{post:i,mutation:o}=J(e,t),s=(r,c,a,g)=>e.request(r,{query:c,fetchOptions:a,decode:g});return {create:(r,c)=>o(i("/organization/create",r,c,G)),list:r=>s("/organization/list",void 0,r,kt),get:(r={},c)=>s("/organization/get-full-organization",{organizationId:r.organizationId,organizationSlug:r.organizationSlug,membersLimit:r.membersLimit},c,a=>Rt(a,r.organizationId,r.organizationSlug)),setActive:(r,c)=>o(i("/organization/set-active",r,c,a=>ze(a,r.organizationId,r.organizationSlug))),listTeams:(r={},c)=>s("/organization/list-teams",{organizationId:r.organizationId},c,a=>St(a,r.organizationId)),setActiveTeam:(r,c)=>o(i("/organization/set-active-team",r,c,a=>Tt(a,r.teamId))),update:(r,c)=>o(i("/organization/update",r,c,a=>ze(a,r.organizationId))),delete:(r,c)=>o(i("/organization/delete",r,c,a=>G(a,r.organizationId))),listMembers:(r={},c)=>s("/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},c,a=>Pt(a,r.organizationId)),inviteMember:(r,c)=>o(i("/organization/invite-member",r,c,a=>N(a,void 0,r.organizationId))),listInvitations:(r={},c)=>s("/organization/list-invitations",{organizationId:r.organizationId},c,a=>It(a,r.organizationId)),listUserInvitations:r=>s("/organization/list-user-invitations",void 0,r,Et),getInvitation:(r,c)=>s("/organization/get-invitation",{id:r.id},c,a=>xt(a,r.id)),acceptInvitation:(r,c)=>o(i("/organization/accept-invitation",r,c,a=>Ct(a,r.invitationId))),rejectInvitation:(r,c)=>o(i("/organization/reject-invitation",r,c,a=>Dt(a,r.invitationId))),cancelInvitation:(r,c)=>o(i("/organization/cancel-invitation",r,c,a=>vt(a,r.invitationId))),removeMember:(r,c)=>o(i("/organization/remove-member",r,c,a=>Ut(a,r.organizationId,r.memberIdOrEmail.includes("@")?void 0:r.memberIdOrEmail))),updateMemberRole:(r,c)=>o(i("/organization/update-member-role",r,c,a=>W(a,r.memberId,r.organizationId))),leave:(r,c)=>o(i("/organization/leave",r,c,a=>W(a,void 0,r.organizationId))),listRoles:(r={},c)=>s("/organization/list-roles",{organizationId:r.organizationId},c,a=>_t(a,r.organizationId)),has:r=>ce(n(),r),hasPermission:r=>ae(n(),r.permission)}}var Ft=4096,Bi=4096,ji=100,Ji=256,Gi=16,Wi=64,$i=12;function Le(e){let t=p(e);return t.twoFactorRedirect===true?((t.user!==void 0||t.redirect!==void 0||t.url!==void 0)&&d(),{twoFactorRedirect:true,...t.twoFactorMethods===void 0?{}:{twoFactorMethods:on(t.twoFactorMethods,Gi,Wi)}}):(t.twoFactorRedirect!==void 0&&d(),{redirect:b(t.redirect),...eo(t,"url"),user:C(t.user)})}function Vt(e){let t=p(e);return {user:C(t.user)}}function qt(e){let t=p(e);return {sessionCreated:b(t.sessionCreated),user:C(t.user)}}function Kt(e,t){let n=p(e),i=b(n.redirect);n.user===null&&d();let o=n.user!==void 0&&n.user!==null,s=n.url!==void 0&&n.url!==null;return i?((o||!s)&&d(),{redirect:true,url:Ne(n.url,t)}):(o===s&&d(),o?{redirect:false,user:C(n.user)}:{redirect:false,url:Ne(n.url,t)})}function Ht(e,t){let n=p(e);return (n.redirect!==true||n.user!==void 0)&&d(),{redirect:true,url:Ne(n.url,t)}}function Bt(e){return {status:b(p(e).status)}}function jt(e){return {success:b(p(e).success)}}function Jt(e){return p(e).status!=="pending"&&d(),{status:"pending"}}function Gt(e){let t=p(e);if(t.kind==="authowl_turnstile")return {kind:"authowl_turnstile"};t.kind!=="akedly_shield_v1_2"&&d();let n=p(t.turnstile),i=n.siteKey===null?null:A(n.siteKey);return {kind:"akedly_shield_v1_2",connectionId:A(t.connectionId),challenge:A(t.challenge),difficulty:Yi(t.difficulty),challengeToken:A(t.challengeToken),challengeRequired:b(t.challengeRequired),turnstile:{required:b(n.required),siteKey:i}}}function Yi(e){return (!Number.isSafeInteger(e)||Number(e)<0||Number(e)>$i)&&d(),Number(e)}function Wt(e){let t=p(e);return (t.status!==true||t.sessionCreated!==true)&&d(),{status:true,sessionCreated:true,user:Xi(t.user)}}function Me(e){return {status:b(p(e).status)}}function $t(e){return {status:b(p(e).status)}}function Yt(e){let t=p(e);return {status:b(t.status),user:C(t.user)}}function Xt(e){return {success:b(p(e).success)}}function Qt(e){let t=p(e);return {totpURI:Zi(t.totpURI),backupCodes:nn(t.backupCodes)}}function Zt(e){return {status:b(p(e).status)}}function de(e){return p(e).status!==true&&d(),{status:true}}function en(e){return {status:b(p(e).status)}}function tn(e){let t=p(e);return t.status!==void 0&&t.status!==true&&d(),{backupCodes:nn(t.backupCodes)}}function Xi(e){let t=p(e);return {id:$(t.id,512),...to(t,"name",1024),phoneNumber:$(t.phoneNumber,64),phoneNumberVerified:b(t.phoneNumberVerified),...t.createdAt===void 0?{}:{createdAt:S(t.createdAt)},...t.updatedAt===void 0?{}:{updatedAt:S(t.updatedAt)}}}function Ne(e,t){let n=$(e,Ft);/[\u0000-\u0020\u007f]/u.test(n)&&d();let i;try{i=new URL(n);}catch{return d()}return (i.username||i.password)&&d(),i.protocol==="https:"||t&&i.protocol==="http:"&&Qi(i.hostname)?i.href:d()}function Qi(e){let t=e.toLowerCase();return t==="localhost"||t==="127.0.0.1"||t==="[::1]"}function Zi(e){let t=$(e,Bi),n;try{n=new URL(t);}catch{return d()}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))&&d(),t}function nn(e){return on(e,ji,Ji)}function on(e,t,n){(!Array.isArray(e)||e.length===0||e.length>t)&&d();let i=e.map(o=>$(o,n));return i.some(o=>o.trim().length===0)&&d(),new Set(i).size!==i.length&&d(),i}function $(e,t){let n=A(e);return (n.length===0||n.length>t)&&d(),n}function eo(e,t){let n=e[t];return n==null?{}:{[t]:$(n,Ft)}}function to(e,t,n){let i=R(e,t);return i===void 0?{}:(i!==null&&i.length>n&&d(),{[t]:i})}var rn=new Set([1564,8206,8207,8234,8235,8236,8237,8238,8294,8295,8296,8297]),pe=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 fe(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||an(n,i)||sn(i)||rn.has(i))return {valid:false}}let t=no(e);return Fe(t)?{valid:true,value:t}:{valid:false}}function Fe(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||an(o,s)||sn(s)||rn.has(s))return false;n??=s,i=s;}return t>0&&n!==void 0&&i!==void 0&&!pe.has(n)&&!pe.has(i)}function ge(){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 no(e){let t=0,n=e.length;for(;t<n;){let i=e.codePointAt(t);if(i===void 0||!pe.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,r=e.codePointAt(s);if(r===void 0||!pe.has(r))break;n=s;}return e.slice(t,n)}function sn(e){return e>=0&&e<=31||e>=127&&e<=159}function an(e,t){return e.length===1&&t>=55296&&t<=57343}var ln=12,dn=5e3,io=8,oo=1e3,ro=16,cn=512,pn=100,fn=8192,so=32768,Ve=1024,un=256,Ke=64,ao=6e5,co=/^[A-Za-z0-9_-]+$/u,uo=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/u,lo=/[\u0000-\u001f\u007f-\u009f\u061c\u200e\u200f\u202a-\u202e\u2066-\u2069]/u,po=/^[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?$/u,fo=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/iu,gn=new Set(["discouraged","preferred","required"]),go=new Set(["singleDevice","multiDevice"]),mn=new Set(["ble","cable","hybrid","internal","nfc","smart-card","usb"]),hn=new Set(["hybrid","security-key","client-device"]),mo=new Set(["none","indirect","direct","enterprise"]),ho=new Set(["fido-u2f","packed","android-safetynet","android-key","tpm","apple","none"]),yo=new Set(["platform","cross-platform"]),Ao=new Set(["discouraged","preferred","required"]),Oo=new Set([-8,-7,-257]);function yn(e){let t=z(e,ln,dn);return {challenge:In(t.challenge),...T("timeout",Tn(t.timeout)),...T("rpId",En(t.rpId)),...T("allowCredentials",Sn(t.allowCredentials)),...T("userVerification",te(t.userVerification,gn)),...T("hints",me(t.hints,hn)),...T("extensions",Pn(t.extensions))}}function An(e){let t=z(e,ln,dn);return {challenge:In(t.challenge),rp:bo(t.rp),user:wo(t.user),pubKeyCredParams:ko(t.pubKeyCredParams),...T("timeout",Tn(t.timeout)),...T("excludeCredentials",Sn(t.excludeCredentials)),...T("authenticatorSelection",Ro(t.authenticatorSelection)),...T("attestation",te(t.attestation,mo)),...T("attestationFormats",me(t.attestationFormats,ho)),...T("hints",me(t.hints,hn)),...T("extensions",Pn(t.extensions))}}function On(e){let t=p(e),n=se(t.session),i=C(t.user);return n.userId!==i.id&&d(),{session:n,user:i}}function He(e){let t=p(e),n=t.counter;(!Number.isSafeInteger(n)||n<0)&&d();let i=Be(t.deviceType,go),o=b(t.backedUp);return o&&i!=="multiDevice"&&d(),{id:Y(t.id,un),...Po(t),publicKey:So(t.publicKey,so),userId:Y(t.userId,un),credentialID:ye(t.credentialID,fn),counter:n,deviceType:i,backedUp:o,...Io(t),createdAt:S(t.createdAt),...Eo(t)}}function bn(e,t,n){let i=He(e);return (i.credentialID!==t||(n===void 0?i.name!==void 0&&i.name!==null:i.name!==n))&&d(),i}function wn(e){(!Array.isArray(e)||e.length>pn)&&d();let t=e.map(He);return he(t.map(n=>n.id)),he(t.map(n=>n.credentialID)),t.length>1&&t.some(n=>n.userId!==t[0]?.userId)&&d(),t}function kn(e,t,n){let i=p(e),o=He(i.passkey);return (o.id!==t||o.name!==n)&&d(),{passkey:o}}function Rn(e){return p(e).status!==true&&d(),{status:true}}function bo(e){let t=p(e);return {name:qe(t.name,Ve),...T("id",En(t.id))}}function wo(e){let t=p(e);return {id:ye(t.id,128,1,64),name:qe(t.name,Ve),displayName:qe(t.displayName,Ve)}}function ko(e){(!Array.isArray(e)||e.length===0||e.length>Ke)&&d();let t=e.map(n=>{let i=p(n);return (i.type!=="public-key"||!Number.isSafeInteger(i.alg)||!Oo.has(i.alg))&&d(),{type:"public-key",alg:i.alg}});return xo(t.map(n=>n.alg)),t}function Sn(e){if(e===void 0)return;(!Array.isArray(e)||e.length>pn)&&d();let t=e.map(n=>{let i=p(n);return i.type!=="public-key"&&d(),{type:"public-key",id:ye(i.id,fn),...T("transports",me(i.transports,mn))}});return he(t.map(n=>n.id)),t}function Ro(e){if(e===void 0)return;let t=p(e);t.requireResidentKey!==void 0&&typeof t.requireResidentKey!="boolean"&&d();let n=te(t.residentKey,Ao);return t.requireResidentKey!==void 0&&n!==void 0&&t.requireResidentKey!==(n==="required")&&d(),{...T("authenticatorAttachment",te(t.authenticatorAttachment,yo)),...T("residentKey",n),...T("requireResidentKey",t.requireResidentKey),...T("userVerification",te(t.userVerification,gn))}}function Tn(e){return e!==void 0&&(typeof e!="number"||!Number.isFinite(e)||e<0||e>ao)&&d(),e}function Pn(e){return e===void 0?void 0:z(e,io,oo)}function me(e,t){if(e===void 0)return;(!Array.isArray(e)||e.length>Ke)&&d();let n=e.map(i=>Be(i,t));return he(n),n}function te(e,t){if(e!==void 0)return Be(e,t)}function In(e){return ye(e,Math.ceil(cn*4/3),ro,cn)}function ye(e,t,n=1,i=Number.POSITIVE_INFINITY){let o=Y(e,t),s=o.length%4,r=To(o.at(-1)??""),c=Math.floor(o.length*3/4);return (!co.test(o)||s===1||s===2&&(r&15)!==0||s===3&&(r&3)!==0||c<n||c>i)&&d(),o}function Y(e,t){let n=A(e);return (n.length===0||n.length>t)&&d(),n}function qe(e,t){let n=Y(e,t);return lo.test(n)&&d(),n}function En(e){if(e===void 0)return;let t=Y(e,253);return t!=="localhost"&&(t.endsWith(".")||!t.includes(".")||t.split(".").some(n=>!po.test(n)))&&d(),t}function So(e,t){let n=Y(e,t),i=n.endsWith("=="),o=!i&&n.endsWith("="),s=n.at(i?-3:o?-2:-1)??"",r=xn(s);return (n.length%4!==0||!uo.test(n)||i&&(r&15)!==0||o&&(r&3)!==0)&&d(),n}function To(e){return xn(e,true)}function xn(e,t=false){return (t?"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_":"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/").indexOf(e)}function Po(e){let t=R(e,"name");return t===void 0?{}:(t!==null&&!Fe(t)&&d(),{name:t})}function Io(e){let t=R(e,"transports");if(t==null||t==="")return t===void 0?{}:{transports:t};let n=t.split(",");return (n.length>Ke||n.some(i=>!mn.has(i))||new Set(n).size!==n.length)&&d(),{transports:t}}function Eo(e){let t=R(e,"aaguid");return t==null?t===void 0?{}:{aaguid:null}:(fo.test(t)||d(),{aaguid:t})}function Be(e,t){let n=A(e);return t.has(n)||d(),n}function T(e,t){return t===void 0?{}:{[e]:t}}function he(e){new Set(e).size!==e.length&&d();}function xo(e){new Set(e).size!==e.length&&d();}function Mo(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 Nn=new Map;function Fo(e,t){let n=Nn.get(t);return n||(n=Promise.resolve().then(()=>(Oe(),Ae)).then(i=>i.completeCrossSiteSignIn(e)),Nn.set(t,n)),n}function Ln(e){return !Z()||e.idToken||e.disableRedirect?"legacy":"first-party"}function Fn(e,t=()=>{},n=Vo){let i=oe(e),o=Z()?Fo(i,e.decoded.projectId):void 0,s=Mo(i,o),r=gt(s,e.decoded.projectId),c=n(s,r.notifyMutation),a=()=>{r.notifyMutation(),t();},{post:g,mutation:m}=J(s,a),y=e.decoded.env==="test";return {sessionStore:r.store,getSession:r.getSession,account:Ot(s,a),organization:Mt(s,a,()=>r.store.getSnapshot().data?.session.membership??null),signIn:{email:(u,l)=>m(g("/sign-in/email",u,l,Le),f=>!("twoFactorRedirect"in f)),username:(u,l)=>m(g("/sign-in/username",u,l,Le),f=>!("twoFactorRedirect"in f)),social:async(u,l)=>{if(Ln(u)==="first-party"){let{beginCrossSiteSignIn:w}=await Promise.resolve().then(()=>(Oe(),Ae)),h=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(h)return window.location.assign(h),{data:{redirect:true,url:h},error:null}}let f=await m(g("/sign-in/social",u,l,w=>Kt(w,y)),w=>"user"in w);return f.error!==null||f.data===null||"url"in f.data&&f.data.redirect&&!u.disableRedirect&&typeof window<"u"&&window.location.assign(f.data.url),f},sso:async(u,l)=>{if(Ln(u)==="first-party"){let{beginCrossSiteSignIn:w}=await Promise.resolve().then(()=>(Oe(),Ae)),h=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(h)return window.location.assign(h),{data:{url:h,redirect:true},error:null}}let f=await g("/sign-in/sso",u,l,w=>Ht(w,y));return f.error!==null||f.data===null||typeof window<"u"&&window.location.assign(f.data.url),f},magicLink:(u,l)=>g("/sign-in/magic-link",u,l,Bt),emailOtp:(u,l)=>m(g("/sign-in/email-otp",u,l,Vt)),passkey:(u,l)=>c.signIn(u,l)},signUp:{email:(u,l)=>m(g("/sign-up/email",u,l,qt),f=>f.sessionCreated)},emailOtp:{sendVerificationOtp:(u,l)=>g("/email-otp/send-verification-otp",u,l,jt),verifyEmail:(u,l)=>m(g("/email-otp/verify-email",u,l,Yt))},phoneOtp:{prepare:u=>g("/phone-otp/challenge",{},u,Gt),start:(u,l)=>g("/phone-otp/start",{...u,idempotencyKey:u.idempotencyKey??_e()},l,Jt),verify:(u,l)=>m(g("/phone-otp/verify",u,l,Wt))},requestPasswordReset:(u,l)=>g("/request-password-reset",u,l,Me),resetPassword:(u,l)=>g("/reset-password",u,l,Me),sendVerificationEmail:(u,l)=>g("/send-verification-email",u,l,$t),passkey:{addPasskey:(u,l)=>c.add(u,l),listUserPasskeys:()=>s.request("/passkey/list-user-passkeys",{decode:wn}),updatePasskey:async(u,l)=>{let f=fe(u.name);if(!f.valid||f.value===void 0)return ge();let w=f.value;return g("/passkey/update-passkey",{...u,name:w},l,h=>kn(h,u.id,w))},deletePasskey:(u,l)=>g("/passkey/delete-passkey",u,l,Rn)},twoFactor:{enable:(u,l)=>g("/two-factor/enable",u,l,Qt),disable:(u,l)=>m(g("/two-factor/disable",u,l,Zt),f=>f.status),verifyTotp:(u,l)=>m(g("/two-factor/verify-totp",u,l,de)),verifyBackupCode:(u,l)=>m(g("/two-factor/verify-backup-code",u,l,de)),sendOtp:(u={},l)=>g("/two-factor/send-otp",u,l,en),verifyOtp:(u,l)=>m(g("/two-factor/verify-otp",u,l,de)),generateBackupCodes:(u,l)=>g("/two-factor/generate-backup-codes",u,l,tn)},signOut:u=>m(s.request("/sign-out",{method:"POST",body:{},fetchOptions:u,decode:Xt}),l=>l.success)}}function Vo(){return {signIn:()=>Mn(),add:()=>Mn()}}function Mn(){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 Bn(e,t,n){let i=new Map;return {async signIn(o={},s){let r=await e.request("/passkey/generate-authenticate-options");if(!r.data)return Kn(r.error);let c;try{c=yn(r.data);}catch{return Vn()}let a;try{a=await n.authenticate({optionsJSON:c,useBrowserAutofill:o.autoFill});}catch(l){return Hn(n,l,"AUTH_CANCELLED","Passkey authentication was cancelled.")}if(!qo(a))return qn();let{clientExtensionResults:g,...m}=a,y=i.get(a.id);if(y)return y;let u=(async()=>{let l=await e.request("/passkey/verify-authentication",{method:"POST",body:{response:m},fetchOptions:s,decode:On});return l.data&&t(),l})();i.set(a.id,u);try{return await u}finally{i.get(a.id)===u&&i.delete(a.id);}},async add(o={},s){let r=fe(o.name);if(!r.valid)return ge();let c=await e.request("/passkey/generate-register-options",{query:{name:r.value,authenticatorAttachment:o.authenticatorAttachment}});if(!c.data)return Kn(c.error);let a;try{a=An(c.data);}catch{return Vn()}let g;try{g=await n.register({optionsJSON:a});}catch(l){return Hn(n,l,"REGISTRATION_CANCELLED","Passkey registration was cancelled.")}if(!Ko(g))return qn();let{clientExtensionResults:m,...y}=g,u=await e.request("/passkey/verify-registration",{method:"POST",body:{response:y,name:r.value},fetchOptions:s,decode:l=>bn(l,g.id,r.value)});return u.data&&t(),u}}}function Vn(){return {data:null,error:{status:502,statusText:"BAD_GATEWAY",code:"INVALID_WEBAUTHN_OPTIONS",message:"The server returned invalid WebAuthn options."}}}function qn(){return {data:null,error:{status:400,statusText:"BAD_REQUEST",code:"INVALID_WEBAUTHN_RESPONSE",message:"The platform returned an invalid passkey response."}}}function jn(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 qo(e){if(!jn(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 Ko(e){if(!jn(e))return false;let t=e.response;return typeof t.clientDataJSON=="string"&&typeof t.attestationObject=="string"}function Kn(e){return {data:null,error:e??{status:502,statusText:"BAD_GATEWAY",code:"INVALID_WEBAUTHN_OPTIONS",message:"The server returned no WebAuthn options."}}}function Hn(e,t,n,i){let o=Bo(t,"page does not have focus"),s=e.errorCode?.(t),r=s!==void 0?s==="ERROR_CEREMONY_ABORTED":Ho(t)==="AbortError";return {data:null,error:{status:400,statusText:"BAD_REQUEST",code:o?"PASSKEY_PAGE_NOT_FOCUSED":r?n:s??"PASSKEY_BROWSER_ERROR",message:o?"Keep this page focused while completing the passkey prompt.":r?i:n==="AUTH_CANCELLED"?"Passkey authentication could not be completed by this browser.":"Passkey registration could not be completed by this browser."}}}function Ho(e){return e&&typeof e=="object"&&"name"in e&&typeof e.name=="string"?e.name:void 0}function Bo(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 D(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 K(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),r=new Uint8Array(s);for(let c=0;c<o.length;c++)r[c]=o.charCodeAt(c);return s}function H(){return jo.stubThis(globalThis?.PublicKeyCredential!==void 0&&typeof globalThis.PublicKeyCredential=="function")}var jo={stubThis:e=>e};function be(e){let{id:t}=e;return {...e,id:K(t),transports:e.transports}}function we(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 k=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 Jn({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 k({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 k({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 k({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 k({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 k({message:"The authenticator was previously registered",code:"ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED",cause:e});if(e.name==="NotAllowedError")return new k({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 k({message:'No entry in pubKeyCredParams was of type "public-key"',code:"ERROR_MALFORMED_PUBKEYCREDPARAMS",cause:e}):new k({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(we(i)){if(n.rp.id!==i)return new k({message:`The RP ID "${n.rp.id}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:e})}else return new k({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 k({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 k({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 Je=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;}}},ke=new Je;var Jo=["cross-platform","platform"];function Re(e){if(e&&!(Jo.indexOf(e)<0))return e}async function Gn(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(!H())throw new Error("WebAuthn is not supported in this browser");let i={...t,challenge:K(t.challenge),user:{...t.user,id:K(t.user.id)},excludeCredentials:t.excludeCredentials?.map(be)},o={};n&&(o.mediation="conditional"),o.publicKey=i,o.signal=ke.createNewAbortSignal();let s;try{s=await navigator.credentials.create(o);}catch(f){throw Jn({error:f,options:o})}if(!s)throw new Error("Registration was not completed");let{id:r,rawId:c,response:a,type:g}=s,m;typeof a.getTransports=="function"&&(m=a.getTransports());let y;if(typeof a.getPublicKeyAlgorithm=="function")try{y=a.getPublicKeyAlgorithm();}catch(f){Ge("getPublicKeyAlgorithm()",f);}let u;if(typeof a.getPublicKey=="function")try{let f=a.getPublicKey();f!==null&&(u=D(f));}catch(f){Ge("getPublicKey()",f);}let l;if(typeof a.getAuthenticatorData=="function")try{l=D(a.getAuthenticatorData());}catch(f){Ge("getAuthenticatorData()",f);}return {id:r,rawId:D(c),response:{attestationObject:D(a.attestationObject),clientDataJSON:D(a.clientDataJSON),transports:m,publicKeyAlgorithm:y,publicKey:u,authenticatorData:l},type:g,clientExtensionResults:s.getClientExtensionResults(),authenticatorAttachment:Re(s.authenticatorAttachment)}}function Ge(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 Wn(){if(!H())return We.stubThis(new Promise(t=>t(false)));let e=globalThis.PublicKeyCredential;return e?.isConditionalMediationAvailable===void 0?We.stubThis(new Promise(t=>t(false))):We.stubThis(e.isConditionalMediationAvailable())}var We={stubThis:e=>e};function $n({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 k({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:e})}else {if(e.name==="NotAllowedError")return new k({message:e.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e});if(e.name==="SecurityError"){let i=globalThis.location.hostname;if(we(i)){if(n.rpId!==i)return new k({message:`The RP ID "${n.rpId}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:e})}else return new k({message:`${globalThis.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e})}else if(e.name==="UnknownError")return new k({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 Yn(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(!H())throw new Error("WebAuthn is not supported in this browser");let o;t.allowCredentials?.length!==0&&(o=t.allowCredentials?.map(be));let s={...t,challenge:K(t.challenge),allowCredentials:o},r={};if(n){if(!await Wn())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');r.mediation="conditional",s.allowCredentials=[];}r.publicKey=s,r.signal=ke.createNewAbortSignal();let c;try{c=await navigator.credentials.get(r);}catch(l){throw $n({error:l,options:r})}if(!c)throw new Error("Authentication was not completed");let{id:a,rawId:g,response:m,type:y}=c,u;return m.userHandle&&(u=D(m.userHandle)),{id:a,rawId:D(g),response:{authenticatorData:D(m.authenticatorData),clientDataJSON:D(m.clientDataJSON),signature:D(m.signature),userHandle:u},type:y,clientExtensionResults:c.getClientExtensionResults(),authenticatorAttachment:Re(c.authenticatorAttachment)}}var Xn={authenticate:e=>Yn(e),register:e=>Gn(e),errorCode:e=>e instanceof k?e.code:void 0};var Se=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),ie({fetchImpl:e.fetch??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 j(e,t){if(!e.response.ok)throw new Se(t,e.response,e.requestId);return e.data}function Zn(e){return `${new URL(e.apiUrl).origin}/api/projects/${e.decoded.projectId}/consent`}async function $e(e){let t=await B(e,Zn(e),{init:{method:"GET",credentials:"include"},maxResponseBytes:65536,decode:Go});return t.response.status===401?{required:false}:j(t,"consent status")}async function Ye(e,t){if(!Number.isSafeInteger(t)||t<1)throw new TypeError("Consent version must be a positive integer.");return j(await B(e,Zn(e),{init:{method:"POST",headers:{"content-type":"application/json"},credentials:"include",body:JSON.stringify({version:t})},maxResponseBytes:64*1024,decode:Wo}),"consent accept")}function Go(e){let t=p(e),n=b(t.required),i=$o(t.needsConsent),o=ei(t.version),s=Qn(t.termsUrl),r=Qn(t.privacyUrl);return {required:n,...i===void 0?{}:{needsConsent:i},...o===void 0?{}:{version:o},...s===void 0?{}:{termsUrl:s},...r===void 0?{}:{privacyUrl:r}}}function Wo(e){let t=p(e),n=ei(t.version);return {ok:b(t.ok),...n===void 0?{}:{version:n}}}function $o(e){if(e===void 0||typeof e=="boolean")return e;throw new TypeError("Invalid consent response.")}function ei(e){if(e===void 0||Number.isSafeInteger(e)&&e>=1)return e;throw new TypeError("Invalid consent response.")}function Qn(e){if(e===void 0||typeof e=="string"&&e.length<=4096)return e;throw new TypeError("Invalid consent response.")}var Yo=30;function Xo(e){return typeof e?.exp=="number"?e.exp:null}function Qo(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 Xe(e){let t=new Map;async function n(s={}){let r=s.template===void 0?null:s.template.trim().toLowerCase();if(r==="")throw new TypeError("Template missing");let c=r??"",a=t.get(c);a||(a={activeKey:null,cachedByKey:new Map,inflight:null,sequence:0},t.set(c,a));let g=s.forceRefresh===true;if(!g){let f=a.activeKey?a.cachedByKey.get(a.activeKey):null;if(f&&f.exp-Date.now()/1e3>Yo)return f.token;if(a.inflight)return a.inflight}let m=++a.sequence,y=()=>t.get(c)===a&&a.sequence===m,u=(async()=>{let f=r?`${e.projectBaseURL}/token/${encodeURIComponent(r)}`:`${e.projectBaseURL}/token`,w=await B(e,f,{init:{method:"GET",credentials:"include"},maxResponseBytes:64*1024,decode:q=>Zo(q,r!==null)});if(w.response.status===401)return y()&&i(),null;let h=j(w,"token"),U=h.policyVersion,_=h.token,V=Qo(_),X=Xo(V);if(y())if(X!==null){let q=typeof V?.sub=="string"?V.sub:null,Te=typeof V?.org_id=="string"?V.org_id:null;if(!r||q){let tt=JSON.stringify([e.projectBaseURL,q,Te,r,U]);a.cachedByKey.clear(),a.cachedByKey.set(tt,{token:_,exp:X}),a.activeKey=tt;}else o(a);}else o(a);return _})();if(g)return u;let l=u.finally(()=>{a.inflight===l&&(a.inflight=null);});return a.inflight=l,l}function i(){t.clear();}function o(s){s.cachedByKey.clear(),s.activeKey=null;}return {getToken:n,clear:i}}function Zo(e,t){let n=p(e),i=A(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=p(n.template);if(!Number.isSafeInteger(o.policyVersion)||o.policyVersion<1)throw new TypeError("Invalid token response.");return {token:i,policyVersion:o.policyVersion}}function er(e){let t=Xe(e),n=Fn(e,t.clear,(r,c)=>Bn(r,c,Xn)),i=oe(e,`${new URL(e.apiUrl).origin}/api/projects/${e.decoded.projectId}`),o=r=>(...c)=>(t.clear(),r(...c)),s={getConsentStatus:()=>$e(e),acceptConsent:r=>Ye(e,r),getToken:t.getToken,waitlist:{join:(r,c)=>i.request("/waitlist",{method:"POST",body:r,fetchOptions:c,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 tr(e){if(typeof window>"u")throw new Error("Akedly Shield challenges must be solved in a browser.");let t=await nr(),n=e.challengeRequired?await t.solvePow(e.challenge,e.difficulty):null,i=e.turnstile.required?await t.getTurnstileToken(ir(e.turnstile.siteKey)):void 0;return {connectionId:e.connectionId,...n?{challengeToken:e.challengeToken,nonce:n.nonce}:{},...i?{turnstileToken:i}:{}}}async function nr(){return import('@akedly/shield')}function ir(e){if(!e)throw new Error("Akedly Shield did not provide a Turnstile site key.");return e}async function or(e){let n=`${new URL(e.apiUrl).origin}/api/projects/${e.decoded.projectId}/public-config`;return j(await B(e,n,{init:{method:"GET",credentials:"omit"},maxResponseBytes:256*1024,decode:i=>rr(i,e)}),"public-config")}function rr(e,t){let n=z(e),i=n.environmentId,o=n.environmentType,s=`${new URL(t.apiUrl).origin}/api/projects/${t.decoded.projectId}/auth`;if(typeof n.applicationId!="string"||!sr(n.applicationId)||i!==t.decoded.projectId||o!=="development"&&o!=="production"||n.authBaseUrl!==s)throw v();let r=E(n.branding),c=E(n.legal);if(!Qe(n.enabledMethods,64)||!Qe(n.socialProviders,64)||!ni(r,["appName","logoUrl","primaryColor"])||r.showAppName!==void 0&&typeof r.showAppName!="boolean"||r.alignment!==void 0&&r.alignment!=="left"&&r.alignment!=="center"&&r.alignment!=="right"||r.theme!==void 0&&r.theme!=="light"&&r.theme!=="dark"&&r.theme!=="system"||!ni(c,["termsUrl","privacyUrl"])||!Number.isSafeInteger(c.version)||c.version<0||typeof c.required!="boolean")throw v();if(n.socialProviderClientIds!==void 0){let a=E(n.socialProviderClientIds);if(Object.keys(a).length>64||Object.values(a).some(g=>typeof g!="string"||g.length>2048))throw v()}if(!L(n,["requireEmailVerification","twoFactor","mfaRequired","accountDeletion","organizations","sso","badge"])||!ti(n.turnstileSiteKey)||!ti(n.authTurnstileSiteKey)||typeof n.locale!="string"||n.locale.length===0||n.locale.length>64||!Number.isSafeInteger(n.configVersion)||n.configVersion<0)throw v();if(n.jwtIssuer!==null){let a=E(n.jwtIssuer);if(a.issuer!==s||a.jwksUrl!==`${s}/jwks`||a.aud!==t.decoded.projectId)throw v()}if(n.signUp!==void 0){let a=E(n.signUp).mode;if(typeof a!="string"||!["open","restricted","allowlist","waitlist"].includes(a))throw v()}if(n.authentication!==void 0&&ar(n.authentication),n.emailVerification!==void 0){let a=E(n.emailVerification);if(!L(a,["required"])||a.method!=="link"&&a.method!=="code")throw v()}if(n.userModel!==void 0&&!L(E(n.userModel),["requireEmail","firstLastName","emailChange","accountDeletion"]))throw v();if(n.mfa!==void 0){let a=E(n.mfa);if(!L(a,["totp","required","backupCodes"])||(a.required===true||a.backupCodes===true)&&a.totp!==true)throw v()}return n}function sr(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 v(){return new TypeError("public-config returned an invalid response")}function E(e){if(!e||typeof e!="object"||Array.isArray(e))throw v();return e}function ti(e){return e===null||typeof e=="string"&&e.length<=4096}function ar(e){let t=E(e),n=E(t.email),i=E(t.password),o=i.minLength!==void 0||i.maxLength!==void 0;if(!L(n,["signUp"])||!Qe(n.signIn,3)||n.signIn.some(s=>s!=="password"&&s!=="magic_link"&&s!=="email_otp")||!L(E(t.phone),["signUp","signIn"])||!L(i,["signUp","add"])||o&&(!Number.isSafeInteger(i.minLength)||!Number.isSafeInteger(i.maxLength)||i.minLength<1||i.maxLength>4096||i.minLength>i.maxLength)||!L(E(t.passkey),["signIn","add"])||!L(E(t.username),["collectOnSignUp","signIn"]))throw v()}function L(e,t){return t.every(n=>typeof e[n]=="boolean")}function ni(e,t){return t.every(n=>e[n]===void 0||typeof e[n]=="string"&&e[n].length<=4096)}function Qe(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 ne=class extends Error{constructor(n,i){super(n);this.cause=i;this.name="AuthOwlError";}cause},Ze=class extends ne{constructor(n,i){super(`Rate limited. Retry after ${n}s.`,i);this.retryAfterSeconds=n;this.name="RateLimitedError";}retryAfterSeconds},et=class extends ne{constructor(t="invalid publishable key",n){super(t,n),this.name="InvalidKeyError";}};var ii=["en","ar"];function cr(e){return e==="ar"?"rtl":"ltr"}function ur(e){return typeof e=="string"&&ii.includes(e)}
|
|
3
|
+
exports.AUTH_CHALLENGE_HEADER=dt;exports.AuthOwlError=ne;exports.AuthOwlHttpError=Se;exports.InvalidKeyError=et;exports.LOCALES=ii;exports.RateLimitedError=Ze;exports.TransportError=P;exports.acceptConsent=Ye;exports.createAuthOwlClient=er;exports.createIdempotencyKey=_e;exports.createMembershipHas=Vi;exports.createTokenClient=Xe;exports.decodePublishableKey=Pe;exports.directionFor=cr;exports.getConsentStatus=$e;exports.getPublicConfig=or;exports.isLocale=ur;exports.membershipHas=ce;exports.membershipHasPermission=ae;exports.membershipHasTeam=bt;exports.resolveConfig=ui;exports.resolveProjectCapabilities=li;exports.sessionCookieName=ci;exports.solvePhoneOtpChallenge=tr;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
export { A as AuthConfig, D as DecodedPublishableKey, H as HasParams, O as OrganizationMembership, R as ResolvedAuthConfig, c as createMembershipHas, d as decodePublishableKey, m as membershipHas, a as membershipHasPermission, b as membershipHasTeam, r as resolveConfig, s as sessionCookieName } from './organization-membership-B3m6PbmO.cjs';
|
|
2
|
-
|
|
2
|
+
import { P as PhoneOtpChallengeData, A as AkedlyShieldStartProof } from './client-DOOkDLWg.cjs';
|
|
3
|
+
export { a as AUTH_CHALLENGE_HEADER, b as AcceptOrganizationInvitationData, c as AccountClient, d as AccountSession, e as AccountStatusData, f as ActionFetchOptions, g as AddPasskeyOptions, h as AuthActionResult, i as AuthClientError, j as AuthErrorContext, k as AuthOwlClient, l as AuthOwlErrorCode, m as AuthPasskey, n as AuthRequestContext, o as AuthResponseContext, p as AuthSession, q as AuthUser, C as ChangeEmailOptions, r as ChangePasswordData, s as ChangePasswordOptions, t as ConsentAcceptResult, u as ConsentStatus, v as CreateOrganizationOptions, D as DeleteAccountData, w as DeleteAccountOptions, x as DeleteOrganizationOptions, y as DeletePasskeyData, z as DeletePasskeyOptions, B as DisableTwoFactorOptions, E as EmailAuthData, F as EmailOtpAuthData, G as EmailOtpSignInOptions, H as EmailOtpType, I as EmailSignInOptions, J as EmailSignUpData, K as EmailSignUpOptions, L as EnableTwoFactorOptions, M as EnvironmentType, N as GenerateBackupCodesOptions, O as GetOrganizationInvitationOptions, Q as GetOrganizationOptions, R as GetToken, S as GetTokenOptions, T as InviteOrganizationMemberOptions, U as JsonObject, V as JsonPrimitive, W as JsonValue, X as LeaveOrganizationOptions, Y as LinkSocialData, Z as LinkSocialOptions, _ as ListOrganizationInvitationsOptions, $ as ListOrganizationMembersOptions, a0 as ListOrganizationRolesOptions, a1 as ListOrganizationTeamsOptions, a2 as MagicLinkData, a3 as MagicLinkSignInOptions, a4 as Organization, a5 as OrganizationClient, a6 as OrganizationDetails, a7 as OrganizationFilterOperator, a8 as OrganizationInvitation, a9 as OrganizationInvitationActionOptions, aa as OrganizationInvitationDetails, ab as OrganizationInvitationStatus, ac as OrganizationMember, ad as OrganizationMemberUser, ae as OrganizationMemberWithUser, af as OrganizationMembersData, ag as OrganizationRoleSummary, ah as OrganizationSelector, ai as OrganizationTeam, aj as OrganizationUserInvitation, ak as PasskeyAuthData, al as PasskeySignInOptions, am as PasswordResetData, an as PhoneAuthUser, ao as PhoneOtpStartData, ap as PhoneOtpStartOptions, aq as PhoneOtpVerifyData, ar as PhoneOtpVerifyOptions, as as ProjectCapabilities, at as PublicConfig, au as RejectOrganizationInvitationData, av as RemoveOrganizationMemberData, aw as RemoveOrganizationMemberOptions, ax as RequestPasswordResetOptions, ay as ResetPasswordOptions, az as RevokeSessionOptions, aA as SendOtpData, aB as SendTwoFactorOtpData, aC as SendTwoFactorOtpOptions, aD as SendVerificationOtpOptions, aE as SessionState, aF as SessionStore, aG as SetActiveOrganizationOptions, aH as SetActiveTeamOptions, aI as SignOutData, aJ as SocialAccount, aK as SocialAuthData, aL as SocialIdTokenOptions, aM as SocialSignInOptions, aN as TokenClient, aO as TwoFactorBackupCodesData, aP as TwoFactorEnableData, aQ as TwoFactorRedirectData, aR as TwoFactorStatusData, aS as TwoFactorVerifyData, aT as UnlinkSocialOptions, aU as UpdateOrganizationMemberRoleOptions, aV as UpdateOrganizationOptions, aW as UpdatePasskeyData, aX as UpdatePasskeyOptions, aY as UpdateProfileOptions, aZ as UpdateUnsafeMetadataOptions, a_ as UserMetadata, a$ as UsernameSignInOptions, b0 as VerifyBackupCodeOptions, b1 as VerifyEmailOtpData, b2 as VerifyEmailOtpOptions, b3 as VerifyTotpOptions, b4 as VerifyTwoFactorOtpOptions, b5 as WaitlistJoinData, b6 as WaitlistJoinOptions, b7 as acceptConsent, b8 as createAuthOwlClient, b9 as createTokenClient, ba as getConsentStatus, bb as getPublicConfig, bc as resolveProjectCapabilities } from './client-DOOkDLWg.cjs';
|
|
3
4
|
export { T as TransportError, a as TransportErrorKind } from './transport-DcWDTRd4.cjs';
|
|
4
5
|
export { L as LOCALES, a as Locale, d as directionFor, i as isLocale } from './index-hIdXOzRp.cjs';
|
|
5
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Complete Akedly Shield's browser-only proof ceremony. The provider package is
|
|
9
|
+
* lazy-loaded only when the server-selected route requires it.
|
|
10
|
+
*/
|
|
11
|
+
declare function solvePhoneOtpChallenge(challenge: Extract<PhoneOtpChallengeData, {
|
|
12
|
+
kind: 'akedly_shield_v1_2';
|
|
13
|
+
}>): Promise<AkedlyShieldStartProof>;
|
|
14
|
+
|
|
6
15
|
/** Create a cryptographically random RFC 4122 v4 key for retry-safe write actions. */
|
|
7
16
|
declare function createIdempotencyKey(): string;
|
|
8
17
|
|
|
@@ -25,4 +34,4 @@ declare class AuthOwlHttpError extends Error {
|
|
|
25
34
|
constructor(label: string, response: Response, requestId?: string);
|
|
26
35
|
}
|
|
27
36
|
|
|
28
|
-
export { AuthOwlError, AuthOwlHttpError, InvalidKeyError, RateLimitedError, createIdempotencyKey };
|
|
37
|
+
export { AkedlyShieldStartProof, AuthOwlError, AuthOwlHttpError, InvalidKeyError, PhoneOtpChallengeData, RateLimitedError, createIdempotencyKey, solvePhoneOtpChallenge };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
export { A as AuthConfig, D as DecodedPublishableKey, H as HasParams, O as OrganizationMembership, R as ResolvedAuthConfig, c as createMembershipHas, d as decodePublishableKey, m as membershipHas, a as membershipHasPermission, b as membershipHasTeam, r as resolveConfig, s as sessionCookieName } from './organization-membership-B3m6PbmO.js';
|
|
2
|
-
|
|
2
|
+
import { P as PhoneOtpChallengeData, A as AkedlyShieldStartProof } from './client-jpaYv3wu.js';
|
|
3
|
+
export { a as AUTH_CHALLENGE_HEADER, b as AcceptOrganizationInvitationData, c as AccountClient, d as AccountSession, e as AccountStatusData, f as ActionFetchOptions, g as AddPasskeyOptions, h as AuthActionResult, i as AuthClientError, j as AuthErrorContext, k as AuthOwlClient, l as AuthOwlErrorCode, m as AuthPasskey, n as AuthRequestContext, o as AuthResponseContext, p as AuthSession, q as AuthUser, C as ChangeEmailOptions, r as ChangePasswordData, s as ChangePasswordOptions, t as ConsentAcceptResult, u as ConsentStatus, v as CreateOrganizationOptions, D as DeleteAccountData, w as DeleteAccountOptions, x as DeleteOrganizationOptions, y as DeletePasskeyData, z as DeletePasskeyOptions, B as DisableTwoFactorOptions, E as EmailAuthData, F as EmailOtpAuthData, G as EmailOtpSignInOptions, H as EmailOtpType, I as EmailSignInOptions, J as EmailSignUpData, K as EmailSignUpOptions, L as EnableTwoFactorOptions, M as EnvironmentType, N as GenerateBackupCodesOptions, O as GetOrganizationInvitationOptions, Q as GetOrganizationOptions, R as GetToken, S as GetTokenOptions, T as InviteOrganizationMemberOptions, U as JsonObject, V as JsonPrimitive, W as JsonValue, X as LeaveOrganizationOptions, Y as LinkSocialData, Z as LinkSocialOptions, _ as ListOrganizationInvitationsOptions, $ as ListOrganizationMembersOptions, a0 as ListOrganizationRolesOptions, a1 as ListOrganizationTeamsOptions, a2 as MagicLinkData, a3 as MagicLinkSignInOptions, a4 as Organization, a5 as OrganizationClient, a6 as OrganizationDetails, a7 as OrganizationFilterOperator, a8 as OrganizationInvitation, a9 as OrganizationInvitationActionOptions, aa as OrganizationInvitationDetails, ab as OrganizationInvitationStatus, ac as OrganizationMember, ad as OrganizationMemberUser, ae as OrganizationMemberWithUser, af as OrganizationMembersData, ag as OrganizationRoleSummary, ah as OrganizationSelector, ai as OrganizationTeam, aj as OrganizationUserInvitation, ak as PasskeyAuthData, al as PasskeySignInOptions, am as PasswordResetData, an as PhoneAuthUser, ao as PhoneOtpStartData, ap as PhoneOtpStartOptions, aq as PhoneOtpVerifyData, ar as PhoneOtpVerifyOptions, as as ProjectCapabilities, at as PublicConfig, au as RejectOrganizationInvitationData, av as RemoveOrganizationMemberData, aw as RemoveOrganizationMemberOptions, ax as RequestPasswordResetOptions, ay as ResetPasswordOptions, az as RevokeSessionOptions, aA as SendOtpData, aB as SendTwoFactorOtpData, aC as SendTwoFactorOtpOptions, aD as SendVerificationOtpOptions, aE as SessionState, aF as SessionStore, aG as SetActiveOrganizationOptions, aH as SetActiveTeamOptions, aI as SignOutData, aJ as SocialAccount, aK as SocialAuthData, aL as SocialIdTokenOptions, aM as SocialSignInOptions, aN as TokenClient, aO as TwoFactorBackupCodesData, aP as TwoFactorEnableData, aQ as TwoFactorRedirectData, aR as TwoFactorStatusData, aS as TwoFactorVerifyData, aT as UnlinkSocialOptions, aU as UpdateOrganizationMemberRoleOptions, aV as UpdateOrganizationOptions, aW as UpdatePasskeyData, aX as UpdatePasskeyOptions, aY as UpdateProfileOptions, aZ as UpdateUnsafeMetadataOptions, a_ as UserMetadata, a$ as UsernameSignInOptions, b0 as VerifyBackupCodeOptions, b1 as VerifyEmailOtpData, b2 as VerifyEmailOtpOptions, b3 as VerifyTotpOptions, b4 as VerifyTwoFactorOtpOptions, b5 as WaitlistJoinData, b6 as WaitlistJoinOptions, b7 as acceptConsent, b8 as createAuthOwlClient, b9 as createTokenClient, ba as getConsentStatus, bb as getPublicConfig, bc as resolveProjectCapabilities } from './client-jpaYv3wu.js';
|
|
3
4
|
export { T as TransportError, a as TransportErrorKind } from './transport-DcWDTRd4.js';
|
|
4
5
|
export { L as LOCALES, a as Locale, d as directionFor, i as isLocale } from './index-hIdXOzRp.js';
|
|
5
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Complete Akedly Shield's browser-only proof ceremony. The provider package is
|
|
9
|
+
* lazy-loaded only when the server-selected route requires it.
|
|
10
|
+
*/
|
|
11
|
+
declare function solvePhoneOtpChallenge(challenge: Extract<PhoneOtpChallengeData, {
|
|
12
|
+
kind: 'akedly_shield_v1_2';
|
|
13
|
+
}>): Promise<AkedlyShieldStartProof>;
|
|
14
|
+
|
|
6
15
|
/** Create a cryptographically random RFC 4122 v4 key for retry-safe write actions. */
|
|
7
16
|
declare function createIdempotencyKey(): string;
|
|
8
17
|
|
|
@@ -25,4 +34,4 @@ declare class AuthOwlHttpError extends Error {
|
|
|
25
34
|
constructor(label: string, response: Response, requestId?: string);
|
|
26
35
|
}
|
|
27
36
|
|
|
28
|
-
export { AuthOwlError, AuthOwlHttpError, InvalidKeyError, RateLimitedError, createIdempotencyKey };
|
|
37
|
+
export { AkedlyShieldStartProof, AuthOwlError, AuthOwlHttpError, InvalidKeyError, PhoneOtpChallengeData, RateLimitedError, createIdempotencyKey, solvePhoneOtpChallenge };
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export{a as LOCALES,b as directionFor,c as isLocale}from'./chunk-M4QJVSXT.js';import {i,j as j$1,e,g,c as c$1}from'./chunk-
|
|
2
|
-
`,
|
|
3
|
-
export{
|
|
1
|
+
export{a as LOCALES,b as directionFor,c as isLocale}from'./chunk-M4QJVSXT.js';import {i,j as j$1,e,g as g$1,c as c$1}from'./chunk-MX7KKUAW.js';export{b as AUTH_CHALLENGE_HEADER,h as AuthOwlHttpError,d as createIdempotencyKey,k as getPublicConfig,a as resolveProjectCapabilities}from'./chunk-MX7KKUAW.js';import {h,j as j$2,i as i$1}from'./chunk-KPXCQZUX.js';export{f as TransportError,v as createMembershipHas,a as decodePublishableKey,u as membershipHas,s as membershipHasPermission,t as membershipHasTeam,e as resolveConfig,b as sessionCookieName}from'./chunk-KPXCQZUX.js';import'./chunk-T5SH3ZZP.js';function u(e){let n=new Uint8Array(e),t="";for(let o of n)t+=String.fromCharCode(o);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function g(e){let n=e.replace(/-/g,"+").replace(/_/g,"/"),t=(4-n.length%4)%4,i=n.padEnd(n.length+t,"="),o=atob(i),s=new ArrayBuffer(o.length),a=new Uint8Array(s);for(let l=0;l<o.length;l++)a[l]=o.charCodeAt(l);return s}function y(){return be.stubThis(globalThis?.PublicKeyCredential!==void 0&&typeof globalThis.PublicKeyCredential=="function")}var be={stubThis:e=>e};function C(e){let{id:n}=e;return {...e,id:g(n),transports:e.transports}}function T(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 c=class extends Error{constructor({message:n,code:t,cause:i,name:o}){super(n,{cause:i}),Object.defineProperty(this,"code",{enumerable:true,configurable:true,writable:true,value:void 0}),this.name=o??i.name,this.code=t;}};function W({error:e,options:n}){let{publicKey:t}=n;if(!t)throw Error("options was missing required publicKey property");if(e.name==="AbortError"){if(n.signal instanceof AbortSignal)return new c({message:"Registration ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:e})}else if(e.name==="ConstraintError"){if(t.authenticatorSelection?.requireResidentKey===true)return new c({message:"Discoverable credentials were required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT",cause:e});if(n.mediation==="conditional"&&t.authenticatorSelection?.userVerification==="required")return new c({message:"User verification was required during automatic registration but it could not be performed",code:"ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE",cause:e});if(t.authenticatorSelection?.userVerification==="required")return new c({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 c({message:"The authenticator was previously registered",code:"ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED",cause:e});if(e.name==="NotAllowedError")return new c({message:e.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e});if(e.name==="NotSupportedError")return t.pubKeyCredParams.filter(o=>o.type==="public-key").length===0?new c({message:'No entry in pubKeyCredParams was of type "public-key"',code:"ERROR_MALFORMED_PUBKEYCREDPARAMS",cause:e}):new c({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(T(i)){if(t.rp.id!==i)return new c({message:`The RP ID "${t.rp.id}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:e})}else return new c({message:`${globalThis.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e})}else if(e.name==="TypeError"){if(t.user.id.byteLength<1||t.user.id.byteLength>64)return new c({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 c({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 I=class{constructor(){Object.defineProperty(this,"controller",{enumerable:true,configurable:true,writable:true,value:void 0});}createNewAbortSignal(){if(this.controller){let t=new Error("Cancelling existing WebAuthn API call for new one");t.name="AbortError",this.controller.abort(t);}let n=new AbortController;return this.controller=n,n.signal}cancelCeremony(){if(this.controller){let n=new Error("Manually cancelling existing WebAuthn API call");n.name="AbortError",this.controller.abort(n),this.controller=void 0;}}},k=new I;var Re=["cross-platform","platform"];function P(e){if(e&&!(Re.indexOf(e)<0))return e}async function j(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:n,useAutoRegister:t=false}=e;if(!y())throw new Error("WebAuthn is not supported in this browser");let i={...n,challenge:g(n.challenge),user:{...n.user,id:g(n.user.id)},excludeCredentials:n.excludeCredentials?.map(C)},o={};t&&(o.mediation="conditional"),o.publicKey=i,o.signal=k.createNewAbortSignal();let s;try{s=await navigator.credentials.create(o);}catch(p){throw W({error:p,options:o})}if(!s)throw new Error("Registration was not completed");let{id:a,rawId:l,response:r,type:O}=s,d;typeof r.getTransports=="function"&&(d=r.getTransports());let h;if(typeof r.getPublicKeyAlgorithm=="function")try{h=r.getPublicKeyAlgorithm();}catch(p){U("getPublicKeyAlgorithm()",p);}let f;if(typeof r.getPublicKey=="function")try{let p=r.getPublicKey();p!==null&&(f=u(p));}catch(p){U("getPublicKey()",p);}let m;if(typeof r.getAuthenticatorData=="function")try{m=u(r.getAuthenticatorData());}catch(p){U("getAuthenticatorData()",p);}return {id:a,rawId:u(l),response:{attestationObject:u(r.attestationObject),clientDataJSON:u(r.clientDataJSON),transports:d,publicKeyAlgorithm:h,publicKey:f,authenticatorData:m},type:O,clientExtensionResults:s.getClientExtensionResults(),authenticatorAttachment:P(s.authenticatorAttachment)}}function U(e,n){console.warn(`The browser extension that intercepted this WebAuthn API call incorrectly implemented ${e}. You should report this error to them.
|
|
2
|
+
`,n);}function $(){if(!y())return v.stubThis(new Promise(n=>n(false)));let e=globalThis.PublicKeyCredential;return e?.isConditionalMediationAvailable===void 0?v.stubThis(new Promise(n=>n(false))):v.stubThis(e.isConditionalMediationAvailable())}var v={stubThis:e=>e};function Y({error:e,options:n}){let{publicKey:t}=n;if(!t)throw Error("options was missing required publicKey property");if(e.name==="AbortError"){if(n.signal instanceof AbortSignal)return new c({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:e})}else {if(e.name==="NotAllowedError")return new c({message:e.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e});if(e.name==="SecurityError"){let i=globalThis.location.hostname;if(T(i)){if(t.rpId!==i)return new c({message:`The RP ID "${t.rpId}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:e})}else return new c({message:`${globalThis.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e})}else if(e.name==="UnknownError")return new c({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 Q(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:n,useBrowserAutofill:t=false,verifyBrowserAutofillInput:i=true}=e;if(!y())throw new Error("WebAuthn is not supported in this browser");let o;n.allowCredentials?.length!==0&&(o=n.allowCredentials?.map(C));let s={...n,challenge:g(n.challenge),allowCredentials:o},a={};if(t){if(!await $())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');a.mediation="conditional",s.allowCredentials=[];}a.publicKey=s,a.signal=k.createNewAbortSignal();let l;try{l=await navigator.credentials.get(a);}catch(m){throw Y({error:m,options:a})}if(!l)throw new Error("Authentication was not completed");let{id:r,rawId:O,response:d,type:h}=l,f;return d.userHandle&&(f=u(d.userHandle)),{id:r,rawId:u(O),response:{authenticatorData:u(d.authenticatorData),clientDataJSON:u(d.clientDataJSON),signature:u(d.signature),userHandle:f},type:h,clientExtensionResults:l.getClientExtensionResults(),authenticatorAttachment:P(l.authenticatorAttachment)}}var Z={authenticate:e=>Q(e),register:e=>j(e),errorCode:e=>e instanceof c?e.code:void 0};function ee(e){return `${new URL(e.apiUrl).origin}/api/projects/${e.decoded.projectId}/consent`}async function _(e){let n=await i(e,ee(e),{init:{method:"GET",credentials:"include"},maxResponseBytes:65536,decode:we});return n.response.status===401?{required:false}:j$1(n,"consent status")}async function F(e,n){if(!Number.isSafeInteger(n)||n<1)throw new TypeError("Consent version must be a positive integer.");return j$1(await i(e,ee(e),{init:{method:"POST",headers:{"content-type":"application/json"},credentials:"include",body:JSON.stringify({version:n})},maxResponseBytes:64*1024,decode:Se}),"consent accept")}function we(e){let n=h(e),t=j$2(n.required),i=Ee(n.needsConsent),o=te(n.version),s=X(n.termsUrl),a=X(n.privacyUrl);return {required:t,...i===void 0?{}:{needsConsent:i},...o===void 0?{}:{version:o},...s===void 0?{}:{termsUrl:s},...a===void 0?{}:{privacyUrl:a}}}function Se(e){let n=h(e),t=te(n.version);return {ok:j$2(n.ok),...t===void 0?{}:{version:t}}}function Ee(e){if(e===void 0||typeof e=="boolean")return e;throw new TypeError("Invalid consent response.")}function te(e){if(e===void 0||Number.isSafeInteger(e)&&e>=1)return e;throw new TypeError("Invalid consent response.")}function X(e){if(e===void 0||typeof e=="string"&&e.length<=4096)return e;throw new TypeError("Invalid consent response.")}var Ce=30;function Te(e){return typeof e?.exp=="number"?e.exp:null}function ke(e){let n=e.split(".")[1];if(!n)return null;try{let t=n.replace(/-/g,"+").replace(/_/g,"/"),i=JSON.parse(atob(t));return typeof i=="object"&&i!==null?i:null}catch{return null}}function N(e){let n=new Map;async function t(s={}){let a=s.template===void 0?null:s.template.trim().toLowerCase();if(a==="")throw new TypeError("Template missing");let l=a??"",r=n.get(l);r||(r={activeKey:null,cachedByKey:new Map,inflight:null,sequence:0},n.set(l,r));let O=s.forceRefresh===true;if(!O){let p=r.activeKey?r.cachedByKey.get(r.activeKey):null;if(p&&p.exp-Date.now()/1e3>Ce)return p.token;if(r.inflight)return r.inflight}let d=++r.sequence,h=()=>n.get(l)===r&&r.sequence===d,f=(async()=>{let p=a?`${e.projectBaseURL}/token/${encodeURIComponent(a)}`:`${e.projectBaseURL}/token`,K=await i(e,p,{init:{method:"GET",credentials:"include"},maxResponseBytes:64*1024,decode:E=>Pe(E,a!==null)});if(K.response.status===401)return h()&&i$1(),null;let z=j$1(K,"token"),ne=z.policyVersion,x=z.token,b=ke(x),M=Te(b);if(h())if(M!==null){let E=typeof b?.sub=="string"?b.sub:null,oe=typeof b?.org_id=="string"?b.org_id:null;if(!a||E){let B=JSON.stringify([e.projectBaseURL,E,oe,a,ne]);r.cachedByKey.clear(),r.cachedByKey.set(B,{token:x,exp:M}),r.activeKey=B;}else o(r);}else o(r);return x})();if(O)return f;let m=f.finally(()=>{r.inflight===m&&(r.inflight=null);});return r.inflight=m,m}function i$1(){n.clear();}function o(s){s.cachedByKey.clear(),s.activeKey=null;}return {getToken:t,clear:i$1}}function Pe(e,n){let t=h(e),i=i$1(t.token);if(i.length===0||i.length>32*1024)throw new TypeError("Invalid token response.");if(!n)return {token:i,policyVersion:0};let o=h(t.template);if(!Number.isSafeInteger(o.policyVersion)||o.policyVersion<1)throw new TypeError("Invalid token response.");return {token:i,policyVersion:o.policyVersion}}function xe(e$1){let n=N(e$1),t=e(e$1,n.clear,(a,l)=>g$1(a,l,Z)),i=c$1(e$1,`${new URL(e$1.apiUrl).origin}/api/projects/${e$1.decoded.projectId}`),o=a=>(...l)=>(n.clear(),a(...l)),s={getConsentStatus:()=>_(e$1),acceptConsent:a=>F(e$1,a),getToken:n.getToken,waitlist:{join:(a,l)=>i.request("/waitlist",{method:"POST",body:a,fetchOptions:l,credentials:"omit"})},account:{...t.account,updateUnsafeMetadata:o(t.account.updateUnsafeMetadata),updateProfile:o(t.account.updateProfile),changeEmail:o(t.account.changeEmail),changePassword:o(t.account.changePassword),revokeSession:o(t.account.revokeSession),delete:o(t.account.delete)},signIn:{email:o(t.signIn.email),username:o(t.signIn.username),social:o(t.signIn.social),sso:t.signIn.sso,magicLink:t.signIn.magicLink,emailOtp:o(t.signIn.emailOtp),passkey:o(t.signIn.passkey)},signUp:{email:o(t.signUp.email)},emailOtp:{...t.emailOtp,verifyEmail:o(t.emailOtp.verifyEmail)},twoFactor:{enable:t.twoFactor.enable,disable:o(t.twoFactor.disable),verifyTotp:o(t.twoFactor.verifyTotp),verifyBackupCode:o(t.twoFactor.verifyBackupCode),sendOtp:t.twoFactor.sendOtp,verifyOtp:o(t.twoFactor.verifyOtp),generateBackupCodes:t.twoFactor.generateBackupCodes},phoneOtp:{prepare:t.phoneOtp.prepare,start:t.phoneOtp.start,verify:o(t.phoneOtp.verify)},signOut:o(t.signOut)};return {...t,...s}}async function De(e){if(typeof window>"u")throw new Error("Akedly Shield challenges must be solved in a browser.");let n=await Ie(),t=e.challengeRequired?await n.solvePow(e.challenge,e.difficulty):null,i=e.turnstile.required?await n.getTurnstileToken(Ue(e.turnstile.siteKey)):void 0;return {connectionId:e.connectionId,...t?{challengeToken:e.challengeToken,nonce:t.nonce}:{},...i?{turnstileToken:i}:{}}}async function Ie(){return import('@akedly/shield')}function Ue(e){if(!e)throw new Error("Akedly Shield did not provide a Turnstile site key.");return e}var S=class extends Error{constructor(t,i){super(t);this.cause=i;this.name="AuthOwlError";}cause},L=class extends S{constructor(t,i){super(`Rate limited. Retry after ${t}s.`,i);this.retryAfterSeconds=t;this.name="RateLimitedError";}retryAfterSeconds},V=class extends S{constructor(n="invalid publishable key",t){super(n,t),this.name="InvalidKeyError";}};
|
|
3
|
+
export{S as AuthOwlError,V as InvalidKeyError,L as RateLimitedError,F as acceptConsent,xe as createAuthOwlClient,N as createTokenClient,_ as getConsentStatus,De as solvePhoneOtpChallenge};
|