@authowl/core 0.15.2 → 0.15.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,8 +1,15 @@
1
- export { A as AuthConfig, D as DecodedPublishableKey, H as HasParams, O as OrganizationMembership, R as ResolvedAuthConfig, T as TransportError, a as TransportErrorKind, c as createMembershipHas, d as decodePublishableKey, m as membershipHas, b as membershipHasPermission, e as membershipHasTeam, r as resolveConfig, s as sessionCookieName } from './organization-membership--eTrgk_L.js';
2
- import { P as PhoneOtpChallengeData, A as AkedlyShieldStartProof } from './client-CDn8-8i0.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-CDn8-8i0.js';
1
+ export { A as AuthConfig, D as DecodedPublishableKey, H as HasParams, O as OrganizationMembership, R as ResolvedAuthConfig, a as ResolvedAuthTarget, T as TransportError, b as TransportErrorKind, c as createMembershipHas, d as decodePublishableKey, m as membershipHas, e as membershipHasPermission, f as membershipHasTeam, r as resolveAuthTarget, g as resolveConfig, s as sessionCookieName } from './organization-membership-CaaUep5j.js';
2
+ export { S as SESSION_TOKEN_HEADER, a as SESSION_TRANSPORT_BEARER, b as SESSION_TRANSPORT_HEADER } from './session-transport-contract-HDPYRum8.js';
3
+ import { P as PhoneOtpChallengeData, A as AkedlyShieldStartProof } from './client-CmEFSonw.js';
4
+ 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-CmEFSonw.js';
4
5
  export { L as LOCALES, a as Locale, d as directionFor, i as isLocale } from './index-hIdXOzRp.js';
5
6
 
7
+ /**
8
+ * Read the session-only persistence signal carried by core's challenge transport.
9
+ * Framework adapters use this instead of recreating the challenge cookie grammar.
10
+ */
11
+ declare function sessionChallengeIsEphemeral(headers: Headers): boolean;
12
+
6
13
  /**
7
14
  * Complete Akedly Shield's browser-only proof ceremony. The provider package is
8
15
  * lazy-loaded only when the server-selected route requires it.
@@ -33,4 +40,4 @@ declare class AuthOwlHttpError extends Error {
33
40
  constructor(label: string, response: Response, requestId?: string);
34
41
  }
35
42
 
36
- export { AkedlyShieldStartProof, AuthOwlError, AuthOwlHttpError, InvalidKeyError, PhoneOtpChallengeData, RateLimitedError, createIdempotencyKey, solvePhoneOtpChallenge };
43
+ export { AkedlyShieldStartProof, AuthOwlError, AuthOwlHttpError, InvalidKeyError, PhoneOtpChallengeData, RateLimitedError, createIdempotencyKey, sessionChallengeIsEphemeral, 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 {c as c$1,d,h,j as j$1,f}from'./chunk-6CEKG2JL.js';export{e as AUTH_CHALLENGE_HEADER,b as AuthOwlHttpError,g as createIdempotencyKey,k as getPublicConfig,a as resolveProjectCapabilities}from'./chunk-6CEKG2JL.js';import {i,k as k$1,j as j$2}from'./chunk-RRP2XNYV.js';export{g as TransportError,w as createMembershipHas,a as decodePublishableKey,v as membershipHas,t as membershipHasPermission,u as membershipHasTeam,f as resolveConfig,b as sessionCookieName}from'./chunk-RRP2XNYV.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 c$1(e,ee(e),{init:{method:"GET",credentials:"include"},maxResponseBytes:65536,decode:we});return n.response.status===401?{required:false}:d(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 d(await c$1(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=i(e),t=k$1(n.required),i$1=Ee(n.needsConsent),o=te(n.version),s=X(n.termsUrl),a=X(n.privacyUrl);return {required:t,...i$1===void 0?{}:{needsConsent:i$1},...o===void 0?{}:{version:o},...s===void 0?{}:{termsUrl:s},...a===void 0?{}:{privacyUrl:a}}}function Se(e){let n=i(e),t=te(n.version);return {ok:k$1(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$1=++r.sequence,h=()=>n.get(l)===r&&r.sequence===d$1,f=(async()=>{let p=a?`${e.projectBaseURL}/token/${encodeURIComponent(a)}`:`${e.projectBaseURL}/token`,K=await c$1(e,p,{init:{method:"GET",credentials:"include"},maxResponseBytes:64*1024,decode:E=>Pe(E,a!==null)});if(K.response.status===401)return h()&&i(),null;let z=d(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(){n.clear();}function o(s){s.cachedByKey.clear(),s.activeKey=null;}return {getToken:t,clear:i}}function Pe(e,n){let t=i(e),i$1=j$2(t.token);if(i$1.length===0||i$1.length>32*1024)throw new TypeError("Invalid token response.");if(!n)return {token:i$1,policyVersion:0};let o=i(t.template);if(!Number.isSafeInteger(o.policyVersion)||o.policyVersion<1)throw new TypeError("Invalid token response.");return {token:i$1,policyVersion:o.policyVersion}}function xe(e){let n=N(e),t=h(e,n.clear,(a,l)=>j$1(a,l,Z)),i=f(e,`${new URL(e.apiUrl).origin}/api/projects/${e.decoded.projectId}`),o=a=>(...l)=>(n.clear(),a(...l)),s={getConsentStatus:()=>_(e),acceptConsent:a=>F(e,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};
1
+ export{a as LOCALES,b as directionFor,c as isLocale}from'./chunk-M4QJVSXT.js';import {c as c$1,d,h,j as j$1,f}from'./chunk-ELBANZQP.js';export{e as AUTH_CHALLENGE_HEADER,b as AuthOwlHttpError,g as createIdempotencyKey,k as getPublicConfig,a as resolveProjectCapabilities}from'./chunk-ELBANZQP.js';import {n,p,o}from'./chunk-6D4A36HU.js';export{g as SESSION_TOKEN_HEADER,i as SESSION_TRANSPORT_BEARER,h as SESSION_TRANSPORT_HEADER,l as TransportError,B as createMembershipHas,a as decodePublishableKey,A as membershipHas,y as membershipHasPermission,z as membershipHasTeam,j as resolveAuthTarget,k as resolveConfig,e as sessionChallengeIsEphemeral,b as sessionCookieName}from'./chunk-6D4A36HU.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),a=new ArrayBuffer(o.length),s=new Uint8Array(a);for(let l=0;l<o.length;l++)s[l]=o.charCodeAt(l);return a}function y(){return Te.stubThis(globalThis?.PublicKeyCredential!==void 0&&typeof globalThis.PublicKeyCredential=="function")}var Te={stubThis:e=>e};function T(e){let{id:n}=e;return {...e,id:g(n),transports:e.transports}}function C(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(C(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 Ce=["cross-platform","platform"];function P(e){if(e&&!(Ce.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(T)},o={};t&&(o.mediation="conditional"),o.publicKey=i,o.signal=k.createNewAbortSignal();let a;try{a=await navigator.credentials.create(o);}catch(p){throw W({error:p,options:o})}if(!a)throw new Error("Registration was not completed");let{id:s,rawId:l,response:r,type:O}=a,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:s,rawId:u(l),response:{attestationObject:u(r.attestationObject),clientDataJSON:u(r.clientDataJSON),transports:d,publicKeyAlgorithm:h,publicKey:f,authenticatorData:m},type:O,clientExtensionResults:a.getClientExtensionResults(),authenticatorAttachment:P(a.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(C(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(T));let a={...n,challenge:g(n.challenge),allowCredentials:o},s={};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');s.mediation="conditional",a.allowCredentials=[];}s.publicKey=a,s.signal=k.createNewAbortSignal();let l;try{l=await navigator.credentials.get(s);}catch(m){throw Y({error:m,options:s})}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 c$1(e,ee(e),{init:{method:"GET",credentials:"include"},maxResponseBytes:65536,decode:ke});return n.response.status===401?{required:false}:d(n,"consent status")}async function N(e,n){if(!Number.isSafeInteger(n)||n<1)throw new TypeError("Consent version must be a positive integer.");return d(await c$1(e,ee(e),{init:{method:"POST",headers:{"content-type":"application/json"},credentials:"include",body:JSON.stringify({version:n})},maxResponseBytes:64*1024,decode:Pe}),"consent accept")}function ke(e){let n$1=n(e),t=p(n$1.required),i=xe(n$1.needsConsent),o=te(n$1.version),a=X(n$1.termsUrl),s=X(n$1.privacyUrl);return {required:t,...i===void 0?{}:{needsConsent:i},...o===void 0?{}:{version:o},...a===void 0?{}:{termsUrl:a},...s===void 0?{}:{privacyUrl:s}}}function Pe(e){let n$1=n(e),t=te(n$1.version);return {ok:p(n$1.ok),...t===void 0?{}:{version:t}}}function xe(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 De=30;function Ie(e){return typeof e?.exp=="number"?e.exp:null}function Ue(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 F(e){let n=new Map;async function t(a={}){let s=a.template===void 0?null:a.template.trim().toLowerCase();if(s==="")throw new TypeError("Template missing");let l=s??"",r=n.get(l);r||(r={activeKey:null,cachedByKey:new Map,inflight:null,sequence:0},n.set(l,r));let O=a.forceRefresh===true;if(!O){let p=r.activeKey?r.cachedByKey.get(r.activeKey):null;if(p&&p.exp-Date.now()/1e3>De)return p.token;if(r.inflight)return r.inflight}let d$1=++r.sequence,h=()=>n.get(l)===r&&r.sequence===d$1,f=(async()=>{let p=s?`${e.projectBaseURL}/token/${encodeURIComponent(s)}`:`${e.projectBaseURL}/token`,K=await c$1(e,p,{init:{method:"GET",credentials:"include"},maxResponseBytes:64*1024,decode:E=>ve(E,s!==null)});if(K.response.status===401)return h()&&i(),null;let z=d(K,"token"),ne=z.policyVersion,x=z.token,b=Ue(x),B=Ie(b);if(h())if(B!==null){let E=typeof b?.sub=="string"?b.sub:null,oe=typeof b?.org_id=="string"?b.org_id:null;if(!s||E){let M=JSON.stringify([e.projectBaseURL,E,oe,s,ne]);r.cachedByKey.clear(),r.cachedByKey.set(M,{token:x,exp:B}),r.activeKey=M;}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(){n.clear();}function o(a){a.cachedByKey.clear(),a.activeKey=null;}return {getToken:t,clear:i}}function ve(e,n$1){let t=n(e),i=o(t.token);if(i.length===0||i.length>32*1024)throw new TypeError("Invalid token response.");if(!n$1)return {token:i,policyVersion:0};let o$1=n(t.template);if(!Number.isSafeInteger(o$1.policyVersion)||o$1.policyVersion<1)throw new TypeError("Invalid token response.");return {token:i,policyVersion:o$1.policyVersion}}function _e(e){let n=F(e),t=h(e,n.clear,(s,l)=>j$1(s,l,Z)),i=f(e,`${new URL(e.apiUrl).origin}/api/projects/${e.decoded.projectId}`),o=s=>(...l)=>(n.clear(),s(...l)),a={getConsentStatus:()=>_(e),acceptConsent:s=>N(e,s),getToken:n.getToken,waitlist:{join:(s,l)=>i.request("/waitlist",{method:"POST",body:s,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,...a}}async function Ne(e){if(typeof window>"u")throw new Error("Akedly Shield challenges must be solved in a browser.");let n=await Fe(),t=e.challengeRequired?await n.solvePow(e.challenge,e.difficulty):null,i=e.turnstile.required?await n.getTurnstileToken(Le(e.turnstile.siteKey)):void 0;return {connectionId:e.connectionId,...t?{challengeToken:e.challengeToken,nonce:t.nonce}:{},...i?{turnstileToken:i}:{}}}async function Fe(){return import('@akedly/shield')}function Le(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,N as acceptConsent,_e as createAuthOwlClient,F as createTokenClient,_ as getConsentStatus,Ne as solvePhoneOtpChallenge};
package/dist/native.cjs CHANGED
@@ -1,2 +1,2 @@
1
- 'use strict';var $n=Object.defineProperty;var Je=(e,t)=>()=>(e&&(t=e(e=0)),t);var Gn=(e,t)=>{for(var n in t)$n(e,n,{get:t[n],enumerable:true});};function ee(){return typeof window<"u"&&typeof document<"u"&&typeof crypto<"u"&&typeof crypto.subtle?.digest=="function"}var ve=Je(()=>{});var ye={};Gn(ye,{beginCrossSiteSignIn:()=>Ho,challengeFor:()=>Dn,completeCrossSiteSignIn:()=>qo,takeHandoffCode:()=>Un});function En(e){let t="";for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function Dn(e){let t=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(e));return En(new Uint8Array(t))}function Lo(){return En(crypto.getRandomValues(new Uint8Array(Uo)))}function zn(e,t){let n=window.location.protocol==="https:"?"; Secure":"";document.cookie=`${vn}=${e}; Path=/; Max-Age=${t}; SameSite=Lax${n}`;}function Mo(){for(let e of document.cookie.split(";")){let t=e.indexOf("=");if(!(t<0)&&e.slice(0,t).trim()===vn)return e.slice(t+1).trim()||null}return null}function Fo(){zn("",0);}function xn(e){return new URL(e,window.location.href).toString()}async function Ho(e,t){let n=t.callbackURL?xn(t.callbackURL):null;if(n&&new URL(n).origin!==window.location.origin)return null;let i=Lo(),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 No){let a=t[r];a&&o.searchParams.set(r,a);}let s=`${window.location.origin}${window.location.pathname}${window.location.search}`;o.searchParams.set("cb",n??s);for(let[r,a]of [["err",t.errorCallbackURL],["new",t.newUserCallbackURL]])a&&o.searchParams.set(r,xn(a));return o.searchParams.set("challenge",await Dn(i)),zn(i,_o),o.toString()}function Un(){if(typeof window>"u")return null;let e=window.location.hash;if(!e.includes(Ke))return null;let t=new URLSearchParams(e.replace(/^#/,"")),n=t.get(Ke);if(!n)return null;t.delete(Ke);let i=t.toString();return window.history.replaceState(window.history.state,"",`${window.location.pathname}${window.location.search}${i?`#${i}`:""}`),n}async function qo(e,t){if(!ee())return false;let n=Un();if(!n)return false;let i=Mo();if(Fo(),!i)return false;t.beginSession({remember:true});let{error:o}=await e.request("/session/exchange",{method:"POST",body:{code:n,verifier:i}});return o===null}var vn,Ke,Uo,_o,No,Ae=Je(()=>{ve();vn="authowl_handoff_verifier",Ke="authowl_code",Uo=32,_o=900,No=["email","providerId","domain","organizationSlug"];});var Wn=/^(pk_(live|test))_([0-9a-f-]{36})_([A-Za-z0-9]{20,})$/i,Yn=/^sk_/i;function be(e){if(typeof e!="string"||e.length===0)throw new Error("publishableKey is required");if(Yn.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=Wn.exec(e);if(!t)throw new Error("publishableKey is malformed; expected pk_(live|test)_<uuid>_<base62>");return {prefix:t[1].toLowerCase(),env:t[2].toLowerCase(),projectId:t[3].toLowerCase()}}var $e=/^http:\/\/(?:(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*localhost|127\.0\.0\.1|\[::1\])(?::\d+)?(?:\/|$)/i;function we(e,t){throw new Error(`${e}: ${t}`)}function Ge(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&&$e.test(i)))throw new TypeError("Transport URL must use HTTPS except on approved loopback.");return n}function We(e,t){(typeof e!="string"||!/^https?:\/\/[^/?#@\\\s]+\/?$/i.test(e))&&we("apiUrl","origin required");let n;try{n=new URL(e);}catch{we("apiUrl","origin required");}return n.protocol==="http:"&&(!t.allowHttpLoopback||!$e.test(e))&&we("apiUrl","HTTPS required except exact loopback"),n.origin}function j(e,t){try{return e?.getItem(t)??null}catch{return null}}function J(e,t,n){try{n===null?e?.removeItem(t):e?.setItem(t,n);}catch{}}function $(){try{return globalThis.localStorage}catch{return}}function V(){try{return globalThis.sessionStorage}catch{return}}var Xn="authowl.session-challenge",Qn=e=>`${Xn}.${e}`,Zn="set-auth-challenge",Ye="x-authowl-challenge",Qe="INVALID_TWO_FACTOR_COOKIE",ei=2048,oe=e=>e!==null&&e.length<=ei,Xe=/^[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]+$/;function ti(e){let t=[];for(let n of e.split(";")){let i=n.trimStart(),o=i.indexOf("=");o<=0||t.push([i.slice(0,o).trimEnd(),i.slice(o+1)]);}return t}function Ze(e){let t=Qn(e),n=new Map;function i(){return n.size===0?null:[...n].map(([a,u])=>`${a}=${u}`).join("; ")}function o(){let a=i();J(V(),t,oe(a)?a:null);}function s(a){for(let[u,m]of ti(a))Xe.test(u)&&(m===""?n.delete(u):Xe.test(m)&&n.set(u,m));}let r=j(V(),t);return oe(r)&&s(r),{presentOn(a){let u=i();a.delete(Ye),oe(u)&&a.set(Ye,u);},observe(a){let u=a.get(Zn);oe(u)&&(s(u),o());},clear(){n.clear(),o();}}}var ni="authowl.session-token",ii="authowl.cookie-transport",tt="ok",nt="bearer",oi=e=>`${ni}.${e}`,ri=e=>`${ii}.${e}`,si="set-auth-token",ai="x-authowl-session-transport",ui="bearer";function ci(e){return e===tt?"cookies":e===nt?"bearer":"unknown"}function di(e){return e==="cookies"?tt:e==="bearer"?nt:null}function li(e){let t=oi(e),n=ri(e),i=Ze(e),o=null,s=false,r=null,a=ci(j($(),n)),u=()=>a==="unknown",m=0,f=null,y=false;function A(){let h=j(V(),t);if(h!==null)return s=true,h;let x=j($(),t);return x!==null?(s=false,x):null}o=A(),o!==null&&u()&&(y=true);function b(){if(!(!y||!f)){y=false;try{f();}catch{}}}function c(){let h=a==="bearer"?o:null,[x,ie]=s?[V(),$()]:[$(),V()];J(ie,t,null),J(x,t,h);}function l(h){h!==null&&r!==null&&(s=r,r=null),o=h,c(),h!==null&&u()&&(y=true,b());}function g(h){a=h,J($(),n,di(h));}function O(){g("unknown"),y=false;}function R(){return o===null&&(o=A()),o}function K(){let h=A();return h!==null&&(o=h),o}function B(h){K()===h&&c();}function w(){m+=1,r=null,s=false,l(null),i.clear(),O();}let T=()=>a!=="cookies";return {hasToken:()=>R()!==null,declareOn(h){if(h.has("authorization"))return false;let x=R();return !x&&!T()?false:(x&&h.set("authorization",`Bearer ${x}`),h.set(ai,ui),i.presentOn(h),true)},wantsToken:T,needsProbe:u,observe(h){let x=h.get(si);x&&l(x),i.observe(h);},dropChallenge:i.clear,measureWith(h){f=h,b();},beginRead(){let h=R(),x=m;return {carriedToken:h!==null,endIfDead(){h!==null&&K()===h&&m===x&&w();},recordCookieVerdict(ie){if(m===x&&u()){if(g(ie?"cookies":"bearer"),ie){l(null);return}B(h);}}}},beginSession({remember:h}){m+=1,r=!h,i.clear(),O();},endSession:w}}var et=new Map;function it(e){let t=et.get(e);if(t)return t;let n=li(e);return et.set(e,n),n}function pi(e,t){return t?.headers?new Headers(t.headers):typeof e=="object"&&e!==null&&"headers"in e?new Headers(e.headers):new Headers}function ot(e,t){let n=it(e),i=(r,a)=>(t??globalThis.fetch)(r,a);return {fetch:async(r,a)=>{if(a?.credentials==="omit"||!n.wantsToken())return i(r,a);let u=pi(r,a),m=n.declareOn(u),f=await i(r,{...a,headers:u});return m&&n.observe(f.headers),f},probe:i,tokens:n}}function Oe(e){if(!e||typeof e!="object")throw new Error("AuthConfig is required");let t=be(e.publishableKey),n=We(e.apiUrl,{allowHttpLoopback:t.env==="test"}),i=`${n}/api/projects/${t.projectId}/auth`,{fetch:o,...s}=ot(t.projectId,e.fetch);return {...e,apiUrl:n,decoded:t,projectBaseURL:i,fetch:o,session:s}}var fi=1e4,gi=1024*1024,E=class extends Error{kind;requestId;constructor(t,n){super(ki(t)),this.name="TransportError",this.kind=t,this.requestId=n;}},at=new WeakSet;function D(e,t){let n=new E(e,t);return at.add(n),n}async function ut({fetchImpl:e,url:t,init:n={},timeoutMs:i=fi,maxResponseBytes:o=gi,allowHttpLoopback:s=false,decode:r}){st(i,"timeoutMs"),st(o,"maxResponseBytes");let a=Ge(t,{allowHttpLoopback:s}),u=n.signal,m=new AbortController,f=null,y,A=new Promise(g=>{y=g;}),b=g=>{f===null&&(f=g,y({type:"abort",kind:g}),m.abort());},c=()=>b("aborted");u?.addEventListener("abort",c,{once:true});let l=setTimeout(()=>b("timeout"),i);u?.aborted&&c();try{if(f!==null)throw D(f);let g;try{g=await Promise.race([e(a.toString(),{...n,redirect:"error",signal:m.signal}).then(T=>({type:"response",response:T})),A]);}catch{throw D(f??"network")}if(g.type==="abort")throw D(g.kind);if(!mi(g.response))throw D("invalid_response");let O=g.response,R=Oi(O.headers),K=await hi(O,o,A,()=>f,R),B=bi(O,K,R),w;try{w=O.ok&&r?r(B,Object.freeze({status:O.status})):B;}catch{throw D("invalid_response",R)}return {response:O,data:w,...R===void 0?{}:{requestId:R}}}catch(g){throw g instanceof E&&at.has(g)?g:D(f??"network")}finally{clearTimeout(l),u?.removeEventListener("abort",c);}}function mi(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 hi(e,t,n,i,o){let s=e.headers.get("content-length");if(s!==null){if(!/^\d+$/.test(s))throw rt(e.body),D("invalid_response",o);if(Number(s)>t)throw rt(e.body),D("response_too_large",o)}if(!e.body)return "";let r;try{r=e.body.getReader();}catch{throw D("network",o)}let a=[],u=0,m=null;try{for(;;){let A;try{A=await Promise.race([r.read(),n]);}catch{m=D(i()??"network",o);break}if(yi(A)){m=D(A.kind,o);break}let{done:b,value:c}=A;if(b)break;if(c.byteLength!==0){if(u+=c.byteLength,u>t){m=D("response_too_large",o);break}a.push(c);}}}finally{m&&Ai(r);try{r.releaseLock();}catch{}}if(m)throw m;let f=new Uint8Array(u),y=0;for(let A of a)f.set(A,y),y+=A.byteLength;try{return new TextDecoder("utf-8",{fatal:!0}).decode(f)}catch{throw D("invalid_response",o)}}function yi(e){return "type"in e&&e.type==="abort"}function rt(e){if(e)try{e.cancel().catch(()=>{});}catch{}}function Ai(e){try{e.cancel().catch(()=>{});}catch{}}function bi(e,t,n){if(e.status===204||e.status===205)return null;let i=wi(e.headers.get("content-type"));if(!e.ok&&(!i||t.length===0))return null;if(!i||t.length===0)throw D("invalid_response",n);try{return JSON.parse(t)}catch{if(!e.ok)return null;throw D("invalid_response",n)}}function wi(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 st(e,t){if(!Number.isInteger(e)||e<=0)throw new TypeError(`${t} must be a positive integer.`)}function ki(e){switch(e){case "aborted":return "The request was cancelled.";case "timeout":return "The request timed out.";case "response_too_large":return "The response exceeded the allowed size.";case "invalid_response":return "The service returned an invalid response.";case "network":return "The network request could not be completed."}}var ke=class extends Error{status;requestId;constructor(t,n,i){super(`${t} request failed with status ${n.status}.`),this.name="AuthOwlHttpError",this.status=n.status,this.requestId=i;}};function re(e,t,n={}){let i=new Headers(n.init?.headers);return i.set("x-publishable-key",e.publishableKey),ut({fetchImpl:e.fetch,url:t,init:{...n.init,headers:i},allowHttpLoopback:e.decoded.env==="test",...n.timeoutMs===void 0?{}:{timeoutMs:n.timeoutMs},...n.maxResponseBytes===void 0?{}:{maxResponseBytes:n.maxResponseBytes},...n.decode===void 0?{}:{decode:n.decode}})}function ct(e,t){if(!e.response.ok)throw new ke(t,e.response,e.requestId);return e.data}var Si="x-authowl-turnstile-token",Ri=1e4,Ti=32,Ii=2e4;function G(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=xi(t,n,i.query),s=i.method??(i.body===void 0?"GET":"POST"),r=new Headers(i.fetchOptions?.headers);i.fetchOptions?.authChallengeToken&&r.set(Si,i.fetchOptions.authChallengeToken),i.body!==void 0&&r.set("content-type","application/json");let a={method:s,headers:r,credentials:i.credentials??"include",...i.body===void 0?{}:{body:JSON.stringify(i.body)}},u=Object.freeze({method:s,path:n});await i.fetchOptions?.onRequest?.(u);let m=Ci(s,i.fetchOptions),f;try{f=await Pi(e,o,{...a,signal:i.fetchOptions?.signal},m);}catch(g){let O=lt(g);return await i.fetchOptions?.onError?.(Se(u,O,Di(g))),{data:null,error:O}}let{response:y,requestId:A}=f,b=_i(n,f.data),c=b;if(y.ok)try{c=Te(b),i.decode&&(c=i.decode(c));}catch{let g=lt(new E("invalid_response",A));return await i.fetchOptions?.onError?.(Se(u,g,"invalid_response")),{data:null,error:g}}let l=Object.freeze({...u,status:y.status,...A===void 0?{}:{requestId:A}});if(await i.fetchOptions?.onResponse?.(l),!y.ok){let g=vi(y,b,A);return g.code===Qe&&e.session.tokens.dropChallenge(),await i.fetchOptions?.onError?.(Se(u,g,"api")),{data:null,error:g}}return await i.fetchOptions?.onSuccess?.(l),{data:c,error:null}}}}async function Pi(e,t,n,i){let o=Date.now()+Ri;for(let s=0;s<i;s+=1){let r=o-Date.now();if(r<=0)throw new E("timeout");try{let a=await re(e,t,{init:n,timeoutMs:Math.max(1,Math.ceil(r))});if(a.response.status<500||s===i-1)return a}catch(a){if(s===i-1||!(a instanceof E)||a.kind!=="network")throw a}await zi(50*2**s,n.signal,o);}throw new E("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 xi(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 vi(e,t,n){let i=Z(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)??dt(t.get("retry-after"))??dt(t.get("x-retry-after"));if(n!==void 0)return Math.min(Math.max(Math.trunc(n),1),86400)}function dt(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 E?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 E&&e.requestId?{requestId:e.requestId}:{}}}function Se(e,t,n){return Object.freeze({...e,status:t.status??0,...t.requestId===void 0?{}:{requestId:t.requestId},failure:n})}function Di(e){return e instanceof E?e.kind:"network"}function zi(e,t,n){return new Promise((i,o)=>{if(t?.aborted){o(new E("aborted"));return}let s=n-Date.now();if(s<=0){o(new E("timeout"));return}let r=Math.min(e,s),a=()=>{clearTimeout(u),o(new E("aborted"));},u=setTimeout(()=>{t?.removeEventListener("abort",a),Date.now()>=n?o(new E("timeout")):i();},r);t?.addEventListener("abort",a,{once:true}),t?.aborted&&a();})}function Te(e,t="",n=0,i={nodes:0}){if(i.nodes+=1,n>Ti||i.nodes>Ii)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=>Te(o,"",n+1,i)):Z(e)?Object.fromEntries(Object.entries(e).map(([o,s])=>[o,Ui(o)?s:Te(s,o,n+1,i)])):e}function Ui(e){return e==="metadata"||e==="public_metadata"||e==="unsafe_metadata"||e==="private_metadata"||e==="publicMetadata"||e==="unsafeMetadata"||e==="privateMetadata"}function _i(e,t){if(e==="/list-sessions"&&Array.isArray(t))return t.map(o=>Z(o)?Re(o):o);if(!Z(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-")?Re(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")&&Z(i.session)&&(i={...i,session:Re(i.session)}),i}function Re(e){if(!Object.hasOwn(e,"token"))return e;let t={...e};return delete t.token,t}function Z(e){return !!e&&typeof e=="object"&&!Array.isArray(e)}var Ni=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 S(e){return typeof e!="string"&&d(),e}function I(e){return typeof e!="boolean"&&d(),e}function C(e){return (!(e instanceof Date)||Number.isNaN(e.getTime()))&&d(),e}function se(e){return (!Array.isArray(e)||!e.every(t=>typeof t=="string"))&&d(),[...e]}function P(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 _(e){let t=p(e),n=t.email;return n!==null&&typeof n!="string"&&d(),{id:S(t.id),email:n,emailVerified:I(t.emailVerified),createdAt:C(t.createdAt),updatedAt:C(t.updatedAt),...U("phoneNumber",P(t,"phoneNumber")),...U("username",P(t,"username")),...U("displayUsername",P(t,"displayUsername")),...U("firstName",P(t,"firstName")),...U("lastName",P(t,"lastName")),...U("name",P(t,"name")),...U("image",P(t,"image")),...U("twoFactorEnabled",pt(t,"twoFactorEnabled"))}}function ae(e){let t=p(e),n=t.membership;return {id:S(t.id),userId:S(t.userId),expiresAt:C(t.expiresAt),...U("activeOrganizationId",P(t,"activeOrganizationId")),...U("activeTeamId",P(t,"activeTeamId")),...U("membership",n==null?n:Li(n)),...U("pendingMfaEnrollment",pt(t,"pendingMfaEnrollment"))}}function d(){throw new TypeError("AuthOwl response does not match its runtime contract.")}function L(e,t=20,n=1e4){return (!e||typeof e!="object"||Array.isArray(e))&&d(),Ce(e,t,n)}function Ce(e,t=20,n=1e4){return Pe(e,0,{nodes:0},t,n)}function Li(e){let t=p(e);return {role:S(t.role),permissions:se(t.permissions),...t.teams===void 0?{}:{teams:se(t.teams)}}}function Pe(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(a=>Pe(a,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[a,u]of Object.entries(e))Ni.has(a)&&d(),r[a]=Pe(u,t+1,n,i,o);return r}function U(e,t){return t===void 0?{}:{[e]:t}}function ft({http:e,probe:t,tokens:n,channelName:i}){let o=new Set,s=null,r=null,a=null,u=null,m=null,f,y=w=>{c(w);};f={data:null,isPending:true,isRefetching:false,error:null,refetch:y};function A(w){f=w;for(let T of o)T();}async function b(w){return e.request("/get-session",{query:w?.query,decode:xe})}function c(w){if(w?.query?.disableCookieCache===true)return l(w);if(u)return u;let T=l(w).finally(()=>{u===T&&(u=null);});return u=T,T}async function l(w){a?.abort();let T=new AbortController;a=T,A({...f,isPending:f.data===null&&f.error===null,isRefetching:f.data!==null});let h=n.beginRead(),x=await e.request("/get-session",{query:w?.query,fetchOptions:{signal:T.signal},decode:xe});if(a===T&&(a=null,A({data:x.data,error:x.error,isPending:false,isRefetching:false,refetch:y}),x.error===null)){if(x.data===null){h.endIfDead();return}await g(h);}}async function g(w){if(n.needsProbe()){if(!w.carriedToken){w.recordCookieVerdict(true);return}return m||O(w)}}function O(w){let T=t.request("/get-session",{query:{disableCookieCache:true},decode:xe}).then(h=>{m===T&&h.error===null&&w.recordCookieVerdict(h.data!==null);}).finally(()=>{m===T&&(m=null);});return m=T,T}function R(){s?.postMessage({type:"session-changed"});}function K(){if(typeof window>"u"||r)return;let w=()=>{c();},T=()=>{document.visibilityState==="visible"&&c();};window.addEventListener("focus",w),document.addEventListener("visibilitychange",T),typeof BroadcastChannel<"u"&&(s=new BroadcastChannel(i),s.addEventListener("message",w)),r=()=>{window.removeEventListener("focus",w),document.removeEventListener("visibilitychange",T),s?.close(),s=null,r=null;};}function B(w){return o.add(w),o.size===1&&(K(),c()),()=>{o.delete(w),o.size===0&&(a?.abort(),a=null,r?.());}}return n.measureWith(()=>{n.needsProbe()&&O(n.beginRead());}),{store:{subscribe:B,getSnapshot:()=>f},getSession:b,notifyMutation(){R(),m&&m.catch(()=>{}).then(()=>{!n.needsProbe()&&n.hasToken()&&R();}),o.size>0&&c({query:{disableCookieCache:true}});}}}function xe(e){if(e===null)return null;let t=p(e);return (t.session===void 0||t.user===void 0)&&d(),{session:ae(t.session),user:_(t.user)}}ve();function gt(){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=L(t.public_metadata),i=L(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 bt(e,t){let{post:n,mutation:i}=G(e,t);return {getMetadata:o=>mt(e,o),updateUnsafeMetadata:(o,s)=>ht(e,o,s),updateProfile:(o,s)=>i(n("/update-user",o,s,te)),changeEmail:(o,s)=>i(n("/change-email",o,s,te)),changePassword:(o,s)=>i(n("/change-password",o,s,Mi)),listSessions:o=>e.request("/list-sessions",{fetchOptions:o,decode:Fi}),revokeSession:({sessionId:o},s)=>i(n("/revoke-session",{sessionId:o},s,te)),revokeOtherSessions:o=>i(n("/revoke-other-sessions",{},o,te)),listSocialAccounts:async o=>{let s=await e.request("/list-accounts",{fetchOptions:o,decode:Hi});if(!s.data)return {data:null,error:s.error};let r=s.data.length>1;return {...s,data:s.data.filter(a=>a.providerId!=="credential").map(a=>({...a,canUnlink:r}))}},linkSocial:(o,s)=>n("/link-social",o,s,qi),unlinkSocial:(o,s)=>i(n("/unlink-account",o,s,te)),delete:(o={},s)=>i(n("/delete-user",o,s,Vi))}}function te(e){let t=p(e);return {status:I(t.status)}}function Mi(e){let t=p(e);return {user:_(t.user)}}function Fi(e){return Array.isArray(e)||d(),e.map(t=>{let n=p(t);return {id:S(n.id),userId:S(n.userId),createdAt:C(n.createdAt),updatedAt:C(n.updatedAt),expiresAt:C(n.expiresAt),...At("ipAddress",P(n,"ipAddress")),...At("userAgent",P(n,"userAgent"))}})}function Hi(e){return Array.isArray(e)||d(),e.map(t=>{let n=p(t);return {id:S(n.id),userId:S(n.userId),providerId:S(n.providerId),accountId:S(n.accountId),scopes:se(n.scopes),createdAt:C(n.createdAt),updatedAt:C(n.updatedAt)}})}function qi(e){let t=p(e);return {url:S(t.url),redirect:I(t.redirect)}}function Vi(e){let t=p(e);return {success:I(t.success),message:S(t.message)}}function At(e,t){return t===void 0?{}:{[e]:t}}function Ee(e,t){return !e||!t?false:e.permissions.includes(t)}function Ki(e,t){return !e||!t?false:e.teams?.includes(t)??false}function De(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&&!Ki(e,o))}function Bi(e){return {has:t=>De(e,t),hasPermission:t=>Ee(e,t.permission)}}var ji=new Set(["pending","accepted","rejected","canceled"]),wt=1e4;function W(e,t,n){let i=p(e),o={id:k(i.id),name:k(i.name),slug:k(i.slug),createdAt:C(i.createdAt),...ue("logo",P(i,"logo")),...ue("metadata",i.metadata===void 0?void 0:Ce(i.metadata))};return H(o.id,t),H(o.slug,n),o}function Ot(e){return q(e,W)}function ze(e,t,n){return e===null?null:(t===null&&d(),W(e,t,n))}function kt(e,t,n){if(e===null)return null;let i=p(e),o=W(i,t,n);return {...o,members:q(i.members,s=>_t(s,o.id)),invitations:q(i.invitations,s=>M(s,void 0,o.id))}}function St(e,t){let n=q(e,i=>Ut(i));return ce(n.map(i=>i.organizationId),t),n}function Rt(e,t,n){return e===null?null:(t===null&&d(),Ut(e,t,n))}function Tt(e,t){let n=p(e);return (!Number.isSafeInteger(n.total)||n.total<0)&&d(),{members:Ji(n.members,t),total:n.total}}function M(e,t,n){let i=p(e),o=k(i.status);ji.has(o)||d();let s={id:k(i.id),organizationId:k(i.organizationId),email:k(i.email),role:k(i.role),status:o,inviterId:k(i.inviterId),expiresAt:C(i.expiresAt),createdAt:C(i.createdAt)};return H(s.id,t),H(s.organizationId,n),s}function It(e,t){let n=q(e,i=>M(i));return ce(n.map(i=>i.organizationId),t),n}function Pt(e){return q(e,t=>{let n=p(t);return {...M(n),organizationName:k(n.organizationName)}})}function Ct(e,t){let n=p(e);return {...M(n,t),organizationName:k(n.organizationName),organizationSlug:k(n.organizationSlug),inviterEmail:k(n.inviterEmail)}}function xt(e,t){let n=p(e),i=M(n.invitation,t);return {invitation:i,member:Y(n.member,void 0,i.organizationId)}}function vt(e,t){let n=p(e);return n.member!==null&&d(),{invitation:n.invitation===null?null:M(n.invitation,t),member:null}}function Et(e,t){return e===null?null:M(e,t)}function Dt(e,t,n){let i=p(e);return {member:Y(i.member,n,t)}}function Y(e,t,n){let i=p(e),o={id:k(i.id),organizationId:k(i.organizationId),userId:k(i.userId),role:k(i.role),createdAt:C(i.createdAt),...i.user===void 0?{}:{user:Nt(i.user)}};return H(o.id,t),H(o.organizationId,n),o}function zt(e,t){let n=q(e,i=>{let o=p(i);return {organizationId:k(o.organizationId),data:{role:k(o.role),...ue("permission",o.permission===void 0?void 0:$i(o.permission))}}});return ce(n.map(i=>i.organizationId),t),n.map(i=>i.data)}function Ut(e,t,n){let i=p(e),o=i.updatedAt,s={id:k(i.id),name:k(i.name),organizationId:k(i.organizationId),createdAt:C(i.createdAt),...o===void 0?{}:{updatedAt:C(o)}};return H(s.id,t),H(s.organizationId,n),s}function _t(e,t){let n=p(e);return {...Y(n,void 0,t),user:Nt(n.user)}}function Ji(e,t){let n=q(e,i=>_t(i));return ce(n.map(i=>i.organizationId),t),n}function $i(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=>k(s));return n}function k(e){let t=S(e);return (t.length===0||t.length>wt)&&d(),t}function H(e,t){t!==void 0&&e!==t&&d();}function ce(e,t){let n=t??e[0];n!==void 0&&e.some(i=>i!==n)&&d();}function Nt(e){let t=p(e);return {id:k(t.id),name:k(t.name),email:k(t.email),...ue("image",P(t,"image"))}}function q(e,t){return Array.isArray(e)||d(),e.map(n=>t(n))}function ue(e,t){return t===void 0?{}:{[e]:t}}function Lt(e,t,n=()=>null){let{post:i,mutation:o}=G(e,t),s=(r,a,u,m)=>e.request(r,{query:a,fetchOptions:u,decode:m});return {create:(r,a)=>o(i("/organization/create",r,a,W)),list:r=>s("/organization/list",void 0,r,Ot),get:(r={},a)=>s("/organization/get-full-organization",{organizationId:r.organizationId,organizationSlug:r.organizationSlug,membersLimit:r.membersLimit},a,u=>kt(u,r.organizationId,r.organizationSlug)),setActive:(r,a)=>o(i("/organization/set-active",r,a,u=>ze(u,r.organizationId,r.organizationSlug))),listTeams:(r={},a)=>s("/organization/list-teams",{organizationId:r.organizationId},a,u=>St(u,r.organizationId)),setActiveTeam:(r,a)=>o(i("/organization/set-active-team",r,a,u=>Rt(u,r.teamId))),update:(r,a)=>o(i("/organization/update",r,a,u=>ze(u,r.organizationId))),delete:(r,a)=>o(i("/organization/delete",r,a,u=>W(u,r.organizationId))),listMembers:(r={},a)=>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},a,u=>Tt(u,r.organizationId)),inviteMember:(r,a)=>o(i("/organization/invite-member",r,a,u=>M(u,void 0,r.organizationId))),listInvitations:(r={},a)=>s("/organization/list-invitations",{organizationId:r.organizationId},a,u=>It(u,r.organizationId)),listUserInvitations:r=>s("/organization/list-user-invitations",void 0,r,Pt),getInvitation:(r,a)=>s("/organization/get-invitation",{id:r.id},a,u=>Ct(u,r.id)),acceptInvitation:(r,a)=>o(i("/organization/accept-invitation",r,a,u=>xt(u,r.invitationId))),rejectInvitation:(r,a)=>o(i("/organization/reject-invitation",r,a,u=>vt(u,r.invitationId))),cancelInvitation:(r,a)=>o(i("/organization/cancel-invitation",r,a,u=>Et(u,r.invitationId))),removeMember:(r,a)=>o(i("/organization/remove-member",r,a,u=>Dt(u,r.organizationId,r.memberIdOrEmail.includes("@")?void 0:r.memberIdOrEmail))),updateMemberRole:(r,a)=>o(i("/organization/update-member-role",r,a,u=>Y(u,r.memberId,r.organizationId))),leave:(r,a)=>o(i("/organization/leave",r,a,u=>Y(u,void 0,r.organizationId))),listRoles:(r={},a)=>s("/organization/list-roles",{organizationId:r.organizationId},a,u=>zt(u,r.organizationId)),has:r=>De(n(),r),hasPermission:r=>Ee(n(),r.permission)}}var Mt=4096,Gi=4096,Wi=100,Yi=256,Xi=16,Qi=64,Zi=12;function _e(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:nn(t.twoFactorMethods,Xi,Qi)}}):(t.twoFactorRedirect!==void 0&&d(),{redirect:I(t.redirect),...oo(t,"url"),user:_(t.user)})}function Ft(e){let t=p(e);return {user:_(t.user)}}function Ht(e){let t=p(e);return {sessionCreated:I(t.sessionCreated),user:_(t.user)}}function qt(e,t){let n=p(e),i=I(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:Ue(n.url,t)}):(o===s&&d(),o?{redirect:false,user:_(n.user)}:{redirect:false,url:Ue(n.url,t)})}function Vt(e,t){let n=p(e);return (n.redirect!==true||n.user!==void 0)&&d(),{redirect:true,url:Ue(n.url,t)}}function Kt(e){return {status:I(p(e).status)}}function Bt(e){return {success:I(p(e).success)}}function jt(e){return p(e).status!=="pending"&&d(),{status:"pending"}}function Jt(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:S(n.siteKey);return {kind:"akedly_shield_v1_2",connectionId:S(t.connectionId),challenge:S(t.challenge),difficulty:eo(t.difficulty),challengeToken:S(t.challengeToken),challengeRequired:I(t.challengeRequired),turnstile:{required:I(n.required),siteKey:i}}}function eo(e){return (!Number.isSafeInteger(e)||Number(e)<0||Number(e)>Zi)&&d(),Number(e)}function $t(e){let t=p(e);return (t.status!==true||t.sessionCreated!==true)&&d(),{status:true,sessionCreated:true,user:to(t.user)}}function Ne(e){return {status:I(p(e).status)}}function Gt(e){return {status:I(p(e).status)}}function Wt(e){let t=p(e);return {status:I(t.status),user:_(t.user)}}function Yt(e){return {success:I(p(e).success)}}function Xt(e){let t=p(e);return {totpURI:io(t.totpURI),backupCodes:tn(t.backupCodes)}}function Qt(e){return {status:I(p(e).status)}}function de(e){return p(e).status!==true&&d(),{status:true}}function Zt(e){return {status:I(p(e).status)}}function en(e){let t=p(e);return t.status!==void 0&&t.status!==true&&d(),{backupCodes:tn(t.backupCodes)}}function to(e){let t=p(e);return {id:X(t.id,512),...ro(t,"name",1024),phoneNumber:X(t.phoneNumber,64),phoneNumberVerified:I(t.phoneNumberVerified),...t.createdAt===void 0?{}:{createdAt:C(t.createdAt)},...t.updatedAt===void 0?{}:{updatedAt:C(t.updatedAt)}}}function Ue(e,t){let n=X(e,Mt);/[\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:"&&no(i.hostname)?i.href:d()}function no(e){let t=e.toLowerCase();return t==="localhost"||t==="127.0.0.1"||t==="[::1]"}function io(e){let t=X(e,Gi),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 tn(e){return nn(e,Wi,Yi)}function nn(e,t,n){(!Array.isArray(e)||e.length===0||e.length>t)&&d();let i=e.map(o=>X(o,n));return i.some(o=>o.trim().length===0)&&d(),new Set(i).size!==i.length&&d(),i}function X(e,t){let n=S(e);return (n.length===0||n.length>t)&&d(),n}function oo(e,t){let n=e[t];return n==null?{}:{[t]:X(n,Mt)}}function ro(e,t,n){let i=P(e,t);return i===void 0?{}:(i!==null&&i.length>n&&d(),{[t]:i})}var on=new Set([1564,8206,8207,8234,8235,8236,8237,8238,8294,8295,8296,8297]),le=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||sn(n,i)||rn(i)||on.has(i))return {valid:false}}let t=so(e);return Le(t)?{valid:true,value:t}:{valid:false}}function Le(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||sn(o,s)||rn(s)||on.has(s))return false;n??=s,i=s;}return t>0&&n!==void 0&&i!==void 0&&!le.has(n)&&!le.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 so(e){let t=0,n=e.length;for(;t<n;){let i=e.codePointAt(t);if(i===void 0||!le.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||!le.has(r))break;n=s;}return e.slice(t,n)}function rn(e){return e>=0&&e<=31||e>=127&&e<=159}function sn(e,t){return e.length===1&&t>=55296&&t<=57343}var cn=12,dn=5e3,ao=8,uo=1e3,co=16,an=512,ln=100,pn=8192,lo=32768,Me=1024,un=256,He=64,po=6e5,fo=/^[A-Za-z0-9_-]+$/u,go=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/u,mo=/[\u0000-\u001f\u007f-\u009f\u061c\u200e\u200f\u202a-\u202e\u2066-\u2069]/u,ho=/^[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?$/u,yo=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/iu,fn=new Set(["discouraged","preferred","required"]),Ao=new Set(["singleDevice","multiDevice"]),gn=new Set(["ble","cable","hybrid","internal","nfc","smart-card","usb"]),mn=new Set(["hybrid","security-key","client-device"]),bo=new Set(["none","indirect","direct","enterprise"]),wo=new Set(["fido-u2f","packed","android-safetynet","android-key","tpm","apple","none"]),Oo=new Set(["platform","cross-platform"]),ko=new Set(["discouraged","preferred","required"]),So=new Set([-8,-7,-257]);function hn(e){let t=L(e,cn,dn);return {challenge:In(t.challenge),...v("timeout",Rn(t.timeout)),...v("rpId",Pn(t.rpId)),...v("allowCredentials",Sn(t.allowCredentials)),...v("userVerification",ne(t.userVerification,fn)),...v("hints",ge(t.hints,mn)),...v("extensions",Tn(t.extensions))}}function yn(e){let t=L(e,cn,dn);return {challenge:In(t.challenge),rp:Ro(t.rp),user:To(t.user),pubKeyCredParams:Io(t.pubKeyCredParams),...v("timeout",Rn(t.timeout)),...v("excludeCredentials",Sn(t.excludeCredentials)),...v("authenticatorSelection",Po(t.authenticatorSelection)),...v("attestation",ne(t.attestation,bo)),...v("attestationFormats",ge(t.attestationFormats,wo)),...v("hints",ge(t.hints,mn)),...v("extensions",Tn(t.extensions))}}function An(e){let t=p(e),n=ae(t.session),i=_(t.user);return n.userId!==i.id&&d(),{session:n,user:i}}function qe(e){let t=p(e),n=t.counter;(!Number.isSafeInteger(n)||n<0)&&d();let i=Ve(t.deviceType,Ao),o=I(t.backedUp);return o&&i!=="multiDevice"&&d(),{id:Q(t.id,un),...vo(t),publicKey:Co(t.publicKey,lo),userId:Q(t.userId,un),credentialID:he(t.credentialID,pn),counter:n,deviceType:i,backedUp:o,...Eo(t),createdAt:C(t.createdAt),...Do(t)}}function bn(e,t,n){let i=qe(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>ln)&&d();let t=e.map(qe);return me(t.map(n=>n.id)),me(t.map(n=>n.credentialID)),t.length>1&&t.some(n=>n.userId!==t[0]?.userId)&&d(),t}function On(e,t,n){let i=p(e),o=qe(i.passkey);return (o.id!==t||o.name!==n)&&d(),{passkey:o}}function kn(e){return p(e).status!==true&&d(),{status:true}}function Ro(e){let t=p(e);return {name:Fe(t.name,Me),...v("id",Pn(t.id))}}function To(e){let t=p(e);return {id:he(t.id,128,1,64),name:Fe(t.name,Me),displayName:Fe(t.displayName,Me)}}function Io(e){(!Array.isArray(e)||e.length===0||e.length>He)&&d();let t=e.map(n=>{let i=p(n);return (i.type!=="public-key"||!Number.isSafeInteger(i.alg)||!So.has(i.alg))&&d(),{type:"public-key",alg:i.alg}});return zo(t.map(n=>n.alg)),t}function Sn(e){if(e===void 0)return;(!Array.isArray(e)||e.length>ln)&&d();let t=e.map(n=>{let i=p(n);return i.type!=="public-key"&&d(),{type:"public-key",id:he(i.id,pn),...v("transports",ge(i.transports,gn))}});return me(t.map(n=>n.id)),t}function Po(e){if(e===void 0)return;let t=p(e);t.requireResidentKey!==void 0&&typeof t.requireResidentKey!="boolean"&&d();let n=ne(t.residentKey,ko);return t.requireResidentKey!==void 0&&n!==void 0&&t.requireResidentKey!==(n==="required")&&d(),{...v("authenticatorAttachment",ne(t.authenticatorAttachment,Oo)),...v("residentKey",n),...v("requireResidentKey",t.requireResidentKey),...v("userVerification",ne(t.userVerification,fn))}}function Rn(e){return e!==void 0&&(typeof e!="number"||!Number.isFinite(e)||e<0||e>po)&&d(),e}function Tn(e){return e===void 0?void 0:L(e,ao,uo)}function ge(e,t){if(e===void 0)return;(!Array.isArray(e)||e.length>He)&&d();let n=e.map(i=>Ve(i,t));return me(n),n}function ne(e,t){if(e!==void 0)return Ve(e,t)}function In(e){return he(e,Math.ceil(an*4/3),co,an)}function he(e,t,n=1,i=Number.POSITIVE_INFINITY){let o=Q(e,t),s=o.length%4,r=xo(o.at(-1)??""),a=Math.floor(o.length*3/4);return (!fo.test(o)||s===1||s===2&&(r&15)!==0||s===3&&(r&3)!==0||a<n||a>i)&&d(),o}function Q(e,t){let n=S(e);return (n.length===0||n.length>t)&&d(),n}function Fe(e,t){let n=Q(e,t);return mo.test(n)&&d(),n}function Pn(e){if(e===void 0)return;let t=Q(e,253);return t!=="localhost"&&(t.endsWith(".")||!t.includes(".")||t.split(".").some(n=>!ho.test(n)))&&d(),t}function Co(e,t){let n=Q(e,t),i=n.endsWith("=="),o=!i&&n.endsWith("="),s=n.at(i?-3:o?-2:-1)??"",r=Cn(s);return (n.length%4!==0||!go.test(n)||i&&(r&15)!==0||o&&(r&3)!==0)&&d(),n}function xo(e){return Cn(e,true)}function Cn(e,t=false){return (t?"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_":"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/").indexOf(e)}function vo(e){let t=P(e,"name");return t===void 0?{}:(t!==null&&!Le(t)&&d(),{name:t})}function Eo(e){let t=P(e,"transports");if(t==null||t==="")return t===void 0?{}:{transports:t};let n=t.split(",");return (n.length>He||n.some(i=>!gn.has(i))||new Set(n).size!==n.length)&&d(),{transports:t}}function Do(e){let t=P(e,"aaguid");return t==null?t===void 0?{}:{aaguid:null}:(yo.test(t)||d(),{aaguid:t})}function Ve(e,t){let n=S(e);return t.has(n)||d(),n}function v(e,t){return t===void 0?{}:{[e]:t}}function me(e){new Set(e).size!==e.length&&d();}function zo(e){new Set(e).size!==e.length&&d();}function Vo(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 _n=new Map;function Ko(e,t,n){let i=_n.get(n);return i||(i=Promise.resolve().then(()=>(Ae(),ye)).then(o=>o.completeCrossSiteSignIn(e,t)),_n.set(n,i)),i}function Nn(e){return !ee()||e.idToken||e.disableRedirect?"legacy":"first-party"}function Bo(e,t=()=>{},n=$o){let i=Ie(e),o=e.session.tokens,s=ee()?Ko(i,o,e.decoded.projectId):void 0,r=Vo(i,s),a=ft({http:r,probe:Ie({...e,fetch:e.session.probe}),tokens:o,channelName:`authowl:${e.decoded.projectId}`}),u=n(r,a.notifyMutation),m=()=>{a.notifyMutation(),t();},{post:f,mutation:y}=G(r,m),A=e.decoded.env==="test",b=c=>{o.beginSession({remember:c?.rememberMe!==false});};return {sessionStore:a.store,getSession:a.getSession,account:bt(r,m),organization:Lt(r,m,()=>a.store.getSnapshot().data?.session.membership??null),signIn:{email:(c,l)=>(b(c),y(f("/sign-in/email",c,l,_e),g=>!("twoFactorRedirect"in g))),username:(c,l)=>(b(c),y(f("/sign-in/username",c,l,_e),g=>!("twoFactorRedirect"in g))),social:async(c,l)=>{if(b(),Nn(c)==="first-party"){let{beginCrossSiteSignIn:O}=await Promise.resolve().then(()=>(Ae(),ye)),R=await O(e,{kind:"social",provider:c.provider,callbackURL:c.callbackURL,errorCallbackURL:c.errorCallbackURL,newUserCallbackURL:c.newUserCallbackURL,scopes:c.scopes,loginHint:c.loginHint,requestSignUp:c.requestSignUp});if(R)return window.location.assign(R),{data:{redirect:true,url:R},error:null}}let g=await y(f("/sign-in/social",c,l,O=>qt(O,A)),O=>"user"in O);return g.error!==null||g.data===null||"url"in g.data&&g.data.redirect&&!c.disableRedirect&&typeof window<"u"&&window.location.assign(g.data.url),g},sso:async(c,l)=>{if(Nn(c)==="first-party"){let{beginCrossSiteSignIn:O}=await Promise.resolve().then(()=>(Ae(),ye)),R=await O(e,{kind:"sso",email:c.email,providerId:c.providerId,domain:c.domain,organizationSlug:c.organizationSlug,callbackURL:c.callbackURL,errorCallbackURL:c.errorCallbackURL,newUserCallbackURL:c.newUserCallbackURL});if(R)return window.location.assign(R),{data:{url:R,redirect:true},error:null}}let g=await f("/sign-in/sso",c,l,O=>Vt(O,A));return g.error!==null||g.data===null||typeof window<"u"&&window.location.assign(g.data.url),g},magicLink:(c,l)=>f("/sign-in/magic-link",c,l,Kt),emailOtp:(c,l)=>(b(),y(f("/sign-in/email-otp",c,l,Ft))),passkey:(c,l)=>(b(),u.signIn(c,l))},signUp:{email:(c,l)=>(b(),y(f("/sign-up/email",c,l,Ht),g=>g.sessionCreated))},emailOtp:{sendVerificationOtp:(c,l)=>f("/email-otp/send-verification-otp",c,l,Bt),verifyEmail:(c,l)=>(b(),y(f("/email-otp/verify-email",c,l,Wt)))},phoneOtp:{prepare:c=>f("/phone-otp/challenge",{},c,Jt),start:(c,l)=>f("/phone-otp/start",{...c,idempotencyKey:c.idempotencyKey??gt()},l,jt),verify:(c,l)=>(b(),y(f("/phone-otp/verify",c,l,$t)))},requestPasswordReset:(c,l)=>f("/request-password-reset",c,l,Ne),resetPassword:(c,l)=>f("/reset-password",c,l,Ne),sendVerificationEmail:(c,l)=>f("/send-verification-email",c,l,Gt),passkey:{addPasskey:(c,l)=>u.add(c,l),listUserPasskeys:()=>r.request("/passkey/list-user-passkeys",{decode:wn}),updatePasskey:async(c,l)=>{let g=pe(c.name);if(!g.valid||g.value===void 0)return fe();let O=g.value;return f("/passkey/update-passkey",{...c,name:O},l,R=>On(R,c.id,O))},deletePasskey:(c,l)=>f("/passkey/delete-passkey",c,l,kn)},twoFactor:{enable:(c,l)=>f("/two-factor/enable",c,l,Xt),disable:(c,l)=>y(f("/two-factor/disable",c,l,Qt),g=>g.status),verifyTotp:(c,l)=>y(f("/two-factor/verify-totp",c,l,de)),verifyBackupCode:(c,l)=>y(f("/two-factor/verify-backup-code",c,l,de)),sendOtp:(c={},l)=>f("/two-factor/send-otp",c,l,Zt),verifyOtp:(c,l)=>y(f("/two-factor/verify-otp",c,l,de)),generateBackupCodes:(c,l)=>f("/two-factor/generate-backup-codes",c,l,en)},signOut:c=>y(r.request("/sign-out",{method:"POST",body:{},fetchOptions:c,decode:Yt}).then(l=>(o.endSession(),l)),l=>l.success)}}function Be(e,t=()=>{},n){let i=Bo(e,t,n);return n?{...i,signIn:{email:i.signIn.email,username:i.signIn.username,social:Ln(i),magicLink:i.signIn.magicLink,emailOtp:i.signIn.emailOtp,passkey:i.signIn.passkey},passkey:{listUserPasskeys:i.passkey.listUserPasskeys,updatePasskey:i.passkey.updatePasskey,deletePasskey:i.passkey.deletePasskey,addPasskey:i.passkey.addPasskey}}:{...i,signIn:{email:i.signIn.email,username:i.signIn.username,social:Ln(i),magicLink:i.signIn.magicLink,emailOtp:i.signIn.emailOtp},passkey:{listUserPasskeys:i.passkey.listUserPasskeys,updatePasskey:i.passkey.updatePasskey,deletePasskey:i.passkey.deletePasskey}}}function Ln(e){return async(t,n)=>{if(!t?.idToken||typeof t.idToken.token!="string"||t.idToken.token==="")return jo();let i=await e.signIn.social({...t,disableRedirect:true},n);return i.data!==null&&"url"in i.data?Jo():i}}function jo(){return Promise.resolve({data:null,error:{status:400,statusText:"BAD_REQUEST",code:"NATIVE_SOCIAL_ID_TOKEN_REQUIRED",message:"Native social sign-in requires a provider ID token."}})}function Jo(){return Promise.resolve({data:null,error:{status:502,statusText:"BAD_GATEWAY",code:"INVALID_NATIVE_SOCIAL_RESPONSE",message:"The server returned a redirect for native ID-token sign-in."}})}function $o(){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 Go(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 qn(r.error);let a;try{a=hn(r.data);}catch{return Fn()}let u;try{u=await n.authenticate({optionsJSON:a,useBrowserAutofill:o.autoFill});}catch(b){return Vn(n,b,"AUTH_CANCELLED","Passkey authentication was cancelled.")}if(!Wo(u))return Hn();let{clientExtensionResults:m,...f}=u,y=i.get(u.id);if(y)return y;let A=(async()=>{let b=await e.request("/passkey/verify-authentication",{method:"POST",body:{response:f},fetchOptions:s,decode:An});return b.data&&t(),b})();i.set(u.id,A);try{return await A}finally{i.get(u.id)===A&&i.delete(u.id);}},async add(o={},s){let r=pe(o.name);if(!r.valid)return fe();let a=await e.request("/passkey/generate-register-options",{query:{name:r.value,authenticatorAttachment:o.authenticatorAttachment}});if(!a.data)return qn(a.error);let u;try{u=yn(a.data);}catch{return Fn()}let m;try{m=await n.register({optionsJSON:u});}catch(b){return Vn(n,b,"REGISTRATION_CANCELLED","Passkey registration was cancelled.")}if(!Yo(m))return Hn();let{clientExtensionResults:f,...y}=m,A=await e.request("/passkey/verify-registration",{method:"POST",body:{response:y,name:r.value},fetchOptions:s,decode:b=>bn(b,m.id,r.value)});return A.data&&t(),A}}}function Fn(){return {data:null,error:{status:502,statusText:"BAD_GATEWAY",code:"INVALID_WEBAUTHN_OPTIONS",message:"The server returned invalid WebAuthn options."}}}function Hn(){return {data:null,error:{status:400,statusText:"BAD_REQUEST",code:"INVALID_WEBAUTHN_RESPONSE",message:"The platform returned an invalid passkey response."}}}function Bn(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 Wo(e){if(!Bn(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 Yo(e){if(!Bn(e))return false;let t=e.response;return typeof t.clientDataJSON=="string"&&typeof t.attestationObject=="string"}function qn(e){return {data:null,error:e??{status:502,statusText:"BAD_GATEWAY",code:"INVALID_WEBAUTHN_OPTIONS",message:"The server returned no WebAuthn options."}}}function Vn(e,t,n,i){let o=Qo(t,"page does not have focus"),s=e.errorCode?.(t),r=s!==void 0?s==="ERROR_CEREMONY_ABORTED":Kn(t)==="AbortError",a=n!=="AUTH_CANCELLED",u=Xo(s,Kn(t),a);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:u}}}function Xo(e,t,n){switch(e){case "ERROR_INVALID_DOMAIN":case "ERROR_INVALID_RP_ID":return "Passkeys are not set up for this site\u2019s domain.";case "ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED":return "This device already has a passkey for this account.";case "ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEY_ALGS":case "ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT":case "ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT":return "This device cannot create a passkey for this site.";}return t==="NotAllowedError"?n?"No passkey was created. The prompt was dismissed or timed out.":"No passkey was used. This device may not have one saved for this site yet, or the prompt was dismissed.":t==="SecurityError"?"Passkeys are not set up for this site\u2019s domain.":n?"Passkey registration did not complete.":"Passkey sign-in did not complete."}function Kn(e){return e&&typeof e=="object"&&"name"in e&&typeof e.name=="string"?e.name:void 0}function Qo(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}async function Zo(e){let n=`${new URL(e.apiUrl).origin}/api/projects/${e.decoded.projectId}/public-config`;return ct(await re(e,n,{init:{method:"GET",credentials:"omit"},maxResponseBytes:256*1024,decode:i=>er(i,e)}),"public-config")}function er(e,t){let n=L(e),i=n.environmentId,o=n.environmentType,s=`${new URL(t.apiUrl).origin}/api/projects/${t.decoded.projectId}/auth`;if(typeof n.applicationId!="string"||!tr(n.applicationId)||i!==t.decoded.projectId||o!=="development"&&o!=="production"||n.authBaseUrl!==s)throw N();let r=z(n.branding),a=z(n.legal);if(!je(n.enabledMethods,64)||!je(n.socialProviders,64)||!Jn(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"||!Jn(a,["termsUrl","privacyUrl"])||!Number.isSafeInteger(a.version)||a.version<0||typeof a.required!="boolean")throw N();if(n.socialProviderClientIds!==void 0){let u=z(n.socialProviderClientIds);if(Object.keys(u).length>64||Object.values(u).some(m=>typeof m!="string"||m.length>2048))throw N()}if(!F(n,["requireEmailVerification","twoFactor","mfaRequired","accountDeletion","organizations","sso","badge"])||!jn(n.turnstileSiteKey)||!jn(n.authTurnstileSiteKey)||typeof n.locale!="string"||n.locale.length===0||n.locale.length>64||!Number.isSafeInteger(n.configVersion)||n.configVersion<0)throw N();if(n.jwtIssuer!==null){let u=z(n.jwtIssuer);if(u.issuer!==s||u.jwksUrl!==`${s}/jwks`||u.aud!==t.decoded.projectId)throw N()}if(n.signUp!==void 0){let u=z(n.signUp).mode;if(typeof u!="string"||!["open","restricted","allowlist","waitlist"].includes(u))throw N()}if(n.authentication!==void 0&&nr(n.authentication),n.emailVerification!==void 0){let u=z(n.emailVerification);if(!F(u,["required"])||u.method!=="link"&&u.method!=="code")throw N()}if(n.userModel!==void 0&&!F(z(n.userModel),["requireEmail","firstLastName","emailChange","accountDeletion"]))throw N();if(n.mfa!==void 0){let u=z(n.mfa);if(!F(u,["totp","required","backupCodes"])||(u.required===true||u.backupCodes===true)&&u.totp!==true)throw N()}return n}function tr(e){return /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e)}function N(){return new TypeError("public-config returned an invalid response")}function z(e){if(!e||typeof e!="object"||Array.isArray(e))throw N();return e}function jn(e){return e===null||typeof e=="string"&&e.length<=4096}function nr(e){let t=z(e),n=z(t.email),i=z(t.password),o=i.minLength!==void 0||i.maxLength!==void 0;if(!F(n,["signUp"])||!je(n.signIn,3)||n.signIn.some(s=>s!=="password"&&s!=="magic_link"&&s!=="email_otp")||!F(z(t.phone),["signUp","signIn"])||!F(i,["signUp","add"])||o&&(!Number.isSafeInteger(i.minLength)||!Number.isSafeInteger(i.maxLength)||i.minLength<1||i.maxLength>4096||i.minLength>i.maxLength)||!F(z(t.passkey),["signIn","add"])||!ir(z(t.passkey).relyingPartyId)||!F(z(t.username),["collectOnSignUp","signIn"]))throw N()}function ir(e){return e==null||typeof e=="string"}function F(e,t){return t.every(n=>typeof e[n]=="boolean")}function Jn(e,t){return t.every(n=>e[n]===void 0||typeof e[n]=="string"&&e[n].length<=4096)}function je(e,t){return Array.isArray(e)&&e.length<=t&&e.every(n=>typeof n=="string"&&n.length<=128)&&new Set(e).size===e.length}function or(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}}function rr(e,t){let n=`p_${e.toLowerCase().replace(/-/g,"")}`;return `${t?.secure?"__Secure-":""}${n}.session_token`}function ws(e,t){return Be(Oe(e),t)}
2
- exports.createMembershipHas=Bi;exports.createNativeAuthClient=Be;exports.createNativeClient=ws;exports.createPasskeyClient=Go;exports.decodePublishableKey=be;exports.getPublicConfig=Zo;exports.resolveConfig=Oe;exports.resolveProjectCapabilities=or;exports.sessionCookieName=rr;
1
+ 'use strict';var Yn=Object.defineProperty;var $e=(e,t)=>()=>(e&&(t=e(e=0)),t);var Xn=(e,t)=>{for(var n in t)Yn(e,n,{get:t[n],enumerable:true});};function ee(){return typeof window<"u"&&typeof document<"u"&&typeof crypto<"u"&&typeof crypto.subtle?.digest=="function"}var xe=$e(()=>{});var ye={};Xn(ye,{beginCrossSiteSignIn:()=>qo,challengeFor:()=>Nn,completeCrossSiteSignIn:()=>Vo,takeHandoffCode:()=>Be});function zn(e){let t="";for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function Nn(e){let t=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(e));return zn(new Uint8Array(t))}function Mo(){return zn(crypto.getRandomValues(new Uint8Array(zo)))}function Ln(e,t){let n=window.location.protocol==="https:"?"; Secure":"";document.cookie=`${Un}=${e}; Path=/; Max-Age=${t}; SameSite=Lax${n}`;}function Fo(){for(let e of document.cookie.split(";")){let t=e.indexOf("=");if(!(t<0)&&e.slice(0,t).trim()===Un)return e.slice(t+1).trim()||null}return null}function Ho(){Ln("",0);}function _n(e){return new URL(e,window.location.href).toString()}async function qo(e,t){let n=t.callbackURL?_n(t.callbackURL):null;if(n&&new URL(n).origin!==window.location.origin)return null;let i=Mo(),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 Lo){let a=t[r];a&&o.searchParams.set(r,a);}let s=`${window.location.origin}${window.location.pathname}${window.location.search}`;o.searchParams.set("cb",n??s);for(let[r,a]of [["err",t.errorCallbackURL],["new",t.newUserCallbackURL]])a&&o.searchParams.set(r,_n(a));return o.searchParams.set("challenge",await Nn(i)),Ln(i,No),o.toString()}function Be(e){if(typeof window>"u")return null;let t=window.location.hash;if(!t.includes(Ke))return null;let n=new URLSearchParams(t.replace(/^#/,"")),i=n.get(Ke);if(!i||e!==void 0&&i!==e)return null;n.delete(Ke);let o=n.toString();return window.history.replaceState(window.history.state,"",`${window.location.pathname}${window.location.search}${o?`#${o}`:""}`),i}async function Vo(e,t,n){if(!ee())return false;let i=n??Be();if(!i)return false;n&&Be(n);let o=Fo();if(Ho(),!o)return false;t.beginSession({remember:true});let{error:s}=await e.request("/session/exchange",{method:"POST",body:{code:i,verifier:o}});return s===null}var Un,Ke,zo,No,Lo,Ae=$e(()=>{xe();Un="authowl_handoff_verifier",Ke="authowl_code",zo=32,No=900,Lo=["email","providerId","domain","organizationSlug"];});var Qn=/^(pk_(live|test))_([0-9a-f-]{36})_([A-Za-z0-9]{20,})$/i,Zn=/^sk_/i;function be(e){if(typeof e!="string"||e.length===0)throw new Error("publishableKey is required");if(Zn.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=Qn.exec(e);if(!t)throw new Error("publishableKey is malformed; expected pk_(live|test)_<uuid>_<base62>");return {prefix:t[1].toLowerCase(),env:t[2].toLowerCase(),projectId:t[3].toLowerCase()}}var Ge=/^http:\/\/(?:(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*localhost|127\.0\.0\.1|\[::1\])(?::\d+)?(?:\/|$)/i;function we(e,t){throw new Error(`${e}: ${t}`)}function We(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&&Ge.test(i)))throw new TypeError("Transport URL must use HTTPS except on approved loopback.");return n}function Ye(e,t){(typeof e!="string"||!/^https?:\/\/[^/?#@\\\s]+\/?$/i.test(e))&&we("apiUrl","origin required");let n;try{n=new URL(e);}catch{we("apiUrl","origin required");}return n.protocol==="http:"&&(!t.allowHttpLoopback||!Ge.test(e))&&we("apiUrl","HTTPS required except exact loopback"),n.origin}function j(e,t){try{return e?.getItem(t)??null}catch{return null}}function J(e,t,n){try{n===null?e?.removeItem(t):e?.setItem(t,n);}catch{}}function $(){try{return globalThis.localStorage}catch{return}}function V(){try{return globalThis.sessionStorage}catch{return}}var ei="authowl.session-challenge",ti=e=>`${ei}.${e}`,ni="set-auth-challenge",Xe="x-authowl-challenge";var Ze="INVALID_TWO_FACTOR_COOKIE",ii=2048,oe=e=>e!==null&&e.length<=ii,Qe=/^[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]+$/;function oi(e){let t=[];for(let n of e.split(";")){let i=n.trimStart(),o=i.indexOf("=");o<=0||t.push([i.slice(0,o).trimEnd(),i.slice(o+1)]);}return t}function et(e){let t=ti(e),n=new Map;function i(){return n.size===0?null:[...n].map(([a,u])=>`${a}=${u}`).join("; ")}function o(){let a=i();J(V(),t,oe(a)?a:null);}function s(a){for(let[u,m]of oi(a))Qe.test(u)&&(m===""?n.delete(u):Qe.test(m)&&n.set(u,m));}let r=j(V(),t);return oe(r)&&s(r),{presentOn(a){let u=i();a.delete(Xe),oe(u)&&a.set(Xe,u);},observe(a){let u=a.get(ni);oe(u)&&(s(u),o());},clear(){n.clear(),o();}}}var tt="set-auth-token",nt="x-authowl-session-transport",it="bearer";var ri="authowl.session-token",si="authowl.cookie-transport",rt="ok",st="bearer",ai=e=>`${ri}.${e}`,ui=e=>`${si}.${e}`;function ci(e){return e===rt?"cookies":e===st?"bearer":"unknown"}function di(e){return e==="cookies"?rt:e==="bearer"?st:null}function li(e){let t=ai(e),n=ui(e),i=et(e),o=null,s=false,r=null,a=ci(j($(),n)),u=()=>a==="unknown",m=0,f=null,y=false;function A(){let h=j(V(),t);if(h!==null)return s=true,h;let C=j($(),t);return C!==null?(s=false,C):null}o=A(),o!==null&&u()&&(y=true);function b(){if(!(!y||!f)){y=false;try{f();}catch{}}}function c(){let h=a==="bearer"?o:null,[C,ie]=s?[V(),$()]:[$(),V()];J(ie,t,null),J(C,t,h);}function l(h){h!==null&&r!==null&&(s=r,r=null),o=h,c(),h!==null&&u()&&(y=true,b());}function g(h){a=h,J($(),n,di(h));}function O(){g("unknown"),y=false;}function R(){return o===null&&(o=A()),o}function K(){let h=A();return h!==null&&(o=h),o}function B(h){K()===h&&c();}function w(){m+=1,r=null,s=false,l(null),i.clear(),O();}let T=()=>a!=="cookies";return {hasToken:()=>R()!==null,declareOn(h){if(h.has("authorization"))return false;let C=R();return !C&&!T()?false:(C&&h.set("authorization",`Bearer ${C}`),h.set(nt,it),i.presentOn(h),true)},wantsToken:T,needsProbe:u,observe(h){let C=h.get(tt);C&&l(C),i.observe(h);},dropChallenge:i.clear,measureWith(h){f=h,b();},beginRead(){let h=R(),C=m;return {carriedToken:h!==null,endIfDead(){h!==null&&K()===h&&m===C&&w();},recordCookieVerdict(ie){if(m===C&&u()){if(g(ie?"cookies":"bearer"),ie){l(null);return}B(h);}}}},beginSession({remember:h}){m+=1,r=!h,i.clear(),O();},endSession:w}}var ot=new Map;function at(e){let t=ot.get(e);if(t)return t;let n=li(e);return ot.set(e,n),n}function pi(e,t){return t?.headers?new Headers(t.headers):typeof e=="object"&&e!==null&&"headers"in e?new Headers(e.headers):new Headers}function ut(e,t){let n=at(e),i=(r,a)=>(t??globalThis.fetch)(r,a);return {fetch:async(r,a)=>{if(a?.credentials==="omit"||!n.wantsToken())return i(r,a);let u=pi(r,a),m=n.declareOn(u),f=await i(r,{...a,headers:u});return m&&n.observe(f.headers),f},probe:i,tokens:n}}function fi(e){if(!e||typeof e!="object")throw new Error("AuthConfig is required");let t=be(e.publishableKey),n=Ye(e.apiUrl,{allowHttpLoopback:t.env==="test"});return {publishableKey:e.publishableKey,apiUrl:n,decoded:t,projectBaseURL:`${n}/api/projects/${t.projectId}/auth`}}function Oe(e){let t=fi(e),{fetch:n,...i}=ut(t.decoded.projectId,e.fetch);return {...e,...t,fetch:n,session:i}}var gi=1e4,mi=1024*1024,v=class extends Error{kind;requestId;constructor(t,n){super(Si(t)),this.name="TransportError",this.kind=t,this.requestId=n;}},lt=new WeakSet;function D(e,t){let n=new v(e,t);return lt.add(n),n}async function pt({fetchImpl:e,url:t,init:n={},timeoutMs:i=gi,maxResponseBytes:o=mi,allowHttpLoopback:s=false,decode:r}){dt(i,"timeoutMs"),dt(o,"maxResponseBytes");let a=We(t,{allowHttpLoopback:s}),u=n.signal,m=new AbortController,f=null,y,A=new Promise(g=>{y=g;}),b=g=>{f===null&&(f=g,y({type:"abort",kind:g}),m.abort());},c=()=>b("aborted");u?.addEventListener("abort",c,{once:true});let l=setTimeout(()=>b("timeout"),i);u?.aborted&&c();try{if(f!==null)throw D(f);let g;try{g=await Promise.race([e(a.toString(),{...n,redirect:"error",signal:m.signal}).then(T=>({type:"response",response:T})),A]);}catch{throw D(f??"network")}if(g.type==="abort")throw D(g.kind);if(!hi(g.response))throw D("invalid_response");let O=g.response,R=ki(O.headers),K=await yi(O,o,A,()=>f,R),B=wi(O,K,R),w;try{w=O.ok&&r?r(B,Object.freeze({status:O.status})):B;}catch{throw D("invalid_response",R)}return {response:O,data:w,...R===void 0?{}:{requestId:R}}}catch(g){throw g instanceof v&&lt.has(g)?g:D(f??"network")}finally{clearTimeout(l),u?.removeEventListener("abort",c);}}function hi(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 yi(e,t,n,i,o){let s=e.headers.get("content-length");if(s!==null){if(!/^\d+$/.test(s))throw ct(e.body),D("invalid_response",o);if(Number(s)>t)throw ct(e.body),D("response_too_large",o)}if(!e.body)return "";let r;try{r=e.body.getReader();}catch{throw D("network",o)}let a=[],u=0,m=null;try{for(;;){let A;try{A=await Promise.race([r.read(),n]);}catch{m=D(i()??"network",o);break}if(Ai(A)){m=D(A.kind,o);break}let{done:b,value:c}=A;if(b)break;if(c.byteLength!==0){if(u+=c.byteLength,u>t){m=D("response_too_large",o);break}a.push(c);}}}finally{m&&bi(r);try{r.releaseLock();}catch{}}if(m)throw m;let f=new Uint8Array(u),y=0;for(let A of a)f.set(A,y),y+=A.byteLength;try{return new TextDecoder("utf-8",{fatal:!0}).decode(f)}catch{throw D("invalid_response",o)}}function Ai(e){return "type"in e&&e.type==="abort"}function ct(e){if(e)try{e.cancel().catch(()=>{});}catch{}}function bi(e){try{e.cancel().catch(()=>{});}catch{}}function wi(e,t,n){if(e.status===204||e.status===205)return null;let i=Oi(e.headers.get("content-type"));if(!e.ok&&(!i||t.length===0))return null;if(!i||t.length===0)throw D("invalid_response",n);try{return JSON.parse(t)}catch{if(!e.ok)return null;throw D("invalid_response",n)}}function Oi(e){if(e===null)return false;let t=e.split(";",1)[0]?.trim().toLowerCase();return t==="application/json"||t?.endsWith("+json")===true}function ki(e){let t=e.get("x-request-id")?.trim();if(!(!t||t.length>256||!/^[A-Za-z0-9._:-]+$/.test(t)))return t}function dt(e,t){if(!Number.isInteger(e)||e<=0)throw new TypeError(`${t} must be a positive integer.`)}function Si(e){switch(e){case "aborted":return "The request was cancelled.";case "timeout":return "The request timed out.";case "response_too_large":return "The response exceeded the allowed size.";case "invalid_response":return "The service returned an invalid response.";case "network":return "The network request could not be completed."}}var ke=class extends Error{status;requestId;constructor(t,n,i){super(`${t} request failed with status ${n.status}.`),this.name="AuthOwlHttpError",this.status=n.status,this.requestId=i;}};function re(e,t,n={}){let i=new Headers(n.init?.headers);return i.set("x-publishable-key",e.publishableKey),pt({fetchImpl:e.fetch,url:t,init:{...n.init,headers:i},allowHttpLoopback:e.decoded.env==="test",...n.timeoutMs===void 0?{}:{timeoutMs:n.timeoutMs},...n.maxResponseBytes===void 0?{}:{maxResponseBytes:n.maxResponseBytes},...n.decode===void 0?{}:{decode:n.decode}})}function ft(e,t){if(!e.response.ok)throw new ke(t,e.response,e.requestId);return e.data}var Ri="x-authowl-turnstile-token",Ti=1e4,Ii=32,Pi=2e4;function G(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=xi(t,n,i.query),s=i.method??(i.body===void 0?"GET":"POST"),r=new Headers(i.fetchOptions?.headers);i.fetchOptions?.authChallengeToken&&r.set(Ri,i.fetchOptions.authChallengeToken),i.body!==void 0&&r.set("content-type","application/json");let a={method:s,headers:r,credentials:i.credentials??"include",...i.body===void 0?{}:{body:JSON.stringify(i.body)}},u=Object.freeze({method:s,path:n});await i.fetchOptions?.onRequest?.(u);let m=Ci(s,i.fetchOptions),f;try{f=await Ei(e,o,{...a,signal:i.fetchOptions?.signal},m);}catch(g){let O=mt(g);return await i.fetchOptions?.onError?.(Se(u,O,_i(g))),{data:null,error:O}}let{response:y,requestId:A}=f,b=Ni(n,f.data),c=b;if(y.ok)try{c=Te(b),i.decode&&(c=i.decode(c));}catch{let g=mt(new v("invalid_response",A));return await i.fetchOptions?.onError?.(Se(u,g,"invalid_response")),{data:null,error:g}}let l=Object.freeze({...u,status:y.status,...A===void 0?{}:{requestId:A}});if(await i.fetchOptions?.onResponse?.(l),!y.ok){let g=vi(y,b,A);return g.code===Ze&&e.session.tokens.dropChallenge(),await i.fetchOptions?.onError?.(Se(u,g,"api")),{data:null,error:g}}return await i.fetchOptions?.onSuccess?.(l),{data:c,error:null}}}}async function Ei(e,t,n,i){let o=Date.now()+Ti;for(let s=0;s<i;s+=1){let r=o-Date.now();if(r<=0)throw new v("timeout");try{let a=await re(e,t,{init:n,timeoutMs:Math.max(1,Math.ceil(r))});if(a.response.status<500||s===i-1)return a}catch(a){if(s===i-1||!(a instanceof v)||a.kind!=="network")throw a}await Ui(50*2**s,n.signal,o);}throw new v("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 xi(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 vi(e,t,n){let i=Z(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)??gt(t.get("retry-after"))??gt(t.get("x-retry-after"));if(n!==void 0)return Math.min(Math.max(Math.trunc(n),1),86400)}function gt(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 mt(e){let t=e instanceof v?e.kind:"network";return {status:0,...{aborted:{statusText:"ABORTED",code:"REQUEST_ABORTED",message:"The request was cancelled."},timeout:{statusText:"TIMEOUT",code:"REQUEST_TIMEOUT",message:"The request timed out."},response_too_large:{statusText:"INVALID_RESPONSE",code:"RESPONSE_TOO_LARGE",message:"The service response was too large."},invalid_response:{statusText:"INVALID_RESPONSE",code:"INVALID_RESPONSE",message:"The service returned an invalid response."},network:{statusText:"FETCH_ERROR",code:"FETCH_ERROR",message:"Network request failed."}}[t],...e instanceof v&&e.requestId?{requestId:e.requestId}:{}}}function Se(e,t,n){return Object.freeze({...e,status:t.status??0,...t.requestId===void 0?{}:{requestId:t.requestId},failure:n})}function _i(e){return e instanceof v?e.kind:"network"}function Ui(e,t,n){return new Promise((i,o)=>{if(t?.aborted){o(new v("aborted"));return}let s=n-Date.now();if(s<=0){o(new v("timeout"));return}let r=Math.min(e,s),a=()=>{clearTimeout(u),o(new v("aborted"));},u=setTimeout(()=>{t?.removeEventListener("abort",a),Date.now()>=n?o(new v("timeout")):i();},r);t?.addEventListener("abort",a,{once:true}),t?.aborted&&a();})}function Te(e,t="",n=0,i={nodes:0}){if(i.nodes+=1,n>Ii||i.nodes>Pi)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=>Te(o,"",n+1,i)):Z(e)?Object.fromEntries(Object.entries(e).map(([o,s])=>[o,zi(o)?s:Te(s,o,n+1,i)])):e}function zi(e){return e==="metadata"||e==="public_metadata"||e==="unsafe_metadata"||e==="private_metadata"||e==="publicMetadata"||e==="unsafeMetadata"||e==="privateMetadata"}function Ni(e,t){if(e==="/list-sessions"&&Array.isArray(t))return t.map(o=>Z(o)?Re(o):o);if(!Z(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-")?Re(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")&&Z(i.session)&&(i={...i,session:Re(i.session)}),i}function Re(e){if(!Object.hasOwn(e,"token"))return e;let t={...e};return delete t.token,t}function Z(e){return !!e&&typeof e=="object"&&!Array.isArray(e)}var Li=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 S(e){return typeof e!="string"&&d(),e}function I(e){return typeof e!="boolean"&&d(),e}function E(e){return (!(e instanceof Date)||Number.isNaN(e.getTime()))&&d(),e}function se(e){return (!Array.isArray(e)||!e.every(t=>typeof t=="string"))&&d(),[...e]}function P(e,t){let n=e[t];return n==null||typeof n=="string"?n:d()}function ht(e,t){let n=e[t];return n==null||typeof n=="boolean"?n:d()}function z(e){let t=p(e),n=t.email;return n!==null&&typeof n!="string"&&d(),{id:S(t.id),email:n,emailVerified:I(t.emailVerified),createdAt:E(t.createdAt),updatedAt:E(t.updatedAt),...U("phoneNumber",P(t,"phoneNumber")),...U("username",P(t,"username")),...U("displayUsername",P(t,"displayUsername")),...U("firstName",P(t,"firstName")),...U("lastName",P(t,"lastName")),...U("name",P(t,"name")),...U("image",P(t,"image")),...U("twoFactorEnabled",ht(t,"twoFactorEnabled"))}}function ae(e){let t=p(e),n=t.membership;return {id:S(t.id),userId:S(t.userId),expiresAt:E(t.expiresAt),...U("activeOrganizationId",P(t,"activeOrganizationId")),...U("activeTeamId",P(t,"activeTeamId")),...U("membership",n==null?n:Mi(n)),...U("pendingMfaEnrollment",ht(t,"pendingMfaEnrollment"))}}function d(){throw new TypeError("AuthOwl response does not match its runtime contract.")}function L(e,t=20,n=1e4){return (!e||typeof e!="object"||Array.isArray(e))&&d(),Ee(e,t,n)}function Ee(e,t=20,n=1e4){return Pe(e,0,{nodes:0},t,n)}function Mi(e){let t=p(e);return {role:S(t.role),permissions:se(t.permissions),...t.teams===void 0?{}:{teams:se(t.teams)}}}function Pe(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(a=>Pe(a,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[a,u]of Object.entries(e))Li.has(a)&&d(),r[a]=Pe(u,t+1,n,i,o);return r}function U(e,t){return t===void 0?{}:{[e]:t}}function yt({http:e,probe:t,tokens:n,channelName:i}){let o=new Set,s=null,r=null,a=null,u=null,m=null,f,y=w=>{c(w);};f={data:null,isPending:true,isRefetching:false,error:null,refetch:y};function A(w){f=w;for(let T of o)T();}async function b(w){return e.request("/get-session",{query:w?.query,decode:Ce})}function c(w){if(w?.query?.disableCookieCache===true)return l(w);if(u)return u;let T=l(w).finally(()=>{u===T&&(u=null);});return u=T,T}async function l(w){a?.abort();let T=new AbortController;a=T,A({...f,isPending:f.data===null&&f.error===null,isRefetching:f.data!==null});let h=n.beginRead(),C=await e.request("/get-session",{query:w?.query,fetchOptions:{signal:T.signal},decode:Ce});if(a===T&&(a=null,A({data:C.data,error:C.error,isPending:false,isRefetching:false,refetch:y}),C.error===null)){if(C.data===null){h.endIfDead();return}await g(h);}}async function g(w){if(n.needsProbe()){if(!w.carriedToken){w.recordCookieVerdict(true);return}return m||O(w)}}function O(w){let T=t.request("/get-session",{query:{disableCookieCache:true},decode:Ce}).then(h=>{m===T&&h.error===null&&w.recordCookieVerdict(h.data!==null);}).finally(()=>{m===T&&(m=null);});return m=T,T}function R(){s?.postMessage({type:"session-changed"});}function K(){if(typeof window>"u"||r)return;let w=()=>{c();},T=()=>{document.visibilityState==="visible"&&c();};window.addEventListener("focus",w),document.addEventListener("visibilitychange",T),typeof BroadcastChannel<"u"&&(s=new BroadcastChannel(i),s.addEventListener("message",w)),r=()=>{window.removeEventListener("focus",w),document.removeEventListener("visibilitychange",T),s?.close(),s=null,r=null;};}function B(w){return o.add(w),o.size===1&&(K(),c()),()=>{o.delete(w),o.size===0&&(a?.abort(),a=null,r?.());}}return n.measureWith(()=>{n.needsProbe()&&O(n.beginRead());}),{store:{subscribe:B,getSnapshot:()=>f},getSession:b,notifyMutation(){R(),m&&m.catch(()=>{}).then(()=>{!n.needsProbe()&&n.hasToken()&&R();}),o.size>0&&c({query:{disableCookieCache:true}});}}}function Ce(e){if(e===null)return null;let t=p(e);return (t.session===void 0||t.user===void 0)&&d(),{session:ae(t.session),user:z(t.user)}}xe();function At(){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 bt(e,t){return e.request("/user/metadata",{fetchOptions:t,decode:Ot})}async function wt(e,t,n){return e.request("/user/metadata",{method:"PATCH",body:{expected_version:t.expectedVersion,unsafe_metadata:t.unsafeMetadata},fetchOptions:n,decode:Ot})}function Ot(e){let t=p(e),n=L(t.public_metadata),i=L(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 St(e,t){let{post:n,mutation:i}=G(e,t);return {getMetadata:o=>bt(e,o),updateUnsafeMetadata:(o,s)=>wt(e,o,s),updateProfile:(o,s)=>i(n("/update-user",o,s,te)),changeEmail:(o,s)=>i(n("/change-email",o,s,te)),changePassword:(o,s)=>i(n("/change-password",o,s,Fi)),listSessions:o=>e.request("/list-sessions",{fetchOptions:o,decode:Hi}),revokeSession:({sessionId:o},s)=>i(n("/revoke-session",{sessionId:o},s,te)),revokeOtherSessions:o=>i(n("/revoke-other-sessions",{},o,te)),listSocialAccounts:async o=>{let s=await e.request("/list-accounts",{fetchOptions:o,decode:qi});if(!s.data)return {data:null,error:s.error};let r=s.data.length>1;return {...s,data:s.data.filter(a=>a.providerId!=="credential").map(a=>({...a,canUnlink:r}))}},linkSocial:(o,s)=>n("/link-social",o,s,Vi),unlinkSocial:(o,s)=>i(n("/unlink-account",o,s,te)),delete:(o={},s)=>i(n("/delete-user",o,s,Ki))}}function te(e){let t=p(e);return {status:I(t.status)}}function Fi(e){let t=p(e);return {user:z(t.user)}}function Hi(e){return Array.isArray(e)||d(),e.map(t=>{let n=p(t);return {id:S(n.id),userId:S(n.userId),createdAt:E(n.createdAt),updatedAt:E(n.updatedAt),expiresAt:E(n.expiresAt),...kt("ipAddress",P(n,"ipAddress")),...kt("userAgent",P(n,"userAgent"))}})}function qi(e){return Array.isArray(e)||d(),e.map(t=>{let n=p(t);return {id:S(n.id),userId:S(n.userId),providerId:S(n.providerId),accountId:S(n.accountId),scopes:se(n.scopes),createdAt:E(n.createdAt),updatedAt:E(n.updatedAt)}})}function Vi(e){let t=p(e);return {url:S(t.url),redirect:I(t.redirect)}}function Ki(e){let t=p(e);return {success:I(t.success),message:S(t.message)}}function kt(e,t){return t===void 0?{}:{[e]:t}}function ve(e,t){return !e||!t?false:e.permissions.includes(t)}function Bi(e,t){return !e||!t?false:e.teams?.includes(t)??false}function De(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&&!Bi(e,o))}function ji(e){return {has:t=>De(e,t),hasPermission:t=>ve(e,t.permission)}}var Ji=new Set(["pending","accepted","rejected","canceled"]),Rt=1e4;function W(e,t,n){let i=p(e),o={id:k(i.id),name:k(i.name),slug:k(i.slug),createdAt:E(i.createdAt),...ue("logo",P(i,"logo")),...ue("metadata",i.metadata===void 0?void 0:Ee(i.metadata))};return H(o.id,t),H(o.slug,n),o}function Tt(e){return q(e,W)}function _e(e,t,n){return e===null?null:(t===null&&d(),W(e,t,n))}function It(e,t,n){if(e===null)return null;let i=p(e),o=W(i,t,n);return {...o,members:q(i.members,s=>Ft(s,o.id)),invitations:q(i.invitations,s=>M(s,void 0,o.id))}}function Pt(e,t){let n=q(e,i=>Mt(i));return ce(n.map(i=>i.organizationId),t),n}function Et(e,t,n){return e===null?null:(t===null&&d(),Mt(e,t,n))}function Ct(e,t){let n=p(e);return (!Number.isSafeInteger(n.total)||n.total<0)&&d(),{members:$i(n.members,t),total:n.total}}function M(e,t,n){let i=p(e),o=k(i.status);Ji.has(o)||d();let s={id:k(i.id),organizationId:k(i.organizationId),email:k(i.email),role:k(i.role),status:o,inviterId:k(i.inviterId),expiresAt:E(i.expiresAt),createdAt:E(i.createdAt)};return H(s.id,t),H(s.organizationId,n),s}function xt(e,t){let n=q(e,i=>M(i));return ce(n.map(i=>i.organizationId),t),n}function vt(e){return q(e,t=>{let n=p(t);return {...M(n),organizationName:k(n.organizationName)}})}function Dt(e,t){let n=p(e);return {...M(n,t),organizationName:k(n.organizationName),organizationSlug:k(n.organizationSlug),inviterEmail:k(n.inviterEmail)}}function _t(e,t){let n=p(e),i=M(n.invitation,t);return {invitation:i,member:Y(n.member,void 0,i.organizationId)}}function Ut(e,t){let n=p(e);return n.member!==null&&d(),{invitation:n.invitation===null?null:M(n.invitation,t),member:null}}function zt(e,t){return e===null?null:M(e,t)}function Nt(e,t,n){let i=p(e);return {member:Y(i.member,n,t)}}function Y(e,t,n){let i=p(e),o={id:k(i.id),organizationId:k(i.organizationId),userId:k(i.userId),role:k(i.role),createdAt:E(i.createdAt),...i.user===void 0?{}:{user:Ht(i.user)}};return H(o.id,t),H(o.organizationId,n),o}function Lt(e,t){let n=q(e,i=>{let o=p(i);return {organizationId:k(o.organizationId),data:{role:k(o.role),...ue("permission",o.permission===void 0?void 0:Gi(o.permission))}}});return ce(n.map(i=>i.organizationId),t),n.map(i=>i.data)}function Mt(e,t,n){let i=p(e),o=i.updatedAt,s={id:k(i.id),name:k(i.name),organizationId:k(i.organizationId),createdAt:E(i.createdAt),...o===void 0?{}:{updatedAt:E(o)}};return H(s.id,t),H(s.organizationId,n),s}function Ft(e,t){let n=p(e);return {...Y(n,void 0,t),user:Ht(n.user)}}function $i(e,t){let n=q(e,i=>Ft(i));return ce(n.map(i=>i.organizationId),t),n}function Gi(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>Rt||!Array.isArray(o))&&d(),n[i]=o.map(s=>k(s));return n}function k(e){let t=S(e);return (t.length===0||t.length>Rt)&&d(),t}function H(e,t){t!==void 0&&e!==t&&d();}function ce(e,t){let n=t??e[0];n!==void 0&&e.some(i=>i!==n)&&d();}function Ht(e){let t=p(e);return {id:k(t.id),name:k(t.name),email:k(t.email),...ue("image",P(t,"image"))}}function q(e,t){return Array.isArray(e)||d(),e.map(n=>t(n))}function ue(e,t){return t===void 0?{}:{[e]:t}}function qt(e,t,n=()=>null){let{post:i,mutation:o}=G(e,t),s=(r,a,u,m)=>e.request(r,{query:a,fetchOptions:u,decode:m});return {create:(r,a)=>o(i("/organization/create",r,a,W)),list:r=>s("/organization/list",void 0,r,Tt),get:(r={},a)=>s("/organization/get-full-organization",{organizationId:r.organizationId,organizationSlug:r.organizationSlug,membersLimit:r.membersLimit},a,u=>It(u,r.organizationId,r.organizationSlug)),setActive:(r,a)=>o(i("/organization/set-active",r,a,u=>_e(u,r.organizationId,r.organizationSlug))),listTeams:(r={},a)=>s("/organization/list-teams",{organizationId:r.organizationId},a,u=>Pt(u,r.organizationId)),setActiveTeam:(r,a)=>o(i("/organization/set-active-team",r,a,u=>Et(u,r.teamId))),update:(r,a)=>o(i("/organization/update",r,a,u=>_e(u,r.organizationId))),delete:(r,a)=>o(i("/organization/delete",r,a,u=>W(u,r.organizationId))),listMembers:(r={},a)=>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},a,u=>Ct(u,r.organizationId)),inviteMember:(r,a)=>o(i("/organization/invite-member",r,a,u=>M(u,void 0,r.organizationId))),listInvitations:(r={},a)=>s("/organization/list-invitations",{organizationId:r.organizationId},a,u=>xt(u,r.organizationId)),listUserInvitations:r=>s("/organization/list-user-invitations",void 0,r,vt),getInvitation:(r,a)=>s("/organization/get-invitation",{id:r.id},a,u=>Dt(u,r.id)),acceptInvitation:(r,a)=>o(i("/organization/accept-invitation",r,a,u=>_t(u,r.invitationId))),rejectInvitation:(r,a)=>o(i("/organization/reject-invitation",r,a,u=>Ut(u,r.invitationId))),cancelInvitation:(r,a)=>o(i("/organization/cancel-invitation",r,a,u=>zt(u,r.invitationId))),removeMember:(r,a)=>o(i("/organization/remove-member",r,a,u=>Nt(u,r.organizationId,r.memberIdOrEmail.includes("@")?void 0:r.memberIdOrEmail))),updateMemberRole:(r,a)=>o(i("/organization/update-member-role",r,a,u=>Y(u,r.memberId,r.organizationId))),leave:(r,a)=>o(i("/organization/leave",r,a,u=>Y(u,void 0,r.organizationId))),listRoles:(r={},a)=>s("/organization/list-roles",{organizationId:r.organizationId},a,u=>Lt(u,r.organizationId)),has:r=>De(n(),r),hasPermission:r=>ve(n(),r.permission)}}var Vt=4096,Wi=4096,Yi=100,Xi=256,Qi=16,Zi=64,eo=12;function ze(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:an(t.twoFactorMethods,Qi,Zi)}}):(t.twoFactorRedirect!==void 0&&d(),{redirect:I(t.redirect),...ro(t,"url"),user:z(t.user)})}function Kt(e){let t=p(e);return {user:z(t.user)}}function Bt(e){let t=p(e);return {sessionCreated:I(t.sessionCreated),user:z(t.user)}}function jt(e,t){let n=p(e),i=I(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:Ue(n.url,t)}):(o===s&&d(),o?{redirect:false,user:z(n.user)}:{redirect:false,url:Ue(n.url,t)})}function Jt(e,t){let n=p(e);return (n.redirect!==true||n.user!==void 0)&&d(),{redirect:true,url:Ue(n.url,t)}}function $t(e){return {status:I(p(e).status)}}function Gt(e){return {success:I(p(e).success)}}function Wt(e){return p(e).status!=="pending"&&d(),{status:"pending"}}function Yt(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:S(n.siteKey);return {kind:"akedly_shield_v1_2",connectionId:S(t.connectionId),challenge:S(t.challenge),difficulty:to(t.difficulty),challengeToken:S(t.challengeToken),challengeRequired:I(t.challengeRequired),turnstile:{required:I(n.required),siteKey:i}}}function to(e){return (!Number.isSafeInteger(e)||Number(e)<0||Number(e)>eo)&&d(),Number(e)}function Xt(e){let t=p(e);return (t.status!==true||t.sessionCreated!==true)&&d(),{status:true,sessionCreated:true,user:no(t.user)}}function Ne(e){return {status:I(p(e).status)}}function Qt(e){return {status:I(p(e).status)}}function Zt(e){let t=p(e);return {status:I(t.status),user:z(t.user)}}function en(e){return {success:I(p(e).success)}}function tn(e){let t=p(e);return {totpURI:oo(t.totpURI),backupCodes:sn(t.backupCodes)}}function nn(e){return {status:I(p(e).status)}}function de(e){return p(e).status!==true&&d(),{status:true}}function on(e){return {status:I(p(e).status)}}function rn(e){let t=p(e);return t.status!==void 0&&t.status!==true&&d(),{backupCodes:sn(t.backupCodes)}}function no(e){let t=p(e);return {id:X(t.id,512),...so(t,"name",1024),phoneNumber:X(t.phoneNumber,64),phoneNumberVerified:I(t.phoneNumberVerified),...t.createdAt===void 0?{}:{createdAt:E(t.createdAt)},...t.updatedAt===void 0?{}:{updatedAt:E(t.updatedAt)}}}function Ue(e,t){let n=X(e,Vt);/[\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:"&&io(i.hostname)?i.href:d()}function io(e){let t=e.toLowerCase();return t==="localhost"||t==="127.0.0.1"||t==="[::1]"}function oo(e){let t=X(e,Wi),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 sn(e){return an(e,Yi,Xi)}function an(e,t,n){(!Array.isArray(e)||e.length===0||e.length>t)&&d();let i=e.map(o=>X(o,n));return i.some(o=>o.trim().length===0)&&d(),new Set(i).size!==i.length&&d(),i}function X(e,t){let n=S(e);return (n.length===0||n.length>t)&&d(),n}function ro(e,t){let n=e[t];return n==null?{}:{[t]:X(n,Vt)}}function so(e,t,n){let i=P(e,t);return i===void 0?{}:(i!==null&&i.length>n&&d(),{[t]:i})}var un=new Set([1564,8206,8207,8234,8235,8236,8237,8238,8294,8295,8296,8297]),le=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||dn(n,i)||cn(i)||un.has(i))return {valid:false}}let t=ao(e);return Le(t)?{valid:true,value:t}:{valid:false}}function Le(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||dn(o,s)||cn(s)||un.has(s))return false;n??=s,i=s;}return t>0&&n!==void 0&&i!==void 0&&!le.has(n)&&!le.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 ao(e){let t=0,n=e.length;for(;t<n;){let i=e.codePointAt(t);if(i===void 0||!le.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||!le.has(r))break;n=s;}return e.slice(t,n)}function cn(e){return e>=0&&e<=31||e>=127&&e<=159}function dn(e,t){return e.length===1&&t>=55296&&t<=57343}var fn=12,gn=5e3,uo=8,co=1e3,lo=16,ln=512,mn=100,hn=8192,po=32768,Me=1024,pn=256,He=64,fo=6e5,go=/^[A-Za-z0-9_-]+$/u,mo=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/u,ho=/[\u0000-\u001f\u007f-\u009f\u061c\u200e\u200f\u202a-\u202e\u2066-\u2069]/u,yo=/^[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?$/u,Ao=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/iu,yn=new Set(["discouraged","preferred","required"]),bo=new Set(["singleDevice","multiDevice"]),An=new Set(["ble","cable","hybrid","internal","nfc","smart-card","usb"]),bn=new Set(["hybrid","security-key","client-device"]),wo=new Set(["none","indirect","direct","enterprise"]),Oo=new Set(["fido-u2f","packed","android-safetynet","android-key","tpm","apple","none"]),ko=new Set(["platform","cross-platform"]),So=new Set(["discouraged","preferred","required"]),Ro=new Set([-8,-7,-257]);function wn(e){let t=L(e,fn,gn);return {challenge:xn(t.challenge),...x("timeout",En(t.timeout)),...x("rpId",vn(t.rpId)),...x("allowCredentials",Pn(t.allowCredentials)),...x("userVerification",ne(t.userVerification,yn)),...x("hints",ge(t.hints,bn)),...x("extensions",Cn(t.extensions))}}function On(e){let t=L(e,fn,gn);return {challenge:xn(t.challenge),rp:To(t.rp),user:Io(t.user),pubKeyCredParams:Po(t.pubKeyCredParams),...x("timeout",En(t.timeout)),...x("excludeCredentials",Pn(t.excludeCredentials)),...x("authenticatorSelection",Eo(t.authenticatorSelection)),...x("attestation",ne(t.attestation,wo)),...x("attestationFormats",ge(t.attestationFormats,Oo)),...x("hints",ge(t.hints,bn)),...x("extensions",Cn(t.extensions))}}function kn(e){let t=p(e),n=ae(t.session),i=z(t.user);return n.userId!==i.id&&d(),{session:n,user:i}}function qe(e){let t=p(e),n=t.counter;(!Number.isSafeInteger(n)||n<0)&&d();let i=Ve(t.deviceType,bo),o=I(t.backedUp);return o&&i!=="multiDevice"&&d(),{id:Q(t.id,pn),...vo(t),publicKey:Co(t.publicKey,po),userId:Q(t.userId,pn),credentialID:he(t.credentialID,hn),counter:n,deviceType:i,backedUp:o,...Do(t),createdAt:E(t.createdAt),..._o(t)}}function Sn(e,t,n){let i=qe(e);return (i.credentialID!==t||(n===void 0?i.name!==void 0&&i.name!==null:i.name!==n))&&d(),i}function Rn(e){(!Array.isArray(e)||e.length>mn)&&d();let t=e.map(qe);return me(t.map(n=>n.id)),me(t.map(n=>n.credentialID)),t.length>1&&t.some(n=>n.userId!==t[0]?.userId)&&d(),t}function Tn(e,t,n){let i=p(e),o=qe(i.passkey);return (o.id!==t||o.name!==n)&&d(),{passkey:o}}function In(e){return p(e).status!==true&&d(),{status:true}}function To(e){let t=p(e);return {name:Fe(t.name,Me),...x("id",vn(t.id))}}function Io(e){let t=p(e);return {id:he(t.id,128,1,64),name:Fe(t.name,Me),displayName:Fe(t.displayName,Me)}}function Po(e){(!Array.isArray(e)||e.length===0||e.length>He)&&d();let t=e.map(n=>{let i=p(n);return (i.type!=="public-key"||!Number.isSafeInteger(i.alg)||!Ro.has(i.alg))&&d(),{type:"public-key",alg:i.alg}});return Uo(t.map(n=>n.alg)),t}function Pn(e){if(e===void 0)return;(!Array.isArray(e)||e.length>mn)&&d();let t=e.map(n=>{let i=p(n);return i.type!=="public-key"&&d(),{type:"public-key",id:he(i.id,hn),...x("transports",ge(i.transports,An))}});return me(t.map(n=>n.id)),t}function Eo(e){if(e===void 0)return;let t=p(e);t.requireResidentKey!==void 0&&typeof t.requireResidentKey!="boolean"&&d();let n=ne(t.residentKey,So);return t.requireResidentKey!==void 0&&n!==void 0&&t.requireResidentKey!==(n==="required")&&d(),{...x("authenticatorAttachment",ne(t.authenticatorAttachment,ko)),...x("residentKey",n),...x("requireResidentKey",t.requireResidentKey),...x("userVerification",ne(t.userVerification,yn))}}function En(e){return e!==void 0&&(typeof e!="number"||!Number.isFinite(e)||e<0||e>fo)&&d(),e}function Cn(e){return e===void 0?void 0:L(e,uo,co)}function ge(e,t){if(e===void 0)return;(!Array.isArray(e)||e.length>He)&&d();let n=e.map(i=>Ve(i,t));return me(n),n}function ne(e,t){if(e!==void 0)return Ve(e,t)}function xn(e){return he(e,Math.ceil(ln*4/3),lo,ln)}function he(e,t,n=1,i=Number.POSITIVE_INFINITY){let o=Q(e,t),s=o.length%4,r=xo(o.at(-1)??""),a=Math.floor(o.length*3/4);return (!go.test(o)||s===1||s===2&&(r&15)!==0||s===3&&(r&3)!==0||a<n||a>i)&&d(),o}function Q(e,t){let n=S(e);return (n.length===0||n.length>t)&&d(),n}function Fe(e,t){let n=Q(e,t);return ho.test(n)&&d(),n}function vn(e){if(e===void 0)return;let t=Q(e,253);return t!=="localhost"&&(t.endsWith(".")||!t.includes(".")||t.split(".").some(n=>!yo.test(n)))&&d(),t}function Co(e,t){let n=Q(e,t),i=n.endsWith("=="),o=!i&&n.endsWith("="),s=n.at(i?-3:o?-2:-1)??"",r=Dn(s);return (n.length%4!==0||!mo.test(n)||i&&(r&15)!==0||o&&(r&3)!==0)&&d(),n}function xo(e){return Dn(e,true)}function Dn(e,t=false){return (t?"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_":"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/").indexOf(e)}function vo(e){let t=P(e,"name");return t===void 0?{}:(t!==null&&!Le(t)&&d(),{name:t})}function Do(e){let t=P(e,"transports");if(t==null||t==="")return t===void 0?{}:{transports:t};let n=t.split(",");return (n.length>He||n.some(i=>!An.has(i))||new Set(n).size!==n.length)&&d(),{transports:t}}function _o(e){let t=P(e,"aaguid");return t==null?t===void 0?{}:{aaguid:null}:(Ao.test(t)||d(),{aaguid:t})}function Ve(e,t){let n=S(e);return t.has(n)||d(),n}function x(e,t){return t===void 0?{}:{[e]:t}}function me(e){new Set(e).size!==e.length&&d();}function Uo(e){new Set(e).size!==e.length&&d();}function Ko(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 Mn=new Map;function Bo(e,t,n){let i=Mn.get(n);if(!i){let o=new URLSearchParams(window.location.hash.slice(1)).get("authowl_code");if(!o)return;i=Promise.resolve().then(()=>(Ae(),ye)).then(s=>s.completeCrossSiteSignIn(e,t,o)),Mn.set(n,i);}return i}function Fn(e){return !ee()||e.idToken||e.disableRedirect?"legacy":"first-party"}function jo(e,t=()=>{},n=Go){let i=Ie(e),o=e.session.tokens,s=ee()?Bo(i,o,e.decoded.projectId):void 0,r=Ko(i,s),a=yt({http:r,probe:Ie({...e,fetch:e.session.probe}),tokens:o,channelName:`authowl:${e.decoded.projectId}`}),u=n(r,a.notifyMutation),m=()=>{a.notifyMutation(),t();},{post:f,mutation:y}=G(r,m),A=e.decoded.env==="test",b=c=>{o.beginSession({remember:c?.rememberMe!==false});};return {sessionStore:a.store,getSession:a.getSession,account:St(r,m),organization:qt(r,m,()=>a.store.getSnapshot().data?.session.membership??null),signIn:{email:(c,l)=>(b(c),y(f("/sign-in/email",c,l,ze),g=>!("twoFactorRedirect"in g))),username:(c,l)=>(b(c),y(f("/sign-in/username",c,l,ze),g=>!("twoFactorRedirect"in g))),social:async(c,l)=>{if(b(),Fn(c)==="first-party"){let{beginCrossSiteSignIn:O}=await Promise.resolve().then(()=>(Ae(),ye)),R=await O(e,{kind:"social",provider:c.provider,callbackURL:c.callbackURL,errorCallbackURL:c.errorCallbackURL,newUserCallbackURL:c.newUserCallbackURL,scopes:c.scopes,loginHint:c.loginHint,requestSignUp:c.requestSignUp});if(R)return window.location.assign(R),{data:{redirect:true,url:R},error:null}}let g=await y(f("/sign-in/social",c,l,O=>jt(O,A)),O=>"user"in O);return g.error!==null||g.data===null||"url"in g.data&&g.data.redirect&&!c.disableRedirect&&typeof window<"u"&&window.location.assign(g.data.url),g},sso:async(c,l)=>{if(Fn(c)==="first-party"){let{beginCrossSiteSignIn:O}=await Promise.resolve().then(()=>(Ae(),ye)),R=await O(e,{kind:"sso",email:c.email,providerId:c.providerId,domain:c.domain,organizationSlug:c.organizationSlug,callbackURL:c.callbackURL,errorCallbackURL:c.errorCallbackURL,newUserCallbackURL:c.newUserCallbackURL});if(R)return window.location.assign(R),{data:{url:R,redirect:true},error:null}}let g=await f("/sign-in/sso",c,l,O=>Jt(O,A));return g.error!==null||g.data===null||typeof window<"u"&&window.location.assign(g.data.url),g},magicLink:(c,l)=>f("/sign-in/magic-link",c,l,$t),emailOtp:(c,l)=>(b(),y(f("/sign-in/email-otp",c,l,Kt))),passkey:(c,l)=>(b(),u.signIn(c,l))},signUp:{email:(c,l)=>(b(),y(f("/sign-up/email",c,l,Bt),g=>g.sessionCreated))},emailOtp:{sendVerificationOtp:(c,l)=>f("/email-otp/send-verification-otp",c,l,Gt),verifyEmail:(c,l)=>(b(),y(f("/email-otp/verify-email",c,l,Zt)))},phoneOtp:{prepare:c=>f("/phone-otp/challenge",{},c,Yt),start:(c,l)=>f("/phone-otp/start",{...c,idempotencyKey:c.idempotencyKey??At()},l,Wt),verify:(c,l)=>(b(),y(f("/phone-otp/verify",c,l,Xt)))},requestPasswordReset:(c,l)=>f("/request-password-reset",c,l,Ne),resetPassword:(c,l)=>f("/reset-password",c,l,Ne),sendVerificationEmail:(c,l)=>f("/send-verification-email",c,l,Qt),passkey:{addPasskey:(c,l)=>u.add(c,l),listUserPasskeys:()=>r.request("/passkey/list-user-passkeys",{decode:Rn}),updatePasskey:async(c,l)=>{let g=pe(c.name);if(!g.valid||g.value===void 0)return fe();let O=g.value;return f("/passkey/update-passkey",{...c,name:O},l,R=>Tn(R,c.id,O))},deletePasskey:(c,l)=>f("/passkey/delete-passkey",c,l,In)},twoFactor:{enable:(c,l)=>f("/two-factor/enable",c,l,tn),disable:(c,l)=>y(f("/two-factor/disable",c,l,nn),g=>g.status),verifyTotp:(c,l)=>y(f("/two-factor/verify-totp",c,l,de)),verifyBackupCode:(c,l)=>y(f("/two-factor/verify-backup-code",c,l,de)),sendOtp:(c={},l)=>f("/two-factor/send-otp",c,l,on),verifyOtp:(c,l)=>y(f("/two-factor/verify-otp",c,l,de)),generateBackupCodes:(c,l)=>f("/two-factor/generate-backup-codes",c,l,rn)},signOut:c=>y(r.request("/sign-out",{method:"POST",body:{},fetchOptions:c,decode:en}).then(l=>(o.endSession(),l)),l=>l.success)}}function je(e,t=()=>{},n){let i=jo(e,t,n);return n?{...i,signIn:{email:i.signIn.email,username:i.signIn.username,social:Hn(i),magicLink:i.signIn.magicLink,emailOtp:i.signIn.emailOtp,passkey:i.signIn.passkey},passkey:{listUserPasskeys:i.passkey.listUserPasskeys,updatePasskey:i.passkey.updatePasskey,deletePasskey:i.passkey.deletePasskey,addPasskey:i.passkey.addPasskey}}:{...i,signIn:{email:i.signIn.email,username:i.signIn.username,social:Hn(i),magicLink:i.signIn.magicLink,emailOtp:i.signIn.emailOtp},passkey:{listUserPasskeys:i.passkey.listUserPasskeys,updatePasskey:i.passkey.updatePasskey,deletePasskey:i.passkey.deletePasskey}}}function Hn(e){return async(t,n)=>{if(!t?.idToken||typeof t.idToken.token!="string"||t.idToken.token==="")return Jo();let i=await e.signIn.social({...t,disableRedirect:true},n);return i.data!==null&&"url"in i.data?$o():i}}function Jo(){return Promise.resolve({data:null,error:{status:400,statusText:"BAD_REQUEST",code:"NATIVE_SOCIAL_ID_TOKEN_REQUIRED",message:"Native social sign-in requires a provider ID token."}})}function $o(){return Promise.resolve({data:null,error:{status:502,statusText:"BAD_GATEWAY",code:"INVALID_NATIVE_SOCIAL_RESPONSE",message:"The server returned a redirect for native ID-token sign-in."}})}function Go(){return {signIn:()=>qn(),add:()=>qn()}}function qn(){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 Wo(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 Bn(r.error);let a;try{a=wn(r.data);}catch{return Vn()}let u;try{u=await n.authenticate({optionsJSON:a,useBrowserAutofill:o.autoFill});}catch(b){return jn(n,b,"AUTH_CANCELLED","Passkey authentication was cancelled.")}if(!Yo(u))return Kn();let{clientExtensionResults:m,...f}=u,y=i.get(u.id);if(y)return y;let A=(async()=>{let b=await e.request("/passkey/verify-authentication",{method:"POST",body:{response:f},fetchOptions:s,decode:kn});return b.data&&t(),b})();i.set(u.id,A);try{return await A}finally{i.get(u.id)===A&&i.delete(u.id);}},async add(o={},s){let r=pe(o.name);if(!r.valid)return fe();let a=await e.request("/passkey/generate-register-options",{query:{name:r.value,authenticatorAttachment:o.authenticatorAttachment}});if(!a.data)return Bn(a.error);let u;try{u=On(a.data);}catch{return Vn()}let m;try{m=await n.register({optionsJSON:u});}catch(b){return jn(n,b,"REGISTRATION_CANCELLED","Passkey registration was cancelled.")}if(!Xo(m))return Kn();let{clientExtensionResults:f,...y}=m,A=await e.request("/passkey/verify-registration",{method:"POST",body:{response:y,name:r.value},fetchOptions:s,decode:b=>Sn(b,m.id,r.value)});return A.data&&t(),A}}}function Vn(){return {data:null,error:{status:502,statusText:"BAD_GATEWAY",code:"INVALID_WEBAUTHN_OPTIONS",message:"The server returned invalid WebAuthn options."}}}function Kn(){return {data:null,error:{status:400,statusText:"BAD_REQUEST",code:"INVALID_WEBAUTHN_RESPONSE",message:"The platform returned an invalid passkey response."}}}function $n(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 Yo(e){if(!$n(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 Xo(e){if(!$n(e))return false;let t=e.response;return typeof t.clientDataJSON=="string"&&typeof t.attestationObject=="string"}function Bn(e){return {data:null,error:e??{status:502,statusText:"BAD_GATEWAY",code:"INVALID_WEBAUTHN_OPTIONS",message:"The server returned no WebAuthn options."}}}function jn(e,t,n,i){let o=Zo(t,"page does not have focus"),s=e.errorCode?.(t),r=s!==void 0?s==="ERROR_CEREMONY_ABORTED":Jn(t)==="AbortError",a=n!=="AUTH_CANCELLED",u=Qo(s,Jn(t),a);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:u}}}function Qo(e,t,n){switch(e){case "ERROR_INVALID_DOMAIN":case "ERROR_INVALID_RP_ID":return "Passkeys are not set up for this site\u2019s domain.";case "ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED":return "This device already has a passkey for this account.";case "ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEY_ALGS":case "ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT":case "ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT":return "This device cannot create a passkey for this site.";}return t==="NotAllowedError"?n?"No passkey was created. The prompt was dismissed or timed out.":"No passkey was used. This device may not have one saved for this site yet, or the prompt was dismissed.":t==="SecurityError"?"Passkeys are not set up for this site\u2019s domain.":n?"Passkey registration did not complete.":"Passkey sign-in did not complete."}function Jn(e){return e&&typeof e=="object"&&"name"in e&&typeof e.name=="string"?e.name:void 0}function Zo(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}async function er(e){let n=`${new URL(e.apiUrl).origin}/api/projects/${e.decoded.projectId}/public-config`;return ft(await re(e,n,{init:{method:"GET",credentials:"omit"},maxResponseBytes:256*1024,decode:i=>tr(i,e)}),"public-config")}function tr(e,t){let n=L(e),i=n.environmentId,o=n.environmentType,s=`${new URL(t.apiUrl).origin}/api/projects/${t.decoded.projectId}/auth`;if(typeof n.applicationId!="string"||!nr(n.applicationId)||i!==t.decoded.projectId||o!=="development"&&o!=="production"||n.authBaseUrl!==s)throw N();let r=_(n.branding),a=_(n.legal);if(!Je(n.enabledMethods,64)||!Je(n.socialProviders,64)||!Wn(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"||!Wn(a,["termsUrl","privacyUrl"])||!Number.isSafeInteger(a.version)||a.version<0||typeof a.required!="boolean")throw N();if(n.socialProviderClientIds!==void 0){let u=_(n.socialProviderClientIds);if(Object.keys(u).length>64||Object.values(u).some(m=>typeof m!="string"||m.length>2048))throw N()}if(!F(n,["requireEmailVerification","twoFactor","mfaRequired","accountDeletion","organizations","sso","badge"])||!Gn(n.turnstileSiteKey)||!Gn(n.authTurnstileSiteKey)||typeof n.locale!="string"||n.locale.length===0||n.locale.length>64||!Number.isSafeInteger(n.configVersion)||n.configVersion<0)throw N();if(n.jwtIssuer!==null){let u=_(n.jwtIssuer);if(u.issuer!==s||u.jwksUrl!==`${s}/jwks`||u.aud!==t.decoded.projectId)throw N()}if(n.signUp!==void 0){let u=_(n.signUp).mode;if(typeof u!="string"||!["open","restricted","allowlist","waitlist"].includes(u))throw N()}if(n.authentication!==void 0&&ir(n.authentication),n.emailVerification!==void 0){let u=_(n.emailVerification);if(!F(u,["required"])||u.method!=="link"&&u.method!=="code")throw N()}if(n.userModel!==void 0&&!F(_(n.userModel),["requireEmail","firstLastName","emailChange","accountDeletion"]))throw N();if(n.mfa!==void 0){let u=_(n.mfa);if(!F(u,["totp","required","backupCodes"])||(u.required===true||u.backupCodes===true)&&u.totp!==true)throw N()}return n}function nr(e){return /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e)}function N(){return new TypeError("public-config returned an invalid response")}function _(e){if(!e||typeof e!="object"||Array.isArray(e))throw N();return e}function Gn(e){return e===null||typeof e=="string"&&e.length<=4096}function ir(e){let t=_(e),n=_(t.email),i=_(t.password),o=i.minLength!==void 0||i.maxLength!==void 0;if(!F(n,["signUp"])||!Je(n.signIn,3)||n.signIn.some(s=>s!=="password"&&s!=="magic_link"&&s!=="email_otp")||!F(_(t.phone),["signUp","signIn"])||!F(i,["signUp","add"])||o&&(!Number.isSafeInteger(i.minLength)||!Number.isSafeInteger(i.maxLength)||i.minLength<1||i.maxLength>4096||i.minLength>i.maxLength)||!F(_(t.passkey),["signIn","add"])||!or(_(t.passkey).relyingPartyId)||!F(_(t.username),["collectOnSignUp","signIn"]))throw N()}function or(e){return e==null||typeof e=="string"}function F(e,t){return t.every(n=>typeof e[n]=="boolean")}function Wn(e,t){return t.every(n=>e[n]===void 0||typeof e[n]=="string"&&e[n].length<=4096)}function Je(e,t){return Array.isArray(e)&&e.length<=t&&e.every(n=>typeof n=="string"&&n.length<=128)&&new Set(e).size===e.length}function rr(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}}function sr(e,t){let n=`p_${e.toLowerCase().replace(/-/g,"")}`;return `${t?.secure?"__Secure-":""}${n}.session_token`}function Ss(e,t){return je(Oe(e),t)}
2
+ exports.createMembershipHas=ji;exports.createNativeAuthClient=je;exports.createNativeClient=Ss;exports.createPasskeyClient=Wo;exports.decodePublishableKey=be;exports.getPublicConfig=er;exports.resolveConfig=Oe;exports.resolveProjectCapabilities=rr;exports.sessionCookieName=sr;
package/dist/native.d.cts CHANGED
@@ -1,7 +1,7 @@
1
- import { R as ResolvedAuthConfig, A as AuthConfig } from './organization-membership--eTrgk_L.cjs';
2
- export { D as DecodedPublishableKey, H as HasParams, O as OrganizationMembership, c as createMembershipHas, d as decodePublishableKey, r as resolveConfig, s as sessionCookieName } from './organization-membership--eTrgk_L.cjs';
3
- import { k as AuthOwlClient, aL as SocialIdTokenOptions, bd as createAuthHttpClient, be as AuthHttpClient, al as PasskeySignInOptions, f as ActionFetchOptions, h as AuthActionResult, ak as PasskeyAuthData, g as AddPasskeyOptions, m as AuthPasskey } from './client-BJ378jdV.cjs';
4
- export { i as AuthClientError, p as AuthSession, q as AuthUser, a4 as Organization, a5 as OrganizationClient, a6 as OrganizationDetails, as as ProjectCapabilities, at as PublicConfig, aE as SessionState, aF as SessionStore, aG as SetActiveOrganizationOptions, aK as SocialAuthData, bb as getPublicConfig, bc as resolveProjectCapabilities } from './client-BJ378jdV.cjs';
1
+ import { R as ResolvedAuthConfig, A as AuthConfig } from './organization-membership-CaaUep5j.cjs';
2
+ export { D as DecodedPublishableKey, H as HasParams, O as OrganizationMembership, c as createMembershipHas, d as decodePublishableKey, g as resolveConfig, s as sessionCookieName } from './organization-membership-CaaUep5j.cjs';
3
+ import { k as AuthOwlClient, aL as SocialIdTokenOptions, bd as createAuthHttpClient, be as AuthHttpClient, al as PasskeySignInOptions, f as ActionFetchOptions, h as AuthActionResult, ak as PasskeyAuthData, g as AddPasskeyOptions, m as AuthPasskey } from './client-BMcV537r.cjs';
4
+ export { i as AuthClientError, p as AuthSession, q as AuthUser, a4 as Organization, a5 as OrganizationClient, a6 as OrganizationDetails, as as ProjectCapabilities, at as PublicConfig, aE as SessionState, aF as SessionStore, aG as SetActiveOrganizationOptions, aK as SocialAuthData, bb as getPublicConfig, bc as resolveProjectCapabilities } from './client-BMcV537r.cjs';
5
5
  import { startAuthentication, startRegistration } from '@simplewebauthn/browser';
6
6
 
7
7
  type AuthActionClient = Omit<AuthOwlClient, 'getToken' | 'getConsentStatus' | 'acceptConsent' | 'waitlist'>;
package/dist/native.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { R as ResolvedAuthConfig, A as AuthConfig } from './organization-membership--eTrgk_L.js';
2
- export { D as DecodedPublishableKey, H as HasParams, O as OrganizationMembership, c as createMembershipHas, d as decodePublishableKey, r as resolveConfig, s as sessionCookieName } from './organization-membership--eTrgk_L.js';
3
- import { k as AuthOwlClient, aL as SocialIdTokenOptions, bd as createAuthHttpClient, be as AuthHttpClient, al as PasskeySignInOptions, f as ActionFetchOptions, h as AuthActionResult, ak as PasskeyAuthData, g as AddPasskeyOptions, m as AuthPasskey } from './client-CDn8-8i0.js';
4
- export { i as AuthClientError, p as AuthSession, q as AuthUser, a4 as Organization, a5 as OrganizationClient, a6 as OrganizationDetails, as as ProjectCapabilities, at as PublicConfig, aE as SessionState, aF as SessionStore, aG as SetActiveOrganizationOptions, aK as SocialAuthData, bb as getPublicConfig, bc as resolveProjectCapabilities } from './client-CDn8-8i0.js';
1
+ import { R as ResolvedAuthConfig, A as AuthConfig } from './organization-membership-CaaUep5j.js';
2
+ export { D as DecodedPublishableKey, H as HasParams, O as OrganizationMembership, c as createMembershipHas, d as decodePublishableKey, g as resolveConfig, s as sessionCookieName } from './organization-membership-CaaUep5j.js';
3
+ import { k as AuthOwlClient, aL as SocialIdTokenOptions, bd as createAuthHttpClient, be as AuthHttpClient, al as PasskeySignInOptions, f as ActionFetchOptions, h as AuthActionResult, ak as PasskeyAuthData, g as AddPasskeyOptions, m as AuthPasskey } from './client-CmEFSonw.js';
4
+ export { i as AuthClientError, p as AuthSession, q as AuthUser, a4 as Organization, a5 as OrganizationClient, a6 as OrganizationDetails, as as ProjectCapabilities, at as PublicConfig, aE as SessionState, aF as SessionStore, aG as SetActiveOrganizationOptions, aK as SocialAuthData, bb as getPublicConfig, bc as resolveProjectCapabilities } from './client-CmEFSonw.js';
5
5
  import { startAuthentication, startRegistration } from '@simplewebauthn/browser';
6
6
 
7
7
  type AuthActionClient = Omit<AuthOwlClient, 'getToken' | 'getConsentStatus' | 'acceptConsent' | 'waitlist'>;
package/dist/native.js CHANGED
@@ -1 +1 @@
1
- import {i}from'./chunk-6CEKG2JL.js';export{i as createNativeAuthClient,j as createPasskeyClient,k as getPublicConfig,a as resolveProjectCapabilities}from'./chunk-6CEKG2JL.js';import {f}from'./chunk-RRP2XNYV.js';export{w as createMembershipHas,a as decodePublishableKey,f as resolveConfig,b as sessionCookieName}from'./chunk-RRP2XNYV.js';import'./chunk-T5SH3ZZP.js';function u(i$1,o){return i(f(i$1),o)}export{u as createNativeClient};
1
+ import {i}from'./chunk-ELBANZQP.js';export{i as createNativeAuthClient,j as createPasskeyClient,k as getPublicConfig,a as resolveProjectCapabilities}from'./chunk-ELBANZQP.js';import {k}from'./chunk-6D4A36HU.js';export{B as createMembershipHas,a as decodePublishableKey,k as resolveConfig,b as sessionCookieName}from'./chunk-6D4A36HU.js';import'./chunk-T5SH3ZZP.js';function u(i$1,o){return i(k(i$1),o)}export{u as createNativeClient};
@@ -370,6 +370,14 @@ type ResolvedAuthConfig = Omit<AuthConfig, 'fetch'> & {
370
370
  */
371
371
  session: SessionBinding;
372
372
  };
373
+ type ResolvedAuthTarget = Readonly<{
374
+ publishableKey: string;
375
+ apiUrl: string;
376
+ decoded: DecodedPublishableKey;
377
+ projectBaseURL: string;
378
+ }>;
379
+ /** Resolve the shared, side-effect-free project endpoint contract. */
380
+ declare function resolveAuthTarget(input: Pick<AuthConfig, 'publishableKey' | 'apiUrl'>): ResolvedAuthTarget;
373
381
  declare function resolveConfig(input: AuthConfig): ResolvedAuthConfig;
374
382
 
375
383
  /**
@@ -439,4 +447,4 @@ declare function createMembershipHas(membership: OrganizationMembership | null |
439
447
  }) => boolean;
440
448
  };
441
449
 
442
- export { type AuthConfig as A, type DecodedPublishableKey as D, type HasParams as H, type OrganizationMembership as O, type ResolvedAuthConfig as R, TransportError as T, type TransportErrorKind as a, membershipHasPermission as b, createMembershipHas as c, decodePublishableKey as d, membershipHasTeam as e, membershipHas as m, resolveConfig as r, sessionCookieName as s };
450
+ export { type AuthConfig as A, type DecodedPublishableKey as D, type HasParams as H, type OrganizationMembership as O, type ResolvedAuthConfig as R, TransportError as T, type ResolvedAuthTarget as a, type TransportErrorKind as b, createMembershipHas as c, decodePublishableKey as d, membershipHasPermission as e, membershipHasTeam as f, resolveConfig as g, membershipHas as m, resolveAuthTarget as r, sessionCookieName as s };
@@ -370,6 +370,14 @@ type ResolvedAuthConfig = Omit<AuthConfig, 'fetch'> & {
370
370
  */
371
371
  session: SessionBinding;
372
372
  };
373
+ type ResolvedAuthTarget = Readonly<{
374
+ publishableKey: string;
375
+ apiUrl: string;
376
+ decoded: DecodedPublishableKey;
377
+ projectBaseURL: string;
378
+ }>;
379
+ /** Resolve the shared, side-effect-free project endpoint contract. */
380
+ declare function resolveAuthTarget(input: Pick<AuthConfig, 'publishableKey' | 'apiUrl'>): ResolvedAuthTarget;
373
381
  declare function resolveConfig(input: AuthConfig): ResolvedAuthConfig;
374
382
 
375
383
  /**
@@ -439,4 +447,4 @@ declare function createMembershipHas(membership: OrganizationMembership | null |
439
447
  }) => boolean;
440
448
  };
441
449
 
442
- export { type AuthConfig as A, type DecodedPublishableKey as D, type HasParams as H, type OrganizationMembership as O, type ResolvedAuthConfig as R, TransportError as T, type TransportErrorKind as a, membershipHasPermission as b, createMembershipHas as c, decodePublishableKey as d, membershipHasTeam as e, membershipHas as m, resolveConfig as r, sessionCookieName as s };
450
+ export { type AuthConfig as A, type DecodedPublishableKey as D, type HasParams as H, type OrganizationMembership as O, type ResolvedAuthConfig as R, TransportError as T, type ResolvedAuthTarget as a, type TransportErrorKind as b, createMembershipHas as c, decodePublishableKey as d, membershipHasPermission as e, membershipHasTeam as f, resolveConfig as g, membershipHas as m, resolveAuthTarget as r, sessionCookieName as s };