local-serverless-stack 0.11.0 → 0.13.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 +11 -3
- package/README.md +107 -11
- package/dist/server/engine/emulators/s3/index.d.ts +13 -0
- package/dist/server/engine/emulators/s3/index.d.ts.map +1 -1
- package/dist/server/engine/emulators/s3/index.js +154 -1
- package/dist/server/engine/emulators/s3/index.js.map +1 -1
- package/dist/server/index.js +2 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/routes/secrets.d.ts +3 -0
- package/dist/server/routes/secrets.d.ts.map +1 -0
- package/dist/server/routes/secrets.js +0 -0
- package/dist/server/routes/secrets.js.map +1 -0
- package/dist/server/services/secrets-explorer.d.ts +39 -0
- package/dist/server/services/secrets-explorer.d.ts.map +1 -0
- package/dist/server/services/secrets-explorer.js +105 -0
- package/dist/server/services/secrets-explorer.js.map +1 -0
- package/dist/ui/assets/{ApisPage-DyjG-weG.js → ApisPage-Dg-fuYQY.js} +1 -1
- package/dist/ui/assets/{BucketDetailPage-Bvrk1L6q.js → BucketDetailPage-By9deUkc.js} +1 -1
- package/dist/ui/assets/{BucketsPage-KgeLoK6e.js → BucketsPage-idHR6yXh.js} +1 -1
- package/dist/ui/assets/{DynamoPage-C8rwaEIi.js → DynamoPage-k8NQGeJ_.js} +1 -1
- package/dist/ui/assets/{DynamoTablePage-CN5P5f7S.js → DynamoTablePage-C-LPU3I7.js} +1 -1
- package/dist/ui/assets/{LambdaDetailPage-BPhEkF44.js → LambdaDetailPage-D8HVidB_.js} +1 -1
- package/dist/ui/assets/{LambdasPage-Dz4wxjVd.js → LambdasPage-B19rwgUM.js} +1 -1
- package/dist/ui/assets/{OpenSearchCollectionPage-B3s964oC.js → OpenSearchCollectionPage-Bmc8gI8s.js} +1 -1
- package/dist/ui/assets/{OpenSearchPage-0fTJJovd.js → OpenSearchPage-CDFY7dS9.js} +1 -1
- package/dist/ui/assets/OverviewPage-CWrXkA8s.js +1 -0
- package/dist/ui/assets/{QueueDetailPage-peLph1_v.js → QueueDetailPage-CGcXlOrN.js} +1 -1
- package/dist/ui/assets/{QueuesPage-CF9yiBkq.js → QueuesPage-BMU0DBMz.js} +1 -1
- package/dist/ui/assets/SecretsPage-Dnkt3P3P.css +1 -0
- package/dist/ui/assets/SecretsPage-RgJc26ab.js +1 -0
- package/dist/ui/assets/{ServiceDetailPage-ZGLPswmY.js → ServiceDetailPage-BZnTIbac.js} +1 -1
- package/dist/ui/assets/{ServicesPage-DsoZBBxo.js → ServicesPage-BJCWxYkd.js} +1 -1
- package/dist/ui/assets/_plugin-vue_export-helper-DlAUqK2U.js +1 -0
- package/dist/ui/assets/{index-BP9zQ9L-.js → index-DGkmrq2b.js} +9 -9
- package/dist/ui/index.html +1 -1
- package/package.json +2 -1
- package/dist/ui/assets/OverviewPage-B13l71G0.js +0 -1
package/dist/ui/index.html
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<meta charset="UTF-8" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>LSS Orchestrator</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-DGkmrq2b.js"></script>
|
|
9
9
|
<link rel="stylesheet" crossorigin href="/assets/index-DH7RTkRh.css">
|
|
10
10
|
</head>
|
|
11
11
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "local-serverless-stack",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"description": "Local control plane for serverless development with LocalStack orchestration",
|
|
5
5
|
"author": "LSS Contributors",
|
|
6
6
|
"license": "MIT",
|
|
@@ -69,6 +69,7 @@
|
|
|
69
69
|
"@aws-sdk/client-lambda": "^3.709.0",
|
|
70
70
|
"@aws-sdk/client-opensearchserverless": "^3.1085.0",
|
|
71
71
|
"@aws-sdk/client-s3": "^3.1051.0",
|
|
72
|
+
"@aws-sdk/client-secrets-manager": "^3.1085.0",
|
|
72
73
|
"@aws-sdk/client-sns": "^3.709.0",
|
|
73
74
|
"@aws-sdk/client-sqs": "^3.709.0",
|
|
74
75
|
"@aws-sdk/lib-dynamodb": "^3.709.0",
|
|
@@ -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 w,r as b,m as v,j as n,d as o,p,i as d,T as u,q as z,g as h,s as K,u as N,v as X,F as O,n as I,f as R,w as q,x as y,R as Y,y as ee,b as g}from"./index-BP9zQ9L-.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"}},ce={class:"muted",style:{"font-size":"0.825rem"}},de=W({__name:"OverviewPage",setup($){const f=b(null),c=b(null),_=b([]),S=b([]),A=b([]),k=b({tables:[],queues:[],topics:[],buckets:[],collections:[]}),C=b(!0);let D=null;async function T(){try{const[r,t,s,l,L,B]=await Promise.all([w.checkHealth(),w.getConfig(),w.listServices(),w.listResources(),w.listLambdas().catch(()=>[]),w.listApis().catch(()=>[])]);f.value=r,c.value=t,_.value=s,k.value=l,S.value=L,A.value=B}catch(r){console.error("Overview load failed:",r)}finally{C.value=!1}}const F=g(()=>_.value.filter(r=>r.status==="running").length),V=g(()=>_.value.length),Q=g(()=>S.value.filter(r=>r.status==="online").length),M=g(()=>S.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=c.value)!=null&&r.autoPackage)}),P=g(()=>{var r;return!!((r=c.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[d(" 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(()=>[d(" 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]=[d("Dynamo Proxy off",-1)])]),_:1})),n(e(p),{tone:x.value?"info":"neutral",variant:"soft"},{default:a(()=>[d(" Auto-package "+u(x.value?"on":"off"),1)]),_:1},8,["tone"]),n(e(p),{tone:P.value?"info":"neutral",variant:"soft"},{default:a(()=>[d(" 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(O,{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[d(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=c.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=c.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[d(u(((l=(s=c.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[d(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]=[d("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(()=>[d(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(()=>[d(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=c.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=c.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(O,null,I(((l=c.value)==null?void 0:l.services)||[],B=>(v(),m(e(N),{key:B,size:"sm",variant:"soft"},{default:a(()=>[d(u(B),1)]),_:2},1024))),128)),(((L=c.value)==null?void 0:L.services)||[]).length?R("",!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=c.value)==null?void 0:l.seedsDir)||"—"),1)]}),_:1}),(s=c.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(c.value.configPath),1)]),_:1})):R("",!0)]}),_:1})]),_:1})]),_:1}),n(e(q),{columns:5,gap:"1rem"},{default:a(()=>{var s;return[n(e(y),{label:"Services running",value:`${F.value} / ${V.value}`,tone:"success"},null,8,["value"]),n(e(y),{label:"Lambdas online",value:`${Q.value} / ${M.value}`,tone:"success"},null,8,["value"]),n(e(y),{label:"API routes",value:U.value,tone:"info"},null,8,["value"]),n(e(y),{label:"DynamoDB tables",value:k.value.tables.length,tone:"info"},null,8,["value"]),n(e(y),{label:"SQS queues",value:k.value.queues.length,tone:"warning"},null,8,["value"]),n(e(y),{label:"SNS topics",value:k.value.topics.length,tone:"info"},null,8,["value"]),n(e(y),{label:"S3 buckets",value:k.value.buckets.length,tone:"neutral"},null,8,["value"]),n(e(y),{label:"OpenSearch collections",value:((s=k.value.collections)==null?void 0:s.length)??0,tone:"info"},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(O,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(()=>[d(u(s.status==="covered"?"Supported":"Planned"),1)]),_:2},1032,["tone"])]),_:2},1024),o("span",ce,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]=[d("Open →",-1)])]),_:1})]),_:1},8,["to"])):R("",!0)]),_:2},1024)]),_:2},1024)),64))]),_:1})]),_:1})],64))]),_:1}))}}),ve=($,f)=>{const c=$.__vccOpts||$;for(const[_,S]of f)c[_]=S;return c},pe=ve(de,[["__scopeId","data-v-7b113cd8"]]);export{pe as default};
|