1import{d as q,c as A,r as v,q as G,z as n,B as e,k as g,G as d,u as s,F as D,V as $,E as b,Q as p,W as m,D as T,H as U,C as r,A as j}from"./vendor-vue-Dzwqm9Y9.js";import{_ as y,t as L,m as W,n as Q,o as J}from"./index-BB-1BiLf.js";import{S as K}from"./Select-unWSiPwC.js";import{_ as H}from"./Toggle.vue_vue_type_script_setup_true_lang-CwidWQzY.js";import{u as O}from"./vendor-i18n-BuoWFzps.js";import"./vendor-misc-B-nM3tYW.js";const X={class:"flex min-h-screen items-center justify-center bg-gradient-to-br from-gray-50 to-gray-100 p-4 dark:from-dark-900 dark:to-dark-800"},Y={class:"w-full max-w-2xl"},Z={class:"mb-8 text-center"},ee={class:"mb-4 inline-flex h-16 w-16 items-center justify-center rounded-2xl bg-gradient-to-br from-primary-500 to-primary-600 shadow-lg"},te={class:"text-3xl font-bold text-gray-900 dark:text-white"},se={class:"mt-2 text-gray-500 dark:text-dark-400"},ae={class:"mb-8"},le={class:"flex items-center justify-center"},de={class:"flex items-center"},oe={key:1},re={class:"rounded-2xl bg-white p-8 shadow-xl dark:bg-dark-800"},ie={key:0,class:"space-y-6"},ne={class:"mb-6 text-center"},ue={class:"text-xl font-semibold text-gray-900 dark:text-white"},ce={class:"mt-1 text-sm text-gray-500 dark:text-dark-400"},pe={class:"grid grid-cols-1 gap-4 sm:grid-cols-2"},me={class:"input-label"},be={class:"input-label"},he={class:"flex items-center justify-between rounded-xl border border-gray-200 p-3 dark:border-dark-700"},_e={class:"text-sm font-medium text-gray-900 dark:text-white"},ve={class:"text-xs text-gray-500 dark:text-dark-400"},xe={class:"grid grid-cols-1 gap-4 sm:grid-cols-2"},ye={class:"input-label"},ge={class:"input-label"},ke=["placeholder"],fe={class:"grid grid-cols-1 gap-4 sm:grid-cols-2"},we={class:"input-label"},Ce={class:"input-label"},Ve=["disabled"],ze={key:0,class:"-ml-1 mr-2 h-4 w-4 animate-spin",fill:"none",viewBox:"0 0 24 24"},Ue={key:1,class:"space-y-6"},Pe={class:"mb-6 text-center"},Te={class:"text-xl font-semibold text-gray-900 dark:text-white"},Be={class:"mt-1 text-sm text-gray-500 dark:text-dark-400"},je={class:"grid grid-cols-1 gap-4 sm:grid-cols-2"},Me={class:"input-label"},Se={class:"input-label"},Ae={class:"grid grid-cols-1 gap-4 sm:grid-cols-2"},De={class:"input-label"},He=["placeholder"],Re={class:"input-label"},Ie=["placeholder"],Ne={class:"input-label"},Ee={class:"flex items-center justify-between rounded-xl border border-gray-200 p-3 dark:border-dark-700"},Fe={class:"text-sm font-medium text-gray-900 dark:text-white"},qe={class:"text-xs text-gray-500 dark:text-dark-400"},Ge=["disabled"],$e={key:0,class:"-ml-1 mr-2 h-4 w-4 animate-spin",fill:"none",viewBox:"0 0 24 24"},Le={key:2,class:"space-y-6"},We={class:"mb-6 text-center"},Qe={class:"text-xl font-semibold text-gray-900 dark:text-white"},Je={class:"mt-1 text-sm text-gray-500 dark:text-dark-400"},Ke={class:"input-label"},Oe={class:"input-label"},Xe=["placeholder"],Ye={class:"input-label"},Ze=["placeholder"],et={key:0,class:"input-error-text"},tt={key:3,class:"space-y-6"},st={class:"mb-6 text-center"},at={class:"text-xl font-semibold text-gray-900 dark:text-white"},lt={class:"mt-1 text-sm text-gray-500 dark:text-dark-400"},dt={class:"space-y-4"},ot={class:"rounded-xl bg-gray-50 p-4 dark:bg-dark-700"},rt={class:"mb-2 text-sm font-medium text-gray-500 dark:text-dark-400"},it={class:"text-gray-900 dark:text-white"},nt={class:"rounded-xl bg-gray-50 p-4 dark:bg-dark-700"},ut={class:"mb-2 text-sm font-medium text-gray-500 dark:text-dark-400"},ct={class:"text-gray-900 dark:text-white"},pt={class:"rounded-xl bg-gray-50 p-4 dark:bg-dark-700"},mt={class:"mb-2 text-sm font-medium text-gray-500 dark:text-dark-400"},bt={class:"text-gray-900 dark:text-white"},ht={key:4,class:"mt-6 rounded-xl border border-red-200 bg-red-50 p-4 dark:border-red-800/50 dark:bg-red-900/20"},_t={class:"flex items-start gap-3"},vt={class:"text-sm text-red-700 dark:text-red-400"},xt={key:5,class:"mt-6 rounded-xl border border-green-200 bg-green-50 p-4 dark:border-green-800/50 dark:bg-green-900/20"},yt={class:"flex items-start gap-3"},gt={key:0,class:"h-5 w-5 flex-shrink-0 animate-spin text-green-500",fill:"none",viewBox:"0 0 24 24"},kt={class:"text-sm font-medium text-green-700 dark:text-green-400"},ft={class:"mt-1 text-sm text-green-600 dark:text-green-500"},wt={class:"mt-8 flex justify-between"},Ct={key:1},Vt=["disabled"],zt=["disabled"],Ut={key:0,class:"-ml-1 mr-2 h-4 w-4 animate-spin",fill:"none",viewBox:"0 0 24 24"},Ht=q({__name:"SetupWizardView",setup(Pt){const{t}=O(),M=A(()=>[{id:"database",title:t("setup.database.title")},{id:"redis",title:t("setup.redis.title")},{id:"admin",title:t("setup.admin.title")},{id:"complete",title:t("setup.ready.title")}]),u=v(0),_=v(""),P=v(!1),k=v(!1),f=v(!1),w=v(!1),C=v(!1),V=v(!1),z=v(""),B=v(!1),o=G({database:{host:"localhost",port:5432,user:"postgres",password:"",dbname:"sub2api",sslmode:"disable"},redis:{host:"localhost",port:6379,username:"",password:"",db:0,enable_tls:!1},admin:{email:"",password:""},server:{host:"0.0.0.0",port:(()=>{const c=window.location.port;return c?parseInt(c,10):window.location.protocol==="https:"?443:80})(),mode:"release"}}),S=A(()=>{switch(u.value){case 0:return w.value;case 1:return C.value;case 2:return o.admin.email&&o.admin.password.length>=8&&o.admin.password===z.value;default:return!0}});async function R(){var c,a,l,i;k.value=!0,_.value="",w.value=!1;try{await L(o.database),w.value=!0}catch(x){const h=x;_.value=((a=(c=h.response)==null?void 0:c.data)==null?void 0:a.detail)||((i=(l=h.response)==null?void 0:l.data)==null?void 0:i.message)||h.message||"Connection failed"}finally{k.value=!1}}async function I(){var c,a,l,i;f.value=!0,_.value="",C.value=!1;try{await W(o.redis),C.value=!0}catch(x){const h=x;_.value=((a=(c=h.response)==null?void 0:c.data)==null?void 0:a.detail)||((i=(l=h.response)==null?void 0:l.data)==null?void 0:i.message)||h.message||"Connection failed"}finally{f.value=!1}}function N(){S.value&&(_.value="",u.value++)}async function E(){var c,a,l,i;V.value=!0,_.value="";try{await Q(o),P.value=!0,F()}catch(x){const h=x;_.value=((a=(c=h.response)==null?void 0:c.data)==null?void 0:a.detail)||((i=(l=h.response)==null?void 0:l.data)==null?void 0:i.message)||h.message||"Installation failed"}finally{V.value=!1}}async function F(){await new Promise(l=>setTimeout(l,3e3));for(let l=0;l<60;l++){try{const i=await fetch(J("/setup/status"),{method:"GET",cac
1he:"no-store"});if(i.ok){const x=await i.json();if(x.data&&!x.data.needs_setup){B.value=!0,setTimeout(()=>{window.location.href="/login"},1500);return}}}catch{}await new Promise(i=>setTimeout(i,1e3))}_.value=t("setup.status.timeout")}return(c,a)=>(r(),n("div",X,[e("div",Y,[e("div",Z,[e("div",ee,[g(y,{name:"cog",size:"xl",class:"text-white"})]),e("h1",te,d(s(t)("setup.title")),1),e("p",se,d(s(t)("setup.description")),1)]),e("div",ae,[e("div",le,[(r(!0),n(D,null,$(M.value,(l,i)=>(r(),n(D,{key:l.id},[e("div",de,[e("div",{class:j(["flex h-10 w-10 items-center justify-center rounded-full text-sm font-semibold transition-all",u.value>i?"bg-primary-500 text-white":u.value===i?"bg-primary-500 text-white ring-4 ring-primary-100 dark:ring-primary-900":"bg-gray-200 text-gray-500 dark:bg-dark-700 dark:text-dark-400"])},[u.value>i?(r(),T(y,{key:0,name:"check",size:"md","stroke-width":2})):(r(),n("span",oe,d(i+1),1))],2),e("span",{class:j(["ml-2 hidden text-sm font-medium sm:inline",u.value>=i?"text-gray-900 dark:text-white":"text-gray-400 dark:text-dark-500"])},d(l.title),3)]),i<M.value.length-1?(r(),n("div",{key:0,class:j(["mx-2 h-0.5 w-6 sm:mx-3 sm:w-12",u.value>i?"bg-primary-500":"bg-gray-200 dark:bg-dark-700"])},null,2)):b("",!0)],64))),128))])]),e("div",re,[u.value===0?(r(),n("div",ie,[e("div",ne,[e("h2",ue,d(s(t)("setup.database.title")),1),e("p",ce,d(s(t)("setup.database.description")),1)]),e("div",pe,[e("div",null,[e("label",me,d(s(t)("setup.database.host")),1),p(e("input",{"onUpdate:modelValue":a[0]||(a[0]=l=>o.database.host=l),type:"text",class:"input",placeholder:"localhost"},null,512),[[m,o.database.host]])]),e("div",null,[e("label",be,d(s(t)("setup.database.port")),1),p(e("input",{"onUpdate:modelValue":a[1]||(a[1]=l=>o.database.port=l),type:"number",class:"input",placeholder:"5432"},null,512),[[m,o.database.port,void 0,{number:!0}]])])]),e("div",he,[e("div",null,[e("p",_e,d(s(t)("setup.redis.enableTls")),1),e("p",ve,d(s(t)("setup.redis.enableTlsHint")),1)]),g(H,{modelValue:o.redis.enable_tls,"onUpdate:modelValue":a[2]||(a[2]=l=>o.redis.enable_tls=l)},null,8,["modelValue"])]),e("div",xe,[e("div",null,[e("label",ye,d(s(t)("setup.database.username")),1),p(e("input",{"onUpdate:modelValue":a[3]||(a[3]=l=>o.database.user=l),type:"text",class:"input",placeholder:"postgres"},null,512),[[m,o.database.user]])]),e("div",null,[e("label",ge,d(s(t)("setup.database.password")),1),p(e("input",{"onUpdate:modelValue":a[4]||(a[4]=l=>o.database.password=l),type:"password",class:"input",placeholder:s(t)("setup.database.passwordPlaceholder")},null,8,ke),[[m,o.database.password]])])]),e("div",fe,[e("div",null,[e("label",we,d(s(t)("setup.database.databaseName")),1),p(e("input",{"onUpdate:modelValue":a[5]||(a[5]=l=>o.database.dbname=l),type:"text",class:"input",placeholder:"sub2api"},null,512),[[m,o.database.dbname]])]),e("div",null,[e("label",Ce,d(s(t)("setup.database.sslMode")),1),g(K,{modelValue:o.database.sslmode,"onUpdate:modelValue":a[6]||(a[6]=l=>o.database.sslmode=l),options:[{value:"disable",label:s(t)("setup.database.ssl.disable")},{value:"require",label:s(t)("setup.database.ssl.require")},{value:"verify-ca",label:s(t)("setup.database.ssl.verifyCa")},{value:"verify-full",label:s(t)("setup.database.ssl.verifyFull")}]},null,8,["modelValue","options"])])]),e("button",{onClick:R,disabled:k.value,class:"btn btn-secondary w-full"},[k.value?(r(),n("svg",ze,[...a[17]||(a[17]=[e("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"},null,-1),e("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"},null,-1)])])):w.value?(r(),T(y,{key:1,name:"check",size:"md",class:"mr-2 text-green-500","stroke-width":2})):b("",!0),U(" "+d(k.value?s(t)("setup.status.testing"):w.value?s(t)("setup.status.success"):s(t)("setup.status.testConnection")),1)],8,Ve)])):b("",!0),u.value===1?(r(),n("div",Ue,[e("div",Pe,[e("h2",Te,d(s(t)("setup.redis.title")),1),e("p",Be,d(s(t)("setup.redis.description")),1)]),e("div",je,[e("div",null,[e("label",Me,d(s(t)("setup.redis.host")),1),p(e("input",{"onUpdate:modelValue":a[7]||(a[7]=l=>o.redis.host=l),type:"text",class:"input",placeholder:"localhost"},null,512),[[m,o.redis.host]])]),e("div",null,[e("label",Se,d(s(t)("setup.redis.port")),1),p(e("input",{"onUpdate:modelValue":a[8]||(a[8]=l=>o.redis.port=l),type:"number",class:"input",placeholder:"6379"},null,512),[[m,o.redis.port,void 0,{number:!0}]])])]),e("div",Ae,[e("div",null,[e("label",De,d(s(t)("setup.redis.username")),1),p(e("input",{"onUpdate:modelValue":a[9]||(a[9]=l=>o.redis.username=l),type:"text",class:"input",placeholder:s(t)("setup.redis.usernamePlaceholder")},null,8,He),[[m,o.redis.username]])]),e("div",null,[e("label",Re,d(s(t)("setup.redis.password")),1),p(e("input",{"onUpdate:modelValue":a[10]||(a[10]=l=>o.redis.password=l),type:"password",class:"input",placeholder:s(t)("setup.redis.passwordPlaceholder")},null,8,Ie),[[m,o.redis.password]])]),e("div",null,[e("label",Ne,d(s(t)("setup.redis.database")),1),p(e("input",{"onUpdate:modelValue":a[11]||(a[11]=l=>o.redis.db=l),type:"number",class:"input",placeholder:"0"},null,512),[[m,o.redis.db,void 0,{number:!0}]])])]),e("div",Ee,[e("div",null,[e("p",Fe,d(s(t)("setup.redis.enableTls")),1),e("p",qe,d(s(t)("setup.redis.enableTlsHint")),1)]),g(H,{modelValue:o.redis.enable_tls,"onUpdate:modelValue":a[12]||(a[12]=l=>o.redis.enable_tls=l)},null,8,["modelValue"])]),e("button",{onClick:I,disabled:f.value,class:"btn btn-secondary w-full"},[f.value?(r(),n("svg",$e,[...a[18]||(a[18]=[e("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"},null,-1),e("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"},null,-1)])])):C.value?(r(),T(y,{key:1,name:"check",size:"md",class:"mr-2 text-green-500","stroke-width":2})):b("",!0),U(" "+d(f.value?s(t)("setup.status.testing"):C.value?s(t)("setup.status.success"):s(t)("setup.status.testConnection")),1)],8,Ge)])):b("",!0),u.value===2?(r(),n("div",Le,[e("div",We,[e("h2",Qe,d(s(t)("setup.admin.title")),1),e("p",Je,d(s(t)("setup.admin.description")),1)]),e("div",null,[e("label",Ke,d(s(t)("setup.admin.email")),1),p(e("input",{"onUpdate:modelValue":a[13]||(a[13]=l=>o.admin.email=l),type:"email",class:"input",placeholder:"[email protected]"},null,512),[[m,o.admin.email]])]),e("div",null,[e("label",Oe,d(s(t)("setup.admin.password")),1),p(e("input",{"onUpdate:modelValue":a[14]||(a[14]=l=>o.admin.password=l),type:"password",class:"input",placeholder:s(t)("setup.admin.passwordPlaceholder")},null,8,Xe),[[m,o.admin.password]])]),e("div",null,[e("label",Ye,d(s(t)("setup.admin.confirmPassword")),1),p(e("input",{"onUpdate:modelValue":a[15]||(a[15]=l=>z.value=l),type:"password",class:"input",placeholder:s(t)("setup.admin.confirmPasswordPlaceholder")},null,8,Ze),[[m,z.value]]),z.value&&o.admin.password!==z.value?(r(),n("p",et,d(s(t)("setup.admin.passwordMismatch")),1)):b("",!0)])])):b("",!0),u.value===3?(r(
1),n("div",tt,[e("div",st,[e("h2",at,d(s(t)("setup.ready.title")),1),e("p",lt,d(s(t)("setup.ready.description")),1)]),e("div",dt,[e("div",ot,[e("h3",rt,d(s(t)("setup.ready.database")),1),e("p",it,d(o.database.user)+"@"+d(o.database.host)+":"+d(o.database.port)+"/"+d(o.database.dbname),1)]),e("div",nt,[e("h3",ut,d(s(t)("setup.ready.redis")),1),e("p",ct,d(o.redis.host)+":"+d(o.redis.port),1)]),e("div",pt,[e("h3",mt,d(s(t)("setup.ready.adminEmail")),1),e("p",bt,d(o.admin.email),1)])])])):b("",!0),_.value?(r(),n("div",ht,[e("div",_t,[g(y,{name:"exclamationCircle",size:"md",class:"flex-shrink-0 text-red-500"}),e("p",vt,d(_.value),1)])])):b("",!0),P.value?(r(),n("div",xt,[e("div",yt,[B.value?(r(),T(y,{key:1,name:"checkCircle",size:"md",class:"flex-shrink-0 text-green-500"})):(r(),n("svg",gt,[...a[19]||(a[19]=[e("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"},null,-1),e("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"},null,-1)])])),e("div",null,[e("p",kt,d(s(t)("setup.status.completed")),1),e("p",ft,d(B.value?s(t)("setup.status.redirecting"):s(t)("setup.status.restarting")),1)])])])):b("",!0),e("div",wt,[u.value>0&&!P.value?(r(),n("button",{key:0,onClick:a[16]||(a[16]=l=>u.value--),class:"btn btn-secondary"},[g(y,{name:"chevronLeft",size:"sm",class:"mr-2","stroke-width":2}),U(" "+d(s(t)("common.back")),1)])):(r(),n("div",Ct)),u.value<3?(r(),n("button",{key:2,onClick:N,disabled:!S.value,class:"btn btn-primary"},[U(d(s(t)("common.next"))+" ",1),g(y,{name:"chevronRight",size:"sm",class:"ml-2","stroke-width":2})],8,Vt)):P.value?b("",!0):(r(),n("button",{key:3,onClick:E,disabled:V.value,class:"btn btn-primary"},[V.value?(r(),n("svg",Ut,[...a[20]||(a[20]=[e("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"},null,-1),e("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"},null,-1)])])):b("",!0),U(" "+d(V.value?s(t)("setup.status.installing"):s(t)("setup.status.completeInstallation")),1)],8,zt))])])])]))}});export{Ht 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.