local-serverless-stack 0.4.0 → 0.5.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 +21 -0
- package/dist/client/index.d.ts +7 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +6 -0
- package/dist/client/index.js.map +1 -1
- package/dist/client/namespaces/apis.d.ts +48 -0
- package/dist/client/namespaces/apis.d.ts.map +1 -0
- package/dist/client/namespaces/apis.js +12 -0
- package/dist/client/namespaces/apis.js.map +1 -0
- package/dist/client/namespaces/lambdas.d.ts +61 -0
- package/dist/client/namespaces/lambdas.d.ts.map +1 -0
- package/dist/client/namespaces/lambdas.js +13 -0
- package/dist/client/namespaces/lambdas.js.map +1 -0
- package/dist/client/namespaces/services.d.ts +40 -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 +2 -0
- package/dist/client/types.d.ts.map +1 -1
- package/dist/server/index.js +25 -2
- package/dist/server/index.js.map +1 -1
- package/dist/server/routes/apis.d.ts +3 -0
- package/dist/server/routes/apis.d.ts.map +1 -0
- package/dist/server/routes/apis.js +54 -0
- package/dist/server/routes/apis.js.map +1 -0
- package/dist/server/routes/lambdas.d.ts +3 -0
- package/dist/server/routes/lambdas.d.ts.map +1 -0
- package/dist/server/routes/lambdas.js +85 -0
- package/dist/server/routes/lambdas.js.map +1 -0
- package/dist/server/routes/services.d.ts.map +1 -1
- package/dist/server/routes/services.js +91 -81
- package/dist/server/routes/services.js.map +1 -1
- package/dist/server/runtime/runtime-worker.d.ts +2 -0
- package/dist/server/runtime/runtime-worker.d.ts.map +1 -0
- package/dist/server/runtime/runtime-worker.js +207 -0
- package/dist/server/runtime/runtime-worker.js.map +1 -0
- package/dist/server/services/api-gateway-events.d.ts +44 -0
- package/dist/server/services/api-gateway-events.d.ts.map +1 -0
- package/dist/server/services/api-gateway-events.js +299 -0
- package/dist/server/services/api-gateway-events.js.map +1 -0
- package/dist/server/services/authorizer-service.d.ts +25 -0
- package/dist/server/services/authorizer-service.d.ts.map +1 -0
- package/dist/server/services/authorizer-service.js +0 -0
- package/dist/server/services/authorizer-service.js.map +1 -0
- package/dist/server/services/cache-manager.d.ts +6 -0
- package/dist/server/services/cache-manager.d.ts.map +1 -1
- package/dist/server/services/cache-manager.js.map +1 -1
- package/dist/server/services/config-manager.d.ts +34 -0
- package/dist/server/services/config-manager.d.ts.map +1 -1
- package/dist/server/services/config-manager.js +48 -0
- package/dist/server/services/config-manager.js.map +1 -1
- package/dist/server/services/function-registry.d.ts +33 -0
- package/dist/server/services/function-registry.d.ts.map +1 -0
- package/dist/server/services/function-registry.js +100 -0
- package/dist/server/services/function-registry.js.map +1 -0
- package/dist/server/services/gateway-manager.d.ts +31 -0
- package/dist/server/services/gateway-manager.d.ts.map +1 -0
- package/dist/server/services/gateway-manager.js +292 -0
- package/dist/server/services/gateway-manager.js.map +1 -0
- package/dist/server/services/lambda-runtime-manager.d.ts +52 -0
- package/dist/server/services/lambda-runtime-manager.d.ts.map +1 -0
- package/dist/server/services/lambda-runtime-manager.js +326 -0
- package/dist/server/services/lambda-runtime-manager.js.map +1 -0
- package/dist/server/services/localstack-manager.d.ts.map +1 -1
- package/dist/server/services/localstack-manager.js +9 -0
- package/dist/server/services/localstack-manager.js.map +1 -1
- package/dist/server/services/serverless-state-parser.d.ts +86 -0
- package/dist/server/services/serverless-state-parser.d.ts.map +1 -0
- package/dist/server/services/serverless-state-parser.js +245 -0
- package/dist/server/services/serverless-state-parser.js.map +1 -0
- package/dist/server/services/service-registrar.d.ts +34 -0
- package/dist/server/services/service-registrar.d.ts.map +1 -0
- package/dist/server/services/service-registrar.js +262 -0
- package/dist/server/services/service-registrar.js.map +1 -0
- package/dist/server/services/source-watcher.d.ts +24 -0
- package/dist/server/services/source-watcher.d.ts.map +1 -0
- package/dist/server/services/source-watcher.js +101 -0
- package/dist/server/services/source-watcher.js.map +1 -0
- package/dist/ui/assets/ApisPage-DdgKjEdS.js +1 -0
- package/dist/ui/assets/{BucketDetailPage-Hg4Gg3jC.js → BucketDetailPage-DZQGxm0y.js} +1 -1
- package/dist/ui/assets/{BucketsPage-BHkg7TQp.js → BucketsPage-xYXzxCvd.js} +1 -1
- package/dist/ui/assets/{DynamoPage-CH_TgPh_.js → DynamoPage-B1__Rjr2.js} +1 -1
- package/dist/ui/assets/{DynamoTablePage-BPvl5y6_.js → DynamoTablePage-BCoxPdXW.js} +1 -1
- package/dist/ui/assets/LambdaDetailPage-B85CA8tb.js +4 -0
- package/dist/ui/assets/LambdasPage-_TtxQMT_.js +1 -0
- package/dist/ui/assets/{OverviewPage-CwLnw4VW.css → OverviewPage-6jDXV1jr.css} +1 -1
- package/dist/ui/assets/OverviewPage-CqTKTY64.js +1 -0
- package/dist/ui/assets/{QueueDetailPage-DHDPgRDc.js → QueueDetailPage-BOr_sImA.js} +1 -1
- package/dist/ui/assets/{QueuesPage-D5YcEbUU.js → QueuesPage-DpByfcM5.js} +1 -1
- package/dist/ui/assets/{ServiceDetailPage-DxJ0t7HQ.js → ServiceDetailPage-DsWgV-ad.js} +1 -1
- package/dist/ui/assets/{ServicesPage-DWDaaOz9.js → ServicesPage-CGlpsj98.js} +1 -1
- package/dist/ui/assets/{index-D3WwZ4lY.js → index-BWlB542w.js} +11 -11
- package/dist/ui/index.html +1 -1
- package/package.json +1 -1
- package/packages/serverless-plugin/README.md +21 -3
- package/packages/serverless-plugin/dist/index.js +8 -3
- package/packages/serverless-plugin/dist/index.js.map +1 -1
- package/dist/ui/assets/OverviewPage-nhomNDqx.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-BWlB542w.js"></script>
|
|
9
9
|
<link rel="stylesheet" crossorigin href="/assets/index-EYnsoJOq.css">
|
|
10
10
|
</head>
|
|
11
11
|
|
package/package.json
CHANGED
|
@@ -28,15 +28,33 @@ custom:
|
|
|
28
28
|
|
|
29
29
|
After running `sls package` or `sls deploy`:
|
|
30
30
|
|
|
31
|
-
1. The plugin
|
|
32
|
-
2.
|
|
33
|
-
3.
|
|
31
|
+
1. The plugin sends a registration request to the Orchestrator (service path, ports, region)
|
|
32
|
+
2. The Orchestrator reads the `sls package` artifacts from `.serverless/` (CloudFormation template + `serverless-state.json`)
|
|
33
|
+
3. It provisions resources (DynamoDB, SQS, SNS, S3) to LocalStack
|
|
34
|
+
4. It registers the service's Lambda functions, HTTP routes and authorizers, starts a runtime worker, and binds the service's API port (30xx) and Lambda-invoke port (130xx) — replacing `serverless-offline`
|
|
34
35
|
|
|
35
36
|
## Configuration Options
|
|
36
37
|
|
|
37
38
|
- `enabled` (boolean, default: `true`): Enable/disable the plugin
|
|
38
39
|
- `orchestratorUrl` (string, default: `http://localhost:3100`): Orchestrator API endpoint
|
|
39
40
|
|
|
41
|
+
### Service ports
|
|
42
|
+
|
|
43
|
+
The plugin reports which ports LSS should serve the service on:
|
|
44
|
+
|
|
45
|
+
```yaml
|
|
46
|
+
custom:
|
|
47
|
+
lss: # preferred — explicit LSS ports
|
|
48
|
+
apiPort: 3010 # API Gateway emulator (HTTP routes)
|
|
49
|
+
invokePort: 13010 # AWS Lambda Invoke API
|
|
50
|
+
serverless-offline: # fallback — drop-in for services already using offline
|
|
51
|
+
httpPort: 3010
|
|
52
|
+
lambdaPort: 13010
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
If only `apiPort` is known, the orchestrator derives `invokePort = apiPort + 10000`
|
|
56
|
+
(configurable via `lambdaRuntime.invokePortOffset`).
|
|
57
|
+
|
|
40
58
|
### Example with custom config:
|
|
41
59
|
|
|
42
60
|
```yaml
|
|
@@ -63,9 +63,13 @@ class ServerlessOrchestratorPlugin {
|
|
|
63
63
|
const servicePath = this.serverless.config.servicePath;
|
|
64
64
|
const serviceName = this.serverless.service?.service || this.serverless.config.service || 'unknown';
|
|
65
65
|
const region = this.serverless.service?.provider?.region; // Don't use fallback, let orchestrator handle it
|
|
66
|
-
//
|
|
67
|
-
|
|
68
|
-
|
|
66
|
+
// Port discovery: custom.lss wins; custom.serverless-offline keeps drop-in
|
|
67
|
+
// compatibility for services already configured for offline (httpPort →
|
|
68
|
+
// apiPort, lambdaPort → invokePort).
|
|
69
|
+
const lssConfig = this.serverless.service?.custom?.lss || {};
|
|
70
|
+
const serverlessOfflineConfig = this.serverless.service?.custom?.['serverless-offline'] || {};
|
|
71
|
+
const invokePort = lssConfig.invokePort ?? serverlessOfflineConfig.lambdaPort;
|
|
72
|
+
const apiPort = lssConfig.apiPort ?? serverlessOfflineConfig.httpPort;
|
|
69
73
|
if (region) {
|
|
70
74
|
this.log(`Registering service "${serviceName}" (region: ${region} from Serverless Framework) with orchestrator at ${this.orchestratorUrl}...`, 'info');
|
|
71
75
|
}
|
|
@@ -81,6 +85,7 @@ class ServerlessOrchestratorPlugin {
|
|
|
81
85
|
body: JSON.stringify({
|
|
82
86
|
servicePath,
|
|
83
87
|
invokePort,
|
|
88
|
+
...(apiPort !== undefined && { apiPort }),
|
|
84
89
|
...(region && { region }), // Only include region if defined in Serverless Framework
|
|
85
90
|
}),
|
|
86
91
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AA2B1B,MAAM,4BAA4B;IACxB,UAAU,CAAqB;IAC/B,eAAe,CAAS;IACxB,OAAO,CAAU;IAClB,KAAK,CAAsC;IAElD,YAAY,UAA8B,EAAE,UAAyB,EAAE;QACrE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC;QAEhF,oDAAoD;QACpD,MAAM,MAAM,GAAG;YACb,OAAO,EAAE,IAAI;YACb,eAAe,EAAE,uBAAuB;YACxC,GAAG,YAAY;YACf,GAAG,OAAO;SACM,CAAC;QAEnB,8EAA8E;QAC9E,2EAA2E;QAC3E,mEAAmE;QACnE,uEAAuE;QACvE,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACjC,MAAM,CAAC,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;QACxD,CAAC;aAAM,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;YAC1C,MAAM,CAAC,eAAe,GAAG,oBAAoB,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;QAChF,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;YACrC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,OAAO,CAAC;QAChE,CAAC;QAED,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAgB,CAAC;QAC/C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC;QAExC,IAAI,CAAC,KAAK,GAAG;YACX,wBAAwB,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClE,mEAAmE;YACnE,sBAAsB,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;YAChE,2BAA2B,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;SACtE,CAAC;IACJ,CAAC;IAEO,GAAG,CAAC,OAAe,EAAE,OAAqC,MAAM;QACtE,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,kBAAkB,EAAE,CAAC;QAElD,IAAI,gBAAgB,GAAG,EAAE,CAAC;QAC1B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,SAAS;gBACZ,gBAAgB,GAAG,eAAK,CAAC,KAAK,CAAC,MAAM,SAAS,KAAK,OAAO,EAAE,CAAC,CAAC;gBAC9D,MAAM;YACR,KAAK,OAAO;gBACV,gBAAgB,GAAG,eAAK,CAAC,GAAG,CAAC,MAAM,SAAS,KAAK,OAAO,EAAE,CAAC,CAAC;gBAC5D,MAAM;YACR;gBACE,gBAAgB,GAAG,eAAK,CAAC,IAAI,CAAC,MAAM,SAAS,KAAK,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAChC,CAAC;IAEO,KAAK,CAAC,wBAAwB;QACpC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,CAAC;QACpG,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,iDAAiD;QAE3G,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as $,v as K,u as M,i as g,S as t,G as e,f as r,d as h,y as b,w as f,n,h as o,_ as p,m as c,E as u,K as w,k as _,R as G,B as N,Y as H,F as L,z as T,j as D,D as R,s as S,a as U,A as W,g as y}from"./index-D3WwZ4lY.js";const Y={key:0,style:{display:"flex","justify-content":"center",padding:"2rem"}},Z={class:"mono"},J={class:"mono",style:{"font-size":"0.8rem"}},X={class:"mono"},ee={class:"mono"},te={key:0,class:"muted"},ae={class:"mono",style:{"font-size":"0.75rem"}},ne={class:"mono",style:{"font-size":"0.75rem"}},se={style:{"font-size":"1.05rem"}},oe={class:"muted",style:{"font-size":"0.825rem"}},le=$({__name:"OverviewPage",setup(P){const v=b(null),d=b(null),k=b([]),m=b({tables:[],queues:[],topics:[],buckets:[]}),C=b(!0);let B=null;async function E(){try{const[i,a,s,l]=await Promise.all([h.checkHealth(),h.getConfig(),h.listServices(),h.listResources()]);v.value=i,d.value=a,k.value=s,m.value=l}catch(i){console.error("Overview load failed:",i)}finally{C.value=!1}}const F=y(()=>k.value.filter(i=>i.status==="running").length),I=y(()=>k.value.length),V=y(()=>{var i;return(i=v.value)!=null&&i.localstack?"success":"danger"}),O=y(()=>{var i,a;return!!((a=(i=v.value)==null?void 0:i.dynamoProxy)!=null&&a.enabled)}),z=y(()=>{var i,a;return!!((a=(i=v.value)==null?void 0:i.dynamoProxy)!=null&&a.running)}),j=y(()=>{var i;return!!((i=d.value)!=null&&i.autoPackage)}),x=y(()=>{var i;return!!((i=d.value)!=null&&i.persistence)}),Q=[{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 K(()=>{E(),B=window.setInterval(E,15e3)}),M(()=>{B&&window.clearInterval(B)}),(i,a)=>(f(),g(e(r),{direction:"vertical",gap:"1.5rem"},{default:t(()=>[n(e(w),{variant:"outline",class:"overview-hero"},{default:t(()=>[n(e(r),{direction:"vertical",gap:"1rem"},{default:t(()=>[n(e(r),{direction:"horizontal",gap:"0.75rem",align:"center",wrap:""},{default:t(()=>[a[1]||(a[1]=o("span",{style:{"font-size":"1.75rem"}},"⚡",-1)),n(e(r),{direction:"vertical",gap:"0.125rem"},{default:t(()=>[...a[0]||(a[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}),a[3]||(a[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(r),{direction:"horizontal",gap:"0.5rem",wrap:""},{default:t(()=>[n(e(p),{tone:V.value,variant:"soft"},{default:t(()=>{var s;return[c(" LocalStack "+u((s=v.value)!=null&&s.localstack?"running":"offline"),1)]}),_:1},8,["tone"]),O.value?(f(),g(e(p),{key:0,tone:z.value?"success":"warning",variant:"soft"},{default:t(()=>[c(" Dynamo Proxy "+u(z.value?"on":"enabled (not listening)"),1)]),_:1},8,["tone"])):(f(),g(e(p),{key:1,tone:"neutral",variant:"soft"},{default:t(()=>[...a[2]||(a[2]=[c("Dynamo Proxy off",-1)])]),_:1})),n(e(p),{tone:j.value?"info":"neutral",variant:"soft"},{default:t(()=>[c(" Auto-package "+u(j.value?"on":"off"),1)]),_:1},8,["tone"]),n(e(p),{tone:x.value?"info":"neutral",variant:"soft"},{default:t(()=>[c(" Persistence "+u(x.value?"on":"off"),1)]),_:1},8,["tone"])]),_:1})]),_:1})]),_:1}),C.value&&!v.value?(f(),_("div",Y,[n(e(G),{label:"Loading overview..."})])):(f(),_(L,{key:1},[n(e(R),{columns:2,gap:"1rem"},{default:t(()=>[n(e(w),{variant:"outline"},{header:t(()=>[...a[4]||(a[4]=[o("strong",null,"Server status",-1)])]),default:t(()=>[n(e(r),{direction:"vertical",gap:"0.75rem"},{default:t(()=>[n(e(r),{direction:"horizontal",justify:"space-between",align:"center"},{default:t(()=>{var s;return[a[5]||(a[5]=o("span",{class:"muted"},"LocalStack",-1)),n(e(p),{tone:(s=v.value)!=null&&s.localstack?"success":"danger",variant:"soft"},{default:t(()=>{var l;return[c(u((l=v.value)!=null&&l.localstack?"Running":"Offline"),1)]}),_:1},8,["tone"])]}),_:1}),n(e(r),{direction:"horizontal",justify:"space-between",align:"center"},{default:t(()=>{var s,l;return[a[6]||(a[6]=o("span",{class:"muted"},"Endpoint",-1)),o("span",Z,u(((l=(s=d.value)==null?void 0:s.localstack)==null?void 0:l.endpoint)||"—"),1)]}),_:1}),n(e(r),{direction:"horizontal",justify:"space-between",align:"center"},{default:t(()=>{var s,l;return[a[7]||(a[7]=o("span",{class:"muted"},"Image",-1)),o("span",J,u(((l=(s=d.value)==null?void 0:s.localstack)==null?void 0:l.image)||"—"),1)]}),_:1}),n(e(r),{direction:"horizontal",justify:"space-between",align:"center"},{default:t(()=>[a[8]||(a[8]=o("span",{class:"muted"},"Mode",-1)),n(e(N),{size:"sm",variant:"soft"},{default:t(()=>{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(H)),n(e(r),{direction:"horizontal",justify:"space-between",align:"center"},{default:t(()=>[a[10]||(a[10]=o("span",{class:"muted"},"Dynamo Proxy",-1)),n(e(r),{direction:"horizontal",gap:"0.375rem",align:"center"},{default:t(()=>[O.value?(f(),g(e(p),{key:0,tone:z.value?"success":"warning",variant:"soft"},{default:t(()=>{var s,l;return[c(u(z.value?`Listening :${(l=(s=v.value)==null?void 0:s.dynamoProxy)==null?void 0:l.port}`:"Enabled, not listening"),1)]}),_:1},8,["tone"])):(f(),g(e(p),{key:1,tone:"neutral",variant:"soft"},{default:t(()=>[...a[9]||(a[9]=[c("Disabled",-1)])]),_:1}))]),_:1})]),_:1}),n(e(r),{direction:"horizontal",justify:"space-between",align:"center"},{default:t(()=>[a[11]||(a[11]=o("span",{class:"muted"},"Auto-package",-1)),n(e(p),{tone:j.value?"info":"neutral",variant:"soft"},{default:t(()=>[c(u(j.value?"on":"off"),1)]),_:1},8,["tone"])]),_:1}),n(e(r),{direction:"horizontal",justify:"space-between",align:"center"},{default:t(()=>[a[12]||(a[12]=o("span",{class:"muted"},"Persistence",-1)),n(e(p),{tone:x.value?"info":"neutral",variant:"soft"},{default:t(()=>[c(u(x.value?"on":"off"),1)]),_:1},8,["tone"])]),_:1})]),_:1})]),_:1}),n(e(w),{variant:"outline"},{header:t(()=>[...a[13]||(a[13]=[o("strong",null,"LESC configuration",-1)])]),default:t(()=>[n(e(r),{direction:"vertical",gap:"0.75rem"},{default:t(()=>{var s;return[n(e(r),{direction:"horizontal",justify:"space-between",align:"center"},{default:t(()=>{var l;return[a[14]||(a[14]=o("span",{class:"muted"},"Default region",-1)),o("span",X,u(((l=d.value)==null?void 0:l.region)||"—"),1)]}),_:1}),n(e(r),{direction:"horizontal",justify:"space-between",align:"center"},{default:t(()=>{var l;return[a[15]||(a[15]=o("span",{class:"muted"},"Server port",-1)),o("span",ee,u(((l=d.value)==null?void 0:l.serverPort)||"—"),1)]}),_:1}),n(e(r),{direction:"horizontal",justify:"space-between",align:"start",wrap:""},{default:t(()=>[a[16]||(a[16]=o("span",{class:"muted"},"LocalStack services",-1)),n(e(r),{direction:"horizontal",gap:"0.25rem",wrap:"",justify:"flex-end"},{default:t(()=>{var l,q;return[(f(!0),_(L,null,T(((l=d.value)==null?void 0:l.services)||[],A=>(f(),g(e(N),{key:A,size:"sm",variant:"soft"},{default:t(()=>[c(u(A),1)]),_:2},1024))),128)),(((q=d.value)==null?void 0:q.services)||[]).length?D("",!0):(f(),_("span",te,"—"))]}),_:1})]),_:1}),n(e(r),{direction:"horizontal",justify:"space-between",align:"center"},{default:t(()=>{var l;return[a[17]||(a[17]=o("span",{class:"muted"},"Seeds dir",-1)),o("span",ae,u(((l=d.value)==null?void 0:l.seedsDir)||"—"),1)]}),_:1}),(s=d.value)!=null&&s.configPath?(f(),g(e(r),{key:0,direction:"horizontal",justify:"space-between",align:"center"},{default:t(()=>[a[18]||(a[18]=o("span",{class:"muted"},"Config file",-1)),o("span",ne,u(d.value.configPath),1)]),_:1})):D("",!0)]}),_:1})]),_:1})]),_:1}),n(e(R),{columns:5,gap:"1rem"},{default:t(()=>[n(e(S),{label:"Services running",value:`${F.value} / ${I.value}`,tone:"success"},null,8,["value"]),n(e(S),{label:"DynamoDB tables",value:m.value.tables.length,tone:"info"},null,8,["value"]),n(e(S),{label:"SQS queues",value:m.value.queues.length,tone:"warning"},null,8,["value"]),n(e(S),{label:"SNS topics",value:m.value.topics.length,tone:"info"},null,8,["value"]),n(e(S),{label:"S3 buckets",value:m.value.buckets.length,tone:"neutral"},null,8,["value"])]),_:1}),n(e(w),{variant:"outline"},{header:t(()=>[n(e(r),{direction:"horizontal",justify:"space-between",align:"center"},{default:t(()=>[...a[19]||(a[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:t(()=>[n(e(R),{columns:2,gap:"0.75rem"},{default:t(()=>[(f(),_(L,null,T(Q,s=>n(e(w),{key:s.type,variant:"soft"},{default:t(()=>[n(e(r),{direction:"horizontal",gap:"0.75rem",align:"center",justify:"space-between"},{default:t(()=>[n(e(r),{direction:"vertical",gap:"0.125rem"},{default:t(()=>[n(e(r),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[o("span",se,u(s.status==="covered"?"✓":"⏳"),1),o("strong",null,u(s.type),1),n(e(p),{tone:s.status==="covered"?"success":"neutral",variant:"soft"},{default:t(()=>[c(u(s.status==="covered"?"Supported":"Planned"),1)]),_:2},1032,["tone"])]),_:2},1024),o("span",oe,u(s.description),1)]),_:2},1024),s.to?(f(),g(e(U),{key:0,to:s.to,style:{"text-decoration":"none"}},{default:t(()=>[n(e(W),{size:"sm",variant:"ghost"},{default:t(()=>[...a[20]||(a[20]=[c("Open →",-1)])]),_:1})]),_:1},8,["to"])):D("",!0)]),_:2},1024)]),_:2},1024)),64))]),_:1})]),_:1})],64))]),_:1}))}}),re=(P,v)=>{const d=P.__vccOpts||P;for(const[k,m]of v)d[k]=m;return d},ue=re(le,[["__scopeId","data-v-b8378960"]]);export{ue as default};
|