@samyx/preview-stacks-ui 0.32.0 → 0.33.0
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/dist/assets/{ActionButton.vue_vue_type_script_setup_true_lang-D8Xlp6c9.js → ActionButton.vue_vue_type_script_setup_true_lang-AGS1FKpY.js} +2 -2
- package/dist/assets/{ActionButton.vue_vue_type_script_setup_true_lang-D8Xlp6c9.js.map → ActionButton.vue_vue_type_script_setup_true_lang-AGS1FKpY.js.map} +1 -1
- package/dist/assets/{AxesTab-BWzsbFAx.js → AxesTab-DlGjhnwi.js} +2 -2
- package/dist/assets/{AxesTab-BWzsbFAx.js.map → AxesTab-DlGjhnwi.js.map} +1 -1
- package/dist/assets/{ConfigTab-ucr87rD6.js → ConfigTab-BiqFZrvm.js} +2 -2
- package/dist/assets/{ConfigTab-ucr87rD6.js.map → ConfigTab-BiqFZrvm.js.map} +1 -1
- package/dist/assets/{ConfigView-BbRYGyvZ.js → ConfigView-CsQJIt52.js} +2 -2
- package/dist/assets/{ConfigView-BbRYGyvZ.js.map → ConfigView-CsQJIt52.js.map} +1 -1
- package/dist/assets/{ConflictNote.vue_vue_type_script_setup_true_lang-DDt6qe65.js → ConflictNote.vue_vue_type_script_setup_true_lang-BxG7GEFo.js} +2 -2
- package/dist/assets/{ConflictNote.vue_vue_type_script_setup_true_lang-DDt6qe65.js.map → ConflictNote.vue_vue_type_script_setup_true_lang-BxG7GEFo.js.map} +1 -1
- package/dist/assets/{DangerTab-BimKNJab.js → DangerTab-COq-R4Dz.js} +2 -2
- package/dist/assets/{DangerTab-BimKNJab.js.map → DangerTab-COq-R4Dz.js.map} +1 -1
- package/dist/assets/{DashboardView-DK0qDo-f.js → DashboardView-DTI9n2-Z.js} +2 -2
- package/dist/assets/{DashboardView-DK0qDo-f.js.map → DashboardView-DTI9n2-Z.js.map} +1 -1
- package/dist/assets/{DeploymentDetailView-BcImKApM.js → DeploymentDetailView-BBMtQ9vE.js} +2 -2
- package/dist/assets/{DeploymentDetailView-BcImKApM.js.map → DeploymentDetailView-BBMtQ9vE.js.map} +1 -1
- package/dist/assets/{DeploymentsView-Cx9BqQ8Q.js → DeploymentsView-BCXfIFud.js} +2 -2
- package/dist/assets/{DeploymentsView-Cx9BqQ8Q.js.map → DeploymentsView-BCXfIFud.js.map} +1 -1
- package/dist/assets/{DialogTrigger-nWkfUj3N.js → DialogTrigger-D4yBGqUf.js} +2 -2
- package/dist/assets/{DialogTrigger-nWkfUj3N.js.map → DialogTrigger-D4yBGqUf.js.map} +1 -1
- package/dist/assets/{EquivalentCommand-D92xDU0_.js → EquivalentCommand-D0dyw0Wd.js} +2 -2
- package/dist/assets/{EquivalentCommand-D92xDU0_.js.map → EquivalentCommand-D0dyw0Wd.js.map} +1 -1
- package/dist/assets/{ErrorNote.vue_vue_type_script_setup_true_lang-DVbGiVTB.js → ErrorNote.vue_vue_type_script_setup_true_lang-BrBUwK6j.js} +2 -2
- package/dist/assets/{ErrorNote.vue_vue_type_script_setup_true_lang-DVbGiVTB.js.map → ErrorNote.vue_vue_type_script_setup_true_lang-BrBUwK6j.js.map} +1 -1
- package/dist/assets/{HelpModal.vue_vue_type_script_setup_true_lang-CSOdBT2E.js → HelpModal.vue_vue_type_script_setup_true_lang-CTbPBhLs.js} +2 -2
- package/dist/assets/{HelpModal.vue_vue_type_script_setup_true_lang-CSOdBT2E.js.map → HelpModal.vue_vue_type_script_setup_true_lang-CTbPBhLs.js.map} +1 -1
- package/dist/assets/{JobDetailView-B1sXXVJ5.js → JobDetailView-DIEijrhl.js} +2 -2
- package/dist/assets/{JobDetailView-B1sXXVJ5.js.map → JobDetailView-DIEijrhl.js.map} +1 -1
- package/dist/assets/{JobsView-DjP5lXHk.js → JobsView-Dw4-yNCj.js} +2 -2
- package/dist/assets/{JobsView-DjP5lXHk.js.map → JobsView-Dw4-yNCj.js.map} +1 -1
- package/dist/assets/{LogViewer.vue_vue_type_script_setup_true_lang-Bhy_5cyC.js → LogViewer.vue_vue_type_script_setup_true_lang-B3YVBpn-.js} +2 -2
- package/dist/assets/{LogViewer.vue_vue_type_script_setup_true_lang-Bhy_5cyC.js.map → LogViewer.vue_vue_type_script_setup_true_lang-B3YVBpn-.js.map} +1 -1
- package/dist/assets/{LoginView-CIkI9Qm_.js → LoginView-NgcWC4N0.js} +2 -2
- package/dist/assets/{LoginView-CIkI9Qm_.js.map → LoginView-NgcWC4N0.js.map} +1 -1
- package/dist/assets/{LogsTab-D8zhR7Eb.js → LogsTab-oWjSPx9O.js} +2 -2
- package/dist/assets/{LogsTab-D8zhR7Eb.js.map → LogsTab-oWjSPx9O.js.map} +1 -1
- package/dist/assets/{NotFoundView-aUtqh2Qi.js → NotFoundView-DnQQJSu_.js} +2 -2
- package/dist/assets/{NotFoundView-aUtqh2Qi.js.map → NotFoundView-DnQQJSu_.js.map} +1 -1
- package/dist/assets/{NotifiersView-aRHInxVx.js → NotifiersView-CvP3L81J.js} +2 -2
- package/dist/assets/{NotifiersView-aRHInxVx.js.map → NotifiersView-CvP3L81J.js.map} +1 -1
- package/dist/assets/{OverviewTab-ChCj5LAj.js → OverviewTab-C10J0ywh.js} +2 -2
- package/dist/assets/{OverviewTab-ChCj5LAj.js.map → OverviewTab-C10J0ywh.js.map} +1 -1
- package/dist/assets/{PublicLogsView-DIWJH7qL.js → PublicLogsView-DqMmMbtf.js} +2 -2
- package/dist/assets/{PublicLogsView-DIWJH7qL.js.map → PublicLogsView-DqMmMbtf.js.map} +1 -1
- package/dist/assets/{RefreshButton.vue_vue_type_script_setup_true_lang-P7VwWcRa.js → RefreshButton.vue_vue_type_script_setup_true_lang-8Tme6z_i.js} +2 -2
- package/dist/assets/{RefreshButton.vue_vue_type_script_setup_true_lang-P7VwWcRa.js.map → RefreshButton.vue_vue_type_script_setup_true_lang-8Tme6z_i.js.map} +1 -1
- package/dist/assets/{RegistriesView-D2aCsYIu.js → RegistriesView-DIa3mCyc.js} +2 -2
- package/dist/assets/{RegistriesView-D2aCsYIu.js.map → RegistriesView-DIa3mCyc.js.map} +1 -1
- package/dist/assets/{RelativeTime.vue_vue_type_script_setup_true_lang-NGvUfuKC.js → RelativeTime.vue_vue_type_script_setup_true_lang-eoX10cnp.js} +2 -2
- package/dist/assets/{RelativeTime.vue_vue_type_script_setup_true_lang-NGvUfuKC.js.map → RelativeTime.vue_vue_type_script_setup_true_lang-eoX10cnp.js.map} +1 -1
- package/dist/assets/{RequiresTab-3BhU5BHd.js → RequiresTab-Dde68lOF.js} +2 -2
- package/dist/assets/{RequiresTab-3BhU5BHd.js.map → RequiresTab-Dde68lOF.js.map} +1 -1
- package/dist/assets/{RouteTarget.vue_vue_type_script_setup_true_lang-Caee0wEB.js → RouteTarget.vue_vue_type_script_setup_true_lang-DgcXRES0.js} +2 -2
- package/dist/assets/{RouteTarget.vue_vue_type_script_setup_true_lang-Caee0wEB.js.map → RouteTarget.vue_vue_type_script_setup_true_lang-DgcXRES0.js.map} +1 -1
- package/dist/assets/{RoutingView-T9afX8_M.js → RoutingView-oXXCIL07.js} +2 -2
- package/dist/assets/{RoutingView-T9afX8_M.js.map → RoutingView-oXXCIL07.js.map} +1 -1
- package/dist/assets/{RuntimeTab-Bh2gGuhj.js → RuntimeTab-DFxU8OLh.js} +2 -2
- package/dist/assets/{RuntimeTab-Bh2gGuhj.js.map → RuntimeTab-DFxU8OLh.js.map} +1 -1
- package/dist/assets/{SelectMenu.vue_vue_type_script_setup_true_lang-BtHqT6G1.js → SelectMenu.vue_vue_type_script_setup_true_lang-Bjd8KlYw.js} +2 -2
- package/dist/assets/{SelectMenu.vue_vue_type_script_setup_true_lang-BtHqT6G1.js.map → SelectMenu.vue_vue_type_script_setup_true_lang-Bjd8KlYw.js.map} +1 -1
- package/dist/assets/SettingsView-DwSmnNbU.js +2 -0
- package/dist/assets/SettingsView-DwSmnNbU.js.map +1 -0
- package/dist/assets/{SkeletonList.vue_vue_type_script_setup_true_lang-BmeRGmxf.js → SkeletonList.vue_vue_type_script_setup_true_lang-CvoOnzDO.js} +2 -2
- package/dist/assets/{SkeletonList.vue_vue_type_script_setup_true_lang-BmeRGmxf.js.map → SkeletonList.vue_vue_type_script_setup_true_lang-CvoOnzDO.js.map} +1 -1
- package/dist/assets/{SpecDetailView-Bd4Hx-bI.js → SpecDetailView-D10gsC8W.js} +2 -2
- package/dist/assets/{SpecDetailView-Bd4Hx-bI.js.map → SpecDetailView-D10gsC8W.js.map} +1 -1
- package/dist/assets/{SpecsView-B9qQPzkG.js → SpecsView-BU962Blv.js} +2 -2
- package/dist/assets/{SpecsView-B9qQPzkG.js.map → SpecsView-BU962Blv.js.map} +1 -1
- package/dist/assets/{SsoMark.vue_vue_type_script_setup_true_lang-BBiCq_4w.js → SsoMark.vue_vue_type_script_setup_true_lang-BzRkYwRn.js} +2 -2
- package/dist/assets/{SsoMark.vue_vue_type_script_setup_true_lang-BBiCq_4w.js.map → SsoMark.vue_vue_type_script_setup_true_lang-BzRkYwRn.js.map} +1 -1
- package/dist/assets/SsoView-AzBjKwF_.css +1 -0
- package/dist/assets/SsoView-BJO4vMED.js +2 -0
- package/dist/assets/SsoView-BJO4vMED.js.map +1 -0
- package/dist/assets/{StateBadge.vue_vue_type_script_setup_true_lang-nD6Zdx0q.js → StateBadge.vue_vue_type_script_setup_true_lang-CzLuB-ZI.js} +2 -2
- package/dist/assets/{StateBadge.vue_vue_type_script_setup_true_lang-nD6Zdx0q.js.map → StateBadge.vue_vue_type_script_setup_true_lang-CzLuB-ZI.js.map} +1 -1
- package/dist/assets/{SubmitView-D-jg5Wxy.js → SubmitView-CChPoIvR.js} +2 -2
- package/dist/assets/{SubmitView-D-jg5Wxy.js.map → SubmitView-CChPoIvR.js.map} +1 -1
- package/dist/assets/{SwarmView-CqFndUrV.js → SwarmView-xPA-5INc.js} +2 -2
- package/dist/assets/{SwarmView-CqFndUrV.js.map → SwarmView-xPA-5INc.js.map} +1 -1
- package/dist/assets/{Teleport-I0XiM19H.js → Teleport-Bg1yDCl9.js} +2 -2
- package/dist/assets/{Teleport-I0XiM19H.js.map → Teleport-Bg1yDCl9.js.map} +1 -1
- package/dist/assets/{TerminalTab-Dleba0ru.js → TerminalTab-jUQlwJpM.js} +2 -2
- package/dist/assets/{TerminalTab-Dleba0ru.js.map → TerminalTab-jUQlwJpM.js.map} +1 -1
- package/dist/assets/{UsersView-BrZbuuOg.js → UsersView-DcjfdY6Q.js} +2 -2
- package/dist/assets/{UsersView-BrZbuuOg.js.map → UsersView-DcjfdY6Q.js.map} +1 -1
- package/dist/assets/{VarEditor.vue_vue_type_script_setup_true_lang-uPHU_Ugp.js → VarEditor.vue_vue_type_script_setup_true_lang-gohbG3IW.js} +2 -2
- package/dist/assets/{VarEditor.vue_vue_type_script_setup_true_lang-uPHU_Ugp.js.map → VarEditor.vue_vue_type_script_setup_true_lang-gohbG3IW.js.map} +1 -1
- package/dist/assets/{VarIO-BldCQ6Xx.js → VarIO-gtGLr9Br.js} +2 -2
- package/dist/assets/{VarIO-BldCQ6Xx.js.map → VarIO-gtGLr9Br.js.map} +1 -1
- package/dist/assets/{VariablesView-CQp0T7Q6.js → VariablesView-DSXnmTTH.js} +2 -2
- package/dist/assets/{VariablesView-CQp0T7Q6.js.map → VariablesView-DSXnmTTH.js.map} +1 -1
- package/dist/assets/{index-Cqe_7QZw.js → index-DB2WhG8N.js} +3 -3
- package/dist/assets/{index-Cqe_7QZw.js.map → index-DB2WhG8N.js.map} +1 -1
- package/dist/assets/{useDeployment-BDbkdxpo.js → useDeployment-B7wpJY-X.js} +2 -2
- package/dist/assets/{useDeployment-BDbkdxpo.js.map → useDeployment-B7wpJY-X.js.map} +1 -1
- package/dist/index.html +1 -1
- package/package.json +1 -1
- package/dist/assets/SettingsView-DIKjdBdy.js +0 -2
- package/dist/assets/SettingsView-DIKjdBdy.js.map +0 -1
- package/dist/assets/SsoView-CltdTdwt.js +0 -2
- package/dist/assets/SsoView-CltdTdwt.js.map +0 -1
- package/dist/assets/SsoView-JmlPQGWM.css +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LoginView-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LoginView-NgcWC4N0.js","assets/ActionButton.vue_vue_type_script_setup_true_lang-AGS1FKpY.js","assets/EquivalentCommand-D0dyw0Wd.js","assets/_plugin-vue_export-helper-DlAUqK2U.js","assets/EquivalentCommand-BFnZRfDg.css","assets/SsoMark.vue_vue_type_script_setup_true_lang-BzRkYwRn.js","assets/LoginView-C90w1dZ2.css","assets/DashboardView-DTI9n2-Z.js","assets/StateBadge.vue_vue_type_script_setup_true_lang-CzLuB-ZI.js","assets/SkeletonList.vue_vue_type_script_setup_true_lang-CvoOnzDO.js","assets/RefreshButton.vue_vue_type_script_setup_true_lang-8Tme6z_i.js","assets/DeploymentsView-BCXfIFud.js","assets/RelativeTime.vue_vue_type_script_setup_true_lang-eoX10cnp.js","assets/SelectMenu.vue_vue_type_script_setup_true_lang-Bjd8KlYw.js","assets/Teleport-Bg1yDCl9.js","assets/PublicLogsView-DqMmMbtf.js","assets/LogViewer.vue_vue_type_script_setup_true_lang-B3YVBpn-.js","assets/PublicLogsView-BAe90EbI.css","assets/DeploymentDetailView-BBMtQ9vE.js","assets/useDeployment-B7wpJY-X.js","assets/useVars-VN9gYdR6.js","assets/ConflictNote.vue_vue_type_script_setup_true_lang-BxG7GEFo.js","assets/ErrorNote.vue_vue_type_script_setup_true_lang-BrBUwK6j.js","assets/OverviewTab-C10J0ywh.js","assets/ConfigTab-BiqFZrvm.js","assets/VarEditor.vue_vue_type_script_setup_true_lang-gohbG3IW.js","assets/VarIO-gtGLr9Br.js","assets/VarIO-BVE8A4Ur.css","assets/HelpModal.vue_vue_type_script_setup_true_lang-CTbPBhLs.js","assets/DialogTrigger-D4yBGqUf.js","assets/RuntimeTab-DFxU8OLh.js","assets/RouteTarget.vue_vue_type_script_setup_true_lang-DgcXRES0.js","assets/RuntimeTab-By55qdsQ.css","assets/AxesTab-DlGjhnwi.js","assets/RequiresTab-Dde68lOF.js","assets/LogsTab-oWjSPx9O.js","assets/TerminalTab-jUQlwJpM.js","assets/TerminalTab-DbjRludT.css","assets/DangerTab-COq-R4Dz.js","assets/RoutingView-oXXCIL07.js","assets/RoutingView-tn0RQdqM.css","assets/SwarmView-xPA-5INc.js","assets/RegistriesView-DIa3mCyc.js","assets/NotifiersView-CvP3L81J.js","assets/SpecsView-BU962Blv.js","assets/SpecDetailView-D10gsC8W.js","assets/SubmitView-CChPoIvR.js","assets/JobsView-Dw4-yNCj.js","assets/useJobQueue-D5JkRJNX.js","assets/JobsView-CC7lre3Q.css","assets/JobDetailView-DIEijrhl.js","assets/UsersView-DcjfdY6Q.js","assets/UsersView-Bd8B9pLD.css","assets/SsoView-BJO4vMED.js","assets/SsoView-AzBjKwF_.css","assets/VariablesView-DSXnmTTH.js","assets/VariablesView-Ck3IyRCN.css","assets/ConfigView-CsQJIt52.js","assets/SettingsView-DwSmnNbU.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function n(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function s(r){if(r.ep)return;r.ep=!0;const o=n(r);fetch(r.href,o)}})();/**
|
|
3
3
|
* @vue/shared v3.5.40
|
|
4
4
|
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
@@ -23,7 +23,7 @@ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LoginView-CIkI9
|
|
|
23
23
|
* vue-router v4.6.4
|
|
24
24
|
* (c) 2025 Eduardo San Martin Morote
|
|
25
25
|
* @license MIT
|
|
26
|
-
*/let Af=()=>location.protocol+"//"+location.host;function Jl(e,t){const{pathname:n,search:s,hash:r}=t,o=e.indexOf("#");if(o>-1){let i=r.includes(e.slice(o))?e.slice(o).length:1,a=r.slice(i);return a[0]!=="/"&&(a="/"+a),Ko(a,"")}return Ko(n,e)+s+r}function xf(e,t,n,s){let r=[],o=[],i=null;const a=({state:p})=>{const g=Jl(e,location),x=n.value,w=t.value;let I=0;if(p){if(n.value=g,t.value=p,i&&i===x){i=null;return}I=w?p.position-w.position:0}else s(g);r.forEach(C=>{C(n.value,x,{delta:I,type:Rr.pop,direction:I?I>0?ar.forward:ar.back:ar.unknown})})};function l(){i=n.value}function c(p){r.push(p);const g=()=>{const x=r.indexOf(p);x>-1&&r.splice(x,1)};return o.push(g),g}function u(){if(document.visibilityState==="hidden"){const{history:p}=window;if(!p.state)return;p.replaceState(le({},p.state,{scroll:qs()}),"")}}function f(){for(const p of o)p();o=[],window.removeEventListener("popstate",a),window.removeEventListener("pagehide",u),document.removeEventListener("visibilitychange",u)}return window.addEventListener("popstate",a),window.addEventListener("pagehide",u),document.addEventListener("visibilitychange",u),{pauseListeners:l,listen:c,destroy:f}}function Yo(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?qs():null}}function Cf(e){const{history:t,location:n}=window,s={value:Jl(e,n)},r={value:t.state};r.value||o(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(l,c,u){const f=e.indexOf("#"),p=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+l:Af()+e+l;try{t[u?"replaceState":"pushState"](c,"",p),r.value=c}catch(g){console.error(g),n[u?"replace":"assign"](p)}}function i(l,c){o(l,le({},t.state,Yo(r.value.back,l,r.value.forward,!0),c,{position:r.value.position}),!0),s.value=l}function a(l,c){const u=le({},r.value,t.state,{forward:l,scroll:qs()});o(u.current,u,!0),o(l,le({},Yo(s.value,l,null),{position:u.position+1},c),!1),s.value=l}return{location:s,state:r,push:a,replace:i}}function Sf(e){e=cf(e);const t=Cf(e),n=xf(e,t.state,t.location,t.replace);function s(o,i=!0){i||n.pauseListeners(),history.go(o)}const r=le({location:"",base:e,go:s,createHref:ff.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}let Zt=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e})({});var xe=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e})(xe||{});const kf={type:Zt.Static,value:""},Rf=/[a-zA-Z0-9_]/;function Tf(e){if(!e)return[[]];if(e==="/")return[[kf]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(g){throw new Error(`ERR (${n})/"${c}": ${g}`)}let n=xe.Static,s=n;const r=[];let o;function i(){o&&r.push(o),o=[]}let a=0,l,c="",u="";function f(){c&&(n===xe.Static?o.push({type:Zt.Static,value:c}):n===xe.Param||n===xe.ParamRegExp||n===xe.ParamRegExpEnd?(o.length>1&&(l==="*"||l==="+")&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),o.push({type:Zt.Param,value:c,regexp:u,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),c="")}function p(){c+=l}for(;a<e.length;){if(l=e[a++],l==="\\"&&n!==xe.ParamRegExp){s=n,n=xe.EscapeNext;continue}switch(n){case xe.Static:l==="/"?(c&&f(),i()):l===":"?(f(),n=xe.Param):p();break;case xe.EscapeNext:p(),n=s;break;case xe.Param:l==="("?n=xe.ParamRegExp:Rf.test(l)?p():(f(),n=xe.Static,l!=="*"&&l!=="?"&&l!=="+"&&a--);break;case xe.ParamRegExp:l===")"?u[u.length-1]=="\\"?u=u.slice(0,-1)+l:n=xe.ParamRegExpEnd:u+=l;break;case xe.ParamRegExpEnd:f(),n=xe.Static,l!=="*"&&l!=="?"&&l!=="+"&&a--,u="";break;default:t("Unknown state");break}}return n===xe.ParamRegExp&&t(`Unfinished custom RegExp for param "${c}"`),f(),i(),r}const Qo="[^/]+?",Pf={sensitive:!1,strict:!1,start:!0,end:!0};var $e=(function(e){return e[e._multiplier=10]="_multiplier",e[e.Root=90]="Root",e[e.Segment=40]="Segment",e[e.SubSegment=30]="SubSegment",e[e.Static=40]="Static",e[e.Dynamic=20]="Dynamic",e[e.BonusCustomRegExp=10]="BonusCustomRegExp",e[e.BonusWildcard=-50]="BonusWildcard",e[e.BonusRepeatable=-20]="BonusRepeatable",e[e.BonusOptional=-8]="BonusOptional",e[e.BonusStrict=.7000000000000001]="BonusStrict",e[e.BonusCaseSensitive=.25]="BonusCaseSensitive",e})($e||{});const Of=/[.+*?^${}()[\]/\\]/g;function If(e,t){const n=le({},Pf,t),s=[];let r=n.start?"^":"";const o=[];for(const c of e){const u=c.length?[]:[$e.Root];n.strict&&!c.length&&(r+="/");for(let f=0;f<c.length;f++){const p=c[f];let g=$e.Segment+(n.sensitive?$e.BonusCaseSensitive:0);if(p.type===Zt.Static)f||(r+="/"),r+=p.value.replace(Of,"\\$&"),g+=$e.Static;else if(p.type===Zt.Param){const{value:x,repeatable:w,optional:I,regexp:C}=p;o.push({name:x,repeatable:w,optional:I});const v=C||Qo;if(v!==Qo){g+=$e.BonusCustomRegExp;try{`${v}`}catch(S){throw new Error(`Invalid custom RegExp for param "${x}" (${v}): `+S.message)}}let T=w?`((?:${v})(?:/(?:${v}))*)`:`(${v})`;f||(T=I&&c.length<2?`(?:/${T})`:"/"+T),I&&(T+="?"),r+=T,g+=$e.Dynamic,I&&(g+=$e.BonusOptional),w&&(g+=$e.BonusRepeatable),v===".*"&&(g+=$e.BonusWildcard)}u.push(g)}s.push(u)}if(n.strict&&n.end){const c=s.length-1;s[c][s[c].length-1]+=$e.BonusStrict}n.strict||(r+="/?"),n.end?r+="$":n.strict&&!r.endsWith("/")&&(r+="(?:/|$)");const i=new RegExp(r,n.sensitive?"":"i");function a(c){const u=c.match(i),f={};if(!u)return null;for(let p=1;p<u.length;p++){const g=u[p]||"",x=o[p-1];f[x.name]=g&&x.repeatable?g.split("/"):g}return f}function l(c){let u="",f=!1;for(const p of e){(!f||!u.endsWith("/"))&&(u+="/"),f=!1;for(const g of p)if(g.type===Zt.Static)u+=g.value;else if(g.type===Zt.Param){const{value:x,repeatable:w,optional:I}=g,C=x in c?c[x]:"";if(ot(C)&&!w)throw new Error(`Provided param "${x}" is an array but it is not repeatable (* or + modifiers)`);const v=ot(C)?C.join("/"):C;if(!v)if(I)p.length<2&&(u.endsWith("/")?u=u.slice(0,-1):f=!0);else throw new Error(`Missing required param "${x}"`);u+=v}}return u||"/"}return{re:i,score:s,keys:o,parse:a,stringify:l}}function Mf(e,t){let n=0;for(;n<e.length&&n<t.length;){const s=t[n]-e[n];if(s)return s;n++}return e.length<t.length?e.length===1&&e[0]===$e.Static+$e.Segment?-1:1:e.length>t.length?t.length===1&&t[0]===$e.Static+$e.Segment?1:-1:0}function Yl(e,t){let n=0;const s=e.score,r=t.score;for(;n<s.length&&n<r.length;){const o=Mf(s[n],r[n]);if(o)return o;n++}if(Math.abs(r.length-s.length)===1){if(Xo(s))return 1;if(Xo(r))return-1}return r.length-s.length}function Xo(e){const t=e[e.length-1];return e.length>0&&t[t.length-1]<0}const Nf={strict:!1,end:!0,sensitive:!1};function Lf(e,t,n){const s=If(Tf(e.path),n),r=le(s,{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function Df(e,t){const n=[],s=new Map;t=Go(Nf,t);function r(f){return s.get(f)}function o(f,p,g){const x=!g,w=ei(f);w.aliasOf=g&&g.record;const I=Go(t,f),C=[w];if("alias"in f){const S=typeof f.alias=="string"?[f.alias]:f.alias;for(const H of S)C.push(ei(le({},w,{components:g?g.record.components:w.components,path:H,aliasOf:g?g.record:w})))}let v,T;for(const S of C){const{path:H}=S;if(p&&H[0]!=="/"){const J=p.record.path,V=J[J.length-1]==="/"?"":"/";S.path=p.record.path+(H&&V+H)}if(v=Lf(S,p,I),g?g.alias.push(v):(T=T||v,T!==v&&T.alias.push(v),x&&f.name&&!ti(v)&&i(f.name)),Ql(v)&&l(v),w.children){const J=w.children;for(let V=0;V<J.length;V++)o(J[V],v,g&&g.children[V])}g=g||v}return T?()=>{i(T)}:$n}function i(f){if(ql(f)){const p=s.get(f);p&&(s.delete(f),n.splice(n.indexOf(p),1),p.children.forEach(i),p.alias.forEach(i))}else{const p=n.indexOf(f);p>-1&&(n.splice(p,1),f.record.name&&s.delete(f.record.name),f.children.forEach(i),f.alias.forEach(i))}}function a(){return n}function l(f){const p=Ff(f,n);n.splice(p,0,f),f.record.name&&!ti(f)&&s.set(f.record.name,f)}function c(f,p){let g,x={},w,I;if("name"in f&&f.name){if(g=s.get(f.name),!g)throw An(ve.MATCHER_NOT_FOUND,{location:f});I=g.record.name,x=le(Zo(p.params,g.keys.filter(T=>!T.optional).concat(g.parent?g.parent.keys.filter(T=>T.optional):[]).map(T=>T.name)),f.params&&Zo(f.params,g.keys.map(T=>T.name))),w=g.stringify(x)}else if(f.path!=null)w=f.path,g=n.find(T=>T.re.test(w)),g&&(x=g.parse(w),I=g.record.name);else{if(g=p.name?s.get(p.name):n.find(T=>T.re.test(p.path)),!g)throw An(ve.MATCHER_NOT_FOUND,{location:f,currentLocation:p});I=g.record.name,x=le({},p.params,f.params),w=g.stringify(x)}const C=[];let v=g;for(;v;)C.unshift(v.record),v=v.parent;return{name:I,path:w,params:x,matched:C,meta:jf(C)}}e.forEach(f=>o(f));function u(){n.length=0,s.clear()}return{addRoute:o,resolve:c,removeRoute:i,clearRoutes:u,getRoutes:a,getRecordMatcher:r}}function Zo(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function ei(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Vf(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Vf(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function ti(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function jf(e){return e.reduce((t,n)=>le(t,n.meta),{})}function Ff(e,t){let n=0,s=t.length;for(;n!==s;){const o=n+s>>1;Yl(e,t[o])<0?s=o:n=o+1}const r=Bf(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function Bf(e){let t=e;for(;t=t.parent;)if(Ql(t)&&Yl(e,t)===0)return t}function Ql({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function ni(e){const t=st(zs),n=st(qr),s=Ie(()=>{const l=K(e.to);return t.resolve(l)}),r=Ie(()=>{const{matched:l}=s.value,{length:c}=l,u=l[c-1],f=n.matched;if(!u||!f.length)return-1;const p=f.findIndex(wn.bind(null,u));if(p>-1)return p;const g=si(l[c-2]);return c>1&&si(u)===g&&f[f.length-1].path!==g?f.findIndex(wn.bind(null,l[c-2])):p}),o=Ie(()=>r.value>-1&&Kf(n.params,s.value.params)),i=Ie(()=>r.value>-1&&r.value===n.matched.length-1&&Wl(n.params,s.value.params));function a(l={}){if(Gf(l)){const c=t[K(e.replace)?"replace":"push"](K(e.to)).catch($n);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>c),c}return Promise.resolve()}return{route:s,href:Ie(()=>s.value.href),isActive:o,isExactActive:i,navigate:a}}function $f(e){return e.length===1?e[0]:e}const Hf=sn({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:ni,setup(e,{slots:t}){const n=Kt(ni(e)),{options:s}=st(zs),r=Ie(()=>({[ri(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[ri(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&$f(t.default(n));return e.custom?o:vn("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},o)}}}),Uf=Hf;function Gf(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Kf(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!ot(r)||r.length!==s.length||s.some((o,i)=>o.valueOf()!==r[i].valueOf()))return!1}return!0}function si(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const ri=(e,t,n)=>e??t??n,Wf=sn({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=st(Pr),r=Ie(()=>e.route||s.value),o=st(Jo,0),i=Ie(()=>{let c=K(o);const{matched:u}=r.value;let f;for(;(f=u[c])&&!f.components;)c++;return c}),a=Ie(()=>r.value.matched[i.value]);cs(Jo,Ie(()=>i.value+1)),cs(Ef,a),cs(Pr,r);const l=Xe();return mt(()=>[l.value,a.value,e.name],([c,u,f],[p,g,x])=>{u&&(u.instances[f]=c,g&&g!==u&&c&&c===p&&(u.leaveGuards.size||(u.leaveGuards=g.leaveGuards),u.updateGuards.size||(u.updateGuards=g.updateGuards))),c&&u&&(!g||!wn(u,g)||!p)&&(u.enterCallbacks[f]||[]).forEach(w=>w(c))},{flush:"post"}),()=>{const c=r.value,u=e.name,f=a.value,p=f&&f.components[u];if(!p)return oi(n.default,{Component:p,route:c});const g=f.props[u],x=g?g===!0?c.params:typeof g=="function"?g(c):g:null,I=vn(p,le({},x,t,{onVnodeUnmounted:C=>{C.component.isUnmounted&&(f.instances[u]=null)},ref:l}));return oi(n.default,{Component:I,route:c})||I}}});function oi(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const qf=Wf;function zf(e){const t=Df(e.routes,e),n=e.parseQuery||vf,s=e.stringifyQuery||zo,r=e.history,o=On(),i=On(),a=On(),l=Ma(Mt);let c=Mt;un&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=ir.bind(null,b=>""+b),f=ir.bind(null,tf),p=ir.bind(null,Yn);function g(b,D){let O,B;return ql(b)?(O=t.getRecordMatcher(b),B=D):B=b,t.addRoute(B,O)}function x(b){const D=t.getRecordMatcher(b);D&&t.removeRoute(D)}function w(){return t.getRoutes().map(b=>b.record)}function I(b){return!!t.getRecordMatcher(b)}function C(b,D){if(D=le({},D||l.value),typeof b=="string"){const m=lr(n,b,D.path),_=t.resolve({path:m.path},D),E=r.createHref(m.fullPath);return le(m,_,{params:p(_.params),hash:Yn(m.hash),redirectedFrom:void 0,href:E})}let O;if(b.path!=null)O=le({},b,{path:lr(n,b.path,D.path).path});else{const m=le({},b.params);for(const _ in m)m[_]==null&&delete m[_];O=le({},b,{params:f(m)}),D.params=f(D.params)}const B=t.resolve(O,D),Q=b.hash||"";B.params=u(p(B.params));const d=rf(s,le({},b,{hash:Xu(Q),path:B.path})),h=r.createHref(d);return le({fullPath:d,hash:Q,query:s===zo?bf(b.query):b.query||{}},B,{redirectedFrom:void 0,href:h})}function v(b){return typeof b=="string"?lr(n,b,l.value.path):le({},b)}function T(b,D){if(c!==b)return An(ve.NAVIGATION_CANCELLED,{from:D,to:b})}function S(b){return V(b)}function H(b){return S(le(v(b),{replace:!0}))}function J(b,D){const O=b.matched[b.matched.length-1];if(O&&O.redirect){const{redirect:B}=O;let Q=typeof B=="function"?B(b,D):B;return typeof Q=="string"&&(Q=Q.includes("?")||Q.includes("#")?Q=v(Q):{path:Q},Q.params={}),le({query:b.query,hash:b.hash,params:Q.path!=null?{}:b.params},Q)}}function V(b,D){const O=c=C(b),B=l.value,Q=b.state,d=b.force,h=b.replace===!0,m=J(O,B);if(m)return V(le(v(m),{state:typeof m=="object"?le({},Q,m.state):Q,force:d,replace:h}),D||O);const _=O;_.redirectedFrom=D;let E;return!d&&of(s,B,O)&&(E=An(ve.NAVIGATION_DUPLICATED,{to:_,from:B}),it(B,B,!0,!1)),(E?Promise.resolve(E):Y(_,B)).catch(y=>vt(y)?vt(y,ve.NAVIGATION_GUARD_REDIRECT)?y:Ot(y):ie(y,_,B)).then(y=>{if(y){if(vt(y,ve.NAVIGATION_GUARD_REDIRECT))return V(le({replace:h},v(y.to),{state:typeof y.to=="object"?le({},Q,y.to.state):Q,force:d}),D||_)}else y=N(_,B,!0,h,Q);return re(_,B,y),y})}function te(b,D){const O=T(b,D);return O?Promise.reject(O):Promise.resolve()}function L(b){const D=on.values().next().value;return D&&typeof D.runWithContext=="function"?D.runWithContext(b):b()}function Y(b,D){let O;const[B,Q,d]=wf(b,D);O=cr(B.reverse(),"beforeRouteLeave",b,D);for(const m of B)m.leaveGuards.forEach(_=>{O.push(Vt(_,b,D))});const h=te.bind(null,b,D);return O.push(h),Je(O).then(()=>{O=[];for(const m of o.list())O.push(Vt(m,b,D));return O.push(h),Je(O)}).then(()=>{O=cr(Q,"beforeRouteUpdate",b,D);for(const m of Q)m.updateGuards.forEach(_=>{O.push(Vt(_,b,D))});return O.push(h),Je(O)}).then(()=>{O=[];for(const m of d)if(m.beforeEnter)if(ot(m.beforeEnter))for(const _ of m.beforeEnter)O.push(Vt(_,b,D));else O.push(Vt(m.beforeEnter,b,D));return O.push(h),Je(O)}).then(()=>(b.matched.forEach(m=>m.enterCallbacks={}),O=cr(d,"beforeRouteEnter",b,D,L),O.push(h),Je(O))).then(()=>{O=[];for(const m of i.list())O.push(Vt(m,b,D));return O.push(h),Je(O)}).catch(m=>vt(m,ve.NAVIGATION_CANCELLED)?m:Promise.reject(m))}function re(b,D,O){a.list().forEach(B=>L(()=>B(b,D,O)))}function N(b,D,O,B,Q){const d=T(b,D);if(d)return d;const h=D===Mt,m=un?history.state:{};O&&(B||h?r.replace(b.fullPath,le({scroll:h&&m&&m.scroll},Q)):r.push(b.fullPath,Q)),l.value=b,it(b,D,O,h),Ot()}let ne;function _e(){ne||(ne=r.listen((b,D,O)=>{if(!Wt.listening)return;const B=C(b),Q=J(B,Wt.currentRoute.value);if(Q){V(le(Q,{replace:!0,force:!0}),B).catch($n);return}c=B;const d=l.value;un&&pf(qo(d.fullPath,O.delta),qs()),Y(B,d).catch(h=>vt(h,ve.NAVIGATION_ABORTED|ve.NAVIGATION_CANCELLED)?h:vt(h,ve.NAVIGATION_GUARD_REDIRECT)?(V(le(v(h.to),{force:!0}),B).then(m=>{vt(m,ve.NAVIGATION_ABORTED|ve.NAVIGATION_DUPLICATED)&&!O.delta&&O.type===Rr.pop&&r.go(-1,!1)}).catch($n),Promise.reject()):(O.delta&&r.go(-O.delta,!1),ie(h,B,d))).then(h=>{h=h||N(B,d,!1),h&&(O.delta&&!vt(h,ve.NAVIGATION_CANCELLED)?r.go(-O.delta,!1):O.type===Rr.pop&&vt(h,ve.NAVIGATION_ABORTED|ve.NAVIGATION_DUPLICATED)&&r.go(-1,!1)),re(B,d,h)}).catch($n)}))}let Ge=On(),we=On(),ue;function ie(b,D,O){Ot(b);const B=we.list();return B.length?B.forEach(Q=>Q(b,D,O)):console.error(b),Promise.reject(b)}function yt(){return ue&&l.value!==Mt?Promise.resolve():new Promise((b,D)=>{Ge.add([b,D])})}function Ot(b){return ue||(ue=!b,_e(),Ge.list().forEach(([D,O])=>b?O(b):D()),Ge.reset()),b}function it(b,D,O,B){const{scrollBehavior:Q}=e;if(!un||!Q)return Promise.resolve();const d=!O&&gf(qo(b.fullPath,0))||(B||!O)&&history.state&&history.state.scroll||null;return _n().then(()=>Q(b,D,d)).then(h=>h&&hf(h)).catch(h=>ie(h,b,D))}const Ue=b=>r.go(b);let rn;const on=new Set,Wt={currentRoute:l,listening:!0,addRoute:g,removeRoute:x,clearRoutes:t.clearRoutes,hasRoute:I,getRoutes:w,resolve:C,options:e,push:S,replace:H,go:Ue,back:()=>Ue(-1),forward:()=>Ue(1),beforeEach:o.add,beforeResolve:i.add,afterEach:a.add,onError:we.add,isReady:yt,install(b){b.component("RouterLink",Uf),b.component("RouterView",qf),b.config.globalProperties.$router=Wt,Object.defineProperty(b.config.globalProperties,"$route",{enumerable:!0,get:()=>K(l)}),un&&!rn&&l.value===Mt&&(rn=!0,S(r.location).catch(B=>{}));const D={};for(const B in Mt)Object.defineProperty(D,B,{get:()=>l.value[B],enumerable:!0});b.provide(zs,Wt),b.provide(qr,ji(D)),b.provide(Pr,l);const O=b.unmount;on.add(b),b.unmount=function(){on.delete(b),on.size<1&&(c=Mt,ne&&ne(),ne=null,l.value=Mt,rn=!1,ue=!1),O()}}};function Je(b){return b.reduce((D,O)=>D.then(()=>L(O)),Promise.resolve())}return Wt}function zr(){return st(zs)}function Jf(e){return st(qr)}const Yf=[{path:"/login",name:"login",component:()=>ce(()=>import("./LoginView-CIkI9Qm_.js"),__vite__mapDeps([0,1,2,3,4,5,6]))},{path:"/",name:"dashboard",component:()=>ce(()=>import("./DashboardView-DK0qDo-f.js"),__vite__mapDeps([7,8,9,10]))},{path:"/deployments",name:"deployments",component:()=>ce(()=>import("./DeploymentsView-Cx9BqQ8Q.js"),__vite__mapDeps([11,9,12,13,14,10]))},{path:"/deployments/:id/public-logs-view",name:"public-logs",component:()=>ce(()=>import("./PublicLogsView-DIWJH7qL.js"),__vite__mapDeps([15,16,13,14,3,17])),props:!0,meta:{public:!0}},{path:"/deployments/:id",component:()=>ce(()=>import("./DeploymentDetailView-BcImKApM.js"),__vite__mapDeps([18,19,20,21,1,22,10])),props:!0,children:[{path:"",name:"deployment",redirect:e=>`/deployments/${e.params.id}/overview`},{path:"overview",name:"d.overview",component:()=>ce(()=>import("./OverviewTab-ChCj5LAj.js"),__vite__mapDeps([23,19,20,9]))},{path:"config",name:"d.config",component:()=>ce(()=>import("./ConfigTab-ucr87rD6.js"),__vite__mapDeps([24,19,20,25,26,13,14,3,27,28,29]))},{path:"runtime",name:"d.runtime",component:()=>ce(()=>import("./RuntimeTab-Bh2gGuhj.js"),__vite__mapDeps([30,19,20,9,1,22,29,14,3,31,10,32]))},{path:"axes",name:"d.axes",component:()=>ce(()=>import("./AxesTab-BWzsbFAx.js"),__vite__mapDeps([33,19,20]))},{path:"requires",name:"d.requires",component:()=>ce(()=>import("./RequiresTab-3BhU5BHd.js"),__vite__mapDeps([34,19,20]))},{path:"logs",name:"d.logs",component:()=>ce(()=>import("./LogsTab-D8zhR7Eb.js"),__vite__mapDeps([35,19,20,13,14,16]))},{path:"terminal",name:"d.terminal",component:()=>ce(()=>import("./TerminalTab-Dleba0ru.js"),__vite__mapDeps([36,22,13,14,3,37]))},{path:"danger",name:"d.danger",component:()=>ce(()=>import("./DangerTab-BimKNJab.js"),__vite__mapDeps([38,19,20,21,1,22,2,3,4,13,14]))}]},{path:"/routing",name:"routing",component:()=>ce(()=>import("./RoutingView-T9afX8_M.js"),__vite__mapDeps([39,1,22,9,28,29,14,10,31,3,40]))},{path:"/swarm",name:"swarm",component:()=>ce(()=>import("./SwarmView-CqFndUrV.js"),__vite__mapDeps([41,1,22,28,29,14,10,13,9]))},{path:"/registries",name:"registries",component:()=>ce(()=>import("./RegistriesView-D2aCsYIu.js"),__vite__mapDeps([42,1,22,9,28,29,14,10]))},{path:"/notifiers",name:"notifiers",component:()=>ce(()=>import("./NotifiersView-aRHInxVx.js"),__vite__mapDeps([43,1,22,9,12,13,14,10]))},{path:"/specs",name:"specs",component:()=>ce(()=>import("./SpecsView-B9qQPzkG.js"),__vite__mapDeps([44,9,22,12,2,3,4,10]))},{path:"/specs/:name",name:"spec",component:()=>ce(()=>import("./SpecDetailView-Bd4Hx-bI.js"),__vite__mapDeps([45,9,22])),props:!0},{path:"/submit/:id?",name:"submit",component:()=>ce(()=>import("./SubmitView-D-jg5Wxy.js"),__vite__mapDeps([46,20,1,22,25,26,13,14,3,27])),props:!0},{path:"/jobs",name:"jobs",component:()=>ce(()=>import("./JobsView-DjP5lXHk.js"),__vite__mapDeps([47,8,9,12,13,14,48,10,3,49]))},{path:"/jobs/:jobId",name:"job",component:()=>ce(()=>import("./JobDetailView-B1sXXVJ5.js"),__vite__mapDeps([50,48,16,8,1,22])),props:!0},{path:"/users",name:"users",component:()=>ce(()=>import("./UsersView-BrZbuuOg.js"),__vite__mapDeps([51,1,2,3,4,22,12,9,10,13,14,52]))},{path:"/sso",name:"sso",component:()=>ce(()=>import("./SsoView-CltdTdwt.js"),__vite__mapDeps([53,1,22,28,29,14,12,9,5,3,54]))},{path:"/variables",name:"variables",component:()=>ce(()=>import("./VariablesView-CQp0T7Q6.js"),__vite__mapDeps([55,1,2,3,4,22,12,9,10,26,13,14,27,56]))},{path:"/config",name:"config",component:()=>ce(()=>import("./ConfigView-BbRYGyvZ.js"),__vite__mapDeps([57,1,22]))},{path:"/settings",name:"settings",component:()=>ce(()=>import("./SettingsView-DIKjdBdy.js"),__vite__mapDeps([58,1,13,14]))},{path:"/:pathMatch(.*)*",name:"not-found",component:()=>ce(()=>import("./NotFoundView-aUtqh2Qi.js"),[])}],xn=zf({history:Sf(),routes:Yf,scrollBehavior:(e,t,n)=>n??{top:0}});xn.beforeEach(async e=>{if(e.meta.public)return!0;const{authState:t,checkAuth:n}=await ce(async()=>{const{authState:s,checkAuth:r}=await Promise.resolve().then(()=>Ed);return{authState:s,checkAuth:r}},void 0);return t.checked||await n(),e.name==="login"?t.authed?{path:"/"}:!0:t.authed?!0:{name:"login",query:e.fullPath!=="/"?{next:e.fullPath}:{}}});const Jr=typeof document<"u"&&typeof document.startViewTransition=="function";Jr&&(document.documentElement.dataset.vt="on");if(Jr){let e=null;xn.beforeResolve(()=>new Promise(t=>{document.startViewTransition(()=>(t(),new Promise(n=>{e=n,setTimeout(()=>{e==null||e(),e=null},400)})))})),xn.afterEach(async()=>{await _n(),e==null||e(),e=null})}let Qf=0;const mn=Kt([]);function Xl(e){const t=mn.findIndex(n=>n.id===e);t>=0&&mn.splice(t,1)}function Ch(e,t,n={}){const s=++Qf;mn.push({id:s,kind:e,text:t,to:n.to,toLabel:n.toLabel});const r=n.ms??(e==="error"?0:6e3);for(r>0&&setTimeout(()=>Xl(s),r);mn.length>5;)mn.shift();return s}const Xf={class:"toasts","aria-live":"polite","aria-atomic":"false"},Zf=["aria-label","onClick"],ed=sn({__name:"ToastHost",setup(e){return(t,n)=>{const s=_r("RouterLink");return z(),ge("div",Xf,[U(wu,{name:"toast"},{default:me(()=>[(z(!0),ge(be,null,vs(K(mn),r=>(z(),ge("div",{key:r.id,class:Ft(["toast",r.kind])},[j("div",null,[j("div",null,Pe(r.text),1),r.to?(z(),Ze(s,{key:0,to:r.to},{default:me(()=>[jt(Pe(r.toLabel??"Open")+" →",1)]),_:2},1032,["to"])):Re("",!0)]),j("button",{class:"x","aria-label":`dismiss: ${r.text}`,onClick:o=>K(Xl)(r.id)},"✕",8,Zf)],2))),128))]),_:1})])}}}),td=900;function ii(e){const t=e;if(!t)return!1;const n=t.tagName;return n==="INPUT"||n==="TEXTAREA"||n==="SELECT"||t.isContentEditable===!0}function nd(){const e=zr(),t=Xe(!1);let n=0,s="";const r=o=>{if(o.key==="Escape"){t.value&&(t.value=!1,o.preventDefault()),ii(o.target)&&o.target.blur();return}if(o.metaKey||o.ctrlKey||o.altKey||ii(o.target))return;const i=Date.now();if(s==="g"&&i-n<td){s="";const a={d:"/deployments",j:"/jobs",h:"/",s:"/settings",n:"/submit"}[o.key];a&&(o.preventDefault(),e.push(a));return}if(o.key==="g"){s="g",n=i;return}if(s="",o.key==="?"){o.preventDefault(),t.value=!t.value;return}if(o.key==="/"){const a=document.querySelector("[data-search]");a&&(o.preventDefault(),a.focus(),a.select())}};return Sn(()=>document.addEventListener("keydown",r)),es(()=>document.removeEventListener("keydown",r)),{sheetOpen:t}}const sd=[{keys:"⌘K / Ctrl-K",what:"Open the command palette — jump to any deployment or page"},{keys:"?",what:"Open or close this sheet"},{keys:"g h",what:"Go to the dashboard"},{keys:"g d",what:"Go to deployments"},{keys:"g j",what:"Go to jobs"},{keys:"g n",what:"Go to submit"},{keys:"g s",what:"Go to settings"},{keys:"/",what:"Focus the search box on this view"},{keys:"Esc",what:"Close this sheet, or leave the field you are typing in"}],rd={class:"sheet"},od={class:"row"},id=sn({__name:"ShortcutSheet",props:{open:{type:Boolean}},emits:["close"],setup(e,{emit:t}){const n=t;return(s,r)=>(z(),Ze(Ws,{name:"fade"},{default:me(()=>[e.open?(z(),ge("div",{key:0,class:"scrim",role:"dialog","aria-modal":"true","aria-label":"Keyboard shortcuts",onClick:r[1]||(r[1]=Fl(o=>n("close"),["self"]))},[j("div",rd,[j("div",od,[r[2]||(r[2]=j("h2",{style:{"font-size":"var(--t-lg)","font-weight":"650"}},"Keyboard shortcuts",-1)),r[3]||(r[3]=j("span",{class:"grow"},null,-1)),j("button",{class:"ghost sm",onClick:r[0]||(r[0]=o=>n("close"))},"Close")]),j("dl",null,[(z(!0),ge(be,null,vs(K(sd),o=>(z(),ge(be,{key:o.keys},[j("dt",null,[(z(!0),ge(be,null,vs(o.keys.split(" "),i=>(z(),ge("kbd",{key:i,style:{"margin-left":"4px"}},Pe(i),1))),128))]),j("dd",null,Pe(o.what),1)],64))),128))])])])):Re("",!0)]),_:1}))}}),Ut={token:"pstack.ui.token",apiBase:"pstack.ui.apiBase",theme:"pstack.ui.theme",motion:"pstack.ui.motion"};function Cs(e,t){try{return localStorage.getItem(e)??t}catch{return t}}function Ss(e,t){try{t?localStorage.setItem(e,t):localStorage.removeItem(e)}catch{}}const ur=Cs(Ut.theme,"system"),fr=Cs(Ut.motion,"system"),Oe=Kt({token:Cs(Ut.token,""),apiBase:Cs(Ut.apiBase,""),theme:ur==="dark"||ur==="light"?ur:"system",motion:fr==="full"||fr==="none"?fr:"system"});function Zl(){const e=document.documentElement;Oe.theme==="system"?delete e.dataset.theme:e.dataset.theme=Oe.theme,Oe.motion==="system"?delete e.dataset.motion:e.dataset.motion=Oe.motion}mt(()=>Oe.token,e=>Ss(Ut.token,e));mt(()=>Oe.apiBase,e=>Ss(Ut.apiBase,e));mt(()=>[Oe.theme,Oe.motion],()=>{Ss(Ut.theme,Oe.theme==="system"?"":Oe.theme),Ss(Ut.motion,Oe.motion==="system"?"":Oe.motion),Zl()});Zl();function Sh(e,t={}){const n=new URLSearchParams;for(const r of e)r.k&&n.set(r.k,r.v??"");for(const[r,o]of Object.entries(t))n.set(r,String(o));const s=n.toString();return s?`?${s}`:""}function Or(e){const t=Oe.apiBase.replace(/\/$/,""),n=t?t+e:e;return Ir?`${n}${n.includes("?")?"&":"?"}token=${encodeURIComponent(Ir)}`:n}let Ir="";function kh(e){Ir=e}let ds=null;function ld(e){ds=e}async function an(e,t,n,s=!1){const r={};e!=="GET"&&(r["content-type"]="application/json"),Oe.token&&(r.authorization=`Bearer ${Oe.token}`);try{const o=await fetch(Or(t),{method:e,headers:r,body:n===void 0?void 0:JSON.stringify(n)}),i=await o.text();let a=null;try{a=i?JSON.parse(i):null}catch{}return o.status===401&&!t.startsWith("/api/auth/")&&(ds==null||ds()),a===null&&i?{status:o.status,ok:o.ok,body:{},raw:i,notJson:!0}:{status:o.status,ok:o.ok,body:a??{},raw:i,notJson:!1}}catch(o){return{status:0,ok:!1,body:{error:`unreachable: ${o.message}`},raw:"",notJson:!1}}}const Gt={get:e=>an("GET",e),getAuthed:e=>an("GET",e,void 0,!0),post:(e,t)=>an("POST",e,t??{}),put:(e,t)=>an("PUT",e,t),patch:(e,t)=>an("PATCH",e,t),del:e=>an("DELETE",e),getText:async e=>{const t={};Oe.token&&(t.authorization=`Bearer ${Oe.token}`);try{const n=await fetch(Or(e),{headers:t});return{status:n.status,ok:n.ok,text:await n.text()}}catch(n){return{status:0,ok:!1,text:`unreachable: ${n.message}`}}},url:Or};function Yr(e,t){if(e.status===0)return e.body.error??"unreachable";if(e.status===401)return`${t}: 401 unauthorized — set the bearer token in Settings.`;if(e.notJson)return`${t}: HTTP ${e.status}, and the response was not JSON. Something other than the pstack API answered — a proxy, or an error page.
|
|
26
|
+
*/let Af=()=>location.protocol+"//"+location.host;function Jl(e,t){const{pathname:n,search:s,hash:r}=t,o=e.indexOf("#");if(o>-1){let i=r.includes(e.slice(o))?e.slice(o).length:1,a=r.slice(i);return a[0]!=="/"&&(a="/"+a),Ko(a,"")}return Ko(n,e)+s+r}function xf(e,t,n,s){let r=[],o=[],i=null;const a=({state:p})=>{const g=Jl(e,location),x=n.value,w=t.value;let I=0;if(p){if(n.value=g,t.value=p,i&&i===x){i=null;return}I=w?p.position-w.position:0}else s(g);r.forEach(C=>{C(n.value,x,{delta:I,type:Rr.pop,direction:I?I>0?ar.forward:ar.back:ar.unknown})})};function l(){i=n.value}function c(p){r.push(p);const g=()=>{const x=r.indexOf(p);x>-1&&r.splice(x,1)};return o.push(g),g}function u(){if(document.visibilityState==="hidden"){const{history:p}=window;if(!p.state)return;p.replaceState(le({},p.state,{scroll:qs()}),"")}}function f(){for(const p of o)p();o=[],window.removeEventListener("popstate",a),window.removeEventListener("pagehide",u),document.removeEventListener("visibilitychange",u)}return window.addEventListener("popstate",a),window.addEventListener("pagehide",u),document.addEventListener("visibilitychange",u),{pauseListeners:l,listen:c,destroy:f}}function Yo(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?qs():null}}function Cf(e){const{history:t,location:n}=window,s={value:Jl(e,n)},r={value:t.state};r.value||o(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(l,c,u){const f=e.indexOf("#"),p=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+l:Af()+e+l;try{t[u?"replaceState":"pushState"](c,"",p),r.value=c}catch(g){console.error(g),n[u?"replace":"assign"](p)}}function i(l,c){o(l,le({},t.state,Yo(r.value.back,l,r.value.forward,!0),c,{position:r.value.position}),!0),s.value=l}function a(l,c){const u=le({},r.value,t.state,{forward:l,scroll:qs()});o(u.current,u,!0),o(l,le({},Yo(s.value,l,null),{position:u.position+1},c),!1),s.value=l}return{location:s,state:r,push:a,replace:i}}function Sf(e){e=cf(e);const t=Cf(e),n=xf(e,t.state,t.location,t.replace);function s(o,i=!0){i||n.pauseListeners(),history.go(o)}const r=le({location:"",base:e,go:s,createHref:ff.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}let Zt=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e})({});var xe=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e})(xe||{});const kf={type:Zt.Static,value:""},Rf=/[a-zA-Z0-9_]/;function Tf(e){if(!e)return[[]];if(e==="/")return[[kf]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(g){throw new Error(`ERR (${n})/"${c}": ${g}`)}let n=xe.Static,s=n;const r=[];let o;function i(){o&&r.push(o),o=[]}let a=0,l,c="",u="";function f(){c&&(n===xe.Static?o.push({type:Zt.Static,value:c}):n===xe.Param||n===xe.ParamRegExp||n===xe.ParamRegExpEnd?(o.length>1&&(l==="*"||l==="+")&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),o.push({type:Zt.Param,value:c,regexp:u,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),c="")}function p(){c+=l}for(;a<e.length;){if(l=e[a++],l==="\\"&&n!==xe.ParamRegExp){s=n,n=xe.EscapeNext;continue}switch(n){case xe.Static:l==="/"?(c&&f(),i()):l===":"?(f(),n=xe.Param):p();break;case xe.EscapeNext:p(),n=s;break;case xe.Param:l==="("?n=xe.ParamRegExp:Rf.test(l)?p():(f(),n=xe.Static,l!=="*"&&l!=="?"&&l!=="+"&&a--);break;case xe.ParamRegExp:l===")"?u[u.length-1]=="\\"?u=u.slice(0,-1)+l:n=xe.ParamRegExpEnd:u+=l;break;case xe.ParamRegExpEnd:f(),n=xe.Static,l!=="*"&&l!=="?"&&l!=="+"&&a--,u="";break;default:t("Unknown state");break}}return n===xe.ParamRegExp&&t(`Unfinished custom RegExp for param "${c}"`),f(),i(),r}const Qo="[^/]+?",Pf={sensitive:!1,strict:!1,start:!0,end:!0};var $e=(function(e){return e[e._multiplier=10]="_multiplier",e[e.Root=90]="Root",e[e.Segment=40]="Segment",e[e.SubSegment=30]="SubSegment",e[e.Static=40]="Static",e[e.Dynamic=20]="Dynamic",e[e.BonusCustomRegExp=10]="BonusCustomRegExp",e[e.BonusWildcard=-50]="BonusWildcard",e[e.BonusRepeatable=-20]="BonusRepeatable",e[e.BonusOptional=-8]="BonusOptional",e[e.BonusStrict=.7000000000000001]="BonusStrict",e[e.BonusCaseSensitive=.25]="BonusCaseSensitive",e})($e||{});const Of=/[.+*?^${}()[\]/\\]/g;function If(e,t){const n=le({},Pf,t),s=[];let r=n.start?"^":"";const o=[];for(const c of e){const u=c.length?[]:[$e.Root];n.strict&&!c.length&&(r+="/");for(let f=0;f<c.length;f++){const p=c[f];let g=$e.Segment+(n.sensitive?$e.BonusCaseSensitive:0);if(p.type===Zt.Static)f||(r+="/"),r+=p.value.replace(Of,"\\$&"),g+=$e.Static;else if(p.type===Zt.Param){const{value:x,repeatable:w,optional:I,regexp:C}=p;o.push({name:x,repeatable:w,optional:I});const v=C||Qo;if(v!==Qo){g+=$e.BonusCustomRegExp;try{`${v}`}catch(S){throw new Error(`Invalid custom RegExp for param "${x}" (${v}): `+S.message)}}let T=w?`((?:${v})(?:/(?:${v}))*)`:`(${v})`;f||(T=I&&c.length<2?`(?:/${T})`:"/"+T),I&&(T+="?"),r+=T,g+=$e.Dynamic,I&&(g+=$e.BonusOptional),w&&(g+=$e.BonusRepeatable),v===".*"&&(g+=$e.BonusWildcard)}u.push(g)}s.push(u)}if(n.strict&&n.end){const c=s.length-1;s[c][s[c].length-1]+=$e.BonusStrict}n.strict||(r+="/?"),n.end?r+="$":n.strict&&!r.endsWith("/")&&(r+="(?:/|$)");const i=new RegExp(r,n.sensitive?"":"i");function a(c){const u=c.match(i),f={};if(!u)return null;for(let p=1;p<u.length;p++){const g=u[p]||"",x=o[p-1];f[x.name]=g&&x.repeatable?g.split("/"):g}return f}function l(c){let u="",f=!1;for(const p of e){(!f||!u.endsWith("/"))&&(u+="/"),f=!1;for(const g of p)if(g.type===Zt.Static)u+=g.value;else if(g.type===Zt.Param){const{value:x,repeatable:w,optional:I}=g,C=x in c?c[x]:"";if(ot(C)&&!w)throw new Error(`Provided param "${x}" is an array but it is not repeatable (* or + modifiers)`);const v=ot(C)?C.join("/"):C;if(!v)if(I)p.length<2&&(u.endsWith("/")?u=u.slice(0,-1):f=!0);else throw new Error(`Missing required param "${x}"`);u+=v}}return u||"/"}return{re:i,score:s,keys:o,parse:a,stringify:l}}function Mf(e,t){let n=0;for(;n<e.length&&n<t.length;){const s=t[n]-e[n];if(s)return s;n++}return e.length<t.length?e.length===1&&e[0]===$e.Static+$e.Segment?-1:1:e.length>t.length?t.length===1&&t[0]===$e.Static+$e.Segment?1:-1:0}function Yl(e,t){let n=0;const s=e.score,r=t.score;for(;n<s.length&&n<r.length;){const o=Mf(s[n],r[n]);if(o)return o;n++}if(Math.abs(r.length-s.length)===1){if(Xo(s))return 1;if(Xo(r))return-1}return r.length-s.length}function Xo(e){const t=e[e.length-1];return e.length>0&&t[t.length-1]<0}const Nf={strict:!1,end:!0,sensitive:!1};function Lf(e,t,n){const s=If(Tf(e.path),n),r=le(s,{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function Df(e,t){const n=[],s=new Map;t=Go(Nf,t);function r(f){return s.get(f)}function o(f,p,g){const x=!g,w=ei(f);w.aliasOf=g&&g.record;const I=Go(t,f),C=[w];if("alias"in f){const S=typeof f.alias=="string"?[f.alias]:f.alias;for(const H of S)C.push(ei(le({},w,{components:g?g.record.components:w.components,path:H,aliasOf:g?g.record:w})))}let v,T;for(const S of C){const{path:H}=S;if(p&&H[0]!=="/"){const J=p.record.path,V=J[J.length-1]==="/"?"":"/";S.path=p.record.path+(H&&V+H)}if(v=Lf(S,p,I),g?g.alias.push(v):(T=T||v,T!==v&&T.alias.push(v),x&&f.name&&!ti(v)&&i(f.name)),Ql(v)&&l(v),w.children){const J=w.children;for(let V=0;V<J.length;V++)o(J[V],v,g&&g.children[V])}g=g||v}return T?()=>{i(T)}:$n}function i(f){if(ql(f)){const p=s.get(f);p&&(s.delete(f),n.splice(n.indexOf(p),1),p.children.forEach(i),p.alias.forEach(i))}else{const p=n.indexOf(f);p>-1&&(n.splice(p,1),f.record.name&&s.delete(f.record.name),f.children.forEach(i),f.alias.forEach(i))}}function a(){return n}function l(f){const p=Ff(f,n);n.splice(p,0,f),f.record.name&&!ti(f)&&s.set(f.record.name,f)}function c(f,p){let g,x={},w,I;if("name"in f&&f.name){if(g=s.get(f.name),!g)throw An(ve.MATCHER_NOT_FOUND,{location:f});I=g.record.name,x=le(Zo(p.params,g.keys.filter(T=>!T.optional).concat(g.parent?g.parent.keys.filter(T=>T.optional):[]).map(T=>T.name)),f.params&&Zo(f.params,g.keys.map(T=>T.name))),w=g.stringify(x)}else if(f.path!=null)w=f.path,g=n.find(T=>T.re.test(w)),g&&(x=g.parse(w),I=g.record.name);else{if(g=p.name?s.get(p.name):n.find(T=>T.re.test(p.path)),!g)throw An(ve.MATCHER_NOT_FOUND,{location:f,currentLocation:p});I=g.record.name,x=le({},p.params,f.params),w=g.stringify(x)}const C=[];let v=g;for(;v;)C.unshift(v.record),v=v.parent;return{name:I,path:w,params:x,matched:C,meta:jf(C)}}e.forEach(f=>o(f));function u(){n.length=0,s.clear()}return{addRoute:o,resolve:c,removeRoute:i,clearRoutes:u,getRoutes:a,getRecordMatcher:r}}function Zo(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function ei(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Vf(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Vf(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function ti(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function jf(e){return e.reduce((t,n)=>le(t,n.meta),{})}function Ff(e,t){let n=0,s=t.length;for(;n!==s;){const o=n+s>>1;Yl(e,t[o])<0?s=o:n=o+1}const r=Bf(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function Bf(e){let t=e;for(;t=t.parent;)if(Ql(t)&&Yl(e,t)===0)return t}function Ql({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function ni(e){const t=st(zs),n=st(qr),s=Ie(()=>{const l=K(e.to);return t.resolve(l)}),r=Ie(()=>{const{matched:l}=s.value,{length:c}=l,u=l[c-1],f=n.matched;if(!u||!f.length)return-1;const p=f.findIndex(wn.bind(null,u));if(p>-1)return p;const g=si(l[c-2]);return c>1&&si(u)===g&&f[f.length-1].path!==g?f.findIndex(wn.bind(null,l[c-2])):p}),o=Ie(()=>r.value>-1&&Kf(n.params,s.value.params)),i=Ie(()=>r.value>-1&&r.value===n.matched.length-1&&Wl(n.params,s.value.params));function a(l={}){if(Gf(l)){const c=t[K(e.replace)?"replace":"push"](K(e.to)).catch($n);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>c),c}return Promise.resolve()}return{route:s,href:Ie(()=>s.value.href),isActive:o,isExactActive:i,navigate:a}}function $f(e){return e.length===1?e[0]:e}const Hf=sn({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:ni,setup(e,{slots:t}){const n=Kt(ni(e)),{options:s}=st(zs),r=Ie(()=>({[ri(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[ri(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&$f(t.default(n));return e.custom?o:vn("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},o)}}}),Uf=Hf;function Gf(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Kf(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!ot(r)||r.length!==s.length||s.some((o,i)=>o.valueOf()!==r[i].valueOf()))return!1}return!0}function si(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const ri=(e,t,n)=>e??t??n,Wf=sn({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=st(Pr),r=Ie(()=>e.route||s.value),o=st(Jo,0),i=Ie(()=>{let c=K(o);const{matched:u}=r.value;let f;for(;(f=u[c])&&!f.components;)c++;return c}),a=Ie(()=>r.value.matched[i.value]);cs(Jo,Ie(()=>i.value+1)),cs(Ef,a),cs(Pr,r);const l=Xe();return mt(()=>[l.value,a.value,e.name],([c,u,f],[p,g,x])=>{u&&(u.instances[f]=c,g&&g!==u&&c&&c===p&&(u.leaveGuards.size||(u.leaveGuards=g.leaveGuards),u.updateGuards.size||(u.updateGuards=g.updateGuards))),c&&u&&(!g||!wn(u,g)||!p)&&(u.enterCallbacks[f]||[]).forEach(w=>w(c))},{flush:"post"}),()=>{const c=r.value,u=e.name,f=a.value,p=f&&f.components[u];if(!p)return oi(n.default,{Component:p,route:c});const g=f.props[u],x=g?g===!0?c.params:typeof g=="function"?g(c):g:null,I=vn(p,le({},x,t,{onVnodeUnmounted:C=>{C.component.isUnmounted&&(f.instances[u]=null)},ref:l}));return oi(n.default,{Component:I,route:c})||I}}});function oi(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const qf=Wf;function zf(e){const t=Df(e.routes,e),n=e.parseQuery||vf,s=e.stringifyQuery||zo,r=e.history,o=On(),i=On(),a=On(),l=Ma(Mt);let c=Mt;un&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=ir.bind(null,b=>""+b),f=ir.bind(null,tf),p=ir.bind(null,Yn);function g(b,D){let O,B;return ql(b)?(O=t.getRecordMatcher(b),B=D):B=b,t.addRoute(B,O)}function x(b){const D=t.getRecordMatcher(b);D&&t.removeRoute(D)}function w(){return t.getRoutes().map(b=>b.record)}function I(b){return!!t.getRecordMatcher(b)}function C(b,D){if(D=le({},D||l.value),typeof b=="string"){const m=lr(n,b,D.path),_=t.resolve({path:m.path},D),E=r.createHref(m.fullPath);return le(m,_,{params:p(_.params),hash:Yn(m.hash),redirectedFrom:void 0,href:E})}let O;if(b.path!=null)O=le({},b,{path:lr(n,b.path,D.path).path});else{const m=le({},b.params);for(const _ in m)m[_]==null&&delete m[_];O=le({},b,{params:f(m)}),D.params=f(D.params)}const B=t.resolve(O,D),Q=b.hash||"";B.params=u(p(B.params));const d=rf(s,le({},b,{hash:Xu(Q),path:B.path})),h=r.createHref(d);return le({fullPath:d,hash:Q,query:s===zo?bf(b.query):b.query||{}},B,{redirectedFrom:void 0,href:h})}function v(b){return typeof b=="string"?lr(n,b,l.value.path):le({},b)}function T(b,D){if(c!==b)return An(ve.NAVIGATION_CANCELLED,{from:D,to:b})}function S(b){return V(b)}function H(b){return S(le(v(b),{replace:!0}))}function J(b,D){const O=b.matched[b.matched.length-1];if(O&&O.redirect){const{redirect:B}=O;let Q=typeof B=="function"?B(b,D):B;return typeof Q=="string"&&(Q=Q.includes("?")||Q.includes("#")?Q=v(Q):{path:Q},Q.params={}),le({query:b.query,hash:b.hash,params:Q.path!=null?{}:b.params},Q)}}function V(b,D){const O=c=C(b),B=l.value,Q=b.state,d=b.force,h=b.replace===!0,m=J(O,B);if(m)return V(le(v(m),{state:typeof m=="object"?le({},Q,m.state):Q,force:d,replace:h}),D||O);const _=O;_.redirectedFrom=D;let E;return!d&&of(s,B,O)&&(E=An(ve.NAVIGATION_DUPLICATED,{to:_,from:B}),it(B,B,!0,!1)),(E?Promise.resolve(E):Y(_,B)).catch(y=>vt(y)?vt(y,ve.NAVIGATION_GUARD_REDIRECT)?y:Ot(y):ie(y,_,B)).then(y=>{if(y){if(vt(y,ve.NAVIGATION_GUARD_REDIRECT))return V(le({replace:h},v(y.to),{state:typeof y.to=="object"?le({},Q,y.to.state):Q,force:d}),D||_)}else y=N(_,B,!0,h,Q);return re(_,B,y),y})}function te(b,D){const O=T(b,D);return O?Promise.reject(O):Promise.resolve()}function L(b){const D=on.values().next().value;return D&&typeof D.runWithContext=="function"?D.runWithContext(b):b()}function Y(b,D){let O;const[B,Q,d]=wf(b,D);O=cr(B.reverse(),"beforeRouteLeave",b,D);for(const m of B)m.leaveGuards.forEach(_=>{O.push(Vt(_,b,D))});const h=te.bind(null,b,D);return O.push(h),Je(O).then(()=>{O=[];for(const m of o.list())O.push(Vt(m,b,D));return O.push(h),Je(O)}).then(()=>{O=cr(Q,"beforeRouteUpdate",b,D);for(const m of Q)m.updateGuards.forEach(_=>{O.push(Vt(_,b,D))});return O.push(h),Je(O)}).then(()=>{O=[];for(const m of d)if(m.beforeEnter)if(ot(m.beforeEnter))for(const _ of m.beforeEnter)O.push(Vt(_,b,D));else O.push(Vt(m.beforeEnter,b,D));return O.push(h),Je(O)}).then(()=>(b.matched.forEach(m=>m.enterCallbacks={}),O=cr(d,"beforeRouteEnter",b,D,L),O.push(h),Je(O))).then(()=>{O=[];for(const m of i.list())O.push(Vt(m,b,D));return O.push(h),Je(O)}).catch(m=>vt(m,ve.NAVIGATION_CANCELLED)?m:Promise.reject(m))}function re(b,D,O){a.list().forEach(B=>L(()=>B(b,D,O)))}function N(b,D,O,B,Q){const d=T(b,D);if(d)return d;const h=D===Mt,m=un?history.state:{};O&&(B||h?r.replace(b.fullPath,le({scroll:h&&m&&m.scroll},Q)):r.push(b.fullPath,Q)),l.value=b,it(b,D,O,h),Ot()}let ne;function _e(){ne||(ne=r.listen((b,D,O)=>{if(!Wt.listening)return;const B=C(b),Q=J(B,Wt.currentRoute.value);if(Q){V(le(Q,{replace:!0,force:!0}),B).catch($n);return}c=B;const d=l.value;un&&pf(qo(d.fullPath,O.delta),qs()),Y(B,d).catch(h=>vt(h,ve.NAVIGATION_ABORTED|ve.NAVIGATION_CANCELLED)?h:vt(h,ve.NAVIGATION_GUARD_REDIRECT)?(V(le(v(h.to),{force:!0}),B).then(m=>{vt(m,ve.NAVIGATION_ABORTED|ve.NAVIGATION_DUPLICATED)&&!O.delta&&O.type===Rr.pop&&r.go(-1,!1)}).catch($n),Promise.reject()):(O.delta&&r.go(-O.delta,!1),ie(h,B,d))).then(h=>{h=h||N(B,d,!1),h&&(O.delta&&!vt(h,ve.NAVIGATION_CANCELLED)?r.go(-O.delta,!1):O.type===Rr.pop&&vt(h,ve.NAVIGATION_ABORTED|ve.NAVIGATION_DUPLICATED)&&r.go(-1,!1)),re(B,d,h)}).catch($n)}))}let Ge=On(),we=On(),ue;function ie(b,D,O){Ot(b);const B=we.list();return B.length?B.forEach(Q=>Q(b,D,O)):console.error(b),Promise.reject(b)}function yt(){return ue&&l.value!==Mt?Promise.resolve():new Promise((b,D)=>{Ge.add([b,D])})}function Ot(b){return ue||(ue=!b,_e(),Ge.list().forEach(([D,O])=>b?O(b):D()),Ge.reset()),b}function it(b,D,O,B){const{scrollBehavior:Q}=e;if(!un||!Q)return Promise.resolve();const d=!O&&gf(qo(b.fullPath,0))||(B||!O)&&history.state&&history.state.scroll||null;return _n().then(()=>Q(b,D,d)).then(h=>h&&hf(h)).catch(h=>ie(h,b,D))}const Ue=b=>r.go(b);let rn;const on=new Set,Wt={currentRoute:l,listening:!0,addRoute:g,removeRoute:x,clearRoutes:t.clearRoutes,hasRoute:I,getRoutes:w,resolve:C,options:e,push:S,replace:H,go:Ue,back:()=>Ue(-1),forward:()=>Ue(1),beforeEach:o.add,beforeResolve:i.add,afterEach:a.add,onError:we.add,isReady:yt,install(b){b.component("RouterLink",Uf),b.component("RouterView",qf),b.config.globalProperties.$router=Wt,Object.defineProperty(b.config.globalProperties,"$route",{enumerable:!0,get:()=>K(l)}),un&&!rn&&l.value===Mt&&(rn=!0,S(r.location).catch(B=>{}));const D={};for(const B in Mt)Object.defineProperty(D,B,{get:()=>l.value[B],enumerable:!0});b.provide(zs,Wt),b.provide(qr,ji(D)),b.provide(Pr,l);const O=b.unmount;on.add(b),b.unmount=function(){on.delete(b),on.size<1&&(c=Mt,ne&&ne(),ne=null,l.value=Mt,rn=!1,ue=!1),O()}}};function Je(b){return b.reduce((D,O)=>D.then(()=>L(O)),Promise.resolve())}return Wt}function zr(){return st(zs)}function Jf(e){return st(qr)}const Yf=[{path:"/login",name:"login",component:()=>ce(()=>import("./LoginView-NgcWC4N0.js"),__vite__mapDeps([0,1,2,3,4,5,6]))},{path:"/",name:"dashboard",component:()=>ce(()=>import("./DashboardView-DTI9n2-Z.js"),__vite__mapDeps([7,8,9,10]))},{path:"/deployments",name:"deployments",component:()=>ce(()=>import("./DeploymentsView-BCXfIFud.js"),__vite__mapDeps([11,9,12,13,14,10]))},{path:"/deployments/:id/public-logs-view",name:"public-logs",component:()=>ce(()=>import("./PublicLogsView-DqMmMbtf.js"),__vite__mapDeps([15,16,13,14,3,17])),props:!0,meta:{public:!0}},{path:"/deployments/:id",component:()=>ce(()=>import("./DeploymentDetailView-BBMtQ9vE.js"),__vite__mapDeps([18,19,20,21,1,22,10])),props:!0,children:[{path:"",name:"deployment",redirect:e=>`/deployments/${e.params.id}/overview`},{path:"overview",name:"d.overview",component:()=>ce(()=>import("./OverviewTab-C10J0ywh.js"),__vite__mapDeps([23,19,20,9]))},{path:"config",name:"d.config",component:()=>ce(()=>import("./ConfigTab-BiqFZrvm.js"),__vite__mapDeps([24,19,20,25,26,13,14,3,27,28,29]))},{path:"runtime",name:"d.runtime",component:()=>ce(()=>import("./RuntimeTab-DFxU8OLh.js"),__vite__mapDeps([30,19,20,9,1,22,29,14,3,31,10,32]))},{path:"axes",name:"d.axes",component:()=>ce(()=>import("./AxesTab-DlGjhnwi.js"),__vite__mapDeps([33,19,20]))},{path:"requires",name:"d.requires",component:()=>ce(()=>import("./RequiresTab-Dde68lOF.js"),__vite__mapDeps([34,19,20]))},{path:"logs",name:"d.logs",component:()=>ce(()=>import("./LogsTab-oWjSPx9O.js"),__vite__mapDeps([35,19,20,13,14,16]))},{path:"terminal",name:"d.terminal",component:()=>ce(()=>import("./TerminalTab-jUQlwJpM.js"),__vite__mapDeps([36,22,13,14,3,37]))},{path:"danger",name:"d.danger",component:()=>ce(()=>import("./DangerTab-COq-R4Dz.js"),__vite__mapDeps([38,19,20,21,1,22,2,3,4,13,14]))}]},{path:"/routing",name:"routing",component:()=>ce(()=>import("./RoutingView-oXXCIL07.js"),__vite__mapDeps([39,1,22,9,28,29,14,10,31,3,40]))},{path:"/swarm",name:"swarm",component:()=>ce(()=>import("./SwarmView-xPA-5INc.js"),__vite__mapDeps([41,1,22,28,29,14,10,13,9]))},{path:"/registries",name:"registries",component:()=>ce(()=>import("./RegistriesView-DIa3mCyc.js"),__vite__mapDeps([42,1,22,9,28,29,14,10]))},{path:"/notifiers",name:"notifiers",component:()=>ce(()=>import("./NotifiersView-CvP3L81J.js"),__vite__mapDeps([43,1,22,9,12,13,14,10]))},{path:"/specs",name:"specs",component:()=>ce(()=>import("./SpecsView-BU962Blv.js"),__vite__mapDeps([44,9,22,12,2,3,4,10]))},{path:"/specs/:name",name:"spec",component:()=>ce(()=>import("./SpecDetailView-D10gsC8W.js"),__vite__mapDeps([45,9,22])),props:!0},{path:"/submit/:id?",name:"submit",component:()=>ce(()=>import("./SubmitView-CChPoIvR.js"),__vite__mapDeps([46,20,1,22,25,26,13,14,3,27])),props:!0},{path:"/jobs",name:"jobs",component:()=>ce(()=>import("./JobsView-Dw4-yNCj.js"),__vite__mapDeps([47,8,9,12,13,14,48,10,3,49]))},{path:"/jobs/:jobId",name:"job",component:()=>ce(()=>import("./JobDetailView-DIEijrhl.js"),__vite__mapDeps([50,48,16,8,1,22])),props:!0},{path:"/users",name:"users",component:()=>ce(()=>import("./UsersView-DcjfdY6Q.js"),__vite__mapDeps([51,1,2,3,4,22,12,9,10,13,14,52]))},{path:"/sso",name:"sso",component:()=>ce(()=>import("./SsoView-BJO4vMED.js"),__vite__mapDeps([53,1,22,28,29,14,12,13,9,5,3,54]))},{path:"/variables",name:"variables",component:()=>ce(()=>import("./VariablesView-DSXnmTTH.js"),__vite__mapDeps([55,1,2,3,4,22,12,9,10,26,13,14,27,56]))},{path:"/config",name:"config",component:()=>ce(()=>import("./ConfigView-CsQJIt52.js"),__vite__mapDeps([57,1,22]))},{path:"/settings",name:"settings",component:()=>ce(()=>import("./SettingsView-DwSmnNbU.js"),__vite__mapDeps([58,1,22,13,14]))},{path:"/:pathMatch(.*)*",name:"not-found",component:()=>ce(()=>import("./NotFoundView-DnQQJSu_.js"),[])}],xn=zf({history:Sf(),routes:Yf,scrollBehavior:(e,t,n)=>n??{top:0}});xn.beforeEach(async e=>{if(e.meta.public)return!0;const{authState:t,checkAuth:n}=await ce(async()=>{const{authState:s,checkAuth:r}=await Promise.resolve().then(()=>Ed);return{authState:s,checkAuth:r}},void 0);return t.checked||await n(),e.name==="login"?t.authed?{path:"/"}:!0:t.authed?!0:{name:"login",query:e.fullPath!=="/"?{next:e.fullPath}:{}}});const Jr=typeof document<"u"&&typeof document.startViewTransition=="function";Jr&&(document.documentElement.dataset.vt="on");if(Jr){let e=null;xn.beforeResolve(()=>new Promise(t=>{document.startViewTransition(()=>(t(),new Promise(n=>{e=n,setTimeout(()=>{e==null||e(),e=null},400)})))})),xn.afterEach(async()=>{await _n(),e==null||e(),e=null})}let Qf=0;const mn=Kt([]);function Xl(e){const t=mn.findIndex(n=>n.id===e);t>=0&&mn.splice(t,1)}function Ch(e,t,n={}){const s=++Qf;mn.push({id:s,kind:e,text:t,to:n.to,toLabel:n.toLabel});const r=n.ms??(e==="error"?0:6e3);for(r>0&&setTimeout(()=>Xl(s),r);mn.length>5;)mn.shift();return s}const Xf={class:"toasts","aria-live":"polite","aria-atomic":"false"},Zf=["aria-label","onClick"],ed=sn({__name:"ToastHost",setup(e){return(t,n)=>{const s=_r("RouterLink");return z(),ge("div",Xf,[U(wu,{name:"toast"},{default:me(()=>[(z(!0),ge(be,null,vs(K(mn),r=>(z(),ge("div",{key:r.id,class:Ft(["toast",r.kind])},[j("div",null,[j("div",null,Pe(r.text),1),r.to?(z(),Ze(s,{key:0,to:r.to},{default:me(()=>[jt(Pe(r.toLabel??"Open")+" →",1)]),_:2},1032,["to"])):Re("",!0)]),j("button",{class:"x","aria-label":`dismiss: ${r.text}`,onClick:o=>K(Xl)(r.id)},"✕",8,Zf)],2))),128))]),_:1})])}}}),td=900;function ii(e){const t=e;if(!t)return!1;const n=t.tagName;return n==="INPUT"||n==="TEXTAREA"||n==="SELECT"||t.isContentEditable===!0}function nd(){const e=zr(),t=Xe(!1);let n=0,s="";const r=o=>{if(o.key==="Escape"){t.value&&(t.value=!1,o.preventDefault()),ii(o.target)&&o.target.blur();return}if(o.metaKey||o.ctrlKey||o.altKey||ii(o.target))return;const i=Date.now();if(s==="g"&&i-n<td){s="";const a={d:"/deployments",j:"/jobs",h:"/",s:"/settings",n:"/submit"}[o.key];a&&(o.preventDefault(),e.push(a));return}if(o.key==="g"){s="g",n=i;return}if(s="",o.key==="?"){o.preventDefault(),t.value=!t.value;return}if(o.key==="/"){const a=document.querySelector("[data-search]");a&&(o.preventDefault(),a.focus(),a.select())}};return Sn(()=>document.addEventListener("keydown",r)),es(()=>document.removeEventListener("keydown",r)),{sheetOpen:t}}const sd=[{keys:"⌘K / Ctrl-K",what:"Open the command palette — jump to any deployment or page"},{keys:"?",what:"Open or close this sheet"},{keys:"g h",what:"Go to the dashboard"},{keys:"g d",what:"Go to deployments"},{keys:"g j",what:"Go to jobs"},{keys:"g n",what:"Go to submit"},{keys:"g s",what:"Go to settings"},{keys:"/",what:"Focus the search box on this view"},{keys:"Esc",what:"Close this sheet, or leave the field you are typing in"}],rd={class:"sheet"},od={class:"row"},id=sn({__name:"ShortcutSheet",props:{open:{type:Boolean}},emits:["close"],setup(e,{emit:t}){const n=t;return(s,r)=>(z(),Ze(Ws,{name:"fade"},{default:me(()=>[e.open?(z(),ge("div",{key:0,class:"scrim",role:"dialog","aria-modal":"true","aria-label":"Keyboard shortcuts",onClick:r[1]||(r[1]=Fl(o=>n("close"),["self"]))},[j("div",rd,[j("div",od,[r[2]||(r[2]=j("h2",{style:{"font-size":"var(--t-lg)","font-weight":"650"}},"Keyboard shortcuts",-1)),r[3]||(r[3]=j("span",{class:"grow"},null,-1)),j("button",{class:"ghost sm",onClick:r[0]||(r[0]=o=>n("close"))},"Close")]),j("dl",null,[(z(!0),ge(be,null,vs(K(sd),o=>(z(),ge(be,{key:o.keys},[j("dt",null,[(z(!0),ge(be,null,vs(o.keys.split(" "),i=>(z(),ge("kbd",{key:i,style:{"margin-left":"4px"}},Pe(i),1))),128))]),j("dd",null,Pe(o.what),1)],64))),128))])])])):Re("",!0)]),_:1}))}}),Ut={token:"pstack.ui.token",apiBase:"pstack.ui.apiBase",theme:"pstack.ui.theme",motion:"pstack.ui.motion"};function Cs(e,t){try{return localStorage.getItem(e)??t}catch{return t}}function Ss(e,t){try{t?localStorage.setItem(e,t):localStorage.removeItem(e)}catch{}}const ur=Cs(Ut.theme,"system"),fr=Cs(Ut.motion,"system"),Oe=Kt({token:Cs(Ut.token,""),apiBase:Cs(Ut.apiBase,""),theme:ur==="dark"||ur==="light"?ur:"system",motion:fr==="full"||fr==="none"?fr:"system"});function Zl(){const e=document.documentElement;Oe.theme==="system"?delete e.dataset.theme:e.dataset.theme=Oe.theme,Oe.motion==="system"?delete e.dataset.motion:e.dataset.motion=Oe.motion}mt(()=>Oe.token,e=>Ss(Ut.token,e));mt(()=>Oe.apiBase,e=>Ss(Ut.apiBase,e));mt(()=>[Oe.theme,Oe.motion],()=>{Ss(Ut.theme,Oe.theme==="system"?"":Oe.theme),Ss(Ut.motion,Oe.motion==="system"?"":Oe.motion),Zl()});Zl();function Sh(e,t={}){const n=new URLSearchParams;for(const r of e)r.k&&n.set(r.k,r.v??"");for(const[r,o]of Object.entries(t))n.set(r,String(o));const s=n.toString();return s?`?${s}`:""}function Or(e){const t=Oe.apiBase.replace(/\/$/,""),n=t?t+e:e;return Ir?`${n}${n.includes("?")?"&":"?"}token=${encodeURIComponent(Ir)}`:n}let Ir="";function kh(e){Ir=e}let ds=null;function ld(e){ds=e}async function an(e,t,n,s=!1){const r={};e!=="GET"&&(r["content-type"]="application/json"),Oe.token&&(r.authorization=`Bearer ${Oe.token}`);try{const o=await fetch(Or(t),{method:e,headers:r,body:n===void 0?void 0:JSON.stringify(n)}),i=await o.text();let a=null;try{a=i?JSON.parse(i):null}catch{}return o.status===401&&!t.startsWith("/api/auth/")&&(ds==null||ds()),a===null&&i?{status:o.status,ok:o.ok,body:{},raw:i,notJson:!0}:{status:o.status,ok:o.ok,body:a??{},raw:i,notJson:!1}}catch(o){return{status:0,ok:!1,body:{error:`unreachable: ${o.message}`},raw:"",notJson:!1}}}const Gt={get:e=>an("GET",e),getAuthed:e=>an("GET",e,void 0,!0),post:(e,t)=>an("POST",e,t??{}),put:(e,t)=>an("PUT",e,t),patch:(e,t)=>an("PATCH",e,t),del:e=>an("DELETE",e),getText:async e=>{const t={};Oe.token&&(t.authorization=`Bearer ${Oe.token}`);try{const n=await fetch(Or(e),{headers:t});return{status:n.status,ok:n.ok,text:await n.text()}}catch(n){return{status:0,ok:!1,text:`unreachable: ${n.message}`}}},url:Or};function Yr(e,t){if(e.status===0)return e.body.error??"unreachable";if(e.status===401)return`${t}: 401 unauthorized — set the bearer token in Settings.`;if(e.notJson)return`${t}: HTTP ${e.status}, and the response was not JSON. Something other than the pstack API answered — a proxy, or an error page.
|
|
27
27
|
|
|
28
28
|
${e.raw.slice(0,400)}`;const n=e.body.error;return e.status===404&&(!n||n==="not found")?`${t}: 404 — no such resource, or this build of the API has no such route yet.`:n?`${t}: ${n}`:`${t}: HTTP ${e.status}`}function Rh(e){const t=e.error??"HTTP 409 (no message)",n=e.stack??"";return e.kind?{kind:"shared",text:t,stack:n,deployments:[]}:e.containers!==void 0?{kind:"containers",text:t,stack:n,deployments:[]}:e.deployments?{kind:"referenced",text:t,stack:n,deployments:e.deployments}:{kind:"other",text:t,stack:n,deployments:[]}}const ad={class:"palette",role:"dialog","aria-modal":"true","aria-label":"Command palette"},cd={class:"palette-q"},ud={key:0,class:"palette-empty"},fd={key:0,class:"palette-group"},dd=["data-on","onClick","onMousemove"],hd={class:"palette-label"},pd={key:0,class:"palette-hint"},gd={class:"palette-foot"},md=sn({__name:"CommandPalette",setup(e,{expose:t}){const n=zr(),s=Xe(!1),r=Xe(""),o=Xe(0),i=Xe([]),a=Xe(null),l=Xe(null),c=[{id:"p.dash",label:"Dashboard",hint:"g h",group:"Go to",to:"/",base:9},{id:"p.dep",label:"Deployments",hint:"g d",group:"Go to",to:"/deployments",base:8},{id:"p.jobs",label:"Jobs",hint:"g j",group:"Go to",to:"/jobs",base:7},{id:"p.specs",label:"Specs",group:"Go to",to:"/specs",base:6},{id:"p.routing",label:"Routing",group:"Go to",to:"/routing",base:5},{id:"p.swarm",label:"Swarm",group:"Go to",to:"/swarm",base:4.5},{id:"p.reg",label:"Registries",group:"Go to",to:"/registries",base:4},{id:"p.notif",label:"Notifiers",group:"Go to",to:"/notifiers",base:3},{id:"p.hostvars",label:"Variables & secrets",group:"Go to",to:"/variables",base:2.7},{id:"p.users",label:"Users & access",group:"Go to",to:"/users",base:2.5},{id:"p.set",label:"Settings",hint:"g s",group:"Go to",to:"/settings",base:2},{id:"a.submit",label:"Submit a spec",hint:"g n",group:"Actions",to:"/submit",base:1}];function u(C,v){if(!v)return 0;const T=C.toLowerCase(),S=v.toLowerCase();let H=0,J=0,V=0;for(const te of S){const L=T.indexOf(te,H);if(L===-1)return null;V=L===H&&H>0?V+1:0,J+=10+V*12-Math.min(L-H,8),L===0&&(J+=25),H=L+1}return J-T.length*.4}const f=Ie(()=>{const C=i.value.map(S=>({id:`d.${S.id}`,label:S.id,hint:S.stack??void 0,group:"Deployments",to:`/deployments/${encodeURIComponent(S.id)}/overview`,base:0})),v=[...c,...C],T=r.value.trim();return T?v.map(S=>({it:S,s:u(`${S.label} ${S.hint??""}`,T)})).filter(S=>S.s!==null).sort((S,H)=>H.s-S.s||H.it.base-S.it.base).map(S=>S.it):v.slice().sort((S,H)=>H.base-S.base)}),p=Ie(()=>f.value.map((C,v)=>({it:C,head:v===0||f.value[v-1].group!==C.group})));async function g(){var v;s.value=!0,r.value="",o.value=0,await _n(),(v=a.value)==null||v.focus();const C=await Gt.get("/api/deployments");C.ok&&(i.value=C.body.deployments)}function x(){s.value=!1}function w(C){C&&(x(),n.push(C.to))}mt(o,async()=>{var C,v;await _n(),(v=(C=l.value)==null?void 0:C.querySelector('[data-on="true"]'))==null||v.scrollIntoView({block:"nearest"})}),mt(r,()=>o.value=0);function I(C){if((C.metaKey||C.ctrlKey)&&C.key.toLowerCase()==="k"){C.preventDefault(),s.value?x():g();return}s.value&&(C.key==="Escape"?(C.preventDefault(),x()):C.key==="ArrowDown"||C.key==="n"&&C.ctrlKey?(C.preventDefault(),o.value=Math.min(o.value+1,f.value.length-1)):C.key==="ArrowUp"||C.key==="p"&&C.ctrlKey?(C.preventDefault(),o.value=Math.max(o.value-1,0)):C.key==="Enter"&&(C.preventDefault(),w(f.value[o.value])))}return Sn(()=>document.addEventListener("keydown",I)),es(()=>document.removeEventListener("keydown",I)),t({show:g}),(C,v)=>(z(),Ze(Ws,{name:"fade"},{default:me(()=>[s.value?(z(),ge("div",{key:0,class:"scrim palette-scrim",onClick:Fl(x,["self"])},[j("div",ad,[j("div",cd,[v[1]||(v[1]=j("svg",{viewBox:"0 0 24 24",width:"16",height:"16","aria-hidden":"true"},[j("circle",{cx:"11",cy:"11",r:"7",fill:"none",stroke:"currentColor","stroke-width":"2"}),j("path",{d:"M16.5 16.5 21 21",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"})],-1)),qa(j("input",{ref_key:"input",ref:a,"onUpdate:modelValue":v[0]||(v[0]=T=>r.value=T),type:"text",placeholder:"Go to a deployment, a page, an action…","aria-label":"Search",autocomplete:"off",spellcheck:"false"},null,512),[[Sr,r.value]]),v[2]||(v[2]=j("kbd",null,"esc",-1))]),j("div",{ref_key:"listEl",ref:l,class:"palette-list"},[p.value.length?Re("",!0):(z(),ge("p",ud," Nothing matches “"+Pe(r.value)+"”. ",1)),(z(!0),ge(be,null,vs(p.value,(T,S)=>(z(),ge(be,{key:T.it.id},[T.head?(z(),ge("div",fd,Pe(T.it.group),1)):Re("",!0),j("button",{class:"palette-row","data-on":S===o.value,onClick:H=>w(T.it),onMousemove:H=>o.value=S},[j("span",hd,Pe(T.it.label),1),T.it.hint?(z(),ge("span",pd,Pe(T.it.hint),1)):Re("",!0)],40,dd)],64))),128))],512),j("div",gd,[v[3]||(v[3]=j("span",null,[j("kbd",null,"↑"),j("kbd",null,"↓"),jt(" move")],-1)),v[4]||(v[4]=j("span",null,[j("kbd",null,"↵"),jt(" open")],-1)),v[5]||(v[5]=j("span",{class:"grow"},null,-1)),j("span",null,Pe(f.value.length)+" result"+Pe(f.value.length===1?"":"s"),1)])])])):Re("",!0)]),_:1}))}});function yd(e,t=6e3){let n;const s=()=>{n!==void 0&&clearInterval(n),n=void 0},r=()=>{s(),n=setInterval(e,t)},o=()=>{document.visibilityState==="visible"?(e(),r()):s()};Sn(()=>{e(),document.visibilityState==="visible"&&r(),document.addEventListener("visibilitychange",o)}),es(()=>{s(),document.removeEventListener("visibilitychange",o)})}const ye=Kt({health:null,healthError:"",deployments:[],deploymentsError:"",deploymentsLoaded:!1,jobs:[],jobsError:"",jobsLoaded:!1});async function li(){const e=await Gt.get("/api/health");e.ok?(ye.health=e.body,ye.healthError=""):(ye.health=null,ye.healthError=Yr(e,"GET /api/health"))}async function ai(){const e=await Gt.get("/api/deployments");if(ye.deploymentsLoaded=!0,!e.ok){ye.deploymentsError=Yr(e,"GET /api/deployments");return}ye.deploymentsError="",ye.deployments=(e.body.deployments??[]).map(t=>({...t,kind:t.kind==="shared"?"shared":"isolated",busy:t.busy??null,running:t.running??null,stack:t.stack??null,asleep:t.asleep??null,orchestrator:t.orchestrator??null}))}async function ci(){const e=await Gt.get("/api/jobs");if(ye.jobsLoaded=!0,!e.ok){ye.jobsError=Yr(e,"GET /api/jobs");return}ye.jobsError="",ye.jobs=e.body.jobs??[]}const Th=Ie(()=>{const e={total:0,isolated:0,shared:0,running:0,busy:0,asleep:0,unknown:0,unresolved:0};for(const t of ye.deployments)e.total++,t.kind==="shared"?e.shared++:e.isolated++,t.busy===!0&&e.busy++,t.asleep&&e.asleep++,t.running===!0&&e.running++,(t.busy===null||t.running===null)&&e.unknown++,t.unresolved&&e.unresolved++;return e}),Ph=Ie(()=>ye.jobs.filter(e=>e.state==="leaked"));function Oh(e){return ye.deployments.find(t=>t.id===e)}const _d=["viewer","developer","maintainer","admin"],X=Kt({checked:!1,authed:!1,root:!1,user:null,hasUsers:null,sso:null});function ui(e){return _d.indexOf(e??"")+1}function hs(e){var n;if(X.root)return!0;const t=ui((n=X.user)==null?void 0:n.role);return t>0&&t>=ui(e)}async function vd(){const e=await Gt.get("/api/health");e.ok&&(X.hasUsers=e.body.hasUsers??null,X.sso=e.body.sso??null);const t=await Gt.getAuthed("/api/auth/me");t.status!==0&&(X.checked=!0,t.ok?(X.authed=!0,X.root=t.body.root===!0,X.user=t.body.user??null):(X.authed=!1,X.root=!1,X.user=null))}async function bd(e,t){const n=await Gt.post("/api/auth/login",{username:e,password:t});return n.ok?(X.authed=!0,X.root=!1,X.user=n.body.user,null):n.body.error??"login failed"}async function ea(){await Gt.post("/api/auth/logout",{}),X.authed=!1,X.root=!1,X.user=null}ld(()=>{if(!X.checked)return;const e=X.authed;X.authed=!1,X.user=null,X.root=!1;const t=xn.currentRoute.value;e&&t.name!=="login"&&xn.replace({name:"login",query:t.fullPath!=="/"?{next:t.fullPath}:{}})});const Ed=Object.freeze(Object.defineProperty({__proto__:null,authState:X,can:hs,checkAuth:vd,login:bd,logout:ea},Symbol.toStringTag,{value:"Module"}));function Ih(e){return e?new Date(e).toLocaleString("sv"):"—"}function Mh(e,t){if(!e)return"—";const n=Math.max(0,Math.round(((t??Date.now())-e)/1e3)),s=n<60?`${n}s`:`${Math.floor(n/60)}m${String(n%60).padStart(2,"0")}s`;return t?s:`${s}…`}function Nh(e){if(!e)return"—";const t=Math.max(0,Math.round((Date.now()-e)/1e3));if(t<45)return"just now";const n=Math.round(t/60);if(n<60)return`${n}m ago`;const s=Math.round(n/60);return s<24?`${s}h ago`:`${Math.round(s/24)}d ago`}const wd={up:"Deploy",down:"Tear down",verify:"Verify",sleep:"Sleep",wake:"Wake"};function Lh(e){return e?wd[e]??e:"—"}function Ad(e){if(!e)return"—";const t=e.replace(/[-_]+/g," ");return t.charAt(0).toUpperCase()+t.slice(1)}/**
|
|
29
29
|
* @license lucide-vue-next v0.577.0 - ISC
|
|
@@ -151,4 +151,4 @@ ${e.raw.slice(0,400)}`;const n=e.body.error;return e.status===404&&(!n||n==="not
|
|
|
151
151
|
* This source code is licensed under the ISC license.
|
|
152
152
|
* See the LICENSE file in the root directory of this source tree.
|
|
153
153
|
*/const Gd=je("waypoints",[["path",{d:"m10.586 5.414-5.172 5.172",key:"4mc350"}],["path",{d:"m18.586 13.414-5.172 5.172",key:"8c96vv"}],["path",{d:"M6 12h12",key:"8npq4p"}],["circle",{cx:"12",cy:"20",r:"2",key:"144qzu"}],["circle",{cx:"12",cy:"4",r:"2",key:"muu5ef"}],["circle",{cx:"20",cy:"12",r:"2",key:"1xzzfp"}],["circle",{cx:"4",cy:"12",r:"2",key:"1hvhnz"}]]),Kd=["aria-label","aria-expanded"],Wd=sn({__name:"InfoHint",props:{label:{},align:{},side:{}},setup(e){const t=e,n=Xe(!1),s=Xe(!1),r=Xe(null);function o(a){n.value&&r.value&&!r.value.contains(a.target)&&(n.value=!1)}function i(a){a.key==="Escape"&&n.value&&(n.value=!1)}return Sn(()=>{document.addEventListener("pointerdown",o),document.addEventListener("keydown",i)}),$r(()=>{document.removeEventListener("pointerdown",o),document.removeEventListener("keydown",i)}),(a,l)=>(z(),ge("span",{ref_key:"root",ref:r,class:"hint-wrap"},[j("button",{type:"button",class:Ft(["hint-btn",{on:n.value}]),"aria-label":t.label??"More information","aria-expanded":n.value||s.value,onClick:l[0]||(l[0]=c=>n.value=!n.value),onPointerenter:l[1]||(l[1]=c=>s.value=!0),onPointerleave:l[2]||(l[2]=c=>s.value=!1),onFocus:l[3]||(l[3]=c=>s.value=!0),onBlur:l[4]||(l[4]=c=>s.value=!1)},[U(K(Md),{size:15,"stroke-width":2,"aria-hidden":"true"})],42,Kd),U(Ws,{name:"hint"},{default:me(()=>[n.value||s.value?(z(),ge("span",{key:0,class:Ft(["hint-bub",[t.align==="end"?"to-end":"to-start",t.side==="top"?"above":"below"]]),role:"tooltip"},[dc(a.$slots,"default")],2)):Re("",!0)]),_:3})],512))}}),qd={key:0,class:"rail"},zd={"aria-label":"Sections"},Jd={class:"count"},Yd={class:"count"},Qd={class:"foot"},Xd={key:0,class:"s-failed"},Zd={key:1,class:"row",style:{gap:"4px"}},eh={key:0,class:"foot-who"},th={key:1,class:"foot-who"},nh={key:2,class:"mute"},sh={class:"mute"},rh={class:"row",style:{gap:"var(--s1)"}},oh={id:"main",class:"view"},ih=sn({__name:"App",setup(e){const{sheetOpen:t}=nd();yd(()=>{X.authed&&(ai(),ci())},7e3),mt(()=>X.authed,a=>{a&&(ai(),ci(),li())});const n=zr(),s=Jf(),r=Ie(()=>s.meta.public===!0);async function o(){await ea(),n.push("/login")}li();const i=Ie(()=>ye.jobs.filter(a=>a.state==="running").length);return(a,l)=>{const c=_r("RouterLink"),u=_r("RouterView");return z(),ge(be,null,[l[19]||(l[19]=j("a",{class:"skip",href:"#main"},"Skip to content",-1)),j("div",{class:Ft(["shell",{"no-rail":!K(X).authed,public:r.value}])},[K(X).authed?(z(),ge("aside",qd,[U(c,{to:"/",class:"brand"},{default:me(()=>[U(K(Vd),{size:20,"aria-hidden":"true"}),l[2]||(l[2]=jt(" pstack ",-1))]),_:1}),j("nav",zd,[U(c,{to:"/",class:"navlink",title:"g h"},{default:me(()=>[U(K(Ld),{size:17,"aria-hidden":"true"}),l[3]||(l[3]=j("span",null,"Dashboard",-1))]),_:1}),U(c,{to:"/deployments",class:"navlink",title:"g d"},{default:me(()=>[U(K(Pd),{size:17,"aria-hidden":"true"}),l[4]||(l[4]=j("span",null,"Deployments",-1)),j("span",Jd,Pe(K(ye).deployments.length),1)]),_:1}),U(c,{to:"/specs",class:"navlink"},{default:me(()=>[U(K(Id),{size:17,"aria-hidden":"true"}),l[5]||(l[5]=j("span",null,"Specs",-1))]),_:1}),U(c,{to:"/routing",class:"navlink"},{default:me(()=>[U(K(Gd),{size:17,"aria-hidden":"true"}),l[6]||(l[6]=j("span",null,"Routing",-1))]),_:1}),U(c,{to:"/swarm",class:"navlink"},{default:me(()=>[U(K(Dd),{size:17,"aria-hidden":"true"}),l[7]||(l[7]=j("span",null,"Swarm",-1))]),_:1}),U(c,{to:"/registries",class:"navlink"},{default:me(()=>[U(K(Nd),{size:17,"aria-hidden":"true"}),l[8]||(l[8]=j("span",null,"Registries",-1))]),_:1}),U(c,{to:"/notifiers",class:"navlink"},{default:me(()=>[U(K(Td),{size:17,"aria-hidden":"true"}),l[9]||(l[9]=j("span",null,"Notifiers",-1))]),_:1}),U(c,{to:"/jobs",class:"navlink",title:"g j"},{default:me(()=>[U(K(Od),{size:17,"aria-hidden":"true"}),l[10]||(l[10]=j("span",null,"Jobs",-1)),j("span",Yd,Pe(i.value?`${i.value}▸`:K(ye).jobs.length),1)]),_:1}),K(hs)("developer")?(z(),Ze(c,{key:0,to:"/submit",class:"navlink",title:"g n"},{default:me(()=>[U(K(jd),{size:17,"aria-hidden":"true"}),l[11]||(l[11]=j("span",null,"Submit",-1))]),_:1})):Re("",!0),U(c,{to:"/variables",class:"navlink"},{default:me(()=>[U(K(Ud),{size:17,"aria-hidden":"true"}),l[12]||(l[12]=j("span",null,"Variables",-1))]),_:1}),U(c,{to:"/users",class:"navlink"},{default:me(()=>[U(K(Hd),{size:17,"aria-hidden":"true"}),l[13]||(l[13]=j("span",null,"Users",-1))]),_:1}),K(hs)("maintainer")?(z(),Ze(c,{key:1,to:"/sso",class:"navlink"},{default:me(()=>[U(K(Bd),{size:17,"aria-hidden":"true"}),l[14]||(l[14]=j("span",null,"Sign-on",-1))]),_:1})):Re("",!0),K(hs)("admin")?(z(),Ze(c,{key:2,to:"/config",class:"navlink"},{default:me(()=>[U(K($d),{size:17,"aria-hidden":"true"}),l[15]||(l[15]=j("span",null,"Apply config",-1))]),_:1})):Re("",!0),U(c,{to:"/settings",class:"navlink",title:"g s"},{default:me(()=>[U(K(Fd),{size:17,"aria-hidden":"true"}),l[16]||(l[16]=j("span",null,"Settings",-1))]),_:1})]),j("div",Qd,[K(ye).healthError?(z(),ge("div",Xd,"Can't reach the server")):K(ye).health?(z(),ge("div",Zd,[K(X).user?(z(),ge("span",eh,Pe(K(X).user.username),1)):K(X).root&&K(X).checked?(z(),ge("span",th,"token access")):Re("",!0),K(X).user?(z(),ge("span",nh,"· "+Pe(K(Ad)(K(X).user.role)),1)):Re("",!0),j("span",sh,"· v"+Pe(K(ye).health.version),1),U(Wd,{label:"server details",side:"top"},{default:me(()=>[l[17]||(l[17]=jt(" Data is stored in ",-1)),j("code",null,Pe(K(ye).health.dataDir),1),l[18]||(l[18]=jt(" on the host. ",-1)),K(ye).health.authEnforced===!1?(z(),ge(be,{key:0},[jt(" This server accepts connections from this machine only, so it does not ask for a token. ")],64)):Re("",!0)]),_:1})])):Re("",!0),j("div",rh,[j("button",{class:"ghost sm",onClick:l[0]||(l[0]=f=>t.value=!0)},"Shortcuts"),K(X).user?(z(),ge("button",{key:0,class:"ghost sm",onClick:o},"Sign out")):Re("",!0)])])])):Re("",!0),j("main",oh,[U(u,null,{default:me(({Component:f})=>[K(Jr)?(z(),Ze(uo(f),{key:0})):(z(),Ze(Ws,{key:1,name:"view",mode:"out-in"},{default:me(()=>[(z(),Ze(uo(f)))]),_:2},1024))]),_:1})])],2),U(ed),U(md),U(id,{open:K(t),onClose:l[1]||(l[1]=f=>t.value=!1)},null,8,["open"])],64)}}});Vu(ih).use(xn).mount("#app");export{Oe as $,ye as A,Th as B,Yr as C,Ns as D,Ft as E,be as F,Lh as G,Nh as H,Mh as I,ai as J,ci as K,Ru as L,Ad as M,mt as N,Sn as O,kh as P,$r as Q,Ih as R,uo as S,Ws as T,Ch as U,Sh as V,ce as W,Ma as X,xn as Y,Rh as Z,Wd as _,j as a,Kt as a0,Oh as a1,Tu as a2,wh as a3,dc as a4,_n as a5,_d as a6,hs as a7,hh as a8,Bc as a9,sl as aA,fh as aB,_h as aC,Le as aD,$t as aE,xh as aF,lh as aa,Fc as ab,Ah as ac,es as ad,li as ae,gh as af,dh as ag,ts as ah,Ve as ai,ph as aj,st as ak,vn as al,Ia as am,cs as an,mh as ao,uh as ap,ha as aq,ch as ar,vh as as,yh as at,Eh as au,bh as av,Va as aw,ah as ax,gr as ay,Js as az,X as b,ge as c,sn as d,U as e,jt as f,Re as g,Fl as h,qa as i,Xe as j,Ie as k,_r as l,zr as m,Jf as n,z as o,Gt as p,bd as q,vs as r,vd as s,Pe as t,K as u,Sr as v,me as w,yd as x,Ph as y,Ze as z};
|
|
154
|
-
//# sourceMappingURL=index-
|
|
154
|
+
//# sourceMappingURL=index-DB2WhG8N.js.map
|