local-serverless-stack 0.3.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 +34 -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 -78
- 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 +57 -0
- package/dist/server/services/config-manager.d.ts.map +1 -1
- package/dist/server/services/config-manager.js +78 -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-packager.d.ts +1 -0
- package/dist/server/services/serverless-packager.d.ts.map +1 -1
- package/dist/server/services/serverless-packager.js +12 -5
- package/dist/server/services/serverless-packager.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 +2 -2
- 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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "local-serverless-stack",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Local control plane for serverless development with LocalStack orchestration",
|
|
5
5
|
"author": "LSS Contributors",
|
|
6
6
|
"license": "MIT",
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
"typescript-eslint": "^8.53.1"
|
|
102
102
|
},
|
|
103
103
|
"engines": {
|
|
104
|
-
"node": ">=
|
|
104
|
+
"node": ">=20.0.0"
|
|
105
105
|
},
|
|
106
106
|
"repository": {
|
|
107
107
|
"type": "git",
|
|
@@ -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};
|