import{u as T}from"./DateField.vue_vue_type_style_index_0_lang-BFhdkW_K.js";import{g as p}from"./useCmsUrl-BMH6Mdh_.js";import{r as g}from"./x-CuOWXDIc.js";function y(){const c=document.cookie.match(/XSRF-TOKEN=([^;]+)/);return c?decodeURIComponent(c[1]):""}function A(){const c=g(!1),w=g({}),l=T();function m(e=!1){const r={Accept:"application/json","X-Requested-With":"XMLHttpRequest","X-XSRF-TOKEN":y()};return e||(r["Content-Type"]="application/json"),r}async function u(e,r,o=null,E={}){c.value=!0,w.value={};try{const f=o instanceof FormData,h={method:e,headers:m(f),credentials:"include"};o&&e!=="GET"&&(h.body=f?o:JSON.stringify(o));let d=r;if(o&&e==="GET"){const s=new URLSearchParams;Object.entries(o).forEach(([i,a])=>{a!=null&&a!==""&&s.append(i,a)});const t=s.toString();t&&(d=`${r}${r.includes("?")?"&":"?"}${t}`)}const n=await fetch(d,h);if(n.status===401){r.includes("/auth/login")||(window.location.href=p("/login"));const s=new Error("Сессия истекла. Войдите снова.");throw s.status=401,s}if(n.status===422){const s=await n.json();w.value=s.errors||{};const t=new Error(s.message||"Ошибка валидации");throw t.status=422,t.errors=s.errors||{},t}if(n.status===403){const t=(await n.json().catch(()=>({}))).message||"";if(t.includes("деактивирован")||t.includes("deactivated")||t.includes("inactive")){l.error("Ваш аккаунт был деактивирован"),window.location.href=p("/login");const a=new Error("Аккаунт деактивирован");throw a.status=403,a.deactivated=!0,a}l.error("Недостаточно прав для выполнения операции");const i=new Error(t||"Доступ запрещён");throw i.status=403,i}if(n.status===429){const s=n.headers.get("retry-after")||n.headers.get("Retry-After")||60,t=new Error(`Слишком много запросов. Повторите через ${s} сек.`);throw t.status=429,t.retryAfter=parseInt(s,10)||60,l.error(t.message),t}if(n.status===404){const s=new Error("Ресурс не найден");throw s.status=404,s}if(!n.ok){const t=(await n.json().catch(()=>({}))).message||`Ошибка сервера (${n.status})`;l.error(t);const i=new Error(t);throw i.status=n.status,i}return n.status===204?null:await n.json()}catch(f){throw!E.silent&&f.message!=="Ошибка валидации"&&console.error("API Error:",f),f}finally{c.value=!1}}return{loading:c,errors:w,get:(e,r={},o={})=>u("GET",e,r,o),post:(e,r={},o={})=>u("POST",e,r,o),put:(e,r={},o={})=>u("PUT",e,r,o),patch:(e,r={},o={})=>u("PATCH",e,r,o),del:(e,r={})=>u("DELETE",e,null,r),upload:(e,r,o={})=>u("POST",e,r,o)}}export{A as u};
