local-serverless-stack 0.1.0 → 0.1.2
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 +23 -0
- package/bin/cli.js +199 -11
- package/dist/server/routes/seeds.d.ts.map +1 -1
- package/dist/server/routes/seeds.js +6 -1
- package/dist/server/routes/seeds.js.map +1 -1
- package/dist/server/services/seed-manager.d.ts +2 -0
- package/dist/server/services/seed-manager.d.ts.map +1 -1
- package/dist/server/services/seed-manager.js +40 -0
- package/dist/server/services/seed-manager.js.map +1 -1
- package/dist/ui/assets/{BucketDetailPage-DQU5IfHZ.js → BucketDetailPage-Hg4Gg3jC.js} +1 -1
- package/dist/ui/assets/{BucketsPage-FDb9r2GE.js → BucketsPage-BHkg7TQp.js} +1 -1
- package/dist/ui/assets/DynamoPage-CH_TgPh_.js +1 -0
- package/dist/ui/assets/{DynamoTablePage-D2-tvZSS.js → DynamoTablePage-BPvl5y6_.js} +1 -1
- package/dist/ui/assets/{OverviewPage-DKpsGNi-.js → OverviewPage-nhomNDqx.js} +1 -1
- package/dist/ui/assets/{QueueDetailPage-m_Ux1JRb.js → QueueDetailPage-DHDPgRDc.js} +1 -1
- package/dist/ui/assets/{QueuesPage-CEfnzK5n.js → QueuesPage-D5YcEbUU.js} +1 -1
- package/dist/ui/assets/{ServiceDetailPage-DMgYxag6.js → ServiceDetailPage-DxJ0t7HQ.js} +1 -1
- package/dist/ui/assets/{ServicesPage-Dl9Md68f.js → ServicesPage-DWDaaOz9.js} +1 -1
- package/dist/ui/assets/{index-xSUtPJWt.js → index-D3WwZ4lY.js} +2 -2
- package/dist/ui/index.html +1 -1
- package/package.json +1 -1
- package/dist/ui/assets/DynamoPage-D0Q2SOCV.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/OverviewPage-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/OverviewPage-nhomNDqx.js","assets/OverviewPage-CwLnw4VW.css"])))=>i.map(i=>d[i]);
|
|
2
2
|
(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))a(n);new MutationObserver(n=>{for(const s of n)if(s.type==="childList")for(const r of s.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&a(r)}).observe(document,{childList:!0,subtree:!0});function l(n){const s={};return n.integrity&&(s.integrity=n.integrity),n.referrerPolicy&&(s.referrerPolicy=n.referrerPolicy),n.crossOrigin==="use-credentials"?s.credentials="include":n.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function a(n){if(n.ep)return;n.ep=!0;const s=l(n);fetch(n.href,s)}})();/**
|
|
3
3
|
* @vue/shared v3.5.34
|
|
4
4
|
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
@@ -33,4 +33,4 @@ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/OverviewPage-DK
|
|
|
33
33
|
* vue-router v4.6.4
|
|
34
34
|
* (c) 2025 Eduardo San Martin Morote
|
|
35
35
|
* @license MIT
|
|
36
|
-
*/let Ug=()=>location.protocol+"//"+location.host;function gu(e,t){const{pathname:l,search:a,hash:n}=t,s=e.indexOf("#");if(s>-1){let r=n.includes(e.slice(s))?e.slice(s).length:1,i=n.slice(r);return i[0]!=="/"&&(i="/"+i),vi(i,"")}return vi(l,e)+a+n}function Kg(e,t,l,a){let n=[],s=[],r=null;const i=({state:f})=>{const v=gu(e,location),T=l.value,k=t.value;let C=0;if(f){if(l.value=v,t.value=f,r&&r===T){r=null;return}C=k?f.position-k.position:0}else a(v);n.forEach(R=>{R(l.value,T,{delta:C,type:ts.pop,direction:C?C>0?On.forward:On.back:On.unknown})})};function o(){r=l.value}function c(f){n.push(f);const v=()=>{const T=n.indexOf(f);T>-1&&n.splice(T,1)};return s.push(v),v}function u(){if(document.visibilityState==="hidden"){const{history:f}=window;if(!f.state)return;f.replaceState(Me({},f.state,{scroll:pn()}),"")}}function d(){for(const f of s)f();s=[],window.removeEventListener("popstate",i),window.removeEventListener("pagehide",u),document.removeEventListener("visibilitychange",u)}return window.addEventListener("popstate",i),window.addEventListener("pagehide",u),document.addEventListener("visibilitychange",u),{pauseListeners:o,listen:c,destroy:d}}function yi(e,t,l,a=!1,n=!1){return{back:e,current:t,forward:l,replaced:a,position:window.history.length,scroll:n?pn():null}}function Gg(e){const{history:t,location:l}=window,a={value:gu(e,l)},n={value:t.state};n.value||s(a.value,{back:null,current:a.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function s(o,c,u){const d=e.indexOf("#"),f=d>-1?(l.host&&document.querySelector("base")?e:e.slice(d))+o:Ug()+e+o;try{t[u?"replaceState":"pushState"](c,"",f),n.value=c}catch(v){console.error(v),l[u?"replace":"assign"](f)}}function r(o,c){s(o,Me({},t.state,yi(n.value.back,o,n.value.forward,!0),c,{position:n.value.position}),!0),a.value=o}function i(o,c){const u=Me({},n.value,t.state,{forward:o,scroll:pn()});s(u.current,u,!0),s(o,Me({},yi(a.value,o,null),{position:u.position+1},c),!1),a.value=o}return{location:a,state:n,push:i,replace:r}}function Wg(e){e=Ig(e);const t=Gg(e),l=Kg(e,t.state,t.location,t.replace);function a(s,r=!0){r||l.pauseListeners(),history.go(s)}const n=Me({location:"",base:e,go:a,createHref:Og.bind(null,e)},t,l);return Object.defineProperty(n,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(n,"state",{enumerable:!0,get:()=>t.state.value}),n}let xl=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e})({});var Ze=(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})(Ze||{});const qg={type:xl.Static,value:""},Qg=/[a-zA-Z0-9_]/;function Jg(e){if(!e)return[[]];if(e==="/")return[[qg]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(v){throw new Error(`ERR (${l})/"${c}": ${v}`)}let l=Ze.Static,a=l;const n=[];let s;function r(){s&&n.push(s),s=[]}let i=0,o,c="",u="";function d(){c&&(l===Ze.Static?s.push({type:xl.Static,value:c}):l===Ze.Param||l===Ze.ParamRegExp||l===Ze.ParamRegExpEnd?(s.length>1&&(o==="*"||o==="+")&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),s.push({type:xl.Param,value:c,regexp:u,repeatable:o==="*"||o==="+",optional:o==="*"||o==="?"})):t("Invalid state to consume buffer"),c="")}function f(){c+=o}for(;i<e.length;){if(o=e[i++],o==="\\"&&l!==Ze.ParamRegExp){a=l,l=Ze.EscapeNext;continue}switch(l){case Ze.Static:o==="/"?(c&&d(),r()):o===":"?(d(),l=Ze.Param):f();break;case Ze.EscapeNext:f(),l=a;break;case Ze.Param:o==="("?l=Ze.ParamRegExp:Qg.test(o)?f():(d(),l=Ze.Static,o!=="*"&&o!=="?"&&o!=="+"&&i--);break;case Ze.ParamRegExp:o===")"?u[u.length-1]=="\\"?u=u.slice(0,-1)+o:l=Ze.ParamRegExpEnd:u+=o;break;case Ze.ParamRegExpEnd:d(),l=Ze.Static,o!=="*"&&o!=="?"&&o!=="+"&&i--,u="";break;default:t("Unknown state");break}}return l===Ze.ParamRegExp&&t(`Unfinished custom RegExp for param "${c}"`),d(),r(),n}const _i="[^/]+?",Yg={sensitive:!1,strict:!1,start:!0,end:!0};var pt=(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})(pt||{});const Xg=/[.+*?^${}()[\]/\\]/g;function Zg(e,t){const l=Me({},Yg,t),a=[];let n=l.start?"^":"";const s=[];for(const c of e){const u=c.length?[]:[pt.Root];l.strict&&!c.length&&(n+="/");for(let d=0;d<c.length;d++){const f=c[d];let v=pt.Segment+(l.sensitive?pt.BonusCaseSensitive:0);if(f.type===xl.Static)d||(n+="/"),n+=f.value.replace(Xg,"\\$&"),v+=pt.Static;else if(f.type===xl.Param){const{value:T,repeatable:k,optional:C,regexp:R}=f;s.push({name:T,repeatable:k,optional:C});const I=R||_i;if(I!==_i){v+=pt.BonusCustomRegExp;try{`${I}`}catch(y){throw new Error(`Invalid custom RegExp for param "${T}" (${I}): `+y.message)}}let $=k?`((?:${I})(?:/(?:${I}))*)`:`(${I})`;d||($=C&&c.length<2?`(?:/${$})`:"/"+$),C&&($+="?"),n+=$,v+=pt.Dynamic,C&&(v+=pt.BonusOptional),k&&(v+=pt.BonusRepeatable),I===".*"&&(v+=pt.BonusWildcard)}u.push(v)}a.push(u)}if(l.strict&&l.end){const c=a.length-1;a[c][a[c].length-1]+=pt.BonusStrict}l.strict||(n+="/?"),l.end?n+="$":l.strict&&!n.endsWith("/")&&(n+="(?:/|$)");const r=new RegExp(n,l.sensitive?"":"i");function i(c){const u=c.match(r),d={};if(!u)return null;for(let f=1;f<u.length;f++){const v=u[f]||"",T=s[f-1];d[T.name]=v&&T.repeatable?v.split("/"):v}return d}function o(c){let u="",d=!1;for(const f of e){(!d||!u.endsWith("/"))&&(u+="/"),d=!1;for(const v of f)if(v.type===xl.Static)u+=v.value;else if(v.type===xl.Param){const{value:T,repeatable:k,optional:C}=v,R=T in c?c[T]:"";if(Rt(R)&&!k)throw new Error(`Provided param "${T}" is an array but it is not repeatable (* or + modifiers)`);const I=Rt(R)?R.join("/"):R;if(!I)if(C)f.length<2&&(u.endsWith("/")?u=u.slice(0,-1):d=!0);else throw new Error(`Missing required param "${T}"`);u+=I}}return u||"/"}return{re:r,score:a,keys:s,parse:i,stringify:o}}function ey(e,t){let l=0;for(;l<e.length&&l<t.length;){const a=t[l]-e[l];if(a)return a;l++}return e.length<t.length?e.length===1&&e[0]===pt.Static+pt.Segment?-1:1:e.length>t.length?t.length===1&&t[0]===pt.Static+pt.Segment?1:-1:0}function yu(e,t){let l=0;const a=e.score,n=t.score;for(;l<a.length&&l<n.length;){const s=ey(a[l],n[l]);if(s)return s;l++}if(Math.abs(n.length-a.length)===1){if(ki(a))return 1;if(ki(n))return-1}return n.length-a.length}function ki(e){const t=e[e.length-1];return e.length>0&&t[t.length-1]<0}const ty={strict:!1,end:!0,sensitive:!1};function ly(e,t,l){const a=Zg(Jg(e.path),l),n=Me(a,{record:e,parent:t,children:[],alias:[]});return t&&!n.record.aliasOf==!t.record.aliasOf&&t.children.push(n),n}function ay(e,t){const l=[],a=new Map;t=pi(ty,t);function n(d){return a.get(d)}function s(d,f,v){const T=!v,k=Ti(d);k.aliasOf=v&&v.record;const C=pi(t,d),R=[k];if("alias"in d){const y=typeof d.alias=="string"?[d.alias]:d.alias;for(const _ of y)R.push(Ti(Me({},k,{components:v?v.record.components:k.components,path:_,aliasOf:v?v.record:k})))}let I,$;for(const y of R){const{path:_}=y;if(f&&_[0]!=="/"){const S=f.record.path,A=S[S.length-1]==="/"?"":"/";y.path=f.record.path+(_&&A+_)}if(I=ly(y,f,C),v?v.alias.push(I):($=$||I,$!==I&&$.alias.push(I),T&&d.name&&!xi(I)&&r(d.name)),_u(I)&&o(I),k.children){const S=k.children;for(let A=0;A<S.length;A++)s(S[A],I,v&&v.children[A])}v=v||I}return $?()=>{r($)}:va}function r(d){if(hu(d)){const f=a.get(d);f&&(a.delete(d),l.splice(l.indexOf(f),1),f.children.forEach(r),f.alias.forEach(r))}else{const f=l.indexOf(d);f>-1&&(l.splice(f,1),d.record.name&&a.delete(d.record.name),d.children.forEach(r),d.alias.forEach(r))}}function i(){return l}function o(d){const f=ry(d,l);l.splice(f,0,d),d.record.name&&!xi(d)&&a.set(d.record.name,d)}function c(d,f){let v,T={},k,C;if("name"in d&&d.name){if(v=a.get(d.name),!v)throw Jl(We.MATCHER_NOT_FOUND,{location:d});C=v.record.name,T=Me(wi(f.params,v.keys.filter($=>!$.optional).concat(v.parent?v.parent.keys.filter($=>$.optional):[]).map($=>$.name)),d.params&&wi(d.params,v.keys.map($=>$.name))),k=v.stringify(T)}else if(d.path!=null)k=d.path,v=l.find($=>$.re.test(k)),v&&(T=v.parse(k),C=v.record.name);else{if(v=f.name?a.get(f.name):l.find($=>$.re.test(f.path)),!v)throw Jl(We.MATCHER_NOT_FOUND,{location:d,currentLocation:f});C=v.record.name,T=Me({},f.params,d.params),k=v.stringify(T)}const R=[];let I=v;for(;I;)R.unshift(I.record),I=I.parent;return{name:C,path:k,params:T,matched:R,meta:sy(R)}}e.forEach(d=>s(d));function u(){l.length=0,a.clear()}return{addRoute:s,resolve:c,removeRoute:r,clearRoutes:u,getRoutes:i,getRecordMatcher:n}}function wi(e,t){const l={};for(const a of t)a in e&&(l[a]=e[a]);return l}function Ti(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:ny(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 ny(e){const t={},l=e.props||!1;if("component"in e)t.default=l;else for(const a in e.components)t[a]=typeof l=="object"?l[a]:l;return t}function xi(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function sy(e){return e.reduce((t,l)=>Me(t,l.meta),{})}function ry(e,t){let l=0,a=t.length;for(;l!==a;){const s=l+a>>1;yu(e,t[s])<0?a=s:l=s+1}const n=iy(e);return n&&(a=t.lastIndexOf(n,a-1)),a}function iy(e){let t=e;for(;t=t.parent;)if(_u(t)&&yu(e,t)===0)return t}function _u({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Ci(e){const t=tt(vn),l=tt(ks),a=h(()=>{const o=P(e.to);return t.resolve(o)}),n=h(()=>{const{matched:o}=a.value,{length:c}=o,u=o[c-1],d=l.matched;if(!u||!d.length)return-1;const f=d.findIndex(Ql.bind(null,u));if(f>-1)return f;const v=Ei(o[c-2]);return c>1&&Ei(u)===v&&d[d.length-1].path!==v?d.findIndex(Ql.bind(null,o[c-2])):f}),s=h(()=>n.value>-1&&fy(l.params,a.value.params)),r=h(()=>n.value>-1&&n.value===l.matched.length-1&&mu(l.params,a.value.params));function i(o={}){if(cy(o)){const c=t[P(e.replace)?"replace":"push"](P(e.to)).catch(va);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>c),c}return Promise.resolve()}return{route:a,href:h(()=>a.value.href),isActive:s,isExactActive:r,navigate:i}}function oy(e){return e.length===1?e[0]:e}const uy=ve({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:Ci,setup(e,{slots:t}){const l=Al(Ci(e)),{options:a}=tt(vn),n=h(()=>({[Si(e.activeClass,a.linkActiveClass,"router-link-active")]:l.isActive,[Si(e.exactActiveClass,a.linkExactActiveClass,"router-link-exact-active")]:l.isExactActive}));return()=>{const s=t.default&&oy(t.default(l));return e.custom?s:wa("a",{"aria-current":l.isExactActive?e.ariaCurrentValue:null,href:l.href,onClick:l.navigate,class:n.value},s)}}}),dy=uy;function cy(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 fy(e,t){for(const l in t){const a=t[l],n=e[l];if(typeof a=="string"){if(a!==n)return!1}else if(!Rt(n)||n.length!==a.length||a.some((s,r)=>s.valueOf()!==n[r].valueOf()))return!1}return!0}function Ei(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Si=(e,t,l)=>e??t??l,py=ve({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:l}){const a=tt(as),n=h(()=>e.route||a.value),s=tt(gi,0),r=h(()=>{let c=P(s);const{matched:u}=n.value;let d;for(;(d=u[c])&&!d.components;)c++;return c}),i=h(()=>n.value.matched[r.value]);Xt(gi,h(()=>r.value+1)),Xt(zg,i),Xt(as,n);const o=de();return Ve(()=>[o.value,i.value,e.name],([c,u,d],[f,v,T])=>{u&&(u.instances[d]=c,v&&v!==u&&c&&c===f&&(u.leaveGuards.size||(u.leaveGuards=v.leaveGuards),u.updateGuards.size||(u.updateGuards=v.updateGuards))),c&&u&&(!v||!Ql(u,v)||!f)&&(u.enterCallbacks[d]||[]).forEach(k=>k(c))},{flush:"post"}),()=>{const c=n.value,u=e.name,d=i.value,f=d&&d.components[u];if(!f)return Ai(l.default,{Component:f,route:c});const v=d.props[u],T=v?v===!0?c.params:typeof v=="function"?v(c):v:null,C=wa(f,Me({},T,t,{onVnodeUnmounted:R=>{R.component.isUnmounted&&(d.instances[u]=null)},ref:o}));return Ai(l.default,{Component:C,route:c})||C}}});function Ai(e,t){if(!e)return null;const l=e(t);return l.length===1?l[0]:l}const ku=py;function vy(e){const t=ay(e.routes,e),l=e.parseQuery||Fg,a=e.stringifyQuery||bi,n=e.history,s=la(),r=la(),i=la(),o=pd(sl);let c=sl;Bl&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=In.bind(null,M=>""+M),d=In.bind(null,Tg),f=In.bind(null,Ea);function v(M,N){let q,ue;return hu(M)?(q=t.getRecordMatcher(M),ue=N):ue=M,t.addRoute(ue,q)}function T(M){const N=t.getRecordMatcher(M);N&&t.removeRoute(N)}function k(){return t.getRoutes().map(M=>M.record)}function C(M){return!!t.getRecordMatcher(M)}function R(M,N){if(N=Me({},N||o.value),typeof M=="string"){const E=$n(l,M,N.path),H=t.resolve({path:E.path},N),j=n.createHref(E.fullPath);return Me(E,H,{params:f(H.params),hash:Ea(E.hash),redirectedFrom:void 0,href:j})}let q;if(M.path!=null)q=Me({},M,{path:$n(l,M.path,N.path).path});else{const E=Me({},M.params);for(const H in E)E[H]==null&&delete E[H];q=Me({},M,{params:d(E)}),N.params=d(N.params)}const ue=t.resolve(q,N),z=M.hash||"";ue.params=u(f(ue.params));const p=Eg(a,Me({},M,{hash:_g(z),path:ue.path})),b=n.createHref(p);return Me({fullPath:p,hash:z,query:a===bi?Hg(M.query):M.query||{}},ue,{redirectedFrom:void 0,href:b})}function I(M){return typeof M=="string"?$n(l,M,o.value.path):Me({},M)}function $(M,N){if(c!==M)return Jl(We.NAVIGATION_CANCELLED,{from:N,to:M})}function y(M){return A(M)}function _(M){return y(Me(I(M),{replace:!0}))}function S(M,N){const q=M.matched[M.matched.length-1];if(q&&q.redirect){const{redirect:ue}=q;let z=typeof ue=="function"?ue(M,N):ue;return typeof z=="string"&&(z=z.includes("?")||z.includes("#")?z=I(z):{path:z},z.params={}),Me({query:M.query,hash:M.hash,params:z.path!=null?{}:M.params},z)}}function A(M,N){const q=c=R(M),ue=o.value,z=M.state,p=M.force,b=M.replace===!0,E=S(q,ue);if(E)return A(Me(I(E),{state:typeof E=="object"?Me({},z,E.state):z,force:p,replace:b}),N||q);const H=q;H.redirectedFrom=N;let j;return!p&&Sg(a,ue,q)&&(j=Jl(We.NAVIGATION_DUPLICATED,{to:H,from:ue}),W(ue,ue,!0,!1)),(j?Promise.resolve(j):O(H,ue)).catch(U=>Gt(U)?Gt(U,We.NAVIGATION_GUARD_REDIRECT)?U:fe(U):V(U,H,ue)).then(U=>{if(U){if(Gt(U,We.NAVIGATION_GUARD_REDIRECT))return A(Me({replace:b},I(U.to),{state:typeof U.to=="object"?Me({},z,U.to.state):z,force:p}),N||H)}else U=D(H,ue,!0,b,z);return J(H,ue,U),U})}function B(M,N){const q=$(M,N);return q?Promise.reject(q):Promise.resolve()}function F(M){const N=le.values().next().value;return N&&typeof N.runWithContext=="function"?N.runWithContext(M):M()}function O(M,N){let q;const[ue,z,p]=jg(M,N);q=Rn(ue.reverse(),"beforeRouteLeave",M,N);for(const E of ue)E.leaveGuards.forEach(H=>{q.push(ul(H,M,N))});const b=B.bind(null,M,N);return q.push(b),he(q).then(()=>{q=[];for(const E of s.list())q.push(ul(E,M,N));return q.push(b),he(q)}).then(()=>{q=Rn(z,"beforeRouteUpdate",M,N);for(const E of z)E.updateGuards.forEach(H=>{q.push(ul(H,M,N))});return q.push(b),he(q)}).then(()=>{q=[];for(const E of p)if(E.beforeEnter)if(Rt(E.beforeEnter))for(const H of E.beforeEnter)q.push(ul(H,M,N));else q.push(ul(E.beforeEnter,M,N));return q.push(b),he(q)}).then(()=>(M.matched.forEach(E=>E.enterCallbacks={}),q=Rn(p,"beforeRouteEnter",M,N,F),q.push(b),he(q))).then(()=>{q=[];for(const E of r.list())q.push(ul(E,M,N));return q.push(b),he(q)}).catch(E=>Gt(E,We.NAVIGATION_CANCELLED)?E:Promise.reject(E))}function J(M,N,q){i.list().forEach(ue=>F(()=>ue(M,N,q)))}function D(M,N,q,ue,z){const p=$(M,N);if(p)return p;const b=N===sl,E=Bl?history.state:{};q&&(ue||b?n.replace(M.fullPath,Me({scroll:b&&E&&E.scroll},z)):n.push(M.fullPath,z)),o.value=M,W(M,N,q,b),fe()}let Z;function te(){Z||(Z=n.listen((M,N,q)=>{if(!xe.listening)return;const ue=R(M),z=S(ue,xe.currentRoute.value);if(z){A(Me(z,{replace:!0,force:!0}),ue).catch(va);return}c=ue;const p=o.value;Bl&&Bg(hi(p.fullPath,q.delta),pn()),O(ue,p).catch(b=>Gt(b,We.NAVIGATION_ABORTED|We.NAVIGATION_CANCELLED)?b:Gt(b,We.NAVIGATION_GUARD_REDIRECT)?(A(Me(I(b.to),{force:!0}),ue).then(E=>{Gt(E,We.NAVIGATION_ABORTED|We.NAVIGATION_DUPLICATED)&&!q.delta&&q.type===ts.pop&&n.go(-1,!1)}).catch(va),Promise.reject()):(q.delta&&n.go(-q.delta,!1),V(b,ue,p))).then(b=>{b=b||D(ue,p,!1),b&&(q.delta&&!Gt(b,We.NAVIGATION_CANCELLED)?n.go(-q.delta,!1):q.type===ts.pop&&Gt(b,We.NAVIGATION_ABORTED|We.NAVIGATION_DUPLICATED)&&n.go(-1,!1)),J(ue,p,b)}).catch(va)}))}let Ae=la(),Q=la(),x;function V(M,N,q){fe(M);const ue=Q.list();return ue.length?ue.forEach(z=>z(M,N,q)):console.error(M),Promise.reject(M)}function ne(){return x&&o.value!==sl?Promise.resolve():new Promise((M,N)=>{Ae.add([M,N])})}function fe(M){return x||(x=!M,te(),Ae.list().forEach(([N,q])=>M?q(M):N()),Ae.reset()),M}function W(M,N,q,ue){const{scrollBehavior:z}=e;if(!Bl||!z)return Promise.resolve();const p=!q&&Pg(hi(M.fullPath,0))||(ue||!q)&&history.state&&history.state.scroll||null;return Ke().then(()=>z(M,N,p)).then(b=>b&&Vg(b)).catch(b=>V(b,M,N))}const pe=M=>n.go(M);let ie;const le=new Set,xe={currentRoute:o,listening:!0,addRoute:v,removeRoute:T,clearRoutes:t.clearRoutes,hasRoute:C,getRoutes:k,resolve:R,options:e,push:y,replace:_,go:pe,back:()=>pe(-1),forward:()=>pe(1),beforeEach:s.add,beforeResolve:r.add,afterEach:i.add,onError:Q.add,isReady:ne,install(M){M.component("RouterLink",dy),M.component("RouterView",ku),M.config.globalProperties.$router=xe,Object.defineProperty(M.config.globalProperties,"$route",{enumerable:!0,get:()=>P(o)}),Bl&&!ie&&o.value===sl&&(ie=!0,y(n.location).catch(ue=>{}));const N={};for(const ue in sl)Object.defineProperty(N,ue,{get:()=>o.value[ue],enumerable:!0});M.provide(vn,xe),M.provide(ks,eo(N)),M.provide(as,o);const q=M.unmount;le.add(M),M.unmount=function(){le.delete(M),le.size<1&&(c=sl,Z&&Z(),Z=null,o.value=sl,ie=!1,x=!1),q()}}};function he(M){return M.reduce((N,q)=>N.then(()=>F(q)),Promise.resolve())}return xe}function my(){return tt(vn)}function hy(e){return tt(ks)}const wu="lss-region",Di="us-east-1";function by(){try{return localStorage.getItem(wu)||Di}catch{return Di}}const Cl=de(by());Ve(Cl,e=>{try{localStorage.setItem(wu,e)}catch{}});const gy=[{value:"us-east-1",label:"us-east-1 — N. Virginia"},{value:"us-east-2",label:"us-east-2 — Ohio"},{value:"us-west-1",label:"us-west-1 — N. California"},{value:"us-west-2",label:"us-west-2 — Oregon"},{value:"eu-west-1",label:"eu-west-1 — Ireland"},{value:"eu-west-2",label:"eu-west-2 — London"},{value:"eu-west-3",label:"eu-west-3 — Paris"},{value:"eu-central-1",label:"eu-central-1 — Frankfurt"},{value:"eu-north-1",label:"eu-north-1 — Stockholm"},{value:"ap-southeast-1",label:"ap-southeast-1 — Singapore"},{value:"ap-southeast-2",label:"ap-southeast-2 — Sydney"},{value:"ap-northeast-1",label:"ap-northeast-1 — Tokyo"},{value:"ap-northeast-2",label:"ap-northeast-2 — Seoul"},{value:"ap-south-1",label:"ap-south-1 — Mumbai"},{value:"sa-east-1",label:"sa-east-1 — São Paulo"},{value:"ca-central-1",label:"ca-central-1 — Canada"}],Tu="";function yy(e){const t=Cl.value;if(!t)return e;const l=e.includes("?")?"&":"?";return`${e}${l}region=${encodeURIComponent(t)}`}async function Ie(e,t){const l=await fetch(`${Tu}${yy(e)}`,{headers:{"Content-Type":"application/json",...t==null?void 0:t.headers},...t});if(!l.ok){const a=await l.json().catch(()=>({error:l.statusText}));throw new Error(a.error||"Request failed")}return l.json()}const _y={checkHealth:()=>Ie("/api/health"),getConfig:()=>Ie("/api/config"),listServices:()=>Ie("/api/services"),getService:e=>Ie(`/api/services/${encodeURIComponent(e)}`),registerService:e=>Ie("/api/services/register",{method:"POST",body:JSON.stringify({servicePath:e})}),deleteService:e=>Ie(`/api/services/${e}`,{method:"DELETE"}),updateServiceStatus:(e,t,l)=>Ie(`/api/services/${e}/status`,{method:"PATCH",body:JSON.stringify({status:t,pid:l})}),startService:(e,t)=>Ie(`/api/services/${e}/start`,{method:"POST",body:JSON.stringify(t||{})}),stopService:e=>Ie(`/api/services/${e}/stop`,{method:"POST"}),getServiceLogs:e=>Ie(`/api/services/${e}/logs`),listResources:()=>Ie("/api/resources"),listResourceOwners:()=>Ie("/api/resources/owners"),listBuckets:()=>Ie("/api/buckets"),getBucket:e=>Ie(`/api/buckets/${encodeURIComponent(e)}`),listBucketObjects:(e,t)=>{const l=new URLSearchParams;t!=null&&t.prefix&&l.set("prefix",t.prefix),t!=null&&t.continuationToken&&l.set("continuationToken",t.continuationToken),(t==null?void 0:t.maxKeys)!==void 0&&l.set("maxKeys",String(t.maxKeys)),t!=null&&t.delimiter&&l.set("delimiter",t.delimiter);const a=l.toString();return Ie(`/api/buckets/${encodeURIComponent(e)}/objects${a?`?${a}`:""}`)},bucketObjectContentUrl:(e,t,l=!1)=>{const a=new URLSearchParams({key:t});l&&a.set("download","1");const n=Cl.value;return n&&a.set("region",n),`${Tu}/api/buckets/${encodeURIComponent(e)}/objects/content?${a.toString()}`},putBucketObject:(e,t)=>Ie(`/api/buckets/${encodeURIComponent(e)}/objects`,{method:"POST",body:JSON.stringify(t)}),deleteBucketObject:(e,t)=>Ie(`/api/buckets/${encodeURIComponent(e)}/objects?key=${encodeURIComponent(t)}`,{method:"DELETE"}),listQueues:()=>Ie("/api/queues"),getQueue:e=>Ie(`/api/queues/${encodeURIComponent(e)}`),resetQueueProcessed:e=>Ie(`/api/queues/${encodeURIComponent(e)}/reset-processed`,{method:"POST"}),sendQueueMessage:(e,t)=>Ie(`/api/queues/${encodeURIComponent(e)}/messages`,{method:"POST",body:JSON.stringify(t)}),receiveQueueMessages:(e,t)=>Ie(`/api/queues/${encodeURIComponent(e)}/messages/receive`,{method:"POST",body:JSON.stringify(t)}),deleteQueueMessage:(e,t)=>Ie(`/api/queues/${encodeURIComponent(e)}/messages/delete`,{method:"POST",body:JSON.stringify({receiptHandle:t})}),purgeQueue:e=>Ie(`/api/queues/${encodeURIComponent(e)}/purge`,{method:"POST"}),listDynamoTables:()=>Ie("/api/dynamo/tables"),describeDynamoTable:e=>Ie(`/api/dynamo/tables/${encodeURIComponent(e)}`),setDynamoTtl:(e,t,l)=>Ie(`/api/dynamo/tables/${encodeURIComponent(e)}/ttl`,{method:"PUT",body:JSON.stringify({enabled:t,attributeName:l})}),scanDynamoTable:(e,t)=>Ie(`/api/dynamo/tables/${encodeURIComponent(e)}/scan`,{method:"POST",body:JSON.stringify(t)}),queryDynamoTable:(e,t)=>Ie(`/api/dynamo/tables/${encodeURIComponent(e)}/query`,{method:"POST",body:JSON.stringify(t)}),getDynamoItem:(e,t)=>Ie(`/api/dynamo/tables/${encodeURIComponent(e)}/items/get`,{method:"POST",body:JSON.stringify({key:t})}),putDynamoItem:(e,t)=>Ie(`/api/dynamo/tables/${encodeURIComponent(e)}/items`,{method:"POST",body:JSON.stringify({item:t})}),deleteDynamoItem:(e,t)=>Ie(`/api/dynamo/tables/${encodeURIComponent(e)}/items/delete`,{method:"POST",body:JSON.stringify({key:t})}),listSeeds:()=>Ie("/api/seeds"),runSeed:e=>Ie("/api/seeds/run",{method:"POST",body:JSON.stringify(e?{tableName:e}:{})}),clearSeed:e=>Ie("/api/seeds/clear",{method:"POST",body:JSON.stringify(e?{tableName:e}:{})})},ky={class:"app-shell"},wy={class:"app-main"},Ty=ve({__name:"App",setup(e){const t=hy(),l=my(),a=de({status:"unknown",localstack:!1,dynamoProxy:{enabled:!1,running:!1,port:8e3}}),n=de(document.documentElement.getAttribute("data-tree-theme")||"dark");let s=null;const r=h(()=>{const d=t.path.split("/").filter(Boolean);return d.length===0?"/":`/${d[0]}`}),i=h(()=>[{label:n.value==="dark"?"Switch to light":"Switch to dark",value:"theme"}]);function o(d){d&&d!==r.value&&l.push(d)}function c(d){d==="theme"&&(n.value=n.value==="dark"?"light":"dark",document.documentElement.setAttribute("data-tree-theme",n.value))}async function u(){try{a.value=await _y.checkHealth()}catch(d){console.error("Health check failed:",d)}}return Yl(()=>{u(),s=window.setInterval(u,1e4)}),st(()=>{s&&window.clearInterval(s)}),(d,f)=>(m(),De(P(Xn),{position:"top-right"},{default:we(()=>[w("div",ky,[me(P(ra),{sticky:"",bordered:""},{start:we(()=>[me(P(qa),{direction:"vertical",gap:"0.125rem"},{default:we(()=>[...f[1]||(f[1]=[w("strong",null,"Local Serverless Stack",-1),w("span",{class:"muted",style:{"font-size":"0.75rem"}}," Local development control plane ",-1)])]),_:1})]),center:we(()=>[me(P(Qn),{"model-value":r.value,"onUpdate:modelValue":o},{default:we(()=>[me(P(Jn),null,{default:we(()=>[me(P(Tl),{value:"/"},{default:we(()=>[...f[2]||(f[2]=[$e("Overview",-1)])]),_:1}),me(P(Tl),{value:"/services"},{default:we(()=>[...f[3]||(f[3]=[$e("Services",-1)])]),_:1}),me(P(Tl),{value:"/queues"},{default:we(()=>[...f[4]||(f[4]=[$e("Queues",-1)])]),_:1}),me(P(Tl),{value:"/buckets"},{default:we(()=>[...f[5]||(f[5]=[$e("S3",-1)])]),_:1}),me(P(Tl),{value:"/dynamo"},{default:we(()=>[...f[6]||(f[6]=[$e("DynamoDB",-1)])]),_:1})]),_:1})]),_:1},8,["model-value"])]),end:we(()=>[me(P(qa),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:we(()=>{var v;return[me(P(xa),{tone:a.value.localstack?"success":"danger",variant:"soft"},{default:we(()=>[$e(" LocalStack: "+ee(a.value.localstack?"Running":"Offline"),1)]),_:1},8,["tone"]),(v=a.value.dynamoProxy)!=null&&v.enabled?(m(),De(P(xa),{key:0,tone:a.value.dynamoProxy.running?"success":"warning",variant:"soft"},{default:we(()=>[$e(" Dynamo Proxy: "+ee(a.value.dynamoProxy.running?"On":"Off"),1)]),_:1},8,["tone"])):K("",!0),me(P(qn),{modelValue:P(Cl),"onUpdate:modelValue":f[0]||(f[0]=T=>Qe(Cl)?Cl.value=T:null),options:P(gy),size:"sm",style:{"min-width":"14rem"},"aria-label":"AWS Region"},null,8,["modelValue","options"]),me(P(Wn),{items:i.value,size:"sm",label:"Open menu",onSelect:c},{trigger:we(()=>[me(P(Wl),{size:"sm",variant:"ghost","aria-label":"Open menu"},{default:we(()=>[...f[7]||(f[7]=[$e(" ⋮ ",-1)])]),_:1})]),_:1},8,["items"])]}),_:1})]),_:1}),w("main",wy,[(m(),g("div",{key:`${P(t).fullPath}-${P(Cl)}`},[me(P(ku))]))])])]),_:1}))}}),xy="modulepreload",Cy=function(e){return"/"+e},Ii={},Wt=function(t,l,a){let n=Promise.resolve();if(l&&l.length>0){let r=function(c){return Promise.all(c.map(u=>Promise.resolve(u).then(d=>({status:"fulfilled",value:d}),d=>({status:"rejected",reason:d}))))};document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),o=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));n=r(l.map(c=>{if(c=Cy(c),c in Ii)return;Ii[c]=!0;const u=c.endsWith(".css"),d=u?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${d}`))return;const f=document.createElement("link");if(f.rel=u?"stylesheet":xy,u||(f.as="script"),f.crossOrigin="",f.href=c,o&&f.setAttribute("nonce",o),document.head.appendChild(f),u)return new Promise((v,T)=>{f.addEventListener("load",v),f.addEventListener("error",()=>T(new Error(`Unable to preload CSS for ${c}`)))})}))}function s(r){const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=r,window.dispatchEvent(i),!i.defaultPrevented)throw r}return n.then(r=>{for(const i of r||[])i.status==="rejected"&&s(i.reason);return t().catch(s)})},Ey=[{path:"/",name:"overview",component:()=>Wt(()=>import("./OverviewPage-DKpsGNi-.js"),__vite__mapDeps([0,1])),meta:{title:"Overview"}},{path:"/services",name:"services",component:()=>Wt(()=>import("./ServicesPage-Dl9Md68f.js"),[]),meta:{title:"Services"}},{path:"/services/:name",name:"service-detail",component:()=>Wt(()=>import("./ServiceDetailPage-DMgYxag6.js"),[]),props:e=>({serviceName:String(e.params.name)}),meta:{title:"Service"}},{path:"/queues",name:"queues",component:()=>Wt(()=>import("./QueuesPage-CEfnzK5n.js"),[]),meta:{title:"Queues"}},{path:"/queues/:name",name:"queue-detail",component:()=>Wt(()=>import("./QueueDetailPage-m_Ux1JRb.js"),[]),props:e=>({queueName:String(e.params.name)}),meta:{title:"Queue"}},{path:"/buckets",name:"buckets",component:()=>Wt(()=>import("./BucketsPage-FDb9r2GE.js"),[]),meta:{title:"S3 Buckets"}},{path:"/buckets/:name",name:"bucket-detail",component:()=>Wt(()=>import("./BucketDetailPage-DQU5IfHZ.js"),[]),props:e=>({bucketName:String(e.params.name)}),meta:{title:"S3 Bucket"}},{path:"/dynamo",name:"dynamo",component:()=>Wt(()=>import("./DynamoPage-D0Q2SOCV.js"),[]),meta:{title:"DynamoDB"}},{path:"/dynamo/:name",name:"dynamo-table",component:()=>Wt(()=>import("./DynamoTablePage-D2-tvZSS.js"),[]),props:e=>({tableName:String(e.params.name)}),meta:{title:"DynamoDB Table"}},{path:"/:pathMatch(.*)*",redirect:"/"}],Sy=vy({history:Wg(),routes:Ey});document.documentElement.setAttribute("data-tree-theme","dark");cf(Ty).use(ou).use(Sy).mount("#app");export{Qn as $,Wl as A,ui as B,si as C,Fr as D,ee as E,Te as F,P as G,Dr as H,hy as I,Mr as J,Ar as K,my as L,Dy as M,Jr as N,Xh as O,Tl as P,Ve as Q,jt as R,we as S,Jn as T,Ay as U,oi as V,Iy as W,Ma as X,ii as Y,ti as Z,xa as _,dy as a,Gn as a0,Cr as b,Hr as c,_y as d,Zr as e,qa as f,h as g,w as h,De as i,K as j,g as k,Ud as l,$e as m,me as n,ve as o,Gr as p,$r as q,ni as r,Xr as s,qn as t,st as u,Yl as v,m as w,Yr as x,de as y,Le as z};
|
|
36
|
+
*/let Ug=()=>location.protocol+"//"+location.host;function gu(e,t){const{pathname:l,search:a,hash:n}=t,s=e.indexOf("#");if(s>-1){let r=n.includes(e.slice(s))?e.slice(s).length:1,i=n.slice(r);return i[0]!=="/"&&(i="/"+i),vi(i,"")}return vi(l,e)+a+n}function Kg(e,t,l,a){let n=[],s=[],r=null;const i=({state:f})=>{const v=gu(e,location),T=l.value,k=t.value;let C=0;if(f){if(l.value=v,t.value=f,r&&r===T){r=null;return}C=k?f.position-k.position:0}else a(v);n.forEach(R=>{R(l.value,T,{delta:C,type:ts.pop,direction:C?C>0?On.forward:On.back:On.unknown})})};function o(){r=l.value}function c(f){n.push(f);const v=()=>{const T=n.indexOf(f);T>-1&&n.splice(T,1)};return s.push(v),v}function u(){if(document.visibilityState==="hidden"){const{history:f}=window;if(!f.state)return;f.replaceState(Me({},f.state,{scroll:pn()}),"")}}function d(){for(const f of s)f();s=[],window.removeEventListener("popstate",i),window.removeEventListener("pagehide",u),document.removeEventListener("visibilitychange",u)}return window.addEventListener("popstate",i),window.addEventListener("pagehide",u),document.addEventListener("visibilitychange",u),{pauseListeners:o,listen:c,destroy:d}}function yi(e,t,l,a=!1,n=!1){return{back:e,current:t,forward:l,replaced:a,position:window.history.length,scroll:n?pn():null}}function Gg(e){const{history:t,location:l}=window,a={value:gu(e,l)},n={value:t.state};n.value||s(a.value,{back:null,current:a.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function s(o,c,u){const d=e.indexOf("#"),f=d>-1?(l.host&&document.querySelector("base")?e:e.slice(d))+o:Ug()+e+o;try{t[u?"replaceState":"pushState"](c,"",f),n.value=c}catch(v){console.error(v),l[u?"replace":"assign"](f)}}function r(o,c){s(o,Me({},t.state,yi(n.value.back,o,n.value.forward,!0),c,{position:n.value.position}),!0),a.value=o}function i(o,c){const u=Me({},n.value,t.state,{forward:o,scroll:pn()});s(u.current,u,!0),s(o,Me({},yi(a.value,o,null),{position:u.position+1},c),!1),a.value=o}return{location:a,state:n,push:i,replace:r}}function Wg(e){e=Ig(e);const t=Gg(e),l=Kg(e,t.state,t.location,t.replace);function a(s,r=!0){r||l.pauseListeners(),history.go(s)}const n=Me({location:"",base:e,go:a,createHref:Og.bind(null,e)},t,l);return Object.defineProperty(n,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(n,"state",{enumerable:!0,get:()=>t.state.value}),n}let xl=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e})({});var Ze=(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})(Ze||{});const qg={type:xl.Static,value:""},Qg=/[a-zA-Z0-9_]/;function Jg(e){if(!e)return[[]];if(e==="/")return[[qg]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(v){throw new Error(`ERR (${l})/"${c}": ${v}`)}let l=Ze.Static,a=l;const n=[];let s;function r(){s&&n.push(s),s=[]}let i=0,o,c="",u="";function d(){c&&(l===Ze.Static?s.push({type:xl.Static,value:c}):l===Ze.Param||l===Ze.ParamRegExp||l===Ze.ParamRegExpEnd?(s.length>1&&(o==="*"||o==="+")&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),s.push({type:xl.Param,value:c,regexp:u,repeatable:o==="*"||o==="+",optional:o==="*"||o==="?"})):t("Invalid state to consume buffer"),c="")}function f(){c+=o}for(;i<e.length;){if(o=e[i++],o==="\\"&&l!==Ze.ParamRegExp){a=l,l=Ze.EscapeNext;continue}switch(l){case Ze.Static:o==="/"?(c&&d(),r()):o===":"?(d(),l=Ze.Param):f();break;case Ze.EscapeNext:f(),l=a;break;case Ze.Param:o==="("?l=Ze.ParamRegExp:Qg.test(o)?f():(d(),l=Ze.Static,o!=="*"&&o!=="?"&&o!=="+"&&i--);break;case Ze.ParamRegExp:o===")"?u[u.length-1]=="\\"?u=u.slice(0,-1)+o:l=Ze.ParamRegExpEnd:u+=o;break;case Ze.ParamRegExpEnd:d(),l=Ze.Static,o!=="*"&&o!=="?"&&o!=="+"&&i--,u="";break;default:t("Unknown state");break}}return l===Ze.ParamRegExp&&t(`Unfinished custom RegExp for param "${c}"`),d(),r(),n}const _i="[^/]+?",Yg={sensitive:!1,strict:!1,start:!0,end:!0};var pt=(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})(pt||{});const Xg=/[.+*?^${}()[\]/\\]/g;function Zg(e,t){const l=Me({},Yg,t),a=[];let n=l.start?"^":"";const s=[];for(const c of e){const u=c.length?[]:[pt.Root];l.strict&&!c.length&&(n+="/");for(let d=0;d<c.length;d++){const f=c[d];let v=pt.Segment+(l.sensitive?pt.BonusCaseSensitive:0);if(f.type===xl.Static)d||(n+="/"),n+=f.value.replace(Xg,"\\$&"),v+=pt.Static;else if(f.type===xl.Param){const{value:T,repeatable:k,optional:C,regexp:R}=f;s.push({name:T,repeatable:k,optional:C});const I=R||_i;if(I!==_i){v+=pt.BonusCustomRegExp;try{`${I}`}catch(y){throw new Error(`Invalid custom RegExp for param "${T}" (${I}): `+y.message)}}let $=k?`((?:${I})(?:/(?:${I}))*)`:`(${I})`;d||($=C&&c.length<2?`(?:/${$})`:"/"+$),C&&($+="?"),n+=$,v+=pt.Dynamic,C&&(v+=pt.BonusOptional),k&&(v+=pt.BonusRepeatable),I===".*"&&(v+=pt.BonusWildcard)}u.push(v)}a.push(u)}if(l.strict&&l.end){const c=a.length-1;a[c][a[c].length-1]+=pt.BonusStrict}l.strict||(n+="/?"),l.end?n+="$":l.strict&&!n.endsWith("/")&&(n+="(?:/|$)");const r=new RegExp(n,l.sensitive?"":"i");function i(c){const u=c.match(r),d={};if(!u)return null;for(let f=1;f<u.length;f++){const v=u[f]||"",T=s[f-1];d[T.name]=v&&T.repeatable?v.split("/"):v}return d}function o(c){let u="",d=!1;for(const f of e){(!d||!u.endsWith("/"))&&(u+="/"),d=!1;for(const v of f)if(v.type===xl.Static)u+=v.value;else if(v.type===xl.Param){const{value:T,repeatable:k,optional:C}=v,R=T in c?c[T]:"";if(Rt(R)&&!k)throw new Error(`Provided param "${T}" is an array but it is not repeatable (* or + modifiers)`);const I=Rt(R)?R.join("/"):R;if(!I)if(C)f.length<2&&(u.endsWith("/")?u=u.slice(0,-1):d=!0);else throw new Error(`Missing required param "${T}"`);u+=I}}return u||"/"}return{re:r,score:a,keys:s,parse:i,stringify:o}}function ey(e,t){let l=0;for(;l<e.length&&l<t.length;){const a=t[l]-e[l];if(a)return a;l++}return e.length<t.length?e.length===1&&e[0]===pt.Static+pt.Segment?-1:1:e.length>t.length?t.length===1&&t[0]===pt.Static+pt.Segment?1:-1:0}function yu(e,t){let l=0;const a=e.score,n=t.score;for(;l<a.length&&l<n.length;){const s=ey(a[l],n[l]);if(s)return s;l++}if(Math.abs(n.length-a.length)===1){if(ki(a))return 1;if(ki(n))return-1}return n.length-a.length}function ki(e){const t=e[e.length-1];return e.length>0&&t[t.length-1]<0}const ty={strict:!1,end:!0,sensitive:!1};function ly(e,t,l){const a=Zg(Jg(e.path),l),n=Me(a,{record:e,parent:t,children:[],alias:[]});return t&&!n.record.aliasOf==!t.record.aliasOf&&t.children.push(n),n}function ay(e,t){const l=[],a=new Map;t=pi(ty,t);function n(d){return a.get(d)}function s(d,f,v){const T=!v,k=Ti(d);k.aliasOf=v&&v.record;const C=pi(t,d),R=[k];if("alias"in d){const y=typeof d.alias=="string"?[d.alias]:d.alias;for(const _ of y)R.push(Ti(Me({},k,{components:v?v.record.components:k.components,path:_,aliasOf:v?v.record:k})))}let I,$;for(const y of R){const{path:_}=y;if(f&&_[0]!=="/"){const S=f.record.path,A=S[S.length-1]==="/"?"":"/";y.path=f.record.path+(_&&A+_)}if(I=ly(y,f,C),v?v.alias.push(I):($=$||I,$!==I&&$.alias.push(I),T&&d.name&&!xi(I)&&r(d.name)),_u(I)&&o(I),k.children){const S=k.children;for(let A=0;A<S.length;A++)s(S[A],I,v&&v.children[A])}v=v||I}return $?()=>{r($)}:va}function r(d){if(hu(d)){const f=a.get(d);f&&(a.delete(d),l.splice(l.indexOf(f),1),f.children.forEach(r),f.alias.forEach(r))}else{const f=l.indexOf(d);f>-1&&(l.splice(f,1),d.record.name&&a.delete(d.record.name),d.children.forEach(r),d.alias.forEach(r))}}function i(){return l}function o(d){const f=ry(d,l);l.splice(f,0,d),d.record.name&&!xi(d)&&a.set(d.record.name,d)}function c(d,f){let v,T={},k,C;if("name"in d&&d.name){if(v=a.get(d.name),!v)throw Jl(We.MATCHER_NOT_FOUND,{location:d});C=v.record.name,T=Me(wi(f.params,v.keys.filter($=>!$.optional).concat(v.parent?v.parent.keys.filter($=>$.optional):[]).map($=>$.name)),d.params&&wi(d.params,v.keys.map($=>$.name))),k=v.stringify(T)}else if(d.path!=null)k=d.path,v=l.find($=>$.re.test(k)),v&&(T=v.parse(k),C=v.record.name);else{if(v=f.name?a.get(f.name):l.find($=>$.re.test(f.path)),!v)throw Jl(We.MATCHER_NOT_FOUND,{location:d,currentLocation:f});C=v.record.name,T=Me({},f.params,d.params),k=v.stringify(T)}const R=[];let I=v;for(;I;)R.unshift(I.record),I=I.parent;return{name:C,path:k,params:T,matched:R,meta:sy(R)}}e.forEach(d=>s(d));function u(){l.length=0,a.clear()}return{addRoute:s,resolve:c,removeRoute:r,clearRoutes:u,getRoutes:i,getRecordMatcher:n}}function wi(e,t){const l={};for(const a of t)a in e&&(l[a]=e[a]);return l}function Ti(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:ny(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 ny(e){const t={},l=e.props||!1;if("component"in e)t.default=l;else for(const a in e.components)t[a]=typeof l=="object"?l[a]:l;return t}function xi(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function sy(e){return e.reduce((t,l)=>Me(t,l.meta),{})}function ry(e,t){let l=0,a=t.length;for(;l!==a;){const s=l+a>>1;yu(e,t[s])<0?a=s:l=s+1}const n=iy(e);return n&&(a=t.lastIndexOf(n,a-1)),a}function iy(e){let t=e;for(;t=t.parent;)if(_u(t)&&yu(e,t)===0)return t}function _u({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Ci(e){const t=tt(vn),l=tt(ks),a=h(()=>{const o=P(e.to);return t.resolve(o)}),n=h(()=>{const{matched:o}=a.value,{length:c}=o,u=o[c-1],d=l.matched;if(!u||!d.length)return-1;const f=d.findIndex(Ql.bind(null,u));if(f>-1)return f;const v=Ei(o[c-2]);return c>1&&Ei(u)===v&&d[d.length-1].path!==v?d.findIndex(Ql.bind(null,o[c-2])):f}),s=h(()=>n.value>-1&&fy(l.params,a.value.params)),r=h(()=>n.value>-1&&n.value===l.matched.length-1&&mu(l.params,a.value.params));function i(o={}){if(cy(o)){const c=t[P(e.replace)?"replace":"push"](P(e.to)).catch(va);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>c),c}return Promise.resolve()}return{route:a,href:h(()=>a.value.href),isActive:s,isExactActive:r,navigate:i}}function oy(e){return e.length===1?e[0]:e}const uy=ve({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:Ci,setup(e,{slots:t}){const l=Al(Ci(e)),{options:a}=tt(vn),n=h(()=>({[Si(e.activeClass,a.linkActiveClass,"router-link-active")]:l.isActive,[Si(e.exactActiveClass,a.linkExactActiveClass,"router-link-exact-active")]:l.isExactActive}));return()=>{const s=t.default&&oy(t.default(l));return e.custom?s:wa("a",{"aria-current":l.isExactActive?e.ariaCurrentValue:null,href:l.href,onClick:l.navigate,class:n.value},s)}}}),dy=uy;function cy(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 fy(e,t){for(const l in t){const a=t[l],n=e[l];if(typeof a=="string"){if(a!==n)return!1}else if(!Rt(n)||n.length!==a.length||a.some((s,r)=>s.valueOf()!==n[r].valueOf()))return!1}return!0}function Ei(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Si=(e,t,l)=>e??t??l,py=ve({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:l}){const a=tt(as),n=h(()=>e.route||a.value),s=tt(gi,0),r=h(()=>{let c=P(s);const{matched:u}=n.value;let d;for(;(d=u[c])&&!d.components;)c++;return c}),i=h(()=>n.value.matched[r.value]);Xt(gi,h(()=>r.value+1)),Xt(zg,i),Xt(as,n);const o=de();return Ve(()=>[o.value,i.value,e.name],([c,u,d],[f,v,T])=>{u&&(u.instances[d]=c,v&&v!==u&&c&&c===f&&(u.leaveGuards.size||(u.leaveGuards=v.leaveGuards),u.updateGuards.size||(u.updateGuards=v.updateGuards))),c&&u&&(!v||!Ql(u,v)||!f)&&(u.enterCallbacks[d]||[]).forEach(k=>k(c))},{flush:"post"}),()=>{const c=n.value,u=e.name,d=i.value,f=d&&d.components[u];if(!f)return Ai(l.default,{Component:f,route:c});const v=d.props[u],T=v?v===!0?c.params:typeof v=="function"?v(c):v:null,C=wa(f,Me({},T,t,{onVnodeUnmounted:R=>{R.component.isUnmounted&&(d.instances[u]=null)},ref:o}));return Ai(l.default,{Component:C,route:c})||C}}});function Ai(e,t){if(!e)return null;const l=e(t);return l.length===1?l[0]:l}const ku=py;function vy(e){const t=ay(e.routes,e),l=e.parseQuery||Fg,a=e.stringifyQuery||bi,n=e.history,s=la(),r=la(),i=la(),o=pd(sl);let c=sl;Bl&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=In.bind(null,M=>""+M),d=In.bind(null,Tg),f=In.bind(null,Ea);function v(M,N){let q,ue;return hu(M)?(q=t.getRecordMatcher(M),ue=N):ue=M,t.addRoute(ue,q)}function T(M){const N=t.getRecordMatcher(M);N&&t.removeRoute(N)}function k(){return t.getRoutes().map(M=>M.record)}function C(M){return!!t.getRecordMatcher(M)}function R(M,N){if(N=Me({},N||o.value),typeof M=="string"){const E=$n(l,M,N.path),H=t.resolve({path:E.path},N),j=n.createHref(E.fullPath);return Me(E,H,{params:f(H.params),hash:Ea(E.hash),redirectedFrom:void 0,href:j})}let q;if(M.path!=null)q=Me({},M,{path:$n(l,M.path,N.path).path});else{const E=Me({},M.params);for(const H in E)E[H]==null&&delete E[H];q=Me({},M,{params:d(E)}),N.params=d(N.params)}const ue=t.resolve(q,N),z=M.hash||"";ue.params=u(f(ue.params));const p=Eg(a,Me({},M,{hash:_g(z),path:ue.path})),b=n.createHref(p);return Me({fullPath:p,hash:z,query:a===bi?Hg(M.query):M.query||{}},ue,{redirectedFrom:void 0,href:b})}function I(M){return typeof M=="string"?$n(l,M,o.value.path):Me({},M)}function $(M,N){if(c!==M)return Jl(We.NAVIGATION_CANCELLED,{from:N,to:M})}function y(M){return A(M)}function _(M){return y(Me(I(M),{replace:!0}))}function S(M,N){const q=M.matched[M.matched.length-1];if(q&&q.redirect){const{redirect:ue}=q;let z=typeof ue=="function"?ue(M,N):ue;return typeof z=="string"&&(z=z.includes("?")||z.includes("#")?z=I(z):{path:z},z.params={}),Me({query:M.query,hash:M.hash,params:z.path!=null?{}:M.params},z)}}function A(M,N){const q=c=R(M),ue=o.value,z=M.state,p=M.force,b=M.replace===!0,E=S(q,ue);if(E)return A(Me(I(E),{state:typeof E=="object"?Me({},z,E.state):z,force:p,replace:b}),N||q);const H=q;H.redirectedFrom=N;let j;return!p&&Sg(a,ue,q)&&(j=Jl(We.NAVIGATION_DUPLICATED,{to:H,from:ue}),W(ue,ue,!0,!1)),(j?Promise.resolve(j):O(H,ue)).catch(U=>Gt(U)?Gt(U,We.NAVIGATION_GUARD_REDIRECT)?U:fe(U):V(U,H,ue)).then(U=>{if(U){if(Gt(U,We.NAVIGATION_GUARD_REDIRECT))return A(Me({replace:b},I(U.to),{state:typeof U.to=="object"?Me({},z,U.to.state):z,force:p}),N||H)}else U=D(H,ue,!0,b,z);return J(H,ue,U),U})}function B(M,N){const q=$(M,N);return q?Promise.reject(q):Promise.resolve()}function F(M){const N=le.values().next().value;return N&&typeof N.runWithContext=="function"?N.runWithContext(M):M()}function O(M,N){let q;const[ue,z,p]=jg(M,N);q=Rn(ue.reverse(),"beforeRouteLeave",M,N);for(const E of ue)E.leaveGuards.forEach(H=>{q.push(ul(H,M,N))});const b=B.bind(null,M,N);return q.push(b),he(q).then(()=>{q=[];for(const E of s.list())q.push(ul(E,M,N));return q.push(b),he(q)}).then(()=>{q=Rn(z,"beforeRouteUpdate",M,N);for(const E of z)E.updateGuards.forEach(H=>{q.push(ul(H,M,N))});return q.push(b),he(q)}).then(()=>{q=[];for(const E of p)if(E.beforeEnter)if(Rt(E.beforeEnter))for(const H of E.beforeEnter)q.push(ul(H,M,N));else q.push(ul(E.beforeEnter,M,N));return q.push(b),he(q)}).then(()=>(M.matched.forEach(E=>E.enterCallbacks={}),q=Rn(p,"beforeRouteEnter",M,N,F),q.push(b),he(q))).then(()=>{q=[];for(const E of r.list())q.push(ul(E,M,N));return q.push(b),he(q)}).catch(E=>Gt(E,We.NAVIGATION_CANCELLED)?E:Promise.reject(E))}function J(M,N,q){i.list().forEach(ue=>F(()=>ue(M,N,q)))}function D(M,N,q,ue,z){const p=$(M,N);if(p)return p;const b=N===sl,E=Bl?history.state:{};q&&(ue||b?n.replace(M.fullPath,Me({scroll:b&&E&&E.scroll},z)):n.push(M.fullPath,z)),o.value=M,W(M,N,q,b),fe()}let Z;function te(){Z||(Z=n.listen((M,N,q)=>{if(!xe.listening)return;const ue=R(M),z=S(ue,xe.currentRoute.value);if(z){A(Me(z,{replace:!0,force:!0}),ue).catch(va);return}c=ue;const p=o.value;Bl&&Bg(hi(p.fullPath,q.delta),pn()),O(ue,p).catch(b=>Gt(b,We.NAVIGATION_ABORTED|We.NAVIGATION_CANCELLED)?b:Gt(b,We.NAVIGATION_GUARD_REDIRECT)?(A(Me(I(b.to),{force:!0}),ue).then(E=>{Gt(E,We.NAVIGATION_ABORTED|We.NAVIGATION_DUPLICATED)&&!q.delta&&q.type===ts.pop&&n.go(-1,!1)}).catch(va),Promise.reject()):(q.delta&&n.go(-q.delta,!1),V(b,ue,p))).then(b=>{b=b||D(ue,p,!1),b&&(q.delta&&!Gt(b,We.NAVIGATION_CANCELLED)?n.go(-q.delta,!1):q.type===ts.pop&&Gt(b,We.NAVIGATION_ABORTED|We.NAVIGATION_DUPLICATED)&&n.go(-1,!1)),J(ue,p,b)}).catch(va)}))}let Ae=la(),Q=la(),x;function V(M,N,q){fe(M);const ue=Q.list();return ue.length?ue.forEach(z=>z(M,N,q)):console.error(M),Promise.reject(M)}function ne(){return x&&o.value!==sl?Promise.resolve():new Promise((M,N)=>{Ae.add([M,N])})}function fe(M){return x||(x=!M,te(),Ae.list().forEach(([N,q])=>M?q(M):N()),Ae.reset()),M}function W(M,N,q,ue){const{scrollBehavior:z}=e;if(!Bl||!z)return Promise.resolve();const p=!q&&Pg(hi(M.fullPath,0))||(ue||!q)&&history.state&&history.state.scroll||null;return Ke().then(()=>z(M,N,p)).then(b=>b&&Vg(b)).catch(b=>V(b,M,N))}const pe=M=>n.go(M);let ie;const le=new Set,xe={currentRoute:o,listening:!0,addRoute:v,removeRoute:T,clearRoutes:t.clearRoutes,hasRoute:C,getRoutes:k,resolve:R,options:e,push:y,replace:_,go:pe,back:()=>pe(-1),forward:()=>pe(1),beforeEach:s.add,beforeResolve:r.add,afterEach:i.add,onError:Q.add,isReady:ne,install(M){M.component("RouterLink",dy),M.component("RouterView",ku),M.config.globalProperties.$router=xe,Object.defineProperty(M.config.globalProperties,"$route",{enumerable:!0,get:()=>P(o)}),Bl&&!ie&&o.value===sl&&(ie=!0,y(n.location).catch(ue=>{}));const N={};for(const ue in sl)Object.defineProperty(N,ue,{get:()=>o.value[ue],enumerable:!0});M.provide(vn,xe),M.provide(ks,eo(N)),M.provide(as,o);const q=M.unmount;le.add(M),M.unmount=function(){le.delete(M),le.size<1&&(c=sl,Z&&Z(),Z=null,o.value=sl,ie=!1,x=!1),q()}}};function he(M){return M.reduce((N,q)=>N.then(()=>F(q)),Promise.resolve())}return xe}function my(){return tt(vn)}function hy(e){return tt(ks)}const wu="lss-region",Di="us-east-1";function by(){try{return localStorage.getItem(wu)||Di}catch{return Di}}const Cl=de(by());Ve(Cl,e=>{try{localStorage.setItem(wu,e)}catch{}});const gy=[{value:"us-east-1",label:"us-east-1 — N. Virginia"},{value:"us-east-2",label:"us-east-2 — Ohio"},{value:"us-west-1",label:"us-west-1 — N. California"},{value:"us-west-2",label:"us-west-2 — Oregon"},{value:"eu-west-1",label:"eu-west-1 — Ireland"},{value:"eu-west-2",label:"eu-west-2 — London"},{value:"eu-west-3",label:"eu-west-3 — Paris"},{value:"eu-central-1",label:"eu-central-1 — Frankfurt"},{value:"eu-north-1",label:"eu-north-1 — Stockholm"},{value:"ap-southeast-1",label:"ap-southeast-1 — Singapore"},{value:"ap-southeast-2",label:"ap-southeast-2 — Sydney"},{value:"ap-northeast-1",label:"ap-northeast-1 — Tokyo"},{value:"ap-northeast-2",label:"ap-northeast-2 — Seoul"},{value:"ap-south-1",label:"ap-south-1 — Mumbai"},{value:"sa-east-1",label:"sa-east-1 — São Paulo"},{value:"ca-central-1",label:"ca-central-1 — Canada"}],Tu="";function yy(e){const t=Cl.value;if(!t)return e;const l=e.includes("?")?"&":"?";return`${e}${l}region=${encodeURIComponent(t)}`}async function Ie(e,t){const l=await fetch(`${Tu}${yy(e)}`,{headers:{"Content-Type":"application/json",...t==null?void 0:t.headers},...t});if(!l.ok){const a=await l.json().catch(()=>({error:l.statusText}));throw new Error(a.error||"Request failed")}return l.json()}const _y={checkHealth:()=>Ie("/api/health"),getConfig:()=>Ie("/api/config"),listServices:()=>Ie("/api/services"),getService:e=>Ie(`/api/services/${encodeURIComponent(e)}`),registerService:e=>Ie("/api/services/register",{method:"POST",body:JSON.stringify({servicePath:e})}),deleteService:e=>Ie(`/api/services/${e}`,{method:"DELETE"}),updateServiceStatus:(e,t,l)=>Ie(`/api/services/${e}/status`,{method:"PATCH",body:JSON.stringify({status:t,pid:l})}),startService:(e,t)=>Ie(`/api/services/${e}/start`,{method:"POST",body:JSON.stringify(t||{})}),stopService:e=>Ie(`/api/services/${e}/stop`,{method:"POST"}),getServiceLogs:e=>Ie(`/api/services/${e}/logs`),listResources:()=>Ie("/api/resources"),listResourceOwners:()=>Ie("/api/resources/owners"),listBuckets:()=>Ie("/api/buckets"),getBucket:e=>Ie(`/api/buckets/${encodeURIComponent(e)}`),listBucketObjects:(e,t)=>{const l=new URLSearchParams;t!=null&&t.prefix&&l.set("prefix",t.prefix),t!=null&&t.continuationToken&&l.set("continuationToken",t.continuationToken),(t==null?void 0:t.maxKeys)!==void 0&&l.set("maxKeys",String(t.maxKeys)),t!=null&&t.delimiter&&l.set("delimiter",t.delimiter);const a=l.toString();return Ie(`/api/buckets/${encodeURIComponent(e)}/objects${a?`?${a}`:""}`)},bucketObjectContentUrl:(e,t,l=!1)=>{const a=new URLSearchParams({key:t});l&&a.set("download","1");const n=Cl.value;return n&&a.set("region",n),`${Tu}/api/buckets/${encodeURIComponent(e)}/objects/content?${a.toString()}`},putBucketObject:(e,t)=>Ie(`/api/buckets/${encodeURIComponent(e)}/objects`,{method:"POST",body:JSON.stringify(t)}),deleteBucketObject:(e,t)=>Ie(`/api/buckets/${encodeURIComponent(e)}/objects?key=${encodeURIComponent(t)}`,{method:"DELETE"}),listQueues:()=>Ie("/api/queues"),getQueue:e=>Ie(`/api/queues/${encodeURIComponent(e)}`),resetQueueProcessed:e=>Ie(`/api/queues/${encodeURIComponent(e)}/reset-processed`,{method:"POST"}),sendQueueMessage:(e,t)=>Ie(`/api/queues/${encodeURIComponent(e)}/messages`,{method:"POST",body:JSON.stringify(t)}),receiveQueueMessages:(e,t)=>Ie(`/api/queues/${encodeURIComponent(e)}/messages/receive`,{method:"POST",body:JSON.stringify(t)}),deleteQueueMessage:(e,t)=>Ie(`/api/queues/${encodeURIComponent(e)}/messages/delete`,{method:"POST",body:JSON.stringify({receiptHandle:t})}),purgeQueue:e=>Ie(`/api/queues/${encodeURIComponent(e)}/purge`,{method:"POST"}),listDynamoTables:()=>Ie("/api/dynamo/tables"),describeDynamoTable:e=>Ie(`/api/dynamo/tables/${encodeURIComponent(e)}`),setDynamoTtl:(e,t,l)=>Ie(`/api/dynamo/tables/${encodeURIComponent(e)}/ttl`,{method:"PUT",body:JSON.stringify({enabled:t,attributeName:l})}),scanDynamoTable:(e,t)=>Ie(`/api/dynamo/tables/${encodeURIComponent(e)}/scan`,{method:"POST",body:JSON.stringify(t)}),queryDynamoTable:(e,t)=>Ie(`/api/dynamo/tables/${encodeURIComponent(e)}/query`,{method:"POST",body:JSON.stringify(t)}),getDynamoItem:(e,t)=>Ie(`/api/dynamo/tables/${encodeURIComponent(e)}/items/get`,{method:"POST",body:JSON.stringify({key:t})}),putDynamoItem:(e,t)=>Ie(`/api/dynamo/tables/${encodeURIComponent(e)}/items`,{method:"POST",body:JSON.stringify({item:t})}),deleteDynamoItem:(e,t)=>Ie(`/api/dynamo/tables/${encodeURIComponent(e)}/items/delete`,{method:"POST",body:JSON.stringify({key:t})}),listSeeds:()=>Ie("/api/seeds"),runSeed:e=>Ie("/api/seeds/run",{method:"POST",body:JSON.stringify(e?{tableName:e}:{})}),clearSeed:e=>Ie("/api/seeds/clear",{method:"POST",body:JSON.stringify(e?{tableName:e}:{})})},ky={class:"app-shell"},wy={class:"app-main"},Ty=ve({__name:"App",setup(e){const t=hy(),l=my(),a=de({status:"unknown",localstack:!1,dynamoProxy:{enabled:!1,running:!1,port:8e3}}),n=de(document.documentElement.getAttribute("data-tree-theme")||"dark");let s=null;const r=h(()=>{const d=t.path.split("/").filter(Boolean);return d.length===0?"/":`/${d[0]}`}),i=h(()=>[{label:n.value==="dark"?"Switch to light":"Switch to dark",value:"theme"}]);function o(d){d&&d!==r.value&&l.push(d)}function c(d){d==="theme"&&(n.value=n.value==="dark"?"light":"dark",document.documentElement.setAttribute("data-tree-theme",n.value))}async function u(){try{a.value=await _y.checkHealth()}catch(d){console.error("Health check failed:",d)}}return Yl(()=>{u(),s=window.setInterval(u,1e4)}),st(()=>{s&&window.clearInterval(s)}),(d,f)=>(m(),De(P(Xn),{position:"top-right"},{default:we(()=>[w("div",ky,[me(P(ra),{sticky:"",bordered:""},{start:we(()=>[me(P(qa),{direction:"vertical",gap:"0.125rem"},{default:we(()=>[...f[1]||(f[1]=[w("strong",null,"Local Serverless Stack",-1),w("span",{class:"muted",style:{"font-size":"0.75rem"}}," Local development control plane ",-1)])]),_:1})]),center:we(()=>[me(P(Qn),{"model-value":r.value,"onUpdate:modelValue":o},{default:we(()=>[me(P(Jn),null,{default:we(()=>[me(P(Tl),{value:"/"},{default:we(()=>[...f[2]||(f[2]=[$e("Overview",-1)])]),_:1}),me(P(Tl),{value:"/services"},{default:we(()=>[...f[3]||(f[3]=[$e("Services",-1)])]),_:1}),me(P(Tl),{value:"/queues"},{default:we(()=>[...f[4]||(f[4]=[$e("Queues",-1)])]),_:1}),me(P(Tl),{value:"/buckets"},{default:we(()=>[...f[5]||(f[5]=[$e("S3",-1)])]),_:1}),me(P(Tl),{value:"/dynamo"},{default:we(()=>[...f[6]||(f[6]=[$e("DynamoDB",-1)])]),_:1})]),_:1})]),_:1},8,["model-value"])]),end:we(()=>[me(P(qa),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:we(()=>{var v;return[me(P(xa),{tone:a.value.localstack?"success":"danger",variant:"soft"},{default:we(()=>[$e(" LocalStack: "+ee(a.value.localstack?"Running":"Offline"),1)]),_:1},8,["tone"]),(v=a.value.dynamoProxy)!=null&&v.enabled?(m(),De(P(xa),{key:0,tone:a.value.dynamoProxy.running?"success":"warning",variant:"soft"},{default:we(()=>[$e(" Dynamo Proxy: "+ee(a.value.dynamoProxy.running?"On":"Off"),1)]),_:1},8,["tone"])):K("",!0),me(P(qn),{modelValue:P(Cl),"onUpdate:modelValue":f[0]||(f[0]=T=>Qe(Cl)?Cl.value=T:null),options:P(gy),size:"sm",style:{"min-width":"14rem"},"aria-label":"AWS Region"},null,8,["modelValue","options"]),me(P(Wn),{items:i.value,size:"sm",label:"Open menu",onSelect:c},{trigger:we(()=>[me(P(Wl),{size:"sm",variant:"ghost","aria-label":"Open menu"},{default:we(()=>[...f[7]||(f[7]=[$e(" ⋮ ",-1)])]),_:1})]),_:1},8,["items"])]}),_:1})]),_:1}),w("main",wy,[(m(),g("div",{key:`${P(t).fullPath}-${P(Cl)}`},[me(P(ku))]))])])]),_:1}))}}),xy="modulepreload",Cy=function(e){return"/"+e},Ii={},Wt=function(t,l,a){let n=Promise.resolve();if(l&&l.length>0){let r=function(c){return Promise.all(c.map(u=>Promise.resolve(u).then(d=>({status:"fulfilled",value:d}),d=>({status:"rejected",reason:d}))))};document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),o=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));n=r(l.map(c=>{if(c=Cy(c),c in Ii)return;Ii[c]=!0;const u=c.endsWith(".css"),d=u?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${d}`))return;const f=document.createElement("link");if(f.rel=u?"stylesheet":xy,u||(f.as="script"),f.crossOrigin="",f.href=c,o&&f.setAttribute("nonce",o),document.head.appendChild(f),u)return new Promise((v,T)=>{f.addEventListener("load",v),f.addEventListener("error",()=>T(new Error(`Unable to preload CSS for ${c}`)))})}))}function s(r){const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=r,window.dispatchEvent(i),!i.defaultPrevented)throw r}return n.then(r=>{for(const i of r||[])i.status==="rejected"&&s(i.reason);return t().catch(s)})},Ey=[{path:"/",name:"overview",component:()=>Wt(()=>import("./OverviewPage-nhomNDqx.js"),__vite__mapDeps([0,1])),meta:{title:"Overview"}},{path:"/services",name:"services",component:()=>Wt(()=>import("./ServicesPage-DWDaaOz9.js"),[]),meta:{title:"Services"}},{path:"/services/:name",name:"service-detail",component:()=>Wt(()=>import("./ServiceDetailPage-DxJ0t7HQ.js"),[]),props:e=>({serviceName:String(e.params.name)}),meta:{title:"Service"}},{path:"/queues",name:"queues",component:()=>Wt(()=>import("./QueuesPage-D5YcEbUU.js"),[]),meta:{title:"Queues"}},{path:"/queues/:name",name:"queue-detail",component:()=>Wt(()=>import("./QueueDetailPage-DHDPgRDc.js"),[]),props:e=>({queueName:String(e.params.name)}),meta:{title:"Queue"}},{path:"/buckets",name:"buckets",component:()=>Wt(()=>import("./BucketsPage-BHkg7TQp.js"),[]),meta:{title:"S3 Buckets"}},{path:"/buckets/:name",name:"bucket-detail",component:()=>Wt(()=>import("./BucketDetailPage-Hg4Gg3jC.js"),[]),props:e=>({bucketName:String(e.params.name)}),meta:{title:"S3 Bucket"}},{path:"/dynamo",name:"dynamo",component:()=>Wt(()=>import("./DynamoPage-CH_TgPh_.js"),[]),meta:{title:"DynamoDB"}},{path:"/dynamo/:name",name:"dynamo-table",component:()=>Wt(()=>import("./DynamoTablePage-BPvl5y6_.js"),[]),props:e=>({tableName:String(e.params.name)}),meta:{title:"DynamoDB Table"}},{path:"/:pathMatch(.*)*",redirect:"/"}],Sy=vy({history:Wg(),routes:Ey});document.documentElement.setAttribute("data-tree-theme","dark");cf(Ty).use(ou).use(Sy).mount("#app");export{Qn as $,Wl as A,ui as B,si as C,Fr as D,ee as E,Te as F,P as G,Dr as H,hy as I,Mr as J,Ar as K,my as L,Dy as M,Jr as N,Xh as O,Tl as P,Ve as Q,jt as R,we as S,Jn as T,Ay as U,oi as V,Iy as W,Ma as X,ii as Y,ti as Z,xa as _,dy as a,Gn as a0,Cr as b,Hr as c,_y as d,Zr as e,qa as f,h as g,w as h,De as i,K as j,g as k,Ud as l,$e as m,me as n,ve as o,Gr as p,$r as q,ni as r,Xr as s,qn as t,st as u,Yl as v,m as w,Yr as x,de as y,Le as z};
|
package/dist/ui/index.html
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<meta charset="UTF-8" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>LSS Orchestrator</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-D3WwZ4lY.js"></script>
|
|
9
9
|
<link rel="stylesheet" crossorigin href="/assets/index-EYnsoJOq.css">
|
|
10
10
|
</head>
|
|
11
11
|
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as K,v as A,u as M,w as n,i,G as a,f as x,S as s,n as r,D as U,s as h,b as j,m as o,E as u,j as f,K as F,k as y,R as H,J,V as W,A as q,B as g,_ as z,a as Q,h as I,y as _,g as G,d as w,L as X}from"./index-xSUtPJWt.js";const Y={key:0,style:{display:"flex","justify-content":"center",padding:"2rem"}},Z=["onClick"],ee={key:1},te={class:"muted mono",style:{"font-size":"0.75rem"}},se={key:1,class:"muted",style:{"font-size":"0.75rem"}},ae={key:1,class:"muted",style:{"font-size":"0.75rem"}},ne={key:1,class:"muted",style:{"font-size":"0.75rem"}},le=K({__name:"DynamoTablesList",emits:["open"],setup(P,{emit:D}){const N=D,d=_([]),p=_([]),R=_({}),c=_(!0),b=_(null);let S=null;const V=[{key:"name",label:"Table"},{key:"service",label:"Service"},{key:"status",label:"Status"},{key:"itemCount",label:"Items",align:"right"},{key:"seed",label:"Seed"},{key:"features",label:"Features"},{key:"actions",label:"",align:"right"}],B=G(()=>{const l=d.value.map(t=>{var O,$;const e=(O=t.keySchema.find(k=>k.KeyType==="HASH"))==null?void 0:O.AttributeName,m=($=t.keySchema.find(k=>k.KeyType==="RANGE"))==null?void 0:$.AttributeName,C=m?`PK: ${e} · SK: ${m}`:`PK: ${e??"—"}`,L=p.value.find(k=>k.tableName===t.name);return{name:t.name,status:t.status,itemCount:t.itemCount||0,keyDescriptor:C,billingMode:t.billingMode,ttlOn:t.ttl.enabled,streamOn:t.streamEnabled,hasGsi:t.hasGsi,hasLsi:t.hasLsi,service:R.value[t.name]||"",seedItemCount:L?L.itemCount:null,exists:!0}});for(const t of p.value)!t.tableExists&&!l.some(e=>e.name===t.tableName)&&l.push({name:t.tableName,status:"PENDING",itemCount:0,keyDescriptor:"—",ttlOn:!1,streamOn:!1,hasGsi:!1,hasLsi:!1,service:R.value[t.tableName]||"",seedItemCount:t.itemCount,exists:!1});return l.sort((t,e)=>t.name.localeCompare(e.name))}),v=G(()=>({tables:d.value.length,items:d.value.reduce((l,t)=>l+(t.itemCount||0),0),warnings:d.value.reduce((l,t)=>{var e;return l+(((e=t.warnings)==null?void 0:e.length)||0)},0),seedsPending:p.value.filter(l=>!l.tableExists).length}));async function T(){try{const[l,t,e]=await Promise.all([w.listDynamoTables(),w.listSeeds().catch(()=>({seedsDir:"",entries:[]})),w.listResourceOwners().catch(()=>({tables:[],queues:[],topics:[],buckets:[]}))]);d.value=l.tables,p.value=t.entries;const m={};for(const C of e.tables)m[C.name]=C.service;R.value=m,b.value=null}catch(l){b.value=l.message||"Failed to load DynamoDB tables"}finally{c.value=!1}}function E(l){l.exists&&N("open",l.name)}return A(()=>{T(),S=window.setInterval(T,15e3)}),M(()=>{S&&window.clearInterval(S)}),(l,t)=>(n(),i(a(x),{direction:"vertical",gap:"1.25rem"},{default:s(()=>[r(a(U),{columns:4,gap:"1rem"},{default:s(()=>[r(a(h),{label:"Tables",value:v.value.tables,tone:"info",loading:c.value},null,8,["value","loading"]),r(a(h),{label:"Total items",value:v.value.items,tone:"success",loading:c.value},null,8,["value","loading"]),r(a(h),{label:"Seeds pending",value:v.value.seedsPending,tone:v.value.seedsPending>0?"warning":"neutral",loading:c.value},null,8,["value","tone","loading"]),r(a(h),{label:"Warnings",value:v.value.warnings,tone:v.value.warnings>0?"warning":"neutral",loading:c.value},null,8,["value","tone","loading"])]),_:1}),b.value?(n(),i(a(j),{key:0,variant:"danger",dismissible:"",onDismiss:t[0]||(t[0]=e=>b.value=null)},{default:s(()=>[o(u(b.value),1)]),_:1})):f("",!0),r(a(F),{variant:"outline"},{header:s(()=>[r(a(x),{direction:"horizontal",justify:"space-between",align:"center"},{default:s(()=>[...t[1]||(t[1]=[I("strong",null,"DynamoDB tables",-1),I("span",{class:"muted",style:{"font-size":"0.75rem"}}," Rows with reduced opacity exist only as a seed file ",-1)])]),_:1})]),default:s(()=>[c.value?(n(),y("div",Y,[r(a(H),{label:"Loading tables..."})])):B.value.length?(n(),i(a(W),{key:2,columns:V,rows:B.value,"row-class":e=>e.exists?"":"dim-row"},{"cell-name":s(({row:e})=>[r(a(x),{direction:"vertical",gap:"0.125rem"},{default:s(()=>[e.exists?(n(),y("strong",{key:0,style:{cursor:"pointer","text-decoration":"underline","text-decoration-style":"dotted","text-underline-offset":"3px"},onClick:m=>E(e)},u(e.name),9,Z)):(n(),y("strong",ee,u(e.name),1)),I("span",te,u(e.keyDescriptor),1)]),_:2},1024)]),"cell-service":s(({row:e})=>[e.service?(n(),i(a(Q),{key:0,to:`/services/${encodeURIComponent(String(e.service))}`,style:{"text-decoration":"none"}},{default:s(()=>[r(a(g),{size:"sm",variant:"soft",clickable:""},{default:s(()=>[o(u(e.service),1)]),_:2},1024)]),_:2},1032,["to"])):(n(),y("span",se,"—"))]),"cell-status":s(({row:e})=>[e.exists?(n(),i(a(z),{key:0,tone:e.status==="ACTIVE"?"success":"warning",variant:"soft"},{default:s(()=>[o(u(e.status||"UNKNOWN"),1)]),_:2},1032,["tone"])):(n(),i(a(z),{key:1,tone:"warning",variant:"outline"},{default:s(()=>[...t[2]||(t[2]=[o("Not created",-1)])]),_:1}))]),"cell-itemCount":s(({row:e})=>[o(u(e.exists?e.itemCount:"—"),1)]),"cell-seed":s(({row:e})=>[e.seedItemCount!==null?(n(),i(a(z),{key:0,tone:e.exists?"info":"warning",variant:"soft"},{default:s(()=>[o(u(e.seedItemCount)+" seeded item"+u(e.seedItemCount===1?"":"s"),1)]),_:2},1032,["tone"])):(n(),y("span",ae,"no seed"))]),"cell-features":s(({row:e})=>[r(a(x),{direction:"horizontal",gap:"0.25rem",wrap:""},{default:s(()=>[e.billingMode?(n(),i(a(g),{key:0,size:"sm",variant:"soft"},{default:s(()=>[o(u(e.billingMode),1)]),_:2},1024)):f("",!0),e.ttlOn?(n(),i(a(g),{key:1,size:"sm",variant:"solid"},{default:s(()=>[...t[3]||(t[3]=[o("TTL",-1)])]),_:1})):f("",!0),e.streamOn?(n(),i(a(g),{key:2,size:"sm",variant:"solid"},{default:s(()=>[...t[4]||(t[4]=[o("Streams",-1)])]),_:1})):f("",!0),e.hasGsi?(n(),i(a(g),{key:3,size:"sm",variant:"soft"},{default:s(()=>[...t[5]||(t[5]=[o("GSI",-1)])]),_:1})):f("",!0),e.hasLsi?(n(),i(a(g),{key:4,size:"sm",variant:"soft"},{default:s(()=>[...t[6]||(t[6]=[o("LSI",-1)])]),_:1})):f("",!0)]),_:2},1024)]),"cell-actions":s(({row:e})=>[e.exists?(n(),i(a(q),{key:0,size:"sm",variant:"soft",onClick:m=>E(e)},{default:s(()=>[...t[7]||(t[7]=[o(" Explore ",-1)])]),_:1},8,["onClick"])):(n(),y("span",ne," Register service to provision "))]),_:1},8,["rows","row-class"])):(n(),i(a(J),{key:1,title:"No DynamoDB tables",description:"Register a microservice with DynamoDB resources or drop a seed file into the seeds directory."}))]),_:1})]),_:1}))}}),oe=K({__name:"DynamoPage",setup(P){const D=X();function N(d){D.push(`/dynamo/${encodeURIComponent(d)}`)}return(d,p)=>(n(),i(le,{onOpen:N}))}});export{oe as default};
|