docker-client-mx 1.41.0 → 1.43.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/docker-desktop-mx/browser/chunk-75uKIulV.js +1 -0
- package/dist/docker-desktop-mx/browser/chunk-B-8njY4y.js +1 -0
- package/dist/docker-desktop-mx/browser/chunk-B1xjyPnV.js +1 -0
- package/dist/docker-desktop-mx/browser/chunk-BE5ctn7s.js +1 -0
- package/dist/docker-desktop-mx/browser/chunk-BNz89YmT2.js +1 -0
- package/dist/docker-desktop-mx/browser/{chunk-DIB1txLC2.js → chunk-BYBsnx9-2.js} +1 -1
- package/dist/docker-desktop-mx/browser/chunk-BpQVP_gf.js +1 -0
- package/dist/docker-desktop-mx/browser/{chunk-BV3brnpk.js → chunk-BsTDUJ3m.js} +1 -1
- package/dist/docker-desktop-mx/browser/chunk-Bxte2YBm.js +1 -0
- package/dist/docker-desktop-mx/browser/chunk-C7c_wFw-.js +1 -0
- package/dist/docker-desktop-mx/browser/chunk-CUSsr_nJ.js +1 -0
- package/dist/docker-desktop-mx/browser/chunk-CaR7Z77S2.js +1 -0
- package/dist/docker-desktop-mx/browser/chunk-Cau4mGeC.js +1 -0
- package/dist/docker-desktop-mx/browser/{chunk-CRyY-2KM.js → chunk-CjAbzLl3.js} +1 -1
- package/dist/docker-desktop-mx/browser/{chunk-eMZWdejE.js → chunk-CjySsWe4.js} +1 -1
- package/dist/docker-desktop-mx/browser/chunk-CpIMiI_l.js +4 -0
- package/dist/docker-desktop-mx/browser/chunk-CpNGhf9S.js +1 -0
- package/dist/docker-desktop-mx/browser/{chunk-xhdtv1sC.js → chunk-CphQt55R.js} +1 -1
- package/dist/docker-desktop-mx/browser/chunk-Cpz4zP5G.js +1 -0
- package/dist/docker-desktop-mx/browser/{chunk-B_tQwhwm.js → chunk-Cx-uRg2m.js} +1 -1
- package/dist/docker-desktop-mx/browser/{chunk-BjgRfCzM2.js → chunk-D2SM5E9h.js} +2 -2
- package/dist/docker-desktop-mx/browser/chunk-D5njuWRz.js +1 -0
- package/dist/docker-desktop-mx/browser/chunk-D86K3m6W.js +1 -0
- package/dist/docker-desktop-mx/browser/chunk-DCYTwazU.js +1 -0
- package/dist/docker-desktop-mx/browser/chunk-DGnxa3ti2.js +1 -0
- package/dist/docker-desktop-mx/browser/{chunk-DSQAF8Vk.js → chunk-DLpC_2HL.js} +2 -2
- package/dist/docker-desktop-mx/browser/{chunk-CxAIbp2c.js → chunk-DNfiG-TG.js} +1 -1
- package/dist/docker-desktop-mx/browser/chunk-DS3iAefP.js +1 -0
- package/dist/docker-desktop-mx/browser/chunk-DdTfHpyK.js +1 -0
- package/dist/docker-desktop-mx/browser/{chunk-B8Y30jEA.js → chunk-DnY7-enP.js} +1 -1
- package/dist/docker-desktop-mx/browser/{chunk-DiZLvyn5.js → chunk-Q3Ig-PJ6.js} +1 -1
- package/dist/docker-desktop-mx/browser/{chunk-CKpDvmRb.js → chunk-VC5gaeEq.js} +1 -1
- package/dist/docker-desktop-mx/browser/chunk-gHmeiJFn.js +1 -0
- package/dist/docker-desktop-mx/browser/{chunk-C3aJtPX1.js → chunk-hJqozYgS.js} +1 -1
- package/dist/docker-desktop-mx/browser/chunk-hXmaVpBu2.js +1 -0
- package/dist/docker-desktop-mx/browser/chunk-iWbUoQd52.js +6 -0
- package/dist/docker-desktop-mx/browser/chunk-k-zsJmvX.js +1 -0
- package/dist/docker-desktop-mx/browser/{chunk-ZkkhKXw6.js → chunk-qxDOm16k.js} +2 -2
- package/dist/docker-desktop-mx/browser/chunk-sxrgZH0E.js +3 -0
- package/dist/docker-desktop-mx/browser/chunk-vPeKxmUB.js +1 -0
- package/dist/docker-desktop-mx/browser/{chunk-BFURpTzq.js → chunk-xmDwFpQl.js} +1 -1
- package/dist/docker-desktop-mx/browser/chunk-yYm_2q6C.js +1 -0
- package/dist/docker-desktop-mx/browser/index.html +2 -2
- package/dist/docker-desktop-mx/browser/main-UUO74KHR.js +1 -0
- package/dist/docker-desktop-mx/browser/styles-IM2TO7ZD.css +1 -0
- package/dist-electron/channels.js +15 -0
- package/dist-electron/channels.js.map +1 -1
- package/dist-electron/compose-known.js +135 -0
- package/dist-electron/compose-known.js.map +1 -0
- package/dist-electron/compose.js +4 -1
- package/dist-electron/compose.js.map +1 -1
- package/dist-electron/container-commit.js +39 -0
- package/dist-electron/container-commit.js.map +1 -0
- package/dist-electron/container-duplicate.js +196 -0
- package/dist-electron/container-duplicate.js.map +1 -0
- package/dist-electron/container-rename.js +63 -0
- package/dist-electron/container-rename.js.map +1 -0
- package/dist-electron/containers.js +15 -0
- package/dist-electron/containers.js.map +1 -1
- package/dist-electron/docker-client.js +1 -0
- package/dist-electron/docker-client.js.map +1 -1
- package/dist-electron/image-build.js +173 -0
- package/dist-electron/image-build.js.map +1 -0
- package/dist-electron/image-reference.js +92 -0
- package/dist-electron/image-reference.js.map +1 -0
- package/dist-electron/image-search.js +58 -0
- package/dist-electron/image-search.js.map +1 -0
- package/dist-electron/image-tags.js +138 -0
- package/dist-electron/image-tags.js.map +1 -0
- package/dist-electron/images.js +2 -17
- package/dist-electron/images.js.map +1 -1
- package/dist-electron/ipc.js +60 -2
- package/dist-electron/ipc.js.map +1 -1
- package/dist-electron/known-projects.js +129 -0
- package/dist-electron/known-projects.js.map +1 -0
- package/dist-electron/main.js +15 -0
- package/dist-electron/main.js.map +1 -1
- package/dist-electron/preload.js +29 -0
- package/dist-electron/preload.js.map +1 -1
- package/dist-electron/processes.js +77 -0
- package/dist-electron/processes.js.map +1 -0
- package/dist-electron/pull.js +20 -12
- package/dist-electron/pull.js.map +1 -1
- package/dist-electron/renew.js +2 -2
- package/dist-electron/renew.js.map +1 -1
- package/package.json +1 -1
- package/dist/docker-desktop-mx/browser/chunk--cESao082.js +0 -6
- package/dist/docker-desktop-mx/browser/chunk-3ILJfWKv.js +0 -1
- package/dist/docker-desktop-mx/browser/chunk-6D7_x-nR.js +0 -1
- package/dist/docker-desktop-mx/browser/chunk-B4eF6Vif2.js +0 -1
- package/dist/docker-desktop-mx/browser/chunk-BGRmfw3c.js +0 -1
- package/dist/docker-desktop-mx/browser/chunk-BSE5rhLU.js +0 -1
- package/dist/docker-desktop-mx/browser/chunk-BX2-Fi-r.js +0 -1
- package/dist/docker-desktop-mx/browser/chunk-Bz7JmGk-.js +0 -1
- package/dist/docker-desktop-mx/browser/chunk-CMjDdCPI.js +0 -1
- package/dist/docker-desktop-mx/browser/chunk-CTthjUi7.js +0 -1
- package/dist/docker-desktop-mx/browser/chunk-Cg-fuusV.js +0 -1
- package/dist/docker-desktop-mx/browser/chunk-CkcnVcC4.js +0 -1
- package/dist/docker-desktop-mx/browser/chunk-Ckdb4U3d.js +0 -1
- package/dist/docker-desktop-mx/browser/chunk-DCF2sSJN.js +0 -1
- package/dist/docker-desktop-mx/browser/chunk-DCp2SePu.js +0 -1
- package/dist/docker-desktop-mx/browser/chunk-DEE8TVR7.js +0 -1
- package/dist/docker-desktop-mx/browser/chunk-DFixEhGx.js +0 -1
- package/dist/docker-desktop-mx/browser/chunk-DHIpfbHl.js +0 -1
- package/dist/docker-desktop-mx/browser/chunk-DWmHPcio.js +0 -1
- package/dist/docker-desktop-mx/browser/chunk-DhuhbUD7.js +0 -3
- package/dist/docker-desktop-mx/browser/chunk-JmNJabM7.js +0 -4
- package/dist/docker-desktop-mx/browser/chunk-PR65vdNg.js +0 -1
- package/dist/docker-desktop-mx/browser/chunk-kvK2KAGk.js +0 -1
- package/dist/docker-desktop-mx/browser/chunk-v1AXLZwF.js +0 -1
- package/dist/docker-desktop-mx/browser/chunk-x5sA4n99.js +0 -1
- package/dist/docker-desktop-mx/browser/main-2LC7MYJJ.js +0 -1
- package/dist/docker-desktop-mx/browser/styles-FKMNLG2K.css +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;inset:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;inset:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{font-family:monospace;-webkit-user-select:text;user-select:text;white-space:pre}.xterm .xterm-accessibility-tree>div{transform-origin:left;width:fit-content}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;background:#0000;transition:opacity .1s linear;z-index:11}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{position:absolute;display:none}.xterm .xterm-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow, #000) 0 6px 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}@layer properties;@layer theme,base,components,utilities;@layer theme{:root,:host{--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-black: #000;--color-white: #fff;--spacing: .25rem;--container-xs: 20rem;--container-md: 28rem;--container-lg: 32rem;--container-xl: 36rem;--container-2xl: 42rem;--container-3xl: 48rem;--container-4xl: 56rem;--container-6xl: 72rem;--text-base: 1rem;--text-base--line-height: 1.5 ;--text-lg: 1.125rem;--text-lg--line-height: calc(1.75 / 1.125);--text-xl: 1.25rem;--text-xl--line-height: calc(1.75 / 1.25);--text-2xl: 1.5rem;--text-2xl--line-height: calc(2 / 1.5);--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--tracking-tight: -.025em;--tracking-wide: .025em;--leading-snug: 1.375;--leading-relaxed: 1.625;--radius-sm: .25rem;--radius-md: .375rem;--radius-lg: .5rem;--animate-pulse: pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration: .15s;--default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);--default-font-family: var(--font-sans);--default-mono-font-family: var(--font-mono);--color-ink-950: #ffffff;--color-ink-900: #fbf9f6;--color-ink-850: #f3efe9;--color-ink-800: #e8e2da;--color-ink-750: #d5dae4;--color-ink-700: #c3cad8;--color-ink-600: #9aa4b6;--color-ink-500: #78839a;--color-ink-400: #5a6579;--color-ink-300: #414a5c;--color-ink-200: #2b3341;--color-ink-100: #161b23;--color-accent: #c2552f;--color-ok: #2f7d55;--color-warn: #8a6212;--color-danger: #c0392f;--color-halt: #f59e0b;--color-stopped: #9b2c2c;--color-series-1: #2a78d6;--color-series-2: #d95926;--color-panel: #fffdfa;--breakpoint-sidebar: 900px}}@layer base{*,:after,:before,::backdrop,::file-selector-button{box-sizing:border-box;margin:0;padding:0;border:0 solid}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4;font-family:var(--default-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings, normal);font-variation-settings:var(--default-font-variation-settings, normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings, normal);font-variation-settings:var(--default-mono-font-variation-settings, normal);font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea,::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;border-radius:0;background-color:transparent;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px){::placeholder{color:currentcolor}@supports (color: color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]),::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border-width:0}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.-top-1{top:calc(var(--spacing) * -1)}.top-0{top:0}.top-1{top:var(--spacing)}.top-1\/2{top:50%}.top-full{top:100%}.right-0{right:0}.right-1{right:var(--spacing)}.right-4{right:calc(var(--spacing) * 4)}.bottom-10{bottom:calc(var(--spacing) * 10)}.bottom-full{bottom:100%}.left-0{left:0}.left-2\.5{left:calc(var(--spacing) * 2.5)}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.col-span-1{grid-column:span 1 / span 1}.col-span-2{grid-column:span 2 / span 2}.col-span-3{grid-column:span 3 / span 3}.col-span-5{grid-column:span 5 / span 5}.col-span-6{grid-column:span 6 / span 6}.col-start-2{grid-column-start:2}.container{width:100%}@media(width>=900px){.container{max-width:900px}}@media(width>=40rem){.container{max-width:40rem}}@media(width>=48rem){.container{max-width:48rem}}@media(width>=64rem){.container{max-width:64rem}}@media(width>=80rem){.container{max-width:80rem}}@media(width>=96rem){.container{max-width:96rem}}.m-0{margin:0}.m-4{margin:calc(var(--spacing) * 4)}.my-1{margin-block:var(--spacing)}.-mt-0\.5{margin-top:calc(var(--spacing) * -.5)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-2\.5{margin-top:calc(var(--spacing) * 2.5)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.-mr-1{margin-right:calc(var(--spacing) * -1)}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-auto{margin-right:auto}.-mb-px{margin-bottom:-1px}.mb-1{margin-bottom:var(--spacing)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.ml-1{margin-left:var(--spacing)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-6{margin-left:calc(var(--spacing) * 6)}.ml-auto{margin-left:auto}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-5{height:calc(var(--spacing) * 5)}.h-7{height:calc(var(--spacing) * 7)}.h-11{height:calc(var(--spacing) * 11)}.h-16{height:calc(var(--spacing) * 16)}.h-28{height:calc(var(--spacing) * 28)}.h-full{height:100%}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-\[30vh\]{max-height:30vh}.max-h-\[50vh\]{max-height:50vh}.max-h-\[85vh\]{max-height:85vh}.min-h-0{min-height:0px}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-32{width:calc(var(--spacing) * 32)}.w-36{width:calc(var(--spacing) * 36)}.w-44{width:calc(var(--spacing) * 44)}.w-52{width:calc(var(--spacing) * 52)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-96{width:calc(var(--spacing) * 96)}.w-\[22rem\]{width:22rem}.w-\[84px\]{width:84px}.w-\[110px\]{width:110px}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\[45\%\]{max-width:45%}.max-w-\[calc\(100vw-2rem\)\]{max-width:calc(100vw - 2rem)}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-prose{max-width:65ch}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:0px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.basis-full{flex-basis:100%}.table-fixed{table-layout:fixed}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\[3px\]{--tw-translate-x: 3px;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-full{--tw-translate-y: -100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.cursor-pointer{cursor:pointer}.resize{resize:both}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-\[7\.5rem_1fr_auto\]{grid-template-columns:7.5rem 1fr auto}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.grid-cols-\[minmax\(0\,1fr\)_auto_minmax\(0\,1fr\)_7rem_2rem\]{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) 7rem 2rem}.grid-cols-\[minmax\(0\,2fr\)_auto_minmax\(0\,3fr\)_2rem\]{grid-template-columns:minmax(0,2fr) auto minmax(0,3fr) 2rem}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 2.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-x-8{column-gap:calc(var(--spacing) * 8)}.gap-x-10{column-gap:calc(var(--spacing) * 10)}.gap-y-1{row-gap:var(--spacing)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-3{row-gap:calc(var(--spacing) * 3)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse: 0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-ink-700>:not(:last-child)){border-color:var(--color-ink-700)}:where(.divide-ink-800>:not(:last-child)){border-color:var(--color-ink-800)}.self-center{align-self:center}.self-start{align-self:flex-start}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:calc(infinity * 1px)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-dashed{--tw-border-style: dashed;border-style:dashed}.border-accent{border-color:var(--color-accent)}.border-accent\/40{border-color:color-mix(in srgb,#c2552f 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.border-accent\/40{border-color:color-mix(in oklab,var(--color-accent) 40%,transparent)}}.border-accent\/50{border-color:color-mix(in srgb,#c2552f 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.border-accent\/50{border-color:color-mix(in oklab,var(--color-accent) 50%,transparent)}}.border-danger{border-color:var(--color-danger)}.border-danger\/40{border-color:color-mix(in srgb,#c0392f 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.border-danger\/40{border-color:color-mix(in oklab,var(--color-danger) 40%,transparent)}}.border-ink-400{border-color:var(--color-ink-400)}.border-ink-700{border-color:var(--color-ink-700)}.border-ink-800{border-color:var(--color-ink-800)}.border-ok\/40{border-color:color-mix(in srgb,#2f7d55 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.border-ok\/40{border-color:color-mix(in oklab,var(--color-ok) 40%,transparent)}}.border-transparent{border-color:transparent}.border-warn{border-color:var(--color-warn)}.border-warn\/40{border-color:color-mix(in srgb,#8a6212 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.border-warn\/40{border-color:color-mix(in oklab,var(--color-warn) 40%,transparent)}}.bg-accent{background-color:var(--color-accent)}.bg-accent\/5{background-color:color-mix(in srgb,#c2552f 5%,transparent)}@supports (color: color-mix(in lab,red,red)){.bg-accent\/5{background-color:color-mix(in oklab,var(--color-accent) 5%,transparent)}}.bg-accent\/10{background-color:color-mix(in srgb,#c2552f 10%,transparent)}@supports (color: color-mix(in lab,red,red)){.bg-accent\/10{background-color:color-mix(in oklab,var(--color-accent) 10%,transparent)}}.bg-accent\/15{background-color:color-mix(in srgb,#c2552f 15%,transparent)}@supports (color: color-mix(in lab,red,red)){.bg-accent\/15{background-color:color-mix(in oklab,var(--color-accent) 15%,transparent)}}.bg-black\/40{background-color:color-mix(in srgb,#000 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black) 40%,transparent)}}.bg-black\/50{background-color:color-mix(in srgb,#000 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-danger{background-color:var(--color-danger)}.bg-danger\/10{background-color:color-mix(in srgb,#c0392f 10%,transparent)}@supports (color: color-mix(in lab,red,red)){.bg-danger\/10{background-color:color-mix(in oklab,var(--color-danger) 10%,transparent)}}.bg-halt{background-color:var(--color-halt)}.bg-ink-400{background-color:var(--color-ink-400)}.bg-ink-600{background-color:var(--color-ink-600)}.bg-ink-700{background-color:var(--color-ink-700)}.bg-ink-800{background-color:var(--color-ink-800)}.bg-ink-850{background-color:var(--color-ink-850)}.bg-ink-900{background-color:var(--color-ink-900)}.bg-ink-950{background-color:var(--color-ink-950)}.bg-ok{background-color:var(--color-ok)}.bg-ok\/10{background-color:color-mix(in srgb,#2f7d55 10%,transparent)}@supports (color: color-mix(in lab,red,red)){.bg-ok\/10{background-color:color-mix(in oklab,var(--color-ok) 10%,transparent)}}.bg-panel{background-color:var(--color-panel)}.bg-series-1{background-color:var(--color-series-1)}.bg-series-2{background-color:var(--color-series-2)}.bg-stopped{background-color:var(--color-stopped)}.bg-transparent{background-color:transparent}.bg-warn\/10{background-color:color-mix(in srgb,#8a6212 10%,transparent)}@supports (color: color-mix(in lab,red,red)){.bg-warn\/10{background-color:color-mix(in oklab,var(--color-warn) 10%,transparent)}}.bg-warn\/15{background-color:color-mix(in srgb,#8a6212 15%,transparent)}@supports (color: color-mix(in lab,red,red)){.bg-warn\/15{background-color:color-mix(in oklab,var(--color-warn) 15%,transparent)}}.fill-accent{fill:var(--color-accent)}.fill-accent\/15{fill:color-mix(in srgb,#c2552f 15%,transparent)}@supports (color: color-mix(in lab,red,red)){.fill-accent\/15{fill:color-mix(in oklab,var(--color-accent) 15%,transparent)}}.fill-series-1{fill:var(--color-series-1)}.fill-series-1\/15{fill:color-mix(in srgb,#2a78d6 15%,transparent)}@supports (color: color-mix(in lab,red,red)){.fill-series-1\/15{fill:color-mix(in oklab,var(--color-series-1) 15%,transparent)}}.fill-series-2{fill:var(--color-series-2)}.fill-series-2\/15{fill:color-mix(in srgb,#d95926 15%,transparent)}@supports (color: color-mix(in lab,red,red)){.fill-series-2\/15{fill:color-mix(in oklab,var(--color-series-2) 15%,transparent)}}.stroke-accent{stroke:var(--color-accent)}.stroke-ink-600{stroke:var(--color-ink-600)}.stroke-ink-700{stroke:var(--color-ink-700)}.stroke-panel{stroke:var(--color-panel)}.stroke-series-1{stroke:var(--color-series-1)}.stroke-series-2{stroke:var(--color-series-2)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-px{padding-block:1px}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-\[12vh\]{padding-top:12vh}.pr-1{padding-right:var(--spacing)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-9{padding-right:calc(var(--spacing) * 9)}.pb-1{padding-bottom:var(--spacing)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pl-1\.5{padding-left:calc(var(--spacing) * 1.5)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-8{padding-left:calc(var(--spacing) * 8)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-top{vertical-align:top}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading, var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading, var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading, var(--text-lg--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading, var(--text-xl--line-height))}.text-\[0\.92em\]{font-size:.92em}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.leading-\[1\.6\]{--tw-leading: 1.6;line-height:1.6}.leading-\[1\.7\]{--tw-leading: 1.7;line-height:1.7}.leading-relaxed{--tw-leading: var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading: var(--leading-snug);line-height:var(--leading-snug)}.font-medium{--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight: var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking: var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking: var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-accent{color:var(--color-accent)}.text-danger{color:var(--color-danger)}.text-ink-100{color:var(--color-ink-100)}.text-ink-200{color:var(--color-ink-200)}.text-ink-300{color:var(--color-ink-300)}.text-ink-400{color:var(--color-ink-400)}.text-ink-500{color:var(--color-ink-500)}.text-ink-600{color:var(--color-ink-600)}.text-ok{color:var(--color-ok)}.text-warn{color:var(--color-warn)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.accent-accent{accent-color:var(--color-accent)}.opacity-0{opacity:0%}.opacity-70{opacity:70%}.shadow{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / .25));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_0_3px_color-mix\(in_oklab\,var\(--color-ok\)_28\%\,transparent\)\]{--tw-shadow: 0 0 0 3px var(--tw-shadow-color, color-mix(in srgb,#2f7d55 28%,transparent));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@supports (color: color-mix(in lab,red,red)){.shadow-\[0_0_0_3px_color-mix\(in_oklab\,var\(--color-ok\)_28\%\,transparent\)\]{--tw-shadow: 0 0 0 3px var(--tw-shadow-color, color-mix(in oklab,var(--color-ok) 28%,transparent))}}.shadow-lg{--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition-\[opacity\,translate\]{transition-property:opacity,translate;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.duration-200{--tw-duration: .2s;transition-duration:.2s}.outline-none{--tw-outline-style: none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\[localhost\:5000\/app\]{localhost:5000/app}@media(hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:100%}}.placeholder\:text-ink-500::placeholder{color:var(--color-ink-500)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0px}@media(hover:hover){.hover\:border-accent:hover{border-color:var(--color-accent)}.hover\:border-danger:hover{border-color:var(--color-danger)}.hover\:border-ink-500:hover{border-color:var(--color-ink-500)}.hover\:border-ink-700:hover{border-color:var(--color-ink-700)}.hover\:bg-danger:hover{background-color:var(--color-danger)}.hover\:bg-danger\/10:hover{background-color:color-mix(in srgb,#c0392f 10%,transparent)}@supports (color: color-mix(in lab,red,red)){.hover\:bg-danger\/10:hover{background-color:color-mix(in oklab,var(--color-danger) 10%,transparent)}}.hover\:bg-danger\/15:hover{background-color:color-mix(in srgb,#c0392f 15%,transparent)}@supports (color: color-mix(in lab,red,red)){.hover\:bg-danger\/15:hover{background-color:color-mix(in oklab,var(--color-danger) 15%,transparent)}}.hover\:bg-ink-700:hover{background-color:var(--color-ink-700)}.hover\:bg-ink-750:hover{background-color:var(--color-ink-750)}.hover\:bg-ink-800:hover{background-color:var(--color-ink-800)}.hover\:bg-ink-850:hover{background-color:var(--color-ink-850)}.hover\:text-accent:hover{color:var(--color-accent)}.hover\:text-danger:hover{color:var(--color-danger)}.hover\:text-ink-100:hover{color:var(--color-ink-100)}.hover\:text-ink-200:hover{color:var(--color-ink-200)}.hover\:text-white:hover{color:var(--color-white)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:opacity-100:focus{opacity:100%}.focus-visible\:bg-danger\/15:focus-visible{background-color:color-mix(in srgb,#c0392f 15%,transparent)}@supports (color: color-mix(in lab,red,red)){.focus-visible\:bg-danger\/15:focus-visible{background-color:color-mix(in oklab,var(--color-danger) 15%,transparent)}}.focus-visible\:bg-ink-750:focus-visible{background-color:var(--color-ink-750)}.focus-visible\:text-ink-100:focus-visible{color:var(--color-ink-100)}.focus-visible\:outline-none:focus-visible{--tw-outline-style: none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:40%}.disabled\:opacity-50:disabled{opacity:50%}@media(hover:hover){.disabled\:hover\:bg-transparent:disabled:hover{background-color:transparent}}.data-\[active\]\:border-accent[data-active]{border-color:var(--color-accent)}.data-\[active\]\:text-ink-100[data-active]{color:var(--color-ink-100)}.data-\[checked\]\:translate-x-\[19px\][data-checked]{--tw-translate-x: 19px;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[checked\]\:border-accent[data-checked]{border-color:var(--color-accent)}.data-\[checked\]\:bg-accent[data-checked]{background-color:var(--color-accent)}.data-\[checked\]\:bg-white[data-checked]{background-color:var(--color-white)}.data-\[state\=closed\]\:translate-x-4[data-state=closed]{--tw-translate-x: calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=closed\]\:opacity-0[data-state=closed]{opacity:0%}.data-\[type\=error\]\:border-danger\/50[data-type=error]{border-color:color-mix(in srgb,#c0392f 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.data-\[type\=error\]\:border-danger\/50[data-type=error]{border-color:color-mix(in oklab,var(--color-danger) 50%,transparent)}}.data-\[type\=success\]\:border-ok\/50[data-type=success]{border-color:color-mix(in srgb,#2f7d55 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.data-\[type\=success\]\:border-ok\/50[data-type=success]{border-color:color-mix(in oklab,var(--color-ok) 50%,transparent)}}@media(width<900px){.max-sidebar\:hidden{display:none}.max-sidebar\:w-13{width:calc(var(--spacing) * 13)}}@media(width>=40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(width>=64rem){.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@starting-style{.starting\:translate-y-2{--tw-translate-y: calc(var(--spacing) * 2);translate:var(--tw-translate-x) var(--tw-translate-y)}.starting\:opacity-0{opacity:0%}}}:root[data-theme=dark]{--color-ink-950: #08090b;--color-ink-900: #0b0d10;--color-ink-850: #101318;--color-ink-800: #151920;--color-ink-750: #1b2029;--color-ink-700: #232935;--color-ink-600: #323a4a;--color-ink-500: #4b566b;--color-ink-400: #6b7689;--color-ink-300: #97a1b2;--color-ink-200: #c3cad6;--color-ink-100: #e6eaf0;--color-accent: #d97757;--color-accent-soft: #f0a888;--color-ok: #4ea87a;--color-warn: #d9a13f;--color-danger: #d9584f;--color-halt: #fbbf24;--color-stopped: #b83a3a;--color-series-1: #3987e5;--color-series-2: #d95926;--color-panel: #101318}:root{color-scheme:light}:root[data-theme=dark]{color-scheme:dark}html,body{height:100%;margin:0;background:var(--color-ink-900);color:var(--color-ink-100);font-family:Verdana,ui-sans-serif,-apple-system,SF Pro Text,Segoe UI,system-ui,sans-serif;font-size:15px;overflow:hidden}*,*:before,*:after{box-sizing:border-box}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-ink-700);border-radius:6px;border:2px solid var(--color-ink-900)}::-webkit-scrollbar-thumb:hover{background:var(--color-ink-600)}@layer components{.mx-btn{display:inline-flex;flex-shrink:0;cursor:pointer;align-items:center;gap:calc(var(--spacing) * 1.5);border-radius:var(--radius-md);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-ink-700);background-color:var(--color-ink-800);padding-inline:calc(var(--spacing) * 2.5);padding-block:var(--spacing);font-size:13px;--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium);white-space:nowrap;color:var(--color-ink-200);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));-webkit-user-select:none;user-select:none}.mx-btn:hover:not(:disabled){border-color:var(--color-ink-600);background-color:var(--color-ink-750);color:var(--color-ink-100)}.mx-btn:disabled{cursor:not-allowed;opacity:40%}.mx-focus:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px;outline-offset:2px;outline-color:var(--color-accent)}}@property --tw-translate-x{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-y{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-z{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-rotate-x{syntax: "*"; inherits: false;}@property --tw-rotate-y{syntax: "*"; inherits: false;}@property --tw-rotate-z{syntax: "*"; inherits: false;}@property --tw-skew-x{syntax: "*"; inherits: false;}@property --tw-skew-y{syntax: "*"; inherits: false;}@property --tw-space-y-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-divide-y-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-border-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: "*"; inherits: false;}@property --tw-font-weight{syntax: "*"; inherits: false;}@property --tw-tracking{syntax: "*"; inherits: false;}@property --tw-ordinal{syntax: "*"; inherits: false;}@property --tw-slashed-zero{syntax: "*"; inherits: false;}@property --tw-numeric-figure{syntax: "*"; inherits: false;}@property --tw-numeric-spacing{syntax: "*"; inherits: false;}@property --tw-numeric-fraction{syntax: "*"; inherits: false;}@property --tw-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: "*"; inherits: false;}@property --tw-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: "*"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: "*"; inherits: false;}@property --tw-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: "*"; inherits: false;}@property --tw-inset-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: "*"; inherits: false;}@property --tw-ring-offset-width{syntax: "<length>"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: "*"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-blur{syntax: "*"; inherits: false;}@property --tw-brightness{syntax: "*"; inherits: false;}@property --tw-contrast{syntax: "*"; inherits: false;}@property --tw-grayscale{syntax: "*"; inherits: false;}@property --tw-hue-rotate{syntax: "*"; inherits: false;}@property --tw-invert{syntax: "*"; inherits: false;}@property --tw-opacity{syntax: "*"; inherits: false;}@property --tw-saturate{syntax: "*"; inherits: false;}@property --tw-sepia{syntax: "*"; inherits: false;}@property --tw-drop-shadow{syntax: "*"; inherits: false;}@property --tw-drop-shadow-color{syntax: "*"; inherits: false;}@property --tw-drop-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-drop-shadow-size{syntax: "*"; inherits: false;}@property --tw-duration{syntax: "*"; inherits: false;}@property --tw-outline-style{syntax: "*"; inherits: false; initial-value: solid;}@keyframes pulse{50%{opacity:.5}}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x: 0;--tw-translate-y: 0;--tw-translate-z: 0;--tw-rotate-x: initial;--tw-rotate-y: initial;--tw-rotate-z: initial;--tw-skew-x: initial;--tw-skew-y: initial;--tw-space-y-reverse: 0;--tw-divide-y-reverse: 0;--tw-border-style: solid;--tw-leading: initial;--tw-font-weight: initial;--tw-tracking: initial;--tw-ordinal: initial;--tw-slashed-zero: initial;--tw-numeric-figure: initial;--tw-numeric-spacing: initial;--tw-numeric-fraction: initial;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-blur: initial;--tw-brightness: initial;--tw-contrast: initial;--tw-grayscale: initial;--tw-hue-rotate: initial;--tw-invert: initial;--tw-opacity: initial;--tw-saturate: initial;--tw-sepia: initial;--tw-drop-shadow: initial;--tw-drop-shadow-color: initial;--tw-drop-shadow-alpha: 100%;--tw-drop-shadow-size: initial;--tw-duration: initial;--tw-outline-style: solid}}}
|
|
@@ -21,6 +21,11 @@ exports.CHANNELS = {
|
|
|
21
21
|
containersAttention: 'containers:attention',
|
|
22
22
|
containersMemoryLimit: 'containers:memoryLimit',
|
|
23
23
|
containersSetMemoryLimit: 'containers:setMemoryLimit',
|
|
24
|
+
containersRename: 'containers:rename',
|
|
25
|
+
containersProcesses: 'containers:processes',
|
|
26
|
+
containersDuplicatePlan: 'containers:duplicatePlan',
|
|
27
|
+
containersDuplicate: 'containers:duplicate',
|
|
28
|
+
containersCommit: 'containers:commit',
|
|
24
29
|
containersCpuLimit: 'containers:cpuLimit',
|
|
25
30
|
containersEnvironment: 'containers:environment',
|
|
26
31
|
containersSetCpuLimit: 'containers:setCpuLimit',
|
|
@@ -47,6 +52,13 @@ exports.CHANNELS = {
|
|
|
47
52
|
imagesRun: 'images:run',
|
|
48
53
|
imagesPull: 'images:pull',
|
|
49
54
|
imagesPullClose: 'images:pullClose',
|
|
55
|
+
imagesTag: 'images:tag',
|
|
56
|
+
imagesSearch: 'images:search',
|
|
57
|
+
imagesChooseBuildFolder: 'images:chooseBuildFolder',
|
|
58
|
+
imagesBuild: 'images:build',
|
|
59
|
+
imagesUntag: 'images:untag',
|
|
60
|
+
/** Een push (fase 69); de voortgang gaat over imagesPullProgress, gesloten met imagesPullClose. */
|
|
61
|
+
imagesPush: 'images:push',
|
|
50
62
|
imagesCheckUpdates: 'images:checkUpdates',
|
|
51
63
|
imagesStale: 'images:stale',
|
|
52
64
|
imagesRenew: 'images:renew',
|
|
@@ -76,6 +88,9 @@ exports.CHANNELS = {
|
|
|
76
88
|
networksConnect: 'networks:connect',
|
|
77
89
|
networksDisconnect: 'networks:disconnect',
|
|
78
90
|
composeStatus: 'compose:status',
|
|
91
|
+
composeKnown: 'compose:known',
|
|
92
|
+
composeOpenFile: 'compose:openFile',
|
|
93
|
+
composeForget: 'compose:forget',
|
|
79
94
|
composeUp: 'compose:up',
|
|
80
95
|
composeDown: 'compose:down',
|
|
81
96
|
composeRecreate: 'compose:recreate',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channels.js","sourceRoot":"","sources":["../electron/channels.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"channels.js","sourceRoot":"","sources":["../electron/channels.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.rememberProjects = rememberProjects;
|
|
37
|
+
exports.listKnownProjects = listKnownProjects;
|
|
38
|
+
exports.forgetProject = forgetProject;
|
|
39
|
+
exports.projectNameFromConfig = projectNameFromConfig;
|
|
40
|
+
exports.openComposeFile = openComposeFile;
|
|
41
|
+
exports.samePlace = samePlace;
|
|
42
|
+
const path = __importStar(require("node:path"));
|
|
43
|
+
const compose_1 = require("./compose");
|
|
44
|
+
const docker_client_1 = require("./docker-client");
|
|
45
|
+
const i18n_1 = require("./i18n");
|
|
46
|
+
const known_projects_1 = require("./known-projects");
|
|
47
|
+
/**
|
|
48
|
+
* Compose-projecten die niet (meer) draaien (fase 70): onthouden wat de labels zeggen, een
|
|
49
|
+
* compose-bestand openen, en een project weer vergeten.
|
|
50
|
+
*/
|
|
51
|
+
/** Neemt de projecten uit de containerlijst op; na `down` weet de app dan nog waar ze staan. */
|
|
52
|
+
function rememberProjects(containers) {
|
|
53
|
+
const seen = new Map();
|
|
54
|
+
for (const container of containers) {
|
|
55
|
+
if (container.composeProject !== null && container.composeWorkingDir !== null && !seen.has(container.composeProject)) {
|
|
56
|
+
seen.set(container.composeProject, { name: container.composeProject, workingDir: container.composeWorkingDir, configFiles: container.composeConfigFiles });
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if (seen.size > 0) {
|
|
60
|
+
(0, known_projects_1.knownProjects)()?.remember((0, docker_client_1.getConnection)().endpoint, [...seen.values()]);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/** De onthouden projecten van deze verbinding, met of hun compose-bestand er nog is. */
|
|
64
|
+
function listKnownProjects(exists = known_projects_1.pathExists) {
|
|
65
|
+
return ((0, known_projects_1.knownProjects)()?.list((0, docker_client_1.getConnection)().endpoint) ?? []).map((project) => {
|
|
66
|
+
const files = project.configFiles.length > 0 ? project.configFiles : [project.workingDir];
|
|
67
|
+
return { ...project, missing: !files.every((file) => exists(file)) };
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
/** Haalt het project uit de onthouden lijst; aan containers en bestanden verandert niets. */
|
|
71
|
+
function forgetProject(name) {
|
|
72
|
+
(0, known_projects_1.knownProjects)()?.forget((0, docker_client_1.getConnection)().endpoint, name);
|
|
73
|
+
}
|
|
74
|
+
/** De naam die compose aan dit bestand geeft: `name:` erin, of anders de map. */
|
|
75
|
+
function projectNameFromConfig(json) {
|
|
76
|
+
try {
|
|
77
|
+
const name = JSON.parse(json).name;
|
|
78
|
+
return typeof name === 'string' && name !== '' ? name : null;
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Start het project in dit compose-bestand: `docker compose -f <bestand> up -d`, in de map van het
|
|
86
|
+
* bestand. Alleen een bestand dat je zelf in de dialoog van Windows koos; `null` is annuleren.
|
|
87
|
+
*/
|
|
88
|
+
async function openComposeFile(file) {
|
|
89
|
+
if (file === null) {
|
|
90
|
+
return { ok: true, project: null };
|
|
91
|
+
}
|
|
92
|
+
const location = { workingDir: path.dirname(file), configFiles: [file] };
|
|
93
|
+
const config = await (0, compose_1.runComposeCapture)(location, ['compose', '-f', file, 'config', '--format', 'json'], 'config');
|
|
94
|
+
if (!config.ok) {
|
|
95
|
+
return config;
|
|
96
|
+
}
|
|
97
|
+
const name = projectNameFromConfig(config.stdout);
|
|
98
|
+
if (name === null) {
|
|
99
|
+
return {
|
|
100
|
+
ok: false,
|
|
101
|
+
problem: (0, i18n_1.t)({
|
|
102
|
+
en: `Compose did not say what the project in ${file} is called.`,
|
|
103
|
+
nl: `Compose zei niet hoe het project in ${file} heet.`,
|
|
104
|
+
de: `Compose hat nicht gesagt, wie das Projekt in ${file} heißt.`,
|
|
105
|
+
fr: `Compose n’a pas dit comment s’appelle le projet de ${file}.`,
|
|
106
|
+
es: `Compose no dijo cómo se llama el proyecto de ${file}.`,
|
|
107
|
+
}),
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
// Dezelfde projectnaam uit een andere map zou compose als één project zien, en de containers
|
|
111
|
+
// van het ene door die van het andere vervangen. Dat nooit stil laten gebeuren.
|
|
112
|
+
const existing = await (0, compose_1.resolveProjectLocation)(name);
|
|
113
|
+
if (existing !== null && !samePlace(existing.workingDir, location.workingDir)) {
|
|
114
|
+
return { ok: false, problem: sameName(name, existing.workingDir) };
|
|
115
|
+
}
|
|
116
|
+
// Al onthouden voor de `up`: mislukt die (een bezette poort), dan staat het project er toch.
|
|
117
|
+
(0, known_projects_1.knownProjects)()?.remember((0, docker_client_1.getConnection)().endpoint, [{ name, ...location }]);
|
|
118
|
+
const result = await (0, compose_1.runCompose)(location, [...(0, compose_1.projectArgs)(name, location), 'up', '-d'], 'up');
|
|
119
|
+
return result.ok ? { ok: true, project: name } : result;
|
|
120
|
+
}
|
|
121
|
+
/** Of twee mappen dezelfde zijn, ook als de ene een WSL-pad is (`/mnt/c/x`) en de andere `C:\x`. */
|
|
122
|
+
function samePlace(a, b) {
|
|
123
|
+
const normal = (dir) => ((0, compose_1.windowsPathOf)(dir) ?? dir).replace(/[\\/]+$/, '').toLowerCase();
|
|
124
|
+
return normal(a) === normal(b);
|
|
125
|
+
}
|
|
126
|
+
function sameName(name, workingDir) {
|
|
127
|
+
return (0, i18n_1.t)({
|
|
128
|
+
en: `There already is a project ${name}, in ${workingDir}. Give this one its own name with name: in the compose file.`,
|
|
129
|
+
nl: `Er is al een project ${name}, in ${workingDir}. Geef dit een eigen naam met name: in het compose-bestand.`,
|
|
130
|
+
de: `Es gibt bereits ein Projekt ${name}, in ${workingDir}. Geben Sie diesem mit name: in der Compose-Datei einen eigenen Namen.`,
|
|
131
|
+
fr: `Un projet ${name} existe déjà, dans ${workingDir}. Donnez à celui-ci son propre nom avec name: dans le fichier compose.`,
|
|
132
|
+
es: `Ya existe un proyecto ${name}, en ${workingDir}. Dale a este su propio nombre con name: en el archivo compose.`,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=compose-known.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compose-known.js","sourceRoot":"","sources":["../electron/compose-known.ts"],"names":[],"mappings":"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"}
|
package/dist-electron/compose.js
CHANGED
|
@@ -20,6 +20,7 @@ const node_fs_1 = require("node:fs");
|
|
|
20
20
|
const node_util_1 = require("node:util");
|
|
21
21
|
const docker_client_1 = require("./docker-client");
|
|
22
22
|
const wsl_1 = require("./wsl");
|
|
23
|
+
const known_projects_1 = require("./known-projects");
|
|
23
24
|
const i18n_1 = require("./i18n");
|
|
24
25
|
const execFileAsync = (0, node_util_1.promisify)(node_child_process_1.execFile);
|
|
25
26
|
const COMPOSE_PROJECT = 'com.docker.compose.project';
|
|
@@ -56,7 +57,9 @@ async function resolveProjectLocation(projectName) {
|
|
|
56
57
|
return { workingDir, configFiles };
|
|
57
58
|
}
|
|
58
59
|
}
|
|
59
|
-
|
|
60
|
+
// Geen containers meer, na `down` of nooit gestart: dan wat de app ervan onthouden heeft (fase 70).
|
|
61
|
+
const known = (0, known_projects_1.knownProjects)()?.locationOf((0, docker_client_1.getConnection)().endpoint, projectName) ?? null;
|
|
62
|
+
return known === null ? null : { workingDir: known.workingDir, configFiles: [...known.configFiles] };
|
|
60
63
|
}
|
|
61
64
|
let cachedStatus = null;
|
|
62
65
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compose.js","sourceRoot":"","sources":["../electron/compose.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"compose.js","sourceRoot":"","sources":["../electron/compose.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.commitContainer = commitContainer;
|
|
4
|
+
const docker_client_1 = require("./docker-client");
|
|
5
|
+
const i18n_1 = require("./i18n");
|
|
6
|
+
const image_reference_1 = require("./image-reference");
|
|
7
|
+
/**
|
|
8
|
+
* Een container als image bewaren (fase 68): `/commit`, zoals `docker commit`.
|
|
9
|
+
*
|
|
10
|
+
* Met `pause`, net als de CLI standaard doet: een draaiende container staat even stil, zodat er
|
|
11
|
+
* geen half geschreven bestand in de image komt. Volumes en bind mounts horen niet bij de
|
|
12
|
+
* container en komen er dus niet in; dat zegt de dialoog erbij.
|
|
13
|
+
*/
|
|
14
|
+
/** Bewaart de container onder `reference` (`naam` of `naam:tag`) en geeft de korte id van de nieuwe image. */
|
|
15
|
+
async function commitContainer(id, reference) {
|
|
16
|
+
const wanted = reference.trim();
|
|
17
|
+
if (!(0, image_reference_1.isReference)(wanted)) {
|
|
18
|
+
return {
|
|
19
|
+
ok: false,
|
|
20
|
+
problem: (0, i18n_1.t)({
|
|
21
|
+
en: 'An image name is in lowercase, like my-app or registry.example.com/team/app, optionally followed by :tag.',
|
|
22
|
+
nl: 'Een imagenaam is in kleine letters, zoals mijn-app of registry.example.com/team/app, eventueel gevolgd door :tag.',
|
|
23
|
+
de: 'Ein Image-Name ist kleingeschrieben, etwa mein-app oder registry.example.com/team/app, optional gefolgt von :tag.',
|
|
24
|
+
fr: 'Un nom d’image est en minuscules, comme mon-app ou registry.example.com/equipe/app, suivi éventuellement de :tag.',
|
|
25
|
+
es: 'Un nombre de imagen va en minúsculas, como mi-app o registry.example.com/equipo/app, seguido opcionalmente de :tag.',
|
|
26
|
+
}),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
const { repository, tag } = (0, image_reference_1.splitReference)(wanted);
|
|
30
|
+
try {
|
|
31
|
+
const created = (await (0, docker_client_1.getConnection)().docker.getContainer(id).commit({ repo: repository, tag, pause: true }));
|
|
32
|
+
const imageId = (created.Id ?? '').replace(/^sha256:/, '').slice(0, 12);
|
|
33
|
+
return { ok: true, reference: `${repository}:${tag}`, imageId };
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
return { ok: false, problem: (0, docker_client_1.readableError)(err, (0, docker_client_1.getConnection)().endpoint).message };
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=container-commit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container-commit.js","sourceRoot":"","sources":["../electron/container-commit.ts"],"names":[],"mappings":";;AAcA,0CA2BC;AAxCD,mDAA+D;AAC/D,iCAA2B;AAC3B,uDAAgE;AAEhE;;;;;;GAMG;AAEH,8GAA8G;AACvG,KAAK,UAAU,eAAe,CAAC,EAAU,EAAE,SAAiB;IAEjE,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;IAEhC,IAAI,CAAC,IAAA,6BAAW,EAAC,MAAM,CAAC,EAAE,CAAC;QACzB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,IAAA,QAAC,EAAC;gBACT,EAAE,EAAE,2GAA2G;gBAC/G,EAAE,EAAE,mHAAmH;gBACvH,EAAE,EAAE,mHAAmH;gBACvH,EAAE,EAAE,mHAAmH;gBACvH,EAAE,EAAE,qHAAqH;aAC1H,CAAC;SACH,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,IAAA,gCAAc,EAAC,MAAM,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,CAAC,MAAM,IAAA,6BAAa,GAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAoB,CAAC;QAClI,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAExE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,UAAU,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC;IAClE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAA,6BAAa,EAAC,GAAG,EAAE,IAAA,6BAAa,GAAE,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;IACtF,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.suggestDuplicateName = suggestDuplicateName;
|
|
4
|
+
exports.toPlan = toPlan;
|
|
5
|
+
exports.toDuplicateOptions = toDuplicateOptions;
|
|
6
|
+
exports.extraNetworks = extraNetworks;
|
|
7
|
+
exports.readDuplicatePlan = readDuplicatePlan;
|
|
8
|
+
exports.copiedVolumeName = copiedVolumeName;
|
|
9
|
+
exports.duplicateContainer = duplicateContainer;
|
|
10
|
+
const container_rename_1 = require("./container-rename");
|
|
11
|
+
const containers_1 = require("./containers");
|
|
12
|
+
const docker_client_1 = require("./docker-client");
|
|
13
|
+
const i18n_1 = require("./i18n");
|
|
14
|
+
const port_conflicts_1 = require("./port-conflicts");
|
|
15
|
+
const volume_copy_1 = require("./volume-copy");
|
|
16
|
+
/**
|
|
17
|
+
* Een container dupliceren (fase 75): dezelfde instellingen onder een nieuwe naam, om iets naast
|
|
18
|
+
* elkaar te proberen.
|
|
19
|
+
*
|
|
20
|
+
* Uit inspect, via de Engine API, zoals "Container starten" van een image. Alles gaat mee
|
|
21
|
+
* (omgeving, commando, restart policy, grenzen, mounts, netwerken), behalve:
|
|
22
|
+
*
|
|
23
|
+
* - de naam en de hostnaam, want die zijn van het origineel;
|
|
24
|
+
* - de poorten, die je opnieuw kiest: dezelfde poort twee keer kan niet;
|
|
25
|
+
* - de labels van compose. Met die labels erop ziet compose de kopie als een tweede exemplaar van
|
|
26
|
+
* zijn service, en telt hem mee of ruimt hem op bij `up` en `down`;
|
|
27
|
+
* - de aliassen op een netwerk. Met dezelfde alias verdeelt de DNS van Docker het verkeer voor die
|
|
28
|
+
* naam over het origineel en de kopie, en dat is zelden wat je wilt.
|
|
29
|
+
*
|
|
30
|
+
* Een benoemd volume delen twee containers dan. Voor een database is dat vragen om moeilijkheden,
|
|
31
|
+
* dus per volume kies je: delen, of eerst een kopie maken (fase 65) en die gebruiken.
|
|
32
|
+
*/
|
|
33
|
+
const COMPOSE_LABEL = /^com\.docker\.compose\./;
|
|
34
|
+
function bareName(name) {
|
|
35
|
+
return (name ?? '').replace(/^\//, '');
|
|
36
|
+
}
|
|
37
|
+
/** `web` wordt `web-2`, `web-2` wordt `web-3`, tot er een vrije is. */
|
|
38
|
+
function suggestDuplicateName(name, taken) {
|
|
39
|
+
const match = /^(.*?)-(\d+)$/.exec(name);
|
|
40
|
+
const base = match === null ? name : match[1];
|
|
41
|
+
let counter = match === null ? 2 : Number(match[2]) + 1;
|
|
42
|
+
while (taken.has(`${base}-${String(counter)}`)) {
|
|
43
|
+
counter += 1;
|
|
44
|
+
}
|
|
45
|
+
return `${base}-${String(counter)}`;
|
|
46
|
+
}
|
|
47
|
+
/** Wat de dialoog nodig heeft: de voorgestelde naam, de poorten, de benoemde volumes en of het compose is. */
|
|
48
|
+
function toPlan(raw, taken) {
|
|
49
|
+
const name = bareName(raw.Name);
|
|
50
|
+
const bindings = raw.HostConfig?.PortBindings;
|
|
51
|
+
const ports = Object.entries(bindings ?? {})
|
|
52
|
+
.map(([key, list]) => {
|
|
53
|
+
const [port, protocol] = key.split('/');
|
|
54
|
+
return { containerPort: Number(port), protocol: protocol === 'udp' ? 'udp' : 'tcp', hostPort: list?.[0]?.HostPort ? Number(list[0].HostPort) : null };
|
|
55
|
+
})
|
|
56
|
+
.sort((a, b) => a.containerPort - b.containerPort);
|
|
57
|
+
const volumes = (raw.Mounts ?? [])
|
|
58
|
+
.filter((mount) => mount.Type === 'volume' && mount.Name !== undefined && mount.Name !== '')
|
|
59
|
+
.map((mount) => ({ name: mount.Name ?? '', target: mount.Destination ?? '' }));
|
|
60
|
+
const labels = raw.Config?.Labels ?? {};
|
|
61
|
+
return { name, suggestion: suggestDuplicateName(name, taken), ports, volumes, compose: Object.keys(labels).some((label) => COMPOSE_LABEL.test(label)) };
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* De create-body van de kopie. Apart en geëxporteerd, want hier zit wat je makkelijk verkeerd doet:
|
|
65
|
+
* wat mee moet, wat niet, en hoe een volume in `Binds` en in `Mounts` verwisseld wordt.
|
|
66
|
+
*/
|
|
67
|
+
function toDuplicateOptions(raw, options, renamed) {
|
|
68
|
+
// De hostnaam is die van het origineel; zonder kiest Docker er een voor de kopie.
|
|
69
|
+
const { Labels: labels, ...rest } = raw.Config ?? {};
|
|
70
|
+
const config = { ...rest };
|
|
71
|
+
delete config.Hostname;
|
|
72
|
+
const host = raw.HostConfig ?? {};
|
|
73
|
+
const exposed = { ...(config.ExposedPorts ?? {}) };
|
|
74
|
+
const bindings = {};
|
|
75
|
+
for (const port of options.ports) {
|
|
76
|
+
const key = `${String(port.containerPort)}/${port.protocol}`;
|
|
77
|
+
exposed[key] = {};
|
|
78
|
+
bindings[key] = [{ HostPort: port.hostPort === null ? '' : String(port.hostPort) }];
|
|
79
|
+
}
|
|
80
|
+
const swap = (source) => (source === undefined ? source : (renamed.get(source) ?? source));
|
|
81
|
+
const binds = (host.Binds ?? []).map((bind) => {
|
|
82
|
+
const colon = bind.indexOf(':');
|
|
83
|
+
return colon === -1 ? bind : `${swap(bind.slice(0, colon)) ?? ''}${bind.slice(colon)}`;
|
|
84
|
+
});
|
|
85
|
+
const mounts = (host.Mounts ?? []).map((mount) => (mount.Type === 'volume' ? { ...mount, Source: swap(mount.Source) } : mount));
|
|
86
|
+
return {
|
|
87
|
+
...config,
|
|
88
|
+
name: options.name,
|
|
89
|
+
Labels: Object.fromEntries(Object.entries(labels ?? {}).filter(([label]) => !COMPOSE_LABEL.test(label))),
|
|
90
|
+
ExposedPorts: exposed,
|
|
91
|
+
HostConfig: { ...host, PortBindings: bindings, Binds: binds, Mounts: mounts },
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
/** De netwerken naast het eerste; die komen er na het aanmaken bij, zonder aliassen. */
|
|
95
|
+
function extraNetworks(raw) {
|
|
96
|
+
const primary = raw.HostConfig?.NetworkMode ?? '';
|
|
97
|
+
return Object.keys(raw.NetworkSettings?.Networks ?? {}).filter((network) => network !== primary);
|
|
98
|
+
}
|
|
99
|
+
async function takenNames() {
|
|
100
|
+
return new Set((await (0, containers_1.listContainers)()).map((container) => container.name));
|
|
101
|
+
}
|
|
102
|
+
/** Wat de dialoog "Dupliceren" nodig heeft, uit inspect. */
|
|
103
|
+
async function readDuplicatePlan(id) {
|
|
104
|
+
try {
|
|
105
|
+
const raw = (await (0, docker_client_1.getConnection)().docker.getContainer(id).inspect());
|
|
106
|
+
return { ok: true, plan: toPlan(raw, await takenNames()) };
|
|
107
|
+
}
|
|
108
|
+
catch (err) {
|
|
109
|
+
return { ok: false, problem: (0, docker_client_1.readableError)(err, (0, docker_client_1.getConnection)().endpoint).message };
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/** De naam van de kopie van een volume: het volume met de nieuwe containernaam erachter. */
|
|
113
|
+
function copiedVolumeName(volume, container) {
|
|
114
|
+
return `${volume}-${container}`;
|
|
115
|
+
}
|
|
116
|
+
/** Maakt de kopie, met eventueel eerst kopieën van volumes, en start hem. Mislukt iets, dan gaat alles weer weg. */
|
|
117
|
+
async function duplicateContainer(id, options) {
|
|
118
|
+
const name = options.name.trim();
|
|
119
|
+
if (!(0, container_rename_1.isContainerName)(name)) {
|
|
120
|
+
return {
|
|
121
|
+
ok: false,
|
|
122
|
+
problem: (0, i18n_1.t)({
|
|
123
|
+
en: 'A container name has at least two characters: a letter or digit, followed by letters, digits, _ . or -.',
|
|
124
|
+
nl: 'Een containernaam heeft minstens twee tekens: een letter of cijfer, gevolgd door letters, cijfers, _ . of -.',
|
|
125
|
+
de: 'Ein Containername hat mindestens zwei Zeichen: einen Buchstaben oder eine Ziffer, gefolgt von Buchstaben, Ziffern, _ . oder -.',
|
|
126
|
+
fr: 'Un nom de conteneur a au moins deux caractères : une lettre ou un chiffre, suivi de lettres, chiffres, _ . ou -.',
|
|
127
|
+
es: 'Un nombre de contenedor tiene al menos dos caracteres: una letra o cifra, seguida de letras, cifras, _ . o -.',
|
|
128
|
+
}),
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
const { docker } = (0, docker_client_1.getConnection)();
|
|
132
|
+
const copied = [];
|
|
133
|
+
let created = null;
|
|
134
|
+
try {
|
|
135
|
+
if ((await takenNames()).has(name)) {
|
|
136
|
+
return {
|
|
137
|
+
ok: false,
|
|
138
|
+
problem: (0, i18n_1.t)({
|
|
139
|
+
en: `There already is a container named ${name}.`,
|
|
140
|
+
nl: `Er is al een container ${name}.`,
|
|
141
|
+
de: `Es gibt bereits einen Container ${name}.`,
|
|
142
|
+
fr: `Un conteneur ${name} existe déjà.`,
|
|
143
|
+
es: `Ya existe un contenedor ${name}.`,
|
|
144
|
+
}),
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
const raw = (await docker.getContainer(id).inspect());
|
|
148
|
+
const renamed = new Map();
|
|
149
|
+
for (const volume of options.copyVolumes) {
|
|
150
|
+
const target = copiedVolumeName(volume, name);
|
|
151
|
+
const result = await (0, volume_copy_1.copyVolume)(volume, target);
|
|
152
|
+
if (!result.ok) {
|
|
153
|
+
await cleanUp(null, copied);
|
|
154
|
+
return result;
|
|
155
|
+
}
|
|
156
|
+
copied.push(target);
|
|
157
|
+
renamed.set(volume, target);
|
|
158
|
+
}
|
|
159
|
+
created = await docker.createContainer(toDuplicateOptions(raw, { ...options, name }, renamed));
|
|
160
|
+
for (const network of extraNetworks(raw)) {
|
|
161
|
+
await docker.getNetwork(network).connect({ Container: created.id });
|
|
162
|
+
}
|
|
163
|
+
await created.start();
|
|
164
|
+
return { ok: true, id: created.id };
|
|
165
|
+
}
|
|
166
|
+
catch (err) {
|
|
167
|
+
await cleanUp(created, copied);
|
|
168
|
+
const problem = (0, docker_client_1.readableError)(err, (0, docker_client_1.getConnection)().endpoint).message;
|
|
169
|
+
// Bij een bezette poort zeggen wie hem heeft, in plaats van Docker's regel over "external connectivity".
|
|
170
|
+
return {
|
|
171
|
+
ok: false,
|
|
172
|
+
problem: await (0, port_conflicts_1.explainPortConflict)(problem, containers_1.listContainers, {
|
|
173
|
+
raw: err instanceof Error ? err.message : String(err),
|
|
174
|
+
lead: () => (0, i18n_1.t)({
|
|
175
|
+
en: `${name} could not start: one of its ports is taken.`,
|
|
176
|
+
nl: `${name} kon niet starten: een van zijn poorten is bezet.`,
|
|
177
|
+
de: `${name} konnte nicht starten: einer seiner Ports ist belegt.`,
|
|
178
|
+
fr: `${name} n’a pas pu démarrer : l’un de ses ports est pris.`,
|
|
179
|
+
es: `${name} no pudo iniciarse: uno de sus puertos está ocupado.`,
|
|
180
|
+
}),
|
|
181
|
+
}),
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/** Een half gemaakte kopie ziet eruit als een kopie; dan liever geen. */
|
|
186
|
+
async function cleanUp(container, volumes) {
|
|
187
|
+
const { docker } = (0, docker_client_1.getConnection)();
|
|
188
|
+
await container?.remove({ force: true }).catch(() => undefined);
|
|
189
|
+
for (const volume of volumes) {
|
|
190
|
+
await docker
|
|
191
|
+
.getVolume(volume)
|
|
192
|
+
.remove()
|
|
193
|
+
.catch(() => undefined);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=container-duplicate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container-duplicate.js","sourceRoot":"","sources":["../electron/container-duplicate.ts"],"names":[],"mappings":"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"}
|