From be8e3505108868e94650acd0ea36f966d04e0f7f Mon Sep 17 00:00:00 2001 From: Panu Horsmalahti Date: Thu, 28 Oct 2021 18:46:16 +0300 Subject: [PATCH 01/49] Fix IPC race condition. (#4169) Signed-off-by: Panu Horsmalahti --- src/common/ipc/ipc.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/common/ipc/ipc.ts b/src/common/ipc/ipc.ts index 9ed51b7790..4a8b4f1f8d 100644 --- a/src/common/ipc/ipc.ts +++ b/src/common/ipc/ipc.ts @@ -49,20 +49,20 @@ function getSubFrames(): ClusterFrameInfo[] { } export function broadcastMessage(channel: string, ...args: any[]) { - const views: undefined | ReturnType | ReturnType = (webContents || electronRemote?.webContents)?.getAllWebContents(); - - if (!views || !Array.isArray(views) || views.length === 0) return; - args = args.map(sanitizePayload); - - ipcRenderer?.send(channel, ...args); - ipcMain?.emit(channel, ...args); - const subFramesP = ipcRenderer ? requestMain(subFramesChannel) : Promise.resolve(getSubFrames()); subFramesP .then(subFrames => { + const views: undefined | ReturnType | ReturnType = (webContents || electronRemote?.webContents)?.getAllWebContents(); + + if (!views || !Array.isArray(views) || views.length === 0) return; + args = args.map(sanitizePayload); + + ipcRenderer?.send(channel, ...args); + ipcMain?.emit(channel, ...args); + for (const view of views) { let viewType = "unknown"; From 079976d7039a2228a7c99a55753760c7b143927a Mon Sep 17 00:00:00 2001 From: Juho Heikka Date: Thu, 28 Oct 2021 19:25:59 +0300 Subject: [PATCH 02/49] Use filtered items in finding the default action catalog add button (#4170) --- src/renderer/components/+catalog/catalog-add-button.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/renderer/components/+catalog/catalog-add-button.tsx b/src/renderer/components/+catalog/catalog-add-button.tsx index 558cdca3db..75cbe6ed23 100644 --- a/src/renderer/components/+catalog/catalog-add-button.tsx +++ b/src/renderer/components/+catalog/catalog-add-button.tsx @@ -73,8 +73,9 @@ export class CatalogAddButton extends React.Component { @boundMethod onButtonClick() { - const defaultAction = this.menuItems.find(item => item.defaultAction)?.onClick; - const clickAction = defaultAction || (this.menuItems.length === 1 ? this.menuItems[0].onClick : null); + const filteredItems = this.props.category ? this.props.category.filteredItems(this.menuItems) : []; + const defaultAction = filteredItems.find(item => item.defaultAction)?.onClick; + const clickAction = defaultAction || (filteredItems.length === 1 ? filteredItems[0].onClick : null); clickAction?.(); } From 18e1c76b8fab2574f31102716c9dc8ac10dd0490 Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 28 Oct 2021 19:35:03 +0300 Subject: [PATCH 03/49] Fix: helm chart icon has incorrect size when app's window too small (#4166) --- .../components/+apps-helm-charts/helm-charts.scss | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/renderer/components/+apps-helm-charts/helm-charts.scss b/src/renderer/components/+apps-helm-charts/helm-charts.scss index 0a4c25f1a7..afa998d944 100644 --- a/src/renderer/components/+apps-helm-charts/helm-charts.scss +++ b/src/renderer/components/+apps-helm-charts/helm-charts.scss @@ -37,12 +37,14 @@ } &.icon { - display: flex; - flex-grow: 0.3; + $iconSize: $unit * 3.5; + padding: 0; + display: flex; + flex-grow: 0; + flex-basis: $iconSize; figure { - $iconSize: $unit * 3.5; width: $iconSize; height: $iconSize; border-radius: 50%; From a4ff35b8d2b523d553ae27f65fa4e976174fddb7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 28 Oct 2021 12:35:11 -0400 Subject: [PATCH 04/49] Bump @types/semver from 7.3.8 to 7.3.9 (#4156) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index b78e05cabd..250406a302 100644 --- a/package.json +++ b/package.json @@ -296,7 +296,7 @@ "@types/readable-stream": "^2.3.11", "@types/request": "^2.48.7", "@types/request-promise-native": "^1.0.18", - "@types/semver": "^7.2.0", + "@types/semver": "^7.3.9", "@types/sharp": "^0.29.2", "@types/spdy": "^3.4.4", "@types/tar": "^4.0.5", diff --git a/yarn.lock b/yarn.lock index 8b6d8bb416..b16e446cad 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1831,10 +1831,10 @@ resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== -"@types/semver@^7.2.0", "@types/semver@^7.3.6": - version "7.3.8" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.8.tgz#508a27995498d7586dcecd77c25e289bfaf90c59" - integrity sha512-D/2EJvAlCEtYFEYmmlGwbGXuK886HzyCc3nZX/tkFTQdEU8jZDAgiv08P162yB17y4ZXZoq7yFAnW4GDBb9Now== +"@types/semver@^7.3.6", "@types/semver@^7.3.9": + version "7.3.9" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.9.tgz#152c6c20a7688c30b967ec1841d31ace569863fc" + integrity sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ== "@types/serve-static@*": version "1.13.6" From b7ff8c37cb5b30e030a8b753159b8bba9529b4e2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 28 Oct 2021 12:35:30 -0400 Subject: [PATCH 05/49] Bump mobx-react from 7.2.0 to 7.2.1 (#4162) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 250406a302..b092f132e5 100644 --- a/package.json +++ b/package.json @@ -214,7 +214,7 @@ "md5-file": "^5.0.0", "mobx": "^6.3.0", "mobx-observable-history": "^2.0.1", - "mobx-react": "^7.2.0", + "mobx-react": "^7.2.1", "mock-fs": "^4.14.0", "moment": "^2.29.1", "moment-timezone": "^0.5.33", diff --git a/yarn.lock b/yarn.lock index b16e446cad..fa5740d2a7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9594,10 +9594,10 @@ mobx-react-lite@^3.2.0: resolved "https://registry.yarnpkg.com/mobx-react-lite/-/mobx-react-lite-3.2.0.tgz#331d7365a6b053378dfe9c087315b4e41c5df69f" integrity sha512-q5+UHIqYCOpBoFm/PElDuOhbcatvTllgRp3M1s+Hp5j0Z6XNgDbgqxawJ0ZAUEyKM8X1zs70PCuhAIzX1f4Q/g== -mobx-react@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/mobx-react/-/mobx-react-7.2.0.tgz#241e925e963bb83a31d269f65f9f379e37ecbaeb" - integrity sha512-KHUjZ3HBmZlNnPd1M82jcdVsQRDlfym38zJhZEs33VxyVQTvL77hODCArq6+C1P1k/6erEeo2R7rpE7ZeOL7dg== +mobx-react@^7.2.1: + version "7.2.1" + resolved "https://registry.yarnpkg.com/mobx-react/-/mobx-react-7.2.1.tgz#e9d4c04dc63d05e1139ce773f5fee7a5b4cb7c78" + integrity sha512-LZS99KFLn75VWDXPdRJhILzVQ7qLcRjQbzkK+wVs0Qg4kWw5hOI2USp7tmu+9zP9KYsVBmKyx2k/8cTTBfsymw== dependencies: mobx-react-lite "^3.2.0" From a9b9c87d1fe6103b21402965ee793066f711cf4d Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 28 Oct 2021 20:23:31 +0300 Subject: [PATCH 06/49] Fix: added missing "Upgrade" option in Helm Release menu (#4163) --- .../+apps-releases/release-menu.tsx | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/renderer/components/+apps-releases/release-menu.tsx b/src/renderer/components/+apps-releases/release-menu.tsx index a53298460f..13532c22e4 100644 --- a/src/renderer/components/+apps-releases/release-menu.tsx +++ b/src/renderer/components/+apps-releases/release-menu.tsx @@ -21,7 +21,7 @@ import React from "react"; import type { HelmRelease } from "../../../common/k8s-api/endpoints/helm-releases.api"; -import { boundMethod, cssNames } from "../../utils"; +import { cssNames } from "../../utils"; import { releaseStore } from "./release.store"; import { MenuActions, MenuActionsProps } from "../menu/menu-actions"; import { MenuItem } from "../menu"; @@ -35,23 +35,20 @@ interface Props extends MenuActionsProps { } export class HelmReleaseMenu extends React.Component { - @boundMethod - remove() { + remove = () => { return releaseStore.remove(this.props.release); - } + }; - @boundMethod - upgrade() { + upgrade = () => { const { release, hideDetails } = this.props; createUpgradeChartTab(release); hideDetails?.(); - } + }; - @boundMethod - rollback() { + rollback = () => { ReleaseRollbackDialog.open(this.props.release); - } + }; renderContent() { const { release, toolbar } = this.props; @@ -67,6 +64,10 @@ export class HelmReleaseMenu extends React.Component { Rollback )} + + + Upgrade + ); } From 995d2329fef00cd7b340a8fc79b8a3df0824012c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 28 Oct 2021 14:43:36 -0400 Subject: [PATCH 07/49] Bump sass from 1.43.2 to 1.43.4 (#4165) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index b092f132e5..97e704daeb 100644 --- a/package.json +++ b/package.json @@ -358,7 +358,7 @@ "react-select-event": "^5.1.0", "react-table": "^7.7.0", "react-window": "^1.8.5", - "sass": "^1.43.2", + "sass": "^1.43.4", "sass-loader": "^8.0.2", "sharp": "^0.29.2", "style-loader": "^2.0.0", diff --git a/yarn.lock b/yarn.lock index fa5740d2a7..0e5b2145dd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12248,10 +12248,10 @@ sass-loader@^8.0.2: schema-utils "^2.6.1" semver "^6.3.0" -sass@^1.32.13, sass@^1.43.2: - version "1.43.2" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.43.2.tgz#c02501520c624ad6622529a8b3724eb08da82d65" - integrity sha512-DncYhjl3wBaPMMJR0kIUaH3sF536rVrOcqqVGmTZHQRRzj7LQlyGV7Mb8aCKFyILMr5VsPHwRYtyKpnKYlmQSQ== +sass@^1.32.13, sass@^1.43.4: + version "1.43.4" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.43.4.tgz#68c7d6a1b004bef49af0d9caf750e9b252105d1f" + integrity sha512-/ptG7KE9lxpGSYiXn7Ar+lKOv37xfWsZRtFYal2QHNigyVQDx685VFT/h7ejVr+R8w7H4tmUgtulsKl5YpveOg== dependencies: chokidar ">=3.0.0 <4.0.0" From aeec075a479eaf5b63a900d8a1342c21ea795629 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 28 Oct 2021 16:19:10 -0400 Subject: [PATCH 08/49] Bump react-window from 1.8.5 to 1.8.6 (#4172) Bumps [react-window](https://github.com/bvaughn/react-window) from 1.8.5 to 1.8.6. - [Release notes](https://github.com/bvaughn/react-window/releases) - [Changelog](https://github.com/bvaughn/react-window/blob/master/CHANGELOG.md) - [Commits](https://github.com/bvaughn/react-window/compare/1.8.5...1.8.6) --- updated-dependencies: - dependency-name: react-window 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> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 97e704daeb..b451399fcc 100644 --- a/package.json +++ b/package.json @@ -357,7 +357,7 @@ "react-select": "3.2.0", "react-select-event": "^5.1.0", "react-table": "^7.7.0", - "react-window": "^1.8.5", + "react-window": "^1.8.6", "sass": "^1.43.4", "sass-loader": "^8.0.2", "sharp": "^0.29.2", diff --git a/yarn.lock b/yarn.lock index 0e5b2145dd..19ea12e8bc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11639,10 +11639,10 @@ react-virtualized-auto-sizer@^1.0.6: resolved "https://registry.yarnpkg.com/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.6.tgz#66c5b1c9278064c5ef1699ed40a29c11518f97ca" integrity sha512-7tQ0BmZqfVF6YYEWcIGuoR3OdYe8I/ZFbNclFlGOC3pMqunkYF/oL30NCjSGl9sMEb17AnzixDz98Kqc3N76HQ== -react-window@^1.8.5: - version "1.8.5" - resolved "https://registry.yarnpkg.com/react-window/-/react-window-1.8.5.tgz#a56b39307e79979721021f5d06a67742ecca52d1" - integrity sha512-HeTwlNa37AFa8MDZFZOKcNEkuF2YflA0hpGPiTT9vR7OawEt+GZbfM6wqkBahD3D3pUjIabQYzsnY/BSJbgq6Q== +react-window@^1.8.6: + version "1.8.6" + resolved "https://registry.yarnpkg.com/react-window/-/react-window-1.8.6.tgz#d011950ac643a994118632665aad0c6382e2a112" + integrity sha512-8VwEEYyjz6DCnGBsd+MgkD0KJ2/OXFULyDtorIiTz+QzwoP94tBoA7CnbtyXMm+cCeAUER5KJcPtWl9cpKbOBg== dependencies: "@babel/runtime" "^7.0.0" memoize-one ">=3.1.1 <6" From 860f6e2e6df0c63d5b6d2a509dfcfc2172715e10 Mon Sep 17 00:00:00 2001 From: Panu Horsmalahti Date: Fri, 29 Oct 2021 15:39:20 +0300 Subject: [PATCH 09/49] Revert "Upgrade to Electron@v13.6.0 (#4145)" (#4186) --- .yarnrc | 2 +- package.json | 2 +- yarn.lock | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.yarnrc b/.yarnrc index ef7784e7e3..c7a54a1eda 100644 --- a/.yarnrc +++ b/.yarnrc @@ -1,3 +1,3 @@ disturl "https://atom.io/download/electron" -target "13.6.0" +target "13.5.1" runtime "electron" diff --git a/package.json b/package.json index b451399fcc..9fc5579e91 100644 --- a/package.json +++ b/package.json @@ -319,7 +319,7 @@ "css-loader": "^5.2.7", "deepdash": "^5.3.9", "dompurify": "^2.3.3", - "electron": "13.6.0", + "electron": "^13.5.1", "electron-builder": "^22.11.11", "electron-notarize": "^0.3.0", "esbuild": "^0.13.8", diff --git a/yarn.lock b/yarn.lock index 19ea12e8bc..c61ccbbfb5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5070,10 +5070,10 @@ electron-window-state@^5.0.3: jsonfile "^4.0.0" mkdirp "^0.5.1" -electron@13.6.0: - version "13.6.0" - resolved "https://registry.yarnpkg.com/electron/-/electron-13.6.0.tgz#c61e516f7a087dec711c6fddd945a808cfa115d8" - integrity sha512-VDOUmRwa4eQ+5iXE+XHKXKX+2yk8Ey5uBe3nH9Hj6zNPUBY2S0EOClw7U90Ve2lLHXiQ6DnguNmDgOZKJLcHFQ== +electron@^13.5.1: + version "13.5.1" + resolved "https://registry.yarnpkg.com/electron/-/electron-13.5.1.tgz#76c02c39be228532f886a170b472cbd3d93f0d0f" + integrity sha512-ZyxhIhmdaeE3xiIGObf0zqEyCyuIDqZQBv9NKX8w5FNzGm87j4qR0H1+GQg6vz+cA1Nnv1x175Zvimzc0/UwEQ== dependencies: "@electron/get" "^1.0.1" "@types/node" "^14.6.2" From 8cbb4c29d56baf0e31fb31748c291f6e5b91c4e1 Mon Sep 17 00:00:00 2001 From: Jim Ehrismann <40840436+jim-docker@users.noreply.github.com> Date: Fri, 29 Oct 2021 08:42:42 -0400 Subject: [PATCH 10/49] ensure namespace placeholder reflects what will be saved to local storage (#4176) --- .../+namespaces/namespace-select-filter.tsx | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/renderer/components/+namespaces/namespace-select-filter.tsx b/src/renderer/components/+namespaces/namespace-select-filter.tsx index 436f0a8a80..9ad0c60a4c 100644 --- a/src/renderer/components/+namespaces/namespace-select-filter.tsx +++ b/src/renderer/components/+namespaces/namespace-select-filter.tsx @@ -37,15 +37,15 @@ const Placeholder = observer((props: PlaceholderProps) => { const getPlaceholder = (): React.ReactNode => { const namespaces = namespaceStore.contextNamespaces; - switch (namespaces.length) { - case 0: - case namespaceStore.allowedNamespaces.length: - return <>All namespaces; - case 1: - return <>Namespace: {namespaces[0]}; - default: - return <>Namespaces: {namespaces.join(", ")}; + if (!namespaceStore.selectedNamespaces.length || !namespaces.length) { + return <>All namespaces; } + + if (namespaces.length === 1) { + return <>Namespace: {namespaces[0]}; + } + + return <>Namespaces: {namespaces.join(", ")}; }; return ( @@ -101,9 +101,9 @@ export class NamespaceSelectFilter extends React.Component { return (
- + {namespace} - {isSelected && } + {isSelected && }
); } From 9e2ee009742461da414adda2a0c10f8768fdf20f Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Fri, 29 Oct 2021 08:45:02 -0400 Subject: [PATCH 11/49] Clear up some NamespaceStore.toggleAll and NamespaceStore.hasAllContexts (#4167) --- .../+namespaces/namespace-select-filter.tsx | 5 +-- .../components/+namespaces/namespace.store.ts | 31 ++++++++++++------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/src/renderer/components/+namespaces/namespace-select-filter.tsx b/src/renderer/components/+namespaces/namespace-select-filter.tsx index 9ad0c60a4c..4bcc280cc6 100644 --- a/src/renderer/components/+namespaces/namespace-select-filter.tsx +++ b/src/renderer/components/+namespaces/namespace-select-filter.tsx @@ -121,10 +121,7 @@ export class NamespaceSelectFilter extends React.Component { namespaceStore.toggleSingle(namespace); } } else { - /** - * WARNING: only ever call this method with `false` as an argument - */ - namespaceStore.toggleAll(false); + namespaceStore.selectAll(); } }; diff --git a/src/renderer/components/+namespaces/namespace.store.ts b/src/renderer/components/+namespaces/namespace.store.ts index 54f98702fc..e2a6b5ebf1 100644 --- a/src/renderer/components/+namespaces/namespace.store.ts +++ b/src/renderer/components/+namespaces/namespace.store.ts @@ -148,8 +148,11 @@ export class NamespaceStore extends KubeObjectStore { .every(namespace => this.selectedNamespaces.includes(namespace)); } + /** + * Is `true` if all available namespaces are selected, otherwise `false` + */ @computed get hasAllContexts(): boolean { - return this.selectedNamespaces.length === this.allowedNamespaces.length; + return this.contextNamespaces.length === this.allowedNamespaces.length; } @action @@ -167,17 +170,21 @@ export class NamespaceStore extends KubeObjectStore { this.selectNamespaces(namespace); } - @action - toggleAll(showAll?: boolean) { - if (typeof showAll === "boolean") { - if (showAll) { - this.selectNamespaces(this.allowedNamespaces); - } else { - this.selectNamespaces([]); // empty context considered as "All namespaces" - } - } else { - this.toggleAll(!this.hasAllContexts); - } + /** + * Selects all available namespaces. + * + * Note: If new namespaces appear in the future those will be selected too + */ + selectAll() { + this.selectNamespaces([]); + } + + /** + * @deprecated Use `NamespaceStore.selectAll` instead + */ + toggleAll(selectAll?: boolean) { + void selectAll; + this.selectAll(); } @action From 82162e50217cae4fcb5c130d5cd587126a51d30d Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Fri, 29 Oct 2021 09:43:20 -0400 Subject: [PATCH 12/49] Only listen to CMD+f for on macOS (#4175) --- src/renderer/components/input/search-input.tsx | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/renderer/components/input/search-input.tsx b/src/renderer/components/input/search-input.tsx index 21ba82e493..1f29bc0dae 100644 --- a/src/renderer/components/input/search-input.tsx +++ b/src/renderer/components/input/search-input.tsx @@ -26,6 +26,7 @@ import { observer } from "mobx-react"; import { boundMethod, cssNames } from "../../utils"; import { Icon } from "../icon"; import { Input, InputProps } from "./input"; +import { isMac } from "../../../common/vars"; interface Props extends InputProps { compact?: boolean; // show only search-icon when not focused @@ -38,9 +39,7 @@ const defaultProps: Partial = { autoFocus: true, bindGlobalFocusHotkey: true, showClearIcon: true, - get placeholder() { - return `Search...`; - }, + placeholder: "Search...", }; @observer @@ -60,9 +59,7 @@ export class SearchInput extends React.Component { @boundMethod onGlobalKey(evt: KeyboardEvent) { - const meta = evt.metaKey || evt.ctrlKey; - - if (meta && evt.key === "f") { + if (evt.key === "f" && (isMac ? evt.metaKey : evt.ctrlKey)) { this.inputRef.current.focus(); } } From c84732697c422f46b1aefd59c34dd584b9524a0d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 29 Oct 2021 10:19:09 -0400 Subject: [PATCH 13/49] Bump @testing-library/dom from 8.9.0 to 8.10.1 (#4178) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 25 +++++++++++++++---------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 9fc5579e91..af89f891cd 100644 --- a/package.json +++ b/package.json @@ -255,7 +255,7 @@ "@material-ui/lab": "^4.0.0-alpha.60", "@pmmmwh/react-refresh-webpack-plugin": "^0.4.3", "@sentry/types": "^6.13.3", - "@testing-library/dom": "^8.9.0", + "@testing-library/dom": "^8.10.1", "@testing-library/jest-dom": "^5.14.1", "@testing-library/react": "^11.2.6", "@testing-library/user-event": "^13.5.0", diff --git a/yarn.lock b/yarn.lock index c61ccbbfb5..d5caa2d279 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1132,17 +1132,17 @@ dependencies: defer-to-connect "^2.0.0" -"@testing-library/dom@>=7", "@testing-library/dom@^8.9.0": - version "8.9.0" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.9.0.tgz#608ee6f235688a27f8ee180c0d81ff77a5363d59" - integrity sha512-fhmAYtGpFqzKdPq5aLNn/T396qfhYkttHT/5RytdDNSCzg9K/0F/WXF5iDsNBK1M3ZIQbPy7Y0qm4Kup5bqT/w== +"@testing-library/dom@>=7", "@testing-library/dom@^8.10.1": + version "8.10.1" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.10.1.tgz#e24fed92ad51c619cf304c6f1410b4c76b1000c0" + integrity sha512-rab7vpf1uGig5efWwsCOn9j4/doy+W3VBoUyzX7C4y77u0wAckwc7R8nyH6e2rw0rRzKJR+gWPiAg8zhiFbxWQ== dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.12.5" "@types/aria-query" "^4.2.0" - aria-query "^4.2.2" + aria-query "^5.0.0" chalk "^4.1.0" - dom-accessibility-api "^0.5.6" + dom-accessibility-api "^0.5.9" lz-string "^1.4.4" pretty-format "^27.0.2" @@ -2633,6 +2633,11 @@ aria-query@^4.2.2: "@babel/runtime" "^7.10.2" "@babel/runtime-corejs3" "^7.10.2" +aria-query@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.0.0.tgz#210c21aaf469613ee8c9a62c7f86525e058db52c" + integrity sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg== + arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -4827,10 +4832,10 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dom-accessibility-api@^0.5.4, dom-accessibility-api@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.7.tgz#8c2aa6325968f2933160a0b7dbb380893ddf3e7d" - integrity sha512-ml3lJIq9YjUfM9TUnEPvEYWFSwivwIGBPKpewX7tii7fwCazA8yCioGdqQcNsItPpfFvSJ3VIdMQPj60LJhcQA== +dom-accessibility-api@^0.5.4, dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: + version "0.5.9" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.9.tgz#915f8531ba29a50e5c29389dbfb87a9642fef0d6" + integrity sha512-+KPF4o71fl6NrdnqIrJc6m44NA+Rhf1h7In2MRznejSQasWkjqmHOBUlk+pXJ77cVOSYyZeNHFwn/sjotB6+Sw== dom-converter@^0.2: version "0.2.0" From d6d378bd3f6a03665e876828fd0a0831d2f94c2d Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Fri, 29 Oct 2021 11:39:18 -0400 Subject: [PATCH 14/49] Fix NamespaceSelectFilter (#4187) --- .../+namespaces/namespace-select-filter.tsx | 11 ++- .../components/+namespaces/namespace.store.ts | 75 ++++++++++++++++--- 2 files changed, 71 insertions(+), 15 deletions(-) diff --git a/src/renderer/components/+namespaces/namespace-select-filter.tsx b/src/renderer/components/+namespaces/namespace-select-filter.tsx index 4bcc280cc6..929530aa97 100644 --- a/src/renderer/components/+namespaces/namespace-select-filter.tsx +++ b/src/renderer/components/+namespaces/namespace-select-filter.tsx @@ -37,7 +37,7 @@ const Placeholder = observer((props: PlaceholderProps) => { const getPlaceholder = (): React.ReactNode => { const namespaces = namespaceStore.contextNamespaces; - if (!namespaceStore.selectedNamespaces.length || !namespaces.length) { + if (namespaceStore.areAllSelectedImplicitly || !namespaces.length) { return <>All namespaces; } @@ -60,6 +60,9 @@ export class NamespaceSelectFilter extends React.Component { static isMultiSelection = observable.box(false); static isMenuOpen = observable.box(false); + /** + * Only updated on every open + */ private selected = observable.set(); private didToggle = false; @@ -88,7 +91,7 @@ export class NamespaceSelectFilter extends React.Component { disposeOnUnmount(this, [ reaction(() => this.isMenuOpen, newVal => { if (newVal) { // rising edge of selection - this.selected.replace(namespaceStore.selectedNamespaces); + this.selected.replace(namespaceStore.selectedNames); this.didToggle = false; } }), @@ -116,9 +119,9 @@ export class NamespaceSelectFilter extends React.Component { if (namespace) { if (this.isMultiSelection) { this.didToggle = true; - namespaceStore.toggleContext(namespace); - } else { namespaceStore.toggleSingle(namespace); + } else { + namespaceStore.selectSingle(namespace); } } else { namespaceStore.selectAll(); diff --git a/src/renderer/components/+namespaces/namespace.store.ts b/src/renderer/components/+namespaces/namespace.store.ts index e2a6b5ebf1..b9916a5190 100644 --- a/src/renderer/components/+namespaces/namespace.store.ts +++ b/src/renderer/components/+namespaces/namespace.store.ts @@ -20,7 +20,7 @@ */ import { action, comparer, computed, IReactionDisposer, IReactionOptions, makeObservable, reaction, } from "mobx"; -import { autoBind, createStorage, noop } from "../../utils"; +import { autoBind, createStorage, noop, ToggleSet } from "../../utils"; import { KubeObjectStore, KubeObjectStoreLoadingParams } from "../../../common/k8s-api/kube-object.store"; import { Namespace, namespacesApi } from "../../../common/k8s-api/endpoints/namespaces.api"; import { apiManager } from "../../../common/k8s-api/api-manager"; @@ -78,7 +78,11 @@ export class NamespaceStore extends KubeObjectStore { return []; } - @computed get selectedNamespaces(): string[] { + /** + * @private + * The current value (list of namespaces names) in the storage layer + */ + @computed private get selectedNamespaces(): string[] { return this.storage.get() ?? []; } @@ -89,6 +93,9 @@ export class NamespaceStore extends KubeObjectStore { ].flat())); } + /** + * The list of selected namespace names (for filtering) + */ @computed get contextNamespaces(): string[] { if (!this.selectedNamespaces.length) { return this.allowedNamespaces; // show all namespaces when nothing selected @@ -97,6 +104,23 @@ export class NamespaceStore extends KubeObjectStore { return this.selectedNamespaces; } + /** + * The set of select namespace names (for filtering) + */ + @computed get selectedNames(): Set { + return new Set(this.contextNamespaces); + } + + /** + * Is true when the the set of namespace names selected is implicitly all + * + * Namely, this will be true if the user has deselected all namespaces from + * the filter or if the user has clicked the "All Namespaces" option + */ + @computed get areAllSelectedImplicitly(): boolean { + return this.selectedNamespaces.length === 0; + } + subscribe() { /** * if user has given static list of namespaces let's not start watches @@ -142,10 +166,15 @@ export class NamespaceStore extends KubeObjectStore { } } + /** + * Checks if namespace names are selected for filtering + * @param namespaces One or several names of namespaces to check if they are selected + * @returns `true` if all the provided names are selected + */ hasContext(namespaces: string | string[]): boolean { return [namespaces] .flat() - .every(namespace => this.selectedNamespaces.includes(namespace)); + .every(namespace => this.selectedNames.has(namespace)); } /** @@ -155,19 +184,39 @@ export class NamespaceStore extends KubeObjectStore { return this.contextNamespaces.length === this.allowedNamespaces.length; } + /** + * Acts like `toggleSingle` but can work on several at a time + * @param namespaces One or many names of namespaces to select + */ @action toggleContext(namespaces: string | string[]) { - if (this.hasContext(namespaces)) { - this.clearSelected(namespaces); - } else { - this.selectNamespaces([this.selectedNamespaces, namespaces].flat()); + const nextState = new ToggleSet(this.contextNamespaces); + + for (const namespace of [namespaces].flat()) { + nextState.toggle(namespace); } + + this.storage.set([...nextState]); } - @action + /** + * Toggles the selection state of `namespace`. Namely, if it was previously + * specifically or implicitly selected then after this call it will be + * explicitly deselected. + * @param namespace The name of a namespace + */ toggleSingle(namespace: string){ - this.clearSelected(); - this.selectNamespaces(namespace); + const nextState = new ToggleSet(this.contextNamespaces); + + nextState.toggle(namespace); + this.storage.set([...nextState]); + } + + /** + * Makes the given namespace the sole selected namespace + */ + selectSingle(namespace: string) { + this.storage.set([namespace]); } /** @@ -180,7 +229,11 @@ export class NamespaceStore extends KubeObjectStore { } /** - * @deprecated Use `NamespaceStore.selectAll` instead + * This function selects all namespaces implicitly. + * + * NOTE: does not toggle any namespaces + * @param selectAll NOT USED + * @deprecated Use `NamespaceStore.selectAll` instead. */ toggleAll(selectAll?: boolean) { void selectAll; From 070fc9408f2a560fcd72046eda766d4f4949bbea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 29 Oct 2021 11:47:11 -0400 Subject: [PATCH 15/49] Bump @types/react-router-dom from 5.3.1 to 5.3.2 (#4177) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index af89f891cd..6e1709fb52 100644 --- a/package.json +++ b/package.json @@ -288,7 +288,7 @@ "@types/react": "^17.0.29", "@types/react-beautiful-dnd": "^13.1.2", "@types/react-dom": "^17.0.9", - "@types/react-router-dom": "^5.3.1", + "@types/react-router-dom": "^5.3.2", "@types/react-select": "3.1.2", "@types/react-table": "^7.7.7", "@types/react-virtualized-auto-sizer": "^1.0.1", diff --git a/yarn.lock b/yarn.lock index d5caa2d279..f54c3e7136 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1712,10 +1712,10 @@ hoist-non-react-statics "^3.3.0" redux "^4.0.0" -"@types/react-router-dom@^5.3.1": - version "5.3.1" - resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.3.1.tgz#76700ccce6529413ec723024b71f01fc77a4a980" - integrity sha512-UvyRy73318QI83haXlaMwmklHHzV9hjl3u71MmM6wYNu0hOVk9NLTa0vGukf8zXUqnwz4O06ig876YSPpeK28A== +"@types/react-router-dom@^5.3.2": + version "5.3.2" + resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.3.2.tgz#ebd8e145cf056db5c66eb1dac63c72f52e8542ee" + integrity sha512-ELEYRUie2czuJzaZ5+ziIp9Hhw+juEw8b7C11YNA4QdLCVbQ3qLi2l4aq8XnlqM7V31LZX8dxUuFUCrzHm6sqQ== dependencies: "@types/history" "*" "@types/react" "*" From 02c5e4ba0eee2e84a15a4b241ad5b0835a0dad27 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 29 Oct 2021 11:47:27 -0400 Subject: [PATCH 16/49] Bump @typescript-eslint/parser from 4.29.1 to 4.33.0 (#4173) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Sebastian Malton --- Makefile | 2 +- package.json | 2 +- yarn.lock | 48 +++++++----------------------------------------- 3 files changed, 9 insertions(+), 43 deletions(-) diff --git a/Makefile b/Makefile index 9fdb588215..6763e7e42a 100644 --- a/Makefile +++ b/Makefile @@ -36,7 +36,7 @@ dev: binaries/client build-extensions static/build/LensDev.html yarn dev .PHONY: lint -lint: +lint: node_modules yarn lint .PHONY: tag-release diff --git a/package.json b/package.json index 6e1709fb52..99f67fd95d 100644 --- a/package.json +++ b/package.json @@ -310,7 +310,7 @@ "@types/webpack-env": "^1.16.3", "@types/webpack-node-externals": "^1.7.1", "@typescript-eslint/eslint-plugin": "^4.33.0", - "@typescript-eslint/parser": "^4.29.1", + "@typescript-eslint/parser": "^4.33.0", "ansi_up": "^5.0.1", "chart.js": "^2.9.4", "circular-dependency-plugin": "^5.2.2", diff --git a/yarn.lock b/yarn.lock index f54c3e7136..102d21cea6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2059,24 +2059,16 @@ eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/parser@^4.29.1": - version "4.29.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.29.1.tgz#17dfbb45c9032ffa0fe15881d20fbc2a4bdeb02d" - integrity sha512-3fL5iN20hzX3Q4OkG7QEPFjZV2qsVGiDhEwwh+EkmE/w7oteiOvUNzmpu5eSwGJX/anCryONltJ3WDmAzAoCMg== +"@typescript-eslint/parser@^4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899" + integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA== dependencies: - "@typescript-eslint/scope-manager" "4.29.1" - "@typescript-eslint/types" "4.29.1" - "@typescript-eslint/typescript-estree" "4.29.1" + "@typescript-eslint/scope-manager" "4.33.0" + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/typescript-estree" "4.33.0" debug "^4.3.1" -"@typescript-eslint/scope-manager@4.29.1": - version "4.29.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.29.1.tgz#f25da25bc6512812efa2ce5ebd36619d68e61358" - integrity sha512-Hzv/uZOa9zrD/W5mftZa54Jd5Fed3tL6b4HeaOpwVSabJK8CJ+2MkDasnX/XK4rqP5ZTWngK1ZDeCi6EnxPQ7A== - dependencies: - "@typescript-eslint/types" "4.29.1" - "@typescript-eslint/visitor-keys" "4.29.1" - "@typescript-eslint/scope-manager@4.33.0": version "4.33.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3" @@ -2085,29 +2077,11 @@ "@typescript-eslint/types" "4.33.0" "@typescript-eslint/visitor-keys" "4.33.0" -"@typescript-eslint/types@4.29.1": - version "4.29.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.29.1.tgz#94cce6cf7cc83451df03339cda99d326be2feaf5" - integrity sha512-Jj2yu78IRfw4nlaLtKjVaGaxh/6FhofmQ/j8v3NXmAiKafbIqtAPnKYrf0sbGjKdj0hS316J8WhnGnErbJ4RCA== - "@typescript-eslint/types@4.33.0": version "4.33.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== -"@typescript-eslint/typescript-estree@4.29.1": - version "4.29.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.29.1.tgz#7b32a25ff8e51f2671ccc6b26cdbee3b1e6c5e7f" - integrity sha512-lIkkrR9E4lwZkzPiRDNq0xdC3f2iVCUjw/7WPJ4S2Sl6C3nRWkeE1YXCQ0+KsiaQRbpY16jNaokdWnm9aUIsfw== - dependencies: - "@typescript-eslint/types" "4.29.1" - "@typescript-eslint/visitor-keys" "4.29.1" - debug "^4.3.1" - globby "^11.0.3" - is-glob "^4.0.1" - semver "^7.3.5" - tsutils "^3.21.0" - "@typescript-eslint/typescript-estree@4.33.0": version "4.33.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" @@ -2121,14 +2095,6 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/visitor-keys@4.29.1": - version "4.29.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.29.1.tgz#0615be8b55721f5e854f3ee99f1a714f2d093e5d" - integrity sha512-zLqtjMoXvgdZY/PG6gqA73V8BjqPs4af1v2kiiETBObp+uC6gRYnJLmJHxC0QyUrrHDLJPIWNYxoBV3wbcRlag== - dependencies: - "@typescript-eslint/types" "4.29.1" - eslint-visitor-keys "^2.0.0" - "@typescript-eslint/visitor-keys@4.33.0": version "4.33.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" From 30d475ce57311a734829ab590b41a637e7e66b2e Mon Sep 17 00:00:00 2001 From: Alex Andreev Date: Fri, 29 Oct 2021 18:56:53 +0300 Subject: [PATCH 17/49] Removing @testing-library/dom (#4190) --- package.json | 1 - yarn.lock | 12 ++++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 99f67fd95d..beba697f23 100644 --- a/package.json +++ b/package.json @@ -255,7 +255,6 @@ "@material-ui/lab": "^4.0.0-alpha.60", "@pmmmwh/react-refresh-webpack-plugin": "^0.4.3", "@sentry/types": "^6.13.3", - "@testing-library/dom": "^8.10.1", "@testing-library/jest-dom": "^5.14.1", "@testing-library/react": "^11.2.6", "@testing-library/user-event": "^13.5.0", diff --git a/yarn.lock b/yarn.lock index 102d21cea6..2c3d121137 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1132,17 +1132,17 @@ dependencies: defer-to-connect "^2.0.0" -"@testing-library/dom@>=7", "@testing-library/dom@^8.10.1": - version "8.10.1" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.10.1.tgz#e24fed92ad51c619cf304c6f1410b4c76b1000c0" - integrity sha512-rab7vpf1uGig5efWwsCOn9j4/doy+W3VBoUyzX7C4y77u0wAckwc7R8nyH6e2rw0rRzKJR+gWPiAg8zhiFbxWQ== +"@testing-library/dom@>=7": + version "8.9.0" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.9.0.tgz#608ee6f235688a27f8ee180c0d81ff77a5363d59" + integrity sha512-fhmAYtGpFqzKdPq5aLNn/T396qfhYkttHT/5RytdDNSCzg9K/0F/WXF5iDsNBK1M3ZIQbPy7Y0qm4Kup5bqT/w== dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.12.5" "@types/aria-query" "^4.2.0" - aria-query "^5.0.0" + aria-query "^4.2.2" chalk "^4.1.0" - dom-accessibility-api "^0.5.9" + dom-accessibility-api "^0.5.6" lz-string "^1.4.4" pretty-format "^27.0.2" From fa32402979f0d2f2a59a4ba5f2529da56df9c0aa Mon Sep 17 00:00:00 2001 From: Jim Ehrismann <40840436+jim-docker@users.noreply.github.com> Date: Fri, 29 Oct 2021 14:46:49 -0400 Subject: [PATCH 18/49] release v5.3.0-alpha.7 (#4194) Signed-off-by: Jim Ehrismann --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index beba697f23..f1ce5f3f49 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "productName": "OpenLens", "description": "OpenLens - Open Source IDE for Kubernetes", "homepage": "https://github.com/lensapp/lens", - "version": "5.3.0-alpha.6", + "version": "5.3.0-alpha.7", "main": "static/build/main.js", "copyright": "© 2021 OpenLens Authors", "license": "MIT", From 66e4ad20e525d6e03c917cf8727894b3d0f8765c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 29 Oct 2021 14:48:57 -0400 Subject: [PATCH 19/49] Bump postcss from 8.3.6 to 8.3.11 (#4191) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 37 ++++++++++++++++--------------------- 2 files changed, 17 insertions(+), 22 deletions(-) diff --git a/package.json b/package.json index f1ce5f3f49..fb562c510d 100644 --- a/package.json +++ b/package.json @@ -344,7 +344,7 @@ "node-loader": "^1.0.3", "nodemon": "^2.0.14", "playwright": "^1.15.2", - "postcss": "^8.3.6", + "postcss": "^8.3.11", "postcss-loader": "4.3.0", "postinstall-postinstall": "^2.1.0", "progress-bar-webpack-plugin": "^2.1.0", diff --git a/yarn.lock b/yarn.lock index 2c3d121137..00116fbbb3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2599,11 +2599,6 @@ aria-query@^4.2.2: "@babel/runtime" "^7.10.2" "@babel/runtime-corejs3" "^7.10.2" -aria-query@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.0.0.tgz#210c21aaf469613ee8c9a62c7f86525e058db52c" - integrity sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg== - arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -3836,11 +3831,6 @@ color@^4.0.1: color-convert "^2.0.1" color-string "^1.6.0" -colorette@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" - integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== - colors@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" @@ -4798,7 +4788,7 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dom-accessibility-api@^0.5.4, dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: +dom-accessibility-api@^0.5.4, dom-accessibility-api@^0.5.6: version "0.5.9" resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.9.tgz#915f8531ba29a50e5c29389dbfb87a9642fef0d6" integrity sha512-+KPF4o71fl6NrdnqIrJc6m44NA+Rhf1h7In2MRznejSQasWkjqmHOBUlk+pXJ77cVOSYyZeNHFwn/sjotB6+Sw== @@ -9661,10 +9651,10 @@ nan@^2.12.1, nan@^2.14.0: resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== -nanoid@^3.1.23: - version "3.1.23" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81" - integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== +nanoid@^3.1.30: + version "3.1.30" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362" + integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ== nanomatch@^1.2.9: version "1.2.13" @@ -10836,6 +10826,11 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" @@ -11071,13 +11066,13 @@ postcss@^6.0.14, postcss@^6.0.2: source-map "^0.6.1" supports-color "^5.4.0" -postcss@^8.1.6, postcss@^8.2.1, postcss@^8.2.15, postcss@^8.3.0, postcss@^8.3.6: - version "8.3.6" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.6.tgz#2730dd76a97969f37f53b9a6096197be311cc4ea" - integrity sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A== +postcss@^8.1.6, postcss@^8.2.1, postcss@^8.2.15, postcss@^8.3.0, postcss@^8.3.11: + version "8.3.11" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.11.tgz#c3beca7ea811cd5e1c4a3ec6d2e7599ef1f8f858" + integrity sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA== dependencies: - colorette "^1.2.2" - nanoid "^3.1.23" + nanoid "^3.1.30" + picocolors "^1.0.0" source-map-js "^0.6.2" postinstall-postinstall@^2.1.0: From d975a19e7b89c56d94ac61ac37b105714e8b9e25 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 29 Oct 2021 14:49:05 -0400 Subject: [PATCH 20/49] Bump @types/react from 17.0.29 to 17.0.33 (#4193) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index fb562c510d..e83ad62b69 100644 --- a/package.json +++ b/package.json @@ -284,7 +284,7 @@ "@types/progress-bar-webpack-plugin": "^2.1.2", "@types/proper-lockfile": "^4.1.2", "@types/randomcolor": "^0.5.6", - "@types/react": "^17.0.29", + "@types/react": "^17.0.33", "@types/react-beautiful-dnd": "^13.1.2", "@types/react-dom": "^17.0.9", "@types/react-router-dom": "^5.3.2", diff --git a/yarn.lock b/yarn.lock index 00116fbbb3..da7e7cd220 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1766,10 +1766,10 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^17.0.29": - version "17.0.29" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.29.tgz#9535f3fc01a4981ce9cadcf0daa2593c0c2f2251" - integrity sha512-HSenIfBEBZ70BLrrVhtEtHpqaP79waauPtA8XKlczTxL3hXrW/ElGNLTpD1TmqkykgGlOAK55+D3SmUHEirpFw== +"@types/react@*", "@types/react@^17.0.33": + version "17.0.33" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.33.tgz#e01ae3de7613dac1094569880bb3792732203ad5" + integrity sha512-pLWntxXpDPaU+RTAuSGWGSEL2FRTNyRQOjSWDke/rxRg14ncsZvx8AKWMWZqvc1UOaJIAoObdZhAWvRaHFi5rw== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" From f73ec81cf3d229cacd31ab08ef1ada3d05076476 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Nov 2021 09:05:28 +0200 Subject: [PATCH 21/49] Bump node-fetch from 2.6.5 to 2.6.6 (#4205) Bumps [node-fetch](https://github.com/node-fetch/node-fetch) from 2.6.5 to 2.6.6. - [Release notes](https://github.com/node-fetch/node-fetch/releases) - [Changelog](https://github.com/node-fetch/node-fetch/blob/main/docs/CHANGELOG.md) - [Commits](https://github.com/node-fetch/node-fetch/compare/v2.6.5...v2.6.6) --- updated-dependencies: - dependency-name: node-fetch dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index e83ad62b69..6d5f7d93fe 100644 --- a/package.json +++ b/package.json @@ -219,7 +219,7 @@ "moment": "^2.29.1", "moment-timezone": "^0.5.33", "monaco-editor": "^0.26.1", - "node-fetch": "^2.6.5", + "node-fetch": "^2.6.6", "node-pty": "^0.10.1", "npm": "^6.14.15", "p-limit": "^3.1.0", diff --git a/yarn.lock b/yarn.lock index da7e7cd220..ee80b63955 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9760,10 +9760,10 @@ node-fetch@2.6.1: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== -node-fetch@^2.6.5: - version "2.6.5" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.5.tgz#42735537d7f080a7e5f78b6c549b7146be1742fd" - integrity sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ== +node-fetch@^2.6.6: + version "2.6.6" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.6.tgz#1751a7c01834e8e1697758732e9efb6eeadfaf89" + integrity sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA== dependencies: whatwg-url "^5.0.0" From 6294343b791b3f4b1480a08a2bd9465d312ba797 Mon Sep 17 00:00:00 2001 From: "Patrick J. McNerthney" Date: Sun, 31 Oct 2021 22:21:13 -1000 Subject: [PATCH 22/49] Fix the broken ingress metrics, the namespace is needed in the opts. (#4203) Signed-off-by: Patrick J McNerthney --- src/common/k8s-api/endpoints/ingress.api.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/k8s-api/endpoints/ingress.api.ts b/src/common/k8s-api/endpoints/ingress.api.ts index 5a1a404f20..cf607fa144 100644 --- a/src/common/k8s-api/endpoints/ingress.api.ts +++ b/src/common/k8s-api/endpoints/ingress.api.ts @@ -30,7 +30,7 @@ export class IngressApi extends KubeApi { } export function getMetricsForIngress(ingress: string, namespace: string): Promise { - const opts = { category: "ingress", ingress }; + const opts = { category: "ingress", ingress, namespace }; return metricsApi.getMetrics({ bytesSentSuccess: opts, From c7e38052fcfb597258b6420f1c6a7f55a2712778 Mon Sep 17 00:00:00 2001 From: Alex Andreev Date: Mon, 1 Nov 2021 12:36:55 +0300 Subject: [PATCH 23/49] Fix visibility (#4208) * Removing tailwind base and components styles Signed-off-by: Alex Andreev * Fix link coloring in few places Signed-off-by: Alex Andreev --- src/renderer/components/+add-cluster/add-cluster.scss | 4 ++++ src/renderer/components/+add-cluster/add-cluster.tsx | 4 ++-- src/renderer/components/app.scss | 2 -- src/renderer/components/error-boundary/error-boundary.scss | 4 ++++ 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/renderer/components/+add-cluster/add-cluster.scss b/src/renderer/components/+add-cluster/add-cluster.scss index faac757c40..2ede9dc271 100644 --- a/src/renderer/components/+add-cluster/add-cluster.scss +++ b/src/renderer/components/+add-cluster/add-cluster.scss @@ -50,4 +50,8 @@ display: block; padding-top: 6px; } + + a[href] { + color: var(--colorInfo); + } } diff --git a/src/renderer/components/+add-cluster/add-cluster.tsx b/src/renderer/components/+add-cluster/add-cluster.tsx index 81a75019fa..3c3562edbe 100644 --- a/src/renderer/components/+add-cluster/add-cluster.tsx +++ b/src/renderer/components/+add-cluster/add-cluster.tsx @@ -119,8 +119,8 @@ export class AddCluster extends React.Component {

Add Clusters from Kubeconfig

- Clusters added here are not merged into the ~/.kube/config file. - Read more about adding clusters here. + Clusters added here are not merged into the ~/.kube/config file.{" "} + Read more about adding clusters.

Date: Mon, 1 Nov 2021 07:23:29 -0400 Subject: [PATCH 24/49] Use spec.serviceName as an externalIP if nothing else (#4188) * Use spec.serviceName as an externalIP if nothing else Signed-off-by: Sebastian Malton * Move using externalName to display logic Signed-off-by: Sebastian Malton --- src/common/k8s-api/endpoints/service.api.ts | 10 ++++-- .../+network-services/service-details.tsx | 9 ++++-- .../components/+network-services/services.tsx | 32 ++++++++++++------- 3 files changed, 34 insertions(+), 17 deletions(-) diff --git a/src/common/k8s-api/endpoints/service.api.ts b/src/common/k8s-api/endpoints/service.api.ts index e5af9de828..f78d8e6be8 100644 --- a/src/common/k8s-api/endpoints/service.api.ts +++ b/src/common/k8s-api/endpoints/service.api.ts @@ -53,7 +53,7 @@ export interface Service { clusterIP: string; clusterIPs?: string[]; externalTrafficPolicy?: string; - externalName: string; + externalName?: string; loadBalancerIP?: string; loadBalancerSourceRanges?: string[]; sessionAffinity: string; @@ -100,11 +100,15 @@ export class Service extends KubeObject { getExternalIps() { const lb = this.getLoadBalancer(); - if (lb && lb.ingress) { + if (lb?.ingress) { return lb.ingress.map(val => val.ip || val.hostname); } - return this.spec.externalIPs || []; + if (Array.isArray(this.spec?.externalIPs)) { + return this.spec.externalIPs; + } + + return []; } getType() { diff --git a/src/renderer/components/+network-services/service-details.tsx b/src/renderer/components/+network-services/service-details.tsx index 5948765089..d247e7908c 100644 --- a/src/renderer/components/+network-services/service-details.tsx +++ b/src/renderer/components/+network-services/service-details.tsx @@ -67,6 +67,11 @@ export class ServiceDetails extends React.Component { const { spec } = service; const endpoint = endpointStore.getByName(service.getName(), service.getNs()); + const externalIps = service.getExternalIps(); + + if (externalIps.length === 0 && spec?.externalName) { + externalIps.push(spec.externalName); + } return (
@@ -106,9 +111,9 @@ export class ServiceDetails extends React.Component { {service.getIpFamilyPolicy()} - {service.getExternalIps().length > 0 && ( + {externalIps.length > 0 && ( - {service.getExternalIps().map(ip =>
{ip}
)} + {externalIps.map(ip =>
{ip}
)}
)} diff --git a/src/renderer/components/+network-services/services.tsx b/src/renderer/components/+network-services/services.tsx index fe3b2b40ab..e29cc737cd 100644 --- a/src/renderer/components/+network-services/services.tsx +++ b/src/renderer/components/+network-services/services.tsx @@ -81,18 +81,26 @@ export class Services extends React.Component { { title: "Age", className: "age", sortBy: columnId.age, id: columnId.age }, { title: "Status", className: "status", sortBy: columnId.status, id: columnId.status }, ]} - renderTableContents={service => [ - service.getName(), - , - service.getNs(), - service.getType(), - service.getClusterIp(), - service.getPorts().join(", "), - service.getExternalIps().join(", ") || "-", - service.getSelector().map(label => ), - service.getAge(), - { title: service.getStatus(), className: service.getStatus().toLowerCase() }, - ]} + renderTableContents={service => { + const externalIps = service.getExternalIps(); + + if (externalIps.length === 0 && service.spec?.externalName) { + externalIps.push(service.spec.externalName); + } + + return [ + service.getName(), + , + service.getNs(), + service.getType(), + service.getClusterIp(), + service.getPorts().join(", "), + externalIps.join(", ") || "-", + service.getSelector().map(label => ), + service.getAge(), + { title: service.getStatus(), className: service.getStatus().toLowerCase() }, + ]; + }} /> ); } From 30170163a65dffbb806b31c25197d37a282ec758 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Nov 2021 08:37:09 -0400 Subject: [PATCH 25/49] Bump xterm from 4.12.0 to 4.14.1 (#4206) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 6d5f7d93fe..f290be6867 100644 --- a/package.json +++ b/package.json @@ -378,7 +378,7 @@ "webpack-dev-server": "^3.11.2", "webpack-node-externals": "^1.7.2", "what-input": "^5.2.10", - "xterm": "^4.12.0", + "xterm": "^4.14.1", "xterm-addon-fit": "^0.5.0" } } diff --git a/yarn.lock b/yarn.lock index ee80b63955..d3d815007b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14641,10 +14641,10 @@ xterm-addon-fit@^0.5.0: resolved "https://registry.yarnpkg.com/xterm-addon-fit/-/xterm-addon-fit-0.5.0.tgz#2d51b983b786a97dcd6cde805e700c7f913bc596" integrity sha512-DsS9fqhXHacEmsPxBJZvfj2la30Iz9xk+UKjhQgnYNkrUIN5CYLbw7WEfz117c7+S86S/tpHPfvNxJsF5/G8wQ== -xterm@^4.12.0: - version "4.12.0" - resolved "https://registry.yarnpkg.com/xterm/-/xterm-4.12.0.tgz#db09b425b4dcae5b96f8cbbaaa93b3bc60997ca9" - integrity sha512-K5mF/p3txUV18mjiZFlElagoHFpqXrm5OYHeoymeXSu8GG/nMaOO/+NRcNCwfdjzAbdQ5VLF32hEHiWWKKm0bw== +xterm@^4.14.1: + version "4.14.1" + resolved "https://registry.yarnpkg.com/xterm/-/xterm-4.14.1.tgz#6884cb8fb3b83353b1a98139ea23daedf8e35796" + integrity sha512-jgzNg5BuGPwq5/M4dGnmbghZvHx2jaj+9crSEt15bV34Za49VziBmCu7zIy88zUKKiGTxeo7aVzirFSJArIMFw== y18n@^3.2.1: version "3.2.2" From c6dab62e9972a644f8dbd75ae444ea06fd80834f Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Mon, 1 Nov 2021 08:37:29 -0400 Subject: [PATCH 26/49] Lint: no-template-curly-in-string (error) (#4196) --- .eslintrc.js | 9 ++++++--- src/main/kubectl.ts | 22 +++++++++++----------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 1426f74e7f..e013a19bf8 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -85,7 +85,8 @@ module.exports = { { "blankLine": "always", "prev": "*", "next": "class" }, { "blankLine": "always", "prev": ["const", "let", "var"], "next": "*" }, { "blankLine": "any", "prev": ["const", "let", "var"], "next": ["const", "let", "var"]}, - ] + ], + "no-template-curly-in-string": "error", } }, { @@ -146,7 +147,8 @@ module.exports = { { "blankLine": "always", "prev": "*", "next": "class" }, { "blankLine": "always", "prev": ["const", "let", "var"], "next": "*" }, { "blankLine": "any", "prev": ["const", "let", "var"], "next": ["const", "let", "var"]}, - ] + ], + "no-template-curly-in-string": "error", }, }, { @@ -216,7 +218,8 @@ module.exports = { { "blankLine": "any", "prev": ["const", "let", "var"], "next": ["const", "let", "var"]}, ], "react-hooks/rules-of-hooks": "error", - "react-hooks/exhaustive-deps": "off" + "react-hooks/exhaustive-deps": "off", + "no-template-curly-in-string": "error", }, } ] diff --git a/src/main/kubectl.ts b/src/main/kubectl.ts index c68e00b2dd..9454ec33fd 100644 --- a/src/main/kubectl.ts +++ b/src/main/kubectl.ts @@ -346,10 +346,10 @@ export class Kubectl { bashScript += `export PATH="${helmPath}:${kubectlPath}:$PATH"\n`; bashScript += "export KUBECONFIG=\"$tempkubeconfig\"\n"; - bashScript += "NO_PROXY=\",${NO_PROXY:-localhost},\"\n"; - bashScript += "NO_PROXY=\"${NO_PROXY//,localhost,/,}\"\n"; - bashScript += "NO_PROXY=\"${NO_PROXY//,127.0.0.1,/,}\"\n"; - bashScript += "NO_PROXY=\"localhost,127.0.0.1${NO_PROXY%,}\"\n"; + bashScript += `NO_PROXY=\",\${NO_PROXY:-localhost},\"\n`; + bashScript += `NO_PROXY=\"\${NO_PROXY//,localhost,/,}\"\n`; + bashScript += `NO_PROXY=\"\${NO_PROXY//,127.0.0.1,/,}\"\n`; + bashScript += `NO_PROXY=\"localhost,127.0.0.1\${NO_PROXY%,}\"\n`; bashScript += "export NO_PROXY\n"; bashScript += "unset tempkubeconfig\n"; await fsPromises.writeFile(bashScriptPath, bashScript.toString(), { mode: 0o644 }); @@ -371,14 +371,14 @@ export class Kubectl { zshScript += `helmpath=\"${helmPath}"\n`; zshScript += "p=\":$kubectlpath:\"\n"; zshScript += "d=\":$PATH:\"\n"; - zshScript += "d=${d//$p/:}\n"; - zshScript += "d=${d/#:/}\n"; - zshScript += "export PATH=\"$helmpath:$kubectlpath:${d/%:/}\"\n"; + zshScript += `d=\${d//$p/:}\n`; + zshScript += `d=\${d/#:/}\n`; + zshScript += `export PATH=\"$helmpath:$kubectlpath:\${d/%:/}\"\n`; zshScript += "export KUBECONFIG=\"$tempkubeconfig\"\n"; - zshScript += "NO_PROXY=\",${NO_PROXY:-localhost},\"\n"; - zshScript += "NO_PROXY=\"${NO_PROXY//,localhost,/,}\"\n"; - zshScript += "NO_PROXY=\"${NO_PROXY//,127.0.0.1,/,}\"\n"; - zshScript += "NO_PROXY=\"localhost,127.0.0.1${NO_PROXY%,}\"\n"; + zshScript += `NO_PROXY=\",\${NO_PROXY:-localhost},\"\n`; + zshScript += `NO_PROXY=\"\${NO_PROXY//,localhost,/,}\"\n`; + zshScript += `NO_PROXY=\"\${NO_PROXY//,127.0.0.1,/,}\"\n`; + zshScript += `NO_PROXY=\"localhost,127.0.0.1\${NO_PROXY%,}\"\n`; zshScript += "export NO_PROXY\n"; zshScript += "unset tempkubeconfig\n"; zshScript += "unset OLD_ZDOTDIR\n"; From e74f17e8ceb556b7b8deb92ba73b6bf4441e5c1f Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Mon, 1 Nov 2021 08:37:37 -0400 Subject: [PATCH 27/49] Lint: no-unused-expressions (error) (#4197) --- .eslintrc.js | 5 +++ src/common/getTSLoader.ts | 12 +++--- .../+catalog/hotbar-toggle-menu-item.tsx | 11 ++++-- .../components/+preferences/editor.tsx | 21 +++++++---- .../deployment-scale-dialog.tsx | 6 ++- .../+workloads-pods/pod-container-env.tsx | 37 ++++++++----------- .../replicaset-scale-dialog.tsx | 6 ++- .../statefulset-scale-dialog.tsx | 6 ++- src/renderer/components/menu/menu.tsx | 25 +++++++++++-- 9 files changed, 79 insertions(+), 50 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index e013a19bf8..8351d1b973 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -77,6 +77,7 @@ module.exports = { "object-shorthand": "error", "prefer-template": "error", "template-curly-spacing": "error", + "no-unused-expressions": "error", "padding-line-between-statements": [ "error", { "blankLine": "always", "prev": "*", "next": "return" }, @@ -139,6 +140,8 @@ module.exports = { "object-shorthand": "error", "prefer-template": "error", "template-curly-spacing": "error", + "no-unused-expressions": "off", + "@typescript-eslint/no-unused-expressions": "error", "padding-line-between-statements": [ "error", { "blankLine": "always", "prev": "*", "next": "return" }, @@ -208,6 +211,8 @@ module.exports = { "object-shorthand": "error", "prefer-template": "error", "template-curly-spacing": "error", + "no-unused-expressions": "off", + "@typescript-eslint/no-unused-expressions": "error", "padding-line-between-statements": [ "error", { "blankLine": "always", "prev": "*", "next": "return" }, diff --git a/src/common/getTSLoader.ts b/src/common/getTSLoader.ts index 6c76770d5d..242b134adb 100644 --- a/src/common/getTSLoader.ts +++ b/src/common/getTSLoader.ts @@ -23,20 +23,18 @@ import esbuild from "esbuild"; /** * A function returning webpack ts/tsx loader - * + * * depends on env LENS_DEV_USE_ESBUILD_LOADER to use esbuild-loader (faster) or good-old ts-loader - * - * @param testRegExp - the regex for webpack to conditional find the files + * + * @param testRegExp - the regex for webpack to conditional find the files * @returns ts/tsx webpack loader configuration object */ const getTSLoader = ( testRegExp: RegExp, transpileOnly = true ) => { - const useEsbuildLoader = process.env.LENS_DEV_USE_ESBUILD_LOADER === "true"; + if (process.env.LENS_DEV_USE_ESBUILD_LOADER === "true") { + console.info(`\n🚀 using esbuild-loader for ts(x)`); - useEsbuildLoader && console.info(`\n🚀 using esbuild-loader for ts(x)`); - - if (useEsbuildLoader) { return { test: testRegExp, loader: "esbuild-loader", diff --git a/src/renderer/components/+catalog/hotbar-toggle-menu-item.tsx b/src/renderer/components/+catalog/hotbar-toggle-menu-item.tsx index 00f6f3600f..da89ff3f26 100644 --- a/src/renderer/components/+catalog/hotbar-toggle-menu-item.tsx +++ b/src/renderer/components/+catalog/hotbar-toggle-menu-item.tsx @@ -27,14 +27,17 @@ import type { CatalogEntity } from "../../api/catalog-entity"; export function HotbarToggleMenuItem(props: { entity: CatalogEntity, addContent: ReactNode, removeContent: ReactNode }) { const store = HotbarStore.getInstance(); - const add = () => store.addToHotbar(props.entity); - const remove = () => store.removeFromHotbar(props.entity.getId()); const [itemInHotbar, setItemInHotbar] = useState(store.isAddedToActive(props.entity)); return ( { - itemInHotbar ? remove() : add(); - setItemInHotbar(!itemInHotbar); + if (itemInHotbar) { + store.removeFromHotbar(props.entity.getId()); + setItemInHotbar(false); + } else { + store.addToHotbar(props.entity); + setItemInHotbar(true); + } }}> {itemInHotbar ? props.removeContent : props.addContent } diff --git a/src/renderer/components/+preferences/editor.tsx b/src/renderer/components/+preferences/editor.tsx index 707bb14428..77adac50a7 100644 --- a/src/renderer/components/+preferences/editor.tsx +++ b/src/renderer/components/+preferences/editor.tsx @@ -35,6 +35,7 @@ enum EditorLineNumbersStyles { } export const Editor = observer(() => { + const userStore = UserStore.getInstance(); return (
@@ -43,8 +44,8 @@ export const Editor = observer(() => { UserStore.getInstance().enableEditorMinimap(v.target.checked)} + checked={userStore.editorConfiguration.miniMap.enabled} + onChange={v => userStore.enableEditorMinimap(v.target.checked)} name="minimap" /> } @@ -55,8 +56,8 @@ export const Editor = observer(() => { ({label: entry[1], value: entry[0]}))} + options={Object.entries(EditorLineNumbersStyles).map(entry => ({ label: entry[1], value: entry[0] }))} value={userStore.editorConfiguration?.lineNumbers} onChange={({ value }: SelectOption) => userStore.setEditorLineNumbers(value)} themeName="lens" diff --git a/src/renderer/components/+preferences/kubeconfig-syncs.tsx b/src/renderer/components/+preferences/kubeconfig-syncs.tsx index 35b3d88b04..e517494f04 100644 --- a/src/renderer/components/+preferences/kubeconfig-syncs.tsx +++ b/src/renderer/components/+preferences/kubeconfig-syncs.tsx @@ -46,7 +46,7 @@ interface Value { info: SyncInfo; } -async function getMapEntry({ filePath, ...data}: KubeconfigSyncEntry): Promise<[string, Value]> { +async function getMapEntry({ filePath, ...data }: KubeconfigSyncEntry): Promise<[string, Value]> { try { // stat follows the stat(2) linux syscall spec, namely it follows symlinks const stats = await fse.stat(filePath); diff --git a/src/renderer/components/+preferences/preferences.tsx b/src/renderer/components/+preferences/preferences.tsx index 2abed711e6..2b1a536b9f 100644 --- a/src/renderer/components/+preferences/preferences.tsx +++ b/src/renderer/components/+preferences/preferences.tsx @@ -106,7 +106,7 @@ export class Preferences extends React.Component { } } -export function ExtensionSettings({ title, id, components: { Hint, Input } }: RegisteredAppPreference) { +export function ExtensionSettings({ title, id, components: { Hint, Input }}: RegisteredAppPreference) { return (
diff --git a/src/renderer/components/+preferences/removable-item.tsx b/src/renderer/components/+preferences/removable-item.tsx index 19164746fa..131974f4d1 100644 --- a/src/renderer/components/+preferences/removable-item.tsx +++ b/src/renderer/components/+preferences/removable-item.tsx @@ -31,7 +31,7 @@ interface Props extends DOMAttributes{ className?: string; } -export function RemovableItem({icon, onRemove, children, className, ...rest}: Props) { +export function RemovableItem({ icon, onRemove, children, className, ...rest }: Props) { return (
{icon && ( diff --git a/src/renderer/components/+workloads-deployments/deployment-scale-dialog.test.tsx b/src/renderer/components/+workloads-deployments/deployment-scale-dialog.test.tsx index 3bc22b8263..2c6d3d9592 100644 --- a/src/renderer/components/+workloads-deployments/deployment-scale-dialog.test.tsx +++ b/src/renderer/components/+workloads-deployments/deployment-scale-dialog.test.tsx @@ -39,7 +39,7 @@ const dummyDeployment: Deployment = { selfLink: "link", spec: { replicas: 1, - selector: { matchLabels: { dummy: "label" } }, + selector: { matchLabels: { dummy: "label" }}, template: { metadata: { labels: { dummy: "label" }, diff --git a/src/renderer/components/+workloads-pods/pod-details-affinities.tsx b/src/renderer/components/+workloads-pods/pod-details-affinities.tsx index dee24f5056..3dfcca76cb 100644 --- a/src/renderer/components/+workloads-pods/pod-details-affinities.tsx +++ b/src/renderer/components/+workloads-pods/pod-details-affinities.tsx @@ -46,7 +46,7 @@ export class PodDetailsAffinities extends React.Component {
{ GlobalPageRegistry.getInstance().getItems() - .map(({ url, components: { Page } }) => ( + .map(({ url, components: { Page }}) => ( )) } diff --git a/src/renderer/components/cluster-settings/cluster-settings.tsx b/src/renderer/components/cluster-settings/cluster-settings.tsx index ce9822b26c..6c35c1bbc8 100644 --- a/src/renderer/components/cluster-settings/cluster-settings.tsx +++ b/src/renderer/components/cluster-settings/cluster-settings.tsx @@ -119,7 +119,7 @@ export function MetricsSettings({ entity }: EntitySettingViewProps) { ); } -export function NodeShellSettings({entity}: EntitySettingViewProps) { +export function NodeShellSettings({ entity }: EntitySettingViewProps) { const cluster = getClusterForEntity(entity); if(!cluster) { diff --git a/src/renderer/components/dock/create-resource.store.ts b/src/renderer/components/dock/create-resource.store.ts index f0b6b41154..0b3b69f1cd 100644 --- a/src/renderer/components/dock/create-resource.store.ts +++ b/src/renderer/components/dock/create-resource.store.ts @@ -63,7 +63,7 @@ export class CreateResourceStore extends DockTabStore { const userTemplates = await this.getTemplates(this.userTemplatesFolder, "ungrouped"); const lensTemplates = await this.getTemplates(this.lensTemplatesFolder, "lens"); - return {...userTemplates,...lensTemplates}; + return { ...userTemplates,...lensTemplates }; } async watchUserTemplates(callback: ()=> void){ diff --git a/src/renderer/components/dock/create-resource.tsx b/src/renderer/components/dock/create-resource.tsx index 1ef55ba1cb..753ff41b70 100644 --- a/src/renderer/components/dock/create-resource.tsx +++ b/src/renderer/components/dock/create-resource.tsx @@ -24,7 +24,7 @@ import "./create-resource.scss"; import React from "react"; import path from "path"; import fs from "fs-extra"; -import {Select, GroupSelectOption, SelectOption} from "../select"; +import { Select, GroupSelectOption, SelectOption } from "../select"; import yaml from "js-yaml"; import { observable, makeObservable } from "mobx"; import { observer } from "mobx-react"; @@ -65,9 +65,9 @@ export class CreateResource extends React.Component { } convertToGroup(group:string, items:string[]):GroupSelectOption { - const options = items.map(v => ({label: path.parse(v).name, value: v})); + const options = items.map(v => ({ label: path.parse(v).name, value: v })); - return {label: group, options}; + return { label: group, options }; } get tabId() { diff --git a/src/renderer/components/dock/dock.store.ts b/src/renderer/components/dock/dock.store.ts index f2fd74a064..0a434736f4 100644 --- a/src/renderer/components/dock/dock.store.ts +++ b/src/renderer/components/dock/dock.store.ts @@ -23,7 +23,7 @@ import * as uuid from "uuid"; import { action, computed, IReactionOptions, makeObservable, observable, reaction } from "mobx"; import { autoBind, createStorage } from "../../utils"; import throttle from "lodash/throttle"; -import {monacoModelsManager} from "./monaco-model-manager"; +import { monacoModelsManager } from "./monaco-model-manager"; export type TabId = string; diff --git a/src/renderer/components/dock/edit-resource.store.ts b/src/renderer/components/dock/edit-resource.store.ts index d8b6d06d6b..3c20ebf4c8 100644 --- a/src/renderer/components/dock/edit-resource.store.ts +++ b/src/renderer/components/dock/edit-resource.store.ts @@ -26,7 +26,7 @@ import { dockStore, DockTab, DockTabCreateSpecific, TabId, TabKind } from "./doc import type { KubeObject } from "../../../common/k8s-api/kube-object"; import { apiManager } from "../../../common/k8s-api/api-manager"; import type { KubeObjectStore } from "../../../common/k8s-api/kube-object.store"; -import {monacoModelsManager} from "./monaco-model-manager"; +import { monacoModelsManager } from "./monaco-model-manager"; export interface EditingResource { resource: string; // resource path, e.g. /api/v1/namespaces/default diff --git a/src/renderer/components/dock/editor-panel.tsx b/src/renderer/components/dock/editor-panel.tsx index aa941b2e2e..3255a53bb1 100644 --- a/src/renderer/components/dock/editor-panel.tsx +++ b/src/renderer/components/dock/editor-panel.tsx @@ -19,7 +19,7 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -import MonacoEditor, {monaco} from "react-monaco-editor"; +import MonacoEditor, { monaco } from "react-monaco-editor"; import React from "react"; import yaml from "js-yaml"; import { observable, makeObservable } from "mobx"; @@ -97,7 +97,7 @@ export class EditorPanel extends React.Component { render() { return ( { }; onClickOutside = (evt: MouseEvent) => { - const { contentElem, mouseDownTarget, close, props: { open } } = this; + const { contentElem, mouseDownTarget, close, props: { open }} = this; if (!open || evt.defaultPrevented || contentElem.contains(mouseDownTarget)) { return; @@ -139,9 +139,9 @@ export class Drawer extends React.Component { const k8sObjName = title.split(":")[1] || title; // copy whole if no : clipboard.writeText(k8sObjName.trim()); - this.setState({isCopied: true}); + this.setState({ isCopied: true }); setTimeout(() => { - this.setState({isCopied: false}); + this.setState({ isCopied: false }); }, 3000); }; diff --git a/src/renderer/components/hotbar/__tests__/hotbar-remove-command.test.tsx b/src/renderer/components/hotbar/__tests__/hotbar-remove-command.test.tsx index 2880aa12d6..0935f7d797 100644 --- a/src/renderer/components/hotbar/__tests__/hotbar-remove-command.test.tsx +++ b/src/renderer/components/hotbar/__tests__/hotbar-remove-command.test.tsx @@ -47,7 +47,7 @@ jest.mock("electron", () => ({ AppPaths.init(); -const mockHotbars: {[id: string]: any} = { +const mockHotbars: { [id: string]: any } = { "1": { id: "1", name: "Default", diff --git a/src/renderer/components/hotbar/hotbar-entity-icon.tsx b/src/renderer/components/hotbar/hotbar-entity-icon.tsx index b3ed9df942..75f5cb74c0 100644 --- a/src/renderer/components/hotbar/hotbar-entity-icon.tsx +++ b/src/renderer/components/hotbar/hotbar-entity-icon.tsx @@ -74,7 +74,7 @@ export class HotbarEntityIcon extends React.Component { return null; } - const className = cssNames("led", { online: this.props.entity.status.phase === LensKubernetesClusterStatus.CONNECTED}); // TODO: make it more generic + const className = cssNames("led", { online: this.props.entity.status.phase === LensKubernetesClusterStatus.CONNECTED }); // TODO: make it more generic return
; } diff --git a/src/renderer/components/hotbar/hotbar-icon.tsx b/src/renderer/components/hotbar/hotbar-icon.tsx index 176abcc996..64c914cad1 100644 --- a/src/renderer/components/hotbar/hotbar-icon.tsx +++ b/src/renderer/components/hotbar/hotbar-icon.tsx @@ -65,7 +65,7 @@ function onMenuItemClick(menuItem: CatalogEntityContextMenu) { } } -export const HotbarIcon = observer(({menuItems = [], size = 40, tooltip, ...props}: HotbarIconProps) => { +export const HotbarIcon = observer(({ menuItems = [], size = 40, tooltip, ...props }: HotbarIconProps) => { const { uid, title, src, material, active, className, source, disabled, onMenuOpen, onClick, children, ...rest } = props; const id = `hotbarIcon-${uid}`; const [menuOpen, setMenuOpen] = useState(false); @@ -104,7 +104,7 @@ export const HotbarIcon = observer(({menuItems = [], size = 40, tooltip, ...prop className="HotbarIconMenu" isOpen={menuOpen} toggleEvent="contextmenu" - position={{right: true, bottom: true }} // FIXME: position does not work + position={{ right: true, bottom: true }} // FIXME: position does not work open={() => { onMenuOpen?.(); toggleMenu(); diff --git a/src/renderer/components/kube-object-menu/kube-object-menu.tsx b/src/renderer/components/kube-object-menu/kube-object-menu.tsx index ac2a99cc88..300ce67775 100644 --- a/src/renderer/components/kube-object-menu/kube-object-menu.tsx +++ b/src/renderer/components/kube-object-menu/kube-object-menu.tsx @@ -89,7 +89,7 @@ export class KubeObjectMenu extends React.Component ( + .map(({ components: { MenuItem }}, index) => ( { value={yamlConfig} theme={ThemeStore.getInstance().activeTheme.monacoTheme} className={cssNames( "MonacoEditor")} - options={{readOnly: true, ...UserStore.getInstance().getEditorOptions()}} + options={{ readOnly: true, ...UserStore.getInstance().getEditorOptions() }} />