import{I as B,r as x,s as k,A as te,c as W}from"./T3Sp137w.js";import{s as ne,d as se,g as oe,a as j,b as H,c as ce,e as ie,o as Y,w as Z,l as V,q as J,f as X,r as ue,h as le,j as fe}from"./BbA6xmLT.js";import{u as re}from"./BoF3ZzDx.js";import{u as me,B as de}from"./BbZmtzZY.js";const ae=B("databaseStore",()=>{const c=()=>oe(),L=()=>ne(),T=()=>({toFirestore:r=>r,fromFirestore:(r,a)=>r.data(a)}),d=r=>se(c(),...r).withConverter(T()),C=r=>{const a=r.shift();return le(c(),a,...r).withConverter(T())},U=r=>fe(c(),r).withConverter(T()),u=async r=>(await j(d(r))).data(),v=async(r,a)=>{try{return await H(d(r),a,{merge:!0})}catch(n){throw n}},N=async(r,a)=>{try{return await H(d(r),a,{merge:!1})}catch(n){throw n}},l=async r=>{const a=d(r);try{return(await j(a)).exists()}catch{return!1}},D=async r=>{const a=d(r);try{if(!(await j(a)).exists())return!1;await ce(a)}catch{return!1}return!0},E=async(r,a)=>{const n=C(r);try{return await ie(n,a)}catch(y){throw y}},b=v,f=x({}),O=r=>r.join("/"),g=async r=>{var n;const a=(n=f.value)==null?void 0:n[r];if(a){delete f.value[r];try{a()}catch{}}};return{checkDocExists:l,createDocAndAssignId:E,createDocWithKnownId:b,getDocRef:d,getDocData:u,getServerTimestamp:L,queryDocsAndSubscribe:async({queryId:r,path:a,onUpdate:n,queryParams:y=[],maxResults:A=null})=>{const h=y.map(s=>Z(s[0],s[1],s[2]));A&&h.push(V(A));const I=J(C(a),...h);let S=null;try{S=await X(I),S.forEach(s=>n([s.id,s.data()]))}catch{return}const F=Y(I,s=>{s.forEach(p=>{n([p.id,p.data()])})},s=>{});f.value[r]=F},queryCollectionGroupAndSubscribe:async({queryId:r,groupName:a,onUpdate:n,queryParams:y=[],maxResults:A=null})=>{const h=y.map(s=>Z(s[0],s[1],s[2]));A&&h.push(V(A));const I=J(U(a),...h);let S=null;try{S=await X(I),S.forEach(s=>{var p,R;return n([s.id,(R=(p=s.ref.parent)==null?void 0:p.parent)==null?void 0:R.id,s.data()])})}catch{return}const F=Y(I,s=>{s.forEach(p=>{var R,M;n([p.id,(M=(R=p.ref.parent)==null?void 0:R.parent)==null?void 0:M.id,p.data()])})},s=>{});f.value[r]=F},unsubscribeFromQuery:async r=>g(r),subscribeToDoc:async(r,a)=>{const n=d(r),y=Y(n,A=>{const h=A.data();a(h||null)});return f.value[O(r)]=y,(await j(n)).data()},removeDoc:D,runReadWriteTransaction:async r=>{try{return await ue(c(),async n=>await r(n))}catch{}return null},getDocDataInTransaction:async(r,a)=>{const n=await r.get(a);if(!n.exists())throw"Doc does not exist!";return await n.data()},unsubscribeFromDoc:async r=>g(O(r)),updateDoc:v,overwriteDoc:N}}),be="userProfiles",pe=B("userProfileStore",()=>{const{createDocWithKnownId:c,updateDoc:L,checkDocExists:T,subscribeToDoc:d,unsubscribeFromDoc:C,getServerTimestamp:U}=ae(),{userId:u,email:v,displayName:N}=k(re()),l=x(null),D=async()=>{v.value&&(await b(),await g())};te(v,()=>{D(),setTimeout(D,1e3)}),D();const E=()=>u.value?[be,u.value]:null,b=async()=>{const o=E();if(!o||!v.value||!N.value)return;if(await O())return!1;const w={name:N.value,email:v.value,agreedTerms:!1,createdAt:U(),lastUpdatedAt:U()};await c(o,w),await g()},f=async o=>{const w=E();w&&(o.lastUpdatedAt=U(),await L(w,o))},O=async()=>{const o=E();return o?T(o):!1},g=async()=>{const o=E();o&&await O()&&await d(o,w=>{l.value=w})},Q=async()=>{await P()},P=async()=>{const o=E();o&&C(o)},q=async()=>{await f({agreedTerms:!0})},z=W(()=>{var o;return!!((o=l.value)!=null&&o.canCreateOrganizations)});return{createUserProfile:b,subscribeToUserProfile:g,unsubscribeFromUserProfile:P,resetUserProfile:Q,updateUserProfile:f,acceptTerms:q,userProfile:l,userId:u,canCreateOrganizations:z}});var ye=(c=>(c.USER_CHOICE="USER_CHOICE",c.NEVER="NEVER",c.ALWAYS="ALWAYS",c))(ye||{}),he=(c=>(c.USER_ONLY="USER_ONLY",c.ALLOW_ADMIN="ALLOW_ADMIN",c))(he||{});const m="organizations",_="organizationUsers",$="administeredOrgs",ee="readableOrgs",we=B("organizationStore",()=>{const{queryDocsAndSubscribe:c,subscribeToDoc:L,queryCollectionGroupAndSubscribe:T,unsubscribeFromQuery:d,createDocAndAssignId:C,createDocWithKnownId:U,updateDoc:u,removeDoc:v,getServerTimestamp:N}=ae(),{email:l}=k(re()),{canCreateOrganizations:D}=k(pe()),{fetchFromBackend:E}=me(),b=x({}),f=x({}),O=(e,t)=>`${e}/${t}`,g=async()=>{l.value&&await Promise.all([T({queryId:ee,groupName:_,queryParams:[["email","==",l.value]],onUpdate:([e,t,i])=>{t&&(t in b.value||L([m,t],G=>{G&&(b.value[t]=G)}),i.organizationId=t,f.value[O(t,e)]=i)}}),(async()=>{if(D.value)return c({queryId:"ADMINISTERED_ORGS_QUERY-ALL",path:[m],onUpdate:([e,t])=>{b.value[e]=t}})})()])},Q=e=>{c({queryId:`${$}-${e}-users`,path:[m,e,_],onUpdate:([t,i])=>{f.value[O(e,t)]={...i,organizationId:e}}})},P=async e=>{const t=[m];if(!t||!l.value)return!1;const i={name:e.name,tpm:e.tpm,rpm:e.rpm,allowExperimentalFeatures:e.allowExperimentalFeatures,creatorEmail:l.value,loggingType:"USER_CHOICE",accessType:"USER_ONLY"},{id:G}=await C(t,i);return await S(G,e.adminEmail),await r(G,e.adminEmail,!0),!0},q=async()=>{await d($),await d(ee)},z=()=>{l.value?g():q()};te(l,()=>{z(),setTimeout(z,1e3)}),z();const o=(e,t)=>{v([m,e,_,t]),delete f.value[O(e,t)]},w=(e,t,i)=>{u([m,e,_,t],{rpm:i})},K=(e,t,i)=>{u([m,e,_,t],{tpm:i})},r=(e,t,i)=>{u([m,e,_,t],{isAdmin:i})},a=(e,t)=>{u([m,e],{loggingType:t})},n=(e,t)=>{u([m,e],{accessType:t})},y=(e,t)=>{u([m,e],{name:t})},A=(e,t)=>{u([m,e],{rpm:t})},h=(e,t)=>{u([m,e],{tpm:t})},I=(e,t)=>{u([m,e],{allowExperimentalFeatures:t})},S=(e,t)=>{const i={email:t,createdAt:N(),rpm:1e3,tpm:4e5,organizationId:e};U([m,e,_,t],i)},F=W(()=>l.value?Object.fromEntries([...D.value?Object.entries(b.value):[],...Object.entries(f.value).filter(([e,t])=>t.isAdmin).map(([e,t])=>[t.organizationId,b.value[t.organizationId]||null]).filter(e=>e[1]!==null)]):{}),s=W(()=>Object.keys(F.value).length>0),p=W(()=>{if(!l.value)return{};const e=Object.values(f.value).filter(t=>t.email===l.value).map(t=>[t.organizationId,b.value[t.organizationId]]).filter(([t,i])=>i!==void 0);return e.length===0?{}:Object.fromEntries(e)}),R=W(()=>Object.keys(p.value).length>0);return{organizations:b,organizationsWhereUserIsAdminOrCreator:F,organizationUsers:f,isAdministeringAnyOrganizations:s,isUserInAnyOrganization:R,createOrganization:P,createUserInOrganization:S,subscribeToOrganizations:g,subscribeToOrganizationUsers:Q,unsubscribeFromOrganizations:q,removeUserFromOrganization:o,setRpmQuotaForUser:w,setTpmQuotaForUser:K,setAdminForUser:r,setRpmForOrganization:A,setTpmForOrganization:h,setExperimentalFeaturesForOrganization:I,setOrganizationName:y,setOrganizationLoggingType:a,setOrganizationAccessType:n,deleteOrganization:async e=>{d(`${$}-${e}-users`),delete b.value[e],await E(`${de.DELETE_ORGANIZATION}/${e}`,{},"DELETE")},organizationsWhereUserIsMember:p}});export{he as O,ye as a,pe as b,ae as c,we as u};