local-serverless-stack 1.0.0 → 1.1.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 +125 -3
- package/README.md +92 -38
- package/bin/cli.js +218 -28
- package/bin/i18n.js +57 -3
- package/dist/client/index.d.ts +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/namespaces/services.d.ts +46 -0
- package/dist/client/namespaces/services.d.ts.map +1 -1
- package/dist/client/namespaces/services.js +1 -0
- package/dist/client/namespaces/services.js.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +17 -0
- package/dist/mcp/tools.js.map +1 -1
- package/dist/server/engine/backends/self-backend.d.ts +26 -1
- package/dist/server/engine/backends/self-backend.d.ts.map +1 -1
- package/dist/server/engine/backends/self-backend.js +104 -11
- package/dist/server/engine/backends/self-backend.js.map +1 -1
- package/dist/server/engine/emulators/dynamodb/expressions/parser.d.ts.map +1 -1
- package/dist/server/engine/emulators/dynamodb/expressions/parser.js +12 -1
- package/dist/server/engine/emulators/dynamodb/expressions/parser.js.map +1 -1
- package/dist/server/engine/emulators/dynamodb/expressions/reserved-words.d.ts +3 -0
- package/dist/server/engine/emulators/dynamodb/expressions/reserved-words.d.ts.map +1 -0
- package/dist/server/engine/emulators/dynamodb/expressions/reserved-words.js +78 -0
- package/dist/server/engine/emulators/dynamodb/expressions/reserved-words.js.map +1 -0
- package/dist/server/engine/emulators/dynamodb/index.d.ts +11 -0
- package/dist/server/engine/emulators/dynamodb/index.d.ts.map +1 -1
- package/dist/server/engine/emulators/dynamodb/index.js +101 -7
- package/dist/server/engine/emulators/dynamodb/index.js.map +1 -1
- package/dist/server/engine/emulators/dynamodb/query.d.ts +1 -0
- package/dist/server/engine/emulators/dynamodb/query.d.ts.map +1 -1
- package/dist/server/engine/emulators/dynamodb/query.js +34 -6
- package/dist/server/engine/emulators/dynamodb/query.js.map +1 -1
- package/dist/server/engine/emulators/s3/index.d.ts +10 -0
- package/dist/server/engine/emulators/s3/index.d.ts.map +1 -1
- package/dist/server/engine/emulators/s3/index.js +369 -25
- package/dist/server/engine/emulators/s3/index.js.map +1 -1
- package/dist/server/engine/emulators/sqs/index.d.ts +2 -0
- package/dist/server/engine/emulators/sqs/index.d.ts.map +1 -1
- package/dist/server/engine/emulators/sqs/index.js +70 -7
- package/dist/server/engine/emulators/sqs/index.js.map +1 -1
- package/dist/server/engine/emulators/sqs/queue.d.ts +2 -1
- package/dist/server/engine/emulators/sqs/queue.d.ts.map +1 -1
- package/dist/server/engine/emulators/sqs/queue.js +68 -35
- package/dist/server/engine/emulators/sqs/queue.js.map +1 -1
- package/dist/server/engine/emulators/ssm/index.d.ts +31 -0
- package/dist/server/engine/emulators/ssm/index.d.ts.map +1 -0
- package/dist/server/engine/emulators/ssm/index.js +670 -0
- package/dist/server/engine/emulators/ssm/index.js.map +1 -0
- 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 +13 -5
- package/dist/server/engine/http/errors.js.map +1 -1
- package/dist/server/engine/http/is-aws-request.d.ts.map +1 -1
- package/dist/server/engine/http/is-aws-request.js +13 -3
- package/dist/server/engine/http/is-aws-request.js.map +1 -1
- package/dist/server/engine/http/protocols/aws-json.d.ts +1 -0
- package/dist/server/engine/http/protocols/aws-json.d.ts.map +1 -1
- package/dist/server/engine/http/protocols/aws-json.js +13 -0
- package/dist/server/engine/http/protocols/aws-json.js.map +1 -1
- package/dist/server/engine/http/reset.d.ts +4 -0
- package/dist/server/engine/http/reset.d.ts.map +1 -0
- package/dist/server/engine/http/reset.js +17 -0
- package/dist/server/engine/http/reset.js.map +1 -0
- package/dist/server/engine/http/router.d.ts +1 -0
- package/dist/server/engine/http/router.d.ts.map +1 -1
- package/dist/server/engine/http/router.js +185 -34
- package/dist/server/engine/http/router.js.map +1 -1
- package/dist/server/engine/types.d.ts +2 -1
- package/dist/server/engine/types.d.ts.map +1 -1
- package/dist/server/routes/apis.d.ts.map +1 -1
- package/dist/server/routes/apis.js +6 -0
- package/dist/server/routes/apis.js.map +1 -1
- package/dist/server/routes/config.d.ts.map +1 -1
- package/dist/server/routes/config.js +25 -1
- package/dist/server/routes/config.js.map +1 -1
- package/dist/server/routes/lambdas.d.ts.map +1 -1
- package/dist/server/routes/lambdas.js +12 -0
- package/dist/server/routes/lambdas.js.map +1 -1
- package/dist/server/routes/services.d.ts.map +1 -1
- package/dist/server/routes/services.js +66 -5
- package/dist/server/routes/services.js.map +1 -1
- package/dist/server/runtime/runtime-worker.js +40 -3
- package/dist/server/runtime/runtime-worker.js.map +1 -1
- package/dist/server/services/api-gateway-events.d.ts +14 -0
- package/dist/server/services/api-gateway-events.d.ts.map +1 -1
- package/dist/server/services/api-gateway-events.js +114 -8
- package/dist/server/services/api-gateway-events.js.map +1 -1
- package/dist/server/services/artifact-staleness.d.ts +20 -0
- package/dist/server/services/artifact-staleness.d.ts.map +1 -0
- package/dist/server/services/artifact-staleness.js +115 -0
- package/dist/server/services/artifact-staleness.js.map +1 -0
- package/dist/server/services/authorizer-service.d.ts +34 -5
- package/dist/server/services/authorizer-service.d.ts.map +1 -1
- package/dist/server/services/authorizer-service.js +0 -0
- package/dist/server/services/authorizer-service.js.map +1 -1
- package/dist/server/services/cache-manager.d.ts +5 -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/cfn-intrinsics.d.ts +63 -0
- package/dist/server/services/cfn-intrinsics.d.ts.map +1 -0
- package/dist/server/services/cfn-intrinsics.js +403 -0
- package/dist/server/services/cfn-intrinsics.js.map +1 -0
- package/dist/server/services/cfn-physical-values.d.ts +51 -0
- package/dist/server/services/cfn-physical-values.d.ts.map +1 -0
- package/dist/server/services/cfn-physical-values.js +186 -0
- package/dist/server/services/cfn-physical-values.js.map +1 -0
- package/dist/server/services/cloudformation-parser.d.ts +26 -3
- package/dist/server/services/cloudformation-parser.d.ts.map +1 -1
- package/dist/server/services/cloudformation-parser.js +79 -7
- package/dist/server/services/cloudformation-parser.js.map +1 -1
- package/dist/server/services/config-manager.d.ts +49 -2
- package/dist/server/services/config-manager.d.ts.map +1 -1
- package/dist/server/services/config-manager.js +206 -24
- package/dist/server/services/config-manager.js.map +1 -1
- package/dist/server/services/gateway-manager.d.ts.map +1 -1
- package/dist/server/services/gateway-manager.js +52 -20
- 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 +49 -15
- package/dist/server/services/lambda-runtime-manager.js.map +1 -1
- package/dist/server/services/raw-api-assembler.d.ts +1 -1
- package/dist/server/services/raw-api-assembler.d.ts.map +1 -1
- package/dist/server/services/raw-api-assembler.js +18 -8
- package/dist/server/services/raw-api-assembler.js.map +1 -1
- package/dist/server/services/resource-provisioner.d.ts +31 -1
- package/dist/server/services/resource-provisioner.d.ts.map +1 -1
- package/dist/server/services/resource-provisioner.js +257 -25
- package/dist/server/services/resource-provisioner.js.map +1 -1
- package/dist/server/services/s3-explorer.js +1 -1
- package/dist/server/services/seed-manager.d.ts.map +1 -1
- package/dist/server/services/seed-manager.js +11 -6
- package/dist/server/services/seed-manager.js.map +1 -1
- package/dist/server/services/serverless-state-parser.d.ts +45 -2
- package/dist/server/services/serverless-state-parser.d.ts.map +1 -1
- package/dist/server/services/serverless-state-parser.js +217 -29
- package/dist/server/services/serverless-state-parser.js.map +1 -1
- package/dist/server/services/service-graph.d.ts +76 -0
- package/dist/server/services/service-graph.d.ts.map +1 -0
- package/dist/server/services/service-graph.js +914 -0
- package/dist/server/services/service-graph.js.map +1 -0
- package/dist/server/services/service-registrar.d.ts +17 -1
- package/dist/server/services/service-registrar.d.ts.map +1 -1
- package/dist/server/services/service-registrar.js +190 -66
- package/dist/server/services/service-registrar.js.map +1 -1
- package/dist/server/services/service-scanner.d.ts +7 -2
- package/dist/server/services/service-scanner.d.ts.map +1 -1
- package/dist/server/services/service-scanner.js +53 -7
- package/dist/server/services/service-scanner.js.map +1 -1
- package/dist/server/services/source-watcher.d.ts +1 -0
- package/dist/server/services/source-watcher.d.ts.map +1 -1
- package/dist/server/services/source-watcher.js +19 -1
- package/dist/server/services/source-watcher.js.map +1 -1
- package/dist/server/services/worker-runtime.d.ts +82 -0
- package/dist/server/services/worker-runtime.d.ts.map +1 -0
- package/dist/server/services/worker-runtime.js +303 -0
- package/dist/server/services/worker-runtime.js.map +1 -0
- package/dist/ui/assets/ApisPage-BkW-QZ0X.js +1 -0
- package/dist/ui/assets/BucketDetailPage-CJwTQJh7.js +1 -0
- package/dist/ui/assets/BucketsPage-B1xPVhZC.js +1 -0
- package/dist/ui/assets/DynamoPage-DvbpwZDc.js +1 -0
- package/dist/ui/assets/DynamoTablePage-xn3Lq3so.js +3 -0
- package/dist/ui/assets/LambdaDetailPage-BhUyO77H.js +4 -0
- package/dist/ui/assets/LambdasPage-CUF_4rOH.js +1 -0
- package/dist/ui/assets/OnboardingPage-U49THUzu.js +1 -0
- package/dist/ui/assets/OpenSearchCollectionPage-BJTVNCq4.js +1 -0
- package/dist/ui/assets/OpenSearchPage-4s-egkB9.js +1 -0
- package/dist/ui/assets/OverviewPage-DJeJQktG.js +1 -0
- package/dist/ui/assets/{OverviewPage-C1pBJ8aP.css → OverviewPage-DjQETmb_.css} +1 -1
- package/dist/ui/assets/QueueDetailPage-DWsy5Yt8.js +1 -0
- package/dist/ui/assets/QueuesPage-BZJSqman.js +1 -0
- package/dist/ui/assets/SecretsPage-YC9ua54G.js +1 -0
- package/dist/ui/assets/ServiceDetailPage-Cum5frP4.js +2 -0
- package/dist/ui/assets/ServicesPage-IpaPDuqx.js +2 -0
- package/dist/ui/assets/SettingsPage-BiCRU8O6.js +1 -0
- package/dist/ui/assets/index-BDlrAJhi.css +1 -0
- package/dist/ui/assets/index-BouKSS43.js +38 -0
- package/dist/ui/assets/resourceIcons-DZs28nbs.js +1 -0
- package/dist/ui/index.html +5 -2
- package/package.json +1 -1
- package/dist/ui/assets/ApisPage-BOuimwWz.js +0 -1
- package/dist/ui/assets/BucketDetailPage-vLYwhoQt.js +0 -1
- package/dist/ui/assets/BucketsPage-Cu5lU1Hp.js +0 -1
- package/dist/ui/assets/DynamoPage-y3TTEPUL.js +0 -1
- package/dist/ui/assets/DynamoTablePage-BnmSRZjc.js +0 -3
- package/dist/ui/assets/LambdaDetailPage-B5q_d27t.js +0 -4
- package/dist/ui/assets/LambdasPage-CJpRoEDx.js +0 -1
- package/dist/ui/assets/OnboardingPage-D02dymQi.js +0 -1
- package/dist/ui/assets/OpenSearchCollectionPage-B_wWTlfL.js +0 -1
- package/dist/ui/assets/OpenSearchPage-BLEgfF_g.js +0 -1
- package/dist/ui/assets/OverviewPage-EdJWiAt6.js +0 -1
- package/dist/ui/assets/QueueDetailPage-ByEYHvHe.js +0 -1
- package/dist/ui/assets/QueuesPage-CvwYHSll.js +0 -1
- package/dist/ui/assets/SecretsPage-DASw8Ntf.js +0 -1
- package/dist/ui/assets/ServiceDetailPage-BMsUDg6L.js +0 -2
- package/dist/ui/assets/ServicesPage-2JuiIiRr.js +0 -2
- package/dist/ui/assets/SettingsPage-DStO4bgN.js +0 -1
- package/dist/ui/assets/index-BIEznsi4.js +0 -37
- package/dist/ui/assets/index-BRMvNP3Y.css +0 -1
- package/dist/ui/assets/resourceIcons-baecADXA.js +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{b as Ye,l as Re,ad as me,o as De,p as f,f as _,a9 as e,v as ge,ae as t,k as n,x as m,w as N,j as u,a8 as i,N as he,g as R,h as O,F as B,t as V,y as Me,R as Ie,Q as Fe,X as Oe,Y as Be,Z as ze,_ as $e,e as pe,C as j,z as I,G as U,S as We,ac as Ae,aa as Pe,q as K,u as qe,d as J,a as ee,n as Ge,L as Z,B as ne,A as Ve,I as je,J as re,T as ue,V as He,U as Qe,W as xe,c as Ze}from"./index-BouKSS43.js";import{g as se,r as F}from"./resourceIcons-DZs28nbs.js";import{E as Je}from"./engine-D0mFFNbL.js";const de=208,le=48,Te=96,ce=18,fe=24,Se=["route","eventbus","event-rule","sqs","sns","s3","lambda","iam-role","dynamodb","opensearch","secret","external"];function Ee(r){const l=Se.indexOf(r);return l===-1?Se.length:l}function et(r,l){const d=new Set(r.map(s=>s.id)),c=l.filter(s=>d.has(s.from)&&d.has(s.to)),a=c.filter(s=>s.kind!=="iam"),o=new Map;for(const s of r)o.set(s.id,[]);for(const s of a)o.get(s.to).push(s.from);const v=new Map,y=new Set,h=s=>{const b=v.get(s);if(b!==void 0)return b;if(y.has(s))return 0;y.add(s);let T=0;for(const $ of o.get(s)??[])T=Math.max(T,h($)+1);return y.delete(s),v.set(s,T),T};for(const s of r)h(s.id);const p=new Set(a.map(s=>s.from));for(const s of r.filter(b=>b.kind==="iam-role")){const b=c.filter($=>$.to===s.id).map($=>v.get($.from)??0),T=b.length?Math.max(...b)+1:0;v.set(s.id,T);for(const $ of c)$.from!==s.id||p.has($.to)||v.set($.to,Math.max(v.get($.to)??0,T+1))}return v}function tt(r){const l=et(r.nodes,r.edges),d=new Map;for(const p of r.nodes){const s=l.get(p.id)??0,b=d.get(s)??[];b.push(p),d.set(s,b)}const c=[...d.keys()].sort((p,s)=>p-s),a=Math.max(1,...c.map(p=>d.get(p).length)),o=fe*2+a*le+(a-1)*ce,v=fe*2+c.length*de+Math.max(0,c.length-1)*Te,y=new Map;c.forEach((p,s)=>{const b=d.get(p).slice().sort((A,Y)=>{const g=Ee(A.kind)-Ee(Y.kind);return g!==0?g:A.label.localeCompare(Y.label)}),T=b.length*le+(b.length-1)*ce,$=(o-T)/2;b.forEach((A,Y)=>{y.set(A.id,{node:A,x:fe+s*(de+Te),y:$+Y*(le+ce),width:de,height:le,layer:p})})});const h=[];for(const p of r.edges){const s=y.get(p.from),b=y.get(p.to);if(!s||!b)continue;const T=b.layer<=s.layer;h.push({edge:p,fromX:T?s.x:s.x+s.width,fromY:s.y+s.height/2,toX:T?b.x+b.width:b.x,toY:b.y+b.height/2,backwards:T})}return{nodes:[...y.values()],edges:h,width:v,height:o}}function Ne(r,l,d){for(let c=r.nodes.length-1;c>=0;c-=1){const a=r.nodes[c];if(l>=a.x&&l<=a.x+a.width&&d>=a.y&&d<=a.y+a.height)return a}return null}const Ke={"http-route":{token:"--tree-color-chart-1",dashed:!1},authorizer:{token:"--tree-color-chart-5",dashed:!1},"event-source":{token:"--tree-color-chart-2",dashed:!1},"s3-notification":{token:"--tree-color-chart-3",dashed:!1},"event-rule-target":{token:"--tree-color-chart-4",dashed:!1},"event-bus-rule":{token:"--tree-color-chart-4",dashed:!1},"sns-subscription":{token:"--tree-color-chart-6",dashed:!1},redrive:{token:"--tree-color-status-warning",dashed:!1},iam:{token:"--tree-color-chart-7",dashed:!0},env:{token:"--tree-color-text-muted",dashed:!0}},at={surface:["--tree-color-bg-surface","#ffffff"],subtle:["--tree-color-bg-subtle","#f3f4f6"],border:["--tree-color-border-default","#e5e7eb"],borderStrong:["--tree-color-border-strong","#9ca3af"],text:["--tree-color-text-primary","#111827"],muted:["--tree-color-text-muted","#6b7280"],brand:["--tree-color-brand-primary","#0d9488"],focus:["--tree-color-focus-ring","#2563eb"],fontSans:["--tree-font-family-sans","system-ui, sans-serif"],fontMono:["--tree-font-family-mono","ui-monospace, monospace"]};function ve(){const r=window.getComputedStyle(document.documentElement),l=(c,a)=>r.getPropertyValue(c).trim()||a,d={};for(const[c,[a,o]]of Object.entries(at))d[c]=l(a,o);d.edge={};for(const[c,a]of Object.entries(Ke))d.edge[c]=l(a.token,d.muted);return d}function Xe(r,l,d,c){const a=[];for(const o of r){const v=o.attrs.fill??l;let y=d,h=c;const p=o.attrs.transform;if(p){const s=/translate\(\s*(-?[\d.]+)[,\s]+(-?[\d.]+)\s*\)/.exec(p);s&&(y+=Number(s[1]),h+=Number(s[2]))}if(o.tag==="rect"){const s=new Path2D;s.rect(Number(o.attrs.x??0)+y,Number(o.attrs.y??0)+h,Number(o.attrs.width??0),Number(o.attrs.height??0)),a.push({path:s,fill:v})}else if(o.tag==="path"&&o.attrs.d){const s=new Path2D;s.addPath(new Path2D(o.attrs.d),new DOMMatrix().translate(y,h)),a.push({path:s,fill:v})}o.children&&a.push(...Xe(o.children,v,y,h))}return a}const Ce=new Map;function nt(r){const l=se[r];if(!l.startsWith("aws-"))return null;const d=Ce.get(l);if(d)return d;const c=Ye[l];if(!c)return null;const a=Xe(c.nodes,"#000000",0,0);return Ce.set(l,a),a}const oe=22,rt=8,lt=.6;function ot(r,l,d,c,a,o){r.beginPath(),r.moveTo(l+o,d),r.arcTo(l+c,d,l+c,d+a,o),r.arcTo(l+c,d+a,l,d+a,o),r.arcTo(l,d+a,l,d,o),r.arcTo(l,d,l+c,d,o),r.closePath()}function Le(r,l,d){if(r.measureText(l).width<=d)return l;let c=0,a=l.length;for(;c<a;){const o=Math.ceil((c+a)/2);r.measureText(`${l.slice(0,o)}…`).width<=d?c=o:a=o-1}return`${l.slice(0,c)}…`}function st(r,l,d,c){const a=Ke[l.edge.kind],o=d.edge[l.edge.kind]??d.muted;r.save(),r.globalAlpha=c?.18:1,r.strokeStyle=o,r.lineWidth=l.edge.confidence==="inferred"?1:1.75,r.setLineDash(a.dashed?[5,4]:[]);const v=Math.max(36,Math.abs(l.toX-l.fromX)*.45);r.beginPath(),r.moveTo(l.fromX,l.fromY),l.backwards?r.bezierCurveTo(l.fromX-40,l.fromY,l.toX+40,l.toY,l.toX,l.toY):r.bezierCurveTo(l.fromX+v,l.fromY,l.toX-v,l.toY,l.toX,l.toY),r.stroke();const y=l.backwards?-1:1;r.setLineDash([]),r.fillStyle=o,r.beginPath(),r.moveTo(l.toX,l.toY),r.lineTo(l.toX-8*y,l.toY-4),r.lineTo(l.toX-8*y,l.toY+4),r.closePath(),r.fill(),r.restore()}function it(r,l,d,c){const{x:a,y:o,width:v,height:y,node:h}=l;r.save(),r.globalAlpha=c.dimmed?.3:1,ot(r,a,o,v,y,rt),r.fillStyle=h.kind==="external"?d.subtle:d.surface,r.fill(),r.lineWidth=c.hovered?2:1,r.strokeStyle=c.hovered?d.brand:d.border,r.setLineDash(h.kind==="external"?[4,3]:[]),r.stroke(),r.setLineDash([]);const p=nt(h.kind),s=a+12+(p?oe+10:0);if(p){r.save(),r.translate(a+12,o+(y-oe)/2),r.scale(oe/24,oe/24);for(const $ of p)r.fillStyle=$.fill,r.fill($.path,"evenodd");r.restore()}const b=a+v-12-s;r.textBaseline="alphabetic",r.fillStyle=d.text,r.font=`600 12px ${h.kind==="route"?d.fontMono:d.fontSans}`,r.fillText(Le(r,h.label,b),s,o+(h.handler||h.arn?21:29));const T=h.handler??h.arn??"";T&&(r.fillStyle=d.muted,r.font=`11px ${d.fontMono}`,r.fillText(Le(r,T,b),s,o+35)),r.restore()}function ut(r,l){let d=null,c=new Set,a=null,o=ve(),v=null,y=0,h=1;const p=()=>{const D=r.getContext("2d");if(!D||!a)return;const X=r.parentElement,W=(X==null?void 0:X.clientWidth)??0;if(W===0)return;h=Math.min(1,Math.max(lt,W/a.width));const P=a.width*h,w=Math.max(W,P),k=a.height*h,M=Math.min(2,window.devicePixelRatio||1);r.width=Math.round(w*M),r.height=Math.round(k*M),r.style.width=`${w}px`,r.style.height=`${k}px`,D.setTransform(M*h,0,0,M*h,0,0),D.clearRect(0,0,w/h,k/h);const z=new Set;if(v){z.add(v.node.id);for(const L of a.edges)L.edge.from===v.node.id&&z.add(L.edge.to),L.edge.to===v.node.id&&z.add(L.edge.from)}for(const L of a.edges){if(c.has(L.edge.kind))continue;const Q=!v||L.edge.from===v.node.id||L.edge.to===v.node.id;st(D,L,o,!Q)}for(const L of a.nodes)it(D,L,o,{hovered:(v==null?void 0:v.node.id)===L.node.id,dimmed:!!v&&!z.has(L.node.id)})},s=()=>{y||(y=window.requestAnimationFrame(()=>{y=0,p()}))},b=D=>{const X=r.getBoundingClientRect();return{x:(D.clientX-X.left)/h,y:(D.clientY-X.top)/h}},T=D=>{if(!a)return;const{x:X,y:W}=b(D),P=Ne(a,X,W);(P==null?void 0:P.node.id)!==(v==null?void 0:v.node.id)&&(v=P,r.style.cursor=P?"pointer":"default",l.onHover(P?P.node:null),s())},$=()=>{v&&(v=null,r.style.cursor="default",l.onHover(null),s())},A=D=>{if(!a)return;const{x:X,y:W}=b(D),P=Ne(a,X,W);P&&l.onActivate(P.node)};r.addEventListener("pointermove",T),r.addEventListener("pointerleave",$),r.addEventListener("click",A);const Y=new ResizeObserver(s),g=r.parentElement;g&&(Y.observe(g),g.style.overflowX="auto",g.style.maxWidth="100%",g.style.minWidth="0",g.style.width="100%");const G=new MutationObserver(()=>{o=ve(),s()});return G.observe(document.documentElement,{attributes:!0,attributeFilter:["data-tree-theme"]}),{render(D,X){d=D,c=X,a=d?tt(d):null,v=v&&a?a.nodes.find(W=>W.node.id===v.node.id)??null:null,o=ve(),s()},destroy(){y&&window.cancelAnimationFrame(y),r.removeEventListener("pointermove",T),r.removeEventListener("pointerleave",$),r.removeEventListener("click",A),Y.disconnect(),G.disconnect()}}}const dt=["aria-label"],ct=Re({__name:"ServiceGraphCard",props:{serviceName:{}},setup(r,{expose:l}){const d=r,c=Ae(),{t:a}=Pe(),o=K(null),v=K(!0),y=K(null),h=K("diagram"),p=K(null),s=K(null),b=qe(null),T=K(new Set),$=J(()=>({"http-route":a("services.graphKindHttpRoute"),authorizer:a("services.graphKindAuthorizer"),"event-source":a("services.graphKindEventSource"),"s3-notification":a("services.graphKindS3Notification"),"event-rule-target":a("services.graphKindEventRuleTarget"),"event-bus-rule":a("services.graphKindEventBusRule"),"sns-subscription":a("services.graphKindSnsSubscription"),redrive:a("services.graphKindRedrive"),iam:a("services.graphKindIam"),env:a("services.graphKindEnv")})),A=J(()=>{var w;return new Map((((w=o.value)==null?void 0:w.nodes)??[]).map(k=>[k.id,k]))}),Y=J(()=>[{key:"source",label:a("services.graphColSource")},{key:"link",label:a("services.graphColLink")},{key:"target",label:a("services.graphColTarget")},{key:"evidence",label:a("services.graphColEvidence")}]),g=J(()=>{var w;return(((w=o.value)==null?void 0:w.edges)??[]).filter(k=>!T.value.has(k.kind)).map(k=>{var M,z,L,Q;return{id:k.id,source:((M=A.value.get(k.from))==null?void 0:M.label)??k.from,sourceKind:((z=A.value.get(k.from))==null?void 0:z.kind)??"external",target:((L=A.value.get(k.to))==null?void 0:L.label)??k.to,targetKind:((Q=A.value.get(k.to))==null?void 0:Q.kind)??"external",link:$.value[k.kind],detail:k.detail??"",confidence:k.confidence,serviceWide:k.serviceWide===!0}})}),G=J(()=>g.value.length);function D(w){switch(w.kind){case"lambda":return`/lambdas/${encodeURIComponent(w.label)}`;case"dynamodb":return`/dynamo/${encodeURIComponent(w.label)}`;case"sqs":return`/queues/${encodeURIComponent(w.label)}`;case"s3":return`/buckets/${encodeURIComponent(w.label)}`;case"opensearch":return`/opensearch/${encodeURIComponent(w.label)}`;case"secret":return"/secrets";case"route":return"/apis";default:return null}}function X(w){const k=D(w);k&&c.push(k)}function W(w,k){const M=new Set(T.value);k?M.delete(w):M.add(w),T.value=M}async function P(){v.value=!0;try{o.value=await ee.getServiceGraph(d.serviceName),y.value=null}catch(w){y.value=w instanceof Error?w.message:a("services.graphFailed"),o.value=null}finally{v.value=!1}}return me([s,o,T],()=>{var k;const w=s.value;if(!w){(k=b.value)==null||k.destroy(),b.value=null;return}b.value||(b.value=ut(w,{onActivate:X,onHover:M=>{p.value=M}})),b.value.render(o.value,T.value)},{flush:"post"}),me(()=>d.serviceName,P,{immediate:!0}),De(()=>{var w;(w=b.value)==null||w.destroy(),b.value=null}),l({reload:P}),(w,k)=>(f(),_(e(ge),{variant:"outline"},{header:t(()=>[n(e(m),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[n(e(m),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[n(e(N),{weight:"semibold"},{default:t(()=>[u(i(e(a)("services.graphTitle")),1)]),_:1}),o.value?(f(),_(e(U),{key:0,tone:"neutral",variant:"soft"},{default:t(()=>[u(i(e(a)("services.graphCounts",{nodes:o.value.nodes.length,edges:G.value})),1)]),_:1})):R("",!0)]),_:1})]),_:1})]),default:t(()=>[n(e(m),{direction:"vertical",gap:"0.75rem"},{default:t(()=>{var M;return[n(e(N),{tone:"muted",size:"sm"},{default:t(()=>[u(i(e(a)("services.graphDescription")),1)]),_:1}),y.value?(f(),_(e(he),{key:0,variant:"danger",dismissible:"",onDismiss:k[0]||(k[0]=z=>y.value=null)},{default:t(()=>[u(i(y.value),1)]),_:1})):R("",!0),(M=o.value)!=null&&M.warnings.length?(f(),_(e(he),{key:1,variant:"warning"},{default:t(()=>[n(e(m),{direction:"vertical",gap:"0.125rem"},{default:t(()=>[n(e(N),{size:"sm",weight:"semibold"},{default:t(()=>[u(i(e(a)("services.graphWarnings")),1)]),_:1}),(f(!0),O(B,null,V(o.value.warnings,z=>(f(),_(e(N),{key:z,size:"sm",family:"mono"},{default:t(()=>[u(i(z),1)]),_:2},1024))),128))]),_:1})]),_:1})):R("",!0),v.value&&!o.value?(f(),_(e(m),{key:2,direction:"horizontal",justify:"center",align:"center"},{default:t(()=>[n(e(Me),{label:e(a)("services.graphLoading")},null,8,["label"])]),_:1})):o.value&&!o.value.edges.length?(f(),_(e(Ie),{key:3,title:e(a)("services.graphEmptyTitle"),description:e(a)("services.graphEmptyDescription")},null,8,["title","description"])):o.value?(f(),O(B,{key:4},[n(e(m),{direction:"horizontal",gap:"0.75rem",wrap:"",align:"center"},{default:t(()=>[n(e(N),{size:"sm",tone:"muted"},{default:t(()=>[u(i(e(a)("services.graphFilterLabel")),1)]),_:1}),(f(!0),O(B,null,V(o.value.edgeKinds,z=>(f(),_(e(Fe),{key:z,size:"sm",label:$.value[z],"model-value":!T.value.has(z),"onUpdate:modelValue":L=>W(z,L)},null,8,["label","model-value","onUpdate:modelValue"]))),128))]),_:1}),n(e(Oe),{modelValue:h.value,"onUpdate:modelValue":k[1]||(k[1]=z=>h.value=z)},{default:t(()=>[n(e(Be),null,{default:t(()=>[n(e(ze),{value:"diagram"},{default:t(()=>[u(i(e(a)("services.graphTabDiagram")),1)]),_:1}),n(e(ze),{value:"table"},{default:t(()=>[u(i(e(a)("services.graphTabTable")),1)]),_:1})]),_:1}),n(e($e),{value:"diagram"},{default:t(()=>[n(e(m),{direction:"vertical",gap:"0.5rem"},{default:t(()=>[pe("div",null,[pe("canvas",{ref_key:"canvasRef",ref:s,role:"img","aria-label":e(a)("services.graphAriaLabel",{name:r.serviceName,nodes:o.value.nodes.length,edges:G.value})},null,8,dt)]),n(e(m),{direction:"horizontal",gap:"0.5rem",align:"center",wrap:""},{default:t(()=>[p.value?(f(),O(B,{key:0},[n(e(j),{size:"sm",variant:"soft"},{icon:t(()=>[n(e(I),{name:e(se)[p.value.kind]},null,8,["name"])]),default:t(()=>[u(" "+i(p.value.label),1)]),_:1}),p.value.handler||p.value.arn?(f(),_(e(N),{key:0,size:"sm",tone:"muted",family:"mono"},{default:t(()=>[u(i(p.value.handler||p.value.arn),1)]),_:1})):R("",!0),p.value.kind==="external"?(f(),_(e(U),{key:1,tone:"warning",variant:"soft"},{default:t(()=>[u(i(e(a)("services.graphExternal")),1)]),_:1})):R("",!0)],64)):(f(),_(e(N),{key:1,size:"sm",tone:"muted"},{default:t(()=>[u(i(e(a)("services.graphHint")),1)]),_:1}))]),_:1})]),_:1})]),_:1}),n(e($e),{value:"table"},{default:t(()=>[n(e(We),{columns:Y.value,rows:g.value,"row-key":"id",size:"sm","aria-label":e(a)("services.graphTableLabel",{name:r.serviceName})},{"cell-source":t(({row:z})=>[n(e(m),{direction:"horizontal",gap:"0.375rem",align:"center"},{default:t(()=>[n(e(I),{name:e(se)[z.sourceKind]},null,8,["name"]),n(e(N),{size:"sm"},{default:t(()=>[u(i(z.source),1)]),_:2},1024)]),_:2},1024)]),"cell-target":t(({row:z})=>[n(e(m),{direction:"horizontal",gap:"0.375rem",align:"center"},{default:t(()=>[n(e(I),{name:e(se)[z.targetKind]},null,8,["name"]),n(e(N),{size:"sm"},{default:t(()=>[u(i(z.target),1)]),_:2},1024)]),_:2},1024)]),"cell-link":t(({row:z})=>[n(e(m),{direction:"vertical",gap:"0.125rem"},{default:t(()=>[n(e(N),{size:"sm"},{default:t(()=>[u(i(z.link),1)]),_:2},1024),z.detail?(f(),_(e(N),{key:0,size:"xs",tone:"muted",family:"mono"},{default:t(()=>[u(i(z.detail),1)]),_:2},1024)):R("",!0)]),_:2},1024)]),"cell-evidence":t(({row:z})=>[n(e(m),{direction:"horizontal",gap:"0.25rem",align:"center",wrap:""},{default:t(()=>[n(e(U),{tone:z.confidence==="declared"?"success":"neutral",variant:"soft"},{default:t(()=>[u(i(z.confidence==="declared"?e(a)("services.graphEvidenceDeclared"):e(a)("services.graphEvidenceInferred")),1)]),_:2},1032,["tone"]),z.serviceWide?(f(),_(e(U),{key:0,tone:"warning",variant:"soft"},{default:t(()=>[u(i(e(a)("services.graphServiceWide")),1)]),_:1})):R("",!0)]),_:2},1024)]),_:1},8,["columns","rows","aria-label"])]),_:1})]),_:1},8,["modelValue"])],64)):R("",!0)]}),_:1})]),_:1}))}}),gt=Re({__name:"ServiceDetailPage",props:{serviceName:{}},setup(r){const l=r,d=Ae(),c=Ze(),{t:a}=Pe(),o=K(null),v=K(!0),y=K(null),h=K(!1),p=K(!1),s=K(!1),b=K([]),T=K("stopped");let $=null,A=null;const Y=K(!1),g=J(()=>{var q;const S={lambda:[],dynamodb:[],sqs:[],sns:[],s3:[],eventbus:[],"event-rule":[],opensearch:[],"event-source":[]};for(const C of((q=o.value)==null?void 0:q.resources)||[])S[C.type]||(S[C.type]=[]),S[C.type].push(C);return S});async function G(){v.value=!0;try{o.value=await ee.getService(l.serviceName),y.value=null}catch(S){y.value=S.message||a("services.notFound"),o.value=null}finally{v.value=!1}}const D=K(null);async function X(){var S;await G(),await((S=D.value)==null?void 0:S.reload())}async function W(){if(!h.value){h.value=!0;try{await ee.startService(l.serviceName),c.add({title:a("services.startedToast"),description:l.serviceName,variant:"success"}),await G()}catch(S){c.add({title:a("services.startFailedToast"),description:S.message,variant:"danger"})}finally{h.value=!1}}}async function P(){if(!p.value){p.value=!0;try{await ee.stopService(l.serviceName),c.add({title:a("services.stoppedToast"),description:l.serviceName,variant:"info"}),await G()}catch(S){c.add({title:a("services.stopFailedToast"),description:S.message,variant:"danger"})}finally{p.value=!1}}}async function w(){try{const S=await ee.getServiceLogs(l.serviceName);b.value=S.logs||[],T.value=S.status||"stopped"}catch(S){console.error("Failed to fetch logs:",S)}}function k(){s.value=!0,w(),$&&window.clearInterval($),$=window.setInterval(w,2e3)}function M(){s.value=!1,$&&window.clearInterval($),$=null}async function z(){try{await ee.deleteService(l.serviceName),c.add({title:a("services.deletedToast"),description:l.serviceName,variant:"info"}),d.push("/services")}catch(S){c.add({title:a("services.deleteFailedToast"),description:S.message,variant:"danger"})}finally{Y.value=!1}}function L(S){switch(S){case"running":return"success";case"registered":return"warning";case"stopped":return"neutral";default:return"danger"}}function Q(S){switch(S){case"running":return a("services.statusRunning");case"registered":return a("services.statusRegistered");case"stopped":return a("common.stopped");case"failed":return a("services.statusFailed");case"error":return a("services.statusError");default:return S}}function Ue(S){return S?new Date(S).toLocaleString():"—"}return Ge(()=>{G(),A=window.setInterval(G,1e4)}),De(()=>{A&&window.clearInterval(A),$&&window.clearInterval($)}),me(()=>l.serviceName,G),(S,q)=>(f(),_(e(m),{direction:"vertical",gap:"1.25rem"},{default:t(()=>[n(e(m),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[n(e(m),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>{var C;return[n(e(Z),{size:"sm",variant:"ghost",to:"/services"},{default:t(()=>[n(e(I),{name:"arrow-left"}),u(" "+i(e(a)("nav.services")),1)]),_:1}),n(e(N),{weight:"semibold",size:"lg"},{default:t(()=>[u(i(r.serviceName),1)]),_:1}),(C=o.value)!=null&&C.status?(f(),_(e(U),{key:0,tone:L(o.value.status),variant:"soft"},{default:t(()=>[u(i(Q(o.value.status)),1)]),_:1},8,["tone"])):R("",!0)]}),_:1}),n(e(m),{direction:"horizontal",gap:"0.375rem"},{default:t(()=>{var C,H;return[n(e(Z),{size:"sm",variant:"soft",disabled:((C=o.value)==null?void 0:C.status)==="running",loading:h.value,onClick:W},{default:t(()=>[u(i(e(a)("services.start")),1)]),_:1},8,["disabled","loading"]),n(e(Z),{size:"sm",variant:"soft",disabled:((H=o.value)==null?void 0:H.status)!=="running",loading:p.value,onClick:P},{default:t(()=>[u(i(e(a)("services.stop")),1)]),_:1},8,["disabled","loading"]),n(e(Z),{size:"sm",variant:"ghost",onClick:k},{default:t(()=>[u(i(e(a)("services.logs")),1)]),_:1}),n(e(Z),{size:"sm",variant:"ghost",loading:v.value,onClick:X},{default:t(()=>[u(i(e(a)("common.refresh")),1)]),_:1},8,["loading"]),n(e(Z),{size:"sm",variant:"solid",tone:"danger",onClick:q[0]||(q[0]=x=>Y.value=!0)},{default:t(()=>[u(i(e(a)("common.delete")),1)]),_:1})]}),_:1})]),_:1}),y.value?(f(),_(e(he),{key:0,variant:"danger",dismissible:"",onDismiss:q[1]||(q[1]=C=>y.value=null)},{default:t(()=>[u(i(y.value),1)]),_:1})):R("",!0),v.value&&!o.value?(f(),_(e(m),{key:1,direction:"horizontal",justify:"center",align:"center"},{default:t(()=>[n(e(Me),{label:e(a)("services.loadingOne")},null,8,["label"])]),_:1})):o.value?(f(),O(B,{key:2},[n(e(Ve),{columns:5,gap:"1rem"},{default:t(()=>{var C,H,x,te,ae;return[n(e(ne),{label:e(a)("services.statLambdas"),value:((C=g.value.lambda)==null?void 0:C.length)||0,tone:"info"},{icon:t(()=>[n(e(I),{name:e(F).lambda},null,8,["name"])]),_:1},8,["label","value"]),n(e(ne),{label:e(a)("services.statTables"),value:((H=g.value.dynamodb)==null?void 0:H.length)||0,tone:"info"},{icon:t(()=>[n(e(I),{name:e(F).dynamodb},null,8,["name"])]),_:1},8,["label","value"]),n(e(ne),{label:e(a)("services.statQueues"),value:((x=g.value.sqs)==null?void 0:x.length)||0,tone:"warning"},{icon:t(()=>[n(e(I),{name:e(F).sqs},null,8,["name"])]),_:1},8,["label","value"]),n(e(ne),{label:e(a)("services.statTopics"),value:((te=g.value.sns)==null?void 0:te.length)||0,tone:"info"},{icon:t(()=>[n(e(I),{name:e(F).sns},null,8,["name"])]),_:1},8,["label","value"]),n(e(ne),{label:e(a)("services.statBuckets"),value:((ae=g.value.s3)==null?void 0:ae.length)||0,tone:"neutral"},{icon:t(()=>[n(e(I),{name:e(F).s3},null,8,["name"])]),_:1},8,["label","value"])]}),_:1}),n(e(ge),{variant:"outline"},{header:t(()=>[n(e(N),{weight:"semibold"},{default:t(()=>[u(i(e(a)("services.metadata")),1)]),_:1})]),default:t(()=>[n(e(je),null,{default:t(()=>[n(e(re),{label:e(a)("services.path")},{default:t(()=>[n(e(N),{family:"mono"},{default:t(()=>[u(i(o.value.root),1)]),_:1})]),_:1},8,["label"]),n(e(re),{label:e(a)("common.region")},{default:t(()=>[n(e(N),{family:"mono"},{default:t(()=>[u(i(o.value.region||"—"),1)]),_:1})]),_:1},8,["label"]),n(e(re),{label:e(a)("services.invokePort")},{default:t(()=>[n(e(N),{family:"mono"},{default:t(()=>[u(i(o.value.invokePort??"—"),1)]),_:1})]),_:1},8,["label"]),n(e(re),{label:"PID"},{default:t(()=>[n(e(N),{family:"mono"},{default:t(()=>[u(i(o.value.pid??"—"),1)]),_:1})]),_:1}),n(e(re),{label:e(a)("services.lastUpdated")},{default:t(()=>[pe("span",null,i(Ue(o.value.lastUpdated)),1)]),_:1},8,["label"])]),_:1})]),_:1}),n(ct,{ref_key:"graphCard",ref:D,"service-name":r.serviceName},null,8,["service-name"]),n(e(ge),{variant:"outline"},{header:t(()=>[n(e(m),{direction:"horizontal",gap:"0.5rem",align:"center",justify:"space-between"},{default:t(()=>[n(e(N),{weight:"semibold"},{default:t(()=>[u(i(e(a)("services.declaredResources")),1)]),_:1}),n(e(U),{tone:"neutral",variant:"soft"},{default:t(()=>{var C;return[u(i(e(a)("services.resourcesTotal",{count:((C=o.value.resources)==null?void 0:C.length)||0})),1)]}),_:1})]),_:1})]),default:t(()=>{var C;return[(C=o.value.resources)!=null&&C.length?(f(),_(e(m),{key:1,direction:"vertical",gap:"1rem"},{default:t(()=>{var H,x,te,ae,be,ye,_e,ke,we;return[(H=g.value.dynamodb)!=null&&H.length?(f(),_(e(m),{key:0,direction:"vertical",gap:"0.5rem"},{default:t(()=>[n(e(m),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[n(e(U),{tone:"info",variant:"soft"},{default:t(()=>[u(i(e(a)("services.groupTables")),1)]),_:1}),n(e(N),{tone:"muted"},{default:t(()=>[u(i(g.value.dynamodb.length),1)]),_:1})]),_:1}),n(e(m),{direction:"horizontal",gap:"0.375rem",wrap:""},{default:t(()=>[(f(!0),O(B,null,V(g.value.dynamodb,E=>(f(),_(e(ue),{key:`db-${E.name}`,to:`/dynamo/${encodeURIComponent(E.name)}`,underline:"none"},{default:t(()=>[n(e(j),{size:"sm",variant:"soft"},{icon:t(()=>[n(e(I),{name:e(F).dynamodb},null,8,["name"])]),default:t(()=>[u(" "+i(E.name),1)]),_:2},1024)]),_:2},1032,["to"]))),128))]),_:1})]),_:1})):R("",!0),(x=g.value.sqs)!=null&&x.length?(f(),_(e(m),{key:1,direction:"vertical",gap:"0.5rem"},{default:t(()=>[n(e(m),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[n(e(U),{tone:"warning",variant:"soft"},{default:t(()=>[u(i(e(a)("services.groupQueues")),1)]),_:1}),n(e(N),{tone:"muted"},{default:t(()=>[u(i(g.value.sqs.length),1)]),_:1})]),_:1}),n(e(m),{direction:"horizontal",gap:"0.375rem",wrap:""},{default:t(()=>[(f(!0),O(B,null,V(g.value.sqs,E=>(f(),_(e(ue),{key:`q-${E.name}`,to:"/queues",underline:"none"},{default:t(()=>[n(e(j),{size:"sm",variant:"soft"},{icon:t(()=>[n(e(I),{name:e(F).sqs},null,8,["name"])]),default:t(()=>[u(" "+i(E.name),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})):R("",!0),(te=g.value.sns)!=null&&te.length?(f(),_(e(m),{key:2,direction:"vertical",gap:"0.5rem"},{default:t(()=>[n(e(m),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[n(e(U),{tone:"info",variant:"soft"},{default:t(()=>[u(i(e(a)("services.groupTopics")),1)]),_:1}),n(e(N),{tone:"muted"},{default:t(()=>[u(i(g.value.sns.length),1)]),_:1})]),_:1}),n(e(m),{direction:"horizontal",gap:"0.375rem",wrap:""},{default:t(()=>[(f(!0),O(B,null,V(g.value.sns,E=>(f(),_(e(j),{key:`t-${E.name}`,size:"sm",variant:"soft"},{icon:t(()=>[n(e(I),{name:e(F).sns},null,8,["name"])]),default:t(()=>[u(" "+i(E.name),1)]),_:2},1024))),128))]),_:1})]),_:1})):R("",!0),(ae=g.value.s3)!=null&&ae.length?(f(),_(e(m),{key:3,direction:"vertical",gap:"0.5rem"},{default:t(()=>[n(e(m),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[n(e(U),{tone:"neutral",variant:"soft"},{default:t(()=>[u(i(e(a)("services.groupBuckets")),1)]),_:1}),n(e(N),{tone:"muted"},{default:t(()=>[u(i(g.value.s3.length),1)]),_:1})]),_:1}),n(e(m),{direction:"horizontal",gap:"0.375rem",wrap:""},{default:t(()=>[(f(!0),O(B,null,V(g.value.s3,E=>(f(),_(e(ue),{key:`b-${E.name}`,to:`/buckets/${encodeURIComponent(E.name)}`,underline:"none"},{default:t(()=>[n(e(j),{size:"sm",variant:"soft"},{icon:t(()=>[n(e(I),{name:e(F).s3},null,8,["name"])]),default:t(()=>[u(" "+i(E.name),1)]),_:2},1024)]),_:2},1032,["to"]))),128))]),_:1})]),_:1})):R("",!0),(be=g.value.lambda)!=null&&be.length?(f(),_(e(m),{key:4,direction:"vertical",gap:"0.5rem"},{default:t(()=>[n(e(m),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[n(e(U),{tone:"neutral",variant:"soft"},{default:t(()=>[u(i(e(a)("services.groupLambdas")),1)]),_:1}),n(e(N),{tone:"muted"},{default:t(()=>[u(i(g.value.lambda.length),1)]),_:1})]),_:1}),n(e(m),{direction:"horizontal",gap:"0.375rem",wrap:""},{default:t(()=>[(f(!0),O(B,null,V(g.value.lambda,E=>(f(),_(e(j),{key:`l-${E.name}`,size:"sm",variant:"soft"},{icon:t(()=>[n(e(I),{name:e(F).lambda},null,8,["name"])]),default:t(()=>[u(" "+i(E.name),1)]),_:2},1024))),128))]),_:1})]),_:1})):R("",!0),(ye=g.value.eventbus)!=null&&ye.length?(f(),_(e(m),{key:5,direction:"vertical",gap:"0.5rem"},{default:t(()=>[n(e(m),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[n(e(U),{tone:"info",variant:"soft"},{default:t(()=>[u(i(e(a)("services.groupBuses")),1)]),_:1}),n(e(N),{tone:"muted"},{default:t(()=>[u(i(g.value.eventbus.length),1)]),_:1})]),_:1}),n(e(m),{direction:"horizontal",gap:"0.375rem",wrap:""},{default:t(()=>[(f(!0),O(B,null,V(g.value.eventbus,E=>(f(),_(e(j),{key:`eb-${E.name}`,size:"sm",variant:"soft"},{icon:t(()=>[n(e(I),{name:e(F).eventbus},null,8,["name"])]),default:t(()=>[u(" "+i(E.name),1)]),_:2},1024))),128))]),_:1})]),_:1})):R("",!0),(_e=g.value["event-rule"])!=null&&_e.length?(f(),_(e(m),{key:6,direction:"vertical",gap:"0.5rem"},{default:t(()=>[n(e(m),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[n(e(U),{tone:"info",variant:"soft"},{default:t(()=>[u(i(e(a)("services.groupRules")),1)]),_:1}),n(e(N),{tone:"muted"},{default:t(()=>[u(i(g.value["event-rule"].length),1)]),_:1})]),_:1}),n(e(m),{direction:"horizontal",gap:"0.375rem",wrap:""},{default:t(()=>[(f(!0),O(B,null,V(g.value["event-rule"],(E,ie)=>(f(),_(e(j),{key:`er-${ie}-${E.name}`,size:"sm",variant:"outline"},{icon:t(()=>[n(e(I),{name:e(F)["event-rule"]},null,8,["name"])]),default:t(()=>[u(" "+i(E.name),1)]),_:2},1024))),128))]),_:1})]),_:1})):R("",!0),(ke=g.value.opensearch)!=null&&ke.length?(f(),_(e(m),{key:7,direction:"vertical",gap:"0.5rem"},{default:t(()=>[n(e(m),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[n(e(U),{tone:"info",variant:"soft"},{default:t(()=>[u(i(e(a)("services.groupCollections")),1)]),_:1}),n(e(N),{tone:"muted"},{default:t(()=>[u(i(g.value.opensearch.length),1)]),_:1})]),_:1}),n(e(m),{direction:"horizontal",gap:"0.375rem",wrap:""},{default:t(()=>[(f(!0),O(B,null,V(g.value.opensearch,E=>(f(),_(e(j),{key:`os-${E.name}`,size:"sm",variant:"soft"},{icon:t(()=>[n(e(I),{name:e(F).opensearch},null,8,["name"])]),default:t(()=>[u(" "+i(E.name),1)]),_:2},1024))),128))]),_:1})]),_:1})):R("",!0),(we=g.value["event-source"])!=null&&we.length?(f(),_(e(m),{key:8,direction:"vertical",gap:"0.5rem"},{default:t(()=>[n(e(m),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:t(()=>[n(e(U),{tone:"neutral",variant:"soft"},{default:t(()=>[u(i(e(a)("services.groupEventSources")),1)]),_:1}),n(e(N),{tone:"muted"},{default:t(()=>[u(i(g.value["event-source"].length),1)]),_:1})]),_:1}),n(e(m),{direction:"horizontal",gap:"0.375rem",wrap:""},{default:t(()=>[(f(!0),O(B,null,V(g.value["event-source"],(E,ie)=>(f(),_(e(j),{key:`es-${ie}-${E.name}`,size:"sm",variant:"outline"},{icon:t(()=>[n(e(I),{name:e(F)["event-source"]},null,8,["name"])]),default:t(()=>[u(" "+i(E.name),1)]),_:2},1024))),128))]),_:1})]),_:1})):R("",!0)]}),_:1})):(f(),_(e(Ie),{key:0,title:e(a)("services.noResourcesTitle"),description:e(a)("services.noResourcesDescription")},null,8,["title","description"]))]}),_:1})],64)):R("",!0),n(e(Qe),{open:s.value,"onUpdate:open":[q[2]||(q[2]=C=>s.value=C),q[3]||(q[3]=C=>{C||M()})],title:e(a)("services.logsTitleFor",{name:r.serviceName}),description:e(a)("services.logsStatus",{status:Q(T.value)}),size:"lg"},{default:t(()=>[n(e(He),{code:b.value.join(`
|
|
2
|
+
`)||e(a)("services.logsEmpty"),label:e(a)("services.logsLabel"),"max-block-size":"60vh",wrap:"",copyable:""},null,8,["code","label"])]),_:1},8,["open","title","description"]),n(e(xe),{open:Y.value,"onUpdate:open":q[4]||(q[4]=C=>Y.value=C),title:e(a)("services.deleteTitleNamed",{name:r.serviceName}),description:e(a)("services.deleteDescription",{engine:e(Je)}),"confirm-label":e(a)("common.delete"),"cancel-label":e(a)("common.cancel"),onConfirm:z},null,8,["open","title","description","confirm-label","cancel-label"])]),_:1}))}});export{gt as default};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{l as V,n as Q,o as X,p as g,f as b,a9 as e,v as Y,ae as l,x as k,k as n,y as Z,R as ee,S as te,L as S,j as i,a8 as o,h as ae,F as se,t as le,C as ne,z as re,w as C,g as ie,G as oe,T as ce,U as ue,V as de,W as ve,O as ge,P as fe,af as pe,aa as me,q as c,d as U,a as h,c as be}from"./index-BouKSS43.js";import{E as ye}from"./engine-D0mFFNbL.js";import{a as we,b as _e}from"./resourceIcons-DZs28nbs.js";const he=V({__name:"ServicesList",setup(j){const{t}=me(),u=be(),z=c([]),x=c(!0),$=c(!1),f=c(""),y=c(null),L=c([]),I=c("stopped"),d=c(null),p=c({}),m=c({}),w=c(null),T=c(!1);let F=null;const O=U(()=>[{key:"name",label:t("common.name")},{key:"status",label:t("common.status")},{key:"root",label:t("services.path")},{key:"resourceBreakdown",label:t("services.resources")},{key:"lastUpdated",label:t("services.lastUpdated")},{key:"actions",label:t("common.actions"),align:"right"}]),P=U(()=>z.value.map(a=>({...a}))),B=U({get:()=>y.value!==null,set:a=>{a||G()}});async function _(){try{z.value=await h.listServices()}catch(a){console.error("Failed to load services:",a)}finally{x.value=!1}}async function R(a){if(!p.value[a]){p.value={...p.value,[a]:!0};try{await h.startService(a),u.add({title:t("services.startedToast"),description:a,variant:"success"}),await _()}catch(r){u.add({title:t("services.startFailedToast"),description:r.message,variant:"danger"})}finally{p.value={...p.value,[a]:!1}}}}async function K(a){if(!m.value[a]){m.value={...m.value,[a]:!0};try{await h.stopService(a),u.add({title:t("services.stoppedToast"),description:a,variant:"info"}),await _()}catch(r){u.add({title:t("services.stopFailedToast"),description:r.message,variant:"danger"})}finally{m.value={...m.value,[a]:!1}}}}async function D(a){try{const r=await h.getServiceLogs(a);L.value=r.logs||[],I.value=r.status||"stopped"}catch(r){console.error("Failed to fetch logs:",r)}}function q(a){y.value=a,D(a),d.value&&window.clearInterval(d.value),d.value=window.setInterval(()=>D(a),2e3)}function G(){y.value=null,L.value=[],d.value&&window.clearInterval(d.value),d.value=null}async function E(){if(f.value.trim()){$.value=!0;try{await h.registerService(f.value),u.add({title:t("services.registeredToast"),description:f.value,variant:"success"}),f.value="",await _()}catch(a){u.add({title:t("services.registerFailedToast"),description:a.message,variant:"danger"})}finally{$.value=!1}}}function M(a){w.value=a,T.value=!0}async function A(){if(!w.value)return;const a=w.value;try{await h.deleteService(a),u.add({title:t("services.deletedToast"),description:a,variant:"info"}),await _()}catch(r){u.add({title:t("services.deleteFailedToast"),description:r.message,variant:"danger"})}finally{w.value=null,T.value=!1}}function H(a){return new Date(a).toLocaleString()}function W(a){const r=a.resourceBreakdown;return r?we.map(s=>({key:s,count:r[s]??0,..._e[s]})).filter(s=>s.count>0):[]}function J(a){switch(a){case"running":return"success";case"registered":return"warning";case"stopped":return"neutral";default:return"danger"}}function N(a){switch(a){case"running":return t("services.statusRunning");case"registered":return t("services.statusRegistered");case"stopped":return t("common.stopped");case"failed":return t("services.statusFailed");case"error":return t("services.statusError");default:return a}}return Q(()=>{_(),F=window.setInterval(_,1e4)}),X(()=>{F&&window.clearInterval(F),d.value&&window.clearInterval(d.value)}),(a,r)=>(g(),b(e(Y),{variant:"outline"},{header:l(()=>[n(e(k),{direction:"horizontal",gap:"0.75rem",align:"center",justify:"space-between"},{default:l(()=>[n(e(C),{weight:"semibold"},{default:l(()=>[i(o(e(t)("services.title")),1)]),_:1}),n(e(k),{direction:"horizontal",gap:"0.5rem",align:"center"},{default:l(()=>[n(e(ge),{hint:e(t)("services.registerHint"),htmlFor:"register-path"},{default:l(()=>[n(e(fe),{modelValue:f.value,"onUpdate:modelValue":r[0]||(r[0]=s=>f.value=s),placeholder:e(t)("services.registerPlaceholder"),disabled:$.value,onKeyup:pe(E,["enter"])},null,8,["modelValue","placeholder","disabled"])]),_:1},8,["hint"]),n(e(S),{variant:"solid",loading:$.value,disabled:!f.value.trim(),onClick:E},{default:l(()=>[i(o(e(t)("services.register")),1)]),_:1},8,["loading","disabled"])]),_:1})]),_:1})]),default:l(()=>[x.value?(g(),b(e(k),{key:0,direction:"horizontal",justify:"center",align:"center"},{default:l(()=>[n(e(Z),{label:e(t)("services.loadingList")},null,8,["label"])]),_:1})):z.value.length?(g(),b(e(te),{key:2,columns:O.value,rows:P.value,"aria-label":e(t)("services.tableLabel")},{"cell-name":l(({row:s})=>[n(e(ce),{to:`/services/${encodeURIComponent(String(s.name))}`},{default:l(()=>[n(e(C),{weight:"semibold"},{default:l(()=>[i(o(s.name),1)]),_:2},1024)]),_:2},1032,["to"])]),"cell-status":l(({row:s})=>[n(e(oe),{tone:J(String(s.status)),variant:"soft"},{default:l(()=>[i(o(N(String(s.status))),1)]),_:2},1032,["tone"])]),"cell-root":l(({row:s})=>[n(e(C),{family:"mono"},{default:l(()=>[i(o(s.root),1)]),_:2},1024)]),"cell-resourceBreakdown":l(({row:s})=>[n(e(k),{direction:"horizontal",gap:"0.25rem",wrap:""},{default:l(()=>[(g(!0),ae(se,null,le(W(s),v=>(g(),b(e(ne),{key:v.key,size:"sm",variant:"soft"},{default:l(()=>[n(e(re),{name:v.icon,label:e(t)(v.labelKey)},null,8,["name","label"]),i(" "+o(v.count),1)]),_:2},1024))),128)),s.resourcesCount?ie("",!0):(g(),b(e(C),{key:0,tone:"muted",size:"xs"},{default:l(()=>[i(o(e(t)("common.none")),1)]),_:1}))]),_:2},1024)]),"cell-lastUpdated":l(({row:s})=>[i(o(H(Number(s.lastUpdated))),1)]),"cell-actions":l(({row:s})=>[n(e(k),{direction:"horizontal",gap:"0.375rem",justify:"flex-end",wrap:""},{default:l(()=>[n(e(S),{size:"sm",variant:"soft",disabled:s.status==="running"||p.value[String(s.name)],loading:p.value[String(s.name)],onClick:v=>R(String(s.name))},{default:l(()=>[i(o(e(t)("services.start")),1)]),_:1},8,["disabled","loading","onClick"]),n(e(S),{size:"sm",variant:"soft",disabled:s.status!=="running"||m.value[String(s.name)],loading:m.value[String(s.name)],onClick:v=>K(String(s.name))},{default:l(()=>[i(o(e(t)("services.stop")),1)]),_:1},8,["disabled","loading","onClick"]),n(e(S),{size:"sm",variant:"ghost",onClick:v=>q(String(s.name))},{default:l(()=>[i(o(e(t)("services.logs")),1)]),_:1},8,["onClick"]),n(e(S),{size:"sm",variant:"danger",onClick:v=>M(String(s.name))},{default:l(()=>[i(o(e(t)("common.delete")),1)]),_:1},8,["onClick"])]),_:2},1024)]),_:1},8,["columns","rows","aria-label"])):(g(),b(e(ee),{key:1,title:e(t)("services.emptyTitle"),description:e(t)("services.emptyDescription")},null,8,["title","description"])),n(e(ue),{open:B.value,"onUpdate:open":r[1]||(r[1]=s=>B.value=s),title:y.value?e(t)("services.logsTitleFor",{name:y.value}):e(t)("services.logsTitle"),description:y.value?e(t)("services.logsStatus",{status:N(I.value)}):"",size:"lg"},{default:l(()=>[n(e(de),{code:L.value.join(`
|
|
2
|
+
`)||e(t)("services.logsEmpty"),label:e(t)("services.logsLabel"),"max-block-size":"60vh",wrap:"",copyable:""},null,8,["code","label"])]),_:1},8,["open","title","description"]),n(e(ve),{open:T.value,"onUpdate:open":r[2]||(r[2]=s=>T.value=s),title:w.value?e(t)("services.deleteTitleNamed",{name:w.value}):e(t)("services.deleteTitle"),description:e(t)("services.deleteDescription",{engine:e(ye)}),"confirm-label":e(t)("common.delete"),"cancel-label":e(t)("common.cancel"),onConfirm:A},null,8,["open","title","description","confirm-label","cancel-label"])]),_:1}))}}),Te=V({__name:"ServicesPage",setup(j){return(t,u)=>(g(),b(he))}});export{Te as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{l as Me,n as Oe,f as C,ae as o,a9 as e,x as g,a as q,aa as De,q as E,p as x,k as s,z as le,w as b,j as u,a8 as d,G as se,g as w,L as F,v as D,N as G,y as Ue,A as Y,O as r,P as m,a0 as ie,s as He,a5 as A,H as oe,a6 as we,a7 as $,d as P,r as re,m as Ae,c as Se}from"./index-BouKSS43.js";const Re=Me({__name:"SettingsPage",setup(Ie){const{t:n}=De(),Q=Se(),k=E(null),X=E(!0),j=E(!1),z=E(!1),V=E(null),S=E([]),I=E([]),ue=P(()=>[{value:"auto",label:n("settings.executionAuto")},{value:"artifact",label:n("settings.executionArtifact")},{value:"source",label:n("settings.executionSource")}]),de=P(()=>[{value:"default",label:n("settings.watchDefault")},{value:"on",label:n("settings.watchOn")},{value:"off",label:n("settings.watchOff")}]),ge=P(()=>[{value:"dark",label:n("settings.themeDark")},{value:"light",label:n("settings.themeLight")}]),t=re({serverPort:3100,region:"us-east-1",persistence:!0,debug:!1,sePort:14566,seAccount:"000000000000",seMemoryBudgetMb:128,seIdleUnloadMs:3e5,seFsync:!1,seFallback:"",proxyEnabled:!1,proxyPort:8e3,lrEnabled:!0,lrExecution:"auto",lrWatch:"default",lrInvokePortOffset:1e4,lrInvokeHost:"",autoPackage:!1,packageCommand:"",packageArgs:[],packageEnv:{keys:{},pending:{}},packageTimeoutMs:3e5,seedsDir:"",brTitle:"",brSubtitle:"",brTheme:"dark",brColors:{},brThemeDark:{},brThemeLight:{}});let N=null;const me=["packageArgs","brColors","brThemeDark","brThemeLight"];function be(l){return me.includes(l)}function R(){const l={...t};return l.packageArgs=[...t.packageArgs],l.packageEnv=JSON.parse(JSON.stringify(t.packageEnv)),l.brColors={...t.brColors},l.brThemeDark={...t.brThemeDark},l.brThemeLight={...t.brThemeLight},l}function Z(l){const a=l;return JSON.stringify({set:Object.keys(a.keys).filter(i=>a.keys[i].set).sort(),pending:a.pending})}function ee(l,a,i){return l==="packageEnv"?Z(a[l])!==Z(i[l]):be(l)?JSON.stringify(a[l])!==JSON.stringify(i[l]):a[l]!==i[l]}function L(l){k.value=l,t.serverPort=l.serverPort,t.region=l.region,t.persistence=l.persistence,t.debug=l.debug,t.sePort=l.selfEngine.port,t.seAccount=l.selfEngine.account,t.seMemoryBudgetMb=l.selfEngine.memoryBudgetMb,t.seIdleUnloadMs=l.selfEngine.idleUnloadMs,t.seFsync=l.selfEngine.fsync,t.seFallback=l.selfEngine.fallbackEndpoint||"",t.proxyEnabled=l.dynamoProxy.enabled,t.proxyPort=l.dynamoProxy.port,t.lrEnabled=l.lambdaRuntime.enabled,t.lrExecution=l.lambdaRuntime.execution,t.lrWatch=l.lambdaRuntime.watch===null?"default":l.lambdaRuntime.watch?"on":"off",t.lrInvokePortOffset=l.lambdaRuntime.invokePortOffset,t.lrInvokeHost=l.lambdaRuntime.invokeHost,t.autoPackage=l.autoPackage,t.packageCommand=l.packageCommand,t.packageArgs=[...l.packageArgs],t.packageEnv={keys:Object.fromEntries(l.packageEnvKeys.map(a=>[a,{set:!0}])),pending:{}},t.packageTimeoutMs=l.packageTimeoutMs,t.seedsDir=l.seedsDir,t.brTitle=l.branding.title,t.brSubtitle=l.branding.subtitle,t.brTheme=l.branding.defaultTheme,t.brColors={...l.branding.colors},t.brThemeDark={...l.branding.themeColors.dark},t.brThemeLight={...l.branding.themeColors.light},N=R()}const te=P(()=>{if(!N)return[];const l=R();return Object.keys(l).filter(a=>ee(a,l,N))}),ae=E(""),_=E(null),U=P(()=>te.value.length+(ae.value.trim()?1:0)),ne=["brColors","brThemeDark","brThemeLight"],B=re({brColors:[],brThemeDark:[],brThemeLight:[]});function K(l,a){B[l]=a.valid?[]:a.errors}const H=P(()=>{const l={};for(const a of ne)l[a]=B[a].length?n("settings.colorTokensInvalid",{errors:B[a].join(" · ")}):"";return l}),fe=P(()=>ne.some(l=>B[l].length>0)),W=P(()=>({key:n("settings.tokenKey"),value:n("settings.tokenValue"),add:n("settings.tokenAdd"),remove:n("settings.tokenRemove"),emptyKey:n("settings.tokenEmptyKey"),duplicateKey:n("settings.tokenDuplicateKey")})),ce=P(()=>({key:n("settings.packageEnvKey"),add:n("settings.packageEnvAdd"),remove:n("settings.packageEnvRemove"),hidden:n("settings.packageEnvSet"),replace:n("settings.packageEnvReplace"),clear:n("settings.packageEnvClear"),newValue:n("settings.packageEnvNewValue"),save:n("settings.packageEnvSave"),cancel:n("settings.packageEnvCancel")}));function pe(l,a){if(a===""){delete t.packageEnv.pending[l],t.packageEnv.keys={...t.packageEnv.keys,[l]:{set:!1}};return}t.packageEnv.pending[l]=a,t.packageEnv.keys={...t.packageEnv.keys,[l]:{set:!0}}}function ve(l){delete t.packageEnv.pending[l]}function ke(l){t.packageEnv.keys=l;for(const a of Object.keys(t.packageEnv.pending))a in l||delete t.packageEnv.pending[a]}function he(){var a,i;const l={};for(const c of((a=k.value)==null?void 0:a.packageEnvKeys)??[])(i=t.packageEnv.keys[c])!=null&&i.set||(l[c]=null);return Object.assign(l,t.packageEnv.pending),l}function ye(l){var a;return!!((a=k.value)!=null&&a.envOverrides.includes(l))}function f(l,a){return ye(l)?n("settings.maskedByEnv"):a}function Ve(){const l=[],a=new Set(te.value),i={},c=(h,J)=>{const T=Number(h);return(!Number.isInteger(T)||T<1||T>65535)&&l.push(n("settings.errorPort",{label:J})),T},p=(h,J)=>{const T=Number(h);return(!Number.isInteger(T)||T<=0)&&l.push(n("settings.errorPositive",{label:J})),T},y=h=>h.trim()||null;if(a.has("serverPort")&&(i.serverPort=c(t.serverPort,n("settings.serverPort"))),a.has("region")&&(i.region=t.region),a.has("persistence")&&(i.persistence=t.persistence),a.has("debug")&&(i.debug=t.debug),a.has("proxyEnabled")&&(i.enableDynamoProxy=t.proxyEnabled),a.has("proxyPort")&&(i.dynamoProxyPort=c(t.proxyPort,n("settings.proxyPort"))),a.has("autoPackage")&&(i.autoPackage=t.autoPackage),a.has("packageCommand")&&(i.packageCommand=y(t.packageCommand)),a.has("packageArgs")&&(i.packageArgs=t.packageArgs.length?[...t.packageArgs]:null),a.has("packageEnv")){const h=he();Object.keys(h).length&&(i.packageEnv=h)}a.has("packageTimeoutMs")&&(i.packageTimeoutMs=p(t.packageTimeoutMs,n("settings.packageTimeout"))),a.has("seedsDir")&&(i.seedsDir=y(t.seedsDir));const v={};a.has("sePort")&&(v.port=c(t.sePort,n("settings.selfEnginePort"))),a.has("seAccount")&&(t.seAccount.trim()||l.push(n("settings.errorAccountEmpty")),v.account=t.seAccount.trim()),a.has("seMemoryBudgetMb")&&(v.memoryBudgetMb=p(t.seMemoryBudgetMb,n("settings.memoryBudget"))),a.has("seIdleUnloadMs")&&(v.idleUnloadMs=p(t.seIdleUnloadMs,n("settings.idleUnload"))),a.has("seFsync")&&(v.fsync=t.seFsync),a.has("seFallback")&&(v.fallbackEndpoint=y(t.seFallback)),Object.keys(v).length&&(i.selfEngine=v);const M={};a.has("lrEnabled")&&(M.enabled=t.lrEnabled),a.has("lrExecution")&&(M.execution=t.lrExecution),a.has("lrWatch")&&(M.watch=t.lrWatch==="default"?null:t.lrWatch==="on"),a.has("lrInvokePortOffset")&&(M.invokePortOffset=p(t.lrInvokePortOffset,n("settings.invokePortOffset"))),a.has("lrInvokeHost")&&(M.invokeHost=y(t.lrInvokeHost)),Object.keys(M).length&&(i.lambdaRuntime=M);const O={};a.has("brTitle")&&(O.title=y(t.brTitle)),a.has("brSubtitle")&&(O.subtitle=y(t.brSubtitle)),a.has("brTheme")&&(O.defaultTheme=t.brTheme);const xe=h=>Object.keys(h).length?{...h}:null;return a.has("brColors")&&(O.colors=xe(t.brColors)),(a.has("brThemeDark")||a.has("brThemeLight"))&&(O.themeColors=Object.keys(t.brThemeDark).length||Object.keys(t.brThemeLight).length?{dark:{...t.brThemeDark},light:{...t.brThemeLight}}:null),Object.keys(O).length&&(i.branding=O),{patch:i,errors:l}}async function Ee(){try{L(await q.getConfig())}catch(l){V.value=l instanceof Error?l.message:n("settings.loadFailed")}finally{X.value=!1}}async function Pe(){var c;(c=_.value)==null||c.commit();const{patch:l,errors:a}=Ve();if(a.length){V.value=a.join("; ");return}j.value=!0,V.value=null;const i=R();try{const p=await q.updateConfig(l),y=R();L(p.config),Object.keys(y).forEach(v=>{ee(v,y,i)&&(t[v]=y[v])}),S.value=p.restartRequired,I.value=p.envOverridden,l.branding&&await Ae(),Q.add({title:n("settings.savedTitle"),description:n("settings.savedDescription",{path:p.configPath}),variant:"success"})}catch(p){V.value=p instanceof Error?p.message:n("settings.saveFailed")}finally{j.value=!1}}async function Te(){z.value=!0,V.value=null;try{const l=await q.reloadConfig();L(l.config),S.value=l.restartRequired,I.value=[],Q.add({title:n("settings.reloadedTitle"),description:l.configPath||n("settings.reloadedNoFile"),variant:"success"})}catch(l){V.value=l instanceof Error?l.message:n("settings.reloadFailed")}finally{z.value=!1}}function Ce(){var l;k.value&&((l=_.value)==null||l.commit(),L(k.value))}return Oe(Ee),(l,a)=>(x(),C(e(g),{direction:"vertical",gap:"1.5rem"},{default:o(()=>[s(e(D),{variant:"outline"},{default:o(()=>[s(e(g),{direction:"vertical",gap:"0.75rem"},{default:o(()=>[s(e(g),{direction:"horizontal",justify:"space-between",align:"center",wrap:"",gap:"0.75rem"},{default:o(()=>[s(e(g),{direction:"horizontal",gap:"0.75rem",align:"center"},{default:o(()=>[s(e(le),{name:"settings"}),s(e(g),{direction:"vertical",gap:"0.125rem"},{default:o(()=>[s(e(b),{size:"xl",weight:"semibold"},{default:o(()=>[u(d(e(n)("settings.title")),1)]),_:1}),s(e(b),{tone:"muted",size:"sm"},{default:o(()=>[u(d(e(n)("settings.subtitle")),1)]),_:1})]),_:1})]),_:1}),s(e(g),{direction:"horizontal",gap:"0.5rem",align:"center",wrap:""},{default:o(()=>[U.value?(x(),C(e(se),{key:0,tone:"warning",variant:"soft"},{default:o(()=>[u(d(U.value>1?e(n)("settings.unsavedChanges",{count:U.value}):e(n)("settings.unsavedChange",{count:U.value})),1)]),_:1})):w("",!0),s(e(F),{size:"sm",variant:"ghost",to:"/onboarding"},{default:o(()=>[u(d(e(n)("settings.reopenOnboarding")),1)]),_:1}),s(e(F),{size:"sm",variant:"outline",loading:z.value,onClick:Te},{icon:o(()=>[s(e(le),{name:"refresh-cw"})]),default:o(()=>[u(" "+d(e(n)("settings.reloadFromDisk")),1)]),_:1},8,["loading"]),s(e(F),{size:"sm",variant:"ghost",disabled:!U.value||j.value,onClick:Ce},{default:o(()=>[u(d(e(n)("settings.discard")),1)]),_:1},8,["disabled"]),s(e(F),{size:"sm",variant:"solid",loading:j.value,disabled:!U.value||fe.value,onClick:Pe},{default:o(()=>[u(d(e(n)("settings.saveChanges")),1)]),_:1},8,["loading","disabled"])]),_:1})]),_:1}),s(e(b),{tone:"muted",size:"xs",family:"mono"},{default:o(()=>{var i,c;return[u(d(((i=k.value)==null?void 0:i.configPath)||e(n)("settings.noConfigFile",{root:((c=k.value)==null?void 0:c.projectRoot)||e(n)("settings.projectRoot")})),1)]}),_:1})]),_:1})]),_:1}),V.value?(x(),C(e(G),{key:0,variant:"danger",dismissible:"",onDismiss:a[0]||(a[0]=i=>V.value=null)},{default:o(()=>[u(d(V.value),1)]),_:1})):w("",!0),S.value.length?(x(),C(e(G),{key:1,variant:"warning",dismissible:"",onDismiss:a[1]||(a[1]=i=>S.value=[])},{default:o(()=>[u(d(e(n)("settings.restartRequired",{keys:S.value.join(", ")}))+" "+d(e(n)("settings.restartRun"))+" ",1),s(e(b),{family:"mono"},{default:o(()=>[...a[35]||(a[35]=[u("lss stop && lss start",-1)])]),_:1}),u(" "+d(e(n)("settings.restartTask")),1)]),_:1})):w("",!0),I.value.length?(x(),C(e(G),{key:2,variant:"info",dismissible:"",onDismiss:a[2]||(a[2]=i=>I.value=[])},{default:o(()=>[u(d(e(n)("settings.envMaskedAlert",{keys:I.value.join(", ")})),1)]),_:1})):w("",!0),X.value?(x(),C(e(g),{key:3,direction:"horizontal",justify:"center",align:"center"},{default:o(()=>[s(e(Ue),{label:e(n)("settings.loadingConfig")},null,8,["label"])]),_:1})):k.value?(x(),C(e(Y),{key:4,columns:2,gap:"1rem"},{default:o(()=>[s(e(D),{variant:"outline"},{header:o(()=>[s(e(b),{weight:"semibold"},{default:o(()=>[u(d(e(n)("settings.serverCard")),1)]),_:1})]),default:o(()=>[s(e(g),{direction:"vertical",gap:"0.75rem"},{default:o(()=>[s(e(r),{label:e(n)("settings.serverPort"),hint:f("serverPort",e(n)("settings.serverPortHint"))},{default:o(()=>[s(e(m),{modelValue:t.serverPort,"onUpdate:modelValue":a[3]||(a[3]=i=>t.serverPort=i),modelModifiers:{number:!0},type:"number",min:"1",max:"65535"},null,8,["modelValue"])]),_:1},8,["label","hint"]),s(e(r),{label:e(n)("settings.defaultRegion"),hint:f("region",e(n)("settings.defaultRegionHint"))},{default:o(()=>[s(e(ie),{modelValue:t.region,"onUpdate:modelValue":a[4]||(a[4]=i=>t.region=i),options:e(He)},null,8,["modelValue","options"])]),_:1},8,["label","hint"]),s(e(r),{label:e(n)("settings.persistence"),hint:f("persistence",e(n)("settings.persistenceHint"))},{default:o(()=>[s(e(A),{modelValue:t.persistence,"onUpdate:modelValue":a[5]||(a[5]=i=>t.persistence=i)},null,8,["modelValue"])]),_:1},8,["label","hint"]),s(e(r),{label:e(n)("settings.debug"),hint:f("debug",e(n)("settings.debugHint"))},{default:o(()=>[s(e(A),{modelValue:t.debug,"onUpdate:modelValue":a[6]||(a[6]=i=>t.debug=i)},null,8,["modelValue"])]),_:1},8,["label","hint"]),s(e(r),{label:e(n)("settings.seedsDir"),hint:f("seedsDir",e(n)("settings.seedsDirHint"))},{default:o(()=>[s(e(m),{modelValue:t.seedsDir,"onUpdate:modelValue":a[7]||(a[7]=i=>t.seedsDir=i),placeholder:"./seeds"},null,8,["modelValue"])]),_:1},8,["label","hint"])]),_:1})]),_:1}),s(e(D),{variant:"outline"},{header:o(()=>[s(e(g),{direction:"horizontal",justify:"space-between",align:"center"},{default:o(()=>[s(e(b),{weight:"semibold"},{default:o(()=>[u(d(e(n)("settings.engineCard")),1)]),_:1}),s(e(se),{tone:"info",variant:"soft"},{default:o(()=>[u(d(e(n)("settings.engineBadge")),1)]),_:1})]),_:1})]),default:o(()=>[s(e(g),{direction:"vertical",gap:"0.75rem"},{default:o(()=>[s(e(Y),{columns:2,gap:"0.75rem"},{default:o(()=>[s(e(r),{label:e(n)("common.port"),hint:f("selfEngine",e(n)("settings.enginePortHint"))},{default:o(()=>[s(e(m),{modelValue:t.sePort,"onUpdate:modelValue":a[8]||(a[8]=i=>t.sePort=i),modelModifiers:{number:!0},type:"number",min:"1",max:"65535"},null,8,["modelValue"])]),_:1},8,["label","hint"]),s(e(r),{label:e(n)("settings.accountId"),hint:e(n)("settings.accountIdHint")},{default:o(()=>[s(e(m),{modelValue:t.seAccount,"onUpdate:modelValue":a[9]||(a[9]=i=>t.seAccount=i),placeholder:"000000000000"},null,8,["modelValue"])]),_:1},8,["label","hint"]),s(e(r),{label:e(n)("settings.memoryBudget"),hint:e(n)("settings.memoryBudgetHint")},{default:o(()=>[s(e(m),{modelValue:t.seMemoryBudgetMb,"onUpdate:modelValue":a[10]||(a[10]=i=>t.seMemoryBudgetMb=i),modelModifiers:{number:!0},type:"number",min:"1"},null,8,["modelValue"])]),_:1},8,["label","hint"]),s(e(r),{label:e(n)("settings.idleUnload"),hint:e(n)("settings.idleUnloadHint")},{default:o(()=>[s(e(m),{modelValue:t.seIdleUnloadMs,"onUpdate:modelValue":a[11]||(a[11]=i=>t.seIdleUnloadMs=i),modelModifiers:{number:!0},type:"number",min:"1"},null,8,["modelValue"])]),_:1},8,["label","hint"])]),_:1}),s(e(r),{label:e(n)("settings.fsync"),hint:e(n)("settings.fsyncHint")},{default:o(()=>[s(e(A),{modelValue:t.seFsync,"onUpdate:modelValue":a[12]||(a[12]=i=>t.seFsync=i)},null,8,["modelValue"])]),_:1},8,["label","hint"]),s(e(r),{label:e(n)("settings.fallbackEndpoint"),hint:e(n)("settings.fallbackEndpointHint")},{default:o(()=>[s(e(m),{modelValue:t.seFallback,"onUpdate:modelValue":a[13]||(a[13]=i=>t.seFallback=i),placeholder:""},null,8,["modelValue"])]),_:1},8,["label","hint"]),s(e(b),{tone:"muted",size:"xs",family:"mono"},{default:o(()=>[u(d(e(n)("settings.dataDir",{path:k.value.selfEngine.dataDir})),1)]),_:1})]),_:1})]),_:1}),s(e(D),{variant:"outline"},{header:o(()=>[s(e(b),{weight:"semibold"},{default:o(()=>[u(d(e(n)("settings.lambdaRuntimeCard")),1)]),_:1})]),default:o(()=>[s(e(g),{direction:"vertical",gap:"0.75rem"},{default:o(()=>[s(e(r),{label:e(n)("settings.lambdaRuntimeEnabled"),hint:f("lambdaRuntime",e(n)("settings.lambdaRuntimeEnabledHint"))},{default:o(()=>[s(e(A),{modelValue:t.lrEnabled,"onUpdate:modelValue":a[14]||(a[14]=i=>t.lrEnabled=i)},null,8,["modelValue"])]),_:1},8,["label","hint"]),s(e(r),{label:e(n)("settings.execution"),hint:e(n)("settings.executionHint")},{default:o(()=>[s(e(oe),{modelValue:t.lrExecution,"onUpdate:modelValue":a[15]||(a[15]=i=>t.lrExecution=i),options:ue.value,size:"md"},null,8,["modelValue","options"])]),_:1},8,["label","hint"]),s(e(r),{label:e(n)("settings.watch"),hint:e(n)("settings.watchHint")},{default:o(()=>[s(e(ie),{modelValue:t.lrWatch,"onUpdate:modelValue":a[16]||(a[16]=i=>t.lrWatch=i),options:de.value},null,8,["modelValue","options"])]),_:1},8,["label","hint"]),s(e(Y),{columns:2,gap:"0.75rem"},{default:o(()=>[s(e(r),{label:e(n)("settings.invokePortOffset"),hint:e(n)("settings.invokePortOffsetHint")},{default:o(()=>[s(e(m),{modelValue:t.lrInvokePortOffset,"onUpdate:modelValue":a[17]||(a[17]=i=>t.lrInvokePortOffset=i),modelModifiers:{number:!0},type:"number",min:"1"},null,8,["modelValue"])]),_:1},8,["label","hint"]),s(e(r),{label:e(n)("settings.invokeHost"),hint:e(n)("settings.invokeHostHint")},{default:o(()=>[s(e(m),{modelValue:t.lrInvokeHost,"onUpdate:modelValue":a[18]||(a[18]=i=>t.lrInvokeHost=i),placeholder:"host.docker.internal"},null,8,["modelValue"])]),_:1},8,["label","hint"])]),_:1})]),_:1})]),_:1}),s(e(D),{variant:"outline"},{header:o(()=>[s(e(b),{weight:"semibold"},{default:o(()=>[u(d(e(n)("settings.dynamoProxy")),1)]),_:1})]),default:o(()=>[s(e(g),{direction:"vertical",gap:"0.75rem"},{default:o(()=>[s(e(r),{label:e(n)("settings.dynamoProxy"),hint:f("enableDynamoProxy",e(n)("settings.dynamoProxyHint"))},{default:o(()=>[s(e(A),{modelValue:t.proxyEnabled,"onUpdate:modelValue":a[19]||(a[19]=i=>t.proxyEnabled=i)},null,8,["modelValue"])]),_:1},8,["label","hint"]),s(e(r),{label:e(n)("settings.proxyPort"),hint:f("dynamoProxyPort",e(n)("settings.proxyPortHint"))},{default:o(()=>[s(e(m),{modelValue:t.proxyPort,"onUpdate:modelValue":a[20]||(a[20]=i=>t.proxyPort=i),modelModifiers:{number:!0},type:"number",min:"1",max:"65535",disabled:!t.proxyEnabled},null,8,["modelValue","disabled"])]),_:1},8,["label","hint"])]),_:1})]),_:1}),s(e(D),{variant:"outline"},{header:o(()=>[s(e(b),{weight:"semibold"},{default:o(()=>[u(d(e(n)("settings.packagingCard")),1)]),_:1})]),default:o(()=>[s(e(g),{direction:"vertical",gap:"0.75rem"},{default:o(()=>[s(e(r),{label:e(n)("settings.autoPackage"),hint:f("autoPackage",e(n)("settings.autoPackageHint"))},{default:o(()=>[s(e(A),{modelValue:t.autoPackage,"onUpdate:modelValue":a[21]||(a[21]=i=>t.autoPackage=i)},null,8,["modelValue"])]),_:1},8,["label","hint"]),s(e(r),{label:e(n)("settings.packageCommand"),hint:f("packageCommand",e(n)("settings.packageCommandHint"))},{default:o(()=>[s(e(m),{modelValue:t.packageCommand,"onUpdate:modelValue":a[22]||(a[22]=i=>t.packageCommand=i),placeholder:"npx serverless package"},null,8,["modelValue"])]),_:1},8,["label","hint"]),s(e(r),{label:e(n)("settings.packageArgs"),hint:e(n)("settings.packageArgsHint")},{default:o(()=>[s(e(we),{ref_key:"argsInput",ref:_,modelValue:t.packageArgs,"onUpdate:modelValue":a[23]||(a[23]=i=>t.packageArgs=i),"allow-duplicates":!0,separator:null,placeholder:e(n)("settings.packageArgsPlaceholder"),"remove-label":e(n)("settings.packageArgsRemove"),"onUpdate:draft":a[24]||(a[24]=i=>ae.value=i)},null,8,["modelValue","placeholder","remove-label"])]),_:1},8,["label","hint"]),s(e(r),{label:e(n)("settings.packageEnv"),hint:e(n)("settings.packageEnvHint")},{default:o(()=>[s(e($),{mode:"secret",secrets:t.packageEnv.keys,labels:ce.value,"onUpdate:secrets":ke,onSetValue:pe,onClearValue:ve},null,8,["secrets","labels"])]),_:1},8,["label","hint"]),s(e(r),{label:e(n)("settings.packageTimeout"),hint:f("packageTimeoutMs",e(n)("settings.packageTimeoutHint"))},{default:o(()=>[s(e(m),{modelValue:t.packageTimeoutMs,"onUpdate:modelValue":a[25]||(a[25]=i=>t.packageTimeoutMs=i),modelModifiers:{number:!0},type:"number",min:"1"},null,8,["modelValue"])]),_:1},8,["label","hint"]),Object.keys(k.value.servicePackaging).length?(x(),C(e(b),{key:0,tone:"muted",size:"xs"},{default:o(()=>[u(d(e(n)("settings.packagingOverrides",{services:Object.keys(k.value.servicePackaging).join(", ")})),1)]),_:1})):w("",!0)]),_:1})]),_:1}),s(e(D),{variant:"outline"},{header:o(()=>[s(e(b),{weight:"semibold"},{default:o(()=>[u(d(e(n)("settings.brandingCard")),1)]),_:1})]),default:o(()=>[s(e(g),{direction:"vertical",gap:"0.75rem"},{default:o(()=>[s(e(r),{label:e(n)("settings.brandingTitle"),hint:e(n)("settings.brandingTitleHint")},{default:o(()=>[s(e(m),{modelValue:t.brTitle,"onUpdate:modelValue":a[26]||(a[26]=i=>t.brTitle=i),placeholder:"Local Serverless Stack"},null,8,["modelValue"])]),_:1},8,["label","hint"]),s(e(r),{label:e(n)("settings.brandingSubtitle"),hint:e(n)("settings.brandingSubtitleHint")},{default:o(()=>[s(e(m),{modelValue:t.brSubtitle,"onUpdate:modelValue":a[27]||(a[27]=i=>t.brSubtitle=i),placeholder:"Local development control plane"},null,8,["modelValue"])]),_:1},8,["label","hint"]),s(e(r),{label:e(n)("settings.defaultTheme"),hint:e(n)("settings.defaultThemeHint")},{default:o(()=>[s(e(oe),{modelValue:t.brTheme,"onUpdate:modelValue":a[28]||(a[28]=i=>t.brTheme=i),options:ge.value,size:"md"},null,8,["modelValue","options"])]),_:1},8,["label","hint"]),s(e(r),{label:e(n)("settings.brandingColors"),hint:e(n)("settings.brandingColorsHint"),error:H.value.brColors},{default:o(()=>[s(e($),{modelValue:t.brColors,"onUpdate:modelValue":a[29]||(a[29]=i=>t.brColors=i),labels:W.value,invalid:!!H.value.brColors,onValidityChange:a[30]||(a[30]=i=>K("brColors",i))},null,8,["modelValue","labels","invalid"])]),_:1},8,["label","hint","error"]),s(e(r),{label:e(n)("settings.brandingColorsDark"),hint:e(n)("settings.brandingColorsDarkHint"),error:H.value.brThemeDark},{default:o(()=>[s(e($),{modelValue:t.brThemeDark,"onUpdate:modelValue":a[31]||(a[31]=i=>t.brThemeDark=i),labels:W.value,invalid:!!H.value.brThemeDark,onValidityChange:a[32]||(a[32]=i=>K("brThemeDark",i))},null,8,["modelValue","labels","invalid"])]),_:1},8,["label","hint","error"]),s(e(r),{label:e(n)("settings.brandingColorsLight"),hint:e(n)("settings.brandingColorsLightHint"),error:H.value.brThemeLight},{default:o(()=>[s(e($),{modelValue:t.brThemeLight,"onUpdate:modelValue":a[33]||(a[33]=i=>t.brThemeLight=i),labels:W.value,invalid:!!H.value.brThemeLight,onValidityChange:a[34]||(a[34]=i=>K("brThemeLight",i))},null,8,["modelValue","labels","invalid"])]),_:1},8,["label","hint","error"]),s(e(b),{tone:"muted",size:"xs"},{default:o(()=>[u(d(e(n)("settings.brandingFileOnly")),1)]),_:1})]),_:1})]),_:1})]),_:1})):w("",!0)]),_:1}))}});export{Re as default};
|