PageSourceSearch

https://freeguardvpn.com/_nuxt/C5VKrBkf.js

js freeguardvpn.com collected 2026-10-02 00:33:23 UTC 7,966 bytes, 1 lines download raw bytes

1import{_ as e}from"./CqpITZ59.js";import{c as t,d as a,k as o,a as s,_ as l}from"./Dyrbu-7z.js";import{u as n}from"./CkQUjaVk.js";import{N as i,q as r,o as c,b as d,d as u,e as m,k as p,g as v,n as y,Q as g,f,i as _,P as b,t as x}from"./CqMZ4094.js";import{f as N,$ as h,d as $,b as P,G as k,o as w,a2 as C,k as L,l as V,ag as j,u as z,ah as F,O as U,af as M,W as O,F as R,am as A,ae as B,m as G}from"./DfjDuJYO.js";import"./964zjDBJ.js";import"./BmBJFIy-.js";import"./Coqek9-_.js";const S={class:"vpn-nodes-page p-4 md:p-8 bg-primary-bg text-text-primary min-h-screen"},E={class:"text-h4 mb-1 text-text-primary"},q={class:"text-subtitle-1 mb-6 text-text-secondary"},D={key:0,class:"flex justify-center items-center h-64"},I={class:"text-text-primary"},Q={key:1,class:"mb-6"},T={key:2},W={class:"text-text-secondary"},H={key:3},J=["src","alt"],K={key:0,class:"text-text-secondary text-caption mb-2"},X={class:"text-uppercase"},Y={key:1,class:"text-text-secondary text-caption mb-2"},Z={class:"text-success font-weight-medium"},ee={class:"mt-3 d-flex justify-space-between align-center"},te={key:1},ae={key:0,class:"text-center mt-8"},oe={class:"text-text-secondary"},se={class:"mt-6 text-center text-text-tertiary text-caption"},le={key:0},ne=l(N({__name:"vpn-nodes",setup(l){const{t:N,locale:ne}=h(),ie=t();a({title:$((()=>`${N("vpnNodesPage.title")} - FreeGuard VPN`)),meta:[{name:"description",content:$((()=>N("vpnNodesPage.subtitle")))},{property:"og:title",content:$((()=>`${N("vpnNodesPage.title")} - FreeGuard VPN`))},{property:"og:description",content:$((()=>N("vpnNodesPage.subtitle")))}]});const re=s(),ce=n(),de=o(),ue=P(""),me=P(void 0),pe=P("country"),ve=P(null),ye=$((()=>[{title:N("vpnNodesPage.sortOptions.country"),value:"country"},{title:N("vpnNodesPage.sortOptions.city"),value:"city"},{title:N("vpnNodesPage.sortOptions.status"),value:"status"}]));k((async()=>{ve.value=new Date,await ce.fetchNodes(),de.trackRetention.vpnNodesPageView()}));const ge=$((()=>ce.getNodes||[])),fe=e=>(e.is_online?4:0)+(e.is_premium_only?2:0)+(e.ping?1/Math.max(e.ping,1):0),_e=$((()=>{const e=new Map,t=new Map;for(const a of ge.value){const o=a.country_code||a.location_code||"",s=a.country_name||"",l=a.city||"";if(!o||!s||!l)continue;const n=`${o.toUpperCase()}::${l}`,i=fe(a),r=t.get(n)??-1;(!e.has(n)||i>r)&&(e.set(n,{id:n,city:l,country_code:o,country_name:s,location_code:o,is_online:Boolean(a.is_online),ping:a.ping,is_premium_only:Boolean(a.is_premium_only)}),t.set(n,i))}return Array.from(e.values())})),be=$((()=>{const e=new Set(_e.value.map((e=>e.country_name)));return Array.from(e).map((e=>({label:N("nodes.countries."+e),value:e}))).sort(((e,t)=>e.label.localeCompare(t.label)))})),xe=$((()=>{let e=[..._e.value];if(ue.value){const t=ue.value.toLowerCase();e=e.filter((e=>{const a=N("nodes.cities."+e.city).toLowerCase(),o=N("nodes.countries."+e.country_name).toLowerCase();return e.country_name.toLowerCase().includes(t)||e.city.toLowerCase().includes(t)||a.includes(t)||o.includes(t)}))}return me.value&&(e=e.filter((e=>e.country_name===me.value))),e.sort(((e,t)=>{const a=N("nodes.countries."+e.country_name)||"",o=N("nodes.countries."+t.country_name)||"",s=N("nodes.cities."+e.city)||"",l=N("nodes.cities."+t.city)||"";if("status"===pe.value)return e.is_online===t.is_online?a.localeCompare(o):e.is_online?-1:1;if("city"===pe.value){const e=s.localeCompare(l);return 0!==e?e:a.localeCompare(o)}const n=a.localeCompare(o);return 0!==n?n:s.localeCompare(l)})),e}));return w(ue,((e,t)=>{e&&e!==t&&de.trackRetention.nodeSearch(e,xe.value.length)})),w(me,(e=>{e&&de.trackRetention.nodeFilter("country",e,xe.value.length)})),w(pe,(e=>{de.trackRetention.nodeFilter("sort_by",e,xe.value.length)})),(t,a)=>{const o=e;return M(),C("div",S,[L(o,{"page-type":"vpn-nodes",focus:"traditional"}),L(i,{color:"transparent"},{default:j((()=>[L(d,null,{default:j((()=>[L(u,null,{default:j((()=>[L(m,null,{default:j((()=>[V("h1",E,U(t.$t("vpnNodesPage.title")),1),V("div",q,U(t.$t("vpnNodesPage.subtitle")),1),L(p,{variant:"text","prepend-icon":"mdi-arrow-left",onClick:a[0]||(a[0]=()=>z(re).push(z(ie)("/")))},{default:j((()=>[O(U(t.$t("common.back")),1)])),_:1})])),_:1})])),_:1})])),_:1})])),_:1}),z(ce).isLoading?(M(),C("div",D,[L(r,{indeterminate:"",size:"64",color:"primary"},{default:j((()=>[V("span",I,U(t.$t("vpnNodesPage.loadingNodes")),1)])),_:1})])):z(ce).getError?(M(),C("div",Q,[L(c,{type:"error",title:t.$t("vpnNodesPage.errorLoadingNodes"),text:z(ce).getError,variant:"tonal",class:"mx-auto"},null,8,["title","text"])])):0===_e.value.length?(M(),C("div",T,[L(i,{class:"d-flex flex-column align-center justify-center py-8"},{default:j((()=>[L(v,{icon:"mdi-server-off",size:"64",class:"mb-4 text-text-secondary"}),V("span",W,U(t.$t("vpnNodesPage.noNodesAvailable")),1)])),_:1})])):(M(),C("div",H,[L(i,{class:"mb-6 pa-4 bg-secondary-bg rounded-lg"},{default:j((()=>[L(u,{dense:""},{default:j((()=>[L(m,{cols:"12",sm:"12",md:"4"},{default:j((()=>[L(y,{modelValue:ue.value,"onUpdate:modelValue":a[1]||(a[1]=e=>ue.value=e),label:t.$t("vpnNodesPage.searchPlaceholder"),variant:"outlined",density:"compact",clearable:"","prepend-inner-icon":"mdi-magnify","bg-color":"rgba(20, 23, 41, 1)",class:"rounded-lg"},null,8,["modelValue","label"])])),_:1}),L(m,{cols:"12",sm:"6",md:"4"},{default:j((()=>[L(g,{modelValue:me.value,"onUpdate:modelValue":a[2]||(a[2]=e=>me.value=e),items:be.value,"item-title":"label","item-value":"value",label:t.$t("vpnNodesPage.filterCountryLabel"),variant:"outlined",density:"compact",clearable:"","bg-color":"rgba(20, 23, 41, 1)",class:"rounded-lg"},null,8,["modelValue","items","label"])])),_:1}),L(m,{cols:"12",sm:"6",md:"4"},{default:j((()=>[L(g,{modelValue:pe.value,"onUpdate:modelValue":a[3]||(a[3]=e=>pe.value=e),items:ye.value,"item-title":"title","item-value":"value",label:t.$t("vpnNodesPage.sortByLabel"),variant:"outlined",density:"compact","bg-color":"rgba(20, 23, 41, 1)",class:"rounded-lg"},null,8,["modelValue","items","label"])])),_:1})])),_:1})])),_:1}),L(d,{fluid:"",class:"pa-0"},{default:j((()=>[L(u,null,{default:j((()=>[(M(!0),C(R,null,A(xe.value,(e=>(M(),B(m,{key:e.id,cols:"12",sm:"6",md:"4",lg:"3"},{default:j((()=>[L(f,{to:z(ie)(`/vpn/${e.country_code.toLowerCase()}`),title:`${t.$t("nodes.cities."+e.city)}, ${t.$t("nodes.countries."+e.country_name)}
1`,class:"node-card bg-secondary-bg",variant:"elevated",elevation:"3",hover:""},{prepend:j((()=>[V("img",{src:`https://flagcdn.com/${e.country_code.toLowerCase()}.svg`,alt:`${e.country_name} flag`,width:"24",height:"18",class:"mr-2 rounded-sm",style:{border:"1px solid rgba(255, 255, 255, 0.2)"}},null,8,J)])),append:j((()=>[L(x,{color:e.is_online?"success":"error",size:"small",class:"text-caption"},{default:j((()=>[O(U(e.is_online?t.$t("common.online"):t.$t("common.offline")),1)])),_:2},1032,["color"])])),default:j((()=>[L(_,null,{default:j((()=>[e.location_code?(M(),C("p",K,[O(U(t.$t("vpnNodesPage.nodeLocationCode"))+": ",1),V("span",X,U(e.location_code),1)])):F("",!0),e.ping?(M(),C("div",Y,[V("span",Z,U(e.ping)+"ms",1)])):F("",!0),V("div",ee,[e.is_premium_only?(M(),B(b,{key:0,location:"top",text:t.$t("common.premiumNodeTooltip")},{activator:j((({props:e})=>[L(v,G({ref_for:!0},e,{icon:"mdi-crown",color:"amber",size:"small"}),null,16)])),_:1},8,["text"])):(M(),C("span",te))])])),_:2},1024)])),_:2},1032,["to","title"])])),_:2},1024)))),128))])),_:1}),0===xe.value.length&&_e.value.length>0?(M(),C("div",ae,[L(i,{class:"d-flex flex-column align-center justify-center py-8"},{default:j((()=>[L(v,{icon:"mdi-filter-off",size:"64",class:"mb-4 text-text-secondary"}),V("span",oe,U(t.$t("vpnNodesPage.noNodesMatchFilter")),1)])),_:1})])):F("",!0)])),_:1})])),V("div",se,[ve.value?(M(),C("p",le,U(t.$t("vpnNodesPage.lastUpdated",{datetime:ve.value.toLocaleString(z(ne),{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})})),1)):F("",!0)])])}}}),[["__scopeId","data-v-a6c2bb64"]]);export{ne as default};

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.