const scsApi=(function (){
'use strict';
let fetchAbortController=null;
let isFetchAborted=false;
async function sendToProxy(payload, signal){
const REST_API_URL=scsConfig.restUrl;
const NONCE=scsConfig.nonce;
console.log('[SCS API DEBUG] Enviando a:', REST_API_URL);
console.log('[SCS API DEBUG] Payload:', payload);
try {
const response=await fetch(REST_API_URL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-WP-Nonce': NONCE
},
body: JSON.stringify(payload),
signal: signal
});
if(!response.ok){
const errorData=await response.json().catch(()=> null);
if(response.status===429){
throw new Error(scsUtils.__('tooManyRequests')||'Has enviado demasiados mensajes. Espera un momento.');
}else if(response.status===403){
throw new Error(scsUtils.__('authError')||'Error de autenticación. Recarga la página.');
}else if(errorData&&errorData.message){
throw new Error(errorData.message);
}else{
const detailedError=(typeof scsTranslations!=='undefined'&&scsTranslations.serverErrorDetailed)
? scsTranslations.serverErrorDetailed.replace('{code}', response.status)
: `Error del servidor (${response.status})`;
throw new Error(detailedError);
}}
return await response.json();
} catch (error){
if(error.name==='AbortError'){
console.log('Fetch aborted');
throw error;
}
throw error;
}}
function createAbortController(){
fetchAbortController=new AbortController();
isFetchAborted=false;
return fetchAbortController;
}
function abortRequest(){
if(fetchAbortController){
isFetchAborted=true;
fetchAbortController.abort();
}}
return {
sendToProxy: sendToProxy,
createAbortController: createAbortController,
abortRequest: abortRequest,
isAborted: ()=> isFetchAborted
};})();