1import{aP as d,aH as n}from"./index-CpeGhXo5.js";const y=d((s,e)=>({projects:[],fetchProjects:async()=>{try{const t=await n.get("/sysadmin/projects");s({projects:t.data||[]})}catch(t){console.error(t)}},addProject:async t=>{try{const c=await n.post("/sysadmin/projects",t);s({projects:[c.data,...e().projects]})}catch(c){console.error("API failed, falling back to local state",c),s({projects:[t,...e().projects]})}},updateProject:async(t,c)=>{try{const r=await n.patch(`/sysadmin/projects/${t}`,c);s({projects:e().projects.map(a=>a.id===t?r.data:a)})}catch(r){console.error("API failed, falling back to local state",r),s({projects:e().projects.map(a=>a.id===t?{...a,...c}:a)})}},deleteProject:async t=>{try{await n.delete(`/sysadmin/projects/${t}`),s({projects:e().projects.filter(c=>c.id!==t)})}catch(c){console.error("API failed, falling back to local state",c),s({projects:e().projects.filter(r=>r.id!==t)})}},addServer:async(t,c,r)=>{const a=e().projects.find(o=>o.id===t);if(!a)return;const i={servers:[...a.servers||[],c],activityLog:[r,...a.activityLog||[]]};await e().updateProject(t,i)},removeServer:async(t,c,r)=>{const a=e().projects.find(o=>o.id===t);if(!a)return;const i={servers:(a.servers||[]).filter(o=>o.id!==c),activityLog:[r,...a.activityLog||[]]};await e().updateProject(t,i)},addDocument:async(t,c,r)=>{const a=e().projects.find(o=>o.id===t);if(!a)return;const i={documents:[...a.documents||[],c],activityLog:[r,...a.activityLog||[]]};await e().updateProject(t,i)},removeDocument:async(t,c,r)=>{const a=e().projects.find(o=>o.id===t);if(!a)return;const i={documents:(a.documents||[]).filter(o=>o.id!==c),activityLog:[r,...a.activityLog||[]]};await e().updateProject(t,i)},setDeployment:async(t,c,r)=>{const a=e().projects.find(o=>o.id===t);if(!a)return;const i={deployment:c,activityLog:[r,...a.activityLog||[]]};await e().updateProject(t,i)},addCredential:async(t,c,r)=>{const a=e().projects.find(o=>o.id===t);if(!a)return;const i={credentials:[...a.credentials||[],c],activityLog:[r,...a.activityLog||[]]};await e().updateProject(t,i)},removeCredential:async(t,c,r)=>{const a=e().projects.find(o=>o.id===t);if(!a)return;const i={credentials:(a.credentials||[]).filter(o=>o.id!==c),activityLog:[r,...a.activityLog||[]]};await e().updateProject(t,i)},setMaintenance:async(t,c,r)=>{const a=e().projects.find(o=>o.id===t);if(!a)return;const i={maintenance:c,activityLog:[r,...a.activityLog||[]]};await e().updateProject(t,i)},logActivity:async(t,c)=>{const r=e().projects.find(i=>i.id===t);if(!r)return;const a={activityLog:[c,...r.activityLog||[]]};await e().updateProject(t,a)}}));export{y as u};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.