Compare commits

...

2 Commits

Author SHA1 Message Date
Ben Duncan eb08996636 fix(ui): keep the subnet forms usable when route tables cannot be read 2026-11-05 03:47:19 +10:00
Ben Duncan 23fe0044c9 feat(ui): group launch subnets as public or private by their route tables
A subnet is public when its explicit route table, or else its VPC's main table, routes to an internet gateway. The NAT gateway form filters by the same rule instead of MapPublicIpOnLaunch.
2026-11-05 03:42:03 +10:00
34 changed files with 488 additions and 73 deletions
@@ -1,2 +1,2 @@
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/_id-CKC6mgIR.js","assets/schemas-DCQXG11d.js","assets/rolldown-runtime-XKyaHtl9.js","assets/useSuspenseQuery--dusmE-Q.js","assets/queryOptions-Cu2lvOFG.js","assets/QueryClientProvider-BuG40HBe.js","assets/ec2-DcwXjFvB.js","assets/aws-client-DrLAG3yq.js","assets/auth-BS4WytAe.js","assets/fetch-http-handler-C0nfkUzI.js","assets/toUtf8.browser-RsrLknAJ.js","assets/index.browser-D7GVEViY.js","assets/commandBuilder-M7C_FWzS.js","assets/back-link-B8ejy5Fm.js","assets/link-BX-1BPor.js","assets/matchContext-CUAcfcYw.js","assets/useRouter-B_eSHXWd.js","assets/info-tip-Cxa2GEOd.js","assets/visuallyHidden-BHQz5bmH.js","assets/useScrollLock-iGnmnC-h.js","assets/useValueAsRef-uzS1fuI8.js","assets/useTransitionStatus-Dn-09Anc.js","assets/composite-DysENEse.js","assets/useAnchoredPopupScrollLock-CoHshdlQ.js","assets/useValueChanged-wii0yYWk.js","assets/isElementDisabled-B7Ri5ug6.js","assets/store-BVhNJayb.js","assets/ToolbarRootContext-iMMgkc2r.js","assets/security-group-details-CdE6iD9s.js","assets/select-UwOVJofC.js","assets/check-DPoQ9cBn.js","assets/chevron-down-BgudX6bq.js","assets/useRegisterFieldControl-DkI655of.js","assets/useControlled-NIWPmeG5.js","assets/clamp-D0kAXd-u.js","assets/x-mlA6pp-8.js","assets/eye-yi4wz0yh.js","assets/maximize-2-BAlKoEj8.js","assets/plus-BK_7eO_G.js","assets/sliders-horizontal-DsGbsnBU.js","assets/cli-command-panel-Do14gxB9.js","assets/copy-B9ICxw_u.js","assets/use-copy-to-clipboard-D-PxomFK.js","assets/trash-BajuWzqn.js","assets/field-iLG94M00.js","assets/detail-panel-DLM1ExsZ.js","assets/loader-circle-C7EgoGp_.js","assets/collapsible-DddM174D.js","assets/tabs-9tHEWpNn.js","assets/CompositeRoot-CmHoR-Tk.js","assets/panel-search-LDLf8HCe.js","assets/error-banner-Cahg3Ix2.js","assets/ec2-mbMOQDVK.js","assets/useMutation-lRi0DDcO.js","assets/subnet-calculator-DDrAb5xp.js","assets/tags-Ki2a29eH.js","assets/delete-confirmation-dialog-O7cqOW0Y.js","assets/alert-dialog-D9jG-rkO.js","assets/DialogTitle-nAIOTphJ.js","assets/confirm-phrase-C4Dux-0Y.js","assets/resource-tags-DMnOITWf.js","assets/tags-CXDQrv7y.js","assets/commandBuilder-zZSrq900.js","assets/commandBuilder-CTdNRogs.js","assets/commandBuilder-lcvi73e2.js","assets/inline-tags-nfRc9elZ.js","assets/pencil-DLzYMCIc.js","assets/form-lock-D8Cu0Sfu.js","assets/form-panel-CtjudV7b.js","assets/instance-overview-I3DWLmM0.js","assets/useQuery-D6TojLgI.js","assets/iam-CCgnxhTh.js","assets/json-DSPw_Fae.js","assets/admin-UXb5aZ2d.js","assets/signed-fetch-BqrfDScu.js","assets/use-admin-C98I-ai5.js","assets/sts-CE3ck8x_.js","assets/sts-B3Vm6ytn.js","assets/state-badge-CQPRxt3J.js","assets/zod-nOHMBkds.js","assets/index.esm-C31mnnYl.js","assets/ec2-CM16SST3.js","assets/instance-type-size-DoyCeynC.js","assets/resource-delete-dialog-D3NYuO-k.js"])))=>i.map(i=>d[i]);
import{s as e}from"./schemas-DCQXG11d.js";import{n as t,t as n}from"./lazyRouteComponent-PMetaA3O.js";import{t as r}from"./searchMiddleware-Clk50hy1.js";import{U as i}from"./fetch-http-handler-C0nfkUzI.js";import{w as a}from"./ec2-DcwXjFvB.js";import{r as o}from"./panel-search-LDLf8HCe.js";var s=t(`/_auth/ec2/(security-groups)/describe-security-groups/$id`)({validateSearch:e({tab:o.tab}),search:{middlewares:[r({tab:`overview`})]},loader:async({context:e,params:t})=>{await e.queryClient.query({...a(t.id),staleTime:`static`})},head:({params:e})=>({meta:[{title:`${e.id} | Security Group | Mulga`}]}),component:n(()=>i(()=>import(`./_id-CKC6mgIR.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83])),`component`)});export{s as t};
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/_id-Decv9LyH.js","assets/schemas-DCQXG11d.js","assets/rolldown-runtime-XKyaHtl9.js","assets/useSuspenseQuery--dusmE-Q.js","assets/queryOptions-Cu2lvOFG.js","assets/QueryClientProvider-BuG40HBe.js","assets/ec2-DcwXjFvB.js","assets/aws-client-DrLAG3yq.js","assets/auth-BS4WytAe.js","assets/fetch-http-handler-C0nfkUzI.js","assets/toUtf8.browser-RsrLknAJ.js","assets/index.browser-D7GVEViY.js","assets/commandBuilder-M7C_FWzS.js","assets/back-link-B8ejy5Fm.js","assets/link-BX-1BPor.js","assets/matchContext-CUAcfcYw.js","assets/useRouter-B_eSHXWd.js","assets/info-tip-Cxa2GEOd.js","assets/visuallyHidden-BHQz5bmH.js","assets/useScrollLock-iGnmnC-h.js","assets/useValueAsRef-uzS1fuI8.js","assets/useTransitionStatus-Dn-09Anc.js","assets/composite-DysENEse.js","assets/useAnchoredPopupScrollLock-CoHshdlQ.js","assets/useValueChanged-wii0yYWk.js","assets/isElementDisabled-B7Ri5ug6.js","assets/store-BVhNJayb.js","assets/ToolbarRootContext-iMMgkc2r.js","assets/security-group-details-Dc-1r5cD.js","assets/select-UwOVJofC.js","assets/check-DPoQ9cBn.js","assets/chevron-down-BgudX6bq.js","assets/useRegisterFieldControl-DkI655of.js","assets/useControlled-NIWPmeG5.js","assets/clamp-D0kAXd-u.js","assets/x-mlA6pp-8.js","assets/eye-yi4wz0yh.js","assets/maximize-2-BAlKoEj8.js","assets/plus-BK_7eO_G.js","assets/sliders-horizontal-DsGbsnBU.js","assets/cli-command-panel-Do14gxB9.js","assets/copy-B9ICxw_u.js","assets/use-copy-to-clipboard-D-PxomFK.js","assets/trash-BajuWzqn.js","assets/field-iLG94M00.js","assets/detail-panel-DLM1ExsZ.js","assets/loader-circle-C7EgoGp_.js","assets/collapsible-DddM174D.js","assets/tabs-9tHEWpNn.js","assets/CompositeRoot-CmHoR-Tk.js","assets/panel-search-LDLf8HCe.js","assets/error-banner-Cahg3Ix2.js","assets/ec2-mbMOQDVK.js","assets/useMutation-lRi0DDcO.js","assets/subnet-calculator-DDrAb5xp.js","assets/tags-Ki2a29eH.js","assets/delete-confirmation-dialog-O7cqOW0Y.js","assets/alert-dialog-D9jG-rkO.js","assets/DialogTitle-nAIOTphJ.js","assets/confirm-phrase-C4Dux-0Y.js","assets/resource-tags-DMnOITWf.js","assets/tags-CXDQrv7y.js","assets/commandBuilder-zZSrq900.js","assets/commandBuilder-CTdNRogs.js","assets/commandBuilder-lcvi73e2.js","assets/inline-tags-nfRc9elZ.js","assets/pencil-DLzYMCIc.js","assets/form-lock-D8Cu0Sfu.js","assets/form-panel-CtjudV7b.js","assets/instance-overview-DWnPG_Ut.js","assets/useQuery-D6TojLgI.js","assets/iam-CCgnxhTh.js","assets/json-DSPw_Fae.js","assets/admin-UXb5aZ2d.js","assets/signed-fetch-BqrfDScu.js","assets/use-admin-C98I-ai5.js","assets/sts-CE3ck8x_.js","assets/sts-B3Vm6ytn.js","assets/state-badge-CQPRxt3J.js","assets/zod-nOHMBkds.js","assets/index.esm-C31mnnYl.js","assets/ec2-CM16SST3.js","assets/instance-type-size-DoyCeynC.js","assets/resource-delete-dialog-D3NYuO-k.js"])))=>i.map(i=>d[i]);
import{s as e}from"./schemas-DCQXG11d.js";import{n as t,t as n}from"./lazyRouteComponent-PMetaA3O.js";import{t as r}from"./searchMiddleware-Clk50hy1.js";import{U as i}from"./fetch-http-handler-C0nfkUzI.js";import{w as a}from"./ec2-DcwXjFvB.js";import{r as o}from"./panel-search-LDLf8HCe.js";var s=t(`/_auth/ec2/(security-groups)/describe-security-groups/$id`)({validateSearch:e({tab:o.tab}),search:{middlewares:[r({tab:`overview`})]},loader:async({context:e,params:t})=>{await e.queryClient.query({...a(t.id),staleTime:`static`})},head:({params:e})=>({meta:[{title:`${e.id} | Security Group | Mulga`}]}),component:n(()=>i(()=>import(`./_id-Decv9LyH.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83])),`component`)});export{s as t};
@@ -1,2 +1,2 @@
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/_id-DvfYtdcg.js","assets/schemas-DCQXG11d.js","assets/rolldown-runtime-XKyaHtl9.js","assets/useSuspenseQuery--dusmE-Q.js","assets/queryOptions-Cu2lvOFG.js","assets/QueryClientProvider-BuG40HBe.js","assets/elbv2-_G7aAoiA.js","assets/aws-client-DrLAG3yq.js","assets/auth-BS4WytAe.js","assets/fetch-http-handler-C0nfkUzI.js","assets/toUtf8.browser-RsrLknAJ.js","assets/index.browser-D7GVEViY.js","assets/tags-CXDQrv7y.js","assets/commandBuilder-M7C_FWzS.js","assets/commandBuilder-zZSrq900.js","assets/commandBuilder-CTdNRogs.js","assets/commandBuilder-lcvi73e2.js","assets/back-link-B8ejy5Fm.js","assets/link-BX-1BPor.js","assets/matchContext-CUAcfcYw.js","assets/useRouter-B_eSHXWd.js","assets/info-tip-Cxa2GEOd.js","assets/visuallyHidden-BHQz5bmH.js","assets/useScrollLock-iGnmnC-h.js","assets/useValueAsRef-uzS1fuI8.js","assets/useTransitionStatus-Dn-09Anc.js","assets/composite-DysENEse.js","assets/useAnchoredPopupScrollLock-CoHshdlQ.js","assets/useValueChanged-wii0yYWk.js","assets/isElementDisabled-B7Ri5ug6.js","assets/store-BVhNJayb.js","assets/ToolbarRootContext-iMMgkc2r.js","assets/target-group-details-BYflj3kw.js","assets/useQuery-D6TojLgI.js","assets/eye-yi4wz0yh.js","assets/maximize-2-BAlKoEj8.js","assets/sliders-horizontal-DsGbsnBU.js","assets/cli-command-panel-Do14gxB9.js","assets/check-DPoQ9cBn.js","assets/chevron-down-BgudX6bq.js","assets/copy-B9ICxw_u.js","assets/use-copy-to-clipboard-D-PxomFK.js","assets/trash-BajuWzqn.js","assets/field-iLG94M00.js","assets/useRegisterFieldControl-DkI655of.js","assets/detail-panel-DLM1ExsZ.js","assets/x-mlA6pp-8.js","assets/loader-circle-C7EgoGp_.js","assets/collapsible-DddM174D.js","assets/useControlled-NIWPmeG5.js","assets/tabs-9tHEWpNn.js","assets/CompositeRoot-CmHoR-Tk.js","assets/panel-search-LDLf8HCe.js","assets/error-banner-Cahg3Ix2.js","assets/ec2-DcwXjFvB.js","assets/tags-section-CqSxe9g7.js","assets/select-UwOVJofC.js","assets/clamp-D0kAXd-u.js","assets/useMutation-lRi0DDcO.js","assets/switch-CFqwHFZR.js","assets/useAriaLabelledBy-DStQJVTn.js","assets/tags-Ki2a29eH.js","assets/inline-tags-nfRc9elZ.js","assets/pencil-DLzYMCIc.js","assets/plus-BK_7eO_G.js","assets/delete-confirmation-dialog-O7cqOW0Y.js","assets/alert-dialog-D9jG-rkO.js","assets/DialogTitle-nAIOTphJ.js","assets/confirm-phrase-C4Dux-0Y.js","assets/state-badge-CQPRxt3J.js","assets/form-lock-D8Cu0Sfu.js","assets/form-panel-CtjudV7b.js","assets/switch-list-X53OOONN.js","assets/resource-delete-dialog-D3NYuO-k.js"])))=>i.map(i=>d[i]);
import{G as e,s as t}from"./schemas-DCQXG11d.js";import{n,t as r}from"./lazyRouteComponent-PMetaA3O.js";import{t as i}from"./searchMiddleware-Clk50hy1.js";import{U as a}from"./fetch-http-handler-C0nfkUzI.js";import{u as o}from"./ec2-DcwXjFvB.js";import{c as s,l as c,s as l}from"./elbv2-_G7aAoiA.js";import{r as u}from"./panel-search-LDLf8HCe.js";var d=n(`/_auth/ec2/(target-groups)/describe-target-groups/$id`)({validateSearch:t({tab:u.tab}),search:{middlewares:[i({tab:`overview`})]},loader:async({context:t,params:n})=>{let r=e(n.id);await Promise.all([t.queryClient.query({...c(r),staleTime:`static`}),t.queryClient.query({...s(r),staleTime:`static`}),t.queryClient.query({...l([r]),staleTime:`static`}),t.queryClient.query({...o,staleTime:`static`})])},head:({params:t})=>({meta:[{title:`${e(t.id)} | Target Group | Mulga`}]}),component:r(()=>a(()=>import(`./_id-DvfYtdcg.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73])),`component`)});export{d as t};
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/_id-CZ2kUeSp.js","assets/schemas-DCQXG11d.js","assets/rolldown-runtime-XKyaHtl9.js","assets/useSuspenseQuery--dusmE-Q.js","assets/queryOptions-Cu2lvOFG.js","assets/QueryClientProvider-BuG40HBe.js","assets/elbv2-_G7aAoiA.js","assets/aws-client-DrLAG3yq.js","assets/auth-BS4WytAe.js","assets/fetch-http-handler-C0nfkUzI.js","assets/toUtf8.browser-RsrLknAJ.js","assets/index.browser-D7GVEViY.js","assets/tags-CXDQrv7y.js","assets/commandBuilder-M7C_FWzS.js","assets/commandBuilder-zZSrq900.js","assets/commandBuilder-CTdNRogs.js","assets/commandBuilder-lcvi73e2.js","assets/back-link-B8ejy5Fm.js","assets/link-BX-1BPor.js","assets/matchContext-CUAcfcYw.js","assets/useRouter-B_eSHXWd.js","assets/info-tip-Cxa2GEOd.js","assets/visuallyHidden-BHQz5bmH.js","assets/useScrollLock-iGnmnC-h.js","assets/useValueAsRef-uzS1fuI8.js","assets/useTransitionStatus-Dn-09Anc.js","assets/composite-DysENEse.js","assets/useAnchoredPopupScrollLock-CoHshdlQ.js","assets/useValueChanged-wii0yYWk.js","assets/isElementDisabled-B7Ri5ug6.js","assets/store-BVhNJayb.js","assets/ToolbarRootContext-iMMgkc2r.js","assets/target-group-details-vQzJ30fd.js","assets/useQuery-D6TojLgI.js","assets/eye-yi4wz0yh.js","assets/maximize-2-BAlKoEj8.js","assets/sliders-horizontal-DsGbsnBU.js","assets/cli-command-panel-Do14gxB9.js","assets/check-DPoQ9cBn.js","assets/chevron-down-BgudX6bq.js","assets/copy-B9ICxw_u.js","assets/use-copy-to-clipboard-D-PxomFK.js","assets/trash-BajuWzqn.js","assets/field-iLG94M00.js","assets/useRegisterFieldControl-DkI655of.js","assets/detail-panel-DLM1ExsZ.js","assets/x-mlA6pp-8.js","assets/loader-circle-C7EgoGp_.js","assets/collapsible-DddM174D.js","assets/useControlled-NIWPmeG5.js","assets/tabs-9tHEWpNn.js","assets/CompositeRoot-CmHoR-Tk.js","assets/panel-search-LDLf8HCe.js","assets/error-banner-Cahg3Ix2.js","assets/ec2-DcwXjFvB.js","assets/tags-section-CqSxe9g7.js","assets/select-UwOVJofC.js","assets/clamp-D0kAXd-u.js","assets/useMutation-lRi0DDcO.js","assets/switch-CFqwHFZR.js","assets/useAriaLabelledBy-DStQJVTn.js","assets/tags-Ki2a29eH.js","assets/inline-tags-nfRc9elZ.js","assets/pencil-DLzYMCIc.js","assets/plus-BK_7eO_G.js","assets/delete-confirmation-dialog-O7cqOW0Y.js","assets/alert-dialog-D9jG-rkO.js","assets/DialogTitle-nAIOTphJ.js","assets/confirm-phrase-C4Dux-0Y.js","assets/state-badge-CQPRxt3J.js","assets/form-lock-D8Cu0Sfu.js","assets/form-panel-CtjudV7b.js","assets/switch-list-X53OOONN.js","assets/resource-delete-dialog-D3NYuO-k.js"])))=>i.map(i=>d[i]);
import{G as e,s as t}from"./schemas-DCQXG11d.js";import{n,t as r}from"./lazyRouteComponent-PMetaA3O.js";import{t as i}from"./searchMiddleware-Clk50hy1.js";import{U as a}from"./fetch-http-handler-C0nfkUzI.js";import{u as o}from"./ec2-DcwXjFvB.js";import{c as s,l as c,s as l}from"./elbv2-_G7aAoiA.js";import{r as u}from"./panel-search-LDLf8HCe.js";var d=n(`/_auth/ec2/(target-groups)/describe-target-groups/$id`)({validateSearch:t({tab:u.tab}),search:{middlewares:[i({tab:`overview`})]},loader:async({context:t,params:n})=>{let r=e(n.id);await Promise.all([t.queryClient.query({...c(r),staleTime:`static`}),t.queryClient.query({...s(r),staleTime:`static`}),t.queryClient.query({...l([r]),staleTime:`static`}),t.queryClient.query({...o,staleTime:`static`})])},head:({params:t})=>({meta:[{title:`${e(t.id)} | Target Group | Mulga`}]}),component:r(()=>a(()=>import(`./_id-CZ2kUeSp.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73])),`component`)});export{d as t};
@@ -1 +1 @@
import{G as e,It as t,Mt as n}from"./schemas-DCQXG11d.js";import{t as r}from"./useSuspenseQuery--dusmE-Q.js";import{l as i}from"./elbv2-_G7aAoiA.js";import{t as a}from"./_id-5TBySksk.js";import{t as o}from"./back-link-B8ejy5Fm.js";import{t as s}from"./target-group-details-BYflj3kw.js";var c=n(),l=t();function u(){let t=(0,c.c)(12),{id:n}=a.useParams(),{tab:u}=a.useSearch(),d=a.useNavigate(),f,p;if(t[0]!==n){let a=e(n);f=r,p=i(a),t[0]=n,t[1]=f,t[2]=p}else f=t[1],p=t[2];let{data:m}=f(p),h=m.TargetGroups?.[0];if(!h?.TargetGroupArn){let e;return t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(o,{to:`/ec2/describe-target-groups`,children:`Back to target groups`}),(0,l.jsx)(`p`,{className:`text-muted-foreground`,children:`Target group not found.`})]}),t[3]=e):e=t[3],e}let g,_;t[4]===d?(g=t[5],_=t[6]):(g=()=>{d({to:`/ec2/describe-target-groups`})},_=e=>{d({search:{tab:e},replace:!0})},t[4]=d,t[5]=g,t[6]=_);let v;return t[7]!==g||t[8]!==_||t[9]!==u||t[10]!==h?(v=(0,l.jsx)(s,{layout:`page`,onClose:g,onTabChange:_,tab:u,tg:h}),t[7]=g,t[8]=_,t[9]=u,t[10]=h,t[11]=v):v=t[11],v}export{u as component};
import{G as e,It as t,Mt as n}from"./schemas-DCQXG11d.js";import{t as r}from"./useSuspenseQuery--dusmE-Q.js";import{l as i}from"./elbv2-_G7aAoiA.js";import{t as a}from"./_id-BOgI0Lwr.js";import{t as o}from"./back-link-B8ejy5Fm.js";import{t as s}from"./target-group-details-vQzJ30fd.js";var c=n(),l=t();function u(){let t=(0,c.c)(12),{id:n}=a.useParams(),{tab:u}=a.useSearch(),d=a.useNavigate(),f,p;if(t[0]!==n){let a=e(n);f=r,p=i(a),t[0]=n,t[1]=f,t[2]=p}else f=t[1],p=t[2];let{data:m}=f(p),h=m.TargetGroups?.[0];if(!h?.TargetGroupArn){let e;return t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(o,{to:`/ec2/describe-target-groups`,children:`Back to target groups`}),(0,l.jsx)(`p`,{className:`text-muted-foreground`,children:`Target group not found.`})]}),t[3]=e):e=t[3],e}let g,_;t[4]===d?(g=t[5],_=t[6]):(g=()=>{d({to:`/ec2/describe-target-groups`})},_=e=>{d({search:{tab:e},replace:!0})},t[4]=d,t[5]=g,t[6]=_);let v;return t[7]!==g||t[8]!==_||t[9]!==u||t[10]!==h?(v=(0,l.jsx)(s,{layout:`page`,onClose:g,onTabChange:_,tab:u,tg:h}),t[7]=g,t[8]=_,t[9]=u,t[10]=h,t[11]=v):v=t[11],v}export{u as component};
@@ -1,2 +1,2 @@
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/_id-D-4sj3aj.js","assets/schemas-DCQXG11d.js","assets/rolldown-runtime-XKyaHtl9.js","assets/useSuspenseQuery--dusmE-Q.js","assets/queryOptions-Cu2lvOFG.js","assets/QueryClientProvider-BuG40HBe.js","assets/instances-page-BPnRMywb.js","assets/select-UwOVJofC.js","assets/visuallyHidden-BHQz5bmH.js","assets/check-DPoQ9cBn.js","assets/chevron-down-BgudX6bq.js","assets/useScrollLock-iGnmnC-h.js","assets/useValueAsRef-uzS1fuI8.js","assets/useTransitionStatus-Dn-09Anc.js","assets/composite-DysENEse.js","assets/useRegisterFieldControl-DkI655of.js","assets/useValueChanged-wii0yYWk.js","assets/useAnchoredPopupScrollLock-CoHshdlQ.js","assets/isElementDisabled-B7Ri5ug6.js","assets/useControlled-NIWPmeG5.js","assets/ToolbarRootContext-iMMgkc2r.js","assets/clamp-D0kAXd-u.js","assets/useQuery-D6TojLgI.js","assets/link-BX-1BPor.js","assets/matchContext-CUAcfcYw.js","assets/useRouter-B_eSHXWd.js","assets/data-table-9n7xOy9s.js","assets/useSelector-CDb-n1FW.js","assets/useAriaLabelledBy-DStQJVTn.js","assets/table-BLvCYTga.js","assets/useNavigate-cMdr_EJ0.js","assets/info-tip-Cxa2GEOd.js","assets/store-BVhNJayb.js","assets/eye-yi4wz0yh.js","assets/globe-D4RJ05Is.js","assets/maximize-2-BAlKoEj8.js","assets/button-group-CpOcyma9.js","assets/play-qJowxtRp.js","assets/plus-BK_7eO_G.js","assets/refresh-cw-Cb2whnur.js","assets/rotate-cw-DhHI5fTM.js","assets/server-D03m5B1l.js","assets/sliders-horizontal-DsGbsnBU.js","assets/cli-command-panel-Do14gxB9.js","assets/copy-B9ICxw_u.js","assets/use-copy-to-clipboard-D-PxomFK.js","assets/trash-BajuWzqn.js","assets/radio-group-TE8lo9RG.js","assets/CompositeRoot-CmHoR-Tk.js","assets/CompositeItem-DqJfacHh.js","assets/field-iLG94M00.js","assets/detail-panel-DLM1ExsZ.js","assets/x-mlA6pp-8.js","assets/loader-circle-C7EgoGp_.js","assets/collapsible-DddM174D.js","assets/tabs-9tHEWpNn.js","assets/panel-search-LDLf8HCe.js","assets/error-banner-Cahg3Ix2.js","assets/auth-BS4WytAe.js","assets/ec2-mbMOQDVK.js","assets/useMutation-lRi0DDcO.js","assets/aws-client-DrLAG3yq.js","assets/fetch-http-handler-C0nfkUzI.js","assets/toUtf8.browser-RsrLknAJ.js","assets/index.browser-D7GVEViY.js","assets/commandBuilder-M7C_FWzS.js","assets/ec2-DcwXjFvB.js","assets/subnet-calculator-DDrAb5xp.js","assets/tags-Ki2a29eH.js","assets/admin-UXb5aZ2d.js","assets/signed-fetch-BqrfDScu.js","assets/dropdown-menu-BDPQio-M.js","assets/switch-CFqwHFZR.js","assets/textarea-BG1iGvVs.js","assets/create-panel-BF47ohJ2.js","assets/delete-confirmation-dialog-O7cqOW0Y.js","assets/alert-dialog-D9jG-rkO.js","assets/DialogTitle-nAIOTphJ.js","assets/confirm-phrase-C4Dux-0Y.js","assets/filter-bar-DNltk5ao.js","assets/input-group-TEGNx6dm.js","assets/toggle-group-CED1FjZ4.js","assets/page-heading-ZfrnK2wu.js","assets/resource-view-CPdFr_3k.js","assets/selection-bar-WnknBhRB.js","assets/state-badge-CQPRxt3J.js","assets/table-cells-Dh4yWZC8.js","assets/use-row-selection-DB6L9NiD.js","assets/console-output-B2nAhrwp.js","assets/resource-tags-DMnOITWf.js","assets/tags-CXDQrv7y.js","assets/commandBuilder-zZSrq900.js","assets/commandBuilder-CTdNRogs.js","assets/commandBuilder-lcvi73e2.js","assets/inline-tags-nfRc9elZ.js","assets/pencil-DLzYMCIc.js","assets/form-lock-D8Cu0Sfu.js","assets/form-panel-CtjudV7b.js","assets/gpu-instance-type-select-DsB5oPSo.js","assets/metric-format-DCnx-pFz.js","assets/metric-format-CnsZ1jie.css","assets/instance-overview-I3DWLmM0.js","assets/iam-CCgnxhTh.js","assets/json-DSPw_Fae.js","assets/use-admin-C98I-ai5.js","assets/sts-CE3ck8x_.js","assets/sts-B3Vm6ytn.js","assets/zod-nOHMBkds.js","assets/index.esm-C31mnnYl.js","assets/ec2-CM16SST3.js","assets/instance-type-size-DoyCeynC.js","assets/system-managed-Dk7ySh_E.js","assets/choice-tile-CEc-Vca5.js","assets/form-fields-CcTBfvl9.js","assets/security-group-picker-CRcCOtjC.js","assets/switch-list-X53OOONN.js","assets/back-link-B8ejy5Fm.js"])))=>i.map(i=>d[i]);
import{s as e}from"./schemas-DCQXG11d.js";import{n as t,t as n}from"./lazyRouteComponent-PMetaA3O.js";import{t as r}from"./searchMiddleware-Clk50hy1.js";import{U as i}from"./fetch-http-handler-C0nfkUzI.js";import{c as a}from"./ec2-DcwXjFvB.js";import{r as o}from"./panel-search-LDLf8HCe.js";var s=t(`/_auth/ec2/(instances)/describe-instances/$id`)({validateSearch:e({tab:o.tab}),search:{middlewares:[r({tab:`overview`})]},loader:async({context:e,params:t})=>await e.queryClient.query({...a(t.id),staleTime:`static`}),head:({loaderData:e})=>({meta:[{title:`${e?.Reservations?.[0]?.Instances?.[0]?.InstanceId??`Instance`} | EC2 | Mulga`}]}),component:n(()=>i(()=>import(`./_id-D-4sj3aj.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116])),`component`)});export{s as t};
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/_id-Cpa-pqWX.js","assets/schemas-DCQXG11d.js","assets/rolldown-runtime-XKyaHtl9.js","assets/useSuspenseQuery--dusmE-Q.js","assets/queryOptions-Cu2lvOFG.js","assets/QueryClientProvider-BuG40HBe.js","assets/instances-page-Ol-kg3ZZ.js","assets/select-UwOVJofC.js","assets/visuallyHidden-BHQz5bmH.js","assets/check-DPoQ9cBn.js","assets/chevron-down-BgudX6bq.js","assets/useScrollLock-iGnmnC-h.js","assets/useValueAsRef-uzS1fuI8.js","assets/useTransitionStatus-Dn-09Anc.js","assets/composite-DysENEse.js","assets/useRegisterFieldControl-DkI655of.js","assets/useValueChanged-wii0yYWk.js","assets/useAnchoredPopupScrollLock-CoHshdlQ.js","assets/isElementDisabled-B7Ri5ug6.js","assets/useControlled-NIWPmeG5.js","assets/ToolbarRootContext-iMMgkc2r.js","assets/clamp-D0kAXd-u.js","assets/useQuery-D6TojLgI.js","assets/link-BX-1BPor.js","assets/matchContext-CUAcfcYw.js","assets/useRouter-B_eSHXWd.js","assets/data-table-9n7xOy9s.js","assets/useSelector-CDb-n1FW.js","assets/useAriaLabelledBy-DStQJVTn.js","assets/table-BLvCYTga.js","assets/useNavigate-cMdr_EJ0.js","assets/info-tip-Cxa2GEOd.js","assets/store-BVhNJayb.js","assets/eye-yi4wz0yh.js","assets/globe-D4RJ05Is.js","assets/maximize-2-BAlKoEj8.js","assets/button-group-CpOcyma9.js","assets/play-qJowxtRp.js","assets/plus-BK_7eO_G.js","assets/refresh-cw-Cb2whnur.js","assets/rotate-cw-DhHI5fTM.js","assets/server-D03m5B1l.js","assets/sliders-horizontal-DsGbsnBU.js","assets/cli-command-panel-Do14gxB9.js","assets/copy-B9ICxw_u.js","assets/use-copy-to-clipboard-D-PxomFK.js","assets/trash-BajuWzqn.js","assets/radio-group-TE8lo9RG.js","assets/CompositeRoot-CmHoR-Tk.js","assets/CompositeItem-DqJfacHh.js","assets/field-iLG94M00.js","assets/detail-panel-DLM1ExsZ.js","assets/x-mlA6pp-8.js","assets/loader-circle-C7EgoGp_.js","assets/collapsible-DddM174D.js","assets/tabs-9tHEWpNn.js","assets/panel-search-LDLf8HCe.js","assets/error-banner-Cahg3Ix2.js","assets/auth-BS4WytAe.js","assets/ec2-mbMOQDVK.js","assets/useMutation-lRi0DDcO.js","assets/aws-client-DrLAG3yq.js","assets/fetch-http-handler-C0nfkUzI.js","assets/toUtf8.browser-RsrLknAJ.js","assets/index.browser-D7GVEViY.js","assets/commandBuilder-M7C_FWzS.js","assets/ec2-DcwXjFvB.js","assets/subnet-calculator-DDrAb5xp.js","assets/tags-Ki2a29eH.js","assets/admin-UXb5aZ2d.js","assets/signed-fetch-BqrfDScu.js","assets/dropdown-menu-BDPQio-M.js","assets/switch-CFqwHFZR.js","assets/textarea-BG1iGvVs.js","assets/create-panel-BF47ohJ2.js","assets/delete-confirmation-dialog-O7cqOW0Y.js","assets/alert-dialog-D9jG-rkO.js","assets/DialogTitle-nAIOTphJ.js","assets/confirm-phrase-C4Dux-0Y.js","assets/filter-bar-DNltk5ao.js","assets/input-group-TEGNx6dm.js","assets/toggle-group-CED1FjZ4.js","assets/page-heading-ZfrnK2wu.js","assets/resource-view-CPdFr_3k.js","assets/selection-bar-WnknBhRB.js","assets/state-badge-CQPRxt3J.js","assets/table-cells-Dh4yWZC8.js","assets/use-row-selection-DB6L9NiD.js","assets/console-output-B2nAhrwp.js","assets/resource-tags-DMnOITWf.js","assets/tags-CXDQrv7y.js","assets/commandBuilder-zZSrq900.js","assets/commandBuilder-CTdNRogs.js","assets/commandBuilder-lcvi73e2.js","assets/inline-tags-nfRc9elZ.js","assets/pencil-DLzYMCIc.js","assets/form-lock-D8Cu0Sfu.js","assets/form-panel-CtjudV7b.js","assets/gpu-instance-type-select-DsB5oPSo.js","assets/metric-format-DCnx-pFz.js","assets/metric-format-CnsZ1jie.css","assets/instance-overview-DWnPG_Ut.js","assets/iam-CCgnxhTh.js","assets/json-DSPw_Fae.js","assets/use-admin-C98I-ai5.js","assets/sts-CE3ck8x_.js","assets/sts-B3Vm6ytn.js","assets/zod-nOHMBkds.js","assets/index.esm-C31mnnYl.js","assets/ec2-CM16SST3.js","assets/instance-type-size-DoyCeynC.js","assets/system-managed-Dk7ySh_E.js","assets/choice-tile-CEc-Vca5.js","assets/form-fields-CcTBfvl9.js","assets/security-group-picker-CRcCOtjC.js","assets/switch-list-X53OOONN.js","assets/subnet-routing-CyGJGaO-.js","assets/back-link-B8ejy5Fm.js"])))=>i.map(i=>d[i]);
import{s as e}from"./schemas-DCQXG11d.js";import{n as t,t as n}from"./lazyRouteComponent-PMetaA3O.js";import{t as r}from"./searchMiddleware-Clk50hy1.js";import{U as i}from"./fetch-http-handler-C0nfkUzI.js";import{c as a}from"./ec2-DcwXjFvB.js";import{r as o}from"./panel-search-LDLf8HCe.js";var s=t(`/_auth/ec2/(instances)/describe-instances/$id`)({validateSearch:e({tab:o.tab}),search:{middlewares:[r({tab:`overview`})]},loader:async({context:e,params:t})=>await e.queryClient.query({...a(t.id),staleTime:`static`}),head:({loaderData:e})=>({meta:[{title:`${e?.Reservations?.[0]?.Instances?.[0]?.InstanceId??`Instance`} | EC2 | Mulga`}]}),component:n(()=>i(()=>import(`./_id-Cpa-pqWX.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117])),`component`)});export{s as t};
@@ -1 +1 @@
import{It as e,Mt as t}from"./schemas-DCQXG11d.js";import{t as n}from"./useSuspenseQuery--dusmE-Q.js";import{a as r,i}from"./instances-page-BPnRMywb.js";import{c as a}from"./ec2-DcwXjFvB.js";import{t as o}from"./_id-DVp0ns8g.js";import{t as s}from"./back-link-B8ejy5Fm.js";var c=t(),l=e();function u(){let e=(0,c.c)(14),{id:t}=o.useParams(),{tab:u}=o.useSearch(),d=o.useNavigate(),f;e[0]===t?f=e[1]:(f=a(t),e[0]=t,e[1]=f);let{data:p}=n(f),m=p.Reservations?.[0]?.Instances?.[0];if(!m?.InstanceId){let t;return e[2]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s,{to:`/ec2/describe-instances`,children:`Back to instances`}),(0,l.jsx)(`p`,{className:`text-muted-foreground`,children:`Instance not found.`})]}),e[2]=t):t=e[2],t}let h;e[3]===m?h=e[4]:(h=i(m),e[3]=m,e[4]=h);let g,_;e[5]===d?(g=e[6],_=e[7]):(g=()=>{d({to:`/ec2/describe-instances`})},_=e=>{d({search:{tab:e},replace:!0})},e[5]=d,e[6]=g,e[7]=_);let v;return e[8]!==m||e[9]!==h||e[10]!==g||e[11]!==_||e[12]!==u?(v=(0,l.jsx)(r,{instance:m,layout:`page`,name:h,onClose:g,onTabChange:_,tab:u}),e[8]=m,e[9]=h,e[10]=g,e[11]=_,e[12]=u,e[13]=v):v=e[13],v}export{u as component};
import{It as e,Mt as t}from"./schemas-DCQXG11d.js";import{t as n}from"./useSuspenseQuery--dusmE-Q.js";import{a as r,i}from"./instances-page-Ol-kg3ZZ.js";import{c as a}from"./ec2-DcwXjFvB.js";import{t as o}from"./_id-CcCuzlb5.js";import{t as s}from"./back-link-B8ejy5Fm.js";var c=t(),l=e();function u(){let e=(0,c.c)(14),{id:t}=o.useParams(),{tab:u}=o.useSearch(),d=o.useNavigate(),f;e[0]===t?f=e[1]:(f=a(t),e[0]=t,e[1]=f);let{data:p}=n(f),m=p.Reservations?.[0]?.Instances?.[0];if(!m?.InstanceId){let t;return e[2]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s,{to:`/ec2/describe-instances`,children:`Back to instances`}),(0,l.jsx)(`p`,{className:`text-muted-foreground`,children:`Instance not found.`})]}),e[2]=t):t=e[2],t}let h;e[3]===m?h=e[4]:(h=i(m),e[3]=m,e[4]=h);let g,_;e[5]===d?(g=e[6],_=e[7]):(g=()=>{d({to:`/ec2/describe-instances`})},_=e=>{d({search:{tab:e},replace:!0})},e[5]=d,e[6]=g,e[7]=_);let v;return e[8]!==m||e[9]!==h||e[10]!==g||e[11]!==_||e[12]!==u?(v=(0,l.jsx)(r,{instance:m,layout:`page`,name:h,onClose:g,onTabChange:_,tab:u}),e[8]=m,e[9]=h,e[10]=g,e[11]=_,e[12]=u,e[13]=v):v=e[13],v}export{u as component};
@@ -1 +1 @@
import{It as e,Mt as t}from"./schemas-DCQXG11d.js";import{t as n}from"./useSuspenseQuery--dusmE-Q.js";import{w as r}from"./ec2-DcwXjFvB.js";import{t as i}from"./_id-BzihuQgX.js";import{t as a}from"./back-link-B8ejy5Fm.js";import{t as o}from"./security-group-details-CdE6iD9s.js";var s=t(),c=e();function l(){let e=(0,s.c)(11),{id:t}=i.useParams(),{tab:l}=i.useSearch(),u=i.useNavigate(),d;e[0]===t?d=e[1]:(d=r(t),e[0]=t,e[1]=d);let{data:f}=n(d),p=f.SecurityGroups?.[0];if(!p?.GroupId){let t;return e[2]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(a,{to:`/ec2/describe-security-groups`,children:`Back to security groups`}),(0,c.jsx)(`p`,{className:`text-muted-foreground`,children:`Security group not found.`})]}),e[2]=t):t=e[2],t}let m,h;e[3]===u?(m=e[4],h=e[5]):(m=()=>{u({to:`/ec2/describe-security-groups`})},h=e=>{u({search:{tab:e},replace:!0})},e[3]=u,e[4]=m,e[5]=h);let g;return e[6]!==p||e[7]!==m||e[8]!==h||e[9]!==l?(g=(0,c.jsx)(o,{layout:`page`,onClose:m,onTabChange:h,sg:p,tab:l}),e[6]=p,e[7]=m,e[8]=h,e[9]=l,e[10]=g):g=e[10],g}export{l as component};
import{It as e,Mt as t}from"./schemas-DCQXG11d.js";import{t as n}from"./useSuspenseQuery--dusmE-Q.js";import{w as r}from"./ec2-DcwXjFvB.js";import{t as i}from"./_id-BD_vK45_.js";import{t as a}from"./back-link-B8ejy5Fm.js";import{t as o}from"./security-group-details-Dc-1r5cD.js";var s=t(),c=e();function l(){let e=(0,s.c)(11),{id:t}=i.useParams(),{tab:l}=i.useSearch(),u=i.useNavigate(),d;e[0]===t?d=e[1]:(d=r(t),e[0]=t,e[1]=d);let{data:f}=n(d),p=f.SecurityGroups?.[0];if(!p?.GroupId){let t;return e[2]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(a,{to:`/ec2/describe-security-groups`,children:`Back to security groups`}),(0,c.jsx)(`p`,{className:`text-muted-foreground`,children:`Security group not found.`})]}),e[2]=t):t=e[2],t}let m,h;e[3]===u?(m=e[4],h=e[5]):(m=()=>{u({to:`/ec2/describe-security-groups`})},h=e=>{u({search:{tab:e},replace:!0})},e[3]=u,e[4]=m,e[5]=h);let g;return e[6]!==p||e[7]!==m||e[8]!==h||e[9]!==l?(g=(0,c.jsx)(o,{layout:`page`,onClose:m,onTabChange:h,sg:p,tab:l}),e[6]=p,e[7]=m,e[8]=h,e[9]=l,e[10]=g):g=e[10],g}export{l as component};
@@ -1 +1 @@
import{It as e,Mt as t}from"./schemas-DCQXG11d.js";import{t as n}from"./useSuspenseQuery--dusmE-Q.js";import{n as r}from"./instances-page-BPnRMywb.js";import{u as i}from"./ec2-DcwXjFvB.js";import{t as a}from"./describe-instances-oBl3gO4F.js";var o=t(),s=e(),c={running:0,pending:1,stopping:2,"shutting-down":3,stopped:4,terminated:5};function l(){let e=(0,o.c)(8),{data:t}=n(i),c=a.useSearch(),l=a.useNavigate(),f;e[0]===t.Reservations?f=e[1]:(f=(t.Reservations?.flatMap(d)??[]).toSorted(u),e[0]=t.Reservations,e[1]=f);let p=f,m;e[2]===l?m=e[3]:(m=function(e){l({search:t=>({...t,...e}),replace:!(`selected`in e||`create`in e)})},e[2]=l,e[3]=m);let h=m,g;return e[4]!==p||e[5]!==h||e[6]!==c?(g=(0,s.jsx)(r,{instances:p,onSearchChange:h,search:c}),e[4]=p,e[5]=h,e[6]=c,e[7]=g):g=e[7],g}function u(e,t){let n=c[e.State?.Name??``]??6,r=c[t.State?.Name??``]??6;return n===r?(e.InstanceId??``).localeCompare(t.InstanceId??``):n-r}function d(e){return e.Instances??[]}export{l as component};
import{It as e,Mt as t}from"./schemas-DCQXG11d.js";import{t as n}from"./useSuspenseQuery--dusmE-Q.js";import{n as r}from"./instances-page-Ol-kg3ZZ.js";import{u as i}from"./ec2-DcwXjFvB.js";import{t as a}from"./describe-instances-N1NU-Vrz.js";var o=t(),s=e(),c={running:0,pending:1,stopping:2,"shutting-down":3,stopped:4,terminated:5};function l(){let e=(0,o.c)(8),{data:t}=n(i),c=a.useSearch(),l=a.useNavigate(),f;e[0]===t.Reservations?f=e[1]:(f=(t.Reservations?.flatMap(d)??[]).toSorted(u),e[0]=t.Reservations,e[1]=f);let p=f,m;e[2]===l?m=e[3]:(m=function(e){l({search:t=>({...t,...e}),replace:!(`selected`in e||`create`in e)})},e[2]=l,e[3]=m);let h=m,g;return e[4]!==p||e[5]!==h||e[6]!==c?(g=(0,s.jsx)(r,{instances:p,onSearchChange:h,search:c}),e[4]=p,e[5]=h,e[6]=c,e[7]=g):g=e[7],g}function u(e,t){let n=c[e.State?.Name??``]??6,r=c[t.State?.Name??``]??6;return n===r?(e.InstanceId??``).localeCompare(t.InstanceId??``):n-r}function d(e){return e.Instances??[]}export{l as component};
@@ -1,2 +1,2 @@
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/describe-instances-CPApFKIU.js","assets/schemas-DCQXG11d.js","assets/rolldown-runtime-XKyaHtl9.js","assets/useSuspenseQuery--dusmE-Q.js","assets/queryOptions-Cu2lvOFG.js","assets/QueryClientProvider-BuG40HBe.js","assets/instances-page-BPnRMywb.js","assets/select-UwOVJofC.js","assets/visuallyHidden-BHQz5bmH.js","assets/check-DPoQ9cBn.js","assets/chevron-down-BgudX6bq.js","assets/useScrollLock-iGnmnC-h.js","assets/useValueAsRef-uzS1fuI8.js","assets/useTransitionStatus-Dn-09Anc.js","assets/composite-DysENEse.js","assets/useRegisterFieldControl-DkI655of.js","assets/useValueChanged-wii0yYWk.js","assets/useAnchoredPopupScrollLock-CoHshdlQ.js","assets/isElementDisabled-B7Ri5ug6.js","assets/useControlled-NIWPmeG5.js","assets/ToolbarRootContext-iMMgkc2r.js","assets/clamp-D0kAXd-u.js","assets/useQuery-D6TojLgI.js","assets/link-BX-1BPor.js","assets/matchContext-CUAcfcYw.js","assets/useRouter-B_eSHXWd.js","assets/data-table-9n7xOy9s.js","assets/useSelector-CDb-n1FW.js","assets/useAriaLabelledBy-DStQJVTn.js","assets/table-BLvCYTga.js","assets/useNavigate-cMdr_EJ0.js","assets/info-tip-Cxa2GEOd.js","assets/store-BVhNJayb.js","assets/eye-yi4wz0yh.js","assets/globe-D4RJ05Is.js","assets/maximize-2-BAlKoEj8.js","assets/button-group-CpOcyma9.js","assets/play-qJowxtRp.js","assets/plus-BK_7eO_G.js","assets/refresh-cw-Cb2whnur.js","assets/rotate-cw-DhHI5fTM.js","assets/server-D03m5B1l.js","assets/sliders-horizontal-DsGbsnBU.js","assets/cli-command-panel-Do14gxB9.js","assets/copy-B9ICxw_u.js","assets/use-copy-to-clipboard-D-PxomFK.js","assets/trash-BajuWzqn.js","assets/radio-group-TE8lo9RG.js","assets/CompositeRoot-CmHoR-Tk.js","assets/CompositeItem-DqJfacHh.js","assets/field-iLG94M00.js","assets/detail-panel-DLM1ExsZ.js","assets/x-mlA6pp-8.js","assets/loader-circle-C7EgoGp_.js","assets/collapsible-DddM174D.js","assets/tabs-9tHEWpNn.js","assets/panel-search-LDLf8HCe.js","assets/error-banner-Cahg3Ix2.js","assets/auth-BS4WytAe.js","assets/ec2-mbMOQDVK.js","assets/useMutation-lRi0DDcO.js","assets/aws-client-DrLAG3yq.js","assets/fetch-http-handler-C0nfkUzI.js","assets/toUtf8.browser-RsrLknAJ.js","assets/index.browser-D7GVEViY.js","assets/commandBuilder-M7C_FWzS.js","assets/ec2-DcwXjFvB.js","assets/subnet-calculator-DDrAb5xp.js","assets/tags-Ki2a29eH.js","assets/admin-UXb5aZ2d.js","assets/signed-fetch-BqrfDScu.js","assets/dropdown-menu-BDPQio-M.js","assets/switch-CFqwHFZR.js","assets/textarea-BG1iGvVs.js","assets/create-panel-BF47ohJ2.js","assets/delete-confirmation-dialog-O7cqOW0Y.js","assets/alert-dialog-D9jG-rkO.js","assets/DialogTitle-nAIOTphJ.js","assets/confirm-phrase-C4Dux-0Y.js","assets/filter-bar-DNltk5ao.js","assets/input-group-TEGNx6dm.js","assets/toggle-group-CED1FjZ4.js","assets/page-heading-ZfrnK2wu.js","assets/resource-view-CPdFr_3k.js","assets/selection-bar-WnknBhRB.js","assets/state-badge-CQPRxt3J.js","assets/table-cells-Dh4yWZC8.js","assets/use-row-selection-DB6L9NiD.js","assets/console-output-B2nAhrwp.js","assets/resource-tags-DMnOITWf.js","assets/tags-CXDQrv7y.js","assets/commandBuilder-zZSrq900.js","assets/commandBuilder-CTdNRogs.js","assets/commandBuilder-lcvi73e2.js","assets/inline-tags-nfRc9elZ.js","assets/pencil-DLzYMCIc.js","assets/form-lock-D8Cu0Sfu.js","assets/form-panel-CtjudV7b.js","assets/gpu-instance-type-select-DsB5oPSo.js","assets/metric-format-DCnx-pFz.js","assets/metric-format-CnsZ1jie.css","assets/instance-overview-I3DWLmM0.js","assets/iam-CCgnxhTh.js","assets/json-DSPw_Fae.js","assets/use-admin-C98I-ai5.js","assets/sts-CE3ck8x_.js","assets/sts-B3Vm6ytn.js","assets/zod-nOHMBkds.js","assets/index.esm-C31mnnYl.js","assets/ec2-CM16SST3.js","assets/instance-type-size-DoyCeynC.js","assets/system-managed-Dk7ySh_E.js","assets/choice-tile-CEc-Vca5.js","assets/form-fields-CcTBfvl9.js","assets/security-group-picker-CRcCOtjC.js","assets/switch-list-X53OOONN.js"])))=>i.map(i=>d[i]);
import{l as e,s as t,t as n}from"./schemas-DCQXG11d.js";import{n as r,t as i}from"./lazyRouteComponent-PMetaA3O.js";import{t as a}from"./searchMiddleware-Clk50hy1.js";import{r as o,t as s}from"./instances-page-BPnRMywb.js";import{U as c}from"./fetch-http-handler-C0nfkUzI.js";import{u as l}from"./ec2-DcwXjFvB.js";import{r as u}from"./panel-search-LDLf8HCe.js";var d=()=>c(()=>import(`./describe-instances-CPApFKIU.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115])),f=t({q:e().default(``).catch(``),state:n(o).default(`all`).catch(`all`),sort:e().default(``).catch(``),template:e().default(``).catch(``),templateVersion:e().default(``).catch(``),...u}),p={q:``,state:`all`,sort:``,...s},m=r(`/_auth/ec2/(instances)/describe-instances/`)({validateSearch:f,search:{middlewares:[a(p)]},loader:async({context:e})=>{await e.queryClient.query({...l,staleTime:`static`})},head:()=>({meta:[{title:`Instances | EC2 | Mulga`}]}),component:i(d,`component`)});export{m as t};
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/describe-instances-BQwLh8rf.js","assets/schemas-DCQXG11d.js","assets/rolldown-runtime-XKyaHtl9.js","assets/useSuspenseQuery--dusmE-Q.js","assets/queryOptions-Cu2lvOFG.js","assets/QueryClientProvider-BuG40HBe.js","assets/instances-page-Ol-kg3ZZ.js","assets/select-UwOVJofC.js","assets/visuallyHidden-BHQz5bmH.js","assets/check-DPoQ9cBn.js","assets/chevron-down-BgudX6bq.js","assets/useScrollLock-iGnmnC-h.js","assets/useValueAsRef-uzS1fuI8.js","assets/useTransitionStatus-Dn-09Anc.js","assets/composite-DysENEse.js","assets/useRegisterFieldControl-DkI655of.js","assets/useValueChanged-wii0yYWk.js","assets/useAnchoredPopupScrollLock-CoHshdlQ.js","assets/isElementDisabled-B7Ri5ug6.js","assets/useControlled-NIWPmeG5.js","assets/ToolbarRootContext-iMMgkc2r.js","assets/clamp-D0kAXd-u.js","assets/useQuery-D6TojLgI.js","assets/link-BX-1BPor.js","assets/matchContext-CUAcfcYw.js","assets/useRouter-B_eSHXWd.js","assets/data-table-9n7xOy9s.js","assets/useSelector-CDb-n1FW.js","assets/useAriaLabelledBy-DStQJVTn.js","assets/table-BLvCYTga.js","assets/useNavigate-cMdr_EJ0.js","assets/info-tip-Cxa2GEOd.js","assets/store-BVhNJayb.js","assets/eye-yi4wz0yh.js","assets/globe-D4RJ05Is.js","assets/maximize-2-BAlKoEj8.js","assets/button-group-CpOcyma9.js","assets/play-qJowxtRp.js","assets/plus-BK_7eO_G.js","assets/refresh-cw-Cb2whnur.js","assets/rotate-cw-DhHI5fTM.js","assets/server-D03m5B1l.js","assets/sliders-horizontal-DsGbsnBU.js","assets/cli-command-panel-Do14gxB9.js","assets/copy-B9ICxw_u.js","assets/use-copy-to-clipboard-D-PxomFK.js","assets/trash-BajuWzqn.js","assets/radio-group-TE8lo9RG.js","assets/CompositeRoot-CmHoR-Tk.js","assets/CompositeItem-DqJfacHh.js","assets/field-iLG94M00.js","assets/detail-panel-DLM1ExsZ.js","assets/x-mlA6pp-8.js","assets/loader-circle-C7EgoGp_.js","assets/collapsible-DddM174D.js","assets/tabs-9tHEWpNn.js","assets/panel-search-LDLf8HCe.js","assets/error-banner-Cahg3Ix2.js","assets/auth-BS4WytAe.js","assets/ec2-mbMOQDVK.js","assets/useMutation-lRi0DDcO.js","assets/aws-client-DrLAG3yq.js","assets/fetch-http-handler-C0nfkUzI.js","assets/toUtf8.browser-RsrLknAJ.js","assets/index.browser-D7GVEViY.js","assets/commandBuilder-M7C_FWzS.js","assets/ec2-DcwXjFvB.js","assets/subnet-calculator-DDrAb5xp.js","assets/tags-Ki2a29eH.js","assets/admin-UXb5aZ2d.js","assets/signed-fetch-BqrfDScu.js","assets/dropdown-menu-BDPQio-M.js","assets/switch-CFqwHFZR.js","assets/textarea-BG1iGvVs.js","assets/create-panel-BF47ohJ2.js","assets/delete-confirmation-dialog-O7cqOW0Y.js","assets/alert-dialog-D9jG-rkO.js","assets/DialogTitle-nAIOTphJ.js","assets/confirm-phrase-C4Dux-0Y.js","assets/filter-bar-DNltk5ao.js","assets/input-group-TEGNx6dm.js","assets/toggle-group-CED1FjZ4.js","assets/page-heading-ZfrnK2wu.js","assets/resource-view-CPdFr_3k.js","assets/selection-bar-WnknBhRB.js","assets/state-badge-CQPRxt3J.js","assets/table-cells-Dh4yWZC8.js","assets/use-row-selection-DB6L9NiD.js","assets/console-output-B2nAhrwp.js","assets/resource-tags-DMnOITWf.js","assets/tags-CXDQrv7y.js","assets/commandBuilder-zZSrq900.js","assets/commandBuilder-CTdNRogs.js","assets/commandBuilder-lcvi73e2.js","assets/inline-tags-nfRc9elZ.js","assets/pencil-DLzYMCIc.js","assets/form-lock-D8Cu0Sfu.js","assets/form-panel-CtjudV7b.js","assets/gpu-instance-type-select-DsB5oPSo.js","assets/metric-format-DCnx-pFz.js","assets/metric-format-CnsZ1jie.css","assets/instance-overview-DWnPG_Ut.js","assets/iam-CCgnxhTh.js","assets/json-DSPw_Fae.js","assets/use-admin-C98I-ai5.js","assets/sts-CE3ck8x_.js","assets/sts-B3Vm6ytn.js","assets/zod-nOHMBkds.js","assets/index.esm-C31mnnYl.js","assets/ec2-CM16SST3.js","assets/instance-type-size-DoyCeynC.js","assets/system-managed-Dk7ySh_E.js","assets/choice-tile-CEc-Vca5.js","assets/form-fields-CcTBfvl9.js","assets/security-group-picker-CRcCOtjC.js","assets/switch-list-X53OOONN.js","assets/subnet-routing-CyGJGaO-.js"])))=>i.map(i=>d[i]);
import{l as e,s as t,t as n}from"./schemas-DCQXG11d.js";import{n as r,t as i}from"./lazyRouteComponent-PMetaA3O.js";import{t as a}from"./searchMiddleware-Clk50hy1.js";import{r as o,t as s}from"./instances-page-Ol-kg3ZZ.js";import{U as c}from"./fetch-http-handler-C0nfkUzI.js";import{u as l}from"./ec2-DcwXjFvB.js";import{r as u}from"./panel-search-LDLf8HCe.js";var d=()=>c(()=>import(`./describe-instances-BQwLh8rf.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116])),f=t({q:e().default(``).catch(``),state:n(o).default(`all`).catch(`all`),sort:e().default(``).catch(``),template:e().default(``).catch(``),templateVersion:e().default(``).catch(``),...u}),p={q:``,state:`all`,sort:``,...s},m=r(`/_auth/ec2/(instances)/describe-instances/`)({validateSearch:f,search:{middlewares:[a(p)]},loader:async({context:e})=>{await e.queryClient.query({...l,staleTime:`static`})},head:()=>({meta:[{title:`Instances | EC2 | Mulga`}]}),component:i(d,`component`)});export{m as t};
File diff suppressed because one or more lines are too long
@@ -0,0 +1,2 @@
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/describe-nat-gateways-BSNUCY8N.js","assets/rolldown-runtime-XKyaHtl9.js","assets/schemas-DCQXG11d.js","assets/select-UwOVJofC.js","assets/visuallyHidden-BHQz5bmH.js","assets/check-DPoQ9cBn.js","assets/chevron-down-BgudX6bq.js","assets/useScrollLock-iGnmnC-h.js","assets/useValueAsRef-uzS1fuI8.js","assets/useTransitionStatus-Dn-09Anc.js","assets/composite-DysENEse.js","assets/useRegisterFieldControl-DkI655of.js","assets/useValueChanged-wii0yYWk.js","assets/useAnchoredPopupScrollLock-CoHshdlQ.js","assets/isElementDisabled-B7Ri5ug6.js","assets/useControlled-NIWPmeG5.js","assets/ToolbarRootContext-iMMgkc2r.js","assets/clamp-D0kAXd-u.js","assets/useQuery-D6TojLgI.js","assets/queryOptions-Cu2lvOFG.js","assets/QueryClientProvider-BuG40HBe.js","assets/useSuspenseQuery--dusmE-Q.js","assets/link-BX-1BPor.js","assets/matchContext-CUAcfcYw.js","assets/useRouter-B_eSHXWd.js","assets/data-table-9n7xOy9s.js","assets/useSelector-CDb-n1FW.js","assets/useAriaLabelledBy-DStQJVTn.js","assets/table-BLvCYTga.js","assets/plus-BK_7eO_G.js","assets/cli-command-panel-Do14gxB9.js","assets/copy-B9ICxw_u.js","assets/use-copy-to-clipboard-D-PxomFK.js","assets/field-iLG94M00.js","assets/ec2-mbMOQDVK.js","assets/useMutation-lRi0DDcO.js","assets/aws-client-DrLAG3yq.js","assets/auth-BS4WytAe.js","assets/fetch-http-handler-C0nfkUzI.js","assets/toUtf8.browser-RsrLknAJ.js","assets/index.browser-D7GVEViY.js","assets/commandBuilder-M7C_FWzS.js","assets/ec2-DcwXjFvB.js","assets/subnet-calculator-DDrAb5xp.js","assets/tags-Ki2a29eH.js","assets/panel-search-LDLf8HCe.js","assets/create-panel-BF47ohJ2.js","assets/detail-panel-DLM1ExsZ.js","assets/x-mlA6pp-8.js","assets/info-tip-Cxa2GEOd.js","assets/store-BVhNJayb.js","assets/loader-circle-C7EgoGp_.js","assets/collapsible-DddM174D.js","assets/tabs-9tHEWpNn.js","assets/CompositeRoot-CmHoR-Tk.js","assets/error-banner-Cahg3Ix2.js","assets/page-heading-ZfrnK2wu.js","assets/resource-view-CPdFr_3k.js","assets/selection-bar-WnknBhRB.js","assets/state-badge-CQPRxt3J.js","assets/use-row-selection-DB6L9NiD.js","assets/form-lock-D8Cu0Sfu.js","assets/index.esm-C31mnnYl.js","assets/zod-nOHMBkds.js","assets/ec2-CM16SST3.js","assets/subnet-routing-CyGJGaO-.js","assets/bulk-delete-CXIUB03J.js","assets/circle-x-C6c0uvb-.js","assets/trash-BajuWzqn.js","assets/alert-dialog-D9jG-rkO.js","assets/DialogTitle-nAIOTphJ.js","assets/confirm-phrase-C4Dux-0Y.js","assets/nat-gateway-details-B4rSOrtE.js","assets/eye-yi4wz0yh.js","assets/maximize-2-BAlKoEj8.js","assets/sliders-horizontal-DsGbsnBU.js","assets/resource-tags-DMnOITWf.js","assets/tags-CXDQrv7y.js","assets/commandBuilder-zZSrq900.js","assets/commandBuilder-CTdNRogs.js","assets/commandBuilder-lcvi73e2.js","assets/inline-tags-nfRc9elZ.js","assets/pencil-DLzYMCIc.js","assets/resource-delete-dialog-D3NYuO-k.js","assets/delete-confirmation-dialog-O7cqOW0Y.js"])))=>i.map(i=>d[i]);
import{s as e}from"./schemas-DCQXG11d.js";import{n as t,t as n}from"./lazyRouteComponent-PMetaA3O.js";import{t as r}from"./searchMiddleware-Clk50hy1.js";import{U as i}from"./fetch-http-handler-C0nfkUzI.js";import{v as a}from"./ec2-DcwXjFvB.js";import{r as o,t as s}from"./panel-search-LDLf8HCe.js";var c=()=>i(()=>import(`./describe-nat-gateways-BSNUCY8N.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84])),l=e(o),u=t(`/_auth/ec2/(nat-gateways)/describe-nat-gateways/`)({validateSearch:l,search:{middlewares:[r(s)]},loader:async({context:e})=>{await e.queryClient.query({...a,staleTime:`static`})},head:()=>({meta:[{title:`NAT Gateways | EC2 | Mulga`}]}),component:n(c,`component`)});export{u as t};
File diff suppressed because one or more lines are too long
@@ -1,2 +0,0 @@
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/describe-nat-gateways-BkfId_R7.js","assets/rolldown-runtime-XKyaHtl9.js","assets/schemas-DCQXG11d.js","assets/select-UwOVJofC.js","assets/visuallyHidden-BHQz5bmH.js","assets/check-DPoQ9cBn.js","assets/chevron-down-BgudX6bq.js","assets/useScrollLock-iGnmnC-h.js","assets/useValueAsRef-uzS1fuI8.js","assets/useTransitionStatus-Dn-09Anc.js","assets/composite-DysENEse.js","assets/useRegisterFieldControl-DkI655of.js","assets/useValueChanged-wii0yYWk.js","assets/useAnchoredPopupScrollLock-CoHshdlQ.js","assets/isElementDisabled-B7Ri5ug6.js","assets/useControlled-NIWPmeG5.js","assets/ToolbarRootContext-iMMgkc2r.js","assets/clamp-D0kAXd-u.js","assets/useSuspenseQuery--dusmE-Q.js","assets/queryOptions-Cu2lvOFG.js","assets/QueryClientProvider-BuG40HBe.js","assets/link-BX-1BPor.js","assets/matchContext-CUAcfcYw.js","assets/useRouter-B_eSHXWd.js","assets/data-table-9n7xOy9s.js","assets/useSelector-CDb-n1FW.js","assets/useAriaLabelledBy-DStQJVTn.js","assets/table-BLvCYTga.js","assets/plus-BK_7eO_G.js","assets/cli-command-panel-Do14gxB9.js","assets/copy-B9ICxw_u.js","assets/use-copy-to-clipboard-D-PxomFK.js","assets/field-iLG94M00.js","assets/ec2-mbMOQDVK.js","assets/useMutation-lRi0DDcO.js","assets/aws-client-DrLAG3yq.js","assets/auth-BS4WytAe.js","assets/fetch-http-handler-C0nfkUzI.js","assets/toUtf8.browser-RsrLknAJ.js","assets/index.browser-D7GVEViY.js","assets/commandBuilder-M7C_FWzS.js","assets/ec2-DcwXjFvB.js","assets/subnet-calculator-DDrAb5xp.js","assets/tags-Ki2a29eH.js","assets/panel-search-LDLf8HCe.js","assets/create-panel-BF47ohJ2.js","assets/detail-panel-DLM1ExsZ.js","assets/x-mlA6pp-8.js","assets/info-tip-Cxa2GEOd.js","assets/store-BVhNJayb.js","assets/loader-circle-C7EgoGp_.js","assets/collapsible-DddM174D.js","assets/tabs-9tHEWpNn.js","assets/CompositeRoot-CmHoR-Tk.js","assets/error-banner-Cahg3Ix2.js","assets/page-heading-ZfrnK2wu.js","assets/resource-view-CPdFr_3k.js","assets/selection-bar-WnknBhRB.js","assets/state-badge-CQPRxt3J.js","assets/use-row-selection-DB6L9NiD.js","assets/form-lock-D8Cu0Sfu.js","assets/index.esm-C31mnnYl.js","assets/zod-nOHMBkds.js","assets/ec2-CM16SST3.js","assets/bulk-delete-CXIUB03J.js","assets/circle-x-C6c0uvb-.js","assets/trash-BajuWzqn.js","assets/alert-dialog-D9jG-rkO.js","assets/DialogTitle-nAIOTphJ.js","assets/confirm-phrase-C4Dux-0Y.js","assets/nat-gateway-details-B4rSOrtE.js","assets/eye-yi4wz0yh.js","assets/maximize-2-BAlKoEj8.js","assets/sliders-horizontal-DsGbsnBU.js","assets/resource-tags-DMnOITWf.js","assets/tags-CXDQrv7y.js","assets/commandBuilder-zZSrq900.js","assets/commandBuilder-CTdNRogs.js","assets/commandBuilder-lcvi73e2.js","assets/inline-tags-nfRc9elZ.js","assets/pencil-DLzYMCIc.js","assets/resource-delete-dialog-D3NYuO-k.js","assets/delete-confirmation-dialog-O7cqOW0Y.js"])))=>i.map(i=>d[i]);
import{s as e}from"./schemas-DCQXG11d.js";import{n as t,t as n}from"./lazyRouteComponent-PMetaA3O.js";import{t as r}from"./searchMiddleware-Clk50hy1.js";import{U as i}from"./fetch-http-handler-C0nfkUzI.js";import{v as a}from"./ec2-DcwXjFvB.js";import{r as o,t as s}from"./panel-search-LDLf8HCe.js";var c=()=>i(()=>import(`./describe-nat-gateways-BkfId_R7.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82])),l=e(o),u=t(`/_auth/ec2/(nat-gateways)/describe-nat-gateways/`)({validateSearch:l,search:{middlewares:[r(s)]},loader:async({context:e})=>{await e.queryClient.query({...a,staleTime:`static`})},head:()=>({meta:[{title:`NAT Gateways | EC2 | Mulga`}]}),component:n(c,`component`)});export{u as t};
@@ -1,2 +1,2 @@
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/describe-security-groups-DWDM1GeE.js","assets/rolldown-runtime-XKyaHtl9.js","assets/schemas-DCQXG11d.js","assets/useSuspenseQuery--dusmE-Q.js","assets/queryOptions-Cu2lvOFG.js","assets/QueryClientProvider-BuG40HBe.js","assets/link-BX-1BPor.js","assets/matchContext-CUAcfcYw.js","assets/useRouter-B_eSHXWd.js","assets/data-table-9n7xOy9s.js","assets/useSelector-CDb-n1FW.js","assets/visuallyHidden-BHQz5bmH.js","assets/check-DPoQ9cBn.js","assets/useRegisterFieldControl-DkI655of.js","assets/useAriaLabelledBy-DStQJVTn.js","assets/useTransitionStatus-Dn-09Anc.js","assets/useValueChanged-wii0yYWk.js","assets/useControlled-NIWPmeG5.js","assets/table-BLvCYTga.js","assets/plus-BK_7eO_G.js","assets/cli-command-panel-Do14gxB9.js","assets/chevron-down-BgudX6bq.js","assets/copy-B9ICxw_u.js","assets/useValueAsRef-uzS1fuI8.js","assets/use-copy-to-clipboard-D-PxomFK.js","assets/ec2-mbMOQDVK.js","assets/useMutation-lRi0DDcO.js","assets/aws-client-DrLAG3yq.js","assets/auth-BS4WytAe.js","assets/fetch-http-handler-C0nfkUzI.js","assets/toUtf8.browser-RsrLknAJ.js","assets/index.browser-D7GVEViY.js","assets/commandBuilder-M7C_FWzS.js","assets/ec2-DcwXjFvB.js","assets/subnet-calculator-DDrAb5xp.js","assets/tags-Ki2a29eH.js","assets/panel-search-LDLf8HCe.js","assets/create-panel-BF47ohJ2.js","assets/detail-panel-DLM1ExsZ.js","assets/x-mlA6pp-8.js","assets/info-tip-Cxa2GEOd.js","assets/useScrollLock-iGnmnC-h.js","assets/composite-DysENEse.js","assets/useAnchoredPopupScrollLock-CoHshdlQ.js","assets/isElementDisabled-B7Ri5ug6.js","assets/store-BVhNJayb.js","assets/ToolbarRootContext-iMMgkc2r.js","assets/loader-circle-C7EgoGp_.js","assets/collapsible-DddM174D.js","assets/tabs-9tHEWpNn.js","assets/CompositeRoot-CmHoR-Tk.js","assets/error-banner-Cahg3Ix2.js","assets/page-heading-ZfrnK2wu.js","assets/resource-view-CPdFr_3k.js","assets/selection-bar-WnknBhRB.js","assets/use-row-selection-DB6L9NiD.js","assets/form-lock-D8Cu0Sfu.js","assets/index.esm-C31mnnYl.js","assets/zod-nOHMBkds.js","assets/ec2-CM16SST3.js","assets/form-fields-CcTBfvl9.js","assets/select-UwOVJofC.js","assets/clamp-D0kAXd-u.js","assets/field-iLG94M00.js","assets/bulk-delete-CXIUB03J.js","assets/circle-x-C6c0uvb-.js","assets/trash-BajuWzqn.js","assets/alert-dialog-D9jG-rkO.js","assets/DialogTitle-nAIOTphJ.js","assets/confirm-phrase-C4Dux-0Y.js","assets/vpc-select-field-C1Xb0z_c.js","assets/security-group-details-CdE6iD9s.js","assets/eye-yi4wz0yh.js","assets/maximize-2-BAlKoEj8.js","assets/sliders-horizontal-DsGbsnBU.js","assets/delete-confirmation-dialog-O7cqOW0Y.js","assets/resource-tags-DMnOITWf.js","assets/tags-CXDQrv7y.js","assets/commandBuilder-zZSrq900.js","assets/commandBuilder-CTdNRogs.js","assets/commandBuilder-lcvi73e2.js","assets/inline-tags-nfRc9elZ.js","assets/pencil-DLzYMCIc.js","assets/form-panel-CtjudV7b.js","assets/instance-overview-I3DWLmM0.js","assets/useQuery-D6TojLgI.js","assets/iam-CCgnxhTh.js","assets/json-DSPw_Fae.js","assets/admin-UXb5aZ2d.js","assets/signed-fetch-BqrfDScu.js","assets/use-admin-C98I-ai5.js","assets/sts-CE3ck8x_.js","assets/sts-B3Vm6ytn.js","assets/state-badge-CQPRxt3J.js","assets/instance-type-size-DoyCeynC.js","assets/resource-delete-dialog-D3NYuO-k.js"])))=>i.map(i=>d[i]);
import{s as e}from"./schemas-DCQXG11d.js";import{n as t,t as n}from"./lazyRouteComponent-PMetaA3O.js";import{t as r}from"./searchMiddleware-Clk50hy1.js";import{U as i}from"./fetch-http-handler-C0nfkUzI.js";import{T as a}from"./ec2-DcwXjFvB.js";import{r as o,t as s}from"./panel-search-LDLf8HCe.js";var c=()=>i(()=>import(`./describe-security-groups-DWDM1GeE.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95])),l=e(o),u=t(`/_auth/ec2/(security-groups)/describe-security-groups/`)({validateSearch:l,search:{middlewares:[r(s)]},loader:async({context:e})=>{await e.queryClient.query({...a,staleTime:`static`})},head:()=>({meta:[{title:`Security Groups | EC2 | Mulga`}]}),component:n(c,`component`)});export{u as t};
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/describe-security-groups-BEpeMX96.js","assets/rolldown-runtime-XKyaHtl9.js","assets/schemas-DCQXG11d.js","assets/useSuspenseQuery--dusmE-Q.js","assets/queryOptions-Cu2lvOFG.js","assets/QueryClientProvider-BuG40HBe.js","assets/link-BX-1BPor.js","assets/matchContext-CUAcfcYw.js","assets/useRouter-B_eSHXWd.js","assets/data-table-9n7xOy9s.js","assets/useSelector-CDb-n1FW.js","assets/visuallyHidden-BHQz5bmH.js","assets/check-DPoQ9cBn.js","assets/useRegisterFieldControl-DkI655of.js","assets/useAriaLabelledBy-DStQJVTn.js","assets/useTransitionStatus-Dn-09Anc.js","assets/useValueChanged-wii0yYWk.js","assets/useControlled-NIWPmeG5.js","assets/table-BLvCYTga.js","assets/plus-BK_7eO_G.js","assets/cli-command-panel-Do14gxB9.js","assets/chevron-down-BgudX6bq.js","assets/copy-B9ICxw_u.js","assets/useValueAsRef-uzS1fuI8.js","assets/use-copy-to-clipboard-D-PxomFK.js","assets/ec2-mbMOQDVK.js","assets/useMutation-lRi0DDcO.js","assets/aws-client-DrLAG3yq.js","assets/auth-BS4WytAe.js","assets/fetch-http-handler-C0nfkUzI.js","assets/toUtf8.browser-RsrLknAJ.js","assets/index.browser-D7GVEViY.js","assets/commandBuilder-M7C_FWzS.js","assets/ec2-DcwXjFvB.js","assets/subnet-calculator-DDrAb5xp.js","assets/tags-Ki2a29eH.js","assets/panel-search-LDLf8HCe.js","assets/create-panel-BF47ohJ2.js","assets/detail-panel-DLM1ExsZ.js","assets/x-mlA6pp-8.js","assets/info-tip-Cxa2GEOd.js","assets/useScrollLock-iGnmnC-h.js","assets/composite-DysENEse.js","assets/useAnchoredPopupScrollLock-CoHshdlQ.js","assets/isElementDisabled-B7Ri5ug6.js","assets/store-BVhNJayb.js","assets/ToolbarRootContext-iMMgkc2r.js","assets/loader-circle-C7EgoGp_.js","assets/collapsible-DddM174D.js","assets/tabs-9tHEWpNn.js","assets/CompositeRoot-CmHoR-Tk.js","assets/error-banner-Cahg3Ix2.js","assets/page-heading-ZfrnK2wu.js","assets/resource-view-CPdFr_3k.js","assets/selection-bar-WnknBhRB.js","assets/use-row-selection-DB6L9NiD.js","assets/form-lock-D8Cu0Sfu.js","assets/index.esm-C31mnnYl.js","assets/zod-nOHMBkds.js","assets/ec2-CM16SST3.js","assets/form-fields-CcTBfvl9.js","assets/select-UwOVJofC.js","assets/clamp-D0kAXd-u.js","assets/field-iLG94M00.js","assets/bulk-delete-CXIUB03J.js","assets/circle-x-C6c0uvb-.js","assets/trash-BajuWzqn.js","assets/alert-dialog-D9jG-rkO.js","assets/DialogTitle-nAIOTphJ.js","assets/confirm-phrase-C4Dux-0Y.js","assets/vpc-select-field-C1Xb0z_c.js","assets/security-group-details-Dc-1r5cD.js","assets/eye-yi4wz0yh.js","assets/maximize-2-BAlKoEj8.js","assets/sliders-horizontal-DsGbsnBU.js","assets/delete-confirmation-dialog-O7cqOW0Y.js","assets/resource-tags-DMnOITWf.js","assets/tags-CXDQrv7y.js","assets/commandBuilder-zZSrq900.js","assets/commandBuilder-CTdNRogs.js","assets/commandBuilder-lcvi73e2.js","assets/inline-tags-nfRc9elZ.js","assets/pencil-DLzYMCIc.js","assets/form-panel-CtjudV7b.js","assets/instance-overview-DWnPG_Ut.js","assets/useQuery-D6TojLgI.js","assets/iam-CCgnxhTh.js","assets/json-DSPw_Fae.js","assets/admin-UXb5aZ2d.js","assets/signed-fetch-BqrfDScu.js","assets/use-admin-C98I-ai5.js","assets/sts-CE3ck8x_.js","assets/sts-B3Vm6ytn.js","assets/state-badge-CQPRxt3J.js","assets/instance-type-size-DoyCeynC.js","assets/resource-delete-dialog-D3NYuO-k.js"])))=>i.map(i=>d[i]);
import{s as e}from"./schemas-DCQXG11d.js";import{n as t,t as n}from"./lazyRouteComponent-PMetaA3O.js";import{t as r}from"./searchMiddleware-Clk50hy1.js";import{U as i}from"./fetch-http-handler-C0nfkUzI.js";import{T as a}from"./ec2-DcwXjFvB.js";import{r as o,t as s}from"./panel-search-LDLf8HCe.js";var c=()=>i(()=>import(`./describe-security-groups-BEpeMX96.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95])),l=e(o),u=t(`/_auth/ec2/(security-groups)/describe-security-groups/`)({validateSearch:l,search:{middlewares:[r(s)]},loader:async({context:e})=>{await e.queryClient.query({...a,staleTime:`static`})},head:()=>({meta:[{title:`Security Groups | EC2 | Mulga`}]}),component:n(c,`component`)});export{u as t};
@@ -1,4 +1,4 @@
import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{It as t,Lt as n,Mt as r}from"./schemas-DCQXG11d.js";import{t as i}from"./useSuspenseQuery--dusmE-Q.js";import{t as a}from"./link-BX-1BPor.js";import{t as o}from"./data-table-9n7xOy9s.js";import{t as s}from"./plus-BK_7eO_G.js";import{a as c,i as l,r as u,t as d}from"./cli-command-panel-Do14gxB9.js";import{o as f}from"./useValueAsRef-uzS1fuI8.js";import{I as p,S as m}from"./ec2-mbMOQDVK.js";import{N as h,T as g}from"./ec2-DcwXjFvB.js";import{t as _}from"./panel-search-LDLf8HCe.js";import{t as v}from"./create-panel-BF47ohJ2.js";import{t as y}from"./page-heading-ZfrnK2wu.js";import{t as b}from"./resource-view-CPdFr_3k.js";import{t as x}from"./selection-bar-WnknBhRB.js";import{t as S}from"./use-row-selection-DB6L9NiD.js";import{n as C,t as w}from"./form-lock-D8Cu0Sfu.js";import{c as T,o as E}from"./index.esm-C31mnnYl.js";import{t as D}from"./zod-nOHMBkds.js";import{p as O}from"./ec2-CM16SST3.js";import{r as k}from"./form-fields-CcTBfvl9.js";import{t as A}from"./bulk-delete-CXIUB03J.js";import{t as j}from"./describe-security-groups-BUUHyKn_.js";import{t as M}from"./vpc-select-field-C1Xb0z_c.js";import{t as N}from"./security-group-details-CdE6iD9s.js";var P=e(n(),1),F=r(),I=t();function L(e){let t=(0,F.c)(47),{onClose:n}=e,{data:r}=i(h),a=m(),o;t[0]===r.Vpcs?o=t[1]:(o=r.Vpcs??[],t[0]=r.Vpcs,t[1]=o);let s=o,c;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(c=D(O),t[2]=c):c=t[2];let l=s[0]?.VpcId??``,u;t[3]===l?u=t[4]:(u={resolver:c,defaultValues:{groupName:``,description:``,vpcId:l}},t[3]=l,t[4]=u);let{control:f,handleSubmit:p,register:g,formState:_}=E(u),{errors:v,isSubmitting:y}=_,b;t[5]===f?b=t[6]:(b={control:f},t[5]=f,t[6]=b);let x=T(b),S;t[7]!==a||t[8]!==n?(S=async e=>{let t;try{t=await a.mutateAsync(e)}catch{return}n(t.GroupId)},t[7]=a,t[8]=n,t[9]=S):S=t[9];let A=S,j;t[10]!==p||t[11]!==A?(j=p(A),t[10]=p,t[11]=A,t[12]=j):j=t[12];let N=a.isPending||y,P=v.groupName,L;t[13]===g?L=t[14]:(L=g(`groupName`),t[13]=g,t[14]=L);let z;t[15]!==v.groupName||t[16]!==L?(z=(0,I.jsx)(k,{error:P,id:`groupName`,label:`Group Name`,placeholder:`my-security-group`,...L}),t[15]=v.groupName,t[16]=L,t[17]=z):z=t[17];let B=v.description,V;t[18]===g?V=t[19]:(V=g(`description`),t[18]=g,t[19]=V);let H;t[20]!==v.description||t[21]!==V?(H=(0,I.jsx)(k,{error:B,id:`description`,label:`Description`,placeholder:`My security group description`,...V}),t[20]=v.description,t[21]=V,t[22]=H):H=t[22];let U;t[23]!==f||t[24]!==s?(U=(0,I.jsx)(M,{control:f,id:`vpcId`,name:`vpcId`,vpcs:s}),t[23]=f,t[24]=s,t[25]=U):U=t[25];let W;t[26]===x?W=t[27]:(W=R(x),t[26]=x,t[27]=W);let G;t[28]===W?G=t[29]:(G=(0,I.jsx)(d,{commands:W}),t[28]=W,t[29]=G);let K;t[30]===n?K=t[31]:(K=()=>{n()},t[30]=n,t[31]=K);let q;t[32]!==a.error||t[33]!==a.isPending||t[34]!==y||t[35]!==K?(q=(0,I.jsx)(C,{error:a.error,errorMsg:`Failed to create security group`,isPending:a.isPending,isSubmitting:y,onCancel:K,pendingLabel:`Creating…`,submitLabel:`Create Security Group`}),t[32]=a.error,t[33]=a.isPending,t[34]=y,t[35]=K,t[36]=q):q=t[36];let J;t[37]!==z||t[38]!==H||t[39]!==U||t[40]!==G||t[41]!==q||t[42]!==N?(J=(0,I.jsxs)(w,{className:`space-y-6`,locked:N,children:[z,H,U,G,q]}),t[37]=z,t[38]=H,t[39]=U,t[40]=G,t[41]=q,t[42]=N,t[43]=J):J=t[43];let Y;return t[44]!==J||t[45]!==j?(Y=(0,I.jsx)(`form`,{onSubmit:j,children:J}),t[44]=J,t[45]=j,t[46]=Y):Y=t[46],Y}function R(e){let t=u(e.description??``,`Description`);return[{label:`Create Security Group`,parts:[{type:`bin`,value:`AWS_PROFILE=spinifex aws ec2 create-security-group`},...l(`\\
import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{It as t,Lt as n,Mt as r}from"./schemas-DCQXG11d.js";import{t as i}from"./useSuspenseQuery--dusmE-Q.js";import{t as a}from"./link-BX-1BPor.js";import{t as o}from"./data-table-9n7xOy9s.js";import{t as s}from"./plus-BK_7eO_G.js";import{a as c,i as l,r as u,t as d}from"./cli-command-panel-Do14gxB9.js";import{o as f}from"./useValueAsRef-uzS1fuI8.js";import{I as p,S as m}from"./ec2-mbMOQDVK.js";import{N as h,T as g}from"./ec2-DcwXjFvB.js";import{t as _}from"./panel-search-LDLf8HCe.js";import{t as v}from"./create-panel-BF47ohJ2.js";import{t as y}from"./page-heading-ZfrnK2wu.js";import{t as b}from"./resource-view-CPdFr_3k.js";import{t as x}from"./selection-bar-WnknBhRB.js";import{t as S}from"./use-row-selection-DB6L9NiD.js";import{n as C,t as w}from"./form-lock-D8Cu0Sfu.js";import{c as T,o as E}from"./index.esm-C31mnnYl.js";import{t as D}from"./zod-nOHMBkds.js";import{p as O}from"./ec2-CM16SST3.js";import{r as k}from"./form-fields-CcTBfvl9.js";import{t as A}from"./bulk-delete-CXIUB03J.js";import{t as j}from"./describe-security-groups-89hPyNfr.js";import{t as M}from"./vpc-select-field-C1Xb0z_c.js";import{t as N}from"./security-group-details-Dc-1r5cD.js";var P=e(n(),1),F=r(),I=t();function L(e){let t=(0,F.c)(47),{onClose:n}=e,{data:r}=i(h),a=m(),o;t[0]===r.Vpcs?o=t[1]:(o=r.Vpcs??[],t[0]=r.Vpcs,t[1]=o);let s=o,c;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(c=D(O),t[2]=c):c=t[2];let l=s[0]?.VpcId??``,u;t[3]===l?u=t[4]:(u={resolver:c,defaultValues:{groupName:``,description:``,vpcId:l}},t[3]=l,t[4]=u);let{control:f,handleSubmit:p,register:g,formState:_}=E(u),{errors:v,isSubmitting:y}=_,b;t[5]===f?b=t[6]:(b={control:f},t[5]=f,t[6]=b);let x=T(b),S;t[7]!==a||t[8]!==n?(S=async e=>{let t;try{t=await a.mutateAsync(e)}catch{return}n(t.GroupId)},t[7]=a,t[8]=n,t[9]=S):S=t[9];let A=S,j;t[10]!==p||t[11]!==A?(j=p(A),t[10]=p,t[11]=A,t[12]=j):j=t[12];let N=a.isPending||y,P=v.groupName,L;t[13]===g?L=t[14]:(L=g(`groupName`),t[13]=g,t[14]=L);let z;t[15]!==v.groupName||t[16]!==L?(z=(0,I.jsx)(k,{error:P,id:`groupName`,label:`Group Name`,placeholder:`my-security-group`,...L}),t[15]=v.groupName,t[16]=L,t[17]=z):z=t[17];let B=v.description,V;t[18]===g?V=t[19]:(V=g(`description`),t[18]=g,t[19]=V);let H;t[20]!==v.description||t[21]!==V?(H=(0,I.jsx)(k,{error:B,id:`description`,label:`Description`,placeholder:`My security group description`,...V}),t[20]=v.description,t[21]=V,t[22]=H):H=t[22];let U;t[23]!==f||t[24]!==s?(U=(0,I.jsx)(M,{control:f,id:`vpcId`,name:`vpcId`,vpcs:s}),t[23]=f,t[24]=s,t[25]=U):U=t[25];let W;t[26]===x?W=t[27]:(W=R(x),t[26]=x,t[27]=W);let G;t[28]===W?G=t[29]:(G=(0,I.jsx)(d,{commands:W}),t[28]=W,t[29]=G);let K;t[30]===n?K=t[31]:(K=()=>{n()},t[30]=n,t[31]=K);let q;t[32]!==a.error||t[33]!==a.isPending||t[34]!==y||t[35]!==K?(q=(0,I.jsx)(C,{error:a.error,errorMsg:`Failed to create security group`,isPending:a.isPending,isSubmitting:y,onCancel:K,pendingLabel:`Creating…`,submitLabel:`Create Security Group`}),t[32]=a.error,t[33]=a.isPending,t[34]=y,t[35]=K,t[36]=q):q=t[36];let J;t[37]!==z||t[38]!==H||t[39]!==U||t[40]!==G||t[41]!==q||t[42]!==N?(J=(0,I.jsxs)(w,{className:`space-y-6`,locked:N,children:[z,H,U,G,q]}),t[37]=z,t[38]=H,t[39]=U,t[40]=G,t[41]=q,t[42]=N,t[43]=J):J=t[43];let Y;return t[44]!==J||t[45]!==j?(Y=(0,I.jsx)(`form`,{onSubmit:j,children:J}),t[44]=J,t[45]=j,t[46]=Y):Y=t[46],Y}function R(e){let t=u(e.description??``,`Description`);return[{label:`Create Security Group`,parts:[{type:`bin`,value:`AWS_PROFILE=spinifex aws ec2 create-security-group`},...l(`\\
--group-name`,u(e.groupName??``,`GroupName`)),...l(`\\
--description`,`"${t}"`),...c(`\\
--vpc-id`,e.vpcId)]}]}function z(e){return(e??[]).reduce((e,t)=>e+(t.IpRanges?.length??0)+(t.Ipv6Ranges?.length??0)+(t.UserIdGroupPairs?.length??0)+(t.PrefixListIds?.length??0),0)}var B=[{id:`group`,header:`Security group`,sortValue:e=>e.GroupName??e.GroupId,cell:e=>{let t=e.GroupId??``;return(0,I.jsxs)(a,{className:`group block max-w-72 min-w-0 rounded-sm focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none`,from:`/ec2/describe-security-groups/`,search:e=>({...e,..._,selected:t}),to:`.`,children:[(0,I.jsx)(`span`,{className:`block truncate font-medium text-primary group-hover:underline`,children:e.GroupName??t}),e.GroupName&&(0,I.jsx)(`span`,{className:`block truncate font-mono text-xs text-muted-foreground`,children:t})]})}},{id:`vpc`,header:`VPC`,sortValue:e=>e.VpcId,hideBelow:`sm`,cell:e=>e.VpcId?(0,I.jsx)(a,{className:`font-mono text-xs text-primary hover:underline`,params:{id:e.VpcId},to:`/ec2/describe-vpcs/$id`,children:e.VpcId}):(0,I.jsx)(`span`,{className:`text-muted-foreground`,children:`—`})},{id:`description`,header:`Description`,sortValue:e=>e.Description,hideBelow:`lg`,cell:e=>(0,I.jsx)(`span`,{className:`block max-w-80 truncate`,title:e.Description,children:e.Description})},{id:`inbound`,header:`Inbound`,sortValue:e=>z(e.IpPermissions),hideBelow:`md`,align:`end`,cell:e=>(0,I.jsx)(`span`,{className:`tabular-nums`,children:z(e.IpPermissions)})},{id:`outbound`,header:`Outbound`,sortValue:e=>z(e.IpPermissionsEgress),hideBelow:`md`,align:`end`,cell:e=>(0,I.jsx)(`span`,{className:`tabular-nums`,children:z(e.IpPermissionsEgress)})}];function V(e){let t=(0,F.c)(47),{securityGroups:n,search:r,onSearchChange:i}=e,[c,l]=(0,P.useState)(),u;if(t[0]!==r.selected||t[1]!==n){let e;t[3]===r.selected?e=t[4]:(e=e=>r.selected!==``&&e.GroupId===r.selected,t[3]=r.selected,t[4]=e),u=n.find(e),t[0]=r.selected,t[1]=n,t[2]=u}else u=t[2];let d=u,m;t[5]===n?m=t[6]:(m=n.map(G),t[5]=n,t[6]=m);let h;t[7]===i?h=t[8]:(h=()=>{i(_)},t[7]=i,t[8]=h);let g=S(m,d!==void 0,h),C=p(),w;t[9]===n?w=t[10]:(w=new Map(n.map(W)),t[9]=n,t[10]=w);let T=w,E=null;if(r.create){let e;t[11]===i?e=t[12]:(e=()=>{i(_)},t[11]=i,t[12]=e);let n;t[13]===i?n=t[14]:(n=(0,I.jsx)(L,{onClose:e=>{i({..._,selected:e??``})}}),t[13]=i,t[14]=n);let r;t[15]!==e||t[16]!==n?(r=(0,I.jsx)(v,{onClose:e,title:`Create security group`,children:n}),t[15]=e,t[16]=n,t[17]=r):r=t[17],E=r}else if(d?.GroupId){let e,n;t[18]===i?(e=t[19],n=t[20]):(e=()=>{i(_)},n=e=>{i({tab:e})},t[18]=i,t[19]=e,t[20]=n);let a;t[21]!==d||t[22]!==r.tab||t[23]!==e||t[24]!==n?(a=(0,I.jsx)(N,{onClose:e,onTabChange:n,sg:d,tab:r.tab},d.GroupId),t[21]=d,t[22]=r.tab,t[23]=e,t[24]=n,t[25]=a):a=t[25],E=a}let D=E,O;t[26]===Symbol.for(`react.memo_cache_sentinel`)?(O=f(),t[26]=O):O=t[26];let k;t[27]===Symbol.for(`react.memo_cache_sentinel`)?(k=(0,I.jsx)(y,{actions:(0,I.jsxs)(a,{className:O,from:`/ec2/describe-security-groups/`,search:U,to:`.`,children:[(0,I.jsx)(s,{"data-icon":`inline-start`}),`Create security group`]}),subtitle:`Stateful firewalls for the instances in a VPC.`,title:`Security Groups`}),t[27]=k):k=t[27];let j;t[28]!==C||t[29]!==T||t[30]!==g.clear||t[31]!==g.drop||t[32]!==g.ids?(j=g.ids.length>0&&(0,I.jsx)(x,{count:g.ids.length,onClear:g.clear,children:(0,I.jsx)(A,{deleteOne:C.mutateAsync,description:`No instance or other group may still reference them. This cannot be undone.`,ids:g.ids,label:e=>{let t=T.get(e);return t?`${t} (${e})`:e},noun:[`security group`,`security groups`],onDeleted:g.drop})}),t[28]=C,t[29]=T,t[30]=g.clear,t[31]=g.drop,t[32]=g.ids,t[33]=j):j=t[33];let M=d?.GroupId,R;t[34]===i?R=t[35]:(R=e=>{i({..._,selected:e})},t[34]=i,t[35]=R);let z;t[36]!==n||t[37]!==g.onSelectedChange||t[38]!==g.selected||t[39]!==c||t[40]!==R||t[41]!==M?(z=(0,I.jsx)(o,{activeId:M,caption:`Security groups`,columns:B,empty:`No security groups yet.`,getRowId:H,onRowClick:R,onSelectedChange:g.onSelectedChange,onSortChange:l,rows:n,selected:g.selected,sort:c}),t[36]=n,t[37]=g.onSelectedChange,t[38]=g.selected,t[39]=c,t[40]=R,t[41]=M,t[42]=z):z=t[42];let V;return t[43]!==E||t[44]!==z||t[45]!==j?(V=(0,I.jsxs)(b,{panel:D,children:[k,j,z]}),t[43]=E,t[44]=z,t[45]=j,t[46]=V):V=t[46],V}function H(e){return e.GroupId??``}function U(e){return{...e,..._,create:!0}}function W(e){return[e.GroupId,e.GroupName]}function G(e){return e.GroupId??``}function K(){let e=(0,F.c)(8),{data:t}=i(g),n=j.useSearch(),r=j.useNavigate(),a;e[0]===r?a=e[1]:(a=function(e){r({search:t=>({...t,...e}),replace:!(`selected`in e||`create`in e)})},e[0]=r,e[1]=a);let o=a,s;e[2]===t.SecurityGroups?s=e[3]:(s=t.SecurityGroups??[],e[2]=t.SecurityGroups,e[3]=s);let c;return e[4]!==o||e[5]!==n||e[6]!==s?(c=(0,I.jsx)(V,{onSearchChange:o,search:n,securityGroups:s}),e[4]=o,e[5]=n,e[6]=s,e[7]=c):c=e[7],c}export{K as component};
@@ -1,4 +1,4 @@
import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{It as t,Lt as n,Mt as r}from"./schemas-DCQXG11d.js";import{t as i}from"./useQuery-D6TojLgI.js";import{t as a}from"./useSuspenseQuery--dusmE-Q.js";import{t as o}from"./link-BX-1BPor.js";import{t as s}from"./data-table-9n7xOy9s.js";import{t as c}from"./plus-BK_7eO_G.js";import{a as l,i as u,r as d,t as f}from"./cli-command-panel-Do14gxB9.js";import{o as p}from"./useValueAsRef-uzS1fuI8.js";import{N as m}from"./ec2-DcwXjFvB.js";import{o as h,u as g,w as _}from"./tags-section-CqSxe9g7.js";import{d as v,u as y}from"./elbv2-_G7aAoiA.js";import{t as b}from"./panel-search-LDLf8HCe.js";import{t as x}from"./create-panel-BF47ohJ2.js";import{t as S}from"./page-heading-ZfrnK2wu.js";import{t as C}from"./resource-view-CPdFr_3k.js";import{t as w}from"./selection-bar-WnknBhRB.js";import{t as T}from"./use-row-selection-DB6L9NiD.js";import{n as E,t as D}from"./form-lock-D8Cu0Sfu.js";import{c as O,o as k}from"./index.esm-C31mnnYl.js";import{t as A}from"./zod-nOHMBkds.js";import{t as j}from"./bulk-delete-CXIUB03J.js";import{t as M}from"./describe-target-groups-DpweDXqd.js";import{t as N}from"./target-group-form-jI9-yEkv.js";import{t as P}from"./target-group-details-BYflj3kw.js";var F=e(n(),1),I=r(),L=t();function R(e){let t=(0,I.c)(37),{onClose:n}=e,{data:r}=a(m),i=h(),o;t[0]===r.Vpcs?o=t[1]:(o=r.Vpcs??[],t[0]=r.Vpcs,t[1]=o);let s=o,c;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(c=A(_),t[2]=c):c=t[2];let l=s[0]?.VpcId??``,u,d;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(u={protocol:`HTTP`,path:`/`,port:`traffic-port`,intervalSeconds:30,timeoutSeconds:5,healthyThresholdCount:5,unhealthyThresholdCount:2,matcher:`200`},d=[],t[3]=u,t[4]=d):(u=t[3],d=t[4]);let p;t[5]===l?p=t[6]:(p={resolver:c,defaultValues:{name:``,protocol:`HTTP`,port:80,vpcId:l,healthCheck:u,tags:d}},t[5]=l,t[6]=p);let g=k(p),{handleSubmit:v,formState:y}=g,{isSubmitting:b}=y,x;t[7]===g.control?x=t[8]:(x={control:g.control},t[7]=g.control,t[8]=x);let S=O(x),C;t[9]!==i||t[10]!==n?(C=async e=>{try{let t=await i.mutateAsync(e);n(t.TargetGroups?.[0]?.TargetGroupArn)}catch{}},t[9]=i,t[10]=n,t[11]=C):C=t[11];let w=C,T;t[12]!==v||t[13]!==w?(T=v(w),t[12]=v,t[13]=w,t[14]=T):T=t[14];let j=i.isPending||b,M;t[15]!==g||t[16]!==s?(M=(0,L.jsx)(N,{form:g,vpcs:s}),t[15]=g,t[16]=s,t[17]=M):M=t[17];let P;t[18]===S?P=t[19]:(P=z(S),t[18]=S,t[19]=P);let F;t[20]===P?F=t[21]:(F=(0,L.jsx)(f,{commands:P}),t[20]=P,t[21]=F);let R;t[22]===n?R=t[23]:(R=()=>{n()},t[22]=n,t[23]=R);let B;t[24]!==i.error||t[25]!==i.isPending||t[26]!==b||t[27]!==R?(B=(0,L.jsx)(E,{error:i.error,errorMsg:`Failed to create target group`,isPending:i.isPending,isSubmitting:b,onCancel:R,pendingLabel:`Creating…`,submitLabel:`Create Target Group`}),t[24]=i.error,t[25]=i.isPending,t[26]=b,t[27]=R,t[28]=B):B=t[28];let V;t[29]!==j||t[30]!==M||t[31]!==F||t[32]!==B?(V=(0,L.jsxs)(D,{className:`space-y-6`,locked:j,children:[M,F,B]}),t[29]=j,t[30]=M,t[31]=F,t[32]=B,t[33]=V):V=t[33];let H;return t[34]!==T||t[35]!==V?(H=(0,L.jsx)(`form`,{onSubmit:T,children:V}),t[34]=T,t[35]=V,t[36]=H):H=t[36],H}function z(e){let t=e.healthCheck??{},n=t.protocol||`HTTP`,r=n===`HTTP`;return[{label:`Create Target Group`,parts:[{type:`bin`,value:`AWS_PROFILE=spinifex aws elbv2 create-target-group`},...u(`\\
import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{It as t,Lt as n,Mt as r}from"./schemas-DCQXG11d.js";import{t as i}from"./useQuery-D6TojLgI.js";import{t as a}from"./useSuspenseQuery--dusmE-Q.js";import{t as o}from"./link-BX-1BPor.js";import{t as s}from"./data-table-9n7xOy9s.js";import{t as c}from"./plus-BK_7eO_G.js";import{a as l,i as u,r as d,t as f}from"./cli-command-panel-Do14gxB9.js";import{o as p}from"./useValueAsRef-uzS1fuI8.js";import{N as m}from"./ec2-DcwXjFvB.js";import{o as h,u as g,w as _}from"./tags-section-CqSxe9g7.js";import{d as v,u as y}from"./elbv2-_G7aAoiA.js";import{t as b}from"./panel-search-LDLf8HCe.js";import{t as x}from"./create-panel-BF47ohJ2.js";import{t as S}from"./page-heading-ZfrnK2wu.js";import{t as C}from"./resource-view-CPdFr_3k.js";import{t as w}from"./selection-bar-WnknBhRB.js";import{t as T}from"./use-row-selection-DB6L9NiD.js";import{n as E,t as D}from"./form-lock-D8Cu0Sfu.js";import{c as O,o as k}from"./index.esm-C31mnnYl.js";import{t as A}from"./zod-nOHMBkds.js";import{t as j}from"./bulk-delete-CXIUB03J.js";import{t as M}from"./describe-target-groups-_ytJeb0V.js";import{t as N}from"./target-group-form-jI9-yEkv.js";import{t as P}from"./target-group-details-vQzJ30fd.js";var F=e(n(),1),I=r(),L=t();function R(e){let t=(0,I.c)(37),{onClose:n}=e,{data:r}=a(m),i=h(),o;t[0]===r.Vpcs?o=t[1]:(o=r.Vpcs??[],t[0]=r.Vpcs,t[1]=o);let s=o,c;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(c=A(_),t[2]=c):c=t[2];let l=s[0]?.VpcId??``,u,d;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(u={protocol:`HTTP`,path:`/`,port:`traffic-port`,intervalSeconds:30,timeoutSeconds:5,healthyThresholdCount:5,unhealthyThresholdCount:2,matcher:`200`},d=[],t[3]=u,t[4]=d):(u=t[3],d=t[4]);let p;t[5]===l?p=t[6]:(p={resolver:c,defaultValues:{name:``,protocol:`HTTP`,port:80,vpcId:l,healthCheck:u,tags:d}},t[5]=l,t[6]=p);let g=k(p),{handleSubmit:v,formState:y}=g,{isSubmitting:b}=y,x;t[7]===g.control?x=t[8]:(x={control:g.control},t[7]=g.control,t[8]=x);let S=O(x),C;t[9]!==i||t[10]!==n?(C=async e=>{try{let t=await i.mutateAsync(e);n(t.TargetGroups?.[0]?.TargetGroupArn)}catch{}},t[9]=i,t[10]=n,t[11]=C):C=t[11];let w=C,T;t[12]!==v||t[13]!==w?(T=v(w),t[12]=v,t[13]=w,t[14]=T):T=t[14];let j=i.isPending||b,M;t[15]!==g||t[16]!==s?(M=(0,L.jsx)(N,{form:g,vpcs:s}),t[15]=g,t[16]=s,t[17]=M):M=t[17];let P;t[18]===S?P=t[19]:(P=z(S),t[18]=S,t[19]=P);let F;t[20]===P?F=t[21]:(F=(0,L.jsx)(f,{commands:P}),t[20]=P,t[21]=F);let R;t[22]===n?R=t[23]:(R=()=>{n()},t[22]=n,t[23]=R);let B;t[24]!==i.error||t[25]!==i.isPending||t[26]!==b||t[27]!==R?(B=(0,L.jsx)(E,{error:i.error,errorMsg:`Failed to create target group`,isPending:i.isPending,isSubmitting:b,onCancel:R,pendingLabel:`Creating…`,submitLabel:`Create Target Group`}),t[24]=i.error,t[25]=i.isPending,t[26]=b,t[27]=R,t[28]=B):B=t[28];let V;t[29]!==j||t[30]!==M||t[31]!==F||t[32]!==B?(V=(0,L.jsxs)(D,{className:`space-y-6`,locked:j,children:[M,F,B]}),t[29]=j,t[30]=M,t[31]=F,t[32]=B,t[33]=V):V=t[33];let H;return t[34]!==T||t[35]!==V?(H=(0,L.jsx)(`form`,{onSubmit:T,children:V}),t[34]=T,t[35]=V,t[36]=H):H=t[36],H}function z(e){let t=e.healthCheck??{},n=t.protocol||`HTTP`,r=n===`HTTP`;return[{label:`Create Target Group`,parts:[{type:`bin`,value:`AWS_PROFILE=spinifex aws elbv2 create-target-group`},...u(`\\
--name`,d(e.name??``,`Name`)),...u(`\\
--protocol`,e.protocol||`HTTP`),...u(`\\
--port`,e.port??80),...u(`\\
@@ -1,2 +1,2 @@
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/describe-target-groups--kr6OKzv.js","assets/rolldown-runtime-XKyaHtl9.js","assets/schemas-DCQXG11d.js","assets/useQuery-D6TojLgI.js","assets/queryOptions-Cu2lvOFG.js","assets/QueryClientProvider-BuG40HBe.js","assets/useSuspenseQuery--dusmE-Q.js","assets/link-BX-1BPor.js","assets/matchContext-CUAcfcYw.js","assets/useRouter-B_eSHXWd.js","assets/data-table-9n7xOy9s.js","assets/useSelector-CDb-n1FW.js","assets/visuallyHidden-BHQz5bmH.js","assets/check-DPoQ9cBn.js","assets/useRegisterFieldControl-DkI655of.js","assets/useAriaLabelledBy-DStQJVTn.js","assets/useTransitionStatus-Dn-09Anc.js","assets/useValueChanged-wii0yYWk.js","assets/useControlled-NIWPmeG5.js","assets/table-BLvCYTga.js","assets/plus-BK_7eO_G.js","assets/cli-command-panel-Do14gxB9.js","assets/chevron-down-BgudX6bq.js","assets/copy-B9ICxw_u.js","assets/useValueAsRef-uzS1fuI8.js","assets/use-copy-to-clipboard-D-PxomFK.js","assets/ec2-DcwXjFvB.js","assets/aws-client-DrLAG3yq.js","assets/auth-BS4WytAe.js","assets/fetch-http-handler-C0nfkUzI.js","assets/toUtf8.browser-RsrLknAJ.js","assets/index.browser-D7GVEViY.js","assets/commandBuilder-M7C_FWzS.js","assets/tags-section-CqSxe9g7.js","assets/select-UwOVJofC.js","assets/useScrollLock-iGnmnC-h.js","assets/composite-DysENEse.js","assets/useAnchoredPopupScrollLock-CoHshdlQ.js","assets/isElementDisabled-B7Ri5ug6.js","assets/ToolbarRootContext-iMMgkc2r.js","assets/clamp-D0kAXd-u.js","assets/useMutation-lRi0DDcO.js","assets/field-iLG94M00.js","assets/tags-CXDQrv7y.js","assets/commandBuilder-zZSrq900.js","assets/commandBuilder-CTdNRogs.js","assets/commandBuilder-lcvi73e2.js","assets/elbv2-_G7aAoiA.js","assets/switch-CFqwHFZR.js","assets/error-banner-Cahg3Ix2.js","assets/tags-Ki2a29eH.js","assets/inline-tags-nfRc9elZ.js","assets/x-mlA6pp-8.js","assets/loader-circle-C7EgoGp_.js","assets/pencil-DLzYMCIc.js","assets/trash-BajuWzqn.js","assets/detail-panel-DLM1ExsZ.js","assets/info-tip-Cxa2GEOd.js","assets/store-BVhNJayb.js","assets/collapsible-DddM174D.js","assets/tabs-9tHEWpNn.js","assets/CompositeRoot-CmHoR-Tk.js","assets/panel-search-LDLf8HCe.js","assets/create-panel-BF47ohJ2.js","assets/page-heading-ZfrnK2wu.js","assets/resource-view-CPdFr_3k.js","assets/selection-bar-WnknBhRB.js","assets/use-row-selection-DB6L9NiD.js","assets/form-lock-D8Cu0Sfu.js","assets/index.esm-C31mnnYl.js","assets/zod-nOHMBkds.js","assets/bulk-delete-CXIUB03J.js","assets/circle-x-C6c0uvb-.js","assets/alert-dialog-D9jG-rkO.js","assets/DialogTitle-nAIOTphJ.js","assets/confirm-phrase-C4Dux-0Y.js","assets/target-group-form-jI9-yEkv.js","assets/tags-field-array-Drjjg7Rv.js","assets/target-group-details-BYflj3kw.js","assets/eye-yi4wz0yh.js","assets/maximize-2-BAlKoEj8.js","assets/sliders-horizontal-DsGbsnBU.js","assets/delete-confirmation-dialog-O7cqOW0Y.js","assets/state-badge-CQPRxt3J.js","assets/form-panel-CtjudV7b.js","assets/switch-list-X53OOONN.js","assets/resource-delete-dialog-D3NYuO-k.js"])))=>i.map(i=>d[i]);
import{s as e}from"./schemas-DCQXG11d.js";import{n as t,t as n}from"./lazyRouteComponent-PMetaA3O.js";import{t as r}from"./searchMiddleware-Clk50hy1.js";import{U as i}from"./fetch-http-handler-C0nfkUzI.js";import{u as a}from"./elbv2-_G7aAoiA.js";import{r as o,t as s}from"./panel-search-LDLf8HCe.js";var c=()=>i(()=>import(`./describe-target-groups--kr6OKzv.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86])),l=e(o),u=t(`/_auth/ec2/(target-groups)/describe-target-groups/`)({validateSearch:l,search:{middlewares:[r(s)]},loader:async({context:e})=>{await e.queryClient.query({...a,staleTime:`static`})},head:()=>({meta:[{title:`Target Groups | EC2 | Mulga`}]}),component:n(c,`component`)});export{u as t};
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/describe-target-groups-BHnzTJci.js","assets/rolldown-runtime-XKyaHtl9.js","assets/schemas-DCQXG11d.js","assets/useQuery-D6TojLgI.js","assets/queryOptions-Cu2lvOFG.js","assets/QueryClientProvider-BuG40HBe.js","assets/useSuspenseQuery--dusmE-Q.js","assets/link-BX-1BPor.js","assets/matchContext-CUAcfcYw.js","assets/useRouter-B_eSHXWd.js","assets/data-table-9n7xOy9s.js","assets/useSelector-CDb-n1FW.js","assets/visuallyHidden-BHQz5bmH.js","assets/check-DPoQ9cBn.js","assets/useRegisterFieldControl-DkI655of.js","assets/useAriaLabelledBy-DStQJVTn.js","assets/useTransitionStatus-Dn-09Anc.js","assets/useValueChanged-wii0yYWk.js","assets/useControlled-NIWPmeG5.js","assets/table-BLvCYTga.js","assets/plus-BK_7eO_G.js","assets/cli-command-panel-Do14gxB9.js","assets/chevron-down-BgudX6bq.js","assets/copy-B9ICxw_u.js","assets/useValueAsRef-uzS1fuI8.js","assets/use-copy-to-clipboard-D-PxomFK.js","assets/ec2-DcwXjFvB.js","assets/aws-client-DrLAG3yq.js","assets/auth-BS4WytAe.js","assets/fetch-http-handler-C0nfkUzI.js","assets/toUtf8.browser-RsrLknAJ.js","assets/index.browser-D7GVEViY.js","assets/commandBuilder-M7C_FWzS.js","assets/tags-section-CqSxe9g7.js","assets/select-UwOVJofC.js","assets/useScrollLock-iGnmnC-h.js","assets/composite-DysENEse.js","assets/useAnchoredPopupScrollLock-CoHshdlQ.js","assets/isElementDisabled-B7Ri5ug6.js","assets/ToolbarRootContext-iMMgkc2r.js","assets/clamp-D0kAXd-u.js","assets/useMutation-lRi0DDcO.js","assets/field-iLG94M00.js","assets/tags-CXDQrv7y.js","assets/commandBuilder-zZSrq900.js","assets/commandBuilder-CTdNRogs.js","assets/commandBuilder-lcvi73e2.js","assets/elbv2-_G7aAoiA.js","assets/switch-CFqwHFZR.js","assets/error-banner-Cahg3Ix2.js","assets/tags-Ki2a29eH.js","assets/inline-tags-nfRc9elZ.js","assets/x-mlA6pp-8.js","assets/loader-circle-C7EgoGp_.js","assets/pencil-DLzYMCIc.js","assets/trash-BajuWzqn.js","assets/detail-panel-DLM1ExsZ.js","assets/info-tip-Cxa2GEOd.js","assets/store-BVhNJayb.js","assets/collapsible-DddM174D.js","assets/tabs-9tHEWpNn.js","assets/CompositeRoot-CmHoR-Tk.js","assets/panel-search-LDLf8HCe.js","assets/create-panel-BF47ohJ2.js","assets/page-heading-ZfrnK2wu.js","assets/resource-view-CPdFr_3k.js","assets/selection-bar-WnknBhRB.js","assets/use-row-selection-DB6L9NiD.js","assets/form-lock-D8Cu0Sfu.js","assets/index.esm-C31mnnYl.js","assets/zod-nOHMBkds.js","assets/bulk-delete-CXIUB03J.js","assets/circle-x-C6c0uvb-.js","assets/alert-dialog-D9jG-rkO.js","assets/DialogTitle-nAIOTphJ.js","assets/confirm-phrase-C4Dux-0Y.js","assets/target-group-form-jI9-yEkv.js","assets/tags-field-array-Drjjg7Rv.js","assets/target-group-details-vQzJ30fd.js","assets/eye-yi4wz0yh.js","assets/maximize-2-BAlKoEj8.js","assets/sliders-horizontal-DsGbsnBU.js","assets/delete-confirmation-dialog-O7cqOW0Y.js","assets/state-badge-CQPRxt3J.js","assets/form-panel-CtjudV7b.js","assets/switch-list-X53OOONN.js","assets/resource-delete-dialog-D3NYuO-k.js"])))=>i.map(i=>d[i]);
import{s as e}from"./schemas-DCQXG11d.js";import{n as t,t as n}from"./lazyRouteComponent-PMetaA3O.js";import{t as r}from"./searchMiddleware-Clk50hy1.js";import{U as i}from"./fetch-http-handler-C0nfkUzI.js";import{u as a}from"./elbv2-_G7aAoiA.js";import{r as o,t as s}from"./panel-search-LDLf8HCe.js";var c=()=>i(()=>import(`./describe-target-groups-BHnzTJci.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86])),l=e(o),u=t(`/_auth/ec2/(target-groups)/describe-target-groups/`)({validateSearch:l,search:{middlewares:[r(s)]},loader:async({context:e})=>{await e.queryClient.query({...a,staleTime:`static`})},head:()=>({meta:[{title:`Target Groups | EC2 | Mulga`}]}),component:n(c,`component`)});export{u as t};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
function e(e,t){let{SubnetId:n,VpcId:r}=e;return((n===void 0?void 0:t.find(e=>e.Associations?.some(e=>e.SubnetId===n)))??t.find(e=>e.VpcId===r&&e.Associations?.some(e=>e.Main)))?.Routes?.some(e=>e.GatewayId?.startsWith(`igw-`))??!1}export{e as t};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+11 -10
View File
@@ -9,7 +9,7 @@
<meta name="description" content="Spinifex Control Panel" />
<meta name="color-scheme" content="dark light" />
<script src="/preboot.js"></script>
<script type="module" crossorigin src="/assets/index-CNVyZKC8.js"></script>
<script type="module" crossorigin src="/assets/index-I_1wcobc.js"></script>
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-XKyaHtl9.js">
<link rel="modulepreload" crossorigin href="/assets/schemas-DCQXG11d.js">
<link rel="modulepreload" crossorigin href="/assets/visuallyHidden-BHQz5bmH.js">
@@ -150,15 +150,16 @@
<link rel="modulepreload" crossorigin href="/assets/zod-nOHMBkds.js">
<link rel="modulepreload" crossorigin href="/assets/ec2-CM16SST3.js">
<link rel="modulepreload" crossorigin href="/assets/instance-type-size-DoyCeynC.js">
<link rel="modulepreload" crossorigin href="/assets/instance-overview-I3DWLmM0.js">
<link rel="modulepreload" crossorigin href="/assets/instance-overview-DWnPG_Ut.js">
<link rel="modulepreload" crossorigin href="/assets/system-managed-Dk7ySh_E.js">
<link rel="modulepreload" crossorigin href="/assets/choice-tile-CEc-Vca5.js">
<link rel="modulepreload" crossorigin href="/assets/form-fields-CcTBfvl9.js">
<link rel="modulepreload" crossorigin href="/assets/switch-list-X53OOONN.js">
<link rel="modulepreload" crossorigin href="/assets/security-group-picker-CRcCOtjC.js">
<link rel="modulepreload" crossorigin href="/assets/instances-page-BPnRMywb.js">
<link rel="modulepreload" crossorigin href="/assets/describe-instances-oBl3gO4F.js">
<link rel="modulepreload" crossorigin href="/assets/_id-DVp0ns8g.js">
<link rel="modulepreload" crossorigin href="/assets/subnet-routing-CyGJGaO-.js">
<link rel="modulepreload" crossorigin href="/assets/instances-page-Ol-kg3ZZ.js">
<link rel="modulepreload" crossorigin href="/assets/describe-instances-N1NU-Vrz.js">
<link rel="modulepreload" crossorigin href="/assets/_id-CcCuzlb5.js">
<link rel="modulepreload" crossorigin href="/assets/describe-internet-gateways-DGVdE4ao.js">
<link rel="modulepreload" crossorigin href="/assets/_id-BImUwN-q.js">
<link rel="modulepreload" crossorigin href="/assets/upload-uiiRWdV_.js">
@@ -173,20 +174,20 @@
<link rel="modulepreload" crossorigin href="/assets/elbv2-_G7aAoiA.js">
<link rel="modulepreload" crossorigin href="/assets/describe-load-balancers-CVVkJLiE.js">
<link rel="modulepreload" crossorigin href="/assets/_id-CRawsEg8.js">
<link rel="modulepreload" crossorigin href="/assets/describe-nat-gateways-oarOwj4D.js">
<link rel="modulepreload" crossorigin href="/assets/describe-nat-gateways-BSrgRFGh.js">
<link rel="modulepreload" crossorigin href="/assets/_id-BTSpHAWv.js">
<link rel="modulepreload" crossorigin href="/assets/describe-placement-groups-CzAcMd0O.js">
<link rel="modulepreload" crossorigin href="/assets/_id-CyQW19S-.js">
<link rel="modulepreload" crossorigin href="/assets/describe-route-tables-b7ZQnWY7.js">
<link rel="modulepreload" crossorigin href="/assets/_id-Cja38hIt.js">
<link rel="modulepreload" crossorigin href="/assets/describe-security-groups-BUUHyKn_.js">
<link rel="modulepreload" crossorigin href="/assets/_id-BzihuQgX.js">
<link rel="modulepreload" crossorigin href="/assets/describe-security-groups-89hPyNfr.js">
<link rel="modulepreload" crossorigin href="/assets/_id-BD_vK45_.js">
<link rel="modulepreload" crossorigin href="/assets/describe-snapshots-C08TJHbT.js">
<link rel="modulepreload" crossorigin href="/assets/_id-D6QqOzEV.js">
<link rel="modulepreload" crossorigin href="/assets/describe-subnets-QCNg3hA8.js">
<link rel="modulepreload" crossorigin href="/assets/_id-J94S_B6e.js">
<link rel="modulepreload" crossorigin href="/assets/describe-target-groups-DpweDXqd.js">
<link rel="modulepreload" crossorigin href="/assets/_id-5TBySksk.js">
<link rel="modulepreload" crossorigin href="/assets/describe-target-groups-_ytJeb0V.js">
<link rel="modulepreload" crossorigin href="/assets/_id-BOgI0Lwr.js">
<link rel="modulepreload" crossorigin href="/assets/describe-volumes-BsD2s95-.js">
<link rel="modulepreload" crossorigin href="/assets/_id-BrGGfbgb.js">
<link rel="modulepreload" crossorigin href="/assets/describe-vpcs-CoOUo2VJ.js">
@@ -0,0 +1,61 @@
import type { RouteTable, Subnet } from "@aws-sdk/client-ec2"
import { describe, expect, it } from "vitest"
import { subnetIsPublic } from "./subnet-routing"
const SUBNET: Subnet = { SubnetId: "subnet-a", VpcId: "vpc-1" }
const MAIN_TO_IGW: RouteTable = {
RouteTableId: "rtb-main",
VpcId: "vpc-1",
Associations: [{ Main: true }],
Routes: [
{ DestinationCidrBlock: "10.0.0.0/16", GatewayId: "local" },
{ DestinationCidrBlock: "0.0.0.0/0", GatewayId: "igw-1" },
],
}
const EXPLICIT_TO_NAT: RouteTable = {
RouteTableId: "rtb-private",
VpcId: "vpc-1",
Associations: [{ SubnetId: "subnet-a" }],
Routes: [
{ DestinationCidrBlock: "10.0.0.0/16", GatewayId: "local" },
{ DestinationCidrBlock: "0.0.0.0/0", NatGatewayId: "nat-1" },
],
}
describe("subnetIsPublic", () => {
it("is public through the VPC's main table when it has no association", () => {
expect(subnetIsPublic(SUBNET, [MAIN_TO_IGW])).toBeTruthy()
})
it("follows the explicit association over the main table", () => {
expect(subnetIsPublic(SUBNET, [MAIN_TO_IGW, EXPLICIT_TO_NAT])).toBeFalsy()
})
it("is public through an explicit table with an internet gateway route", () => {
const explicit: RouteTable = {
...MAIN_TO_IGW,
RouteTableId: "rtb-public",
Associations: [{ SubnetId: "subnet-a" }],
}
const privateMain: RouteTable = {
...EXPLICIT_TO_NAT,
Associations: [{ Main: true }],
}
expect(subnetIsPublic(SUBNET, [privateMain, explicit])).toBeTruthy()
})
it("ignores another VPC's main table", () => {
expect(
subnetIsPublic(SUBNET, [{ ...MAIN_TO_IGW, VpcId: "vpc-2" }]),
).toBeFalsy()
})
it("is private with no table to route by", () => {
expect(subnetIsPublic(SUBNET, [])).toBeFalsy()
})
})
@@ -0,0 +1,22 @@
import type { RouteTable, Subnet } from "@aws-sdk/client-ec2"
// A subnet is public when the table it routes by, its explicit association or
// else its VPC's main table, sends some destination to an internet gateway.
export function subnetIsPublic(
subnet: Subnet,
routeTables: readonly RouteTable[],
): boolean {
const { SubnetId: subnetId, VpcId: vpcId } = subnet
const table =
(subnetId === undefined
? undefined
: routeTables.find((rt) =>
rt.Associations?.some((a) => a.SubnetId === subnetId),
)) ??
routeTables.find(
(rt) => rt.VpcId === vpcId && rt.Associations?.some((a) => a.Main),
)
return table?.Routes?.some((r) => r.GatewayId?.startsWith("igw-")) ?? false
}
@@ -65,14 +65,29 @@ export function subnetLabel(subnet: Subnet): string {
return name ? `${name} (${subnet.SubnetId})` : (subnet.SubnetId ?? "")
}
export function subnetSummary(subnet: Subnet): string {
function routePhrase(isPublic: boolean | undefined): string {
if (isPublic === undefined) {
return "internet gateway route unknown"
}
return isPublic
? "public: routes to an internet gateway"
: "private: no internet gateway route"
}
// isPublic is undefined when the subnet's route tables could not be read.
export function subnetSummary(
subnet: Subnet,
isPublic: boolean | undefined,
): string {
return [
subnet.CidrBlock,
subnet.AvailabilityZone,
subnet.VpcId,
routePhrase(isPublic),
subnet.MapPublicIpOnLaunch
? "public IP assigned on launch"
: "private address only",
: "no public IP on launch",
]
.filter(Boolean)
.join(" · ")
@@ -4,6 +4,7 @@ import type {
InstanceTypeInfo,
LaunchTemplate,
PlacementGroup,
RouteTable,
RunInstancesCommandInput,
Subnet,
} from "@aws-sdk/client-ec2"
@@ -38,6 +39,7 @@ import {
ec2KeyPairsQueryOptions,
ec2LaunchTemplatesQueryOptions,
ec2PlacementGroupsQueryOptions,
ec2RouteTablesQueryOptions,
ec2SecurityGroupsQueryOptions,
ec2SubnetsQueryOptions,
ec2VpcsQueryOptions,
@@ -117,11 +119,27 @@ const DEFAULT_SUBNET: Subnet = {
MapPublicIpOnLaunch: true,
}
// The default VPC's main table routes to its internet gateway.
const DEFAULT_ROUTE_TABLES: RouteTable[] = [
{
RouteTableId: "rtb-main",
VpcId: "vpc-1",
Associations: [{ Main: true }],
Routes: [{ DestinationCidrBlock: "0.0.0.0/0", GatewayId: "igw-1" }],
},
]
function namedSubnet(id: string, name: string): Subnet {
return { SubnetId: id, VpcId: "vpc-2", Tags: [{ Key: "Name", Value: name }] }
}
interface SetupOptions {
images?: Image[]
instanceTypes?: InstanceTypeInfo[]
capacity?: Record<string, number>
subnets?: Subnet[]
// "denied" refuses DescribeRouteTables instead of seeding an answer.
routeTables?: RouteTable[] | "denied"
launchTemplates?: LaunchTemplate[]
placementGroups?: PlacementGroup[]
onClose?: (instanceId?: string) => void
@@ -132,6 +150,7 @@ function setup({
instanceTypes = INSTANCE_TYPES,
capacity = CAPACITY,
subnets = [DEFAULT_SUBNET],
routeTables = DEFAULT_ROUTE_TABLES,
launchTemplates = [],
placementGroups = [],
onClose = vi.fn(),
@@ -158,6 +177,20 @@ function setup({
$metadata: {},
Subnets: subnets,
})
if (routeTables === "denied") {
sdk.setHandler("DescribeRouteTablesCommand", () => {
throw Object.assign(new Error("not authorized"), {
name: "UnauthorizedOperation",
})
})
} else {
queryClient.setQueryData(ec2RouteTablesQueryOptions.queryKey, {
$metadata: {},
RouteTables: routeTables,
})
}
queryClient.setQueryData(ec2PlacementGroupsQueryOptions.queryKey, {
$metadata: {},
PlacementGroups: placementGroups,
@@ -508,11 +541,113 @@ describe("run-instances network", () => {
)
expect(
screen.getByText(
"172.31.0.0/20 · ap-southeast-2a · vpc-1 · public IP assigned on launch",
"172.31.0.0/20 · ap-southeast-2a · vpc-1 · public: routes to an internet gateway · public IP assigned on launch",
),
).toBeInTheDocument()
})
it("groups the other subnets as public or private by their route tables", async () => {
const user = userEvent.setup()
setup({
subnets: [
DEFAULT_SUBNET,
namedSubnet("subnet-web", "web"),
namedSubnet("subnet-app", "app"),
namedSubnet("subnet-db", "db"),
],
routeTables: [
...DEFAULT_ROUTE_TABLES,
{
RouteTableId: "rtb-public",
VpcId: "vpc-2",
Associations: [{ SubnetId: "subnet-web" }],
Routes: [{ DestinationCidrBlock: "0.0.0.0/0", GatewayId: "igw-2" }],
},
{
RouteTableId: "rtb-private",
VpcId: "vpc-2",
Associations: [{ Main: true }],
Routes: [
{ DestinationCidrBlock: "0.0.0.0/0", NatGatewayId: "nat-1" },
],
},
],
})
await user.click(await screen.findByLabelText("Subnet"))
const listbox = await screen.findByRole("listbox")
const listed = within(listbox)
.getAllByRole("group")
.map((group) => ({
label: within(group).getByText(/subnets$/u).textContent,
options: within(group)
.getAllByRole("option")
.map((option) => option.textContent),
}))
expect(listed).toStrictEqual([
{ label: "Public subnets", options: ["web (subnet-web)"] },
{
label: "Private subnets",
options: ["app (subnet-app)", "db (subnet-db)"],
},
])
await user.click(screen.getByRole("option", { name: "app (subnet-app)" }))
expect(
screen.getByText(
/private: no internet gateway route · no public IP on launch/u,
),
).toBeInTheDocument()
})
it("leaves out a group with no subnets", async () => {
const user = userEvent.setup()
setup({
subnets: [DEFAULT_SUBNET, { SubnetId: "subnet-pub", VpcId: "vpc-1" }],
})
await user.click(await screen.findByLabelText("Subnet"))
await expect(
screen.findByText("Public subnets"),
).resolves.toBeInTheDocument()
expect(screen.queryByText("Private subnets")).not.toBeInTheDocument()
})
it("lists subnets ungrouped when route tables cannot be read", async () => {
const user = userEvent.setup()
setup({
subnets: [
DEFAULT_SUBNET,
namedSubnet("subnet-web", "web"),
namedSubnet("subnet-app", "app"),
],
routeTables: "denied",
})
await expect(
screen.findByText(/internet gateway route unknown/u),
).resolves.toBeInTheDocument()
await user.click(screen.getByLabelText("Subnet"))
const options = await screen.findAllByRole("option")
expect(options.map((option) => option.textContent)).toStrictEqual([
"Default: subnet-def",
"app (subnet-app)",
"web (subnet-web)",
])
expect(screen.queryByText("Public subnets")).not.toBeInTheDocument()
expect(screen.queryByText("Private subnets")).not.toBeInTheDocument()
})
it("warns when the account has no default subnet", async () => {
setup({ subnets: [] })
@@ -25,6 +25,7 @@ import {
ec2KeyPairsQueryOptions,
ec2LaunchTemplatesQueryOptions,
ec2PlacementGroupsQueryOptions,
ec2RouteTablesQueryOptions,
ec2SecurityGroupsQueryOptions,
ec2SubnetsQueryOptions,
ec2VpcsQueryOptions,
@@ -72,6 +73,9 @@ function useRunInstancesData() {
// Not a suspense query: the figure is a refinement of the form, so a session
// whose policy does not grant the action still gets a usable launch panel.
const { data: capacityData } = useQuery(instanceTypeCapacityQueryOptions)
// Route tables only sort subnets into public and private, so a session that
// cannot describe them still gets the flat list.
const { data: routeTablesData } = useQuery(ec2RouteTablesQueryOptions)
const { data: subnetsData } = useSuspenseQuery(ec2SubnetsQueryOptions)
const { data: pgData } = useSuspenseQuery(ec2PlacementGroupsQueryOptions)
@@ -96,6 +100,7 @@ function useRunInstancesData() {
instanceTypeCapacity: capacityData?.available ?? {},
keyPairs: keyPairsData.KeyPairs ?? [],
subnets,
routeTables: routeTablesData?.RouteTables,
placementGroups: pgData.PlacementGroups ?? [],
securityGroups: sgData.SecurityGroups ?? [],
launchTemplates: ltData.LaunchTemplates ?? [],
@@ -116,6 +121,7 @@ export function RunInstancesPage({
instanceTypeCapacity,
keyPairs,
subnets,
routeTables,
placementGroups,
securityGroups,
launchTemplates,
@@ -313,6 +319,7 @@ export function RunInstancesPage({
effectiveVpcId={effectiveVpcId}
errors={errors}
otherSubnets={otherSubnets}
routeTables={routeTables}
register={register}
securityGroups={securityGroups}
selectedSubnetId={selectedSubnetId}
@@ -5,6 +5,7 @@ import type {
KeyPairInfo,
LaunchTemplate,
PlacementGroup,
RouteTable,
SecurityGroup,
Subnet,
} from "@aws-sdk/client-ec2"
@@ -38,13 +39,16 @@ import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"
import {
Select,
SelectContent,
SelectGroup,
SelectItem,
SelectLabel,
SelectTrigger,
SelectValue,
} from "@/components/ui/select"
import { Switch } from "@/components/ui/switch"
import { getRegion } from "@/lib/cluster-config"
import type { Architecture } from "@/lib/os-images"
import { subnetIsPublic } from "@/lib/subnet-routing"
import { formatVRAMMiB } from "@/lib/utils"
import { ec2LaunchTemplateVersionsQueryOptions } from "@/queries/ec2"
import { type CreateInstanceFormData, VOLUME_TYPES } from "@/types/ec2"
@@ -594,6 +598,8 @@ interface NetworkSectionProps {
errors: FormErrors
otherSubnets: readonly Subnet[]
register: FormRegister
// Undefined until DescribeRouteTables answers, or when it is refused.
routeTables: readonly RouteTable[] | undefined
securityGroups: SecurityGroup[]
selectedSubnetId: string | undefined
setValue: UseFormSetValue<RunInstancesFormInput>
@@ -607,6 +613,7 @@ export function NetworkSection({
errors,
otherSubnets,
register,
routeTables,
securityGroups,
selectedSubnetId,
setValue,
@@ -633,6 +640,7 @@ export function NetworkSection({
defaultSubnet={defaultSubnet}
effectiveSubnet={effectiveSubnet}
otherSubnets={otherSubnets}
routeTables={routeTables}
selectedSubnetId={selectedSubnetId}
/>
@@ -655,14 +663,42 @@ type SubnetFieldProps = Pick<
| "defaultSubnet"
| "effectiveSubnet"
| "otherSubnets"
| "routeTables"
| "selectedSubnetId"
>
// Each group is sorted by its label, and an empty group is left out. Without
// route tables there is one unlabelled group.
function subnetGroups(
subnets: readonly Subnet[],
routeTables: readonly RouteTable[] | undefined,
): { label?: string; subnets: Subnet[] }[] {
const sorted = subnets.toSorted((a, b) =>
subnetLabel(a).localeCompare(subnetLabel(b)),
)
if (!routeTables) {
return [{ subnets: sorted }].filter((group) => group.subnets.length > 0)
}
return [
{
label: "Public subnets",
subnets: sorted.filter((s) => subnetIsPublic(s, routeTables)),
},
{
label: "Private subnets",
subnets: sorted.filter((s) => !subnetIsPublic(s, routeTables)),
},
].filter((group) => group.subnets.length > 0)
}
function SubnetField({
control,
defaultSubnet,
effectiveSubnet,
otherSubnets,
routeTables,
selectedSubnetId,
}: SubnetFieldProps) {
return (
@@ -699,10 +735,18 @@ function SubnetField({
? `Default: ${subnetLabel(defaultSubnet)}`
: "No subnet"}
</SelectItem>
{otherSubnets.map((subnet) => (
<SelectItem key={subnet.SubnetId} value={subnet.SubnetId ?? ""}>
{subnetLabel(subnet)}
</SelectItem>
{subnetGroups(otherSubnets, routeTables).map((group) => (
<SelectGroup key={group.label ?? "subnets"}>
{group.label && <SelectLabel>{group.label}</SelectLabel>}
{group.subnets.map((subnet) => (
<SelectItem
key={subnet.SubnetId}
value={subnet.SubnetId ?? ""}
>
{subnetLabel(subnet)}
</SelectItem>
))}
</SelectGroup>
))}
</SelectContent>
</Select>
@@ -710,7 +754,10 @@ function SubnetField({
/>
<FieldDescription>
{effectiveSubnet
? subnetSummary(effectiveSubnet)
? subnetSummary(
effectiveSubnet,
routeTables && subnetIsPublic(effectiveSubnet, routeTables),
)
: "This account has no default subnet, so an instance launched without one gets no VPC network interface. Choose a subnet."}
</FieldDescription>
</Field>
@@ -0,0 +1,118 @@
import type { RouteTable, Subnet } from "@aws-sdk/client-ec2"
import { screen } from "@testing-library/react"
import userEvent from "@testing-library/user-event"
import { describe, expect, it, vi } from "vitest"
import { createTestQueryClient, renderWithClient } from "@/test/render"
const send = vi.hoisted(() => vi.fn())
vi.mock("@/lib/aws-client", async () => {
const { mockAwsClients } = await import("@/test/aws-clients")
return mockAwsClients(send)
})
vi.mock("@tanstack/react-router", async (importOriginal) => {
const { mockRouter } = await import("@/test/router")
return await mockRouter(importOriginal)
})
import {
ec2AddressesQueryOptions,
ec2RouteTablesQueryOptions,
ec2SubnetsQueryOptions,
} from "@/queries/ec2"
import { CreateNatGatewayPage } from "./create-nat-gateway-page"
// Both subnets assign public IPs on launch; only one routes to a gateway.
const SUBNETS: Subnet[] = [
{
SubnetId: "subnet-pub",
VpcId: "vpc-1",
CidrBlock: "10.0.1.0/24",
MapPublicIpOnLaunch: true,
},
{
SubnetId: "subnet-priv",
VpcId: "vpc-1",
CidrBlock: "10.0.2.0/24",
MapPublicIpOnLaunch: true,
},
]
// "denied" refuses DescribeRouteTables instead of seeding an answer.
function setup(routeTables: RouteTable[] | "denied") {
const queryClient = createTestQueryClient()
send.mockReset()
send.mockRejectedValue(
Object.assign(new Error("not authorized"), {
name: "UnauthorizedOperation",
}),
)
queryClient.setQueryData(ec2SubnetsQueryOptions.queryKey, {
$metadata: {},
Subnets: SUBNETS,
})
if (routeTables !== "denied") {
queryClient.setQueryData(ec2RouteTablesQueryOptions.queryKey, {
$metadata: {},
RouteTables: routeTables,
})
}
queryClient.setQueryData(ec2AddressesQueryOptions.queryKey, {
$metadata: {},
Addresses: [],
})
renderWithClient(<CreateNatGatewayPage onClose={vi.fn()} />, queryClient)
}
async function subnetOptions(): Promise<(string | null)[]> {
await userEvent.setup().click(await screen.findByLabelText("Public subnet"))
const options = await screen.findAllByRole("option")
return options.map((o) => o.textContent)
}
describe("CreateNatGatewayPage", () => {
it("offers only subnets whose route table reaches an internet gateway", async () => {
setup([
{
RouteTableId: "rtb-public",
VpcId: "vpc-1",
Associations: [{ SubnetId: "subnet-pub" }],
Routes: [{ DestinationCidrBlock: "0.0.0.0/0", GatewayId: "igw-1" }],
},
{
RouteTableId: "rtb-main",
VpcId: "vpc-1",
Associations: [{ Main: true }],
Routes: [{ DestinationCidrBlock: "10.0.0.0/16", GatewayId: "local" }],
},
])
await expect(subnetOptions()).resolves.toStrictEqual([
"subnet-pub (10.0.1.0/24)",
])
})
it.each([
["none routes to an internet gateway", []],
["route tables cannot be read", "denied"],
] as const)("offers every subnet when %s", async (_, routeTables) => {
setup(routeTables === "denied" ? routeTables : [...routeTables])
await expect(subnetOptions()).resolves.toStrictEqual([
"subnet-pub (10.0.1.0/24)",
"subnet-priv (10.0.2.0/24)",
])
expect(send).toHaveBeenCalledTimes(routeTables === "denied" ? 1 : 0)
})
})
@@ -1,5 +1,5 @@
import { zodResolver } from "@hookform/resolvers/zod"
import { useSuspenseQuery } from "@tanstack/react-query"
import { useQuery, useSuspenseQuery } from "@tanstack/react-query"
import { Link } from "@tanstack/react-router"
import {
Controller,
@@ -26,9 +26,14 @@ import {
SelectTrigger,
SelectValue,
} from "@/components/ui/select"
import { subnetIsPublic } from "@/lib/subnet-routing"
import { getNameTag } from "@/lib/utils"
import { useCreateNatGateway } from "@/mutations/ec2"
import { ec2AddressesQueryOptions, ec2SubnetsQueryOptions } from "@/queries/ec2"
import {
ec2AddressesQueryOptions,
ec2RouteTablesQueryOptions,
ec2SubnetsQueryOptions,
} from "@/queries/ec2"
import {
type CreateNatGatewayFormData,
createNatGatewaySchema,
@@ -41,13 +46,16 @@ interface CreateNatGatewayPageProps {
export function CreateNatGatewayPage({ onClose }: CreateNatGatewayPageProps) {
const { data: subnetsData } = useSuspenseQuery(ec2SubnetsQueryOptions)
// Not a suspense query: without route tables the form offers every subnet.
const { data: routeTablesData } = useQuery(ec2RouteTablesQueryOptions)
const { data: addressesData } = useSuspenseQuery(ec2AddressesQueryOptions)
const createMutation = useCreateNatGateway()
const subnets = subnetsData.Subnets ?? []
// A NAT gateway must live in a public subnet (one with auto-assigned public
// IP). Fall back to all subnets if none are flagged public.
const publicSubnets = subnets.filter((s) => s.MapPublicIpOnLaunch)
const routeTables = routeTablesData?.RouteTables ?? []
// A public NAT gateway belongs in a public subnet, one that routes to an
// internet gateway. Fall back to all subnets if none is public.
const publicSubnets = subnets.filter((s) => subnetIsPublic(s, routeTables))
const subnetOptions = publicSubnets.length > 0 ? publicSubnets : subnets
// Only Elastic IPs that are not already associated can back a NAT gateway.