1import{G as e,q as t}from"./BPsVqlsv.js";import{s as n}from"./DMFpKwy8.js";function r(){let e=new Map;function t(t,r){let i=e.get(t)??new Set;return i.add(r),e.set(t,i),()=>n(t,r)}function n(t,n){let r=e.get(t);r&&(r.delete(n),r.size===0&&e.delete(t))}function r(t,n){for(let r of[...e.get(t)??[]])try{r(n)}catch(e){console.error(`[api-events] handler for "${t}" threw`,e)}}function i(){e.clear()}return{on:t,off:n,emit:r,clear:i}}var i=null;function a(){let t=e();return t?(t._apiEvents??=r(),t._apiEvents):(i??=r(),i)}var o=`/pl`,s=`/login`,c=`login`,l=`returnTo`,u=[`/docs`,`/blog`,`/auth/one-time-login`,`/dev`],d={en:[`/`,`/login`,`/register`,`/dealfuel/register`,`/reset-password`,`/change-password`,`/email/verify`,`/verifyEmail`,`/pricing`,`/contact-us`,`/partners`,`/ai-tools`,`/rank-tracker`,`/competitor-analysis`,`/seo-audit`,`/copywriter-ai`,`/social-media`,`/ads-generator`,`/ai-for-ecommerce`,`/seo-checklist`,`/s-offer`,`/terms`,`/privacy`],pl:[`/`,`/login`,`/rejestracja`,`/dealfuel/register`,`/reset-hasla`,`/zmiana-hasla`,`/email/weryfikacja`,`/verifyEmail`,`/cennik`,`/kontakt`,`/partnerzy`,`/narzedzia-ai`,`/monitoring-pozycji`,`/analiza-konkurencji`,`/audyt-seo`,`/ai-copywriter`,`/generator-social-media`,`/generator-reklam`,`/ai-dla-ecommerce`,`/seo-checklista`,`/s-offer`,`/regulamin`,`/polityka-prywatnosci`]},f={en:new Set(d.en),pl:new Set(d.pl)};function p(e){let t=((e.split(`#`)[0]??``).split(`?`)[0]??``).replace(/\/+$/,``);return t===``?`/`:t}function m(e){let t=p(e);return t===o||t.startsWith(`${o}/`)?`pl`:`en`}function h(e){return e===`pl`?`pl`:`en`}function g(e){return e===`pl`?`${o}${s}`:s}function _(e){return e===o?`/`:e.startsWith(`${o}/`)?e.slice(3):e}var v=`/app`;function y(e){let t=_(p(e));return t===v||t.startsWith(`${v}/`)}function b(e){let t=p(e),n=_(t);return f[m(t)].has(n)||u.some(e=>n===e||n.startsWith(`${e}/`))}function x(e,t,n=s){return b(e)?null:{path:n,query:{[l]:t}}}function S(e){return typeof e!=`string`||!/^\/(?![/\\])/.test(e)||/[\u0000-\u001f\u007f]/.test(e)||_(p(e))===`/login`?null:e}var C=class extends Error{name=`ApiError`;status;url;method;data;validationErrors;constructor(e){super(e.message,{cause:e.cause}),this.status=e.status,this.url=e.url,this.method=e.method,this.data=e.data??null,this.validationErrors=D(this.data)}get isNetworkError(){return this.status===0}get firstValidationError(){return T(this.validationErrors)}};function w(e){return e instanceof C}function T(e){for(let[t,n]of Object.entries(e??{})){let e=n?.[0];if(typeof e==`string`&&e.length>0)return{field:t,message:e}}return null}function E(e,t){if(w(e))return e;let n=e,r=te(n?.data),i=n?.response?.status??n?.status??n?.statusCode??0;return new C({message:ee(r,e),status:i,url:t.url,method:t.method,data:r,cause:e})}function ee(e,t){return typeof e?.message==`string`&&e.message.length>0?e.message:typeof e?.error==`string`&&e.error.length>0?e.error:t instanceof Error&&t.message.length>0?t.message:`Request failed`}function te(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function D(e){let t=e?.errors;return typeof t!=`object`||!t||Array.isArray(t)?null:t}var O=`seomaker_bearer_token`,k=`seomaker_user`,A={getBearerToken:()=>null,onUnauthorized:()=>{}},j=new Set([`true`,`false`,`null`,`undefined`]),M=11;function N(e){return!e||e.length<M||j.has(e)?null:e.startsWith(`Bearer `)?e:`Bearer ${e}`}var P=[`/login`,`/api/user`,`/api/one-time-login/validate`,`/broadcasting/auth`],F=[`/login`,`/one-time-login`,`/api/user`,`/broadcasting/auth`],I=[`/onboarding/`,`/get-project-data`],L={forbidden:`Access forbidden`,conflict:`Conflict error occurred`,rateLimited:`Too many requests. Please try again in a moment.`,serverError:`Something went wrong. Please try again later or contact support.`,subscriptionLimit:`Your plan limit has been reached.`},R=new Set([`POST`,`PUT`,`PATCH`,`DELETE`]);function z(e){return R.has(e)}function B(e){let t=(e.split(`#`)[0]??``).split(`?`)[0]??``,n=/^[a-z][a-z\d+\-.]*:\/\//i.exec(t);if(!n)return t;let r=t.slice(n[0].length),i=r.indexOf(`/`);return i===-1?`/`:r.slice(i)}function V(e){let t=B(e);return P.some(e=>t===e||t.endsWith(e))}function H(e){let t=B(e);return!F.some(e=>t.includes(e))}function ne(e){let t=B(e);return I.some(e=>t.includes(e))}var U=`XSRF-TOKEN`,W=`X-XSRF-TOKEN`,G=`/sanctum/csrf-cookie`;function K(e,t){if(!t)return null;let n=`${e}=`;for(let e of t.split(`;`)){let t=e.trim();if(!t.startsWith(n))continue;let r=t.slice(n.length);try{return decodeURIComponent(r)}catch{return r}}return null}function q(){return typeof document>`u`?null:K(U,document.cookie)}function J(e,t){if(!z(t)||e.has(`X-XSRF-TOKEN`))return;let n=q();n&&e.set(W,n)}async function Y(e,t){let{events:n}=t;switch(e.status){case 400:Q(n,e);break;case 401:await X(e,t);break;case 402:n.emit(`subscription-limit`,{message:$(e)??L.subscriptionLimit,reason:re(e),status:e.status,error:e});break;case 403:ne(e.url)||Q(n,e,`forbidden`,L.forbidden);break;case 409:Q(n,e,`conflict`,L.conflict);break;case 422:Z(n,e);break;case 429:n.emit(`error-message`,{message:L.rateLimited,key:`rate-limited`,status:e.status,error:e});break;default:e.status>=500&&n.emit(`error-message`,{message:L.serverError,key:`server-error`,status:e.status,error:e})}}async function X(e,t){try{await t.authBridge.onUnauthorized({url:e.url,status:e.status,shouldRedirect:!V(e.url),shouldClearCredentials:H(e.url)})}catch(e){console.error(`[http] auth bridge failed to handle 401`,e)}}function Z(e,t){let n=t.firstValidationError;e.emit(`validation-failed`,{message:n?.message??t.message,field:n?.field??null,errors:t.validationErrors??{},error:t}),e.emit(`error-message`,{message:n?.message??t.message,key:`validation`,status:t.status,error:t})}function Q(e,t,n=`server-error`,r=L.serverError){let i=$(t);e.emit(`error-message`,{message:i??r,key:i?`server-message`:n,status:t.status,error:t})}function $(e){let t=e.data?.message;return typeof t==`string`&&t.length>0?t:null}function re(e){let t=e.data?.reason;return t===`quota`||t===`subscription`?t:null}var ie=`X-Seomaker-Locale`;function ae(e){let{baseURL:t,events:r}=e,i=e.csrfRetryDelayMs??300,a=e.authBridge??A,o=({options:t})=>{let n=(t.method??`GET`).toUpperCase();t.headers.has(`Accept`)||t.headers.set(`Accept`,`application/json`);for(let[n,r]of Object.entries(e.defaultHeaders??{}))t.headers.has(n)||t.headers.set(n,r);if(!t.headers.has(`X-Seomaker-Locale`)){let n=e.resolveLocale?.();n&&t.headers.set(ie,n)}oe(t.headers,a),J(t.headers,n)},s=n.create({baseURL:t,credentials:`include`,retry:!1,onRequest:o},e.fetch?{fetch:e.fetch}:void 0);async function c(e,t={},n=!1){let{skipGlobalErrorHandler:o=!1,method:d=`GET`,body:f,...p}=t;try{return await s(e,{...p,method:d,body:f,onRequest:u(p.onRequest)})}catch(s){let u=E(s,{url:e,method:d});
1if(u.status===419&&!n&&await l())return await se(i),await c(e,t,!0);throw o||await Y(u,{events:r,authBridge:a}),u}}async function l(){try{return await c(G,{method:`GET`,skipGlobalErrorHandler:!0},!0),!0}catch{return!1}}function u(e){return[o,...e?Array.isArray(e)?e:[e]:[]]}return{request:c,get:(e,t)=>c(e,{...t,method:`GET`}),post:(e,t,n)=>c(e,{...n,method:`POST`,body:t}),put:(e,t,n)=>c(e,{...n,method:`PUT`,body:t}),patch:(e,t,n)=>c(e,{...n,method:`PATCH`,body:t}),delete:(e,t)=>c(e,{...t,method:`DELETE`}),setAuthBridge:e=>{a=e},raw:s}}function oe(e,t){if(e.has(`Authorization`))return;let n=N(t.getBearerToken());n&&e.set(`Authorization`,n)}function se(e){return e>0?new Promise(t=>setTimeout(t,e)):Promise.resolve()}function ce(){let n=e();if(!n)throw Error(`[useApi] called outside of a Nuxt app context - use createHttpClient() directly instead.`);return n._apiClient||=ae({baseURL:t().public.apiUrl,events:a(),defaultHeaders:void 0,resolveLocale:()=>{let e=n.$router.currentRoute.value.path;return y(e)?m(e):null}}),n._apiClient}export{h as _,N as a,E as c,y as d,b as f,m as g,S as h,k as i,c as l,x as m,G as n,C as o,g as p,O as r,w as s,ce as t,l as u,a as v};
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.