local-serverless-stack 0.17.1 → 1.0.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/CHANGELOG.md +327 -0
- package/README.md +1157 -224
- package/assets/icon.svg +37 -0
- package/assets/logo.svg +38 -0
- package/bin/cli.js +384 -217
- package/bin/i18n.js +498 -0
- package/dist/client/config-discovery.d.ts.map +1 -1
- package/dist/client/config-discovery.js +2 -1
- package/dist/client/config-discovery.js.map +1 -1
- package/dist/client/http.d.ts +7 -0
- package/dist/client/http.d.ts.map +1 -1
- package/dist/client/http.js +3 -2
- package/dist/client/http.js.map +1 -1
- package/dist/client/lifecycle.d.ts +1 -4
- package/dist/client/lifecycle.d.ts.map +1 -1
- package/dist/client/lifecycle.js +2 -8
- package/dist/client/lifecycle.js.map +1 -1
- package/dist/client/namespaces/health.d.ts +1 -1
- package/dist/client/namespaces/health.d.ts.map +1 -1
- package/dist/client/namespaces/queues.d.ts.map +1 -1
- package/dist/client/namespaces/queues.js +9 -0
- package/dist/client/namespaces/queues.js.map +1 -1
- package/dist/client/namespaces/seeds.d.ts +1 -1
- package/dist/client/namespaces/services.d.ts +34 -0
- package/dist/client/namespaces/services.d.ts.map +1 -1
- package/dist/client/namespaces/services.js +3 -0
- package/dist/client/namespaces/services.js.map +1 -1
- package/dist/client/types.d.ts +17 -5
- package/dist/client/types.d.ts.map +1 -1
- package/dist/mcp/http.d.ts +15 -0
- package/dist/mcp/http.d.ts.map +1 -0
- package/dist/mcp/http.js +86 -0
- package/dist/mcp/http.js.map +1 -0
- package/dist/mcp/protocol.d.ts +36 -0
- package/dist/mcp/protocol.d.ts.map +1 -0
- package/dist/mcp/protocol.js +96 -0
- package/dist/mcp/protocol.js.map +1 -0
- package/dist/mcp/server.d.ts +7 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +41 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools.d.ts +18 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +323 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/server/dev/dynamo-proxy.d.ts.map +1 -1
- package/dist/server/dev/dynamo-proxy.js +16 -2
- package/dist/server/dev/dynamo-proxy.js.map +1 -1
- package/dist/server/engine/backends/self-backend.d.ts +11 -2
- package/dist/server/engine/backends/self-backend.d.ts.map +1 -1
- package/dist/server/engine/backends/self-backend.js +42 -1
- package/dist/server/engine/backends/self-backend.js.map +1 -1
- package/dist/server/engine/dispatch/dispatcher.js +2 -2
- package/dist/server/engine/dispatch/dispatcher.js.map +1 -1
- package/dist/server/engine/engine-manager.d.ts +6 -1
- package/dist/server/engine/engine-manager.d.ts.map +1 -1
- package/dist/server/engine/engine-manager.js +30 -27
- package/dist/server/engine/engine-manager.js.map +1 -1
- package/dist/server/engine/http/is-aws-request.d.ts +8 -0
- package/dist/server/engine/http/is-aws-request.d.ts.map +1 -0
- package/dist/server/engine/http/is-aws-request.js +53 -0
- package/dist/server/engine/http/is-aws-request.js.map +1 -0
- package/dist/server/engine/http/router.d.ts.map +1 -1
- package/dist/server/engine/http/router.js +7 -1
- package/dist/server/engine/http/router.js.map +1 -1
- package/dist/server/engine/store/engine-store.d.ts +1 -0
- package/dist/server/engine/store/engine-store.d.ts.map +1 -1
- package/dist/server/engine/store/engine-store.js +2 -1
- package/dist/server/engine/store/engine-store.js.map +1 -1
- package/dist/server/engine/store/memory-store.d.ts +16 -0
- package/dist/server/engine/store/memory-store.d.ts.map +1 -0
- package/dist/server/engine/store/memory-store.js +167 -0
- package/dist/server/engine/store/memory-store.js.map +1 -0
- package/dist/server/engine/store/wal.d.ts +3 -0
- package/dist/server/engine/store/wal.d.ts.map +1 -1
- package/dist/server/engine/store/wal.js +35 -1
- package/dist/server/engine/store/wal.js.map +1 -1
- package/dist/server/index.js +159 -44
- package/dist/server/index.js.map +1 -1
- package/dist/server/routes/config.d.ts.map +1 -1
- package/dist/server/routes/config.js +164 -15
- package/dist/server/routes/config.js.map +1 -1
- package/dist/server/routes/lambdas.d.ts.map +1 -1
- package/dist/server/routes/lambdas.js +65 -0
- package/dist/server/routes/lambdas.js.map +1 -1
- package/dist/server/routes/services.d.ts.map +1 -1
- package/dist/server/routes/services.js +275 -24
- package/dist/server/routes/services.js.map +1 -1
- package/dist/server/services/bind-host.d.ts +30 -0
- package/dist/server/services/bind-host.d.ts.map +1 -0
- package/dist/server/services/bind-host.js +182 -0
- package/dist/server/services/bind-host.js.map +1 -0
- package/dist/server/services/cache-manager.d.ts +2 -1
- package/dist/server/services/cache-manager.d.ts.map +1 -1
- package/dist/server/services/cache-manager.js +4 -14
- package/dist/server/services/cache-manager.js.map +1 -1
- package/dist/server/services/config-manager.d.ts +59 -35
- package/dist/server/services/config-manager.d.ts.map +1 -1
- package/dist/server/services/config-manager.js +787 -131
- package/dist/server/services/config-manager.js.map +1 -1
- package/dist/server/services/dynamo-explorer.d.ts +1 -0
- package/dist/server/services/dynamo-explorer.d.ts.map +1 -1
- package/dist/server/services/dynamo-explorer.js +28 -6
- package/dist/server/services/dynamo-explorer.js.map +1 -1
- package/dist/server/services/explorer-region.d.ts +2 -0
- package/dist/server/services/explorer-region.d.ts.map +1 -0
- package/dist/server/services/explorer-region.js +23 -0
- package/dist/server/services/explorer-region.js.map +1 -0
- package/dist/server/services/gateway-manager.d.ts.map +1 -1
- package/dist/server/services/gateway-manager.js +18 -5
- package/dist/server/services/gateway-manager.js.map +1 -1
- package/dist/server/services/invocation-activity.d.ts +45 -0
- package/dist/server/services/invocation-activity.d.ts.map +1 -0
- package/dist/server/services/invocation-activity.js +102 -0
- package/dist/server/services/invocation-activity.js.map +1 -0
- package/dist/server/services/lambda-runtime-manager.d.ts +7 -1
- package/dist/server/services/lambda-runtime-manager.d.ts.map +1 -1
- package/dist/server/services/lambda-runtime-manager.js +118 -10
- package/dist/server/services/lambda-runtime-manager.js.map +1 -1
- package/dist/server/services/opensearch-explorer.d.ts.map +1 -1
- package/dist/server/services/opensearch-explorer.js +14 -10
- package/dist/server/services/opensearch-explorer.js.map +1 -1
- package/dist/server/services/project-scope.d.ts +2 -0
- package/dist/server/services/project-scope.d.ts.map +1 -0
- package/dist/server/services/project-scope.js +23 -0
- package/dist/server/services/project-scope.js.map +1 -0
- package/dist/server/services/queue-inspector.d.ts.map +1 -1
- package/dist/server/services/queue-inspector.js +15 -6
- package/dist/server/services/queue-inspector.js.map +1 -1
- package/dist/server/services/resource-provisioner.d.ts +0 -2
- package/dist/server/services/resource-provisioner.d.ts.map +1 -1
- package/dist/server/services/resource-provisioner.js +24 -14
- package/dist/server/services/resource-provisioner.js.map +1 -1
- package/dist/server/services/s3-explorer.js +3 -3
- package/dist/server/services/s3-explorer.js.map +1 -1
- package/dist/server/services/secrets-explorer.d.ts.map +1 -1
- package/dist/server/services/secrets-explorer.js +10 -3
- package/dist/server/services/secrets-explorer.js.map +1 -1
- package/dist/server/services/seed-manager.d.ts.map +1 -1
- package/dist/server/services/seed-manager.js +17 -8
- package/dist/server/services/seed-manager.js.map +1 -1
- package/dist/server/services/serverless-state-parser.d.ts +10 -0
- package/dist/server/services/serverless-state-parser.d.ts.map +1 -1
- package/dist/server/services/serverless-state-parser.js +20 -1
- package/dist/server/services/serverless-state-parser.js.map +1 -1
- package/dist/server/services/service-registrar.d.ts.map +1 -1
- package/dist/server/services/service-registrar.js +19 -5
- package/dist/server/services/service-registrar.js.map +1 -1
- package/dist/server/services/service-scanner.d.ts +20 -0
- package/dist/server/services/service-scanner.d.ts.map +1 -0
- package/dist/server/services/service-scanner.js +173 -0
- package/dist/server/services/service-scanner.js.map +1 -0
- package/dist/server/services/source-watcher.d.ts.map +1 -1
- package/dist/server/services/source-watcher.js +31 -6
- package/dist/server/services/source-watcher.js.map +1 -1
- package/dist/ui/assets/ApisPage-BOuimwWz.js +1 -0
- package/dist/ui/assets/BucketDetailPage-vLYwhoQt.js +1 -0
- package/dist/ui/assets/BucketsPage-Cu5lU1Hp.js +1 -0
- package/dist/ui/assets/DynamoPage-y3TTEPUL.js +1 -0
- package/dist/ui/assets/DynamoTablePage-BnmSRZjc.js +3 -0
- package/dist/ui/assets/LambdaDetailPage-B5q_d27t.js +4 -0
- package/dist/ui/assets/LambdasPage-CJpRoEDx.js +1 -0
- package/dist/ui/assets/OnboardingPage-D02dymQi.js +1 -0
- package/dist/ui/assets/OpenSearchCollectionPage-B_wWTlfL.js +1 -0
- package/dist/ui/assets/OpenSearchPage-BLEgfF_g.js +1 -0
- package/dist/ui/assets/{OverviewPage-C7JlCyW1.css → OverviewPage-C1pBJ8aP.css} +1 -1
- package/dist/ui/assets/OverviewPage-EdJWiAt6.js +1 -0
- package/dist/ui/assets/QueueDetailPage-ByEYHvHe.js +1 -0
- package/dist/ui/assets/QueuesPage-CvwYHSll.js +1 -0
- package/dist/ui/assets/SecretsPage-DASw8Ntf.js +1 -0
- package/dist/ui/assets/ServiceDetailPage-BMsUDg6L.js +2 -0
- package/dist/ui/assets/ServicesPage-2JuiIiRr.js +2 -0
- package/dist/ui/assets/SettingsPage-DStO4bgN.js +1 -0
- package/dist/ui/assets/engine-D0mFFNbL.js +1 -0
- package/dist/ui/assets/index-BIEznsi4.js +37 -0
- package/dist/ui/assets/index-BRMvNP3Y.css +1 -0
- package/dist/ui/assets/onboarding-DQmlvyWU.js +1 -0
- package/dist/ui/assets/resourceIcons-baecADXA.js +1 -0
- package/dist/ui/assets/triggerIcons-DIPWQkJ3.js +1 -0
- package/dist/ui/favicon.svg +37 -0
- package/dist/ui/index.html +5 -3
- package/package.json +12 -12
- package/dist/server/engine/aoss-sidecar.d.ts +0 -13
- package/dist/server/engine/aoss-sidecar.d.ts.map +0 -1
- package/dist/server/engine/aoss-sidecar.js +0 -93
- package/dist/server/engine/aoss-sidecar.js.map +0 -1
- package/dist/server/engine/backends/localstack-backend.d.ts +0 -25
- package/dist/server/engine/backends/localstack-backend.d.ts.map +0 -1
- package/dist/server/engine/backends/localstack-backend.js +0 -199
- package/dist/server/engine/backends/localstack-backend.js.map +0 -1
- package/dist/server/engine/engine-backend.d.ts +0 -17
- package/dist/server/engine/engine-backend.d.ts.map +0 -1
- package/dist/server/engine/engine-backend.js +0 -7
- package/dist/server/engine/engine-backend.js.map +0 -1
- package/dist/server/services/localstack-manager.d.ts +0 -17
- package/dist/server/services/localstack-manager.d.ts.map +0 -1
- package/dist/server/services/localstack-manager.js +0 -31
- package/dist/server/services/localstack-manager.js.map +0 -1
- package/dist/ui/assets/ApisPage-9Lk0_ZLj.js +0 -1
- package/dist/ui/assets/BucketDetailPage-CdLGW5em.js +0 -1
- package/dist/ui/assets/BucketsPage-CDP95vp8.js +0 -1
- package/dist/ui/assets/DynamoPage-CV7omZpi.js +0 -1
- package/dist/ui/assets/DynamoTablePage-C8v42fy7.js +0 -3
- package/dist/ui/assets/LambdaDetailPage-DkGxePSD.js +0 -4
- package/dist/ui/assets/LambdasPage-Bg7_taxW.js +0 -1
- package/dist/ui/assets/OpenSearchCollectionPage-Ci1hHyy2.js +0 -1
- package/dist/ui/assets/OpenSearchPage-CBKqZeim.js +0 -1
- package/dist/ui/assets/OverviewPage-D8lrE9rQ.js +0 -1
- package/dist/ui/assets/QueueDetailPage-D0DSIGZ2.js +0 -1
- package/dist/ui/assets/QueuesPage-BXebf6st.js +0 -1
- package/dist/ui/assets/SecretsPage-Be2Nw9BM.js +0 -1
- package/dist/ui/assets/SecretsPage-D3XYogv-.css +0 -1
- package/dist/ui/assets/ServiceDetailPage-DZpczZ-G.js +0 -2
- package/dist/ui/assets/ServicesPage-CdzxEqs3.js +0 -2
- package/dist/ui/assets/_plugin-vue_export-helper-DlAUqK2U.js +0 -1
- package/dist/ui/assets/index-C1Wb35Y8.css +0 -1
- package/dist/ui/assets/index-CGpxa55R.js +0 -37
- package/packages/serverless-plugin/README.md +0 -115
- package/packages/serverless-plugin/dist/index.d.ts +0 -2
- package/packages/serverless-plugin/dist/index.d.ts.map +0 -1
- package/packages/serverless-plugin/dist/index.js +0 -107
- package/packages/serverless-plugin/dist/index.js.map +0 -1
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{k as ae,l as pe,o as ye,_ as ke,e as v,W as e,t as d,$ as t,a as J,m as r,j as a,A as T,p as G,i as o,q as u,V as s,f as y,J as be,v as Q,g as _,z as N,y as _e,K as he,L as S,M as I,d as p,u as k,H as Z,N as we,O as ze,F as L,x as $e,s as q,n as ee,w as K,C as te,B as U,a2 as Te,P as Ne,c as Le,r as c,b as B,X as Ce,Y as ne}from"./index-CGpxa55R.js";const Ee={style:{"padding-top":"1rem"}},Re={class:"logs-pre"},Ve={class:"logs-pre"},je={class:"logs-pre"},xe={style:{"padding-top":"1rem"}},Me={style:{"padding-top":"1rem"}},Se={style:{"padding-top":"1rem"}},Ie=["onClick"],qe={key:0,class:"logs-pre"},Be=ae({__name:"LambdaDetail",props:{functionName:{}},emits:["back"],setup(C,{emit:O}){const b=C,Y=O,P=Ce(),le=ne(),h=Le(),f=c(null),E=c(!0),w=c(null);let F=null;const oe=["invoke","triggers","environment","logs"],W=B({get(){const i=String(P.query.tab||"");return oe.includes(i)?i:"invoke"},set(i){le.replace({query:{...P.query,tab:i==="invoke"?void 0:i}})}}),R=c("{}"),V=c("RequestResponse"),j=c(!1),m=c(null),A=c(!1),ie=[{value:"RequestResponse",label:"RequestResponse (sync)"},{value:"Event",label:"Event (async, fire & forget)"}],z=c([]),x=c(!1),M=c({}),re=[{key:"key",label:"Key"},{key:"value",label:"Value"}],X=B(()=>{var i;return Object.entries(((i=f.value)==null?void 0:i.environment)||{}).map(([n,l])=>({key:n,value:l}))}),se=[{key:"method",label:"Method"},{key:"path",label:"Path"},{key:"eventType",label:"Type"},{key:"authorizerName",label:"Authorizer"}],ue=B(()=>{var i;return(((i=f.value)==null?void 0:i.routes)||[]).map(n=>({...n}))}),de=B(()=>{if(!m.value)return"";const i=m.value.payload;if(i===void 0)return"—";try{return JSON.stringify(i,null,2)}catch{return String(i)}});async function $(i=!0){i&&(E.value=!0);try{f.value=await J.getLambda(b.functionName),w.value=null}catch(n){w.value=n.message||"Failed to load function",f.value=null}finally{E.value=!1}}async function D(){x.value=!0;try{const i=await J.getLambdaLogs(b.functionName);z.value=[...i.invocations].reverse()}catch(i){h.add({title:"Failed to load invocation logs",description:i.message,variant:"danger"})}finally{x.value=!1}}async function ve(){var l;let i;const n=R.value.trim();if(n)try{i=JSON.parse(n)}catch{h.add({title:"Invalid JSON payload",description:"Fix the payload before invoking.",variant:"danger"});return}j.value=!0;try{const g=await J.invokeLambda(b.functionName,{payload:i,invocationType:V.value});V.value==="Event"?(m.value=null,A.value=!0,h.add({title:"Invocation accepted",description:"Event invocation queued (fire & forget).",variant:"success"})):(A.value=!1,m.value=g,g.ok||h.add({title:"Function returned an error",description:(l=g.functionError)==null?void 0:l.errorMessage,variant:"danger"})),await $(!1)}catch(g){h.add({title:"Failed to invoke function",description:g.message,variant:"danger"})}finally{j.value=!1}}function fe(i){M.value[i]=!M.value[i]}function me(i){switch(i){case"online":return"success";case"starting":return"info";case"stopped":return"neutral";default:return"danger"}}function ge(i){return i==="ANY"?"info":"neutral"}function ce(i){return i?new Date(i).toLocaleString():"—"}return pe(()=>{$(),D(),F=window.setInterval(()=>$(!1),1e4)}),ye(()=>{F&&window.clearInterval(F)}),ke(()=>b.functionName,()=>{$(),D()}),(i,n)=>(r(),v(e(d),{direction:"vertical",gap:"1rem"},{default:t(()=>[a(e(d),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[a(e(d),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[a(e(T),{size:"sm",variant:"ghost",onClick:n[0]||(n[0]=l=>Y("back"))},{default:t(()=>[a(e(G),{name:"arrow-left"}),n[7]||(n[7]=o(" Lambdas",-1))]),_:1}),a(e(u),{weight:"semibold",size:"lg"},{default:t(()=>[o(s(C.functionName),1)]),_:1}),f.value?(r(),v(e(u),{key:0,tone:"muted",family:"mono",size:"xs"},{default:t(()=>[o(s(f.value.fullName),1)]),_:1})):y("",!0)]),_:1}),a(e(T),{size:"sm",variant:"ghost",loading:E.value,onClick:n[1]||(n[1]=l=>$())},{default:t(()=>[...n[8]||(n[8]=[o("Refresh",-1)])]),_:1},8,["loading"])]),_:1}),w.value?(r(),v(e(be),{key:0,variant:"danger",dismissible:"",onDismiss:n[2]||(n[2]=l=>w.value=null)},{default:t(()=>[o(s(w.value),1)]),_:1})):y("",!0),E.value&&!f.value?(r(),v(e(d),{key:1,direction:"horizontal",justify:"center",align:"center"},{default:t(()=>[a(e(Q),{label:"Loading function..."})]),_:1})):f.value?(r(),_(L,{key:2},[a(e(_e),{columns:5,gap:"0.75rem"},{default:t(()=>[a(e(N),{label:"Status",value:f.value.status,tone:me(f.value.status)},null,8,["value","tone"]),a(e(N),{label:"Runtime",value:f.value.runtime,tone:"info"},null,8,["value"]),a(e(N),{label:"Memory",value:`${f.value.memorySize} MB`,tone:"neutral"},null,8,["value"]),a(e(N),{label:"Timeout",value:`${f.value.timeout}s`,tone:"neutral"},null,8,["value"]),a(e(N),{label:"Mode",value:f.value.executionMode||"—",tone:"neutral"},null,8,["value"])]),_:1}),a(e(Ne),{modelValue:W.value,"onUpdate:modelValue":n[6]||(n[6]=l=>W.value=l)},{default:t(()=>[a(e(he),null,{default:t(()=>[a(e(S),{value:"invoke"},{default:t(()=>[...n[9]||(n[9]=[o("Invoke",-1)])]),_:1}),a(e(S),{value:"triggers"},{default:t(()=>[...n[10]||(n[10]=[o("Triggers",-1)])]),_:1}),a(e(S),{value:"environment"},{default:t(()=>[...n[11]||(n[11]=[o("Environment",-1)])]),_:1}),a(e(S),{value:"logs"},{default:t(()=>[...n[12]||(n[12]=[o("Logs",-1)])]),_:1})]),_:1}),a(e(I),{value:"invoke"},{default:t(()=>[p("div",Ee,[a(e(d),{direction:"vertical",gap:"1rem"},{default:t(()=>[a(e(k),{variant:"outline"},{header:t(()=>[a(e(d),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[a(e(u),{weight:"semibold"},{default:t(()=>[...n[13]||(n[13]=[o("Invoke function",-1)])]),_:1}),a(e(u),{tone:"muted",family:"mono",size:"xs"},{default:t(()=>[o(s(f.value.handler),1)]),_:1})]),_:1})]),footer:t(()=>[a(e(d),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[a(e(d),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[a(e(T),{variant:"solid",loading:j.value,onClick:ve},{default:t(()=>[...n[14]||(n[14]=[o("Invoke",-1)])]),_:1},8,["loading"]),a(e(T),{variant:"ghost",disabled:j.value,onClick:n[5]||(n[5]=l=>R.value="{}")},{default:t(()=>[...n[15]||(n[15]=[o(" Reset payload ",-1)])]),_:1},8,["disabled"])]),_:1}),A.value?(r(),v(e(u),{key:0,tone:"muted",size:"xs"},{default:t(()=>[...n[16]||(n[16]=[o(" Last invocation accepted as Event — check the Logs tab for output. ",-1)])]),_:1})):y("",!0)]),_:1})]),default:t(()=>[a(e(d),{direction:"vertical",gap:"0.75rem"},{default:t(()=>[a(e(Z),{label:"Event payload",hint:"JSON passed to the handler as the event"},{default:t(()=>[a(e(we),{modelValue:R.value,"onUpdate:modelValue":n[3]||(n[3]=l=>R.value=l),class:"mono",rows:8,placeholder:"{}"},null,8,["modelValue"])]),_:1}),a(e(Z),{label:"Invocation type",style:{"max-width":"20rem"}},{default:t(()=>[a(e(ze),{modelValue:V.value,"onUpdate:modelValue":n[4]||(n[4]=l=>V.value=l),options:ie},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),m.value?(r(),v(e(k),{key:0,variant:"outline"},{header:t(()=>[a(e(d),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[a(e(d),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[a(e(u),{weight:"semibold"},{default:t(()=>[...n[17]||(n[17]=[o("Result",-1)])]),_:1}),a(e(q),{tone:m.value.ok?"success":"danger",variant:"soft"},{default:t(()=>{var l;return[o(s(m.value.ok?"OK":((l=m.value.functionError)==null?void 0:l.errorType)||"Error"),1)]}),_:1},8,["tone"])]),_:1}),a(e(u),{tone:"muted",family:"mono",size:"xs"},{default:t(()=>[o(s(m.value.durationMs)+"ms ",1)]),_:1})]),_:1})]),default:t(()=>[a(e(d),{direction:"vertical",gap:"0.75rem"},{default:t(()=>{var l,g,H;return[m.value.ok?(r(),_(L,{key:0},[a(e(u),{weight:"semibold",size:"sm"},{default:t(()=>[...n[18]||(n[18]=[o("Response payload",-1)])]),_:1}),p("pre",Re,s(de.value),1)],64)):(r(),_(L,{key:1},[a(e(u),{weight:"semibold",size:"sm"},{default:t(()=>[...n[19]||(n[19]=[o("Function error",-1)])]),_:1}),p("pre",Ve,s([`${((l=m.value.functionError)==null?void 0:l.errorType)||"Error"}: ${((g=m.value.functionError)==null?void 0:g.errorMessage)||""}`,...((H=m.value.functionError)==null?void 0:H.trace)||[]].join(`
|
|
2
|
-
`)),1)],64)),a(e($e)),a(e(u),{weight:"semibold",size:"sm"},{default:t(()=>[...n[20]||(n[20]=[o("Captured logs",-1)])]),_:1}),p("pre",je,s(m.value.logs.join(`
|
|
3
|
-
`)||"— no output —"),1)]}),_:1})]),_:1})):y("",!0)]),_:1})])]),_:1}),a(e(I),{value:"triggers"},{default:t(()=>[p("div",xe,[a(e(d),{direction:"vertical",gap:"1rem"},{default:t(()=>[a(e(k),{variant:"outline"},{header:t(()=>[a(e(u),{weight:"semibold"},{default:t(()=>[...n[21]||(n[21]=[o("Trigger sources",-1)])]),_:1})]),default:t(()=>[a(e(d),{direction:"horizontal",gap:"0.25rem",wrap:""},{default:t(()=>[f.value.triggers.length?(r(!0),_(L,{key:0},ee(f.value.triggers,l=>(r(),v(e(K),{key:l,size:"sm",variant:"soft"},{default:t(()=>[o(s(l),1)]),_:2},1024))),128)):(r(),v(e(u),{key:1,tone:"muted"},{default:t(()=>[...n[22]||(n[22]=[o("—",-1)])]),_:1}))]),_:1})]),_:1}),a(e(k),{variant:"outline"},{header:t(()=>[a(e(u),{weight:"semibold"},{default:t(()=>[...n[23]||(n[23]=[o("HTTP routes",-1)])]),_:1})]),default:t(()=>[f.value.routes.length?(r(),v(e(te),{key:0,columns:se,rows:ue.value,"aria-label":"HTTP routes"},{"cell-method":t(({row:l})=>[a(e(q),{tone:ge(String(l.method)),variant:"soft"},{default:t(()=>[o(s(l.method),1)]),_:2},1032,["tone"])]),"cell-path":t(({row:l})=>[a(e(u),{family:"mono"},{default:t(()=>[o(s(l.path),1)]),_:2},1024)]),"cell-eventType":t(({row:l})=>[a(e(K),{size:"sm",variant:"soft"},{default:t(()=>[o(s(l.eventType),1)]),_:2},1024)]),"cell-authorizerName":t(({row:l})=>[l.authorizerName?(r(),v(e(K),{key:0,size:"sm",variant:"soft"},{default:t(()=>[o(s(l.authorizerName),1)]),_:2},1024)):(r(),v(e(u),{key:1,tone:"muted"},{default:t(()=>[...n[24]||(n[24]=[o("—",-1)])]),_:1}))]),_:1},8,["rows"])):(r(),v(e(U),{key:1,title:"No HTTP routes",description:"This function has no http/httpApi events pointing at it."}))]),_:1})]),_:1})])]),_:1}),a(e(I),{value:"environment"},{default:t(()=>[p("div",Me,[a(e(k),{variant:"outline"},{header:t(()=>[a(e(u),{weight:"semibold"},{default:t(()=>[...n[25]||(n[25]=[o("Environment variables",-1)])]),_:1})]),default:t(()=>[X.value.length?(r(),v(e(te),{key:0,columns:re,rows:X.value,"aria-label":"Environment variables"},{"cell-key":t(({row:l})=>[a(e(u),{family:"mono",style:{"font-size":"0.78rem"}},{default:t(()=>[o(s(l.key),1)]),_:2},1024)]),"cell-value":t(({row:l})=>[a(e(u),{family:"mono",style:{"font-size":"0.78rem"}},{default:t(()=>[o(s(l.value),1)]),_:2},1024)]),_:1},8,["rows"])):(r(),v(e(U),{key:1,title:"No environment variables",description:"No environment variables are configured for this function."}))]),_:1})])]),_:1}),a(e(I),{value:"logs"},{default:t(()=>[p("div",Se,[a(e(k),{variant:"outline"},{header:t(()=>[a(e(d),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[a(e(u),{weight:"semibold"},{default:t(()=>[o("Recent invocations ("+s(z.value.length)+")",1)]),_:1}),a(e(T),{size:"sm",variant:"ghost",loading:x.value,onClick:D},{default:t(()=>[...n[26]||(n[26]=[o(" Refresh ",-1)])]),_:1},8,["loading"])]),_:1})]),default:t(()=>[x.value&&!z.value.length?(r(),v(e(d),{key:0,direction:"horizontal",justify:"center",align:"center"},{default:t(()=>[a(e(Q),{label:"Loading invocations..."})]),_:1})):z.value.length?(r(),v(e(d),{key:2,direction:"vertical",gap:"0.5rem"},{default:t(()=>[(r(!0),_(L,null,ee(z.value,(l,g)=>(r(),v(e(k),{key:`inv-${g}`,variant:"soft"},{default:t(()=>[a(e(d),{direction:"vertical",gap:"0.5rem"},{default:t(()=>[p("a",{href:"#",style:{"text-decoration":"none",color:"inherit"},onClick:Te(H=>fe(g),["prevent"])},[a(e(d),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[a(e(d),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[a(e(G),{name:M.value[g]?"chevron-down":"chevron-right"},null,8,["name"]),a(e(u),{size:"sm"},{default:t(()=>[o(s(ce(l.at)),1)]),_:2},1024),a(e(q),{tone:l.ok?"success":"danger",variant:"soft"},{default:t(()=>[o(s(l.ok?"OK":"Error"),1)]),_:2},1032,["tone"]),l.statusCode&&l.statusCode>=400?(r(),v(e(q),{key:0,tone:l.statusCode>=500?"danger":"warning",variant:"soft"},{default:t(()=>[o(" HTTP "+s(l.statusCode),1)]),_:2},1032,["tone"])):y("",!0)]),_:2},1024),a(e(u),{tone:"muted",family:"mono",size:"xs"},{default:t(()=>[o(s(l.durationMs)+"ms · "+s(l.logs.length)+" line"+s(l.logs.length===1?"":"s"),1)]),_:2},1024)]),_:2},1024)],8,Ie),M.value[g]?(r(),_("pre",qe,s(l.logs.join(`
|
|
4
|
-
`)||"— no output —"),1)):y("",!0)]),_:2},1024)]),_:2},1024))),128))]),_:1})):(r(),v(e(U),{key:1,title:"No invocations recorded",description:"Invoke the function to see its captured output here."}))]),_:1})])]),_:1})]),_:1},8,["modelValue"])],64)):y("",!0)]),_:1}))}}),Pe=ae({__name:"LambdaDetailPage",props:{functionName:{}},setup(C){const O=ne();function b(){O.push("/lambdas")}return(Y,P)=>(r(),v(Be,{"function-name":C.functionName,onBack:b},null,8,["function-name"]))}});export{Pe as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{k as x,l as C,o as R,m as i,e as u,W as a,t as m,$ as e,j as n,y as B,z as b,J as F,i as s,V as o,f as y,u as j,v as T,B as V,C as M,q as f,s as p,g as U,F as E,n as q,w as L,R as A,D as H,r as k,b as z,a as J}from"./index-CGpxa55R.js";const O=x({__name:"LambdasList",setup(w){const d=k([]),c=k(!0),v=k(null);let _=null;const D=[{key:"name",label:"Function"},{key:"service",label:"Service"},{key:"runtime",label:"Runtime"},{key:"handler",label:"Handler"},{key:"triggers",label:"Triggers"},{key:"status",label:"Status"},{key:"invocations",label:"Invocations",align:"right"},{key:"last",label:"Last"}],I=z(()=>d.value.map(l=>({...l}))),g=z(()=>({total:d.value.length,online:d.value.filter(l=>l.status==="online").length,invocations:d.value.reduce((l,r)=>l+r.invocations,0),errors:d.value.reduce((l,r)=>l+r.errors,0)}));async function h(){try{d.value=await J.listLambdas(),v.value=null}catch(l){v.value=l.message||"Failed to load lambdas"}finally{c.value=!1}}function N(l){switch(l){case"online":return"success";case"starting":return"info";case"stopped":return"neutral";default:return"danger"}}function S(l){return l?new Date(l).toLocaleString():"—"}return C(()=>{h(),_=window.setInterval(h,1e4)}),R(()=>{_&&window.clearInterval(_)}),(l,r)=>(i(),u(a(m),{direction:"vertical",gap:"1.25rem"},{default:e(()=>[n(a(B),{columns:4,gap:"1rem"},{default:e(()=>[n(a(b),{label:"Functions",value:g.value.total,tone:"info",loading:c.value},null,8,["value","loading"]),n(a(b),{label:"Online",value:g.value.online,tone:"success",loading:c.value},null,8,["value","loading"]),n(a(b),{label:"Invocations (session)",value:g.value.invocations,tone:"info",loading:c.value},null,8,["value","loading"]),n(a(b),{label:"Errors",value:g.value.errors,tone:g.value.errors>0?"warning":"neutral",loading:c.value},null,8,["value","tone","loading"])]),_:1}),v.value?(i(),u(a(F),{key:0,variant:"danger",dismissible:"",onDismiss:r[0]||(r[0]=t=>v.value=null)},{default:e(()=>[s(o(v.value),1)]),_:1})):y("",!0),n(a(j),{variant:"outline"},{header:e(()=>[n(a(m),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:e(()=>[n(a(f),{weight:"semibold"},{default:e(()=>[...r[1]||(r[1]=[s("Lambda functions",-1)])]),_:1}),n(a(f),{tone:"muted"},{default:e(()=>[...r[2]||(r[2]=[s("Live · refreshes every 10s",-1)])]),_:1})]),_:1})]),default:e(()=>[c.value?(i(),u(a(m),{key:0,direction:"horizontal",justify:"center",align:"center"},{default:e(()=>[n(a(T),{label:"Loading lambdas..."})]),_:1})):d.value.length?(i(),u(a(M),{key:2,columns:D,rows:I.value,"aria-label":"Lambda functions"},{"cell-name":e(({row:t})=>[n(a(m),{direction:"vertical",gap:"0.125rem"},{default:e(()=>[n(a(H),{to:`/lambdas/${encodeURIComponent(String(t.name))}`,style:{"font-weight":"600"}},{default:e(()=>[s(o(t.name),1)]),_:2},1032,["to"]),n(a(f),{tone:"muted",family:"mono",size:"xs"},{default:e(()=>[s(o(t.fullName),1)]),_:2},1024)]),_:2},1024)]),"cell-service":e(({row:t})=>[n(a(A),{to:`/services/${encodeURIComponent(String(t.service))}`,style:{"text-decoration":"none"}},{default:e(()=>[n(a(L),{size:"sm",variant:"soft",clickable:""},{default:e(()=>[s(o(t.service),1)]),_:2},1024)]),_:2},1032,["to"])]),"cell-runtime":e(({row:t})=>[s(o(t.runtime),1)]),"cell-handler":e(({row:t})=>[n(a(f),{family:"mono",style:{"font-size":"0.78rem"}},{default:e(()=>[s(o(t.handler),1)]),_:2},1024)]),"cell-triggers":e(({row:t})=>[n(a(m),{direction:"horizontal",gap:"0.25rem",wrap:""},{default:e(()=>[t.triggers.length?(i(!0),U(E,{key:0},q(t.triggers,$=>(i(),u(a(L),{key:$,size:"sm",variant:"soft"},{default:e(()=>[s(o($),1)]),_:2},1024))),128)):(i(),u(a(f),{key:1,tone:"muted"},{default:e(()=>[...r[3]||(r[3]=[s("—",-1)])]),_:1}))]),_:2},1024)]),"cell-status":e(({row:t})=>[n(a(p),{tone:N(String(t.status)),variant:"soft"},{default:e(()=>[s(o(t.status),1)]),_:2},1032,["tone"])]),"cell-invocations":e(({row:t})=>[n(a(m),{direction:"horizontal",gap:"0.375rem",justify:"flex-end"},{default:e(()=>[n(a(p),{tone:Number(t.invocations)>0?"info":"neutral",variant:"soft"},{default:e(()=>[s(o(t.invocations),1)]),_:2},1032,["tone"]),Number(t.errors)>0?(i(),u(a(p),{key:0,tone:"danger",variant:"soft"},{default:e(()=>[s(o(t.errors)+" err ",1)]),_:2},1024)):y("",!0)]),_:2},1024)]),"cell-last":e(({row:t})=>[n(a(m),{direction:"vertical",gap:"0.125rem"},{default:e(()=>[n(a(f),{size:"sm"},{default:e(()=>[s(o(S(t.lastInvokedAt)),1)]),_:2},1024),t.lastDurationMs!==void 0?(i(),u(a(f),{key:0,tone:"muted",family:"mono",size:"xs"},{default:e(()=>[s(o(t.lastDurationMs)+"ms ",1)]),_:2},1024)):y("",!0)]),_:2},1024)]),_:1},8,["rows"])):(i(),u(a(V),{key:1,title:"No functions registered",description:"Register a microservice that defines Lambda functions to see them here."}))]),_:1})]),_:1}))}}),W=x({__name:"LambdasPage",setup(w){return(d,c)=>(i(),u(O))}});export{W as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{k as A,l as P,_ as Q,e as r,W as t,t as v,$ as e,a as q,m as d,j as l,A as V,p as W,i,q as f,V as o,s as k,J as R,f as I,v as Y,B as T,C as F,u as N,H as O,O as H,I as G,a1 as X,d as Z,r as u,b as U,Y as ee}from"./index-CGpxa55R.js";const te={class:"mono",style:{"white-space":"pre-wrap","word-break":"break-word","font-size":"0.78rem",background:"var(--tree-color-surface-muted, #f6f7f9)",padding:"0.5rem","border-radius":"6px","max-height":"280px",overflow:"auto",margin:"0"}},ae=A({__name:"OpenSearchCollectionView",props:{name:{}},emits:["back"],setup(y,{emit:w}){const h=y,B=w,c=u([]),x=u(!0),p=u(null),b=u(""),_=u(""),S=u("25"),$=u(!1),g=u(null),m=u(null),z=u(!1),J=[{key:"index",label:"Index"},{key:"docsCount",label:"Docs",align:"right"},{key:"health",label:"Health"},{key:"status",label:"Status"}],K=[{key:"index",label:"Index"},{key:"id",label:"ID"},{key:"source",label:"Source"}],E=U(()=>[{value:"",label:"All indices"},...c.value.map(s=>({value:s.index,label:s.index}))]),L=[{value:"10",label:"10 results"},{value:"25",label:"25 results"},{value:"50",label:"50 results"}],D=U(()=>{var s;return(((s=m.value)==null?void 0:s.hits.hits)||[]).map(a=>({index:a._index,id:a._id,source:JSON.stringify(a._source,null,2)}))});function M(s){return s==="green"?"success":s==="yellow"?"warning":s==="red"?"danger":"neutral"}async function C(){x.value=!0;try{const s=await q.listOpenSearchIndices(h.name);c.value=s.indices,p.value=null}catch(s){p.value=s.message||"Failed to load indices",c.value=[]}finally{x.value=!1}}async function j(){$.value=!0,g.value=null,z.value=!1;try{const s={size:Number(S.value)};b.value&&(s.index=b.value);const a=_.value.trim();a&&(s.q=a),m.value=await q.searchOpenSearch(h.name,s)}catch(s){/not[_ ]?found|no such index|does not exist|404/i.test(String((s==null?void 0:s.message)||""))?(m.value={took:0,hits:{total:{value:0},hits:[]}},z.value=!0):(m.value=null,g.value=s.message||"Search failed")}finally{$.value=!1}}return P(C),Q(()=>h.name,C),(s,a)=>(d(),r(t(v),{direction:"vertical",gap:"1rem"},{default:e(()=>[l(t(v),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:e(()=>[l(t(v),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:e(()=>[l(t(V),{size:"sm",variant:"ghost",onClick:a[0]||(a[0]=n=>B("back"))},{default:e(()=>[l(t(W),{name:"arrow-left"}),a[6]||(a[6]=i(" Collections",-1))]),_:1}),l(t(f),{size:"lg",weight:"semibold"},{default:e(()=>[i(o(y.name),1)]),_:1}),l(t(k),{tone:"info",variant:"soft"},{default:e(()=>[i(o(c.value.length)+" "+o(c.value.length===1?"index":"indices"),1)]),_:1})]),_:1}),l(t(V),{size:"sm",variant:"ghost",loading:x.value,onClick:C},{default:e(()=>[...a[7]||(a[7]=[i("Refresh",-1)])]),_:1},8,["loading"])]),_:1}),p.value?(d(),r(t(R),{key:0,variant:"danger",dismissible:"",onDismiss:a[1]||(a[1]=n=>p.value=null)},{default:e(()=>[i(o(p.value),1)]),_:1})):I("",!0),l(t(N),{variant:"outline"},{header:e(()=>[l(t(f),{weight:"semibold"},{default:e(()=>[...a[8]||(a[8]=[i("Indices",-1)])]),_:1})]),default:e(()=>[x.value&&!c.value.length?(d(),r(t(v),{key:0,direction:"horizontal",justify:"center",align:"center"},{default:e(()=>[l(t(Y),{label:"Loading indices..."})]),_:1})):c.value.length?(d(),r(t(F),{key:2,columns:J,rows:c.value,"aria-label":"OpenSearch indices"},{"cell-index":e(({row:n})=>[l(t(f),{weight:"semibold"},{default:e(()=>[i(o(n.index),1)]),_:2},1024)]),"cell-docsCount":e(({row:n})=>[l(t(k),{tone:"info",variant:"soft"},{default:e(()=>[i(o(n.docsCount??0),1)]),_:2},1024)]),"cell-health":e(({row:n})=>[l(t(k),{tone:M(String(n.health)),variant:"soft"},{default:e(()=>[i(o(n.health||"—"),1)]),_:2},1032,["tone"])]),"cell-status":e(({row:n})=>[l(t(k),{tone:n.status==="open"?"success":"neutral",variant:"soft"},{default:e(()=>[i(o(n.status||"—"),1)]),_:2},1032,["tone"])]),_:1},8,["rows"])):(d(),r(t(T),{key:1,title:"No indices yet",description:"Indices are created when the first document is indexed into this collection."}))]),_:1}),l(t(N),{variant:"outline"},{header:e(()=>[l(t(f),{weight:"semibold"},{default:e(()=>[...a[9]||(a[9]=[i("Search documents",-1)])]),_:1})]),default:e(()=>[l(t(v),{direction:"horizontal",gap:"1rem",align:"end"},{default:e(()=>[l(t(O),{label:"Index",style:{flex:"1"}},{default:e(()=>[l(t(H),{modelValue:b.value,"onUpdate:modelValue":a[2]||(a[2]=n=>b.value=n),options:E.value},null,8,["modelValue","options"])]),_:1}),l(t(O),{label:"Query",style:{flex:"2"}},{default:e(()=>[l(t(G),{modelValue:_.value,"onUpdate:modelValue":a[3]||(a[3]=n=>_.value=n),placeholder:"Free-text query — leave empty to match all documents",onKeyup:X(j,["enter"])},null,8,["modelValue"])]),_:1}),l(t(O),{label:"Size",style:{flex:"0.8","min-width":"8rem"}},{default:e(()=>[l(t(H),{modelValue:S.value,"onUpdate:modelValue":a[4]||(a[4]=n=>S.value=n),options:L},null,8,["modelValue"])]),_:1}),l(t(V),{variant:"solid",loading:$.value,onClick:j},{default:e(()=>[...a[10]||(a[10]=[i("Search",-1)])]),_:1},8,["loading"])]),_:1})]),_:1}),g.value?(d(),r(t(R),{key:1,variant:"danger",dismissible:"",onDismiss:a[5]||(a[5]=n=>g.value=null)},{default:e(()=>[i(o(g.value),1)]),_:1})):I("",!0),m.value?(d(),r(t(N),{key:2,variant:"outline"},{header:e(()=>[l(t(v),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:e(()=>[l(t(f),{weight:"semibold"},{default:e(()=>[...a[11]||(a[11]=[i("Results",-1)])]),_:1}),l(t(f),{tone:"muted",size:"xs"},{default:e(()=>[i(o(m.value.hits.total.value)+" hit"+o(m.value.hits.total.value===1?"":"s")+" · took "+o(m.value.took)+" ms ",1)]),_:1})]),_:1})]),default:e(()=>[D.value.length?(d(),r(t(F),{key:1,columns:K,rows:D.value,"aria-label":"Search result documents"},{"cell-index":e(({row:n})=>[l(t(f),{family:"mono",style:{"font-size":"0.78rem"}},{default:e(()=>[i(o(n.index),1)]),_:2},1024)]),"cell-id":e(({row:n})=>[l(t(f),{family:"mono",style:{"font-size":"0.78rem"}},{default:e(()=>[i(o(n.id),1)]),_:2},1024)]),"cell-source":e(({row:n})=>[Z("pre",te,o(n.source),1)]),_:1},8,["rows"])):(d(),r(t(T),{key:0,title:"No documents found",description:z.value?"The index does not exist yet — it is created when the first document is indexed.":"No documents match this search."},null,8,["description"]))]),_:1})):I("",!0)]),_:1}))}}),ne=A({__name:"OpenSearchCollectionPage",props:{name:{}},setup(y){const w=ee();function h(){w.push("/opensearch")}return(B,c)=>(d(),r(ae,{name:y.name,onBack:h},null,8,["name"]))}});export{ne as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{k as B,l as N,o as I,m as s,e as i,W as e,t as k,$ as t,j as a,y as U,z as O,J as j,i as r,V as w,f as q,u as D,v as A,B as z,C as F,A as P,q as d,R as W,w as J,I as M,r as m,b as $,a as R,Y as T}from"./index-CGpxa55R.js";const Y=B({__name:"OpenSearchCollectionsList",emits:["open"],setup(V,{emit:C}){const v=C,c=m([]),p=m({}),f=m(!0),u=m(null),g=m("");let h=null;const L=[{key:"name",label:"Collection"},{key:"service",label:"Service"},{key:"endpoint",label:"Data-plane endpoint"},{key:"actions",label:"",align:"right"}],_=$(()=>c.value.map(o=>({...o,service:p.value[o.name]||""})).sort((o,l)=>o.name.localeCompare(l.name))),b=$(()=>{const o=g.value.trim().toLowerCase();return o?_.value.filter(l=>l.name.toLowerCase().includes(o)||(l.service||"").toLowerCase().includes(o)):_.value}),S=$(()=>({collections:c.value.length,services:new Set(c.value.map(o=>p.value[o.name]).filter(Boolean)).size}));async function x(){try{const[o,l]=await Promise.all([R.listOpenSearchCollections(),R.listResourceOwners().catch(()=>({tables:[],queues:[],topics:[],buckets:[]}))]);c.value=o.collections;const n={};for(const y of l.collections||[])n[y.name]=y.service;p.value=n,u.value=null}catch(o){u.value=o.message||"Failed to load OpenSearch collections"}finally{f.value=!1}}return N(()=>{x(),h=window.setInterval(x,15e3)}),I(()=>{h&&window.clearInterval(h)}),(o,l)=>(s(),i(e(k),{direction:"vertical",gap:"1.25rem"},{default:t(()=>[a(e(U),{columns:2,gap:"1rem"},{default:t(()=>[a(e(O),{label:"Collections",value:S.value.collections,tone:"info",loading:f.value},null,8,["value","loading"]),a(e(O),{label:"Owning services",value:S.value.services,tone:"success",loading:f.value},null,8,["value","loading"])]),_:1}),u.value?(s(),i(e(j),{key:0,variant:"danger",dismissible:"",onDismiss:l[0]||(l[0]=n=>u.value=null)},{default:t(()=>[r(w(u.value),1)]),_:1})):q("",!0),a(e(D),{variant:"outline"},{header:t(()=>[a(e(k),{direction:"horizontal",justify:"space-between",align:"center",gap:"1rem"},{default:t(()=>[a(e(d),{weight:"semibold"},{default:t(()=>[...l[2]||(l[2]=[r("OpenSearch collections",-1)])]),_:1}),a(e(k),{direction:"horizontal",align:"center",gap:"1rem"},{default:t(()=>[a(e(M),{modelValue:g.value,"onUpdate:modelValue":l[1]||(l[1]=n=>g.value=n),placeholder:"Filter collections...",style:{"min-width":"16rem"}},null,8,["modelValue"]),a(e(d),{tone:"muted",size:"xs"},{default:t(()=>[...l[3]||(l[3]=[r("Refreshes every 15s",-1)])]),_:1})]),_:1})]),_:1})]),default:t(()=>[f.value?(s(),i(e(k),{key:0,direction:"horizontal",justify:"center",align:"center"},{default:t(()=>[a(e(A),{label:"Loading collections..."})]),_:1})):_.value.length?b.value.length?(s(),i(e(F),{key:3,columns:L,rows:b.value,"aria-label":"OpenSearch collections"},{"cell-name":t(({row:n})=>[a(e(d),{weight:"semibold",style:{cursor:"pointer","text-decoration":"underline","text-decoration-style":"dotted","text-underline-offset":"3px"},onClick:y=>v("open",String(n.name))},{default:t(()=>[r(w(n.name),1)]),_:2},1032,["onClick"])]),"cell-service":t(({row:n})=>[n.service?(s(),i(e(W),{key:0,to:`/services/${encodeURIComponent(String(n.service))}`,style:{"text-decoration":"none"}},{default:t(()=>[a(e(J),{size:"sm",variant:"soft",clickable:""},{default:t(()=>[r(w(n.service),1)]),_:2},1024)]),_:2},1032,["to"])):(s(),i(e(d),{key:1,tone:"muted",size:"xs"},{default:t(()=>[...l[4]||(l[4]=[r("unmanaged",-1)])]),_:1}))]),"cell-endpoint":t(({row:n})=>[a(e(d),{tone:"muted",family:"mono",size:"xs"},{default:t(()=>[r(w(n.endpoint),1)]),_:2},1024)]),"cell-actions":t(({row:n})=>[a(e(P),{size:"sm",variant:"soft",onClick:y=>v("open",String(n.name))},{default:t(()=>[...l[5]||(l[5]=[r(" Browse ",-1)])]),_:1},8,["onClick"])]),_:1},8,["rows"])):(s(),i(e(z),{key:2,title:"No matching collections",description:`No collections match "${g.value}".`},null,8,["description"])):(s(),i(e(z),{key:1,title:"No OpenSearch collections",description:"Collections come from AWS::OpenSearchServerless::Collection resources — register a microservice that declares one."}))]),_:1})]),_:1}))}}),G=B({__name:"OpenSearchPage",setup(V){const C=T();function v(c){C.push(`/opensearch/${encodeURIComponent(c)}`)}return(c,p)=>(s(),i(Y,{onOpen:v}))}});export{G as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{k as Z,l as G,o as J,e as g,$ as t,W as e,t as i,a as k,r as b,m as c,j as a,p as B,q as u,i as l,d as K,s as v,V as d,u as _,v as X,g as D,w as T,x as Y,F as R,n as I,f as A,y as O,z as y,R as ee,A as te,b as m}from"./index-CGpxa55R.js";import{_ as ae}from"./_plugin-vue_export-helper-DlAUqK2U.js";const ne=Z({__name:"OverviewPage",setup(le){const p=b(null),f=b(null),P=b([]),L=b([]),q=b([]),w=b({tables:[],queues:[],topics:[],buckets:[],collections:[]}),C=b(!0);let $=null;async function E(){try{const[r,n,o,s,j,h]=await Promise.all([k.checkHealth(),k.getConfig(),k.listServices(),k.listResources(),k.listLambdas().catch(()=>[]),k.listApis().catch(()=>[])]);p.value=r,f.value=n,P.value=o,w.value=s,L.value=j,q.value=h}catch(r){console.error("Overview load failed:",r)}finally{C.value=!1}}const V=m(()=>P.value.filter(r=>r.status==="running").length),F=m(()=>P.value.length),Q=m(()=>L.value.filter(r=>r.status==="online").length),M=m(()=>L.value.length),W=m(()=>q.value.reduce((r,n)=>r+n.routes.length,0)),H=m(()=>{var r;return(r=p.value)!=null&&r.localstack?"success":"danger"}),N=m(()=>{var r,n;return!!((n=(r=p.value)==null?void 0:r.dynamoProxy)!=null&&n.enabled)}),S=m(()=>{var r,n;return!!((n=(r=p.value)==null?void 0:r.dynamoProxy)!=null&&n.running)}),z=m(()=>{var r;return!!((r=f.value)!=null&&r.autoPackage)}),x=m(()=>{var r;return!!((r=f.value)!=null&&r.persistence)}),U=[{type:"SNS Topics",description:"Pub/sub fan-out for cross-service events",status:"covered",to:null},{type:"SQS Queues",description:"Async message queues with consumer monitoring",status:"covered",to:"/queues"},{type:"DynamoDB Tables",description:"Tables, indexes, items explorer and seeds",status:"covered",to:"/dynamo"},{type:"S3 Buckets",description:"Buckets, objects browser, upload/download, Lambda notifications",status:"covered",to:"/buckets"}];return G(()=>{E(),$=window.setInterval(E,15e3)}),J(()=>{$&&window.clearInterval($)}),(r,n)=>(c(),g(e(i),{direction:"vertical",gap:"1.5rem"},{default:t(()=>[a(e(_),{variant:"outline",class:"overview-hero"},{default:t(()=>[a(e(i),{direction:"vertical",gap:"1rem"},{default:t(()=>[a(e(i),{direction:"horizontal",gap:"0.75rem",align:"center",wrap:""},{default:t(()=>[a(e(B),{name:"zap"}),a(e(i),{direction:"vertical",gap:"0.125rem"},{default:t(()=>[a(e(u),{size:"xl",weight:"semibold"},{default:t(()=>[...n[0]||(n[0]=[l("Local Serverless Stack",-1)])]),_:1}),a(e(u),{tone:"muted"},{default:t(()=>[...n[1]||(n[1]=[l("One LocalStack. Every microservice. Zero docker juggling.",-1)])]),_:1})]),_:1})]),_:1}),n[3]||(n[3]=K("p",{style:{"max-width":"70ch","line-height":"1.55"}}," A single control plane for your local serverless workflow. Register a Serverless Framework project and LSS parses its CloudFormation template, provisions the resources in a shared LocalStack instance, wires up event-source mappings, and gives you live visibility into every queue, table, and topic — without spinning up a separate LocalStack per service. ",-1)),a(e(i),{direction:"horizontal",gap:"0.5rem",wrap:""},{default:t(()=>[a(e(v),{tone:H.value,variant:"soft"},{default:t(()=>{var o;return[l(" LocalStack "+d((o=p.value)!=null&&o.localstack?"running":"offline"),1)]}),_:1},8,["tone"]),N.value?(c(),g(e(v),{key:0,tone:S.value?"success":"warning",variant:"soft"},{default:t(()=>[l(" Dynamo Proxy "+d(S.value?"on":"enabled (not listening)"),1)]),_:1},8,["tone"])):(c(),g(e(v),{key:1,tone:"neutral",variant:"soft"},{default:t(()=>[...n[2]||(n[2]=[l("Dynamo Proxy off",-1)])]),_:1})),a(e(v),{tone:z.value?"info":"neutral",variant:"soft"},{default:t(()=>[l(" Auto-package "+d(z.value?"on":"off"),1)]),_:1},8,["tone"]),a(e(v),{tone:x.value?"info":"neutral",variant:"soft"},{default:t(()=>[l(" Persistence "+d(x.value?"on":"off"),1)]),_:1},8,["tone"])]),_:1})]),_:1})]),_:1}),C.value&&!p.value?(c(),g(e(i),{key:0,direction:"horizontal",justify:"center",align:"center"},{default:t(()=>[a(e(X),{label:"Loading overview..."})]),_:1})):(c(),D(R,{key:1},[a(e(O),{columns:2,gap:"1rem"},{default:t(()=>[a(e(_),{variant:"outline"},{header:t(()=>[a(e(u),{weight:"semibold"},{default:t(()=>[...n[4]||(n[4]=[l("Server status",-1)])]),_:1})]),default:t(()=>[a(e(i),{direction:"vertical",gap:"0.75rem"},{default:t(()=>[a(e(i),{direction:"horizontal",justify:"space-between",align:"center"},{default:t(()=>{var o;return[a(e(u),{tone:"muted"},{default:t(()=>[...n[5]||(n[5]=[l("LocalStack",-1)])]),_:1}),a(e(v),{tone:(o=p.value)!=null&&o.localstack?"success":"danger",variant:"soft"},{default:t(()=>{var s;return[l(d((s=p.value)!=null&&s.localstack?"Running":"Offline"),1)]}),_:1},8,["tone"])]}),_:1}),a(e(i),{direction:"horizontal",justify:"space-between",align:"center"},{default:t(()=>[a(e(u),{tone:"muted"},{default:t(()=>[...n[6]||(n[6]=[l("Endpoint",-1)])]),_:1}),a(e(u),{family:"mono"},{default:t(()=>{var o,s;return[l(d(((s=(o=f.value)==null?void 0:o.localstack)==null?void 0:s.endpoint)||"—"),1)]}),_:1})]),_:1}),a(e(i),{direction:"horizontal",justify:"space-between",align:"center"},{default:t(()=>[a(e(u),{tone:"muted"},{default:t(()=>[...n[7]||(n[7]=[l("Image",-1)])]),_:1}),a(e(u),{family:"mono",size:"sm"},{default:t(()=>{var o,s;return[l(d(((s=(o=f.value)==null?void 0:o.localstack)==null?void 0:s.image)||"—"),1)]}),_:1})]),_:1}),a(e(i),{direction:"horizontal",justify:"space-between",align:"center"},{default:t(()=>[a(e(u),{tone:"muted"},{default:t(()=>[...n[8]||(n[8]=[l("Mode",-1)])]),_:1}),a(e(T),{size:"sm",variant:"soft"},{default:t(()=>{var o,s;return[l(d(((s=(o=f.value)==null?void 0:o.localstack)==null?void 0:s.mode)||"—"),1)]}),_:1})]),_:1}),a(e(Y)),a(e(i),{direction:"horizontal",justify:"space-between",align:"center"},{default:t(()=>[a(e(u),{tone:"muted"},{default:t(()=>[...n[9]||(n[9]=[l("Dynamo Proxy",-1)])]),_:1}),a(e(i),{direction:"horizontal",gap:"0.375rem",align:"center"},{default:t(()=>[N.value?(c(),g(e(v),{key:0,tone:S.value?"success":"warning",variant:"soft"},{default:t(()=>{var o,s;return[l(d(S.value?`Listening :${(s=(o=p.value)==null?void 0:o.dynamoProxy)==null?void 0:s.port}`:"Enabled, not listening"),1)]}),_:1},8,["tone"])):(c(),g(e(v),{key:1,tone:"neutral",variant:"soft"},{default:t(()=>[...n[10]||(n[10]=[l("Disabled",-1)])]),_:1}))]),_:1})]),_:1}),a(e(i),{direction:"horizontal",justify:"space-between",align:"center"},{default:t(()=>[a(e(u),{tone:"muted"},{default:t(()=>[...n[11]||(n[11]=[l("Auto-package",-1)])]),_:1}),a(e(v),{tone:z.value?"info":"neutral",variant:"soft"},{default:t(()=>[l(d(z.value?"on":"off"),1)]),_:1},8,["tone"])]),_:1}),a(e(i),{direction:"horizontal",justify:"space-between",align:"center"},{default:t(()=>[a(e(u),{tone:"muted"},{default:t(()=>[...n[12]||(n[12]=[l("Persistence",-1)])]),_:1}),a(e(v),{tone:x.value?"info":"neutral",variant:"soft"},{default:t(()=>[l(d(x.value?"on":"off"),1)]),_:1},8,["tone"])]),_:1})]),_:1})]),_:1}),a(e(_),{variant:"outline"},{header:t(()=>[a(e(u),{weight:"semibold"},{default:t(()=>[...n[13]||(n[13]=[l("LESC configuration",-1)])]),_:1})]),default:t(()=>[a(e(i),{direction:"vertical",gap:"0.75rem"},{default:t(()=>{var o;return[a(e(i),{direction:"horizontal",justify:"space-between",align:"center"},{default:t(()=>[a(e(u),{tone:"muted"},{default:t(()=>[...n[14]||(n[14]=[l("Default region",-1)])]),_:1}),a(e(u),{family:"mono"},{default:t(()=>{var s;return[l(d(((s=f.value)==null?void 0:s.region)||"—"),1)]}),_:1})]),_:1}),a(e(i),{direction:"horizontal",justify:"space-between",align:"center"},{default:t(()=>[a(e(u),{tone:"muted"},{default:t(()=>[...n[15]||(n[15]=[l("Server port",-1)])]),_:1}),a(e(u),{family:"mono"},{default:t(()=>{var s;return[l(d(((s=f.value)==null?void 0:s.serverPort)||"—"),1)]}),_:1})]),_:1}),a(e(i),{direction:"horizontal",justify:"space-between",align:"start",wrap:""},{default:t(()=>[a(e(u),{tone:"muted"},{default:t(()=>[...n[16]||(n[16]=[l("LocalStack services",-1)])]),_:1}),a(e(i),{direction:"horizontal",gap:"0.25rem",wrap:"",justify:"flex-end"},{default:t(()=>{var s,j;return[(c(!0),D(R,null,I(((s=f.value)==null?void 0:s.services)||[],h=>(c(),g(e(T),{key:h,size:"sm",variant:"soft"},{default:t(()=>[l(d(h),1)]),_:2},1024))),128)),(((j=f.value)==null?void 0:j.services)||[]).length?A("",!0):(c(),g(e(u),{key:0,tone:"muted"},{default:t(()=>[...n[17]||(n[17]=[l("—",-1)])]),_:1}))]}),_:1})]),_:1}),a(e(i),{direction:"horizontal",justify:"space-between",align:"center"},{default:t(()=>[a(e(u),{tone:"muted"},{default:t(()=>[...n[18]||(n[18]=[l("Seeds dir",-1)])]),_:1}),a(e(u),{family:"mono",size:"xs"},{default:t(()=>{var s;return[l(d(((s=f.value)==null?void 0:s.seedsDir)||"—"),1)]}),_:1})]),_:1}),(o=f.value)!=null&&o.configPath?(c(),g(e(i),{key:0,direction:"horizontal",justify:"space-between",align:"center"},{default:t(()=>[a(e(u),{tone:"muted"},{default:t(()=>[...n[19]||(n[19]=[l("Config file",-1)])]),_:1}),a(e(u),{family:"mono",size:"xs"},{default:t(()=>[l(d(f.value.configPath),1)]),_:1})]),_:1})):A("",!0)]}),_:1})]),_:1})]),_:1}),a(e(O),{columns:5,gap:"1rem"},{default:t(()=>{var o;return[a(e(y),{label:"Services running",value:`${V.value} / ${F.value}`,tone:"success"},null,8,["value"]),a(e(y),{label:"Lambdas online",value:`${Q.value} / ${M.value}`,tone:"success"},null,8,["value"]),a(e(y),{label:"API routes",value:W.value,tone:"info"},null,8,["value"]),a(e(y),{label:"DynamoDB tables",value:w.value.tables.length,tone:"info"},null,8,["value"]),a(e(y),{label:"SQS queues",value:w.value.queues.length,tone:"warning"},null,8,["value"]),a(e(y),{label:"SNS topics",value:w.value.topics.length,tone:"info"},null,8,["value"]),a(e(y),{label:"S3 buckets",value:w.value.buckets.length,tone:"neutral"},null,8,["value"]),a(e(y),{label:"OpenSearch collections",value:((o=w.value.collections)==null?void 0:o.length)??0,tone:"info"},null,8,["value"])]}),_:1}),a(e(_),{variant:"outline"},{header:t(()=>[a(e(i),{direction:"horizontal",justify:"space-between",align:"center"},{default:t(()=>[a(e(u),{weight:"semibold"},{default:t(()=>[...n[20]||(n[20]=[l("What's covered",-1)])]),_:1}),a(e(u),{tone:"muted",size:"xs"},{default:t(()=>[...n[21]||(n[21]=[l(" Resource types LSS understands today ",-1)])]),_:1})]),_:1})]),default:t(()=>[a(e(O),{columns:2,gap:"0.75rem"},{default:t(()=>[(c(),D(R,null,I(U,o=>a(e(_),{key:o.type,variant:"soft"},{default:t(()=>[a(e(i),{direction:"horizontal",gap:"0.75rem",align:"center",justify:"space-between"},{default:t(()=>[a(e(i),{direction:"vertical",gap:"0.125rem"},{default:t(()=>[a(e(i),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[a(e(B),{name:o.status==="covered"?"check":"clock"},null,8,["name"]),a(e(u),{weight:"semibold"},{default:t(()=>[l(d(o.type),1)]),_:2},1024),a(e(v),{tone:o.status==="covered"?"success":"neutral",variant:"soft"},{default:t(()=>[l(d(o.status==="covered"?"Supported":"Planned"),1)]),_:2},1032,["tone"])]),_:2},1024),a(e(u),{tone:"muted",size:"sm"},{default:t(()=>[l(d(o.description),1)]),_:2},1024)]),_:2},1024),o.to?(c(),g(e(ee),{key:0,to:o.to,style:{"text-decoration":"none"}},{default:t(()=>[a(e(te),{size:"sm",variant:"ghost"},{default:t(()=>[n[22]||(n[22]=l("Open ",-1)),a(e(B),{name:"arrow-right"})]),_:1})]),_:1},8,["to"])):A("",!0)]),_:2},1024)]),_:2},1024)),64))]),_:1})]),_:1})],64))]),_:1}))}}),ue=ae(ne,[["__scopeId","data-v-f0e3b8bf"]]);export{ue as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{k as ae,m as r,e as v,W as e,t as d,$ as t,j as a,u as P,H as q,N as ze,I as A,f as c,q as g,i as s,A as k,g as h,F as D,n as J,O as $e,V as m,s as C,J as te,v as le,B as ne,C as Ve,d as W,a2 as Ie,p as se,x as qe,G as he,r as y,b as Y,a as Q,c as ue,l as xe,o as Ce,_ as Ne,z as K,y as Se,K as Me,L as Z,M as ee,w as X,Q as Ae,P as De,X as Pe,Y as ie}from"./index-CGpxa55R.js";const je=["onClick"],Ue={key:0,style:{padding:"0.75rem 1rem","border-top":"1px solid var(--tree-color-border, #e5e7eb)"}},Fe={key:0},Oe={class:"mono",style:{"white-space":"pre-wrap","word-break":"break-word","font-size":"0.78rem",background:"var(--tree-color-surface-muted, #f6f7f9)",padding:"0.5rem","border-radius":"6px","max-height":"280px",overflow:"auto"}},Te=ae({__name:"QueueSendReceivePanel",props:{queue:{}},emits:["refresh"],setup(T,{emit:L}){const _=T,j=L,z=ue(),U=y(""),R=y(0),f=y("default"),x=y(""),$=y([]),N=y(!1),S=y(null),M=y(null),B=y(10),V=y(0),E=y(0),b=y([]),F=y(!1),o=y(null),u=y({}),p=y(!1),G=y(!1),H=y({}),re=[{value:"String",label:"String"},{value:"Number",label:"Number"},{value:"Binary",label:"Binary"}],O=Y(()=>_.queue.fifo),oe=[{key:"preview",label:"Body preview"},{key:"messageId",label:"Message ID"},{key:"sentAt",label:"Sent at"},{key:"attrs",label:"Attrs",align:"right"},{key:"actions",label:"",align:"right"}],de=Y(()=>b.value.map((i,l)=>{var n;return{__id:l,__raw:i,messageId:i.messageId||"—",preview:me(i.body),sentAt:fe((n=i.attributes)==null?void 0:n.SentTimestamp),attrs:i.messageAttributes?Object.keys(i.messageAttributes).length:0}}));function me(i){if(!i)return"—";const l=i.replace(/\s+/g," ").trim();return l.length>80?`${l.slice(0,80)}…`:l}function fe(i){if(!i)return"—";const l=Number(i);return l?new Date(l).toLocaleString():"—"}function ve(){$.value.push({name:"",type:"String",value:""})}function ge(i){$.value.splice(i,1)}function pe(i){if(!i)return"";const l=i.trim();if(!(l.startsWith("{")||l.startsWith("[")))return i;try{return JSON.stringify(JSON.parse(l),null,2)}catch{return i}}function ye(i){H.value[i]=!H.value[i]}async function be(){if(!U.value.trim()){S.value="Message body is required";return}N.value=!0,S.value=null;try{const i=$.value.filter(n=>n.name.trim()),l=await Q.sendQueueMessage(_.queue.name,{body:U.value,delaySeconds:O.value?void 0:R.value||void 0,messageAttributes:i.length?i:void 0,messageGroupId:O.value?f.value||"default":void 0,messageDeduplicationId:O.value&&x.value?x.value:void 0});M.value={messageId:l.messageId,sequenceNumber:l.sequenceNumber},z.add({title:"Message sent",description:l.messageId,variant:"success"}),j("refresh")}catch(i){S.value=i.message||"Failed to send message"}finally{N.value=!1}}async function ce(){F.value=!0,o.value=null;try{const i=await Q.receiveQueueMessages(_.queue.name,{maxNumberOfMessages:B.value,visibilityTimeout:E.value,waitTimeSeconds:V.value});b.value=i.messages,i.messages.length||z.add({title:"No messages available",description:"The queue returned an empty batch.",variant:"info"}),j("refresh")}catch(i){o.value=i.message||"Failed to poll messages"}finally{F.value=!1}}async function we(i){if(!(!i.receiptHandle||!i.messageId)){u.value[i.messageId]=!0;try{await Q.deleteQueueMessage(_.queue.name,i.receiptHandle),b.value=b.value.filter(l=>l.messageId!==i.messageId),z.add({title:"Message deleted",variant:"success"}),j("refresh")}catch(l){z.add({title:"Failed to delete message",description:l.message,variant:"danger"})}finally{delete u.value[i.messageId]}}}async function ke(){G.value=!0;try{await Q.purgeQueue(_.queue.name),b.value=[],z.add({title:"Queue purged",description:"All messages were removed. It can take up to 60s to fully clear.",variant:"warning"}),j("refresh")}catch(i){z.add({title:"Failed to purge queue",description:i.message,variant:"danger"})}finally{G.value=!1,p.value=!1}}function _e(i){var l;(l=navigator.clipboard)==null||l.writeText(i).then(()=>{z.add({title:"Copied to clipboard",variant:"info"})})}return(i,l)=>(r(),v(e(d),{direction:"vertical",gap:"1rem"},{default:t(()=>[a(e(P),{variant:"outline"},{header:t(()=>[a(e(d),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[a(e(g),{weight:"semibold"},{default:t(()=>[...l[13]||(l[13]=[s("Send a message",-1)])]),_:1}),O.value?(r(),v(e(C),{key:0,tone:"info",variant:"soft"},{default:t(()=>[...l[14]||(l[14]=[s("FIFO",-1)])]),_:1})):c("",!0)]),_:1})]),footer:t(()=>[a(e(d),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[a(e(d),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[a(e(k),{variant:"solid",loading:N.value,onClick:be},{default:t(()=>[...l[18]||(l[18]=[s("Send message",-1)])]),_:1},8,["loading"]),a(e(k),{variant:"ghost",disabled:N.value,onClick:l[4]||(l[4]=n=>U.value="")},{default:t(()=>[...l[19]||(l[19]=[s("Clear",-1)])]),_:1},8,["disabled"])]),_:1}),M.value?(r(),v(e(g),{key:0,tone:"muted",family:"mono",size:"xs"},{default:t(()=>[s(" Last sent: "+m(M.value.messageId)+" ",1),M.value.sequenceNumber?(r(),h(D,{key:0},[s(" · seq "+m(M.value.sequenceNumber),1)],64)):c("",!0)]),_:1})):c("",!0)]),_:1})]),default:t(()=>[a(e(d),{direction:"vertical",gap:"0.75rem"},{default:t(()=>[a(e(q),{label:"Message body",hint:"Plain text or JSON"},{default:t(()=>[a(e(ze),{modelValue:U.value,"onUpdate:modelValue":l[0]||(l[0]=n=>U.value=n),rows:6,placeholder:'{"event": "order.created", "orderId": "abc-123"}'},null,8,["modelValue"])]),_:1}),a(e(d),{direction:"horizontal",gap:"1rem"},{default:t(()=>[O.value?c("",!0):(r(),v(e(q),{key:0,label:"Delay (seconds)",hint:"0–900",style:{flex:"1"}},{default:t(()=>[a(e(A),{modelValue:R.value,"onUpdate:modelValue":l[1]||(l[1]=n=>R.value=n),modelModifiers:{number:!0},type:"number",min:"0",max:"900"},null,8,["modelValue"])]),_:1})),O.value?(r(),v(e(q),{key:1,label:"MessageGroupId",hint:"Required for FIFO. Defaults to 'default'.",style:{flex:"1"}},{default:t(()=>[a(e(A),{modelValue:f.value,"onUpdate:modelValue":l[2]||(l[2]=n=>f.value=n),placeholder:"default"},null,8,["modelValue"])]),_:1})):c("",!0),O.value?(r(),v(e(q),{key:2,label:"MessageDeduplicationId",hint:"Optional if content-based dedup is on",style:{flex:"1"}},{default:t(()=>[a(e(A),{modelValue:x.value,"onUpdate:modelValue":l[3]||(l[3]=n=>x.value=n),placeholder:"auto"},null,8,["modelValue"])]),_:1})):c("",!0)]),_:1}),a(e(d),{direction:"vertical",gap:"0.5rem"},{default:t(()=>[a(e(d),{direction:"horizontal",justify:"space-between",align:"center"},{default:t(()=>[a(e(g),{weight:"semibold",size:"sm"},{default:t(()=>[...l[15]||(l[15]=[s("Message attributes – optional",-1)])]),_:1}),a(e(k),{size:"sm",variant:"outline",onClick:ve},{default:t(()=>[...l[16]||(l[16]=[s("Add attribute",-1)])]),_:1})]),_:1}),(r(!0),h(D,null,J($.value,(n,I)=>(r(),v(e(d),{key:`a-${I}`,direction:"horizontal",gap:"0.5rem",align:"end"},{default:t(()=>[a(e(q),{label:"Name",style:{flex:"1.4"}},{default:t(()=>[a(e(A),{modelValue:n.name,"onUpdate:modelValue":w=>n.name=w,placeholder:"contentType"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),a(e(q),{label:"Type",style:{flex:"0.9"}},{default:t(()=>[a(e($e),{modelValue:n.type,"onUpdate:modelValue":w=>n.type=w,options:re},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),a(e(q),{label:"Value",style:{flex:"2"}},{default:t(()=>[a(e(A),{modelValue:n.value,"onUpdate:modelValue":w=>n.value=w,placeholder:"application/json"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),a(e(k),{size:"sm",variant:"outline",onClick:w=>ge(I)},{default:t(()=>[...l[17]||(l[17]=[s("Remove",-1)])]),_:1},8,["onClick"])]),_:2},1024))),128))]),_:1})]),_:1})]),_:1}),S.value?(r(),v(e(te),{key:0,variant:"danger",dismissible:"",onDismiss:l[5]||(l[5]=n=>S.value=null)},{default:t(()=>[s(m(S.value),1)]),_:1})):c("",!0),a(e(P),{variant:"outline"},{header:t(()=>[a(e(d),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[a(e(g),{weight:"semibold"},{default:t(()=>[...l[20]||(l[20]=[s("Poll for messages",-1)])]),_:1}),a(e(C),{tone:"warning",variant:"soft"},{default:t(()=>[...l[21]||(l[21]=[s(" Messages become invisible during the visibility timeout ",-1)])]),_:1})]),_:1})]),footer:t(()=>[a(e(d),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[a(e(d),{direction:"horizontal",gap:"0.5rem"},{default:t(()=>[a(e(k),{variant:"solid",loading:F.value,onClick:ce},{default:t(()=>[...l[22]||(l[22]=[s("Poll messages",-1)])]),_:1},8,["loading"]),a(e(k),{variant:"ghost",disabled:!b.value.length,onClick:l[9]||(l[9]=n=>b.value=[])},{default:t(()=>[...l[23]||(l[23]=[s(" Clear results ",-1)])]),_:1},8,["disabled"])]),_:1}),a(e(k),{size:"sm",variant:"outline",tone:"danger",onClick:l[10]||(l[10]=n=>p.value=!0)},{default:t(()=>[...l[24]||(l[24]=[s(" Purge queue ",-1)])]),_:1})]),_:1})]),default:t(()=>[a(e(d),{direction:"horizontal",gap:"1rem"},{default:t(()=>[a(e(q),{label:"Max messages",hint:"1–10",style:{flex:"1"}},{default:t(()=>[a(e(A),{modelValue:B.value,"onUpdate:modelValue":l[6]||(l[6]=n=>B.value=n),modelModifiers:{number:!0},type:"number",min:"1",max:"10"},null,8,["modelValue"])]),_:1}),a(e(q),{label:"Visibility timeout (s)",hint:"0 keeps messages visible",style:{flex:"1"}},{default:t(()=>[a(e(A),{modelValue:E.value,"onUpdate:modelValue":l[7]||(l[7]=n=>E.value=n),modelModifiers:{number:!0},type:"number",min:"0"},null,8,["modelValue"])]),_:1}),a(e(q),{label:"Wait time (s)",hint:"0–20 (long polling)",style:{flex:"1"}},{default:t(()=>[a(e(A),{modelValue:V.value,"onUpdate:modelValue":l[8]||(l[8]=n=>V.value=n),modelModifiers:{number:!0},type:"number",min:"0",max:"20"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),o.value?(r(),v(e(te),{key:1,variant:"danger",dismissible:"",onDismiss:l[11]||(l[11]=n=>o.value=null)},{default:t(()=>[s(m(o.value),1)]),_:1})):c("",!0),a(e(P),{variant:"outline"},{header:t(()=>[a(e(d),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[a(e(g),{weight:"semibold"},{default:t(()=>[s("Received messages ("+m(b.value.length)+")",1)]),_:1}),a(e(g),{tone:"muted",size:"xs"},{default:t(()=>[...l[25]||(l[25]=[s(" Click a row to view the full body ",-1)])]),_:1})]),_:1})]),default:t(()=>[F.value&&!b.value.length?(r(),v(e(d),{key:0,direction:"horizontal",justify:"center",align:"center"},{default:t(()=>[a(e(le),{label:"Polling..."})]),_:1})):b.value.length?(r(),v(e(Ve),{key:2,columns:oe,rows:de.value,"aria-label":"Received messages"},{"cell-preview":t(({row:n})=>[W("a",{href:"#",style:{"text-decoration":"none"},onClick:Ie(I=>ye(String(n.messageId)),["prevent"])},[a(e(g),{family:"mono",size:"sm"},{default:t(()=>[a(e(se),{name:H.value[String(n.messageId)]?"chevron-down":"chevron-right"},null,8,["name"]),s(" "+m(n.preview),1)]),_:2},1024)],8,je)]),"cell-messageId":t(({row:n})=>[a(e(g),{family:"mono",size:"xs"},{default:t(()=>[s(m(n.messageId),1)]),_:2},1024)]),"cell-sentAt":t(({row:n})=>[a(e(g),{tone:"muted",size:"xs"},{default:t(()=>[s(m(n.sentAt),1)]),_:2},1024)]),"cell-attrs":t(({row:n})=>[Number(n.attrs)>0?(r(),v(e(C),{key:0,tone:"info",variant:"soft"},{default:t(()=>[s(m(n.attrs),1)]),_:2},1024)):(r(),v(e(g),{key:1,tone:"muted",size:"xs"},{default:t(()=>[...l[26]||(l[26]=[s("—",-1)])]),_:1}))]),"cell-actions":t(({row:n})=>[a(e(d),{direction:"horizontal",gap:"0.25rem",justify:"flex-end"},{default:t(()=>[a(e(k),{size:"sm",variant:"ghost",onClick:I=>_e(String(n.__raw.body||""))},{default:t(()=>[...l[27]||(l[27]=[s(" Copy ",-1)])]),_:1},8,["onClick"]),a(e(k),{size:"sm",variant:"outline",tone:"danger",loading:u.value[String(n.messageId)],onClick:I=>we(n.__raw)},{default:t(()=>[...l[28]||(l[28]=[s(" Delete ",-1)])]),_:1},8,["loading","onClick"])]),_:2},1024)]),_:1},8,["rows"])):(r(),v(e(ne),{key:1,title:"No messages loaded",description:"Use Poll messages to fetch a batch from the queue."})),(r(!0),h(D,null,J(b.value,n=>(r(),h(D,{key:`detail-${n.messageId}`},[n.messageId&&H.value[n.messageId]?(r(),h("div",Ue,[a(e(d),{direction:"vertical",gap:"0.5rem"},{default:t(()=>[a(e(d),{direction:"horizontal",gap:"0.5rem",wrap:""},{default:t(()=>[a(e(C),{tone:"neutral",variant:"soft"},{default:t(()=>[s("id: "+m(n.messageId),1)]),_:2},1024),n.md5OfBody?(r(),v(e(C),{key:0,tone:"neutral",variant:"soft"},{default:t(()=>[s(" md5: "+m(n.md5OfBody.slice(0,12))+"… ",1)]),_:2},1024)):c("",!0),(r(!0),h(D,null,J(n.attributes||{},(I,w)=>(r(),v(e(C),{key:w,tone:"info",variant:"soft"},{default:t(()=>[s(m(w)+": "+m(I),1)]),_:2},1024))),128))]),_:2},1024),n.messageAttributes&&Object.keys(n.messageAttributes).length?(r(),h("div",Fe,[a(e(g),{weight:"semibold",size:"sm"},{default:t(()=>[...l[29]||(l[29]=[s("Message attributes",-1)])]),_:1}),a(e(d),{direction:"horizontal",gap:"0.375rem",wrap:""},{default:t(()=>[(r(!0),h(D,null,J(n.messageAttributes,(I,w)=>(r(),v(e(C),{key:`ma-${w}`,tone:"success",variant:"soft"},{default:t(()=>[s(m(w)+" ("+m(I.type||"String")+"): "+m(I.value),1)]),_:2},1024))),128))]),_:2},1024)])):c("",!0),a(e(qe)),W("pre",Oe,m(pe(n.body)),1)]),_:2},1024)])):c("",!0)],64))),128))]),_:1}),a(e(he),{open:p.value,"onUpdate:open":l[12]||(l[12]=n=>p.value=n),title:"Purge queue",description:`Delete every message in '${_.queue.name}'? AWS rate-limits PurgeQueue to once every 60 seconds.`,"confirm-label":"Purge","cancel-label":"Cancel",tone:"danger",loading:G.value,onConfirm:ke},null,8,["open","description","loading"])]),_:1}))}}),Re={style:{"padding-top":"1rem"}},Be={style:{"padding-top":"1rem"}},Qe={style:{"padding-top":"1rem"}},Le=ae({__name:"QueueDetail",props:{queueName:{}},emits:["back"],setup(T,{emit:L}){const _=T,j=L,z=Pe(),U=ie(),R=ue(),f=y(null),x=y(!0),$=y(null);let N=null;const S=["send-receive","consumers","attributes"],M=Y({get(){const o=String(z.query.tab||"");return S.includes(o)?o:"send-receive"},set(o){U.replace({query:{...z.query,tab:o==="send-receive"?void 0:o}})}}),B=Y(()=>{const o=f.value;if(!o)return 0;const u=o.available+o.inFlight+o.processed;return u?Math.round(o.processed/u*100):0});async function V(o=!0){o&&(x.value=!0);try{f.value=await Q.getQueue(_.queueName),$.value=null}catch(u){$.value=u.message||"Failed to load queue",f.value=null}finally{x.value=!1}}async function E(){if(f.value)try{await Q.resetQueueProcessed(f.value.name),R.add({title:"Processed counter reset",variant:"info"}),await V(!1)}catch(o){R.add({title:"Failed to reset counter",description:o.message,variant:"danger"})}}function b(o){return o===void 0?"—":o<60?`${o}s`:o<3600?`${Math.round(o/60)}m`:o<86400?`${Math.round(o/3600)}h`:`${Math.round(o/86400)}d`}function F(o){return o?new Date(o).toLocaleString():"—"}return xe(()=>{V(),N=window.setInterval(()=>V(!1),4e3)}),Ce(()=>{N&&window.clearInterval(N)}),Ne(()=>_.queueName,()=>V()),(o,u)=>(r(),v(e(d),{direction:"vertical",gap:"1rem"},{default:t(()=>[a(e(d),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[a(e(d),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>{var p;return[a(e(k),{size:"sm",variant:"ghost",onClick:u[0]||(u[0]=G=>j("back"))},{default:t(()=>[a(e(se),{name:"arrow-left"}),u[5]||(u[5]=s(" Queues",-1))]),_:1}),a(e(g),{weight:"semibold",size:"lg"},{default:t(()=>[s(m(T.queueName),1)]),_:1}),(p=f.value)!=null&&p.fifo?(r(),v(e(C),{key:0,tone:"info",variant:"soft"},{default:t(()=>[...u[6]||(u[6]=[s("FIFO",-1)])]),_:1})):c("",!0)]}),_:1}),a(e(k),{size:"sm",variant:"ghost",loading:x.value,onClick:u[1]||(u[1]=p=>V())},{default:t(()=>[...u[7]||(u[7]=[s("Refresh",-1)])]),_:1},8,["loading"])]),_:1}),$.value?(r(),v(e(te),{key:0,variant:"danger",dismissible:"",onDismiss:u[2]||(u[2]=p=>$.value=null)},{default:t(()=>[s(m($.value),1)]),_:1})):c("",!0),x.value&&!f.value?(r(),v(e(d),{key:1,direction:"horizontal",justify:"center",align:"center"},{default:t(()=>[a(e(le),{label:"Loading queue..."})]),_:1})):f.value?(r(),h(D,{key:2},[a(e(Se),{columns:4,gap:"0.75rem"},{default:t(()=>[a(e(K),{label:"Available",value:f.value.available,tone:"warning"},null,8,["value"]),a(e(K),{label:"In flight",value:f.value.inFlight,tone:"info"},null,8,["value"]),a(e(K),{label:"Delayed",value:f.value.delayed,tone:"neutral"},null,8,["value"]),a(e(K),{label:"Processed (session)",value:f.value.processed,tone:"success"},null,8,["value"])]),_:1}),a(e(De),{modelValue:M.value,"onUpdate:modelValue":u[4]||(u[4]=p=>M.value=p)},{default:t(()=>[a(e(Me),null,{default:t(()=>[a(e(Z),{value:"send-receive"},{default:t(()=>[...u[8]||(u[8]=[s("Send & receive",-1)])]),_:1}),a(e(Z),{value:"consumers"},{default:t(()=>[...u[9]||(u[9]=[s("Consumers",-1)])]),_:1}),a(e(Z),{value:"attributes"},{default:t(()=>[...u[10]||(u[10]=[s("Attributes",-1)])]),_:1})]),_:1}),a(e(ee),{value:"send-receive"},{default:t(()=>[W("div",Re,[a(Te,{queue:f.value,onRefresh:u[3]||(u[3]=p=>V(!1))},null,8,["queue"])])]),_:1}),a(e(ee),{value:"consumers"},{default:t(()=>[W("div",Be,[a(e(P),{variant:"outline"},{header:t(()=>[a(e(g),{weight:"semibold"},{default:t(()=>[...u[11]||(u[11]=[s("Lambda event-source mappings",-1)])]),_:1})]),default:t(()=>[f.value.consumers.length?(r(),v(e(d),{key:0,direction:"vertical",gap:"0.5rem"},{default:t(()=>[(r(!0),h(D,null,J(f.value.consumers,p=>(r(),v(e(P),{key:p.uuid||p.functionName,variant:"soft"},{default:t(()=>[a(e(d),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[a(e(d),{direction:"vertical",gap:"0.125rem"},{default:t(()=>[a(e(g),{family:"mono"},{default:t(()=>[s(m(p.functionName),1)]),_:2},1024),a(e(g),{tone:"muted",size:"xs"},{default:t(()=>[s(" UUID: "+m(p.uuid||"—")+" · batch size "+m(p.batchSize??"—"),1)]),_:2},1024)]),_:2},1024),a(e(C),{tone:p.enabled?"success":"neutral",variant:"soft"},{default:t(()=>[s(m(p.state||(p.enabled?"Enabled":"Disabled")),1)]),_:2},1032,["tone"])]),_:2},1024)]),_:2},1024))),128))]),_:1})):(r(),v(e(ne),{key:1,title:"No consumers attached",description:"No Lambda event-source mapping currently points at this queue."}))]),_:1})])]),_:1}),a(e(ee),{value:"attributes"},{default:t(()=>[W("div",Qe,[a(e(d),{direction:"vertical",gap:"1rem"},{default:t(()=>[a(e(P),{variant:"outline"},{header:t(()=>[a(e(g),{weight:"semibold"},{default:t(()=>[...u[12]||(u[12]=[s("Identity",-1)])]),_:1})]),default:t(()=>[a(e(d),{direction:"vertical",gap:"0.5rem"},{default:t(()=>[a(e(d),{direction:"horizontal",justify:"space-between",wrap:"",gap:"0.5rem"},{default:t(()=>[a(e(g),{tone:"muted"},{default:t(()=>[...u[13]||(u[13]=[s("Queue URL",-1)])]),_:1}),a(e(g),{family:"mono",size:"sm"},{default:t(()=>[s(m(f.value.url),1)]),_:1})]),_:1}),a(e(d),{direction:"horizontal",justify:"space-between",wrap:"",gap:"0.5rem"},{default:t(()=>[a(e(g),{tone:"muted"},{default:t(()=>[...u[14]||(u[14]=[s("ARN",-1)])]),_:1}),a(e(g),{family:"mono",size:"sm"},{default:t(()=>[s(m(f.value.arn||"—"),1)]),_:1})]),_:1})]),_:1})]),_:1}),a(e(P),{variant:"outline"},{header:t(()=>[a(e(g),{weight:"semibold"},{default:t(()=>[...u[15]||(u[15]=[s("Configuration",-1)])]),_:1})]),footer:t(()=>[a(e(g),{tone:"muted",size:"xs"},{default:t(()=>[s(" Created "+m(F(f.value.createdAt))+" · last polled "+m(F(f.value.lastPolledAt)),1)]),_:1})]),default:t(()=>[a(e(d),{direction:"horizontal",gap:"0.5rem",wrap:""},{default:t(()=>[a(e(X),{size:"sm",variant:"soft"},{default:t(()=>[s(" FIFO: "+m(f.value.fifo?"yes":"no"),1)]),_:1}),a(e(X),{size:"sm",variant:"soft"},{default:t(()=>[s(" Visibility timeout: "+m(b(f.value.visibilityTimeout)),1)]),_:1}),a(e(X),{size:"sm",variant:"soft"},{default:t(()=>[s(" Retention: "+m(b(f.value.messageRetentionPeriod)),1)]),_:1}),a(e(X),{size:"sm",variant:"soft"},{default:t(()=>[s(" Delayed: "+m(f.value.delayed),1)]),_:1})]),_:1})]),_:1}),a(e(P),{variant:"outline"},{header:t(()=>[a(e(g),{weight:"semibold"},{default:t(()=>[...u[16]||(u[16]=[s("Throughput",-1)])]),_:1})]),footer:t(()=>[a(e(d),{direction:"horizontal",justify:"flex-end"},{default:t(()=>[a(e(k),{size:"sm",variant:"ghost",onClick:E},{default:t(()=>[...u[18]||(u[18]=[s(" Reset processed counter ",-1)])]),_:1})]),_:1})]),default:t(()=>[a(e(d),{direction:"vertical",gap:"0.5rem"},{default:t(()=>[a(e(d),{direction:"horizontal",justify:"space-between",align:"center"},{default:t(()=>[a(e(g),{tone:"muted"},{default:t(()=>[...u[17]||(u[17]=[s("Processed share (this session)",-1)])]),_:1}),a(e(g),{family:"mono"},{default:t(()=>[s(m(B.value)+"%",1)]),_:1})]),_:1}),a(e(Ae),{value:B.value},null,8,["value"])]),_:1})]),_:1})]),_:1})])]),_:1})]),_:1},8,["modelValue"])],64)):c("",!0)]),_:1}))}}),Je=ae({__name:"QueueDetailPage",props:{queueName:{}},setup(T){const L=ie();function _(){L.push("/queues")}return(j,z)=>(r(),v(Le,{"queue-name":T.queueName,onBack:_},null,8,["queue-name"]))}});export{Je as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{k as Q,Y as B,l as L,o as P,m as u,e as o,W as a,t as f,$ as e,j as s,y as V,z as p,J as j,i,V as r,f as D,u as U,v as A,B as T,C as O,s as g,A as E,g as J,F as M,n as W,w as F,R as Y,q as y,D as G,r as _,b as w,a as C}from"./index-CGpxa55R.js";const H=Q({__name:"QueuesView",setup(z){const h=B(),c=_([]),$=_({}),v=_(!0),m=_(null);let k=null;const N=[{key:"name",label:"Queue"},{key:"service",label:"Service"},{key:"available",label:"Available",align:"right"},{key:"inFlight",label:"In flight",align:"right"},{key:"processed",label:"Processed",align:"right"},{key:"consumers",label:"Consumers"},{key:"actions",label:"",align:"right"}],x=w(()=>c.value.map(l=>({...l,consumersCount:l.consumers.length,service:$.value[l.name]||""}))),b=w(()=>({queues:c.value.length,available:c.value.reduce((l,n)=>l+n.available,0),inFlight:c.value.reduce((l,n)=>l+n.inFlight,0),processed:c.value.reduce((l,n)=>l+n.processed,0)}));async function S(){try{const[l,n]=await Promise.all([C.listQueues(),C.listResourceOwners().catch(()=>({tables:[],queues:[],topics:[],buckets:[]}))]);c.value=l;const t={};for(const d of n.queues)t[d.name]=d.service;$.value=t,m.value=null}catch(l){m.value=l.message||"Failed to load queues"}finally{v.value=!1}}function I(l){h.push(`/queues/${encodeURIComponent(l)}`)}function R(l){return l.available>0?"warning":l.inFlight>0?"info":l.consumers.some(n=>n.enabled)?"success":"neutral"}function q(l){return l.available>0?"Backlog":l.inFlight>0?"Processing":l.consumers.length?"Idle":"No consumers"}return L(()=>{S(),k=window.setInterval(S,4e3)}),P(()=>{k&&window.clearInterval(k)}),(l,n)=>(u(),o(a(f),{direction:"vertical",gap:"1.25rem"},{default:e(()=>[s(a(V),{columns:4,gap:"1rem"},{default:e(()=>[s(a(p),{label:"Queues",value:b.value.queues,tone:"info",loading:v.value},null,8,["value","loading"]),s(a(p),{label:"Available messages",value:b.value.available,tone:"warning",loading:v.value},null,8,["value","loading"]),s(a(p),{label:"In flight",value:b.value.inFlight,tone:"info",loading:v.value},null,8,["value","loading"]),s(a(p),{label:"Processed",value:b.value.processed,tone:"success",loading:v.value},null,8,["value","loading"])]),_:1}),m.value?(u(),o(a(j),{key:0,variant:"danger",dismissible:"",onDismiss:n[0]||(n[0]=t=>m.value=null)},{default:e(()=>[i(r(m.value),1)]),_:1})):D("",!0),s(a(U),{variant:"outline"},{header:e(()=>[s(a(f),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:e(()=>[s(a(y),{weight:"semibold"},{default:e(()=>[...n[1]||(n[1]=[i("SQS Queues",-1)])]),_:1}),s(a(y),{tone:"muted"},{default:e(()=>[...n[2]||(n[2]=[i("Live · refreshes every 4s",-1)])]),_:1})]),_:1})]),default:e(()=>[v.value?(u(),o(a(f),{key:0,direction:"horizontal",justify:"center",align:"center"},{default:e(()=>[s(a(A),{label:"Loading queues..."})]),_:1})):c.value.length?(u(),o(a(O),{key:2,columns:N,rows:x.value,"aria-label":"SQS queues"},{"cell-name":e(({row:t})=>[s(a(f),{direction:"vertical",gap:"0.125rem"},{default:e(()=>[s(a(G),{to:`/queues/${encodeURIComponent(String(t.name))}`,style:{"font-weight":"600"}},{default:e(()=>[i(r(t.name),1)]),_:2},1032,["to"]),s(a(y),{tone:"muted",family:"mono",size:"xs"},{default:e(()=>[i(r(String(t.arn||t.url||"")),1)]),_:2},1024)]),_:2},1024)]),"cell-service":e(({row:t})=>[t.service?(u(),o(a(Y),{key:0,to:`/services/${encodeURIComponent(String(t.service))}`,style:{"text-decoration":"none"}},{default:e(()=>[s(a(F),{size:"sm",variant:"soft",clickable:""},{default:e(()=>[i(r(t.service),1)]),_:2},1024)]),_:2},1032,["to"])):(u(),o(a(y),{key:1,tone:"muted",size:"xs"},{default:e(()=>[...n[3]||(n[3]=[i("unmanaged",-1)])]),_:1}))]),"cell-available":e(({row:t})=>[s(a(g),{tone:Number(t.available)>0?"warning":"neutral",variant:"soft"},{default:e(()=>[i(r(t.available),1)]),_:2},1032,["tone"])]),"cell-inFlight":e(({row:t})=>[s(a(g),{tone:Number(t.inFlight)>0?"info":"neutral",variant:"soft"},{default:e(()=>[i(r(t.inFlight),1)]),_:2},1032,["tone"])]),"cell-processed":e(({row:t})=>[s(a(g),{tone:"success",variant:"soft"},{default:e(()=>[i(r(t.processed),1)]),_:2},1024)]),"cell-consumers":e(({row:t})=>[s(a(f),{direction:"horizontal",gap:"0.25rem",wrap:""},{default:e(()=>[t.consumers.length?(u(!0),J(M,{key:0},W(t.consumers,d=>(u(),o(a(F),{key:d.uuid||d.functionName,size:"sm",variant:d.enabled?"solid":"outline"},{default:e(()=>[i(r(d.functionName),1)]),_:2},1032,["variant"]))),128)):(u(),o(a(g),{key:1,tone:"neutral",variant:"soft"},{default:e(()=>[...n[4]||(n[4]=[i("No consumers",-1)])]),_:1}))]),_:2},1024)]),"cell-actions":e(({row:t})=>[s(a(f),{direction:"horizontal",gap:"0.375rem",justify:"flex-end"},{default:e(()=>[s(a(g),{tone:R(t),variant:"solid"},{default:e(()=>[i(r(q(t)),1)]),_:2},1032,["tone"]),s(a(E),{size:"sm",variant:"ghost",onClick:d=>I(String(t.name))},{default:e(()=>[...n[5]||(n[5]=[i(" Open ",-1)])]),_:1},8,["onClick"])]),_:2},1024)]),_:1},8,["rows"])):(u(),o(a(T),{key:1,title:"No queues found",description:"Register a microservice that defines SQS resources or create queues directly in LocalStack."}))]),_:1})]),_:1}))}}),X=Q({__name:"QueuesPage",setup(z){return(h,c)=>(u(),o(H))}});export{X as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{k as q,l as H,o as Q,m as i,e as u,W as e,t as d,$ as t,j as s,y as X,z as j,J as Y,i as r,V as o,f as m,u as Z,v as F,B as U,C as A,A as V,q as f,w as E,s as T,I as ee,E as te,g as D,d as W,F as ae,n as le,r as c,b as w,a as L,c as ne}from"./index-CGpxa55R.js";import{_ as se}from"./_plugin-vue_export-helper-DlAUqK2U.js";const re={key:0},ie={key:0,class:"secret-value"},oe=q({__name:"SecretsList",setup(M){const p=ne(),y=c([]),b=c(!0),_=c(null),h=c("");let C=null;const S=c(!1),k=c(null),v=c(null),$=c(!1),g=c(null),z=c(!1),O=[{key:"name",label:"Secret"},{key:"description",label:"Description"},{key:"versions",label:"Versions",align:"right"},{key:"lastChanged",label:"Last changed"},{key:"actions",label:"",align:"right"}],x=w(()=>y.value.map(n=>({...n,versions:n.versionCount,lastChanged:n.lastChangedDate?new Date(n.lastChangedDate).toLocaleString():"—",scheduledDeletion:!!n.deletedDate})).sort((n,a)=>n.name.localeCompare(a.name))),B=w(()=>{const n=h.value.trim().toLowerCase();return n?x.value.filter(a=>a.name.toLowerCase().includes(n)||(a.description||"").toLowerCase().includes(n)):x.value}),N=w(()=>({secrets:y.value.length,versions:y.value.reduce((n,a)=>n+a.versionCount,0)})),J=w(()=>{var n;return Object.entries(((n=v.value)==null?void 0:n.versionStages)??{}).map(([a,l])=>({versionId:a,stages:l.join(", "),current:l.includes("AWSCURRENT")}))});async function I(){try{const n=await L.listSecrets();y.value=n.secrets,_.value=null}catch(n){_.value=n.message||"Failed to load secrets"}finally{b.value=!1}}async function R(n){k.value=n,S.value=!0,v.value=null,g.value=null,$.value=!0;try{v.value=await L.describeSecret(n)}catch(a){p.add({title:"Failed to load secret",description:a.message,variant:"danger"})}finally{$.value=!1}}async function K(){if(k.value){z.value=!0;try{g.value=await L.getSecretValue(k.value)}catch(n){p.add({title:"Failed to reveal value",description:n.message,variant:"danger"})}finally{z.value=!1}}}async function P(){var a,l;const n=((a=g.value)==null?void 0:a.secretString)??((l=g.value)==null?void 0:l.secretBinary);if(n)try{await navigator.clipboard.writeText(n),p.add({title:"Copied to clipboard",variant:"success"})}catch{p.add({title:"Copy failed",variant:"danger"})}}return H(()=>{I(),C=window.setInterval(I,15e3)}),Q(()=>{C&&window.clearInterval(C)}),(n,a)=>(i(),u(e(d),{direction:"vertical",gap:"1.25rem"},{default:t(()=>[s(e(X),{columns:2,gap:"1rem"},{default:t(()=>[s(e(j),{label:"Secrets",value:N.value.secrets,tone:"info",loading:b.value},null,8,["value","loading"]),s(e(j),{label:"Versions",value:N.value.versions,tone:"success",loading:b.value},null,8,["value","loading"])]),_:1}),_.value?(i(),u(e(Y),{key:0,variant:"danger",dismissible:"",onDismiss:a[0]||(a[0]=l=>_.value=null)},{default:t(()=>[r(o(_.value),1)]),_:1})):m("",!0),s(e(Z),{variant:"outline"},{header:t(()=>[s(e(d),{direction:"horizontal",justify:"space-between",align:"center",gap:"1rem"},{default:t(()=>[s(e(f),{weight:"semibold"},{default:t(()=>[...a[3]||(a[3]=[r("Secrets Manager",-1)])]),_:1}),s(e(d),{direction:"horizontal",align:"center",gap:"1rem"},{default:t(()=>[s(e(ee),{modelValue:h.value,"onUpdate:modelValue":a[1]||(a[1]=l=>h.value=l),placeholder:"Filter secrets...",style:{"min-width":"16rem"}},null,8,["modelValue"]),s(e(f),{tone:"muted",size:"xs"},{default:t(()=>[...a[4]||(a[4]=[r("Refreshes every 15s",-1)])]),_:1})]),_:1})]),_:1})]),default:t(()=>[b.value?(i(),u(e(d),{key:0,direction:"horizontal",justify:"center",align:"center"},{default:t(()=>[s(e(F),{label:"Loading secrets..."})]),_:1})):x.value.length?B.value.length?(i(),u(e(A),{key:3,columns:O,rows:B.value,"aria-label":"Secrets"},{"cell-name":t(({row:l})=>[s(e(d),{direction:"horizontal",align:"center",gap:"0.5rem"},{default:t(()=>[s(e(f),{weight:"semibold",style:{cursor:"pointer","text-decoration":"underline","text-decoration-style":"dotted","text-underline-offset":"3px"},onClick:G=>R(String(l.name))},{default:t(()=>[r(o(l.name),1)]),_:2},1032,["onClick"]),l.scheduledDeletion?(i(),u(e(T),{key:0,tone:"warning",variant:"soft"},{default:t(()=>[...a[5]||(a[5]=[r("deletion scheduled",-1)])]),_:1})):m("",!0)]),_:2},1024)]),"cell-description":t(({row:l})=>[s(e(f),{tone:"muted",size:"sm"},{default:t(()=>[r(o(l.description||"—"),1)]),_:2},1024)]),"cell-versions":t(({row:l})=>[s(e(E),{size:"sm",variant:"soft"},{default:t(()=>[r(o(l.versions),1)]),_:2},1024)]),"cell-lastChanged":t(({row:l})=>[s(e(f),{tone:"muted",family:"mono",size:"xs"},{default:t(()=>[r(o(l.lastChanged),1)]),_:2},1024)]),"cell-actions":t(({row:l})=>[s(e(V),{size:"sm",variant:"soft",onClick:G=>R(String(l.name))},{default:t(()=>[...a[6]||(a[6]=[r("Inspect",-1)])]),_:1},8,["onClick"])]),_:1},8,["rows"])):(i(),u(e(U),{key:2,title:"No matching secrets",description:`No secrets match "${h.value}".`},null,8,["description"])):(i(),u(e(U),{key:1,title:"No secrets",description:"Create one with the AWS SDK (CreateSecret) against the engine endpoint — e.g. a signing key an identity service reads at boot."}))]),_:1}),s(e(te),{open:S.value,"onUpdate:open":a[2]||(a[2]=l=>S.value=l),title:k.value?`Secret — ${k.value}`:"Secret",size:"lg"},{default:t(()=>[$.value?(i(),u(e(d),{key:0,direction:"horizontal",justify:"center",align:"center"},{default:t(()=>[s(e(F),{label:"Loading secret..."})]),_:1})):v.value?(i(),u(e(d),{key:1,direction:"vertical",gap:"1rem"},{default:t(()=>[s(e(d),{direction:"vertical",gap:"0.35rem"},{default:t(()=>[s(e(f),{tone:"muted",family:"mono",size:"xs",style:{"word-break":"break-all"}},{default:t(()=>[r(o(v.value.arn),1)]),_:1}),v.value.description?(i(),D("span",re,o(v.value.description),1)):m("",!0)]),_:1}),W("div",null,[s(e(f),{weight:"semibold",size:"sm"},{default:t(()=>[...a[7]||(a[7]=[r("Versions & staging labels",-1)])]),_:1}),s(e(A),{columns:[{key:"versionId",label:"Version"},{key:"stages",label:"Staging labels"}],rows:J.value,"aria-label":"Secret versions and staging labels"},{"cell-versionId":t(({row:l})=>[s(e(f),{family:"mono",size:"xs"},{default:t(()=>[r(o(l.versionId),1)]),_:2},1024)]),"cell-stages":t(({row:l})=>[s(e(T),{tone:l.current?"success":"neutral",variant:"soft"},{default:t(()=>[r(o(l.stages),1)]),_:2},1032,["tone"])]),_:1},8,["rows"])]),v.value.tags.length?(i(),u(e(d),{key:0,direction:"horizontal",gap:"0.5rem",wrap:""},{default:t(()=>[(i(!0),D(ae,null,le(v.value.tags,l=>(i(),u(e(E),{key:l.key,size:"sm",variant:"soft"},{default:t(()=>[r(o(l.key)+"="+o(l.value),1)]),_:2},1024))),128))]),_:1})):m("",!0),W("div",null,[s(e(d),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[s(e(V),{size:"sm",variant:"solid",loading:z.value,onClick:K},{default:t(()=>[r(o(g.value?"Refresh value":"Reveal current value"),1)]),_:1},8,["loading"]),g.value?(i(),u(e(V),{key:0,size:"sm",variant:"ghost",onClick:P},{default:t(()=>[...a[8]||(a[8]=[r("Copy",-1)])]),_:1})):m("",!0)]),_:1}),g.value?(i(),D("pre",ie,o(g.value.secretString??`(binary, base64) ${g.value.secretBinary}`),1)):m("",!0)])]),_:1})):m("",!0)]),_:1},8,["open","title"])]),_:1}))}}),ue=se(oe,[["__scopeId","data-v-1bcb0715"]]),ve=q({__name:"SecretsPage",setup(M){return(p,y)=>(i(),u(ue))}});export{ve as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.secret-value[data-v-1bcb0715]{margin-top:.6rem;padding:.6rem .75rem;border-radius:6px;background:var(--tree-color-surface-sunken, rgba(127, 127, 127, .1));font-family:var(--tree-font-mono, monospace);font-size:.8rem;white-space:pre-wrap;word-break:break-all}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{k as ue,l as se,o as de,_ as ve,e as v,$ as t,W as e,t as r,a as I,r as z,m as i,j as a,R as V,A as D,p as M,i as l,q as m,V as s,s as p,f as g,J as fe,v as me,g as y,z as q,y as ce,d as X,u as Z,B as ge,F as b,n as _,w as k,E as pe,G as ye,b as be,c as we,Y as ze}from"./index-CGpxa55R.js";const _e={class:"logs-pre"},he=ue({__name:"ServiceDetailPage",props:{serviceName:{}},setup(T){const w=T,ee=ze(),S=we(),c=z(null),x=z(!0),C=z(null),F=z(!1),R=z(!1),U=z(!1),Q=z([]),A=z("stopped");let h=null,P=null;const E=z(!1),o=be(()=>{var n;const f={lambda:[],dynamodb:[],sqs:[],sns:[],s3:[],eventbus:[],"event-rule":[],opensearch:[],"event-source":[]};for(const d of((n=c.value)==null?void 0:n.resources)||[])f[d.type]||(f[d.type]=[]),f[d.type].push(d);return f});async function N(){x.value=!0;try{c.value=await I.getService(w.serviceName),C.value=null}catch(f){C.value=f.message||"Service not found",c.value=null}finally{x.value=!1}}async function te(){if(!F.value){F.value=!0;try{await I.startService(w.serviceName),S.add({title:"Service started",description:w.serviceName,variant:"success"}),await N()}catch(f){S.add({title:"Failed to start",description:f.message,variant:"danger"})}finally{F.value=!1}}}async function ae(){if(!R.value){R.value=!0;try{await I.stopService(w.serviceName),S.add({title:"Service stopped",description:w.serviceName,variant:"info"}),await N()}catch(f){S.add({title:"Failed to stop",description:f.message,variant:"danger"})}finally{R.value=!1}}}async function G(){try{const f=await I.getServiceLogs(w.serviceName);Q.value=f.logs||[],A.value=f.status||"stopped"}catch(f){console.error("Failed to fetch logs:",f)}}function ne(){U.value=!0,G(),h&&window.clearInterval(h),h=window.setInterval(G,2e3)}function le(){U.value=!1,h&&window.clearInterval(h),h=null}async function re(){try{await I.deleteService(w.serviceName),S.add({title:"Service deleted",description:w.serviceName,variant:"info"}),ee.push("/services")}catch(f){S.add({title:"Failed to delete",description:f.message,variant:"danger"})}finally{E.value=!1}}function ie(f){switch(f){case"running":return"success";case"registered":return"warning";case"stopped":return"neutral";default:return"danger"}}function oe(f){return f?new Date(f).toLocaleString():"—"}return se(()=>{N(),P=window.setInterval(N,1e4)}),de(()=>{P&&window.clearInterval(P),h&&window.clearInterval(h)}),ve(()=>w.serviceName,N),(f,n)=>(i(),v(e(r),{direction:"vertical",gap:"1.25rem"},{default:t(()=>[a(e(r),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[a(e(r),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>{var d;return[a(e(V),{to:"/services",style:{"text-decoration":"none"}},{default:t(()=>[a(e(D),{size:"sm",variant:"ghost"},{default:t(()=>[a(e(M),{name:"arrow-left"}),n[5]||(n[5]=l(" Services",-1))]),_:1})]),_:1}),a(e(m),{weight:"semibold",size:"lg"},{default:t(()=>[l(s(T.serviceName),1)]),_:1}),(d=c.value)!=null&&d.status?(i(),v(e(p),{key:0,tone:ie(c.value.status),variant:"soft"},{default:t(()=>[l(s(c.value.status),1)]),_:1},8,["tone"])):g("",!0)]}),_:1}),a(e(r),{direction:"horizontal",gap:"0.375rem"},{default:t(()=>{var d,$;return[a(e(D),{size:"sm",variant:"soft",disabled:((d=c.value)==null?void 0:d.status)==="running",loading:F.value,onClick:te},{default:t(()=>[...n[6]||(n[6]=[l(" Start ",-1)])]),_:1},8,["disabled","loading"]),a(e(D),{size:"sm",variant:"soft",disabled:(($=c.value)==null?void 0:$.status)!=="running",loading:R.value,onClick:ae},{default:t(()=>[...n[7]||(n[7]=[l(" Stop ",-1)])]),_:1},8,["disabled","loading"]),a(e(D),{size:"sm",variant:"ghost",onClick:ne},{default:t(()=>[...n[8]||(n[8]=[l("Logs",-1)])]),_:1}),a(e(D),{size:"sm",variant:"ghost",loading:x.value,onClick:N},{default:t(()=>[...n[9]||(n[9]=[l("Refresh",-1)])]),_:1},8,["loading"]),a(e(D),{size:"sm",variant:"danger",onClick:n[0]||(n[0]=L=>E.value=!0)},{default:t(()=>[...n[10]||(n[10]=[l("Delete",-1)])]),_:1})]}),_:1})]),_:1}),C.value?(i(),v(e(fe),{key:0,variant:"danger",dismissible:"",onDismiss:n[1]||(n[1]=d=>C.value=null)},{default:t(()=>[l(s(C.value),1)]),_:1})):g("",!0),x.value&&!c.value?(i(),v(e(r),{key:1,direction:"horizontal",justify:"center",align:"center"},{default:t(()=>[a(e(me),{label:"Loading service..."})]),_:1})):c.value?(i(),y(b,{key:2},[a(e(ce),{columns:5,gap:"1rem"},{default:t(()=>{var d,$,L,j,B;return[a(e(q),{label:"Lambdas",value:((d=o.value.lambda)==null?void 0:d.length)||0,tone:"info"},null,8,["value"]),a(e(q),{label:"Tables",value:(($=o.value.dynamodb)==null?void 0:$.length)||0,tone:"info"},null,8,["value"]),a(e(q),{label:"Queues",value:((L=o.value.sqs)==null?void 0:L.length)||0,tone:"warning"},null,8,["value"]),a(e(q),{label:"Topics",value:((j=o.value.sns)==null?void 0:j.length)||0,tone:"info"},null,8,["value"]),a(e(q),{label:"Buckets",value:((B=o.value.s3)==null?void 0:B.length)||0,tone:"neutral"},null,8,["value"])]}),_:1}),a(e(Z),{variant:"outline"},{header:t(()=>[a(e(m),{weight:"semibold"},{default:t(()=>[...n[11]||(n[11]=[l("Metadata",-1)])]),_:1})]),default:t(()=>[a(e(r),{direction:"vertical",gap:"0.5rem"},{default:t(()=>[a(e(r),{direction:"horizontal",justify:"space-between"},{default:t(()=>[a(e(m),{tone:"muted"},{default:t(()=>[...n[12]||(n[12]=[l("Path",-1)])]),_:1}),a(e(m),{family:"mono"},{default:t(()=>[l(s(c.value.root),1)]),_:1})]),_:1}),a(e(r),{direction:"horizontal",justify:"space-between"},{default:t(()=>[a(e(m),{tone:"muted"},{default:t(()=>[...n[13]||(n[13]=[l("Region",-1)])]),_:1}),a(e(m),{family:"mono"},{default:t(()=>[l(s(c.value.region||"—"),1)]),_:1})]),_:1}),a(e(r),{direction:"horizontal",justify:"space-between"},{default:t(()=>[a(e(m),{tone:"muted"},{default:t(()=>[...n[14]||(n[14]=[l("Invoke port",-1)])]),_:1}),a(e(m),{family:"mono"},{default:t(()=>[l(s(c.value.invokePort??"—"),1)]),_:1})]),_:1}),a(e(r),{direction:"horizontal",justify:"space-between"},{default:t(()=>[a(e(m),{tone:"muted"},{default:t(()=>[...n[15]||(n[15]=[l("PID",-1)])]),_:1}),a(e(m),{family:"mono"},{default:t(()=>[l(s(c.value.pid??"—"),1)]),_:1})]),_:1}),a(e(r),{direction:"horizontal",justify:"space-between"},{default:t(()=>[a(e(m),{tone:"muted"},{default:t(()=>[...n[16]||(n[16]=[l("Last updated",-1)])]),_:1}),X("span",null,s(oe(c.value.lastUpdated)),1)]),_:1})]),_:1})]),_:1}),a(e(Z),{variant:"outline"},{header:t(()=>[a(e(r),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[a(e(m),{weight:"semibold"},{default:t(()=>[...n[17]||(n[17]=[l("Declared resources",-1)])]),_:1}),a(e(p),{tone:"neutral",variant:"soft"},{default:t(()=>{var d;return[l(s(((d=c.value.resources)==null?void 0:d.length)||0)+" total ",1)]}),_:1})]),_:1})]),default:t(()=>{var d;return[(d=c.value.resources)!=null&&d.length?(i(),v(e(r),{key:1,direction:"vertical",gap:"1rem"},{default:t(()=>{var $,L,j,B,J,W,Y,H,K;return[($=o.value.dynamodb)!=null&&$.length?(i(),v(e(r),{key:0,direction:"vertical",gap:"0.5rem"},{default:t(()=>[a(e(r),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[a(e(p),{tone:"info",variant:"soft"},{default:t(()=>[...n[18]||(n[18]=[l("DynamoDB tables",-1)])]),_:1}),a(e(m),{tone:"muted"},{default:t(()=>[l(s(o.value.dynamodb.length),1)]),_:1})]),_:1}),a(e(r),{direction:"horizontal",gap:"0.375rem",wrap:""},{default:t(()=>[(i(!0),y(b,null,_(o.value.dynamodb,u=>(i(),v(e(V),{key:`db-${u.name}`,to:`/dynamo/${encodeURIComponent(u.name)}`,style:{"text-decoration":"none"}},{default:t(()=>[a(e(k),{size:"sm",variant:"soft",clickable:""},{default:t(()=>[l(s(u.name),1)]),_:2},1024)]),_:2},1032,["to"]))),128))]),_:1})]),_:1})):g("",!0),(L=o.value.sqs)!=null&&L.length?(i(),v(e(r),{key:1,direction:"vertical",gap:"0.5rem"},{default:t(()=>[a(e(r),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[a(e(p),{tone:"warning",variant:"soft"},{default:t(()=>[...n[19]||(n[19]=[l("SQS queues",-1)])]),_:1}),a(e(m),{tone:"muted"},{default:t(()=>[l(s(o.value.sqs.length),1)]),_:1})]),_:1}),a(e(r),{direction:"horizontal",gap:"0.375rem",wrap:""},{default:t(()=>[(i(!0),y(b,null,_(o.value.sqs,u=>(i(),v(e(V),{key:`q-${u.name}`,to:"/queues",style:{"text-decoration":"none"}},{default:t(()=>[a(e(k),{size:"sm",variant:"soft",clickable:""},{default:t(()=>[l(s(u.name),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})):g("",!0),(j=o.value.sns)!=null&&j.length?(i(),v(e(r),{key:2,direction:"vertical",gap:"0.5rem"},{default:t(()=>[a(e(r),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[a(e(p),{tone:"info",variant:"soft"},{default:t(()=>[...n[20]||(n[20]=[l("SNS topics",-1)])]),_:1}),a(e(m),{tone:"muted"},{default:t(()=>[l(s(o.value.sns.length),1)]),_:1})]),_:1}),a(e(r),{direction:"horizontal",gap:"0.375rem",wrap:""},{default:t(()=>[(i(!0),y(b,null,_(o.value.sns,u=>(i(),v(e(k),{key:`t-${u.name}`,size:"sm",variant:"soft"},{default:t(()=>[l(s(u.name),1)]),_:2},1024))),128))]),_:1})]),_:1})):g("",!0),(B=o.value.s3)!=null&&B.length?(i(),v(e(r),{key:3,direction:"vertical",gap:"0.5rem"},{default:t(()=>[a(e(r),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[a(e(p),{tone:"neutral",variant:"soft"},{default:t(()=>[...n[21]||(n[21]=[l("S3 buckets",-1)])]),_:1}),a(e(m),{tone:"muted"},{default:t(()=>[l(s(o.value.s3.length),1)]),_:1})]),_:1}),a(e(r),{direction:"horizontal",gap:"0.375rem",wrap:""},{default:t(()=>[(i(!0),y(b,null,_(o.value.s3,u=>(i(),v(e(V),{key:`b-${u.name}`,to:`/buckets/${encodeURIComponent(u.name)}`,style:{"text-decoration":"none"}},{default:t(()=>[a(e(k),{size:"sm",variant:"soft",clickable:""},{default:t(()=>[l(s(u.name),1)]),_:2},1024)]),_:2},1032,["to"]))),128))]),_:1})]),_:1})):g("",!0),(J=o.value.lambda)!=null&&J.length?(i(),v(e(r),{key:4,direction:"vertical",gap:"0.5rem"},{default:t(()=>[a(e(r),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[a(e(p),{tone:"neutral",variant:"soft"},{default:t(()=>[...n[22]||(n[22]=[l("Lambda functions",-1)])]),_:1}),a(e(m),{tone:"muted"},{default:t(()=>[l(s(o.value.lambda.length),1)]),_:1})]),_:1}),a(e(r),{direction:"horizontal",gap:"0.375rem",wrap:""},{default:t(()=>[(i(!0),y(b,null,_(o.value.lambda,u=>(i(),v(e(k),{key:`l-${u.name}`,size:"sm",variant:"soft"},{default:t(()=>[a(e(M),{name:"code"}),l(" "+s(u.name),1)]),_:2},1024))),128))]),_:1})]),_:1})):g("",!0),(W=o.value.eventbus)!=null&&W.length?(i(),v(e(r),{key:5,direction:"vertical",gap:"0.5rem"},{default:t(()=>[a(e(r),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[a(e(p),{tone:"info",variant:"soft"},{default:t(()=>[...n[23]||(n[23]=[l("EventBridge buses",-1)])]),_:1}),a(e(m),{tone:"muted"},{default:t(()=>[l(s(o.value.eventbus.length),1)]),_:1})]),_:1}),a(e(r),{direction:"horizontal",gap:"0.375rem",wrap:""},{default:t(()=>[(i(!0),y(b,null,_(o.value.eventbus,u=>(i(),v(e(k),{key:`eb-${u.name}`,size:"sm",variant:"soft"},{default:t(()=>[l(s(u.name),1)]),_:2},1024))),128))]),_:1})]),_:1})):g("",!0),(Y=o.value["event-rule"])!=null&&Y.length?(i(),v(e(r),{key:6,direction:"vertical",gap:"0.5rem"},{default:t(()=>[a(e(r),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[a(e(p),{tone:"info",variant:"soft"},{default:t(()=>[...n[24]||(n[24]=[l("EventBridge rules",-1)])]),_:1}),a(e(m),{tone:"muted"},{default:t(()=>[l(s(o.value["event-rule"].length),1)]),_:1})]),_:1}),a(e(r),{direction:"horizontal",gap:"0.375rem",wrap:""},{default:t(()=>[(i(!0),y(b,null,_(o.value["event-rule"],(u,O)=>(i(),v(e(k),{key:`er-${O}-${u.name}`,size:"sm",variant:"outline"},{default:t(()=>[l(s(u.name),1)]),_:2},1024))),128))]),_:1})]),_:1})):g("",!0),(H=o.value.opensearch)!=null&&H.length?(i(),v(e(r),{key:7,direction:"vertical",gap:"0.5rem"},{default:t(()=>[a(e(r),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[a(e(p),{tone:"info",variant:"soft"},{default:t(()=>[...n[25]||(n[25]=[l("OpenSearch collections",-1)])]),_:1}),a(e(m),{tone:"muted"},{default:t(()=>[l(s(o.value.opensearch.length),1)]),_:1})]),_:1}),a(e(r),{direction:"horizontal",gap:"0.375rem",wrap:""},{default:t(()=>[(i(!0),y(b,null,_(o.value.opensearch,u=>(i(),v(e(k),{key:`os-${u.name}`,size:"sm",variant:"soft"},{default:t(()=>[a(e(M),{name:"search"}),l(" "+s(u.name),1)]),_:2},1024))),128))]),_:1})]),_:1})):g("",!0),(K=o.value["event-source"])!=null&&K.length?(i(),v(e(r),{key:8,direction:"vertical",gap:"0.5rem"},{default:t(()=>[a(e(r),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[a(e(p),{tone:"neutral",variant:"soft"},{default:t(()=>[...n[26]||(n[26]=[l("Event-source mappings",-1)])]),_:1}),a(e(m),{tone:"muted"},{default:t(()=>[l(s(o.value["event-source"].length),1)]),_:1})]),_:1}),a(e(r),{direction:"horizontal",gap:"0.375rem",wrap:""},{default:t(()=>[(i(!0),y(b,null,_(o.value["event-source"],(u,O)=>(i(),v(e(k),{key:`es-${O}-${u.name}`,size:"sm",variant:"outline"},{default:t(()=>[l(s(u.name),1)]),_:2},1024))),128))]),_:1})]),_:1})):g("",!0)]}),_:1})):(i(),v(e(ge),{key:0,title:"No resources declared",description:"This service's CloudFormation template has no resources LSS understands yet."}))]}),_:1})],64)):g("",!0),a(e(pe),{open:U.value,"onUpdate:open":[n[2]||(n[2]=d=>U.value=d),n[3]||(n[3]=d=>{d||le()})],title:`Logs — ${T.serviceName}`,description:`Status: ${A.value}`,size:"lg"},{default:t(()=>[X("pre",_e,s(Q.value.join(`
|
|
2
|
-
`)||"— no output yet —"),1)]),_:1},8,["open","title","description"]),a(e(ye),{open:E.value,"onUpdate:open":n[4]||(n[4]=d=>E.value=d),title:`Delete service “${T.serviceName}”?`,description:"This removes the service from the cache and cleans up its provisioned resources in LocalStack.","confirm-label":"Delete","cancel-label":"Cancel","confirm-variant":"danger",onConfirm:re},null,8,["open","title"])]),_:1}))}});export{he as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{k as E,l as se,o as re,m as i,e as o,W as t,u as ne,$ as s,t as h,j as n,v as le,B as ie,C as oe,A as B,i as l,V as u,w as g,p,f as v,q as D,s as ue,D as de,E as ce,d as ve,G as fe,H as ge,I as pe,a1 as me,r as d,b as O,a as $,c as ke}from"./index-CGpxa55R.js";const ye={class:"logs-pre"},Se=E({__name:"ServicesList",setup(G){const c=ke(),z=d([]),U=d(!0),C=d(!1),m=d(""),S=d(null),x=d([]),V=d("stopped"),f=d(null),k=d({}),y=d({}),b=d(null),L=d(!1);let I=null;const H=[{key:"name",label:"Name"},{key:"status",label:"Status"},{key:"root",label:"Path"},{key:"resourceBreakdown",label:"Resources"},{key:"lastUpdated",label:"Last updated"},{key:"actions",label:"Actions",align:"right"}],W=O(()=>z.value.map(a=>({...a}))),F=O({get:()=>S.value!==null,set:a=>{a||Y()}});async function w(){try{z.value=await $.listServices()}catch(a){console.error("Failed to load services:",a)}finally{U.value=!1}}async function J(a){if(!k.value[a]){k.value={...k.value,[a]:!0};try{await $.startService(a),c.add({title:"Service started",description:a,variant:"success"}),await w()}catch(r){c.add({title:"Failed to start service",description:r.message,variant:"danger"})}finally{k.value={...k.value,[a]:!1}}}}async function Q(a){if(!y.value[a]){y.value={...y.value,[a]:!0};try{await $.stopService(a),c.add({title:"Service stopped",description:a,variant:"info"}),await w()}catch(r){c.add({title:"Failed to stop service",description:r.message,variant:"danger"})}finally{y.value={...y.value,[a]:!1}}}}async function N(a){try{const r=await $.getServiceLogs(a);x.value=r.logs||[],V.value=r.status||"stopped"}catch(r){console.error("Failed to fetch logs:",r)}}function X(a){S.value=a,N(a),f.value&&window.clearInterval(f.value),f.value=window.setInterval(()=>N(a),2e3)}function Y(){S.value=null,x.value=[],f.value&&window.clearInterval(f.value),f.value=null}async function R(){if(m.value.trim()){C.value=!0;try{await $.registerService(m.value),c.add({title:"Service registered",description:m.value,variant:"success"}),m.value="",await w()}catch(a){c.add({title:"Failed to register service",description:a.message,variant:"danger"})}finally{C.value=!1}}}function Z(a){b.value=a,L.value=!0}async function ee(){if(!b.value)return;const a=b.value;try{await $.deleteService(a),c.add({title:"Service deleted",description:a,variant:"info"}),await w()}catch(r){c.add({title:"Failed to delete service",description:r.message,variant:"danger"})}finally{b.value=null,L.value=!1}}function te(a){return new Date(a).toLocaleString()}function ae(a){switch(a){case"running":return"success";case"registered":return"warning";case"stopped":return"neutral";default:return"danger"}}return se(()=>{w(),I=window.setInterval(w,1e4)}),re(()=>{I&&window.clearInterval(I),f.value&&window.clearInterval(f.value)}),(a,r)=>(i(),o(t(ne),{variant:"outline"},{header:s(()=>[n(t(h),{direction:"horizontal",gap:"0.75rem",align:"center",justify:"space-between"},{default:s(()=>[n(t(D),{weight:"semibold"},{default:s(()=>[...r[3]||(r[3]=[l("Microservices",-1)])]),_:1}),n(t(h),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:s(()=>[n(t(ge),{hint:"Absolute path to a Serverless project",htmlFor:"register-path"},{default:s(()=>[n(t(pe),{modelValue:m.value,"onUpdate:modelValue":r[0]||(r[0]=e=>m.value=e),placeholder:"/path/to/microservice",disabled:C.value,onKeyup:me(R,["enter"])},null,8,["modelValue","disabled"])]),_:1}),n(t(B),{variant:"solid",loading:C.value,disabled:!m.value.trim(),onClick:R},{default:s(()=>[...r[4]||(r[4]=[l(" Register ",-1)])]),_:1},8,["loading","disabled"])]),_:1})]),_:1})]),default:s(()=>[U.value?(i(),o(t(h),{key:0,direction:"horizontal",justify:"center",align:"center"},{default:s(()=>[n(t(le),{label:"Loading services..."})]),_:1})):z.value.length?(i(),o(t(oe),{key:2,columns:H,rows:W.value,"aria-label":"Registered microservices"},{"cell-name":s(({row:e})=>[n(t(de),{to:`/services/${encodeURIComponent(String(e.name))}`},{default:s(()=>[n(t(D),{weight:"semibold"},{default:s(()=>[l(u(e.name),1)]),_:2},1024)]),_:2},1032,["to"])]),"cell-status":s(({row:e})=>[n(t(ue),{tone:ae(String(e.status)),variant:"soft"},{default:s(()=>[l(u(e.status),1)]),_:2},1032,["tone"])]),"cell-root":s(({row:e})=>[n(t(D),{family:"mono"},{default:s(()=>[l(u(e.root),1)]),_:2},1024)]),"cell-resourceBreakdown":s(({row:e})=>[n(t(h),{direction:"horizontal",gap:"0.25rem",wrap:""},{default:s(()=>{var _,j,T,q,A,M,P,K;return[(_=e.resourceBreakdown)!=null&&_.lambdas?(i(),o(t(g),{key:0,size:"sm",variant:"soft"},{default:s(()=>[n(t(p),{name:"code"}),l(" "+u(e.resourceBreakdown.lambdas),1)]),_:2},1024)):v("",!0),(j=e.resourceBreakdown)!=null&&j.tables?(i(),o(t(g),{key:1,size:"sm",variant:"soft"},{default:s(()=>[n(t(p),{name:"database"}),l(" "+u(e.resourceBreakdown.tables),1)]),_:2},1024)):v("",!0),(T=e.resourceBreakdown)!=null&&T.queues?(i(),o(t(g),{key:2,size:"sm",variant:"soft"},{default:s(()=>[n(t(p),{name:"inbox"}),l(" "+u(e.resourceBreakdown.queues),1)]),_:2},1024)):v("",!0),(q=e.resourceBreakdown)!=null&&q.topics?(i(),o(t(g),{key:3,size:"sm",variant:"soft"},{default:s(()=>[n(t(p),{name:"megaphone"}),l(" "+u(e.resourceBreakdown.topics),1)]),_:2},1024)):v("",!0),(A=e.resourceBreakdown)!=null&&A.buckets?(i(),o(t(g),{key:4,size:"sm",variant:"soft"},{default:s(()=>[n(t(p),{name:"archive"}),l(" "+u(e.resourceBreakdown.buckets),1)]),_:2},1024)):v("",!0),(M=e.resourceBreakdown)!=null&&M.buses?(i(),o(t(g),{key:5,size:"sm",variant:"soft"},{default:s(()=>[n(t(p),{name:"shuffle"}),l(" "+u(e.resourceBreakdown.buses),1)]),_:2},1024)):v("",!0),(P=e.resourceBreakdown)!=null&&P.eventRules?(i(),o(t(g),{key:6,size:"sm",variant:"soft"},{default:s(()=>[n(t(p),{name:"target"}),l(" "+u(e.resourceBreakdown.eventRules),1)]),_:2},1024)):v("",!0),(K=e.resourceBreakdown)!=null&&K.collections?(i(),o(t(g),{key:7,size:"sm",variant:"soft"},{default:s(()=>[n(t(p),{name:"search"}),l(" "+u(e.resourceBreakdown.collections),1)]),_:2},1024)):v("",!0),e.resourcesCount?v("",!0):(i(),o(t(D),{key:8,tone:"muted",size:"xs"},{default:s(()=>[...r[5]||(r[5]=[l(" none ",-1)])]),_:1}))]}),_:2},1024)]),"cell-lastUpdated":s(({row:e})=>[l(u(te(Number(e.lastUpdated))),1)]),"cell-actions":s(({row:e})=>[n(t(h),{direction:"horizontal",gap:"0.375rem",justify:"flex-end",wrap:""},{default:s(()=>[n(t(B),{size:"sm",variant:"soft",disabled:e.status==="running"||k.value[String(e.name)],loading:k.value[String(e.name)],onClick:_=>J(String(e.name))},{default:s(()=>[...r[6]||(r[6]=[l(" Start ",-1)])]),_:1},8,["disabled","loading","onClick"]),n(t(B),{size:"sm",variant:"soft",disabled:e.status!=="running"||y.value[String(e.name)],loading:y.value[String(e.name)],onClick:_=>Q(String(e.name))},{default:s(()=>[...r[7]||(r[7]=[l(" Stop ",-1)])]),_:1},8,["disabled","loading","onClick"]),n(t(B),{size:"sm",variant:"ghost",onClick:_=>X(String(e.name))},{default:s(()=>[...r[8]||(r[8]=[l(" Logs ",-1)])]),_:1},8,["onClick"]),n(t(B),{size:"sm",variant:"danger",onClick:_=>Z(String(e.name))},{default:s(()=>[...r[9]||(r[9]=[l(" Delete ",-1)])]),_:1},8,["onClick"])]),_:2},1024)]),_:1},8,["rows"])):(i(),o(t(ie),{key:1,title:"No services registered",description:"Register your first microservice using the form above."})),n(t(ce),{open:F.value,"onUpdate:open":r[1]||(r[1]=e=>F.value=e),title:S.value?`Logs — ${S.value}`:"Logs",description:S.value?`Status: ${V.value}`:"",size:"lg"},{default:s(()=>[ve("pre",ye,u(x.value.join(`
|
|
2
|
-
`)||"— no output yet —"),1)]),_:1},8,["open","title","description"]),n(t(fe),{open:L.value,"onUpdate:open":r[2]||(r[2]=e=>L.value=e),title:`Delete service${b.value?` “${b.value}”`:""}?`,description:"This removes the service from the cache and cleans up its provisioned resources in LocalStack.","confirm-label":"Delete","cancel-label":"Cancel","confirm-variant":"danger",onConfirm:ee},null,8,["open","title"])]),_:1}))}}),we=E({__name:"ServicesPage",setup(G){return(c,z)=>(i(),o(Se))}});export{we as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const s=(t,r)=>{const o=t.__vccOpts||t;for(const[c,e]of r)o[c]=e;return o};export{s as _};
|