local-serverless-stack 0.8.0 → 0.10.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 +55 -0
- package/README.md +214 -624
- package/dist/client/namespaces/lambdas.d.ts +1 -0
- package/dist/client/namespaces/lambdas.d.ts.map +1 -1
- package/dist/client/namespaces/lambdas.js.map +1 -1
- package/dist/client/types.d.ts +4 -0
- package/dist/client/types.d.ts.map +1 -1
- package/dist/server/engine/aoss-sidecar.d.ts +13 -0
- package/dist/server/engine/aoss-sidecar.d.ts.map +1 -0
- package/dist/server/engine/aoss-sidecar.js +93 -0
- package/dist/server/engine/aoss-sidecar.js.map +1 -0
- package/dist/server/engine/backends/self-backend.d.ts.map +1 -1
- package/dist/server/engine/backends/self-backend.js +4 -2
- package/dist/server/engine/backends/self-backend.js.map +1 -1
- package/dist/server/engine/emulators/dynamodb/index.d.ts +8 -0
- package/dist/server/engine/emulators/dynamodb/index.d.ts.map +1 -1
- package/dist/server/engine/emulators/dynamodb/index.js +208 -7
- package/dist/server/engine/emulators/dynamodb/index.js.map +1 -1
- package/dist/server/engine/emulators/dynamodb/transactions.d.ts +35 -0
- package/dist/server/engine/emulators/dynamodb/transactions.d.ts.map +1 -0
- package/dist/server/engine/emulators/dynamodb/transactions.js +153 -0
- package/dist/server/engine/emulators/dynamodb/transactions.js.map +1 -0
- package/dist/server/engine/emulators/events/index.js +3 -3
- package/dist/server/engine/emulators/events/index.js.map +1 -1
- package/dist/server/engine/emulators/lambda-ctl/index.js +5 -5
- package/dist/server/engine/emulators/lambda-ctl/index.js.map +1 -1
- package/dist/server/engine/emulators/opensearch/index.d.ts +67 -0
- package/dist/server/engine/emulators/opensearch/index.d.ts.map +1 -0
- package/dist/server/engine/emulators/opensearch/index.js +812 -0
- package/dist/server/engine/emulators/opensearch/index.js.map +1 -0
- package/dist/server/engine/emulators/opensearch/search.d.ts +17 -0
- package/dist/server/engine/emulators/opensearch/search.d.ts.map +1 -0
- package/dist/server/engine/emulators/opensearch/search.js +434 -0
- package/dist/server/engine/emulators/opensearch/search.js.map +1 -0
- package/dist/server/engine/emulators/s3/index.js +5 -5
- package/dist/server/engine/emulators/s3/index.js.map +1 -1
- package/dist/server/engine/emulators/sns/index.js +2 -2
- package/dist/server/engine/emulators/sns/index.js.map +1 -1
- package/dist/server/engine/emulators/sqs/index.js +2 -2
- package/dist/server/engine/emulators/sqs/index.js.map +1 -1
- package/dist/server/engine/emulators/sts.js +2 -2
- package/dist/server/engine/emulators/sts.js.map +1 -1
- package/dist/server/engine/http/errors.d.ts +1 -0
- package/dist/server/engine/http/errors.d.ts.map +1 -1
- package/dist/server/engine/http/errors.js +12 -0
- package/dist/server/engine/http/errors.js.map +1 -1
- package/dist/server/engine/http/router.d.ts.map +1 -1
- package/dist/server/engine/http/router.js +11 -0
- package/dist/server/engine/http/router.js.map +1 -1
- package/dist/server/engine/types.d.ts +1 -1
- package/dist/server/engine/types.d.ts.map +1 -1
- package/dist/server/index.js +31 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/routes/config.d.ts.map +1 -1
- package/dist/server/routes/config.js +16 -0
- package/dist/server/routes/config.js.map +1 -1
- package/dist/server/routes/opensearch.d.ts +3 -0
- package/dist/server/routes/opensearch.d.ts.map +1 -0
- package/dist/server/routes/opensearch.js +69 -0
- package/dist/server/routes/opensearch.js.map +1 -0
- package/dist/server/routes/resources.d.ts.map +1 -1
- package/dist/server/routes/resources.js +4 -1
- package/dist/server/routes/resources.js.map +1 -1
- package/dist/server/routes/services.d.ts.map +1 -1
- package/dist/server/routes/services.js +1 -0
- package/dist/server/routes/services.js.map +1 -1
- package/dist/server/runtime/log-capture.d.ts +7 -0
- package/dist/server/runtime/log-capture.d.ts.map +1 -0
- package/dist/server/runtime/log-capture.js +206 -0
- package/dist/server/runtime/log-capture.js.map +1 -0
- package/dist/server/runtime/runtime-worker.js +23 -14
- package/dist/server/runtime/runtime-worker.js.map +1 -1
- 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 +22 -2
- package/dist/server/services/cache-manager.js.map +1 -1
- package/dist/server/services/cloudformation-parser.d.ts +10 -1
- package/dist/server/services/cloudformation-parser.d.ts.map +1 -1
- package/dist/server/services/cloudformation-parser.js +28 -0
- package/dist/server/services/cloudformation-parser.js.map +1 -1
- package/dist/server/services/config-manager.d.ts +55 -0
- package/dist/server/services/config-manager.d.ts.map +1 -1
- package/dist/server/services/config-manager.js +84 -0
- package/dist/server/services/config-manager.js.map +1 -1
- package/dist/server/services/gateway-manager.d.ts +2 -0
- package/dist/server/services/gateway-manager.d.ts.map +1 -1
- package/dist/server/services/gateway-manager.js +44 -6
- package/dist/server/services/gateway-manager.js.map +1 -1
- package/dist/server/services/lambda-runtime-manager.d.ts +2 -0
- package/dist/server/services/lambda-runtime-manager.d.ts.map +1 -1
- package/dist/server/services/lambda-runtime-manager.js +19 -1
- package/dist/server/services/lambda-runtime-manager.js.map +1 -1
- package/dist/server/services/opensearch-explorer.d.ts +37 -0
- package/dist/server/services/opensearch-explorer.d.ts.map +1 -0
- package/dist/server/services/opensearch-explorer.js +124 -0
- package/dist/server/services/opensearch-explorer.js.map +1 -0
- package/dist/server/services/resource-provisioner.d.ts +7 -0
- package/dist/server/services/resource-provisioner.d.ts.map +1 -1
- package/dist/server/services/resource-provisioner.js +86 -4
- package/dist/server/services/resource-provisioner.js.map +1 -1
- package/dist/server/services/service-registrar.d.ts +1 -0
- package/dist/server/services/service-registrar.d.ts.map +1 -1
- package/dist/server/services/service-registrar.js +17 -2
- package/dist/server/services/service-registrar.js.map +1 -1
- package/dist/ui/assets/{ApisPage-a9i2qD0Z.js → ApisPage-DyjG-weG.js} +1 -1
- package/dist/ui/assets/{BucketDetailPage-Cz27N0KV.js → BucketDetailPage-Bvrk1L6q.js} +1 -1
- package/dist/ui/assets/{BucketsPage-CZ7wGmUN.js → BucketsPage-KgeLoK6e.js} +1 -1
- package/dist/ui/assets/{DynamoPage-BZMs1iW8.js → DynamoPage-C8rwaEIi.js} +1 -1
- package/dist/ui/assets/{DynamoTablePage-BQsGkhtO.js → DynamoTablePage-CN5P5f7S.js} +1 -1
- package/dist/ui/assets/{LambdaDetailPage-DJb7xqRB.js → LambdaDetailPage-BPhEkF44.js} +3 -3
- package/dist/ui/assets/{LambdasPage-Ctg1l-Lg.js → LambdasPage-Dz4wxjVd.js} +1 -1
- package/dist/ui/assets/OpenSearchCollectionPage-B3s964oC.js +1 -0
- package/dist/ui/assets/OpenSearchPage-0fTJJovd.js +1 -0
- package/dist/ui/assets/OverviewPage-B13l71G0.js +1 -0
- package/dist/ui/assets/OverviewPage-qEl0a-0B.css +1 -0
- package/dist/ui/assets/{QueueDetailPage-DRpSqost.js → QueueDetailPage-peLph1_v.js} +1 -1
- package/dist/ui/assets/{QueuesPage-CY0bDGwV.js → QueuesPage-CF9yiBkq.js} +1 -1
- package/dist/ui/assets/ServiceDetailPage-ZGLPswmY.js +2 -0
- package/dist/ui/assets/ServicesPage-DsoZBBxo.js +2 -0
- package/dist/ui/assets/index-BP9zQ9L-.js +37 -0
- package/dist/ui/assets/{index-C1KdKPDS.css → index-DH7RTkRh.css} +1 -1
- package/dist/ui/index.html +2 -2
- package/package.json +2 -1
- package/dist/ui/assets/OverviewPage-6jDXV1jr.css +0 -1
- package/dist/ui/assets/OverviewPage-DiijblCA.js +0 -1
- package/dist/ui/assets/ServiceDetailPage-CYTEdtts.js +0 -2
- package/dist/ui/assets/ServicesPage-OlV_rr-q.js +0 -2
- package/dist/ui/assets/index-DA_C1HOg.js +0 -36
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "local-serverless-stack",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "Local control plane for serverless development with LocalStack orchestration",
|
|
5
5
|
"author": "LSS Contributors",
|
|
6
6
|
"license": "MIT",
|
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
"@aws-sdk/client-dynamodb": "^3.709.0",
|
|
68
68
|
"@aws-sdk/client-eventbridge": "^3.709.0",
|
|
69
69
|
"@aws-sdk/client-lambda": "^3.709.0",
|
|
70
|
+
"@aws-sdk/client-opensearchserverless": "^3.1085.0",
|
|
70
71
|
"@aws-sdk/client-s3": "^3.1051.0",
|
|
71
72
|
"@aws-sdk/client-sns": "^3.709.0",
|
|
72
73
|
"@aws-sdk/client-sqs": "^3.709.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.overview-hero[data-v-1dcec0b1]{background:linear-gradient(135deg,var(--tree-color-background-elevated, rgba(255, 255, 255, .02)),transparent)}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{k as W,l as G,o as J,e as m,Z as a,U as e,t as i,a as k,r as y,m as v,j as n,d as o,p,i as c,T as u,q as z,g as h,s as K,u as N,v as X,F as R,n as I,f as O,w as q,x as b,R as Y,y as ee,b as g}from"./index-DA_C1HOg.js";const te={key:0,style:{display:"flex","justify-content":"center",padding:"2rem"}},ae={class:"mono"},ne={class:"mono",style:{"font-size":"0.8rem"}},se={class:"mono"},oe={class:"mono"},le={key:0,class:"muted"},re={class:"mono",style:{"font-size":"0.75rem"}},ie={class:"mono",style:{"font-size":"0.75rem"}},ue={style:{"font-size":"1.05rem"}},de={class:"muted",style:{"font-size":"0.825rem"}},ce=W({__name:"OverviewPage",setup($){const f=y(null),d=y(null),w=y([]),_=y([]),A=y([]),S=y({tables:[],queues:[],topics:[],buckets:[]}),C=y(!0);let D=null;async function T(){try{const[r,t,s,l,L,B]=await Promise.all([k.checkHealth(),k.getConfig(),k.listServices(),k.listResources(),k.listLambdas().catch(()=>[]),k.listApis().catch(()=>[])]);f.value=r,d.value=t,w.value=s,S.value=l,_.value=L,A.value=B}catch(r){console.error("Overview load failed:",r)}finally{C.value=!1}}const F=g(()=>w.value.filter(r=>r.status==="running").length),V=g(()=>w.value.length),Q=g(()=>_.value.filter(r=>r.status==="online").length),M=g(()=>_.value.length),U=g(()=>A.value.reduce((r,t)=>r+t.routes.length,0)),Z=g(()=>{var r;return(r=f.value)!=null&&r.localstack?"success":"danger"}),E=g(()=>{var r,t;return!!((t=(r=f.value)==null?void 0:r.dynamoProxy)!=null&&t.enabled)}),j=g(()=>{var r,t;return!!((t=(r=f.value)==null?void 0:r.dynamoProxy)!=null&&t.running)}),x=g(()=>{var r;return!!((r=d.value)!=null&&r.autoPackage)}),P=g(()=>{var r;return!!((r=d.value)!=null&&r.persistence)}),H=[{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(()=>{T(),D=window.setInterval(T,15e3)}),J(()=>{D&&window.clearInterval(D)}),(r,t)=>(v(),m(e(i),{direction:"vertical",gap:"1.5rem"},{default:a(()=>[n(e(z),{variant:"outline",class:"overview-hero"},{default:a(()=>[n(e(i),{direction:"vertical",gap:"1rem"},{default:a(()=>[n(e(i),{direction:"horizontal",gap:"0.75rem",align:"center",wrap:""},{default:a(()=>[t[1]||(t[1]=o("span",{style:{"font-size":"1.75rem"}},"⚡",-1)),n(e(i),{direction:"vertical",gap:"0.125rem"},{default:a(()=>[...t[0]||(t[0]=[o("strong",{style:{"font-size":"1.5rem"}},"Local Serverless Stack",-1),o("span",{class:"muted"},"One LocalStack. Every microservice. Zero docker juggling.",-1)])]),_:1})]),_:1}),t[3]||(t[3]=o("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)),n(e(i),{direction:"horizontal",gap:"0.5rem",wrap:""},{default:a(()=>[n(e(p),{tone:Z.value,variant:"soft"},{default:a(()=>{var s;return[c(" LocalStack "+u((s=f.value)!=null&&s.localstack?"running":"offline"),1)]}),_:1},8,["tone"]),E.value?(v(),m(e(p),{key:0,tone:j.value?"success":"warning",variant:"soft"},{default:a(()=>[c(" Dynamo Proxy "+u(j.value?"on":"enabled (not listening)"),1)]),_:1},8,["tone"])):(v(),m(e(p),{key:1,tone:"neutral",variant:"soft"},{default:a(()=>[...t[2]||(t[2]=[c("Dynamo Proxy off",-1)])]),_:1})),n(e(p),{tone:x.value?"info":"neutral",variant:"soft"},{default:a(()=>[c(" Auto-package "+u(x.value?"on":"off"),1)]),_:1},8,["tone"]),n(e(p),{tone:P.value?"info":"neutral",variant:"soft"},{default:a(()=>[c(" Persistence "+u(P.value?"on":"off"),1)]),_:1},8,["tone"])]),_:1})]),_:1})]),_:1}),C.value&&!f.value?(v(),h("div",te,[n(e(K),{label:"Loading overview..."})])):(v(),h(R,{key:1},[n(e(q),{columns:2,gap:"1rem"},{default:a(()=>[n(e(z),{variant:"outline"},{header:a(()=>[...t[4]||(t[4]=[o("strong",null,"Server status",-1)])]),default:a(()=>[n(e(i),{direction:"vertical",gap:"0.75rem"},{default:a(()=>[n(e(i),{direction:"horizontal",justify:"space-between",align:"center"},{default:a(()=>{var s;return[t[5]||(t[5]=o("span",{class:"muted"},"LocalStack",-1)),n(e(p),{tone:(s=f.value)!=null&&s.localstack?"success":"danger",variant:"soft"},{default:a(()=>{var l;return[c(u((l=f.value)!=null&&l.localstack?"Running":"Offline"),1)]}),_:1},8,["tone"])]}),_:1}),n(e(i),{direction:"horizontal",justify:"space-between",align:"center"},{default:a(()=>{var s,l;return[t[6]||(t[6]=o("span",{class:"muted"},"Endpoint",-1)),o("span",ae,u(((l=(s=d.value)==null?void 0:s.localstack)==null?void 0:l.endpoint)||"—"),1)]}),_:1}),n(e(i),{direction:"horizontal",justify:"space-between",align:"center"},{default:a(()=>{var s,l;return[t[7]||(t[7]=o("span",{class:"muted"},"Image",-1)),o("span",ne,u(((l=(s=d.value)==null?void 0:s.localstack)==null?void 0:l.image)||"—"),1)]}),_:1}),n(e(i),{direction:"horizontal",justify:"space-between",align:"center"},{default:a(()=>[t[8]||(t[8]=o("span",{class:"muted"},"Mode",-1)),n(e(N),{size:"sm",variant:"soft"},{default:a(()=>{var s,l;return[c(u(((l=(s=d.value)==null?void 0:s.localstack)==null?void 0:l.mode)||"—"),1)]}),_:1})]),_:1}),n(e(X)),n(e(i),{direction:"horizontal",justify:"space-between",align:"center"},{default:a(()=>[t[10]||(t[10]=o("span",{class:"muted"},"Dynamo Proxy",-1)),n(e(i),{direction:"horizontal",gap:"0.375rem",align:"center"},{default:a(()=>[E.value?(v(),m(e(p),{key:0,tone:j.value?"success":"warning",variant:"soft"},{default:a(()=>{var s,l;return[c(u(j.value?`Listening :${(l=(s=f.value)==null?void 0:s.dynamoProxy)==null?void 0:l.port}`:"Enabled, not listening"),1)]}),_:1},8,["tone"])):(v(),m(e(p),{key:1,tone:"neutral",variant:"soft"},{default:a(()=>[...t[9]||(t[9]=[c("Disabled",-1)])]),_:1}))]),_:1})]),_:1}),n(e(i),{direction:"horizontal",justify:"space-between",align:"center"},{default:a(()=>[t[11]||(t[11]=o("span",{class:"muted"},"Auto-package",-1)),n(e(p),{tone:x.value?"info":"neutral",variant:"soft"},{default:a(()=>[c(u(x.value?"on":"off"),1)]),_:1},8,["tone"])]),_:1}),n(e(i),{direction:"horizontal",justify:"space-between",align:"center"},{default:a(()=>[t[12]||(t[12]=o("span",{class:"muted"},"Persistence",-1)),n(e(p),{tone:P.value?"info":"neutral",variant:"soft"},{default:a(()=>[c(u(P.value?"on":"off"),1)]),_:1},8,["tone"])]),_:1})]),_:1})]),_:1}),n(e(z),{variant:"outline"},{header:a(()=>[...t[13]||(t[13]=[o("strong",null,"LESC configuration",-1)])]),default:a(()=>[n(e(i),{direction:"vertical",gap:"0.75rem"},{default:a(()=>{var s;return[n(e(i),{direction:"horizontal",justify:"space-between",align:"center"},{default:a(()=>{var l;return[t[14]||(t[14]=o("span",{class:"muted"},"Default region",-1)),o("span",se,u(((l=d.value)==null?void 0:l.region)||"—"),1)]}),_:1}),n(e(i),{direction:"horizontal",justify:"space-between",align:"center"},{default:a(()=>{var l;return[t[15]||(t[15]=o("span",{class:"muted"},"Server port",-1)),o("span",oe,u(((l=d.value)==null?void 0:l.serverPort)||"—"),1)]}),_:1}),n(e(i),{direction:"horizontal",justify:"space-between",align:"start",wrap:""},{default:a(()=>[t[16]||(t[16]=o("span",{class:"muted"},"LocalStack services",-1)),n(e(i),{direction:"horizontal",gap:"0.25rem",wrap:"",justify:"flex-end"},{default:a(()=>{var l,L;return[(v(!0),h(R,null,I(((l=d.value)==null?void 0:l.services)||[],B=>(v(),m(e(N),{key:B,size:"sm",variant:"soft"},{default:a(()=>[c(u(B),1)]),_:2},1024))),128)),(((L=d.value)==null?void 0:L.services)||[]).length?O("",!0):(v(),h("span",le,"—"))]}),_:1})]),_:1}),n(e(i),{direction:"horizontal",justify:"space-between",align:"center"},{default:a(()=>{var l;return[t[17]||(t[17]=o("span",{class:"muted"},"Seeds dir",-1)),o("span",re,u(((l=d.value)==null?void 0:l.seedsDir)||"—"),1)]}),_:1}),(s=d.value)!=null&&s.configPath?(v(),m(e(i),{key:0,direction:"horizontal",justify:"space-between",align:"center"},{default:a(()=>[t[18]||(t[18]=o("span",{class:"muted"},"Config file",-1)),o("span",ie,u(d.value.configPath),1)]),_:1})):O("",!0)]}),_:1})]),_:1})]),_:1}),n(e(q),{columns:5,gap:"1rem"},{default:a(()=>[n(e(b),{label:"Services running",value:`${F.value} / ${V.value}`,tone:"success"},null,8,["value"]),n(e(b),{label:"Lambdas online",value:`${Q.value} / ${M.value}`,tone:"success"},null,8,["value"]),n(e(b),{label:"API routes",value:U.value,tone:"info"},null,8,["value"]),n(e(b),{label:"DynamoDB tables",value:S.value.tables.length,tone:"info"},null,8,["value"]),n(e(b),{label:"SQS queues",value:S.value.queues.length,tone:"warning"},null,8,["value"]),n(e(b),{label:"SNS topics",value:S.value.topics.length,tone:"info"},null,8,["value"]),n(e(b),{label:"S3 buckets",value:S.value.buckets.length,tone:"neutral"},null,8,["value"])]),_:1}),n(e(z),{variant:"outline"},{header:a(()=>[n(e(i),{direction:"horizontal",justify:"space-between",align:"center"},{default:a(()=>[...t[19]||(t[19]=[o("strong",null,"What's covered",-1),o("span",{class:"muted",style:{"font-size":"0.75rem"}}," Resource types LSS understands today ",-1)])]),_:1})]),default:a(()=>[n(e(q),{columns:2,gap:"0.75rem"},{default:a(()=>[(v(),h(R,null,I(H,s=>n(e(z),{key:s.type,variant:"soft"},{default:a(()=>[n(e(i),{direction:"horizontal",gap:"0.75rem",align:"center",justify:"space-between"},{default:a(()=>[n(e(i),{direction:"vertical",gap:"0.125rem"},{default:a(()=>[n(e(i),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:a(()=>[o("span",ue,u(s.status==="covered"?"✓":"⏳"),1),o("strong",null,u(s.type),1),n(e(p),{tone:s.status==="covered"?"success":"neutral",variant:"soft"},{default:a(()=>[c(u(s.status==="covered"?"Supported":"Planned"),1)]),_:2},1032,["tone"])]),_:2},1024),o("span",de,u(s.description),1)]),_:2},1024),s.to?(v(),m(e(Y),{key:0,to:s.to,style:{"text-decoration":"none"}},{default:a(()=>[n(e(ee),{size:"sm",variant:"ghost"},{default:a(()=>[...t[20]||(t[20]=[c("Open →",-1)])]),_:1})]),_:1},8,["to"])):O("",!0)]),_:2},1024)]),_:2},1024)),64))]),_:1})]),_:1})],64))]),_:1}))}}),ve=($,f)=>{const d=$.__vccOpts||$;for(const[w,_]of f)d[w]=_;return d},pe=ve(ce,[["__scopeId","data-v-1dcec0b1"]]);export{pe as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{k as se,l as re,o as oe,Y as ie,e as f,Z as t,U as e,t as l,a as B,r as _,m as s,j as a,R as P,y as C,i as d,d as c,T as i,p as g,f as p,G as ue,g as y,s as de,x as I,w as ve,q as H,z as ce,F as w,n as h,u as $,B as fe,C as me,b as pe,c as ge,W as ye}from"./index-DA_C1HOg.js";const be={style:{"font-size":"1.1rem"}},_e={key:1,style:{display:"flex","justify-content":"center",padding:"2rem"}},we={class:"mono"},ze={class:"mono"},ke={class:"mono"},he={class:"mono"},$e={class:"muted"},Se={class:"muted"},Ne={class:"muted"},Le={class:"muted"},Ce={class:"muted"},De={class:"muted"},je={class:"muted"},xe={class:"muted"},Be={class:"logs-pre"},Te=se({__name:"ServiceDetailPage",props:{serviceName:{}},setup(T){const b=T,J=ye(),S=ge(),m=_(null),q=_(!0),D=_(null),F=_(!1),R=_(!1),U=_(!1),O=_([]),Q=_("stopped");let z=null,V=null;const E=_(!1),r=pe(()=>{var n;const v={lambda:[],dynamodb:[],sqs:[],sns:[],s3:[],eventbus:[],"event-rule":[],"event-source":[]};for(const o of((n=m.value)==null?void 0:n.resources)||[])v[o.type]||(v[o.type]=[]),v[o.type].push(o);return v});async function N(){q.value=!0;try{m.value=await B.getService(b.serviceName),D.value=null}catch(v){D.value=v.message||"Service not found",m.value=null}finally{q.value=!1}}async function K(){if(!F.value){F.value=!0;try{await B.startService(b.serviceName),S.add({title:"Service started",description:b.serviceName,variant:"success"}),await N()}catch(v){S.add({title:"Failed to start",description:v.message,variant:"danger"})}finally{F.value=!1}}}async function X(){if(!R.value){R.value=!0;try{await B.stopService(b.serviceName),S.add({title:"Service stopped",description:b.serviceName,variant:"info"}),await N()}catch(v){S.add({title:"Failed to stop",description:v.message,variant:"danger"})}finally{R.value=!1}}}async function G(){try{const v=await B.getServiceLogs(b.serviceName);O.value=v.logs||[],Q.value=v.status||"stopped"}catch(v){console.error("Failed to fetch logs:",v)}}function ee(){U.value=!0,G(),z&&window.clearInterval(z),z=window.setInterval(G,2e3)}function te(){U.value=!1,z&&window.clearInterval(z),z=null}async function ae(){try{await B.deleteService(b.serviceName),S.add({title:"Service deleted",description:b.serviceName,variant:"info"}),J.push("/services")}catch(v){S.add({title:"Failed to delete",description:v.message,variant:"danger"})}finally{E.value=!1}}function ne(v){switch(v){case"running":return"success";case"registered":return"warning";case"stopped":return"neutral";default:return"danger"}}function le(v){return v?new Date(v).toLocaleString():"—"}return re(()=>{N(),V=window.setInterval(N,1e4)}),oe(()=>{V&&window.clearInterval(V),z&&window.clearInterval(z)}),ie(()=>b.serviceName,N),(v,n)=>(s(),f(e(l),{direction:"vertical",gap:"1.25rem"},{default:t(()=>[a(e(l),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[a(e(l),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>{var o;return[a(e(P),{to:"/services",style:{"text-decoration":"none"}},{default:t(()=>[a(e(C),{size:"sm",variant:"ghost"},{default:t(()=>[...n[5]||(n[5]=[d("← Services",-1)])]),_:1})]),_:1}),c("strong",be,i(T.serviceName),1),(o=m.value)!=null&&o.status?(s(),f(e(g),{key:0,tone:ne(m.value.status),variant:"soft"},{default:t(()=>[d(i(m.value.status),1)]),_:1},8,["tone"])):p("",!0)]}),_:1}),a(e(l),{direction:"horizontal",gap:"0.375rem"},{default:t(()=>{var o,k;return[a(e(C),{size:"sm",variant:"soft",disabled:((o=m.value)==null?void 0:o.status)==="running",loading:F.value,onClick:K},{default:t(()=>[...n[6]||(n[6]=[d(" Start ",-1)])]),_:1},8,["disabled","loading"]),a(e(C),{size:"sm",variant:"soft",disabled:((k=m.value)==null?void 0:k.status)!=="running",loading:R.value,onClick:X},{default:t(()=>[...n[7]||(n[7]=[d(" Stop ",-1)])]),_:1},8,["disabled","loading"]),a(e(C),{size:"sm",variant:"ghost",onClick:ee},{default:t(()=>[...n[8]||(n[8]=[d("Logs",-1)])]),_:1}),a(e(C),{size:"sm",variant:"ghost",loading:q.value,onClick:N},{default:t(()=>[...n[9]||(n[9]=[d("Refresh",-1)])]),_:1},8,["loading"]),a(e(C),{size:"sm",variant:"danger",onClick:n[0]||(n[0]=L=>E.value=!0)},{default:t(()=>[...n[10]||(n[10]=[d("Delete",-1)])]),_:1})]}),_:1})]),_:1}),D.value?(s(),f(e(ue),{key:0,variant:"danger",dismissible:"",onDismiss:n[1]||(n[1]=o=>D.value=null)},{default:t(()=>[d(i(D.value),1)]),_:1})):p("",!0),q.value&&!m.value?(s(),y("div",_e,[a(e(de),{label:"Loading service..."})])):m.value?(s(),y(w,{key:2},[a(e(ve),{columns:5,gap:"1rem"},{default:t(()=>{var o,k,L,j,x;return[a(e(I),{label:"Lambdas",value:((o=r.value.lambda)==null?void 0:o.length)||0,tone:"info"},null,8,["value"]),a(e(I),{label:"Tables",value:((k=r.value.dynamodb)==null?void 0:k.length)||0,tone:"info"},null,8,["value"]),a(e(I),{label:"Queues",value:((L=r.value.sqs)==null?void 0:L.length)||0,tone:"warning"},null,8,["value"]),a(e(I),{label:"Topics",value:((j=r.value.sns)==null?void 0:j.length)||0,tone:"info"},null,8,["value"]),a(e(I),{label:"Buckets",value:((x=r.value.s3)==null?void 0:x.length)||0,tone:"neutral"},null,8,["value"])]}),_:1}),a(e(H),{variant:"outline"},{header:t(()=>[...n[11]||(n[11]=[c("strong",null,"Metadata",-1)])]),default:t(()=>[a(e(l),{direction:"vertical",gap:"0.5rem"},{default:t(()=>[a(e(l),{direction:"horizontal",justify:"space-between"},{default:t(()=>[n[12]||(n[12]=c("span",{class:"muted"},"Path",-1)),c("span",we,i(m.value.root),1)]),_:1}),a(e(l),{direction:"horizontal",justify:"space-between"},{default:t(()=>[n[13]||(n[13]=c("span",{class:"muted"},"Region",-1)),c("span",ze,i(m.value.region||"—"),1)]),_:1}),a(e(l),{direction:"horizontal",justify:"space-between"},{default:t(()=>[n[14]||(n[14]=c("span",{class:"muted"},"Invoke port",-1)),c("span",ke,i(m.value.invokePort??"—"),1)]),_:1}),a(e(l),{direction:"horizontal",justify:"space-between"},{default:t(()=>[n[15]||(n[15]=c("span",{class:"muted"},"PID",-1)),c("span",he,i(m.value.pid??"—"),1)]),_:1}),a(e(l),{direction:"horizontal",justify:"space-between"},{default:t(()=>[n[16]||(n[16]=c("span",{class:"muted"},"Last updated",-1)),c("span",null,i(le(m.value.lastUpdated)),1)]),_:1})]),_:1})]),_:1}),a(e(H),{variant:"outline"},{header:t(()=>[a(e(l),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[n[17]||(n[17]=c("strong",null,"Declared resources",-1)),a(e(g),{tone:"neutral",variant:"soft"},{default:t(()=>{var o;return[d(i(((o=m.value.resources)==null?void 0:o.length)||0)+" total ",1)]}),_:1})]),_:1})]),default:t(()=>{var o;return[(o=m.value.resources)!=null&&o.length?(s(),f(e(l),{key:1,direction:"vertical",gap:"1rem"},{default:t(()=>{var k,L,j,x,W,Y,Z,A;return[(k=r.value.dynamodb)!=null&&k.length?(s(),f(e(l),{key:0,direction:"vertical",gap:"0.5rem"},{default:t(()=>[a(e(l),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[a(e(g),{tone:"info",variant:"soft"},{default:t(()=>[...n[18]||(n[18]=[d("DynamoDB tables",-1)])]),_:1}),c("span",$e,i(r.value.dynamodb.length),1)]),_:1}),a(e(l),{direction:"horizontal",gap:"0.375rem",wrap:""},{default:t(()=>[(s(!0),y(w,null,h(r.value.dynamodb,u=>(s(),f(e(P),{key:`db-${u.name}`,to:`/dynamo/${encodeURIComponent(u.name)}`,style:{"text-decoration":"none"}},{default:t(()=>[a(e($),{size:"sm",variant:"soft",clickable:""},{default:t(()=>[d(i(u.name),1)]),_:2},1024)]),_:2},1032,["to"]))),128))]),_:1})]),_:1})):p("",!0),(L=r.value.sqs)!=null&&L.length?(s(),f(e(l),{key:1,direction:"vertical",gap:"0.5rem"},{default:t(()=>[a(e(l),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[a(e(g),{tone:"warning",variant:"soft"},{default:t(()=>[...n[19]||(n[19]=[d("SQS queues",-1)])]),_:1}),c("span",Se,i(r.value.sqs.length),1)]),_:1}),a(e(l),{direction:"horizontal",gap:"0.375rem",wrap:""},{default:t(()=>[(s(!0),y(w,null,h(r.value.sqs,u=>(s(),f(e(P),{key:`q-${u.name}`,to:"/queues",style:{"text-decoration":"none"}},{default:t(()=>[a(e($),{size:"sm",variant:"soft",clickable:""},{default:t(()=>[d(i(u.name),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})):p("",!0),(j=r.value.sns)!=null&&j.length?(s(),f(e(l),{key:2,direction:"vertical",gap:"0.5rem"},{default:t(()=>[a(e(l),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[a(e(g),{tone:"info",variant:"soft"},{default:t(()=>[...n[20]||(n[20]=[d("SNS topics",-1)])]),_:1}),c("span",Ne,i(r.value.sns.length),1)]),_:1}),a(e(l),{direction:"horizontal",gap:"0.375rem",wrap:""},{default:t(()=>[(s(!0),y(w,null,h(r.value.sns,u=>(s(),f(e($),{key:`t-${u.name}`,size:"sm",variant:"soft"},{default:t(()=>[d(i(u.name),1)]),_:2},1024))),128))]),_:1})]),_:1})):p("",!0),(x=r.value.s3)!=null&&x.length?(s(),f(e(l),{key:3,direction:"vertical",gap:"0.5rem"},{default:t(()=>[a(e(l),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[a(e(g),{tone:"neutral",variant:"soft"},{default:t(()=>[...n[21]||(n[21]=[d("S3 buckets",-1)])]),_:1}),c("span",Le,i(r.value.s3.length),1)]),_:1}),a(e(l),{direction:"horizontal",gap:"0.375rem",wrap:""},{default:t(()=>[(s(!0),y(w,null,h(r.value.s3,u=>(s(),f(e(P),{key:`b-${u.name}`,to:`/buckets/${encodeURIComponent(u.name)}`,style:{"text-decoration":"none"}},{default:t(()=>[a(e($),{size:"sm",variant:"soft",clickable:""},{default:t(()=>[d(i(u.name),1)]),_:2},1024)]),_:2},1032,["to"]))),128))]),_:1})]),_:1})):p("",!0),(W=r.value.lambda)!=null&&W.length?(s(),f(e(l),{key:4,direction:"vertical",gap:"0.5rem"},{default:t(()=>[a(e(l),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[a(e(g),{tone:"neutral",variant:"soft"},{default:t(()=>[...n[22]||(n[22]=[d("Lambda functions",-1)])]),_:1}),c("span",Ce,i(r.value.lambda.length),1)]),_:1}),a(e(l),{direction:"horizontal",gap:"0.375rem",wrap:""},{default:t(()=>[(s(!0),y(w,null,h(r.value.lambda,u=>(s(),f(e($),{key:`l-${u.name}`,size:"sm",variant:"soft"},{default:t(()=>[d(" λ "+i(u.name),1)]),_:2},1024))),128))]),_:1})]),_:1})):p("",!0),(Y=r.value.eventbus)!=null&&Y.length?(s(),f(e(l),{key:5,direction:"vertical",gap:"0.5rem"},{default:t(()=>[a(e(l),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[a(e(g),{tone:"info",variant:"soft"},{default:t(()=>[...n[23]||(n[23]=[d("EventBridge buses",-1)])]),_:1}),c("span",De,i(r.value.eventbus.length),1)]),_:1}),a(e(l),{direction:"horizontal",gap:"0.375rem",wrap:""},{default:t(()=>[(s(!0),y(w,null,h(r.value.eventbus,u=>(s(),f(e($),{key:`eb-${u.name}`,size:"sm",variant:"soft"},{default:t(()=>[d(i(u.name),1)]),_:2},1024))),128))]),_:1})]),_:1})):p("",!0),(Z=r.value["event-rule"])!=null&&Z.length?(s(),f(e(l),{key:6,direction:"vertical",gap:"0.5rem"},{default:t(()=>[a(e(l),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[a(e(g),{tone:"info",variant:"soft"},{default:t(()=>[...n[24]||(n[24]=[d("EventBridge rules",-1)])]),_:1}),c("span",je,i(r.value["event-rule"].length),1)]),_:1}),a(e(l),{direction:"horizontal",gap:"0.375rem",wrap:""},{default:t(()=>[(s(!0),y(w,null,h(r.value["event-rule"],(u,M)=>(s(),f(e($),{key:`er-${M}-${u.name}`,size:"sm",variant:"outline"},{default:t(()=>[d(i(u.name),1)]),_:2},1024))),128))]),_:1})]),_:1})):p("",!0),(A=r.value["event-source"])!=null&&A.length?(s(),f(e(l),{key:7,direction:"vertical",gap:"0.5rem"},{default:t(()=>[a(e(l),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[a(e(g),{tone:"neutral",variant:"soft"},{default:t(()=>[...n[25]||(n[25]=[d("Event-source mappings",-1)])]),_:1}),c("span",xe,i(r.value["event-source"].length),1)]),_:1}),a(e(l),{direction:"horizontal",gap:"0.375rem",wrap:""},{default:t(()=>[(s(!0),y(w,null,h(r.value["event-source"],(u,M)=>(s(),f(e($),{key:`es-${M}-${u.name}`,size:"sm",variant:"outline"},{default:t(()=>[d(i(u.name),1)]),_:2},1024))),128))]),_:1})]),_:1})):p("",!0)]}),_:1})):(s(),f(e(ce),{key:0,title:"No resources declared",description:"This service's CloudFormation template has no resources LSS understands yet."}))]}),_:1})],64)):p("",!0),a(e(fe),{open:U.value,"onUpdate:open":[n[2]||(n[2]=o=>U.value=o),n[3]||(n[3]=o=>{o||te()})],title:`Logs — ${T.serviceName}`,description:`Status: ${Q.value}`,size:"lg"},{default:t(()=>[c("pre",Be,i(O.value.join(`
|
|
2
|
-
`)||"— no output yet —"),1)]),_:1},8,["open","title","description"]),a(e(me),{open:E.value,"onUpdate:open":n[4]||(n[4]=o=>E.value=o),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:ae},null,8,["open","title"])]),_:1}))}});export{Te as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{k as K,l as ae,o as se,m as i,e as d,U as n,q as ne,Z as s,g as P,j as r,s as re,z as le,A as ie,t as C,y as h,i as l,T as o,u as k,f,d as L,p as oe,R as ue,B as de,C as ce,D as ve,E as fe,$ as ge,r as u,b as E,a as w,c as pe}from"./index-DA_C1HOg.js";const me={key:0,style:{display:"flex","justify-content":"center",padding:"2rem"}},ke={style:{"text-decoration":"underline","text-decoration-style":"dotted","text-underline-offset":"3px"}},ye={class:"mono"},Se={key:7,class:"muted",style:{"font-size":"0.75rem"}},be={class:"logs-pre"},_e=K({__name:"ServicesList",setup(O){const c=pe(),B=u([]),U=u(!0),$=u(!1),g=u(""),y=u(null),x=u([]),R=u("stopped"),v=u(null),p=u({}),m=u({}),S=u(null),z=u(!1);let D=null;const Z=[{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"}],G=E(()=>B.value.map(t=>({...t}))),F=E({get:()=>y.value!==null,set:t=>{t||W()}});async function b(){try{B.value=await w.listServices()}catch(t){console.error("Failed to load services:",t)}finally{U.value=!1}}async function H(t){if(!p.value[t]){p.value={...p.value,[t]:!0};try{await w.startService(t),c.add({title:"Service started",description:t,variant:"success"}),await b()}catch(a){c.add({title:"Failed to start service",description:a.message,variant:"danger"})}finally{p.value={...p.value,[t]:!1}}}}async function J(t){if(!m.value[t]){m.value={...m.value,[t]:!0};try{await w.stopService(t),c.add({title:"Service stopped",description:t,variant:"info"}),await b()}catch(a){c.add({title:"Failed to stop service",description:a.message,variant:"danger"})}finally{m.value={...m.value,[t]:!1}}}}async function I(t){try{const a=await w.getServiceLogs(t);x.value=a.logs||[],R.value=a.status||"stopped"}catch(a){console.error("Failed to fetch logs:",a)}}function Q(t){y.value=t,I(t),v.value&&window.clearInterval(v.value),v.value=window.setInterval(()=>I(t),2e3)}function W(){y.value=null,x.value=[],v.value&&window.clearInterval(v.value),v.value=null}async function N(){if(g.value.trim()){$.value=!0;try{await w.registerService(g.value),c.add({title:"Service registered",description:g.value,variant:"success"}),g.value="",await b()}catch(t){c.add({title:"Failed to register service",description:t.message,variant:"danger"})}finally{$.value=!1}}}function X(t){S.value=t,z.value=!0}async function Y(){if(!S.value)return;const t=S.value;try{await w.deleteService(t),c.add({title:"Service deleted",description:t,variant:"info"}),await b()}catch(a){c.add({title:"Failed to delete service",description:a.message,variant:"danger"})}finally{S.value=null,z.value=!1}}function ee(t){return new Date(t).toLocaleString()}function te(t){switch(t){case"running":return"success";case"registered":return"warning";case"stopped":return"neutral";default:return"danger"}}return ae(()=>{b(),D=window.setInterval(b,1e4)}),se(()=>{D&&window.clearInterval(D),v.value&&window.clearInterval(v.value)}),(t,a)=>(i(),d(n(ne),{variant:"outline"},{header:s(()=>[r(n(C),{direction:"horizontal",gap:"0.75rem",align:"center",justify:"space-between"},{default:s(()=>[a[4]||(a[4]=L("strong",null,"Microservices",-1)),r(n(C),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:s(()=>[r(n(ve),{hint:"Absolute path to a Serverless project",htmlFor:"register-path"},{default:s(()=>[r(n(fe),{modelValue:g.value,"onUpdate:modelValue":a[0]||(a[0]=e=>g.value=e),placeholder:"/path/to/microservice",disabled:$.value,onKeyup:ge(N,["enter"])},null,8,["modelValue","disabled"])]),_:1}),r(n(h),{variant:"solid",loading:$.value,disabled:!g.value.trim(),onClick:N},{default:s(()=>[...a[3]||(a[3]=[l(" Register ",-1)])]),_:1},8,["loading","disabled"])]),_:1})]),_:1})]),default:s(()=>[U.value?(i(),P("div",me,[r(n(re),{label:"Loading services..."})])):B.value.length?(i(),d(n(ie),{key:2,columns:Z,rows:G.value},{"cell-name":s(({row:e})=>[r(n(ue),{to:`/services/${encodeURIComponent(String(e.name))}`,style:{color:"inherit","text-decoration":"none"}},{default:s(()=>[L("strong",ke,o(e.name),1)]),_:2},1032,["to"])]),"cell-status":s(({row:e})=>[r(n(oe),{tone:te(String(e.status)),variant:"soft"},{default:s(()=>[l(o(e.status),1)]),_:2},1032,["tone"])]),"cell-root":s(({row:e})=>[L("span",ye,o(e.root),1)]),"cell-resourceBreakdown":s(({row:e})=>[r(n(C),{direction:"horizontal",gap:"0.25rem",wrap:""},{default:s(()=>{var _,T,V,j,q,A,M;return[(_=e.resourceBreakdown)!=null&&_.lambdas?(i(),d(n(k),{key:0,size:"sm",variant:"soft"},{default:s(()=>[l(" λ "+o(e.resourceBreakdown.lambdas),1)]),_:2},1024)):f("",!0),(T=e.resourceBreakdown)!=null&&T.tables?(i(),d(n(k),{key:1,size:"sm",variant:"soft"},{default:s(()=>[l(" 🗄 "+o(e.resourceBreakdown.tables),1)]),_:2},1024)):f("",!0),(V=e.resourceBreakdown)!=null&&V.queues?(i(),d(n(k),{key:2,size:"sm",variant:"soft"},{default:s(()=>[l(" 📨 "+o(e.resourceBreakdown.queues),1)]),_:2},1024)):f("",!0),(j=e.resourceBreakdown)!=null&&j.topics?(i(),d(n(k),{key:3,size:"sm",variant:"soft"},{default:s(()=>[l(" 📣 "+o(e.resourceBreakdown.topics),1)]),_:2},1024)):f("",!0),(q=e.resourceBreakdown)!=null&&q.buckets?(i(),d(n(k),{key:4,size:"sm",variant:"soft"},{default:s(()=>[l(" 🪣 "+o(e.resourceBreakdown.buckets),1)]),_:2},1024)):f("",!0),(A=e.resourceBreakdown)!=null&&A.buses?(i(),d(n(k),{key:5,size:"sm",variant:"soft"},{default:s(()=>[l(" 🔀 "+o(e.resourceBreakdown.buses),1)]),_:2},1024)):f("",!0),(M=e.resourceBreakdown)!=null&&M.eventRules?(i(),d(n(k),{key:6,size:"sm",variant:"soft"},{default:s(()=>[l(" 🎯 "+o(e.resourceBreakdown.eventRules),1)]),_:2},1024)):f("",!0),e.resourcesCount?f("",!0):(i(),P("span",Se," none "))]}),_:2},1024)]),"cell-lastUpdated":s(({row:e})=>[l(o(ee(Number(e.lastUpdated))),1)]),"cell-actions":s(({row:e})=>[r(n(C),{direction:"horizontal",gap:"0.375rem",justify:"flex-end",wrap:""},{default:s(()=>[r(n(h),{size:"sm",variant:"soft",disabled:e.status==="running"||p.value[String(e.name)],loading:p.value[String(e.name)],onClick:_=>H(String(e.name))},{default:s(()=>[...a[5]||(a[5]=[l(" Start ",-1)])]),_:1},8,["disabled","loading","onClick"]),r(n(h),{size:"sm",variant:"soft",disabled:e.status!=="running"||m.value[String(e.name)],loading:m.value[String(e.name)],onClick:_=>J(String(e.name))},{default:s(()=>[...a[6]||(a[6]=[l(" Stop ",-1)])]),_:1},8,["disabled","loading","onClick"]),r(n(h),{size:"sm",variant:"ghost",onClick:_=>Q(String(e.name))},{default:s(()=>[...a[7]||(a[7]=[l(" Logs ",-1)])]),_:1},8,["onClick"]),r(n(h),{size:"sm",variant:"danger",onClick:_=>X(String(e.name))},{default:s(()=>[...a[8]||(a[8]=[l(" Delete ",-1)])]),_:1},8,["onClick"])]),_:2},1024)]),_:1},8,["rows"])):(i(),d(n(le),{key:1,title:"No services registered",description:"Register your first microservice using the form above."})),r(n(de),{open:F.value,"onUpdate:open":a[1]||(a[1]=e=>F.value=e),title:y.value?`Logs — ${y.value}`:"Logs",description:y.value?`Status: ${R.value}`:"",size:"lg"},{default:s(()=>[L("pre",be,o(x.value.join(`
|
|
2
|
-
`)||"— no output yet —"),1)]),_:1},8,["open","title","description"]),r(n(ce),{open:z.value,"onUpdate:open":a[2]||(a[2]=e=>z.value=e),title:`Delete service${S.value?` “${S.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:Y},null,8,["open","title"])]),_:1}))}}),he=K({__name:"ServicesPage",setup(O){return(c,B)=>(i(),d(_e))}});export{he as default};
|