From 79e5c9c431fdee64bc242f830c6b8ffec9827df5 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Wed, 15 Feb 2023 06:46:22 -0800 Subject: [PATCH 01/11] Add bundled extension versions to 'About Lens' (#7163) - Only during non-stable versions Signed-off-by: Sebastian Malton --- .../about-bundled-extensions.injectable.ts | 23 +++++++++++++++++++ .../show-about.injectable.ts | 3 +++ 2 files changed, 26 insertions(+) create mode 100644 packages/core/src/features/application-menu/main/menu-items/special-menu-for-mac-application/show-about-application/about-bundled-extensions.injectable.ts diff --git a/packages/core/src/features/application-menu/main/menu-items/special-menu-for-mac-application/show-about-application/about-bundled-extensions.injectable.ts b/packages/core/src/features/application-menu/main/menu-items/special-menu-for-mac-application/show-about-application/about-bundled-extensions.injectable.ts new file mode 100644 index 0000000000..449ce5f4a8 --- /dev/null +++ b/packages/core/src/features/application-menu/main/menu-items/special-menu-for-mac-application/show-about-application/about-bundled-extensions.injectable.ts @@ -0,0 +1,23 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import { getInjectable } from "@ogre-tools/injectable"; +import { bundledExtensionInjectionToken } from "../../../../../../common/library"; +import buildSemanticVersionInjectable from "../../../../../../common/vars/build-semantic-version.injectable"; + +const aboutBundledExtensionsInjectable = getInjectable({ + id: "about-bundled-extensions", + instantiate: (di) => { + const buildSemanticVersion = di.inject(buildSemanticVersionInjectable); + const bundledExtensions = di.injectMany(bundledExtensionInjectionToken); + + if (buildSemanticVersion.get().prerelease[0] === "latest") { + return []; + } + + return bundledExtensions.map(ext => `${ext.manifest.name}: ${ext.manifest.version}`); + }, +}); + +export default aboutBundledExtensionsInjectable; diff --git a/packages/core/src/features/application-menu/main/menu-items/special-menu-for-mac-application/show-about-application/show-about.injectable.ts b/packages/core/src/features/application-menu/main/menu-items/special-menu-for-mac-application/show-about-application/show-about.injectable.ts index a91e2af337..8bc78ae8c3 100644 --- a/packages/core/src/features/application-menu/main/menu-items/special-menu-for-mac-application/show-about-application/show-about.injectable.ts +++ b/packages/core/src/features/application-menu/main/menu-items/special-menu-for-mac-application/show-about-application/show-about.injectable.ts @@ -10,6 +10,7 @@ import productNameInjectable from "../../../../../../common/vars/product-name.in import buildVersionInjectable from "../../../../../../main/vars/build-version/build-version.injectable"; import extensionApiVersionInjectable from "../../../../../../common/vars/extension-api-version.injectable"; import applicationCopyrightInjectable from "../../../../../../common/vars/application-copyright.injectable"; +import aboutBundledExtensionsInjectable from "./about-bundled-extensions.injectable"; const showAboutInjectable = getInjectable({ id: "show-about", @@ -22,6 +23,7 @@ const showAboutInjectable = getInjectable({ const appName = di.inject(appNameInjectable); const productName = di.inject(productNameInjectable); const applicationCopyright = di.inject(applicationCopyrightInjectable); + const aboutBundledExtensions = di.inject(aboutBundledExtensionsInjectable); return () => { const appInfo = [ @@ -30,6 +32,7 @@ const showAboutInjectable = getInjectable({ `Electron: ${process.versions.electron}`, `Chrome: ${process.versions.chrome}`, `Node: ${process.versions.node}`, + ...aboutBundledExtensions, applicationCopyright, ]; From 78df199a7fb0c50ce3e623a60ac1d9c74202380a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 Feb 2023 12:19:00 -0500 Subject: [PATCH 02/11] Bump sass from 1.58.0 to 1.58.1 (#7158) Bumps [sass](https://github.com/sass/dart-sass) from 1.58.0 to 1.58.1. - [Release notes](https://github.com/sass/dart-sass/releases) - [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md) - [Commits](https://github.com/sass/dart-sass/compare/1.58.0...1.58.1) --- updated-dependencies: - dependency-name: sass dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- packages/core/package.json | 2 +- packages/core/yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 94ef65127c..03cb7ff714 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -310,7 +310,7 @@ "react-table": "^7.8.0", "react-window": "^1.8.8", "rimraf": "^4.1.2", - "sass": "^1.58.0", + "sass": "^1.58.1", "sass-loader": "^12.6.0", "style-loader": "^3.3.1", "tailwindcss": "^3.2.4", diff --git a/packages/core/yarn.lock b/packages/core/yarn.lock index 6a746eae43..38f7012dc4 100644 --- a/packages/core/yarn.lock +++ b/packages/core/yarn.lock @@ -10913,10 +10913,10 @@ sass-loader@^12.6.0: klona "^2.0.4" neo-async "^2.6.2" -sass@^1.32.13, sass@^1.58.0: - version "1.58.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.58.0.tgz#ee8aea3ad5ea5c485c26b3096e2df6087d0bb1cc" - integrity sha512-PiMJcP33DdKtZ/1jSjjqVIKihoDc6yWmYr9K/4r3fVVIEDAluD0q7XZiRKrNJcPK3qkLRF/79DND1H5q1LBjgg== +sass@^1.32.13, sass@^1.58.1: + version "1.58.1" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.58.1.tgz#17ab0390076a50578ed0733f1cc45429e03405f6" + integrity sha512-bnINi6nPXbP1XNRaranMFEBZWUfdW/AF16Ql5+ypRxfTvCRTTKrLsMIakyDcayUt2t/RZotmL4kgJwNH5xO+bg== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" From de6f339fec26b69cf38935270220da9d504b248f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 Feb 2023 12:19:11 -0500 Subject: [PATCH 03/11] Bump esbuild from 0.17.7 to 0.17.8 (#7159) Bumps [esbuild](https://github.com/evanw/esbuild) from 0.17.7 to 0.17.8. - [Release notes](https://github.com/evanw/esbuild/releases) - [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG.md) - [Commits](https://github.com/evanw/esbuild/compare/v0.17.7...v0.17.8) --- updated-dependencies: - dependency-name: esbuild dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- packages/core/package.json | 2 +- packages/core/yarn.lock | 228 ++++++++++++++++++------------------- 2 files changed, 115 insertions(+), 115 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 03cb7ff714..6c952adc4c 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -269,7 +269,7 @@ "electron": "^19.1.9", "electron-builder": "^23.6.0", "electron-notarize": "^0.3.0", - "esbuild": "^0.17.7", + "esbuild": "^0.17.8", "esbuild-loader": "^2.21.0", "eslint": "^8.33.0", "eslint-import-resolver-typescript": "^3.5.3", diff --git a/packages/core/yarn.lock b/packages/core/yarn.lock index 38f7012dc4..fa5cdf3baa 100644 --- a/packages/core/yarn.lock +++ b/packages/core/yarn.lock @@ -587,220 +587,220 @@ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz#cf91e86df127aa3d141744edafcba0abdc577d23" integrity sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg== -"@esbuild/android-arm64@0.17.7": - version "0.17.7" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.7.tgz#7d22b442815624423de5541545401e12a8d474d8" - integrity sha512-fOUBZvcbtbQJIj2K/LMKcjULGfXLV9R4qjXFsi3UuqFhIRJHz0Fp6kFjsMFI6vLuPrfC5G9Dmh+3RZOrSKY2Lg== +"@esbuild/android-arm64@0.17.8": + version "0.17.8" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.8.tgz#b3d5b65a3b2e073a6c7ee36b1f3c30c8f000315b" + integrity sha512-oa/N5j6v1svZQs7EIRPqR8f+Bf8g6HBDjD/xHC02radE/NjKHK7oQmtmLxPs1iVwYyvE+Kolo6lbpfEQ9xnhxQ== "@esbuild/android-arm@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.16.17.tgz#025b6246d3f68b7bbaa97069144fb5fb70f2fff2" integrity sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw== -"@esbuild/android-arm@0.17.7": - version "0.17.7" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.7.tgz#fa30de0cfae8e8416c693dc449c415765542483b" - integrity sha512-Np6Lg8VUiuzHP5XvHU7zfSVPN4ILdiOhxA1GQ1uvCK2T2l3nI8igQV0c9FJx4hTkq8WGqhGEvn5UuRH8jMkExg== +"@esbuild/android-arm@0.17.8": + version "0.17.8" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.8.tgz#c41e496af541e175369d48164d0cf01a5f656cf6" + integrity sha512-0/rb91GYKhrtbeglJXOhAv9RuYimgI8h623TplY2X+vA4EXnk3Zj1fXZreJ0J3OJJu1bwmb0W7g+2cT/d8/l/w== "@esbuild/android-x64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.16.17.tgz#c820e0fef982f99a85c4b8bfdd582835f04cd96e" integrity sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ== -"@esbuild/android-x64@0.17.7": - version "0.17.7" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.7.tgz#34a1af914510ec821246859f8ae7d8fe843dd37b" - integrity sha512-6YILpPvop1rPAvaO/n2iWQL45RyTVTR/1SK7P6Xi2fyu+hpEeX22fE2U2oJd1sfpovUJOWTRdugjddX6QCup3A== +"@esbuild/android-x64@0.17.8": + version "0.17.8" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.8.tgz#080fa67c29be77f5a3ca5ee4cc78d5bf927e3a3b" + integrity sha512-bTliMLqD7pTOoPg4zZkXqCDuzIUguEWLpeqkNfC41ODBHwoUgZ2w5JBeYimv4oP6TDVocoYmEhZrCLQTrH89bg== "@esbuild/darwin-arm64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz#edef4487af6b21afabba7be5132c26d22379b220" integrity sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w== -"@esbuild/darwin-arm64@0.17.7": - version "0.17.7" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.7.tgz#06712059a30a6130eef701fb634883a4aaea02f7" - integrity sha512-7i0gfFsDt1BBiurZz5oZIpzfxqy5QkJmhXdtrf2Hma/gI9vL2AqxHhRBoI1NeWc9IhN1qOzWZrslhiXZweMSFg== +"@esbuild/darwin-arm64@0.17.8": + version "0.17.8" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.8.tgz#053622bf9a82f43d5c075b7818e02618f7b4a397" + integrity sha512-ghAbV3ia2zybEefXRRm7+lx8J/rnupZT0gp9CaGy/3iolEXkJ6LYRq4IpQVI9zR97ID80KJVoUlo3LSeA/sMAg== "@esbuild/darwin-x64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz#42829168730071c41ef0d028d8319eea0e2904b4" integrity sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg== -"@esbuild/darwin-x64@0.17.7": - version "0.17.7" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.7.tgz#58cd69d00d5b9847ad2015858a7ec3f10bf309ad" - integrity sha512-hRvIu3vuVIcv4SJXEKOHVsNssM5tLE2xWdb9ZyJqsgYp+onRa5El3VJ4+WjTbkf/A2FD5wuMIbO2FCTV39LE0w== +"@esbuild/darwin-x64@0.17.8": + version "0.17.8" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.8.tgz#8a1aadb358d537d8efad817bb1a5bff91b84734b" + integrity sha512-n5WOpyvZ9TIdv2V1K3/iIkkJeKmUpKaCTdun9buhGRWfH//osmUjlv4Z5mmWdPWind/VGcVxTHtLfLCOohsOXw== "@esbuild/freebsd-arm64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz#1f4af488bfc7e9ced04207034d398e793b570a27" integrity sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw== -"@esbuild/freebsd-arm64@0.17.7": - version "0.17.7" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.7.tgz#1dd3de24a9683c8321a4e3c42b11b32a48e791d4" - integrity sha512-2NJjeQ9kiabJkVXLM3sHkySqkL1KY8BeyLams3ITyiLW10IwDL0msU5Lq1cULCn9zNxt1Seh1I6QrqyHUvOtQw== +"@esbuild/freebsd-arm64@0.17.8": + version "0.17.8" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.8.tgz#e6738d0081ba0721a5c6c674e84c6e7fcea61989" + integrity sha512-a/SATTaOhPIPFWvHZDoZYgxaZRVHn0/LX1fHLGfZ6C13JqFUZ3K6SMD6/HCtwOQ8HnsNaEeokdiDSFLuizqv5A== "@esbuild/freebsd-x64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz#636306f19e9bc981e06aa1d777302dad8fddaf72" integrity sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug== -"@esbuild/freebsd-x64@0.17.7": - version "0.17.7" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.7.tgz#b0e409e1c7cc05412c8dd149c2c39e0a1dee9567" - integrity sha512-8kSxlbjuLYMoIgvRxPybirHJeW45dflyIgHVs+jzMYJf87QOay1ZUTzKjNL3vqHQjmkSn8p6KDfHVrztn7Rprw== +"@esbuild/freebsd-x64@0.17.8": + version "0.17.8" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.8.tgz#1855e562f2b730f4483f6e94086e9e2597feb4c3" + integrity sha512-xpFJb08dfXr5+rZc4E+ooZmayBW6R3q59daCpKZ/cDU96/kvDM+vkYzNeTJCGd8rtO6fHWMq5Rcv/1cY6p6/0Q== "@esbuild/linux-arm64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz#a003f7ff237c501e095d4f3a09e58fc7b25a4aca" integrity sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g== -"@esbuild/linux-arm64@0.17.7": - version "0.17.7" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.7.tgz#35cfae28e460b96ccc027eccc28b13c0712d6df3" - integrity sha512-43Bbhq3Ia/mGFTCRA4NlY8VRH3dLQltJ4cqzhSfq+cdvdm9nKJXVh4NUkJvdZgEZIkf/ufeMmJ0/22v9btXTcw== +"@esbuild/linux-arm64@0.17.8": + version "0.17.8" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.8.tgz#481da38952721a3fdb77c17a36ceaacc4270b5c5" + integrity sha512-v3iwDQuDljLTxpsqQDl3fl/yihjPAyOguxuloON9kFHYwopeJEf1BkDXODzYyXEI19gisEsQlG1bM65YqKSIww== "@esbuild/linux-arm@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz#b591e6a59d9c4fe0eeadd4874b157ab78cf5f196" integrity sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ== -"@esbuild/linux-arm@0.17.7": - version "0.17.7" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.7.tgz#a378301c253ef64d19a112c9ec922680c2fb5a71" - integrity sha512-07RsAAzznWqdfJC+h3L2UVWwnUHepsFw5GmzySnUspHHb7glJ1+47rvlcH0SeUtoVOs8hF4/THgZbtJRyALaJA== +"@esbuild/linux-arm@0.17.8": + version "0.17.8" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.8.tgz#18127072b270bb6321c6d11be20bfd30e0d6ad17" + integrity sha512-6Ij8gfuGszcEwZpi5jQIJCVIACLS8Tz2chnEBfYjlmMzVsfqBP1iGmHQPp7JSnZg5xxK9tjCc+pJ2WtAmPRFVA== "@esbuild/linux-ia32@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz#24333a11027ef46a18f57019450a5188918e2a54" integrity sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg== -"@esbuild/linux-ia32@0.17.7": - version "0.17.7" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.7.tgz#7d36087db95b1faaee8df203c511775a4d322a2b" - integrity sha512-ViYkfcfnbwOoTS7xE4DvYFv7QOlW8kPBuccc4erJ0jx2mXDPR7e0lYOH9JelotS9qe8uJ0s2i3UjUvjunEp53A== +"@esbuild/linux-ia32@0.17.8": + version "0.17.8" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.8.tgz#ee400af7b3bc69e8ca2e593ca35156ffb9abd54f" + integrity sha512-8svILYKhE5XetuFk/B6raFYIyIqydQi+GngEXJgdPdI7OMKUbSd7uzR02wSY4kb53xBrClLkhH4Xs8P61Q2BaA== "@esbuild/linux-loong64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz#d5ad459d41ed42bbd4d005256b31882ec52227d8" integrity sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ== -"@esbuild/linux-loong64@0.17.7": - version "0.17.7" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.7.tgz#b989253520308d81ee0e4846de9f63f2f11c7f10" - integrity sha512-H1g+AwwcqYQ/Hl/sMcopRcNLY/fysIb/ksDfCa3/kOaHQNhBrLeDYw+88VAFV5U6oJL9GqnmUj72m9Nv3th3hA== +"@esbuild/linux-loong64@0.17.8": + version "0.17.8" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.8.tgz#8c509d8a454693d39824b83b3f66c400872fce82" + integrity sha512-B6FyMeRJeV0NpyEOYlm5qtQfxbdlgmiGdD+QsipzKfFky0K5HW5Td6dyK3L3ypu1eY4kOmo7wW0o94SBqlqBSA== "@esbuild/linux-mips64el@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz#4e5967a665c38360b0a8205594377d4dcf9c3726" integrity sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw== -"@esbuild/linux-mips64el@0.17.7": - version "0.17.7" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.7.tgz#ae751365cdf967dfa89dd59cdb0dcc8723a66f9a" - integrity sha512-MDLGrVbTGYtmldlbcxfeDPdhxttUmWoX3ovk9u6jc8iM+ueBAFlaXKuUMCoyP/zfOJb+KElB61eSdBPSvNcCEg== +"@esbuild/linux-mips64el@0.17.8": + version "0.17.8" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.8.tgz#f2b0d36e63fb26bc3f95b203b6a80638292101ca" + integrity sha512-CCb67RKahNobjm/eeEqeD/oJfJlrWyw29fgiyB6vcgyq97YAf3gCOuP6qMShYSPXgnlZe/i4a8WFHBw6N8bYAA== "@esbuild/linux-ppc64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz#206443a02eb568f9fdf0b438fbd47d26e735afc8" integrity sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g== -"@esbuild/linux-ppc64@0.17.7": - version "0.17.7" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.7.tgz#ad1c9299c463f0409e57166e76e91afb6193ea9f" - integrity sha512-UWtLhRPKzI+v2bKk4j9rBpGyXbLAXLCOeqt1tLVAt1mfagHpFjUzzIHCpPiUfY3x1xY5e45/+BWzGpqqvSglNw== +"@esbuild/linux-ppc64@0.17.8": + version "0.17.8" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.8.tgz#1e628be003e036e90423716028cc884fe5ba25bd" + integrity sha512-bytLJOi55y55+mGSdgwZ5qBm0K9WOCh0rx+vavVPx+gqLLhxtSFU0XbeYy/dsAAD6xECGEv4IQeFILaSS2auXw== "@esbuild/linux-riscv64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz#c351e433d009bf256e798ad048152c8d76da2fc9" integrity sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw== -"@esbuild/linux-riscv64@0.17.7": - version "0.17.7" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.7.tgz#84acb7451bef7458e6067d9c358026ffa1831910" - integrity sha512-3C/RTKqZauUwBYtIQAv7ELTJd+H2dNKPyzwE2ZTbz2RNrNhNHRoeKnG5C++eM6nSZWUCLyyaWfq1v1YRwBS/+A== +"@esbuild/linux-riscv64@0.17.8": + version "0.17.8" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.8.tgz#419a815cb4c3fb9f1b78ef5295f5b48b8bf6427a" + integrity sha512-2YpRyQJmKVBEHSBLa8kBAtbhucaclb6ex4wchfY0Tj3Kg39kpjeJ9vhRU7x4mUpq8ISLXRXH1L0dBYjAeqzZAw== "@esbuild/linux-s390x@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz#661f271e5d59615b84b6801d1c2123ad13d9bd87" integrity sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w== -"@esbuild/linux-s390x@0.17.7": - version "0.17.7" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.7.tgz#0bf23c78c52ea60ae4ea95239b728683a86a7ab8" - integrity sha512-x7cuRSCm998KFZqGEtSo8rI5hXLxWji4znZkBhg2FPF8A8lxLLCsSXe2P5utf0RBQflb3K97dkEH/BJwTqrbDw== +"@esbuild/linux-s390x@0.17.8": + version "0.17.8" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.8.tgz#291c49ae5c3d11d226352755c0835911fe1a9e5c" + integrity sha512-QgbNY/V3IFXvNf11SS6exkpVcX0LJcob+0RWCgV9OiDAmVElnxciHIisoSix9uzYzScPmS6dJFbZULdSAEkQVw== "@esbuild/linux-x64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz#e4ba18e8b149a89c982351443a377c723762b85f" integrity sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw== -"@esbuild/linux-x64@0.17.7": - version "0.17.7" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.7.tgz#932d8c6e1b0d6a57a4e94a8390dfebeebba21dcc" - integrity sha512-1Z2BtWgM0Wc92WWiZR5kZ5eC+IetI++X+nf9NMbUvVymt74fnQqwgM5btlTW7P5uCHfq03u5MWHjIZa4o+TnXQ== +"@esbuild/linux-x64@0.17.8": + version "0.17.8" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.8.tgz#03199d91c76faf80bd54104f5cbf0a489bc39f6a" + integrity sha512-mM/9S0SbAFDBc4OPoyP6SEOo5324LpUxdpeIUUSrSTOfhHU9hEfqRngmKgqILqwx/0DVJBzeNW7HmLEWp9vcOA== "@esbuild/netbsd-x64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz#7d4f4041e30c5c07dd24ffa295c73f06038ec775" integrity sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA== -"@esbuild/netbsd-x64@0.17.7": - version "0.17.7" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.7.tgz#6aa81873c6e08aa419378e07c8d3eed5aa77bf25" - integrity sha512-//VShPN4hgbmkDjYNCZermIhj8ORqoPNmAnwSPqPtBB0xOpHrXMlJhsqLNsgoBm0zi/5tmy//WyL6g81Uq2c6Q== +"@esbuild/netbsd-x64@0.17.8": + version "0.17.8" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.8.tgz#b436d767e1b21852f9ed212e2bb57f77203b0ae2" + integrity sha512-eKUYcWaWTaYr9zbj8GertdVtlt1DTS1gNBWov+iQfWuWyuu59YN6gSEJvFzC5ESJ4kMcKR0uqWThKUn5o8We6Q== "@esbuild/openbsd-x64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz#970fa7f8470681f3e6b1db0cc421a4af8060ec35" integrity sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg== -"@esbuild/openbsd-x64@0.17.7": - version "0.17.7" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.7.tgz#0698f260250a7022e2cae7385cbd09a86eb0967c" - integrity sha512-IQ8BliXHiOsbQEOHzc7mVLIw2UYPpbOXJQ9cK1nClNYQjZthvfiA6rWZMz4BZpVzHZJ+/H2H23cZwRJ1NPYOGg== +"@esbuild/openbsd-x64@0.17.8": + version "0.17.8" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.8.tgz#d1481d8539e21d4729cd04a0450a26c2c8789e89" + integrity sha512-Vc9J4dXOboDyMXKD0eCeW0SIeEzr8K9oTHJU+Ci1mZc5njPfhKAqkRt3B/fUNU7dP+mRyralPu8QUkiaQn7iIg== "@esbuild/sunos-x64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz#abc60e7c4abf8b89fb7a4fe69a1484132238022c" integrity sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw== -"@esbuild/sunos-x64@0.17.7": - version "0.17.7" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.7.tgz#ef97445672deec50e3b3549af2ee6d42fbc04250" - integrity sha512-phO5HvU3SyURmcW6dfQXX4UEkFREUwaoiTgi1xH+CAFKPGsrcG6oDp1U70yQf5lxRKujoSCEIoBr0uFykJzN2g== +"@esbuild/sunos-x64@0.17.8": + version "0.17.8" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.8.tgz#2cfb8126e079b2c00fd1bf095541e9f5c47877e4" + integrity sha512-0xvOTNuPXI7ft1LYUgiaXtpCEjp90RuBBYovdd2lqAFxje4sEucurg30M1WIm03+3jxByd3mfo+VUmPtRSVuOw== "@esbuild/win32-arm64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz#7b0ff9e8c3265537a7a7b1fd9a24e7bd39fcd87a" integrity sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw== -"@esbuild/win32-arm64@0.17.7": - version "0.17.7" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.7.tgz#70865d2332d7883e2e49077770adfe51c51343e3" - integrity sha512-G/cRKlYrwp1B0uvzEdnFPJ3A6zSWjnsRrWivsEW0IEHZk+czv0Bmiwa51RncruHLjQ4fGsvlYPmCmwzmutPzHA== +"@esbuild/win32-arm64@0.17.8": + version "0.17.8" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.8.tgz#7c6ecfd097ca23b82119753bf7072bbaefe51e3a" + integrity sha512-G0JQwUI5WdEFEnYNKzklxtBheCPkuDdu1YrtRrjuQv30WsYbkkoixKxLLv8qhJmNI+ATEWquZe/N0d0rpr55Mg== "@esbuild/win32-ia32@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz#e90fe5267d71a7b7567afdc403dfd198c292eb09" integrity sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig== -"@esbuild/win32-ia32@0.17.7": - version "0.17.7" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.7.tgz#39831b787013c7da7e61c8eb6a9df0fed9bd0fcb" - integrity sha512-/yMNVlMew07NrOflJdRAZcMdUoYTOCPbCHx0eHtg55l87wXeuhvYOPBQy5HLX31Ku+W2XsBD5HnjUjEUsTXJug== +"@esbuild/win32-ia32@0.17.8": + version "0.17.8" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.8.tgz#cffec63c3cb0ef8563a04df4e09fa71056171d00" + integrity sha512-Fqy63515xl20OHGFykjJsMnoIWS+38fqfg88ClvPXyDbLtgXal2DTlhb1TfTX34qWi3u4I7Cq563QcHpqgLx8w== "@esbuild/win32-x64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz#c5a1a4bfe1b57f0c3e61b29883525c6da3e5c091" integrity sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q== -"@esbuild/win32-x64@0.17.7": - version "0.17.7" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.7.tgz#03b231fcfa0702562978979468dfc8b09b55ac59" - integrity sha512-K9/YybM6WZO71x73Iyab6mwieHtHjm9hrPR/a9FBPZmFO3w+fJaM2uu2rt3JYf/rZR24MFwTliI8VSoKKOtYtg== +"@esbuild/win32-x64@0.17.8": + version "0.17.8" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.8.tgz#200a0965cf654ac28b971358ecdca9cc5b44c335" + integrity sha512-1iuezdyDNngPnz8rLRDO2C/ZZ/emJLb72OsZeqQ6gL6Avko/XCXZw+NuxBSNhBAP13Hie418V7VMt9et1FMvpg== "@eslint/eslintrc@^1.4.1": version "1.4.1" @@ -5358,33 +5358,33 @@ esbuild@^0.16.17: "@esbuild/win32-ia32" "0.16.17" "@esbuild/win32-x64" "0.16.17" -esbuild@^0.17.7: - version "0.17.7" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.7.tgz#a7ace55f2bf82fdb1c9013a924620ce2596984fa" - integrity sha512-+5hHlrK108fT6C6/40juy0w4DYKtyZ5NjfBlTccBdsFutR7WBxpIY633JzZJewdsCy8xWA/u2z0MSniIJwufYg== +esbuild@^0.17.8: + version "0.17.8" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.8.tgz#f7f799abc7cdce3f0f2e3e0c01f120d4d55193b4" + integrity sha512-g24ybC3fWhZddZK6R3uD2iF/RIPnRpwJAqLov6ouX3hMbY4+tKolP0VMF3zuIYCaXun+yHwS5IPQ91N2BT191g== optionalDependencies: - "@esbuild/android-arm" "0.17.7" - "@esbuild/android-arm64" "0.17.7" - "@esbuild/android-x64" "0.17.7" - "@esbuild/darwin-arm64" "0.17.7" - "@esbuild/darwin-x64" "0.17.7" - "@esbuild/freebsd-arm64" "0.17.7" - "@esbuild/freebsd-x64" "0.17.7" - "@esbuild/linux-arm" "0.17.7" - "@esbuild/linux-arm64" "0.17.7" - "@esbuild/linux-ia32" "0.17.7" - "@esbuild/linux-loong64" "0.17.7" - "@esbuild/linux-mips64el" "0.17.7" - "@esbuild/linux-ppc64" "0.17.7" - "@esbuild/linux-riscv64" "0.17.7" - "@esbuild/linux-s390x" "0.17.7" - "@esbuild/linux-x64" "0.17.7" - "@esbuild/netbsd-x64" "0.17.7" - "@esbuild/openbsd-x64" "0.17.7" - "@esbuild/sunos-x64" "0.17.7" - "@esbuild/win32-arm64" "0.17.7" - "@esbuild/win32-ia32" "0.17.7" - "@esbuild/win32-x64" "0.17.7" + "@esbuild/android-arm" "0.17.8" + "@esbuild/android-arm64" "0.17.8" + "@esbuild/android-x64" "0.17.8" + "@esbuild/darwin-arm64" "0.17.8" + "@esbuild/darwin-x64" "0.17.8" + "@esbuild/freebsd-arm64" "0.17.8" + "@esbuild/freebsd-x64" "0.17.8" + "@esbuild/linux-arm" "0.17.8" + "@esbuild/linux-arm64" "0.17.8" + "@esbuild/linux-ia32" "0.17.8" + "@esbuild/linux-loong64" "0.17.8" + "@esbuild/linux-mips64el" "0.17.8" + "@esbuild/linux-ppc64" "0.17.8" + "@esbuild/linux-riscv64" "0.17.8" + "@esbuild/linux-s390x" "0.17.8" + "@esbuild/linux-x64" "0.17.8" + "@esbuild/netbsd-x64" "0.17.8" + "@esbuild/openbsd-x64" "0.17.8" + "@esbuild/sunos-x64" "0.17.8" + "@esbuild/win32-arm64" "0.17.8" + "@esbuild/win32-ia32" "0.17.8" + "@esbuild/win32-x64" "0.17.8" escalade@^3.1.1: version "3.1.1" From 54e874f646896c9f22a278cf8d0f58d267fdbbb2 Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 16 Feb 2023 14:48:24 +0200 Subject: [PATCH 04/11] Replication Controllers (new resource view) (#7154) * New resource view: ReplicationController -- scaffolding files Signed-off-by: Roman * fix: inappropriate names after copy-pasting Signed-off-by: Roman * update replication controller api types/spec, fix menu title Signed-off-by: Roman * items list + details list views (added contents from replication controllers), lint fixes Signed-off-by: Roman * allow to scale replication controllers Signed-off-by: Roman * switched for scaling replicas with `Slider` component instead of `Buttons+Input` Signed-off-by: Roman --------- Signed-off-by: Roman --- ...e-to-replication-controllers.injectable.ts | 20 +++ ...replicationcontrollers-route.injectable.ts | 24 +++ .../src/common/k8s-api/endpoints/index.ts | 1 + .../replication-controller.api.injectable.ts | 23 +++ .../endpoints/replication-controller.api.ts | 149 ++++++++++++++++++ packages/core/src/common/rbac.ts | 7 +- .../index.ts | 7 + ...-controllers-route-component.injectable.ts | 24 +++ .../replicationcontroller-details.module.scss | 16 ++ .../replicationcontroller-details.tsx | 122 ++++++++++++++ ...ioncontroller-sidebar-items.injectable.tsx | 39 +++++ .../replicationcontroller-store.injectable.ts | 26 +++ .../replicationcontroller-store.ts | 23 +++ .../replicationcontrollers.module.scss | 8 + .../replicationcontrollers.tsx | 86 ++++++++++ ...ation-controller-detail-item.injectable.ts | 35 ++++ packages/core/src/renderer/utils/rbac.ts | 1 + 17 files changed, 610 insertions(+), 1 deletion(-) create mode 100644 packages/core/src/common/front-end-routing/routes/cluster/workloads/replicationcontrollers/navigate-to-replication-controllers.injectable.ts create mode 100644 packages/core/src/common/front-end-routing/routes/cluster/workloads/replicationcontrollers/replicationcontrollers-route.injectable.ts create mode 100644 packages/core/src/common/k8s-api/endpoints/replication-controller.api.injectable.ts create mode 100644 packages/core/src/common/k8s-api/endpoints/replication-controller.api.ts create mode 100644 packages/core/src/renderer/components/+workloads-replicationcontrollers/index.ts create mode 100644 packages/core/src/renderer/components/+workloads-replicationcontrollers/replication-controllers-route-component.injectable.ts create mode 100644 packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontroller-details.module.scss create mode 100644 packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontroller-details.tsx create mode 100644 packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontroller-sidebar-items.injectable.tsx create mode 100644 packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontroller-store.injectable.ts create mode 100644 packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontroller-store.ts create mode 100644 packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontrollers.module.scss create mode 100644 packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontrollers.tsx create mode 100644 packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/implementations/replication-controller-detail-item.injectable.ts diff --git a/packages/core/src/common/front-end-routing/routes/cluster/workloads/replicationcontrollers/navigate-to-replication-controllers.injectable.ts b/packages/core/src/common/front-end-routing/routes/cluster/workloads/replicationcontrollers/navigate-to-replication-controllers.injectable.ts new file mode 100644 index 0000000000..240ad0f37e --- /dev/null +++ b/packages/core/src/common/front-end-routing/routes/cluster/workloads/replicationcontrollers/navigate-to-replication-controllers.injectable.ts @@ -0,0 +1,20 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import { getInjectable } from "@ogre-tools/injectable"; +import replicationControllersRouteInjectable from "./replicationcontrollers-route.injectable"; +import { navigateToRouteInjectionToken } from "../../../../navigate-to-route-injection-token"; + +const navigateToReplicationControllersInjectable = getInjectable({ + id: "navigate-to-replicationcontrollers", + + instantiate: (di) => { + const navigateToRoute = di.inject(navigateToRouteInjectionToken); + const route = di.inject(replicationControllersRouteInjectable); + + return () => navigateToRoute(route); + }, +}); + +export default navigateToReplicationControllersInjectable; diff --git a/packages/core/src/common/front-end-routing/routes/cluster/workloads/replicationcontrollers/replicationcontrollers-route.injectable.ts b/packages/core/src/common/front-end-routing/routes/cluster/workloads/replicationcontrollers/replicationcontrollers-route.injectable.ts new file mode 100644 index 0000000000..77d87abc96 --- /dev/null +++ b/packages/core/src/common/front-end-routing/routes/cluster/workloads/replicationcontrollers/replicationcontrollers-route.injectable.ts @@ -0,0 +1,24 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import { getInjectable } from "@ogre-tools/injectable"; +import { shouldShowResourceInjectionToken } from "../../../../../cluster-store/allowed-resources-injection-token"; +import { frontEndRouteInjectionToken } from "../../../../front-end-route-injection-token"; + +const replicationControllersRouteInjectable = getInjectable({ + id: "replicationcontrollers-route", + + instantiate: (di) => ({ + path: "/replicationcontrollers", + clusterFrame: true, + isEnabled: di.inject(shouldShowResourceInjectionToken, { + apiName: "replicationcontrollers", + group: "", // core + }), + }), + + injectionToken: frontEndRouteInjectionToken, +}); + +export default replicationControllersRouteInjectable; diff --git a/packages/core/src/common/k8s-api/endpoints/index.ts b/packages/core/src/common/k8s-api/endpoints/index.ts index 0314c6b282..8fb6cbdabd 100644 --- a/packages/core/src/common/k8s-api/endpoints/index.ts +++ b/packages/core/src/common/k8s-api/endpoints/index.ts @@ -33,6 +33,7 @@ export * from "./pod-metrics.api"; export * from "./pod-security-policy.api"; export * from "./priority-class.api"; export * from "./replica-set.api"; +export * from "./replication-controller.api"; export * from "./resource-quota.api"; export * from "./role.api"; export * from "./role-binding.api"; diff --git a/packages/core/src/common/k8s-api/endpoints/replication-controller.api.injectable.ts b/packages/core/src/common/k8s-api/endpoints/replication-controller.api.injectable.ts new file mode 100644 index 0000000000..6d65f446b5 --- /dev/null +++ b/packages/core/src/common/k8s-api/endpoints/replication-controller.api.injectable.ts @@ -0,0 +1,23 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import { getInjectable } from "@ogre-tools/injectable"; +import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token"; +import loggerInjectable from "../../logger.injectable"; +import maybeKubeApiInjectable from "../maybe-kube-api.injectable"; +import { ReplicationControllerApi } from "./replication-controller.api"; + +const replicationControllerApiInjectable = getInjectable({ + id: "replication-controller-api", + instantiate: (di) => { + return new ReplicationControllerApi({ + logger: di.inject(loggerInjectable), + maybeKubeApi: di.inject(maybeKubeApiInjectable), + }); + }, + + injectionToken: kubeApiInjectionToken, +}); + +export default replicationControllerApiInjectable; diff --git a/packages/core/src/common/k8s-api/endpoints/replication-controller.api.ts b/packages/core/src/common/k8s-api/endpoints/replication-controller.api.ts new file mode 100644 index 0000000000..b87b7a81a8 --- /dev/null +++ b/packages/core/src/common/k8s-api/endpoints/replication-controller.api.ts @@ -0,0 +1,149 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api"; +import { KubeApi } from "../kube-api"; +import type { + BaseKubeObjectCondition, KubeObjectMetadata, + KubeObjectStatus, + NamespaceScopedMetadata, +} from "../kube-object"; +import { KubeObject } from "../kube-object"; +import type { PodTemplateSpec } from "./types"; + +export class ReplicationControllerApi extends KubeApi { + constructor(deps: KubeApiDependencies, opts?: DerivedKubeApiOptions) { + super(deps, { + ...opts ?? {}, + objectConstructor: ReplicationController, + }); + } + + protected getScaleApiUrl(params: { namespace: string; name: string }) { + return `${this.formatUrlForNotListing(params)}/scale`; + } + + getScale(params: { namespace: string; name: string }): Promise { + return this.request.get(this.getScaleApiUrl(params)); + } + + scale(params: { namespace: string; name: string }, replicas: number): Promise { + return this.request.patch(this.getScaleApiUrl(params), { + data: { + metadata: params, + spec: { + replicas, + }, + }, + }, { + headers: { + "content-type": "application/strategic-merge-patch+json", + }, + }); + } +} + +export interface Scale { + apiVersion: "autoscaling/v1"; + kind: "Scale"; + metadata: KubeObjectMetadata; + spec: { + replicas: number; + }; + status: { + replicas: number; + selector: string; + }; +} + +export interface ReplicationControllerSpec { + /** + * Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. + * Defaults to 0 (pod will be considered available as soon as it is ready) + */ + minReadySeconds?: number; + /** + * Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. + * Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller + */ + replicas?: number; + /** + * Selector is a label query over pods that should match the Replicas count. If Selector is empty, it is defaulted to the labels present on the Pod template. + * Label keys and values that must match in order to be controlled by this replication controller, if empty defaulted to labels on Pod template. + * More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + */ + selector?: Record; + /** + * Template is the object that describes the pod that will be created if insufficient replicas are detected. This takes precedence over a TemplateRef. + * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template + */ + template: PodTemplateSpec; +} + +export interface ReplicationControllerStatus extends KubeObjectStatus { + /** + * The number of available replicas (ready for at least minReadySeconds) for this replication controller. + */ + availableReplicas: number; + /** + * The number of pods that have labels matching the labels of the pod template of the replication controller. + */ + fullyLabeledReplicas: number; + /** + * ObservedGeneration reflects the generation of the most recently observed replication controller. + */ + observedGeneration: number; + /** + * The number of ready replicas for this replication controller. + */ + readyReplicas: number; + /** + * Replicas is the most recently observed number of replicas. + * More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller + */ + replicas: number; +} + +export class ReplicationController extends KubeObject< + NamespaceScopedMetadata, + ReplicationControllerStatus, + ReplicationControllerSpec +> { + static kind = "ReplicationController"; + static namespaced = true; + static apiBase = "/api/v1/replicationcontrollers"; + + getMinReadySeconds(): number { + return this.spec?.minReadySeconds ?? 0; + } + + getGeneration() { + return this.status?.observedGeneration; + } + + getSelectorLabels(): string[] { + return KubeObject.stringifyLabels(this.spec.selector); + } + + getReplicas(): number | undefined { + return this.status?.replicas; + } + + getDesiredReplicas(): number { + return this.spec?.replicas ?? 0; + } + + getAvailableReplicas(): number | undefined { + return this.status?.availableReplicas; + } + + getLabeledReplicas(): number | undefined { + return this.status?.fullyLabeledReplicas; + } + + getConditions(): BaseKubeObjectCondition[] { + return this.status?.conditions ?? []; + } +} diff --git a/packages/core/src/common/rbac.ts b/packages/core/src/common/rbac.ts index e2ccad3806..03b4fd1de9 100644 --- a/packages/core/src/common/rbac.ts +++ b/packages/core/src/common/rbac.ts @@ -6,7 +6,7 @@ export type KubeResource = "namespaces" | "nodes" | "events" | "resourcequotas" | "services" | "limitranges" | "leases" | "secrets" | "configmaps" | "ingresses" | "ingressclasses" | "networkpolicies" | "persistentvolumeclaims" | "persistentvolumes" | "storageclasses" | - "pods" | "daemonsets" | "deployments" | "statefulsets" | "replicasets" | "jobs" | "cronjobs" | + "pods" | "daemonsets" | "deployments" | "statefulsets" | "replicasets" | "replicationcontrollers" | "jobs" | "cronjobs" | "endpoints" | "customresourcedefinitions" | "horizontalpodautoscalers" | "verticalpodautoscalers" | "podsecuritypolicies" | "poddisruptionbudgets" | "priorityclasses" | "runtimeclasses" | "roles" | "clusterroles" | "rolebindings" | "clusterrolebindings" | "serviceaccounts"; @@ -171,6 +171,11 @@ export const apiResourceRecord: Record = { group: "apps", namespaced: true, }, + replicationcontrollers: { + kind: "ReplicationController", + group: "", // core + namespaced: true, + }, roles: { kind: "Role", group: "rbac.authorization.k8s.io", diff --git a/packages/core/src/renderer/components/+workloads-replicationcontrollers/index.ts b/packages/core/src/renderer/components/+workloads-replicationcontrollers/index.ts new file mode 100644 index 0000000000..5f9390ae2f --- /dev/null +++ b/packages/core/src/renderer/components/+workloads-replicationcontrollers/index.ts @@ -0,0 +1,7 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +export * from "./replicationcontrollers"; +export * from "./replicationcontroller-details"; diff --git a/packages/core/src/renderer/components/+workloads-replicationcontrollers/replication-controllers-route-component.injectable.ts b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replication-controllers-route-component.injectable.ts new file mode 100644 index 0000000000..9049b69076 --- /dev/null +++ b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replication-controllers-route-component.injectable.ts @@ -0,0 +1,24 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import { getInjectable } from "@ogre-tools/injectable"; +import { ReplicationControllers } from "./replicationcontrollers"; +import { + routeSpecificComponentInjectionToken, +} from "../../routes/route-specific-component-injection-token"; +import replicationControllersRouteInjectable + from "../../../common/front-end-routing/routes/cluster/workloads/replicationcontrollers/replicationcontrollers-route.injectable"; + +const replicationControllersRouteComponentInjectable = getInjectable({ + id: "replicationcontroller-route-component", + + instantiate: (di) => ({ + route: di.inject(replicationControllersRouteInjectable), + Component: ReplicationControllers, + }), + + injectionToken: routeSpecificComponentInjectionToken, +}); + +export default replicationControllersRouteComponentInjectable; diff --git a/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontroller-details.module.scss b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontroller-details.module.scss new file mode 100644 index 0000000000..eb1d11143a --- /dev/null +++ b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontroller-details.module.scss @@ -0,0 +1,16 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +.ReplicationControllerDetails { + .replicas { + display: flex; + gap: calc(var(--margin) * 2); + align-items: center; + + > * { + flex-shrink: 0; + } + } +} diff --git a/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontroller-details.tsx b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontroller-details.tsx new file mode 100644 index 0000000000..44032e53ff --- /dev/null +++ b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontroller-details.tsx @@ -0,0 +1,122 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import styles from "./replicationcontroller-details.module.scss"; +import React from "react"; +import { action, makeObservable, observable } from "mobx"; +import { observer } from "mobx-react"; +import { withInjectables } from "@ogre-tools/injectable-react"; +import { DrawerItem, DrawerTitle } from "../drawer"; +import { Badge } from "../badge"; +import type { KubeObjectDetailsProps } from "../kube-object-details"; +import type { + ReplicationController, + ReplicationControllerApi, +} from "../../../common/k8s-api/endpoints"; +import replicationControllerApiInjectable + from "../../../common/k8s-api/endpoints/replication-controller.api.injectable"; +import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable"; +import type { ShowNotification } from "../notifications"; +import { Slider } from "../slider"; + +export interface ReplicationControllerDetailsProps extends KubeObjectDetailsProps { +} + +interface Dependencies { + api: ReplicationControllerApi; + showNotificationError: ShowNotification; +} + +@observer +class NonInjectedReplicationControllerDetails extends React.Component { + @observable sliderReplicasValue = this.props.object.getDesiredReplicas(); + @observable sliderReplicasDisabled = false; + + constructor(props: Props) { + super(props); + makeObservable(this); + } + + @action + async scale(replicas: number) { + const { object: resource, api, showNotificationError } = this.props; + + try { + await api.scale({ + name: resource.getName(), + namespace: resource.getNs(), + }, replicas); + } catch (error) { + this.sliderReplicasValue = resource.getDesiredReplicas(); // rollback to last valid value + showNotificationError(error as Error); + } + } + + @action + async onScaleSliderChangeCommitted(evt: React.FormEvent, replicas: number) { + this.sliderReplicasDisabled = true; + await this.scale(replicas); + this.sliderReplicasDisabled = false; + } + + render() { + const { object: resource } = this.props; + + return ( +
+ + Spec + + +
+
{resource.getDesiredReplicas()}
+
Scale
+ this.sliderReplicasValue = value} + onChangeCommitted={(event, value) => this.onScaleSliderChangeCommitted(event, value as number)} + /> +
+
+ + { + resource.getSelectorLabels().map(label => ()) + } + + + + Status + + + {resource.getReplicas()} + + + {resource.getAvailableReplicas()} + + + {resource.getLabeledReplicas()} + + + {resource.getGeneration()} + + + {`${resource.getMinReadySeconds()} seconds`} + +
+ ); + } +} + +export const ReplicationControllerDetails = withInjectables(NonInjectedReplicationControllerDetails, { + getProps: (di, props) => ({ + ...props, + api: di.inject(replicationControllerApiInjectable), + showNotificationError: di.inject(showErrorNotificationInjectable), + }), +}); diff --git a/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontroller-sidebar-items.injectable.tsx b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontroller-sidebar-items.injectable.tsx new file mode 100644 index 0000000000..670db2fd16 --- /dev/null +++ b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontroller-sidebar-items.injectable.tsx @@ -0,0 +1,39 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import { getInjectable } from "@ogre-tools/injectable"; +import { computed } from "mobx"; +import { workloadsSidebarItemId } from "../+workloads/workloads-sidebar-items.injectable"; +import { sidebarItemsInjectionToken } from "../layout/sidebar-items.injectable"; +import routeIsActiveInjectable from "../../routes/route-is-active.injectable"; +import replicationControllersRouteInjectable + from "../../../common/front-end-routing/routes/cluster/workloads/replicationcontrollers/replicationcontrollers-route.injectable"; +import navigateToReplicationControllersInjectable + from "../../../common/front-end-routing/routes/cluster/workloads/replicationcontrollers/navigate-to-replication-controllers.injectable"; + +const replicationControllerSidebarItemsInjectable = getInjectable({ + id: "replicationctrl-sidebar-items", + + instantiate: (di) => { + const route = di.inject(replicationControllersRouteInjectable); + const navigateToPage = di.inject(navigateToReplicationControllersInjectable); + const routeIsActive = di.inject(routeIsActiveInjectable, route); + + return computed(() => [ + { + id: "replication-controllers", + parentId: workloadsSidebarItemId, + title: "Replication Controllers", + onClick: navigateToPage, + isActive: routeIsActive, + isVisible: route.isEnabled, + orderNumber: 61, + }, + ]); + }, + + injectionToken: sidebarItemsInjectionToken, +}); + +export default replicationControllerSidebarItemsInjectable; diff --git a/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontroller-store.injectable.ts b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontroller-store.injectable.ts new file mode 100644 index 0000000000..5749acf915 --- /dev/null +++ b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontroller-store.injectable.ts @@ -0,0 +1,26 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import { getInjectable } from "@ogre-tools/injectable"; +import { kubeObjectStoreInjectionToken } from "../../../common/k8s-api/api-manager/kube-object-store-token"; +import { ReplicationControllerStore } from "./replicationcontroller-store"; +import clusterFrameContextForNamespacedResourcesInjectable from "../../cluster-frame-context/for-namespaced-resources.injectable"; +import loggerInjectable from "../../../common/logger.injectable"; +import replicationControllerApiInjectable + from "../../../common/k8s-api/endpoints/replication-controller.api.injectable"; + +const replicationControllerStoreInjectable = getInjectable({ + id: "replication-controller-store", + instantiate: (di) => { + const api = di.inject(replicationControllerApiInjectable); + + return new ReplicationControllerStore({ + context: di.inject(clusterFrameContextForNamespacedResourcesInjectable), + logger: di.inject(loggerInjectable), + }, api); + }, + injectionToken: kubeObjectStoreInjectionToken, +}); + +export default replicationControllerStoreInjectable; diff --git a/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontroller-store.ts b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontroller-store.ts new file mode 100644 index 0000000000..9b5243c219 --- /dev/null +++ b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontroller-store.ts @@ -0,0 +1,23 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import type { + ReplicationController, + ReplicationControllerApi, +} from "../../../common/k8s-api/endpoints"; +import type { + KubeObjectStoreDependencies, + KubeObjectStoreOptions, +} from "../../../common/k8s-api/kube-object.store"; +import { KubeObjectStore } from "../../../common/k8s-api/kube-object.store"; + +export interface ReplicationControllerStoreDependencies extends KubeObjectStoreDependencies { +} + +export class ReplicationControllerStore extends KubeObjectStore { + constructor(protected readonly dependencies: ReplicationControllerStoreDependencies, api: ReplicationControllerApi, opts?: KubeObjectStoreOptions) { + super(dependencies, api, opts); + } +} diff --git a/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontrollers.module.scss b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontrollers.module.scss new file mode 100644 index 0000000000..db65602d19 --- /dev/null +++ b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontrollers.module.scss @@ -0,0 +1,8 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +.ReplicationControllers { + +} diff --git a/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontrollers.tsx b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontrollers.tsx new file mode 100644 index 0000000000..00f13feecc --- /dev/null +++ b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontrollers.tsx @@ -0,0 +1,86 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import styles from "./replicationcontrollers.module.scss"; +import React from "react"; +import { observer } from "mobx-react"; +import { KubeObjectListLayout } from "../kube-object-list-layout"; +import { SiblingsInTabLayout } from "../layout/siblings-in-tab-layout"; +import type { ReplicationControllerStore } from "./replicationcontroller-store"; +import { withInjectables } from "@ogre-tools/injectable-react"; +import replicationControllerStoreInjectable from "./replicationcontroller-store.injectable"; +import { NamespaceSelectBadge } from "../+namespaces/namespace-select-badge"; +import { Badge } from "../badge"; + +enum columnId { + name = "name", + namespace = "namespace", + replicas = "replicas", + replicasDesired = "replicasDesired", + selector = "selector", +} + +interface Dependencies { + store: ReplicationControllerStore; +} + +const NonInjectedReplicationControllers = observer((props: Dependencies) => { + return ( + + item.getName(), + [columnId.namespace]: item => item.getNs(), + [columnId.selector]: item => item.getSelectorLabels(), + [columnId.replicas]: item => item.getReplicas(), + [columnId.replicasDesired]: item => item.getDesiredReplicas(), + }} + searchFilters={[ + item => item.getSearchFields(), + item => item.getSelectorLabels(), + ]} + renderHeaderTitle="Replication Controllers" + renderTableHeader={[ + { title: "Name", className: "name", sortBy: columnId.name, id: columnId.name }, + { + title: "Namespace", + className: "namespace", + sortBy: columnId.namespace, + id: columnId.namespace, + }, + { title: "Replicas", sortBy: columnId.replicas, id: columnId.replicas }, + { + title: "Desired Replicas", + sortBy: columnId.replicasDesired, + id: columnId.replicasDesired, + }, + { + title: "Selector", + sortBy: columnId.selector, + id: columnId.selector, + }, + ]} + renderTableContents={item => [ + item.getName(), + , + item.getReplicas(), + item.getDesiredReplicas(), + item.getSelectorLabels().map(label => ()), + ]} + /> + + ); +}); + +export const ReplicationControllers = withInjectables(NonInjectedReplicationControllers, { + getProps: (di, props) => ({ + ...props, + store: di.inject(replicationControllerStoreInjectable), + }), +}); diff --git a/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/implementations/replication-controller-detail-item.injectable.ts b/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/implementations/replication-controller-detail-item.injectable.ts new file mode 100644 index 0000000000..df14d6cc35 --- /dev/null +++ b/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/implementations/replication-controller-detail-item.injectable.ts @@ -0,0 +1,35 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import { getInjectable } from "@ogre-tools/injectable"; +import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token"; +import { computed } from "mobx"; +import { + kubeObjectMatchesToKindAndApiVersion, +} from "../kube-object-matches-to-kind-and-api-version"; +import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; +import { ReplicationControllerDetails } from "../../../+workloads-replicationcontrollers"; + +const replicationControllerDetailItemInjectable = getInjectable({ + id: "replication-controller-detail-item", + + instantiate(di) { + const kubeObject = di.inject(currentKubeObjectInDetailsInjectable); + + return { + Component: ReplicationControllerDetails, + enabled: computed(() => isReplicationController(kubeObject.value.get()?.object)), + orderNumber: 10, + }; + }, + + injectionToken: kubeObjectDetailItemInjectionToken, +}); + +export const isReplicationController = kubeObjectMatchesToKindAndApiVersion( + "ReplicationController", + ["v1"], +); + +export default replicationControllerDetailItemInjectable; diff --git a/packages/core/src/renderer/utils/rbac.ts b/packages/core/src/renderer/utils/rbac.ts index 00135a6492..18748bcfac 100644 --- a/packages/core/src/renderer/utils/rbac.ts +++ b/packages/core/src/renderer/utils/rbac.ts @@ -27,6 +27,7 @@ export const ResourceNames: Record = { "deployments": "Deployments", "statefulsets": "Stateful Sets", "replicasets": "Replica Sets", + "replicationcontrollers": "Replication Controllers", "jobs": "Jobs", "cronjobs": "Cron Jobs", "endpoints": "Endpoints", From 4bf72742fd93b04e3aec7f9864ccce0bd36745b9 Mon Sep 17 00:00:00 2001 From: Janne Savolainen Date: Thu, 16 Feb 2023 14:49:43 +0200 Subject: [PATCH 05/11] Fix configuration shown release details being stale (#7174) Signed-off-by: Janne Savolainen --- ...wing-details-for-helm-release.test.ts.snap | 2086 ++++++++++++++++- .../showing-details-for-helm-release.test.ts | 91 +- .../release-details-content.tsx | 6 +- 3 files changed, 2170 insertions(+), 13 deletions(-) diff --git a/packages/core/src/features/helm-releases/__snapshots__/showing-details-for-helm-release.test.ts.snap b/packages/core/src/features/helm-releases/__snapshots__/showing-details-for-helm-release.test.ts.snap index 86e80acc4c..c36ac69784 100644 --- a/packages/core/src/features/helm-releases/__snapshots__/showing-details-for-helm-release.test.ts.snap +++ b/packages/core/src/features/helm-releases/__snapshots__/showing-details-for-helm-release.test.ts.snap @@ -5818,7 +5818,7 @@ exports[`showing details for helm release given application is started when navi @@ -7100,7 +7100,7 @@ exports[`showing details for helm release given application is started when navi @@ -8382,7 +8382,7 @@ exports[`showing details for helm release given application is started when navi @@ -9469,7 +9469,7 @@ exports[`showing details for helm release given application is started when navi @@ -10557,7 +10557,7 @@ exports[`showing details for helm release given application is started when navi @@ -11840,7 +11840,7 @@ exports[`showing details for helm release given application is started when navi @@ -17047,3 +17047,2077 @@ exports[`showing details for helm release given application is started when navi `; + +exports[`showing details for helm release given application is started when navigating to helm releases when releases resolve when selecting release to see details when opening details for second release when details for second release resolve renders 1`] = ` + +
+
+
+
+
+ +
+ + + close + + +
+ Close +
+
+
+
+
+
+
+
+