@vtechcom/hexcore 2.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +127 -0
- package/LICENSE +201 -0
- package/README.md +283 -0
- package/dist/app.module.js +55 -0
- package/dist/app.module.js.map +1 -0
- package/dist/auth.js +151 -0
- package/dist/auth.js.map +1 -0
- package/dist/chain/cost-models.js +81 -0
- package/dist/chain/cost-models.js.map +1 -0
- package/dist/chain/provider.js +269 -0
- package/dist/chain/provider.js.map +1 -0
- package/dist/chain/socket.js +48 -0
- package/dist/chain/socket.js.map +1 -0
- package/dist/cli/doctor.js +43 -0
- package/dist/cli/doctor.js.map +1 -0
- package/dist/cli/hexcore.js +435 -0
- package/dist/cli/hexcore.js.map +1 -0
- package/dist/common/auth.guard.js +66 -0
- package/dist/common/auth.guard.js.map +1 -0
- package/dist/common/http.js +171 -0
- package/dist/common/http.js.map +1 -0
- package/dist/common/zod-validation.pipe.js +47 -0
- package/dist/common/zod-validation.pipe.js.map +1 -0
- package/dist/config.js +354 -0
- package/dist/config.js.map +1 -0
- package/dist/config.module.js +35 -0
- package/dist/config.module.js.map +1 -0
- package/dist/controllers/cardano.controller.js +173 -0
- package/dist/controllers/cardano.controller.js.map +1 -0
- package/dist/controllers/heads.controller.js +225 -0
- package/dist/controllers/heads.controller.js.map +1 -0
- package/dist/controllers/setup.controller.js +127 -0
- package/dist/controllers/setup.controller.js.map +1 -0
- package/dist/controllers/system.controller.js +153 -0
- package/dist/controllers/system.controller.js.map +1 -0
- package/dist/db/database.module.js +73 -0
- package/dist/db/database.module.js.map +1 -0
- package/dist/db/index.js +135 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/repositories.js +220 -0
- package/dist/db/repositories.js.map +1 -0
- package/dist/docker/container-stats.js +134 -0
- package/dist/docker/container-stats.js.map +1 -0
- package/dist/docker/docker.service.js +335 -0
- package/dist/docker/docker.service.js.map +1 -0
- package/dist/hydra/argv.js +172 -0
- package/dist/hydra/argv.js.map +1 -0
- package/dist/hydra/blockfrost-keys.js +15 -0
- package/dist/hydra/blockfrost-keys.js.map +1 -0
- package/dist/hydra/boot-progress.js +165 -0
- package/dist/hydra/boot-progress.js.map +1 -0
- package/dist/hydra/capabilities.js +131 -0
- package/dist/hydra/capabilities.js.map +1 -0
- package/dist/hydra/head.service.js +1072 -0
- package/dist/hydra/head.service.js.map +1 -0
- package/dist/hydra/keys.js +301 -0
- package/dist/hydra/keys.js.map +1 -0
- package/dist/hydra/node-monitor.service.js +265 -0
- package/dist/hydra/node-monitor.service.js.map +1 -0
- package/dist/hydra/ws-client.js +177 -0
- package/dist/hydra/ws-client.js.map +1 -0
- package/dist/main.js +106 -0
- package/dist/main.js.map +1 -0
- package/dist/preflight.js +215 -0
- package/dist/preflight.js.map +1 -0
- package/dist/settings.js +243 -0
- package/dist/settings.js.map +1 -0
- package/dist/setup.service.js +257 -0
- package/dist/setup.service.js.map +1 -0
- package/dist/version.js +46 -0
- package/dist/version.js.map +1 -0
- package/node_modules/@hexcore/shared/dist/cjs/api.d.ts +730 -0
- package/node_modules/@hexcore/shared/dist/cjs/api.d.ts.map +1 -0
- package/node_modules/@hexcore/shared/dist/cjs/api.js +358 -0
- package/node_modules/@hexcore/shared/dist/cjs/api.js.map +1 -0
- package/node_modules/@hexcore/shared/dist/cjs/domain.d.ts +298 -0
- package/node_modules/@hexcore/shared/dist/cjs/domain.d.ts.map +1 -0
- package/node_modules/@hexcore/shared/dist/cjs/domain.js +49 -0
- package/node_modules/@hexcore/shared/dist/cjs/domain.js.map +1 -0
- package/node_modules/@hexcore/shared/dist/cjs/hydra-versions.d.ts +279 -0
- package/node_modules/@hexcore/shared/dist/cjs/hydra-versions.d.ts.map +1 -0
- package/node_modules/@hexcore/shared/dist/cjs/hydra-versions.js +453 -0
- package/node_modules/@hexcore/shared/dist/cjs/hydra-versions.js.map +1 -0
- package/node_modules/@hexcore/shared/dist/cjs/index.d.ts +7 -0
- package/node_modules/@hexcore/shared/dist/cjs/index.d.ts.map +1 -0
- package/node_modules/@hexcore/shared/dist/cjs/index.js +23 -0
- package/node_modules/@hexcore/shared/dist/cjs/index.js.map +1 -0
- package/node_modules/@hexcore/shared/dist/cjs/naming.d.ts +118 -0
- package/node_modules/@hexcore/shared/dist/cjs/naming.d.ts.map +1 -0
- package/node_modules/@hexcore/shared/dist/cjs/naming.js +103 -0
- package/node_modules/@hexcore/shared/dist/cjs/naming.js.map +1 -0
- package/node_modules/@hexcore/shared/dist/cjs/offline.d.ts +73 -0
- package/node_modules/@hexcore/shared/dist/cjs/offline.d.ts.map +1 -0
- package/node_modules/@hexcore/shared/dist/cjs/offline.js +80 -0
- package/node_modules/@hexcore/shared/dist/cjs/offline.js.map +1 -0
- package/node_modules/@hexcore/shared/dist/cjs/protocol-params.d.ts +79 -0
- package/node_modules/@hexcore/shared/dist/cjs/protocol-params.d.ts.map +1 -0
- package/node_modules/@hexcore/shared/dist/cjs/protocol-params.js +223 -0
- package/node_modules/@hexcore/shared/dist/cjs/protocol-params.js.map +1 -0
- package/node_modules/@hexcore/shared/dist/esm/api.js +355 -0
- package/node_modules/@hexcore/shared/dist/esm/api.js.map +1 -0
- package/node_modules/@hexcore/shared/dist/esm/domain.js +46 -0
- package/node_modules/@hexcore/shared/dist/esm/domain.js.map +1 -0
- package/node_modules/@hexcore/shared/dist/esm/hydra-versions.js +441 -0
- package/node_modules/@hexcore/shared/dist/esm/hydra-versions.js.map +1 -0
- package/node_modules/@hexcore/shared/dist/esm/index.js +7 -0
- package/node_modules/@hexcore/shared/dist/esm/index.js.map +1 -0
- package/node_modules/@hexcore/shared/dist/esm/naming.js +95 -0
- package/node_modules/@hexcore/shared/dist/esm/naming.js.map +1 -0
- package/node_modules/@hexcore/shared/dist/esm/offline.js +75 -0
- package/node_modules/@hexcore/shared/dist/esm/offline.js.map +1 -0
- package/node_modules/@hexcore/shared/dist/esm/package.json +3 -0
- package/node_modules/@hexcore/shared/dist/esm/protocol-params.js +217 -0
- package/node_modules/@hexcore/shared/dist/esm/protocol-params.js.map +1 -0
- package/node_modules/@hexcore/shared/package.json +15 -0
- package/package.json +67 -0
- package/web/200.html +23 -0
- package/web/404.html +23 -0
- package/web/_nuxt/2MxohCD-.js +1 -0
- package/web/_nuxt/4pFXjB_u.js +1 -0
- package/web/_nuxt/B-v0dEQX.js +1 -0
- package/web/_nuxt/B4yE3U25.js +1 -0
- package/web/_nuxt/BFh8Ai0L.js +1 -0
- package/web/_nuxt/BgPn4NJH.js +1 -0
- package/web/_nuxt/Bj1xviSh.js +1 -0
- package/web/_nuxt/BnotlrL7.js +1 -0
- package/web/_nuxt/C1YRg2ic.js +1 -0
- package/web/_nuxt/CGD7MYQH.js +1 -0
- package/web/_nuxt/CQcG7Bu4.js +1 -0
- package/web/_nuxt/CS3KqpH_.js +1 -0
- package/web/_nuxt/CT-yt694.js +1 -0
- package/web/_nuxt/CZK6xUH-.js +1 -0
- package/web/_nuxt/CcdyYRYz.js +1 -0
- package/web/_nuxt/CePNTU1S.js +1 -0
- package/web/_nuxt/CgPLsCeU.js +5 -0
- package/web/_nuxt/CkCrahXt.js +1 -0
- package/web/_nuxt/CnOqDT9k.js +3 -0
- package/web/_nuxt/CqsSss-D.js +1 -0
- package/web/_nuxt/Cr8dL64Q.js +1 -0
- package/web/_nuxt/D3CwzwU0.js +1 -0
- package/web/_nuxt/DDANn6-H.js +1 -0
- package/web/_nuxt/DDl9uKIA.js +1 -0
- package/web/_nuxt/DL9i0ayn.js +1 -0
- package/web/_nuxt/DLNoK9BC.js +1 -0
- package/web/_nuxt/DLztFeOQ.js +1 -0
- package/web/_nuxt/DPihKXdt.js +1 -0
- package/web/_nuxt/DXyr6Naa.js +1 -0
- package/web/_nuxt/DeDg5p0D.js +1 -0
- package/web/_nuxt/DgDlQiDU.js +1 -0
- package/web/_nuxt/DyPI7qJE.js +30 -0
- package/web/_nuxt/LGfPBi70.js +1 -0
- package/web/_nuxt/Onf26W-r.js +1 -0
- package/web/_nuxt/QZNQe_OX.js +1 -0
- package/web/_nuxt/Y8IJM-iz.js +1 -0
- package/web/_nuxt/YUGC0nt0.js +1 -0
- package/web/_nuxt/builds/latest.json +1 -0
- package/web/_nuxt/builds/meta/7e461629-93e2-4694-b237-6d5c6a85c97c.json +1 -0
- package/web/_nuxt/builds/meta/dev.json +1 -0
- package/web/_nuxt/entry.BxsAxZxf.css +1 -0
- package/web/_nuxt/error-404.XbtAw-qw.css +1 -0
- package/web/_nuxt/error-500.CNHVltWM.css +1 -0
- package/web/_nuxt/rS90pPZ_.js +1 -0
- package/web/_nuxt/rhEiP908.js +1 -0
- package/web/_nuxt/vSj9Ec0g.js +1 -0
- package/web/_nuxt/woNjBJMN.js +1 -0
- package/web/favicon.svg +28 -0
- package/web/heads/index.html +23 -0
- package/web/heads/new/index.html +23 -0
- package/web/index.html +23 -0
- package/web/login/index.html +23 -0
- package/web/logo.svg +56 -0
- package/web/settings/index.html +23 -0
- package/web/setup/index.html +23 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as s,o as i,c as a,a as e,t as o}from"./CgPLsCeU.js";import{u}from"./C1YRg2ic.js";const l={class:"antialiased bg-white dark:bg-black dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-black"},c={class:"max-w-520px text-center"},d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},status:{type:Number,default:500},statusText:{type:String,default:"Server error"},description:{type:String,default:"This page is temporarily unavailable."}},setup(t){const r=t;return u({title:`${r.status} - ${r.statusText} | ${r.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1{font-size:inherit;font-weight:inherit}h1,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(g,n)=>(i(),a("div",l,[n[0]||(n[0]=e("div",{class:"-bottom-1/2 fixed h-1/2 left-0 right-0 spotlight"},null,-1)),e("div",c,[e("h1",{class:"font-medium mb-8 sm:text-10xl text-8xl",textContent:o(t.status)},null,8,d),e("p",{class:"font-light leading-tight mb-16 px-8 sm:px-0 sm:text-4xl text-xl",textContent:o(t.description)},null,8,p)])]))}},b=s(f,[["__scopeId","data-v-64886700"]]);export{b as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as o}from"./DyPI7qJE.js";import{e as r,j as t,o as m}from"./CgPLsCeU.js";import"./CT-yt694.js";import"./CS3KqpH_.js";import"./rhEiP908.js";import"./vSj9Ec0g.js";import"./DPihKXdt.js";import"./woNjBJMN.js";import"./CnOqDT9k.js";import"./BnotlrL7.js";import"./CZK6xUH-.js";import"./rS90pPZ_.js";import"./CQcG7Bu4.js";import"./Bj1xviSh.js";import"./CePNTU1S.js";import"./CcdyYRYz.js";import"./BgPn4NJH.js";import"./CGD7MYQH.js";import"./CqsSss-D.js";import"./CkCrahXt.js";import"./LGfPBi70.js";import"./DLztFeOQ.js";import"./C1YRg2ic.js";const z=r({__name:"[nodeIndex]",setup(p){return(i,e)=>(m(),t(o))}});export{z as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as e}from"./CS3KqpH_.js";const t=e("TriangleAlertIcon",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);export{t as T};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as J}from"./vSj9Ec0g.js";import{_ as Q,a as W,b as Y,c as Z,L as ee}from"./rhEiP908.js";import{e as te,l as oe,f as se,r as y,m as ae,c as i,a as n,h as t,j as f,w as a,d as l,p as ne,o as d,b as o,k as c,g as le,i as re,F as de,q as ie,s as ce,v as ue,x as me,t as k,y as X,A as fe}from"./CgPLsCeU.js";import{c as j,_ as pe,a as _e,b as ke}from"./CS3KqpH_.js";import{_ as ve,a as we,b as ye,c as xe,d as he,e as ge}from"./woNjBJMN.js";import{_ as be}from"./CePNTU1S.js";import{_ as Se}from"./CT-yt694.js";import{_ as Ue}from"./DPihKXdt.js";import{_ as Pe}from"./CkCrahXt.js";import{_ as Ve}from"./BFh8Ai0L.js";import{u as Be}from"./C1YRg2ic.js";import{T as Ce}from"./DL9i0ayn.js";import"./CnOqDT9k.js";import"./BnotlrL7.js";import"./CZK6xUH-.js";const Xe=j("CircleCheckIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);const Ie=j("KeyRoundIcon",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]),$e={class:"w-full max-w-lg"},Ne={class:"flex items-start gap-3"},Ae={key:1,class:"space-y-2"},Te={class:"space-y-2"},je={class:"space-y-2"},ze={class:"space-y-2"},He=["value"],Le={class:"min-w-0"},Re={class:"flex flex-wrap items-center gap-2 text-sm font-medium"},Ee={class:"block text-xs text-muted-foreground"},Fe={class:"block text-xs text-muted-foreground/80"},qe={key:2,class:"space-y-2"},Me={key:0,class:"text-xs text-destructive"},De={key:1,class:"text-xs text-muted-foreground"},Ke={key:3,class:"space-y-2"},Oe={key:0,class:"text-xs text-destructive"},Ge={class:"grid gap-4 sm:grid-cols-2"},Je={class:"space-y-2"},Qe={class:"space-y-2"},We={key:4,class:"space-y-2"},Ye={key:0,class:"text-xs text-destructive"},Ze={key:1,class:"text-xs text-destructive"},et={key:5,class:"text-xs text-muted-foreground"},vt=te({__name:"setup",setup(tt){Be({title:"Set up Hexcore"});const x=oe(),I=se(),$=y(!0),h=y(!1),v=y(""),u=y({}),N=y(!1),p=y(typeof I.query.token=="string"?I.query.token:""),s=ne({network:"preprod",chainBackend:"offline",blockfrostProjectId:"",cardanoNodeSocket:"",adminUsername:"admin",adminPassword:"",confirmPassword:""}),z=[{value:"offline",label:"Offline",blurb:"The head simulates its own layer 1. Real multi-node Hydra, no chain, no waiting.",needs:"Nothing at all"},{value:"blockfrost",label:"Blockfrost",blurb:"Talks to the real chain over a hosted API. The usual choice for a testnet head.",needs:"A free API key from blockfrost.io"},{value:"cardano-node",label:"cardano-node",blurb:"Talks to a node you already run. Closest to the tip, and the fastest to sync.",needs:"A node socket on this machine"}];ae(async()=>{try{const _=await x.fetchStatus();s.network=_.defaults.network,s.adminUsername=_.defaults.adminUsername||"admin"}catch{v.value="Cannot reach the control-plane. Is it still running?"}finally{$.value=!1}});const g=X(()=>s.adminPassword.length>0&&s.adminPassword!==s.confirmPassword),b=X(()=>s.adminPassword.length>0&&s.adminPassword.length<8),H=X(()=>p.value.trim().length>0&&!g.value&&!b.value&&!h.value);async function L(){v.value="",u.value={},h.value=!0;try{await x.complete({setupToken:p.value.trim(),network:s.network,chainBackend:s.chainBackend,blockfrostProjectId:s.chainBackend==="blockfrost"?s.blockfrostProjectId.trim():"",cardanoNodeSocket:s.chainBackend==="cardano-node"?s.cardanoNodeSocket.trim():"",adminUsername:s.adminUsername.trim(),adminPassword:s.adminPassword||void 0}),N.value=!0}catch(_){_ instanceof fe?(v.value=_.message,u.value=_.fieldErrors):v.value="Setup failed. Is the control-plane still running?"}finally{h.value=!1}}return(_,e)=>{const S=J,U=W,P=Q,A=ve,R=be,V=_e,B=pe,E=Se,T=ke,m=Y,w=Z,F=xe,q=ye,C=ge,M=he,D=we,K=Ue,O=Pe;return d(),i("div",$e,[e[28]||(e[28]=n("div",{class:"mb-6 flex flex-col items-center text-center"},[n("img",{src:Ve,alt:"",class:"mb-3 size-14"}),n("h1",{class:"text-xl font-semibold tracking-tight"},"Set up Hexcore"),n("p",{class:"text-sm text-muted-foreground"},"Four answers, then you can boot a Hydra Head.")],-1)),t($)?(d(),f(P,{key:0},{default:a(()=>[o(U,{class:"space-y-3 pt-6"},{default:a(()=>[o(S,{class:"h-4 w-40"}),o(S,{class:"h-9 w-full"}),o(S,{class:"h-9 w-full"})]),_:1})]),_:1})):t(N)?(d(),f(P,{key:1},{default:a(()=>[o(U,{class:"space-y-4 pt-6"},{default:a(()=>[n("div",Ne,[o(t(Xe),{class:"mt-0.5 size-5 shrink-0 text-success"}),e[8]||(e[8]=n("div",null,[n("h2",{class:"font-semibold"},"Hexcore is configured"),n("p",{class:"text-sm text-muted-foreground"},"Settings are saved and already in effect — no restart needed.")],-1))]),t(x).generatedPassword?(d(),f(B,{key:0},{default:a(()=>[o(A,{class:"flex items-center gap-2"},{default:a(()=>[o(t(Ie),{class:"size-4"}),e[9]||(e[9]=l(" Save this password now ",-1))]),_:1}),o(V,null,{default:a(()=>[e[10]||(e[10]=n("p",{class:"mb-2"},"It is shown once and cannot be recovered — only reset.",-1)),o(R,{value:t(x).generatedPassword,label:"password"},null,8,["value"])]),_:1})]),_:1})):c("",!0),o(T,{class:"w-full","as-child":""},{default:a(()=>[o(E,{to:"/login"},{default:a(()=>[...e[11]||(e[11]=[l("Sign in",-1)])]),_:1})]),_:1})]),_:1})]),_:1})):(d(),f(P,{key:2},{default:a(()=>[o(U,{class:"pt-6"},{default:a(()=>[n("form",{class:"space-y-5",onSubmit:le(L,["prevent"])},[t(p).trim()?c("",!0):(d(),f(B,{key:0,variant:"destructive"},{default:a(()=>[o(A,{class:"flex items-center gap-2"},{default:a(()=>[o(t(Ce),{class:"size-4"}),e[12]||(e[12]=l(" Setup link required ",-1))]),_:1}),o(V,null,{default:a(()=>[...e[13]||(e[13]=[l(" Open the URL printed in the terminal where you started Hexcore — it carries a one-time token. Anyone who can reach this port could otherwise claim the admin account. ",-1)])]),_:1})]),_:1})),t(p).trim()?c("",!0):(d(),i("div",Ae,[o(m,{for:"token"},{default:a(()=>[...e[14]||(e[14]=[l("Setup token",-1)])]),_:1}),o(w,{id:"token",modelValue:t(p),"onUpdate:modelValue":e[0]||(e[0]=r=>re(p)?p.value=r:null),autocomplete:"off",spellcheck:"false",class:"font-mono"},null,8,["modelValue"])])),n("div",Te,[o(m,{for:"network"},{default:a(()=>[...e[15]||(e[15]=[l("Cardano network",-1)])]),_:1}),o(D,{id:"network",modelValue:t(s).network,"onUpdate:modelValue":e[1]||(e[1]=r=>t(s).network=r)},{default:a(()=>[o(q,{class:"w-full"},{default:a(()=>[o(F)]),_:1}),o(M,null,{default:a(()=>[o(C,{value:"preprod"},{default:a(()=>[...e[16]||(e[16]=[l("preprod — the usual testnet",-1)])]),_:1}),o(C,{value:"preview"},{default:a(()=>[...e[17]||(e[17]=[l("preview — the newer testnet",-1)])]),_:1}),o(C,{value:"mainnet"},{default:a(()=>[...e[18]||(e[18]=[l("mainnet — real funds",-1)])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),n("div",je,[o(m,null,{default:a(()=>[...e[19]||(e[19]=[l("How should heads reach the chain?",-1)])]),_:1}),n("div",ze,[(d(),i(de,null,ie(z,r=>n("label",{key:r.value,class:ce(["flex cursor-pointer items-start gap-3 rounded-md border p-3 transition-colors",t(s).chainBackend===r.value?"border-primary bg-muted/40":"hover:bg-muted/30"])},[ue(n("input",{"onUpdate:modelValue":e[2]||(e[2]=G=>t(s).chainBackend=G),type:"radio",value:r.value,class:"mt-1 size-4 accent-primary"},null,8,He),[[me,t(s).chainBackend]]),n("span",Le,[n("span",Re,[l(k(r.label)+" ",1),r.value==="offline"?(d(),f(K,{key:0,tone:"success",label:"no credential needed",plain:""})):c("",!0)]),n("span",Ee,k(r.blurb),1),n("span",Fe,"Needs: "+k(r.needs),1)])],2)),64))])]),t(s).chainBackend==="blockfrost"?(d(),i("div",qe,[o(m,{for:"blockfrost"},{default:a(()=>[...e[20]||(e[20]=[l("Blockfrost project id",-1)])]),_:1}),o(w,{id:"blockfrost",modelValue:t(s).blockfrostProjectId,"onUpdate:modelValue":e[3]||(e[3]=r=>t(s).blockfrostProjectId=r),placeholder:`${t(s).network}XXXXXXXXXXXXXXXXXXXX`,autocomplete:"off",spellcheck:"false",class:"font-mono","aria-invalid":!!t(u).blockfrostProjectId},null,8,["modelValue","placeholder","aria-invalid"]),t(u).blockfrostProjectId?(d(),i("p",Me,k(t(u).blockfrostProjectId),1)):(d(),i("p",De,[e[21]||(e[21]=l(" Free at blockfrost.io. It must be a ",-1)),n("b",null,k(t(s).network),1),e[22]||(e[22]=l(" key — a key for another network does not fail loudly, it produces a head that never sees its own transactions. ",-1))]))])):c("",!0),t(s).chainBackend==="cardano-node"?(d(),i("div",Ke,[o(m,{for:"socket"},{default:a(()=>[...e[23]||(e[23]=[l("cardano-node socket path",-1)])]),_:1}),o(w,{id:"socket",modelValue:t(s).cardanoNodeSocket,"onUpdate:modelValue":e[4]||(e[4]=r=>t(s).cardanoNodeSocket=r),placeholder:"/run/cardano/node.socket",autocomplete:"off",spellcheck:"false",class:"font-mono","aria-invalid":!!t(u).cardanoNodeSocket},null,8,["modelValue","aria-invalid"]),t(u).cardanoNodeSocket?(d(),i("p",Oe,k(t(u).cardanoNodeSocket),1)):c("",!0)])):c("",!0),o(O),n("div",Ge,[n("div",Je,[o(m,{for:"username"},{default:a(()=>[...e[24]||(e[24]=[l("Admin username",-1)])]),_:1}),o(w,{id:"username",modelValue:t(s).adminUsername,"onUpdate:modelValue":e[5]||(e[5]=r=>t(s).adminUsername=r),autocomplete:"username"},null,8,["modelValue"])]),n("div",Qe,[o(m,{for:"password"},{default:a(()=>[...e[25]||(e[25]=[l("Password",-1)])]),_:1}),o(w,{id:"password",modelValue:t(s).adminPassword,"onUpdate:modelValue":e[6]||(e[6]=r=>t(s).adminPassword=r),type:"password",autocomplete:"new-password",placeholder:"leave blank to generate","aria-invalid":t(b)},null,8,["modelValue","aria-invalid"])])]),t(s).adminPassword?(d(),i("div",We,[o(m,{for:"confirm"},{default:a(()=>[...e[26]||(e[26]=[l("Confirm password",-1)])]),_:1}),o(w,{id:"confirm",modelValue:t(s).confirmPassword,"onUpdate:modelValue":e[7]||(e[7]=r=>t(s).confirmPassword=r),type:"password",autocomplete:"new-password","aria-invalid":t(g)},null,8,["modelValue","aria-invalid"]),t(b)?(d(),i("p",Ye,"Use at least 8 characters.")):t(g)?(d(),i("p",Ze,"These do not match.")):c("",!0)])):(d(),i("p",et," Left blank, a strong password is generated and shown once on the next screen. ")),t(v)?(d(),f(B,{key:6,variant:"destructive"},{default:a(()=>[o(V,null,{default:a(()=>[l(k(t(v)),1)]),_:1})]),_:1})):c("",!0),o(T,{type:"submit",class:"w-full",disabled:!t(H)},{default:a(()=>[t(h)?(d(),f(t(ee),{key:0,class:"size-4 animate-spin"})):c("",!0),e[27]||(e[27]=l(" Finish setup ",-1))]),_:1},8,["disabled"])],32)]),_:1})]),_:1})),e[29]||(e[29]=n("p",{class:"mt-4 text-center text-xs text-muted-foreground"},[l(" Everything here can be changed later from Settings. Prefer a terminal? "),n("code",{class:"bg-muted text-foreground rounded px-1 py-0.5 font-mono"},"hexcore init"),l(" asks the same questions. ")],-1))])}}});export{vt as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as $e}from"./CS3KqpH_.js";const yt=$e("ArrowLeftIcon",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);var _;(function(r){r.assertEqual=a=>{};function e(a){}r.assertIs=e;function t(a){throw new Error}r.assertNever=t,r.arrayToEnum=a=>{const n={};for(const i of a)n[i]=i;return n},r.getValidEnumValues=a=>{const n=r.objectKeys(a).filter(o=>typeof a[a[o]]!="number"),i={};for(const o of n)i[o]=a[o];return r.objectValues(i)},r.objectValues=a=>r.objectKeys(a).map(function(n){return a[n]}),r.objectKeys=typeof Object.keys=="function"?a=>Object.keys(a):a=>{const n=[];for(const i in a)Object.prototype.hasOwnProperty.call(a,i)&&n.push(i);return n},r.find=(a,n)=>{for(const i of a)if(n(i))return i},r.isInteger=typeof Number.isInteger=="function"?a=>Number.isInteger(a):a=>typeof a=="number"&&Number.isFinite(a)&&Math.floor(a)===a;function s(a,n=" | "){return a.map(i=>typeof i=="string"?`'${i}'`:i).join(n)}r.joinValues=s,r.jsonStringifyReplacer=(a,n)=>typeof n=="bigint"?n.toString():n})(_||(_={}));var he;(function(r){r.mergeShapes=(e,t)=>({...e,...t})})(he||(he={}));const u=_.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),S=r=>{switch(typeof r){case"undefined":return u.undefined;case"string":return u.string;case"number":return Number.isNaN(r)?u.nan:u.number;case"boolean":return u.boolean;case"function":return u.function;case"bigint":return u.bigint;case"symbol":return u.symbol;case"object":return Array.isArray(r)?u.array:r===null?u.null:r.then&&typeof r.then=="function"&&r.catch&&typeof r.catch=="function"?u.promise:typeof Map<"u"&&r instanceof Map?u.map:typeof Set<"u"&&r instanceof Set?u.set:typeof Date<"u"&&r instanceof Date?u.date:u.object;default:return u.unknown}},d=_.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);class O extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=s=>{this.issues=[...this.issues,s]},this.addIssues=(s=[])=>{this.issues=[...this.issues,...s]};const t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name="ZodError",this.issues=e}format(e){const t=e||function(n){return n.message},s={_errors:[]},a=n=>{for(const i of n.issues)if(i.code==="invalid_union")i.unionErrors.map(a);else if(i.code==="invalid_return_type")a(i.returnTypeError);else if(i.code==="invalid_arguments")a(i.argumentsError);else if(i.path.length===0)s._errors.push(t(i));else{let o=s,f=0;for(;f<i.path.length;){const h=i.path[f];f===i.path.length-1?(o[h]=o[h]||{_errors:[]},o[h]._errors.push(t(i))):o[h]=o[h]||{_errors:[]},o=o[h],f++}}};return a(this),s}static assert(e){if(!(e instanceof O))throw new Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,_.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=t=>t.message){const t={},s=[];for(const a of this.issues)if(a.path.length>0){const n=a.path[0];t[n]=t[n]||[],t[n].push(e(a))}else s.push(e(a));return{formErrors:s,fieldErrors:t}}get formErrors(){return this.flatten()}}O.create=r=>new O(r);const ee=(r,e)=>{let t;switch(r.code){case d.invalid_type:r.received===u.undefined?t="Required":t=`Expected ${r.expected}, received ${r.received}`;break;case d.invalid_literal:t=`Invalid literal value, expected ${JSON.stringify(r.expected,_.jsonStringifyReplacer)}`;break;case d.unrecognized_keys:t=`Unrecognized key(s) in object: ${_.joinValues(r.keys,", ")}`;break;case d.invalid_union:t="Invalid input";break;case d.invalid_union_discriminator:t=`Invalid discriminator value. Expected ${_.joinValues(r.options)}`;break;case d.invalid_enum_value:t=`Invalid enum value. Expected ${_.joinValues(r.options)}, received '${r.received}'`;break;case d.invalid_arguments:t="Invalid function arguments";break;case d.invalid_return_type:t="Invalid function return type";break;case d.invalid_date:t="Invalid date";break;case d.invalid_string:typeof r.validation=="object"?"includes"in r.validation?(t=`Invalid input: must include "${r.validation.includes}"`,typeof r.validation.position=="number"&&(t=`${t} at one or more positions greater than or equal to ${r.validation.position}`)):"startsWith"in r.validation?t=`Invalid input: must start with "${r.validation.startsWith}"`:"endsWith"in r.validation?t=`Invalid input: must end with "${r.validation.endsWith}"`:_.assertNever(r.validation):r.validation!=="regex"?t=`Invalid ${r.validation}`:t="Invalid";break;case d.too_small:r.type==="array"?t=`Array must contain ${r.exact?"exactly":r.inclusive?"at least":"more than"} ${r.minimum} element(s)`:r.type==="string"?t=`String must contain ${r.exact?"exactly":r.inclusive?"at least":"over"} ${r.minimum} character(s)`:r.type==="number"?t=`Number must be ${r.exact?"exactly equal to ":r.inclusive?"greater than or equal to ":"greater than "}${r.minimum}`:r.type==="bigint"?t=`Number must be ${r.exact?"exactly equal to ":r.inclusive?"greater than or equal to ":"greater than "}${r.minimum}`:r.type==="date"?t=`Date must be ${r.exact?"exactly equal to ":r.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(r.minimum))}`:t="Invalid input";break;case d.too_big:r.type==="array"?t=`Array must contain ${r.exact?"exactly":r.inclusive?"at most":"less than"} ${r.maximum} element(s)`:r.type==="string"?t=`String must contain ${r.exact?"exactly":r.inclusive?"at most":"under"} ${r.maximum} character(s)`:r.type==="number"?t=`Number must be ${r.exact?"exactly":r.inclusive?"less than or equal to":"less than"} ${r.maximum}`:r.type==="bigint"?t=`BigInt must be ${r.exact?"exactly":r.inclusive?"less than or equal to":"less than"} ${r.maximum}`:r.type==="date"?t=`Date must be ${r.exact?"exactly":r.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(r.maximum))}`:t="Invalid input";break;case d.custom:t="Invalid input";break;case d.invalid_intersection_types:t="Intersection results could not be merged";break;case d.not_multiple_of:t=`Number must be a multiple of ${r.multipleOf}`;break;case d.not_finite:t="Number must be finite";break;default:t=e.defaultError,_.assertNever(r)}return{message:t}};let Le=ee;function Ve(){return Le}const De=r=>{const{data:e,path:t,errorMaps:s,issueData:a}=r,n=[...t,...a.path||[]],i={...a,path:n};if(a.message!==void 0)return{...a,path:n,message:a.message};let o="";const f=s.filter(h=>!!h).slice().reverse();for(const h of f)o=h(i,{data:e,defaultError:o}).message;return{...a,path:n,message:o}};function c(r,e){const t=Ve(),s=De({issueData:e,data:r.data,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,t,t===ee?void 0:ee].filter(a=>!!a)});r.common.issues.push(s)}class b{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,t){const s=[];for(const a of t){if(a.status==="aborted")return p;a.status==="dirty"&&e.dirty(),s.push(a.value)}return{status:e.value,value:s}}static async mergeObjectAsync(e,t){const s=[];for(const a of t){const n=await a.key,i=await a.value;s.push({key:n,value:i})}return b.mergeObjectSync(e,s)}static mergeObjectSync(e,t){const s={};for(const a of t){const{key:n,value:i}=a;if(n.status==="aborted"||i.status==="aborted")return p;n.status==="dirty"&&e.dirty(),i.status==="dirty"&&e.dirty(),n.value!=="__proto__"&&(typeof i.value<"u"||a.alwaysSet)&&(s[n.value]=i.value)}return{status:e.value,value:s}}}const p=Object.freeze({status:"aborted"}),z=r=>({status:"dirty",value:r}),w=r=>({status:"valid",value:r}),me=r=>r.status==="aborted",pe=r=>r.status==="dirty",$=r=>r.status==="valid",W=r=>typeof Promise<"u"&&r instanceof Promise;var l;(function(r){r.errToObj=e=>typeof e=="string"?{message:e}:e||{},r.toString=e=>typeof e=="string"?e:e?.message})(l||(l={}));class I{constructor(e,t,s,a){this._cachedPath=[],this.parent=e,this.data=t,this._path=s,this._key=a}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const ge=(r,e)=>{if($(e))return{success:!0,data:e.value};if(!r.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const t=new O(r.common.issues);return this._error=t,this._error}}};function g(r){if(!r)return{};const{errorMap:e,invalid_type_error:t,required_error:s,description:a}=r;if(e&&(t||s))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:a}:{errorMap:(i,o)=>{const{message:f}=r;return i.code==="invalid_enum_value"?{message:f??o.defaultError}:typeof o.data>"u"?{message:f??s??o.defaultError}:i.code!=="invalid_type"?{message:o.defaultError}:{message:f??t??o.defaultError}},description:a}}class y{get description(){return this._def.description}_getType(e){return S(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:S(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new b,ctx:{common:e.parent.common,data:e.data,parsedType:S(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){const t=this._parse(e);if(W(t))throw new Error("Synchronous parse encountered promise.");return t}_parseAsync(e){const t=this._parse(e);return Promise.resolve(t)}parse(e,t){const s=this.safeParse(e,t);if(s.success)return s.data;throw s.error}safeParse(e,t){const s={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:S(e)},a=this._parseSync({data:e,path:s.path,parent:s});return ge(s,a)}"~validate"(e){const t={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:S(e)};if(!this["~standard"].async)try{const s=this._parseSync({data:e,path:[],parent:t});return $(s)?{value:s.value}:{issues:t.common.issues}}catch(s){s?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(s=>$(s)?{value:s.value}:{issues:t.common.issues})}async parseAsync(e,t){const s=await this.safeParseAsync(e,t);if(s.success)return s.data;throw s.error}async safeParseAsync(e,t){const s={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:S(e)},a=this._parse({data:e,path:s.path,parent:s}),n=await(W(a)?a:Promise.resolve(a));return ge(s,n)}refine(e,t){const s=a=>typeof t=="string"||typeof t>"u"?{message:t}:typeof t=="function"?t(a):t;return this._refinement((a,n)=>{const i=e(a),o=()=>n.addIssue({code:d.custom,...s(a)});return typeof Promise<"u"&&i instanceof Promise?i.then(f=>f?!0:(o(),!1)):i?!0:(o(),!1)})}refinement(e,t){return this._refinement((s,a)=>e(s)?!0:(a.addIssue(typeof t=="function"?t(s,a):t),!1))}_refinement(e){return new D({schema:this,typeName:m.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:t=>this["~validate"](t)}}optional(){return A.create(this,this._def)}nullable(){return M.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return C.create(this)}promise(){return X.create(this,this._def)}or(e){return G.create([this,e],this._def)}and(e){return H.create(this,e,this._def)}transform(e){return new D({...g(this._def),schema:this,typeName:m.ZodEffects,effect:{type:"transform",transform:e}})}default(e){const t=typeof e=="function"?e:()=>e;return new ae({...g(this._def),innerType:this,defaultValue:t,typeName:m.ZodDefault})}brand(){return new dt({typeName:m.ZodBranded,type:this,...g(this._def)})}catch(e){const t=typeof e=="function"?e:()=>e;return new ne({...g(this._def),innerType:this,catchValue:t,typeName:m.ZodCatch})}describe(e){const t=this.constructor;return new t({...this._def,description:e})}pipe(e){return le.create(this,e)}readonly(){return ie.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const Me=/^c[^\s-]{8,}$/i,Be=/^[0-9a-z]+$/,ze=/^[0-9A-HJKMNP-TV-Z]{26}$/i,Ue=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,Fe=/^[a-z0-9_-]{21}$/i,We=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,qe=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,Ge=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,He="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";let Y;const Ke=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Xe=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,Je=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,Qe=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Ye=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,et=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,Ae="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",tt=new RegExp(`^${Ae}$`);function Re(r){let e="[0-5]\\d";r.precision?e=`${e}\\.\\d{${r.precision}}`:r.precision==null&&(e=`${e}(\\.\\d+)?`);const t=r.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${t}`}function rt(r){return new RegExp(`^${Re(r)}$`)}function st(r){let e=`${Ae}T${Re(r)}`;const t=[];return t.push(r.local?"Z?":"Z"),r.offset&&t.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${t.join("|")})`,new RegExp(`^${e}$`)}function at(r,e){return!!((e==="v4"||!e)&&Ke.test(r)||(e==="v6"||!e)&&Je.test(r))}function nt(r,e){if(!We.test(r))return!1;try{const[t]=r.split(".");if(!t)return!1;const s=t.replace(/-/g,"+").replace(/_/g,"/").padEnd(t.length+(4-t.length%4)%4,"="),a=JSON.parse(atob(s));return!(typeof a!="object"||a===null||"typ"in a&&a?.typ!=="JWT"||!a.alg||e&&a.alg!==e)}catch{return!1}}function it(r,e){return!!((e==="v4"||!e)&&Xe.test(r)||(e==="v6"||!e)&&Qe.test(r))}class N extends y{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==u.string){const n=this._getOrReturnCtx(e);return c(n,{code:d.invalid_type,expected:u.string,received:n.parsedType}),p}const s=new b;let a;for(const n of this._def.checks)if(n.kind==="min")e.data.length<n.value&&(a=this._getOrReturnCtx(e,a),c(a,{code:d.too_small,minimum:n.value,type:"string",inclusive:!0,exact:!1,message:n.message}),s.dirty());else if(n.kind==="max")e.data.length>n.value&&(a=this._getOrReturnCtx(e,a),c(a,{code:d.too_big,maximum:n.value,type:"string",inclusive:!0,exact:!1,message:n.message}),s.dirty());else if(n.kind==="length"){const i=e.data.length>n.value,o=e.data.length<n.value;(i||o)&&(a=this._getOrReturnCtx(e,a),i?c(a,{code:d.too_big,maximum:n.value,type:"string",inclusive:!0,exact:!0,message:n.message}):o&&c(a,{code:d.too_small,minimum:n.value,type:"string",inclusive:!0,exact:!0,message:n.message}),s.dirty())}else if(n.kind==="email")Ge.test(e.data)||(a=this._getOrReturnCtx(e,a),c(a,{validation:"email",code:d.invalid_string,message:n.message}),s.dirty());else if(n.kind==="emoji")Y||(Y=new RegExp(He,"u")),Y.test(e.data)||(a=this._getOrReturnCtx(e,a),c(a,{validation:"emoji",code:d.invalid_string,message:n.message}),s.dirty());else if(n.kind==="uuid")Ue.test(e.data)||(a=this._getOrReturnCtx(e,a),c(a,{validation:"uuid",code:d.invalid_string,message:n.message}),s.dirty());else if(n.kind==="nanoid")Fe.test(e.data)||(a=this._getOrReturnCtx(e,a),c(a,{validation:"nanoid",code:d.invalid_string,message:n.message}),s.dirty());else if(n.kind==="cuid")Me.test(e.data)||(a=this._getOrReturnCtx(e,a),c(a,{validation:"cuid",code:d.invalid_string,message:n.message}),s.dirty());else if(n.kind==="cuid2")Be.test(e.data)||(a=this._getOrReturnCtx(e,a),c(a,{validation:"cuid2",code:d.invalid_string,message:n.message}),s.dirty());else if(n.kind==="ulid")ze.test(e.data)||(a=this._getOrReturnCtx(e,a),c(a,{validation:"ulid",code:d.invalid_string,message:n.message}),s.dirty());else if(n.kind==="url")try{new URL(e.data)}catch{a=this._getOrReturnCtx(e,a),c(a,{validation:"url",code:d.invalid_string,message:n.message}),s.dirty()}else n.kind==="regex"?(n.regex.lastIndex=0,n.regex.test(e.data)||(a=this._getOrReturnCtx(e,a),c(a,{validation:"regex",code:d.invalid_string,message:n.message}),s.dirty())):n.kind==="trim"?e.data=e.data.trim():n.kind==="includes"?e.data.includes(n.value,n.position)||(a=this._getOrReturnCtx(e,a),c(a,{code:d.invalid_string,validation:{includes:n.value,position:n.position},message:n.message}),s.dirty()):n.kind==="toLowerCase"?e.data=e.data.toLowerCase():n.kind==="toUpperCase"?e.data=e.data.toUpperCase():n.kind==="startsWith"?e.data.startsWith(n.value)||(a=this._getOrReturnCtx(e,a),c(a,{code:d.invalid_string,validation:{startsWith:n.value},message:n.message}),s.dirty()):n.kind==="endsWith"?e.data.endsWith(n.value)||(a=this._getOrReturnCtx(e,a),c(a,{code:d.invalid_string,validation:{endsWith:n.value},message:n.message}),s.dirty()):n.kind==="datetime"?st(n).test(e.data)||(a=this._getOrReturnCtx(e,a),c(a,{code:d.invalid_string,validation:"datetime",message:n.message}),s.dirty()):n.kind==="date"?tt.test(e.data)||(a=this._getOrReturnCtx(e,a),c(a,{code:d.invalid_string,validation:"date",message:n.message}),s.dirty()):n.kind==="time"?rt(n).test(e.data)||(a=this._getOrReturnCtx(e,a),c(a,{code:d.invalid_string,validation:"time",message:n.message}),s.dirty()):n.kind==="duration"?qe.test(e.data)||(a=this._getOrReturnCtx(e,a),c(a,{validation:"duration",code:d.invalid_string,message:n.message}),s.dirty()):n.kind==="ip"?at(e.data,n.version)||(a=this._getOrReturnCtx(e,a),c(a,{validation:"ip",code:d.invalid_string,message:n.message}),s.dirty()):n.kind==="jwt"?nt(e.data,n.alg)||(a=this._getOrReturnCtx(e,a),c(a,{validation:"jwt",code:d.invalid_string,message:n.message}),s.dirty()):n.kind==="cidr"?it(e.data,n.version)||(a=this._getOrReturnCtx(e,a),c(a,{validation:"cidr",code:d.invalid_string,message:n.message}),s.dirty()):n.kind==="base64"?Ye.test(e.data)||(a=this._getOrReturnCtx(e,a),c(a,{validation:"base64",code:d.invalid_string,message:n.message}),s.dirty()):n.kind==="base64url"?et.test(e.data)||(a=this._getOrReturnCtx(e,a),c(a,{validation:"base64url",code:d.invalid_string,message:n.message}),s.dirty()):_.assertNever(n);return{status:s.value,value:e.data}}_regex(e,t,s){return this.refinement(a=>e.test(a),{validation:t,code:d.invalid_string,...l.errToObj(s)})}_addCheck(e){return new N({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...l.errToObj(e)})}url(e){return this._addCheck({kind:"url",...l.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...l.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...l.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...l.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...l.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...l.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...l.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...l.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...l.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...l.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...l.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...l.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...l.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...l.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...l.errToObj(e)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...l.errToObj(t)})}includes(e,t){return this._addCheck({kind:"includes",value:e,position:t?.position,...l.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...l.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...l.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...l.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...l.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...l.errToObj(t)})}nonempty(e){return this.min(1,l.errToObj(e))}trim(){return new N({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new N({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new N({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(const t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(const t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}}N.create=r=>new N({checks:[],typeName:m.ZodString,coerce:r?.coerce??!1,...g(r)});function ot(r,e){const t=(r.toString().split(".")[1]||"").length,s=(e.toString().split(".")[1]||"").length,a=t>s?t:s,n=Number.parseInt(r.toFixed(a).replace(".","")),i=Number.parseInt(e.toFixed(a).replace(".",""));return n%i/10**a}class L extends y{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==u.number){const n=this._getOrReturnCtx(e);return c(n,{code:d.invalid_type,expected:u.number,received:n.parsedType}),p}let s;const a=new b;for(const n of this._def.checks)n.kind==="int"?_.isInteger(e.data)||(s=this._getOrReturnCtx(e,s),c(s,{code:d.invalid_type,expected:"integer",received:"float",message:n.message}),a.dirty()):n.kind==="min"?(n.inclusive?e.data<n.value:e.data<=n.value)&&(s=this._getOrReturnCtx(e,s),c(s,{code:d.too_small,minimum:n.value,type:"number",inclusive:n.inclusive,exact:!1,message:n.message}),a.dirty()):n.kind==="max"?(n.inclusive?e.data>n.value:e.data>=n.value)&&(s=this._getOrReturnCtx(e,s),c(s,{code:d.too_big,maximum:n.value,type:"number",inclusive:n.inclusive,exact:!1,message:n.message}),a.dirty()):n.kind==="multipleOf"?ot(e.data,n.value)!==0&&(s=this._getOrReturnCtx(e,s),c(s,{code:d.not_multiple_of,multipleOf:n.value,message:n.message}),a.dirty()):n.kind==="finite"?Number.isFinite(e.data)||(s=this._getOrReturnCtx(e,s),c(s,{code:d.not_finite,message:n.message}),a.dirty()):_.assertNever(n);return{status:a.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,l.toString(t))}gt(e,t){return this.setLimit("min",e,!1,l.toString(t))}lte(e,t){return this.setLimit("max",e,!0,l.toString(t))}lt(e,t){return this.setLimit("max",e,!1,l.toString(t))}setLimit(e,t,s,a){return new L({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:s,message:l.toString(a)}]})}_addCheck(e){return new L({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:l.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:l.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:l.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:l.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:l.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:l.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:l.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:l.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:l.toString(e)})}get minValue(){let e=null;for(const t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(const t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find(e=>e.kind==="int"||e.kind==="multipleOf"&&_.isInteger(e.value))}get isFinite(){let e=null,t=null;for(const s of this._def.checks){if(s.kind==="finite"||s.kind==="int"||s.kind==="multipleOf")return!0;s.kind==="min"?(t===null||s.value>t)&&(t=s.value):s.kind==="max"&&(e===null||s.value<e)&&(e=s.value)}return Number.isFinite(t)&&Number.isFinite(e)}}L.create=r=>new L({checks:[],typeName:m.ZodNumber,coerce:r?.coerce||!1,...g(r)});class U extends y{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==u.bigint)return this._getInvalidInput(e);let s;const a=new b;for(const n of this._def.checks)n.kind==="min"?(n.inclusive?e.data<n.value:e.data<=n.value)&&(s=this._getOrReturnCtx(e,s),c(s,{code:d.too_small,type:"bigint",minimum:n.value,inclusive:n.inclusive,message:n.message}),a.dirty()):n.kind==="max"?(n.inclusive?e.data>n.value:e.data>=n.value)&&(s=this._getOrReturnCtx(e,s),c(s,{code:d.too_big,type:"bigint",maximum:n.value,inclusive:n.inclusive,message:n.message}),a.dirty()):n.kind==="multipleOf"?e.data%n.value!==BigInt(0)&&(s=this._getOrReturnCtx(e,s),c(s,{code:d.not_multiple_of,multipleOf:n.value,message:n.message}),a.dirty()):_.assertNever(n);return{status:a.value,value:e.data}}_getInvalidInput(e){const t=this._getOrReturnCtx(e);return c(t,{code:d.invalid_type,expected:u.bigint,received:t.parsedType}),p}gte(e,t){return this.setLimit("min",e,!0,l.toString(t))}gt(e,t){return this.setLimit("min",e,!1,l.toString(t))}lte(e,t){return this.setLimit("max",e,!0,l.toString(t))}lt(e,t){return this.setLimit("max",e,!1,l.toString(t))}setLimit(e,t,s,a){return new U({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:s,message:l.toString(a)}]})}_addCheck(e){return new U({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:l.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:l.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:l.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:l.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:l.toString(t)})}get minValue(){let e=null;for(const t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(const t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e}}U.create=r=>new U({checks:[],typeName:m.ZodBigInt,coerce:r?.coerce??!1,...g(r)});class te extends y{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==u.boolean){const s=this._getOrReturnCtx(e);return c(s,{code:d.invalid_type,expected:u.boolean,received:s.parsedType}),p}return w(e.data)}}te.create=r=>new te({typeName:m.ZodBoolean,coerce:r?.coerce||!1,...g(r)});class q extends y{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==u.date){const n=this._getOrReturnCtx(e);return c(n,{code:d.invalid_type,expected:u.date,received:n.parsedType}),p}if(Number.isNaN(e.data.getTime())){const n=this._getOrReturnCtx(e);return c(n,{code:d.invalid_date}),p}const s=new b;let a;for(const n of this._def.checks)n.kind==="min"?e.data.getTime()<n.value&&(a=this._getOrReturnCtx(e,a),c(a,{code:d.too_small,message:n.message,inclusive:!0,exact:!1,minimum:n.value,type:"date"}),s.dirty()):n.kind==="max"?e.data.getTime()>n.value&&(a=this._getOrReturnCtx(e,a),c(a,{code:d.too_big,message:n.message,inclusive:!0,exact:!1,maximum:n.value,type:"date"}),s.dirty()):_.assertNever(n);return{status:s.value,value:new Date(e.data.getTime())}}_addCheck(e){return new q({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:l.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:l.toString(t)})}get minDate(){let e=null;for(const t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(const t of this._def.checks)t.kind==="max"&&(e===null||t.value<e)&&(e=t.value);return e!=null?new Date(e):null}}q.create=r=>new q({checks:[],coerce:r?.coerce||!1,typeName:m.ZodDate,...g(r)});class ye extends y{_parse(e){if(this._getType(e)!==u.symbol){const s=this._getOrReturnCtx(e);return c(s,{code:d.invalid_type,expected:u.symbol,received:s.parsedType}),p}return w(e.data)}}ye.create=r=>new ye({typeName:m.ZodSymbol,...g(r)});class _e extends y{_parse(e){if(this._getType(e)!==u.undefined){const s=this._getOrReturnCtx(e);return c(s,{code:d.invalid_type,expected:u.undefined,received:s.parsedType}),p}return w(e.data)}}_e.create=r=>new _e({typeName:m.ZodUndefined,...g(r)});class ve extends y{_parse(e){if(this._getType(e)!==u.null){const s=this._getOrReturnCtx(e);return c(s,{code:d.invalid_type,expected:u.null,received:s.parsedType}),p}return w(e.data)}}ve.create=r=>new ve({typeName:m.ZodNull,...g(r)});class ke extends y{constructor(){super(...arguments),this._any=!0}_parse(e){return w(e.data)}}ke.create=r=>new ke({typeName:m.ZodAny,...g(r)});class re extends y{constructor(){super(...arguments),this._unknown=!0}_parse(e){return w(e.data)}}re.create=r=>new re({typeName:m.ZodUnknown,...g(r)});class R extends y{_parse(e){const t=this._getOrReturnCtx(e);return c(t,{code:d.invalid_type,expected:u.never,received:t.parsedType}),p}}R.create=r=>new R({typeName:m.ZodNever,...g(r)});class xe extends y{_parse(e){if(this._getType(e)!==u.undefined){const s=this._getOrReturnCtx(e);return c(s,{code:d.invalid_type,expected:u.void,received:s.parsedType}),p}return w(e.data)}}xe.create=r=>new xe({typeName:m.ZodVoid,...g(r)});class C extends y{_parse(e){const{ctx:t,status:s}=this._processInputParams(e),a=this._def;if(t.parsedType!==u.array)return c(t,{code:d.invalid_type,expected:u.array,received:t.parsedType}),p;if(a.exactLength!==null){const i=t.data.length>a.exactLength.value,o=t.data.length<a.exactLength.value;(i||o)&&(c(t,{code:i?d.too_big:d.too_small,minimum:o?a.exactLength.value:void 0,maximum:i?a.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:a.exactLength.message}),s.dirty())}if(a.minLength!==null&&t.data.length<a.minLength.value&&(c(t,{code:d.too_small,minimum:a.minLength.value,type:"array",inclusive:!0,exact:!1,message:a.minLength.message}),s.dirty()),a.maxLength!==null&&t.data.length>a.maxLength.value&&(c(t,{code:d.too_big,maximum:a.maxLength.value,type:"array",inclusive:!0,exact:!1,message:a.maxLength.message}),s.dirty()),t.common.async)return Promise.all([...t.data].map((i,o)=>a.type._parseAsync(new I(t,i,t.path,o)))).then(i=>b.mergeArray(s,i));const n=[...t.data].map((i,o)=>a.type._parseSync(new I(t,i,t.path,o)));return b.mergeArray(s,n)}get element(){return this._def.type}min(e,t){return new C({...this._def,minLength:{value:e,message:l.toString(t)}})}max(e,t){return new C({...this._def,maxLength:{value:e,message:l.toString(t)}})}length(e,t){return new C({...this._def,exactLength:{value:e,message:l.toString(t)}})}nonempty(e){return this.min(1,e)}}C.create=(r,e)=>new C({type:r,minLength:null,maxLength:null,exactLength:null,typeName:m.ZodArray,...g(e)});function P(r){if(r instanceof x){const e={};for(const t in r.shape){const s=r.shape[t];e[t]=A.create(P(s))}return new x({...r._def,shape:()=>e})}else return r instanceof C?new C({...r._def,type:P(r.element)}):r instanceof A?A.create(P(r.unwrap())):r instanceof M?M.create(P(r.unwrap())):r instanceof Z?Z.create(r.items.map(e=>P(e))):r}class x extends y{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const e=this._def.shape(),t=_.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==u.object){const h=this._getOrReturnCtx(e);return c(h,{code:d.invalid_type,expected:u.object,received:h.parsedType}),p}const{status:s,ctx:a}=this._processInputParams(e),{shape:n,keys:i}=this._getCached(),o=[];if(!(this._def.catchall instanceof R&&this._def.unknownKeys==="strip"))for(const h in a.data)i.includes(h)||o.push(h);const f=[];for(const h of i){const v=n[h],B=a.data[h];f.push({key:{status:"valid",value:h},value:v._parse(new I(a,B,a.path,h)),alwaysSet:h in a.data})}if(this._def.catchall instanceof R){const h=this._def.unknownKeys;if(h==="passthrough")for(const v of o)f.push({key:{status:"valid",value:v},value:{status:"valid",value:a.data[v]}});else if(h==="strict")o.length>0&&(c(a,{code:d.unrecognized_keys,keys:o}),s.dirty());else if(h!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const h=this._def.catchall;for(const v of o){const B=a.data[v];f.push({key:{status:"valid",value:v},value:h._parse(new I(a,B,a.path,v)),alwaysSet:v in a.data})}}return a.common.async?Promise.resolve().then(async()=>{const h=[];for(const v of f){const B=await v.key,Pe=await v.value;h.push({key:B,value:Pe,alwaysSet:v.alwaysSet})}return h}).then(h=>b.mergeObjectSync(s,h)):b.mergeObjectSync(s,f)}get shape(){return this._def.shape()}strict(e){return l.errToObj,new x({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(t,s)=>{const a=this._def.errorMap?.(t,s).message??s.defaultError;return t.code==="unrecognized_keys"?{message:l.errToObj(e).message??a}:{message:a}}}:{}})}strip(){return new x({...this._def,unknownKeys:"strip"})}passthrough(){return new x({...this._def,unknownKeys:"passthrough"})}extend(e){return new x({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new x({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:m.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new x({...this._def,catchall:e})}pick(e){const t={};for(const s of _.objectKeys(e))e[s]&&this.shape[s]&&(t[s]=this.shape[s]);return new x({...this._def,shape:()=>t})}omit(e){const t={};for(const s of _.objectKeys(this.shape))e[s]||(t[s]=this.shape[s]);return new x({...this._def,shape:()=>t})}deepPartial(){return P(this)}partial(e){const t={};for(const s of _.objectKeys(this.shape)){const a=this.shape[s];e&&!e[s]?t[s]=a:t[s]=a.optional()}return new x({...this._def,shape:()=>t})}required(e){const t={};for(const s of _.objectKeys(this.shape))if(e&&!e[s])t[s]=this.shape[s];else{let n=this.shape[s];for(;n instanceof A;)n=n._def.innerType;t[s]=n}return new x({...this._def,shape:()=>t})}keyof(){return je(_.objectKeys(this.shape))}}x.create=(r,e)=>new x({shape:()=>r,unknownKeys:"strip",catchall:R.create(),typeName:m.ZodObject,...g(e)});x.strictCreate=(r,e)=>new x({shape:()=>r,unknownKeys:"strict",catchall:R.create(),typeName:m.ZodObject,...g(e)});x.lazycreate=(r,e)=>new x({shape:r,unknownKeys:"strip",catchall:R.create(),typeName:m.ZodObject,...g(e)});class G extends y{_parse(e){const{ctx:t}=this._processInputParams(e),s=this._def.options;function a(n){for(const o of n)if(o.result.status==="valid")return o.result;for(const o of n)if(o.result.status==="dirty")return t.common.issues.push(...o.ctx.common.issues),o.result;const i=n.map(o=>new O(o.ctx.common.issues));return c(t,{code:d.invalid_union,unionErrors:i}),p}if(t.common.async)return Promise.all(s.map(async n=>{const i={...t,common:{...t.common,issues:[]},parent:null};return{result:await n._parseAsync({data:t.data,path:t.path,parent:i}),ctx:i}})).then(a);{let n;const i=[];for(const f of s){const h={...t,common:{...t.common,issues:[]},parent:null},v=f._parseSync({data:t.data,path:t.path,parent:h});if(v.status==="valid")return v;v.status==="dirty"&&!n&&(n={result:v,ctx:h}),h.common.issues.length&&i.push(h.common.issues)}if(n)return t.common.issues.push(...n.ctx.common.issues),n.result;const o=i.map(f=>new O(f));return c(t,{code:d.invalid_union,unionErrors:o}),p}}get options(){return this._def.options}}G.create=(r,e)=>new G({options:r,typeName:m.ZodUnion,...g(e)});function se(r,e){const t=S(r),s=S(e);if(r===e)return{valid:!0,data:r};if(t===u.object&&s===u.object){const a=_.objectKeys(e),n=_.objectKeys(r).filter(o=>a.indexOf(o)!==-1),i={...r,...e};for(const o of n){const f=se(r[o],e[o]);if(!f.valid)return{valid:!1};i[o]=f.data}return{valid:!0,data:i}}else if(t===u.array&&s===u.array){if(r.length!==e.length)return{valid:!1};const a=[];for(let n=0;n<r.length;n++){const i=r[n],o=e[n],f=se(i,o);if(!f.valid)return{valid:!1};a.push(f.data)}return{valid:!0,data:a}}else return t===u.date&&s===u.date&&+r==+e?{valid:!0,data:r}:{valid:!1}}class H extends y{_parse(e){const{status:t,ctx:s}=this._processInputParams(e),a=(n,i)=>{if(me(n)||me(i))return p;const o=se(n.value,i.value);return o.valid?((pe(n)||pe(i))&&t.dirty(),{status:t.value,value:o.data}):(c(s,{code:d.invalid_intersection_types}),p)};return s.common.async?Promise.all([this._def.left._parseAsync({data:s.data,path:s.path,parent:s}),this._def.right._parseAsync({data:s.data,path:s.path,parent:s})]).then(([n,i])=>a(n,i)):a(this._def.left._parseSync({data:s.data,path:s.path,parent:s}),this._def.right._parseSync({data:s.data,path:s.path,parent:s}))}}H.create=(r,e,t)=>new H({left:r,right:e,typeName:m.ZodIntersection,...g(t)});class Z extends y{_parse(e){const{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==u.array)return c(s,{code:d.invalid_type,expected:u.array,received:s.parsedType}),p;if(s.data.length<this._def.items.length)return c(s,{code:d.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),p;!this._def.rest&&s.data.length>this._def.items.length&&(c(s,{code:d.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),t.dirty());const n=[...s.data].map((i,o)=>{const f=this._def.items[o]||this._def.rest;return f?f._parse(new I(s,i,s.path,o)):null}).filter(i=>!!i);return s.common.async?Promise.all(n).then(i=>b.mergeArray(t,i)):b.mergeArray(t,n)}get items(){return this._def.items}rest(e){return new Z({...this._def,rest:e})}}Z.create=(r,e)=>{if(!Array.isArray(r))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new Z({items:r,typeName:m.ZodTuple,rest:null,...g(e)})};class K extends y{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==u.object)return c(s,{code:d.invalid_type,expected:u.object,received:s.parsedType}),p;const a=[],n=this._def.keyType,i=this._def.valueType;for(const o in s.data)a.push({key:n._parse(new I(s,o,s.path,o)),value:i._parse(new I(s,s.data[o],s.path,o)),alwaysSet:o in s.data});return s.common.async?b.mergeObjectAsync(t,a):b.mergeObjectSync(t,a)}get element(){return this._def.valueType}static create(e,t,s){return t instanceof y?new K({keyType:e,valueType:t,typeName:m.ZodRecord,...g(s)}):new K({keyType:N.create(),valueType:e,typeName:m.ZodRecord,...g(t)})}}class be extends y{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==u.map)return c(s,{code:d.invalid_type,expected:u.map,received:s.parsedType}),p;const a=this._def.keyType,n=this._def.valueType,i=[...s.data.entries()].map(([o,f],h)=>({key:a._parse(new I(s,o,s.path,[h,"key"])),value:n._parse(new I(s,f,s.path,[h,"value"]))}));if(s.common.async){const o=new Map;return Promise.resolve().then(async()=>{for(const f of i){const h=await f.key,v=await f.value;if(h.status==="aborted"||v.status==="aborted")return p;(h.status==="dirty"||v.status==="dirty")&&t.dirty(),o.set(h.value,v.value)}return{status:t.value,value:o}})}else{const o=new Map;for(const f of i){const h=f.key,v=f.value;if(h.status==="aborted"||v.status==="aborted")return p;(h.status==="dirty"||v.status==="dirty")&&t.dirty(),o.set(h.value,v.value)}return{status:t.value,value:o}}}}be.create=(r,e,t)=>new be({valueType:e,keyType:r,typeName:m.ZodMap,...g(t)});class F extends y{_parse(e){const{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==u.set)return c(s,{code:d.invalid_type,expected:u.set,received:s.parsedType}),p;const a=this._def;a.minSize!==null&&s.data.size<a.minSize.value&&(c(s,{code:d.too_small,minimum:a.minSize.value,type:"set",inclusive:!0,exact:!1,message:a.minSize.message}),t.dirty()),a.maxSize!==null&&s.data.size>a.maxSize.value&&(c(s,{code:d.too_big,maximum:a.maxSize.value,type:"set",inclusive:!0,exact:!1,message:a.maxSize.message}),t.dirty());const n=this._def.valueType;function i(f){const h=new Set;for(const v of f){if(v.status==="aborted")return p;v.status==="dirty"&&t.dirty(),h.add(v.value)}return{status:t.value,value:h}}const o=[...s.data.values()].map((f,h)=>n._parse(new I(s,f,s.path,h)));return s.common.async?Promise.all(o).then(f=>i(f)):i(o)}min(e,t){return new F({...this._def,minSize:{value:e,message:l.toString(t)}})}max(e,t){return new F({...this._def,maxSize:{value:e,message:l.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}}F.create=(r,e)=>new F({valueType:r,minSize:null,maxSize:null,typeName:m.ZodSet,...g(e)});class we extends y{get schema(){return this._def.getter()}_parse(e){const{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}}we.create=(r,e)=>new we({getter:r,typeName:m.ZodLazy,...g(e)});class Te extends y{_parse(e){if(e.data!==this._def.value){const t=this._getOrReturnCtx(e);return c(t,{received:t.data,code:d.invalid_literal,expected:this._def.value}),p}return{status:"valid",value:e.data}}get value(){return this._def.value}}Te.create=(r,e)=>new Te({value:r,typeName:m.ZodLiteral,...g(e)});function je(r,e){return new V({values:r,typeName:m.ZodEnum,...g(e)})}class V extends y{_parse(e){if(typeof e.data!="string"){const t=this._getOrReturnCtx(e),s=this._def.values;return c(t,{expected:_.joinValues(s),received:t.parsedType,code:d.invalid_type}),p}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){const t=this._getOrReturnCtx(e),s=this._def.values;return c(t,{received:t.data,code:d.invalid_enum_value,options:s}),p}return w(e.data)}get options(){return this._def.values}get enum(){const e={};for(const t of this._def.values)e[t]=t;return e}get Values(){const e={};for(const t of this._def.values)e[t]=t;return e}get Enum(){const e={};for(const t of this._def.values)e[t]=t;return e}extract(e,t=this._def){return V.create(e,{...this._def,...t})}exclude(e,t=this._def){return V.create(this.options.filter(s=>!e.includes(s)),{...this._def,...t})}}V.create=je;class Ce extends y{_parse(e){const t=_.getValidEnumValues(this._def.values),s=this._getOrReturnCtx(e);if(s.parsedType!==u.string&&s.parsedType!==u.number){const a=_.objectValues(t);return c(s,{expected:_.joinValues(a),received:s.parsedType,code:d.invalid_type}),p}if(this._cache||(this._cache=new Set(_.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){const a=_.objectValues(t);return c(s,{received:s.data,code:d.invalid_enum_value,options:a}),p}return w(e.data)}get enum(){return this._def.values}}Ce.create=(r,e)=>new Ce({values:r,typeName:m.ZodNativeEnum,...g(e)});class X extends y{unwrap(){return this._def.type}_parse(e){const{ctx:t}=this._processInputParams(e);if(t.parsedType!==u.promise&&t.common.async===!1)return c(t,{code:d.invalid_type,expected:u.promise,received:t.parsedType}),p;const s=t.parsedType===u.promise?t.data:Promise.resolve(t.data);return w(s.then(a=>this._def.type.parseAsync(a,{path:t.path,errorMap:t.common.contextualErrorMap})))}}X.create=(r,e)=>new X({type:r,typeName:m.ZodPromise,...g(e)});class D extends y{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===m.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){const{status:t,ctx:s}=this._processInputParams(e),a=this._def.effect||null,n={addIssue:i=>{c(s,i),i.fatal?t.abort():t.dirty()},get path(){return s.path}};if(n.addIssue=n.addIssue.bind(n),a.type==="preprocess"){const i=a.transform(s.data,n);if(s.common.async)return Promise.resolve(i).then(async o=>{if(t.value==="aborted")return p;const f=await this._def.schema._parseAsync({data:o,path:s.path,parent:s});return f.status==="aborted"?p:f.status==="dirty"||t.value==="dirty"?z(f.value):f});{if(t.value==="aborted")return p;const o=this._def.schema._parseSync({data:i,path:s.path,parent:s});return o.status==="aborted"?p:o.status==="dirty"||t.value==="dirty"?z(o.value):o}}if(a.type==="refinement"){const i=o=>{const f=a.refinement(o,n);if(s.common.async)return Promise.resolve(f);if(f instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return o};if(s.common.async===!1){const o=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});return o.status==="aborted"?p:(o.status==="dirty"&&t.dirty(),i(o.value),{status:t.value,value:o.value})}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(o=>o.status==="aborted"?p:(o.status==="dirty"&&t.dirty(),i(o.value).then(()=>({status:t.value,value:o.value}))))}if(a.type==="transform")if(s.common.async===!1){const i=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});if(!$(i))return p;const o=a.transform(i.value,n);if(o instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:t.value,value:o}}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(i=>$(i)?Promise.resolve(a.transform(i.value,n)).then(o=>({status:t.value,value:o})):p);_.assertNever(a)}}D.create=(r,e,t)=>new D({schema:r,typeName:m.ZodEffects,effect:e,...g(t)});D.createWithPreprocess=(r,e,t)=>new D({schema:e,effect:{type:"preprocess",transform:r},typeName:m.ZodEffects,...g(t)});class A extends y{_parse(e){return this._getType(e)===u.undefined?w(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}A.create=(r,e)=>new A({innerType:r,typeName:m.ZodOptional,...g(e)});class M extends y{_parse(e){return this._getType(e)===u.null?w(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}M.create=(r,e)=>new M({innerType:r,typeName:m.ZodNullable,...g(e)});class ae extends y{_parse(e){const{ctx:t}=this._processInputParams(e);let s=t.data;return t.parsedType===u.undefined&&(s=this._def.defaultValue()),this._def.innerType._parse({data:s,path:t.path,parent:t})}removeDefault(){return this._def.innerType}}ae.create=(r,e)=>new ae({innerType:r,typeName:m.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...g(e)});class ne extends y{_parse(e){const{ctx:t}=this._processInputParams(e),s={...t,common:{...t.common,issues:[]}},a=this._def.innerType._parse({data:s.data,path:s.path,parent:{...s}});return W(a)?a.then(n=>({status:"valid",value:n.status==="valid"?n.value:this._def.catchValue({get error(){return new O(s.common.issues)},input:s.data})})):{status:"valid",value:a.status==="valid"?a.value:this._def.catchValue({get error(){return new O(s.common.issues)},input:s.data})}}removeCatch(){return this._def.innerType}}ne.create=(r,e)=>new ne({innerType:r,typeName:m.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...g(e)});class Ie extends y{_parse(e){if(this._getType(e)!==u.nan){const s=this._getOrReturnCtx(e);return c(s,{code:d.invalid_type,expected:u.nan,received:s.parsedType}),p}return{status:"valid",value:e.data}}}Ie.create=r=>new Ie({typeName:m.ZodNaN,...g(r)});class dt extends y{_parse(e){const{ctx:t}=this._processInputParams(e),s=t.data;return this._def.type._parse({data:s,path:t.path,parent:t})}unwrap(){return this._def.type}}class le extends y{_parse(e){const{status:t,ctx:s}=this._processInputParams(e);if(s.common.async)return(async()=>{const n=await this._def.in._parseAsync({data:s.data,path:s.path,parent:s});return n.status==="aborted"?p:n.status==="dirty"?(t.dirty(),z(n.value)):this._def.out._parseAsync({data:n.value,path:s.path,parent:s})})();{const a=this._def.in._parseSync({data:s.data,path:s.path,parent:s});return a.status==="aborted"?p:a.status==="dirty"?(t.dirty(),{status:"dirty",value:a.value}):this._def.out._parseSync({data:a.value,path:s.path,parent:s})}}static create(e,t){return new le({in:e,out:t,typeName:m.ZodPipeline})}}class ie extends y{_parse(e){const t=this._def.innerType._parse(e),s=a=>($(a)&&(a.value=Object.freeze(a.value)),a);return W(t)?t.then(a=>s(a)):s(t)}unwrap(){return this._def.innerType}}ie.create=(r,e)=>new ie({innerType:r,typeName:m.ZodReadonly,...g(e)});var m;(function(r){r.ZodString="ZodString",r.ZodNumber="ZodNumber",r.ZodNaN="ZodNaN",r.ZodBigInt="ZodBigInt",r.ZodBoolean="ZodBoolean",r.ZodDate="ZodDate",r.ZodSymbol="ZodSymbol",r.ZodUndefined="ZodUndefined",r.ZodNull="ZodNull",r.ZodAny="ZodAny",r.ZodUnknown="ZodUnknown",r.ZodNever="ZodNever",r.ZodVoid="ZodVoid",r.ZodArray="ZodArray",r.ZodObject="ZodObject",r.ZodUnion="ZodUnion",r.ZodDiscriminatedUnion="ZodDiscriminatedUnion",r.ZodIntersection="ZodIntersection",r.ZodTuple="ZodTuple",r.ZodRecord="ZodRecord",r.ZodMap="ZodMap",r.ZodSet="ZodSet",r.ZodFunction="ZodFunction",r.ZodLazy="ZodLazy",r.ZodLiteral="ZodLiteral",r.ZodEnum="ZodEnum",r.ZodEffects="ZodEffects",r.ZodNativeEnum="ZodNativeEnum",r.ZodOptional="ZodOptional",r.ZodNullable="ZodNullable",r.ZodDefault="ZodDefault",r.ZodCatch="ZodCatch",r.ZodPromise="ZodPromise",r.ZodBranded="ZodBranded",r.ZodPipeline="ZodPipeline",r.ZodReadonly="ZodReadonly"})(m||(m={}));const k=N.create,j=L.create,fe=te.create,oe=re.create;R.create;const Ne=C.create,T=x.create;G.create;H.create;Z.create;const de=K.create,E=V.create;X.create;A.create;M.create;E(["CONFIGURED","STARTING","RUNNING","STOPPED","FAILED"]);E(["IDLE","INITIALIZING","OPEN","CLOSED","FANOUT_POSSIBLE","FANNING_OUT","FINAL","UNKNOWN"]);E(["CREATED","STARTING","RUNNING","STOPPED","FAILED"]);const Q=E(["preprod","preview","mainnet"]),Ze=E(["blockfrost","cardano-node","offline"]),Oe=5,ct=2e10,ut=/^[0-9a-fA-F]{64}$/,J=k().trim().regex(/^(preprod|preview|mainnet)[A-Za-z0-9]+$/,"A Blockfrost project id starts with the network name, e.g. preprodXXXXXXXX"),lt=T({headSeed:k().trim().regex(ut,"The head seed is 64 hex characters (32 bytes)").optional(),initialUtxo:de(k(),oe()).optional(),seedLovelace:j().int().min(0).max(1e15).default(ct),ledgerGenesis:de(k(),oe()).optional()}),ft=T({quiet:fe().default(!1),maxSizeMb:j().int().min(1).max(1024).default(10),maxFiles:j().int().min(1).max(50).default(3)}),ce=T({name:k().min(1,"name is required").max(48).regex(/^[a-zA-Z0-9][a-zA-Z0-9 _-]*$/,"name may only contain letters, digits, space, dash and underscore"),description:k().max(280).optional(),nodeCount:j().int().min(1).max(10).default(1),network:Q.optional(),chainBackend:Ze.optional(),contestationPeriod:j().int().min(1).max(86400).default(120),depositPeriod:j().int().min(1).max(86400).default(720),persistenceRotateAfter:j().int().min(100).default(15e3),protocolParameters:de(k(),oe()).optional(),offline:lt.optional(),logging:ft.optional(),blockfrostProjectId:J.optional(),nodeBlockfrostProjectIds:Ne(J).min(1).max(10).optional(),nodeCardanoKeys:Ne(T({signingKey:k().trim().min(1),verificationKey:k().trim().min(1).optional()}).nullable()).min(1).max(10).optional(),hydraNodeImage:k().trim().min(1).max(200).regex(/^\S+$/,"hydraNodeImage must be a Docker image reference").optional()}),_t=ce.superRefine((r,e)=>{if(r.chainBackend==="offline"&&r.nodeCount>Oe&&e.addIssue({code:d.custom,path:["nodeCount"],message:`An offline head runs at most ${Oe} nodes — they all share this machine, with no layer 1 to spread the load over.`}),r.chainBackend==="offline"&&(r.blockfrostProjectId||r.nodeBlockfrostProjectIds)&&e.addIssue({code:d.custom,path:["blockfrostProjectId"],message:"An offline head never contacts Blockfrost — remove the project id."}),r.offline&&r.chainBackend&&r.chainBackend!=="offline"&&e.addIssue({code:d.custom,path:["offline"],message:`Offline settings only apply to an offline head, not a ${r.chainBackend} one.`}),r.nodeBlockfrostProjectIds&&r.nodeBlockfrostProjectIds.length!==r.nodeCount&&e.addIssue({code:d.custom,path:["nodeBlockfrostProjectIds"],message:`Expected one Blockfrost key per node (${r.nodeCount}), got ${r.nodeBlockfrostProjectIds.length}`}),r.nodeCardanoKeys&&r.nodeCardanoKeys.length!==r.nodeCount&&e.addIssue({code:d.custom,path:["nodeCardanoKeys"],message:`Expected one entry per node (${r.nodeCount}), got ${r.nodeCardanoKeys.length}. Use null for nodes that should get a generated key.`}),!r.network)return;const t=s=>!s.startsWith(r.network);r.blockfrostProjectId&&t(r.blockfrostProjectId)&&e.addIssue({code:d.custom,path:["blockfrostProjectId"],message:`This key is not for ${r.network} — a ${r.network} project id starts with "${r.network}"`}),r.nodeBlockfrostProjectIds?.forEach((s,a)=>{t(s)&&e.addIssue({code:d.custom,path:["nodeBlockfrostProjectIds",a],message:`This key is not for ${r.network} — a ${r.network} project id starts with "${r.network}"`})})}),vt=ce.partial().omit({nodeCount:!0}).extend({name:ce.shape.name.optional()});T({signingKey:k().trim().min(1),verificationKey:k().trim().min(1).optional(),network:Q.optional(),blockfrostProjectId:J.optional()});T({network:Q.optional(),blockfrostProjectId:J.optional(),zeroFees:fe().optional()});T({status:k().optional()});T({includeKeys:fe().default(!1)});T({username:k().min(1),password:k().min(1)});const ht=T({network:Q,chainBackend:Ze,blockfrostProjectId:k().trim().optional(),cardanoNodeSocket:k().trim().optional(),hydraNodeImage:k().trim().min(1).optional(),adminUsername:k().trim().min(1).optional()});ht.extend({setupToken:k().min(1),adminPassword:k().min(8,"Use at least 8 characters").optional()});E(["config","heads","everything"]);T({scope:E(["config","heads"]),confirm:k().min(1)});const mt=[{url:"https://github.com/Vtechcom/hexcore-v2/issues/7",title:"The official image is amd64-only and will not run on an arm64 host",impact:"Every image cardano-scaling publishes is built for amd64 alone. On Apple Silicon it runs under Rosetta, and from 2.2.0 the node forces the whole KZG trusted setup into memory before it installs a tracer or opens its API socket — under Rosetta blst loses the CPU paths that make that fast, so the node stalls there printing nothing at all and the head fails as a plain readiness timeout with no clue in the log. On arm64 Linux the daemon simply refuses the image unless qemu is installed. Measured: the warm-up takes 0.47s on an arm64 rebuild of the same source and was never observed to finish under Rosetta. Use hydra-node 2.3.x (arm64) instead — same code, architecture fixed — or 2.1.x, which predates the warm-up but carries a double-spend defect.",severity:"blocker",imagePattern:/(^|\/)cardano-scaling\/hydra-node(:|$)/,hostPlatforms:["darwin-arm64","linux-arm64"],affectedFrom:"2.2.0"},{id:2629,url:"https://github.com/cardano-scaling/hydra/issues/2629",title:"The same UTxO can end up spendable on both L1 and L2",impact:"After recovering an incremental-commit deposit and side-loading a snapshot, the recovered UTxO reappears in the L2 ledger while it is also back on L1 — spendable twice. Reported against 2.1.0 on preprod. Only reachable through incremental commit plus recover, but the consequence is a double spend, so treat a head that has done both as suspect.",severity:"blocker",affectedFrom:"2.0.0",fixedIn:"2.2.0"},{id:2642,url:"https://github.com/cardano-scaling/hydra/issues/2642",title:"Log rotation silently drops pending deposits",impact:"Rotation writes a checkpoint and discards the events behind it, but the replay path drops `pendingDeposits` — so a deposit recorded before a rotation is unrecoverable after a restart except by hand. This one bites here in particular: every head hexcore creates sets --persistence-rotate-after, so rotation is not a rare event.",severity:"blocker",affectedFrom:"2.0.0",fixedIn:"2.3.0"},{id:2477,url:"https://github.com/cardano-scaling/hydra/issues/2477",title:"hydra-node crashes when Blockfrost rate-limits or resets the connection",impact:"A 403 from Blockfrost — which is what its rate limit returns — or a dropped connection kills the node outright. It does not retry and does not come back, so the head stays down until someone restarts it. Nodes sharing one project id hit the rate limit soonest.",severity:"blocker",fixedIn:"2.3.0",backends:["blockfrost"]},{id:2697,url:"https://github.com/cardano-scaling/hydra/issues/2697",title:"Increment and Decrement validators omit `mustNotMintOrBurn`",impact:"Every other head transition guards against minting or burning; these two did not. Upstream found no exploit — a burn should still fail indirectly through the value check — but called that chain of reasoning fragile. Defence in depth rather than a known hole.",severity:"warning",affectedFrom:"2.0.0",fixedIn:"2.2.0"}];function ue(r){const e=/^v?(\d+)\.(\d+)(?:\.(\d+))?/.exec(r);return e?[Number(e[1]),Number(e[2]),Number(e[3]??0)]:null}function Se(r,e){const t=ue(r),s=ue(e);if(!t||!s)return!1;for(let a=0;a<3;a++)if(t[a]!==s[a])return t[a]<s[a];return!1}function kt(r,e,t="unknown"){const s=Ee(r);return!s||!ue(s)?[]:mt.filter(a=>!(a.fixedIn&&!Se(s,a.fixedIn)||a.affectedFrom&&Se(s,a.affectedFrom)||e&&a.backends&&!a.backends.includes(e)||a.imagePattern&&!a.imagePattern.test(r)||a.hostPlatforms&&t!=="unknown"&&!a.hostPlatforms.includes(t)))}const pt=[{id:"2.3-arm64",label:"hydra-node 2.3.x (arm64)",image:"aniadev9/hydra-node:2.3.0-arm64",tagPattern:/^2\.3(\.\d+)?-arm64$/,flags:{unsyncedPeriod:!0,blockfrostTimeouts:!0,network:!0,blockfrost:!0,offline:!0},args:{unsyncedPeriod:180,blockfrostQueryTimeout:30,blockfrostRetryTimeout:300,extraArgs:[]},summary:"2.3.0 rebuilt for arm64. Identical code and flags, but it boots natively on Apple Silicon instead of stalling under Rosetta. Community-built image.",recommendedOn:["darwin-arm64"]},{id:"2.3",label:"hydra-node 2.3.x",image:"ghcr.io/cardano-scaling/hydra-node:2.3.0",tagPattern:/^2\.3(\.|-|$)/,flags:{unsyncedPeriod:!0,blockfrostTimeouts:!0,network:!0,blockfrost:!0,offline:!0},args:{unsyncedPeriod:180,blockfrostQueryTimeout:30,blockfrostRetryTimeout:300,extraArgs:[]},summary:"Full Blockfrost drift tolerance. No commit phase (ADR-33), SQLite event store.",recommendedOn:["darwin-x64","linux-x64","linux-arm64","unknown"]},{id:"2.1",label:"hydra-node 2.1.x",image:"ghcr.io/cardano-scaling/hydra-node:2.1.0",tagPattern:/^2\.1(\.|-|$)/,flags:{unsyncedPeriod:!0,blockfrostTimeouts:!0,network:!0,blockfrost:!0,offline:!0},args:{unsyncedPeriod:180,blockfrostQueryTimeout:30,blockfrostRetryTimeout:300,extraArgs:[]},summary:"Oldest 2.x with the full flag set. Carries a double-spend defect fixed in 2.2.0 — use it for testing where 2.3.0 will not run, not for a head holding anything real."},{id:"0.22",label:"hydra-node 0.22.x",image:"ghcr.io/cardano-scaling/hydra-node:0.22.3",tagPattern:/^0\.22(\.|-|$)/,flags:{unsyncedPeriod:!1,blockfrostTimeouts:!1,network:!0,blockfrost:!0,offline:!0},args:{unsyncedPeriod:180,blockfrostQueryTimeout:30,blockfrostRetryTimeout:300,extraArgs:[]},summary:"Legacy protocol (commit phase, older scripts). Runs with a 60s unsynced budget inside Blockfrost’s 50-80s drift band — prefer 2.3.x on Blockfrost."}];function Ee(r){const e=r.indexOf("@"),t=e===-1?r:r.slice(0,e),s=t.indexOf(":",t.lastIndexOf("/")+1);return s===-1?"":t.slice(s+1)}function xt(r){const e=Ee(r);if(e)return pt.find(t=>t.tagPattern.test(e))}export{yt as A,ct as D,Oe as M,_t as c,xt as f,kt as k,vt as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as p,e as g}from"./CS3KqpH_.js";import{e as E,c as a,s,h as e,k as S,d as m,t as A,o,y as r}from"./CgPLsCeU.js";const x=E({__name:"StatusBadge",props:{status:{},hydraState:{},label:{},tone:{},size:{default:"sm"},plain:{type:Boolean},class:{}},setup(n){const u=g("inline-flex items-center gap-1.5 rounded-full border font-medium whitespace-nowrap transition-colors",{variants:{tone:{success:"bg-success-soft text-success-soft-foreground border-transparent",warning:"bg-warning-soft text-warning-soft-foreground border-transparent",danger:"bg-destructive-soft text-destructive-soft-foreground border-transparent",info:"bg-info-soft text-info-soft-foreground border-transparent",neutral:"bg-muted text-muted-foreground border-transparent"},size:{sm:"px-2 py-0.5 text-[11px]",md:"px-2.5 py-1 text-xs"}},defaultVariants:{tone:"neutral",size:"sm"}}),t=n,i={CREATED:"neutral",CONFIGURED:"neutral",STARTING:"warning",RUNNING:"success",STOPPED:"neutral",FAILED:"danger"},d={IDLE:"neutral",INITIALIZING:"warning",OPEN:"success",CLOSED:"warning",FANOUT_POSSIBLE:"warning",FINAL:"neutral",UNKNOWN:"neutral"},l={IDLE:"Idle",INITIALIZING:"Initializing",OPEN:"Open",CLOSED:"Closed",FANOUT_POSSIBLE:"Fanout ready",FINAL:"Final",UNKNOWN:"Unknown"},c={CREATED:"Created",CONFIGURED:"Configured",STARTING:"Starting",RUNNING:"Running",STOPPED:"Stopped",FAILED:"Failed"},f=r(()=>t.label?t.label:t.hydraState?l[t.hydraState]:t.status?c[t.status]??t.status:""),N=r(()=>t.tone?t.tone:t.hydraState?d[t.hydraState]:t.status?i[t.status]??"neutral":"neutral"),I=r(()=>t.status==="STARTING"||t.hydraState==="INITIALIZING");return(T,D)=>(o(),a("span",{class:s(e(p)(e(u)({tone:e(N),size:n.size}),t.class))},[n.plain?S("",!0):(o(),a("span",{key:0,class:s(["size-1.5 rounded-full bg-current shrink-0",e(I)&&"animate-pulse"]),"aria-hidden":"true"},null,2)),m(" "+A(e(f)),1)],2))}});export{x as _};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as o}from"./DyPI7qJE.js";import"./CT-yt694.js";import"./CgPLsCeU.js";import"./CS3KqpH_.js";import"./rhEiP908.js";import"./vSj9Ec0g.js";import"./DPihKXdt.js";import"./woNjBJMN.js";import"./CnOqDT9k.js";import"./BnotlrL7.js";import"./CZK6xUH-.js";import"./rS90pPZ_.js";import"./CQcG7Bu4.js";import"./Bj1xviSh.js";import"./CePNTU1S.js";import"./CcdyYRYz.js";import"./BgPn4NJH.js";import"./CGD7MYQH.js";import"./CqsSss-D.js";import"./CkCrahXt.js";import"./LGfPBi70.js";import"./DLztFeOQ.js";import"./C1YRg2ic.js";export{o as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as t,o as s,c,z as n}from"./CgPLsCeU.js";const r={},o={class:"min-h-screen flex items-center justify-center p-24"};function a(e,_){return s(),c("div",o,[n(e.$slots,"default")])}const l=t(r,[["render",a]]);export{l as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as e}from"./CS3KqpH_.js";const h=e("NetworkIcon",[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]]);export{h as N};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import{_ as rt}from"./CT-yt694.js";import{u as it,P as dt,c as D,r as ut,d as Fe,b as Se,a as Ce,_ as Te}from"./CS3KqpH_.js";import{c as ct,_ as mt,a as pt,L as ft}from"./rhEiP908.js";import{_ as Ee}from"./vSj9Ec0g.js";import{_ as pe}from"./DPihKXdt.js";import{a as je,b as qe,c as Ge,d as Je,e as We,_ as gt}from"./woNjBJMN.js";import{e as K,r as U,m as Ue,H as Ie,o as l,j as R,w as r,b as t,h as e,E as Ne,z as Ke,k,y as A,I as yt,c as p,F as I,q as W,s as re,a as o,t as u,J as ht,D as Xe,d as g,A as me,i as Z,p as vt,K as xt,B as le,v as Oe,C as Ae,L as ze,g as Me,M as bt,f as _t,n as De}from"./CgPLsCeU.js";import{i as kt,m as wt,f as $t,s as St,R as Ye,_ as Re,d as Pe,e as Be,E as Ct,g as Tt,h as Ut,j as It,k as Nt,l as Rt,u as Pt,a as Bt,b as Ot,c as At}from"./rS90pPZ_.js";import{P as zt}from"./CnOqDT9k.js";import{_ as Ze}from"./CePNTU1S.js";import{_ as Mt}from"./CqsSss-D.js";import{_ as Dt}from"./CkCrahXt.js";import{_ as Vt}from"./CQcG7Bu4.js";import{T as Qe}from"./LGfPBi70.js";import{A as Ht,f as Lt}from"./DLztFeOQ.js";import{p as Ft,b as Et,c as jt}from"./Bj1xviSh.js";import{u as qt}from"./BgPn4NJH.js";import{u as Gt}from"./CGD7MYQH.js";import{u as Jt}from"./C1YRg2ic.js";var Wt=K({__name:"TabsContent",props:{value:{type:[String,Number],required:!0},forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(n){const c=n,{forwardRef:d}=it(),f=kt(),w=A(()=>wt(f.baseId,c.value)),m=A(()=>$t(f.baseId,c.value)),a=A(()=>c.value===f.modelValue.value),_=U(a.value);return Ue(()=>{f.registerContent(c.value),requestAnimationFrame(()=>{_.value=!1})}),Ie(()=>{f.unregisterContent(c.value)}),(P,C)=>(l(),R(e(zt),{present:P.forceMount||a.value,"force-mount":""},{default:r(({present:x})=>[t(e(dt),{id:m.value,ref:e(d),"as-child":P.asChild,as:P.as,role:"tabpanel","data-state":a.value?"active":"inactive","data-orientation":e(f).orientation.value,"aria-labelledby":w.value,hidden:!x,tabindex:"0",style:Ne({animationDuration:_.value?"0s":void 0})},{default:r(()=>[!e(f).unmountOnHide.value||x?Ke(P.$slots,"default",{key:0}):k("v-if",!0)]),_:2},1032,["id","as-child","as","data-state","data-orientation","aria-labelledby","hidden","style"])]),_:3},8,["present"]))}}),Kt=Wt;const Xt=D("BanIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m4.9 4.9 14.2 14.2",key:"1m5liu"}]]);const Yt=D("CableIcon",[["path",{d:"M17 21v-2a1 1 0 0 1-1-1v-1a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v1a1 1 0 0 1-1 1",key:"10bnsj"}],["path",{d:"M19 15V6.5a1 1 0 0 0-7 0v11a1 1 0 0 1-7 0V9",key:"1eqmu1"}],["path",{d:"M21 21v-2h-4",key:"14zm7j"}],["path",{d:"M3 5h4V3",key:"z442eg"}],["path",{d:"M7 5a1 1 0 0 1 1 1v1a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a1 1 0 0 1 1-1V3",key:"ebdjd7"}]]);const Zt=D("GaugeIcon",[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]]);const Qt=D("GlobeIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);const en=D("HistoryIcon",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M12 7v5l4 2",key:"1fdv2h"}]]);const tn=D("PackageIcon",[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]]);const nn=D("PlayIcon",[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]]);const sn=D("PlugIcon",[["path",{d:"M12 22v-5",key:"1ega77"}],["path",{d:"M9 8V2",key:"14iosj"}],["path",{d:"M15 8V2",key:"18g5xt"}],["path",{d:"M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z",key:"osxo6l"}]]);const on=D("ScrollTextIcon",[["path",{d:"M15 12h-5",key:"r7krc0"}],["path",{d:"M15 8h-5",key:"1khuty"}],["path",{d:"M19 17V5a2 2 0 0 0-2-2H4",key:"zz82l3"}],["path",{d:"M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3",key:"1ph1d7"}]]);const an=D("SendIcon",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]);const ln=D("ServerIcon",[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]]);const rn=D("SquareTerminalIcon",[["path",{d:"m7 11 2-2-2-2",key:"1lz0vl"}],["path",{d:"M11 13h4",key:"1p7l4v"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}]]);const dn=D("SquareIcon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);const un=D("TerminalIcon",[["polyline",{points:"4 17 10 11 4 5",key:"akl6gq"}],["line",{x1:"12",x2:"20",y1:"19",y2:"19",key:"q2wloq"}]]),et=K({__name:"TabsContent",props:{value:{},forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(n){const c=n,d=ut(c,"class");return(f,w)=>(l(),R(e(Kt),yt({"data-slot":"tabs-content",class:e(Fe)("flex-1 outline-none",c.class)},e(d)),{default:r(()=>[Ke(f.$slots,"default")]),_:3},16,["class"]))}});function cn(n){const c=[];if(n<=0)return{points:[],edges:[],edgeOpacity:.35};if(n===1)c.push({index:0,x:50,y:50});else if(n===2)c.push({index:0,x:30,y:50},{index:1,x:70,y:50});else for(let m=0;m<n;m++){const a=m/n*2*Math.PI-Math.PI/2;c.push({index:m,x:50+32*Math.cos(a),y:50+30*Math.sin(a)})}const d=[];for(let f=0;f<n;f++)for(let w=f+1;w<n;w++)d.push({from:f,to:w});return{points:c,edges:d,edgeOpacity:n>6?.2:.35}}const mn={class:"relative min-h-80 overflow-hidden bg-muted/40",style:{"background-image":"radial-gradient(circle at 1px 1px, var(--border) 1px, transparent 0)","background-size":"22px 22px"}},pn={class:"pointer-events-none absolute inset-0",width:"100%",height:"100%",preserveAspectRatio:"none","aria-hidden":"true"},fn=["x1","y1","x2","y2","stroke","stroke-dasharray","opacity"],gn=["aria-pressed","onClick"],yn={class:"block truncate text-xs font-semibold"},hn={class:"mb-1.5 block font-mono text-[10px] text-muted-foreground tabular"},vn={class:"absolute bottom-3 left-3.5 flex items-center gap-3.5 rounded-md border bg-card/95 px-2.5 py-1.5 text-[11px] text-muted-foreground"},xn={key:0},bn=K({__name:"TopologyCanvas",props:{head:{},live:{},selectedIndex:{}},emits:["select"],setup(n,{emit:c}){const d=n,f=c,w=A(()=>cn(d.head.nodes.length));function m(C){return d.live?.find(x=>x.nodeId===C)}function a(C){const x=d.head.nodes[C];return x?m(x.id)?.reachable??!1:!1}function _(C,x){return a(C)&&a(x)}const P=C=>w.value.points.find(x=>x.index===C);return(C,x)=>{const b=pe;return l(),p("div",mn,[(l(),p("svg",pn,[(l(!0),p(I,null,W(e(w).edges,(h,V)=>(l(),p("line",{key:V,x1:`${P(h.from)?.x}%`,y1:`${P(h.from)?.y}%`,x2:`${P(h.to)?.x}%`,y2:`${P(h.to)?.y}%`,stroke:_(h.from,h.to)?"var(--primary)":"var(--muted-foreground)","stroke-dasharray":_(h.from,h.to)?void 0:"5 4","stroke-width":"2",opacity:_(h.from,h.to)?e(w).edgeOpacity:.4},null,8,fn))),128))])),(l(!0),p(I,null,W(n.head.nodes,h=>(l(),p("button",{key:h.id,class:re(e(Fe)("absolute z-10 w-40 -translate-x-1/2 -translate-y-1/2 rounded-lg border-2 bg-card px-3 py-2.5 text-left shadow-sm outline-none transition-shadow","focus-visible:ring-2 focus-visible:ring-ring",n.selectedIndex===h.index&&"ring-4 ring-ring/25",m(h.id)?.reachable?"border-primary":h.status==="FAILED"?"border-destructive":"border-border")),style:Ne({left:`${P(h.index)?.x}%`,top:`${P(h.index)?.y}%`}),"aria-pressed":n.selectedIndex===h.index,onClick:V=>f("select",h.index)},[o("span",yn,u(h.name),1),o("span",hn," api "+u(h.apiPort)+" · p2p "+u(h.p2pPort),1),m(h.id)?(l(),R(b,{key:0,"hydra-state":m(h.id).hydraState,tone:m(h.id).reachable?void 0:"neutral"},null,8,["hydra-state","tone"])):(l(),R(b,{key:1,status:h.status},null,8,["status"]))],14,gn))),128)),o("div",vn,[n.head.nodes.length===1?(l(),p("span",xn,"Solo head — no peers")):(l(),p(I,{key:1},[x[0]||(x[0]=ht('<span class="inline-flex items-center gap-1.5"><span class="inline-block h-0.5 w-4 bg-primary opacity-60"></span> peer connected </span><span class="inline-flex items-center gap-1.5"><span class="inline-block h-0.5 w-4 bg-muted-foreground opacity-60"></span> peer down </span><span class="opacity-70">inferred from node reachability</span>',3))],64))])])}}}),tt={history:!1,snapshotUtxo:!0};function _n(n){const{history:c,snapshotUtxo:d}={...tt,...n.options},f=new URL(n.apiBase||n.pageOrigin,n.pageOrigin),w=f.protocol==="https:"?"wss":"ws",m=new URL(`${w}://${f.hostname}:${n.apiPort}/`);return m.searchParams.set("history",c?"yes":"no"),m.searchParams.set("snapshot-utxo",d?"yes":"no"),m.toString()}function kn(n){return new URL(n.pageOrigin).protocol==="https:"&&n.url.startsWith("ws://")?"This page is served over HTTPS, and browsers block plain ws:// from a secure page. Reach the node over a TLS-terminating proxy, or open Hexcore over http:// on the machine running Docker.":null}const wn=new Set(["InvalidInput","CommandFailed","PostTxOnChainFailed","TxInvalid","DecommitInvalid","SideLoadSnapshotRejected","RejectedInputBecauseUnsynced","NetworkDisconnected","NetworkVersionMismatch","NetworkClusterIDMismatch","PeerDisconnected","NodeUnsynced","DepositExpired","HeadIsClosed"]),$n=new Set(["Greetings","HeadIsOpen","TxValid","SnapshotConfirmed","NodeSynced","NetworkConnected","PeerConnected","CommitFinalized","CommitApproved","DecommitFinalized","DecommitApproved","HeadIsFinalized","ReadyToFanout"]);function Sn(n){return n.direction==="out"?"sent":wn.has(n.tag)?"bad":$n.has(n.tag)?"good":"neutral"}function Cn(n,c,d){try{const f=JSON.parse(n);return{id:c,at:d,direction:"in",tag:typeof f.tag=="string"?f.tag:"Unknown",seq:typeof f.seq=="number"?f.seq:void 0,body:JSON.stringify(f,null,2)}}catch{return{id:c,at:d,direction:"in",tag:"raw",body:n}}}const $e=[{tag:"Init",label:"Init",description:"Open the head. On v2 this opens it outright — the commit phase is gone (ADR-33).",payload:{tag:"Init"}},{tag:"NewTx",label:"NewTx",description:"Submit a layer-2 transaction. Needs the signed transaction as CBOR hex.",payload:{tag:"NewTx",transaction:{type:"Tx ConwayEra",description:"",cborHex:""}},needsInput:!0},{tag:"Decommit",label:"Decommit",description:"Move a UTxO out of the head and back to layer 1.",payload:{tag:"Decommit",decommitTx:{type:"Tx ConwayEra",description:"",cborHex:""}},needsInput:!0},{tag:"Recover",label:"Recover",description:"Reclaim a deposit that was seen on chain but never made it into a snapshot.",payload:{tag:"Recover",recoverTxId:""},needsInput:!0},{tag:"Contest",label:"Contest",description:"Challenge a closing snapshot that is older than the one this node holds.",payload:{tag:"Contest"}},{tag:"Fanout",label:"Fanout",description:"Distribute the final UTxO set back to layer 1. Only after ReadyToFanout.",payload:{tag:"Fanout"}},{tag:"SafeClose",label:"SafeClose",description:"Close, but refuse if the head holds non-ADA assets. The node replies InvalidInput if it does.",payload:{tag:"SafeClose"},destructive:!0,since:"2.x only"},{tag:"Close",label:"Close",description:"End the head and start the contestation period. There is no undo.",payload:{tag:"Close"},destructive:!0},{tag:"Abort",label:"Abort",description:"Abandon a head that is still initialising. Removed in v2 along with the commit phase.",payload:{tag:"Abort"},destructive:!0,since:"0.22 only"}];function Tn(n){try{const c=JSON.parse(n).tag;return $e.find(d=>d.tag===c&&d.destructive)??null}catch{return null}}function Ve(n){const c=n.trim();if(!c)return{ok:!1,error:"Nothing to send."};try{const d=JSON.parse(c);return typeof d!="object"||d===null||Array.isArray(d)?{ok:!1,error:"A command must be a JSON object."}:typeof d.tag!="string"||!d.tag?{ok:!1,error:'A command needs a "tag" — that is how hydra-node dispatches it.'}:{ok:!0,pretty:JSON.stringify(d)}}catch(d){return{ok:!1,error:`Not valid JSON: ${d.message}`}}}const Un="https://hydrasdk.com";function In(n){const c=new URL(n),d=c.searchParams.get("history")==="yes",f=c.searchParams.get("snapshot-utxo")==="no";return`import { HydraBridge } from '@hydra-sdk/bridge';
|
|
2
|
+
|
|
3
|
+
const hydra = new HydraBridge({
|
|
4
|
+
url: '${`${c.protocol}//${c.host}`}',
|
|
5
|
+
// Replay the node's whole event log on connect. Off is usually what you want.
|
|
6
|
+
history: ${d},${f?`
|
|
7
|
+
// Drop the UTxO map from Greetings — it is large on a busy head.
|
|
8
|
+
noSnapshotUtxo: true,`:""}
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
hydra.events.on('onMessage', frame => console.log(frame.tag, frame));
|
|
12
|
+
hydra.events.on('onConnected', () => console.log('connected'));
|
|
13
|
+
|
|
14
|
+
await hydra.connect();
|
|
15
|
+
|
|
16
|
+
// Open the head, then wait for HeadIsOpen.
|
|
17
|
+
hydra.commands.init();
|
|
18
|
+
`}function Nn(n){return`const socket = new WebSocket('${n}');
|
|
19
|
+
|
|
20
|
+
socket.onmessage = event => {
|
|
21
|
+
const frame = JSON.parse(event.data);
|
|
22
|
+
console.log(frame.tag, frame);
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
socket.onopen = () => socket.send(JSON.stringify({ tag: 'Init' }));
|
|
26
|
+
`}function Rn(n){const c=n.replace(/^ws/,"http").split("?")[0];return`# The node also answers over HTTP.
|
|
27
|
+
curl ${c}head # protocol state
|
|
28
|
+
curl ${c}snapshot/utxo
|
|
29
|
+
curl ${c}protocol-parameters
|
|
30
|
+
`}function J(n){if(n==null||!Number.isFinite(n))return"—";if(n<1024)return`${n} B`;const c=["KB","MB","GB","TB"];let d=n/1024,f=0;for(;d>=1024&&f<c.length-1;)d/=1024,f+=1;return`${d<10?d.toFixed(1):Math.round(d)} ${c[f]}`}function He(n){return n==null||!Number.isFinite(n)?"—":`${n.toFixed(1)}%`}const Pn={class:"space-y-4"},Bn={class:"flex items-center justify-between gap-3"},On={class:"min-w-0"},An={class:"text-xs text-muted-foreground"},zn={key:1,class:"space-y-2"},Mn={class:"mb-2 flex items-baseline justify-between gap-2"},Dn={class:"truncate font-mono text-xs"},Vn={key:0,class:"grid grid-cols-2 gap-x-4 gap-y-1.5 text-xs"},Hn={class:"text-right font-mono tabular"},Ln={class:"text-muted-foreground"},Fn={class:"col-span-2 h-1.5 overflow-hidden rounded-full bg-muted"},En={class:"text-right font-mono tabular"},jn={key:0,class:"text-muted-foreground"},qn={class:"text-right font-mono tabular"},Gn={class:"text-right font-mono tabular"},Jn={class:"text-right font-mono tabular"},Wn={key:1,class:"text-xs text-muted-foreground"},Kn={key:2,class:"text-[11px] text-muted-foreground"},Le=1e4,Xn=K({__name:"NodeResourcePanel",props:{headId:{},selectedNodeId:{},running:{type:Boolean}},setup(n){const c=n,d=Xe(),f=U(null),w=U(!1),m=U("");let a=null;async function _(){if(c.running){w.value=!0;try{f.value=await d.get(`/api/heads/${c.headId}/resources`),m.value=""}catch(x){m.value=x instanceof me?x.message:"Could not read container stats."}finally{w.value=!1}}}Ue(()=>{_(),a=St(()=>{_()},Le)}),Ie(()=>{a&&clearInterval(a)});function P(x,b){return!x||!b?"0%":`${Math.max(1,Math.min(100,x/b*100))}%`}const C=A(()=>f.value?.sampledAt.slice(11,19)??"");return(x,b)=>{const h=Se,V=Ce,B=Te,N=Ee,z=pe;return l(),p("div",Pn,[o("div",Bn,[o("div",On,[b[1]||(b[1]=o("h3",{class:"text-sm font-medium"},"Container resources",-1)),o("p",An,[e(f)?(l(),p(I,{key:0},[g(u(e(f).nodes.filter(y=>y.running).length)+"/"+u(e(f).nodes.length)+" running · "+u(e(J)(e(f).totalMemoryBytes))+" memory · "+u(e(He)(e(f).totalCpuPercent))+" CPU across the head ",1)],64)):n.running?(l(),p(I,{key:1},[g("Sampling…")],64)):(l(),p(I,{key:2},[g("Nothing to sample — this head has no containers.")],64))])]),n.running?(l(),R(h,{key:0,variant:"outline",size:"icon-sm","aria-label":"Resample",disabled:e(w),onClick:b[0]||(b[0]=y=>_())},{default:r(()=>[t(e(Ye),{class:re(["size-4",e(w)?"animate-spin":""])},null,8,["class"])]),_:1},8,["disabled"])):k("",!0)]),e(m)?(l(),R(B,{key:0,variant:"destructive"},{default:r(()=>[t(V,null,{default:r(()=>[g(u(e(m)),1)]),_:1})]),_:1})):k("",!0),!e(f)&&n.running&&e(w)?(l(),p("div",zn,[t(N,{class:"h-16 w-full"}),t(N,{class:"h-16 w-full"})])):k("",!0),(l(!0),p(I,null,W(e(f)?.nodes??[],y=>(l(),p("div",{key:y.nodeId,class:re(["rounded-md border p-3",y.nodeId===n.selectedNodeId?"border-primary/50 bg-muted/40":""])},[o("div",Mn,[o("span",Dn,u(y.name),1),t(z,{tone:y.running?"success":"neutral",label:y.running?"running":"not running",plain:""},null,8,["tone","label"])]),y.running?(l(),p("div",Vn,[b[4]||(b[4]=o("span",{class:"text-muted-foreground"},"Memory",-1)),o("span",Hn,[g(u(e(J)(y.memoryBytes))+" ",1),o("span",Ln,"/ "+u(e(J)(y.memoryLimitBytes)),1)]),o("div",Fn,[o("div",{class:"h-full rounded-full bg-primary transition-[width]",style:Ne({width:P(y.memoryBytes,y.memoryLimitBytes)})},null,4)]),b[5]||(b[5]=o("span",{class:"text-muted-foreground"},"CPU",-1)),o("span",En,[g(u(e(He)(y.cpuPercent))+" ",1),y.cpuCores?(l(),p("span",jn,"of "+u(y.cpuCores*100)+"%",1)):k("",!0)]),b[6]||(b[6]=o("span",{class:"text-muted-foreground"},"Network",-1)),o("span",qn," ↓ "+u(e(J)(y.netRxBytes))+" · ↑ "+u(e(J)(y.netTxBytes)),1),y.blockReadBytes!==null||y.blockWriteBytes!==null?(l(),p(I,{key:0},[b[2]||(b[2]=o("span",{class:"text-muted-foreground"},"Disk",-1)),o("span",Gn," read "+u(e(J)(y.blockReadBytes))+" · write "+u(e(J)(y.blockWriteBytes)),1)],64)):k("",!0),y.pids!==null?(l(),p(I,{key:1},[b[3]||(b[3]=o("span",{class:"text-muted-foreground"},"Threads",-1)),o("span",Jn,u(y.pids),1)],64)):k("",!0)])):(l(),p("p",Wn," No container — this node is stopped, or Docker could not be reached. "))],2))),128)),e(f)?(l(),p("p",Kn,[g(" Sampled at "+u(e(C))+", refreshing every "+u(Le/1e3)+"s. Memory excludes page cache, the same figure ",1),b[7]||(b[7]=o("code",{class:"font-mono"},"docker stats",-1)),b[8]||(b[8]=g(" reports. ",-1))])):k("",!0)])}}}),Yn={class:"space-y-4"},Zn={class:"text-sm font-medium"},Qn={class:"space-y-1.5"},es={class:"relative"},ts={class:"max-h-72 overflow-auto rounded-md bg-muted/60 p-3 pr-12 font-mono text-xs whitespace-pre"},ns={class:"absolute top-2 right-2"},ss={key:0,class:"text-xs text-muted-foreground"},os={key:1,class:"text-xs text-muted-foreground"},as={key:2,class:"text-xs text-muted-foreground"},ls=["href"],rs=K({__name:"NodeConnectPanel",props:{url:{},nodeName:{}},setup(n){const c=n,d=U("sdk"),f=A(()=>d.value==="raw"?Nn(c.url):d.value==="http"?Rn(c.url):In(c.url));return(w,m)=>{const a=Ze,_=Be,P=Pe,C=Re,x=Dt;return l(),p("div",Yn,[o("div",null,[o("h3",Zn,"Connect to "+u(n.nodeName),1),m[1]||(m[1]=o("p",{class:"text-xs text-muted-foreground"}," This node's Hydra API, as the console beside it is using it. The port belongs to this node alone — every node of a head gets its own block. ",-1))]),o("div",Qn,[m[2]||(m[2]=o("span",{class:"text-xs font-medium text-muted-foreground"},"WebSocket URL",-1)),t(a,{value:n.url,label:"node URL",class:"w-full"},null,8,["value"])]),t(C,{modelValue:e(d),"onUpdate:modelValue":m[0]||(m[0]=b=>Z(d)?d.value=b:null)},{default:r(()=>[t(P,null,{default:r(()=>[t(_,{value:"sdk"},{default:r(()=>[t(e(tn)),m[3]||(m[3]=g(" hydra-sdk",-1))]),_:1}),t(_,{value:"raw"},{default:r(()=>[t(e(Yt)),m[4]||(m[4]=g(" WebSocket",-1))]),_:1}),t(_,{value:"http"},{default:r(()=>[t(e(Qt)),m[5]||(m[5]=g(" HTTP",-1))]),_:1})]),_:1})]),_:1},8,["modelValue"]),o("div",es,[o("pre",ts,u(e(f)),1),o("div",ns,[t(a,{value:e(f),"icon-only":"",label:"snippet"},null,8,["value"])])]),e(d)==="sdk"?(l(),p("p",ss,[...m[6]||(m[6]=[o("code",{class:"font-mono"},"pnpm add @hydra-sdk/bridge",-1),g(" — the same client the control-plane uses to watch these nodes. ",-1)])])):e(d)==="raw"?(l(),p("p",os,[...m[7]||(m[7]=[g(" No dependencies. hydra-node speaks newline-free JSON objects, one per frame, each carrying a ",-1),o("code",{class:"font-mono"},"tag",-1),g(". ",-1)])])):(l(),p("p",as," The same port answers HTTP for the things that are a query rather than a stream. ")),t(x),o("a",{href:e(Un),target:"_blank",rel:"noopener noreferrer",class:"inline-flex items-center gap-1.5 text-sm font-medium text-primary hover:underline"},[m[8]||(m[8]=g(" hydra-sdk documentation ",-1)),t(e(Ct),{class:"size-3.5"})],8,ls),m[9]||(m[9]=o("p",{class:"text-xs text-muted-foreground"}," Building transactions, committing funds and reading snapshots — the parts this console shows you the wire format of, with types. ",-1))])}}}),is=500;function we(n,c,d=is){return n.push(c),n.length>d&&n.splice(0,n.length-d),n}function ds(n){return n.reason?`Node closed the connection: ${n.reason} (code ${n.code})`:n.wasClean?`Connection closed (code ${n.code}).`:n.code===1006?"Could not reach the node. Its container may be down, the API port may not be published, or something between this browser and the host is blocking it.":`Connection lost (code ${n.code}).`}function us(){const n=xt(),c=U("idle"),d=U([]),f=vt({...tt}),w=U(""),m=U(null);let a=null,_=1;const P=A(()=>m.value===null?"":_n({apiBase:n.public.apiBase,pageOrigin:window.location.origin,apiPort:m.value,options:f})),C=A(()=>w.value.trim()||P.value),x=A(()=>C.value?kn({pageOrigin:window.location.origin,url:C.value}):null),b=A(()=>c.value==="open");function h(y,M="hexcore"){we(d.value,{id:_++,at:new Date().toISOString(),direction:"system",tag:M,body:y})}function V(y){y!==void 0&&(m.value=y),B();const M=C.value;if(M){d.value=[],_=1,c.value="connecting",h(`connecting to ${M}`);try{a=new WebSocket(M)}catch(O){c.value="closed",h(`Cannot open ${M}: ${O.message}`,"error");return}a.onopen=()=>{c.value="open",h("connected")},a.onmessage=O=>{we(d.value,Cn(String(O.data),_++,new Date().toISOString()))},a.onclose=O=>{c.value="closed",h(ds(O),"error"),a=null},a.onerror=()=>{}}}function B(){if(!a)return;const y=a;a=null,y.onopen=y.onmessage=y.onclose=y.onerror=null,y.close(),c.value="idle"}function N(y){if(!a||c.value!=="open")return!1;a.send(y);let M="command";try{const O=JSON.parse(y);typeof O.tag=="string"&&(M=O.tag)}catch{}return we(d.value,{id:_++,at:new Date().toISOString(),direction:"out",tag:M,body:y}),!0}function z(){d.value=[]}return Ie(B),{status:c,connected:b,frames:d,options:f,url:C,urlOverride:w,derivedUrl:P,advice:x,connect:V,disconnect:B,send:N,clear:z}}const cs={class:"font-mono"},ms={class:"flex flex-wrap items-center gap-2 px-5 pb-2.5"},ps={class:"flex items-center gap-1.5 text-xs text-muted-foreground",title:"Replay the node's event log"},fs={class:"flex items-center gap-1.5 text-xs text-muted-foreground",title:"Include the UTxO map in Greetings"},gs={class:"ml-auto flex items-center gap-1.5"},ys={key:0,class:"px-5 py-3 text-muted-foreground"},hs=["onClick"],vs={class:"shrink-0 text-muted-foreground/60 tabular"},xs={class:"w-3 shrink-0 text-muted-foreground/70"},bs={key:0,class:"min-w-0 truncate text-muted-foreground"},_s={key:0,class:"mx-5 my-1 overflow-auto rounded bg-background p-2.5 whitespace-pre"},ks={class:"space-y-2 px-5 py-3"},ws={class:"flex items-center gap-2"},$s={key:0,class:"text-muted-foreground"},Ss={class:"flex items-center gap-2"},Cs={key:0,class:"ml-auto flex items-center gap-1.5 text-xs text-destructive"},Ts=K({__name:"NodeConsoleSheet",props:{node:{},headId:{},headName:{},headRunning:{type:Boolean}},emits:["close"],setup(n,{emit:c}){const d=n,f=c,{status:w,connected:m,frames:a,options:_,url:P,advice:C,connect:x,disconnect:b,send:h,clear:V}=us(),B=A(()=>d.node!==null),N=U("console"),z=U(""),y=U(""),M=U(""),O=U(null),F=U(null),j=U(!0),H=U(new Set),ie=A(()=>{const $=M.value.trim().toLowerCase();return $?a.value.filter(i=>i.tag.toLowerCase().includes($)||(i.body??"").toLowerCase().includes($)):a.value}),fe={idle:"neutral",connecting:"warning",open:"success",closed:"danger"},Q={good:"text-success-soft-foreground",bad:"text-destructive",sent:"text-info-soft-foreground",neutral:"text-foreground"};le(()=>d.node?.id,()=>{d.node&&d.headRunning?x(d.node.apiPort):b(),N.value="console",z.value="",y.value="",H.value=new Set},{immediate:!0}),le(()=>[_.history,_.snapshotUtxo],()=>{(w.value==="open"||w.value==="connecting")&&x()}),le(()=>a.value.length,async()=>{j.value&&(await bt(),F.value&&(F.value.scrollTop=F.value.scrollHeight))});function ee(){const $=F.value;$&&(j.value=$.scrollHeight-$.scrollTop-$.clientHeight<40)}function te($){const i=$e.find(X=>X.tag===$);i&&(z.value=JSON.stringify(i.payload,null,2),y.value="")}function S(){const $=Ve(z.value);if(!$.ok){y.value=$.error;return}y.value="";const i=Tn($.pretty);if(i){O.value=i;return}E($.pretty)}function s(){O.value=null;const $=Ve(z.value);$.ok&&E($.pretty)}function E($){if(!h($)){y.value="Not connected — nothing was sent.";return}j.value=!0}function L($){const i=new Set(H.value);i.delete($)||i.add($),H.value=i}function de($){return $.slice(11,23)}function ne($){if(!$)return"";const i=$.replace(/\s+/g," ").trim();return i.length>120?`${i.slice(0,120)}…`:i}return($,i)=>{const X=pe,ue=Nt,ce=Rt,ge=It,q=Be,ye=Pe,se=Ce,Y=Te,G=Se,he=ct,oe=Ge,ve=qe,xe=We,be=Je,_e=je,ke=Mt,ae=et,T=Xn,nt=rs,st=Re,ot=Ut,at=Tt,lt=Vt;return l(),p(I,null,[t(at,{open:e(B),"onUpdate:open":i[10]||(i[10]=v=>!v&&f("close"))},{default:r(()=>[t(ot,{class:"sm:max-w-3xl"},{default:r(()=>[t(ge,null,{default:r(()=>[t(ue,{class:"flex items-center gap-2.5"},{default:r(()=>[o("span",cs,u(n.node?.name??"node"),1),t(X,{tone:fe[e(w)],label:e(w),plain:""},null,8,["tone","label"])]),_:1}),t(ce,null,{default:r(()=>[g(" Node "+u(n.node?.index)+" of "+u(n.headName)+" · api port "+u(n.node?.apiPort),1)]),_:1})]),_:1}),t(st,{modelValue:e(N),"onUpdate:modelValue":i[9]||(i[9]=v=>Z(N)?N.value=v:null),class:"flex min-h-0 flex-1 flex-col gap-0"},{default:r(()=>[t(ye,{class:"mx-5 mt-3 mb-3 self-start"},{default:r(()=>[t(q,{value:"console"},{default:r(()=>[t(e(un)),i[12]||(i[12]=g(" Console",-1))]),_:1}),t(q,{value:"resources"},{default:r(()=>[t(e(Zt)),i[13]||(i[13]=g(" Resources",-1))]),_:1}),t(q,{value:"connect"},{default:r(()=>[t(e(sn)),i[14]||(i[14]=g(" Connect",-1))]),_:1})]),_:1}),t(ae,{value:"console",class:"mt-0 flex min-h-0 flex-1 flex-col"},{default:r(()=>[n.headRunning?e(C)?(l(),R(Y,{key:1,variant:"destructive",class:"mx-5 mb-3 w-auto"},{default:r(()=>[t(se,null,{default:r(()=>[g(u(e(C)),1)]),_:1})]),_:1})):k("",!0):(l(),R(Y,{key:0,class:"mx-5 mb-3 w-auto"},{default:r(()=>[t(se,null,{default:r(()=>[...i[15]||(i[15]=[g(" This head is not running, so there is no node to connect to. Start it and the console attaches by itself. ",-1)])]),_:1})]),_:1})),o("div",ms,[e(m)?(l(),R(G,{key:0,variant:"outline",size:"sm",onClick:i[0]||(i[0]=v=>e(b)())},{default:r(()=>[t(e(dn),{class:"size-3.5"}),i[16]||(i[16]=g(" Disconnect ",-1))]),_:1})):(l(),R(G,{key:1,size:"sm",disabled:!n.headRunning||!n.node,onClick:i[1]||(i[1]=v=>n.node&&e(x)(n.node.apiPort))},{default:r(()=>[t(e(nn),{class:"size-3.5"}),i[17]||(i[17]=g(" Connect ",-1))]),_:1},8,["disabled"])),t(he,{modelValue:e(M),"onUpdate:modelValue":i[2]||(i[2]=v=>Z(M)?M.value=v:null),placeholder:"Filter frames…",class:"h-8 w-44 text-xs"},null,8,["modelValue"]),o("label",ps,[Oe(o("input",{"onUpdate:modelValue":i[3]||(i[3]=v=>e(_).history=v),type:"checkbox",class:"size-3.5 accent-primary"},null,512),[[Ae,e(_).history]]),i[18]||(i[18]=g(" history ",-1))]),o("label",fs,[Oe(o("input",{"onUpdate:modelValue":i[4]||(i[4]=v=>e(_).snapshotUtxo=v),type:"checkbox",class:"size-3.5 accent-primary"},null,512),[[Ae,e(_).snapshotUtxo]]),i[19]||(i[19]=g(" snapshot-utxo ",-1))]),o("div",gs,[e(j)?k("",!0):(l(),R(G,{key:0,variant:"ghost",size:"sm",class:"h-7 text-xs",onClick:i[5]||(i[5]=v=>j.value=!0)},{default:r(()=>[...i[20]||(i[20]=[g(" Follow ",-1)])]),_:1})),t(G,{variant:"ghost",size:"icon-sm","aria-label":"Clear frames",disabled:e(a).length===0,onClick:i[6]||(i[6]=v=>e(V)())},{default:r(()=>[t(e(Qe),{class:"size-3.5"})]),_:1},8,["disabled"])])]),o("div",{ref_key:"pane",ref:F,class:"min-h-0 flex-1 overflow-auto border-y bg-muted/30 py-1 font-mono text-xs",onScroll:ee},[e(ie).length===0?(l(),p("p",ys,u(e(a).length?"No frame matches that filter.":"Nothing received yet."),1)):k("",!0),(l(!0),p(I,null,W(e(ie),v=>(l(),p("div",{key:v.id},[o("button",{type:"button",class:"flex w-full items-baseline gap-2 px-5 py-1 text-left hover:bg-muted/60",onClick:Qs=>L(v.id)},[o("span",vs,u(de(v.at)),1),o("span",xs,u(v.direction==="out"?"↑":v.direction==="system"?"·":"↓"),1),o("span",{class:re(["shrink-0 font-semibold",Q[e(Sn)(v)]])},u(v.tag),3),e(H).has(v.id)?k("",!0):(l(),p("span",bs,u(ne(v.body)),1))],8,hs),e(H).has(v.id)&&v.body?(l(),p("pre",_s,u(v.body),1)):k("",!0)]))),128))],544),o("div",ks,[o("div",ws,[t(_e,{"onUpdate:modelValue":i[7]||(i[7]=v=>te(String(v)))},{default:r(()=>[t(ve,{size:"sm",class:"w-44","aria-label":"Load a command template"},{default:r(()=>[t(oe,{placeholder:"Command…"})]),_:1}),t(be,null,{default:r(()=>[(l(!0),p(I,null,W(e($e),v=>(l(),R(xe,{key:v.tag,value:v.tag},{default:r(()=>[g(u(v.label),1),v.since?(l(),p("span",$s," · "+u(v.since),1)):k("",!0)]),_:2},1032,["value"]))),128))]),_:1})]),_:1}),i[21]||(i[21]=o("p",{class:"min-w-0 flex-1 truncate text-xs text-muted-foreground"}," Templates load into the box — read and edit before sending. ",-1))]),t(ke,{modelValue:e(z),"onUpdate:modelValue":i[8]||(i[8]=v=>Z(z)?z.value=v:null),rows:"3",spellcheck:"false",placeholder:'{ "tag": "Init" }',class:"min-h-20 font-mono text-xs",onKeydown:[ze(Me(S,["meta","prevent"]),["enter"]),ze(Me(S,["ctrl","prevent"]),["enter"])]},null,8,["modelValue","onKeydown"]),o("div",Ss,[t(G,{size:"sm",disabled:!e(m)||!e(z).trim(),onClick:S},{default:r(()=>[t(e(an),{class:"size-3.5"}),i[22]||(i[22]=g(" Send ",-1))]),_:1},8,["disabled"]),i[23]||(i[23]=o("span",{class:"text-[11px] text-muted-foreground"},"⌘/Ctrl + Enter",-1)),e(y)?(l(),p("p",Cs,[t(e(Xt),{class:"size-3.5 shrink-0"}),g(u(e(y)),1)])):k("",!0)])])]),_:1}),t(ae,{value:"resources",class:"mt-0 min-h-0 flex-1 overflow-auto px-5 pb-5"},{default:r(()=>[e(N)==="resources"?(l(),R(T,{key:0,"head-id":n.headId,"selected-node-id":n.node?.id,running:n.headRunning},null,8,["head-id","selected-node-id","running"])):k("",!0)]),_:1}),t(ae,{value:"connect",class:"mt-0 min-h-0 flex-1 overflow-auto px-5 pb-5"},{default:r(()=>[t(nt,{url:e(P),"node-name":n.node?.name??""},null,8,["url","node-name"])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1},8,["open"]),t(lt,{open:e(O)!==null,title:`Send ${e(O)?.label} to ${n.node?.name}?`,"confirm-label":`Send ${e(O)?.label}`,"onUpdate:open":i[11]||(i[11]=v=>!v&&(O.value=null)),onConfirm:s},{default:r(()=>[o("p",null,u(e(O)?.description),1),i[24]||(i[24]=o("p",null,"This goes to one node, and the head is shared — the other nodes follow it. There is no way to take it back.",-1))]),_:1},8,["open","title","confirm-label"])],64)}}}),Us={key:2},Is={class:"mb-4 flex items-start justify-between gap-4"},Ns={class:"min-w-0"},Rs={class:"flex flex-wrap items-center gap-2.5 text-xl font-semibold tracking-tight"},Ps={class:"mt-0.5 text-sm text-muted-foreground"},Bs=["title"],Os=["title"],As={class:"flex shrink-0 gap-2"},zs={class:"list-disc pl-4"},Ms={class:"min-h-44 p-4"},Ds={key:0,class:"mb-3 flex items-center justify-between gap-3"},Vs={class:"text-xs font-medium text-muted-foreground"},Hs={key:1,class:"grid grid-cols-[132px_1fr] items-center gap-x-4 gap-y-2 text-xs"},Ls={class:"font-mono"},Fs={class:"font-mono tabular"},Es={key:1,class:"text-muted-foreground"},js={key:1,class:"text-muted-foreground"},qs={class:"font-mono"},Gs={class:"font-mono tabular"},Js={class:"mb-2 flex items-center justify-between"},Ws={class:"text-xs font-medium text-muted-foreground"},Ks={class:"max-h-80 overflow-auto rounded-md bg-muted/60 p-3 font-mono text-xs whitespace-pre-wrap"},Xs={key:0,class:"text-sm text-muted-foreground"},Ys={class:"w-32 shrink-0 font-mono text-muted-foreground tabular"},Zs={class:"text-muted-foreground"},bo=K({__name:"index",setup(n){const c=_t(),d=qt(),f=Gt(),w=Xe(),m=A(()=>Number(c.params.id)),a=U(null),_=U(null),P=U(!1),C=U(Number(c.params.nodeIndex??0)||0),x=U("node"),b=U(""),h=U("200"),V=U([]);Jt({title:()=>`${a.value?.name??"Head"} · Hexcore`});const B=A(()=>a.value?.nodes.find(S=>S.index===C.value)),N=A(()=>_.value?.nodes.find(S=>S.nodeId===B.value?.id)),z=A(()=>a.value?Et(a.value,jt(a.value,null),d.dockerOk):null),y=A(()=>{const S=a.value?.hydraNodeImage;return S?Lt(S)?.label??S:""}),M=A(()=>Object.keys(a.value?.protocolParameterOverrides??{}).length),O=A(()=>M.value?Object.keys(a.value.protocolParameterOverrides).join(", "):"");async function F(){try{a.value=await w.get(`/api/heads/${m.value}`),_.value=a.value.status==="RUNNING"||a.value.status==="STARTING"?await d.liveStatus(m.value):null}catch(S){if(S instanceof me&&S.code==="HEAD_NOT_FOUND"){P.value=!0;return}throw S}}const j=Pt(F,{interval:()=>Ft(a.value?.status??"CONFIGURED")}),H=Bt({onDeleted:()=>{j.stop(),De("/heads")},onReset:()=>{F()}});Ue(()=>{d.fetchHealth().catch(()=>{}),j.start()}),le(C,S=>{const s=S===0?`/heads/${m.value}`:`/heads/${m.value}/nodes/${S}`;c.path!==s&&De(s,{replace:!0})}),le([x,C,h],async()=>{x.value==="log"&&await ie(),x.value==="events"&&await fe()});async function ie(){if(B.value)try{const S=await w.get(`/api/heads/${m.value}/nodes/${C.value}/logs?tail=${h.value}`);b.value=S.logs||"(no output yet)"}catch(S){b.value=S instanceof me?`Could not read logs: ${S.message}`:"Could not read logs."}}async function fe(){try{V.value=await w.get(`/api/heads/${m.value}/events`)}catch{V.value=[]}}const Q=U(null),ee=U(null);async function te(S){if(!a.value)return;const s=a.value.name;(S==="start"||S==="restart")&&(Q.value=m.value);try{await d.runAction(m.value,S),f.success(`${s} ${S==="stop"?"stopped":S==="start"?"is running":"restarted"}`)}catch(E){f.error(`Could not ${S} ${s}`,E instanceof me?E.message:void 0)}finally{await F()}}return(S,s)=>{const E=rt,L=Se,de=pt,ne=mt,$=Ee,i=pe,X=gt,ue=Ce,ce=Te,ge=bn,q=Be,ye=Pe,se=Ze,Y=et,G=Ge,he=qe,oe=We,ve=Je,xe=je,be=Re,_e=Ot,ke=At,ae=Ts;return e(P)?(l(),R(ne,{key:0},{default:r(()=>[t(de,{class:"py-12 text-center"},{default:r(()=>[s[15]||(s[15]=o("h1",{class:"mb-1 text-lg font-semibold"},"Head not found",-1)),s[16]||(s[16]=o("p",{class:"mb-4 text-sm text-muted-foreground"},"It may have been deleted.",-1)),t(L,{variant:"outline","as-child":""},{default:r(()=>[t(E,{to:"/heads"},{default:r(()=>[...s[14]||(s[14]=[g("Back to heads",-1)])]),_:1})]),_:1})]),_:1})]),_:1})):e(a)?(l(),p("div",Us,[t(L,{variant:"ghost",size:"sm",class:"mb-3 -ml-3","as-child":""},{default:r(()=>[t(E,{to:"/heads"},{default:r(()=>[t(e(Ht),{class:"size-4"}),s[17]||(s[17]=g(" All heads",-1))]),_:1})]),_:1}),o("div",Is,[o("div",Ns,[o("h1",Rs,[g(u(e(a).name)+" ",1),t(i,{status:e(a).status,size:"md"},null,8,["status"]),e(a).status==="RUNNING"?(l(),R(i,{key:0,"hydra-state":e(_)?.hydraState??e(a).hydraState,size:"md"},null,8,["hydra-state"])):k("",!0)]),o("p",Ps,[g(u(e(a).nodes.length)+" node"+u(e(a).nodes.length>1?"s":"")+" · ",1),e(a).offline?(l(),p(I,{key:0},[g("offline · seed "+u(e(a).offline.headSeed.slice(0,8))+"…",1)],64)):(l(),p(I,{key:1},[g("contestation "+u(e(a).contestationPeriod)+"s · deposit "+u(e(a).depositPeriod)+"s",1)],64)),g(" · "+u(e(a).network)+" ",1),e(y)?(l(),p(I,{key:2},[s[18]||(s[18]=g(" · ",-1)),o("span",{title:e(a).hydraNodeImage},u(e(y)),9,Bs)],64)):k("",!0),e(O)?(l(),p(I,{key:3},[s[19]||(s[19]=g(" · ",-1)),o("span",{title:e(O)},u(e(M))+" pinned param(s)",9,Os)],64)):k("",!0)])]),o("div",As,[t(L,{variant:"outline",size:"icon-sm","aria-label":"Refresh",onClick:s[0]||(s[0]=T=>F())},{default:r(()=>[t(e(Ye),{class:"size-4"})]),_:1}),e(a).status==="RUNNING"?(l(),p(I,{key:0},[t(L,{variant:"outline",size:"sm",disabled:e(d).isBusy(e(a).id),onClick:s[1]||(s[1]=T=>te("restart"))},{default:r(()=>[...s[20]||(s[20]=[g(" Restart ",-1)])]),_:1},8,["disabled"]),t(L,{variant:"outline",size:"sm",disabled:e(d).isBusy(e(a).id),onClick:s[2]||(s[2]=T=>te("stop"))},{default:r(()=>[...s[21]||(s[21]=[g(" Stop ",-1)])]),_:1},8,["disabled"])],64)):(l(),R(L,{key:1,size:"sm",disabled:!e(z)?.canStart||e(d).isBusy(e(a).id),title:e(z)?.startBlockedReason,onClick:s[3]||(s[3]=T=>te("start"))},{default:r(()=>[e(d).isBusy(e(a).id)?(l(),R(e(ft),{key:0,class:"size-4 animate-spin"})):k("",!0),g(" "+u(e(a).status==="FAILED"?"Retry":"Start"),1)]),_:1},8,["disabled","title"])),e(z)?.canEdit?(l(),R(L,{key:2,variant:"outline",size:"sm","as-child":""},{default:r(()=>[t(E,{to:`/heads/${e(a).id}/edit`},{default:r(()=>[...s[22]||(s[22]=[g("Edit",-1)])]),_:1},8,["to"])]),_:1})):k("",!0),e(z)?.canReset?(l(),R(L,{key:3,variant:"outline",size:"sm",disabled:e(d).isBusy(e(a).id),title:"Wipe this head's Hydra persistence and start over. Keys and addresses are kept.",onClick:s[4]||(s[4]=T=>e(H).askReset(e(a)))},{default:r(()=>[...s[23]||(s[23]=[g(" Reset ",-1)])]),_:1},8,["disabled"])):k("",!0),t(L,{variant:"outline",size:"icon-sm","aria-label":"Delete head",title:"Delete head",class:"text-destructive hover:bg-destructive-soft hover:text-destructive",disabled:e(d).isBusy(e(a).id)||!e(z)?.canDelete,onClick:s[5]||(s[5]=T=>e(H).askDelete(e(a)))},{default:r(()=>[t(e(Qe),{class:"size-4"})]),_:1},8,["disabled"])])]),e(a).lastError?(l(),R(ce,{key:0,variant:"destructive",class:"mb-4"},{default:r(()=>[t(X,null,{default:r(()=>[...s[24]||(s[24]=[g("Last error",-1)])]),_:1}),t(ue,null,{default:r(()=>[g(u(e(a).lastError),1)]),_:1})]),_:1})):k("",!0),e(_)?.degraded?(l(),R(ce,{key:1,class:"mb-4"},{default:r(()=>[t(X,null,{default:r(()=>[g(" Degraded — "+u(e(_).containersRunning)+"/"+u(e(a).nodeCount)+" node(s) running ",1)]),_:1}),t(ue,null,{default:r(()=>[o("ul",zs,[(l(!0),p(I,null,W(e(_).degradedReasons,T=>(l(),p("li",{key:T},u(T),1))),128))])]),_:1})]),_:1})):k("",!0),t(ne,{class:"overflow-hidden py-0"},{default:r(()=>[t(ge,{head:e(a),live:e(_)?.nodes,"selected-index":e(C),onSelect:s[6]||(s[6]=T=>C.value=T)},null,8,["head","live","selected-index"]),t(be,{modelValue:e(x),"onUpdate:modelValue":s[9]||(s[9]=T=>Z(x)?x.value=T:null),class:"gap-0 border-t"},{default:r(()=>[t(ye,{class:"m-3 mb-0"},{default:r(()=>[t(q,{value:"node"},{default:r(()=>[t(e(ln)),s[25]||(s[25]=g(" Node",-1))]),_:1}),t(q,{value:"log"},{default:r(()=>[t(e(on)),s[26]||(s[26]=g(" Container log",-1))]),_:1}),t(q,{value:"events"},{default:r(()=>[t(e(en)),s[27]||(s[27]=g(" Head events",-1))]),_:1})]),_:1}),o("div",Ms,[t(Y,{value:"node",class:"mt-0"},{default:r(()=>[e(B)?(l(),p("div",Ds,[o("span",Vs,u(e(B).name),1),t(L,{variant:"outline",size:"sm",disabled:e(a).status!=="RUNNING",title:e(a).status==="RUNNING"?"Connect to this node, watch its frames and send commands":"The head must be running before a node can answer",onClick:s[7]||(s[7]=T=>ee.value=e(B))},{default:r(()=>[t(e(rn),{class:"size-4"}),s[28]||(s[28]=g(" Console ",-1))]),_:1},8,["disabled","title"])])):k("",!0),e(B)?(l(),p("dl",Hs,[s[36]||(s[36]=o("dt",{class:"text-muted-foreground"},"Container",-1)),o("dd",Ls,u(e(B).name),1),s[37]||(s[37]=o("dt",{class:"text-muted-foreground"},"Ports",-1)),o("dd",Fs," api "+u(e(B).apiPort)+" · p2p "+u(e(B).p2pPort)+" · metrics "+u(e(B).monitoringPort),1),s[38]||(s[38]=o("dt",{class:"text-muted-foreground"},"Cardano address",-1)),o("dd",null,[e(B).cardanoAddress?(l(),R(se,{key:0,value:e(B).cardanoAddress,truncate:24,label:"address"},null,8,["value"])):(l(),p("span",Es,"—"))]),s[39]||(s[39]=o("dt",{class:"text-muted-foreground"},"Hydra vkey",-1)),o("dd",null,[e(B).hydraVkey?(l(),R(se,{key:0,value:e(B).hydraVkey,truncate:24,label:"vkey"},null,8,["value"])):(l(),p("span",js,"—"))]),e(N)?(l(),p(I,{key:0},[s[35]||(s[35]=o("dt",{class:"text-muted-foreground"},"Hydra state",-1)),o("dd",null,[t(i,{"hydra-state":e(N).hydraState},null,8,["hydra-state"])]),e(N).version?(l(),p(I,{key:0},[s[29]||(s[29]=o("dt",{class:"text-muted-foreground"},"Node version",-1)),o("dd",qs,u(e(N).version),1)],64)):k("",!0),e(N).snapshotUtxoCount!==void 0?(l(),p(I,{key:1},[s[30]||(s[30]=o("dt",{class:"text-muted-foreground"},"Snapshot UTxOs",-1)),o("dd",Gs,u(e(N).snapshotUtxoCount),1)],64)):k("",!0),e(N).peersDown?.length?(l(),p(I,{key:2},[s[31]||(s[31]=o("dt",{class:"text-muted-foreground"},"Peers lost",-1)),o("dd",null,[t(i,{tone:"danger",label:e(N).peersDown.join(", "),plain:""},null,8,["label"])])],64)):k("",!0),e(N).networkConnected===!1?(l(),p(I,{key:3},[s[32]||(s[32]=o("dt",{class:"text-muted-foreground"},"Hydra network",-1)),o("dd",null,[t(i,{tone:"danger",label:"disconnected",plain:""})])],64)):k("",!0),e(N).chainSynced?(l(),p(I,{key:4},[s[33]||(s[33]=o("dt",{class:"text-muted-foreground"},"Chain sync",-1)),o("dd",null,[t(i,{tone:e(N).chainSynced==="InSync"?"success":"warning",label:e(N).chainSynced==="InSync"?"in sync":"catching up",plain:""},null,8,["tone","label"])])],64)):k("",!0),e(N).error?(l(),p(I,{key:5},[s[34]||(s[34]=o("dt",{class:"text-muted-foreground"},"Error",-1)),o("dd",null,[t(i,{tone:"danger",label:e(N).error,plain:""},null,8,["label"])])],64)):k("",!0)],64)):k("",!0)])):k("",!0)]),_:1}),t(Y,{value:"log",class:"mt-0"},{default:r(()=>[o("div",Js,[o("span",Ws,u(e(B)?.name),1),t(xe,{modelValue:e(h),"onUpdate:modelValue":s[8]||(s[8]=T=>Z(h)?h.value=T:null)},{default:r(()=>[t(he,{size:"sm",class:"w-32","aria-label":"Lines to tail"},{default:r(()=>[t(G)]),_:1}),t(ve,null,{default:r(()=>[t(oe,{value:"100"},{default:r(()=>[...s[40]||(s[40]=[g("100 lines",-1)])]),_:1}),t(oe,{value:"500"},{default:r(()=>[...s[41]||(s[41]=[g("500 lines",-1)])]),_:1}),t(oe,{value:"2000"},{default:r(()=>[...s[42]||(s[42]=[g("2000 lines",-1)])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),o("pre",Ks,u(e(b)||"Loading…"),1)]),_:1}),t(Y,{value:"events",class:"mt-0"},{default:r(()=>[e(V).length===0?(l(),p("p",Xs,"No events recorded.")):k("",!0),(l(!0),p(I,null,W(e(V),T=>(l(),p("div",{key:T.id,class:"flex items-baseline gap-3 py-1 text-xs"},[o("span",Ys,u(T.created_at),1),o("span",{class:re(["w-28 shrink-0 font-semibold",T.level==="error"?"text-destructive":"text-foreground"])},u(T.kind),3),o("span",Zs,u(T.message),1)]))),128))]),_:1})])]),_:1},8,["modelValue"])]),_:1}),t(_e,{head:e(H).target.value,kind:e(H).kind.value,loading:e(H).busy.value,onClose:s[10]||(s[10]=T=>e(H).close()),onConfirm:s[11]||(s[11]=T=>e(H).run())},null,8,["head","kind","loading"]),t(ke,{"head-id":e(Q),"head-name":e(a).name,onClose:s[12]||(s[12]=T=>Q.value=null)},null,8,["head-id","head-name"]),t(ae,{node:e(ee),"head-id":e(a).id,"head-name":e(a).name,"head-running":e(a).status==="RUNNING",onClose:s[13]||(s[13]=T=>ee.value=null)},null,8,["node","head-id","head-name","head-running"])])):(l(),R(ne,{key:1},{default:r(()=>[t(de,{class:"space-y-3 pt-6"},{default:r(()=>[t($,{class:"h-6 w-56"}),t($,{class:"h-4 w-full"}),t($,{class:"h-4 w-3/5"})]),_:1})]),_:1}))}}});export{bo as _};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as e}from"./CS3KqpH_.js";const a=e("Trash2Icon",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);export{a as T};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as a}from"./CT-yt694.js";import{_ as i,o as u,c,a as e,t as r,b as l,w as d,d as p}from"./CgPLsCeU.js";import{u as f}from"./C1YRg2ic.js";const m={class:"antialiased bg-white dark:bg-black dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-black"},g={class:"max-w-520px text-center z-20"},h=["textContent"],b=["textContent"],x={class:"flex items-center justify-center w-full"},y={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},status:{type:Number,default:404},statusText:{type:String,default:"Not Found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(t){const n=t;return f({title:`${n.status} - ${n.statusText} | ${n.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(k,o)=>{const s=a;return u(),c("div",m,[o[0]||(o[0]=e("div",{class:"fixed left-0 right-0 spotlight z-10"},null,-1)),e("div",g,[e("h1",{class:"font-medium mb-8 sm:text-10xl text-8xl",textContent:r(t.status)},null,8,h),e("p",{class:"font-light leading-tight mb-16 px-8 sm:px-0 sm:text-4xl text-xl",textContent:r(t.description)},null,8,b),e("div",x,[l(s,{to:"/",class:"cursor-pointer gradient-border px-4 py-2 sm:px-6 sm:py-3 sm:text-xl text-md"},{default:d(()=>[p(r(t.backHome),1)]),_:1})])])])}}},z=i(y,[["__scopeId","data-v-e35e5876"]]);export{z as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as ee}from"./CT-yt694.js";import{j as te,q as oe,s as ae,u as B,P as F,v as V,f as re,n as M,c as U,r as G,d as Y,e as se,b as ne,a as le,_ as ie}from"./CS3KqpH_.js";import{G as j,r as O,e as h,o as v,j as _,w as d,z as m,c as D,I as k,h as a,b as g,E as ue,y as C,O as $,P as L,Q as de,B as pe,m as W,d as S,t as N,g as ce,Z as fe,U as X,a8 as ve,u as ge,f as ye,a as x,F as K,q as _e,k as I}from"./CgPLsCeU.js";import{_ as he}from"./DPihKXdt.js";import{c as Q,D as me,d as be,b as z,P as we,T as xe,a as Ce}from"./CnOqDT9k.js";import{i as Te,P as qe,a as ke,V as Be,b as Pe}from"./CZK6xUH-.js";import{_ as De}from"./BFh8Ai0L.js";import{u as Oe}from"./BgPn4NJH.js";import{N as Se}from"./DgDlQiDU.js";import{T as Ne}from"./DL9i0ayn.js";function Ae(t,o){const e=te(!1,300);oe(()=>{e.value=!1});const s=O(null),r=ae();function n(){s.value=null,e.value=!1}function l(p,u){if(!u)return;const f=p.currentTarget,i={x:p.clientX,y:p.clientY},c=$e(i,f.getBoundingClientRect()),y=Le(i,c,1),T=Re(u.getBoundingClientRect()),q=He([...y,...T]);s.value=q,e.value=!0}return j(p=>{if(t.value&&o.value){const u=i=>l(i,o.value),f=i=>l(i,t.value);t.value.addEventListener("pointerleave",u),o.value.addEventListener("pointerleave",f),p(()=>{t.value?.removeEventListener("pointerleave",u),o.value?.removeEventListener("pointerleave",f)})}}),j(p=>{if(s.value){const u=f=>{if(!s.value||!(f.target instanceof Element))return;const i=f.target,c={x:f.clientX,y:f.clientY},y=t.value?.contains(i)||o.value?.contains(i),T=!Ee(c,s.value),q=!!i.closest("[data-grace-area-trigger]");y?n():(T||q)&&(n(),r.trigger())};t.value?.ownerDocument.addEventListener("pointermove",u),p(()=>t.value?.ownerDocument.removeEventListener("pointermove",u))}}),{isPointerInTransit:e,onPointerExit:r.on}}function $e(t,o){const e=Math.abs(o.top-t.y),s=Math.abs(o.bottom-t.y),r=Math.abs(o.right-t.x),n=Math.abs(o.left-t.x);switch(Math.min(e,s,r,n)){case n:return"left";case r:return"right";case e:return"top";case s:return"bottom";default:throw new Error("unreachable")}}function Le(t,o,e=5){const s=[];switch(o){case"top":s.push({x:t.x-e,y:t.y+e},{x:t.x+e,y:t.y+e});break;case"bottom":s.push({x:t.x-e,y:t.y-e},{x:t.x+e,y:t.y-e});break;case"left":s.push({x:t.x+e,y:t.y-e},{x:t.x+e,y:t.y+e});break;case"right":s.push({x:t.x-e,y:t.y-e},{x:t.x-e,y:t.y+e});break}return s}function Re(t){const{top:o,right:e,bottom:s,left:r}=t;return[{x:r,y:o},{x:e,y:o},{x:e,y:s},{x:r,y:s}]}function Ee(t,o){const{x:e,y:s}=t;let r=!1;for(let n=0,l=o.length-1;n<o.length;l=n++){const p=o[n].x,u=o[n].y,f=o[l].x,i=o[l].y;u>s!=i>s&&e<(f-p)*(s-u)/(i-u)+p&&(r=!r)}return r}function He(t){const o=t.slice();return o.sort((e,s)=>e.x<s.x?-1:e.x>s.x?1:e.y<s.y?-1:e.y>s.y?1:0),Ie(o)}function Ie(t){if(t.length<=1)return t.slice();const o=[];for(let s=0;s<t.length;s++){const r=t[s];for(;o.length>=2;){const n=o.at(-1),l=o[o.length-2];if((n.x-l.x)*(r.y-l.y)>=(n.y-l.y)*(r.x-l.x))o.pop();else break}o.push(r)}o.pop();const e=[];for(let s=t.length-1;s>=0;s--){const r=t[s];for(;e.length>=2;){const n=e.at(-1),l=e[e.length-2];if((n.x-l.x)*(r.y-l.y)>=(n.y-l.y)*(r.x-l.x))e.pop();else break}e.push(r)}return e.pop(),o.length===1&&e.length===1&&o[0].x===e[0].x&&o[0].y===e[0].y?o:o.concat(e)}const Fe={key:0,d:"M0 0L6 6L12 0"},ze={key:1,d:"M0 0L4.58579 4.58579C5.36683 5.36683 6.63316 5.36684 7.41421 4.58579L12 0"};var Me=h({__name:"Arrow",props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},rounded:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"svg"}},setup(t){const o=t;return B(),(e,s)=>(v(),_(a(F),k(o,{width:e.width,height:e.height,viewBox:e.asChild?void 0:"0 0 12 6",preserveAspectRatio:e.asChild?void 0:"none"}),{default:d(()=>[m(e.$slots,"default",{},()=>[e.rounded?(v(),D("path",ze)):(v(),D("path",Fe))])]),_:3},16,["width","height","viewBox","preserveAspectRatio"]))}}),je=Me;const Ke={top:"bottom",right:"left",bottom:"top",left:"right"};var Ve=h({inheritAttrs:!1,__name:"PopperArrow",props:{width:{type:Number,required:!1},height:{type:Number,required:!1},rounded:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"svg"}},setup(t){const{forwardRef:o}=B(),e=Te(),s=C(()=>Ke[e.placedSide.value]);return(r,n)=>(v(),D("span",{ref:l=>{a(e).onArrowChange(l??void 0)},style:ue({position:"absolute",left:a(e).arrowX?.value?`${a(e).arrowX?.value}px`:void 0,top:a(e).arrowY?.value?`${a(e).arrowY?.value}px`:void 0,[s.value]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[a(e).placedSide.value],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[a(e).placedSide.value],visibility:a(e).shouldHideArrow.value?"hidden":void 0})},[g(je,k(r.$attrs,{ref:a(o),style:{display:"block"},as:r.as,"as-child":r.asChild,rounded:r.rounded,width:r.width,height:r.height}),{default:d(()=>[m(r.$slots,"default")]),_:3},16,["as","as-child","rounded","width","height"])],4))}}),Ue=Ve,Ge=h({__name:"TooltipArrow",props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"svg"}},setup(t){const o=t;return B(),(e,s)=>(v(),_(a(Ue),$(L(o)),{default:d(()=>[m(e.$slots,"default")]),_:3},16))}}),Ye=Ge;const[R,We]=Q("TooltipProvider");var Xe=h({inheritAttrs:!1,__name:"TooltipProvider",props:{delayDuration:{type:Number,required:!1,default:700},skipDelayDuration:{type:Number,required:!1,default:300},disableHoverableContent:{type:Boolean,required:!1,default:!1},disableClosingTrigger:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},ignoreNonKeyboardFocus:{type:Boolean,required:!1,default:!1},content:{type:Object,required:!1}},setup(t){const o=t,{delayDuration:e,skipDelayDuration:s,disableHoverableContent:r,disableClosingTrigger:n,ignoreNonKeyboardFocus:l,disabled:p,content:u}=de(o);B();const f=O(!0),i=O(!1),{start:c,stop:y}=V(()=>{f.value=!0},s,{immediate:!1});return We({isOpenDelayed:f,delayDuration:e,onOpen(){y(),f.value=!1},onClose(){c()},isPointerInTransitRef:i,disableHoverableContent:r,disableClosingTrigger:n,disabled:p,ignoreNonKeyboardFocus:l,content:u}),(T,q)=>m(T.$slots,"default")}}),Qe=Xe;const Z="tooltip.open",[E,Ze]=Q("TooltipRoot");var Je=h({__name:"TooltipRoot",props:{defaultOpen:{type:Boolean,required:!1,default:!1},open:{type:Boolean,required:!1,default:void 0},delayDuration:{type:Number,required:!1,default:void 0},disableHoverableContent:{type:Boolean,required:!1,default:void 0},disableClosingTrigger:{type:Boolean,required:!1,default:void 0},disabled:{type:Boolean,required:!1,default:void 0},ignoreNonKeyboardFocus:{type:Boolean,required:!1,default:void 0}},emits:["update:open"],setup(t,{emit:o}){const e=t,s=o;B();const r=R(),n=C(()=>e.disableHoverableContent??r.disableHoverableContent.value),l=C(()=>e.disableClosingTrigger??r.disableClosingTrigger.value),p=C(()=>e.disabled??r.disabled.value),u=C(()=>e.delayDuration??r.delayDuration.value),f=C(()=>e.ignoreNonKeyboardFocus??r.ignoreNonKeyboardFocus.value),i=re(e,"open",s,{defaultValue:e.defaultOpen,passive:e.open===void 0});pe(i,w=>{r.onClose&&(w?(r.onOpen(),document.dispatchEvent(new CustomEvent(Z))):r.onClose())});const c=O(!1),y=O(),T=C(()=>i.value?c.value?"delayed-open":"instant-open":"closed"),{start:q,stop:P}=V(()=>{c.value=!0,i.value=!0},u,{immediate:!1});function b(){P(),c.value=!1,i.value=!0}function A(){P(),i.value=!1}function H(){q()}return Ze({contentId:"",open:i,stateAttribute:T,trigger:y,onTriggerChange(w){y.value=w},onTriggerEnter(){r.isOpenDelayed.value?H():b()},onTriggerLeave(){n.value?A():P()},onOpen:b,onClose:A,disableHoverableContent:n,disableClosingTrigger:l,disabled:p,ignoreNonKeyboardFocus:f}),(w,Bt)=>(v(),_(a(qe),null,{default:d(()=>[m(w.$slots,"default",{open:a(i)})]),_:3}))}}),et=Je,tt=h({__name:"TooltipContentImpl",props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1,default:void 0},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1,default:void 0},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1,default:void 0},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:["escapeKeyDown","pointerDownOutside"],setup(t,{emit:o}){const e=t,s=o,r=E(),n=R(),{forwardRef:l,currentElement:p}=B(),u=C(()=>e.ariaLabel||p.value?.textContent),f=C(()=>{const{ariaLabel:i,...c}=e;return fe(c,n.content.value??{},{side:"top",sideOffset:0,align:"center",avoidCollisions:!0,collisionBoundary:[],collisionPadding:0,arrowPadding:0,sticky:"partial",hideWhenDetached:!1})});return W(()=>{M(window,"scroll",i=>{i.target?.contains(r.trigger.value)&&r.onClose()},{capture:!0}),M(window,Z,r.onClose)}),(i,c)=>(v(),_(a(me),{"as-child":"","disable-outside-pointer-events":!1,onEscapeKeyDown:c[0]||(c[0]=y=>s("escapeKeyDown",y)),onPointerDownOutside:c[1]||(c[1]=y=>{a(r).disableClosingTrigger.value&&a(r).trigger.value?.contains(y.target)&&y.preventDefault(),s("pointerDownOutside",y)}),onFocusOutside:c[2]||(c[2]=ce(()=>{},["prevent"])),onDismiss:c[3]||(c[3]=y=>a(r).onClose())},{default:d(()=>[g(a(ke),k({ref:a(l),"data-state":a(r).stateAttribute.value},{...i.$attrs,...f.value},{style:{"--reka-tooltip-content-transform-origin":"var(--reka-popper-transform-origin)","--reka-tooltip-content-available-width":"var(--reka-popper-available-width)","--reka-tooltip-content-available-height":"var(--reka-popper-available-height)","--reka-tooltip-trigger-width":"var(--reka-popper-anchor-width)","--reka-tooltip-trigger-height":"var(--reka-popper-anchor-height)"}}),{default:d(()=>[m(i.$slots,"default"),g(a(Be),{id:a(r).contentId,role:"tooltip"},{default:d(()=>[S(N(u.value),1)]),_:1},8,["id"])]),_:3},16,["data-state"])]),_:3}))}}),J=tt,ot=h({__name:"TooltipContentHoverable",props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},setup(t){const e=be(t),{forwardRef:s,currentElement:r}=B(),{trigger:n,onClose:l}=E(),p=R(),{isPointerInTransit:u,onPointerExit:f}=Ae(n,r);return p.isPointerInTransitRef=u,f(()=>{l()}),(i,c)=>(v(),_(J,k({ref:a(s)},a(e)),{default:d(()=>[m(i.$slots,"default")]),_:3},16))}}),at=ot,rt=h({__name:"TooltipContent",props:{forceMount:{type:Boolean,required:!1},ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:["escapeKeyDown","pointerDownOutside"],setup(t,{emit:o}){const e=t,s=o,r=E(),n=z(e,s),{forwardRef:l}=B();return(p,u)=>(v(),_(a(we),{present:p.forceMount||a(r).open.value},{default:d(()=>[(v(),_(X(a(r).disableHoverableContent.value?J:at),k({ref:a(l)},a(n)),{default:d(()=>[m(p.$slots,"default")]),_:3},16))]),_:3},8,["present"]))}}),st=rt,nt=h({__name:"TooltipPortal",props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(t){const o=t;return(e,s)=>(v(),_(a(xe),$(L(o)),{default:d(()=>[m(e.$slots,"default")]),_:3},16))}}),lt=nt,it=h({__name:"TooltipTrigger",props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(t){const o=t,e=E(),s=R();e.contentId||=Ce(void 0,"reka-tooltip-content");const{forwardRef:r,currentElement:n}=B(),l=O(!1),p=O(!1),u=C(()=>e.disabled.value?{}:{click:P,focus:T,pointermove:c,pointerleave:y,pointerdown:i,blur:q});W(()=>{e.onTriggerChange(n.value)});function f(){setTimeout(()=>{l.value=!1},1)}function i(){e.open&&!e.disableClosingTrigger.value&&e.onClose(),l.value=!0,document.addEventListener("pointerup",f,{once:!0})}function c(b){b.pointerType!=="touch"&&!p.value&&!s.isPointerInTransitRef.value&&(e.onTriggerEnter(),p.value=!0)}function y(){e.onTriggerLeave(),p.value=!1}function T(b){l.value||e.ignoreNonKeyboardFocus.value&&!b.target.matches?.(":focus-visible")||e.onOpen()}function q(){e.onClose()}function P(){e.disableClosingTrigger.value||e.onClose()}return(b,A)=>(v(),_(a(Pe),{"as-child":"",reference:b.reference},{default:d(()=>[g(a(F),k({ref:a(r),"aria-describedby":a(e).open.value?a(e).contentId:void 0,"data-state":a(e).stateAttribute.value,as:b.as,"as-child":o.asChild,"data-grace-area-trigger":""},ve(u.value)),{default:d(()=>[m(b.$slots,"default")]),_:3},16,["aria-describedby","data-state","as","as-child"])]),_:3},8,["reference"]))}}),ut=it;const dt=U("LogOutIcon",[["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}],["polyline",{points:"16 17 21 12 16 7",key:"1gabdz"}],["line",{x1:"21",x2:"9",y1:"12",y2:"12",key:"1uyos4"}]]);const pt=U("SettingsIcon",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]),ct=h({__name:"Badge",props:{asChild:{type:Boolean},as:{},variant:{},class:{type:[Boolean,null,String,Object,Array]}},setup(t){const o=t,e=G(o,"class");return(s,r)=>(v(),_(a(F),k({"data-slot":"badge",class:a(Y)(a(ft)({variant:t.variant}),o.class)},a(e)),{default:d(()=>[m(s.$slots,"default")]),_:3},16,["class"]))}}),ft=se("inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"}},defaultVariants:{variant:"default"}}),vt=h({__name:"Tooltip",props:{defaultOpen:{type:Boolean},open:{type:Boolean},delayDuration:{},disableHoverableContent:{type:Boolean},disableClosingTrigger:{type:Boolean},disabled:{type:Boolean},ignoreNonKeyboardFocus:{type:Boolean}},emits:["update:open"],setup(t,{emit:o}){const r=z(t,o);return(n,l)=>(v(),_(a(et),k({"data-slot":"tooltip"},a(r)),{default:d(p=>[m(n.$slots,"default",$(L(p)))]),_:3},16))}}),gt=h({inheritAttrs:!1,__name:"TooltipContent",props:{forceMount:{type:Boolean},ariaLabel:{},asChild:{type:Boolean},as:{},side:{},sideOffset:{default:4},align:{},alignOffset:{},avoidCollisions:{type:Boolean},collisionBoundary:{},collisionPadding:{},arrowPadding:{},sticky:{},hideWhenDetached:{type:Boolean},positionStrategy:{},updatePositionStrategy:{},class:{type:[Boolean,null,String,Object,Array]}},emits:["escapeKeyDown","pointerDownOutside"],setup(t,{emit:o}){const e=t,s=o,r=G(e,"class"),n=z(r,s);return(l,p)=>(v(),_(a(lt),null,{default:d(()=>[g(a(st),k({"data-slot":"tooltip-content"},{...a(n),...l.$attrs},{class:a(Y)("bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit rounded-md px-3 py-1.5 text-xs text-balance",e.class)}),{default:d(()=>[m(l.$slots,"default"),g(a(Ye),{class:"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-xs"})]),_:3},16,["class"])]),_:3}))}}),yt=h({__name:"TooltipProvider",props:{delayDuration:{default:0},skipDelayDuration:{},disableHoverableContent:{type:Boolean},disableClosingTrigger:{type:Boolean},disabled:{type:Boolean},ignoreNonKeyboardFocus:{type:Boolean},content:{}},setup(t){const o=t;return(e,s)=>(v(),_(a(Qe),$(L(o)),{default:d(()=>[m(e.$slots,"default")]),_:3},16))}}),_t=h({__name:"TooltipTrigger",props:{reference:{},asChild:{type:Boolean},as:{}},setup(t){const o=t;return(e,s)=>(v(),_(a(ut),k({"data-slot":"tooltip-trigger"},o),{default:d(()=>[m(e.$slots,"default")]),_:3},16))}}),ht={class:"min-h-screen flex flex-col"},mt={class:"border-b bg-card"},bt={class:"mx-auto flex h-16 max-w-6xl items-center justify-between gap-4 px-6"},wt={class:"flex items-center gap-6"},xt={class:"hidden items-center gap-1 sm:flex"},Ct={class:"flex items-center gap-2"},Tt={class:"flex w-full max-w-6xl items-start gap-2 px-6"},qt={key:0,class:"mt-0.5 block text-xs opacity-80"},kt={class:"mx-auto w-full max-w-6xl flex-1 px-6 py-8"},Ht=h({__name:"default",setup(t){const o=ge(),e=Oe(),s=ye(),r=[{to:"/heads",label:"Hydra Heads",icon:Se},{to:"/settings",label:"Settings",icon:pt}],n=C(()=>e.health),l=C(()=>n.value&&!n.value.docker.ok);return(p,u)=>{const f=ee,i=ne,c=ct,y=he,T=_t,q=gt,P=vt,b=yt,A=le,H=ie;return v(),D("div",ht,[x("header",mt,[x("div",bt,[x("div",wt,[g(f,{to:"/heads",class:"flex items-center gap-2.5 rounded-md outline-none focus-visible:ring-2 focus-visible:ring-ring"},{default:d(()=>[...u[1]||(u[1]=[x("img",{src:De,alt:"",class:"size-8"},null,-1),x("span",{class:"leading-tight"},[x("span",{class:"block font-semibold tracking-tight"},"Hexcore"),x("span",{class:"block text-[11px] text-muted-foreground"},"v2 · control-plane")],-1)])]),_:1}),x("nav",xt,[(v(),D(K,null,_e(r,w=>g(i,{key:w.to,variant:a(s).path.startsWith(w.to)?"secondary":"ghost",size:"sm","as-child":""},{default:d(()=>[g(f,{to:w.to},{default:d(()=>[(v(),_(X(w.icon),{class:"size-4"})),S(" "+N(w.label),1)]),_:2},1032,["to"])]),_:2},1032,["variant"])),64))])]),x("div",Ct,[a(n)?(v(),D(K,{key:0},[g(c,{variant:"secondary",class:"hidden font-normal md:inline-flex"},{default:d(()=>[S(N(a(n).network),1)]),_:1}),g(c,{variant:"secondary",class:"hidden font-normal md:inline-flex"},{default:d(()=>[S(N(a(n).chainBackend),1)]),_:1}),g(y,{label:a(n).docker.ok?"docker healthy":"docker down",tone:a(n).docker.ok?"success":"danger",title:a(n).docker.error},null,8,["label","tone","title"])],64)):I("",!0),g(b,{"delay-duration":300},{default:d(()=>[g(P,null,{default:d(()=>[g(T,{"as-child":""},{default:d(()=>[g(i,{variant:"ghost",size:"icon","aria-label":"Sign out",onClick:u[0]||(u[0]=w=>a(o).logout())},{default:d(()=>[g(a(dt),{class:"size-4"})]),_:1})]),_:1}),g(q,null,{default:d(()=>[S(" Sign out"+N(a(o).username?` (${a(o).username})`:""),1)]),_:1})]),_:1})]),_:1})])])]),a(l)?(v(),_(H,{key:0,variant:"destructive",class:"flex justify-center rounded-none border-x-0 border-t-0"},{default:d(()=>[x("div",Tt,[g(a(Ne),{class:"mt-0.5 size-4 shrink-0"}),g(A,{class:"min-w-0 flex-1"},{default:d(()=>[u[2]||(u[2]=x("b",{class:"font-semibold"},"Docker is unreachable.",-1)),u[3]||(u[3]=S(" Heads cannot be started or stopped until it is back. ",-1)),a(n)?.docker.error?(v(),D("span",qt,N(a(n).docker.error),1)):I("",!0)]),_:1})])]),_:1})):I("",!0),x("main",kt,[m(p.$slots,"default")])])}}});export{Ht as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{E as at,u as ot,a as rt,_ as lt,b as dt,c as it,d as ut,e as ct,R as mt}from"./rS90pPZ_.js";import{c as O,d as z,e as ft,b as V,_ as K,a as Q}from"./CS3KqpH_.js";import{_ as X}from"./CT-yt694.js";import{_ as bt}from"./vSj9Ec0g.js";import{L as pt,_ as q,a as gt}from"./rhEiP908.js";import{_ as W}from"./DPihKXdt.js";import{C as xt,_ as tt}from"./CePNTU1S.js";import{e as I,o as a,c,F as A,q as D,a as l,s as R,h as s,j as v,d as u,t as g,E as yt,z as E,b as n,k as $,y as H,w as o,g as Y,r as et,m as Z,A as kt}from"./CgPLsCeU.js";import{d as vt,a as _t,b as st,c as nt,p as J}from"./Bj1xviSh.js";import{C as ht}from"./D3CwzwU0.js";import{C as $t}from"./CcdyYRYz.js";import{u as wt}from"./C1YRg2ic.js";import{u as Ct}from"./BgPn4NJH.js";import{u as Nt}from"./CGD7MYQH.js";import{N as St}from"./DgDlQiDU.js";import"./CnOqDT9k.js";import"./BnotlrL7.js";import"./CQcG7Bu4.js";const Tt=O("InfoIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);const Rt=O("LayoutGridIcon",[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]]);const At=O("PlusIcon",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);const It=O("TableIcon",[["path",{d:"M12 3v18",key:"108xh3"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M3 15h18",key:"5xshup"}]]);const Ut=O("XIcon",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),zt={class:"flex w-full items-center"},Bt=I({__name:"HeadStepper",props:{steps:{}},setup(e){const d={done:"bg-primary text-primary-foreground border-primary",active:"bg-primary text-primary-foreground border-primary",pending:"bg-muted text-muted-foreground border-border",failed:"bg-destructive text-destructive-foreground border-destructive"},i={done:"text-muted-foreground",active:"text-foreground font-medium",pending:"text-muted-foreground",failed:"text-destructive font-medium"};return(y,h)=>(a(),c("ol",{class:"grid",style:yt({gridTemplateColumns:`repeat(${e.steps.length}, minmax(0, 1fr))`})},[(a(!0),c(A,null,D(e.steps,(x,k)=>(a(),c("li",{key:x.key,class:"flex min-w-0 flex-col items-center gap-1.5"},[l("div",zt,[l("span",{class:R(["h-0.5 flex-1 rounded-full",k===0?"bg-transparent":x.state==="failed"?"bg-destructive/30":e.steps[k-1]?.state==="done"?"bg-primary":"bg-border"])},null,2),l("span",{class:R(s(z)("grid size-5 shrink-0 place-items-center rounded-full border text-[10px] font-semibold",d[x.state]))},[x.state==="done"?(a(),v(s(xt),{key:0,class:"size-3"})):x.state==="failed"?(a(),v(s(Ut),{key:1,class:"size-3"})):(a(),c(A,{key:2},[u(g(k+1),1)],64))],2),l("span",{class:R(["h-0.5 flex-1 rounded-full",k===e.steps.length-1?"bg-transparent":e.steps[k+1]?.state==="failed"?"bg-destructive/30":x.state==="done"?"bg-primary":"bg-border"])},null,2)]),l("span",{class:R(s(z)("truncate text-center text-xs",i[x.state]))},g(x.state==="failed"?`${x.label} failed`:x.label),3)]))),128))],4))}}),Ht={class:"min-w-0 text-sm"},Dt={class:"break-words text-muted-foreground"},Lt={class:"flex shrink-0 gap-2"},Et=I({__name:"HeadActionBar",props:{bar:{}},setup(e){const d=ft("flex items-start justify-between gap-4 border-t px-5 py-3.5",{variants:{tone:{success:"bg-success-soft/60",warning:"bg-warning-soft/60",error:"bg-destructive-soft/60",neutral:"bg-muted/50"}},defaultVariants:{tone:"neutral"}}),i={success:"text-success-soft-foreground",warning:"text-warning-soft-foreground",error:"text-destructive-soft-foreground",neutral:"text-foreground"};return(y,h)=>(a(),c("div",{class:R(s(z)(s(d)({tone:e.bar.tone})))},[l("div",Ht,[l("b",{class:R(s(z)("block font-semibold",i[e.bar.tone]))},g(e.bar.title),3),l("span",Dt,g(e.bar.detail),1)]),l("div",Lt,[E(y.$slots,"default")])],2))}}),Ft={class:"px-5 pb-4"},Ot={class:"w-28 shrink-0 truncate text-xs font-semibold"},jt={key:1,class:"text-xs text-muted-foreground"},Gt={key:0,class:"mt-3 flex items-start gap-1.5 text-xs text-muted-foreground"},Mt="https://docs.cardano.org/cardano-testnets/tools/faucet",Pt=I({__name:"HeadFundList",props:{nodes:{},balances:{},network:{}},setup(e){const d=e,i=H(()=>d.network!=="mainnet");function y(k){return d.balances?.find(p=>p.index===k)?.lovelace}function h(k){return k==null?"—":`${(Number(BigInt(k))/1e6).toLocaleString(void 0,{maximumFractionDigits:2})} ${d.network==="mainnet"?"ADA":"tADA"}`}function x(k){const p=y(k);return p==null?"text-muted-foreground":BigInt(p)>0n?"text-success":"text-warning"}return(k,p)=>{const C=tt;return a(),c("div",Ft,[(a(!0),c(A,null,D(e.nodes,r=>(a(),c("div",{key:r.id,class:"flex items-center gap-3 border-b py-2.5 last:border-b-0"},[l("span",Ot,g(r.name),1),r.cardanoAddress?(a(),v(C,{key:0,value:r.cardanoAddress,truncate:22,label:"address",class:"min-w-0"},null,8,["value"])):(a(),c("span",jt,"no address")),p[0]||(p[0]=l("span",{class:"flex-1"},null,-1)),l("span",{class:R(["w-24 shrink-0 text-right text-xs font-semibold tabular",x(r.index)])},g(h(y(r.index))),3)]))),128)),e.balances?$("",!0):(a(),c("p",Gt,[n(s(Tt),{class:"mt-0.5 size-3.5 shrink-0"}),l("span",null,[p[2]||(p[2]=u(" Balances can't be read from here yet — check each address has funds before starting. ",-1)),s(i)?(a(),c("a",{key:0,href:Mt,target:"_blank",rel:"noopener",class:"inline-flex items-center gap-0.5 font-medium text-primary hover:underline"},[p[1]||(p[1]=u("Open the faucet ",-1)),n(s(at),{class:"size-3"})])):$("",!0)])]))])}}}),Vt={class:"flex items-start justify-between gap-4 px-5 pb-3.5 pt-4"},Xt={class:"min-w-0"},qt={class:"flex flex-wrap items-center gap-2.5 font-semibold"},Yt={key:0,class:"mt-0.5 truncate text-sm text-muted-foreground"},Zt={class:"mt-2 flex flex-wrap gap-x-4 gap-y-0.5 text-xs text-muted-foreground"},Jt={class:"font-medium text-foreground"},Kt={class:"font-medium text-foreground tabular"},Qt={class:"font-medium text-foreground tabular"},Wt={class:"font-medium text-foreground"},te={class:"flex shrink-0 gap-2"},ee={class:"px-5 pb-3.5"},se={key:0,class:"grid gap-2 px-5 pb-4 sm:grid-cols-2 lg:grid-cols-3"},ne={class:"block text-xs font-semibold"},ae={class:"mb-1.5 block font-mono text-[11px] text-muted-foreground tabular"},oe=I({__name:"HeadCard",props:{head:{},balances:{},busy:{type:Boolean},dockerOk:{type:Boolean},utxoCount:{}},emits:["start","stop","restart","reset","remove"],setup(e,{emit:d}){const i=e,y=d,h=H(()=>nt(i.head,i.balances)),x=H(()=>vt(i.head,h.value)),k=H(()=>_t(i.head,h.value,i.utxoCount)),p=H(()=>st(i.head,h.value,i.dockerOk??!0)),C=H(()=>i.head.status==="CONFIGURED"||i.head.status==="STOPPED");function r(t){const m=new Date(t.includes("T")?t:`${t.replace(" ","T")}Z`),N=Math.round((Date.now()-m.getTime())/1e3);return Number.isFinite(N)?N<60?"just now":N<3600?`${Math.floor(N/60)}m ago`:N<86400?`${Math.floor(N/3600)}h ago`:`${Math.floor(N/86400)}d ago`:t}return(t,m)=>{const N=X,S=W,T=V,B=Bt,U=Et,F=Pt,L=q;return a(),v(L,{class:"overflow-hidden py-0 gap-0"},{default:o(()=>[l("div",Vt,[l("div",Xt,[l("h3",qt,[n(N,{to:`/heads/${e.head.id}`,class:"rounded outline-none hover:text-primary focus-visible:ring-2 focus-visible:ring-ring"},{default:o(()=>[u(g(e.head.name),1)]),_:1},8,["to"]),n(S,{status:e.head.status},null,8,["status"]),e.head.status==="RUNNING"?(a(),v(S,{key:0,"hydra-state":e.head.hydraState},null,8,["hydra-state"])):$("",!0)]),e.head.description?(a(),c("p",Yt,g(e.head.description),1)):$("",!0),l("div",Zt,[l("span",null,[l("b",Jt,g(e.head.nodeCount),1),u(" node"+g(e.head.nodeCount>1?"s":""),1)]),l("span",null,[m[5]||(m[5]=u("contestation ",-1)),l("b",Kt,g(e.head.contestationPeriod)+"s",1)]),l("span",null,[m[6]||(m[6]=u("deposit ",-1)),l("b",Qt,g(e.head.depositPeriod)+"s",1)]),l("span",null,[m[7]||(m[7]=u("created ",-1)),l("b",Wt,g(r(e.head.createdAt)),1)])])]),l("div",te,[s(p).canReset?(a(),v(T,{key:0,variant:"outline",size:"sm",disabled:e.busy,onClick:m[0]||(m[0]=w=>y("reset"))},{default:o(()=>[...m[8]||(m[8]=[u(" Reset ",-1)])]),_:1},8,["disabled"])):$("",!0),e.head.status!=="RUNNING"?(a(),v(T,{key:1,size:"sm",disabled:!s(p).canStart||e.busy,title:s(p).startBlockedReason,onClick:m[1]||(m[1]=w=>y("start"))},{default:o(()=>[e.busy?(a(),v(s(pt),{key:0,class:"size-4 animate-spin"})):$("",!0),u(" "+g(e.head.status==="FAILED"?"Retry":"Start"),1)]),_:1},8,["disabled","title"])):(a(),c(A,{key:2},[n(T,{variant:"outline",size:"sm",disabled:!s(p).canRestart||e.busy,onClick:m[2]||(m[2]=w=>y("restart"))},{default:o(()=>[...m[9]||(m[9]=[u(" Restart ",-1)])]),_:1},8,["disabled"]),n(T,{variant:"outline",size:"sm",disabled:!s(p).canStop||e.busy,onClick:m[3]||(m[3]=w=>y("stop"))},{default:o(()=>[...m[10]||(m[10]=[u(" Stop ",-1)])]),_:1},8,["disabled"])],64))])]),l("div",ee,[n(B,{steps:s(x)},null,8,["steps"])]),s(C)?$("",!0):(a(),c("div",se,[(a(!0),c(A,null,D(e.head.nodes,w=>(a(),c("div",{key:w.id,class:"rounded-md border bg-muted/40 px-3 py-2"},[l("span",ne,g(w.name),1),l("span",ae," api "+g(w.apiPort)+" · p2p "+g(w.p2pPort),1),n(S,{status:w.status},null,8,["status"])]))),128))])),n(U,{bar:s(k)},{default:o(()=>[e.head.status==="FAILED"||e.head.status==="RUNNING"?(a(),v(T,{key:0,variant:"outline",size:"sm","as-child":""},{default:o(()=>[n(N,{to:`/heads/${e.head.id}`},{default:o(()=>[u(g(e.head.status==="FAILED"?"View log":"Inspect"),1)]),_:1},8,["to"])]),_:1})):$("",!0),e.head.status!=="RUNNING"?(a(),v(T,{key:1,variant:e.head.status==="FAILED"?"destructive":"outline",size:"sm",disabled:e.busy||!s(p).canDelete,onClick:m[4]||(m[4]=w=>y("remove"))},{default:o(()=>[...m[11]||(m[11]=[u(" Delete ",-1)])]),_:1},8,["variant","disabled"])):$("",!0)]),_:1},8,["bar"]),s(C)?(a(),v(F,{key:1,nodes:e.head.nodes,balances:e.balances,network:e.head.network},null,8,["nodes","balances","network"])):$("",!0)]),_:1})}}}),re={"data-slot":"table-container",class:"relative w-full overflow-auto"},le=I({__name:"Table",props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){const d=e;return(i,y)=>(a(),c("div",re,[l("table",{"data-slot":"table",class:R(s(z)("w-full caption-bottom text-sm",d.class))},[E(i.$slots,"default")],2)]))}}),de=I({__name:"TableBody",props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){const d=e;return(i,y)=>(a(),c("tbody",{"data-slot":"table-body",class:R(s(z)("[&_tr:last-child]:border-0",d.class))},[E(i.$slots,"default")],2))}}),ie=I({__name:"TableCell",props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){const d=e;return(i,y)=>(a(),c("td",{"data-slot":"table-cell",class:R(s(z)("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 *:[[role=checkbox]]:translate-y-0.5",d.class))},[E(i.$slots,"default")],2))}}),ue=I({__name:"TableRow",props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){const d=e;return(i,y)=>(a(),c("tr",{"data-slot":"table-row",class:R(s(z)("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",d.class))},[E(i.$slots,"default")],2))}}),ce=I({__name:"TableHead",props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){const d=e;return(i,y)=>(a(),c("th",{"data-slot":"table-head",class:R(s(z)("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 *:[[role=checkbox]]:translate-y-0.5",d.class))},[E(i.$slots,"default")],2))}}),me=I({__name:"TableHeader",props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){const d=e;return(i,y)=>(a(),c("thead",{"data-slot":"table-header",class:R(s(z)("[&_tr]:border-b",d.class))},[E(i.$slots,"default")],2))}}),fe={key:0,class:"block max-w-72 truncate text-[11px] text-muted-foreground"},be={key:1,class:"text-muted-foreground"},pe={class:"flex gap-1"},ge=["title"],xe={class:"grid gap-2"},ye={class:"w-32 shrink-0"},ke={class:"block text-xs font-semibold"},ve={class:"block font-mono text-[11px] text-muted-foreground tabular"},_e=I({__name:"HeadTable",props:{heads:{},dockerOk:{type:Boolean},busyIds:{}},emits:["start","stop","restart","reset","remove"],setup(e,{emit:d}){const i=e,y=d,h=et(new Set);function x(C){const r=new Set(h.value);r.has(C)?r.delete(C):r.add(C),h.value=r}function k(C){return st(C,nt(C,null),i.dockerOk)}const p={RUNNING:"bg-success-soft text-success-soft-foreground",STARTING:"bg-warning-soft text-warning-soft-foreground",FAILED:"bg-destructive-soft text-destructive-soft-foreground",STOPPED:"bg-muted text-muted-foreground",CREATED:"bg-muted text-muted-foreground"};return(C,r)=>{const t=ce,m=ue,N=me,S=ie,T=X,B=W,U=V,F=Q,L=K,w=tt,j=de,M=le,P=q;return a(),v(P,{class:"overflow-hidden py-0"},{default:o(()=>[n(M,null,{default:o(()=>[n(N,null,{default:o(()=>[n(m,{class:"hover:bg-transparent"},{default:o(()=>[n(t,{class:"w-8"}),n(t,null,{default:o(()=>[...r[2]||(r[2]=[u("Head",-1)])]),_:1}),n(t,null,{default:o(()=>[...r[3]||(r[3]=[u("Status",-1)])]),_:1}),n(t,null,{default:o(()=>[...r[4]||(r[4]=[u("Hydra state",-1)])]),_:1}),n(t,null,{default:o(()=>[...r[5]||(r[5]=[u("Nodes",-1)])]),_:1}),n(t,{class:"hidden lg:table-cell"},{default:o(()=>[...r[6]||(r[6]=[u("Contestation",-1)])]),_:1}),n(t,{class:"text-right"},{default:o(()=>[...r[7]||(r[7]=[u("Actions",-1)])]),_:1})]),_:1})]),_:1}),n(j,null,{default:o(()=>[(a(!0),c(A,null,D(e.heads,f=>(a(),c(A,{key:f.id},[n(m,{class:"cursor-pointer","data-state":s(h).has(f.id)?"selected":void 0,onClick:_=>x(f.id)},{default:o(()=>[n(S,{class:"text-muted-foreground"},{default:o(()=>[s(h).has(f.id)?(a(),v(s(ht),{key:0,class:"size-4"})):(a(),v(s($t),{key:1,class:"size-4"}))]),_:2},1024),n(S,null,{default:o(()=>[n(T,{to:`/heads/${f.id}`,class:"font-medium hover:text-primary",onClick:r[0]||(r[0]=Y(()=>{},["stop"]))},{default:o(()=>[u(g(f.name),1)]),_:2},1032,["to"]),f.description?(a(),c("span",fe,g(f.description),1)):$("",!0)]),_:2},1024),n(S,null,{default:o(()=>[n(B,{status:f.status},null,8,["status"])]),_:2},1024),n(S,null,{default:o(()=>[f.status==="RUNNING"?(a(),v(B,{key:0,"hydra-state":f.hydraState},null,8,["hydra-state"])):(a(),c("span",be,"—"))]),_:2},1024),n(S,null,{default:o(()=>[l("div",pe,[(a(!0),c(A,null,D(f.nodes,_=>(a(),c("span",{key:_.id,class:R(["grid size-5 place-items-center rounded text-[10px] font-semibold",p[_.status]??"bg-muted text-muted-foreground"]),title:`${_.name} — ${_.status}`},g(_.index),11,ge))),128))])]),_:2},1024),n(S,{class:"hidden text-muted-foreground lg:table-cell tabular"},{default:o(()=>[u(g(f.contestationPeriod)+"s ",1)]),_:2},1024),n(S,{class:"whitespace-nowrap text-right",onClick:r[1]||(r[1]=Y(()=>{},["stop"]))},{default:o(()=>[f.status==="RUNNING"?(a(),c(A,{key:0},[n(U,{variant:"outline",size:"sm",disabled:e.busyIds.has(f.id),onClick:_=>y("restart",f)},{default:o(()=>[...r[8]||(r[8]=[u(" Restart ",-1)])]),_:1},8,["disabled","onClick"]),n(U,{variant:"outline",size:"sm",class:"ml-2",disabled:e.busyIds.has(f.id),onClick:_=>y("stop",f)},{default:o(()=>[...r[9]||(r[9]=[u(" Stop ",-1)])]),_:1},8,["disabled","onClick"])],64)):(a(),c(A,{key:1},[n(U,{size:"sm",disabled:!k(f).canStart||e.busyIds.has(f.id),title:k(f).startBlockedReason,onClick:_=>y("start",f)},{default:o(()=>[u(g(f.status==="FAILED"?"Retry":"Start"),1)]),_:2},1032,["disabled","title","onClick"]),n(U,{variant:"outline",size:"sm",class:"ml-2",disabled:e.busyIds.has(f.id),onClick:_=>y("reset",f)},{default:o(()=>[...r[10]||(r[10]=[u(" Reset ",-1)])]),_:1},8,["disabled","onClick"]),n(U,{variant:"outline",size:"sm",class:"ml-2 text-destructive hover:bg-destructive-soft hover:text-destructive",disabled:e.busyIds.has(f.id),onClick:_=>y("remove",f)},{default:o(()=>[...r[11]||(r[11]=[u(" Delete ",-1)])]),_:1},8,["disabled","onClick"])],64))]),_:2},1024)]),_:2},1032,["data-state","onClick"]),s(h).has(f.id)?(a(),v(m,{key:0,class:"hover:bg-transparent"},{default:o(()=>[n(S,{colspan:"7",class:"bg-muted/40 p-3"},{default:o(()=>[f.lastError?(a(),v(L,{key:0,variant:"destructive",class:"mb-2.5"},{default:o(()=>[n(F,{class:"text-xs"},{default:o(()=>[u(g(f.lastError),1)]),_:2},1024)]),_:2},1024)):$("",!0),l("div",xe,[(a(!0),c(A,null,D(f.nodes,_=>(a(),c("div",{key:_.id,class:"flex items-center gap-3 rounded-md border bg-card px-3 py-2.5"},[l("div",ye,[l("span",ke,g(_.name),1),l("span",ve," api "+g(_.apiPort)+" · p2p "+g(_.p2pPort),1)]),_.cardanoAddress?(a(),v(w,{key:0,value:_.cardanoAddress,truncate:20,label:"address"},null,8,["value"])):$("",!0),r[12]||(r[12]=l("span",{class:"flex-1"},null,-1)),n(B,{status:_.status},null,8,["status"])]))),128))])]),_:2},1024)]),_:2},1024)):$("",!0)],64))),128))]),_:1})]),_:1})]),_:1})}}}),he={class:"mb-5 flex items-end justify-between gap-4"},$e={class:"flex shrink-0 items-center gap-2"},we={key:2,class:"grid gap-4"},Ce={key:4,class:"grid gap-4"},Pe=I({__name:"index",setup(e){wt({title:"Hydra Heads · Hexcore"});const d=Ct(),i=Nt();Z(()=>i.restore());const y=H(()=>d.heads.some(r=>r.status==="STARTING")?J("STARTING"):J("RUNNING")),h=ot(()=>d.load(),{interval:()=>y.value});Z(h.start);const x=rt(),k=et(null);async function p(r,t){(t==="start"||t==="restart")&&(k.value=r);try{await d.runAction(r.id,t),i.success(t==="start"?`${r.name} is running`:t==="stop"?`${r.name} stopped`:`${r.name} restarted`)}catch(m){i.error(`Could not ${t} ${r.name}`,m instanceof kt?m.message:void 0)}}const C=H(()=>!i.headsViewChosen&&i.headsView==="cards"&&d.heads.length>8);return(r,t)=>{const m=ct,N=ut,S=lt,T=V,B=X,U=Q,F=K,L=bt,w=gt,j=q,M=oe,P=_e,f=dt,_=it;return a(),c("div",null,[l("div",he,[t[17]||(t[17]=l("div",null,[l("h1",{class:"text-xl font-semibold tracking-tight"},"Your Hydra Heads"),l("p",{class:"text-sm text-muted-foreground"}," Each head runs one or more hydra-node containers that form a single Head. ")],-1)),l("div",$e,[n(S,{"model-value":s(i).headsView,class:"hidden sm:block","onUpdate:modelValue":t[0]||(t[0]=b=>s(i).setHeadsView(b))},{default:o(()=>[n(N,null,{default:o(()=>[n(m,{value:"cards"},{default:o(()=>[n(s(Rt),{class:"size-4"}),t[13]||(t[13]=u(" Cards",-1))]),_:1}),n(m,{value:"table"},{default:o(()=>[n(s(It),{class:"size-4"}),t[14]||(t[14]=u(" Table",-1))]),_:1})]),_:1})]),_:1},8,["model-value"]),n(T,{variant:"outline",size:"sm",onClick:t[1]||(t[1]=b=>s(d).load())},{default:o(()=>[n(s(mt),{class:"size-4"}),t[15]||(t[15]=u(" Refresh ",-1))]),_:1}),n(T,{size:"sm","as-child":""},{default:o(()=>[n(B,{to:"/heads/new"},{default:o(()=>[n(s(At),{class:"size-4"}),t[16]||(t[16]=u(" New Head",-1))]),_:1})]),_:1})])]),s(h).stalled.value?(a(),v(F,{key:0,class:"mb-4 flex items-center justify-between gap-4"},{default:o(()=>[n(U,null,{default:o(()=>[...t[18]||(t[18]=[u(" Lost contact with the control-plane. Live updates are paused. ",-1)])]),_:1}),n(T,{variant:"outline",size:"sm",onClick:t[2]||(t[2]=b=>s(h).retry())},{default:o(()=>[...t[19]||(t[19]=[u("Reconnect",-1)])]),_:1})]),_:1})):$("",!0),s(C)?(a(),v(F,{key:1,class:"mb-4 flex items-center justify-between gap-4"},{default:o(()=>[n(U,null,{default:o(()=>[u(g(s(d).heads.length)+" heads — the table view fits more on screen. ",1)]),_:1}),n(T,{variant:"outline",size:"sm",onClick:t[3]||(t[3]=b=>s(i).setHeadsView("table"))},{default:o(()=>[...t[20]||(t[20]=[u(" Switch to table ",-1)])]),_:1})]),_:1})):$("",!0),s(d).loading&&!s(d).loaded?(a(),c("div",we,[(a(),c(A,null,D(3,b=>n(j,{key:b},{default:o(()=>[n(w,{class:"space-y-3"},{default:o(()=>[n(L,{class:"h-5 w-48"}),n(L,{class:"h-4 w-full"}),n(L,{class:"h-4 w-3/5"})]),_:1})]),_:1})),64))])):s(d).heads.length===0?(a(),v(j,{key:3},{default:o(()=>[n(w,{class:"py-12 text-center"},{default:o(()=>[n(s(St),{class:"mx-auto mb-3 size-10 text-muted-foreground/40"}),t[22]||(t[22]=l("h2",{class:"mb-1 text-lg font-semibold"},"No heads yet",-1)),t[23]||(t[23]=l("p",{class:"mx-auto mb-5 max-w-md text-sm text-muted-foreground"}," Creating a head generates every Hydra and Cardano key it needs — you only choose a name and how many nodes should take part. ",-1)),n(T,{"as-child":""},{default:o(()=>[n(B,{to:"/heads/new"},{default:o(()=>[...t[21]||(t[21]=[u("Create your first head",-1)])]),_:1})]),_:1})]),_:1})]),_:1})):s(i).headsView==="cards"?(a(),c("div",Ce,[(a(!0),c(A,null,D(s(d).heads,b=>(a(),v(M,{key:b.id,head:b,busy:s(d).isBusy(b.id),"docker-ok":s(d).dockerOk,onStart:G=>p(b,"start"),onStop:G=>p(b,"stop"),onRestart:G=>p(b,"restart"),onReset:G=>s(x).askReset(b),onRemove:G=>s(x).askDelete(b)},null,8,["head","busy","docker-ok","onStart","onStop","onRestart","onReset","onRemove"]))),128))])):(a(),v(P,{key:5,heads:s(d).heads,"docker-ok":s(d).dockerOk,"busy-ids":s(d).busy,onStart:t[4]||(t[4]=b=>p(b,"start")),onStop:t[5]||(t[5]=b=>p(b,"stop")),onRestart:t[6]||(t[6]=b=>p(b,"restart")),onReset:t[7]||(t[7]=b=>s(x).askReset(b)),onRemove:t[8]||(t[8]=b=>s(x).askDelete(b))},null,8,["heads","docker-ok","busy-ids"])),n(f,{head:s(x).target.value,kind:s(x).kind.value,loading:s(x).busy.value,"onUpdate:kind":t[9]||(t[9]=b=>s(x).kind.value=b),onClose:t[10]||(t[10]=b=>s(x).close()),onConfirm:t[11]||(t[11]=b=>s(x).run())},null,8,["head","kind","loading"]),n(_,{"head-id":s(k)?.id??null,"head-name":s(k)?.name,onClose:t[12]||(t[12]=b=>k.value=null)},null,8,["head-id","head-name"])])}}});export{Pe as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{e,o as n,c as o}from"./CgPLsCeU.js";const s=e({__name:"index",setup(t){return(a,c)=>(n(),o("div"))}});export{s as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id":"7e461629-93e2-4694-b237-6d5c6a85c97c","timestamp":1786187562031}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id":"7e461629-93e2-4694-b237-6d5c6a85c97c","timestamp":1786187562031,"prerendered":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id":"dev","timestamp":1786187562467,"prerendered":[]}
|