From 7a8a734957064417b65112630aab0da60cc0be4d Mon Sep 17 00:00:00 2001 From: Juho Heikka Date: Wed, 11 May 2022 14:57:57 +0300 Subject: [PATCH 01/82] Remove unused code in the telemetry preference. (#5356) --- src/common/user-store/preferences-helpers.ts | 14 -------------- src/common/user-store/user-store.ts | 6 ------ 2 files changed, 20 deletions(-) diff --git a/src/common/user-store/preferences-helpers.ts b/src/common/user-store/preferences-helpers.ts index 5e1fc597f3..60ce7f3a36 100644 --- a/src/common/user-store/preferences-helpers.ts +++ b/src/common/user-store/preferences-helpers.ts @@ -112,19 +112,6 @@ const allowUntrustedCAs: PreferenceDescription = { }, }; -const allowTelemetry: PreferenceDescription = { - fromStore(val) { - return val ?? true; - }, - toStore(val) { - if (val === true) { - return undefined; - } - - return val; - }, -}; - const allowErrorReporting: PreferenceDescription = { fromStore(val) { return val ?? true; @@ -366,7 +353,6 @@ export const DESCRIPTORS = { terminalTheme, localeTimezone, allowUntrustedCAs, - allowTelemetry, allowErrorReporting, downloadMirror, downloadKubectlBinaries, diff --git a/src/common/user-store/user-store.ts b/src/common/user-store/user-store.ts index a948def9d8..0a50db6153 100644 --- a/src/common/user-store/user-store.ts +++ b/src/common/user-store/user-store.ts @@ -46,7 +46,6 @@ export class UserStore extends BaseStore /* implements UserStore @observable kubeConfigPath = kubeConfigDefaultPath; @observable seenContexts = observable.set(); @observable newContexts = observable.set(); - @observable allowTelemetry: boolean; @observable allowErrorReporting: boolean; @observable allowUntrustedCAs: boolean; @observable colorTheme: string; @@ -97,11 +96,6 @@ export class UserStore extends BaseStore /* implements UserStore } startMainReactions() { - // track telemetry availability - reaction(() => this.allowTelemetry, allowed => { - appEventBus.emit({ name: "telemetry", action: allowed ? "enabled" : "disabled" }); - }); - // open at system start-up reaction(() => this.openAtLogin, openAtLogin => { app.setLoginItemSettings({ From 42e7daf057e6353f7d38abfce5fe6ade70845090 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Wed, 11 May 2022 09:07:51 -0400 Subject: [PATCH 02/82] Fix crash when changing os theme kind (#5354) --- src/renderer/theme.store.ts | 51 ++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 29 deletions(-) diff --git a/src/renderer/theme.store.ts b/src/renderer/theme.store.ts index e76b47dc38..ee870e0850 100644 --- a/src/renderer/theme.store.ts +++ b/src/renderer/theme.store.ts @@ -36,21 +36,33 @@ export class ThemeStore extends Singleton { "lens-light": lensLightThemeJson as Theme, }); - @observable osNativeTheme: "dark" | "light" | undefined; + @observable private osNativeThemeType: "dark" | "light" | undefined; - @computed get activeThemeId(): ThemeId { + @computed private get colorThemePreference(): ThemeId | "system" { return UserStore.getInstance().colorTheme; } - @computed get terminalThemeId(): ThemeId { + @computed private get activeThemeId(): ThemeId { + if (this.colorThemePreference === "system") { + if (this.osNativeThemeType) { + return `lens-${this.osNativeThemeType}`; + } else { + return defaultTheme; + } + } else { + return this.colorThemePreference; + } + } + + @computed private get terminalThemeId(): ThemeId { return UserStore.getInstance().terminalTheme; } @computed get activeTheme(): Theme { - return this.systemTheme ?? this.themes.get(this.activeThemeId) ?? this.themes.get(defaultTheme); + return this.themes.get(this.activeThemeId) ?? this.themes.get(defaultTheme); } - @computed get terminalColors(): [string, string][] { + @computed private get terminalColors(): [string, string][] { const theme = this.themes.get(this.terminalThemeId) ?? this.activeTheme; return Object @@ -76,14 +88,6 @@ export class ThemeStore extends Singleton { })); } - @computed get systemTheme() { - if (this.activeThemeId == "system" && this.osNativeTheme) { - return this.themes.get(`lens-${this.osNativeTheme}`); - } - - return null; - } - constructor() { super(); @@ -93,8 +97,10 @@ export class ThemeStore extends Singleton { } async init() { - await this.setNativeTheme(); - this.bindNativeThemeUpdateEvent(); + this.osNativeThemeType = await ipcRenderer.invoke(getNativeThemeChannel); + ipcRenderer.on(setNativeThemeChannel, (event, theme: "dark" | "light") => { + this.osNativeThemeType = theme; + }); // auto-apply active theme reaction(() => ({ @@ -113,25 +119,12 @@ export class ThemeStore extends Singleton { }); } - bindNativeThemeUpdateEvent() { - ipcRenderer.on(setNativeThemeChannel, (event, theme: "dark" | "light") => { - this.osNativeTheme = theme; - this.applyTheme(theme); - }); - } - - async setNativeTheme() { - const theme: "dark" | "light" = await ipcRenderer.invoke(getNativeThemeChannel); - - this.osNativeTheme = theme; - } - getThemeById(themeId: ThemeId): Theme { return this.themes.get(themeId); } protected applyTheme(themeId: ThemeId) { - const theme = this.systemTheme ?? this.getThemeById(themeId); + const theme = this.getThemeById(themeId); const colors = Object.entries({ ...theme.colors, From d0de9b99dc3d9287764a2fa29faa805583be91c1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 May 2022 09:48:03 -0400 Subject: [PATCH 03/82] Bump @types/node from 14.18.12 to 14.18.17 (#5358) 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 373802ca80..10c8aae0f7 100644 --- a/package.json +++ b/package.json @@ -304,7 +304,7 @@ "@types/md5-file": "^4.0.2", "@types/mini-css-extract-plugin": "^2.4.0", "@types/mock-fs": "^4.13.1", - "@types/node": "14.18.12", + "@types/node": "14.18.17", "@types/node-fetch": "^2.6.1", "@types/npm": "^2.0.32", "@types/proper-lockfile": "^4.1.2", diff --git a/yarn.lock b/yarn.lock index bb3c97d53a..dfbd4f8669 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1728,10 +1728,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.24.tgz#20ba1bf69c1b4ab405c7a01e950c4f446b05029f" integrity sha512-aveCYRQbgTH9Pssp1voEP7HiuWlD2jW2BO56w+bVrJn04i61yh6mRfoKO6hEYQD9vF+W8Chkwc6j1M36uPkx4g== -"@types/node@14.18.12", "@types/node@^14.6.2": - version "14.18.12" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.12.tgz#0d4557fd3b94497d793efd4e7d92df2f83b4ef24" - integrity sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A== +"@types/node@14.18.17", "@types/node@^14.6.2": + version "14.18.17" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.17.tgz#37d3c01043fd09f3f17ffa8c17062bbb580f9558" + integrity sha512-oajWz4kOajqpKJMPgnCvBajPq8QAvl2xIWoFjlAJPKGu6n7pjov5SxGE45a+0RxHDoo4ycOMoZw1SCOWtDERbw== "@types/node@^10.12.0": version "10.17.24" From bfcae9e70235eff09b3983e9b0db0cfaad8e384f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 May 2022 09:48:16 -0400 Subject: [PATCH 04/82] Bump react-window from 1.8.6 to 1.8.7 (#5340) 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 10c8aae0f7..ccaf214f53 100644 --- a/package.json +++ b/package.json @@ -385,7 +385,7 @@ "react-select": "^5.3.0", "react-select-event": "^5.5.0", "react-table": "^7.7.0", - "react-window": "^1.8.6", + "react-window": "^1.8.7", "sass": "^1.51.0", "sass-loader": "^12.6.0", "sharp": "^0.30.4", diff --git a/yarn.lock b/yarn.lock index dfbd4f8669..0b6f229984 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11086,10 +11086,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.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== +react-window@^1.8.7: + version "1.8.7" + resolved "https://registry.yarnpkg.com/react-window/-/react-window-1.8.7.tgz#5e9fd0d23f48f432d7022cdb327219353a15f0d4" + integrity sha512-JHEZbPXBpKMmoNO1bNhoXOOLg/ujhL/BU4IqVU9r8eQPcy5KQnGHIHDRkJ0ns9IM5+Aq5LNwt3j8t3tIrePQzA== dependencies: "@babel/runtime" "^7.0.0" memoize-one ">=3.1.1 <6" From 005ae4123e0f4710f196d1f8f6a54fd94bc4ab92 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 May 2022 09:48:22 -0400 Subject: [PATCH 05/82] Bump react-select from 5.3.0 to 5.3.2 (#5350) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 21 +++++++-------------- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index ccaf214f53..a2886af096 100644 --- a/package.json +++ b/package.json @@ -382,7 +382,7 @@ "react-refresh": "^0.12.0", "react-refresh-typescript": "^2.0.4", "react-router-dom": "^5.3.1", - "react-select": "^5.3.0", + "react-select": "^5.3.2", "react-select-event": "^5.5.0", "react-table": "^7.7.0", "react-window": "^1.8.7", diff --git a/yarn.lock b/yarn.lock index 0b6f229984..910ba5c160 100644 --- a/yarn.lock +++ b/yarn.lock @@ -472,7 +472,7 @@ resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.5.tgz#2c40f81449a4e554e9fc6396910ed4843ec2be50" integrity sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ== -"@emotion/react@^11.1.1": +"@emotion/react@^11.8.1": version "11.9.0" resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.9.0.tgz#b6d42b1db3bd7511e7a7c4151dc8bc82e14593b8" integrity sha512-lBVSF5d0ceKtfKCDQJveNAtkC7ayxpVlgOohLgXqRwqWr9bOf4TZAFFyIcNngnV6xK6X4x2ZeXq7vliHkoVkxQ== @@ -1857,20 +1857,13 @@ dependencies: "@types/react" "*" -"@types/react-transition-group@*", "@types/react-transition-group@^4.4.0": +"@types/react-transition-group@*", "@types/react-transition-group@^4.2.0", "@types/react-transition-group@^4.4.0": version "4.4.4" resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.4.tgz#acd4cceaa2be6b757db61ed7b432e103242d163e" integrity sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug== dependencies: "@types/react" "*" -"@types/react-transition-group@^4.2.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.0.tgz#882839db465df1320e4753e6e9f70ca7e9b4d46d" - integrity sha512-/QfLHGpu+2fQOqQaXh8MG9q03bFENooTb/it4jr5kKaZlDQfWvjqWZg48AwzPVMBHlRuTRAY7hRHCEOXz5kV6w== - dependencies: - "@types/react" "*" - "@types/react-virtualized-auto-sizer@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@types/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.1.tgz#b3187dae1dfc4c15880c9cfc5b45f2719ea6ebd4" @@ -11048,14 +11041,14 @@ react-select-event@^5.5.0: dependencies: "@testing-library/dom" ">=7" -react-select@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.3.0.tgz#dc77c1f95e1037ec4cb01c5e5d6272d80be8d3f6" - integrity sha512-GM6Fbv1+X+kb3e5Fc4oNeyOJkCIesY/D4NBiReKlGY4RxoeztFYm3J0KREgwMaIKQqwTiuLqTlpUBY3SYw5goQ== +react-select@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.3.2.tgz#ecee0d5c59ed4acb7f567f7de3c75a488d93dacb" + integrity sha512-W6Irh7U6Ha7p5uQQ2ZnemoCQ8mcfgOtHfw3wuMzG6FAu0P+CYicgofSLOq97BhjMx8jS+h+wwWdCBeVVZ9VqlQ== dependencies: "@babel/runtime" "^7.12.0" "@emotion/cache" "^11.4.0" - "@emotion/react" "^11.1.1" + "@emotion/react" "^11.8.1" "@types/react-transition-group" "^4.4.0" memoize-one "^5.0.0" prop-types "^15.6.0" From d2abd582bc63899dc7ceff80caa33f706d3b7ae6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 May 2022 09:48:34 -0400 Subject: [PATCH 06/82] Bump @types/webpack-env from 1.16.3 to 1.16.4 (#5342) 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 a2886af096..783e58b23b 100644 --- a/package.json +++ b/package.json @@ -332,7 +332,7 @@ "@types/uuid": "^8.3.4", "@types/webpack": "^5.28.0", "@types/webpack-dev-server": "^4.7.2", - "@types/webpack-env": "^1.16.3", + "@types/webpack-env": "^1.16.4", "@types/webpack-node-externals": "^2.5.3", "@typescript-eslint/eslint-plugin": "^5.21.0", "@typescript-eslint/parser": "^5.17.0", diff --git a/yarn.lock b/yarn.lock index 910ba5c160..9be8f285b4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2094,10 +2094,10 @@ dependencies: webpack-dev-server "*" -"@types/webpack-env@^1.16.3": - version "1.16.3" - resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.16.3.tgz#b776327a73e561b71e7881d0cd6d34a1424db86a" - integrity sha512-9gtOPPkfyNoEqCQgx4qJKkuNm/x0R2hKR7fdl7zvTJyHnIisuE/LfvXOsYWL0o3qq6uiBnKZNNNzi3l0y/X+xw== +"@types/webpack-env@^1.16.4": + version "1.16.4" + resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.16.4.tgz#1f4969042bf76d7ef7b5914f59b3b60073f4e1f4" + integrity sha512-llS8qveOUX3wxHnSykP5hlYFFuMfJ9p5JvIyCiBgp7WTfl6K5ZcyHj8r8JsN/J6QODkAsRRCLIcTuOCu8etkUw== "@types/webpack-node-externals@^2.5.3": version "2.5.3" From d99cc5a0158131dc6b290875bb6248bc8bb1b154 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Wed, 11 May 2022 10:26:43 -0400 Subject: [PATCH 07/82] Bundle tray icons in repo (#5362) --- .gitignore | 1 - Makefile | 8 ++------ build/generate-tray-icons.ts | 12 ++++++------ build/tray/trayIconDarkTemplate.png | Bin 0 -> 392 bytes build/tray/trayIconDarkTemplate@2x.png | Bin 0 -> 724 bytes build/tray/trayIconTemplate.png | Bin 0 -> 397 bytes build/tray/trayIconTemplate@2x.png | Bin 0 -> 717 bytes package.json | 2 +- 8 files changed, 9 insertions(+), 14 deletions(-) create mode 100644 build/tray/trayIconDarkTemplate.png create mode 100644 build/tray/trayIconDarkTemplate@2x.png create mode 100644 build/tray/trayIconTemplate.png create mode 100644 build/tray/trayIconTemplate@2x.png diff --git a/.gitignore b/.gitignore index 4c9c3c8165..d018f3b251 100644 --- a/.gitignore +++ b/.gitignore @@ -8,7 +8,6 @@ locales/**/**.js lens.log static/build static/types -build/tray/ binaries/client/ binaries/server/ src/extensions/*/*.js diff --git a/Makefile b/Makefile index 1199ee381d..6db96fbc2b 100644 --- a/Makefile +++ b/Makefile @@ -32,7 +32,7 @@ compile-dev: node_modules ci-validate-dev: binaries/client build-extensions compile-dev .PHONY: dev -dev: binaries/client build/tray/trayIconTemplate.png build-extensions +dev: binaries/client build-extensions rm -rf static/build/ yarn dev @@ -53,7 +53,7 @@ integration: build yarn integration .PHONY: build -build: node_modules binaries/client build/tray/trayIconTemplate.png +build: node_modules binaries/client yarn run npm:fix-build-version $(MAKE) build-extensions -B yarn run compile @@ -70,9 +70,6 @@ $(extension_node_modules): node_modules $(extension_dists): src/extensions/npm/extensions/dist $(extension_node_modules) cd $(@:/dist=) && ../../node_modules/.bin/npm run build -build/tray/trayIconTemplate.png: node_modules - yarn ts-node ./build/generate-tray-icons.ts - .PHONY: clean-old-extensions clean-old-extensions: find ./extensions -mindepth 1 -maxdepth 1 -type d '!' -exec test -e '{}/package.json' \; -exec rm -rf {} \; @@ -129,7 +126,6 @@ clean: clean-npm clean-extensions rm -rf binaries/client rm -rf dist rm -rf static/build - rm -rf build/tray rm -rf node_modules rm -rf site rm -rf docs/extensions/api diff --git a/build/generate-tray-icons.ts b/build/generate-tray-icons.ts index c09ab6320d..a7ab3bd48b 100644 --- a/build/generate-tray-icons.ts +++ b/build/generate-tray-icons.ts @@ -28,23 +28,23 @@ console.log("Generating tray icon pngs"); ensureDirSync(outputFolder); -Promise.allSettled([ - sharp(Buffer.from(darkTemplate)) +Promise.all([ + sharp(Buffer.from(lightTemplate)) .resize({ width: size, height: size }) .png() .toFile(path.join(outputFolder, "trayIconDarkTemplate.png")), - sharp(Buffer.from(darkTemplate)) + sharp(Buffer.from(lightTemplate)) .resize({ width: size*2, height: size*2 }) .png() .toFile(path.join(outputFolder, "trayIconDarkTemplate@2x.png")), - sharp(Buffer.from(lightTemplate)) + sharp(Buffer.from(darkTemplate)) .resize({ width: size, height: size }) .png() .toFile(path.join(outputFolder, "trayIconTemplate.png")), - sharp(Buffer.from(lightTemplate)) + sharp(Buffer.from(darkTemplate)) .resize({ width: size*2, height: size*2 }) .png() .toFile(path.join(outputFolder, "trayIconTemplate@2x.png")), ]) - .then(console.log) + .then((resolutions) => console.log(`Generated ${resolutions.length} images`)) .catch(console.error); diff --git a/build/tray/trayIconDarkTemplate.png b/build/tray/trayIconDarkTemplate.png new file mode 100644 index 0000000000000000000000000000000000000000..63f2eb18953367d8687dcef3a423acadc3af84a1 GIT binary patch literal 392 zcmV;30eAk1P)AzhWG*I&3>$yqT~{Az$i|DW#HHDePAw4o&qj`3h?5R-+^i1J}LUF9ADtf92>x< z3)}+Mh;f=HSAlOc4($E_JOUFy2e=K+4N%T(+8#$h9awRHI0@_rXF<-rq<}Us8w~j> zXrm=ZD{x!~1!jPcByLBJCEzeP|5H{w)|TuZ4LQp;kZ4dH8)OgY+L{Nh)oT7iyI@sX zVbk5U;&uCO`~E7xQ<8jV1bcP1HzU@?2&F|&qp2X;ioT+83emkZPD~Pvgd+h-NI5=@ mu|o=vgCuNH)|wkdD*OZ5PQbBv-z^jX00008; z93OyYwHY?+Z-BkE2Jga;BWlwQ{0Qt{1nRtjm+NmG@X!(b2~bj-sT|&fD+yo_=+*me zjs$incejH(5(~Zy_zAoK>UC{0$Kf@jkf->tFDrO`>cI8u`g-77z>&P`P0A_bhe)kwgw^#53V{B5OutY_?oc> zckrVtatJ&0et*QzwC7>mFx~UMk?qZ#1ct0}D{!KQ>zFhm^>N5J@6)x-+T23uvC%1r2(}B#;_^|b#E>3DYbVvNdssspawxXGKPt4H!A0p zS(m2P@K*u?pvM{f8L-MRhE1A*Wk%0KWrE5CFycsHrm z$vK8SmP2j_-Y8hmap+*lyKYy`QT{>k$_20|H75@1db56v#2|9)NfrYZ#<70=+^UXY zqmjUp^l@(sPYNa^Md!LcolMKpdS#54vOA<-RF&$uB=8$9u2*7XTH;p#0000Y<(@P1&z_n2f66wDS^U5f58)7lxUGTjFoN?&(cg)AwY?0?W1*I~ zh`GY6!gnfg3y*o(&GQAW(T@&J3x0wDIqiDoO-!Tx_CQ~-R`Br%{%jP84Se&_jtXt8 z%AaQ7xKQ9L?i+b45tzhA!Ru3QXImSM0yAGS}R#wc4uwVYkPsVuee! zbFBD#eg{TnQTbN`e3otesonieVjYwy9rO&EMqU{zAES*v@cpz4Z(zPLO>y; r3ivM>`;Nk&Sx7jf9BYng7ghKI;f#FQ*R~j600000NkvXXu0mjfDiN#W literal 0 HcmV?d00001 diff --git a/build/tray/trayIconTemplate@2x.png b/build/tray/trayIconTemplate@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..553a8ec373fdc3b82c797bf91c69a242ab811f06 GIT binary patch literal 717 zcmV;;0y6!HP)D;c6yXJM`EYPXnn;Z^o zmF#whY+sDL1NaHN0UEV;v%=u5AVXd{pKDhcd1Ef%PH2Ax@U6g*z4dCzbSK1%rEGJN z1Kl}6%kj40S@MR?>uf17k>G%>Q+e`vz(|4M6`eOJrNXbsiq54(@=QMq+$n4<5&Q+L z|0BZQV1J+X76E5~b9JocvN46;3U41PHRk}2fTt-r?Zv&wmF44ds#utZzy|o8z%AlA%>!Q>6;ZQJ{mH2SlVefOOFy_3r8%_r-JKjZX z4TTC16N1OOWK|Gapc-~Z>{#H>DzfhRBuLwV3I}>Zug%K)@x(Dm0c^ZcHLQZ{P*!2I7IeRrHm)}00000NkvXXu0mjfFXT%W literal 0 HcmV?d00001 diff --git a/package.json b/package.json index 783e58b23b..15c875dbb1 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "dist": "yarn run compile && electron-builder --publish onTag", "dist:dir": "yarn run dist --dir -c.compression=store -c.mac.identity=null", "download:binaries": "yarn run ts-node build/download_binaries.ts", - "build:tray-icons": "yarn run ts-node build/build_tray_icon.ts", + "build:tray-icons": "yarn run ts-node build/generate-tray-icons.ts", "build:theme-vars": "yarn run ts-node build/build_theme_vars.ts", "lint": "PROD=true yarn run eslint --ext js,ts,tsx --max-warnings=0 .", "lint:fix": "yarn run lint --fix", From cc9ee67dc22139b022497bba35b78745cb1f5d48 Mon Sep 17 00:00:00 2001 From: Alex Andreev Date: Wed, 11 May 2022 17:33:01 +0300 Subject: [PATCH 08/82] Fix checked callback attribute value (#5360) --- .../switch/__tests__/switch.test.tsx | 20 +++++++++++++++++++ src/renderer/components/switch/switch.tsx | 8 +++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/renderer/components/switch/__tests__/switch.test.tsx b/src/renderer/components/switch/__tests__/switch.test.tsx index 20b262ab01..0781ba24b3 100644 --- a/src/renderer/components/switch/__tests__/switch.test.tsx +++ b/src/renderer/components/switch/__tests__/switch.test.tsx @@ -48,4 +48,24 @@ describe("", () => { expect(onClick).not.toHaveBeenCalled(); }); + + it("returns true checked attribute in a onChange callback", () => { + const onClick = jest.fn(); + const { getByTestId } = render(); + const switcher = getByTestId("switch"); + + fireEvent.click(switcher); + + expect(onClick).toHaveBeenCalledWith(false, expect.any(Object)); + }); + + it("returns false checked attribute in a onChange callback", () => { + const onClick = jest.fn(); + const { getByTestId } = render(); + const switcher = getByTestId("switch"); + + fireEvent.click(switcher); + + expect(onClick).toHaveBeenCalledWith(true, expect.any(Object)); + }); }); diff --git a/src/renderer/components/switch/switch.tsx b/src/renderer/components/switch/switch.tsx index 5052941e84..2f91faf1a9 100644 --- a/src/renderer/components/switch/switch.tsx +++ b/src/renderer/components/switch/switch.tsx @@ -17,7 +17,13 @@ export function Switch({ children, disabled, onChange, ...props }: SwitchProps) return ( ); } From f3e5b0c8aaf1d7d529d2696f25d2d9223fef9b81 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 May 2022 12:10:33 -0400 Subject: [PATCH 09/82] Bump @testing-library/react from 12.1.4 to 12.1.5 (#5363) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 29 +++++++++++++++++++---------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 15c875dbb1..265606fdc6 100644 --- a/package.json +++ b/package.json @@ -281,7 +281,7 @@ "@pmmmwh/react-refresh-webpack-plugin": "^0.5.5", "@sentry/types": "^6.19.7", "@testing-library/jest-dom": "^5.16.4", - "@testing-library/react": "^12.1.4", + "@testing-library/react": "^12.1.5", "@testing-library/user-event": "^13.5.0", "@types/byline": "^4.2.33", "@types/chart.js": "^2.9.36", diff --git a/yarn.lock b/yarn.lock index 9be8f285b4..48741ecd7c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1239,14 +1239,14 @@ lodash "^4.17.15" redent "^3.0.0" -"@testing-library/react@^12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-12.1.4.tgz#09674b117e550af713db3f4ec4c0942aa8bbf2c0" - integrity sha512-jiPKOm7vyUw311Hn/HlNQ9P8/lHNtArAx0PisXyFixDDvfl8DbD6EUdbshK5eqauvBSvzZd19itqQ9j3nferJA== +"@testing-library/react@^12.1.5": + version "12.1.5" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-12.1.5.tgz#bb248f72f02a5ac9d949dea07279095fa577963b" + integrity sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg== dependencies: "@babel/runtime" "^7.12.5" "@testing-library/dom" "^8.0.0" - "@types/react-dom" "*" + "@types/react-dom" "<18.0.0" "@testing-library/user-event@^13.5.0": version "13.5.0" @@ -1807,12 +1807,12 @@ dependencies: "@types/react" "*" -"@types/react-dom@*", "@types/react-dom@^17.0.14": - version "17.0.14" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.14.tgz#c8f917156b652ddf807711f5becbd2ab018dea9f" - integrity sha512-H03xwEP1oXmSfl3iobtmQ/2dHF5aBHr8aUMwyGZya6OW45G+xtdzmq6HkncefiBt5JU8DVyaWl/nWZbjZCnzAQ== +"@types/react-dom@*", "@types/react-dom@<18.0.0", "@types/react-dom@^17.0.14": + version "17.0.16" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.16.tgz#7caba93cf2806c51e64d620d8dff4bae57e06cc4" + integrity sha512-DWcXf8EbMrO/gWnQU7Z88Ws/p16qxGpPyjTKTpmBSFKeE+HveVubqGO1CVK7FrwlWD5MuOcvh8gtd0/XO38NdQ== dependencies: - "@types/react" "*" + "@types/react" "^17" "@types/react-redux@^7.1.16": version "7.1.16" @@ -1896,6 +1896,15 @@ "@types/scheduler" "*" csstype "^3.0.2" +"@types/react@^17": + version "17.0.45" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.45.tgz#9b3d5b661fd26365fefef0e766a1c6c30ccf7b3f" + integrity sha512-YfhQ22Lah2e3CHPsb93tRwIGNiSwkuz1/blk4e6QrWS0jQzCSNbGLtOEYhPg02W0yGTTmpajp7dCTbBAMN3qsg== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + "@types/readable-stream@^2.3.13": version "2.3.13" resolved "https://registry.yarnpkg.com/@types/readable-stream/-/readable-stream-2.3.13.tgz#46451c1b87cb61010e420ac02a76cfc1b2c2089a" From b46ba82fc536b4cc790acbce48fc8415661a1871 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 May 2022 12:10:43 -0400 Subject: [PATCH 10/82] Bump webpack-dev-server from 4.8.1 to 4.9.0 (#5364) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 29 ++++++----------------------- 2 files changed, 7 insertions(+), 24 deletions(-) diff --git a/package.json b/package.json index 265606fdc6..07e6868ec0 100644 --- a/package.json +++ b/package.json @@ -404,7 +404,7 @@ "typescript-plugin-css-modules": "^3.4.0", "webpack": "^5.72.0", "webpack-cli": "^4.9.2", - "webpack-dev-server": "^4.8.1", + "webpack-dev-server": "^4.9.0", "webpack-node-externals": "^3.0.0", "xterm": "^4.18.0", "xterm-addon-fit": "^0.5.0" diff --git a/yarn.lock b/yarn.lock index 48741ecd7c..08b3b7d88d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2913,13 +2913,6 @@ async-exit-hook@^2.0.1: resolved "https://registry.yarnpkg.com/async-exit-hook/-/async-exit-hook-2.0.1.tgz#8bd8b024b0ec9b1c01cccb9af9db29bd717dfaf3" integrity sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw== -async@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - async@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9" @@ -4419,7 +4412,7 @@ debug@4.3.3: dependencies: ms "2.1.2" -debug@^3.1.0, debug@^3.1.1, debug@^3.2.6, debug@^3.2.7: +debug@^3.1.0, debug@^3.2.6, debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== @@ -8754,7 +8747,7 @@ lodash.without@~4.4.0: resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" integrity sha1-PNRXSgC2e643OpS3SHcmQFB7eqw= -lodash@4.x, lodash@^4.17.10, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.7.0: +lodash@4.x, lodash@^4.17.10, lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -10513,15 +10506,6 @@ popper.js@1.16.1-lts: resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1-lts.tgz#cf6847b807da3799d80ee3d6d2f90df8a3f50b05" integrity sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA== -portfinder@^1.0.28: - version "1.0.28" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" - integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== - dependencies: - async "^2.6.2" - debug "^3.1.1" - mkdirp "^0.5.5" - posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" @@ -13567,10 +13551,10 @@ webpack-dev-middleware@^5.3.1: range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@*, webpack-dev-server@^4.8.1: - version "4.8.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.8.1.tgz#58f9d797710d6e25fa17d6afab8708f958c11a29" - integrity sha512-dwld70gkgNJa33czmcj/PlKY/nOy/BimbrgZRaR9vDATBQAYgLzggR0nxDtPLJiLrMgZwbE6RRfJ5vnBBasTyg== +webpack-dev-server@*, webpack-dev-server@^4.9.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.9.0.tgz#737dbf44335bb8bde68f8f39127fc401c97a1557" + integrity sha512-+Nlb39iQSOSsFv0lWUuUTim3jDQO8nhK3E68f//J2r5rIcp4lULHXz2oZ0UVdEeWXEh5lSzYUlzarZhDAeAVQw== dependencies: "@types/bonjour" "^3.5.9" "@types/connect-history-api-fallback" "^1.3.5" @@ -13592,7 +13576,6 @@ webpack-dev-server@*, webpack-dev-server@^4.8.1: ipaddr.js "^2.0.1" open "^8.0.9" p-retry "^4.5.0" - portfinder "^1.0.28" rimraf "^3.0.2" schema-utils "^4.0.0" selfsigned "^2.0.1" From f0b26be79a207eff3701023517d661d77486109e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 May 2022 12:11:23 -0400 Subject: [PATCH 11/82] Bump eslint-plugin-react-hooks from 4.4.0 to 4.5.0 (#5365) 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 07e6868ec0..0e15275d6a 100644 --- a/package.json +++ b/package.json @@ -354,7 +354,7 @@ "eslint-plugin-header": "^3.1.1", "eslint-plugin-import": "^2.26.0", "eslint-plugin-react": "^7.29.4", - "eslint-plugin-react-hooks": "^4.4.0", + "eslint-plugin-react-hooks": "^4.5.0", "eslint-plugin-unused-imports": "^2.0.0", "flex.box": "^3.4.4", "fork-ts-checker-webpack-plugin": "^6.5.0", diff --git a/yarn.lock b/yarn.lock index 08b3b7d88d..45b3738ea7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5368,10 +5368,10 @@ eslint-plugin-import@^2.26.0: resolve "^1.22.0" tsconfig-paths "^3.14.1" -eslint-plugin-react-hooks@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.4.0.tgz#71c39e528764c848d8253e1aa2c7024ed505f6c4" - integrity sha512-U3RVIfdzJaeKDQKEJbz5p3NW8/L80PCATJAfuojwbaEL+gBjfGdhUcGde+WGUW46Q5sr/NgxevsIiDtNXrvZaQ== +eslint-plugin-react-hooks@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.5.0.tgz#5f762dfedf8b2cf431c689f533c9d3fa5dcf25ad" + integrity sha512-8k1gRt7D7h03kd+SAAlzXkQwWK22BnK6GKZG+FJA6BAGy22CFvl8kCIXKpVux0cCxMWDQUPqSok0LKaZ0aOcCw== eslint-plugin-react@^7.29.4: version "7.29.4" From 6d7609b364c7c978b7288e7d3ba6baaa8f58e554 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Wed, 11 May 2022 15:05:21 -0400 Subject: [PATCH 12/82] Fix crash with NamespaceSelectFilter (#5367) --- .../namespace-select-filter-model.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/renderer/components/+namespaces/namespace-select-filter-model/namespace-select-filter-model.ts b/src/renderer/components/+namespaces/namespace-select-filter-model/namespace-select-filter-model.ts index dfdbd987ea..15ebb316dc 100644 --- a/src/renderer/components/+namespaces/namespace-select-filter-model/namespace-select-filter-model.ts +++ b/src/renderer/components/+namespaces/namespace-select-filter-model/namespace-select-filter-model.ts @@ -46,7 +46,14 @@ export class NamespaceSelectFilterModel { this.dependencies.namespaceStore.selectAll(); }; - onChange = ([{ value: namespace }]: SelectOption[]) => { + onChange = ([selected]: SelectOption[]) => { + if (!selected) { + // This happens when pressing "Backspace" with an empty search field. Do nothing + return; + } + + const { value: namespace } = selected; + if (namespace) { if (this.isMultiSelection) { this.dependencies.namespaceStore.toggleSingle(namespace); From 19c77eefaf2c8c71ea77fd8bf9d458c508d7d541 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Wed, 11 May 2022 21:57:40 -0400 Subject: [PATCH 13/82] Fix CustomResourceDetails merging arrays of values (#5349) Signed-off-by: Sebastian Malton --- .../+custom-resources/crd-resource-details.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/renderer/components/+custom-resources/crd-resource-details.tsx b/src/renderer/components/+custom-resources/crd-resource-details.tsx index 1c43769e2e..b935cc0b92 100644 --- a/src/renderer/components/+custom-resources/crd-resource-details.tsx +++ b/src/renderer/components/+custom-resources/crd-resource-details.tsx @@ -27,7 +27,15 @@ export interface CustomResourceDetailsProps extends KubeObjectDetailsProps + {value.map((value, index) => ( +
  • + {convertSpecValue(value)} +
  • + ))} + + ); } if (typeof value === "object") { From d92233d58e4ef59bf59ed3098d3c6f8629b69fe9 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Thu, 12 May 2022 08:27:33 -0400 Subject: [PATCH 14/82] Add defensive code around Cluster.broadcastConnectUpdate (#5297) --- src/common/cluster/cluster.ts | 8 ++++++-- src/common/utils/type-narrowing.ts | 8 ++++++++ .../components/cluster-manager/cluster-status.tsx | 14 +++++++++++--- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/common/cluster/cluster.ts b/src/common/cluster/cluster.ts index fbe7880f3c..231f82eed2 100644 --- a/src/common/cluster/cluster.ts +++ b/src/common/cluster/cluster.ts @@ -504,7 +504,9 @@ export class Cluster implements ClusterModel, ClusterState { return ClusterStatus.AccessDenied; } - this.broadcastConnectUpdate(error.error || error.message, true); + const message = String(error.error || error.message) || String(error); + + this.broadcastConnectUpdate(message, true); return ClusterStatus.Offline; } @@ -521,7 +523,9 @@ export class Cluster implements ClusterModel, ClusterState { return ClusterStatus.AccessDenied; } - this.broadcastConnectUpdate(error.message, true); + const message = String(error.error || error.message) || String(error); + + this.broadcastConnectUpdate(message, true); return ClusterStatus.Offline; } diff --git a/src/common/utils/type-narrowing.ts b/src/common/utils/type-narrowing.ts index d03dfa6b9a..59303ebfc0 100644 --- a/src/common/utils/type-narrowing.ts +++ b/src/common/utils/type-narrowing.ts @@ -73,6 +73,14 @@ export function isString(val: unknown): val is string { return typeof val === "string"; } +/** + * checks if val is of type boolean + * @param val the value to be checked + */ +export function isBoolean(val: unknown): val is boolean { + return typeof val === "boolean"; +} + /** * checks if val is of type object and isn't null * @param val the value to be checked diff --git a/src/renderer/components/cluster-manager/cluster-status.tsx b/src/renderer/components/cluster-manager/cluster-status.tsx index 25a9b7408b..c424f8fa31 100644 --- a/src/renderer/components/cluster-manager/cluster-status.tsx +++ b/src/renderer/components/cluster-manager/cluster-status.tsx @@ -11,7 +11,7 @@ import React from "react"; import { ipcRendererOn } from "../../../common/ipc"; import type { Cluster } from "../../../common/cluster/cluster"; import type { IClassName } from "../../utils"; -import { cssNames } from "../../utils"; +import { isBoolean, hasTypedProperty, isObject, isString, cssNames } from "../../utils"; import { Button } from "../button"; import { Icon } from "../icon"; import { Spinner } from "../spinner"; @@ -55,8 +55,16 @@ class NonInjectedClusterStatus extends React.Component { - this.authOutput.push(res); + ipcRendererOn(`cluster:${this.cluster.id}:connection-update`, (evt, res: unknown) => { + if ( + isObject(res) + && hasTypedProperty(res, "message", isString) + && hasTypedProperty(res, "isError", isBoolean) + ) { + this.authOutput.push(res); + } else { + console.warn(`Got invalid connection update for ${this.cluster.id}`, { update: res }); + } }), ]); } From b1df407715e0150ea15403cc5bd69718e40b5c44 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Thu, 12 May 2022 10:08:50 -0400 Subject: [PATCH 15/82] Create a script to help create release PRs (#5339) --- .eslintrc.js | 3 +- package.json | 2 + scripts/clear-release-pr.mjs | 210 +++++++++++++++++++++++++++++++++++ yarn.lock | 32 ++++++ 4 files changed, 246 insertions(+), 1 deletion(-) create mode 100755 scripts/clear-release-pr.mjs diff --git a/.eslintrc.js b/.eslintrc.js index 8cd6fd26fa..2c10f6ab5e 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -22,15 +22,16 @@ module.exports = { { files: [ "**/*.js", + "**/*.mjs", ], extends: [ "eslint:recommended", ], env: { node: true, + es2022: true, }, parserOptions: { - ecmaVersion: 2018, sourceType: "module", }, plugins: [ diff --git a/package.json b/package.json index 0e15275d6a..0e6d7168d7 100644 --- a/package.json +++ b/package.json @@ -287,6 +287,7 @@ "@types/chart.js": "^2.9.36", "@types/cli-progress": "^3.9.2", "@types/color": "^3.0.3", + "@types/command-line-args": "^5.2.0", "@types/crypto-js": "^3.1.47", "@types/dompurify": "^2.3.3", "@types/electron-devtools-installer": "^2.2.1", @@ -341,6 +342,7 @@ "circular-dependency-plugin": "^5.2.2", "cli-progress": "^3.11.0", "color": "^3.2.1", + "command-line-args": "^5.2.1", "concurrently": "^7.1.0", "css-loader": "^6.7.1", "deepdash": "^5.3.9", diff --git a/scripts/clear-release-pr.mjs b/scripts/clear-release-pr.mjs new file mode 100755 index 0000000000..4b55384e61 --- /dev/null +++ b/scripts/clear-release-pr.mjs @@ -0,0 +1,210 @@ +#!/usr/bin/env node +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +// This script creates a release PR +import { execSync, exec, spawn } from "child_process"; +import commandLineArgs from "command-line-args"; +import fse from "fs-extra"; +import { basename } from "path"; +import semver from "semver"; +import { promisify } from "util"; + +const { + SemVer, + valid: semverValid, + rcompare: semverRcompare, + lte: semverLte, +} = semver; +const { readJsonSync } = fse; +const execP = promisify(exec); + +const options = commandLineArgs([ + { + name: "type", + defaultOption: true, + }, + { + name: "preid", + }, +]); + +const validReleaseValues = [ + "major", + "minor", + "patch", +]; +const validPrereleaseValues = [ + "premajor", + "preminor", + "prepatch", + "prerelease", +]; +const validPreidValues = [ + "alpha", + "beta", +]; + +const errorMessages = { + noReleaseType: `No release type provided. Valid options are: ${[...validReleaseValues, ...validPrereleaseValues].join(", ")}`, + invalidRelease: (invalid) => `Invalid release type was provided (value was "${invalid}"). Valid options are: ${[...validReleaseValues, ...validPrereleaseValues].join(", ")}`, + noPreid: `No preid was provided. Use '--preid' to specify. Valid options are: ${validPreidValues.join(", ")}`, + invalidPreid: (invalid) => `Invalid preid was provided (value was "${invalid}"). Valid options are: ${validPreidValues.join(", ")}`, + wrongCwd: "It looks like you are running this script from the 'scripts' directory. This script assumes it is run from the root of the git repo", +}; + +if (!options.type) { + console.error(errorMessages.noReleaseType); + process.exit(1); +} + +if (validReleaseValues.includes(options.type)) { + // do nothing, is valid +} else if (validPrereleaseValues.includes(options.type)) { + if (!options.preid) { + console.error(errorMessages.noPreid); + process.exit(1); + } + + if (!validPreidValues.includes(options.preid)) { + console.error(errorMessages.invalidPreid(options.preid)); + process.exit(1); + } +} else { + console.error(errorMessages.invalidRelease(options.type)); + process.exit(1); +} + +if (basename(process.cwd()) === "scripts") { + console.error(errorMessages.wrongCwd); +} + + +const currentVersion = new SemVer(readJsonSync("./package.json").version); +const currentVersionMilestone = `${currentVersion.major}.${currentVersion.minor}.${currentVersion.patch}`; + +console.log(`current version: ${currentVersion.format()}`); +console.log("fetching tags..."); +execSync("git fetch --tags --force"); + +const actualTags = execSync("git tag --list", { encoding: "utf-8" }).split(/\r?\n/).map(line => line.trim()); +const [previousReleasedVersion] = actualTags + .map(semverValid) + .filter(Boolean) + .sort(semverRcompare) + .filter(version => semverLte(version, currentVersion)); + +const npmVersionArgs = [ + "npm", + "version", + options.type, +]; + +if (options.preid) { + npmVersionArgs.push(`--preid=${options.preid}`); +} + +npmVersionArgs.push("--git-tag-version false"); + +execSync(npmVersionArgs.join(" "), { stdio: "ignore" }); + +const newVersion = new SemVer(readJsonSync("./package.json").version); + +const getMergedPrsArgs = [ + "gh", + "pr", + "list", + "--limit=500", // Should be big enough, if not we need to release more often ;) + "--state=merged", + "--base=master", + "--json mergeCommit,title,author,labels,number,milestone", +]; + +console.log("retreiving last 500 PRs to create release PR body..."); +const mergedPrs = JSON.parse(execSync(getMergedPrsArgs.join(" "), { encoding: "utf-8" })); +const milestoneRelevantPrs = mergedPrs.filter(pr => pr.milestone && pr.milestone.title === currentVersionMilestone); +const relaventPrsQuery = await Promise.all( + milestoneRelevantPrs.map(async pr => ({ + pr, + stdout: (await execP(`git tag v${previousReleasedVersion} --no-contains ${pr.mergeCommit.oid}`)).stdout, + })), +); +const relaventPrs = relaventPrsQuery + .filter(query => query.stdout) + .map(query => query.pr); + +const enhancementPrLabelName = "enhancement"; +const bugfixPrLabelName = "bug"; + +const enhancementPrs = relaventPrs.filter(pr => pr.labels.some(label => label.name === enhancementPrLabelName)); +const bugfixPrs = relaventPrs.filter(pr => pr.labels.some(label => label.name === bugfixPrLabelName)); +const maintenencePrs = relaventPrs.filter(pr => pr.labels.every(label => label.name !== bugfixPrLabelName && label.name !== enhancementPrLabelName)); + +console.log("Found:"); +console.log(`${enhancementPrs.length} enhancement PRs`); +console.log(`${bugfixPrs.length} bug fix PRs`); +console.log(`${maintenencePrs.length} maintenence PRs`); + +const prBodyLines = [ + `## Changes since ${previousReleasedVersion}`, + "", +]; + +if (enhancementPrs.length > 0) { + prBodyLines.push( + "## 🚀 Features", + "", + ...enhancementPrs.map(pr => `- ${pr.title} (**#${pr.number}**) https://github.com/${pr.author.login}`), + "", + ); +} + +if (bugfixPrs.length > 0) { + prBodyLines.push( + "## 🐛 Bug Fixes", + "", + ...bugfixPrs.map(pr => `- ${pr.title} (**#${pr.number}**) https://github.com/${pr.author.login}`), + "", + ); +} + +if (maintenencePrs.length > 0) { + prBodyLines.push( + "## 🧰 Maintenance", + "", + ...maintenencePrs.map(pr => `- ${pr.title} (**#${pr.number}**) https://github.com/${pr.author.login}`), + "", + ); +} + +const prBody = prBodyLines.join("\n"); +const prBase = newVersion.patch === 0 + ? "master" + : `release/v${newVersion.major}.${newVersion.minor}`; +const createPrArgs = [ + "pr", + "create", + "--base", prBase, + "--title", `release ${newVersion.format()}`, + "--label", "skip-changelog", + "--body-file", "-", +]; + +const createPrProcess = spawn("gh", createPrArgs, { stdio: "pipe" }); +let result = ""; + +createPrProcess.stdout.on("data", (chunk) => result += chunk); + +createPrProcess.stdin.write(prBody); +createPrProcess.stdin.end(); + +await new Promise((resolve) => { + createPrProcess.on("close", () => { + createPrProcess.stdout.removeAllListeners(); + resolve(); + }); +}); + +console.log(result); diff --git a/yarn.lock b/yarn.lock index 45b3738ea7..564b4e973b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1426,6 +1426,11 @@ dependencies: "@types/color-convert" "*" +"@types/command-line-args@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@types/command-line-args/-/command-line-args-5.2.0.tgz#adbb77980a1cc376bb208e3f4142e907410430f6" + integrity sha512-UuKzKpJJ/Ief6ufIaIzr3A/0XnluX7RvFgwkV89Yzvm77wCh1kFaFmqN8XEnGcN62EuHdedQjEMb8mYxFLGPyA== + "@types/connect-history-api-fallback@^1.3.5": version "1.3.5" resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae" @@ -2820,6 +2825,11 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +array-back@^3.0.1, array-back@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" + integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -3904,6 +3914,16 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" +command-line-args@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" + integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== + dependencies: + array-back "^3.1.0" + find-replace "^3.0.0" + lodash.camelcase "^4.3.0" + typical "^4.0.0" + commander@2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" @@ -5908,6 +5928,13 @@ find-npm-prefix@^1.0.2: resolved "https://registry.yarnpkg.com/find-npm-prefix/-/find-npm-prefix-1.0.2.tgz#8d8ce2c78b3b4b9e66c8acc6a37c231eb841cfdf" integrity sha512-KEftzJ+H90x6pcKtdXZEPsQse8/y/UnvzRKrOSQFprnrGaFuJ62fVkP34Iu2IYuMvyauCyoLTNkJZgrrGA2wkA== +find-replace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" + integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== + dependencies: + array-back "^3.0.1" + find-root@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" @@ -13146,6 +13173,11 @@ typescript@^4.5.5: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3" integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA== +typical@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" + integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== + uglify-js@^3.1.4: version "3.9.4" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.9.4.tgz#867402377e043c1fc7b102253a22b64e5862401b" From 74b4a752eb0e5c2cafa9d80d57a1a4874b65b2c9 Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 12 May 2022 21:18:25 +0300 Subject: [PATCH 16/82] Change engines.lens signature to only respect minimums (#5290) Co-authored-by: Jim Ehrismann <40840436+jim-docker@users.noreply.github.com> --- integration/__tests__/cluster-pages.tests.ts | 3 +- .../__tests__/extension-compatibility.test.ts | 128 ------------------ .../__tests__/is-compatible-extension.test.ts | 121 +++++++++++++++++ .../__tests__/lens-extension.test.ts | 1 + src/extensions/extension-compatibility.ts | 49 ------- .../extension-discovery.test.ts | 8 +- .../is-compatible-extension.ts | 61 ++++----- src/extensions/lens-extension.ts | 18 ++- src/main/menu/electron-menu-items.test.ts | 2 +- .../protocol-handler/__test__/router.test.ts | 4 + src/main/tray/tray-menu-items.test.ts | 2 +- .../+extensions/__tests__/extensions.test.tsx | 1 + .../+welcome/__test__/welcome.test.tsx | 2 +- .../kube-object-menu.test.tsx | 2 +- .../kube-object-status-icon.test.tsx | 2 +- .../components/status-bar/status-bar.test.tsx | 2 +- .../test-utils/get-renderer-extension-fake.ts | 2 +- 17 files changed, 179 insertions(+), 229 deletions(-) delete mode 100644 src/extensions/__tests__/extension-compatibility.test.ts create mode 100644 src/extensions/__tests__/is-compatible-extension.test.ts delete mode 100644 src/extensions/extension-compatibility.ts diff --git a/integration/__tests__/cluster-pages.tests.ts b/integration/__tests__/cluster-pages.tests.ts index 981628b1ba..0179656a01 100644 --- a/integration/__tests__/cluster-pages.tests.ts +++ b/integration/__tests__/cluster-pages.tests.ts @@ -39,7 +39,8 @@ utils.describeIf(minikubeReady(TEST_NAMESPACE))("Minikube based tests", () => { await frame.waitForSelector(`.Menu >> text="Remove"`); }); - it("opens cluster settings by clicking link in no-metrics area", async () => { + // FIXME: failed locally since metrics might already exist, cc @aleksfront + it.skip("opens cluster settings by clicking link in no-metrics area", async () => { await frame.locator("text=Open cluster settings >> nth=0").click(); await window.waitForSelector(`[data-testid="metrics-header"]`); }); diff --git a/src/extensions/__tests__/extension-compatibility.test.ts b/src/extensions/__tests__/extension-compatibility.test.ts deleted file mode 100644 index af9a28f59c..0000000000 --- a/src/extensions/__tests__/extension-compatibility.test.ts +++ /dev/null @@ -1,128 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ - -import { rawIsCompatibleExtension } from "../extension-compatibility"; -import { Console } from "console"; -import { stdout, stderr } from "process"; -import type { LensExtensionManifest } from "../lens-extension"; -import { SemVer } from "semver"; - -console = new Console(stdout, stderr); - -describe("extension compatibility", () => { - describe("appSemVer with no prerelease tag", () => { - const isCompatibleExtension = rawIsCompatibleExtension(new SemVer("5.0.3")); - - it("has no extension comparator", () => { - const manifest = { name: "extensionName", version: "0.0.1" }; - - expect(isCompatibleExtension(manifest)).toBe(false); - }); - - it.each([ - { - comparator: "", - expected: false, - }, - { - comparator: "bad comparator", - expected: false, - }, - { - comparator: "^4.0.0", - expected: false, - }, - { - comparator: "^5.0.0", - expected: true, - }, - { - comparator: "^6.0.0", - expected: false, - }, - { - comparator: "^4.0.0-alpha.1", - expected: false, - }, - { - comparator: "^5.0.0-alpha.1", - expected: true, - }, - { - comparator: "^6.0.0-alpha.1", - expected: false, - }, - ])("extension comparator test: %p", ({ comparator, expected }) => { - const manifest: LensExtensionManifest = { name: "extensionName", version: "0.0.1", engines: { lens: comparator }}; - - expect(isCompatibleExtension(manifest)).toBe(expected); - }); - }); - - describe("appSemVer with prerelease tag", () => { - const isCompatibleExtension = rawIsCompatibleExtension(new SemVer("5.0.3-beta.3")); - - it("^5.1.0 should work when lens' version is 5.1.0-latest.123456789", () => { - const comparer = rawIsCompatibleExtension(new SemVer("5.1.0-latest.123456789")); - - expect(comparer({ name: "extensionName", version: "0.0.1", engines: { lens: "^5.1.0" }})).toBe(true); - }); - - it("^5.1.0 should not when lens' version is 5.1.0-beta.1.123456789", () => { - const comparer = rawIsCompatibleExtension(new SemVer("5.1.0-beta.123456789")); - - expect(comparer({ name: "extensionName", version: "0.0.1", engines: { lens: "^5.1.0" }})).toBe(false); - }); - - it("^5.1.0 should not when lens' version is 5.1.0-alpha.1.123456789", () => { - const comparer = rawIsCompatibleExtension(new SemVer("5.1.0-alpha.123456789")); - - expect(comparer({ name: "extensionName", version: "0.0.1", engines: { lens: "^5.1.0" }})).toBe(false); - }); - - it("has no extension comparator", () => { - const manifest = { name: "extensionName", version: "0.0.1" }; - - expect(isCompatibleExtension(manifest)).toBe(false); - }); - - it.each([ - { - comparator: "", - expected: false, - }, - { - comparator: "bad comparator", - expected: false, - }, - { - comparator: "^4.0.0", - expected: false, - }, - { - comparator: "^5.0.0", - expected: true, - }, - { - comparator: "^6.0.0", - expected: false, - }, - { - comparator: "^4.0.0-alpha.1", - expected: false, - }, - { - comparator: "^5.0.0-alpha.1", - expected: true, - }, - { - comparator: "^6.0.0-alpha.1", - expected: false, - }, - ])("extension comparator test: %p", ({ comparator, expected }) => { - expect(isCompatibleExtension({ name: "extensionName", version: "0.0.1", engines: { lens: comparator }})).toBe(expected); - }); - }); -}); diff --git a/src/extensions/__tests__/is-compatible-extension.test.ts b/src/extensions/__tests__/is-compatible-extension.test.ts new file mode 100644 index 0000000000..2580b509dd --- /dev/null +++ b/src/extensions/__tests__/is-compatible-extension.test.ts @@ -0,0 +1,121 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import semver from "semver"; +import { + isCompatibleExtension, +} from "../extension-discovery/is-compatible-extension/is-compatible-extension"; +import type { LensExtensionManifest } from "../lens-extension"; + +describe("Extension/App versions compatibility check", () => { + it("is compatible with exact version matching", () => { + expect(isCompatibleExtension({ + appSemVer: semver.coerce("5.5.0"), + })(getExtensionManifestMock({ + lensEngine: "5.5.0", + }))).toBeTruthy(); + }); + + it("is compatible with upper %PATCH versions of base app", () => { + expect(isCompatibleExtension({ + appSemVer: semver.coerce("5.5.5"), + })(getExtensionManifestMock({ + lensEngine: "5.5.0", + }))).toBeTruthy(); + }); + + it("is compatible with upper %MINOR version of base app", () => { + expect(isCompatibleExtension({ + appSemVer: semver.coerce("5.6.0"), + })(getExtensionManifestMock({ + lensEngine: "5.5.0", + }))).toBeTruthy(); + + expect(isCompatibleExtension({ + appSemVer: semver.coerce("5.5.0-alpha.0"), + })(getExtensionManifestMock({ + lensEngine: "^5.5.0", + }))).toBeTruthy(); + + expect(isCompatibleExtension({ + appSemVer: semver.coerce("5.5"), + })(getExtensionManifestMock({ + lensEngine: "^5.6.0", + }))).toBeFalsy(); + }); + + it("is not compatible with upper %MAJOR version of base app", () => { + expect(isCompatibleExtension({ + appSemVer: semver.coerce("5.5.0"), // current lens-version + })(getExtensionManifestMock({ + lensEngine: "6.0.0", + }))).toBeFalsy(); // extension with lens@6.0 is not compatible with app@5.5 + + expect(isCompatibleExtension({ + appSemVer: semver.coerce("6.0.0"), // current lens-version + })(getExtensionManifestMock({ + lensEngine: "5.5.0", + }))).toBeFalsy(); // extension with lens@5.5 is not compatible with app@6.0 + }); + + it("is compatible with lensEngine with prerelease", () => { + expect(isCompatibleExtension({ + appSemVer: semver.parse("5.5.0-alpha.0"), + })(getExtensionManifestMock({ + lensEngine: "^5.4.0-alpha.0", + }))).toBeTruthy(); + }); + + describe("supported formats for manifest.engines.lens", () => { + it("short version format for engines.lens", () => { + expect(isCompatibleExtension({ + appSemVer: semver.coerce("5.5.0"), + })(getExtensionManifestMock({ + lensEngine: "5.5", + }))).toBeTruthy(); + }); + + it("validates version and throws if incorrect format", () => { + expect(() => isCompatibleExtension({ + appSemVer: semver.coerce("1.0.0"), + })(getExtensionManifestMock({ + lensEngine: "1.0", + }))).not.toThrow(); + + expect(() => isCompatibleExtension({ + appSemVer: semver.coerce("1.0.0"), + })(getExtensionManifestMock({ + lensEngine: "^1.0", + }))).not.toThrow(); + + expect(() => isCompatibleExtension({ + appSemVer: semver.coerce("1.0.0"), + })(getExtensionManifestMock({ + lensEngine: ">=2.0", + }))).toThrow(/Invalid format/i); + }); + + it("'*' cannot be used for any version matching (at least in the prefix)", () => { + expect(() => isCompatibleExtension({ + appSemVer: semver.coerce("1.0.0"), + })(getExtensionManifestMock({ + lensEngine: "*", + }))).toThrowError(/Invalid format/i); + }); + }); +}); + +function getExtensionManifestMock( + { + lensEngine = "1.0", + } = {}): LensExtensionManifest { + return { + name: "some-extension", + version: "1.0", + engines: { + lens: lensEngine, + }, + }; +} diff --git a/src/extensions/__tests__/lens-extension.test.ts b/src/extensions/__tests__/lens-extension.test.ts index fe46d32afc..052a3202df 100644 --- a/src/extensions/__tests__/lens-extension.test.ts +++ b/src/extensions/__tests__/lens-extension.test.ts @@ -17,6 +17,7 @@ describe("lens extension", () => { manifest: { name: "foo-bar", version: "0.1.1", + engines: { lens: "^5.5.0" }, }, id: "/this/is/fake/package.json", absolutePath: "/absolute/fake/", diff --git a/src/extensions/extension-compatibility.ts b/src/extensions/extension-compatibility.ts deleted file mode 100644 index ab94a5ad43..0000000000 --- a/src/extensions/extension-compatibility.ts +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ - -import semver, { SemVer } from "semver"; -import { appSemVer, isProduction } from "../common/vars"; -import type { LensExtensionManifest } from "./lens-extension"; - -export function rawIsCompatibleExtension(version: SemVer): (manifest: LensExtensionManifest) => boolean { - const { major, minor, patch, prerelease: oldPrelease } = version; - let prerelease = ""; - - if (oldPrelease.length > 0) { - const [first] = oldPrelease; - - if (first === "alpha" || first === "beta" || first === "rc") { - /** - * Strip the build IDs and "latest" prerelease tag as that is not really - * a part of API version - */ - prerelease = `-${oldPrelease.slice(0, 2).join(".")}`; - } - } - - /** - * We unfortunately have to format as string because the constructor only - * takes an instance or a string. - */ - const strippedVersion = new SemVer(`${major}.${minor}.${patch}${prerelease}`, { includePrerelease: true }); - - return (manifest: LensExtensionManifest): boolean => { - if (manifest.engines?.lens) { - /** - * include Lens's prerelease tag in the matching so the extension's - * compatibility is not limited by it - */ - return semver.satisfies(strippedVersion, manifest.engines.lens, { includePrerelease: true }); - } - - return false; - }; -} - -export const isCompatibleExtension = rawIsCompatibleExtension(appSemVer); - -export function isCompatibleBundledExtension(manifest: LensExtensionManifest): boolean { - return !isProduction || manifest.version === appSemVer.raw; -} diff --git a/src/extensions/extension-discovery/extension-discovery.test.ts b/src/extensions/extension-discovery/extension-discovery.test.ts index 84737a50d2..eed474cd85 100644 --- a/src/extensions/extension-discovery/extension-discovery.test.ts +++ b/src/extensions/extension-discovery/extension-discovery.test.ts @@ -74,6 +74,9 @@ describe("ExtensionDiscovery", () => { return { name: "my-extension", version: "1.0.0", + engines: { + lens: "5.0.0", + }, }; }); @@ -104,10 +107,13 @@ describe("ExtensionDiscovery", () => { id: path.normalize("some-directory-for-user-data/node_modules/my-extension/package.json"), isBundled: false, isEnabled: false, - isCompatible: false, + isCompatible: true, manifest: { name: "my-extension", version: "1.0.0", + engines: { + lens: "5.0.0", + }, }, manifestPath: path.normalize("some-directory-for-user-data/node_modules/my-extension/package.json"), }); diff --git a/src/extensions/extension-discovery/is-compatible-extension/is-compatible-extension.ts b/src/extensions/extension-discovery/is-compatible-extension/is-compatible-extension.ts index d8f72d4f9f..de601ee339 100644 --- a/src/extensions/extension-discovery/is-compatible-extension/is-compatible-extension.ts +++ b/src/extensions/extension-discovery/is-compatible-extension/is-compatible-extension.ts @@ -2,51 +2,38 @@ * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ -import semver, { SemVer } from "semver"; +import semver, { type SemVer } from "semver"; import type { LensExtensionManifest } from "../../lens-extension"; interface Dependencies { appSemVer: SemVer; } -export const isCompatibleExtension = ({ - appSemVer, -}: Dependencies): ((manifest: LensExtensionManifest) => boolean) => { - const { major, minor, patch, prerelease: oldPrelease } = appSemVer; - let prerelease = ""; - - if (oldPrelease.length > 0) { - const [first] = oldPrelease; - - if (first === "alpha" || first === "beta" || first === "rc") { - /** - * Strip the build IDs and "latest" prerelease tag as that is not really - * a part of API version - */ - prerelease = `-${oldPrelease.slice(0, 2).join(".")}`; - } - } - - /** - * We unfortunately have to format as string because the constructor only - * takes an instance or a string. - */ - const strippedVersion = new SemVer( - `${major}.${minor}.${patch}${prerelease}`, - { includePrerelease: true }, - ); - +export const isCompatibleExtension = ({ appSemVer }: Dependencies): ((manifest: LensExtensionManifest) => boolean) => { return (manifest: LensExtensionManifest): boolean => { - if (manifest.engines?.lens) { - /** - * include Lens's prerelease tag in the matching so the extension's - * compatibility is not limited by it - */ - return semver.satisfies(strippedVersion, manifest.engines.lens, { - includePrerelease: true, - }); + const appVersion = appSemVer.raw.split("-")[0]; // drop prerelease version if any, e.g. "-alpha.0" + const manifestLensEngine = manifest.engines.lens; + const validVersion = manifestLensEngine.match(/^[\^0-9]\d*\.\d+\b/); // must start from ^ or number + + if (!validVersion) { + const errorInfo = [ + `Invalid format for "manifest.engines.lens"="${manifestLensEngine}"`, + `Range versions can only be specified starting with '^'.`, + `Otherwise it's recommended to use plain %MAJOR.%MINOR to match with supported Lens version.`, + ].join("\n"); + + throw new Error(errorInfo); } - return false; + const { major: extMajor, minor: extMinor } = semver.coerce(manifestLensEngine, { + loose: true, + includePrerelease: false, + }); + const supportedVersionsByExtension: string = semver.validRange(`^${extMajor}.${extMinor}`); + + return semver.satisfies(appVersion, supportedVersionsByExtension, { + loose: true, + includePrerelease: false, + }); }; }; diff --git a/src/extensions/lens-extension.ts b/src/extensions/lens-extension.ts index 36a0955f47..d763aa5535 100644 --- a/src/extensions/lens-extension.ts +++ b/src/extensions/lens-extension.ts @@ -4,17 +4,14 @@ */ import type { InstalledExtension } from "./extension-discovery/extension-discovery"; -import { action, observable, makeObservable, computed } from "mobx"; +import { action, computed, makeObservable, observable } from "mobx"; import logger from "../main/logger"; import type { ProtocolHandlerRegistration } from "./registries"; import type { PackageJson } from "type-fest"; import type { Disposer } from "../common/utils"; import { disposer } from "../common/utils"; -import type { - LensExtensionDependencies } from "./lens-extension-set-dependencies"; -import { - setLensExtensionDependencies, -} from "./lens-extension-set-dependencies"; +import type { LensExtensionDependencies } from "./lens-extension-set-dependencies"; +import { setLensExtensionDependencies } from "./lens-extension-set-dependencies"; export type LensExtensionId = string; // path to manifest (package.json) export type LensExtensionConstructor = new (...args: ConstructorParameters) => LensExtension; @@ -24,6 +21,15 @@ export interface LensExtensionManifest extends PackageJson { version: string; main?: string; // path to %ext/dist/main.js renderer?: string; // path to %ext/dist/renderer.js + /** + * Supported Lens version engine by extension could be defined in `manifest.engines.lens` + * Only MAJOR.MINOR version is taken in consideration. + */ + engines: { + lens: string; // "semver"-package format + npm?: string; + node?: string; + }; } export const Disposers = Symbol(); diff --git a/src/main/menu/electron-menu-items.test.ts b/src/main/menu/electron-menu-items.test.ts index b1b2dd61b1..7ad7dcb8e8 100644 --- a/src/main/menu/electron-menu-items.test.ts +++ b/src/main/menu/electron-menu-items.test.ts @@ -109,7 +109,7 @@ class SomeTestExtension extends LensMainExtension { isBundled: false, isCompatible: false, isEnabled: false, - manifest: { name: id, version: "some-version" }, + manifest: { name: id, version: "some-version", engines: { lens: "^5.5.0" }}, manifestPath: "irrelevant", }); diff --git a/src/main/protocol-handler/__test__/router.test.ts b/src/main/protocol-handler/__test__/router.test.ts index d8c88f7f22..d3d03dbf99 100644 --- a/src/main/protocol-handler/__test__/router.test.ts +++ b/src/main/protocol-handler/__test__/router.test.ts @@ -87,6 +87,7 @@ describe("protocol router tests", () => { manifest: { name: "@mirantis/minikube", version: "0.1.1", + engines: { lens: "^5.5.0" }, }, isBundled: false, isEnabled: true, @@ -162,6 +163,7 @@ describe("protocol router tests", () => { manifest: { name: "@foobar/icecream", version: "0.1.1", + engines: { lens: "^5.5.0" }, }, isBundled: false, isEnabled: true, @@ -203,6 +205,7 @@ describe("protocol router tests", () => { manifest: { name: "@foobar/icecream", version: "0.1.1", + engines: { lens: "^5.5.0" }, }, isBundled: false, isEnabled: true, @@ -228,6 +231,7 @@ describe("protocol router tests", () => { manifest: { name: "icecream", version: "0.1.1", + engines: { lens: "^5.5.0" }, }, isBundled: false, isEnabled: true, diff --git a/src/main/tray/tray-menu-items.test.ts b/src/main/tray/tray-menu-items.test.ts index da9f2f2745..c25010967d 100644 --- a/src/main/tray/tray-menu-items.test.ts +++ b/src/main/tray/tray-menu-items.test.ts @@ -113,7 +113,7 @@ class SomeTestExtension extends LensMainExtension { isBundled: false, isCompatible: false, isEnabled: false, - manifest: { name: id, version: "some-version" }, + manifest: { name: id, version: "some-version", engines: { lens: "^5.5.0" }}, manifestPath: "irrelevant", }); diff --git a/src/renderer/components/+extensions/__tests__/extensions.test.tsx b/src/renderer/components/+extensions/__tests__/extensions.test.tsx index a29e9bb004..ddb98540a1 100644 --- a/src/renderer/components/+extensions/__tests__/extensions.test.tsx +++ b/src/renderer/components/+extensions/__tests__/extensions.test.tsx @@ -77,6 +77,7 @@ describe("Extensions", () => { manifest: { name: "test", version: "1.2.3", + engines: { lens: "^5.5.0" }, }, absolutePath: "/absolute/path", manifestPath: "/symlinked/path/package.json", diff --git a/src/renderer/components/+welcome/__test__/welcome.test.tsx b/src/renderer/components/+welcome/__test__/welcome.test.tsx index ed41dcdd31..55be6f1fd9 100644 --- a/src/renderer/components/+welcome/__test__/welcome.test.tsx +++ b/src/renderer/components/+welcome/__test__/welcome.test.tsx @@ -102,7 +102,7 @@ class TestExtension extends LensRendererExtension { isBundled: false, isCompatible: false, isEnabled: false, - manifest: { name: id, version: "some-version" }, + manifest: { name: id, version: "some-version", engines: { lens: "^5.5.0" }}, manifestPath: "irrelevant", }); diff --git a/src/renderer/components/kube-object-menu/kube-object-menu.test.tsx b/src/renderer/components/kube-object-menu/kube-object-menu.test.tsx index 1624b0b9b4..166435ee4f 100644 --- a/src/renderer/components/kube-object-menu/kube-object-menu.test.tsx +++ b/src/renderer/components/kube-object-menu/kube-object-menu.test.tsx @@ -42,7 +42,7 @@ class SomeTestExtension extends LensRendererExtension { isBundled: false, isCompatible: false, isEnabled: false, - manifest: { name: "some-id", version: "some-version" }, + manifest: { name: "some-id", version: "some-version", engines: { lens: "^5.5.0" }}, manifestPath: "irrelevant", }); diff --git a/src/renderer/components/kube-object-status-icon/kube-object-status-icon.test.tsx b/src/renderer/components/kube-object-status-icon/kube-object-status-icon.test.tsx index c2338f634c..c4354db3b3 100644 --- a/src/renderer/components/kube-object-status-icon/kube-object-status-icon.test.tsx +++ b/src/renderer/components/kube-object-status-icon/kube-object-status-icon.test.tsx @@ -255,7 +255,7 @@ class SomeTestExtension extends LensRendererExtension { isBundled: false, isCompatible: false, isEnabled: false, - manifest: { name: "some-id", version: "some-version" }, + manifest: { name: "some-id", version: "some-version", engines: { lens: "^5.5.0" }}, manifestPath: "irrelevant", }); diff --git a/src/renderer/components/status-bar/status-bar.test.tsx b/src/renderer/components/status-bar/status-bar.test.tsx index 0dbccb7644..dbcfa59adf 100644 --- a/src/renderer/components/status-bar/status-bar.test.tsx +++ b/src/renderer/components/status-bar/status-bar.test.tsx @@ -26,7 +26,7 @@ class SomeTestExtension extends LensRendererExtension { isBundled: false, isCompatible: false, isEnabled: false, - manifest: { name: "some-id", version: "some-version" }, + manifest: { name: "some-id", version: "some-version", engines: { lens: "^5.5.0" }}, manifestPath: "irrelevant", }); diff --git a/src/renderer/components/test-utils/get-renderer-extension-fake.ts b/src/renderer/components/test-utils/get-renderer-extension-fake.ts index 7f007b3bc3..015eb8c68f 100644 --- a/src/renderer/components/test-utils/get-renderer-extension-fake.ts +++ b/src/renderer/components/test-utils/get-renderer-extension-fake.ts @@ -13,7 +13,7 @@ export const getRendererExtensionFake = ({ id, ...rest }: Partial Date: Thu, 12 May 2022 14:33:27 -0400 Subject: [PATCH 17/82] Remove outdated @types/react-select (#5384) --- package.json | 1 - yarn.lock | 13 ++----------- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index 0e6d7168d7..92ecc76fa7 100644 --- a/package.json +++ b/package.json @@ -314,7 +314,6 @@ "@types/react-beautiful-dnd": "^13.1.2", "@types/react-dom": "^17.0.14", "@types/react-router-dom": "^5.3.3", - "@types/react-select": "3.1.2", "@types/react-table": "^7.7.11", "@types/react-virtualized-auto-sizer": "^1.0.1", "@types/react-window": "^1.8.5", diff --git a/yarn.lock b/yarn.lock index 564b4e973b..9147cc2bf6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1812,7 +1812,7 @@ dependencies: "@types/react" "*" -"@types/react-dom@*", "@types/react-dom@<18.0.0", "@types/react-dom@^17.0.14": +"@types/react-dom@<18.0.0", "@types/react-dom@^17.0.14": version "17.0.16" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.16.tgz#7caba93cf2806c51e64d620d8dff4bae57e06cc4" integrity sha512-DWcXf8EbMrO/gWnQU7Z88Ws/p16qxGpPyjTKTpmBSFKeE+HveVubqGO1CVK7FrwlWD5MuOcvh8gtd0/XO38NdQ== @@ -1846,15 +1846,6 @@ "@types/history" "*" "@types/react" "*" -"@types/react-select@3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@types/react-select/-/react-select-3.1.2.tgz#38627df4b49be9b28f800ed72b35d830369a624b" - integrity sha512-ygvR/2FL87R2OLObEWFootYzkvm67LRA+URYEAcBuvKk7IXmdsnIwSGm60cVXGaqkJQHozb2Cy1t94tCYb6rJA== - dependencies: - "@types/react" "*" - "@types/react-dom" "*" - "@types/react-transition-group" "*" - "@types/react-table@^7.7.11": version "7.7.11" resolved "https://registry.yarnpkg.com/@types/react-table/-/react-table-7.7.11.tgz#0efbb69aabf5b4b9c26c4c027b1e1ceb0f342303" @@ -1862,7 +1853,7 @@ dependencies: "@types/react" "*" -"@types/react-transition-group@*", "@types/react-transition-group@^4.2.0", "@types/react-transition-group@^4.4.0": +"@types/react-transition-group@^4.2.0", "@types/react-transition-group@^4.4.0": version "4.4.4" resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.4.tgz#acd4cceaa2be6b757db61ed7b432e103242d163e" integrity sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug== From c376b848c93d49dc8a6232bc1e03656410c1000d Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Thu, 12 May 2022 15:13:30 -0400 Subject: [PATCH 18/82] Remove @types/react-select from npm/extensions/package.json (#5386) --- src/extensions/npm/extensions/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/src/extensions/npm/extensions/package.json b/src/extensions/npm/extensions/package.json index 09db697b35..26356b6565 100644 --- a/src/extensions/npm/extensions/package.json +++ b/src/extensions/npm/extensions/package.json @@ -17,7 +17,6 @@ }, "dependencies": { "@types/node": "14.17.14", - "@types/react-select": "3.1.2", "@material-ui/core": "4.12.3", "conf": "^7.0.1", "typed-emitter": "^1.3.1" From e0df7e9d20c6328a3d14be6c736efa9b64f3fc9e Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Fri, 13 May 2022 14:18:50 -0400 Subject: [PATCH 19/82] Change update default to update on quit (#5390) --- src/main/app-updater.ts | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/src/main/app-updater.ts b/src/main/app-updater.ts index 0b7a5609b8..363575e4d3 100644 --- a/src/main/app-updater.ts +++ b/src/main/app-updater.ts @@ -28,10 +28,9 @@ function handleAutoUpdateBackChannel(event: Electron.IpcMainEvent, ...[arg]: Upd autoUpdater.quitAndInstall(true, true); } else { logger.info(`${AutoUpdateLogPrefix}: User chose to update on quit`); - autoUpdater.autoInstallOnAppQuit = true; } } else { - logger.info(`${AutoUpdateLogPrefix}: User chose not to update`); + logger.info(`${AutoUpdateLogPrefix}: User chose not to update, will update on quit anyway`); } } @@ -44,9 +43,9 @@ autoUpdater.logger = { /** * starts the automatic update checking - * @param interval milliseconds between interval to check on, defaults to 24h + * @param interval milliseconds between interval to check on, defaults to 2h */ -export const startUpdateChecking = once(function (interval = 1000 * 60 * 60 * 24): void { +export const startUpdateChecking = once(function (interval = 1000 * 60 * 60 * 2): void { if (!isAutoUpdateEnabled() || isTestEnv) { return; } @@ -54,26 +53,17 @@ export const startUpdateChecking = once(function (interval = 1000 * 60 * 60 * 24 const userStore = UserStore.getInstance(); autoUpdater.autoDownload = false; - autoUpdater.autoInstallOnAppQuit = false; + autoUpdater.autoInstallOnAppQuit = true; autoUpdater.channel = userStore.updateChannel; autoUpdater.allowDowngrade = userStore.isAllowedToDowngrade; autoUpdater .on("update-available", (info: UpdateInfo) => { - if (autoUpdater.autoInstallOnAppQuit) { - // a previous auto-update loop was completed with YES+LATER, check if same version - if (installVersion === info.version) { - // same version, don't broadcast - return; - } + if (installVersion === info.version) { + // same version, don't broadcast + return; } - /** - * This should be always set to false here because it is the reasonable - * default. Namely, if a don't auto update to a version that the user - * didn't ask for. - */ - autoUpdater.autoInstallOnAppQuit = false; installVersion = info.version; autoUpdater.downloadUpdate() From 381d77c63344cbe985af480442eec6ca928e7a8e Mon Sep 17 00:00:00 2001 From: Roman Date: Fri, 13 May 2022 23:14:37 +0300 Subject: [PATCH 20/82] Refactoring extension-app compatibility checks (#5389) --- .../__tests__/is-compatible-extension.test.ts | 119 ++++++------------ 1 file changed, 36 insertions(+), 83 deletions(-) diff --git a/src/extensions/__tests__/is-compatible-extension.test.ts b/src/extensions/__tests__/is-compatible-extension.test.ts index 2580b509dd..b5c731b4b7 100644 --- a/src/extensions/__tests__/is-compatible-extension.test.ts +++ b/src/extensions/__tests__/is-compatible-extension.test.ts @@ -9,108 +9,61 @@ import { } from "../extension-discovery/is-compatible-extension/is-compatible-extension"; import type { LensExtensionManifest } from "../lens-extension"; -describe("Extension/App versions compatibility check", () => { +describe("Extension/App versions compatibility checks", () => { it("is compatible with exact version matching", () => { - expect(isCompatibleExtension({ - appSemVer: semver.coerce("5.5.0"), - })(getExtensionManifestMock({ - lensEngine: "5.5.0", - }))).toBeTruthy(); + expect(isCompatible({ extLensEngineVersion: "5.5.0", appVersion: "5.5.0" })).toBeTruthy(); }); it("is compatible with upper %PATCH versions of base app", () => { - expect(isCompatibleExtension({ - appSemVer: semver.coerce("5.5.5"), - })(getExtensionManifestMock({ - lensEngine: "5.5.0", - }))).toBeTruthy(); + expect(isCompatible({ extLensEngineVersion: "5.5.0", appVersion: "5.5.5" })).toBeTruthy(); }); - it("is compatible with upper %MINOR version of base app", () => { - expect(isCompatibleExtension({ - appSemVer: semver.coerce("5.6.0"), - })(getExtensionManifestMock({ - lensEngine: "5.5.0", - }))).toBeTruthy(); - - expect(isCompatibleExtension({ - appSemVer: semver.coerce("5.5.0-alpha.0"), - })(getExtensionManifestMock({ - lensEngine: "^5.5.0", - }))).toBeTruthy(); - - expect(isCompatibleExtension({ - appSemVer: semver.coerce("5.5"), - })(getExtensionManifestMock({ - lensEngine: "^5.6.0", - }))).toBeFalsy(); + it("is compatible with higher %MINOR version of base app", () => { + expect(isCompatible({ extLensEngineVersion: "5.5.0", appVersion: "5.6.0" })).toBeTruthy(); }); - it("is not compatible with upper %MAJOR version of base app", () => { - expect(isCompatibleExtension({ - appSemVer: semver.coerce("5.5.0"), // current lens-version - })(getExtensionManifestMock({ - lensEngine: "6.0.0", - }))).toBeFalsy(); // extension with lens@6.0 is not compatible with app@5.5 - - expect(isCompatibleExtension({ - appSemVer: semver.coerce("6.0.0"), // current lens-version - })(getExtensionManifestMock({ - lensEngine: "5.5.0", - }))).toBeFalsy(); // extension with lens@5.5 is not compatible with app@6.0 + it("is not compatible with higher %MAJOR version of base app", () => { + expect(isCompatible({ extLensEngineVersion: "5.6.0", appVersion: "6.0.0" })).toBeFalsy(); // extension for lens@5 not compatible with lens@6 + expect(isCompatible({ extLensEngineVersion: "6.0.0", appVersion: "5.6.0" })).toBeFalsy(); }); it("is compatible with lensEngine with prerelease", () => { - expect(isCompatibleExtension({ - appSemVer: semver.parse("5.5.0-alpha.0"), - })(getExtensionManifestMock({ - lensEngine: "^5.4.0-alpha.0", - }))).toBeTruthy(); + expect(isCompatible({ + extLensEngineVersion: "^5.4.0-alpha.0", + appVersion: "5.5.0-alpha.0", + })).toBeTruthy(); }); - describe("supported formats for manifest.engines.lens", () => { - it("short version format for engines.lens", () => { - expect(isCompatibleExtension({ - appSemVer: semver.coerce("5.5.0"), - })(getExtensionManifestMock({ - lensEngine: "5.5", - }))).toBeTruthy(); - }); + it("supports short version format for manifest.engines.lens", () => { + expect(isCompatible({ extLensEngineVersion: "5.5", appVersion: "5.5.1" })).toBeTruthy(); + }); - it("validates version and throws if incorrect format", () => { - expect(() => isCompatibleExtension({ - appSemVer: semver.coerce("1.0.0"), - })(getExtensionManifestMock({ - lensEngine: "1.0", - }))).not.toThrow(); + it("throws for incorrect or not supported version format", () => { + expect(() => isCompatible({ + extLensEngineVersion: ">=2.0", + appVersion: "2.0", + })).toThrow(/Invalid format/i); - expect(() => isCompatibleExtension({ - appSemVer: semver.coerce("1.0.0"), - })(getExtensionManifestMock({ - lensEngine: "^1.0", - }))).not.toThrow(); + expect(() => isCompatible({ + extLensEngineVersion: "~2.0", + appVersion: "2.0", + })).toThrow(/Invalid format/i); - expect(() => isCompatibleExtension({ - appSemVer: semver.coerce("1.0.0"), - })(getExtensionManifestMock({ - lensEngine: ">=2.0", - }))).toThrow(/Invalid format/i); - }); - - it("'*' cannot be used for any version matching (at least in the prefix)", () => { - expect(() => isCompatibleExtension({ - appSemVer: semver.coerce("1.0.0"), - })(getExtensionManifestMock({ - lensEngine: "*", - }))).toThrowError(/Invalid format/i); - }); + expect(() => isCompatible({ + extLensEngineVersion: "*", + appVersion: "1.0", + })).toThrow(/Invalid format/i); }); }); -function getExtensionManifestMock( - { - lensEngine = "1.0", - } = {}): LensExtensionManifest { +function isCompatible({ extLensEngineVersion = "^1.0", appVersion = "1.0" } = {}): boolean { + const appSemVer = semver.coerce(appVersion); + const extensionManifestMock = getExtensionManifestMock(extLensEngineVersion); + + return isCompatibleExtension({ appSemVer })(extensionManifestMock); +} + +function getExtensionManifestMock(lensEngine = "1.0"): LensExtensionManifest { return { name: "some-extension", version: "1.0", From dfcb7c33309621237245127b34d67b5134743517 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Mon, 16 May 2022 07:17:57 -0400 Subject: [PATCH 21/82] Turn on strict mode in tsconfig.json, some helpful lints, and required cleanup where strictness necessitates it (#5195) * Turn on strict mode in tsconfig.json - Add route, clusterRoute, and payloadValidatedClusterRoute helper functions to improve types with backend routes - Turn on the following new lints: - react/jsx-first-prop-new-line - react/jsx-wrap-multilines - react/jsx-one-expression-per-line - react/jsx-max-props-per-line - react/jsx-indent - react/jsx-indent-props Signed-off-by: Sebastian Malton * fix build Signed-off-by: Sebastian Malton * Replace KubeObject scope strings with enum Signed-off-by: Sebastian Malton * Revert package.json version changes Signed-off-by: Sebastian Malton * revert move hostedCluster(Id) Signed-off-by: Sebastian Malton * change some type param names to be not single letters Signed-off-by: Sebastian Malton * remove copy-extension-themes Signed-off-by: Sebastian Malton * add new make clean action Signed-off-by: Sebastian Malton * fix build to not use webpack for generating types Signed-off-by: Sebastian Malton * fix kube-object-menu.test.tsx Signed-off-by: Sebastian Malton * fix select.test.tsx Signed-off-by: Sebastian Malton * fix catalog.test.tsx Signed-off-by: Sebastian Malton * revert move fileNameMigration to index Signed-off-by: Sebastian Malton * fix ref logic error Signed-off-by: Sebastian Malton * fix log-resource-selector.test.tsx tests Signed-off-by: Sebastian Malton * fix dock-store.test.ts test by overriding createStorage to not touch file system Signed-off-by: Sebastian Malton * fix cluster.test.ts tests Signed-off-by: Sebastian Malton * fix kube=api.test.ts Signed-off-by: Sebastian Malton * fixed hotbar-store.test.ts Signed-off-by: Sebastian Malton * fix kubeconfig-manager.test.ts Signed-off-by: Sebastian Malton * fix cluster-role-bindings/__tests__/dialog.test.tsx Signed-off-by: Sebastian Malton * fix role-bindings/__tests__/dialog.test.tsx Signed-off-by: Sebastian Malton * fix pods.test.ts Signed-off-by: Sebastian Malton * fix delete-cluster-dialog.test.tsx Signed-off-by: Sebastian Malton * fix daemonset.store.test.ts Signed-off-by: Sebastian Malton * fix replicaset.store.test.ts Signed-off-by: Sebastian Malton * fix statefulsets/dialog/dialog.test.tsx Signed-off-by: Sebastian Malton * fix replicasets/scale-dialog/dialog.test.tsx Signed-off-by: Sebastian Malton * fix deployments.store.test.ts Signed-off-by: Sebastian Malton * fix deployments/scale/dialog.test.tsx Signed-off-by: Sebastian Malton * fix cronjob.store.test.ts Signed-off-by: Sebastian Malton * fix stateful-set.api.test.ts Signed-off-by: Sebastian Malton * fix deployment.api.test.ts Signed-off-by: Sebastian Malton * fix api-manager.test.ts Signed-off-by: Sebastian Malton * fix statefulset.store.test.ts Signed-off-by: Sebastian Malton * fix job.store.test.ts Signed-off-by: Sebastian Malton * fix pods.store.test.ts Signed-off-by: Sebastian Malton * fix scroll-spy.test.tsx Signed-off-by: Sebastian Malton * fix hotbar-remove-command.test.tsx Signed-off-by: Sebastian Malton * fix catalog-entity-registry.test.ts Signed-off-by: Sebastian Malton * fix welcome.test.tsx Signed-off-by: Sebastian Malton * fix verify-that-all-routes-have-route-component.test.ts Signed-off-by: Sebastian Malton * fix pod-tolerations.test.tsx Signed-off-by: Sebastian Malton * better fix for previous 3 fixes, plus also select.test.tsx Signed-off-by: Sebastian Malton * fix kube-object-menu.test.tsx Signed-off-by: Sebastian Malton * fix app-paths.test.ts Signed-off-by: Sebastian Malton * fix dock-tabs.test.tsx Signed-off-by: Sebastian Malton * fix isReactNode typing Signed-off-by: Sebastian Malton * fix sub-title.tsx Signed-off-by: Sebastian Malton * fix drawer.tsx Signed-off-by: Sebastian Malton * fix list-layout.tsx and header.tsx Signed-off-by: Sebastian Malton * fix error-boundary.tsx Signed-off-by: Sebastian Malton * fix upgrade-chart/store.ts and dock-tab.store.ts Signed-off-by: Sebastian Malton * fix install-chart/store.ts Signed-off-by: Sebastian Malton * fix edit-resource/store.ts Signed-off-by: Sebastian Malton * fix create-resource/store.ts Signed-off-by: Sebastian Malton * fix namespace-select.tsx Signed-off-by: Sebastian Malton * fix namespace-select-filter.tsx Signed-off-by: Sebastian Malton * fix crd-list.tsx Signed-off-by: Sebastian Malton * fix wrong types for extensions Signed-off-by: Sebastian Malton * fix circular dependency Signed-off-by: Sebastian Malton * fix circular dependency on catalogCategoryRegistry Signed-off-by: Sebastian Malton * fix api-kube Signed-off-by: Sebastian Malton * fix type errors, most .isMulti for storing in a Set Signed-off-by: Sebastian Malton * fix is-compatible-extension.test.ts types Signed-off-by: Sebastian Malton --- .eslintrc.js | 60 + Makefile | 16 +- build/build_theme_vars.ts | 4 +- build/download_binaries.ts | 15 +- build/tsconfig.json | 6 + .../package-lock.json | 2374 ------------ .../metrics-cluster-feature/package-lock.json | 2380 ------------ .../src/metrics-settings.tsx | 20 +- extensions/node-menu/package-lock.json | 2374 ------------ extensions/node-menu/src/node-menu.tsx | 28 +- extensions/pod-menu/package-lock.json | 2367 ------------ extensions/pod-menu/src/attach-menu.tsx | 12 +- extensions/pod-menu/src/logs-menu.tsx | 12 +- extensions/pod-menu/src/shell-menu.tsx | 12 +- integration/__tests__/cluster-pages.tests.ts | 7 +- .../__tests__/command-palette.tests.ts | 6 +- integration/helpers/utils.ts | 4 + integration/tsconfig.json | 6 + package.json | 15 +- ...tion-using-application-menu.test.tsx.snap} | 8 +- ...avigation-using-application-menu.test.tsx} | 12 +- ...ab-navigation-for-extensions.test.tsx.snap | 124 +- ...debar-and-tab-navigation-for-core.test.tsx | 39 +- ...and-tab-navigation-for-extensions.test.tsx | 103 +- .../visibility-of-sidebar-items.test.tsx | 10 +- ...-characters-in-page-registrations.test.tsx | 14 +- ...gation-using-application-menu.test.ts.snap | 7 +- .../navigation-using-application-menu.test.ts | 4 +- .../navigate-to-extension-page.test.tsx | 24 +- .../closing-preferences.test.tsx.snap | 70 +- ...on-to-application-preferences.test.ts.snap | 35 +- ...igation-to-editor-preferences.test.ts.snap | 47 +- ...tension-specific-preferences.test.tsx.snap | 70 +- ...ion-to-kubernetes-preferences.test.ts.snap | 47 +- ...vigation-to-proxy-preferences.test.ts.snap | 35 +- ...ion-to-telemetry-preferences.test.tsx.snap | 70 +- ...ation-to-terminal-preferences.test.ts.snap | 41 +- ...gation-using-application-menu.test.ts.snap | 35 +- .../preferences/closing-preferences.test.tsx | 11 +- ...igation-to-application-preferences.test.ts | 14 +- .../navigation-to-editor-preferences.test.ts | 11 +- ...to-extension-specific-preferences.test.tsx | 22 +- ...vigation-to-kubernetes-preferences.test.ts | 11 +- .../navigation-to-proxy-preferences.test.ts | 11 +- ...vigation-to-telemetry-preferences.test.tsx | 46 +- ...navigation-to-terminal-preferences.test.ts | 12 +- .../navigation-using-application-menu.test.ts | 11 +- src/behaviours/utils.ts | 12 + ...gation-using-application-menu.test.ts.snap | 15 +- src/common/__tests__/base-store.test.ts | 7 +- src/common/__tests__/cluster-store.test.ts | 12 +- src/common/__tests__/event-bus.test.ts | 7 +- src/common/__tests__/event-emitter.test.ts | 2 +- src/common/__tests__/hotbar-store.test.ts | 231 +- src/common/__tests__/system-ca.test.ts | 6 +- src/common/__tests__/user-store.test.ts | 8 +- .../__tests__/kubernetes-cluster.test.ts | 16 +- src/common/catalog-entities/general.ts | 22 +- .../catalog-entities/kubernetes-cluster.ts | 26 +- src/common/catalog-entities/web-link.ts | 20 +- .../catalog/catalog-category-registry.ts | 98 +- src/common/catalog/catalog-entity.ts | 85 +- .../catalog/categories/general.injectable.ts | 15 + .../kubernetes-cluster.injectable.ts | 15 + .../catalog/categories/weblink.injectable.ts | 15 + .../catalog/category-registry.injectable.ts | 27 + src/common/catalog/category-registry.ts | 103 + .../has-category-for-entity.injectable.ts | 20 + src/common/catalog/index.ts | 1 + .../visit-entity-context-menu.injectable.ts | 23 + .../allowed-resources.injectable.ts | 2 +- src/common/cluster-store/cluster-store.ts | 8 +- .../hosted-cluster-id.injectable.ts} | 11 +- .../hosted-cluster.injectable.ts | 7 +- src/common/cluster/cluster.ts | 160 +- .../cluster/create-cluster-injection-token.ts | 7 +- .../cluster/list-namespaces.injectable.ts | 5 +- ...at-all-routes-have-route-component.test.ts | 9 +- src/common/hotbars/add-hotbar.injectable.ts | 20 + .../store.injectable.ts} | 6 +- .../{hotbar-store.ts => hotbars/store.ts} | 95 +- .../{hotbar-types.ts => hotbars/types.ts} | 6 +- .../create-channel/create-channel.ts | 2 +- .../ipc/__tests__/type-enforced-ipc.test.ts | 2 +- src/common/item.store.ts | 10 +- .../k8s-api/__tests__/api-manager.test.ts | 29 +- src/common/k8s-api/__tests__/crd.test.ts | 29 + .../k8s-api/__tests__/deployment.api.test.ts | 46 +- .../k8s-api/__tests__/endpoint.api.test.ts | 32 +- .../k8s-api/__tests__/helm-charts.api.test.ts | 72 +- src/common/k8s-api/__tests__/ingress.api.ts | 9 + .../k8s-api/__tests__/kube-api-parse.test.ts | 4 +- src/common/k8s-api/__tests__/kube-api.test.ts | 289 +- .../__tests__/kube-object.store.test.ts | 7 + src/common/k8s-api/__tests__/nodes.test.ts | 7 + src/common/k8s-api/__tests__/pods.api.test.ts | 2 + src/common/k8s-api/__tests__/pods.test.ts | 114 +- .../__tests__/stateful-set.api.test.ts | 46 +- src/common/k8s-api/api-kube.ts | 22 +- src/common/k8s-api/api-manager.ts | 123 - src/common/k8s-api/api-manager/api-manager.ts | 161 + .../auto-registration-emitter.injectable.ts | 27 + .../auto-registration.injectable.ts | 74 + .../k8s-api/api-manager/index.ts} | 6 +- .../k8s-api/api-manager/manager.injectable.ts | 31 + .../k8s-api/api-manager/resource.store.ts | 14 + src/common/k8s-api/cluster-context.ts | 2 +- .../cluster-role-binding.api.injectable.ts | 19 + .../endpoints/cluster-role-binding.api.ts | 62 +- .../endpoints/cluster-role.api.injectable.ts | 19 + .../k8s-api/endpoints/cluster-role.api.ts | 47 +- .../endpoints/cluster.api.injectable.ts | 19 + src/common/k8s-api/endpoints/cluster.api.ts | 55 +- .../component-status.api.injectable.ts | 19 + .../k8s-api/endpoints/component-status.api.ts | 16 +- .../endpoints/config-map.api.injectable.ts | 19 + .../k8s-api/endpoints/config-map.api.ts | 49 + src/common/k8s-api/endpoints/configmap.api.ts | 48 - .../endpoints/cron-job.api.injectable.ts | 19 + src/common/k8s-api/endpoints/cron-job.api.ts | 95 +- ...stom-resource-definition.api.injectable.ts | 19 + ...i.ts => custom-resource-definition.api.ts} | 129 +- .../endpoints/daemon-set.api.injectable.ts | 19 + .../k8s-api/endpoints/daemon-set.api.ts | 144 +- .../endpoints/deployment.api.injectable.ts | 19 + .../k8s-api/endpoints/deployment.api.ts | 215 +- .../endpoints/endpoint.api.injectable.ts | 19 + src/common/k8s-api/endpoints/endpoint.api.ts | 194 +- .../endpoints/events.api.injectable.ts | 19 + src/common/k8s-api/endpoints/events.api.ts | 132 +- .../k8s-api/endpoints/helm-charts.api.ts | 50 +- .../k8s-api/endpoints/helm-releases.api.ts | 37 +- ...orizontal-pod-autoscaler.api.injectable.ts | 19 + .../horizontal-pod-autoscaler.api.ts | 261 ++ src/common/k8s-api/endpoints/hpa.api.ts | 161 - src/common/k8s-api/endpoints/index.ts | 23 +- .../endpoints/ingress.api.injectable.ts | 19 + src/common/k8s-api/endpoints/ingress.api.ts | 161 +- .../k8s-api/endpoints/job.api.injectable.ts | 19 + src/common/k8s-api/endpoints/job.api.ts | 158 +- .../k8s-api/endpoints/legacy-globals.ts | 78 + .../endpoints/limit-range.api.injectable.ts | 19 + .../k8s-api/endpoints/limit-range.api.ts | 41 +- src/common/k8s-api/endpoints/metrics.api.ts | 37 +- .../endpoints/namespace.api.injectable.ts | 19 + .../{namespaces.api.ts => namespace.api.ts} | 50 +- .../network-policy.api.injectable.ts | 19 + .../k8s-api/endpoints/network-policy.api.ts | 36 +- .../k8s-api/endpoints/node.api.injectable.ts | 19 + src/common/k8s-api/endpoints/node.api.ts | 268 ++ src/common/k8s-api/endpoints/nodes.api.ts | 263 -- .../persistent-volume-claim.api.injectable.ts | 19 + .../endpoints/persistent-volume-claim.api.ts | 87 + .../endpoints/persistent-volume-claims.api.ts | 117 - .../persistent-volume.api.injectable.ts | 19 + .../endpoints/persistent-volume.api.ts | 117 +- .../pod-disruption-budget.api.injectable.ts | 19 + .../endpoints/pod-disruption-budget.api.ts | 57 + .../endpoints/pod-metrics.api.injectable.ts | 19 + .../k8s-api/endpoints/pod-metrics.api.ts | 63 +- .../pod-security-policy.api.injectable.ts | 19 + .../endpoints/pod-security-policy.api.ts | 117 + .../k8s-api/endpoints/pod.api.injectable.ts | 19 + .../endpoints/{pods.api.ts => pod.api.ts} | 353 +- .../endpoints/poddisruptionbudget.api.ts | 71 - .../endpoints/podsecuritypolicy.api.ts | 115 - .../endpoints/replica-set.api.injectable.ts | 19 + .../k8s-api/endpoints/replica-set.api.ts | 120 +- .../k8s-api/endpoints/resource-applier.api.ts | 4 +- .../resource-quota.api.injectable.ts | 19 + .../k8s-api/endpoints/resource-quota.api.ts | 66 +- .../endpoints/role-binding.api.injectable.ts | 19 + .../k8s-api/endpoints/role-binding.api.ts | 58 +- .../k8s-api/endpoints/role.api.injectable.ts | 19 + src/common/k8s-api/endpoints/role.api.ts | 45 +- .../endpoints/secret.api.injectable.ts | 19 + src/common/k8s-api/endpoints/secret.api.ts | 57 +- ...lf-subject-rules-reviews.api.injectable.ts | 19 + ...i.ts => self-subject-rules-reviews.api.ts} | 23 +- .../service-account.api.injectable.ts | 19 + .../k8s-api/endpoints/service-account.api.ts | 55 + .../k8s-api/endpoints/service-accounts.api.ts | 50 - .../endpoints/service.api.injectable.ts | 19 + src/common/k8s-api/endpoints/service.api.ts | 91 +- .../endpoints/stateful-set.api.injectable.ts | 19 + .../k8s-api/endpoints/stateful-set.api.ts | 142 +- .../endpoints/storage-class.api.injectable.ts | 19 + .../k8s-api/endpoints/storage-class.api.ts | 81 +- .../endpoints/types/aggregation-rule.ts} | 6 +- .../endpoints/types/job-template-spec.ts | 12 + .../persistent-volume-claim-template-spec.ts | 12 + .../endpoints/types/pod-template-spec.ts | 12 + .../k8s-api/endpoints/types/policy-rule.ts | 12 + .../endpoints/types/resource-requirements.ts | 25 + .../k8s-api/endpoints/types/role-ref.ts | 10 + src/common/k8s-api/endpoints/types/subject.ts | 13 + src/common/k8s-api/json-api.ts | 127 +- src/common/k8s-api/kube-api-parse.ts | 45 +- src/common/k8s-api/kube-api.ts | 355 +- src/common/k8s-api/kube-json-api.ts | 36 +- .../k8s-api}/kube-object-status.ts | 0 src/common/k8s-api/kube-object.store.ts | 187 +- src/common/k8s-api/kube-object.ts | 441 ++- src/common/k8s-api/kube-watch-event.ts | 11 +- .../selected-filter-namespaces.injectable.ts | 24 + .../stores-apis-can-be-created.token.ts | 10 + src/common/k8s-api/workload-kube-object.ts | 89 - src/common/k8s/resource-stack.ts | 4 +- src/common/kube-helpers.ts | 77 +- src/common/logger.ts | 1 + src/common/protocol-handler/router.ts | 14 +- src/common/system-ca.ts | 4 +- .../file-name-migration.injectable.ts | 35 + src/common/user-store/preferences-helpers.ts | 87 +- .../user-store/terminal-config.injectable.ts | 19 + .../terminal-copy-on-select.injectable.ts | 18 + .../user-store/user-store.injectable.ts | 8 +- src/common/user-store/user-store.ts | 80 +- src/common/utils/__tests__/iter.test.ts | 26 +- src/common/utils/autobind.ts | 5 +- src/common/utils/buildUrl.ts | 8 +- src/common/utils/camelCase.ts | 28 +- src/common/utils/cluster-id-url-parsing.ts | 21 - src/common/utils/collection-functions.ts | 34 +- src/common/utils/disposer.ts | 2 +- src/common/utils/downloadFile.ts | 6 +- src/common/utils/index.ts | 8 +- .../utils/is-allowed-resource.injectable.ts | 4 +- src/common/utils/iter.ts | 62 +- src/common/utils/json.ts | 10 + src/common/utils/lazy-initialized.ts | 3 +- src/common/utils/objects.ts | 19 +- src/common/utils/readableStream.ts | 2 +- src/common/utils/singleton.ts | 2 + src/common/utils/sort-compare.ts | 8 +- src/common/utils/tar.ts | 24 +- src/common/utils/tuple.ts | 3 + src/common/utils/type-narrowing.ts | 112 +- src/common/utils/types.ts | 31 + src/common/utils/wait.ts | 57 + src/common/vars.ts | 7 +- .../__tests__/is-compatible-extension.test.ts | 7 +- .../__tests__/lens-extension.test.ts | 2 +- ...obal-singleton-object-for-extension-api.ts | 26 +- .../legacy-global-di-for-extension-api.ts | 17 +- src/extensions/common-api/catalog.ts | 6 +- src/extensions/common-api/k8s-api.ts | 78 + .../extension-discovery.test.ts | 21 +- .../extension-discovery.ts | 20 +- .../is-compatible-extension.ts | 4 +- .../extension-installer.ts | 2 +- .../create-extension-instance.token.ts | 14 + .../create-extension-instance.injectable.ts | 17 - .../create-extension-instance.ts | 21 - .../extension-instances.injectable.ts | 14 + .../extension-loader.injectable.ts | 17 +- .../extension-loader/extension-loader.ts | 86 +- ...directory-for-extension-data.injectable.ts | 4 +- ...ile-system-provisioner-store.injectable.ts | 15 +- .../file-system-provisioner-store.ts | 16 +- src/extensions/extension-store.ts | 5 +- .../extensions-store/extensions-store.ts | 2 +- src/extensions/extensions.injectable.ts | 7 +- .../lens-extension-set-dependencies.ts | 27 +- src/extensions/lens-extension.ts | 28 +- src/extensions/lens-main-extension.ts | 18 +- src/extensions/lens-renderer-extension.ts | 83 +- src/extensions/main-api/catalog.ts | 23 +- src/extensions/main-api/k8s-api.ts | 42 +- src/extensions/npm/extensions/.gitignore | 1 - .../npm/extensions/package-lock.json | 594 +++ src/extensions/npm/extensions/package.json | 10 +- src/extensions/registries/base-registry.ts | 5 +- .../catalog-entity-detail-registry.ts | 5 + .../registries/kube-object-detail-registry.ts | 11 +- src/extensions/registries/page-registry.ts | 2 +- src/extensions/registries/protocol-handler.ts | 4 +- src/extensions/renderer-api/catalog.ts | 21 +- src/extensions/renderer-api/components.ts | 45 +- src/extensions/renderer-api/k8s-api.ts | 165 +- src/extensions/renderer-api/navigation.ts | 22 +- src/extensions/renderer-api/theming.ts | 7 +- src/main/__test__/cluster.test.ts | 48 +- src/main/__test__/context-handler.test.ts | 22 +- src/main/__test__/kube-auth-proxy.test.ts | 66 +- src/main/__test__/kubeconfig-manager.test.ts | 70 +- src/main/__test__/shell-session.test.ts | 4 - src/main/__test__/static-file-route.test.ts | 8 +- .../get-electron-app-path.injectable.ts | 5 +- .../get-electron-app-path.test.ts | 4 +- .../get-electron-app-path.ts | 22 +- src/main/app-updater.ts | 2 +- .../__test__/kubeconfig-sync.test.ts | 4 +- .../manager.injectable.ts} | 4 +- .../manager.ts} | 24 +- ...ync-general-catalog-entities.injectable.ts | 2 +- .../__tests__/catalog-entity-registry.test.ts | 44 +- src/main/catalog/catalog-entity-registry.ts | 52 +- ...table.ts => entity-registry.injectable.ts} | 8 +- src/main/catalog/entity-registry.ts | 54 + src/main/catalog/index.ts | 1 + src/main/child-process/spawn.injectable.ts | 6 +- .../base-cluster-detector.ts | 11 +- .../cluster-detectors/detector-registry.ts | 8 +- .../distribution-detector.ts | 77 +- .../cluster-detectors/version-detector.ts | 1 - src/main/cluster-manager.ts | 22 +- src/main/context-handler/context-handler.ts | 60 +- .../create-context-handler.injectable.ts | 18 +- .../create-cluster.injectable.ts | 2 + .../create-extension-instance.injectable.ts | 32 + src/main/getDiForUnitTesting.ts | 43 +- src/main/helm/exec.ts | 16 +- src/main/helm/helm-chart-manager.ts | 37 +- src/main/helm/helm-release-manager.ts | 28 +- src/main/helm/helm-repo-manager.ts | 41 +- src/main/helm/helm-service.ts | 35 +- src/main/index.ts | 12 +- src/main/ipc/dialog.ts | 6 +- .../create-kube-auth-proxy.injectable.ts | 2 + .../get-kube-auth-proxy-certificate.ts | 50 +- src/main/kube-auth-proxy/kube-auth-proxy.ts | 39 +- .../create-kubeconfig-manager.injectable.ts | 11 +- .../kubeconfig-manager/kubeconfig-manager.ts | 26 +- src/main/kubectl/kubectl.ts | 22 +- src/main/lens-proxy.ts | 30 +- .../menu/application-menu-items.injectable.ts | 31 +- src/main/menu/menu.ts | 4 +- .../navigate-to-url.injectable.ts | 2 +- src/main/prometheus/provider-registry.ts | 18 +- .../protocol-handler/__test__/router.test.ts | 36 +- .../lens-protocol-router-main.ts | 6 +- .../kube-api-upgrade-request.ts | 13 +- .../shell-api-request/shell-api-request.ts | 4 +- .../shell-request-authenticator.ts | 4 +- src/main/proxy-functions/types.ts | 3 +- src/main/resource-applier.ts | 25 +- src/main/router/route.ts | 147 + src/main/router/router-content-types.ts | 2 +- src/main/router/router.injectable.ts | 20 +- src/main/router/router.test.ts | 25 +- src/main/router/router.ts | 65 +- .../helm/charts/get-chart-route.injectable.ts | 31 +- .../get-chart-values-route.injectable.ts | 30 +- .../charts/list-charts-route.injectable.ts | 19 +- .../delete-release-route.injectable.ts | 31 +- .../get-release-history-route.injectable.ts | 31 +- .../releases/get-release-route.injectable.ts | 31 +- .../get-release-values-route.injectable.ts | 34 +- .../install-chart-route.injectable.ts | 50 +- .../list-releases-route.injectable.ts | 23 +- .../rollback-release-route.injectable.ts | 31 +- .../update-release-route.injectable.ts | 47 +- .../get-service-account-route.injectable.ts | 85 +- .../metrics/add-metrics-route.injectable.ts | 127 +- .../get-metric-providers-route.injectable.ts | 32 +- .../functionality/port-forward.ts | 7 +- ...t-current-port-forward-route.injectable.ts | 41 +- .../start-port-forward-route.injectable.ts | 141 +- ...p-current-port-forward-route.injectable.ts | 62 +- .../apply-resource-route.injectable.ts | 19 +- .../patch-resource-route.injectable.ts | 60 +- .../routes/static-file-route.injectable.ts | 42 +- .../versions/get-version-route.injectable.ts | 19 +- .../local-shell-session.ts | 9 +- .../node-shell-session/node-shell-session.ts | 64 +- .../terminal-shell-env-modifiers.ts | 13 +- src/main/shell-session/shell-session.ts | 40 +- .../stores-apis-can-be-created.injectable.ts | 14 + src/main/tray/tray.ts | 6 +- src/main/utils/get-port.ts | 20 +- src/main/utils/update-channel.ts | 2 +- src/main/window-manager.ts | 106 +- src/migrations/cluster-store/3.6.0-beta.1.ts | 8 +- src/migrations/cluster-store/5.0.0-beta.10.ts | 12 +- src/migrations/cluster-store/5.0.0-beta.13.ts | 14 +- src/migrations/hotbar-store/5.0.0-alpha.0.ts | 2 +- src/migrations/hotbar-store/5.0.0-alpha.2.ts | 8 +- src/migrations/hotbar-store/5.0.0-beta.10.ts | 21 +- src/migrations/hotbar-store/5.0.0-beta.5.ts | 16 +- src/migrations/user-store/5.0.3-beta.1.ts | 4 +- .../user-store/file-name-migration.ts | 31 - src/migrations/user-store/index.ts | 5 - .../__tests__/catalog-entity-registry.test.ts | 100 +- src/renderer/api/catalog-category-registry.ts | 6 +- .../catalog-entity-registry.injectable.ts | 13 - src/renderer/api/catalog-entity.ts | 1 - .../api/catalog/entity/active.injectable.ts | 18 + .../api/catalog/entity/entities.injectable.ts | 13 + .../get-active-cluster-entity.injectable.ts | 22 + .../api/catalog/entity/legacy-globals.ts | 12 + .../api/catalog/entity/registry.injectable.ts | 18 + .../entity/registry.ts} | 90 +- .../api/create-terminal-api.injectable.ts | 28 + .../api/helpers/general-active-sync.ts | 21 - ...or-general-entity-navigation.injectable.ts | 52 + src/renderer/api/index.ts | 18 - src/renderer/api/on-api-error.ts | 17 + .../api/setup-on-api-errors.injectable.ts | 17 + src/renderer/api/terminal-api.ts | 33 +- src/renderer/api/websocket-api.ts | 28 +- ...alue-from-registered-channel.injectable.ts | 8 +- .../get-value-from-registered-channel.ts | 9 +- src/renderer/bootstrap.tsx | 34 +- .../cluster-frame-context.injectable.ts | 13 +- .../cluster-frame-context.ts | 2 +- .../components/+add-cluster/add-cluster.tsx | 18 +- .../+catalog/__tests__/custom-columns.test.ts | 31 +- .../+catalog/__tests__/custom-views.test.ts | 12 +- .../+catalog/catalog-add-button.tsx | 26 +- .../+catalog/catalog-entity-details.tsx | 27 +- .../+catalog/catalog-entity-drawer-menu.tsx | 54 +- .../catalog-entity-store.injectable.ts | 10 +- .../catalog-entity.store.tsx | 104 +- .../components/+catalog/catalog-menu.tsx | 11 +- ...-previous-active-tab-storage.injectable.ts | 2 +- .../components/+catalog/catalog.test.tsx | 120 +- src/renderer/components/+catalog/catalog.tsx | 162 +- .../columns/browse-all.injectable.tsx | 35 + .../columns/default-category.injectable.tsx | 64 + .../+catalog/columns/get.injectable.ts | 63 + .../named-category.injectable.tsx} | 22 +- .../columns/specific-category.injectable.ts | 43 + .../get-category-columns.injectable.ts | 98 - .../+catalog/get-label-badges.injectable.tsx | 41 + src/renderer/components/+catalog/helpers.tsx | 33 - .../+catalog/hotbar-toggle-menu-item.tsx | 30 +- .../+catalog/internal-category-columns.tsx | 69 - .../components/+cluster/cluster-issues.tsx | 77 +- .../+cluster/cluster-metric-switchers.tsx | 30 +- .../components/+cluster/cluster-metrics.tsx | 24 +- .../cluster-overview-store.injectable.ts | 46 +- .../cluster-overview-store.ts | 33 +- .../components/+cluster/cluster-overview.tsx | 68 +- .../+cluster/cluster-pie-charts.tsx | 34 +- .../+config-autoscalers/hpa-details.tsx | 116 +- .../+config-autoscalers/hpa.store.ts | 16 - .../components/+config-autoscalers/hpa.tsx | 14 +- .../+config-autoscalers/legacy-store.ts | 12 + .../+config-autoscalers/store.injectable.ts | 24 + .../components/+config-autoscalers/store.ts | 10 + .../+config-limit-ranges/legacy-store.ts | 12 + .../limit-range-details.tsx | 42 +- .../limit-ranges.store.ts | 16 - .../+config-limit-ranges/limit-ranges.tsx | 2 +- .../+config-limit-ranges/store.injectable.ts | 24 + .../components/+config-limit-ranges/store.ts | 10 + .../+config-maps/config-map-details.tsx | 19 +- .../+config-maps/config-maps.store.ts | 16 - .../components/+config-maps/config-maps.tsx | 4 +- .../components/+config-maps/legacy-store.ts | 12 + .../+config-maps/store.injectable.ts | 24 + src/renderer/components/+config-maps/store.ts | 10 + .../legacy-store.ts | 12 + .../pod-disruption-budgets-details.tsx | 4 +- .../pod-disruption-budgets.store.ts | 16 - .../pod-disruption-budgets.tsx | 6 +- .../store.injectable.ts | 24 + .../+config-pod-disruption-budgets/store.ts | 10 + .../add-quota-dialog.tsx | 103 +- .../+config-resource-quotas/legacy-store.ts | 12 + .../resource-quota-details.tsx | 22 +- .../resource-quotas.store.ts | 16 - .../resource-quotas.tsx | 2 +- .../store.injectable.ts | 24 + .../+config-resource-quotas/store.ts | 10 + .../__tests__/secret-details.test.tsx | 6 +- .../+config-secrets/add-secret-dialog.tsx | 144 +- .../+config-secrets/legacy-store.ts | 12 + .../+config-secrets/secret-details.tsx | 21 +- .../+config-secrets/secrets.store.ts | 16 - .../components/+config-secrets/secrets.tsx | 13 +- .../+config-secrets/store.injectable.ts | 24 + .../components/+config-secrets/store.ts | 10 + .../+custom-resources/crd-details.tsx | 21 +- .../crd-groups-url-param.injectable.ts | 20 + .../components/+custom-resources/crd-list.tsx | 160 +- .../crd-resource-details.tsx | 33 +- .../+custom-resources/crd-resource.store.ts | 14 - .../+custom-resources/crd-resources.tsx | 49 +- .../components/+custom-resources/crd.store.ts | 77 - ...stom-resource-sidebar-items.injectable.tsx | 28 +- ...om-resources-route-component.injectable.ts | 4 +- .../custom-resources.injectable.ts | 19 +- .../definition.store.injectable.ts | 27 + .../+custom-resources/definition.store.ts | 68 + .../+custom-resources/legacy-store.ts | 12 + .../+entity-settings/entity-settings.tsx | 63 +- .../components/+events/duration-absolute.tsx | 27 + .../components/+events/event-details.tsx | 160 +- src/renderer/components/+events/events.tsx | 96 +- .../components/+events/kube-event-details.tsx | 42 +- .../components/+events/kube-event-icon.tsx | 2 +- .../components/+events/legacy-store.ts | 12 + .../components/+events/store.injectable.ts | 27 + .../+events/{event.store.ts => store.ts} | 34 +- .../+extensions/__tests__/extensions.test.tsx | 67 +- .../attempt-install-by-info.injectable.tsx | 32 +- .../attempt-install/attempt-install.tsx | 19 +- .../create-temp-files-and-validate.tsx | 7 +- .../unpack-extension/unpack-extension.tsx | 8 +- .../validate-package/validate-package.tsx | 18 +- ...confirm-uninstall-extension.injectable.tsx | 4 +- .../components/+extensions/extensions.tsx | 29 +- .../get-base-registry-url.tsx | 19 +- .../get-message-from-error.ts | 11 +- .../install-from-input/install-from-input.tsx | 78 +- .../components/+extensions/install.tsx | 17 +- .../+extensions/installed-extensions.tsx | 118 +- .../uninstall-extension.tsx | 84 +- .../+helm-charts/helm-chart-details.tsx | 145 +- .../+helm-charts/helm-chart.store.ts | 34 +- .../components/+helm-charts/helm-charts.tsx | 11 +- .../create-release.injectable.ts | 5 +- .../dialog.scss} | 0 .../+helm-releases/dialog/dialog.tsx | 147 + .../+helm-releases/dialog/open.injectable.ts | 21 + .../+helm-releases/dialog/state.injectable.ts | 14 + .../release-details.injectable.ts | 13 +- .../release-details/release-details.tsx | 151 +- .../+helm-releases/release-menu.tsx | 46 +- ...elease-rollback-dialog-model.injectable.ts | 13 - .../release-rollback-dialog-model.ts | 31 - .../release-rollback-dialog.tsx | 131 - .../+helm-releases/releases.injectable.ts | 4 +- .../components/+helm-releases/releases.tsx | 62 +- .../update-release.injectable.ts | 5 +- .../dialog.scss} | 0 .../+namespaces/add-dialog/dialog.tsx | 116 + .../+namespaces/add-dialog/open.injectable.ts | 20 + .../add-dialog/state.injectable.ts | 13 + .../add-namespace-dialog-model.injectable.ts | 13 - .../add-namespace-dialog-model.ts | 25 - .../+namespaces/add-namespace-dialog.tsx | 108 - src/renderer/components/+namespaces/index.ts | 2 +- .../+namespaces/namespace-details.tsx | 90 +- ...amespace-select-filter-model.injectable.ts | 2 +- .../namespace-select-filter-model.ts | 102 - .../namespace-select-filter-model.tsx | 159 + .../+namespaces/namespace-select-filter.tsx | 68 +- .../+namespaces/namespace-select.tsx | 134 +- .../namespace-store.injectable.ts | 33 - src/renderer/components/+namespaces/route.tsx | 22 +- .../+namespaces/store.injectable.ts | 29 + .../namespace.store.ts => store.ts} | 29 +- .../+network-endpoints/endpoint-details.tsx | 14 +- .../endpoint-subset-list.tsx | 80 +- .../+network-endpoints/endpoints.store.ts | 16 - .../+network-endpoints/endpoints.tsx | 5 +- .../+network-endpoints/legacy-store.ts | 12 + .../+network-endpoints/store.injectable.ts | 24 + .../components/+network-endpoints/store.ts | 10 + .../+network-ingresses/ingress-charts.tsx | 52 +- .../+network-ingresses/ingress-details.tsx | 52 +- .../+network-ingresses/ingress.store.ts | 15 - .../+network-ingresses/ingresses.tsx | 14 +- .../+network-ingresses/legacy-store.ts | 12 + .../+network-ingresses/store.injectable.ts | 24 + .../components/+network-ingresses/store.ts | 9 + .../__tests__/network-policy-details.test.tsx | 58 +- .../+network-policies/legacy-store.ts | 12 + .../+network-policies/network-policies.tsx | 2 +- .../network-policy-details.tsx | 19 +- .../+network-policies/network-policy.store.ts | 16 - .../+network-policies/store.injectable.ts | 24 + .../components/+network-policies/store.ts | 10 + .../port-forward-details.tsx | 12 +- .../port-forward-menu.tsx | 28 +- .../+network-port-forwards/port-forwards.tsx | 14 +- .../+network-services/legacy-store.ts | 12 + .../service-details-endpoint.tsx | 27 +- .../+network-services/service-details.tsx | 70 +- .../service-port-component.tsx | 26 +- .../+network-services/services.store.ts | 16 - .../components/+network-services/services.tsx | 5 +- .../+network-services/store.injectable.ts | 24 + .../components/+network-services/store.ts | 10 + .../components/+nodes/details-resources.tsx | 82 +- src/renderer/components/+nodes/details.tsx | 172 +- .../components/+nodes/legacy-store.ts | 12 + .../components/+nodes/node-charts.tsx | 87 +- src/renderer/components/+nodes/route.tsx | 44 +- .../components/+nodes/store.injectable.ts | 24 + .../+nodes/{nodes.store.ts => store.ts} | 18 +- .../+pod-security-policies/legacy-store.ts | 12 + .../pod-security-policies.store.ts | 16 - .../pod-security-policies.tsx | 4 +- .../pod-security-policy-details.tsx | 38 +- .../store.injectable.ts | 24 + .../+pod-security-policies/store.ts | 10 + .../+preferences/add-helm-repo-dialog.tsx | 55 +- .../components/+preferences/application.tsx | 92 +- .../close-preferences.injectable.ts | 8 +- .../components/+preferences/editor.tsx | 39 +- ...-preference-item-registrator.injectable.ts | 3 +- .../+preferences/extension-settings.tsx | 6 +- ...-preference-item-registrator.injectable.ts | 3 +- .../components/+preferences/helm-charts.tsx | 74 +- .../+preferences/kubectl-binaries.tsx | 144 +- .../components/+preferences/proxy.tsx | 12 +- .../components/+preferences/telemetry.tsx | 82 +- .../components/+preferences/terminal.tsx | 28 +- .../+storage-classes/legacy-store.ts | 12 + .../storage-class-details.tsx | 39 +- .../+storage-classes/storage-class.store.ts | 27 - .../+storage-classes/storage-classes.tsx | 2 +- .../+storage-classes/store.injectable.ts | 27 + .../components/+storage-classes/store.ts | 27 + .../+storage-volume-claims/legacy-store.ts | 12 + .../store.injectable.ts | 24 + .../+storage-volume-claims/store.ts | 9 + .../volume-claim-details.tsx | 24 +- .../volume-claim-disk-chart.tsx | 31 +- .../volume-claim.store.ts | 15 - .../+storage-volume-claims/volume-claims.tsx | 26 +- ...ten-volumes-by-storage-class.injectable.ts | 20 + .../+storage-volumes/legacy-store.ts | 12 + .../+storage-volumes/store.injectable.ts | 24 + .../components/+storage-volumes/store.ts | 17 + .../+storage-volumes/volume-details-list.tsx | 8 +- .../+storage-volumes/volume-details.tsx | 8 +- .../+storage-volumes/volumes.store.ts | 29 - .../components/+storage-volumes/volumes.tsx | 14 +- .../__tests__/dialog.test.tsx | 35 +- .../+cluster-role-bindings/details.tsx | 18 +- .../+cluster-role-bindings/dialog.tsx | 132 +- .../+cluster-role-bindings/hashers.ts | 15 - .../+cluster-role-bindings/legacy-store.ts | 12 + .../store.injectable.ts | 24 + .../+cluster-role-bindings/store.ts | 27 +- .../+cluster-role-bindings/view.tsx | 10 +- .../+cluster-roles/add-dialog.tsx | 11 +- .../+cluster-roles/legacy-store.ts | 12 + .../+cluster-roles/store.injectable.ts | 24 + .../+user-management/+cluster-roles/store.ts | 18 +- .../+user-management/+cluster-roles/view.tsx | 4 +- .../+role-bindings/__tests__/dialog.test.tsx | 37 +- .../+role-bindings/details.tsx | 18 +- .../+role-bindings/dialog.tsx | 127 +- .../+role-bindings/legacy-store.ts | 12 + .../+role-bindings/store.injectable.ts | 24 + .../+user-management/+role-bindings/store.ts | 25 +- .../+user-management/+role-bindings/view.tsx | 12 +- .../+user-management/+roles/add-dialog.tsx | 11 +- .../+user-management/+roles/legacy-store.ts | 12 + .../+roles/store.injectable.ts | 24 + .../+user-management/+roles/store.ts | 22 +- .../+user-management/+roles/view.tsx | 4 +- .../+service-accounts/create-dialog.tsx | 11 +- .../+service-accounts/details.tsx | 112 +- .../+service-accounts/legacy-store.ts | 12 + .../+service-accounts/secret.tsx | 74 +- .../service-account-menu.tsx | 6 +- .../+service-accounts/store.injectable.ts | 24 + .../+service-accounts/store.ts | 17 +- .../+service-accounts/view.tsx | 5 +- .../{+role-bindings => }/hashers.ts | 4 +- .../+welcome/__test__/welcome.test.tsx | 4 - .../welcome-banner-items.injectable.ts | 8 +- .../welcome-banner-registration.ts | 2 +- src/renderer/components/+welcome/welcome.tsx | 47 +- .../+workloads-cronjobs/cron-job-menu.tsx | 102 +- .../cron-jobs-store.injectable.ts | 14 - .../+workloads-cronjobs/cronjob-details.tsx | 51 +- .../cronjob-trigger-dialog.tsx | 135 +- .../+workloads-cronjobs/cronjobs.tsx | 6 +- .../+workloads-cronjobs/legacy-store.ts | 12 + .../+workloads-cronjobs/store.injectable.ts | 27 + .../{cronjob.store.ts => store.ts} | 26 +- .../daemonset-details.tsx | 96 +- .../+workloads-daemonsets/daemonsets.store.ts | 50 - .../+workloads-daemonsets/daemonsets.tsx | 16 +- .../+workloads-daemonsets/legacy-store.ts | 12 + .../+workloads-daemonsets/store.injectable.ts | 27 + .../components/+workloads-daemonsets/store.ts | 42 + .../deployment-details.tsx | 122 +- .../deployment-menu.tsx | 70 +- .../deployment-replicasets.tsx | 16 +- .../deployment-scale-dialog.tsx | 187 - .../deployments-store.injectable.ts | 14 - .../deployments.store.ts | 58 - .../+workloads-deployments/deployments.tsx | 17 +- .../+workloads-deployments/legacy-store.ts | 12 + .../scale/dialog-state.injectable.ts | 14 + .../dialog.scss} | 0 .../dialog.test.tsx} | 106 +- .../+workloads-deployments/scale/dialog.tsx | 186 + .../scale/open.injectable.ts | 20 + .../store.injectable.ts | 27 + .../+workloads-deployments/store.ts | 63 + .../get-jobs-by-owner.injectable.ts | 21 + .../+workloads-jobs/job-details.tsx | 132 +- .../components/+workloads-jobs/job.store.ts | 59 - .../+workloads-jobs/jobs-store.injectable.ts | 14 - .../components/+workloads-jobs/jobs.tsx | 11 +- .../+workloads-jobs/legacy-store.ts | 12 + .../+workloads-jobs/store.injectable.ts | 27 + .../components/+workloads-jobs/store.ts | 52 + .../+workloads-overview/overview-statuses.tsx | 2 +- .../overview-workload-status.tsx | 27 +- .../+workloads-overview/overview.tsx | 83 +- .../cron-jobs-workload.injectable.ts | 4 +- .../daemonsets-workload.injectable.ts | 4 +- .../deployments-workload.injectable.ts | 4 +- .../jobs-workload.injectable.ts | 6 +- .../pods-workload.injectable.ts | 6 +- .../replicasets-workload.injectable.ts | 4 +- .../statefulsets-workload.injectable.ts | 4 +- .../workloads/workload-injection-token.ts | 2 +- .../__tests__/pod-tolerations.test.tsx | 29 +- .../+workloads-pods/container-charts.tsx | 54 +- .../details/volumes/variant-helpers.tsx | 10 +- .../details/volumes/variant.tsx | 184 +- .../details/volumes/variants/ceph-fs.tsx | 4 +- .../variants/container-storage-interface.tsx | 10 +- .../details/volumes/variants/ephemeral.tsx | 8 +- .../details/volumes/variants/flex-volume.tsx | 6 +- .../variants/persistent-volume-claim.tsx | 4 +- .../details/volumes/variants/projected.tsx | 8 +- .../volumes/variants/rados-block-device.tsx | 4 +- .../details/volumes/variants/scale-io.tsx | 4 +- .../details/volumes/variants/secret.tsx | 6 +- .../details/volumes/variants/storage-os.tsx | 4 +- .../get-pod-by-id.injectable.ts | 20 + .../get-pods-by-owner-id.injectable.ts | 20 + .../+workloads-pods/legacy-store.ts | 12 + .../components/+workloads-pods/pod-charts.tsx | 43 +- .../+workloads-pods/pod-container-env.tsx | 45 +- .../+workloads-pods/pod-container-port.tsx | 32 +- .../+workloads-pods/pod-details-container.tsx | 259 +- .../+workloads-pods/pod-details-list.tsx | 55 +- .../+workloads-pods/pod-details-secrets.tsx | 10 +- .../+workloads-pods/pod-details-statuses.tsx | 11 +- .../pod-details-tolerations.tsx | 31 +- .../+workloads-pods/pod-details.tsx | 42 +- .../+workloads-pods/pod-tolerations.tsx | 6 +- ...e.tsx => pods-sidebar-items.injectable.ts} | 0 .../+workloads-pods/pods-store.injectable.ts | 14 - .../components/+workloads-pods/pods.tsx | 131 +- .../+workloads-pods/store.injectable.ts | 27 + .../{pods.store.ts => store.ts} | 52 +- .../+workloads-replicasets/legacy-store.ts | 12 + .../replica-set-menu.tsx | 43 +- .../replicaset-details.tsx | 103 +- .../replicaset-scale-dialog.tsx | 189 - .../replicasets-store.injectable.ts | 14 - .../replicasets.store.ts | 57 - .../+workloads-replicasets/replicasets.tsx | 9 +- .../dialog.scss} | 0 .../dialog.test.tsx} | 82 +- .../scale-dialog/dialog.tsx | 182 + .../scale-dialog/open.injectable.ts | 20 + .../scale-dialog/state.injectable.ts | 14 + .../store.injectable.ts | 27 + .../+workloads-replicasets/store.ts | 48 + .../+workloads-statefulsets/legacy-store.ts | 12 + .../scale/dialog-state.injectable.ts | 15 + .../dialog.scss} | 0 .../dialog.test.tsx} | 79 +- .../+workloads-statefulsets/scale/dialog.tsx | 182 + .../scale/open-dialog.injectable.ts | 21 + .../statefulset-details.tsx | 101 +- .../statefulset-scale-dialog.tsx | 188 - .../statefulset.store.ts | 50 - .../statefulsets-store.injectable.ts | 14 - .../+workloads-statefulsets/statefulsets.tsx | 15 +- .../store.injectable.ts | 27 + .../+workloads-statefulsets/store.ts | 42 + .../__tests__/cronjob.store.test.ts | 116 +- .../__tests__/daemonset.store.test.ts | 95 +- .../__tests__/deployments.store.test.ts | 194 +- .../components/__tests__/job.store.test.ts | 118 +- .../components/__tests__/pods.store.test.ts | 121 +- .../__tests__/replicaset.store.test.ts | 95 +- .../__tests__/statefulset.store.test.ts | 96 +- .../activate-entity-command.tsx | 57 +- .../add-remove-buttons/add-remove-buttons.tsx | 8 +- src/renderer/components/animate/animate.tsx | 9 +- src/renderer/components/avatar/avatar.tsx | 89 +- src/renderer/components/badge/badge.tsx | 113 +- src/renderer/components/button/button.tsx | 50 +- .../catalog-entities/weblink-add-command.tsx | 6 +- src/renderer/components/chart/bar-chart.tsx | 315 +- src/renderer/components/chart/chart.tsx | 96 +- src/renderer/components/chart/options.ts | 150 + src/renderer/components/chart/pie-chart.tsx | 156 +- .../components/chart/zebra-stripes.plugin.ts | 67 +- src/renderer/components/checkbox/checkbox.tsx | 65 +- .../cluster-manager/cluster-manager.tsx | 39 +- .../cluster-manager/cluster-status.tsx | 30 +- .../cluster-manager/cluster-view.tsx | 57 +- .../cluster-manager/lens-views.injectable.ts | 13 + .../components/cluster-manager/lens-views.ts | 51 +- .../cluster-local-terminal-settings.test.tsx | 22 +- .../cluster-accessible-namespaces.tsx | 2 +- .../components/cluster-icon-settings.tsx | 10 +- .../cluster-local-terminal-settings.tsx | 18 +- .../components/cluster-metrics-setting.tsx | 48 +- .../components/cluster-prometheus-setting.tsx | 88 +- .../components/cluster-show-metrics.tsx | 6 +- .../command-palette/command-container.tsx | 37 +- .../command-palette/command-dialog.tsx | 78 +- .../registered-commands/commands.ts | 2 +- .../internal-commands.injectable.tsx | 12 +- .../confirm-dialog/confirm-dialog.tsx | 34 +- .../confirm-dialog/state.injectable.ts | 2 +- .../__tests__/delete-cluster-dialog.test.tsx | 91 +- .../delete-cluster-dialog-model.injectable.ts | 13 - .../delete-cluster-dialog-model.ts | 33 - .../delete-cluster-dialog.tsx | 252 -- .../components/delete-cluster-dialog/index.ts | 2 +- .../delete-cluster-dialog/open.injectable.ts | 20 + .../delete-cluster-dialog/state.injectable.ts | 20 + ...er-dialog.module.scss => view.module.scss} | 0 .../components/delete-cluster-dialog/view.tsx | 270 ++ src/renderer/components/dialog/dialog.tsx | 51 +- .../components/dialog/logs-dialog.tsx | 71 +- .../dock/__test__/dock-store.test.ts | 21 +- .../dock/__test__/dock-tabs.test.tsx | 32 +- .../create-resource-templates.injectable.ts | 6 +- .../components/dock/create-resource/store.ts | 8 +- .../user-templates.injectable.ts | 4 +- .../components/dock/create-resource/view.tsx | 60 +- .../dock/dock-tab-store/dock-tab.store.ts | 38 +- src/renderer/components/dock/dock-tab.tsx | 105 +- src/renderer/components/dock/dock-tabs.tsx | 18 +- src/renderer/components/dock/dock.tsx | 28 +- .../dock/dock/dock-storage.injectable.ts | 1 + src/renderer/components/dock/dock/store.ts | 18 +- .../dock/edit-resource/store.injectable.ts | 2 + .../components/dock/edit-resource/store.ts | 27 +- .../components/dock/edit-resource/view.tsx | 118 +- src/renderer/components/dock/editor-panel.tsx | 99 +- src/renderer/components/dock/info-panel.tsx | 29 +- .../dock/install-chart/store.injectable.ts | 4 +- .../components/dock/install-chart/store.ts | 33 +- .../components/dock/install-chart/view.tsx | 138 +- .../__test__/log-resource-selector.test.tsx | 139 +- .../dock/logs/__test__/log-search.test.tsx | 3 +- .../components/dock/logs/__test__/pod.mock.ts | 24 +- .../dock/logs/call-for-logs.injectable.ts | 12 +- .../components/dock/logs/controls.tsx | 8 +- .../logs/create-pod-logs-tab.injectable.ts | 4 +- .../create-workload-logs-tab.injectable.ts | 16 +- .../dock/logs/get-log-tab-data.injectable.ts | 2 +- src/renderer/components/dock/logs/list.tsx | 75 +- .../dock/logs/load-logs.injectable.ts | 16 +- .../dock/logs/logs-view-model.injectable.ts | 7 +- .../components/dock/logs/logs-view-model.ts | 23 +- .../dock/logs/reload-logs.injectable.ts | 2 +- .../dock/logs/resource-selector.tsx | 73 +- src/renderer/components/dock/logs/search.tsx | 2 +- src/renderer/components/dock/logs/store.ts | 47 +- .../components/dock/logs/tab-store.ts | 5 +- src/renderer/components/dock/logs/view.tsx | 27 +- .../terminal/create-terminal.injectable.ts | 18 +- .../components/dock/terminal/dock-tab.tsx | 32 +- .../terminal/get-terminal-api.injectable.ts | 3 +- .../dock/terminal/send-command.injectable.ts | 15 +- .../dock/terminal/store.injectable.ts | 2 + .../components/dock/terminal/store.ts | 9 +- .../terminal-spawning-pool.injectable.ts | 20 + .../components/dock/terminal/terminal.ts | 78 +- .../components/dock/terminal/view.tsx | 30 +- .../components/dock/upgrade-chart/store.ts | 17 +- .../components/dock/upgrade-chart/view.tsx | 62 +- .../components/drawer/drawer-item-labels.tsx | 10 +- .../components/drawer/drawer-item.tsx | 6 +- .../drawer/drawer-param-toggler.tsx | 5 +- .../components/drawer/drawer-title.tsx | 10 +- src/renderer/components/drawer/drawer.tsx | 79 +- .../components/duration/reactive-duration.tsx | 10 +- .../editable-list/editable-list.tsx | 13 +- .../error-boundary/error-boundary.tsx | 35 +- .../components/file-picker/file-picker.tsx | 50 +- .../__tests__/hotbar-remove-command.test.tsx | 26 +- .../components/hotbar/hotbar-add-command.tsx | 10 +- .../components/hotbar/hotbar-cell.tsx | 2 +- .../components/hotbar/hotbar-entity-icon.tsx | 98 +- .../components/hotbar/hotbar-icon.tsx | 13 +- .../components/hotbar/hotbar-menu.tsx | 53 +- .../hotbar/hotbar-remove-command.tsx | 98 +- .../hotbar/hotbar-rename-command.tsx | 43 +- .../components/hotbar/hotbar-selector.tsx | 27 +- .../hotbar/hotbar-switch-command.tsx | 108 +- src/renderer/components/icon/icon.tsx | 192 +- .../input/__tests__/input_validators.test.ts | 6 +- .../components/input/drop-file-input.tsx | 10 +- src/renderer/components/input/file-input.tsx | 8 +- src/renderer/components/input/input.tsx | 102 +- .../components/input/input_validators.ts | 104 +- .../components/input/search-input-url.tsx | 44 +- .../components/input/search-input.tsx | 12 +- .../input/search-url-page-param.injectable.ts | 20 + .../unique-hotbar-name.injectable.ts | 18 +- .../components/item-object-list/content.tsx | 163 +- .../item-object-list/filter-icon.tsx | 18 +- .../components/item-object-list/filters.tsx | 4 +- .../components/item-object-list/header.tsx | 27 +- .../item-object-list/list-layout.tsx | 178 +- .../item-object-list/page-filters-list.tsx | 85 - .../list.scss} | 0 .../item-object-list/page-filters/list.tsx | 95 + .../page-filters/store.injectable.ts | 16 + .../store.ts} | 20 +- .../get-details-url.injectable.ts | 35 + .../hide-details.injectable.ts | 10 +- .../components/kube-detail-params/index.ts | 14 +- .../kube-details-url.injectable.ts | 22 + .../kube-selected-url.injectable.ts | 31 + .../components/kube-detail-params/params.ts | 60 - .../show-details.injectable.ts | 30 + .../toggle-details.injectable.ts | 42 + .../kube-object-details.tsx | 109 +- .../kube-object-list-layout.tsx | 93 +- .../kube-object-menu.test.tsx.snap | 12 +- .../dependencies/api-manager.injectable.ts | 13 - .../dependencies/cluster.injectable.ts | 9 +- .../get-kube-object-menu-items.ts | 19 +- .../kube-object-menu.test.tsx | 29 +- .../kube-object-menu/kube-object-menu.tsx | 23 +- .../kube-object-meta/kube-object-meta.tsx | 178 +- .../kube-object-status-icon.test.tsx | 3 +- .../kube-object-status-icon.tsx | 33 +- .../kube-object-status-registration.ts | 2 +- src/renderer/components/kube-object/age.tsx | 12 +- .../kubeconfig-dialog/kubeconfig-dialog.tsx | 100 +- .../layout/__tests__/sidebar-cluster.test.tsx | 4 +- .../components/layout/close-button.tsx | 6 +- ...on-sidebar-item-registrator.injectable.tsx | 99 +- .../components/layout/main-layout.tsx | 29 +- .../components/layout/setting-layout.tsx | 2 +- .../layout/siblings-in-tab-layout.tsx | 3 +- .../components/layout/sidebar-cluster.tsx | 24 +- .../components/layout/sidebar-item.tsx | 24 +- .../layout/sidebar-items.injectable.ts | 8 +- src/renderer/components/layout/sidebar.tsx | 65 +- src/renderer/components/layout/sub-header.tsx | 2 + src/renderer/components/layout/sub-title.tsx | 6 +- src/renderer/components/layout/tab-layout.tsx | 26 +- .../components/layout/top-bar/top-bar.tsx | 64 +- .../line-progress/line-progress.tsx | 50 +- src/renderer/components/list/list.tsx | 11 +- .../markdown-viewer/markdown-viewer.tsx | 2 +- src/renderer/components/menu/menu-actions.tsx | 19 +- src/renderer/components/menu/menu.tsx | 74 +- .../monaco-editor/monaco-editor.tsx | 107 +- .../notifications/notifications.store.tsx | 26 +- .../notifications/notifications.tsx | 26 +- src/renderer/components/radio/radio.tsx | 157 +- .../components/render-delay/render-delay.tsx | 3 +- .../resizing-anchor/resizing-anchor.tsx | 36 +- .../resource-metrics/no-metrics.tsx | 3 +- .../resource-metrics-text.tsx | 5 +- .../resource-metrics/resource-metrics.tsx | 51 +- .../scroll-spy/__tests__/scroll-spy.test.tsx | 268 +- .../components/scroll-spy/scroll-spy.tsx | 37 +- .../components/select/select.test.tsx | 89 +- src/renderer/components/select/select.tsx | 314 +- src/renderer/components/slider/slider.tsx | 9 +- .../components/status-brick/status-brick.tsx | 22 +- .../switch/__tests__/switch.test.tsx | 2 +- .../table/order-by-url-param.injectable.ts | 19 + .../components/table/react-table.module.scss | 3 +- src/renderer/components/table/react-table.tsx | 83 +- .../table/sort-by-url-param.injectable.ts | 19 + src/renderer/components/table/sorting.ts | 3 +- src/renderer/components/table/table-cell.tsx | 51 +- .../table/table-model/table-model.ts | 4 +- src/renderer/components/table/table-row.tsx | 11 +- src/renderer/components/table/table.tsx | 96 +- src/renderer/components/tabs/tabs.tsx | 6 +- .../test-utils/get-application-builder.tsx | 61 +- .../test-utils/get-renderer-extension-fake.ts | 55 +- .../components/test-utils/renderFor.tsx | 16 +- src/renderer/components/tooltip/tooltip.tsx | 54 +- .../components/tooltip/withTooltip.tsx | 79 +- .../components/tree-view/tree-view.tsx | 2 +- .../components/virtual-list/virtual-list.tsx | 195 +- src/renderer/components/wizard/wizard.tsx | 73 +- .../create-cluster.injectable.ts | 6 +- .../create-extension-instance.injectable.ts | 41 + .../frames/cluster-frame/cluster-frame.tsx | 110 +- .../init-cluster-frame.injectable.ts | 17 +- .../init-cluster-frame/init-cluster-frame.ts | 104 +- .../cluster-frame/start-url.injectable.ts | 2 +- .../init-root-frame.injectable.ts | 32 +- .../init-root-frame/init-root-frame.ts | 2 +- src/renderer/frames/root-frame/root-frame.tsx | 7 - src/renderer/getDiForUnitTesting.tsx | 41 +- src/renderer/hooks/useInterval.ts | 2 +- src/renderer/hooks/useMutationObserver.ts | 2 +- src/renderer/hooks/useResizeObserver.ts | 2 +- .../add-sync-entries.injectable.tsx | 16 +- .../catalog-category-registry.tsx | 9 +- .../catalog-entity-detail-registry.tsx | 3 + src/renderer/initializers/catalog.tsx | 22 +- src/renderer/initializers/ipc.ts | 4 +- .../kube-object-detail-registry.tsx | 791 ++-- ...amespaces-forbidden-handler.injectable.tsx | 7 +- src/renderer/ipc/register-listeners.tsx | 36 +- src/renderer/k8s/api-kube.injectable.ts | 35 + src/renderer/kube-object/handler.ts | 5 + .../kube-object/handlers.injectable.ts | 3 +- .../handlers/stateful-set.injectable.ts | 30 + src/renderer/kube-object/static-handlers.ts | 22 - src/renderer/kube-watch-api/kube-watch-api.ts | 51 +- src/renderer/mui-base-theme.tsx | 2 +- .../create-page-param.injectable.ts | 23 + src/renderer/navigation/helpers.ts | 39 - src/renderer/navigation/history.injectable.ts | 4 +- src/renderer/navigation/history.ts | 35 - src/renderer/navigation/index.ts | 25 +- .../navigation/is-route-active.injectable.ts | 20 + .../navigation/match-route.injectable.ts | 21 + .../navigation/navigate.injectable.ts | 22 +- .../observable-history.injectable.ts | 24 +- src/renderer/navigation/page-param.ts | 44 +- src/renderer/navigation/search-params.ts | 12 + .../about-port-forwarding.injectable.ts | 14 +- ...notify-error-port-forwarding.injectable.ts | 14 +- .../port-forward-dialog-model.ts | 52 +- .../port-forward/port-forward-dialog.tsx | 107 +- .../port-forward/port-forward-notify.tsx | 19 +- .../port-forward-store/port-forward-store.ts | 25 +- .../port-forward/port-forward-utils.ts | 2 +- ...-protocol-add-route-handlers.injectable.ts | 27 +- .../bind-protocol-add-route-handlers.tsx | 207 +- .../lens-protocol-router-renderer.tsx | 42 +- .../current-route-component.injectable.ts | 4 +- .../extension-page-parameters.injectable.ts | 48 +- ...extension-route-registrator.injectable.tsx | 22 +- ...tension-route-path.ts => for-extension.ts} | 14 +- ...et-extension-page-parameters.injectable.ts | 17 + src/renderer/routes/get-extension-route-id.ts | 9 - .../routes/navigate-to-url.injectable.ts | 15 +- .../routes/query-parameters.injectable.ts | 6 +- ...oute-specific-component-injection-token.ts | 2 +- src/renderer/routes/routes.injectable.ts | 5 +- .../routes/sibling-tabs.injectable.ts | 16 +- .../stores-apis-can-be-created.injectable.ts | 15 + src/renderer/theme-store.injectable.ts | 20 - .../themes/{lens-dark.json => lens-dark.ts} | 17 +- .../themes/{lens-light.json => lens-light.ts} | 16 +- src/renderer/themes/store.injectable.ts | 19 + .../{theme.store.ts => themes/store.ts} | 87 +- .../utils/__tests__/jsonPath.test.tsx | 2 +- .../utils/__tests__/storageHelper.test.ts | 5 +- .../create-storage.injectable.ts | 30 +- .../utils/create-storage/create-storage.ts | 29 +- src/renderer/utils/cssNames.ts | 35 +- src/renderer/utils/display-booleans.ts | 2 +- src/renderer/utils/is-node-falsy.ts | 27 + src/renderer/utils/isReactNode.ts | 5 +- src/renderer/utils/jsonPath.ts | 9 +- src/renderer/utils/storageHelper.ts | 42 +- src/test-utils/get-dis-for-unit-testing.ts | 10 +- src/test-utils/override-fs-with-fakes.ts | 47 +- src/test-utils/override-ipc-bridge.ts | 27 +- tsconfig.extension-api.json | 47 + tsconfig.json | 2 +- yarn.lock | 3234 ++++++++--------- 1062 files changed, 26516 insertions(+), 28693 deletions(-) create mode 100644 build/tsconfig.json delete mode 100644 extensions/kube-object-event-status/package-lock.json delete mode 100644 extensions/metrics-cluster-feature/package-lock.json delete mode 100644 extensions/node-menu/package-lock.json delete mode 100644 extensions/pod-menu/package-lock.json create mode 100644 integration/tsconfig.json rename src/behaviours/add-cluster/__snapshots__/{navigation-using-application-menu.test.ts.snap => navigation-using-application-menu.test.tsx.snap} (94%) rename src/behaviours/add-cluster/{navigation-using-application-menu.test.ts => navigation-using-application-menu.test.tsx} (82%) create mode 100644 src/behaviours/utils.ts create mode 100644 src/common/catalog/categories/general.injectable.ts create mode 100644 src/common/catalog/categories/kubernetes-cluster.injectable.ts create mode 100644 src/common/catalog/categories/weblink.injectable.ts create mode 100644 src/common/catalog/category-registry.injectable.ts create mode 100644 src/common/catalog/category-registry.ts create mode 100644 src/common/catalog/has-category-for-entity.injectable.ts create mode 100644 src/common/catalog/visit-entity-context-menu.injectable.ts rename src/{renderer/components/+workloads-daemonsets/daemonsets-store.injectable.ts => common/cluster-store/hosted-cluster-id.injectable.ts} (51%) create mode 100644 src/common/hotbars/add-hotbar.injectable.ts rename src/common/{hotbar-store.injectable.ts => hotbars/store.injectable.ts} (65%) rename src/common/{hotbar-store.ts => hotbars/store.ts} (81%) rename src/common/{hotbar-types.ts => hotbars/types.ts} (90%) delete mode 100644 src/common/k8s-api/api-manager.ts create mode 100644 src/common/k8s-api/api-manager/api-manager.ts create mode 100644 src/common/k8s-api/api-manager/auto-registration-emitter.injectable.ts create mode 100644 src/common/k8s-api/api-manager/auto-registration.injectable.ts rename src/{preload.ts => common/k8s-api/api-manager/index.ts} (73%) create mode 100644 src/common/k8s-api/api-manager/manager.injectable.ts create mode 100644 src/common/k8s-api/api-manager/resource.store.ts create mode 100644 src/common/k8s-api/endpoints/cluster-role-binding.api.injectable.ts create mode 100644 src/common/k8s-api/endpoints/cluster-role.api.injectable.ts create mode 100644 src/common/k8s-api/endpoints/cluster.api.injectable.ts create mode 100644 src/common/k8s-api/endpoints/component-status.api.injectable.ts create mode 100644 src/common/k8s-api/endpoints/config-map.api.injectable.ts create mode 100644 src/common/k8s-api/endpoints/config-map.api.ts delete mode 100644 src/common/k8s-api/endpoints/configmap.api.ts create mode 100644 src/common/k8s-api/endpoints/cron-job.api.injectable.ts create mode 100644 src/common/k8s-api/endpoints/custom-resource-definition.api.injectable.ts rename src/common/k8s-api/endpoints/{crd.api.ts => custom-resource-definition.api.ts} (67%) create mode 100644 src/common/k8s-api/endpoints/daemon-set.api.injectable.ts create mode 100644 src/common/k8s-api/endpoints/deployment.api.injectable.ts create mode 100644 src/common/k8s-api/endpoints/endpoint.api.injectable.ts create mode 100644 src/common/k8s-api/endpoints/events.api.injectable.ts create mode 100644 src/common/k8s-api/endpoints/horizontal-pod-autoscaler.api.injectable.ts create mode 100644 src/common/k8s-api/endpoints/horizontal-pod-autoscaler.api.ts delete mode 100644 src/common/k8s-api/endpoints/hpa.api.ts create mode 100644 src/common/k8s-api/endpoints/ingress.api.injectable.ts create mode 100644 src/common/k8s-api/endpoints/job.api.injectable.ts create mode 100644 src/common/k8s-api/endpoints/legacy-globals.ts create mode 100644 src/common/k8s-api/endpoints/limit-range.api.injectable.ts create mode 100644 src/common/k8s-api/endpoints/namespace.api.injectable.ts rename src/common/k8s-api/endpoints/{namespaces.api.ts => namespace.api.ts} (51%) create mode 100644 src/common/k8s-api/endpoints/network-policy.api.injectable.ts create mode 100644 src/common/k8s-api/endpoints/node.api.injectable.ts create mode 100644 src/common/k8s-api/endpoints/node.api.ts delete mode 100644 src/common/k8s-api/endpoints/nodes.api.ts create mode 100644 src/common/k8s-api/endpoints/persistent-volume-claim.api.injectable.ts create mode 100644 src/common/k8s-api/endpoints/persistent-volume-claim.api.ts delete mode 100644 src/common/k8s-api/endpoints/persistent-volume-claims.api.ts create mode 100644 src/common/k8s-api/endpoints/persistent-volume.api.injectable.ts create mode 100644 src/common/k8s-api/endpoints/pod-disruption-budget.api.injectable.ts create mode 100644 src/common/k8s-api/endpoints/pod-disruption-budget.api.ts create mode 100644 src/common/k8s-api/endpoints/pod-metrics.api.injectable.ts create mode 100644 src/common/k8s-api/endpoints/pod-security-policy.api.injectable.ts create mode 100644 src/common/k8s-api/endpoints/pod-security-policy.api.ts create mode 100644 src/common/k8s-api/endpoints/pod.api.injectable.ts rename src/common/k8s-api/endpoints/{pods.api.ts => pod.api.ts} (72%) delete mode 100644 src/common/k8s-api/endpoints/poddisruptionbudget.api.ts delete mode 100644 src/common/k8s-api/endpoints/podsecuritypolicy.api.ts create mode 100644 src/common/k8s-api/endpoints/replica-set.api.injectable.ts create mode 100644 src/common/k8s-api/endpoints/resource-quota.api.injectable.ts create mode 100644 src/common/k8s-api/endpoints/role-binding.api.injectable.ts create mode 100644 src/common/k8s-api/endpoints/role.api.injectable.ts create mode 100644 src/common/k8s-api/endpoints/secret.api.injectable.ts create mode 100644 src/common/k8s-api/endpoints/self-subject-rules-reviews.api.injectable.ts rename src/common/k8s-api/endpoints/{selfsubjectrulesreviews.api.ts => self-subject-rules-reviews.api.ts} (82%) create mode 100644 src/common/k8s-api/endpoints/service-account.api.injectable.ts create mode 100644 src/common/k8s-api/endpoints/service-account.api.ts delete mode 100644 src/common/k8s-api/endpoints/service-accounts.api.ts create mode 100644 src/common/k8s-api/endpoints/service.api.injectable.ts create mode 100644 src/common/k8s-api/endpoints/stateful-set.api.injectable.ts create mode 100644 src/common/k8s-api/endpoints/storage-class.api.injectable.ts rename src/common/{utils/cloneJson.ts => k8s-api/endpoints/types/aggregation-rule.ts} (53%) create mode 100644 src/common/k8s-api/endpoints/types/job-template-spec.ts create mode 100644 src/common/k8s-api/endpoints/types/persistent-volume-claim-template-spec.ts create mode 100644 src/common/k8s-api/endpoints/types/pod-template-spec.ts create mode 100644 src/common/k8s-api/endpoints/types/policy-rule.ts create mode 100644 src/common/k8s-api/endpoints/types/resource-requirements.ts create mode 100644 src/common/k8s-api/endpoints/types/role-ref.ts create mode 100644 src/common/k8s-api/endpoints/types/subject.ts rename src/{extensions/renderer-api => common/k8s-api}/kube-object-status.ts (100%) create mode 100644 src/common/k8s-api/selected-filter-namespaces.injectable.ts create mode 100644 src/common/k8s-api/stores-apis-can-be-created.token.ts delete mode 100644 src/common/k8s-api/workload-kube-object.ts create mode 100644 src/common/user-store/file-name-migration.injectable.ts create mode 100644 src/common/user-store/terminal-config.injectable.ts create mode 100644 src/common/user-store/terminal-copy-on-select.injectable.ts create mode 100644 src/common/utils/json.ts create mode 100644 src/common/utils/types.ts create mode 100644 src/common/utils/wait.ts create mode 100644 src/extensions/common-api/k8s-api.ts create mode 100644 src/extensions/extension-loader/create-extension-instance.token.ts delete mode 100644 src/extensions/extension-loader/create-extension-instance/create-extension-instance.injectable.ts delete mode 100644 src/extensions/extension-loader/create-extension-instance/create-extension-instance.ts create mode 100644 src/extensions/extension-loader/extension-instances.injectable.ts rename src/extensions/extension-loader/{create-extension-instance/file-system-provisioner-store/directory-for-extension-data => file-system-provisioner-store}/directory-for-extension-data.injectable.ts (71%) rename src/extensions/extension-loader/{create-extension-instance => }/file-system-provisioner-store/file-system-provisioner-store.injectable.ts (67%) rename src/extensions/extension-loader/{create-extension-instance => }/file-system-provisioner-store/file-system-provisioner-store.ts (79%) create mode 100644 src/extensions/npm/extensions/package-lock.json rename src/main/catalog-sources/{kubeconfig-sync-manager/kubeconfig-sync-manager.injectable.ts => kubeconfig-sync/manager.injectable.ts} (79%) rename src/main/catalog-sources/{kubeconfig-sync-manager/kubeconfig-sync-manager.ts => kubeconfig-sync/manager.ts} (93%) rename src/main/catalog/{catalog-entity-registry.injectable.ts => entity-registry.injectable.ts} (54%) create mode 100644 src/main/catalog/entity-registry.ts create mode 100644 src/main/extension-loader/create-extension-instance.injectable.ts create mode 100644 src/main/router/route.ts create mode 100644 src/main/stores-apis-can-be-created.injectable.ts delete mode 100644 src/migrations/user-store/file-name-migration.ts delete mode 100644 src/renderer/api/catalog-entity-registry/catalog-entity-registry.injectable.ts create mode 100644 src/renderer/api/catalog/entity/active.injectable.ts create mode 100644 src/renderer/api/catalog/entity/entities.injectable.ts create mode 100644 src/renderer/api/catalog/entity/get-active-cluster-entity.injectable.ts create mode 100644 src/renderer/api/catalog/entity/legacy-globals.ts create mode 100644 src/renderer/api/catalog/entity/registry.injectable.ts rename src/renderer/api/{catalog-entity-registry.ts => catalog/entity/registry.ts} (73%) create mode 100644 src/renderer/api/create-terminal-api.injectable.ts delete mode 100644 src/renderer/api/helpers/general-active-sync.ts create mode 100644 src/renderer/api/helpers/watch-for-general-entity-navigation.injectable.ts create mode 100644 src/renderer/api/on-api-error.ts create mode 100644 src/renderer/api/setup-on-api-errors.injectable.ts create mode 100644 src/renderer/components/+catalog/columns/browse-all.injectable.tsx create mode 100644 src/renderer/components/+catalog/columns/default-category.injectable.tsx create mode 100644 src/renderer/components/+catalog/columns/get.injectable.ts rename src/renderer/components/+catalog/{name-category-column.injectable.tsx => columns/named-category.injectable.tsx} (73%) create mode 100644 src/renderer/components/+catalog/columns/specific-category.injectable.ts delete mode 100644 src/renderer/components/+catalog/get-category-columns.injectable.ts create mode 100644 src/renderer/components/+catalog/get-label-badges.injectable.tsx delete mode 100644 src/renderer/components/+catalog/helpers.tsx delete mode 100644 src/renderer/components/+catalog/internal-category-columns.tsx delete mode 100644 src/renderer/components/+config-autoscalers/hpa.store.ts create mode 100644 src/renderer/components/+config-autoscalers/legacy-store.ts create mode 100644 src/renderer/components/+config-autoscalers/store.injectable.ts create mode 100644 src/renderer/components/+config-autoscalers/store.ts create mode 100644 src/renderer/components/+config-limit-ranges/legacy-store.ts delete mode 100644 src/renderer/components/+config-limit-ranges/limit-ranges.store.ts create mode 100644 src/renderer/components/+config-limit-ranges/store.injectable.ts create mode 100644 src/renderer/components/+config-limit-ranges/store.ts delete mode 100644 src/renderer/components/+config-maps/config-maps.store.ts create mode 100644 src/renderer/components/+config-maps/legacy-store.ts create mode 100644 src/renderer/components/+config-maps/store.injectable.ts create mode 100644 src/renderer/components/+config-maps/store.ts create mode 100644 src/renderer/components/+config-pod-disruption-budgets/legacy-store.ts delete mode 100644 src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.store.ts create mode 100644 src/renderer/components/+config-pod-disruption-budgets/store.injectable.ts create mode 100644 src/renderer/components/+config-pod-disruption-budgets/store.ts create mode 100644 src/renderer/components/+config-resource-quotas/legacy-store.ts delete mode 100644 src/renderer/components/+config-resource-quotas/resource-quotas.store.ts create mode 100644 src/renderer/components/+config-resource-quotas/store.injectable.ts create mode 100644 src/renderer/components/+config-resource-quotas/store.ts create mode 100644 src/renderer/components/+config-secrets/legacy-store.ts delete mode 100644 src/renderer/components/+config-secrets/secrets.store.ts create mode 100644 src/renderer/components/+config-secrets/store.injectable.ts create mode 100644 src/renderer/components/+config-secrets/store.ts create mode 100644 src/renderer/components/+custom-resources/crd-groups-url-param.injectable.ts delete mode 100644 src/renderer/components/+custom-resources/crd-resource.store.ts delete mode 100644 src/renderer/components/+custom-resources/crd.store.ts create mode 100644 src/renderer/components/+custom-resources/definition.store.injectable.ts create mode 100644 src/renderer/components/+custom-resources/definition.store.ts create mode 100644 src/renderer/components/+custom-resources/legacy-store.ts create mode 100644 src/renderer/components/+events/duration-absolute.tsx create mode 100644 src/renderer/components/+events/legacy-store.ts create mode 100644 src/renderer/components/+events/store.injectable.ts rename src/renderer/components/+events/{event.store.ts => store.ts} (65%) rename src/renderer/components/+helm-releases/{release-rollback-dialog.scss => dialog/dialog.scss} (100%) create mode 100644 src/renderer/components/+helm-releases/dialog/dialog.tsx create mode 100644 src/renderer/components/+helm-releases/dialog/open.injectable.ts create mode 100644 src/renderer/components/+helm-releases/dialog/state.injectable.ts delete mode 100644 src/renderer/components/+helm-releases/release-rollback-dialog-model/release-rollback-dialog-model.injectable.ts delete mode 100644 src/renderer/components/+helm-releases/release-rollback-dialog-model/release-rollback-dialog-model.ts delete mode 100644 src/renderer/components/+helm-releases/release-rollback-dialog.tsx rename src/renderer/components/+namespaces/{add-namespace-dialog.scss => add-dialog/dialog.scss} (100%) create mode 100644 src/renderer/components/+namespaces/add-dialog/dialog.tsx create mode 100644 src/renderer/components/+namespaces/add-dialog/open.injectable.ts create mode 100644 src/renderer/components/+namespaces/add-dialog/state.injectable.ts delete mode 100644 src/renderer/components/+namespaces/add-namespace-dialog-model/add-namespace-dialog-model.injectable.ts delete mode 100644 src/renderer/components/+namespaces/add-namespace-dialog-model/add-namespace-dialog-model.ts delete mode 100644 src/renderer/components/+namespaces/add-namespace-dialog.tsx delete mode 100644 src/renderer/components/+namespaces/namespace-select-filter-model/namespace-select-filter-model.ts create mode 100644 src/renderer/components/+namespaces/namespace-select-filter-model/namespace-select-filter-model.tsx delete mode 100644 src/renderer/components/+namespaces/namespace-store/namespace-store.injectable.ts create mode 100644 src/renderer/components/+namespaces/store.injectable.ts rename src/renderer/components/+namespaces/{namespace-store/namespace.store.ts => store.ts} (87%) delete mode 100644 src/renderer/components/+network-endpoints/endpoints.store.ts create mode 100644 src/renderer/components/+network-endpoints/legacy-store.ts create mode 100644 src/renderer/components/+network-endpoints/store.injectable.ts create mode 100644 src/renderer/components/+network-endpoints/store.ts delete mode 100644 src/renderer/components/+network-ingresses/ingress.store.ts create mode 100644 src/renderer/components/+network-ingresses/legacy-store.ts create mode 100644 src/renderer/components/+network-ingresses/store.injectable.ts create mode 100644 src/renderer/components/+network-ingresses/store.ts create mode 100644 src/renderer/components/+network-policies/legacy-store.ts delete mode 100644 src/renderer/components/+network-policies/network-policy.store.ts create mode 100644 src/renderer/components/+network-policies/store.injectable.ts create mode 100644 src/renderer/components/+network-policies/store.ts create mode 100644 src/renderer/components/+network-services/legacy-store.ts delete mode 100644 src/renderer/components/+network-services/services.store.ts create mode 100644 src/renderer/components/+network-services/store.injectable.ts create mode 100644 src/renderer/components/+network-services/store.ts create mode 100644 src/renderer/components/+nodes/legacy-store.ts create mode 100644 src/renderer/components/+nodes/store.injectable.ts rename src/renderer/components/+nodes/{nodes.store.ts => store.ts} (58%) create mode 100644 src/renderer/components/+pod-security-policies/legacy-store.ts delete mode 100644 src/renderer/components/+pod-security-policies/pod-security-policies.store.ts create mode 100644 src/renderer/components/+pod-security-policies/store.injectable.ts create mode 100644 src/renderer/components/+pod-security-policies/store.ts create mode 100644 src/renderer/components/+storage-classes/legacy-store.ts delete mode 100644 src/renderer/components/+storage-classes/storage-class.store.ts create mode 100644 src/renderer/components/+storage-classes/store.injectable.ts create mode 100644 src/renderer/components/+storage-classes/store.ts create mode 100644 src/renderer/components/+storage-volume-claims/legacy-store.ts create mode 100644 src/renderer/components/+storage-volume-claims/store.injectable.ts create mode 100644 src/renderer/components/+storage-volume-claims/store.ts delete mode 100644 src/renderer/components/+storage-volume-claims/volume-claim.store.ts create mode 100644 src/renderer/components/+storage-volumes/get-persisten-volumes-by-storage-class.injectable.ts create mode 100644 src/renderer/components/+storage-volumes/legacy-store.ts create mode 100644 src/renderer/components/+storage-volumes/store.injectable.ts create mode 100644 src/renderer/components/+storage-volumes/store.ts delete mode 100644 src/renderer/components/+storage-volumes/volumes.store.ts delete mode 100644 src/renderer/components/+user-management/+cluster-role-bindings/hashers.ts create mode 100644 src/renderer/components/+user-management/+cluster-role-bindings/legacy-store.ts create mode 100644 src/renderer/components/+user-management/+cluster-role-bindings/store.injectable.ts create mode 100644 src/renderer/components/+user-management/+cluster-roles/legacy-store.ts create mode 100644 src/renderer/components/+user-management/+cluster-roles/store.injectable.ts create mode 100644 src/renderer/components/+user-management/+role-bindings/legacy-store.ts create mode 100644 src/renderer/components/+user-management/+role-bindings/store.injectable.ts create mode 100644 src/renderer/components/+user-management/+roles/legacy-store.ts create mode 100644 src/renderer/components/+user-management/+roles/store.injectable.ts create mode 100644 src/renderer/components/+user-management/+service-accounts/legacy-store.ts create mode 100644 src/renderer/components/+user-management/+service-accounts/store.injectable.ts rename src/renderer/components/+user-management/{+role-bindings => }/hashers.ts (69%) delete mode 100644 src/renderer/components/+workloads-cronjobs/cron-jobs-store.injectable.ts create mode 100644 src/renderer/components/+workloads-cronjobs/legacy-store.ts create mode 100644 src/renderer/components/+workloads-cronjobs/store.injectable.ts rename src/renderer/components/+workloads-cronjobs/{cronjob.store.ts => store.ts} (52%) delete mode 100644 src/renderer/components/+workloads-daemonsets/daemonsets.store.ts create mode 100644 src/renderer/components/+workloads-daemonsets/legacy-store.ts create mode 100644 src/renderer/components/+workloads-daemonsets/store.injectable.ts create mode 100644 src/renderer/components/+workloads-daemonsets/store.ts delete mode 100644 src/renderer/components/+workloads-deployments/deployment-scale-dialog.tsx delete mode 100644 src/renderer/components/+workloads-deployments/deployments-store.injectable.ts delete mode 100644 src/renderer/components/+workloads-deployments/deployments.store.ts create mode 100644 src/renderer/components/+workloads-deployments/legacy-store.ts create mode 100644 src/renderer/components/+workloads-deployments/scale/dialog-state.injectable.ts rename src/renderer/components/+workloads-deployments/{deployment-scale-dialog.scss => scale/dialog.scss} (100%) rename src/renderer/components/+workloads-deployments/{deployment-scale-dialog.test.tsx => scale/dialog.test.tsx} (51%) create mode 100644 src/renderer/components/+workloads-deployments/scale/dialog.tsx create mode 100644 src/renderer/components/+workloads-deployments/scale/open.injectable.ts create mode 100644 src/renderer/components/+workloads-deployments/store.injectable.ts create mode 100644 src/renderer/components/+workloads-deployments/store.ts create mode 100644 src/renderer/components/+workloads-jobs/get-jobs-by-owner.injectable.ts delete mode 100644 src/renderer/components/+workloads-jobs/job.store.ts delete mode 100644 src/renderer/components/+workloads-jobs/jobs-store.injectable.ts create mode 100644 src/renderer/components/+workloads-jobs/legacy-store.ts create mode 100644 src/renderer/components/+workloads-jobs/store.injectable.ts create mode 100644 src/renderer/components/+workloads-jobs/store.ts create mode 100644 src/renderer/components/+workloads-pods/get-pod-by-id.injectable.ts create mode 100644 src/renderer/components/+workloads-pods/get-pods-by-owner-id.injectable.ts create mode 100644 src/renderer/components/+workloads-pods/legacy-store.ts rename src/renderer/components/+workloads-pods/{pods-sidebar-items.injectable.tsx => pods-sidebar-items.injectable.ts} (100%) delete mode 100644 src/renderer/components/+workloads-pods/pods-store.injectable.ts create mode 100644 src/renderer/components/+workloads-pods/store.injectable.ts rename src/renderer/components/+workloads-pods/{pods.store.ts => store.ts} (60%) create mode 100644 src/renderer/components/+workloads-replicasets/legacy-store.ts delete mode 100644 src/renderer/components/+workloads-replicasets/replicaset-scale-dialog.tsx delete mode 100644 src/renderer/components/+workloads-replicasets/replicasets-store.injectable.ts delete mode 100644 src/renderer/components/+workloads-replicasets/replicasets.store.ts rename src/renderer/components/+workloads-replicasets/{replicaset-scale-dialog.scss => scale-dialog/dialog.scss} (100%) rename src/renderer/components/+workloads-replicasets/{replicaset-scale-dialog.test.tsx => scale-dialog/dialog.test.tsx} (66%) create mode 100644 src/renderer/components/+workloads-replicasets/scale-dialog/dialog.tsx create mode 100644 src/renderer/components/+workloads-replicasets/scale-dialog/open.injectable.ts create mode 100644 src/renderer/components/+workloads-replicasets/scale-dialog/state.injectable.ts create mode 100644 src/renderer/components/+workloads-replicasets/store.injectable.ts create mode 100644 src/renderer/components/+workloads-replicasets/store.ts create mode 100644 src/renderer/components/+workloads-statefulsets/legacy-store.ts create mode 100644 src/renderer/components/+workloads-statefulsets/scale/dialog-state.injectable.ts rename src/renderer/components/+workloads-statefulsets/{statefulset-scale-dialog.scss => scale/dialog.scss} (100%) rename src/renderer/components/+workloads-statefulsets/{statefulset-scale-dialog.test.tsx => scale/dialog.test.tsx} (67%) create mode 100644 src/renderer/components/+workloads-statefulsets/scale/dialog.tsx create mode 100644 src/renderer/components/+workloads-statefulsets/scale/open-dialog.injectable.ts delete mode 100644 src/renderer/components/+workloads-statefulsets/statefulset-scale-dialog.tsx delete mode 100644 src/renderer/components/+workloads-statefulsets/statefulset.store.ts delete mode 100644 src/renderer/components/+workloads-statefulsets/statefulsets-store.injectable.ts create mode 100644 src/renderer/components/+workloads-statefulsets/store.injectable.ts create mode 100644 src/renderer/components/+workloads-statefulsets/store.ts create mode 100644 src/renderer/components/chart/options.ts create mode 100644 src/renderer/components/cluster-manager/lens-views.injectable.ts delete mode 100644 src/renderer/components/delete-cluster-dialog/delete-cluster-dialog-model/delete-cluster-dialog-model.injectable.ts delete mode 100644 src/renderer/components/delete-cluster-dialog/delete-cluster-dialog-model/delete-cluster-dialog-model.ts delete mode 100644 src/renderer/components/delete-cluster-dialog/delete-cluster-dialog.tsx create mode 100644 src/renderer/components/delete-cluster-dialog/open.injectable.ts create mode 100644 src/renderer/components/delete-cluster-dialog/state.injectable.ts rename src/renderer/components/delete-cluster-dialog/{delete-cluster-dialog.module.scss => view.module.scss} (100%) create mode 100644 src/renderer/components/delete-cluster-dialog/view.tsx create mode 100644 src/renderer/components/dock/terminal/terminal-spawning-pool.injectable.ts create mode 100644 src/renderer/components/input/search-url-page-param.injectable.ts delete mode 100644 src/renderer/components/item-object-list/page-filters-list.tsx rename src/renderer/components/item-object-list/{page-filters-list.scss => page-filters/list.scss} (100%) create mode 100644 src/renderer/components/item-object-list/page-filters/list.tsx create mode 100644 src/renderer/components/item-object-list/page-filters/store.injectable.ts rename src/renderer/components/item-object-list/{page-filters.store.ts => page-filters/store.ts} (83%) create mode 100644 src/renderer/components/kube-detail-params/get-details-url.injectable.ts rename src/renderer/components/{kube-object-menu/dependencies => kube-detail-params}/hide-details.injectable.ts (56%) create mode 100644 src/renderer/components/kube-detail-params/kube-details-url.injectable.ts create mode 100644 src/renderer/components/kube-detail-params/kube-selected-url.injectable.ts delete mode 100644 src/renderer/components/kube-detail-params/params.ts create mode 100644 src/renderer/components/kube-detail-params/show-details.injectable.ts create mode 100644 src/renderer/components/kube-detail-params/toggle-details.injectable.ts delete mode 100644 src/renderer/components/kube-object-menu/dependencies/api-manager.injectable.ts create mode 100644 src/renderer/components/table/order-by-url-param.injectable.ts create mode 100644 src/renderer/components/table/sort-by-url-param.injectable.ts create mode 100644 src/renderer/extension-loader/create-extension-instance.injectable.ts create mode 100644 src/renderer/k8s/api-kube.injectable.ts create mode 100644 src/renderer/kube-object/handlers/stateful-set.injectable.ts delete mode 100644 src/renderer/kube-object/static-handlers.ts create mode 100644 src/renderer/navigation/create-page-param.injectable.ts delete mode 100644 src/renderer/navigation/helpers.ts delete mode 100644 src/renderer/navigation/history.ts create mode 100644 src/renderer/navigation/is-route-active.injectable.ts create mode 100644 src/renderer/navigation/match-route.injectable.ts create mode 100644 src/renderer/navigation/search-params.ts rename src/renderer/routes/{get-extension-route-path.ts => for-extension.ts} (60%) create mode 100644 src/renderer/routes/get-extension-page-parameters.injectable.ts delete mode 100644 src/renderer/routes/get-extension-route-id.ts create mode 100644 src/renderer/stores-apis-can-be-created.injectable.ts delete mode 100644 src/renderer/theme-store.injectable.ts rename src/renderer/themes/{lens-dark.json => lens-dark.ts} (94%) rename src/renderer/themes/{lens-light.json => lens-light.ts} (94%) create mode 100644 src/renderer/themes/store.injectable.ts rename src/renderer/{theme.store.ts => themes/store.ts} (56%) create mode 100644 src/renderer/utils/is-node-falsy.ts create mode 100644 tsconfig.extension-api.json diff --git a/.eslintrc.js b/.eslintrc.js index 2c10f6ab5e..733f644615 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -130,6 +130,14 @@ module.exports = { "@typescript-eslint/ban-ts-comment": "off", "@typescript-eslint/no-empty-function": "off", "@typescript-eslint/no-unused-vars": "off", + "no-restricted-imports": ["error", { + "paths": [ + { + "name": ".", + "message": "No importing from local index.ts(x?) file. A common way to make circular dependencies.", + }, + ], + }], "@typescript-eslint/member-delimiter-style": ["error", { "multiline": { "delimiter": "semi", @@ -140,6 +148,28 @@ module.exports = { "requireLast": false, }, }], + "react/jsx-max-props-per-line": ["error", { + "maximum": { + "single": 2, + "multi": 1, + }, + }], + "react/jsx-first-prop-new-line": ["error", "multiline"], + "react/jsx-one-expression-per-line": ["error", { + "allow": "single-child", + }], + "react/jsx-indent": ["error", 2], + "react/jsx-indent-props": ["error", 2], + "react/jsx-closing-tag-location": "error", + "react/jsx-wrap-multilines": ["error", { + "declaration": "parens-new-line", + "assignment": "parens-new-line", + "return": "parens-new-line", + "arrow": "parens-new-line", + "condition": "parens-new-line", + "logical": "parens-new-line", + "prop": "parens-new-line", + }], "react/display-name": "off", "space-before-function-paren": "off", "@typescript-eslint/space-before-function-paren": ["error", { @@ -218,5 +248,35 @@ module.exports = { "@typescript-eslint/consistent-type-imports": "error", }, }, + { + files: [ + "src/{common,main,renderer}/**/*.ts", + "src/{common,main,renderer}/**/*.tsx", + ], + rules: { + "no-restricted-imports": ["error", { + "paths": [ + { + "name": ".", + "message": "No importing from local index.ts(x?) file. A common way to make circular dependencies.", + }, + { + "name": "..", + "message": "No importing from parent index.ts(x?) file. A common way to make circular dependencies.", + }, + ], + "patterns": [ + { + "group": [ + "**/extensions/renderer-api/**/*", + "**/extensions/main-api/**/*", + "**/extensions/common-api/**/*", + ], + message: "No importing from the extension api definitions in application code", + }, + ], + }], + }, + }, ], }; diff --git a/Makefile b/Makefile index 6db96fbc2b..48ce768766 100644 --- a/Makefile +++ b/Makefile @@ -63,6 +63,10 @@ ifeq "$(DETECTED_OS)" "Windows" endif yarn run electron-builder --publish onTag $(ELECTRON_BUILDER_EXTRA_ARGS) +.PHONY: update-extension-locks +update-extension-locks: + $(foreach dir, $(extensions), (cd $(dir) && rm package-lock.json && ../../node_modules/.bin/npm install --package-lock-only);) + .NOTPARALLEL: $(extension_node_modules) $(extension_node_modules): node_modules cd $(@:/node_modules=) && ../../node_modules/.bin/npm install --no-audit --no-fund --no-save @@ -81,19 +85,17 @@ build-extensions: node_modules clean-old-extensions $(extension_dists) test-extensions: $(extension_node_modules) $(foreach dir, $(extensions), (cd $(dir) && npm run test || exit $?);) -.PHONY: copy-extension-themes -copy-extension-themes: - mkdir -p src/extensions/npm/extensions/dist/src/renderer/themes/ - cp $(wildcard src/renderer/themes/*.json) src/extensions/npm/extensions/dist/src/renderer/themes/ - src/extensions/npm/extensions/__mocks__: cp -r __mocks__ src/extensions/npm/extensions/ -src/extensions/npm/extensions/dist: node_modules +src/extensions/npm/extensions/dist: src/extensions/npm/extensions/node_modules yarn compile:extension-types +src/extensions/npm/extensions/node_modules: src/extensions/npm/extensions/package.json + cd src/extensions/npm/extensions/ && ../../../../node_modules/.bin/npm install --no-audit --no-fund + .PHONY: build-npm -build-npm: build-extension-types copy-extension-themes src/extensions/npm/extensions/__mocks__ +build-npm: build-extension-types src/extensions/npm/extensions/__mocks__ yarn npm:fix-package-version .PHONY: build-extension-types diff --git a/build/build_theme_vars.ts b/build/build_theme_vars.ts index 44376712a7..dbade45847 100644 --- a/build/build_theme_vars.ts +++ b/build/build_theme_vars.ts @@ -5,11 +5,11 @@ import fs from "fs-extra"; import path from "path"; -import defaultBaseLensTheme from "../src/renderer/themes/lens-dark.json"; +import defaultBaseLensTheme from "../src/renderer/themes/lens-dark"; const outputCssFile = path.resolve("src/renderer/themes/theme-vars.css"); -const banner = `/* +const banner = `/* Generated Lens theme CSS-variables, don't edit manually. To refresh file run $: yarn run ts-node build/${path.basename(__filename)} */`; diff --git a/build/download_binaries.ts b/build/download_binaries.ts index 73c9dff175..5b4f960c5e 100644 --- a/build/download_binaries.ts +++ b/build/download_binaries.ts @@ -3,9 +3,9 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import packageInfo from "../package.json"; -import { type WriteStream } from "fs"; import type { FileHandle } from "fs/promises"; import { open } from "fs/promises"; +import type { WriteStream } from "fs-extra"; import { constants, ensureDir, unlink } from "fs-extra"; import path from "path"; import fetch from "node-fetch"; @@ -17,6 +17,7 @@ import AbortController from "abort-controller"; import { extract } from "tar-stream"; import gunzip from "gunzip-maybe"; import { getBinaryName, normalizedPlatform } from "../src/common/vars"; +import { isErrnoException } from "../src/common/utils"; const pipeline = promisify(_pipeline); @@ -44,6 +45,10 @@ abstract class BinaryDownloader { } async ensureBinary(): Promise { + if (process.env.LENS_SKIP_DOWNLOAD_BINARIES === "true") { + return; + } + const controller = new AbortController(); const stream = await fetch(this.url, { timeout: 15 * 60 * 1000, // 15min @@ -51,7 +56,7 @@ abstract class BinaryDownloader { }); const total = Number(stream.headers.get("content-length")); const bar = this.bar; - let fileHandle: FileHandle; + let fileHandle: FileHandle | undefined = undefined; if (isNaN(total)) { throw new Error("no content-length header was present"); @@ -66,7 +71,7 @@ abstract class BinaryDownloader { * This is necessary because for some reason `createWriteStream({ flags: "wx" })` * was throwing someplace else and not here */ - fileHandle = await open(this.target, constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL); + const handle = fileHandle = await open(this.target, constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL); await pipeline( stream.body, @@ -79,7 +84,7 @@ abstract class BinaryDownloader { }), ...this.getTransformStreams(new Writable({ write(chunk, encoding, cb) { - fileHandle.write(chunk) + handle.write(chunk) .then(() => cb()) .catch(cb); }, @@ -90,7 +95,7 @@ abstract class BinaryDownloader { } catch (error) { await fileHandle?.close(); - if (error.code === "EEXIST") { + if (isErrnoException(error) && error.code === "EEXIST") { bar.increment(total); // mark as finished controller.abort(); // stop trying to download } else { diff --git a/build/tsconfig.json b/build/tsconfig.json new file mode 100644 index 0000000000..7c6e822d2c --- /dev/null +++ b/build/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "../tsconfig.json", + "include": [ + "./**/*", + ] +} diff --git a/extensions/kube-object-event-status/package-lock.json b/extensions/kube-object-event-status/package-lock.json deleted file mode 100644 index 0a541e307a..0000000000 --- a/extensions/kube-object-event-status/package-lock.json +++ /dev/null @@ -1,2374 +0,0 @@ -{ - "name": "kube-object-event-status", - "version": "0.0.1", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@k8slens/extensions": { - "version": "file:../../src/extensions/npm/extensions", - "dev": true, - "requires": { - "@material-ui/core": "4.12.3", - "@types/node": "14.17.14", - "@types/react-select": "3.1.2", - "conf": "^7.0.1", - "typed-emitter": "^1.3.1" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", - "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@emotion/hash": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", - "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", - "dev": true - }, - "@material-ui/core": { - "version": "4.12.3", - "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.12.3.tgz", - "integrity": "sha512-sdpgI/PL56QVsEJldwEe4FFaFTLUqN+rd7sSZiRCdx2E/C7z5yK0y/khAWVBH24tXwto7I1hCzNWfJGZIYJKnw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@material-ui/styles": "^4.11.4", - "@material-ui/system": "^4.12.1", - "@material-ui/types": "5.1.0", - "@material-ui/utils": "^4.11.2", - "@types/react-transition-group": "^4.2.0", - "clsx": "^1.0.4", - "hoist-non-react-statics": "^3.3.2", - "popper.js": "1.16.1-lts", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0", - "react-transition-group": "^4.4.0" - } - }, - "@material-ui/styles": { - "version": "4.11.4", - "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.4.tgz", - "integrity": "sha512-KNTIZcnj/zprG5LW0Sao7zw+yG3O35pviHzejMdcSGCdWbiO8qzRgOYL8JAxAsWBKOKYwVZxXtHWaB5T2Kvxew==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@emotion/hash": "^0.8.0", - "@material-ui/types": "5.1.0", - "@material-ui/utils": "^4.11.2", - "clsx": "^1.0.4", - "csstype": "^2.5.2", - "hoist-non-react-statics": "^3.3.2", - "jss": "^10.5.1", - "jss-plugin-camel-case": "^10.5.1", - "jss-plugin-default-unit": "^10.5.1", - "jss-plugin-global": "^10.5.1", - "jss-plugin-nested": "^10.5.1", - "jss-plugin-props-sort": "^10.5.1", - "jss-plugin-rule-value-function": "^10.5.1", - "jss-plugin-vendor-prefixer": "^10.5.1", - "prop-types": "^15.7.2" - } - }, - "@material-ui/system": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.12.1.tgz", - "integrity": "sha512-lUdzs4q9kEXZGhbN7BptyiS1rLNHe6kG9o8Y307HCvF4sQxbCgpL2qi+gUk+yI8a2DNk48gISEQxoxpgph0xIw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@material-ui/utils": "^4.11.2", - "csstype": "^2.5.2", - "prop-types": "^15.7.2" - } - }, - "@material-ui/types": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz", - "integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==", - "dev": true - }, - "@material-ui/utils": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.2.tgz", - "integrity": "sha512-Uul8w38u+PICe2Fg2pDKCaIG7kOyhowZ9vjiC1FsVwPABTW8vPPKfF6OvxRq3IiBaI1faOJmgdvMG7rMJARBhA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0" - } - }, - "@types/node": { - "version": "14.17.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.14.tgz", - "integrity": "sha512-rsAj2u8Xkqfc332iXV12SqIsjVi07H479bOP4q94NAcjzmAvapumEhuVIt53koEf7JFrpjgNKjBga5Pnn/GL8A==", - "dev": true - }, - "@types/prop-types": { - "version": "15.7.4", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", - "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==", - "dev": true - }, - "@types/react": { - "version": "17.0.35", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.35.tgz", - "integrity": "sha512-r3C8/TJuri/SLZiiwwxQoLAoavaczARfT9up9b4Jr65+ErAUX3MIkU0oMOQnrpfgHme8zIqZLX7O5nnjm5Wayw==", - "dev": true, - "requires": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - }, - "dependencies": { - "csstype": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", - "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==", - "dev": true - } - } - }, - "@types/react-dom": { - "version": "17.0.11", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.11.tgz", - "integrity": "sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q==", - "dev": true, - "requires": { - "@types/react": "*" - } - }, - "@types/react-select": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@types/react-select/-/react-select-3.1.2.tgz", - "integrity": "sha512-ygvR/2FL87R2OLObEWFootYzkvm67LRA+URYEAcBuvKk7IXmdsnIwSGm60cVXGaqkJQHozb2Cy1t94tCYb6rJA==", - "dev": true, - "requires": { - "@types/react": "*", - "@types/react-dom": "*", - "@types/react-transition-group": "*" - } - }, - "@types/react-transition-group": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.4.tgz", - "integrity": "sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug==", - "dev": true, - "requires": { - "@types/react": "*" - } - }, - "@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", - "dev": true - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "atomically": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", - "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==", - "dev": true - }, - "clsx": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", - "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==", - "dev": true - }, - "conf": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/conf/-/conf-7.1.2.tgz", - "integrity": "sha512-r8/HEoWPFn4CztjhMJaWNAe5n+gPUCSaJ0oufbqDLFKsA1V8JjAG7G+p0pgoDFAws9Bpk2VtVLLXqOBA7WxLeg==", - "dev": true, - "requires": { - "ajv": "^6.12.2", - "atomically": "^1.3.1", - "debounce-fn": "^4.0.0", - "dot-prop": "^5.2.0", - "env-paths": "^2.2.0", - "json-schema-typed": "^7.0.3", - "make-dir": "^3.1.0", - "onetime": "^5.1.0", - "pkg-up": "^3.1.0", - "semver": "^7.3.2" - } - }, - "css-vendor": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", - "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.3", - "is-in-browser": "^1.0.2" - } - }, - "csstype": { - "version": "2.6.18", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.18.tgz", - "integrity": "sha512-RSU6Hyeg14am3Ah4VZEmeX8H7kLwEEirXe6aU2IPfKNvhXwTflK5HQRDNI0ypQXoqmm+QPyG2IaPuQE5zMwSIQ==", - "dev": true - }, - "debounce-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz", - "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==", - "dev": true, - "requires": { - "mimic-fn": "^3.0.0" - } - }, - "dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - }, - "dependencies": { - "csstype": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", - "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==", - "dev": true - } - } - }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "requires": { - "is-obj": "^2.0.0" - } - }, - "env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dev": true, - "requires": { - "react-is": "^16.7.0" - }, - "dependencies": { - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true - } - } - }, - "hyphenate-style-name": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", - "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==", - "dev": true - }, - "is-in-browser": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", - "integrity": "sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU=", - "dev": true - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-schema-typed": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz", - "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==", - "dev": true - }, - "jss": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss/-/jss-10.8.2.tgz", - "integrity": "sha512-FkoUNxI329CKQ9OQC8L72MBF9KPf5q8mIupAJ5twU7G7XREW7ahb+7jFfrjZ4iy1qvhx1HwIWUIvkZBDnKkEdQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "csstype": "^3.0.2", - "is-in-browser": "^1.1.3", - "tiny-warning": "^1.0.2" - }, - "dependencies": { - "csstype": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", - "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==", - "dev": true - } - } - }, - "jss-plugin-camel-case": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.8.2.tgz", - "integrity": "sha512-2INyxR+1UdNuKf4v9It3tNfPvf7IPrtkiwzofeKuMd5D58/dxDJVUQYRVg/n460rTlHUfsEQx43hDrcxi9dSPA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "hyphenate-style-name": "^1.0.3", - "jss": "10.8.2" - } - }, - "jss-plugin-default-unit": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.8.2.tgz", - "integrity": "sha512-UZ7cwT9NFYSG+SEy7noRU50s4zifulFdjkUNKE+u6mW7vFP960+RglWjTgMfh79G6OENZmaYnjHV/gcKV4nSxg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.8.2" - } - }, - "jss-plugin-global": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.8.2.tgz", - "integrity": "sha512-UaYMSPsYZ7s/ECGoj4KoHC2jwQd5iQ7K+FFGnCAILdQrv7hPmvM2Ydg45ThT/sH46DqktCRV2SqjRuxeBH8nRA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.8.2" - } - }, - "jss-plugin-nested": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.8.2.tgz", - "integrity": "sha512-acRvuPJOb930fuYmhkJaa994EADpt8TxI63Iyg96C8FJ9T2xRyU5T6R1IYKRwUiqZo+2Sr7fdGzRTDD4uBZaMA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.8.2", - "tiny-warning": "^1.0.2" - } - }, - "jss-plugin-props-sort": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.8.2.tgz", - "integrity": "sha512-wqdcjayKRWBZnNpLUrXvsWqh+5J5YToAQ+8HNBNw0kZxVvCDwzhK2Nx6AKs7p+5/MbAh2PLgNW5Ym/ysbVAuqQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.8.2" - } - }, - "jss-plugin-rule-value-function": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.8.2.tgz", - "integrity": "sha512-bW0EKAs+0HXpb6BKJhrn94IDdiWb0CnSluTkh0rGEgyzY/nmD1uV/Wf6KGlesGOZ9gmJzQy+9FFdxIUID1c9Ug==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.8.2", - "tiny-warning": "^1.0.2" - } - }, - "jss-plugin-vendor-prefixer": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.8.2.tgz", - "integrity": "sha512-DeGv18QsSiYLSVIEB2+l0af6OToUe0JB+trpzUxyqD2QRC/5AzzDrCrYffO5AHZ81QbffYvSN/pkfZaTWpRXlg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "css-vendor": "^2.0.8", - "jss": "10.8.2" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "mimic-fn": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", - "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - }, - "dependencies": { - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - } - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "popper.js": { - "version": "1.16.1-lts", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1-lts.tgz", - "integrity": "sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA==", - "dev": true - }, - "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "dev": true, - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - }, - "dependencies": { - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true - } - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "react-transition-group": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz", - "integrity": "sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "tiny-warning": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", - "dev": true - }, - "typed-emitter": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/typed-emitter/-/typed-emitter-1.3.1.tgz", - "integrity": "sha512-2h7utWyXgd2R2u2IuL8B4yu1gqMxbgUj2VS/MGVbFhEVQNJKXoQQoS5CBMh+eW31zFeSmDfEQ3qQf4xy5SlPVQ==", - "dev": true - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "npm": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/npm/-/npm-8.5.3.tgz", - "integrity": "sha512-O+1j66Alx7ZQgWnUSSTaz8rTqQrJnqNb8Num5uQw2vYvc2RrxLaX7cWtRkDhvkPIL8Nf2WU9gx1oSu268QConA==", - "dev": true, - "requires": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^5.0.0", - "@npmcli/ci-detect": "^2.0.0", - "@npmcli/config": "^4.0.1", - "@npmcli/map-workspaces": "^2.0.0", - "@npmcli/package-json": "^1.0.1", - "@npmcli/run-script": "^3.0.1", - "abbrev": "~1.1.1", - "ansicolors": "~0.3.2", - "ansistyles": "~0.1.3", - "archy": "~1.0.0", - "cacache": "^15.3.0", - "chalk": "^4.1.2", - "chownr": "^2.0.0", - "cli-columns": "^4.0.0", - "cli-table3": "^0.6.1", - "columnify": "^1.6.0", - "fastest-levenshtein": "^1.0.12", - "glob": "^7.2.0", - "graceful-fs": "^4.2.9", - "hosted-git-info": "^4.1.0", - "ini": "^2.0.0", - "init-package-json": "^3.0.0", - "is-cidr": "^4.0.2", - "json-parse-even-better-errors": "^2.3.1", - "libnpmaccess": "^6.0.0", - "libnpmdiff": "^4.0.0", - "libnpmexec": "^4.0.0", - "libnpmfund": "^3.0.0", - "libnpmhook": "^8.0.0", - "libnpmorg": "^4.0.0", - "libnpmpack": "^4.0.0", - "libnpmpublish": "^6.0.0", - "libnpmsearch": "^5.0.0", - "libnpmteam": "^4.0.0", - "libnpmversion": "^3.0.0", - "make-fetch-happen": "^10.0.4", - "minipass": "^3.1.6", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "ms": "^2.1.2", - "node-gyp": "^9.0.0", - "nopt": "^5.0.0", - "npm-audit-report": "^2.1.5", - "npm-install-checks": "^4.0.0", - "npm-package-arg": "^9.0.0", - "npm-pick-manifest": "^7.0.0", - "npm-profile": "^6.0.2", - "npm-registry-fetch": "^13.0.1", - "npm-user-validate": "^1.0.1", - "npmlog": "^6.0.1", - "opener": "^1.5.2", - "pacote": "^13.0.3", - "parse-conflict-json": "^2.0.1", - "proc-log": "^2.0.0", - "qrcode-terminal": "^0.12.0", - "read": "~1.0.7", - "read-package-json": "^4.1.1", - "read-package-json-fast": "^2.0.3", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "ssri": "^8.0.1", - "tar": "^6.1.11", - "text-table": "~0.2.0", - "tiny-relative-date": "^1.3.0", - "treeverse": "^1.0.4", - "validate-npm-package-name": "~3.0.0", - "which": "^2.0.2", - "write-file-atomic": "^4.0.1" - }, - "dependencies": { - "@gar/promisify": { - "version": "1.1.3", - "bundled": true, - "dev": true - }, - "@isaacs/string-locale-compare": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "@npmcli/arborist": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/map-workspaces": "^2.0.0", - "@npmcli/metavuln-calculator": "^3.0.0", - "@npmcli/move-file": "^1.1.0", - "@npmcli/name-from-folder": "^1.0.1", - "@npmcli/node-gyp": "^1.0.3", - "@npmcli/package-json": "^1.0.1", - "@npmcli/run-script": "^3.0.0", - "bin-links": "^3.0.0", - "cacache": "^15.0.3", - "common-ancestor-path": "^1.0.1", - "json-parse-even-better-errors": "^2.3.1", - "json-stringify-nice": "^1.1.4", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^5.0.0", - "npm-install-checks": "^4.0.0", - "npm-package-arg": "^9.0.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.0", - "npmlog": "^6.0.1", - "pacote": "^13.0.2", - "parse-conflict-json": "^2.0.1", - "proc-log": "^2.0.0", - "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.1", - "read-package-json-fast": "^2.0.2", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "ssri": "^8.0.1", - "treeverse": "^1.0.4", - "walk-up-path": "^1.0.0" - } - }, - "@npmcli/ci-detect": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "@npmcli/config": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/map-workspaces": "^2.0.1", - "ini": "^2.0.0", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^5.0.0", - "proc-log": "^2.0.0", - "read-package-json-fast": "^2.0.3", - "semver": "^7.3.5", - "walk-up-path": "^1.0.0" - } - }, - "@npmcli/disparity-colors": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-styles": "^4.3.0" - } - }, - "@npmcli/fs": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "@npmcli/git": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/promise-spawn": "^1.3.2", - "lru-cache": "^7.3.1", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^7.0.0", - "proc-log": "^2.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" - }, - "dependencies": { - "lru-cache": { - "version": "7.4.0", - "bundled": true, - "dev": true - } - } - }, - "@npmcli/installed-package-contents": { - "version": "1.0.7", - "bundled": true, - "dev": true, - "requires": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "@npmcli/map-workspaces": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/name-from-folder": "^1.0.1", - "glob": "^7.2.0", - "minimatch": "^5.0.0", - "read-package-json-fast": "^2.0.3" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.0.1", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "@npmcli/metavuln-calculator": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "cacache": "^15.3.0", - "json-parse-even-better-errors": "^2.3.1", - "pacote": "^13.0.1", - "semver": "^7.3.5" - } - }, - "@npmcli/move-file": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "@npmcli/name-from-folder": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "@npmcli/node-gyp": { - "version": "1.0.3", - "bundled": true, - "dev": true - }, - "@npmcli/package-json": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.1" - } - }, - "@npmcli/promise-spawn": { - "version": "1.3.2", - "bundled": true, - "dev": true, - "requires": { - "infer-owner": "^1.0.4" - } - }, - "@npmcli/run-script": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/node-gyp": "^1.0.3", - "@npmcli/promise-spawn": "^1.3.2", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^2.0.3" - } - }, - "@tootallnate/once": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, - "agent-base": { - "version": "6.0.2", - "bundled": true, - "dev": true, - "requires": { - "debug": "4" - } - }, - "agentkeepalive": { - "version": "4.2.1", - "bundled": true, - "dev": true, - "requires": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - } - }, - "aggregate-error": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ansi-styles": { - "version": "4.3.0", - "bundled": true, - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "ansicolors": { - "version": "0.3.2", - "bundled": true, - "dev": true - }, - "ansistyles": { - "version": "0.1.3", - "bundled": true, - "dev": true - }, - "aproba": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "archy": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "are-we-there-yet": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "asap": { - "version": "2.0.6", - "bundled": true, - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "bin-links": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "cmd-shim": "^4.0.1", - "mkdirp-infer-owner": "^2.0.0", - "npm-normalize-package-bin": "^1.0.0", - "read-cmd-shim": "^2.0.0", - "rimraf": "^3.0.0", - "write-file-atomic": "^4.0.0" - } - }, - "binary-extensions": { - "version": "2.2.0", - "bundled": true, - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "builtins": { - "version": "1.0.3", - "bundled": true, - "dev": true - }, - "cacache": { - "version": "15.3.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - } - }, - "chalk": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chownr": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "cidr-regex": { - "version": "3.1.1", - "bundled": true, - "dev": true, - "requires": { - "ip-regex": "^4.1.0" - } - }, - "clean-stack": { - "version": "2.2.0", - "bundled": true, - "dev": true - }, - "cli-columns": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "cli-table3": { - "version": "0.6.1", - "bundled": true, - "dev": true, - "requires": { - "colors": "1.4.0", - "string-width": "^4.2.0" - } - }, - "clone": { - "version": "1.0.4", - "bundled": true, - "dev": true - }, - "cmd-shim": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "requires": { - "mkdirp-infer-owner": "^2.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "bundled": true, - "dev": true - }, - "color-support": { - "version": "1.1.3", - "bundled": true, - "dev": true - }, - "colors": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "columnify": { - "version": "1.6.0", - "bundled": true, - "dev": true, - "requires": { - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "common-ancestor-path": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "debug": { - "version": "4.3.3", - "bundled": true, - "dev": true, - "requires": { - "ms": "2.1.2" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "bundled": true, - "dev": true - } - } - }, - "debuglog": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "defaults": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "depd": { - "version": "1.1.2", - "bundled": true, - "dev": true - }, - "dezalgo": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "diff": { - "version": "5.0.0", - "bundled": true, - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "bundled": true, - "dev": true - }, - "encoding": { - "version": "0.1.13", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "iconv-lite": "^0.6.2" - } - }, - "env-paths": { - "version": "2.2.1", - "bundled": true, - "dev": true - }, - "err-code": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "fastest-levenshtein": { - "version": "1.0.12", - "bundled": true, - "dev": true - }, - "fs-minipass": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, - "gauge": { - "version": "4.0.2", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^5.0.1", - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "glob": { - "version": "7.2.0", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.2.9", - "bundled": true, - "dev": true - }, - "has": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "hosted-git-info": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "http-cache-semantics": { - "version": "4.1.0", - "bundled": true, - "dev": true - }, - "http-proxy-agent": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - } - }, - "https-proxy-agent": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "humanize-ms": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "requires": { - "ms": "^2.0.0" - } - }, - "iconv-lite": { - "version": "0.6.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "ignore-walk": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true, - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "infer-owner": { - "version": "1.0.4", - "bundled": true, - "dev": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "bundled": true, - "dev": true - }, - "ini": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "init-package-json": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "npm-package-arg": "^9.0.0", - "promzard": "^0.3.0", - "read": "^1.0.7", - "read-package-json": "^4.1.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^3.0.0" - } - }, - "ip": { - "version": "1.1.5", - "bundled": true, - "dev": true - }, - "ip-regex": { - "version": "4.3.0", - "bundled": true, - "dev": true - }, - "is-cidr": { - "version": "4.0.2", - "bundled": true, - "dev": true, - "requires": { - "cidr-regex": "^3.1.1" - } - }, - "is-core-module": { - "version": "2.8.1", - "bundled": true, - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "is-lambda": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "bundled": true, - "dev": true - }, - "json-stringify-nice": { - "version": "1.1.4", - "bundled": true, - "dev": true - }, - "jsonparse": { - "version": "1.3.1", - "bundled": true, - "dev": true - }, - "just-diff": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "just-diff-apply": { - "version": "4.0.1", - "bundled": true, - "dev": true - }, - "libnpmaccess": { - "version": "6.0.0", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^2.0.0", - "minipass": "^3.1.1", - "npm-package-arg": "^9.0.0", - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmdiff": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/disparity-colors": "^1.0.1", - "@npmcli/installed-package-contents": "^1.0.7", - "binary-extensions": "^2.2.0", - "diff": "^5.0.0", - "minimatch": "^3.0.4", - "npm-package-arg": "^9.0.0", - "pacote": "^13.0.2", - "tar": "^6.1.0" - } - }, - "libnpmexec": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/arborist": "^5.0.0", - "@npmcli/ci-detect": "^2.0.0", - "@npmcli/run-script": "^3.0.0", - "chalk": "^4.1.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-package-arg": "^9.0.0", - "npmlog": "^6.0.1", - "pacote": "^13.0.2", - "proc-log": "^2.0.0", - "read": "^1.0.7", - "read-package-json-fast": "^2.0.2", - "walk-up-path": "^1.0.0" - } - }, - "libnpmfund": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/arborist": "^5.0.0" - } - }, - "libnpmhook": { - "version": "8.0.0", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmorg": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmpack": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/run-script": "^3.0.0", - "npm-package-arg": "^9.0.0", - "pacote": "^13.0.2" - } - }, - "libnpmpublish": { - "version": "6.0.0", - "bundled": true, - "dev": true, - "requires": { - "normalize-package-data": "^3.0.2", - "npm-package-arg": "^9.0.0", - "npm-registry-fetch": "^13.0.0", - "semver": "^7.1.3", - "ssri": "^8.0.1" - } - }, - "libnpmsearch": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmteam": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmversion": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/git": "^3.0.0", - "@npmcli/run-script": "^3.0.0", - "json-parse-even-better-errors": "^2.3.1", - "proc-log": "^2.0.0", - "semver": "^7.3.5", - "stringify-package": "^1.0.1" - } - }, - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "make-fetch-happen": { - "version": "10.0.4", - "bundled": true, - "dev": true, - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^15.3.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.4.0", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.1", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.1.1", - "ssri": "^8.0.1" - }, - "dependencies": { - "lru-cache": { - "version": "7.4.0", - "bundled": true, - "dev": true - } - } - }, - "minimatch": { - "version": "3.1.2", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minipass": { - "version": "3.1.6", - "bundled": true, - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minipass-collect": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-fetch": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "encoding": "^0.1.13", - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - } - }, - "minipass-flush": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-json-stream": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "minipass-pipeline": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-sized": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "bundled": true, - "dev": true - }, - "mkdirp-infer-owner": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "chownr": "^2.0.0", - "infer-owner": "^1.0.4", - "mkdirp": "^1.0.3" - } - }, - "ms": { - "version": "2.1.3", - "bundled": true, - "dev": true - }, - "mute-stream": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "negotiator": { - "version": "0.6.3", - "bundled": true, - "dev": true - }, - "node-gyp": { - "version": "9.0.0", - "bundled": true, - "dev": true, - "requires": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - } - }, - "nopt": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-package-data": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "requires": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - } - }, - "npm-audit-report": { - "version": "2.1.5", - "bundled": true, - "dev": true, - "requires": { - "chalk": "^4.0.0" - } - }, - "npm-bundled": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-install-checks": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "semver": "^7.1.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "npm-package-arg": { - "version": "9.0.0", - "bundled": true, - "dev": true, - "requires": { - "hosted-git-info": "^4.1.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^3.0.0" - } - }, - "npm-packlist": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "glob": "^7.1.6", - "ignore-walk": "^4.0.1", - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-pick-manifest": { - "version": "7.0.0", - "bundled": true, - "dev": true, - "requires": { - "npm-install-checks": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^9.0.0", - "semver": "^7.3.5" - } - }, - "npm-profile": { - "version": "6.0.2", - "bundled": true, - "dev": true, - "requires": { - "npm-registry-fetch": "^13.0.0", - "proc-log": "^2.0.0" - } - }, - "npm-registry-fetch": { - "version": "13.0.1", - "bundled": true, - "dev": true, - "requires": { - "make-fetch-happen": "^10.0.3", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.1", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.0", - "proc-log": "^2.0.0" - } - }, - "npm-user-validate": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "npmlog": { - "version": "6.0.1", - "bundled": true, - "dev": true, - "requires": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.0", - "set-blocking": "^2.0.0" - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "opener": { - "version": "1.5.2", - "bundled": true, - "dev": true - }, - "p-map": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "pacote": { - "version": "13.0.3", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^1.2.0", - "@npmcli/run-script": "^3.0.0", - "cacache": "^15.3.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.6", - "mkdirp": "^1.0.4", - "npm-package-arg": "^9.0.0", - "npm-packlist": "^3.0.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.0", - "proc-log": "^2.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^4.1.1", - "read-package-json-fast": "^2.0.3", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.1.11" - } - }, - "parse-conflict-json": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.1", - "just-diff": "^5.0.1", - "just-diff-apply": "^4.0.1" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "proc-log": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "promise-all-reject-late": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "promise-call-limit": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "promise-inflight": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "promise-retry": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - } - }, - "promzard": { - "version": "0.3.0", - "bundled": true, - "dev": true, - "requires": { - "read": "1" - } - }, - "qrcode-terminal": { - "version": "0.12.0", - "bundled": true, - "dev": true - }, - "read": { - "version": "1.0.7", - "bundled": true, - "dev": true, - "requires": { - "mute-stream": "~0.0.4" - } - }, - "read-cmd-shim": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "read-package-json": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "requires": { - "glob": "^7.1.1", - "json-parse-even-better-errors": "^2.3.0", - "normalize-package-data": "^3.0.0", - "npm-normalize-package-bin": "^1.0.0" - } - }, - "read-package-json-fast": { - "version": "2.0.3", - "bundled": true, - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "readable-stream": { - "version": "3.6.0", - "bundled": true, - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdir-scoped-modules": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" - } - }, - "retry": { - "version": "0.12.0", - "bundled": true, - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.2.1", - "bundled": true, - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "7.3.5", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "signal-exit": { - "version": "3.0.7", - "bundled": true, - "dev": true - }, - "smart-buffer": { - "version": "4.2.0", - "bundled": true, - "dev": true - }, - "socks": { - "version": "2.6.2", - "bundled": true, - "dev": true, - "requires": { - "ip": "^1.1.5", - "smart-buffer": "^4.2.0" - } - }, - "socks-proxy-agent": { - "version": "6.1.1", - "bundled": true, - "dev": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.1", - "socks": "^2.6.1" - } - }, - "spdx-correct": { - "version": "3.1.1", - "bundled": true, - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "bundled": true, - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.11", - "bundled": true, - "dev": true - }, - "ssri": { - "version": "8.0.1", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - }, - "string-width": { - "version": "4.2.3", - "bundled": true, - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "string_decoder": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "stringify-package": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "bundled": true, - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "tar": { - "version": "6.1.11", - "bundled": true, - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - }, - "text-table": { - "version": "0.2.0", - "bundled": true, - "dev": true - }, - "tiny-relative-date": { - "version": "1.3.0", - "bundled": true, - "dev": true - }, - "treeverse": { - "version": "1.0.4", - "bundled": true, - "dev": true - }, - "unique-filename": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "validate-npm-package-name": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "builtins": "^1.0.3" - } - }, - "walk-up-path": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "wcwidth": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "which": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wide-align": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "write-file-atomic": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true, - "dev": true - } - } - } - } -} diff --git a/extensions/metrics-cluster-feature/package-lock.json b/extensions/metrics-cluster-feature/package-lock.json deleted file mode 100644 index 7025687b2b..0000000000 --- a/extensions/metrics-cluster-feature/package-lock.json +++ /dev/null @@ -1,2380 +0,0 @@ -{ - "name": "lens-metrics-cluster-feature", - "version": "0.0.1", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@k8slens/extensions": { - "version": "file:../../src/extensions/npm/extensions", - "dev": true, - "requires": { - "@material-ui/core": "4.12.3", - "@types/node": "14.17.14", - "@types/react-select": "3.1.2", - "conf": "^7.0.1", - "typed-emitter": "^1.3.1" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", - "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@emotion/hash": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", - "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", - "dev": true - }, - "@material-ui/core": { - "version": "4.12.3", - "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.12.3.tgz", - "integrity": "sha512-sdpgI/PL56QVsEJldwEe4FFaFTLUqN+rd7sSZiRCdx2E/C7z5yK0y/khAWVBH24tXwto7I1hCzNWfJGZIYJKnw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@material-ui/styles": "^4.11.4", - "@material-ui/system": "^4.12.1", - "@material-ui/types": "5.1.0", - "@material-ui/utils": "^4.11.2", - "@types/react-transition-group": "^4.2.0", - "clsx": "^1.0.4", - "hoist-non-react-statics": "^3.3.2", - "popper.js": "1.16.1-lts", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0", - "react-transition-group": "^4.4.0" - } - }, - "@material-ui/styles": { - "version": "4.11.4", - "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.4.tgz", - "integrity": "sha512-KNTIZcnj/zprG5LW0Sao7zw+yG3O35pviHzejMdcSGCdWbiO8qzRgOYL8JAxAsWBKOKYwVZxXtHWaB5T2Kvxew==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@emotion/hash": "^0.8.0", - "@material-ui/types": "5.1.0", - "@material-ui/utils": "^4.11.2", - "clsx": "^1.0.4", - "csstype": "^2.5.2", - "hoist-non-react-statics": "^3.3.2", - "jss": "^10.5.1", - "jss-plugin-camel-case": "^10.5.1", - "jss-plugin-default-unit": "^10.5.1", - "jss-plugin-global": "^10.5.1", - "jss-plugin-nested": "^10.5.1", - "jss-plugin-props-sort": "^10.5.1", - "jss-plugin-rule-value-function": "^10.5.1", - "jss-plugin-vendor-prefixer": "^10.5.1", - "prop-types": "^15.7.2" - } - }, - "@material-ui/system": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.12.1.tgz", - "integrity": "sha512-lUdzs4q9kEXZGhbN7BptyiS1rLNHe6kG9o8Y307HCvF4sQxbCgpL2qi+gUk+yI8a2DNk48gISEQxoxpgph0xIw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@material-ui/utils": "^4.11.2", - "csstype": "^2.5.2", - "prop-types": "^15.7.2" - } - }, - "@material-ui/types": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz", - "integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==", - "dev": true - }, - "@material-ui/utils": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.2.tgz", - "integrity": "sha512-Uul8w38u+PICe2Fg2pDKCaIG7kOyhowZ9vjiC1FsVwPABTW8vPPKfF6OvxRq3IiBaI1faOJmgdvMG7rMJARBhA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0" - } - }, - "@types/node": { - "version": "14.17.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.14.tgz", - "integrity": "sha512-rsAj2u8Xkqfc332iXV12SqIsjVi07H479bOP4q94NAcjzmAvapumEhuVIt53koEf7JFrpjgNKjBga5Pnn/GL8A==", - "dev": true - }, - "@types/prop-types": { - "version": "15.7.4", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", - "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==", - "dev": true - }, - "@types/react": { - "version": "17.0.35", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.35.tgz", - "integrity": "sha512-r3C8/TJuri/SLZiiwwxQoLAoavaczARfT9up9b4Jr65+ErAUX3MIkU0oMOQnrpfgHme8zIqZLX7O5nnjm5Wayw==", - "dev": true, - "requires": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - }, - "dependencies": { - "csstype": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", - "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==", - "dev": true - } - } - }, - "@types/react-dom": { - "version": "17.0.11", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.11.tgz", - "integrity": "sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q==", - "dev": true, - "requires": { - "@types/react": "*" - } - }, - "@types/react-select": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@types/react-select/-/react-select-3.1.2.tgz", - "integrity": "sha512-ygvR/2FL87R2OLObEWFootYzkvm67LRA+URYEAcBuvKk7IXmdsnIwSGm60cVXGaqkJQHozb2Cy1t94tCYb6rJA==", - "dev": true, - "requires": { - "@types/react": "*", - "@types/react-dom": "*", - "@types/react-transition-group": "*" - } - }, - "@types/react-transition-group": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.4.tgz", - "integrity": "sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug==", - "dev": true, - "requires": { - "@types/react": "*" - } - }, - "@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", - "dev": true - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "atomically": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", - "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==", - "dev": true - }, - "clsx": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", - "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==", - "dev": true - }, - "conf": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/conf/-/conf-7.1.2.tgz", - "integrity": "sha512-r8/HEoWPFn4CztjhMJaWNAe5n+gPUCSaJ0oufbqDLFKsA1V8JjAG7G+p0pgoDFAws9Bpk2VtVLLXqOBA7WxLeg==", - "dev": true, - "requires": { - "ajv": "^6.12.2", - "atomically": "^1.3.1", - "debounce-fn": "^4.0.0", - "dot-prop": "^5.2.0", - "env-paths": "^2.2.0", - "json-schema-typed": "^7.0.3", - "make-dir": "^3.1.0", - "onetime": "^5.1.0", - "pkg-up": "^3.1.0", - "semver": "^7.3.2" - } - }, - "css-vendor": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", - "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.3", - "is-in-browser": "^1.0.2" - } - }, - "csstype": { - "version": "2.6.18", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.18.tgz", - "integrity": "sha512-RSU6Hyeg14am3Ah4VZEmeX8H7kLwEEirXe6aU2IPfKNvhXwTflK5HQRDNI0ypQXoqmm+QPyG2IaPuQE5zMwSIQ==", - "dev": true - }, - "debounce-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz", - "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==", - "dev": true, - "requires": { - "mimic-fn": "^3.0.0" - } - }, - "dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - }, - "dependencies": { - "csstype": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", - "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==", - "dev": true - } - } - }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "requires": { - "is-obj": "^2.0.0" - } - }, - "env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dev": true, - "requires": { - "react-is": "^16.7.0" - }, - "dependencies": { - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true - } - } - }, - "hyphenate-style-name": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", - "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==", - "dev": true - }, - "is-in-browser": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", - "integrity": "sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU=", - "dev": true - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-schema-typed": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz", - "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==", - "dev": true - }, - "jss": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss/-/jss-10.8.2.tgz", - "integrity": "sha512-FkoUNxI329CKQ9OQC8L72MBF9KPf5q8mIupAJ5twU7G7XREW7ahb+7jFfrjZ4iy1qvhx1HwIWUIvkZBDnKkEdQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "csstype": "^3.0.2", - "is-in-browser": "^1.1.3", - "tiny-warning": "^1.0.2" - }, - "dependencies": { - "csstype": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", - "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==", - "dev": true - } - } - }, - "jss-plugin-camel-case": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.8.2.tgz", - "integrity": "sha512-2INyxR+1UdNuKf4v9It3tNfPvf7IPrtkiwzofeKuMd5D58/dxDJVUQYRVg/n460rTlHUfsEQx43hDrcxi9dSPA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "hyphenate-style-name": "^1.0.3", - "jss": "10.8.2" - } - }, - "jss-plugin-default-unit": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.8.2.tgz", - "integrity": "sha512-UZ7cwT9NFYSG+SEy7noRU50s4zifulFdjkUNKE+u6mW7vFP960+RglWjTgMfh79G6OENZmaYnjHV/gcKV4nSxg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.8.2" - } - }, - "jss-plugin-global": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.8.2.tgz", - "integrity": "sha512-UaYMSPsYZ7s/ECGoj4KoHC2jwQd5iQ7K+FFGnCAILdQrv7hPmvM2Ydg45ThT/sH46DqktCRV2SqjRuxeBH8nRA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.8.2" - } - }, - "jss-plugin-nested": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.8.2.tgz", - "integrity": "sha512-acRvuPJOb930fuYmhkJaa994EADpt8TxI63Iyg96C8FJ9T2xRyU5T6R1IYKRwUiqZo+2Sr7fdGzRTDD4uBZaMA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.8.2", - "tiny-warning": "^1.0.2" - } - }, - "jss-plugin-props-sort": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.8.2.tgz", - "integrity": "sha512-wqdcjayKRWBZnNpLUrXvsWqh+5J5YToAQ+8HNBNw0kZxVvCDwzhK2Nx6AKs7p+5/MbAh2PLgNW5Ym/ysbVAuqQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.8.2" - } - }, - "jss-plugin-rule-value-function": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.8.2.tgz", - "integrity": "sha512-bW0EKAs+0HXpb6BKJhrn94IDdiWb0CnSluTkh0rGEgyzY/nmD1uV/Wf6KGlesGOZ9gmJzQy+9FFdxIUID1c9Ug==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.8.2", - "tiny-warning": "^1.0.2" - } - }, - "jss-plugin-vendor-prefixer": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.8.2.tgz", - "integrity": "sha512-DeGv18QsSiYLSVIEB2+l0af6OToUe0JB+trpzUxyqD2QRC/5AzzDrCrYffO5AHZ81QbffYvSN/pkfZaTWpRXlg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "css-vendor": "^2.0.8", - "jss": "10.8.2" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "mimic-fn": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", - "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - }, - "dependencies": { - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - } - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "popper.js": { - "version": "1.16.1-lts", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1-lts.tgz", - "integrity": "sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA==", - "dev": true - }, - "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "dev": true, - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - }, - "dependencies": { - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true - } - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "react-transition-group": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz", - "integrity": "sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "tiny-warning": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", - "dev": true - }, - "typed-emitter": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/typed-emitter/-/typed-emitter-1.3.1.tgz", - "integrity": "sha512-2h7utWyXgd2R2u2IuL8B4yu1gqMxbgUj2VS/MGVbFhEVQNJKXoQQoS5CBMh+eW31zFeSmDfEQ3qQf4xy5SlPVQ==", - "dev": true - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "npm": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/npm/-/npm-8.5.3.tgz", - "integrity": "sha512-O+1j66Alx7ZQgWnUSSTaz8rTqQrJnqNb8Num5uQw2vYvc2RrxLaX7cWtRkDhvkPIL8Nf2WU9gx1oSu268QConA==", - "dev": true, - "requires": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^5.0.0", - "@npmcli/ci-detect": "^2.0.0", - "@npmcli/config": "^4.0.1", - "@npmcli/map-workspaces": "^2.0.0", - "@npmcli/package-json": "^1.0.1", - "@npmcli/run-script": "^3.0.1", - "abbrev": "~1.1.1", - "ansicolors": "~0.3.2", - "ansistyles": "~0.1.3", - "archy": "~1.0.0", - "cacache": "^15.3.0", - "chalk": "^4.1.2", - "chownr": "^2.0.0", - "cli-columns": "^4.0.0", - "cli-table3": "^0.6.1", - "columnify": "^1.6.0", - "fastest-levenshtein": "^1.0.12", - "glob": "^7.2.0", - "graceful-fs": "^4.2.9", - "hosted-git-info": "^4.1.0", - "ini": "^2.0.0", - "init-package-json": "^3.0.0", - "is-cidr": "^4.0.2", - "json-parse-even-better-errors": "^2.3.1", - "libnpmaccess": "^6.0.0", - "libnpmdiff": "^4.0.0", - "libnpmexec": "^4.0.0", - "libnpmfund": "^3.0.0", - "libnpmhook": "^8.0.0", - "libnpmorg": "^4.0.0", - "libnpmpack": "^4.0.0", - "libnpmpublish": "^6.0.0", - "libnpmsearch": "^5.0.0", - "libnpmteam": "^4.0.0", - "libnpmversion": "^3.0.0", - "make-fetch-happen": "^10.0.4", - "minipass": "^3.1.6", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "ms": "^2.1.2", - "node-gyp": "^9.0.0", - "nopt": "^5.0.0", - "npm-audit-report": "^2.1.5", - "npm-install-checks": "^4.0.0", - "npm-package-arg": "^9.0.0", - "npm-pick-manifest": "^7.0.0", - "npm-profile": "^6.0.2", - "npm-registry-fetch": "^13.0.1", - "npm-user-validate": "^1.0.1", - "npmlog": "^6.0.1", - "opener": "^1.5.2", - "pacote": "^13.0.3", - "parse-conflict-json": "^2.0.1", - "proc-log": "^2.0.0", - "qrcode-terminal": "^0.12.0", - "read": "~1.0.7", - "read-package-json": "^4.1.1", - "read-package-json-fast": "^2.0.3", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "ssri": "^8.0.1", - "tar": "^6.1.11", - "text-table": "~0.2.0", - "tiny-relative-date": "^1.3.0", - "treeverse": "^1.0.4", - "validate-npm-package-name": "~3.0.0", - "which": "^2.0.2", - "write-file-atomic": "^4.0.1" - }, - "dependencies": { - "@gar/promisify": { - "version": "1.1.3", - "bundled": true, - "dev": true - }, - "@isaacs/string-locale-compare": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "@npmcli/arborist": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/map-workspaces": "^2.0.0", - "@npmcli/metavuln-calculator": "^3.0.0", - "@npmcli/move-file": "^1.1.0", - "@npmcli/name-from-folder": "^1.0.1", - "@npmcli/node-gyp": "^1.0.3", - "@npmcli/package-json": "^1.0.1", - "@npmcli/run-script": "^3.0.0", - "bin-links": "^3.0.0", - "cacache": "^15.0.3", - "common-ancestor-path": "^1.0.1", - "json-parse-even-better-errors": "^2.3.1", - "json-stringify-nice": "^1.1.4", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^5.0.0", - "npm-install-checks": "^4.0.0", - "npm-package-arg": "^9.0.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.0", - "npmlog": "^6.0.1", - "pacote": "^13.0.2", - "parse-conflict-json": "^2.0.1", - "proc-log": "^2.0.0", - "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.1", - "read-package-json-fast": "^2.0.2", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "ssri": "^8.0.1", - "treeverse": "^1.0.4", - "walk-up-path": "^1.0.0" - } - }, - "@npmcli/ci-detect": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "@npmcli/config": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/map-workspaces": "^2.0.1", - "ini": "^2.0.0", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^5.0.0", - "proc-log": "^2.0.0", - "read-package-json-fast": "^2.0.3", - "semver": "^7.3.5", - "walk-up-path": "^1.0.0" - } - }, - "@npmcli/disparity-colors": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-styles": "^4.3.0" - } - }, - "@npmcli/fs": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "@npmcli/git": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/promise-spawn": "^1.3.2", - "lru-cache": "^7.3.1", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^7.0.0", - "proc-log": "^2.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" - }, - "dependencies": { - "lru-cache": { - "version": "7.4.0", - "bundled": true, - "dev": true - } - } - }, - "@npmcli/installed-package-contents": { - "version": "1.0.7", - "bundled": true, - "dev": true, - "requires": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "@npmcli/map-workspaces": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/name-from-folder": "^1.0.1", - "glob": "^7.2.0", - "minimatch": "^5.0.0", - "read-package-json-fast": "^2.0.3" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.0.1", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "@npmcli/metavuln-calculator": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "cacache": "^15.3.0", - "json-parse-even-better-errors": "^2.3.1", - "pacote": "^13.0.1", - "semver": "^7.3.5" - } - }, - "@npmcli/move-file": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "@npmcli/name-from-folder": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "@npmcli/node-gyp": { - "version": "1.0.3", - "bundled": true, - "dev": true - }, - "@npmcli/package-json": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.1" - } - }, - "@npmcli/promise-spawn": { - "version": "1.3.2", - "bundled": true, - "dev": true, - "requires": { - "infer-owner": "^1.0.4" - } - }, - "@npmcli/run-script": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/node-gyp": "^1.0.3", - "@npmcli/promise-spawn": "^1.3.2", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^2.0.3" - } - }, - "@tootallnate/once": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, - "agent-base": { - "version": "6.0.2", - "bundled": true, - "dev": true, - "requires": { - "debug": "4" - } - }, - "agentkeepalive": { - "version": "4.2.1", - "bundled": true, - "dev": true, - "requires": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - } - }, - "aggregate-error": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ansi-styles": { - "version": "4.3.0", - "bundled": true, - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "ansicolors": { - "version": "0.3.2", - "bundled": true, - "dev": true - }, - "ansistyles": { - "version": "0.1.3", - "bundled": true, - "dev": true - }, - "aproba": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "archy": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "are-we-there-yet": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "asap": { - "version": "2.0.6", - "bundled": true, - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "bin-links": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "cmd-shim": "^4.0.1", - "mkdirp-infer-owner": "^2.0.0", - "npm-normalize-package-bin": "^1.0.0", - "read-cmd-shim": "^2.0.0", - "rimraf": "^3.0.0", - "write-file-atomic": "^4.0.0" - } - }, - "binary-extensions": { - "version": "2.2.0", - "bundled": true, - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "builtins": { - "version": "1.0.3", - "bundled": true, - "dev": true - }, - "cacache": { - "version": "15.3.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - } - }, - "chalk": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chownr": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "cidr-regex": { - "version": "3.1.1", - "bundled": true, - "dev": true, - "requires": { - "ip-regex": "^4.1.0" - } - }, - "clean-stack": { - "version": "2.2.0", - "bundled": true, - "dev": true - }, - "cli-columns": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "cli-table3": { - "version": "0.6.1", - "bundled": true, - "dev": true, - "requires": { - "colors": "1.4.0", - "string-width": "^4.2.0" - } - }, - "clone": { - "version": "1.0.4", - "bundled": true, - "dev": true - }, - "cmd-shim": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "requires": { - "mkdirp-infer-owner": "^2.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "bundled": true, - "dev": true - }, - "color-support": { - "version": "1.1.3", - "bundled": true, - "dev": true - }, - "colors": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "columnify": { - "version": "1.6.0", - "bundled": true, - "dev": true, - "requires": { - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "common-ancestor-path": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "debug": { - "version": "4.3.3", - "bundled": true, - "dev": true, - "requires": { - "ms": "2.1.2" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "bundled": true, - "dev": true - } - } - }, - "debuglog": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "defaults": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "depd": { - "version": "1.1.2", - "bundled": true, - "dev": true - }, - "dezalgo": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "diff": { - "version": "5.0.0", - "bundled": true, - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "bundled": true, - "dev": true - }, - "encoding": { - "version": "0.1.13", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "iconv-lite": "^0.6.2" - } - }, - "env-paths": { - "version": "2.2.1", - "bundled": true, - "dev": true - }, - "err-code": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "fastest-levenshtein": { - "version": "1.0.12", - "bundled": true, - "dev": true - }, - "fs-minipass": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, - "gauge": { - "version": "4.0.2", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^5.0.1", - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "glob": { - "version": "7.2.0", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.2.9", - "bundled": true, - "dev": true - }, - "has": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "hosted-git-info": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "http-cache-semantics": { - "version": "4.1.0", - "bundled": true, - "dev": true - }, - "http-proxy-agent": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - } - }, - "https-proxy-agent": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "humanize-ms": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "requires": { - "ms": "^2.0.0" - } - }, - "iconv-lite": { - "version": "0.6.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "ignore-walk": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true, - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "infer-owner": { - "version": "1.0.4", - "bundled": true, - "dev": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "bundled": true, - "dev": true - }, - "ini": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "init-package-json": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "npm-package-arg": "^9.0.0", - "promzard": "^0.3.0", - "read": "^1.0.7", - "read-package-json": "^4.1.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^3.0.0" - } - }, - "ip": { - "version": "1.1.5", - "bundled": true, - "dev": true - }, - "ip-regex": { - "version": "4.3.0", - "bundled": true, - "dev": true - }, - "is-cidr": { - "version": "4.0.2", - "bundled": true, - "dev": true, - "requires": { - "cidr-regex": "^3.1.1" - } - }, - "is-core-module": { - "version": "2.8.1", - "bundled": true, - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "is-lambda": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "bundled": true, - "dev": true - }, - "json-stringify-nice": { - "version": "1.1.4", - "bundled": true, - "dev": true - }, - "jsonparse": { - "version": "1.3.1", - "bundled": true, - "dev": true - }, - "just-diff": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "just-diff-apply": { - "version": "4.0.1", - "bundled": true, - "dev": true - }, - "libnpmaccess": { - "version": "6.0.0", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^2.0.0", - "minipass": "^3.1.1", - "npm-package-arg": "^9.0.0", - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmdiff": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/disparity-colors": "^1.0.1", - "@npmcli/installed-package-contents": "^1.0.7", - "binary-extensions": "^2.2.0", - "diff": "^5.0.0", - "minimatch": "^3.0.4", - "npm-package-arg": "^9.0.0", - "pacote": "^13.0.2", - "tar": "^6.1.0" - } - }, - "libnpmexec": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/arborist": "^5.0.0", - "@npmcli/ci-detect": "^2.0.0", - "@npmcli/run-script": "^3.0.0", - "chalk": "^4.1.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-package-arg": "^9.0.0", - "npmlog": "^6.0.1", - "pacote": "^13.0.2", - "proc-log": "^2.0.0", - "read": "^1.0.7", - "read-package-json-fast": "^2.0.2", - "walk-up-path": "^1.0.0" - } - }, - "libnpmfund": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/arborist": "^5.0.0" - } - }, - "libnpmhook": { - "version": "8.0.0", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmorg": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmpack": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/run-script": "^3.0.0", - "npm-package-arg": "^9.0.0", - "pacote": "^13.0.2" - } - }, - "libnpmpublish": { - "version": "6.0.0", - "bundled": true, - "dev": true, - "requires": { - "normalize-package-data": "^3.0.2", - "npm-package-arg": "^9.0.0", - "npm-registry-fetch": "^13.0.0", - "semver": "^7.1.3", - "ssri": "^8.0.1" - } - }, - "libnpmsearch": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmteam": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmversion": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/git": "^3.0.0", - "@npmcli/run-script": "^3.0.0", - "json-parse-even-better-errors": "^2.3.1", - "proc-log": "^2.0.0", - "semver": "^7.3.5", - "stringify-package": "^1.0.1" - } - }, - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "make-fetch-happen": { - "version": "10.0.4", - "bundled": true, - "dev": true, - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^15.3.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.4.0", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.1", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.1.1", - "ssri": "^8.0.1" - }, - "dependencies": { - "lru-cache": { - "version": "7.4.0", - "bundled": true, - "dev": true - } - } - }, - "minimatch": { - "version": "3.1.2", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minipass": { - "version": "3.1.6", - "bundled": true, - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minipass-collect": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-fetch": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "encoding": "^0.1.13", - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - } - }, - "minipass-flush": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-json-stream": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "minipass-pipeline": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-sized": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "bundled": true, - "dev": true - }, - "mkdirp-infer-owner": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "chownr": "^2.0.0", - "infer-owner": "^1.0.4", - "mkdirp": "^1.0.3" - } - }, - "ms": { - "version": "2.1.3", - "bundled": true, - "dev": true - }, - "mute-stream": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "negotiator": { - "version": "0.6.3", - "bundled": true, - "dev": true - }, - "node-gyp": { - "version": "9.0.0", - "bundled": true, - "dev": true, - "requires": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - } - }, - "nopt": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-package-data": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "requires": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - } - }, - "npm-audit-report": { - "version": "2.1.5", - "bundled": true, - "dev": true, - "requires": { - "chalk": "^4.0.0" - } - }, - "npm-bundled": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-install-checks": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "semver": "^7.1.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "npm-package-arg": { - "version": "9.0.0", - "bundled": true, - "dev": true, - "requires": { - "hosted-git-info": "^4.1.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^3.0.0" - } - }, - "npm-packlist": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "glob": "^7.1.6", - "ignore-walk": "^4.0.1", - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-pick-manifest": { - "version": "7.0.0", - "bundled": true, - "dev": true, - "requires": { - "npm-install-checks": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^9.0.0", - "semver": "^7.3.5" - } - }, - "npm-profile": { - "version": "6.0.2", - "bundled": true, - "dev": true, - "requires": { - "npm-registry-fetch": "^13.0.0", - "proc-log": "^2.0.0" - } - }, - "npm-registry-fetch": { - "version": "13.0.1", - "bundled": true, - "dev": true, - "requires": { - "make-fetch-happen": "^10.0.3", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.1", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.0", - "proc-log": "^2.0.0" - } - }, - "npm-user-validate": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "npmlog": { - "version": "6.0.1", - "bundled": true, - "dev": true, - "requires": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.0", - "set-blocking": "^2.0.0" - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "opener": { - "version": "1.5.2", - "bundled": true, - "dev": true - }, - "p-map": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "pacote": { - "version": "13.0.3", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^1.2.0", - "@npmcli/run-script": "^3.0.0", - "cacache": "^15.3.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.6", - "mkdirp": "^1.0.4", - "npm-package-arg": "^9.0.0", - "npm-packlist": "^3.0.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.0", - "proc-log": "^2.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^4.1.1", - "read-package-json-fast": "^2.0.3", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.1.11" - } - }, - "parse-conflict-json": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.1", - "just-diff": "^5.0.1", - "just-diff-apply": "^4.0.1" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "proc-log": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "promise-all-reject-late": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "promise-call-limit": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "promise-inflight": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "promise-retry": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - } - }, - "promzard": { - "version": "0.3.0", - "bundled": true, - "dev": true, - "requires": { - "read": "1" - } - }, - "qrcode-terminal": { - "version": "0.12.0", - "bundled": true, - "dev": true - }, - "read": { - "version": "1.0.7", - "bundled": true, - "dev": true, - "requires": { - "mute-stream": "~0.0.4" - } - }, - "read-cmd-shim": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "read-package-json": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "requires": { - "glob": "^7.1.1", - "json-parse-even-better-errors": "^2.3.0", - "normalize-package-data": "^3.0.0", - "npm-normalize-package-bin": "^1.0.0" - } - }, - "read-package-json-fast": { - "version": "2.0.3", - "bundled": true, - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "readable-stream": { - "version": "3.6.0", - "bundled": true, - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdir-scoped-modules": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" - } - }, - "retry": { - "version": "0.12.0", - "bundled": true, - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.2.1", - "bundled": true, - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "7.3.5", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "signal-exit": { - "version": "3.0.7", - "bundled": true, - "dev": true - }, - "smart-buffer": { - "version": "4.2.0", - "bundled": true, - "dev": true - }, - "socks": { - "version": "2.6.2", - "bundled": true, - "dev": true, - "requires": { - "ip": "^1.1.5", - "smart-buffer": "^4.2.0" - } - }, - "socks-proxy-agent": { - "version": "6.1.1", - "bundled": true, - "dev": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.1", - "socks": "^2.6.1" - } - }, - "spdx-correct": { - "version": "3.1.1", - "bundled": true, - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "bundled": true, - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.11", - "bundled": true, - "dev": true - }, - "ssri": { - "version": "8.0.1", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - }, - "string-width": { - "version": "4.2.3", - "bundled": true, - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "string_decoder": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "stringify-package": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "bundled": true, - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "tar": { - "version": "6.1.11", - "bundled": true, - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - }, - "text-table": { - "version": "0.2.0", - "bundled": true, - "dev": true - }, - "tiny-relative-date": { - "version": "1.3.0", - "bundled": true, - "dev": true - }, - "treeverse": { - "version": "1.0.4", - "bundled": true, - "dev": true - }, - "unique-filename": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "validate-npm-package-name": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "builtins": "^1.0.3" - } - }, - "walk-up-path": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "wcwidth": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "which": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wide-align": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "write-file-atomic": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true, - "dev": true - } - } - }, - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true - } - } -} diff --git a/extensions/metrics-cluster-feature/src/metrics-settings.tsx b/extensions/metrics-cluster-feature/src/metrics-settings.tsx index dfd943797e..3f20a80df1 100644 --- a/extensions/metrics-cluster-feature/src/metrics-settings.tsx +++ b/extensions/metrics-cluster-feature/src/metrics-settings.tsx @@ -208,14 +208,14 @@ export class MetricsSettings extends React.Component {
    this.togglePrometheus(v.target.checked)} name="prometheus" /> - } + )} label="Enable bundled Prometheus metrics stack" /> @@ -226,14 +226,14 @@ export class MetricsSettings extends React.Component {
    this.toggleKubeStateMetrics(v.target.checked)} name="node-exporter" /> - } + )} label="Enable bundled kube-state-metrics stack" /> @@ -245,14 +245,14 @@ export class MetricsSettings extends React.Component {
    this.toggleNodeExporter(v.target.checked)} name="node-exporter" /> - } + )} label="Enable bundled node-exporter stack" /> @@ -271,9 +271,11 @@ export class MetricsSettings extends React.Component { className="w-60 h-14" /> - {this.canUpgrade && ( - An update is available for enabled metrics components. - )} + {this.canUpgrade && ( + + An update is available for enabled metrics components. + + )}
    ); diff --git a/extensions/node-menu/package-lock.json b/extensions/node-menu/package-lock.json deleted file mode 100644 index 9885b4a885..0000000000 --- a/extensions/node-menu/package-lock.json +++ /dev/null @@ -1,2374 +0,0 @@ -{ - "name": "lens-node-menu", - "version": "0.0.1", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@k8slens/extensions": { - "version": "file:../../src/extensions/npm/extensions", - "dev": true, - "requires": { - "@material-ui/core": "4.12.3", - "@types/node": "14.17.14", - "@types/react-select": "3.1.2", - "conf": "^7.0.1", - "typed-emitter": "^1.3.1" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", - "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@emotion/hash": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", - "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", - "dev": true - }, - "@material-ui/core": { - "version": "4.12.3", - "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.12.3.tgz", - "integrity": "sha512-sdpgI/PL56QVsEJldwEe4FFaFTLUqN+rd7sSZiRCdx2E/C7z5yK0y/khAWVBH24tXwto7I1hCzNWfJGZIYJKnw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@material-ui/styles": "^4.11.4", - "@material-ui/system": "^4.12.1", - "@material-ui/types": "5.1.0", - "@material-ui/utils": "^4.11.2", - "@types/react-transition-group": "^4.2.0", - "clsx": "^1.0.4", - "hoist-non-react-statics": "^3.3.2", - "popper.js": "1.16.1-lts", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0", - "react-transition-group": "^4.4.0" - } - }, - "@material-ui/styles": { - "version": "4.11.4", - "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.4.tgz", - "integrity": "sha512-KNTIZcnj/zprG5LW0Sao7zw+yG3O35pviHzejMdcSGCdWbiO8qzRgOYL8JAxAsWBKOKYwVZxXtHWaB5T2Kvxew==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@emotion/hash": "^0.8.0", - "@material-ui/types": "5.1.0", - "@material-ui/utils": "^4.11.2", - "clsx": "^1.0.4", - "csstype": "^2.5.2", - "hoist-non-react-statics": "^3.3.2", - "jss": "^10.5.1", - "jss-plugin-camel-case": "^10.5.1", - "jss-plugin-default-unit": "^10.5.1", - "jss-plugin-global": "^10.5.1", - "jss-plugin-nested": "^10.5.1", - "jss-plugin-props-sort": "^10.5.1", - "jss-plugin-rule-value-function": "^10.5.1", - "jss-plugin-vendor-prefixer": "^10.5.1", - "prop-types": "^15.7.2" - } - }, - "@material-ui/system": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.12.1.tgz", - "integrity": "sha512-lUdzs4q9kEXZGhbN7BptyiS1rLNHe6kG9o8Y307HCvF4sQxbCgpL2qi+gUk+yI8a2DNk48gISEQxoxpgph0xIw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@material-ui/utils": "^4.11.2", - "csstype": "^2.5.2", - "prop-types": "^15.7.2" - } - }, - "@material-ui/types": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz", - "integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==", - "dev": true - }, - "@material-ui/utils": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.2.tgz", - "integrity": "sha512-Uul8w38u+PICe2Fg2pDKCaIG7kOyhowZ9vjiC1FsVwPABTW8vPPKfF6OvxRq3IiBaI1faOJmgdvMG7rMJARBhA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0" - } - }, - "@types/node": { - "version": "14.17.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.14.tgz", - "integrity": "sha512-rsAj2u8Xkqfc332iXV12SqIsjVi07H479bOP4q94NAcjzmAvapumEhuVIt53koEf7JFrpjgNKjBga5Pnn/GL8A==", - "dev": true - }, - "@types/prop-types": { - "version": "15.7.4", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", - "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==", - "dev": true - }, - "@types/react": { - "version": "17.0.35", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.35.tgz", - "integrity": "sha512-r3C8/TJuri/SLZiiwwxQoLAoavaczARfT9up9b4Jr65+ErAUX3MIkU0oMOQnrpfgHme8zIqZLX7O5nnjm5Wayw==", - "dev": true, - "requires": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - }, - "dependencies": { - "csstype": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", - "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==", - "dev": true - } - } - }, - "@types/react-dom": { - "version": "17.0.11", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.11.tgz", - "integrity": "sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q==", - "dev": true, - "requires": { - "@types/react": "*" - } - }, - "@types/react-select": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@types/react-select/-/react-select-3.1.2.tgz", - "integrity": "sha512-ygvR/2FL87R2OLObEWFootYzkvm67LRA+URYEAcBuvKk7IXmdsnIwSGm60cVXGaqkJQHozb2Cy1t94tCYb6rJA==", - "dev": true, - "requires": { - "@types/react": "*", - "@types/react-dom": "*", - "@types/react-transition-group": "*" - } - }, - "@types/react-transition-group": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.4.tgz", - "integrity": "sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug==", - "dev": true, - "requires": { - "@types/react": "*" - } - }, - "@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", - "dev": true - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "atomically": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", - "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==", - "dev": true - }, - "clsx": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", - "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==", - "dev": true - }, - "conf": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/conf/-/conf-7.1.2.tgz", - "integrity": "sha512-r8/HEoWPFn4CztjhMJaWNAe5n+gPUCSaJ0oufbqDLFKsA1V8JjAG7G+p0pgoDFAws9Bpk2VtVLLXqOBA7WxLeg==", - "dev": true, - "requires": { - "ajv": "^6.12.2", - "atomically": "^1.3.1", - "debounce-fn": "^4.0.0", - "dot-prop": "^5.2.0", - "env-paths": "^2.2.0", - "json-schema-typed": "^7.0.3", - "make-dir": "^3.1.0", - "onetime": "^5.1.0", - "pkg-up": "^3.1.0", - "semver": "^7.3.2" - } - }, - "css-vendor": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", - "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.3", - "is-in-browser": "^1.0.2" - } - }, - "csstype": { - "version": "2.6.18", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.18.tgz", - "integrity": "sha512-RSU6Hyeg14am3Ah4VZEmeX8H7kLwEEirXe6aU2IPfKNvhXwTflK5HQRDNI0ypQXoqmm+QPyG2IaPuQE5zMwSIQ==", - "dev": true - }, - "debounce-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz", - "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==", - "dev": true, - "requires": { - "mimic-fn": "^3.0.0" - } - }, - "dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - }, - "dependencies": { - "csstype": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", - "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==", - "dev": true - } - } - }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "requires": { - "is-obj": "^2.0.0" - } - }, - "env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dev": true, - "requires": { - "react-is": "^16.7.0" - }, - "dependencies": { - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true - } - } - }, - "hyphenate-style-name": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", - "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==", - "dev": true - }, - "is-in-browser": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", - "integrity": "sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU=", - "dev": true - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-schema-typed": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz", - "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==", - "dev": true - }, - "jss": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss/-/jss-10.8.2.tgz", - "integrity": "sha512-FkoUNxI329CKQ9OQC8L72MBF9KPf5q8mIupAJ5twU7G7XREW7ahb+7jFfrjZ4iy1qvhx1HwIWUIvkZBDnKkEdQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "csstype": "^3.0.2", - "is-in-browser": "^1.1.3", - "tiny-warning": "^1.0.2" - }, - "dependencies": { - "csstype": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", - "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==", - "dev": true - } - } - }, - "jss-plugin-camel-case": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.8.2.tgz", - "integrity": "sha512-2INyxR+1UdNuKf4v9It3tNfPvf7IPrtkiwzofeKuMd5D58/dxDJVUQYRVg/n460rTlHUfsEQx43hDrcxi9dSPA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "hyphenate-style-name": "^1.0.3", - "jss": "10.8.2" - } - }, - "jss-plugin-default-unit": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.8.2.tgz", - "integrity": "sha512-UZ7cwT9NFYSG+SEy7noRU50s4zifulFdjkUNKE+u6mW7vFP960+RglWjTgMfh79G6OENZmaYnjHV/gcKV4nSxg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.8.2" - } - }, - "jss-plugin-global": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.8.2.tgz", - "integrity": "sha512-UaYMSPsYZ7s/ECGoj4KoHC2jwQd5iQ7K+FFGnCAILdQrv7hPmvM2Ydg45ThT/sH46DqktCRV2SqjRuxeBH8nRA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.8.2" - } - }, - "jss-plugin-nested": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.8.2.tgz", - "integrity": "sha512-acRvuPJOb930fuYmhkJaa994EADpt8TxI63Iyg96C8FJ9T2xRyU5T6R1IYKRwUiqZo+2Sr7fdGzRTDD4uBZaMA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.8.2", - "tiny-warning": "^1.0.2" - } - }, - "jss-plugin-props-sort": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.8.2.tgz", - "integrity": "sha512-wqdcjayKRWBZnNpLUrXvsWqh+5J5YToAQ+8HNBNw0kZxVvCDwzhK2Nx6AKs7p+5/MbAh2PLgNW5Ym/ysbVAuqQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.8.2" - } - }, - "jss-plugin-rule-value-function": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.8.2.tgz", - "integrity": "sha512-bW0EKAs+0HXpb6BKJhrn94IDdiWb0CnSluTkh0rGEgyzY/nmD1uV/Wf6KGlesGOZ9gmJzQy+9FFdxIUID1c9Ug==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.8.2", - "tiny-warning": "^1.0.2" - } - }, - "jss-plugin-vendor-prefixer": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.8.2.tgz", - "integrity": "sha512-DeGv18QsSiYLSVIEB2+l0af6OToUe0JB+trpzUxyqD2QRC/5AzzDrCrYffO5AHZ81QbffYvSN/pkfZaTWpRXlg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "css-vendor": "^2.0.8", - "jss": "10.8.2" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "mimic-fn": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", - "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - }, - "dependencies": { - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - } - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "popper.js": { - "version": "1.16.1-lts", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1-lts.tgz", - "integrity": "sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA==", - "dev": true - }, - "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "dev": true, - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - }, - "dependencies": { - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true - } - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "react-transition-group": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz", - "integrity": "sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "tiny-warning": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", - "dev": true - }, - "typed-emitter": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/typed-emitter/-/typed-emitter-1.3.1.tgz", - "integrity": "sha512-2h7utWyXgd2R2u2IuL8B4yu1gqMxbgUj2VS/MGVbFhEVQNJKXoQQoS5CBMh+eW31zFeSmDfEQ3qQf4xy5SlPVQ==", - "dev": true - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "npm": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/npm/-/npm-8.5.3.tgz", - "integrity": "sha512-O+1j66Alx7ZQgWnUSSTaz8rTqQrJnqNb8Num5uQw2vYvc2RrxLaX7cWtRkDhvkPIL8Nf2WU9gx1oSu268QConA==", - "dev": true, - "requires": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^5.0.0", - "@npmcli/ci-detect": "^2.0.0", - "@npmcli/config": "^4.0.1", - "@npmcli/map-workspaces": "^2.0.0", - "@npmcli/package-json": "^1.0.1", - "@npmcli/run-script": "^3.0.1", - "abbrev": "~1.1.1", - "ansicolors": "~0.3.2", - "ansistyles": "~0.1.3", - "archy": "~1.0.0", - "cacache": "^15.3.0", - "chalk": "^4.1.2", - "chownr": "^2.0.0", - "cli-columns": "^4.0.0", - "cli-table3": "^0.6.1", - "columnify": "^1.6.0", - "fastest-levenshtein": "^1.0.12", - "glob": "^7.2.0", - "graceful-fs": "^4.2.9", - "hosted-git-info": "^4.1.0", - "ini": "^2.0.0", - "init-package-json": "^3.0.0", - "is-cidr": "^4.0.2", - "json-parse-even-better-errors": "^2.3.1", - "libnpmaccess": "^6.0.0", - "libnpmdiff": "^4.0.0", - "libnpmexec": "^4.0.0", - "libnpmfund": "^3.0.0", - "libnpmhook": "^8.0.0", - "libnpmorg": "^4.0.0", - "libnpmpack": "^4.0.0", - "libnpmpublish": "^6.0.0", - "libnpmsearch": "^5.0.0", - "libnpmteam": "^4.0.0", - "libnpmversion": "^3.0.0", - "make-fetch-happen": "^10.0.4", - "minipass": "^3.1.6", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "ms": "^2.1.2", - "node-gyp": "^9.0.0", - "nopt": "^5.0.0", - "npm-audit-report": "^2.1.5", - "npm-install-checks": "^4.0.0", - "npm-package-arg": "^9.0.0", - "npm-pick-manifest": "^7.0.0", - "npm-profile": "^6.0.2", - "npm-registry-fetch": "^13.0.1", - "npm-user-validate": "^1.0.1", - "npmlog": "^6.0.1", - "opener": "^1.5.2", - "pacote": "^13.0.3", - "parse-conflict-json": "^2.0.1", - "proc-log": "^2.0.0", - "qrcode-terminal": "^0.12.0", - "read": "~1.0.7", - "read-package-json": "^4.1.1", - "read-package-json-fast": "^2.0.3", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "ssri": "^8.0.1", - "tar": "^6.1.11", - "text-table": "~0.2.0", - "tiny-relative-date": "^1.3.0", - "treeverse": "^1.0.4", - "validate-npm-package-name": "~3.0.0", - "which": "^2.0.2", - "write-file-atomic": "^4.0.1" - }, - "dependencies": { - "@gar/promisify": { - "version": "1.1.3", - "bundled": true, - "dev": true - }, - "@isaacs/string-locale-compare": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "@npmcli/arborist": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/map-workspaces": "^2.0.0", - "@npmcli/metavuln-calculator": "^3.0.0", - "@npmcli/move-file": "^1.1.0", - "@npmcli/name-from-folder": "^1.0.1", - "@npmcli/node-gyp": "^1.0.3", - "@npmcli/package-json": "^1.0.1", - "@npmcli/run-script": "^3.0.0", - "bin-links": "^3.0.0", - "cacache": "^15.0.3", - "common-ancestor-path": "^1.0.1", - "json-parse-even-better-errors": "^2.3.1", - "json-stringify-nice": "^1.1.4", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^5.0.0", - "npm-install-checks": "^4.0.0", - "npm-package-arg": "^9.0.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.0", - "npmlog": "^6.0.1", - "pacote": "^13.0.2", - "parse-conflict-json": "^2.0.1", - "proc-log": "^2.0.0", - "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.1", - "read-package-json-fast": "^2.0.2", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "ssri": "^8.0.1", - "treeverse": "^1.0.4", - "walk-up-path": "^1.0.0" - } - }, - "@npmcli/ci-detect": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "@npmcli/config": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/map-workspaces": "^2.0.1", - "ini": "^2.0.0", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^5.0.0", - "proc-log": "^2.0.0", - "read-package-json-fast": "^2.0.3", - "semver": "^7.3.5", - "walk-up-path": "^1.0.0" - } - }, - "@npmcli/disparity-colors": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-styles": "^4.3.0" - } - }, - "@npmcli/fs": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "@npmcli/git": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/promise-spawn": "^1.3.2", - "lru-cache": "^7.3.1", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^7.0.0", - "proc-log": "^2.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" - }, - "dependencies": { - "lru-cache": { - "version": "7.4.0", - "bundled": true, - "dev": true - } - } - }, - "@npmcli/installed-package-contents": { - "version": "1.0.7", - "bundled": true, - "dev": true, - "requires": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "@npmcli/map-workspaces": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/name-from-folder": "^1.0.1", - "glob": "^7.2.0", - "minimatch": "^5.0.0", - "read-package-json-fast": "^2.0.3" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.0.1", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "@npmcli/metavuln-calculator": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "cacache": "^15.3.0", - "json-parse-even-better-errors": "^2.3.1", - "pacote": "^13.0.1", - "semver": "^7.3.5" - } - }, - "@npmcli/move-file": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "@npmcli/name-from-folder": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "@npmcli/node-gyp": { - "version": "1.0.3", - "bundled": true, - "dev": true - }, - "@npmcli/package-json": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.1" - } - }, - "@npmcli/promise-spawn": { - "version": "1.3.2", - "bundled": true, - "dev": true, - "requires": { - "infer-owner": "^1.0.4" - } - }, - "@npmcli/run-script": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/node-gyp": "^1.0.3", - "@npmcli/promise-spawn": "^1.3.2", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^2.0.3" - } - }, - "@tootallnate/once": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, - "agent-base": { - "version": "6.0.2", - "bundled": true, - "dev": true, - "requires": { - "debug": "4" - } - }, - "agentkeepalive": { - "version": "4.2.1", - "bundled": true, - "dev": true, - "requires": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - } - }, - "aggregate-error": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ansi-styles": { - "version": "4.3.0", - "bundled": true, - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "ansicolors": { - "version": "0.3.2", - "bundled": true, - "dev": true - }, - "ansistyles": { - "version": "0.1.3", - "bundled": true, - "dev": true - }, - "aproba": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "archy": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "are-we-there-yet": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "asap": { - "version": "2.0.6", - "bundled": true, - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "bin-links": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "cmd-shim": "^4.0.1", - "mkdirp-infer-owner": "^2.0.0", - "npm-normalize-package-bin": "^1.0.0", - "read-cmd-shim": "^2.0.0", - "rimraf": "^3.0.0", - "write-file-atomic": "^4.0.0" - } - }, - "binary-extensions": { - "version": "2.2.0", - "bundled": true, - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "builtins": { - "version": "1.0.3", - "bundled": true, - "dev": true - }, - "cacache": { - "version": "15.3.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - } - }, - "chalk": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chownr": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "cidr-regex": { - "version": "3.1.1", - "bundled": true, - "dev": true, - "requires": { - "ip-regex": "^4.1.0" - } - }, - "clean-stack": { - "version": "2.2.0", - "bundled": true, - "dev": true - }, - "cli-columns": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "cli-table3": { - "version": "0.6.1", - "bundled": true, - "dev": true, - "requires": { - "colors": "1.4.0", - "string-width": "^4.2.0" - } - }, - "clone": { - "version": "1.0.4", - "bundled": true, - "dev": true - }, - "cmd-shim": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "requires": { - "mkdirp-infer-owner": "^2.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "bundled": true, - "dev": true - }, - "color-support": { - "version": "1.1.3", - "bundled": true, - "dev": true - }, - "colors": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "columnify": { - "version": "1.6.0", - "bundled": true, - "dev": true, - "requires": { - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "common-ancestor-path": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "debug": { - "version": "4.3.3", - "bundled": true, - "dev": true, - "requires": { - "ms": "2.1.2" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "bundled": true, - "dev": true - } - } - }, - "debuglog": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "defaults": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "depd": { - "version": "1.1.2", - "bundled": true, - "dev": true - }, - "dezalgo": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "diff": { - "version": "5.0.0", - "bundled": true, - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "bundled": true, - "dev": true - }, - "encoding": { - "version": "0.1.13", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "iconv-lite": "^0.6.2" - } - }, - "env-paths": { - "version": "2.2.1", - "bundled": true, - "dev": true - }, - "err-code": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "fastest-levenshtein": { - "version": "1.0.12", - "bundled": true, - "dev": true - }, - "fs-minipass": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, - "gauge": { - "version": "4.0.2", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^5.0.1", - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "glob": { - "version": "7.2.0", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.2.9", - "bundled": true, - "dev": true - }, - "has": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "hosted-git-info": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "http-cache-semantics": { - "version": "4.1.0", - "bundled": true, - "dev": true - }, - "http-proxy-agent": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - } - }, - "https-proxy-agent": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "humanize-ms": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "requires": { - "ms": "^2.0.0" - } - }, - "iconv-lite": { - "version": "0.6.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "ignore-walk": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true, - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "infer-owner": { - "version": "1.0.4", - "bundled": true, - "dev": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "bundled": true, - "dev": true - }, - "ini": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "init-package-json": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "npm-package-arg": "^9.0.0", - "promzard": "^0.3.0", - "read": "^1.0.7", - "read-package-json": "^4.1.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^3.0.0" - } - }, - "ip": { - "version": "1.1.5", - "bundled": true, - "dev": true - }, - "ip-regex": { - "version": "4.3.0", - "bundled": true, - "dev": true - }, - "is-cidr": { - "version": "4.0.2", - "bundled": true, - "dev": true, - "requires": { - "cidr-regex": "^3.1.1" - } - }, - "is-core-module": { - "version": "2.8.1", - "bundled": true, - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "is-lambda": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "bundled": true, - "dev": true - }, - "json-stringify-nice": { - "version": "1.1.4", - "bundled": true, - "dev": true - }, - "jsonparse": { - "version": "1.3.1", - "bundled": true, - "dev": true - }, - "just-diff": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "just-diff-apply": { - "version": "4.0.1", - "bundled": true, - "dev": true - }, - "libnpmaccess": { - "version": "6.0.0", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^2.0.0", - "minipass": "^3.1.1", - "npm-package-arg": "^9.0.0", - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmdiff": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/disparity-colors": "^1.0.1", - "@npmcli/installed-package-contents": "^1.0.7", - "binary-extensions": "^2.2.0", - "diff": "^5.0.0", - "minimatch": "^3.0.4", - "npm-package-arg": "^9.0.0", - "pacote": "^13.0.2", - "tar": "^6.1.0" - } - }, - "libnpmexec": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/arborist": "^5.0.0", - "@npmcli/ci-detect": "^2.0.0", - "@npmcli/run-script": "^3.0.0", - "chalk": "^4.1.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-package-arg": "^9.0.0", - "npmlog": "^6.0.1", - "pacote": "^13.0.2", - "proc-log": "^2.0.0", - "read": "^1.0.7", - "read-package-json-fast": "^2.0.2", - "walk-up-path": "^1.0.0" - } - }, - "libnpmfund": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/arborist": "^5.0.0" - } - }, - "libnpmhook": { - "version": "8.0.0", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmorg": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmpack": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/run-script": "^3.0.0", - "npm-package-arg": "^9.0.0", - "pacote": "^13.0.2" - } - }, - "libnpmpublish": { - "version": "6.0.0", - "bundled": true, - "dev": true, - "requires": { - "normalize-package-data": "^3.0.2", - "npm-package-arg": "^9.0.0", - "npm-registry-fetch": "^13.0.0", - "semver": "^7.1.3", - "ssri": "^8.0.1" - } - }, - "libnpmsearch": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmteam": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmversion": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/git": "^3.0.0", - "@npmcli/run-script": "^3.0.0", - "json-parse-even-better-errors": "^2.3.1", - "proc-log": "^2.0.0", - "semver": "^7.3.5", - "stringify-package": "^1.0.1" - } - }, - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "make-fetch-happen": { - "version": "10.0.4", - "bundled": true, - "dev": true, - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^15.3.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.4.0", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.1", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.1.1", - "ssri": "^8.0.1" - }, - "dependencies": { - "lru-cache": { - "version": "7.4.0", - "bundled": true, - "dev": true - } - } - }, - "minimatch": { - "version": "3.1.2", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minipass": { - "version": "3.1.6", - "bundled": true, - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minipass-collect": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-fetch": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "encoding": "^0.1.13", - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - } - }, - "minipass-flush": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-json-stream": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "minipass-pipeline": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-sized": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "bundled": true, - "dev": true - }, - "mkdirp-infer-owner": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "chownr": "^2.0.0", - "infer-owner": "^1.0.4", - "mkdirp": "^1.0.3" - } - }, - "ms": { - "version": "2.1.3", - "bundled": true, - "dev": true - }, - "mute-stream": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "negotiator": { - "version": "0.6.3", - "bundled": true, - "dev": true - }, - "node-gyp": { - "version": "9.0.0", - "bundled": true, - "dev": true, - "requires": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - } - }, - "nopt": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-package-data": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "requires": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - } - }, - "npm-audit-report": { - "version": "2.1.5", - "bundled": true, - "dev": true, - "requires": { - "chalk": "^4.0.0" - } - }, - "npm-bundled": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-install-checks": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "semver": "^7.1.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "npm-package-arg": { - "version": "9.0.0", - "bundled": true, - "dev": true, - "requires": { - "hosted-git-info": "^4.1.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^3.0.0" - } - }, - "npm-packlist": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "glob": "^7.1.6", - "ignore-walk": "^4.0.1", - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-pick-manifest": { - "version": "7.0.0", - "bundled": true, - "dev": true, - "requires": { - "npm-install-checks": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^9.0.0", - "semver": "^7.3.5" - } - }, - "npm-profile": { - "version": "6.0.2", - "bundled": true, - "dev": true, - "requires": { - "npm-registry-fetch": "^13.0.0", - "proc-log": "^2.0.0" - } - }, - "npm-registry-fetch": { - "version": "13.0.1", - "bundled": true, - "dev": true, - "requires": { - "make-fetch-happen": "^10.0.3", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.1", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.0", - "proc-log": "^2.0.0" - } - }, - "npm-user-validate": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "npmlog": { - "version": "6.0.1", - "bundled": true, - "dev": true, - "requires": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.0", - "set-blocking": "^2.0.0" - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "opener": { - "version": "1.5.2", - "bundled": true, - "dev": true - }, - "p-map": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "pacote": { - "version": "13.0.3", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^1.2.0", - "@npmcli/run-script": "^3.0.0", - "cacache": "^15.3.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.6", - "mkdirp": "^1.0.4", - "npm-package-arg": "^9.0.0", - "npm-packlist": "^3.0.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.0", - "proc-log": "^2.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^4.1.1", - "read-package-json-fast": "^2.0.3", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.1.11" - } - }, - "parse-conflict-json": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.1", - "just-diff": "^5.0.1", - "just-diff-apply": "^4.0.1" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "proc-log": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "promise-all-reject-late": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "promise-call-limit": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "promise-inflight": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "promise-retry": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - } - }, - "promzard": { - "version": "0.3.0", - "bundled": true, - "dev": true, - "requires": { - "read": "1" - } - }, - "qrcode-terminal": { - "version": "0.12.0", - "bundled": true, - "dev": true - }, - "read": { - "version": "1.0.7", - "bundled": true, - "dev": true, - "requires": { - "mute-stream": "~0.0.4" - } - }, - "read-cmd-shim": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "read-package-json": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "requires": { - "glob": "^7.1.1", - "json-parse-even-better-errors": "^2.3.0", - "normalize-package-data": "^3.0.0", - "npm-normalize-package-bin": "^1.0.0" - } - }, - "read-package-json-fast": { - "version": "2.0.3", - "bundled": true, - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "readable-stream": { - "version": "3.6.0", - "bundled": true, - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdir-scoped-modules": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" - } - }, - "retry": { - "version": "0.12.0", - "bundled": true, - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.2.1", - "bundled": true, - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "7.3.5", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "signal-exit": { - "version": "3.0.7", - "bundled": true, - "dev": true - }, - "smart-buffer": { - "version": "4.2.0", - "bundled": true, - "dev": true - }, - "socks": { - "version": "2.6.2", - "bundled": true, - "dev": true, - "requires": { - "ip": "^1.1.5", - "smart-buffer": "^4.2.0" - } - }, - "socks-proxy-agent": { - "version": "6.1.1", - "bundled": true, - "dev": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.1", - "socks": "^2.6.1" - } - }, - "spdx-correct": { - "version": "3.1.1", - "bundled": true, - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "bundled": true, - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.11", - "bundled": true, - "dev": true - }, - "ssri": { - "version": "8.0.1", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - }, - "string-width": { - "version": "4.2.3", - "bundled": true, - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "string_decoder": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "stringify-package": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "bundled": true, - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "tar": { - "version": "6.1.11", - "bundled": true, - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - }, - "text-table": { - "version": "0.2.0", - "bundled": true, - "dev": true - }, - "tiny-relative-date": { - "version": "1.3.0", - "bundled": true, - "dev": true - }, - "treeverse": { - "version": "1.0.4", - "bundled": true, - "dev": true - }, - "unique-filename": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "validate-npm-package-name": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "builtins": "^1.0.3" - } - }, - "walk-up-path": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "wcwidth": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "which": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wide-align": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "write-file-atomic": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true, - "dev": true - } - } - } - } -} diff --git a/extensions/node-menu/src/node-menu.tsx b/extensions/node-menu/src/node-menu.tsx index 9666ad36e0..adc7576206 100644 --- a/extensions/node-menu/src/node-menu.tsx +++ b/extensions/node-menu/src/node-menu.tsx @@ -68,7 +68,9 @@ export function NodeMenu(props: NodeMenuProps) { labelOk: `Drain Node`, message: (

    - Are you sure you want to drain {nodeName}? + {"Are you sure you want to drain "} + {nodeName} + ?

    ), }); @@ -77,26 +79,42 @@ export function NodeMenu(props: NodeMenuProps) { return ( <> - + Shell { node.isUnschedulable() ? ( - + Uncordon ) : ( - + Cordon ) } - + Drain diff --git a/extensions/pod-menu/package-lock.json b/extensions/pod-menu/package-lock.json deleted file mode 100644 index 8a7e5e4544..0000000000 --- a/extensions/pod-menu/package-lock.json +++ /dev/null @@ -1,2367 +0,0 @@ -{ - "name": "lens-pod-menu", - "version": "0.0.1", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@k8slens/extensions": { - "version": "file:../../src/extensions/npm/extensions", - "dev": true, - "requires": { - "@material-ui/core": "4.12.3", - "@types/node": "14.17.14", - "@types/react-select": "3.1.2", - "conf": "^7.0.1", - "typed-emitter": "^1.3.1" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", - "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@emotion/hash": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", - "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", - "dev": true - }, - "@material-ui/core": { - "version": "4.12.3", - "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.12.3.tgz", - "integrity": "sha512-sdpgI/PL56QVsEJldwEe4FFaFTLUqN+rd7sSZiRCdx2E/C7z5yK0y/khAWVBH24tXwto7I1hCzNWfJGZIYJKnw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@material-ui/styles": "^4.11.4", - "@material-ui/system": "^4.12.1", - "@material-ui/types": "5.1.0", - "@material-ui/utils": "^4.11.2", - "@types/react-transition-group": "^4.2.0", - "clsx": "^1.0.4", - "hoist-non-react-statics": "^3.3.2", - "popper.js": "1.16.1-lts", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0", - "react-transition-group": "^4.4.0" - } - }, - "@material-ui/styles": { - "version": "4.11.4", - "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.4.tgz", - "integrity": "sha512-KNTIZcnj/zprG5LW0Sao7zw+yG3O35pviHzejMdcSGCdWbiO8qzRgOYL8JAxAsWBKOKYwVZxXtHWaB5T2Kvxew==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@emotion/hash": "^0.8.0", - "@material-ui/types": "5.1.0", - "@material-ui/utils": "^4.11.2", - "clsx": "^1.0.4", - "csstype": "^2.5.2", - "hoist-non-react-statics": "^3.3.2", - "jss": "^10.5.1", - "jss-plugin-camel-case": "^10.5.1", - "jss-plugin-default-unit": "^10.5.1", - "jss-plugin-global": "^10.5.1", - "jss-plugin-nested": "^10.5.1", - "jss-plugin-props-sort": "^10.5.1", - "jss-plugin-rule-value-function": "^10.5.1", - "jss-plugin-vendor-prefixer": "^10.5.1", - "prop-types": "^15.7.2" - } - }, - "@material-ui/system": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.12.1.tgz", - "integrity": "sha512-lUdzs4q9kEXZGhbN7BptyiS1rLNHe6kG9o8Y307HCvF4sQxbCgpL2qi+gUk+yI8a2DNk48gISEQxoxpgph0xIw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@material-ui/utils": "^4.11.2", - "csstype": "^2.5.2", - "prop-types": "^15.7.2" - } - }, - "@material-ui/types": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz", - "integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==", - "dev": true - }, - "@material-ui/utils": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.2.tgz", - "integrity": "sha512-Uul8w38u+PICe2Fg2pDKCaIG7kOyhowZ9vjiC1FsVwPABTW8vPPKfF6OvxRq3IiBaI1faOJmgdvMG7rMJARBhA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0" - } - }, - "@types/node": { - "version": "14.17.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.14.tgz", - "integrity": "sha512-rsAj2u8Xkqfc332iXV12SqIsjVi07H479bOP4q94NAcjzmAvapumEhuVIt53koEf7JFrpjgNKjBga5Pnn/GL8A==", - "dev": true - }, - "@types/prop-types": { - "version": "15.7.3", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", - "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==", - "dev": true - }, - "@types/react": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.0.tgz", - "integrity": "sha512-aj/L7RIMsRlWML3YB6KZiXB3fV2t41+5RBGYF8z+tAKU43Px8C3cYUZsDvf1/+Bm4FK21QWBrDutu8ZJ/70qOw==", - "dev": true, - "requires": { - "@types/prop-types": "*", - "csstype": "^3.0.2" - }, - "dependencies": { - "csstype": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.6.tgz", - "integrity": "sha512-+ZAmfyWMT7TiIlzdqJgjMb7S4f1beorDbWbsocyK4RaiqA5RTX3K14bnBWmmA9QEM0gRdsjyyrEmcyga8Zsxmw==", - "dev": true - } - } - }, - "@types/react-dom": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.0.tgz", - "integrity": "sha512-lUqY7OlkF/RbNtD5nIq7ot8NquXrdFrjSOR6+w9a9RFQevGi1oZO1dcJbXMeONAPKtZ2UrZOEJ5UOCVsxbLk/g==", - "dev": true, - "requires": { - "@types/react": "*" - } - }, - "@types/react-select": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@types/react-select/-/react-select-3.1.2.tgz", - "integrity": "sha512-ygvR/2FL87R2OLObEWFootYzkvm67LRA+URYEAcBuvKk7IXmdsnIwSGm60cVXGaqkJQHozb2Cy1t94tCYb6rJA==", - "dev": true, - "requires": { - "@types/react": "*", - "@types/react-dom": "*", - "@types/react-transition-group": "*" - } - }, - "@types/react-transition-group": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.0.tgz", - "integrity": "sha512-/QfLHGpu+2fQOqQaXh8MG9q03bFENooTb/it4jr5kKaZlDQfWvjqWZg48AwzPVMBHlRuTRAY7hRHCEOXz5kV6w==", - "dev": true, - "requires": { - "@types/react": "*" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "atomically": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", - "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==", - "dev": true - }, - "clsx": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", - "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==", - "dev": true - }, - "conf": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/conf/-/conf-7.1.2.tgz", - "integrity": "sha512-r8/HEoWPFn4CztjhMJaWNAe5n+gPUCSaJ0oufbqDLFKsA1V8JjAG7G+p0pgoDFAws9Bpk2VtVLLXqOBA7WxLeg==", - "dev": true, - "requires": { - "ajv": "^6.12.2", - "atomically": "^1.3.1", - "debounce-fn": "^4.0.0", - "dot-prop": "^5.2.0", - "env-paths": "^2.2.0", - "json-schema-typed": "^7.0.3", - "make-dir": "^3.1.0", - "onetime": "^5.1.0", - "pkg-up": "^3.1.0", - "semver": "^7.3.2" - } - }, - "css-vendor": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", - "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.3", - "is-in-browser": "^1.0.2" - } - }, - "csstype": { - "version": "2.6.18", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.18.tgz", - "integrity": "sha512-RSU6Hyeg14am3Ah4VZEmeX8H7kLwEEirXe6aU2IPfKNvhXwTflK5HQRDNI0ypQXoqmm+QPyG2IaPuQE5zMwSIQ==", - "dev": true - }, - "debounce-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz", - "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==", - "dev": true, - "requires": { - "mimic-fn": "^3.0.0" - } - }, - "dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - }, - "dependencies": { - "csstype": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", - "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==", - "dev": true - } - } - }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "requires": { - "is-obj": "^2.0.0" - } - }, - "env-paths": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", - "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dev": true, - "requires": { - "react-is": "^16.7.0" - }, - "dependencies": { - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true - } - } - }, - "hyphenate-style-name": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", - "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==", - "dev": true - }, - "is-in-browser": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", - "integrity": "sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU=", - "dev": true - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-schema-typed": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz", - "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==", - "dev": true - }, - "jss": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss/-/jss-10.8.2.tgz", - "integrity": "sha512-FkoUNxI329CKQ9OQC8L72MBF9KPf5q8mIupAJ5twU7G7XREW7ahb+7jFfrjZ4iy1qvhx1HwIWUIvkZBDnKkEdQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "csstype": "^3.0.2", - "is-in-browser": "^1.1.3", - "tiny-warning": "^1.0.2" - }, - "dependencies": { - "csstype": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", - "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==", - "dev": true - } - } - }, - "jss-plugin-camel-case": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.8.2.tgz", - "integrity": "sha512-2INyxR+1UdNuKf4v9It3tNfPvf7IPrtkiwzofeKuMd5D58/dxDJVUQYRVg/n460rTlHUfsEQx43hDrcxi9dSPA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "hyphenate-style-name": "^1.0.3", - "jss": "10.8.2" - } - }, - "jss-plugin-default-unit": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.8.2.tgz", - "integrity": "sha512-UZ7cwT9NFYSG+SEy7noRU50s4zifulFdjkUNKE+u6mW7vFP960+RglWjTgMfh79G6OENZmaYnjHV/gcKV4nSxg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.8.2" - } - }, - "jss-plugin-global": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.8.2.tgz", - "integrity": "sha512-UaYMSPsYZ7s/ECGoj4KoHC2jwQd5iQ7K+FFGnCAILdQrv7hPmvM2Ydg45ThT/sH46DqktCRV2SqjRuxeBH8nRA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.8.2" - } - }, - "jss-plugin-nested": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.8.2.tgz", - "integrity": "sha512-acRvuPJOb930fuYmhkJaa994EADpt8TxI63Iyg96C8FJ9T2xRyU5T6R1IYKRwUiqZo+2Sr7fdGzRTDD4uBZaMA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.8.2", - "tiny-warning": "^1.0.2" - } - }, - "jss-plugin-props-sort": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.8.2.tgz", - "integrity": "sha512-wqdcjayKRWBZnNpLUrXvsWqh+5J5YToAQ+8HNBNw0kZxVvCDwzhK2Nx6AKs7p+5/MbAh2PLgNW5Ym/ysbVAuqQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.8.2" - } - }, - "jss-plugin-rule-value-function": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.8.2.tgz", - "integrity": "sha512-bW0EKAs+0HXpb6BKJhrn94IDdiWb0CnSluTkh0rGEgyzY/nmD1uV/Wf6KGlesGOZ9gmJzQy+9FFdxIUID1c9Ug==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.8.2", - "tiny-warning": "^1.0.2" - } - }, - "jss-plugin-vendor-prefixer": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.8.2.tgz", - "integrity": "sha512-DeGv18QsSiYLSVIEB2+l0af6OToUe0JB+trpzUxyqD2QRC/5AzzDrCrYffO5AHZ81QbffYvSN/pkfZaTWpRXlg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "css-vendor": "^2.0.8", - "jss": "10.8.2" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "mimic-fn": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", - "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - }, - "dependencies": { - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - } - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "popper.js": { - "version": "1.16.1-lts", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1-lts.tgz", - "integrity": "sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA==", - "dev": true - }, - "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "dev": true, - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - }, - "dependencies": { - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true - } - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "react-transition-group": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz", - "integrity": "sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "tiny-warning": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", - "dev": true - }, - "typed-emitter": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/typed-emitter/-/typed-emitter-1.3.1.tgz", - "integrity": "sha512-2h7utWyXgd2R2u2IuL8B4yu1gqMxbgUj2VS/MGVbFhEVQNJKXoQQoS5CBMh+eW31zFeSmDfEQ3qQf4xy5SlPVQ==", - "dev": true - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "npm": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/npm/-/npm-8.5.3.tgz", - "integrity": "sha512-O+1j66Alx7ZQgWnUSSTaz8rTqQrJnqNb8Num5uQw2vYvc2RrxLaX7cWtRkDhvkPIL8Nf2WU9gx1oSu268QConA==", - "dev": true, - "requires": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^5.0.0", - "@npmcli/ci-detect": "^2.0.0", - "@npmcli/config": "^4.0.1", - "@npmcli/map-workspaces": "^2.0.0", - "@npmcli/package-json": "^1.0.1", - "@npmcli/run-script": "^3.0.1", - "abbrev": "~1.1.1", - "ansicolors": "~0.3.2", - "ansistyles": "~0.1.3", - "archy": "~1.0.0", - "cacache": "^15.3.0", - "chalk": "^4.1.2", - "chownr": "^2.0.0", - "cli-columns": "^4.0.0", - "cli-table3": "^0.6.1", - "columnify": "^1.6.0", - "fastest-levenshtein": "^1.0.12", - "glob": "^7.2.0", - "graceful-fs": "^4.2.9", - "hosted-git-info": "^4.1.0", - "ini": "^2.0.0", - "init-package-json": "^3.0.0", - "is-cidr": "^4.0.2", - "json-parse-even-better-errors": "^2.3.1", - "libnpmaccess": "^6.0.0", - "libnpmdiff": "^4.0.0", - "libnpmexec": "^4.0.0", - "libnpmfund": "^3.0.0", - "libnpmhook": "^8.0.0", - "libnpmorg": "^4.0.0", - "libnpmpack": "^4.0.0", - "libnpmpublish": "^6.0.0", - "libnpmsearch": "^5.0.0", - "libnpmteam": "^4.0.0", - "libnpmversion": "^3.0.0", - "make-fetch-happen": "^10.0.4", - "minipass": "^3.1.6", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "ms": "^2.1.2", - "node-gyp": "^9.0.0", - "nopt": "^5.0.0", - "npm-audit-report": "^2.1.5", - "npm-install-checks": "^4.0.0", - "npm-package-arg": "^9.0.0", - "npm-pick-manifest": "^7.0.0", - "npm-profile": "^6.0.2", - "npm-registry-fetch": "^13.0.1", - "npm-user-validate": "^1.0.1", - "npmlog": "^6.0.1", - "opener": "^1.5.2", - "pacote": "^13.0.3", - "parse-conflict-json": "^2.0.1", - "proc-log": "^2.0.0", - "qrcode-terminal": "^0.12.0", - "read": "~1.0.7", - "read-package-json": "^4.1.1", - "read-package-json-fast": "^2.0.3", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "ssri": "^8.0.1", - "tar": "^6.1.11", - "text-table": "~0.2.0", - "tiny-relative-date": "^1.3.0", - "treeverse": "^1.0.4", - "validate-npm-package-name": "~3.0.0", - "which": "^2.0.2", - "write-file-atomic": "^4.0.1" - }, - "dependencies": { - "@gar/promisify": { - "version": "1.1.3", - "bundled": true, - "dev": true - }, - "@isaacs/string-locale-compare": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "@npmcli/arborist": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/map-workspaces": "^2.0.0", - "@npmcli/metavuln-calculator": "^3.0.0", - "@npmcli/move-file": "^1.1.0", - "@npmcli/name-from-folder": "^1.0.1", - "@npmcli/node-gyp": "^1.0.3", - "@npmcli/package-json": "^1.0.1", - "@npmcli/run-script": "^3.0.0", - "bin-links": "^3.0.0", - "cacache": "^15.0.3", - "common-ancestor-path": "^1.0.1", - "json-parse-even-better-errors": "^2.3.1", - "json-stringify-nice": "^1.1.4", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^5.0.0", - "npm-install-checks": "^4.0.0", - "npm-package-arg": "^9.0.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.0", - "npmlog": "^6.0.1", - "pacote": "^13.0.2", - "parse-conflict-json": "^2.0.1", - "proc-log": "^2.0.0", - "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.1", - "read-package-json-fast": "^2.0.2", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "ssri": "^8.0.1", - "treeverse": "^1.0.4", - "walk-up-path": "^1.0.0" - } - }, - "@npmcli/ci-detect": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "@npmcli/config": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/map-workspaces": "^2.0.1", - "ini": "^2.0.0", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^5.0.0", - "proc-log": "^2.0.0", - "read-package-json-fast": "^2.0.3", - "semver": "^7.3.5", - "walk-up-path": "^1.0.0" - } - }, - "@npmcli/disparity-colors": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-styles": "^4.3.0" - } - }, - "@npmcli/fs": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "@npmcli/git": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/promise-spawn": "^1.3.2", - "lru-cache": "^7.3.1", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^7.0.0", - "proc-log": "^2.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" - }, - "dependencies": { - "lru-cache": { - "version": "7.4.0", - "bundled": true, - "dev": true - } - } - }, - "@npmcli/installed-package-contents": { - "version": "1.0.7", - "bundled": true, - "dev": true, - "requires": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "@npmcli/map-workspaces": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/name-from-folder": "^1.0.1", - "glob": "^7.2.0", - "minimatch": "^5.0.0", - "read-package-json-fast": "^2.0.3" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.0.1", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "@npmcli/metavuln-calculator": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "cacache": "^15.3.0", - "json-parse-even-better-errors": "^2.3.1", - "pacote": "^13.0.1", - "semver": "^7.3.5" - } - }, - "@npmcli/move-file": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "@npmcli/name-from-folder": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "@npmcli/node-gyp": { - "version": "1.0.3", - "bundled": true, - "dev": true - }, - "@npmcli/package-json": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.1" - } - }, - "@npmcli/promise-spawn": { - "version": "1.3.2", - "bundled": true, - "dev": true, - "requires": { - "infer-owner": "^1.0.4" - } - }, - "@npmcli/run-script": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/node-gyp": "^1.0.3", - "@npmcli/promise-spawn": "^1.3.2", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^2.0.3" - } - }, - "@tootallnate/once": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, - "agent-base": { - "version": "6.0.2", - "bundled": true, - "dev": true, - "requires": { - "debug": "4" - } - }, - "agentkeepalive": { - "version": "4.2.1", - "bundled": true, - "dev": true, - "requires": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - } - }, - "aggregate-error": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ansi-styles": { - "version": "4.3.0", - "bundled": true, - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "ansicolors": { - "version": "0.3.2", - "bundled": true, - "dev": true - }, - "ansistyles": { - "version": "0.1.3", - "bundled": true, - "dev": true - }, - "aproba": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "archy": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "are-we-there-yet": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "asap": { - "version": "2.0.6", - "bundled": true, - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "bin-links": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "cmd-shim": "^4.0.1", - "mkdirp-infer-owner": "^2.0.0", - "npm-normalize-package-bin": "^1.0.0", - "read-cmd-shim": "^2.0.0", - "rimraf": "^3.0.0", - "write-file-atomic": "^4.0.0" - } - }, - "binary-extensions": { - "version": "2.2.0", - "bundled": true, - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "builtins": { - "version": "1.0.3", - "bundled": true, - "dev": true - }, - "cacache": { - "version": "15.3.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - } - }, - "chalk": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chownr": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "cidr-regex": { - "version": "3.1.1", - "bundled": true, - "dev": true, - "requires": { - "ip-regex": "^4.1.0" - } - }, - "clean-stack": { - "version": "2.2.0", - "bundled": true, - "dev": true - }, - "cli-columns": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "cli-table3": { - "version": "0.6.1", - "bundled": true, - "dev": true, - "requires": { - "colors": "1.4.0", - "string-width": "^4.2.0" - } - }, - "clone": { - "version": "1.0.4", - "bundled": true, - "dev": true - }, - "cmd-shim": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "requires": { - "mkdirp-infer-owner": "^2.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "bundled": true, - "dev": true - }, - "color-support": { - "version": "1.1.3", - "bundled": true, - "dev": true - }, - "colors": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "columnify": { - "version": "1.6.0", - "bundled": true, - "dev": true, - "requires": { - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "common-ancestor-path": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "debug": { - "version": "4.3.3", - "bundled": true, - "dev": true, - "requires": { - "ms": "2.1.2" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "bundled": true, - "dev": true - } - } - }, - "debuglog": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "defaults": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "depd": { - "version": "1.1.2", - "bundled": true, - "dev": true - }, - "dezalgo": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "diff": { - "version": "5.0.0", - "bundled": true, - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "bundled": true, - "dev": true - }, - "encoding": { - "version": "0.1.13", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "iconv-lite": "^0.6.2" - } - }, - "env-paths": { - "version": "2.2.1", - "bundled": true, - "dev": true - }, - "err-code": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "fastest-levenshtein": { - "version": "1.0.12", - "bundled": true, - "dev": true - }, - "fs-minipass": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, - "gauge": { - "version": "4.0.2", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^5.0.1", - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "glob": { - "version": "7.2.0", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.2.9", - "bundled": true, - "dev": true - }, - "has": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "hosted-git-info": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "http-cache-semantics": { - "version": "4.1.0", - "bundled": true, - "dev": true - }, - "http-proxy-agent": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - } - }, - "https-proxy-agent": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "humanize-ms": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "requires": { - "ms": "^2.0.0" - } - }, - "iconv-lite": { - "version": "0.6.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "ignore-walk": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true, - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "infer-owner": { - "version": "1.0.4", - "bundled": true, - "dev": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "bundled": true, - "dev": true - }, - "ini": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "init-package-json": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "npm-package-arg": "^9.0.0", - "promzard": "^0.3.0", - "read": "^1.0.7", - "read-package-json": "^4.1.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^3.0.0" - } - }, - "ip": { - "version": "1.1.5", - "bundled": true, - "dev": true - }, - "ip-regex": { - "version": "4.3.0", - "bundled": true, - "dev": true - }, - "is-cidr": { - "version": "4.0.2", - "bundled": true, - "dev": true, - "requires": { - "cidr-regex": "^3.1.1" - } - }, - "is-core-module": { - "version": "2.8.1", - "bundled": true, - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "is-lambda": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "bundled": true, - "dev": true - }, - "json-stringify-nice": { - "version": "1.1.4", - "bundled": true, - "dev": true - }, - "jsonparse": { - "version": "1.3.1", - "bundled": true, - "dev": true - }, - "just-diff": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "just-diff-apply": { - "version": "4.0.1", - "bundled": true, - "dev": true - }, - "libnpmaccess": { - "version": "6.0.0", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^2.0.0", - "minipass": "^3.1.1", - "npm-package-arg": "^9.0.0", - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmdiff": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/disparity-colors": "^1.0.1", - "@npmcli/installed-package-contents": "^1.0.7", - "binary-extensions": "^2.2.0", - "diff": "^5.0.0", - "minimatch": "^3.0.4", - "npm-package-arg": "^9.0.0", - "pacote": "^13.0.2", - "tar": "^6.1.0" - } - }, - "libnpmexec": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/arborist": "^5.0.0", - "@npmcli/ci-detect": "^2.0.0", - "@npmcli/run-script": "^3.0.0", - "chalk": "^4.1.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-package-arg": "^9.0.0", - "npmlog": "^6.0.1", - "pacote": "^13.0.2", - "proc-log": "^2.0.0", - "read": "^1.0.7", - "read-package-json-fast": "^2.0.2", - "walk-up-path": "^1.0.0" - } - }, - "libnpmfund": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/arborist": "^5.0.0" - } - }, - "libnpmhook": { - "version": "8.0.0", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmorg": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmpack": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/run-script": "^3.0.0", - "npm-package-arg": "^9.0.0", - "pacote": "^13.0.2" - } - }, - "libnpmpublish": { - "version": "6.0.0", - "bundled": true, - "dev": true, - "requires": { - "normalize-package-data": "^3.0.2", - "npm-package-arg": "^9.0.0", - "npm-registry-fetch": "^13.0.0", - "semver": "^7.1.3", - "ssri": "^8.0.1" - } - }, - "libnpmsearch": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmteam": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmversion": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/git": "^3.0.0", - "@npmcli/run-script": "^3.0.0", - "json-parse-even-better-errors": "^2.3.1", - "proc-log": "^2.0.0", - "semver": "^7.3.5", - "stringify-package": "^1.0.1" - } - }, - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "make-fetch-happen": { - "version": "10.0.4", - "bundled": true, - "dev": true, - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^15.3.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.4.0", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.1", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.1.1", - "ssri": "^8.0.1" - }, - "dependencies": { - "lru-cache": { - "version": "7.4.0", - "bundled": true, - "dev": true - } - } - }, - "minimatch": { - "version": "3.1.2", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minipass": { - "version": "3.1.6", - "bundled": true, - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minipass-collect": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-fetch": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "encoding": "^0.1.13", - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - } - }, - "minipass-flush": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-json-stream": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "minipass-pipeline": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-sized": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "bundled": true, - "dev": true - }, - "mkdirp-infer-owner": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "chownr": "^2.0.0", - "infer-owner": "^1.0.4", - "mkdirp": "^1.0.3" - } - }, - "ms": { - "version": "2.1.3", - "bundled": true, - "dev": true - }, - "mute-stream": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "negotiator": { - "version": "0.6.3", - "bundled": true, - "dev": true - }, - "node-gyp": { - "version": "9.0.0", - "bundled": true, - "dev": true, - "requires": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - } - }, - "nopt": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-package-data": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "requires": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - } - }, - "npm-audit-report": { - "version": "2.1.5", - "bundled": true, - "dev": true, - "requires": { - "chalk": "^4.0.0" - } - }, - "npm-bundled": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-install-checks": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "semver": "^7.1.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "npm-package-arg": { - "version": "9.0.0", - "bundled": true, - "dev": true, - "requires": { - "hosted-git-info": "^4.1.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^3.0.0" - } - }, - "npm-packlist": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "glob": "^7.1.6", - "ignore-walk": "^4.0.1", - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-pick-manifest": { - "version": "7.0.0", - "bundled": true, - "dev": true, - "requires": { - "npm-install-checks": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^9.0.0", - "semver": "^7.3.5" - } - }, - "npm-profile": { - "version": "6.0.2", - "bundled": true, - "dev": true, - "requires": { - "npm-registry-fetch": "^13.0.0", - "proc-log": "^2.0.0" - } - }, - "npm-registry-fetch": { - "version": "13.0.1", - "bundled": true, - "dev": true, - "requires": { - "make-fetch-happen": "^10.0.3", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.1", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.0", - "proc-log": "^2.0.0" - } - }, - "npm-user-validate": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "npmlog": { - "version": "6.0.1", - "bundled": true, - "dev": true, - "requires": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.0", - "set-blocking": "^2.0.0" - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "opener": { - "version": "1.5.2", - "bundled": true, - "dev": true - }, - "p-map": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "pacote": { - "version": "13.0.3", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^1.2.0", - "@npmcli/run-script": "^3.0.0", - "cacache": "^15.3.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.6", - "mkdirp": "^1.0.4", - "npm-package-arg": "^9.0.0", - "npm-packlist": "^3.0.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.0", - "proc-log": "^2.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^4.1.1", - "read-package-json-fast": "^2.0.3", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.1.11" - } - }, - "parse-conflict-json": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.1", - "just-diff": "^5.0.1", - "just-diff-apply": "^4.0.1" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "proc-log": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "promise-all-reject-late": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "promise-call-limit": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "promise-inflight": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "promise-retry": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - } - }, - "promzard": { - "version": "0.3.0", - "bundled": true, - "dev": true, - "requires": { - "read": "1" - } - }, - "qrcode-terminal": { - "version": "0.12.0", - "bundled": true, - "dev": true - }, - "read": { - "version": "1.0.7", - "bundled": true, - "dev": true, - "requires": { - "mute-stream": "~0.0.4" - } - }, - "read-cmd-shim": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "read-package-json": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "requires": { - "glob": "^7.1.1", - "json-parse-even-better-errors": "^2.3.0", - "normalize-package-data": "^3.0.0", - "npm-normalize-package-bin": "^1.0.0" - } - }, - "read-package-json-fast": { - "version": "2.0.3", - "bundled": true, - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "readable-stream": { - "version": "3.6.0", - "bundled": true, - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdir-scoped-modules": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" - } - }, - "retry": { - "version": "0.12.0", - "bundled": true, - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.2.1", - "bundled": true, - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "7.3.5", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "signal-exit": { - "version": "3.0.7", - "bundled": true, - "dev": true - }, - "smart-buffer": { - "version": "4.2.0", - "bundled": true, - "dev": true - }, - "socks": { - "version": "2.6.2", - "bundled": true, - "dev": true, - "requires": { - "ip": "^1.1.5", - "smart-buffer": "^4.2.0" - } - }, - "socks-proxy-agent": { - "version": "6.1.1", - "bundled": true, - "dev": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.1", - "socks": "^2.6.1" - } - }, - "spdx-correct": { - "version": "3.1.1", - "bundled": true, - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "bundled": true, - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.11", - "bundled": true, - "dev": true - }, - "ssri": { - "version": "8.0.1", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - }, - "string-width": { - "version": "4.2.3", - "bundled": true, - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "string_decoder": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "stringify-package": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "bundled": true, - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "tar": { - "version": "6.1.11", - "bundled": true, - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - }, - "text-table": { - "version": "0.2.0", - "bundled": true, - "dev": true - }, - "tiny-relative-date": { - "version": "1.3.0", - "bundled": true, - "dev": true - }, - "treeverse": { - "version": "1.0.4", - "bundled": true, - "dev": true - }, - "unique-filename": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "validate-npm-package-name": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "builtins": "^1.0.3" - } - }, - "walk-up-path": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "wcwidth": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "which": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wide-align": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "write-file-atomic": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true, - "dev": true - } - } - } - } -} diff --git a/extensions/pod-menu/src/attach-menu.tsx b/extensions/pod-menu/src/attach-menu.tsx index de8035ed94..fd6250bd30 100644 --- a/extensions/pod-menu/src/attach-menu.tsx +++ b/extensions/pod-menu/src/attach-menu.tsx @@ -71,7 +71,11 @@ export class PodAttachMenu extends React.Component { return ( this.attachToPod(containers[0].name))}> - + Attach Pod {containers.length > 1 && ( <> @@ -82,7 +86,11 @@ export class PodAttachMenu extends React.Component { const { name } = container; return ( - this.attachToPod(name))} className="flex align-center"> + this.attachToPod(name))} + className="flex align-center" + > {name} diff --git a/extensions/pod-menu/src/logs-menu.tsx b/extensions/pod-menu/src/logs-menu.tsx index b7cc0851aa..e5c8496d3d 100644 --- a/extensions/pod-menu/src/logs-menu.tsx +++ b/extensions/pod-menu/src/logs-menu.tsx @@ -46,7 +46,11 @@ export class PodLogsMenu extends React.Component { return ( this.showLogs(containers[0]))}> - + Logs {containers.length > 1 && ( <> @@ -63,7 +67,11 @@ export class PodLogsMenu extends React.Component { ) : null; return ( - this.showLogs(container))} className="flex align-center"> + this.showLogs(container))} + className="flex align-center" + > {brick} {name} diff --git a/extensions/pod-menu/src/shell-menu.tsx b/extensions/pod-menu/src/shell-menu.tsx index 4e239d6fdf..36be7c470b 100644 --- a/extensions/pod-menu/src/shell-menu.tsx +++ b/extensions/pod-menu/src/shell-menu.tsx @@ -79,7 +79,11 @@ export class PodShellMenu extends React.Component { return ( this.execShell(containers[0].name))}> - + Shell {containers.length > 1 && ( <> @@ -90,7 +94,11 @@ export class PodShellMenu extends React.Component { const { name } = container; return ( - this.execShell(name))} className="flex align-center"> + this.execShell(name))} + className="flex align-center" + > {name} diff --git a/integration/__tests__/cluster-pages.tests.ts b/integration/__tests__/cluster-pages.tests.ts index 0179656a01..b56b999b2b 100644 --- a/integration/__tests__/cluster-pages.tests.ts +++ b/integration/__tests__/cluster-pages.tests.ts @@ -47,7 +47,6 @@ utils.describeIf(minikubeReady(TEST_NAMESPACE))("Minikube based tests", () => { it( "should navigate around common cluster pages", - async () => { const scenariosByParent = pipeline( scenarios, @@ -139,7 +138,7 @@ utils.describeIf(minikubeReady(TEST_NAMESPACE))("Minikube based tests", () => { ); it( - `should create the ${TEST_NAMESPACE} and a pod in the namespace`, + `should create the ${TEST_NAMESPACE} and a pod in the namespace and then remove that pod via the context menu`, async () => { await navigateToNamespaces(frame); await frame.click("button.add-button"); @@ -209,6 +208,10 @@ utils.describeIf(minikubeReady(TEST_NAMESPACE))("Minikube based tests", () => { await frame.click(".Dock .Button >> text='Create'"); await frame.waitForSelector(`.TableCell >> text=${testPodName}`); + await frame.click(".TableRow .TableCell.menu"); + await frame.click(".MenuItem >> text=Delete"); + await frame.click("button >> text=Remove"); + await frame.waitForSelector(`.TableCell >> text=${testPodName}`, { state: "detached" }); }, 10 * 60 * 1000, ); diff --git a/integration/__tests__/command-palette.tests.ts b/integration/__tests__/command-palette.tests.ts index b1d43bcd2e..7073d1d4cc 100644 --- a/integration/__tests__/command-palette.tests.ts +++ b/integration/__tests__/command-palette.tests.ts @@ -24,9 +24,9 @@ describe("Lens command palette", () => { utils.itIf(!isWindows)("opens command dialog from menu", async () => { await app.evaluate(async ({ app }) => { await app.applicationMenu - .getMenuItemById("view") - .submenu.getMenuItemById("command-palette") - .click(); + ?.getMenuItemById("view") + ?.submenu?.getMenuItemById("command-palette") + ?.click(); }); await window.waitForSelector(".Select__option >> text=Hotbar: Switch"); }, 10*60*1000); diff --git a/integration/helpers/utils.ts b/integration/helpers/utils.ts index 33dabede04..f8eca46c26 100644 --- a/integration/helpers/utils.ts +++ b/integration/helpers/utils.ts @@ -108,6 +108,10 @@ export async function lauchMinikubeClusterFromCatalog(window: Page): Promise

    - Clusters added here are + Clusters added here are not @@ -27,16 +27,14 @@ exports[`add-cluster - navigation using application menu when navigating to add ~/.kube/config - file. - + file. - Read more about adding clusters + Read more about adding clusters. - .

    ({ + Tooltip: () => null, +})); +jest.mock("../../renderer/components/tooltip/withTooltip", () => ({ + withTooltip: (Target: any) => ({ tooltip, tooltipOverrideDisabled, ...props }: any) => , +})); +jest.mock("../../renderer/components/monaco-editor/monaco-editor", () => ({ + MonacoEditor: () => null, +})); describe("add-cluster - navigation using application menu", () => { let applicationBuilder: ApplicationBuilder; diff --git a/src/behaviours/cluster/__snapshots__/sidebar-and-tab-navigation-for-extensions.test.tsx.snap b/src/behaviours/cluster/__snapshots__/sidebar-and-tab-navigation-for-extensions.test.tsx.snap index 808ea1128f..be9c321cd5 100644 --- a/src/behaviours/cluster/__snapshots__/sidebar-and-tab-navigation-for-extensions.test.tsx.snap +++ b/src/behaviours/cluster/__snapshots__/sidebar-and-tab-navigation-for-extensions.test.tsx.snap @@ -261,14 +261,14 @@ exports[`cluster - sidebar and tab navigation for extensions given extension wit
    @@ -1294,7 +1294,7 @@ exports[`cluster - sidebar and tab navigation for extensions given extension wit
    @@ -1678,7 +1678,7 @@ exports[`cluster - sidebar and tab navigation for extensions given extension wit